status.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398
  1. // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef _STATUS_H_
  4. #define _STATUS_H_
  5. struct block_list;
  6. struct mob_data;
  7. struct pet_data;
  8. struct homun_data;
  9. struct mercenary_data;
  10. struct status_change;
  11. //Use this to refer the max refinery level [Skotlex]
  12. #define MAX_REFINE 20
  13. #define MAX_REFINE_BONUS 5
  14. extern unsigned long StatusChangeFlagTable[];
  15. // Status changes listing. These code are for use by the server.
  16. typedef enum sc_type {
  17. SC_NONE = -1,
  18. //First we enumerate common status ailments which are often used around.
  19. SC_STONE = 0,
  20. SC_COMMON_MIN = 0, // begin
  21. SC_FREEZE,
  22. SC_STUN,
  23. SC_SLEEP,
  24. SC_POISON,
  25. SC_CURSE,
  26. SC_SILENCE,
  27. SC_CONFUSION,
  28. SC_BLIND,
  29. SC_BLEEDING,
  30. SC_DPOISON, //10
  31. SC_COMMON_MAX = 10, // end
  32. //Next up, we continue on 20, to leave enough room for additional "common" ailments in the future.
  33. SC_PROVOKE = 20,
  34. SC_ENDURE,
  35. SC_TWOHANDQUICKEN,
  36. SC_CONCENTRATE,
  37. SC_HIDING,
  38. SC_CLOAKING,
  39. SC_ENCPOISON,
  40. SC_POISONREACT,
  41. SC_QUAGMIRE,
  42. SC_ANGELUS,
  43. SC_BLESSING, //30
  44. SC_SIGNUMCRUCIS,
  45. SC_INCREASEAGI,
  46. SC_DECREASEAGI,
  47. SC_SLOWPOISON,
  48. SC_IMPOSITIO ,
  49. SC_SUFFRAGIUM,
  50. SC_ASPERSIO,
  51. SC_BENEDICTIO,
  52. SC_KYRIE,
  53. SC_MAGNIFICAT, //40
  54. SC_GLORIA,
  55. SC_AETERNA,
  56. SC_ADRENALINE,
  57. SC_WEAPONPERFECTION,
  58. SC_OVERTHRUST,
  59. SC_MAXIMIZEPOWER,
  60. SC_TRICKDEAD,
  61. SC_LOUD,
  62. SC_ENERGYCOAT,
  63. SC_BROKENARMOR, //50 - NOTE: These two aren't used anywhere, and they have an icon...
  64. SC_BROKENWEAPON,
  65. SC_HALLUCINATION,
  66. SC_WEIGHT50,
  67. SC_WEIGHT90,
  68. SC_ASPDPOTION0,
  69. SC_ASPDPOTION1,
  70. SC_ASPDPOTION2,
  71. SC_ASPDPOTION3,
  72. SC_SPEEDUP0,
  73. SC_SPEEDUP1, //60
  74. SC_ATKPOTION,
  75. SC_MATKPOTION,
  76. SC_WEDDING,
  77. SC_SLOWDOWN,
  78. SC_ANKLE,
  79. SC_KEEPING,
  80. SC_BARRIER,
  81. SC_STRIPWEAPON,
  82. SC_STRIPSHIELD,
  83. SC_STRIPARMOR, //70
  84. SC_STRIPHELM,
  85. SC_CP_WEAPON,
  86. SC_CP_SHIELD,
  87. SC_CP_ARMOR,
  88. SC_CP_HELM,
  89. SC_AUTOGUARD,
  90. SC_REFLECTSHIELD,
  91. SC_SPLASHER,
  92. SC_PROVIDENCE,
  93. SC_DEFENDER, //80
  94. SC_MAGICROD,
  95. SC_SPELLBREAKER,
  96. SC_AUTOSPELL,
  97. SC_SIGHTTRASHER,
  98. SC_AUTOBERSERK,
  99. SC_SPEARQUICKEN,
  100. SC_AUTOCOUNTER,
  101. SC_SIGHT,
  102. SC_SAFETYWALL,
  103. SC_RUWACH, //90
  104. SC_EXTREMITYFIST,
  105. SC_EXPLOSIONSPIRITS,
  106. SC_COMBO,
  107. SC_BLADESTOP_WAIT,
  108. SC_BLADESTOP,
  109. SC_FIREWEAPON,
  110. SC_WATERWEAPON,
  111. SC_WINDWEAPON,
  112. SC_EARTHWEAPON,
  113. SC_VOLCANO, //100,
  114. SC_DELUGE,
  115. SC_VIOLENTGALE,
  116. SC_WATK_ELEMENT,
  117. SC_ARMOR,
  118. SC_ARMOR_ELEMENT,
  119. SC_NOCHAT,
  120. SC_BABY,
  121. SC_AURABLADE,
  122. SC_PARRYING,
  123. SC_CONCENTRATION, //110
  124. SC_TENSIONRELAX,
  125. SC_BERSERK,
  126. SC_FURY,
  127. SC_GOSPEL,
  128. SC_ASSUMPTIO,
  129. SC_BASILICA,
  130. SC_GUILDAURA,
  131. SC_MAGICPOWER,
  132. SC_EDP,
  133. SC_TRUESIGHT, //120
  134. SC_WINDWALK,
  135. SC_MELTDOWN,
  136. SC_CARTBOOST,
  137. SC_CHASEWALK,
  138. SC_REJECTSWORD,
  139. SC_MARIONETTE,
  140. SC_MARIONETTE2,
  141. SC_CHANGEUNDEAD,
  142. SC_JOINTBEAT,
  143. SC_MINDBREAKER, //130
  144. SC_MEMORIZE,
  145. SC_FOGWALL,
  146. SC_SPIDERWEB,
  147. SC_DEVOTION,
  148. SC_SACRIFICE,
  149. SC_STEELBODY,
  150. SC_ORCISH,
  151. SC_READYSTORM,
  152. SC_READYDOWN,
  153. SC_READYTURN, //140
  154. SC_READYCOUNTER,
  155. SC_DODGE,
  156. SC_RUN,
  157. SC_SHADOWWEAPON,
  158. SC_ADRENALINE2,
  159. SC_GHOSTWEAPON,
  160. SC_KAIZEL,
  161. SC_KAAHI,
  162. SC_KAUPE,
  163. SC_ONEHAND, //150
  164. SC_PRESERVE,
  165. SC_BATTLEORDERS,
  166. SC_REGENERATION,
  167. SC_DOUBLECAST,
  168. SC_GRAVITATION,
  169. SC_MAXOVERTHRUST,
  170. SC_LONGING,
  171. SC_HERMODE,
  172. SC_SHRINK,
  173. SC_SIGHTBLASTER, //160
  174. SC_WINKCHARM,
  175. SC_CLOSECONFINE,
  176. SC_CLOSECONFINE2,
  177. SC_DANCING,
  178. SC_ELEMENTALCHANGE,
  179. SC_RICHMANKIM,
  180. SC_ETERNALCHAOS,
  181. SC_DRUMBATTLE,
  182. SC_NIBELUNGEN,
  183. SC_ROKISWEIL, //170
  184. SC_INTOABYSS,
  185. SC_SIEGFRIED,
  186. SC_WHISTLE,
  187. SC_ASSNCROS,
  188. SC_POEMBRAGI,
  189. SC_APPLEIDUN,
  190. SC_MODECHANGE,
  191. SC_HUMMING,
  192. SC_DONTFORGETME,
  193. SC_FORTUNE, //180
  194. SC_SERVICE4U,
  195. SC_STOP, //Prevents inflicted chars from walking. [Skotlex]
  196. SC_SPURT,
  197. SC_SPIRIT,
  198. SC_COMA, //Not a real SC_, it makes a char's HP/SP hit 1.
  199. SC_INTRAVISION,
  200. SC_INCALLSTATUS,
  201. SC_INCSTR,
  202. SC_INCAGI,
  203. SC_INCVIT, //190
  204. SC_INCINT,
  205. SC_INCDEX,
  206. SC_INCLUK,
  207. SC_INCHIT,
  208. SC_INCHITRATE,
  209. SC_INCFLEE,
  210. SC_INCFLEERATE,
  211. SC_INCMHPRATE,
  212. SC_INCMSPRATE,
  213. SC_INCATKRATE, //200
  214. SC_INCMATKRATE,
  215. SC_INCDEFRATE,
  216. SC_STRFOOD,
  217. SC_AGIFOOD,
  218. SC_VITFOOD,
  219. SC_INTFOOD,
  220. SC_DEXFOOD,
  221. SC_LUKFOOD,
  222. SC_HITFOOD,
  223. SC_FLEEFOOD, //210
  224. SC_BATKFOOD,
  225. SC_WATKFOOD,
  226. SC_MATKFOOD,
  227. SC_SCRESIST, //Increases resistance to status changes.
  228. SC_XMAS, // Xmas Suit [Valaris]
  229. SC_WARM, //SG skills [Komurka]
  230. SC_SUN_COMFORT,
  231. SC_MOON_COMFORT,
  232. SC_STAR_COMFORT,
  233. SC_FUSION, //220
  234. SC_SKILLRATE_UP,
  235. SC_SKE,
  236. SC_KAITE,
  237. SC_SWOO, // [marquis007]
  238. SC_SKA, // [marquis007]
  239. SC_EARTHSCROLL,
  240. SC_MIRACLE, //SG 'hidden' skill [Komurka]
  241. SC_MADNESSCANCEL,
  242. SC_ADJUSTMENT,
  243. SC_INCREASING, //230
  244. SC_GATLINGFEVER,
  245. SC_TATAMIGAESHI,
  246. SC_UTSUSEMI,
  247. SC_BUNSINJYUTSU,
  248. SC_KAENSIN,
  249. SC_SUITON,
  250. SC_NEN,
  251. SC_KNOWLEDGE,
  252. SC_SMA,
  253. SC_FLING, //240
  254. SC_AVOID,
  255. SC_CHANGE,
  256. SC_BLOODLUST,
  257. SC_FLEET,
  258. SC_SPEED,
  259. SC_DEFENCE,
  260. //SC_INCASPDRATE,
  261. SC_INCFLEE2 = 248,
  262. SC_JAILED,
  263. SC_ENCHANTARMS, //250
  264. SC_MAGICALATTACK,
  265. SC_ARMORCHANGE,
  266. SC_CRITICALWOUND,
  267. SC_MAGICMIRROR,
  268. SC_SLOWCAST,
  269. SC_SUMMER,
  270. SC_EXPBOOST,
  271. SC_ITEMBOOST,
  272. SC_BOSSMAPINFO,
  273. SC_LIFEINSURANCE, //260
  274. SC_INCCRI,
  275. //SC_INCDEF,
  276. //SC_INCBASEATK = 263,
  277. //SC_FASTCAST,
  278. SC_MDEF_RATE = 265,
  279. //SC_HPREGEN,
  280. SC_INCHEALRATE = 267,
  281. SC_PNEUMA,
  282. SC_AUTOTRADE,
  283. SC_KSPROTECTED, //270
  284. SC_ARMOR_RESIST = 271,
  285. SC_SPCOST_RATE,
  286. SC_COMMONSC_RESIST,
  287. SC_SEVENWIND,
  288. SC_DEF_RATE,
  289. //SC_SPREGEN,
  290. SC_WALKSPEED = 277,
  291. // Mercenary Only Bonus Effects
  292. SC_MERC_FLEEUP,
  293. SC_MERC_ATKUP,
  294. SC_MERC_HPUP, //280
  295. SC_MERC_SPUP,
  296. SC_MERC_HITUP,
  297. SC_MERC_QUICKEN,
  298. SC_REBIRTH,
  299. //SC_SKILLCASTRATE, //285
  300. //SC_DEFRATIOATK,
  301. //SC_HPDRAIN,
  302. //SC_SKILLATKBONUS,
  303. SC_ITEMSCRIPT = 289,
  304. SC_S_LIFEPOTION, //290
  305. SC_L_LIFEPOTION,
  306. SC_JEXPBOOST,
  307. //SC_IGNOREDEF,
  308. SC_HELLPOWER = 294,
  309. SC_INVINCIBLE, //295
  310. SC_INVINCIBLEOFF,
  311. SC_MANU_ATK,
  312. SC_MANU_DEF,
  313. SC_SPL_ATK,
  314. SC_SPL_DEF, //300
  315. SC_MANU_MATK,
  316. SC_SPL_MATK,
  317. SC_FOOD_STR_CASH,
  318. SC_FOOD_AGI_CASH,
  319. SC_FOOD_VIT_CASH, //305
  320. SC_FOOD_DEX_CASH,
  321. SC_FOOD_INT_CASH,
  322. SC_FOOD_LUK_CASH,
  323. //SC_MOVHASTE_INFINITY,
  324. SC_PARTYFLEE = 310,
  325. //SC_ENDURE_MDEF, //311
  326. // Third Jobs - Maintaining SI order for SCs.
  327. SC_EPICLESIS = 325,
  328. SC_ORATIO,
  329. SC_LAUDAAGNUS,
  330. SC_LAUDARAMUS,
  331. SC_RENOVATIO = 332,
  332. SC_EXPIATIO = 336,
  333. SC_DUPLELIGHT,
  334. SC_ADORAMUS = 380,
  335. SC_AB_SECRAMENT = 451,
  336. SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
  337. } sc_type;
  338. // Official status change ids, used to display status icons on the client.
  339. enum si_type {
  340. SI_BLANK = -1,
  341. SI_PROVOKE = 0,
  342. SI_ENDURE = 1,
  343. SI_TWOHANDQUICKEN = 2,
  344. SI_CONCENTRATE = 3,
  345. SI_HIDING = 4,
  346. SI_CLOAKING = 5,
  347. SI_ENCPOISON = 6,
  348. SI_POISONREACT = 7,
  349. SI_QUAGMIRE = 8,
  350. SI_ANGELUS = 9,
  351. SI_BLESSING = 10,
  352. SI_SIGNUMCRUCIS = 11,
  353. SI_INCREASEAGI = 12,
  354. SI_DECREASEAGI = 13,
  355. SI_SLOWPOISON = 14,
  356. SI_IMPOSITIO = 15,
  357. SI_SUFFRAGIUM = 16,
  358. SI_ASPERSIO = 17,
  359. SI_BENEDICTIO = 18,
  360. SI_KYRIE = 19,
  361. SI_MAGNIFICAT = 20,
  362. SI_GLORIA = 21,
  363. SI_AETERNA = 22,
  364. SI_ADRENALINE = 23,
  365. SI_WEAPONPERFECTION = 24,
  366. SI_OVERTHRUST = 25,
  367. SI_MAXIMIZEPOWER = 26,
  368. SI_RIDING = 27,
  369. SI_FALCON = 28,
  370. SI_TRICKDEAD = 29,
  371. SI_LOUD = 30,
  372. SI_ENERGYCOAT = 31,
  373. SI_BROKENARMOR = 32,
  374. SI_BROKENWEAPON = 33,
  375. SI_HALLUCINATION = 34,
  376. SI_WEIGHT50 = 35,
  377. SI_WEIGHT90 = 36,
  378. SI_ASPDPOTION0 = 37,
  379. SI_ASPDPOTION1 = 38,
  380. SI_ASPDPOTION2 = 39,
  381. SI_ASPDPOTIONINFINITY = 40,
  382. SI_SPEEDPOTION1 = 41,
  383. // SI_MOVHASTE_INFINITY = 42,
  384. // SI_AUTOCOUNTER = 43,
  385. // SI_SPLASHER = 44,
  386. // SI_ANKLESNARE = 45,
  387. SI_ACTIONDELAY = 46,
  388. // SI_NOACTION = 47,
  389. // SI_IMPOSSIBLEPICKUP = 48,
  390. // SI_BARRIER = 49,
  391. SI_STRIPWEAPON = 50,
  392. SI_STRIPSHIELD = 51,
  393. SI_STRIPARMOR = 52,
  394. SI_STRIPHELM = 53,
  395. SI_CP_WEAPON = 54,
  396. SI_CP_SHIELD = 55,
  397. SI_CP_ARMOR = 56,
  398. SI_CP_HELM = 57,
  399. SI_AUTOGUARD = 58,
  400. SI_REFLECTSHIELD = 59,
  401. // SI_DEVOTION = 60,
  402. SI_PROVIDENCE = 61,
  403. SI_DEFENDER = 62,
  404. // SI_MAGICROD = 63,
  405. // SI_WEAPONPROPERTY = 64,
  406. SI_AUTOSPELL = 65,
  407. // SI_SPECIALZONE = 66,
  408. // SI_MASK = 67,
  409. SI_SPEARQUICKEN = 68,
  410. // SI_BDPLAYING = 69,
  411. // SI_WHISTLE = 70,
  412. // SI_ASSASSINCROSS = 71,
  413. // SI_POEMBRAGI = 72,
  414. // SI_APPLEIDUN = 73,
  415. // SI_HUMMING = 74,
  416. // SI_DONTFORGETME = 75,
  417. // SI_FORTUNEKISS = 76,
  418. // SI_SERVICEFORYOU = 77,
  419. // SI_RICHMANKIM = 78,
  420. // SI_ETERNALCHAOS = 79,
  421. // SI_DRUMBATTLEFIELD = 80,
  422. // SI_RINGNIBELUNGEN = 81,
  423. // SI_ROKISWEIL = 82,
  424. // SI_INTOABYSS = 83,
  425. // SI_SIEGFRIED = 84,
  426. // SI_BLADESTOP = 85,
  427. SI_EXPLOSIONSPIRITS = 86,
  428. SI_STEELBODY = 87,
  429. // SI_EXTREMITYFIST = 88,
  430. // SI_COMBOATTACK = 89,
  431. SI_FIREWEAPON = 90,
  432. SI_WATERWEAPON = 91,
  433. SI_WINDWEAPON = 92,
  434. SI_EARTHWEAPON = 93,
  435. // SI_MAGICATTACK = 94,
  436. SI_STOP = 95,
  437. // SI_WEAPONBRAKER = 96,
  438. SI_UNDEAD = 97,
  439. // SI_POWERUP = 98,
  440. // SI_AGIUP = 99,
  441. // SI_SIEGEMODE = 100,
  442. // SI_INVISIBLE = 101,
  443. // SI_STATUSONE = 102,
  444. SI_AURABLADE = 103,
  445. SI_PARRYING = 104,
  446. SI_CONCENTRATION = 105,
  447. SI_TENSIONRELAX = 106,
  448. SI_BERSERK = 107,
  449. // SI_SACRIFICE = 108,
  450. // SI_GOSPEL = 109,
  451. SI_ASSUMPTIO = 110,
  452. // SI_BASILICA = 111,
  453. SI_LANDENDOW = 112,
  454. SI_MAGICPOWER = 113,
  455. SI_EDP = 114,
  456. SI_TRUESIGHT = 115,
  457. SI_WINDWALK = 116,
  458. SI_MELTDOWN = 117,
  459. SI_CARTBOOST = 118,
  460. // SI_CHASEWALK = 119,
  461. SI_REJECTSWORD = 120,
  462. SI_MARIONETTE = 121,
  463. SI_MARIONETTE2 = 122,
  464. SI_MOONLIT = 123,
  465. SI_BLEEDING = 124,
  466. SI_JOINTBEAT = 125,
  467. // SI_MINDBREAKER = 126,
  468. // SI_MEMORIZE = 127,
  469. // SI_FOGWALL = 128,
  470. // SI_SPIDERWEB = 129,
  471. SI_BABY = 130,
  472. // SI_SUB_WEAPONPROPERTY = 131,
  473. SI_AUTOBERSERK = 132,
  474. SI_RUN = 133,
  475. SI_BUMP = 134,
  476. SI_READYSTORM = 135,
  477. // SI_STORMKICK_READY = 136,
  478. SI_READYDOWN = 137,
  479. // SI_DOWNKICK_READY = 138,
  480. SI_READYTURN = 139,
  481. // SI_TURNKICK_READY = 140,
  482. SI_READYCOUNTER = 141,
  483. // SI_COUNTER_READY = 142,
  484. SI_DODGE = 143,
  485. // SI_DODGE_READY = 144,
  486. SI_SPURT = 145,
  487. SI_SHADOWWEAPON = 146,
  488. SI_ADRENALINE2 = 147,
  489. SI_GHOSTWEAPON = 148,
  490. SI_SPIRIT = 149,
  491. // SI_PLUSATTACKPOWER = 150,
  492. // SI_PLUSMAGICPOWER = 151,
  493. SI_DEVIL = 152,
  494. SI_KAITE = 153,
  495. // SI_SWOO = 154,
  496. // SI_STAR2 = 155,
  497. SI_KAIZEL = 156,
  498. SI_KAAHI = 157,
  499. SI_KAUPE = 158,
  500. SI_SMA = 159,
  501. SI_NIGHT = 160,
  502. SI_ONEHAND = 161,
  503. // SI_FRIEND = 162,
  504. // SI_FRIENDUP = 163,
  505. // SI_SG_WARM = 164,
  506. SI_WARM = 165,
  507. // 166 | The three show the exact same display: ultra red character (165, 166, 167)
  508. // 167 | Their names would be SI_SG_SUN_WARM, SI_SG_MOON_WARM, SI_SG_STAR_WARM
  509. // SI_EMOTION = 168,
  510. SI_SUN_COMFORT = 169,
  511. SI_MOON_COMFORT = 170,
  512. SI_STAR_COMFORT = 171,
  513. // SI_EXPUP = 172,
  514. // SI_GDSKILL_BATTLEORDER = 173,
  515. // SI_GDSKILL_REGENERATION = 174,
  516. // SI_GDSKILL_POSTDELAY = 175,
  517. // SI_RESISTHANDICAP = 176,
  518. // SI_MAXHPPERCENT = 177,
  519. // SI_MAXSPPERCENT = 178,
  520. // SI_DEFENCE = 179,
  521. // SI_SLOWDOWN = 180,
  522. SI_PRESERVE = 181,
  523. SI_INCSTR = 182,
  524. // SI_NOT_EXTREMITYFIST = 183,
  525. SI_INTRAVISION = 184,
  526. // SI_MOVESLOW_POTION = 185,
  527. SI_DOUBLECAST = 186,
  528. // SI_GRAVITATION = 187,
  529. SI_MAXOVERTHRUST = 188,
  530. // SI_LONGING = 189,
  531. // SI_HERMODE = 190,
  532. SI_TAROT = 191, // the icon allows no doubt... but what is it really used for ?? [DracoRPG]
  533. // SI_HLIF_AVOID = 192,
  534. // SI_HFLI_FLEET = 193,
  535. // SI_HFLI_SPEED = 194,
  536. // SI_HLIF_CHANGE = 195,
  537. // SI_HAMI_BLOODLUST = 196,
  538. SI_SHRINK = 197,
  539. SI_SIGHTBLASTER = 198,
  540. SI_WINKCHARM = 199,
  541. SI_CLOSECONFINE = 200,
  542. SI_CLOSECONFINE2 = 201,
  543. // SI_DISABLEMOVE = 202,
  544. SI_MADNESSCANCEL = 203, //[blackhole89]
  545. SI_GATLINGFEVER = 204,
  546. SI_EARTHSCROLL = 205,
  547. SI_UTSUSEMI = 206,
  548. SI_BUNSINJYUTSU = 207,
  549. SI_NEN = 208,
  550. SI_ADJUSTMENT = 209,
  551. SI_ACCURACY = 210,
  552. // SI_NJ_SUITON = 211,
  553. // SI_PET = 212,
  554. // SI_MENTAL = 213,
  555. // SI_EXPMEMORY = 214,
  556. // SI_PERFORMANCE = 215,
  557. // SI_GAIN = 216,
  558. // SI_GRIFFON = 217,
  559. // SI_DRIFT = 218,
  560. // SI_WALLSHIFT = 219,
  561. // SI_REINCARNATION = 220,
  562. // SI_PATTACK = 221,
  563. // SI_PSPEED = 222,
  564. // SI_PDEFENSE = 223,
  565. // SI_PCRITICAL = 224,
  566. // SI_RANKING = 225,
  567. // SI_PTRIPLE = 226,
  568. // SI_DENERGY = 227,
  569. // SI_WAVE1 = 228,
  570. // SI_WAVE2 = 229,
  571. // SI_WAVE3 = 230,
  572. // SI_WAVE4 = 231,
  573. // SI_DAURA = 232,
  574. // SI_DFREEZER = 233,
  575. // SI_DPUNISH = 234,
  576. // SI_DBARRIER = 235,
  577. // SI_DWARNING = 236,
  578. // SI_MOUSEWHEEL = 237,
  579. // SI_DGAUGE = 238,
  580. // SI_DACCEL = 239,
  581. // SI_DBLOCK = 240,
  582. SI_FOODSTR = 241,
  583. SI_FOODAGI = 242,
  584. SI_FOODVIT = 243,
  585. SI_FOODDEX = 244,
  586. SI_FOODINT = 245,
  587. SI_FOODLUK = 246,
  588. SI_FOODFLEE = 247,
  589. SI_FOODHIT = 248,
  590. SI_FOODCRI = 249,
  591. SI_EXPBOOST = 250,
  592. SI_LIFEINSURANCE = 251,
  593. SI_ITEMBOOST = 252,
  594. SI_BOSSMAPINFO = 253,
  595. // SI_DA_ENERGY = 254,
  596. // SI_DA_FIRSTSLOT = 255,
  597. // SI_DA_HEADDEF = 256,
  598. // SI_DA_SPACE = 257,
  599. // SI_DA_TRANSFORM = 258,
  600. // SI_DA_ITEMREBUILD = 259,
  601. // SI_DA_ILLUSION = 260, //All mobs display as Turtle General
  602. // SI_DA_DARKPOWER = 261,
  603. // SI_DA_EARPLUG = 262,
  604. // SI_DA_CONTRACT = 263, //Bio Mob effect on you and SI_TRICKDEAD icon
  605. // SI_DA_BLACK = 264, //For short time blurry screen
  606. // SI_DA_MAGICCART = 265,
  607. // SI_CRYSTAL = 266,
  608. // SI_DA_REBUILD = 267,
  609. // SI_DA_EDARKNESS = 268,
  610. // SI_DA_EGUARDIAN = 269,
  611. // SI_DA_TIMEOUT = 270,
  612. SI_FOOD_STR_CASH = 271,
  613. SI_FOOD_AGI_CASH = 272,
  614. SI_FOOD_VIT_CASH = 273,
  615. SI_FOOD_DEX_CASH = 274,
  616. SI_FOOD_INT_CASH = 275,
  617. SI_FOOD_LUK_CASH = 276,
  618. SI_MERC_FLEEUP = 277,
  619. SI_MERC_ATKUP = 278,
  620. SI_MERC_HPUP = 279,
  621. SI_MERC_SPUP = 280,
  622. SI_MERC_HITUP = 281,
  623. SI_SLOWCAST = 282,
  624. // SI_MAGICMIRROR = 283,
  625. // SI_STONESKIN = 284,
  626. // SI_ANTIMAGIC = 285,
  627. SI_CRITICALWOUND = 286,
  628. // SI_NPC_DEFENDER = 287,
  629. // SI_NOACTION_WAIT = 288,
  630. SI_MOVHASTE_HORSE = 289,
  631. SI_DEF_RATE = 290,
  632. SI_MDEF_RATE = 291,
  633. SI_INCHEALRATE = 292,
  634. SI_S_LIFEPOTION = 293,
  635. SI_L_LIFEPOTION = 294,
  636. SI_INCCRI = 295,
  637. SI_PLUSAVOIDVALUE = 296,
  638. // SI_ATKER_ASPD = 297,
  639. // SI_TARGET_ASPD = 298,
  640. // SI_ATKER_MOVESPEED = 299,
  641. SI_ATKER_BLOOD = 300,
  642. SI_TARGET_BLOOD = 301,
  643. SI_ARMOR_PROPERTY = 302,
  644. // SI_REUSE_LIMIT_A = 303,
  645. SI_HELLPOWER = 304,
  646. // SI_STEAMPACK = 305,
  647. // SI_REUSE_LIMIT_B = 306,
  648. // SI_REUSE_LIMIT_C = 307,
  649. // SI_REUSE_LIMIT_D = 308,
  650. // SI_REUSE_LIMIT_E = 309,
  651. // SI_REUSE_LIMIT_F = 310,
  652. SI_INVINCIBLE = 311,
  653. SI_CASH_PLUSONLYJOBEXP = 312,
  654. SI_PARTYFLEE = 313,
  655. // SI_ANGEL_PROTECT = 314,
  656. /*
  657. SI_ENDURE_MDEF = 315,
  658. SI_ENCHANTBLADE = 316,
  659. SI_DEATHBOUND = 317,
  660. SI_REFRESH = 318,
  661. SI_GIANTGROWTH = 319,
  662. SI_STONEHARDSKIN = 320,
  663. SI_VITALITYACTIVATION = 321,
  664. SI_FIGHTINGSPIRIT = 322,
  665. SI_ABUNDANCE = 323,
  666. SI_REUSE_MILLENNIUMSHIELD = 324,
  667. SI_REUSE_CRUSHSTRIKE = 325,
  668. SI_REUSE_REFRESH = 326,
  669. SI_REUSE_STORMBLAST = 327,
  670. SI_VENOMIMPRESS = 328,
  671. */
  672. SI_EPICLESIS = 329,
  673. SI_ORATIO = 330,
  674. SI_LAUDAAGNUS = 331,
  675. SI_LAUDARAMUS = 332,
  676. // SI_CLOAKINGEXCEED = 333,
  677. // SI_HALLUCINATIONWALK = 334,
  678. // SI_HALLUCINATIONWALK_POSTDELAY = 335,
  679. SI_RENOVATIO = 336,
  680. // SI_WEAPONBLOCKING = 337,
  681. // SI_WEAPONBLOCKING_POSTDELAY = 338,
  682. // SI_ROLLINGCUTTER = 339,
  683. SI_EXPIATIO = 340,
  684. /*
  685. SI_POISONINGWEAPON = 341,
  686. SI_TOXIN = 342,
  687. SI_PARALYSE = 343,
  688. SI_VENOMBLEED = 344,
  689. SI_MAGICMUSHROOM = 345,
  690. SI_DEATHHURT = 346,
  691. SI_PYREXIA = 347,
  692. SI_OBLIVIONCURSE = 348,
  693. SI_LEECHESEND = 349,
  694. */
  695. SI_DUPLELIGHT = 350,
  696. /*
  697. SI_FROSTMISTY = 351,
  698. SI_FEARBREEZE = 352,
  699. SI_ELECTRICSHOCKER = 353,
  700. SI_MARSHOFABYSS = 354,
  701. SI_RECOGNIZEDSPELL = 355,
  702. SI_STASIS = 356,
  703. SI_WUGRIDER = 357,
  704. SI_WUGDASH = 358,
  705. SI_WUGBITE = 359,
  706. SI_CAMOUFLAGE = 360,
  707. SI_ACCELERATION = 361,
  708. SI_HOVERING = 362,
  709. SI_SUMMON1 = 363,
  710. SI_SUMMON2 = 364,
  711. SI_SUMMON3 = 365,
  712. SI_SUMMON4 = 366,
  713. SI_SUMMON5 = 367,
  714. SI_MVPCARD_TAOGUNKA = 368,
  715. SI_MVPCARD_MISTRESS = 369,
  716. SI_MVPCARD_ORCHERO = 370,
  717. SI_MVPCARD_ORCLORD = 371,
  718. SI_OVERHEAT_LIMITPOINT = 372,
  719. SI_OVERHEAT = 373,
  720. SI_SHAPESHIFT = 374,
  721. SI_INFRAREDSCAN = 375,
  722. SI_MAGNETICFIELD = 376,
  723. SI_NEUTRALBARRIER = 377,
  724. SI_NEUTRALBARRIER_MASTER = 378,
  725. SI_STEALTHFIELD = 379,
  726. SI_STEALTHFIELD_MASTER = 380,
  727. */
  728. SI_MANU_ATK = 381,
  729. SI_MANU_DEF = 382,
  730. SI_SPL_ATK = 383,
  731. SI_SPL_DEF = 384,
  732. // SI_REPRODUCE = 385,
  733. SI_MANU_MATK = 386,
  734. SI_SPL_MATK = 387,
  735. /*
  736. SI_STR_SCROLL = 388,
  737. SI_INT_SCROLL = 389,
  738. SI_LG_REFLECTDAMAGE = 390,
  739. SI_FORCEOFVANGUARD = 391,
  740. SI_BUCHEDENOEL = 392,
  741. SI_AUTOSHADOWSPELL = 393,
  742. SI_SHADOWFORM = 394,
  743. SI_RAID = 395,
  744. SI_SHIELDSPELL_DEF = 396,
  745. SI_SHIELDSPELL_MDEF = 397,
  746. SI_SHIELDSPELL_REF = 398,
  747. SI_BODYPAINT = 399,
  748. SI_EXEEDBREAK = 400,
  749. */
  750. SI_ADORAMUS = 401,
  751. /*
  752. SI_PRESTIGE = 402,
  753. SI_INVISIBILITY = 403,
  754. SI_DEADLYINFECT = 404,
  755. SI_BANDING = 405,
  756. SI_EARTHDRIVE = 406,
  757. SI_INSPIRATION = 407,
  758. SI_ENERVATION = 408,
  759. SI_GROOMY = 409,
  760. SI_RAISINGDRAGON = 410,
  761. SI_IGNORANCE = 411,
  762. SI_LAZINESS = 412,
  763. SI_LIGHTNINGWALK = 413,
  764. SI_ACARAJE = 414,
  765. SI_UNLUCKY = 415,
  766. SI_CURSEDCIRCLE_ATKER = 416,
  767. SI_CURSEDCIRCLE_TARGET = 417,
  768. SI_WEAKNESS = 418,
  769. SI_CRESCENTELBOW = 419,
  770. SI_NOEQUIPACCESSARY = 420,
  771. SI_STRIPACCESSARY = 421,
  772. SI_MANHOLE = 422,
  773. SI_POPECOOKIE = 423,
  774. SI_FALLENEMPIRE = 424,
  775. SI_GENTLETOUCH_ENERGYGAIN = 425,
  776. SI_GENTLETOUCH_CHANGE = 426,
  777. SI_GENTLETOUCH_REVITALIZE = 427,
  778. SI_BLOODYLUST = 428,
  779. SI_SWING = 429,
  780. SI_SYMPHONY_LOVE = 430,
  781. SI_PROPERTYWALK = 431,
  782. SI_SPELLFIST = 432,
  783. SI_NETHERWORLD = 433,
  784. SI_SIREN = 434,
  785. SI_DEEP_SLEEP = 435,
  786. SI_SIRCLEOFNATURE = 436,
  787. SI_COLD = 437,
  788. SI_GLOOMYDAY = 438,
  789. SI_SONG_OF_MANA = 439,
  790. SI_CLOUD_KILL = 440,
  791. SI_DANCE_WITH_WUG = 441,
  792. SI_RUSH_WINDMILL = 442,
  793. SI_ECHOSONG = 443,
  794. SI_HARMONIZE = 444,
  795. SI_STRIKING = 445,
  796. SI_WARMER = 446,
  797. SI_MOONLIT_SERENADE = 447,
  798. SI_SATURDAY_NIGHT_FEVER = 448,
  799. SI_SITDOWN_FORCE = 449,
  800. SI_ANALYZE = 450,
  801. SI_LERADS_DEW = 451,
  802. SI_MELODYOFSINK = 452,
  803. SI_BEYOND_OF_WARCRY = 453,
  804. SI_UNLIMITED_HUMMING_VOICE = 454,
  805. SI_SPELLBOOK1 = 455,
  806. SI_SPELLBOOK2 = 456,
  807. SI_SPELLBOOK3 = 457,
  808. SI_FREEZE_SP = 458,
  809. SI_GN_TRAINING_SWORD = 459,
  810. SI_GN_REMODELING_CART = 460,
  811. SI_GN_CARTBOOST = 461,
  812. SI_FIXEDCASTINGTM_REDUCE = 462,
  813. SI_THORNS_TRAP = 463,
  814. SI_BLOOD_SUCKER = 464,
  815. SI_SPORE_EXPLOSION = 465,
  816. SI_DEMONIC_FIRE = 466,
  817. SI_FIRE_EXPANSION_SMOKE_POWDER = 467,
  818. SI_FIRE_EXPANSION_TEAR_GAS = 468,
  819. SI_BLOCKING_PLAY = 469,
  820. SI_MANDRAGORA = 470,
  821. SI_ACTIVATE = 471,
  822. */
  823. SI_AB_SECRAMENT = 472,
  824. /*
  825. SI_ASSUMPTIO2 = 473,
  826. SI_TK_SEVENWIND = 474,
  827. SI_LIMIT_ODINS_RECALL = 475,
  828. SI_STOMACHACHE = 476,
  829. SI_MYSTERIOUS_POWDER = 477,
  830. SI_MELON_BOMB = 478,
  831. SI_BANANA_BOMB_SITDOWN_POSTDELAY = 479,
  832. SI_PROMOTE_HEALTH_RESERCH = 480,
  833. SI_ENERGY_DRINK_RESERCH = 481,
  834. SI_EXTRACT_WHITE_POTION_Z = 482,
  835. SI_VITATA_500 = 483,
  836. SI_EXTRACT_SALAMINE_JUICE = 484,
  837. SI_BOOST500 = 485,
  838. SI_FULL_SWING_K = 486,
  839. SI_MANA_PLUS = 487,
  840. SI_MUSTLE_M = 488,
  841. SI_LIFE_FORCE_F = 489,
  842. SI_VACUUM_EXTREME = 490,
  843. SI_SAVAGE_STEAK = 491,
  844. SI_COCKTAIL_WARG_BLOOD = 492,
  845. SI_MINOR_BBQ = 493,
  846. SI_SIROMA_ICE_TEA = 494,
  847. SI_DROCERA_HERB_STEAMED = 495,
  848. SI_PUTTI_TAILS_NOODLES = 496,
  849. SI_BANANA_BOMB = 497,
  850. SI_SUMMON_AGNI = 498,
  851. SI_SPELLBOOK4 = 499,
  852. SI_SPELLBOOK5 = 500,
  853. SI_SPELLBOOK6 = 501,
  854. SI_SPELLBOOK7 = 502,
  855. SI_ELEMENTAL_AGGRESSIVE = 503,
  856. SI_RETURN_TO_ELDICASTES = 504,
  857. SI_BANDING_DEFENCE = 505,
  858. SI_SKELSCROLL = 506,
  859. SI_DISTRUCTIONSCROLL = 507,
  860. SI_ROYALSCROLL = 508,
  861. SI_IMMUNITYSCROLL = 509,
  862. SI_MYSTICSCROLL = 510,
  863. SI_BATTLESCROLL = 511,
  864. SI_ARMORSCROLL = 512,
  865. SI_FREYJASCROLL = 513,
  866. SI_SOULSCROLL = 514,
  867. SI_CIRCLE_OF_FIRE = 515,
  868. SI_CIRCLE_OF_FIRE_OPTION = 516,
  869. SI_FIRE_CLOAK = 517,
  870. SI_FIRE_CLOAK_OPTION = 518,
  871. SI_WATER_SCREEN = 519,
  872. SI_WATER_SCREEN_OPTION = 520,
  873. SI_WATER_DROP = 521,
  874. SI_WATER_DROP_OPTION = 522,
  875. SI_WIND_STEP = 523,
  876. SI_WIND_STEP_OPTION = 524,
  877. SI_WIND_CURTAIN = 525,
  878. SI_WIND_CURTAIN_OPTION = 526,
  879. SI_WATER_BARRIER = 527,
  880. SI_ZEPHYR = 528,
  881. SI_SOLID_SKIN = 529,
  882. SI_SOLID_SKIN_OPTION = 530,
  883. SI_STONE_SHIELD = 531,
  884. SI_STONE_SHIELD_OPTION = 532,
  885. SI_POWER_OF_GAIA = 533,
  886. SI_EL_WAIT = 534,
  887. SI_EL_PASSIVE = 535,
  888. SI_EL_DEFENSIVE = 536,
  889. SI_EL_OFFENSIVE = 537,
  890. SI_EL_COST = 538,
  891. SI_PYROTECHNIC = 539,
  892. SI_PYROTECHNIC_OPTION = 540,
  893. SI_HEATER = 541,
  894. SI_HEATER_OPTION = 542,
  895. SI_TROPIC = 543,
  896. SI_TROPIC_OPTION = 544,
  897. SI_AQUAPLAY = 545,
  898. SI_AQUAPLAY_OPTION = 546,
  899. SI_COOLER = 547,
  900. SI_COOLER_OPTION = 548,
  901. SI_CHILLY_AIR = 549,
  902. SI_CHILLY_AIR_OPTION = 550,
  903. SI_GUST = 551,
  904. SI_GUST_OPTION = 552,
  905. SI_BLAST = 553,
  906. SI_BLAST_OPTION = 554,
  907. SI_WILD_STORM = 555,
  908. SI_WILD_STORM_OPTION = 556,
  909. SI_PETROLOGY = 557,
  910. SI_PETROLOGY_OPTION = 558,
  911. SI_CURSED_SOIL = 559,
  912. SI_CURSED_SOIL_OPTION = 560,
  913. SI_UPHEAVAL = 561,
  914. SI_UPHEAVAL_OPTION = 562,
  915. SI_TIDAL_WEAPON = 563,
  916. SI_TIDAL_WEAPON_OPTION = 564,
  917. SI_ROCK_CRUSHER = 565,
  918. SI_ROCK_CRUSHER_ATK = 566,
  919. SI_FIRE_INSIGNIA = 567,
  920. SI_WATER_INSIGNIA = 568,
  921. SI_WIND_INSIGNIA = 569,
  922. SI_EARTH_INSIGNIA = 570,
  923. SI_EQUIPED_FLOOR = 571,
  924. SI_GUARDIAN_RECALL = 572,
  925. SI_MORA_BUFF = 573,
  926. SI_REUSE_LIMIT_G = 574,
  927. SI_REUSE_LIMIT_H = 575,
  928. SI_NEEDLE_OF_PARALYZE = 576,
  929. SI_PAIN_KILLER = 577,
  930. SI_G_LIFEPOTION = 578,
  931. SI_VITALIZE_POTION = 579,
  932. SI_LIGHT_OF_REGENE = 580,
  933. SI_OVERED_BOOST = 581,
  934. SI_SILENT_BREEZE = 582,
  935. SI_ODINS_POWER = 583,
  936. SI_STYLE_CHANGE = 584,
  937. SI_SONIC_CLAW_POSTDELAY = 585,
  938. //--586-595 Unused
  939. SI_SILVERVEIN_RUSH_POSTDELAY = 596,
  940. SI_MIDNIGHT_FRENZY_POSTDELAY = 597,
  941. SI_GOLDENE_FERSE = 598,
  942. SI_ANGRIFFS_MODUS = 599,
  943. SI_TINDER_BREAKER = 600,
  944. SI_TINDER_BREAKER_POSTDELAY = 601,
  945. SI_CBC = 602,
  946. SI_CBC_POSTDELAY = 603,
  947. SI_EQC = 604,
  948. SI_MAGMA_FLOW = 605,
  949. SI_GRANITIC_ARMOR = 606,
  950. SI_PYROCLASTIC = 607,
  951. SI_VOLCANIC_ASH = 608,
  952. SI_SPIRITS_SAVEINFO1 = 609,
  953. SI_SPIRITS_SAVEINFO2 = 610,
  954. SI_MAGIC_CANDY = 611,
  955. //--612 skipped
  956. SI_ALL_RIDING = 613,
  957. //--614 skipped
  958. SI_MACRO = 615,
  959. SI_MACRO_POSTDELAY = 616,
  960. SI_BEER_BOTTLE_CAP = 617,
  961. SI_OVERLAPEXPUP = 618,
  962. SI_PC_IZ_DUN05 = 619,
  963. SI_CRUSHSTRIKE = 620,
  964. SI_MONSTER_TRANSFORM = 621,
  965. SI_SIT = 622,
  966. SI_ONAIR = 623,
  967. SI_MTF_ASPD = 624,
  968. SI_MTF_RANGEATK = 625,
  969. SI_MTF_MATK = 626,
  970. SI_MTF_MLEATKED = 627,
  971. SI_MTF_CRIDAMAGE = 628,
  972. SI_REUSE_LIMIT_MTF = 629,
  973. SI_MACRO_PERMIT = 630,
  974. SI_MACRO_PLAY = 631,
  975. SI_SKF_CAST = 632,
  976. SI_SKF_ASPD = 633,
  977. SI_SKF_ATK = 634,
  978. SI_SKF_MATK = 635,
  979. SI_REWARD_PLUSONLYJOBEXP = 636,
  980. */
  981. };
  982. // JOINTBEAT stackable ailments
  983. enum e_joint_break
  984. {
  985. BREAK_ANKLE = 0x01, // MoveSpeed reduced by 50%
  986. BREAK_WRIST = 0x02, // ASPD reduced by 25%
  987. BREAK_KNEE = 0x04, // MoveSpeed reduced by 30%, ASPD reduced by 10%
  988. BREAK_SHOULDER = 0x08, // DEF reduced by 50%
  989. BREAK_WAIST = 0x10, // DEF reduced by 25%, ATK reduced by 25%
  990. BREAK_NECK = 0x20, // current attack does 2x damage, inflicts 'bleeding' for 30 seconds
  991. BREAK_FLAGS = BREAK_ANKLE | BREAK_WRIST | BREAK_KNEE | BREAK_SHOULDER | BREAK_WAIST | BREAK_NECK,
  992. };
  993. extern int current_equip_item_index;
  994. extern int current_equip_card_id;
  995. extern int percentrefinery[5][MAX_REFINE+1]; //The last slot always has a 0% success chance [Skotlex]
  996. //Mode definitions to clear up code reading. [Skotlex]
  997. enum e_mode
  998. {
  999. MD_CANMOVE = 0x0001,
  1000. MD_LOOTER = 0x0002,
  1001. MD_AGGRESSIVE = 0x0004,
  1002. MD_ASSIST = 0x0008,
  1003. MD_CASTSENSOR_IDLE = 0x0010,
  1004. MD_BOSS = 0x0020,
  1005. MD_PLANT = 0x0040,
  1006. MD_CANATTACK = 0x0080,
  1007. MD_DETECTOR = 0x0100,
  1008. MD_CASTSENSOR_CHASE = 0x0200,
  1009. MD_CHANGECHASE = 0x0400,
  1010. MD_ANGRY = 0x0800,
  1011. MD_CHANGETARGET_MELEE = 0x1000,
  1012. MD_CHANGETARGET_CHASE = 0x2000,
  1013. MD_TARGETWEAK = 0x4000,
  1014. MD_MASK = 0xFFFF,
  1015. };
  1016. //Status change option definitions (options are what makes status changes visible to chars
  1017. //who were not on your field of sight when it happened)
  1018. //opt1: Non stackable status changes.
  1019. enum {
  1020. OPT1_STONE = 1, //Petrified
  1021. OPT1_FREEZE,
  1022. OPT1_STUN,
  1023. OPT1_SLEEP,
  1024. //Aegis uses OPT1 = 5 to identify undead enemies (which also grants them immunity to the other opt1 changes)
  1025. OPT1_STONEWAIT=6, //Petrifying
  1026. OPT1_BURNING,
  1027. OPT1_IMPRISON,
  1028. };
  1029. //opt2: Stackable status changes.
  1030. enum {
  1031. OPT2_POISON = 0x0001,
  1032. OPT2_CURSE = 0x0002,
  1033. OPT2_SILENCE = 0x0004,
  1034. OPT2_SIGNUMCRUCIS = 0x0008,
  1035. OPT2_BLIND = 0x0010,
  1036. OPT2_ANGELUS = 0x0020,
  1037. OPT2_BLEEDING = 0x0040,
  1038. OPT2_DPOISON = 0x0080,
  1039. OPT2_FEAR = 0x0100,
  1040. };
  1041. //opt3: (SHOW_EFST_*)
  1042. enum {
  1043. OPT3_NORMAL = 0x00000000,
  1044. OPT3_QUICKEN = 0x00000001,
  1045. OPT3_OVERTHRUST = 0x00000002,
  1046. OPT3_ENERGYCOAT = 0x00000004,
  1047. OPT3_EXPLOSIONSPIRITS = 0x00000008,
  1048. OPT3_STEELBODY = 0x00000010,
  1049. OPT3_BLADESTOP = 0x00000020,
  1050. OPT3_AURABLADE = 0x00000040,
  1051. OPT3_BERSERK = 0x00000080,
  1052. OPT3_LIGHTBLADE = 0x00000100,
  1053. OPT3_MOONLIT = 0x00000200,
  1054. OPT3_MARIONETTE = 0x00000400,
  1055. OPT3_ASSUMPTIO = 0x00000800,
  1056. OPT3_WARM = 0x00001000,
  1057. OPT3_KAITE = 0x00002000,
  1058. OPT3_BUNSIN = 0x00004000,
  1059. OPT3_SOULLINK = 0x00008000,
  1060. OPT3_UNDEAD = 0x00010000,
  1061. OPT3_CONTRACT = 0x00020000,
  1062. };
  1063. enum {
  1064. OPTION_NOTHING = 0x00000000,
  1065. OPTION_SIGHT = 0x00000001,
  1066. OPTION_HIDE = 0x00000002,
  1067. OPTION_CLOAK = 0x00000004,
  1068. OPTION_CART1 = 0x00000008,
  1069. OPTION_FALCON = 0x00000010,
  1070. OPTION_RIDING = 0x00000020,
  1071. OPTION_INVISIBLE = 0x00000040,
  1072. OPTION_CART2 = 0x00000080,
  1073. OPTION_CART3 = 0x00000100,
  1074. OPTION_CART4 = 0x00000200,
  1075. OPTION_CART5 = 0x00000400,
  1076. OPTION_ORCISH = 0x00000800,
  1077. OPTION_WEDDING = 0x00001000,
  1078. OPTION_RUWACH = 0x00002000,
  1079. OPTION_CHASEWALK = 0x00004000,
  1080. OPTION_FLYING = 0x00008000, //Note that clientside Flying and Xmas are 0x8000 for clients prior to 2007.
  1081. OPTION_XMAS = 0x00010000,
  1082. OPTION_TRANSFORM = 0x00020000,
  1083. OPTION_SUMMER = 0x00040000,
  1084. OPTION_DRAGON1 = 0x00080000,
  1085. OPTION_WUG = 0x00100000,
  1086. OPTION_WUGRIDER = 0x00200000,
  1087. OPTION_MADOGEAR = 0x00400000,
  1088. OPTION_DRAGON2 = 0x00800000,
  1089. OPTION_DRAGON3 = 0x01000000,
  1090. OPTION_DRAGON4 = 0x02000000,
  1091. OPTION_DRAGON5 = 0x04000000,
  1092. // compound constants
  1093. OPTION_CART = OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5,
  1094. OPTION_DRAGON = OPTION_DRAGON1|OPTION_DRAGON2|OPTION_DRAGON3|OPTION_DRAGON4|OPTION_DRAGON5,
  1095. OPTION_MASK = ~OPTION_INVISIBLE,
  1096. };
  1097. //Defines for the manner system [Skotlex]
  1098. enum manner_flags
  1099. {
  1100. MANNER_NOCHAT = 0x01,
  1101. MANNER_NOSKILL = 0x02,
  1102. MANNER_NOCOMMAND = 0x04,
  1103. MANNER_NOITEM = 0x08,
  1104. MANNER_NOROOM = 0x10,
  1105. };
  1106. //Define flags for the status_calc_bl function. [Skotlex]
  1107. enum scb_flag
  1108. {
  1109. SCB_NONE = 0x00000000,
  1110. SCB_BASE = 0x00000001,
  1111. SCB_MAXHP = 0x00000002,
  1112. SCB_MAXSP = 0x00000004,
  1113. SCB_STR = 0x00000008,
  1114. SCB_AGI = 0x00000010,
  1115. SCB_VIT = 0x00000020,
  1116. SCB_INT = 0x00000040,
  1117. SCB_DEX = 0x00000080,
  1118. SCB_LUK = 0x00000100,
  1119. SCB_BATK = 0x00000200,
  1120. SCB_WATK = 0x00000400,
  1121. SCB_MATK = 0x00000800,
  1122. SCB_HIT = 0x00001000,
  1123. SCB_FLEE = 0x00002000,
  1124. SCB_DEF = 0x00004000,
  1125. SCB_DEF2 = 0x00008000,
  1126. SCB_MDEF = 0x00010000,
  1127. SCB_MDEF2 = 0x00020000,
  1128. SCB_SPEED = 0x00040000,
  1129. SCB_ASPD = 0x00080000,
  1130. SCB_DSPD = 0x00100000,
  1131. SCB_CRI = 0x00200000,
  1132. SCB_FLEE2 = 0x00400000,
  1133. SCB_ATK_ELE = 0x00800000,
  1134. SCB_DEF_ELE = 0x01000000,
  1135. SCB_MODE = 0x02000000,
  1136. SCB_SIZE = 0x04000000,
  1137. SCB_RACE = 0x08000000,
  1138. SCB_RANGE = 0x10000000,
  1139. SCB_REGEN = 0x20000000,
  1140. SCB_DYE = 0x40000000, // force cloth-dye change to 0 to avoid client crashes.
  1141. SCB_BATTLE = 0x3FFFFFFE,
  1142. SCB_ALL = 0x3FFFFFFF
  1143. };
  1144. //Define to determine who gets HP/SP consumed on doing skills/etc. [Skotlex]
  1145. #define BL_CONSUME (BL_PC|BL_HOM|BL_MER)
  1146. //Define to determine who has regen
  1147. #define BL_REGEN (BL_PC|BL_HOM|BL_MER)
  1148. //Basic damage info of a weapon
  1149. //Required because players have two of these, one in status_data
  1150. //and another for their left hand weapon.
  1151. struct weapon_atk {
  1152. unsigned short atk, atk2;
  1153. unsigned short range;
  1154. unsigned char ele;
  1155. };
  1156. //For holding basic status (which can be modified by status changes)
  1157. struct status_data {
  1158. unsigned int
  1159. hp, sp,
  1160. max_hp, max_sp;
  1161. unsigned short
  1162. str, agi, vit, int_, dex, luk,
  1163. batk, equipment_atk,
  1164. matk_min, matk_max, status_matk,
  1165. speed,
  1166. amotion, adelay, dmotion,
  1167. mode;
  1168. short
  1169. hit, flee, cri, flee2,
  1170. def, mdef, def2, mdef2,
  1171. aspd_rate;
  1172. unsigned char
  1173. def_ele, ele_lv,
  1174. size, race;
  1175. struct weapon_atk rhw, lhw; //Right Hand/Left Hand Weapon.
  1176. };
  1177. //Additional regen data that only players have.
  1178. struct regen_data_sub {
  1179. unsigned short
  1180. hp,sp;
  1181. //tick accumulation before healing.
  1182. struct {
  1183. unsigned int hp,sp;
  1184. } tick;
  1185. //Regen rates (where every 1 means +100% regen)
  1186. struct {
  1187. unsigned char hp,sp;
  1188. } rate;
  1189. };
  1190. struct regen_data {
  1191. unsigned short flag; //Marks what stuff you may heal or not.
  1192. unsigned short
  1193. hp,sp,shp,ssp;
  1194. //tick accumulation before healing.
  1195. struct {
  1196. unsigned int hp,sp,shp,ssp;
  1197. } tick;
  1198. //Regen rates (where every 1 means +100% regen)
  1199. struct {
  1200. unsigned char
  1201. hp,sp,shp,ssp;
  1202. } rate;
  1203. struct {
  1204. unsigned walk:1; //Can you regen even when walking?
  1205. unsigned gc:1; //Tags when you should have double regen due to GVG castle
  1206. unsigned overweight :2; //overweight state (1: 50%, 2: 90%)
  1207. unsigned block :2; //Block regen flag (1: Hp, 2: Sp)
  1208. } state;
  1209. //skill-regen, sitting-skill-regen (since not all chars with regen need it)
  1210. struct regen_data_sub *sregen, *ssregen;
  1211. };
  1212. struct status_change_entry {
  1213. int timer;
  1214. int val1,val2,val3,val4;
  1215. };
  1216. struct status_change {
  1217. unsigned int option;// effect state (bitfield)
  1218. unsigned int opt3;// skill state (bitfield)
  1219. unsigned short opt1;// body state
  1220. unsigned short opt2;// health state (bitfield)
  1221. unsigned char count;
  1222. //TODO: See if it is possible to implement the following SC's without requiring extra parameters while the SC is inactive.
  1223. unsigned char jb_flag; //Joint Beat type flag
  1224. unsigned short mp_matk_min, mp_matk_max; //Previous matk min/max for ground spells (Amplify magic power)
  1225. int sg_id; //ID of the previous Storm gust that hit you
  1226. unsigned char sg_counter; //Storm gust counter (previous hits from storm gust)
  1227. struct status_change_entry *data[SC_MAX];
  1228. };
  1229. // for looking up associated data
  1230. sc_type status_skill2sc(int skill);
  1231. int status_sc2skill(sc_type sc);
  1232. int status_damage(struct block_list *src,struct block_list *target,int hp,int sp, int walkdelay, int flag);
  1233. //Define for standard HP damage attacks.
  1234. #define status_fix_damage(src, target, hp, walkdelay) status_damage(src, target, hp, 0, walkdelay, 0)
  1235. //Define for standard HP/SP damage triggers.
  1236. #define status_zap(bl, hp, sp) status_damage(NULL, bl, hp, sp, 0, 1)
  1237. //Define for standard HP/SP skill-related cost triggers (mobs require no HP/SP to use skills)
  1238. int status_charge(struct block_list* bl, int hp, int sp);
  1239. int status_percent_change(struct block_list *src,struct block_list *target,signed char hp_rate, signed char sp_rate, int flag);
  1240. //Easier handling of status_percent_change
  1241. #define status_percent_heal(bl, hp_rate, sp_rate) status_percent_change(NULL, bl, -(hp_rate), -(sp_rate), 0)
  1242. #define status_percent_damage(src, target, hp_rate, sp_rate, kill) status_percent_change(src, target, hp_rate, sp_rate, (kill)?1:2)
  1243. //Instant kill with no drops/exp/etc
  1244. #define status_kill(bl) status_percent_damage(NULL, bl, 100, 0, true)
  1245. //Used to set the hp/sp of an object to an absolute value (can't kill)
  1246. int status_set_hp(struct block_list *bl, unsigned int hp, int flag);
  1247. int status_set_sp(struct block_list *bl, unsigned int sp, int flag);
  1248. int status_heal(struct block_list *bl,int hp,int sp, int flag);
  1249. int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per_sp);
  1250. //Define for copying a status_data structure from b to a, without overwriting current Hp and Sp
  1251. #define status_cpy(a, b) \
  1252. memcpy(&((a)->max_hp), &((b)->max_hp), sizeof(struct status_data)-(sizeof((a)->hp)+sizeof((a)->sp)))
  1253. struct regen_data *status_get_regen_data(struct block_list *bl);
  1254. struct status_data *status_get_status_data(struct block_list *bl);
  1255. struct status_data *status_get_base_status(struct block_list *bl);
  1256. const char * status_get_name(struct block_list *bl);
  1257. int status_get_class(struct block_list *bl);
  1258. int status_get_lv(struct block_list *bl);
  1259. #define status_get_range(bl) status_get_status_data(bl)->rhw.range
  1260. #define status_get_hp(bl) status_get_status_data(bl)->hp
  1261. #define status_get_max_hp(bl) status_get_status_data(bl)->max_hp
  1262. #define status_get_sp(bl) status_get_status_data(bl)->sp
  1263. #define status_get_max_sp(bl) status_get_status_data(bl)->max_sp
  1264. #define status_get_str(bl) status_get_status_data(bl)->str
  1265. #define status_get_agi(bl) status_get_status_data(bl)->agi
  1266. #define status_get_vit(bl) status_get_status_data(bl)->vit
  1267. #define status_get_int(bl) status_get_status_data(bl)->int_
  1268. #define status_get_dex(bl) status_get_status_data(bl)->dex
  1269. #define status_get_luk(bl) status_get_status_data(bl)->luk
  1270. #define status_get_hit(bl) status_get_status_data(bl)->hit
  1271. #define status_get_flee(bl) status_get_status_data(bl)->flee
  1272. signed short status_get_def(struct block_list *bl);
  1273. #define status_get_mdef(bl) status_get_status_data(bl)->mdef
  1274. #define status_get_flee2(bl) status_get_status_data(bl)->flee2
  1275. #define status_get_def2(bl) status_get_status_data(bl)->def2
  1276. #define status_get_mdef2(bl) status_get_status_data(bl)->mdef2
  1277. #define status_get_critical(bl) status_get_status_data(bl)->cri
  1278. #define status_get_batk(bl) status_get_status_data(bl)->batk
  1279. #define status_get_watk(bl) status_get_status_data(bl)->rhw.atk
  1280. #define status_get_watk2(bl) status_get_status_data(bl)->rhw.atk2
  1281. #define status_get_matk_max(bl) status_get_status_data(bl)->matk_max
  1282. #define status_get_matk_min(bl) status_get_status_data(bl)->matk_min
  1283. #define status_get_lwatk(bl) status_get_status_data(bl)->lhw.atk
  1284. #define status_get_lwatk2(bl) status_get_status_data(bl)->lhw.atk2
  1285. unsigned short status_get_speed(struct block_list *bl);
  1286. #define status_get_adelay(bl) status_get_status_data(bl)->adelay
  1287. #define status_get_amotion(bl) status_get_status_data(bl)->amotion
  1288. #define status_get_dmotion(bl) status_get_status_data(bl)->dmotion
  1289. #define status_get_element(bl) status_get_status_data(bl)->def_ele
  1290. #define status_get_element_level(bl) status_get_status_data(bl)->ele_lv
  1291. unsigned char status_calc_attack_element(struct block_list *bl, struct status_change *sc, int element);
  1292. #define status_get_attack_sc_element(bl, sc) status_calc_attack_element(bl, sc, 0)
  1293. #define status_get_attack_element(bl) status_get_status_data(bl)->rhw.ele
  1294. #define status_get_attack_lelement(bl) status_get_status_data(bl)->lhw.ele
  1295. #define status_get_race(bl) status_get_status_data(bl)->race
  1296. #define status_get_size(bl) status_get_status_data(bl)->size
  1297. #define status_get_mode(bl) status_get_status_data(bl)->mode
  1298. int status_get_party_id(struct block_list *bl);
  1299. int status_get_guild_id(struct block_list *bl);
  1300. int status_get_emblem_id(struct block_list *bl);
  1301. int status_get_mexp(struct block_list *bl);
  1302. int status_get_race2(struct block_list *bl);
  1303. struct view_data *status_get_viewdata(struct block_list *bl);
  1304. void status_set_viewdata(struct block_list *bl, int class_);
  1305. void status_change_init(struct block_list *bl);
  1306. struct status_change *status_get_sc(struct block_list *bl);
  1307. int status_isdead(struct block_list *bl);
  1308. int status_isimmune(struct block_list *bl);
  1309. int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int tick, int flag);
  1310. //Short version, receives rate in 1->100 range, and does not uses a flag setting.
  1311. #define sc_start(bl, type, rate, val1, tick) status_change_start(bl,type,100*(rate),val1,0,0,0,tick,0)
  1312. #define sc_start2(bl, type, rate, val1, val2, tick) status_change_start(bl,type,100*(rate),val1,val2,0,0,tick,0)
  1313. #define sc_start4(bl, type, rate, val1, val2, val3, val4, tick) status_change_start(bl,type,100*(rate),val1,val2,val3,val4,tick,0)
  1314. int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val1,int val2,int val3,int val4,int tick,int flag);
  1315. int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const char* file, int line);
  1316. #define status_change_end(bl,type,tid) status_change_end_(bl,type,tid,__FILE__,__LINE__)
  1317. int kaahi_heal_timer(int tid, unsigned int tick, int id, intptr_t data);
  1318. int status_change_timer(int tid, unsigned int tick, int id, intptr_t data);
  1319. int status_change_timer_sub(struct block_list* bl, va_list ap);
  1320. int status_change_clear(struct block_list* bl, int type);
  1321. int status_change_clear_buffs(struct block_list* bl, int type);
  1322. #define status_calc_bl(bl, flag) status_calc_bl_(bl, (enum scb_flag)(flag), false)
  1323. #define status_calc_mob(md, first) status_calc_bl_(&(md)->bl, SCB_ALL, first)
  1324. #define status_calc_pet(pd, first) status_calc_bl_(&(pd)->bl, SCB_ALL, first)
  1325. #define status_calc_pc(sd, first) status_calc_bl_(&(sd)->bl, SCB_ALL, first)
  1326. #define status_calc_homunculus(hd, first) status_calc_bl_(&(hd)->bl, SCB_ALL, first)
  1327. #define status_calc_mercenary(md, first) status_calc_bl_(&(md)->bl, SCB_ALL, first)
  1328. void status_calc_bl_(struct block_list *bl, enum scb_flag flag, bool first);
  1329. int status_calc_mob_(struct mob_data* md, bool first);
  1330. int status_calc_pet_(struct pet_data* pd, bool first);
  1331. int status_calc_pc_(struct map_session_data* sd, bool first);
  1332. int status_calc_homunculus_(struct homun_data *hd, bool first);
  1333. int status_calc_mercenary_(struct mercenary_data *md, bool first);
  1334. void status_calc_misc(struct block_list *bl, struct status_data *status, int level);
  1335. void status_calc_regen(struct block_list *bl, struct status_data *status, struct regen_data *regen);
  1336. void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, struct status_change *sc);
  1337. int status_getrefinebonus(int lv,int type);
  1338. int status_check_skilluse(struct block_list *src, struct block_list *target, int skill_num, int flag); // [Skotlex]
  1339. int status_check_visibility(struct block_list *src, struct block_list *target); //[Skotlex]
  1340. int status_readdb(void);
  1341. int do_init_status(void);
  1342. void do_final_status(void);
  1343. #endif /* _STATUS_H_ */