Bonus_System_Nodes.gv 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  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_PROPAGATOR</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_PROPAGATOR</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. "Combat" [
  52. label =<<table>
  53. <tr><td><b>Combat</b></td></tr>
  54. <tr><td>Propagator: <font face="monospace"><b>BATTLE_WIDE</b></font></td></tr>
  55. <tr><td>Node that contains both sides of a combat<br/>Anything propagated to this node will affect both sides in combat</td></tr>
  56. </table>>
  57. ]
  58. };
  59. subgraph rankedHeroes {
  60. rank="same"
  61. "Visiting Hero" [
  62. fillcolor="#80808080"
  63. label =<<table>
  64. <tr><td><b>Visiting Hero</b></td></tr>
  65. <tr><td>Hero that is currently<br/>visiting owned or allied town</td></tr>
  66. </table>>
  67. ]
  68. "Garrisoned Hero" [
  69. fillcolor="#80808080"
  70. label =<<table>
  71. <tr><td><b>Garrisoned Hero</b></td></tr>
  72. <tr><td>Hero that is currently<br/>placed in a garrison of owned town</td></tr>
  73. </table>>
  74. ]
  75. "Wandering Hero" [
  76. fillcolor="#80808080"
  77. label =<<table>
  78. <tr><td><b>Wandering Hero</b></td></tr>
  79. <tr><td>Hero that is currently<br/>moving on map, outside of towns</td></tr>
  80. </table>>
  81. ]
  82. "Neutral Army" [
  83. fillcolor="#80808080"
  84. label =<<table>
  85. <tr><td><b>Neutral Army</b></td></tr>
  86. <tr><td>Any army that is not owned by a player<br/>Wandering monsters, Banks, Events, etc</td></tr>
  87. </table>>
  88. ]
  89. "Owned Army" [
  90. fillcolor="#80808080"
  91. label =<<table>
  92. <tr><td><b>Owned Army</b></td></tr>
  93. <tr><td>Army owned by a player.<br/>Mines, Garrisons, Dwellings</td></tr>
  94. </table>>
  95. ]
  96. "Owned Object" [
  97. label =<<table>
  98. <tr><td><b>Owned Object</b></td></tr>
  99. <tr><td>Other objects owned by a player, like Lighthouse</td></tr>
  100. <tr><td>Contains Flaggable Objects bonuses</td></tr>
  101. </table>>
  102. ]
  103. };
  104. subgraph rankedTopHero {
  105. rank="same"
  106. "Town" [
  107. fillcolor="#80808080"
  108. label =<<table>
  109. <tr><td><b>Town</b></td></tr>
  110. <tr><td>C++ Class: <font face="monospace"><b>CGTownInstance</b></font></td></tr>
  111. <tr><td>Represents a town on map.</td></tr>
  112. <tr><td>Contains town building bonuses</td></tr>
  113. </table>>
  114. ]
  115. "Artifact Instance" [
  116. fillcolor="#00FFFF80"
  117. label =<<table>
  118. <tr><td><b>Artifact Instance</b></td></tr>
  119. <tr><td>C++ Class: <font face="monospace"><b>CArtifactInstance</b></font></td></tr>
  120. <tr><td>Represents a particular instance of an artifact<br/> that hero can equip or trade</td></tr>
  121. <tr><td>Contains bonuses of spell scrolls and growing artifacts</td></tr>
  122. </table>>
  123. ]
  124. "Boat" [
  125. fillcolor="#00FFFF80"
  126. label =<<table>
  127. <tr><td><b>Boat</b></td></tr>
  128. <tr><td>C++ Class: <font face="monospace"><b>CGBoat</b></font></td></tr>
  129. <tr><td>Represents a boat or other type of transport.</td></tr>
  130. <tr><td>Contains bonuses provided to boarded hero</td></tr>
  131. </table>>
  132. ]
  133. };
  134. subgraph rankedMisc {
  135. "Town and visiting hero" [
  136. label =<<table>
  137. <tr><td><b>Town and Visiting Hero</b></td></tr>
  138. <tr><td>Propagator: <font face="monospace"><b>VISITED_TOWN_AND_VISITOR</b></font></td></tr>
  139. <tr><td>C++ Class: <font face="monospace"><b>CTownAndVisitingHero</b></font></td></tr>
  140. <tr><td>Helper node that exists solely<br/>to propagate bonuses to both town and visiting hero</td></tr>
  141. <tr><td>Note: Neutral towns are attached to global node instead</td></tr>
  142. </table>>
  143. ]
  144. "Combat" [
  145. label =<<table>
  146. <tr><td><b>Combat</b></td></tr>
  147. <tr><td>Propagator: <font face="monospace"><b>BATTLE_WIDE</b></font></td></tr>
  148. <tr><td>C++ Class: <font face="monospace"><b>BattleInfo</b></font></td></tr>
  149. <tr><td>Node that contains both sides of a combat<br/>Anything propagated to this node will affect both sides in combat</td></tr>
  150. <tr><td>Contains battlefield and native terrain bonuses</td></tr>
  151. </table>>
  152. ]
  153. "Creature Type" [
  154. fillcolor="#00FFFF80"
  155. label =<<table>
  156. <tr><td><b>Creature Type</b></td></tr>
  157. <tr><td>C++ Class: <font face="monospace"><b>CCreature</b></font></td></tr>
  158. <tr><td>Represents a creature type, such as Pikeman or Archer</td></tr>
  159. <tr><td>Contains creature abilities bonuses, stack experience bonuses</td></tr>
  160. </table>>
  161. ]
  162. "Artifact Type" [
  163. fillcolor="#00FFFF80"
  164. label =<<table>
  165. <tr><td><b>Artifact Type</b></td></tr>
  166. <tr><td>C++ Class: <font face="monospace"><b>CArtifact</b></font></td></tr>
  167. <tr><td>Represents an artifact type, for example Ring of Life</td></tr>
  168. <tr><td>Contains fixed bonuses of artifacts</td></tr>
  169. </table>>
  170. ]
  171. "Artifact Component" [
  172. fillcolor="#80808080"
  173. label =<<table>
  174. <tr><td><b>Artifact Component</b></td></tr>
  175. <tr><td>C++ Class: <font face="monospace"><b>CArtifactInstance</b></font></td></tr>
  176. <tr><td>For combined, non-fused artifacts,<br/>instances of components are attached to instance of combined artifact</td></tr>
  177. </table>>
  178. ]
  179. "Army" [
  180. label =<<table>
  181. <tr><td><b>Army</b></td></tr>
  182. <tr><td>C++ Class: <font face="monospace"><b>CArmedInstance</b></font></td></tr>
  183. <tr><td>Represents any object that can hold army,<br/>such as town, hero, mines, garrisons, wandering monsters</td></tr>
  184. <tr><td>Contain anti-magic garrison bonus, faction mixing morale bonus</td></tr>
  185. </table>>
  186. ]
  187. "Unit in Army" [
  188. label =<<table>
  189. <tr><td><b>Unit in Army</b></td></tr>
  190. <tr><td>C++ Class: <font face="monospace"><b>CStackInstance</b></font></td></tr>
  191. <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>
  192. </table>>
  193. ]
  194. "Commander" [
  195. label =<<table>
  196. <tr><td><b>Commander</b></td></tr>
  197. <tr><td>C++ Class: <font face="monospace"><b>CCommanderInstance</b></font></td></tr>
  198. <tr><td>Represents a hero commander, WoG feature</td></tr>
  199. </table>>
  200. ]
  201. "Unit in Combat" [
  202. label =<<table>
  203. <tr><td><b>Unit in Combat</b></td></tr>
  204. <tr><td>C++ Class: <font face="monospace"><b>CStack</b></font></td></tr>
  205. <tr><td>Represents current state of a unit during combat,<br/>can be affected by spells or receive damage</td></tr>
  206. </table>>
  207. ]
  208. "Summon in Combat" [
  209. label =<<table>
  210. <tr><td><b>Summon in Combat</b></td></tr>
  211. <tr><td>C++ Class: <font face="monospace"><b>CStack</b></font></td></tr>
  212. <tr><td>Represents any unit that was added in combat,<br/>and may not remain after combat</td></tr>
  213. </table>>
  214. ]
  215. };
  216. "Global" -> "Team"
  217. "Global" -> "Neutral Army"
  218. "Team" -> "Player"
  219. "Player" -> "Town and visiting hero"
  220. "Player" -> "Wandering Hero"
  221. "Player" -> "Owned Army"
  222. "Player" -> "Owned Object"
  223. "Town and visiting hero" -> "Town"
  224. "Town and visiting hero" -> "Visiting Hero"
  225. "Boat" -> "Hero"
  226. "Combat" -> "Army"
  227. "Army" -> "Commander"
  228. "Army" -> "Unit in Army"
  229. "Army" -> "Summon in Combat"
  230. "Unit in Army" -> "Unit in Combat"
  231. "Commander" -> "Unit in Combat"
  232. "Artifact Type" -> "Artifact Instance"
  233. "Artifact Component" -> "Artifact Instance"
  234. "Artifact Instance" -> "Hero"
  235. "Creature Type" -> "Commander"
  236. "Creature Type" -> "Summon in Combat"
  237. "Creature Type" -> "Unit in Army"
  238. "Town" -> "Garrisoned Hero"
  239. "Town" -> "Army"
  240. "Neutral Army" -> "Army"
  241. "Owned Army" -> "Army"
  242. "Visiting Hero" -> "Hero"
  243. "Garrisoned Hero" -> "Hero"
  244. "Wandering Hero" -> "Hero"
  245. "Hero" -> "Army"
  246. }