Umorna -- Tiny game written to test 'chads' library, it uses assets from itch.io...
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

286 satır
14KB

  1. #include "game.h"
  2. #include <xolatile/chads.c>
  3. static void define_minimenu (int menu, char * text, int icon, void (* action) (void)) {
  4. menu_text [menu] [menu_items [menu]] = text;
  5. menu_icon [menu] [menu_items [menu]] = icon;
  6. menu_action [menu] [menu_items [menu]] = action;
  7. menu_items [menu]++;
  8. }
  9. static void define_menu (int show) {
  10. menu_items [menu_count] = 0;
  11. menu_show [menu_count] = show;
  12. menu_count++;
  13. }
  14. int menu_count = 0;
  15. int menu_items [menu_limit];
  16. int menu_show [menu_limit];
  17. char * menu_text [menu_limit] [menu_item_limit];
  18. int menu_icon [menu_limit] [menu_item_limit];
  19. void (* menu_action [menu_limit] [menu_item_limit]) (void);
  20. void game_configure (void) {
  21. int index;
  22. define_trait ("Strength", 1, 1, 10);
  23. define_trait ("Dexterity", 1, 1, 10);
  24. define_trait ("Wisdom", 1, 1, 10);
  25. define_skill ("Swords", 1, 1, 100);
  26. define_skill ("Axes", 1, 1, 100);
  27. define_skill ("Maces", 1, 1, 100);
  28. define_skill ("Staves", 1, 1, 100);
  29. define_skill ("Bows", 1, 1, 100);
  30. define_skill ("Crossbows", 1, 1, 100);
  31. define_skill ("Slings", 1, 1, 100);
  32. define_skill ("Shields", 1, 1, 100);
  33. define_skill ("Armour", 1, 1, 100);
  34. define_skill ("Alchemy", 1, 1, 100);
  35. define_skill ("Medicine", 1, 1, 100);
  36. define_skill ("Mercantile", 1, 1, 100);
  37. define_skill ("Farmer", 1, 1, 100);
  38. define_skill ("Miner", 1, 1, 100);
  39. define_skill ("Lumber", 1, 1, 100);
  40. define_skill ("Traps", 1, 1, 100);
  41. define_skill ("Water Magic", 1, 1, 100);
  42. define_skill ("Earth Magic", 1, 1, 100);
  43. define_skill ("Wind Magic", 1, 1, 100);
  44. define_skill ("Black Magic", 1, 1, 100);
  45. define_skill ("Rune Magic", 1, 1, 100);
  46. define_skill ("Summon Magic", 1, 1, 100);
  47. define_skill ("Ritual Magic", 1, 1, 100);
  48. define_skill ("Charm Magic", 1, 1, 100);
  49. define_value ("Coin", 1);
  50. define_value ("Food", 2);
  51. define_value ("Wood", 5);
  52. define_value ("Stone", 7);
  53. define_value ("Iron", 19);
  54. define_value ("Silver", 23);
  55. define_value ("Gold", 29);
  56. define_value ("Coal", 13);
  57. define_value ("Gems", 31);
  58. define_value ("Mana", 37);
  59. define_effect (entity_trait, target_self | target_increase, strength, 1);
  60. define_effect (entity_trait, target_self | target_increase, strength, 3);
  61. define_effect (entity_trait, target_self | target_increase, strength, 7);
  62. define_might ("Might", gain_minor_strength);
  63. define_magic ("Magic", 3, gain_major_strength);
  64. define_race ("Orc", strength, axes, wood);
  65. define_race ("Human", dexterity, medicine, iron);
  66. define_race ("Elf", wisdom, rune_magic, gems);
  67. define_item ("Iron Mace", 2, item_weapon, gain_minor_strength);
  68. define_item ("Iron Sword", 3, item_weapon, gain_minor_strength);
  69. define_item ("Iron Axe", 2, item_weapon, gain_minor_strength);
  70. define_unit ("Gnoll", "Dirt-Hut", orc, unit_range, 1, 2, 7, -1);
  71. define_unit ("Gnoll Shaman", "Treehouse", orc, unit_magic, 1, 3, 7, -1);
  72. define_unit ("Goblin", "Dirty Shed", orc, unit_melee, 2, 3, 7, -1);
  73. define_unit ("Hob-Goblin", "Old Barracks", orc, unit_melee | unit_magic, 3, 5, 7, -1);
  74. define_unit ("Thief", "Thief Storehouse", orc, unit_melee, 3, 7, 5, -1);
  75. define_unit ("Looter", "Abandoned Manor", orc, unit_range, 5, 7, 5, -1);
  76. define_unit ("Warrior", "Longhouse", orc, unit_melee, 7, 11, 5, -1);
  77. define_unit ("Shaman", "Cottage", orc, unit_magic, 7, 11, 3, -1);
  78. define_unit ("Chief", "Campgrounds", orc, unit_melee | unit_range, 11, 13, 3, -1);
  79. define_unit ("Wolf-Rider", "Wold Den", orc, unit_melee | unit_range, 17, 17, 2, -1);
  80. define_unit ("Boar-Rider", "Boar Ranch", orc, unit_range, 19, 23, 2, -1);
  81. define_unit ("Overlord", "Orcish Temple", orc, unit_melee | unit_magic, 23, 13, 2, -1);
  82. define_unit ("Ogre", "Highlands", orc, unit_melee, 29, 23, 2, -1);
  83. define_unit ("Ogre Mage", "Highland Tower", orc, unit_melee | unit_magic, 31, 29, 2, -1);
  84. define_unit ("Troll", "Troll Den", orc, unit_melee, 37, 31, 1, -1);
  85. define_unit ("War Troll", "Cavern-Fort", orc, unit_melee | unit_range, 41, 37, 1, -1);
  86. define_unit ("Basilisk", "Dungeon", orc, unit_melee | unit_extra, 53, 59, 1, -1);
  87. define_unit ("Wyvern", "Swamp Pit", orc, unit_melee | unit_extra, 59, 53, 1, -1);
  88. define_unit ("Peasant", "Farm", human, unit_melee, 1, 1, 7, -1);
  89. define_unit ("Scout", "Scout Shack", human, unit_range, 2, 3, 7, -1);
  90. define_unit ("Hunter", "Archery", human, unit_range, 2, 3, 7, -1);
  91. define_unit ("Swordman", "House of Slashing", human, unit_melee, 3, 5, 7, -1);
  92. define_unit ("Axeman", "House of Cutting", human, unit_melee, 5, 5, 5, -1);
  93. define_unit ("Crossbowman", "House of Shooting", human, unit_range, 5, 5, 5, -1);
  94. define_unit ("Horseman", "Horse Ranch", human, unit_melee, 7, 11, 5, -1);
  95. define_unit ("Guard", "Guard Barracks", human, unit_melee, 7, 7, 3, -1);
  96. define_unit ("Elite Guard", "Guard Home", human, unit_melee, 13, 11, 3, -1);
  97. define_unit ("Lancer", "Riding Meadow", human, unit_melee | unit_range, 17, 17, 2, -1);
  98. define_unit ("Knight", "Mansion of Honour", human, unit_melee, 19, 23, 2, -1);
  99. define_unit ("Kingsman", "King's Academy", human, unit_melee, 19, 17, 2, -1);
  100. define_unit ("Mage", "School of Mana", human, unit_magic, 23, 7, 2, -1);
  101. define_unit ("Arch-Mage", "Temple of Mana", human, unit_magic, 29, 11, 2, -1);
  102. define_unit ("Giant", "Mound", human, unit_melee, 41, 59, 1, -1);
  103. define_unit ("War Giant", "Mound-Fort", human, unit_melee | unit_range, 43, 67, 1, -1);
  104. define_unit ("Griffin", "Griffin Nest", human, unit_melee, 47, 53, 1, -1);
  105. define_unit ("Roc", "Heavenly Temple", human, unit_melee | unit_magic, 53, 61, 1, -1);
  106. define_unit ("Sprite", "Little Lamp", elf, unit_melee, 1, 1, 7, -1);
  107. define_unit ("Nature Spirit", "Flower Palace", elf, unit_melee, 1, 1, 7, -1);
  108. define_unit ("Half-Elf", "Slums", elf, unit_melee, 1, 3, 7, -1);
  109. define_unit ("Ranger", "Ranger Guild", elf, unit_melee, 3, 5, 7, -1);
  110. define_unit ("Archer", "Arrow House", elf, unit_melee | unit_range, 3, 7, 5, -1);
  111. define_unit ("Elite Archer", "Arrow Fortress", elf, unit_melee | unit_range, 5, 7, 5, -1);
  112. define_unit ("Blademaster", "School of Blades", elf, unit_melee | unit_magic, 7, 11, 5, -1);
  113. define_unit ("Water Mage", "Water Temple", elf, unit_magic, 11, 11, 3, -1);
  114. define_unit ("Earth Mage", "Earth Temple", elf, unit_magic, 13, 13, 3, -1);
  115. define_unit ("Wind Mage", "Wind Temple", elf, unit_magic, 13, 17, 2, -1);
  116. define_unit ("Rune Mage", "Rune Monastery", elf, unit_magic, 17, 19, 2, -1);
  117. define_unit ("Runemaster", "Ancient Ruins", elf, unit_magic, 19, 23, 2, -1);
  118. define_unit ("Sacrificer", "Altair", elf, unit_magic, 23, 19, 2, -1);
  119. define_unit ("Elk Rider", "Elk Ranch-House", elf, unit_melee, 29, 23, 2, -1);
  120. define_unit ("Warmaster", "Elven Fort", elf, unit_melee | unit_magic, 41, 59, 1, -1);
  121. define_unit ("Coal Golem", "Old Coal Mine", elf, unit_melee, 43, 53, 1, -1);
  122. define_unit ("Iron Golem", "Old Iron Mine", elf, unit_melee, 47, 67, 1, -1);
  123. define_unit ("Sage", "Cabin in the Woods", elf, unit_range | unit_magic, 67, 47, 1, -1);
  124. define_block ("Ashland", 0, 12, -1, -1, -1);
  125. define_block ("Ashdirt", 0, 6, -1, -1, -1);
  126. define_block ("Ashdust", 0, 6, -1, -1, -1);
  127. define_block ("Garbage", block_random, 12, -1, -1, -1);
  128. define_block ("Ashdirt", block_up, 1, 0, 1, -1);
  129. define_block ("Ashdirt", block_down, 1, 0, 1, -1);
  130. define_block ("Ashdirt", block_left, 1, 0, 1, -1);
  131. define_block ("Ashdirt", block_right, 1, 0, 1, -1);
  132. define_block ("Ashdirt", block_up | block_left, 1, 0, 1, -1);
  133. define_block ("Ashdirt", block_up | block_right, 1, 0, 1, -1);
  134. define_block ("Ashdirt", block_down | block_left, 1, 0, 1, -1);
  135. define_block ("Ashdirt", block_down | block_right, 1, 0, 1, -1);
  136. define_block ("Ashdirt", block_up | block_left, 1, 1, 0, -1);
  137. define_block ("Ashdirt", block_up | block_right, 1, 1, 0, -1);
  138. define_block ("Ashdirt", block_down | block_left, 1, 1, 0, -1);
  139. define_block ("Ashdirt", block_down | block_right, 1, 1, 0, -1);
  140. define_block ("Ashdust", block_up, 1, 0, 2, -1);
  141. define_block ("Ashdust", block_down, 1, 0, 2, -1);
  142. define_block ("Ashdust", block_left, 1, 0, 2, -1);
  143. define_block ("Ashdust", block_right, 1, 0, 2, -1);
  144. define_block ("Ashdust", block_up | block_left, 1, 0, 2, -1);
  145. define_block ("Ashdust", block_up | block_right, 1, 0, 2, -1);
  146. define_block ("Ashdust", block_down | block_left, 1, 0, 2, -1);
  147. define_block ("Ashdust", block_down | block_right, 1, 0, 2, -1);
  148. define_block ("Ashdust", block_up | block_left, 1, 2, 0, -1);
  149. define_block ("Ashdust", block_up | block_right, 1, 2, 0, -1);
  150. define_block ("Ashdust", block_down | block_left, 1, 2, 0, -1);
  151. define_block ("Ashdust", block_down | block_right, 1, 2, 0, -1);
  152. define_model ("Redgrass", 0, 1, 1);
  153. define_model ("Rock", 0, 1, 1);
  154. define_model ("Rock", 0, 1, 1);
  155. define_model ("Rock", 0, 1, 1);
  156. define_model ("Rock", 0, 1, 1);
  157. define_model ("Bone", 0, 1, 1);
  158. define_model ("Redgrass", 0, 1, 1);
  159. define_model ("Rock", 0, 1, 1);
  160. define_model ("Rock", 0, 1, 1);
  161. define_model ("Rock", 0, 1, 1);
  162. define_model ("Rock & Redgrass", 0, 1, 1);
  163. define_model ("Bones", 0, 1, 1);
  164. define_model ("Redgrass", 0, 1, 1);
  165. define_model ("Rock", 0, 1, 1);
  166. define_model ("Rock", 0, 1, 1);
  167. define_model ("Redgrass", 0, 1, 1);
  168. define_model ("Rock", 0, 1, 1);
  169. define_model ("Rock", 0, 1, 1);
  170. define_model ("Redgrass", 0, 1, 1);
  171. define_model ("Rock", 0, 1, 1);
  172. define_model ("Rock", 0, 1, 1);
  173. define_model ("Redgrass", 0, 1, 1);
  174. define_model ("Rock", 0, 1, 1);
  175. define_model ("Rock", 0, 1, 1);
  176. define_model ("Skull", 0, 1, 1);
  177. define_model ("Skull & Bones", 0, 1, 1);
  178. define_model ("Rock", 0, 1, 1);
  179. define_model ("Gravestone", 0, 1, 1);
  180. define_model ("Rock", 0, 1, 1);
  181. define_model ("Gravestone", 0, 1, 1);
  182. define_model ("Rock", 0, 1, 1);
  183. define_model ("Gravestone", 0, 1, 1);
  184. define_model ("Firewood", 0, 1, 1);
  185. define_model ("Firewood", 0, 1, 1);
  186. define_model ("Firewood", 0, 1, 1);
  187. define_model ("Acid Reed", 0, 1, 1);
  188. define_model ("Acid Reed", 0, 1, 1);
  189. define_model ("Acid Reed", 0, 1, 1);
  190. define_model ("Acid Reed", 0, 1, 1);
  191. define_model ("Acid Reed", 0, 1, 1);
  192. define_model ("Acid Reed", 0, 1, 1);
  193. define_model ("Sign", 0, 1, 1);
  194. define_model ("Sign", 0, 1, 1);
  195. define_model ("Sign", 0, 1, 1);
  196. define_model ("Sign", 0, 1, 1);
  197. define_model ("Huge Rock", model_clip, 1, 2);
  198. define_model ("Huge Acid Reed", model_clip, 1, 2);
  199. define_model ("Tree Trunk", model_clip, 1, 2);
  200. define_model ("Tree Trunk", model_clip, 1, 2);
  201. define_model ("Tree Trunk", model_clip, 1, 2);
  202. define_model ("Tree Trunk", model_clip, 1, 2);
  203. define_model ("Huge Rock & Skull", model_clip, 1, 2);
  204. define_model ("Huge Acid Reed", model_clip, 1, 2);
  205. define_model ("Tree Trunk", model_clip, 2, 1);
  206. define_model ("Tree Trunk", model_clip, 2, 1);
  207. define_model ("Huge Acid Reed", model_clip, 2, 1);
  208. define_model ("Huge Acid Reed", model_clip, 2, 1);
  209. define_model ("Huge Rock", model_clip, 2, 1);
  210. define_model ("Huge Rock", model_clip, 2, 1);
  211. define_model ("Huge Sign", model_clip, 2, 1);
  212. define_model ("Firewood & Bone", model_clip, 2, 1);
  213. define_model ("Huge Rock & Redgrass", model_clip, 2, 1);
  214. define_model ("Huge Rock & Skull", model_clip, 2, 1);
  215. define_model ("Huge Rocks", model_clip, 2, 2);
  216. define_model ("Gravestone & Redgrass", model_clip, 2, 2);
  217. define_model ("Firewood & Redgrass", model_clip, 2, 2);
  218. define_model ("Dead Tree", model_clip, 2, 4);
  219. define_model ("Dead Tree", model_clip, 2, 4);
  220. define_model ("Huge Rocks", model_clip, 3, 2);
  221. define_model ("Dead Tree", model_clip, 4, 5);
  222. define_model ("Dead Tree & Skulls", model_clip, 4, 5);
  223. define_model ("Dead Tree & Acid Reed", model_clip, 4, 5);
  224. define_world ("Ashlands", 0XBEEF, 0, block_count);
  225. define_player ("Ognjen", player_human, 30, 30);
  226. configure ();
  227. define_menu (0);
  228. define_menu (0);
  229. define_menu (1);
  230. define_menu (0);
  231. for (index = 0; index < trait_count; ++index) {
  232. define_minimenu (menu_traits, trait_name [index], index, 0);
  233. }
  234. for (index = 0; index < skill_count; ++index) {
  235. define_minimenu (menu_skills, skill_name [index], 3 + index, 0);
  236. }
  237. for (index = 0; index < value_count; ++index) {
  238. define_minimenu (menu_values, value_name [index], 27 + index, 0);
  239. }
  240. define_minimenu (menu_resources, "This is some simple neon menu...", 1, 0);
  241. define_minimenu (menu_resources, "And to test dimension computation...", 1, 0);
  242. define_minimenu (menu_resources, "We have different line lengths.", 1, 0);
  243. define_minimenu (menu_resources, "I really don't know what else to write here.", 1, 0);
  244. define_minimenu (menu_resources, "Important thing is how it looks when done.", 1, 0);
  245. define_minimenu (menu_resources, "And I want HoM&M4 look and feel.", 1, 0);
  246. }