types.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. package main
  2. type Class uint8
  3. const (
  4. C_NONE Class = iota
  5. C_KNIGHT
  6. C_THIEF
  7. C_CLERIC
  8. C_WIZARD
  9. C_RANGER
  10. )
  11. func (c Class) Name() string {
  12. switch c {
  13. case C_KNIGHT:
  14. return "Knight"
  15. case C_THIEF:
  16. return "Thief"
  17. case C_CLERIC:
  18. return "Cleric"
  19. case C_WIZARD:
  20. return "Wizard"
  21. case C_RANGER:
  22. return "Ranger"
  23. default:
  24. return "None"
  25. }
  26. }
  27. func (c Class) ColorText() string {
  28. switch c {
  29. case C_KNIGHT:
  30. return "CYA ON BLA"
  31. case C_THIEF:
  32. return "BRO ON BLA"
  33. case C_CLERIC:
  34. return "GRE ON BLA"
  35. case C_WIZARD:
  36. return "MAG ON BLA"
  37. case C_RANGER:
  38. return "BRI RED ON BLA"
  39. default:
  40. return "WHI ON BLA"
  41. }
  42. }
  43. type Weapon uint8
  44. const (
  45. W_FIST Weapon = iota // K T C W R | Damage 1
  46. W_DAGGER // K T C W R | Damage 3
  47. W_WHIP // K T C _ R | Damage 5
  48. W_SWORD // K T _ _ R | Damage 8
  49. W_Q_STAFF // _ _ C W _ | Damage 7
  50. W_MACE // K _ C _ _ | Damage 10
  51. W_L_SWORD // K _ _ _ R | Damage 12
  52. W_HAMMER // K _ C _ _ | Damage 16
  53. W_B_SWORD // K _ _ _ _ | Damage 18
  54. )
  55. func (w Weapon) Name() string {
  56. switch w {
  57. case W_DAGGER:
  58. return "Dagger"
  59. case W_WHIP:
  60. return "Whip"
  61. case W_SWORD:
  62. return "Short Sword"
  63. case W_Q_STAFF:
  64. return "Quarter Staff"
  65. case W_MACE:
  66. return "Mace"
  67. case W_L_SWORD:
  68. return "Long Sword"
  69. case W_HAMMER:
  70. return "Hammer"
  71. case W_B_SWORD:
  72. return "Bastard Sword"
  73. default:
  74. return "Fist"
  75. }
  76. }
  77. type WeaponEnchant uint8
  78. const ( // Unless stated, All Weapon enchants are Red gems
  79. WE_NONE WeaponEnchant = iota // K T C W R
  80. WE_DAMAGE // K T C W R | Damage +2
  81. WE_DAMAGE2 // K T C W R | Damage +3
  82. WE_DAMAGE3 // K T C W R | Damage +5
  83. WE_POISON // K T _ _ R | G | DOT 1 for 4 turns
  84. WE_POISON2 // _ T _ _ _ | G | Dot 1-3 for 5 turns
  85. WE_FIRE // K _ C _ R | Fire DOT 1-2 for 2 turns
  86. WE_FIRE2 // K _ C _ R | Fire DOT 2-6 for 2 turns (35% chance)
  87. WE_ICE // K T C W R | B | 5% chance to Freeze target for 1 turn
  88. WE_ICE2 // K T C W R | B | 10% chance to Freeze target for 1-2 turn(s)
  89. WE_ICE3 // K T C W R | B | 20% chance to Freeze target for 2 turns
  90. WE_STEAL_HP // K T C W R | Steals 1-2 HP (We get, they take)
  91. WE_STEAL_MP // _ _ C W _ | Steals 1-2 MP (We get, they take)
  92. WE_GOLDEN // K T C W R | +5% Gold
  93. WE_GOLDEN2 // _ T _ _ _ | +10% Gold
  94. WE_XP // K T C W R | +5% Xp
  95. WE_XP2 // K T C W R | +10% Xp
  96. WE_D_STRIKE // K T C _ R | 15% chance
  97. WE_D_STRIKE2 // K T C _ R | 25% chance
  98. )
  99. func (we WeaponEnchant) Name() string {
  100. switch we {
  101. case WE_DAMAGE:
  102. return "Sharpened I"
  103. case WE_DAMAGE2:
  104. return "Sharpened II"
  105. case WE_DAMAGE3:
  106. return "Sharpened III"
  107. case WE_POISON:
  108. return "Poisonous I"
  109. case WE_POISON2:
  110. return "Poisonous II"
  111. case WE_FIRE:
  112. return "Flaming I"
  113. case WE_FIRE2:
  114. return "Flaming II"
  115. case WE_ICE:
  116. return "Freezing I"
  117. case WE_ICE2:
  118. return "Freezing II"
  119. case WE_ICE3:
  120. return "Freezing III"
  121. case WE_STEAL_HP:
  122. return "Vampiric I"
  123. case WE_STEAL_MP:
  124. return "Siphon I"
  125. case WE_GOLDEN:
  126. return "Golden I"
  127. case WE_GOLDEN2:
  128. return "Golden II"
  129. case WE_XP:
  130. return "Experience I"
  131. case WE_XP2:
  132. return "Experience II"
  133. case WE_D_STRIKE:
  134. return "Double Strike I"
  135. case WE_D_STRIKE2:
  136. return "Double Strike II"
  137. default:
  138. return "None"
  139. }
  140. }
  141. type RangedWeapon uint8
  142. const (
  143. RW_NONE RangedWeapon = iota // K T C W R
  144. RW_SLING // K T C W R | Damage 1
  145. RW_S_BOW // K T C _ R | Damage 3
  146. RW_L_C_BOW // K T C _ R | Damage 6
  147. RW_L_BOW // _ T _ _ R | Damage 10
  148. RW_H_C_BOW // _ _ _ _ R | Damage 12
  149. RW_L_R_C_BOW // _ T _ _ R | Damage 15
  150. RW_H_R_C_BOW // _ _ _ _ R | Damage 18
  151. )
  152. func (rw RangedWeapon) Name() string {
  153. switch rw {
  154. case RW_SLING:
  155. return "Sling"
  156. case RW_S_BOW:
  157. return "Short Bow"
  158. case RW_L_C_BOW:
  159. return "Light Cross-Bow"
  160. case RW_L_BOW:
  161. return "Long Bow"
  162. case RW_H_C_BOW:
  163. return "Heavy Cross-Bow"
  164. case RW_L_R_C_BOW:
  165. return "Light Repeating Cross-Bow"
  166. case RW_H_R_C_BOW:
  167. return "Heavy Repeating Cross-Bow"
  168. default:
  169. return "None"
  170. }
  171. }
  172. type RangedWeaponEnchant uint8
  173. const (
  174. RWE_NONE RangedWeaponEnchant = iota // _ T _ _ R
  175. RWE_DAMAGE // _ T _ _ R | R | Damage +1
  176. RWE_DAMAGE2 // _ T _ _ R | R | Damage +2
  177. RWE_DAMAGE3 // _ _ _ _ R | R | Damage +4
  178. RWE_POISON // _ T _ _ R | G | DOT 1-3 for 2 turns (40% chance)
  179. RWE_POISON2 // _ _ _ _ R | G | DOT 2-6 for 2 turns (30% chance, R get 40% chance)
  180. RWE_FIRE // _ T _ _ R | R | Fire DOT 1 for 3 turns (50% chance)
  181. RWE_FIRE2 // _ T _ _ R | R | Fire DOT 1-2 for 3 turns (45% chance)
  182. RWE_FIRE3 // _ _ _ _ R | R | Fire DOT 1-2 for 6 turns (40% chance)
  183. RWE_SLOW // _ T _ _ R | B | 35% chance, slows target by 50% for 4 turns
  184. RWE_SLOW2 // _ _ _ _ R | B | 50% chance, slows target by 50% for 4 turns
  185. RWE_BLAST // _ _ _ _ R | R | 5% chance to cause target to explode dealing 5-10 damage (target then is immune for 10 turns)
  186. RWE_D_GOLD // _ T _ _ R | B | 15% chance, double gold from kill (assuming kill shot, and gold was given)
  187. RWE_D_XP // _ T _ _ R | B | 15% chance, double xp from kill (assuming kill shot, and xp was given)
  188. )
  189. func (rwe RangedWeaponEnchant) Name() string {
  190. switch rwe {
  191. case RWE_DAMAGE:
  192. return "Sharp Arrows I"
  193. case RWE_DAMAGE2:
  194. return "Sharp Arrows II"
  195. case RWE_DAMAGE3:
  196. return "Sharp Arrows III"
  197. case RWE_POISON:
  198. return "Poison Arrows I"
  199. case RWE_POISON2:
  200. return "Poison Arrows II"
  201. case RWE_FIRE:
  202. return "Fire Arrows I"
  203. case RWE_FIRE2:
  204. return "Fire Arrows II"
  205. case RWE_FIRE3:
  206. return "Fire Arrows III"
  207. case RWE_SLOW:
  208. return "Ice Arrows I"
  209. case RWE_SLOW2:
  210. return "Ice Arrows II"
  211. case RWE_BLAST:
  212. return "Explosive Arrows I"
  213. case RWE_D_GOLD:
  214. return "Double Gold I"
  215. case RWE_D_XP:
  216. return "Double Xp I"
  217. default:
  218. return "None"
  219. }
  220. }
  221. type Armor uint8
  222. const ( // T4 & T5 needs all gem types
  223. A_CLOTHES Armor = iota // K T C W R | T0 | Default Armor (No Bonuses)
  224. A_CLOTH_MAIL // K _ C _ _ | T1 | +1 Melee, K: +5 HP, C: +1 Heal
  225. A_ROBE // _ _ C W _ | T1 | +5 MP, +1 Magic, C: +1 Heal
  226. A_LEATHER // _ T _ _ R | T1 | T: +10% Dodge, R: +1 Ranged
  227. A_PLATE_MAIL // K _ C _ _ | T2 | +2 Melee, K: +10 HP, C: +1 Heal
  228. A_G_ROBE // _ _ C W _ | T2 | +10 MP, +2 Magic, C: +2 Heal
  229. A_R_LEATHER // _ T _ _ R | T2 | T: +20% Dodge, R: +2 Ranged
  230. A_SCALE_MAIL // K _ C _ _ | T3 | +3 Melee, K: +15 HP, C: +1 Heal
  231. A_M_ROBE // _ _ C W _ | T3 | +15 MP, +3 Magic, C: +3 Heal
  232. A_PATCH_LEATHER // _ T _ _ R | T3 | T: +30% Dodge, R: +3 Ranged
  233. A_C_MAIL // K _ C _ _ | T4 | +4 Melee, K: +20 HP, C: +2 Heal
  234. A_C_ROBE // _ _ C W _ | T4 | +20 MP, +4 Magic, C: +4 Heal
  235. A_C_LEATHER // _ T _ _ R | T4 | T: +40% Dodge, R: +4 Ranged
  236. A_D_MAIL // K _ C _ _ | T5 | +5 Melee, K: +20 HP (Cap Reached), C: +2 Heal
  237. A_D_ROBE // _ _ C W _ | T5 | +20 MP (Cap Reached), +5 Magic, C: +5 Heal
  238. A_D_LEATHER // _ T _ _ R | T5 | T: +50% Dodge, R: +5 Ranged
  239. )
  240. func (a Armor) Name() string {
  241. switch a {
  242. case A_CLOTHES:
  243. return "Clothes"
  244. case A_CLOTH_MAIL:
  245. return "Cloth Mail"
  246. case A_ROBE:
  247. return "Robe"
  248. case A_LEATHER:
  249. return "Leather"
  250. case A_PLATE_MAIL:
  251. return "Plate Mail"
  252. case A_G_ROBE:
  253. return "Grand Robe"
  254. case A_R_LEATHER:
  255. return "Reinforced Leather"
  256. case A_SCALE_MAIL:
  257. return "Scale Mail"
  258. case A_M_ROBE:
  259. return "Masters Robe"
  260. case A_PATCH_LEATHER:
  261. return "Patch Leather"
  262. case A_C_MAIL:
  263. return "Crystal Mail"
  264. case A_C_ROBE:
  265. return "Crystal Robe"
  266. case A_C_LEATHER:
  267. return "Crystal Leather"
  268. case A_D_MAIL:
  269. return "Dragon Mail"
  270. case A_D_ROBE:
  271. return "Dragon Robe"
  272. case A_D_LEATHER:
  273. return "Dragon Leather"
  274. default:
  275. return "Unknown"
  276. }
  277. }
  278. type ArmorEnchant uint8
  279. // No need for +MP every X turns as that's already done (+(1 per 3 levels) MP every 4 turns)
  280. const ( // Red gems are used for Damage, Blue for Protections, and Green for Stat boosts (Health and Magic) and Health Regeneration
  281. AE_NONE ArmorEnchant = iota // K T C W R
  282. AE_HEAL // K T C W R | G | +1 HP every 8 turns (R's have 'Natures Healing' +1 HP every 8 turns, this essentially can double it)
  283. AE_HEALTH // K T C W R | G | +5 HP
  284. AE_HEALTH2 // K _ C _ R | G | +10 HP
  285. AE_MAGIC // _ _ C W _ | G | +5 MP
  286. AE_MAGIC2 // _ _ C W _ | G | +10 MP
  287. AE_SPIKE // K T C W R | R | 1 Damage to attackers
  288. AE_BLAST // K _ C W R | R | Explode dealing 5-10 damage around you, triggers at 75%, 50% and 25% health, 5 turn delay between blasts, must reach 100% health to reset
  289. AE_M_PROTECT // K T C W R | B | -10% chance to hit (Melee)
  290. AE_R_PROTECT // K T C W R | B | -30% chance to hit (Ranged)
  291. AE_IM_FIRE // K T C W R | R | 15% chance, Blocks Fire Damage (This includes Blast)
  292. AE_IM_COLD // K T C W R | B | 15% chance, Blocks Cold Damage (This includes Sleep)
  293. AE_IM_ACID // K T C W R | G | 15% chance, Blocks Acid Damage (This includes Poison)
  294. )
  295. func (ae ArmorEnchant) Name() string {
  296. switch ae {
  297. case AE_HEAL:
  298. return "Regenerative I"
  299. case AE_HEALTH:
  300. return "Healthy I"
  301. case AE_HEALTH2:
  302. return "Healthy II"
  303. case AE_MAGIC:
  304. return "Magical I"
  305. case AE_MAGIC2:
  306. return "Magical II"
  307. case AE_SPIKE:
  308. return "Spiked I"
  309. case AE_BLAST:
  310. return "Blast I"
  311. case AE_M_PROTECT:
  312. return "Melee Protective I"
  313. case AE_R_PROTECT:
  314. return "Ranged Protective I"
  315. case AE_IM_FIRE:
  316. return "Fire Immune I"
  317. case AE_IM_COLD:
  318. return "Cold Immune I"
  319. case AE_IM_ACID:
  320. return "Acid Immune I"
  321. default:
  322. return "None"
  323. }
  324. }
  325. type Shield uint8
  326. const (
  327. S_NONE Shield = iota // K T C W R
  328. S_BUCKLER // K T C _ R | +5% Block
  329. S_SMALL // K _ C _ R | +10% Block
  330. S_MEDIUM // K _ C _ _ | +12% Block
  331. S_LARGE // K _ C _ _ | +15% Block
  332. S_TOWER // K _ _ _ _ | +20% Block
  333. )
  334. func (s Shield) Name() string {
  335. switch s {
  336. case S_BUCKLER:
  337. return "Buckler"
  338. case S_SMALL:
  339. return "Small"
  340. case S_MEDIUM:
  341. return "Medium"
  342. case S_LARGE:
  343. return "Large"
  344. case S_TOWER:
  345. return "Tower"
  346. default:
  347. return "None"
  348. }
  349. }
  350. type Ring uint8
  351. const (
  352. R_NONE Ring = iota // K T C W R
  353. R_HEALTH // K T C W R | +5 HP
  354. R_HEALTH2 // K T C W R | +10 HP
  355. R_MAGIC // K T C W R | +5 MP
  356. R_MAGIC2 // K T C W R | +10 MP
  357. R_MELEE // K T C W R | +1 Melee
  358. R_RANGED // K T C W R | +1 Ranged
  359. R_UP_FIRE // K T C W R | +1 Fire
  360. R_UP_COLD // K T C W R | +1 Cold
  361. R_UP_ACID // K T C W R | +1 Acid
  362. R_IM_FIRE // K T C W R | +10% chance, Blocks Fire Damage
  363. R_IM_COLD // K T C W R | +10% chance, Blocks Cold Damage
  364. R_IM_ACID // K T C W R | +10% chance, Blocks Acid Damage
  365. )
  366. func (r Ring) Name() string {
  367. switch r {
  368. case R_HEALTH:
  369. return "Lesser Health"
  370. case R_HEALTH2:
  371. return "Greater Health"
  372. case R_MAGIC:
  373. return "Lesser Magic"
  374. case R_MAGIC2:
  375. return "Greater Magic"
  376. case R_MELEE:
  377. return "Melee"
  378. case R_RANGED:
  379. return "Ranged"
  380. case R_UP_FIRE:
  381. return "Warmth"
  382. case R_UP_COLD:
  383. return "Cooling"
  384. case R_UP_ACID:
  385. return "Acidic"
  386. case R_IM_FIRE:
  387. return "Fire Immune"
  388. case R_IM_COLD:
  389. return "Cold Immune"
  390. case R_IM_ACID:
  391. return "Acid Immune"
  392. default:
  393. return "None"
  394. }
  395. }
  396. type Amulet uint8
  397. const (
  398. AM_NONE Amulet = iota // K T C W R
  399. AM_HEALTH // K T C W R | +5 HP
  400. AM_MAGIC // K T C W R | +5 MP
  401. AM_MELEE // K T C W R | +1 Melee
  402. AM_RANGED // K T C W R | +1 Ranged
  403. AM_IM_FIRE // K T C W R | +10% chance, Blocks Fire Damage
  404. AM_IM_COLD // K T C W R | +10% chance, Blocks Cold Damage
  405. AM_IM_ACID // K T C W R | +10% chance, Blocks Acid Damage
  406. )
  407. func (am Amulet) Name() string {
  408. switch am {
  409. case AM_HEALTH:
  410. return "Health"
  411. case AM_MAGIC:
  412. return "Magic"
  413. case AM_MELEE:
  414. return "Melee"
  415. case AM_RANGED:
  416. return "Ranged"
  417. case AM_IM_FIRE:
  418. return "Fire Immune"
  419. case AM_IM_COLD:
  420. return "Cold Immune"
  421. case AM_IM_ACID:
  422. return "Acid Immune"
  423. default:
  424. return "None"
  425. }
  426. }