diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2012-12-14 22:25:07 -0800 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2012-12-15 19:41:53 -0800 |
commit | 4bd7eeec09629d3c0f900d42c899fe23c69e07b6 (patch) | |
tree | 4fbbfa45d9538cab7e1062f2c927297bb93ada0a /src/map/skill.hpp | |
parent | 069f39e8a1ebee3e4a4ce8302d0099842876782b (diff) | |
download | tmwa-4bd7eeec09629d3c0f900d42c899fe23c69e07b6.tar.gz tmwa-4bd7eeec09629d3c0f900d42c899fe23c69e07b6.tar.bz2 tmwa-4bd7eeec09629d3c0f900d42c899fe23c69e07b6.tar.xz tmwa-4bd7eeec09629d3c0f900d42c899fe23c69e07b6.zip |
Prepare to trim skills
Diffstat (limited to 'src/map/skill.hpp')
-rw-r--r-- | src/map/skill.hpp | 833 |
1 files changed, 84 insertions, 749 deletions
diff --git a/src/map/skill.hpp b/src/map/skill.hpp index 38a0ed5..5452bd2 100644 --- a/src/map/skill.hpp +++ b/src/map/skill.hpp @@ -2,12 +2,13 @@ #ifndef SKILL_HPP #define SKILL_HPP +#include "skill.t.hpp" + #include "../common/timer.hpp" #include "map.hpp" #include "magic.hpp" -#define MAX_SKILL_DB 450 #define MAX_SKILL_PRODUCE_DB 150 #define MAX_SKILL_ARROW_DB 150 #define MAX_SKILL_ABRA_DB 350 @@ -29,20 +30,27 @@ struct skill_db int hp[MAX_SKILL_LEVEL], sp[MAX_SKILL_LEVEL], mhp[MAX_SKILL_LEVEL], hp_rate[MAX_SKILL_LEVEL], sp_rate[MAX_SKILL_LEVEL], zeny[MAX_SKILL_LEVEL]; - int weapon, state, spiritball[MAX_SKILL_LEVEL]; + int weapon; + SkillState state; + int spiritball[MAX_SKILL_LEVEL]; int itemid[10], amount[10]; int castnodex[MAX_SKILL_LEVEL]; }; -extern struct skill_db skill_db[MAX_SKILL_DB]; +extern earray<struct skill_db, SkillID, MAX_SKILL_DB> skill_db; struct skill_name_db { - int id; // skill id + SkillID id; // skill id const char *name; // search strings const char *desc; // description that shows up for search's }; + +// used only by @skillid for iteration - should be depublicized extern struct skill_name_db skill_names[]; +skill_name_db& skill_lookup_by_id(SkillID id); +skill_name_db& skill_lookup_by_name(const char *name); + struct block_list; struct map_session_data; struct skill_unit; @@ -51,46 +59,46 @@ struct skill_unit_group; int do_init_skill(void); // スキルデータベースへのアクセサ -int skill_get_hit(int id); -int skill_get_inf(int id); -int skill_get_pl(int id); -int skill_get_nk(int id); -int skill_get_max(int id); -int skill_get_max_raise(int id); -int skill_get_range(int id, int lv); -int skill_get_hp(int id, int lv); -int skill_get_mhp(int id, int lv); -int skill_get_sp(int id, int lv); -int skill_get_zeny(int id, int lv); -int skill_get_num(int id, int lv); -int skill_get_cast(int id, int lv); -int skill_get_delay(int id, int lv); -int skill_get_time(int id, int lv); -int skill_get_time2(int id, int lv); -int skill_get_castdef(int id); -int skill_get_weapontype(int id); -int skill_get_unit_id(int id, int flag); -int skill_get_inf2(int id); -int skill_get_maxcount(int id); -int skill_get_blewcount(int id, int lv); +int skill_get_hit(SkillID id); +int skill_get_inf(SkillID id); +int skill_get_pl(SkillID id); +int skill_get_nk(SkillID id); +int skill_get_max(SkillID id); +int skill_get_max_raise(SkillID id); +int skill_get_range(SkillID id, int lv); +int skill_get_hp(SkillID id, int lv); +int skill_get_mhp(SkillID id, int lv); +int skill_get_sp(SkillID id, int lv); +int skill_get_zeny(SkillID id, int lv); +int skill_get_num(SkillID id, int lv); +int skill_get_cast(SkillID id, int lv); +int skill_get_delay(SkillID id, int lv); +int skill_get_time(SkillID id, int lv); +int skill_get_time2(SkillID id, int lv); +int skill_get_castdef(SkillID id); +int skill_get_weapontype(SkillID id); +int skill_get_unit_id(SkillID id, int flag); +int skill_get_inf2(SkillID id); +int skill_get_maxcount(SkillID id); +int skill_get_blewcount(SkillID id, int lv); // スキルの使用 int skill_use_id(struct map_session_data *sd, int target_id, - int skill_num, int skill_lv); + SkillID skill_num, int skill_lv); int skill_use_pos(struct map_session_data *sd, - int skill_x, int skill_y, int skill_num, int skill_lv); + int skill_x, int skill_y, SkillID skill_num, int skill_lv); -int skill_castend_map(struct map_session_data *sd, int skill_num, +int skill_castend_map(struct map_session_data *sd, SkillID skill_num, const char *map); int skill_cleartimerskill(struct block_list *src); int skill_addtimerskill(struct block_list *src, unsigned int tick, - int target, int x, int y, int skill_id, + int target, int x, int y, SkillID skill_id, int skill_lv, int type, int flag); // 追加効果 int skill_additional_effect(struct block_list *src, struct block_list *bl, - int skillid, int skilllv, int attack_type, + SkillID skillid, int skilllv, int attack_type, unsigned int tick); // ユニットスキル @@ -98,7 +106,7 @@ struct skill_unit *skill_initunit(struct skill_unit_group *group, int idx, int x, int y); int skill_delunit(struct skill_unit *unit); struct skill_unit_group *skill_initunitgroup(struct block_list *src, - int count, int skillid, + int count, SkillID skillid, int skilllv, int unit_id); int skill_delunitgroup(struct skill_unit_group *group); struct skill_unit_group_tickset *skill_unitgrouptickset_search(struct @@ -113,10 +121,10 @@ int skill_unit_ondamaged(struct skill_unit *src, struct block_list *bl, int skill_castfix(struct block_list *bl, int time); int skill_delayfix(struct block_list *bl, int time); -int skill_check_unit_range(int m, int x, int y, int range, int skillid); +int skill_check_unit_range(int m, int x, int y, int range, SkillID skillid); int skill_check_unit_range2(int m, int x, int y, int range); // -- moonsoul (added skill_check_unit_cell) -int skill_check_unit_cell(int skillid, int m, int x, int y, int unit_id); +int skill_check_unit_cell(SkillID skillid, int m, int x, int y, int unit_id); int skill_unit_out_all(struct block_list *bl, unsigned int tick, int range); int skill_unit_move(struct block_list *bl, unsigned int tick, int range); int skill_unit_move_unit_group(struct skill_unit_group *group, int m, @@ -131,7 +139,7 @@ int skill_castcancel(struct block_list *bl, int type); int skill_gangsterparadise(struct map_session_data *sd, int type); void skill_brandishspear_first(struct square *tc, int dir, int x, int y); void skill_brandishspear_dir(struct square *tc, int dir, int are); -int skill_autospell(struct map_session_data *md, int skillid); +int skill_autospell(struct map_session_data *md, SkillID skillid); void skill_devotion(struct map_session_data *md, int target); void skill_devotion2(struct block_list *bl, int crusader); int skill_devotion3(struct block_list *bl, int target); @@ -142,727 +150,40 @@ void skill_devotion_end(struct map_session_data *md, // その他 int skill_check_cloaking(struct block_list *bl); -int skill_is_danceskill(int id); +int skill_is_danceskill(SkillID id); // ステータス異常 -int skill_status_effect(struct block_list *bl, int type, int val1, int val2, - int val3, int val4, int tick, int flag, - int spell_invocation); -int skill_status_change_start(struct block_list *bl, int type, int val1, - int val2, int val3, int val4, int tick, - int flag); +int skill_status_effect(struct block_list *bl, StatusChange type, + int val1, int val2, int val3, int val4, + int tick, int flag, int spell_invocation); +int skill_status_change_start(struct block_list *bl, StatusChange type, + int val1, int val2, int val3, int val4, int tick, int flag); void skill_status_change_timer(timer_id, tick_t, custom_id_t, custom_data_t); -int skill_status_change_active(struct block_list *bl, int type); // [fate] -int skill_encchant_eremental_end(struct block_list *bl, int type); -int skill_status_change_end(struct block_list *bl, int type, int tid); +int skill_status_change_active(struct block_list *bl, StatusChange type); // [fate] +int skill_encchant_eremental_end(struct block_list *bl, StatusChange type); +int skill_status_change_end(struct block_list *bl, StatusChange type, int tid); int skill_status_change_clear(struct block_list *bl, int type); // mobスキルのため int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, - int skillid, int skilllv, unsigned int tick, + SkillID skillid, int skilllv, unsigned int tick, int flag); int skill_castend_damage_id(struct block_list *src, struct block_list *bl, - int skillid, int skilllv, unsigned int tick, + SkillID skillid, int skilllv, unsigned int tick, int flag); -int skill_castend_pos2(struct block_list *src, int x, int y, int skillid, +int skill_castend_pos2(struct block_list *src, int x, int y, SkillID skillid, int skilllv, unsigned int tick, int flag); // スキル攻撃一括処理 int skill_attack(int attack_type, struct block_list *src, struct block_list *dsrc, struct block_list *bl, - int skillid, int skilllv, unsigned int tick, int flag); + SkillID skillid, int skilllv, unsigned int tick, int flag); int skill_update_heal_animation(struct map_session_data *sd); // [Fate] Check whether the healing flag must be updated, do so if needed void skill_reload(void); -enum -{ - ST_NONE, ST_HIDING, ST_CLOAKING, ST_HIDDEN, ST_RIDING, ST_FALCON, ST_CART, - ST_SHIELD, ST_SIGHT, ST_EXPLOSIONSPIRITS, - ST_RECOV_WEIGHT_RATE, ST_MOVE_ENABLE, ST_WATER, -}; - -enum -{ // struct map_session_data の status_changeの番号テーブル - SC_SENDMAX = 256, - SC_PROVOKE = 0, - SC_ENDURE = 1, - SC_TWOHANDQUICKEN = 2, - SC_CONCENTRATE = 3, - SC_HIDING = 4, - SC_CLOAKING = 5, - SC_ENCPOISON = 6, - SC_POISONREACT = 7, - SC_QUAGMIRE = 8, - SC_ANGELUS = 9, - SC_BLESSING = 10, - SC_SIGNUMCRUCIS = 11, - SC_INCREASEAGI = 12, - SC_DECREASEAGI = 13, - SC_SLOWPOISON = 14, - SC_IMPOSITIO = 15, - SC_SUFFRAGIUM = 16, - SC_ASPERSIO = 17, - SC_BENEDICTIO = 18, - SC_KYRIE = 19, - SC_MAGNIFICAT = 20, - SC_GLORIA = 21, - SC_AETERNA = 22, - SC_ADRENALINE = 23, - SC_WEAPONPERFECTION = 24, - SC_OVERTHRUST = 25, - SC_MAXIMIZEPOWER = 26, - SC_RIDING = 27, - SC_FALCON = 28, - SC_TRICKDEAD = 29, - SC_LOUD = 30, - SC_ENERGYCOAT = 31, - SC_BROKNARMOR = 32, - SC_BROKNWEAPON = 33, - SC_HALLUCINATION = 34, - SC_WEIGHT50 = 35, - SC_WEIGHT90 = 36, - SC_SPEEDPOTION0 = 37, - SC_SPEEDPOTION1 = 38, - SC_SPEEDPOTION2 = 39, - - SC_STRIPWEAPON = 50, - SC_STRIPSHIELD = 51, - SC_STRIPARMOR = 52, - SC_STRIPHELM = 53, - SC_CP_WEAPON = 54, - SC_CP_SHIELD = 55, - SC_CP_ARMOR = 56, - SC_CP_HELM = 57, - SC_AUTOGUARD = 58, - SC_REFLECTSHIELD = 59, - SC_DEVOTION = 60, - SC_PROVIDENCE = 61, - SC_DEFENDER = 62, - SC_AUTOSPELL = 65, - SC_EXPLOSIONSPIRITS = 86, - SC_STEELBODY = 87, - SC_SPEARSQUICKEN = 68, - - SC_HEALING = 70, - - SC_SIGHTTRASHER = 73, - - SC_COMBO = 89, - SC_FLAMELAUNCHER = 90, - SC_FROSTWEAPON = 91, - SC_LIGHTNINGLOADER = 92, - SC_SEISMICWEAPON = 93, - - SC_AURABLADE = 103, - SC_PARRYING = 104, - SC_CONCENTRATION = 105, - SC_TENSIONRELAX = 106, - SC_BERSERK = 107, - - SC_ASSUMPTIO = 110, - - SC_MAGICPOWER = 113, - - SC_TRUESIGHT = 115, - SC_WINDWALK = 116, - SC_MELTDOWN = 117, - SC_CARTBOOST = 118, - - SC_REJECTSWORD = 120, - SC_MARIONETTE = 121, - - SC_HEADCRUSH = 124, - SC_JOINTBEAT = 125, - SC_BASILICA = 125, - - SC_STONE = 128, - SC_FREEZE = 129, - SC_STAN = 130, - SC_SLEEP = 131, - SC_POISON = 132, - SC_CURSE = 133, - SC_SILENCE = 134, - SC_CONFUSION = 135, - SC_BLIND = 136, - - SC_SAFETYWALL = 140, - SC_PNEUMA = 141, - SC_WATERBALL = 142, - SC_ANKLE = 143, - SC_DANCING = 144, - SC_KEEPING = 145, - SC_BARRIER = 146, - - SC_MAGICROD = 149, - SC_SIGHT = 150, - SC_RUWACH = 151, - SC_AUTOCOUNTER = 152, - SC_VOLCANO = 153, - SC_DELUGE = 154, - SC_VIOLENTGALE = 155, - SC_BLADESTOP_WAIT = 156, - SC_BLADESTOP = 157, - SC_EXTREMITYFIST = 158, - SC_GRAFFITI = 159, - SC_ENSEMBLE = 159, - - SC_LULLABY = 160, - SC_RICHMANKIM = 161, - SC_ETERNALCHAOS = 162, - SC_DRUMBATTLE = 163, - SC_NIBELUNGEN = 164, - SC_ROKISWEIL = 165, - SC_INTOABYSS = 166, - SC_SIEGFRIED = 167, - SC_DISSONANCE = 168, - SC_WHISTLE = 169, - SC_ASSNCROS = 170, - SC_POEMBRAGI = 171, - SC_APPLEIDUN = 172, - SC_UGLYDANCE = 173, - SC_HUMMING = 174, - SC_DONTFORGETME = 175, - SC_FORTUNE = 176, - SC_SERVICE4U = 177, - SC_FOGWALL = 178, - SC_GOSPEL = 179, - SC_SPIDERWEB = 180, - SC_MEMORIZE = 181, - SC_LANDPROTECTOR = 182, - SC_ADAPTATION = 183, - SC_CHASEWALK = 184, - SC_ATKPOT = 185, - SC_MATKPOT = 186, - SC_WEDDING = 187, - SC_NOCHAT = 188, - SC_SPLASHER = 189, - SC_SELFDESTRUCTION = 190, - SC_MINDBREAKER = 191, - SC_SPELLBREAKER = 192, - -// Added for Fate's spells - SC_HIDE = 194, // Hide from `detect' magic - SC_HALT_REGENERATE = 195, // Suspend regeneration - SC_FLYING_BACKPACK = 196, // Flying backpack - SC_MBARRIER = 197, // Magical barrier, magic resistance (val1 : power (%)) - SC_HASTE = 198, // `Haste' spell (val1 : power) - SC_PHYS_SHIELD = 199, // `Protect' spell, reduce damage (val1: power) - - SC_DIVINA = SC_SILENCE, -}; -extern int SkillStatusChangeTable[]; - -enum -{ - NV_EMOTE = 1, - NV_TRADE, - NV_PARTY, - - SM_SWORD, - SM_TWOHAND, - SM_RECOVERY, - SM_BASH, - SM_PROVOKE, - SM_MAGNUM, - SM_ENDURE, - - MG_SRECOVERY, - MG_SIGHT, - MG_NAPALMBEAT, - MG_SAFETYWALL, - MG_SOULSTRIKE, - MG_COLDBOLT, - MG_FROSTDIVER, - MG_STONECURSE, - MG_FIREBALL, - MG_FIREWALL, - MG_FIREBOLT, - MG_LIGHTNINGBOLT, - MG_THUNDERSTORM, - - AL_DP, - AL_DEMONBANE, - AL_RUWACH, - AL_PNEUMA, - AL_TELEPORT, - AL_WARP, - AL_HEAL, - AL_INCAGI, - AL_DECAGI, - AL_HOLYWATER, - AL_CRUCIS, - AL_ANGELUS, - AL_BLESSING, - AL_CURE, - - MC_INCCARRY, - MC_DISCOUNT, - MC_OVERCHARGE, - MC_PUSHCART, - MC_IDENTIFY, - MC_VENDING, - MC_MAMMONITE, - - AC_OWL = 45, - AC_VULTURE, - AC_CONCENTRATION, - AC_DOUBLE, - AC_SHOWER, - - TF_DOUBLE, - TF_MISS, - TF_STEAL, - TF_HIDING, - TF_POISON, - TF_DETOXIFY, - - ALL_RESURRECTION, - - KN_SPEARMASTERY, - KN_PIERCE, - KN_BRANDISHSPEAR, - KN_SPEARSTAB, - KN_SPEARBOOMERANG, - KN_TWOHANDQUICKEN, - KN_AUTOCOUNTER, - KN_BOWLINGBASH, - KN_RIDING, - KN_CAVALIERMASTERY, - - PR_MACEMASTERY, - PR_IMPOSITIO, - PR_SUFFRAGIUM, - PR_ASPERSIO, - PR_BENEDICTIO, - PR_SANCTUARY, - PR_SLOWPOISON, - PR_STRECOVERY, - PR_KYRIE, - PR_MAGNIFICAT, - PR_GLORIA, - PR_LEXDIVINA, - PR_TURNUNDEAD, - PR_LEXAETERNA, - PR_MAGNUS, - - WZ_FIREPILLAR, - WZ_SIGHTRASHER, - WZ_FIREIVY, - WZ_METEOR, - WZ_JUPITEL, - WZ_VERMILION, - WZ_WATERBALL, - WZ_ICEWALL, - WZ_FROSTNOVA, - WZ_STORMGUST, - WZ_EARTHSPIKE, - WZ_HEAVENDRIVE, - WZ_QUAGMIRE, - WZ_ESTIMATION, - - BS_IRON, - BS_STEEL, - BS_ENCHANTEDSTONE, - BS_ORIDEOCON, - BS_DAGGER, - BS_SWORD, - BS_TWOHANDSWORD, - BS_AXE, - BS_MACE, - BS_KNUCKLE, - BS_SPEAR, - BS_HILTBINDING, - BS_FINDINGORE, - BS_WEAPONRESEARCH, - BS_REPAIRWEAPON, - BS_SKINTEMPER, - BS_HAMMERFALL, - BS_ADRENALINE, - BS_WEAPONPERFECT, - BS_OVERTHRUST, - BS_MAXIMIZE, - - HT_SKIDTRAP, - HT_LANDMINE, - HT_ANKLESNARE, - HT_SHOCKWAVE, - HT_SANDMAN, - HT_FLASHER, - HT_FREEZINGTRAP, - HT_BLASTMINE, - HT_CLAYMORETRAP, - HT_REMOVETRAP, - HT_TALKIEBOX, - HT_BEASTBANE, - HT_FALCON, - HT_STEELCROW, - HT_BLITZBEAT, - HT_DETECTING, - HT_SPRINGTRAP, - - AS_RIGHT, - AS_LEFT, - AS_KATAR, - AS_CLOAKING, - AS_SONICBLOW, - AS_GRIMTOOTH, - AS_ENCHANTPOISON, - AS_POISONREACT, - AS_VENOMDUST, - AS_SPLASHER, - - NV_FIRSTAID, - NV_TRICKDEAD, - SM_MOVINGRECOVERY, - SM_FATALBLOW, - SM_AUTOBERSERK, - AC_MAKINGARROW, - AC_CHARGEARROW, - TF_SPRINKLESAND, - TF_BACKSLIDING, - TF_PICKSTONE, - TF_THROWSTONE, - MC_CARTREVOLUTION, - MC_CHANGECART, - MC_LOUD, - AL_HOLYLIGHT, - MG_ENERGYCOAT, - - NPC_PIERCINGATT, - NPC_MENTALBREAKER, - NPC_RANGEATTACK, - NPC_ATTRICHANGE, - NPC_CHANGEWATER, - NPC_CHANGEGROUND, - NPC_CHANGEFIRE, - NPC_CHANGEWIND, - NPC_CHANGEPOISON, - NPC_CHANGEHOLY, - NPC_CHANGEDARKNESS, - NPC_CHANGETELEKINESIS, - NPC_CRITICALSLASH, - NPC_COMBOATTACK, - NPC_GUIDEDATTACK, - NPC_SELFDESTRUCTION, - NPC_SPLASHATTACK, - NPC_SUICIDE, - NPC_POISON, - NPC_BLINDATTACK, - NPC_SILENCEATTACK, - NPC_STUNATTACK, - NPC_PETRIFYATTACK, - NPC_CURSEATTACK, - NPC_SLEEPATTACK, - NPC_RANDOMATTACK, - NPC_WATERATTACK, - NPC_GROUNDATTACK, - NPC_FIREATTACK, - NPC_WINDATTACK, - NPC_POISONATTACK, - NPC_HOLYATTACK, - NPC_DARKNESSATTACK, - NPC_TELEKINESISATTACK, - NPC_MAGICALATTACK, - NPC_METAMORPHOSIS, - NPC_PROVOCATION, - NPC_SMOKING, - NPC_SUMMONSLAVE, - NPC_EMOTION, - NPC_TRANSFORMATION, - NPC_BLOODDRAIN, - NPC_ENERGYDRAIN, - NPC_KEEPING, - NPC_DARKBREATH, - NPC_DARKBLESSING, - NPC_BARRIER, - NPC_DEFENDER, - NPC_LICK, - NPC_HALLUCINATION, - NPC_REBIRTH, - NPC_SUMMONMONSTER, - - RG_SNATCHER, - RG_STEALCOIN, - RG_BACKSTAP, - RG_TUNNELDRIVE, - RG_RAID, - RG_STRIPWEAPON, - RG_STRIPSHIELD, - RG_STRIPARMOR, - RG_STRIPHELM, - RG_INTIMIDATE, - RG_GRAFFITI, - RG_FLAGGRAFFITI, - RG_CLEANER, - RG_GANGSTER, - RG_COMPULSION, - RG_PLAGIARISM, - - AM_AXEMASTERY, - AM_LEARNINGPOTION, - AM_PHARMACY, - AM_DEMONSTRATION, - AM_ACIDTERROR, - AM_POTIONPITCHER, - AM_CANNIBALIZE, - AM_SPHEREMINE, - AM_CP_WEAPON, - AM_CP_SHIELD, - AM_CP_ARMOR, - AM_CP_HELM, - AM_BIOETHICS, - AM_BIOTECHNOLOGY, - AM_CREATECREATURE, - AM_CULTIVATION, - AM_FLAMECONTROL, - AM_CALLHOMUN, - AM_REST, - AM_DRILLMASTER, - AM_HEALHOMUN, - AM_RESURRECTHOMUN, - - CR_TRUST, - CR_AUTOGUARD, - CR_SHIELDCHARGE, - CR_SHIELDBOOMERANG, - CR_REFLECTSHIELD, - CR_HOLYCROSS, - CR_GRANDCROSS, - CR_DEVOTION, - CR_PROVIDENCE, - CR_DEFENDER, - CR_SPEARQUICKEN, - - MO_IRONHAND, - MO_SPIRITSRECOVERY, - MO_CALLSPIRITS, - MO_ABSORBSPIRITS, - MO_TRIPLEATTACK, - MO_BODYRELOCATION, - MO_DODGE, - MO_INVESTIGATE, - MO_FINGEROFFENSIVE, - MO_STEELBODY, - MO_BLADESTOP, - MO_EXPLOSIONSPIRITS, - MO_EXTREMITYFIST, - MO_CHAINCOMBO, - MO_COMBOFINISH, - - SA_ADVANCEDBOOK, - SA_CASTCANCEL, - SA_MAGICROD, - SA_SPELLBREAKER, - SA_FREECAST, - SA_AUTOSPELL, - SA_FLAMELAUNCHER, - SA_FROSTWEAPON, - SA_LIGHTNINGLOADER, - SA_SEISMICWEAPON, - SA_DRAGONOLOGY, - SA_VOLCANO, - SA_DELUGE, - SA_VIOLENTGALE, - SA_LANDPROTECTOR, - SA_DISPELL, - SA_ABRACADABRA, - SA_MONOCELL, - SA_CLASSCHANGE, - SA_SUMMONMONSTER, - SA_REVERSEORCISH, - SA_DEATH, - SA_FORTUNE, - SA_TAMINGMONSTER, - SA_QUESTION, - SA_GRAVITY, - SA_LEVELUP, - SA_INSTANTDEATH, - SA_FULLRECOVERY, - SA_COMA, - - BD_ADAPTATION, - BD_ENCORE, - BD_LULLABY, - BD_RICHMANKIM, - BD_ETERNALCHAOS, - BD_DRUMBATTLEFIELD, - BD_RINGNIBELUNGEN, - BD_ROKISWEIL, - BD_INTOABYSS, - BD_SIEGFRIED, - BD_RAGNAROK, - - BA_MUSICALLESSON, - BA_MUSICALSTRIKE, - BA_DISSONANCE, - BA_FROSTJOKE, - BA_WHISTLE, - BA_ASSASSINCROSS, - BA_POEMBRAGI, - BA_APPLEIDUN, - - DC_DANCINGLESSON, - DC_THROWARROW, - DC_UGLYDANCE, - DC_SCREAM, - DC_HUMMING, - DC_DONTFORGETME, - DC_FORTUNEKISS, - DC_SERVICEFORYOU, - - NPC_SELFDESTRUCTION2 = 333, - - WE_MALE = 334, - WE_FEMALE, - WE_CALLPARTNER, - - NPC_DARKCROSS = 338, - - TMW_SKILLPOOL = 339, // skill pool size - - TMW_MAGIC = 340, - TMW_MAGIC_LIFE = 341, - TMW_MAGIC_WAR = 342, - TMW_MAGIC_TRANSMUTE = 343, - TMW_MAGIC_NATURE = 344, - TMW_MAGIC_ETHER = 345, - TMW_MAGIC_DARK = 346, - TMW_MAGIC_LIGHT = 347, - - TMW_BRAWLING = 350, - TMW_LUCKY_COUNTER = 351, - TMW_SPEED = 352, - TMW_RESIST_POISON = 353, - TMW_ASTRAL_SOUL = 354, - TMW_RAGING = 355, - - LK_AURABLADE = 356, - LK_PARRYING, - LK_CONCENTRATION, - LK_TENSIONRELAX, - LK_BERSERK, - LK_FURY, - HP_ASSUMPTIO, - HP_BASILICA, - HP_MEDITATIO, - HW_SOULDRAIN, - HW_MAGICCRASHER, - HW_MAGICPOWER, - PA_PRESSURE, - PA_SACRIFICE, - PA_GOSPEL, - CH_PALMSTRIKE, - CH_TIGERFIST, - CH_CHAINCRUSH, - PF_HPCONVERSION, - PF_SOULCHANGE, - PF_SOULBURN, - ASC_KATAR, - ASC_HALLUCINATION, - ASC_EDP, - ASC_BREAKER, - SN_SIGHT, - SN_FALCONASSAULT, - SN_SHARPSHOOTING, - SN_WINDWALK, - WS_MELTDOWN, - WS_CREATECOIN, - WS_CREATENUGGET, - WS_CARTBOOST, - WS_SYSTEMCREATE, - ST_CHASEWALK, - ST_REJECTSWORD, - ST_STEALBACKPACK, - CR_ALCHEMY, - CR_SYNTHESISPOTION, - CG_ARROWVULCAN, - CG_MOONLIT, - CG_MARIONETTE, - LK_SPIRALPIERCE, - LK_HEADCRUSH, - LK_JOINTBEAT, - HW_NAPALMVULCAN, - CH_SOULCOLLECT, - PF_MINDBREAKER, - PF_MEMORIZE, - PF_FOGWALL, - PF_SPIDERWEB, - ASC_METEORASSAULT, - ASC_CDP, - WE_BABY, - WE_CALLPARENT, - WE_CALLBABY, - TK_RUN, - TK_READYSTORM, - TK_STORMKICK, - TK_READYDOWN, - TK_DOWNKICK, - TK_READYTURN, - TK_TURNKICK, - TK_READYCOUNTER, - TK_COUNTER, - TK_DODGE, - TK_JUMPKICK, - TK_HPTIME, - TK_SPTIME, - TK_POWER, - TK_SEVENWIND, - TK_HIGHJUMP, - SG_FEEL, - SG_SUN_WARM, - SG_MOON_WARM, - SG_STAR_WARM, - SG_SUN_COMFORT, - SG_MOON_COMFORT, - SG_STAR_COMFORT, - SG_HATE, - SG_SUN_ANGER, - SG_MOON_ANGER, - SG_STAR_ANGER, - SG_SUN_BLESS, - SG_MOON_BLESS, - SG_STAR_BLESS, - SG_DEVIL, - SG_FRIEND, - SG_KNOWLEDGE, - SG_FUSION, - SL_ALCHEMIST, - AM_BERSERKPITCHER, - SL_MONK, - SL_STAR, - SL_SAGE, - SL_CRUSADER, - SL_SUPERNOVICE, - SL_KNIGHT, - SL_WIZARD, - SL_PRIEST, - SL_BARDDANCER, - SL_ROGUE, - SL_ASSASIN, - SL_BLACKSMITH, - BS_ADRENALINE2, - SL_HUNTER, - SL_SOULLINKER, - SL_KAIZEL, - SL_KAAHI, - SL_KAUPE, - SL_KAITE, - SL_KAINA, - SL_STIN, - SL_STUN, - SL_SMA, - SL_SWOO, - SL_SKE, - SL_SKA, - - GD_APPROVAL = 10000, - GD_KAFRACONTACT, - GD_GUARDIANRESEARCH, - GD_CHARISMA, - GD_EXTENSION, -}; +extern earray<StatusChange, SkillID, MAX_SKILL_DB> SkillStatusChangeTable; // [Fate] Skill pools API @@ -871,22 +192,36 @@ enum // Max. # of skills that may be classified as pool skills in db/skill_db.txt #define MAX_POOL_SKILLS 128 -extern int skill_pool_skills[MAX_POOL_SKILLS]; // All pool skills +extern SkillID skill_pool_skills[MAX_POOL_SKILLS]; // All pool skills extern int skill_pool_skills_size; // Number of entries in skill_pool_skills -int skill_pool(struct map_session_data *sd, int *skills); // Yields all active skills in the skill pool; no more than MAX_SKILL_POOL. Return is number of skills. +// Yields all active skills in the skill pool; no more than MAX_SKILL_POOL. Return is number of skills. +int skill_pool(struct map_session_data *sd, SkillID *skills); int skill_pool_size(struct map_session_data *sd); int skill_pool_max(struct map_session_data *sd); // Max. number of pool skills void skill_pool_empty(struct map_session_data *sd); // Deactivate all pool skills -int skill_pool_activate(struct map_session_data *sd, int skill); // Skill into skill pool. Return is zero iff okay. -int skill_pool_is_activated(struct map_session_data *sd, int skill); // Skill into skill pool. Return is zero when activated. -int skill_pool_deactivate(struct map_session_data *sd, int skill); // Skill out of skill pool. Return is zero iff okay. -const char *skill_name(int skill); // Yield configurable skill name -int skill_stat(int skill); // Yields the stat associated with a skill. Returns zero if none, or SP_STR, SP_VIT, ... otherwise -int skill_power(struct map_session_data *sd, int skill); // Yields the power of a skill. This is zero if the skill is unknown or if it's a pool skill that is outside of the skill pool, - // otherwise a value from 0 to 255 (with 200 being the `normal maximum') -int skill_power_bl(struct block_list *bl, int skill); // Yields the power of a skill. This is zero if the skill is unknown or if it's a pool skill that is outside of the skill pool, - // otherwise a value from 0 to 255 (with 200 being the `normal maximum') - -void skill_pool_register(int id); // [Fate] Remember that a certain skill ID belongs to a pool skill +// Skill into skill pool. Return is zero iff okay. +int skill_pool_activate(struct map_session_data *sd, SkillID skill); +// Skill into skill pool. Return is zero when activated. +int skill_pool_is_activated(struct map_session_data *sd, SkillID skill); +// Skill out of skill pool. Return is zero iff okay. +int skill_pool_deactivate(struct map_session_data *sd, SkillID skill); +// Yield configurable skill name +inline +const char *skill_name(SkillID skill) +{ + return skill_lookup_by_id(skill).desc; +} +// Yields the stat associated with a skill. +// Returns zero if none, or SP_STR, SP_VIT, ... otherwise +int skill_stat(SkillID skill); +// Yields the power of a skill. +// This is zero if the skill is unknown +// or if it's a pool skill that is outside of the skill pool, +// otherwise a value from 0 to 255 (with 200 being the `normal maximum') +int skill_power(struct map_session_data *sd, SkillID skill); +int skill_power_bl(struct block_list *bl, SkillID skill); + +// [Fate] Remember that a certain skill ID belongs to a pool skill +void skill_pool_register(SkillID id); #endif |