Bonus_System_Nodes.gv 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  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. </table>>
  20. ]
  21. "Team" [
  22. label =<<table>
  23. <tr><td><b>Team</b></td></tr>
  24. <tr><td>Propagator: <font face="monospace"><b>TEAM_PROPAGATOR</b></font></td></tr>
  25. <tr><td>C++ Class: <font face="monospace"><b>TeamState</b></font></td></tr>
  26. <tr><td>Per-team node.<br/>Game will put players without team<br/>into a team with a single player</td></tr>
  27. </table>>
  28. ]
  29. "Player" [
  30. label =<<table>
  31. <tr><td><b>Player</b></td></tr>
  32. <tr><td>Propagator: <font face="monospace"><b>PLAYER_PROPAGATOR</b></font></td></tr>
  33. <tr><td>C++ Class: <font face="monospace"><b>CPlayerState</b></font></td></tr>
  34. <tr><td>Per-player team.<br/>All objects owned by a player<br/>belong to such node</td></tr>
  35. </table>>
  36. ]
  37. };
  38. subgraph rankedArmies {
  39. rank="same"
  40. "Hero" [
  41. fillcolor="#80808080"
  42. label =<<table>
  43. <tr><td><b>Hero</b></td></tr>
  44. <tr><td>Propagator: <font face="monospace"><b>HERO</b></font></td></tr>
  45. <tr><td>C++ Class: <font face="monospace"><b>CGHeroInstance</b></font></td></tr>
  46. <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>
  47. </table>>
  48. ]
  49. "Combat" [
  50. label =<<table>
  51. <tr><td><b>Combat</b></td></tr>
  52. <tr><td>Propagator: <font face="monospace"><b>BATTLE_WIDE</b></font></td></tr>
  53. <tr><td>Node that contains both sides of a combat<br/>Anything propagated to this node will affect both sides in combat</td></tr>
  54. </table>>
  55. ]
  56. };
  57. subgraph rankedHeroes {
  58. rank="same"
  59. "Visiting Hero" [
  60. fillcolor="#80808080"
  61. label =<<table>
  62. <tr><td><b>Visiting Hero</b></td></tr>
  63. <tr><td>Hero that is currently<br/>visiting owned or allied town</td></tr>
  64. </table>>
  65. ]
  66. "Garrisoned Hero" [
  67. fillcolor="#80808080"
  68. label =<<table>
  69. <tr><td><b>Garrisoned Hero</b></td></tr>
  70. <tr><td>Hero that is currently<br/>placed in a garrison of owned town</td></tr>
  71. </table>>
  72. ]
  73. "Wandering Hero" [
  74. fillcolor="#80808080"
  75. label =<<table>
  76. <tr><td><b>Wandering Hero</b></td></tr>
  77. <tr><td>Hero that is currently<br/>moving on map, outside of towns</td></tr>
  78. </table>>
  79. ]
  80. "Neutral Army" [
  81. fillcolor="#80808080"
  82. label =<<table>
  83. <tr><td><b>Neutral Army</b></td></tr>
  84. <tr><td>Any army that is not owned by a player<br/>Wandering monsters, Banks, Events, etc</td></tr>
  85. </table>>
  86. ]
  87. "Owned Army" [
  88. fillcolor="#80808080"
  89. label =<<table>
  90. <tr><td><b>Owned Army</b></td></tr>
  91. <tr><td>Army owned by a player.<br/>Mines, Garrisons, Dwellings</td></tr>
  92. </table>>
  93. ]
  94. };
  95. subgraph rankedTopHero {
  96. rank="same"
  97. "Town" [
  98. fillcolor="#80808080"
  99. label =<<table>
  100. <tr><td><b>Town</b></td></tr>
  101. <tr><td>C++ Class: <font face="monospace"><b>CGTownInstance</b></font></td></tr>
  102. <tr><td>Represents a town on map.<br/>Town buildings can provide bonuses to this node<br/>(or propagate them upward)</td></tr>
  103. </table>>
  104. ]
  105. "Artifact Instance" [
  106. fillcolor="#00FFFF80"
  107. label =<<table>
  108. <tr><td><b>Artifact Instance</b></td></tr>
  109. <tr><td>C++ Class: <font face="monospace"><b>CArtifact</b></font></td></tr>
  110. <tr><td>Represents a particular instance of an artifact<br/> that hero can equip or trade</td></tr>
  111. </table>>
  112. ]
  113. "Boat" [
  114. fillcolor="#00FFFF80"
  115. label =<<table>
  116. <tr><td><b>Boat</b></td></tr>
  117. <tr><td>C++ Class: <font face="monospace"><b>CGBoat</b></font></td></tr>
  118. <tr><td>Represents a boat or other type of transport.<br/>Can provide bonuses to boarded hero</td></tr>
  119. </table>>
  120. ]
  121. };
  122. subgraph rankedMisc {
  123. "Town and visiting hero" [
  124. label =<<table>
  125. <tr><td><b>Town and Visiting Hero</b></td></tr>
  126. <tr><td>Propagator: <font face="monospace"><b>VISITED_TOWN_AND_VISITOR</b></font></td></tr>
  127. <tr><td>C++ Class: <font face="monospace"><b>CTownAndVisitingHero</b></font></td></tr>
  128. <tr><td>Helper node that exists solely<br/>to propagate bonuses to both town and visiting hero</td></tr>
  129. <tr><td>Note: Neutral towns are attached to global node instead</td></tr>
  130. </table>>
  131. ]
  132. "Combat" [
  133. label =<<table>
  134. <tr><td><b>Combat</b></td></tr>
  135. <tr><td>Propagator: <font face="monospace"><b>BATTLE_WIDE</b></font></td></tr>
  136. <tr><td>C++ Class: <font face="monospace"><b>BattleInfo</b></font></td></tr>
  137. <tr><td>Node that contains both sides of a combat<br/>Anything propagated to this node will affect both sides in combat</td></tr>
  138. </table>>
  139. ]
  140. "Creature Type" [
  141. fillcolor="#00FFFF80"
  142. label =<<table>
  143. <tr><td><b>Creature Type</b></td></tr>
  144. <tr><td>C++ Class: <font face="monospace"><b>CCreature</b></font></td></tr>
  145. <tr><td>Represents a creature type, such as Pikeman or Archer</td></tr>
  146. </table>>
  147. ]
  148. "Artifact Type" [
  149. fillcolor="#00FFFF80"
  150. label =<<table>
  151. <tr><td><b>Artifact Type</b></td></tr>
  152. <tr><td>C++ Class: <font face="monospace"><b>CArtifact</b></font></td></tr>
  153. <tr><td>Represents an artifact type, for example Ring of Life</td></tr>
  154. </table>>
  155. ]
  156. "Artifact Component" [
  157. fillcolor="#80808080"
  158. label =<<table>
  159. <tr><td><b>Artifact Component</b></td></tr>
  160. <tr><td>C++ Class: <font face="monospace"><b>CArtifact</b></font></td></tr>
  161. <tr><td>For combined, non-fused artifacts,<br/>instances of components are attached to instance of combined artifact</td></tr>
  162. </table>>
  163. ]
  164. "Army" [
  165. label =<<table>
  166. <tr><td><b>Army</b></td></tr>
  167. <tr><td>C++ Class: <font face="monospace"><b>CArmedInstance</b></font></td></tr>
  168. <tr><td>Represents any object that can hold army,<br/>such as town, hero, mines, garrisons, wandering monsters</td></tr>
  169. </table>>
  170. ]
  171. "Unit in Army" [
  172. label =<<table>
  173. <tr><td><b>Unit in Army</b></td></tr>
  174. <tr><td>C++ Class: <font face="monospace"><b>CStackInstance</b></font></td></tr>
  175. <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>
  176. </table>>
  177. ]
  178. "Unit in Combat" [
  179. label =<<table>
  180. <tr><td><b>Unit in Combat</b></td></tr>
  181. <tr><td>C++ Class: <font face="monospace"><b>CStack</b></font></td></tr>
  182. <tr><td>Represents current state of a unit during combat,<br/>can be affected by spells or receive damage</td></tr>
  183. </table>>
  184. ]
  185. "Summon in Combat" [
  186. label =<<table>
  187. <tr><td><b>Summon in Combat</b></td></tr>
  188. <tr><td>C++ Class: <font face="monospace"><b>CStack</b></font></td></tr>
  189. <tr><td>Represents any unit that was added in combat,<br/>and may not remain after combat</td></tr>
  190. </table>>
  191. ]
  192. };
  193. "Global" -> "Team"
  194. "Global" -> "Neutral Army"
  195. "Team" -> "Player"
  196. "Player" -> "Town and visiting hero"
  197. "Player" -> "Wandering Hero"
  198. "Player" -> "Owned Army"
  199. "Town and visiting hero" -> "Town"
  200. "Town and visiting hero" -> "Visiting Hero"
  201. "Boat" -> "Hero"
  202. "Combat" -> "Army"
  203. "Army" -> "Unit in Army"
  204. "Army" -> "Summon in Combat"
  205. "Unit in Army" -> "Unit in Combat"
  206. "Artifact Type" -> "Artifact Instance"
  207. "Artifact Component" -> "Artifact Instance"
  208. "Artifact Instance" -> "Hero"
  209. "Creature Type" -> "Summon in Combat"
  210. "Creature Type" -> "Unit in Army"
  211. "Town" -> "Garrisoned Hero"
  212. "Town" -> "Army"
  213. "Neutral Army" -> "Army"
  214. "Owned Army" -> "Army"
  215. "Visiting Hero" -> "Hero"
  216. "Garrisoned Hero" -> "Hero"
  217. "Wandering Hero" -> "Hero"
  218. "Hero" -> "Army"
  219. }