status.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. #ifndef _STATUS_H_
  2. #define _STATUS_H_
  3. enum { // struct map_session_data の status_changeの番?テ?ブル
  4. // SC_SENDMAX未?はクライアントへの通知あり。
  5. // 2-2次職の値はなんかめちゃくちゃっぽいので暫定。たぶん?更されます。
  6. SC_SENDMAX = 128, // note: max is now 182, but we'll need to do alot of moving around
  7. SC_PROVOKE = 0,
  8. SC_ENDURE = 1,
  9. SC_TWOHANDQUICKEN = 2,
  10. SC_CONCENTRATE = 3,
  11. SC_HIDING = 4,
  12. SC_CLOAKING = 5,
  13. SC_ENCPOISON = 6,
  14. SC_POISONREACT = 7,
  15. SC_QUAGMIRE = 8,
  16. SC_ANGELUS = 9,
  17. SC_BLESSING = 10,
  18. SC_SIGNUMCRUCIS = 11,
  19. SC_INCREASEAGI = 12,
  20. SC_DECREASEAGI = 13,
  21. SC_SLOWPOISON = 14,
  22. SC_IMPOSITIO = 15,
  23. SC_SUFFRAGIUM = 16,
  24. SC_ASPERSIO = 17,
  25. SC_BENEDICTIO = 18,
  26. SC_KYRIE = 19,
  27. SC_MAGNIFICAT = 20,
  28. SC_GLORIA = 21,
  29. SC_AETERNA = 22,
  30. SC_ADRENALINE = 23,
  31. SC_WEAPONPERFECTION = 24,
  32. SC_OVERTHRUST = 25,
  33. SC_MAXIMIZEPOWER = 26,
  34. SC_RIDING = 27,
  35. SC_FALCON = 28,
  36. SC_TRICKDEAD = 29,
  37. SC_LOUD = 30,
  38. SC_ENERGYCOAT = 31,
  39. SC_HALLUCINATION = 34,
  40. SC_WEIGHT50 = 35,
  41. SC_WEIGHT90 = 36,
  42. SC_SPEEDPOTION0 = 37,
  43. SC_SPEEDPOTION1 = 38,
  44. SC_SPEEDPOTION2 = 39,
  45. SC_SPEEDPOTION3 = 40,
  46. //-- 40-50
  47. SC_STRIPWEAPON = 50,
  48. SC_STRIPSHIELD = 51,
  49. SC_STRIPARMOR = 52,
  50. SC_STRIPHELM = 53,
  51. SC_CP_WEAPON = 54,
  52. SC_CP_SHIELD = 55,
  53. SC_CP_ARMOR = 56,
  54. SC_CP_HELM = 57,
  55. SC_AUTOGUARD = 58,
  56. SC_REFLECTSHIELD = 59,
  57. SC_DEVOTION = 60,
  58. SC_PROVIDENCE = 61,
  59. SC_DEFENDER = 62,
  60. SC_AUTOSPELL = 65,
  61. SC_SPEARSQUICKEN = 68,
  62. //-- 69-85
  63. SC_EXPLOSIONSPIRITS = 86,
  64. SC_STEELBODY = 87,
  65. SC_COMBO = 89,
  66. SC_FLAMELAUNCHER = 90,
  67. SC_FROSTWEAPON = 91,
  68. SC_LIGHTNINGLOADER = 92,
  69. SC_SEISMICWEAPON = 93,
  70. //-- 94-102
  71. SC_AURABLADE = 103, /* オ?ラブレ?ド */
  72. SC_PARRYING = 104, /* パリイング */
  73. SC_CONCENTRATION = 105, /* コンセントレ?ション */
  74. SC_TENSIONRELAX = 106, /* テンションリラックス */
  75. SC_BERSERK = 107, /* バ?サ?ク */
  76. //-- 108, 109
  77. SC_ASSUMPTIO = 110, /* アシャンプティオ */
  78. //-- 111, 112
  79. SC_MAGICPOWER = 113, /* 魔法力?幅 */
  80. //-- 114
  81. SC_TRUESIGHT = 115, /* トゥル?サイト */
  82. SC_WINDWALK = 116, /* ウインドウォ?ク */
  83. SC_MELTDOWN = 117, /* メルトダウン */
  84. SC_CARTBOOST = 118, /* カ?トブ?スト */
  85. //-- 119
  86. SC_REJECTSWORD = 120, /* リジェクトソ?ド */
  87. SC_MARIONETTE = 121, /* マリオネットコントロ?ル */
  88. //-- 122, 123
  89. SC_HEADCRUSH = 124, /* ヘッドクラッシュ */
  90. SC_JOINTBEAT = 125, /* ジョイントビ?ト */
  91. //-- 126, 127
  92. SC_STONE = 128,
  93. SC_FREEZE = 129,
  94. // <-- 130 = a baby skill status?
  95. SC_STAN = 130,
  96. SC_SLEEP = 131,
  97. // <-- 132 = another baby skill?
  98. SC_POISON = 132,
  99. SC_CURSE = 133,
  100. SC_SILENCE = 134,
  101. SC_CONFUSION = 135,
  102. SC_BLIND = 136,
  103. SC_DIVINA = SC_SILENCE,
  104. SC_SAFETYWALL = 140,
  105. SC_PNEUMA = 141,
  106. SC_WATERBALL = 142,
  107. SC_ANKLE = 143,
  108. SC_DANCING = 144,
  109. SC_KEEPING = 145,
  110. SC_BARRIER = 146,
  111. SC_MAGICROD = 149,
  112. SC_SIGHT = 150,
  113. SC_RUWACH = 151,
  114. SC_AUTOCOUNTER = 152,
  115. SC_VOLCANO = 153,
  116. SC_DELUGE = 154,
  117. SC_VIOLENTGALE = 155,
  118. SC_BLADESTOP_WAIT = 156,
  119. SC_BLADESTOP = 157,
  120. SC_EXTREMITYFIST = 158,
  121. SC_GRAFFITI = 159,
  122. SC_LULLABY =160,
  123. SC_RICHMANKIM =161,
  124. SC_ETERNALCHAOS =162,
  125. SC_DRUMBATTLE =163,
  126. SC_NIBELUNGEN =164,
  127. SC_ROKISWEIL =165,
  128. SC_INTOABYSS =166,
  129. SC_SIEGFRIED =167,
  130. SC_DISSONANCE =168,
  131. SC_WHISTLE =169,
  132. SC_ASSNCROS =170,
  133. SC_POEMBRAGI =171,
  134. SC_APPLEIDUN =172,
  135. SC_UGLYDANCE =173,
  136. SC_HUMMING =174,
  137. SC_DONTFORGETME =175,
  138. SC_FORTUNE =176,
  139. SC_SERVICE4U =177,
  140. SC_SPIDERWEB =180, /* スパイダ?ウェッブ */
  141. // SC_EDP // moved
  142. SC_SACRIFICE =184, /* サクリファイス */
  143. SC_WEDDING =187, //結婚用(結婚衣裳になって?くのが?いとか)
  144. SC_NOCHAT =188, //赤エモ?態
  145. SC_SPLASHER =189, /* ベナムスプラッシャ? */
  146. SC_SELFDESTRUCTION =190, /* 自爆 */
  147. SC_MEMORIZE =197, /* メモライズ */ // changed from 181 to 192
  148. SC_DPOISON =198, /* 猛毒 */
  149. // Used by English Team
  150. SC_BROKNARMOR =32,
  151. SC_BROKNWEAPON =33,
  152. SC_SPEEDUP0 =41, // for skill speedup
  153. SC_SPEEDUP1 =42, // for skill speedup
  154. SC_SLOWDOWN =45, // for skill slowdown
  155. SC_AUTOBERSERK =46,
  156. SC_SIGHTTRASHER =73,
  157. SC_BASILICA =102, // temporarily use this before an actual id is found [celest]
  158. SC_EDP =114, /* エフェクトが判明したら移動 */
  159. SC_MARIONETTE2 =122, // Marionette target
  160. SC_ENSEMBLE =159,
  161. SC_FOGWALL =178,
  162. SC_GOSPEL =179,
  163. SC_PRESERVE =181,
  164. SC_BATTLEORDERS =182,
  165. SC_MOONLIT =183,
  166. SC_ATKPOT =185, // [Valaris]
  167. SC_MATKPOT =186, // [Valaris]
  168. SC_MINDBREAKER =191,
  169. SC_SPELLBREAKER =192,
  170. SC_LANDPROTECTOR =193,
  171. SC_ADAPTATION =194,
  172. SC_CHASEWALK =195,
  173. SC_REGENERATION =196,
  174. // [Celest]
  175. SC_BLEEDING = 124, // Temporarily same id as headcrush
  176. // -- testing various SC effects
  177. // SC_AURABLADE =81,
  178. // SC_CONCENTRATION =83,
  179. // SC_TENSIONRELAX =84,
  180. // SC_BERSERK =85,
  181. // SC_CALLSPIRITS =100,
  182. // SC_PARRYING =100,
  183. // SC_FREECAST =101,
  184. // SC_ABSORBSPIRIT =102,
  185. // SC_ASSUMPTIO =114,
  186. // SC_SHARPSHOOT =127,
  187. // SC_GANGSTER =184,
  188. // SC_CANNIBALIZE =186,
  189. // SC_SPHEREMINE =187,
  190. // SC_METEOSTORM =189,
  191. // SC_CASTCANCEL =190,
  192. // SC_SPIDERWEB =191,
  193. };
  194. extern int SkillStatusChangeTable[];
  195. // パラメータ所得系 battle.c より移動
  196. int status_get_class(struct block_list *bl);
  197. int status_get_dir(struct block_list *bl);
  198. int status_get_lv(struct block_list *bl);
  199. int status_get_range(struct block_list *bl);
  200. int status_get_hp(struct block_list *bl);
  201. int status_get_max_hp(struct block_list *bl);
  202. int status_get_str(struct block_list *bl);
  203. int status_get_agi(struct block_list *bl);
  204. int status_get_vit(struct block_list *bl);
  205. int status_get_int(struct block_list *bl);
  206. int status_get_dex(struct block_list *bl);
  207. int status_get_luk(struct block_list *bl);
  208. int status_get_hit(struct block_list *bl);
  209. int status_get_flee(struct block_list *bl);
  210. int status_get_def(struct block_list *bl);
  211. int status_get_mdef(struct block_list *bl);
  212. int status_get_flee2(struct block_list *bl);
  213. int status_get_def2(struct block_list *bl);
  214. int status_get_mdef2(struct block_list *bl);
  215. int status_get_baseatk(struct block_list *bl);
  216. int status_get_atk(struct block_list *bl);
  217. int status_get_atk2(struct block_list *bl);
  218. int status_get_speed(struct block_list *bl);
  219. int status_get_adelay(struct block_list *bl);
  220. int status_get_amotion(struct block_list *bl);
  221. int status_get_dmotion(struct block_list *bl);
  222. int status_get_element(struct block_list *bl);
  223. int status_get_attack_element(struct block_list *bl);
  224. int status_get_attack_element2(struct block_list *bl); //左手武器属性取得
  225. #define status_get_elem_type(bl) (status_get_element(bl)%10)
  226. #define status_get_elem_level(bl) (status_get_element(bl)/10/2)
  227. int status_get_party_id(struct block_list *bl);
  228. int status_get_guild_id(struct block_list *bl);
  229. int status_get_race(struct block_list *bl);
  230. int status_get_size(struct block_list *bl);
  231. int status_get_mode(struct block_list *bl);
  232. int status_get_mexp(struct block_list *bl);
  233. struct status_change *status_get_sc_data(struct block_list *bl);
  234. short *status_get_sc_count(struct block_list *bl);
  235. short *status_get_opt1(struct block_list *bl);
  236. short *status_get_opt2(struct block_list *bl);
  237. short *status_get_opt3(struct block_list *bl);
  238. short *status_get_option(struct block_list *bl);
  239. int status_get_matk1(struct block_list *bl);
  240. int status_get_matk2(struct block_list *bl);
  241. int status_get_critical(struct block_list *bl);
  242. int status_get_atk_(struct block_list *bl);
  243. int status_get_atk_2(struct block_list *bl);
  244. int status_get_atk2(struct block_list *bl);
  245. int status_get_sc_def(struct block_list *bl, int type);
  246. #define status_get_sc_def_mdef(bl) (status_get_sc_def(bl, SP_MDEF1))
  247. #define status_get_sc_def_vit(bl) (status_get_sc_def(bl, SP_DEF2))
  248. #define status_get_sc_def_int(bl) (status_get_sc_def(bl, SP_MDEF2))
  249. #define status_get_sc_def_luk(bl) (status_get_sc_def(bl, SP_LUK))
  250. // 状態異常関連 skill.c より移動
  251. int status_change_start(struct block_list *bl,int type,int val1,int val2,int val3,int val4,int tick,int flag);
  252. int status_change_end( struct block_list* bl , int type,int tid );
  253. int status_change_timer(int tid, unsigned int tick, int id, int data);
  254. int status_change_timer_sub(struct block_list *bl, va_list ap );
  255. int status_change_clear(struct block_list *bl,int type);
  256. // ステータス計算 pc.c から分離
  257. // pc_calcstatus
  258. int status_calc_pc(struct map_session_data* sd,int first);
  259. int status_calc_speed(struct map_session_data*); // [Celest]
  260. // int status_calc_skilltree(struct map_session_data *sd);
  261. int status_getrefinebonus(int lv,int type);
  262. int status_percentrefinery(struct map_session_data *sd,struct item *item);
  263. extern int percentrefinery[5][10];
  264. int do_init_status(void);
  265. #endif