Umorna -- Tiny game written to test 'chads' library, it uses assets from itch.io...
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

286 lignes
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. }