2
0

Bonus_System_Nodes.gv 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. digraph mygraph {
  2. fontname="monospace"
  3. edge [fontname="Noto Serif"]
  4. node [
  5. fontname="Noto Serif"
  6. style=filled
  7. shape=plain
  8. fillcolor="#60200080"
  9. pencolor="#00000080" // frames color
  10. ]
  11. subgraph rankedTop {
  12. "Global" [
  13. label =<<table>
  14. <tr><td><b>Global</b></td></tr>
  15. <tr><td>Propagator: <font face="monospace"><b>GLOBAL_EFFECT</b></font></td></tr>
  16. <tr><td>C++ Class: <font face="monospace"><b>CGameState</b></font></td></tr>
  17. <tr><td>Global node to which<br/>all map entities are connected</td></tr>
  18. <tr><td>Note: Not recruited heroes (such as in tavern)<br/>are not attached to any node</td></tr>
  19. <tr><td>Contains global bonuses, global stack experience and difficulty bonuses</td></tr>
  20. </table>>
  21. ]
  22. "Team" [
  23. label =<<table>
  24. <tr><td><b>Team</b></td></tr>
  25. <tr><td>Propagator: <font face="monospace"><b>TEAM</b></font></td></tr>
  26. <tr><td>C++ Class: <font face="monospace"><b>TeamState</b></font></td></tr>
  27. <tr><td>Per-team node.<br/>Game will put players without team<br/>into a team with a single player</td></tr>
  28. </table>>
  29. ]
  30. "Player" [
  31. label =<<table>
  32. <tr><td><b>Player</b></td></tr>
  33. <tr><td>Propagator: <font face="monospace"><b>PLAYER</b></font></td></tr>
  34. <tr><td>C++ Class: <font face="monospace"><b>CPlayerState</b></font></td></tr>
  35. <tr><td>Per-player team.<br/>All objects owned by a player<br/>belong to such node</td></tr>
  36. </table>>
  37. ]
  38. };
  39. subgraph rankedArmies {
  40. rank="same"
  41. "Hero" [
  42. fillcolor="#80808080"
  43. label =<<table>
  44. <tr><td><b>Hero</b></td></tr>
  45. <tr><td>Propagator: <font face="monospace"><b>HERO</b></font></td></tr>
  46. <tr><td>C++ Class: <font face="monospace"><b>CGHeroInstance</b></font></td></tr>
  47. <tr><td>Represents a hero, either owned by player or in prison.<br/>Bonuses from specialty and secondary skills<br/>are attached directly to this node</td></tr>
  48. <tr><td>Contains per-hero global bonuses, specialty bonuses, <br/>primary and secondary skill bonuses, campaign primary skill bonus</td></tr>
  49. </table>>
  50. ]
  51. };
  52. subgraph rankedHeroes {
  53. rank="same"
  54. "Visiting Hero" [
  55. fillcolor="#80808080"
  56. label =<<table>
  57. <tr><td><b>Visiting Hero</b></td></tr>
  58. <tr><td>Hero that is currently<br/>visiting owned or allied town</td></tr>
  59. </table>>
  60. ]
  61. "Hero defending town" [
  62. fillcolor="#80808080"
  63. label =<<table>
  64. <tr><td><b>Hero defending town</b></td></tr>
  65. <tr><td>Hero that is currently<br/>fighting on a defending side in a siege</td></tr>
  66. </table>>
  67. ]
  68. "Wandering Hero" [
  69. fillcolor="#80808080"
  70. label =<<table>
  71. <tr><td><b>Wandering Hero</b></td></tr>
  72. <tr><td>Hero that is currently<br/>moving on map, outside of towns</td></tr>
  73. </table>>
  74. ]
  75. "Neutral Army" [
  76. fillcolor="#80808080"
  77. label =<<table>
  78. <tr><td><b>Neutral Army</b></td></tr>
  79. <tr><td>Any army that is not owned by a player<br/>Wandering monsters, Banks, Events, etc</td></tr>
  80. </table>>
  81. ]
  82. "Owned Army" [
  83. fillcolor="#80808080"
  84. label =<<table>
  85. <tr><td><b>Owned Army</b></td></tr>
  86. <tr><td>Army owned by a player.<br/>Mines, Garrisons, Dwellings</td></tr>
  87. </table>>
  88. ]
  89. "Owned Object" [
  90. label =<<table>
  91. <tr><td><b>Owned Object</b></td></tr>
  92. <tr><td>Other objects owned by a player, like Lighthouse</td></tr>
  93. <tr><td>Contains Flaggable Objects bonuses</td></tr>
  94. </table>>
  95. ]
  96. };
  97. subgraph rankedTopHero {
  98. rank="same"
  99. "Town" [
  100. fillcolor="#80808080"
  101. label =<<table>
  102. <tr><td><b>Town</b></td></tr>
  103. <tr><td>Propagator: <font face="monospace"><b>TOWN</b></font></td></tr>
  104. <tr><td>C++ Class: <font face="monospace"><b>CGTownInstance</b></font></td></tr>
  105. <tr><td>Represents a town on map.</td></tr>
  106. <tr><td>Contains town building bonuses</td></tr>
  107. </table>>
  108. ]
  109. "Artifact Instance" [
  110. fillcolor="#00FFFF80"
  111. label =<<table>
  112. <tr><td><b>Artifact Instance</b></td></tr>
  113. <tr><td>C++ Class: <font face="monospace"><b>CArtifactInstance</b></font></td></tr>
  114. <tr><td>Represents a particular instance of an artifact<br/> that hero can equip or trade</td></tr>
  115. <tr><td>Contains bonuses of spell scrolls and growing artifacts</td></tr>
  116. </table>>
  117. ]
  118. "Boat" [
  119. fillcolor="#00FFFF80"
  120. label =<<table>
  121. <tr><td><b>Boat</b></td></tr>
  122. <tr><td>C++ Class: <font face="monospace"><b>CGBoat</b></font></td></tr>
  123. <tr><td>Represents a boat or other type of transport.</td></tr>
  124. <tr><td>Contains bonuses provided to boarded hero</td></tr>
  125. </table>>
  126. ]
  127. };
  128. subgraph rankedMisc {
  129. "Town and visiting hero" [
  130. label =<<table>
  131. <tr><td><b>Town and Visiting Hero</b></td></tr>
  132. <tr><td>Propagator: <font face="monospace"><b>TOWN_AND_VISITOR</b></font></td></tr>
  133. <tr><td>C++ Class: <font face="monospace"><b>CTownAndVisitingHero</b></font></td></tr>
  134. <tr><td>Helper node that exists solely<br/>to propagate bonuses to both town and visiting hero</td></tr>
  135. <tr><td>Note: Neutral towns are attached to global node instead</td></tr>
  136. </table>>
  137. ]
  138. "Combat" [
  139. label =<<table>
  140. <tr><td><b>Combat</b></td></tr>
  141. <tr><td>Propagator: <font face="monospace"><b>BATTLE_WIDE</b></font></td></tr>
  142. <tr><td>C++ Class: <font face="monospace"><b>BattleInfo</b></font></td></tr>
  143. <tr><td>Node that contains both sides of a combat<br/>Anything propagated to this node will affect both sides in combat</td></tr>
  144. <tr><td>Contains battlefield and native terrain bonuses</td></tr>
  145. </table>>
  146. ]
  147. "Creature Type" [
  148. fillcolor="#00FFFF80"
  149. label =<<table>
  150. <tr><td><b>Creature Type</b></td></tr>
  151. <tr><td>C++ Class: <font face="monospace"><b>CCreature</b></font></td></tr>
  152. <tr><td>Represents a creature type, such as Pikeman or Archer</td></tr>
  153. <tr><td>Contains creature abilities bonuses, stack experience bonuses</td></tr>
  154. </table>>
  155. ]
  156. "Artifact Type" [
  157. fillcolor="#00FFFF80"
  158. label =<<table>
  159. <tr><td><b>Artifact Type</b></td></tr>
  160. <tr><td>C++ Class: <font face="monospace"><b>CArtifact</b></font></td></tr>
  161. <tr><td>Represents an artifact type, for example Ring of Life</td></tr>
  162. <tr><td>Contains fixed bonuses of artifacts</td></tr>
  163. </table>>
  164. ]
  165. "Artifact Component" [
  166. fillcolor="#80808080"
  167. label =<<table>
  168. <tr><td><b>Artifact Component</b></td></tr>
  169. <tr><td>C++ Class: <font face="monospace"><b>CArtifactInstance</b></font></td></tr>
  170. <tr><td>For combined, non-fused artifacts,<br/>instances of components are attached to instance of combined artifact</td></tr>
  171. </table>>
  172. ]
  173. "Army" [
  174. label =<<table>
  175. <tr><td><b>Army</b></td></tr>
  176. <tr><td>Propagator: <font face="monospace"><b>ARMY</b></font></td></tr>
  177. <tr><td>C++ Class: <font face="monospace"><b>CArmedInstance</b></font></td></tr>
  178. <tr><td>Represents any object that can hold army,<br/>such as town, hero, mines, garrisons, wandering monsters</td></tr>
  179. <tr><td>Contain anti-magic garrison bonus, faction mixing morale bonus</td></tr>
  180. </table>>
  181. ]
  182. "Unit in Army" [
  183. label =<<table>
  184. <tr><td><b>Unit in Army</b></td></tr>
  185. <tr><td>C++ Class: <font face="monospace"><b>CStackInstance</b></font></td></tr>
  186. <tr><td>Represents a unit that is part of a army<br/>A unit always has a creature type,<br/>belongs to an army and has stack size</td></tr>
  187. </table>>
  188. ]
  189. "Commander" [
  190. label =<<table>
  191. <tr><td><b>Commander</b></td></tr>
  192. <tr><td>C++ Class: <font face="monospace"><b>CCommanderInstance</b></font></td></tr>
  193. <tr><td>Represents a hero commander, WoG feature</td></tr>
  194. </table>>
  195. ]
  196. "Unit in Combat" [
  197. label =<<table>
  198. <tr><td><b>Unit in Combat</b></td></tr>
  199. <tr><td>C++ Class: <font face="monospace"><b>CStack</b></font></td></tr>
  200. <tr><td>Represents current state of a unit during combat,<br/>can be affected by spells or receive damage</td></tr>
  201. </table>>
  202. ]
  203. "Summon in Combat" [
  204. label =<<table>
  205. <tr><td><b>Summon in Combat</b></td></tr>
  206. <tr><td>C++ Class: <font face="monospace"><b>CStack</b></font></td></tr>
  207. <tr><td>Represents any unit that was added in combat,<br/>and may not remain after combat</td></tr>
  208. </table>>
  209. ]
  210. };
  211. "Global" -> "Team"
  212. "Global" -> "Neutral Army"
  213. "Team" -> "Player"
  214. "Player" -> "Town and visiting hero"
  215. "Player" -> "Wandering Hero"
  216. "Player" -> "Owned Army"
  217. "Player" -> "Owned Object"
  218. "Town and visiting hero" -> "Town"
  219. "Town and visiting hero" -> "Visiting Hero"
  220. "Boat" -> "Hero"
  221. "Combat" -> "Army"
  222. "Army" -> "Commander"
  223. "Army" -> "Unit in Army"
  224. "Army" -> "Summon in Combat"
  225. "Unit in Army" -> "Unit in Combat"
  226. "Commander" -> "Unit in Combat"
  227. "Artifact Type" -> "Artifact Instance"
  228. "Artifact Component" -> "Artifact Instance"
  229. "Artifact Instance" -> "Hero"
  230. "Creature Type" -> "Commander"
  231. "Creature Type" -> "Summon in Combat"
  232. "Creature Type" -> "Unit in Army"
  233. "Town" -> "Hero defending town"
  234. "Town" -> "Army"
  235. "Neutral Army" -> "Army"
  236. "Owned Army" -> "Army"
  237. "Visiting Hero" -> "Hero"
  238. "Hero defending town" -> "Hero"
  239. "Wandering Hero" -> "Hero"
  240. "Hero" -> "Army"
  241. }