status.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  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. #include "map.h"
  6. // Status changes listing. These code are for use by the server.
  7. enum {
  8. //First we enumerate common status ailments which are often used around.
  9. SC_STONE = 0,
  10. SC_FREEZE,
  11. SC_STUN,
  12. SC_SLEEP,
  13. SC_POISON,
  14. SC_CURSE,
  15. SC_SILENCE,
  16. SC_CONFUSION,
  17. SC_BLIND,
  18. SC_BLEEDING,
  19. SC_DPOISON, //10
  20. //Next up, we continue on 20, to leave enough room for additional "common" ailments in the future.
  21. SC_PROVOKE = 20,
  22. SC_ENDURE,
  23. SC_TWOHANDQUICKEN,
  24. SC_CONCENTRATE,
  25. SC_HIDING,
  26. SC_CLOAKING,
  27. SC_ENCPOISON,
  28. SC_POISONREACT,
  29. SC_QUAGMIRE,
  30. SC_ANGELUS,
  31. SC_BLESSING, //30
  32. SC_SIGNUMCRUCIS,
  33. SC_INCREASEAGI,
  34. SC_DECREASEAGI,
  35. SC_SLOWPOISON,
  36. SC_IMPOSITIO ,
  37. SC_SUFFRAGIUM,
  38. SC_ASPERSIO,
  39. SC_BENEDICTIO,
  40. SC_KYRIE,
  41. SC_MAGNIFICAT, //40
  42. SC_GLORIA,
  43. SC_AETERNA,
  44. SC_ADRENALINE,
  45. SC_WEAPONPERFECTION,
  46. SC_OVERTHRUST,
  47. SC_MAXIMIZEPOWER,
  48. SC_TRICKDEAD,
  49. SC_LOUD,
  50. SC_ENERGYCOAT,
  51. SC_BROKENARMOR, //50 - NOTE: These two aren't used anywhere, and they have an icon...
  52. SC_BROKENWEAPON,
  53. SC_HALLUCINATION,
  54. SC_WEIGHT50,
  55. SC_WEIGHT90,
  56. SC_ASPDPOTION0,
  57. SC_ASPDPOTION1,
  58. SC_ASPDPOTION2,
  59. SC_ASPDPOTION3,
  60. SC_SPEEDUP0,
  61. SC_SPEEDUP1, //60
  62. SC_ATKPOTION,
  63. SC_MATKPOTION,
  64. SC_WEDDING,
  65. SC_SLOWDOWN,
  66. SC_ANKLE,
  67. SC_KEEPING,
  68. SC_BARRIER,
  69. SC_STRIPWEAPON,
  70. SC_STRIPSHIELD,
  71. SC_STRIPARMOR, //70
  72. SC_STRIPHELM,
  73. SC_CP_WEAPON,
  74. SC_CP_SHIELD,
  75. SC_CP_ARMOR,
  76. SC_CP_HELM,
  77. SC_AUTOGUARD,
  78. SC_REFLECTSHIELD,
  79. SC_SPLASHER,
  80. SC_PROVIDENCE,
  81. SC_DEFENDER, //80
  82. SC_MAGICROD,
  83. SC_SPELLBREAKER,
  84. SC_AUTOSPELL,
  85. SC_SIGHTTRASHER,
  86. SC_AUTOBERSERK,
  87. SC_SPEARSQUICKEN,
  88. SC_AUTOCOUNTER,
  89. SC_SIGHT,
  90. SC_SAFETYWALL,
  91. SC_RUWACH, //90
  92. SC_EXTREMITYFIST,
  93. SC_EXPLOSIONSPIRITS,
  94. SC_COMBO,
  95. SC_BLADESTOP_WAIT,
  96. SC_BLADESTOP,
  97. SC_FIREWEAPON,
  98. SC_WATERWEAPON,
  99. SC_WINDWEAPON,
  100. SC_EARTHWEAPON,
  101. SC_VOLCANO, //100,
  102. SC_DELUGE,
  103. SC_VIOLENTGALE,
  104. SC_WATK_ELEMENT,
  105. SC_LANDPROTECTOR,
  106. SC_ARMOR_ELEMENT,
  107. SC_NOCHAT,
  108. SC_BABY,
  109. SC_AURABLADE,
  110. SC_PARRYING,
  111. SC_CONCENTRATION, //110
  112. SC_TENSIONRELAX,
  113. SC_BERSERK,
  114. SC_FURY,
  115. SC_GOSPEL,
  116. SC_ASSUMPTIO,
  117. SC_BASILICA,
  118. SC_GUILDAURA,
  119. SC_MAGICPOWER,
  120. SC_EDP,
  121. SC_TRUESIGHT, //120
  122. SC_WINDWALK,
  123. SC_MELTDOWN,
  124. SC_CARTBOOST,
  125. SC_CHASEWALK,
  126. SC_REJECTSWORD,
  127. SC_MARIONETTE,
  128. SC_MARIONETTE2,
  129. SC_MOONLIT,
  130. SC_JOINTBEAT,
  131. SC_MINDBREAKER, //130
  132. SC_MEMORIZE,
  133. SC_FOGWALL,
  134. SC_SPIDERWEB,
  135. SC_DEVOTION,
  136. SC_SACRIFICE,
  137. SC_STEELBODY,
  138. SC_ORCISH,
  139. SC_READYSTORM,
  140. SC_READYDOWN,
  141. SC_READYTURN, //140
  142. SC_READYCOUNTER,
  143. SC_DODGE,
  144. SC_RUN,
  145. SC_SHADOWWEAPON,
  146. SC_ADRENALINE2,
  147. SC_GHOSTWEAPON,
  148. SC_KAIZEL,
  149. SC_KAAHI,
  150. SC_KAUPE,
  151. SC_ONEHAND, //150
  152. SC_PRESERVE,
  153. SC_BATTLEORDERS,
  154. SC_REGENERATION,
  155. SC_DOUBLECAST,
  156. SC_GRAVITATION,
  157. SC_MAXOVERTHRUST,
  158. SC_LONGING,
  159. SC_HERMODE,
  160. SC_SHRINK,
  161. SC_SIGHTBLASTER, //160
  162. SC_WINKCHARM,
  163. SC_CLOSECONFINE,
  164. SC_CLOSECONFINE2,
  165. SC_DANCING,
  166. SC_LULLABY,
  167. SC_RICHMANKIM,
  168. SC_ETERNALCHAOS,
  169. SC_DRUMBATTLE,
  170. SC_NIBELUNGEN,
  171. SC_ROKISWEIL, //170
  172. SC_INTOABYSS,
  173. SC_SIEGFRIED,
  174. SC_WHISTLE,
  175. SC_ASSNCROS,
  176. SC_POEMBRAGI,
  177. SC_APPLEIDUN,
  178. SC_UGLYDANCE,
  179. SC_HUMMING,
  180. SC_DONTFORGETME,
  181. SC_FORTUNE, //180
  182. SC_SERVICE4U,
  183. SC_STOP, //Prevents inflicted chars from walking. [Skotlex]
  184. SC_SPURT,
  185. SC_SPIRIT,
  186. SC_COMA, //Not a real SC_, it makes a char's HP/SP hit 1.
  187. SC_INTRAVISION,
  188. SC_INCALLSTATUS,
  189. SC_INCSTR,
  190. SC_INCAGI,
  191. SC_INCVIT, //190
  192. SC_INCINT,
  193. SC_INCDEX,
  194. SC_INCLUK,
  195. SC_INCHIT,
  196. SC_INCHITRATE,
  197. SC_INCFLEE,
  198. SC_INCFLEERATE,
  199. SC_INCMHPRATE,
  200. SC_INCMSPRATE,
  201. SC_INCATKRATE, //200
  202. SC_INCMATKRATE,
  203. SC_INCDEFRATE,
  204. SC_STRFOOD,
  205. SC_AGIFOOD,
  206. SC_VITFOOD,
  207. SC_INTFOOD,
  208. SC_DEXFOOD,
  209. SC_LUKFOOD,
  210. SC_HITFOOD,
  211. SC_FLEEFOOD, //210
  212. SC_BATKFOOD,
  213. SC_WATKFOOD,
  214. SC_MATKFOOD,
  215. SC_SCRESIST, //Increases resistance to status changes.
  216. SC_XMAS, // Xmas Suit [Valaris]
  217. SC_WARM, //SG skills [Komurka]
  218. SC_SUN_COMFORT,
  219. SC_MOON_COMFORT,
  220. SC_STAR_COMFORT,
  221. SC_FUSION, //220
  222. SC_SKILLRATE_UP,
  223. SC_SKE,
  224. SC_KAITE,
  225. SC_SWOO, // [marquis007]
  226. SC_SKA, // [marquis007]
  227. SC_TKDORI, // [marquis007]
  228. SC_MIRACLE, //SG 'hidden' skill [Komurka]
  229. //Ninja/GS states
  230. SC_MADNESSCANCEL,
  231. SC_ADJUSTMENT,
  232. SC_INCREASING, //230
  233. SC_GATLINGFEVER,
  234. SC_TATAMIGAESHI,
  235. SC_UTSUSEMI,
  236. SC_KAENSIN,
  237. SC_SUITON,
  238. SC_NEN,
  239. SC_KNOWLEDGE,
  240. SC_MAX, //Automatically updated max, used in for's and at startup to check we are within bounds. [Skotlex]
  241. };
  242. extern int SkillStatusChangeTable[MAX_SKILL];
  243. extern int StatusSkillChangeTable[SC_MAX];
  244. //Numerates the Number for the status changes (client-dependent), imported from jA
  245. enum {
  246. SI_BLANK = -1,
  247. SI_PROVOKE = 0,
  248. SI_ENDURE = 1,
  249. SI_TWOHANDQUICKEN = 2,
  250. SI_CONCENTRATE = 3,
  251. SI_HIDING = 4,
  252. SI_CLOAKING = 5,
  253. SI_ENCPOISON = 6,
  254. SI_POISONREACT = 7,
  255. SI_QUAGMIRE = 8,
  256. SI_ANGELUS = 9,
  257. SI_BLESSING = 10,
  258. SI_SIGNUMCRUCIS = 11,
  259. SI_INCREASEAGI = 12,
  260. SI_DECREASEAGI = 13,
  261. SI_SLOWPOISON = 14,
  262. SI_IMPOSITIO = 15,
  263. SI_SUFFRAGIUM = 16,
  264. SI_ASPERSIO = 17,
  265. SI_BENEDICTIO = 18,
  266. SI_KYRIE = 19,
  267. SI_MAGNIFICAT = 20,
  268. SI_GLORIA = 21,
  269. SI_AETERNA = 22,
  270. SI_ADRENALINE = 23,
  271. SI_WEAPONPERFECTION = 24,
  272. SI_OVERTHRUST = 25,
  273. SI_MAXIMIZEPOWER = 26,
  274. SI_RIDING = 27,
  275. SI_FALCON = 28,
  276. SI_TRICKDEAD = 29,
  277. SI_LOUD = 30,
  278. SI_ENERGYCOAT = 31,
  279. SI_BROKENARMOR = 32,
  280. SI_BROKENWEAPON = 33,
  281. SI_HALLUCINATION = 34,
  282. SI_WEIGHT50 = 35,
  283. SI_WEIGHT90 = 36,
  284. SI_ASPDPOTION = 37,
  285. //38: Again Aspd Potion
  286. //39: Again Aspd Potion
  287. //40: Again Aspd Potion
  288. SI_SPEEDPOTION = 41,
  289. //42: Again Speed Up
  290. SI_STRIPWEAPON = 50,
  291. SI_STRIPSHIELD = 51,
  292. SI_STRIPARMOR = 52,
  293. SI_STRIPHELM = 53,
  294. SI_CP_WEAPON = 54,
  295. SI_CP_SHIELD = 55,
  296. SI_CP_ARMOR = 56,
  297. SI_CP_HELM = 57,
  298. SI_AUTOGUARD = 58,
  299. SI_REFLECTSHIELD = 59,
  300. SI_PROVIDENCE = 61,
  301. SI_DEFENDER = 62,
  302. SI_AUTOSPELL = 65,
  303. SI_SPEARQUICKEN = 68,
  304. SI_EXPLOSIONSPIRITS = 86,
  305. SI_FURY = 87,
  306. SI_FIREWEAPON = 90,
  307. SI_WATERWEAPON = 91,
  308. SI_WINDWEAPON = 92,
  309. SI_EARTHWEAPON = 93,
  310. // 102 = again gloria - from what I saw on screenshots, I wonder if it isn't gospel... [DracoRPG]
  311. SI_AURABLADE = 103,
  312. SI_PARRYING = 104,
  313. SI_CONCENTRATION = 105,
  314. SI_TENSIONRELAX = 106,
  315. SI_BERSERK = 107,
  316. SI_ASSUMPTIO = 110,
  317. SI_GUILDAURA = 112,
  318. SI_MAGICPOWER = 113,
  319. SI_EDP = 114,
  320. SI_TRUESIGHT = 115,
  321. SI_WINDWALK = 116,
  322. SI_MELTDOWN = 117,
  323. SI_CARTBOOST = 118,
  324. SI_REJECTSWORD = 120,
  325. SI_MARIONETTE = 121,
  326. SI_MARIONETTE2 = 122,
  327. SI_MOONLIT = 123,
  328. SI_BLEEDING = 124,
  329. SI_JOINTBEAT = 125,
  330. SI_DEVOTION = 130,
  331. SI_STEELBODY = 132,
  332. SI_CHASEWALK = 134,
  333. SI_READYSTORM = 135,
  334. SI_READYDOWN = 137,
  335. SI_READYTURN = 139,
  336. SI_READYCOUNTER = 141,
  337. SI_DODGE = 143,
  338. SI_SPURT = 145,
  339. SI_SHADOWWEAPON = 146,
  340. SI_ADRENALINE2 = 147,
  341. SI_GHOSTWEAPON = 148,
  342. SI_NIGHT = 149,
  343. SI_SPIRIT = 149,
  344. SI_DEVIL = 152,
  345. SI_KAITE = 153,
  346. SI_KAIZEL = 156,
  347. SI_KAAHI = 157,
  348. SI_KAUPE = 158,
  349. // 159 = blue sparks and item-heal sound effect. Looks like item-use effect.
  350. // 160
  351. SI_ONEHAND = 161,
  352. SI_WARM = 165,
  353. // 166 | The three show the exact same display: ultra red character (165, 166, 167)
  354. // 167 |
  355. SI_SUN_COMFORT = 169,
  356. SI_MOON_COMFORT = 170,
  357. SI_STAR_COMFORT = 171,
  358. SI_PRESERVE = 181,
  359. SI_BATTLEORDERS = 182,
  360. SI_INTRAVISION = 184, //WTF?? creates the black shape of 4_m_02 NPC, with NPC talk cursor. Supposedly intravision shows this.
  361. SI_DOUBLECAST = 186,
  362. SI_MAXOVERTHRUST = 188,
  363. SI_TAROT = 191, // the icon allows no doubt... but what is it really used for ?? [DracoRPG]
  364. SI_SHRINK = 197,
  365. SI_SIGHTBLASTER = 198,
  366. SI_WINKCHARM = 199,
  367. SI_CLOSECONFINE = 200,
  368. SI_CLOSECONFINE2 = 201,
  369. SI_MADNESSCANCEL = 203, //[blackhole89]
  370. SI_GATLINGFEVER = 204,
  371. // 205 = Gloria again
  372. SI_MAEMI = 206,
  373. // 207 = crash
  374. SI_NEN = 208,
  375. SI_ADJUSTMENT = 209,
  376. SI_ACCURACY = 210
  377. };
  378. extern int StatusIconChangeTable[];
  379. extern int current_equip_item_index;
  380. extern int current_equip_card_id;
  381. //Mode definitions to clear up code reading. [Skotlex]
  382. #define MD_CANMOVE 0x001
  383. #define MD_LOOTER 0x002
  384. //MD_ANGRY mobs are also aggressive.
  385. #define MD_AGGRESSIVE 0x804
  386. #define MD_ASSIST 0x008
  387. #define MD_CASTSENSOR 0x010
  388. #define MD_BOSS 0x020
  389. #define MD_PLANT 0x040
  390. #define MD_CANATTACK 0x080
  391. #define MD_DETECTOR 0x100
  392. //#define MD_CHANGETARGET 0x200 //Mode deprecated, figured out through mob_can_changetarget()
  393. #define MD_CHANGECHASE 0x400
  394. #define MD_ANGRY 0x800
  395. #define MD_MASK 0xFFF
  396. //Status change option definitions (options are what makes status changes visible to chars
  397. //who were not on your field of sight when it happened)
  398. //opt1: Non stackable status changes.
  399. enum {
  400. OPT1_STONE = 1, //Petrified
  401. OPT1_FREEZE,
  402. OPT1_STUN,
  403. OPT1_SLEEP,
  404. //What is 5?
  405. OPT1_STONEWAIT=6 //Petrifying
  406. };
  407. //opt2: Stackable status changes.
  408. #define OPT2_POISON 0x001
  409. #define OPT2_CURSE 0x002
  410. #define OPT2_SILENCE 0x004
  411. //0x008 Odd howl sound, Signum crucis?
  412. #define OPT2_SIGNUMCRUCIS 0x008
  413. #define OPT2_BLIND 0x010
  414. //0x020 - nothing
  415. //0x040 - nothing
  416. #define OPT2_DPOISON 0x080
  417. //0x100
  418. //Opt3: Skill state changes, stackable.
  419. #define OPT3_SPEEDUP 0x001 //Quicken skills
  420. #define OPT3_POWERUP 0x002 //Power Thrust
  421. #define OPT3_SHIELD 0x004 //Energy Coat
  422. #define OPT3_FURY 0x008 //Explosion spirits
  423. #define OPT3_ELECTRIC 0x010 //Steel Body
  424. #define OPT3_STOP 0x020 //Blade Stop
  425. //64 Unknown
  426. #define OPT3_BERSERK 0x080 //Berserk
  427. //256 Unknown
  428. //512 Unknown
  429. #define OPT3_PINKAURA 0x400 //Marionette
  430. #define OPT3_AURASHIELD 0x800 //Assumptio
  431. #define OPT3_HEAT 0x1000 //Warmth Skills
  432. // パラメータ所得系 battle.c より移動
  433. int status_get_class(struct block_list *bl);
  434. int status_get_lv(struct block_list *bl);
  435. int status_get_range(struct block_list *bl);
  436. int status_get_hp(struct block_list *bl);
  437. int status_get_max_hp(struct block_list *bl);
  438. int status_get_str(struct block_list *bl);
  439. int status_get_agi(struct block_list *bl);
  440. int status_get_vit(struct block_list *bl);
  441. int status_get_int(struct block_list *bl);
  442. int status_get_dex(struct block_list *bl);
  443. int status_get_luk(struct block_list *bl);
  444. int status_get_hit(struct block_list *bl);
  445. int status_get_flee(struct block_list *bl);
  446. int status_get_def(struct block_list *bl);
  447. int status_get_mdef(struct block_list *bl);
  448. int status_get_flee2(struct block_list *bl);
  449. int status_get_def2(struct block_list *bl);
  450. int status_get_mdef2(struct block_list *bl);
  451. int status_get_batk(struct block_list *bl);
  452. int status_get_atk(struct block_list *bl);
  453. int status_get_atk2(struct block_list *bl);
  454. int status_get_speed(struct block_list *bl);
  455. int status_get_adelay(struct block_list *bl);
  456. int status_get_amotion(struct block_list *bl);
  457. int status_get_dmotion(struct block_list *bl);
  458. int status_get_element(struct block_list *bl);
  459. int status_get_attack_sc_element(struct block_list *bl);
  460. int status_get_attack_element(struct block_list *bl);
  461. int status_get_attack_element2(struct block_list *bl); //左手武器属性取得
  462. #define status_get_elem_type(bl) (status_get_element(bl)%10)
  463. #define status_get_elem_level(bl) (status_get_element(bl)/10/2)
  464. int status_get_party_id(struct block_list *bl);
  465. int status_get_guild_id(struct block_list *bl);
  466. int status_get_race(struct block_list *bl);
  467. int status_get_size(struct block_list *bl);
  468. int status_get_mode(struct block_list *bl);
  469. int status_get_mexp(struct block_list *bl);
  470. int status_get_race2(struct block_list *bl);
  471. struct view_data *status_get_viewdata(struct block_list *bl);
  472. void status_set_viewdata(struct block_list *bl, int class_);
  473. void status_change_init(struct block_list *bl);
  474. struct status_change *status_get_sc(struct block_list *bl);
  475. int status_get_matk1(struct block_list *bl);
  476. int status_get_matk2(struct block_list *bl);
  477. int status_get_critical(struct block_list *bl);
  478. int status_get_atk_(struct block_list *bl);
  479. int status_get_atk_2(struct block_list *bl);
  480. int status_get_atk2(struct block_list *bl);
  481. int status_isdead(struct block_list *bl);
  482. int status_isimmune(struct block_list *bl);
  483. int status_get_sc_def(struct block_list *bl, int type);
  484. #define status_get_sc_def_mdef(bl) (status_get_sc_def(bl, SP_MDEF1))
  485. #define status_get_sc_def_vit(bl) (status_get_sc_def(bl, SP_DEF2))
  486. #define status_get_sc_def_int(bl) (status_get_sc_def(bl, SP_MDEF2))
  487. #define status_get_sc_def_luk(bl) (status_get_sc_def(bl, SP_LUK))
  488. //Short version, receives rate in 1->100 range, and does not uses a flag setting.
  489. #define sc_start(bl, type, rate, val1, tick) status_change_start(bl,type,100*(rate),val1,0,0,0,tick,0)
  490. #define sc_start4(bl, type, rate, val1, val2, val3, val4, tick) status_change_start(bl,type,100*(rate),val1,val2,val3,val4,tick,0)
  491. int status_change_start(struct block_list *bl,int type,int rate,int val1,int val2,int val3,int val4,int tick,int flag);
  492. int status_change_end( struct block_list* bl , int type,int tid );
  493. int status_change_timer(int tid, unsigned int tick, int id, int data);
  494. int status_change_timer_sub(struct block_list *bl, va_list ap );
  495. int status_change_clear(struct block_list *bl,int type);
  496. int status_change_clear_buffs(struct block_list *bl, int type);
  497. int status_calc_pet(struct map_session_data* sd, int first); // [Skotlex]
  498. int status_calc_pc(struct map_session_data* sd,int first);
  499. int status_calc_str(struct block_list *,int);
  500. int status_calc_agi(struct block_list *,int);
  501. int status_calc_vit(struct block_list *,int);
  502. int status_calc_int(struct block_list *,int);
  503. int status_calc_dex(struct block_list *,int);
  504. int status_calc_luk(struct block_list *,int);
  505. int status_calc_batk(struct block_list *,int);
  506. int status_calc_watk(struct block_list *,int);
  507. int status_calc_matk(struct block_list *,int);
  508. int status_calc_hit(struct block_list *,int);
  509. int status_calc_critical(struct block_list *,int);
  510. int status_calc_flee(struct block_list *,int);
  511. int status_calc_flee2(struct block_list *,int);
  512. int status_calc_def(struct block_list *,int);
  513. int status_calc_def2(struct block_list *,int);
  514. int status_calc_mdef(struct block_list *,int);
  515. int status_calc_mdef2(struct block_list *,int);
  516. int status_calc_speed(struct block_list *,int);
  517. int status_calc_aspd_rate(struct block_list *,int);
  518. int status_calc_maxhp(struct block_list *,int);
  519. int status_calc_maxsp(struct block_list *,int);
  520. int status_quick_recalc_speed(struct map_session_data*, int, int, char); // [Celest] - modified by [Skotlex]
  521. int status_getrefinebonus(int lv,int type);
  522. int status_check_skilluse(struct block_list *src, struct block_list *target, int skill_num, int flag); // [Skotlex]
  523. //Use this to refer the max refinery level [Skotlex]
  524. #define MAX_REFINE 10
  525. extern int percentrefinery[5][MAX_REFINE+1]; //The last slot always has a 0% success chance [Skotlex]
  526. int status_readdb(void);
  527. int do_init_status(void);
  528. #endif