diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/utils2.hpp | 2 | ||||
-rw-r--r-- | src/map/battle.cpp | 136 | ||||
-rw-r--r-- | src/map/clif.cpp | 2 | ||||
-rw-r--r-- | src/map/mob.cpp | 54 | ||||
-rw-r--r-- | src/map/skill.cpp | 1206 | ||||
-rw-r--r-- | src/map/skill.hpp | 2 | ||||
-rw-r--r-- | src/map/skill.t.hpp | 115 |
7 files changed, 452 insertions, 1065 deletions
diff --git a/src/common/utils2.hpp b/src/common/utils2.hpp index 973a445..cdf2069 100644 --- a/src/common/utils2.hpp +++ b/src/common/utils2.hpp @@ -3,6 +3,7 @@ #include "sanity.hpp" +#include <functional> #include <iterator> #include <type_traits> @@ -193,7 +194,6 @@ IteratorPair<EnumValueIterator<E>> erange(E b, E e) return {b, e}; } -namespace std { namespace placeholders {} } namespace ph = std::placeholders; template<class A, class B> diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 33941f6..fe14615 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -1523,8 +1523,7 @@ int battle_calc_damage(struct block_list *src, struct block_list *bl, if (sc_data[SC_SAFETYWALL].timer != -1 && damage > 0 && bool(flag & BF_WEAPON) - && bool(flag & BF_SHORT) - && skill_num != NPC_GUIDEDATTACK) + && bool(flag & BF_SHORT)) { // セーフティウォール struct skill_unit *unit = @@ -1537,8 +1536,7 @@ int battle_calc_damage(struct block_list *src, struct block_list *bl, if (sc_data[SC_PNEUMA].timer != -1 && damage > 0 && bool(flag & BF_WEAPON) - && bool(flag & BF_LONG) - && skill_num != NPC_GUIDEDATTACK) + && bool(flag & BF_LONG)) { // ニューマ damage = 0; @@ -1841,39 +1839,8 @@ struct Damage battle_calc_mob_weapon_attack(struct block_list *src, if (skill_num != SkillID::ZERO && skill_num != SkillID::NEGATIVE) { flag = (flag & ~BF_SKILLMASK) | BF_SKILL; - switch (skill_num) - { - case NPC_COMBOATTACK: // 多段攻撃 - div_ = skill_get_num(skill_num, skill_lv); - damage *= div_; - break; - case NPC_RANDOMATTACK: // ランダムATK攻撃 - damage = damage * (MPRAND(50, 150)) / 100; - break; - // 属性攻撃(適当) - case NPC_WATERATTACK: - case NPC_GROUNDATTACK: - case NPC_FIREATTACK: - case NPC_WINDATTACK: - case NPC_POISONATTACK: - case NPC_HOLYATTACK: - case NPC_DARKNESSATTACK: - case NPC_TELEKINESISATTACK: - damage = damage * (100 + 25 * (skill_lv - 1)) / 100; - break; - case NPC_GUIDEDATTACK: - hitrate = 1000000; - break; - case NPC_RANGEATTACK: - flag = (flag & ~BF_RANGEMASK) | BF_LONG; - break; - case NPC_PIERCINGATT: - flag = (flag & ~BF_RANGEMASK) | BF_SHORT; - break; - } } - if (skill_num != NPC_CRITICALSLASH) { // 対 象の防御力によるダメージの減少 // ディバインプロテクション(ここでいいのかな?) @@ -2372,42 +2339,8 @@ struct Damage battle_calc_pc_weapon_attack(struct block_list *src, if (skill_num != SkillID::ZERO && skill_num != SkillID::NEGATIVE) { flag = (flag & ~BF_SKILLMASK) | BF_SKILL; - switch (skill_num) - { - case NPC_COMBOATTACK: // 多段攻撃 - div_ = skill_get_num(skill_num, skill_lv); - damage *= div_; - damage2 *= div_; - break; - case NPC_RANDOMATTACK: // ランダムATK攻撃 - damage = damage * (MPRAND(50, 150)) / 100; - damage2 = damage2 * (MPRAND(50, 150)) / 100; - break; - // 属性攻撃(適当) - case NPC_WATERATTACK: - case NPC_GROUNDATTACK: - case NPC_FIREATTACK: - case NPC_WINDATTACK: - case NPC_POISONATTACK: - case NPC_HOLYATTACK: - case NPC_DARKNESSATTACK: - case NPC_TELEKINESISATTACK: - damage = damage * (100 + 25 * skill_lv) / 100; - damage2 = damage2 * (100 + 25 * skill_lv) / 100; - break; - case NPC_GUIDEDATTACK: - hitrate = 1000000; - break; - case NPC_RANGEATTACK: - flag = (flag & ~BF_RANGEMASK) | BF_LONG; - break; - case NPC_PIERCINGATT: - flag = (flag & ~BF_RANGEMASK) | BF_SHORT; - break; - } } - if (skill_num != NPC_CRITICALSLASH) { // 対 象の防御力によるダメージの減少 // ディバインプロテクション(ここでいいのかな?) @@ -2883,18 +2816,6 @@ struct Damage battle_calc_magic_attack(struct block_list *bl, BF aflag = BF_MAGIC | BF_LONG | BF_SKILL; - if (skill_num != SkillID::ZERO && skill_num != SkillID::NEGATIVE) - { - switch (skill_num) - { // 基本ダメージ計算(スキルごとに処理) - // ヒールor聖体 - case AL_HEAL: - damage = skill_calc_heal(bl, skill_lv) / 2; - normalmagic_flag = 0; - break; - } - } - if (normalmagic_flag) { // 一般魔法ダメージ計算 int imdef_flag = 0; @@ -3032,38 +2953,11 @@ struct Damage battle_calc_misc_attack(struct block_list *bl, damage = battle_get_hp(bl) - (bl == target ? 1 : 0); damagefix = 0; break; - - case NPC_SMOKING: // タバコを吸う - damage = 3; - damagefix = 0; - break; - - case NPC_DARKBREATH: - { - eptr<struct status_change, StatusChange> sc_data = battle_get_sc_data(target); - int hitrate = - battle_get_hit(bl) - battle_get_flee(target) + 80; - hitrate = ((hitrate > 95) ? 95 : ((hitrate < 5) ? 5 : hitrate)); - if (sc_data - && (sc_data[SC_SLEEP].timer != -1 - || sc_data[SC_STAN].timer != -1 - || sc_data[SC_FREEZE].timer != -1 - || (sc_data[SC_STONE].timer != -1 - && sc_data[SC_STONE].val2 == 0))) - hitrate = 1000000; - if (MRAND(100) < hitrate) - { - damage = 500 + (skill_lv - 1) * 1000 + MRAND(1000); - if (damage > 9999) - damage = 9999; - } - } - break; } if (damagefix) { - if (damage < 1 && skill_num != NPC_DARKBREATH) + if (damage < 1) damage = 1; if (tsd) @@ -3143,7 +3037,6 @@ ATK battle_weapon_attack(struct block_list *src, struct block_list *target, { struct map_session_data *sd = NULL; eptr<struct status_change, StatusChange> t_sc_data = battle_get_sc_data(target); - int race = 7, ele = 0; int damage, rdamage = 0; struct Damage wd; @@ -3168,8 +3061,6 @@ ATK battle_weapon_attack(struct block_list *src, struct block_list *target, return ATK::ZERO; } - race = battle_get_race(target); - ele = battle_get_elem_type(target); if (battle_check_target(src, target, BCT_ENEMY) > 0 && battle_check_range(src, target, 0)) { @@ -3333,24 +3224,13 @@ ATK battle_weapon_attack(struct block_list *src, struct block_list *target, case 0: case 2: f = skill_castend_damage_id(src, target, - sd->autospell_id, - skilllv, tick, - flag); + sd->autospell_id, skilllv, + tick, flag); break; case 1: /* 支援系 */ - if (sd->autospell_id == AL_HEAL - && battle_check_undead(race, ele)) - f = skill_castend_damage_id(src, target, - sd->autospell_id, - skilllv, - tick, flag); - else - f = skill_castend_nodamage_id(src, - target, - sd->autospell_id, - skilllv, - tick, - flag); + f = skill_castend_nodamage_id(src, target, + sd->autospell_id, skilllv, + tick, flag); break; } } diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 99447ea..7ea7fd3 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -4955,7 +4955,7 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd) return; } - if ((sd->sc_data[SC_TRICKDEAD].timer != -1 && skillnum != NV_TRICKDEAD) || + if (sd->sc_data[SC_TRICKDEAD].timer != -1 || sd->sc_data[SC_BERSERK].timer != -1 || sd->sc_data[SC_NOCHAT].timer != -1 || sd->sc_data[SC_WEDDING].timer != -1) diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 3158dc5..0170665 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -38,8 +38,6 @@ int mob_makedummymobdb(int); static void mob_timer(timer_id, tick_t, custom_id_t, custom_data_t); static -int mob_skillid2skillidx(int mob_class, SkillID skillid); -static int mobskill_use_id(struct mob_data *md, struct block_list *target, int skill_idx); static @@ -2634,20 +2632,6 @@ int mob_damage(struct block_list *src, struct mob_data *md, int damage, if (bool(md->option & Option::CLOAK)) skill_status_change_end(&md->bl, SC_CLOAKING, -1); - if (md->state.special_mob_ai == 2) - { //スフィアーマイン - int skillidx = 0; - - if ((skillidx = - mob_skillid2skillidx(md->mob_class, NPC_SELFDESTRUCTION2)) >= 0) - { - md->mode |= MobMode::CAN_MOVE; - md->next_walktime = tick; - mobskill_use_id(md, &md->bl, skillidx); //自爆詠唱開始 - md->state.special_mob_ai++; - } - } - if (md->hp > 0) { return 0; @@ -3331,27 +3315,6 @@ int mob_counttargeted(struct mob_data *md, struct block_list *src, return c; } -/*========================================== - *MOBskillから該当skillidのskillidxを返す - *------------------------------------------ - */ -int mob_skillid2skillidx(int mob_class, SkillID skillid) -{ - int i; - struct mob_skill *ms = mob_db[mob_class].skill; - - if (ms == NULL) - return -1; - - for (i = 0; i < mob_db[mob_class].maxskill; i++) - { - if (ms[i].skill_id == skillid) - return i; - } - return -1; - -} - // // MOBスキル // @@ -3422,19 +3385,14 @@ void mobskill_castend_id(timer_id tid, tick_t tick, custom_id_t id, custom_data_ // 攻撃系/吹き飛ばし系 case 0: case 2: - skill_castend_damage_id(&md->bl, bl, md->skillid, md->skilllv, - tick, BCT_ZERO); + skill_castend_damage_id(&md->bl, bl, + md->skillid, md->skilllv, + tick, BCT_ZERO); break; case 1: // 支援系 - if (!mob_db[md->mob_class].skill[md->skillidx].val[0] && - (md->skillid == AL_HEAL) - && battle_check_undead(battle_get_race(bl), - battle_get_elem_type(bl))) - skill_castend_damage_id(&md->bl, bl, md->skillid, - md->skilllv, tick, BCT_ZERO); - else - skill_castend_nodamage_id(&md->bl, bl, md->skillid, - md->skilllv, tick, BCT_ZERO); + skill_castend_nodamage_id(&md->bl, bl, + md->skillid, md->skilllv, + tick, BCT_ZERO); break; } } diff --git a/src/map/skill.cpp b/src/map/skill.cpp index c07cfca..c963135 100644 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -20,533 +20,484 @@ #define SKILLUNITTIMER_INVERVAL 100 -// This table appears to be wrong -/* スキル番号=>ステータス異常番号変換テーブル */ +// This table is wrong. +// The only used skill with a status effect is NPC_SELFDESTRUCT, +// and due to the misnumber, it wasn't active anyway. +static __attribute__((deprecated)) earray<StatusChange, SkillID, MAX_SKILL_DB> SkillStatusChangeTable //= {{ // 0- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_PROVOKE, /* プロボック */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // NV_BASIC + StatusChange::NEGATIVE1, // SM_SWORD + StatusChange::NEGATIVE1, // SM_TWOHAND + StatusChange::NEGATIVE1, // SM_RECOVERY + StatusChange::NEGATIVE1, // SM_BASH + StatusChange::NEGATIVE1, // SM_PROVOKE + StatusChange::NEGATIVE1, // SM_MAGNUM + StatusChange::NEGATIVE1, // SM_ENDURE + StatusChange::NEGATIVE1, // MG_SRECOVERY // 10- - SC_SIGHT, /* サイト */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_FREEZE, /* フロストダイバー */ - SC_STONE, /* ストーンカース */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // MG_SIGHT + StatusChange::NEGATIVE1, // MG_NAPALMBEAT + StatusChange::NEGATIVE1, // MG_SAFETYWALL + StatusChange::NEGATIVE1, // MG_SOULSTRIKE + StatusChange::NEGATIVE1, // MG_COLDBOLT + StatusChange::NEGATIVE1, // MG_FROSTDIVER + StatusChange::NEGATIVE1, // MG_STONECURSE + StatusChange::NEGATIVE1, // MG_FIREBALL + StatusChange::NEGATIVE1, // MG_FIREWALL + StatusChange::NEGATIVE1, // MG_FIREBOLT // 20- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, /* ルアフ */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_INCREASEAGI, /* 速度増加 */ + StatusChange::NEGATIVE1, // MG_LIGHTNINGBOLT + StatusChange::NEGATIVE1, // MG_THUNDERSTORM + StatusChange::NEGATIVE1, // AL_DP + StatusChange::NEGATIVE1, // AL_DEMONBANE + StatusChange::NEGATIVE1, // AL_RUWACH + StatusChange::NEGATIVE1, // AL_PNEUMA + StatusChange::NEGATIVE1, // AL_TELEPORT + StatusChange::NEGATIVE1, // AL_WARP + StatusChange::NEGATIVE1, // AL_HEAL + StatusChange::NEGATIVE1, // AL_INCAGI // 30- - SC_DECREASEAGI, /* 速度減少 */ - StatusChange::NEGATIVE1, - SC_SIGNUMCRUCIS, /* シグナムクルシス */ - SC_ANGELUS, /* エンジェラス */ - SC_BLESSING, /* ブレッシング */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // AL_DECAGI + StatusChange::NEGATIVE1, // AL_HOLYWATER + StatusChange::NEGATIVE1, // AL_CRUCIS + StatusChange::NEGATIVE1, // AL_ANGELUS + StatusChange::NEGATIVE1, // AL_BLESSING + StatusChange::NEGATIVE1, // AL_CURE + StatusChange::NEGATIVE1, // MC_INCCARRY + StatusChange::NEGATIVE1, // MC_DISCOUNT + StatusChange::NEGATIVE1, // MC_OVERCHARGE + StatusChange::NEGATIVE1, // MC_PUSHCART // 40- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_CONCENTRATE, /* 集中力向上 */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // MC_IDENTIFY + StatusChange::NEGATIVE1, // MC_VENDING + StatusChange::NEGATIVE1, // MC_MAMMONITE + StatusChange::NEGATIVE1, // AC_OWL + StatusChange::NEGATIVE1, // AC_VULTURE + StatusChange::NEGATIVE1, // AC_CONCENTRATION + StatusChange::NEGATIVE1, // AC_DOUBLE + StatusChange::NEGATIVE1, // AC_SHOWER + StatusChange::NEGATIVE1, // TF_DOUBLE + StatusChange::NEGATIVE1, // TF_MISS // 50- - StatusChange::NEGATIVE1, - SC_HIDING, /* ハイディング */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // TF_STEAL + StatusChange::NEGATIVE1, // TF_HIDING + StatusChange::NEGATIVE1, // TF_POISON + StatusChange::NEGATIVE1, // TF_DETOXIFY + StatusChange::NEGATIVE1, // ALL_RESURRECTION + StatusChange::NEGATIVE1, // KN_SPEARMASTERY + StatusChange::NEGATIVE1, // KN_PIERCE + StatusChange::NEGATIVE1, // KN_BRANDISHSPEAR + StatusChange::NEGATIVE1, // KN_SPEARSTAB + StatusChange::NEGATIVE1, // KN_SPEARBOOMERANG // 60- - SC_TWOHANDQUICKEN, /* 2HQ */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_IMPOSITIO, /* インポシティオマヌス */ - SC_SUFFRAGIUM, /* サフラギウム */ - SC_ASPERSIO, /* アスペルシオ */ - SC_BENEDICTIO, /* 聖体降福 */ + StatusChange::NEGATIVE1, // KN_TWOHANDQUICKEN + StatusChange::NEGATIVE1, // KN_AUTOCOUNTER + StatusChange::NEGATIVE1, // KN_BOWLINGBASH + StatusChange::NEGATIVE1, // KN_RIDING + StatusChange::NEGATIVE1, // KN_CAVALIERMASTERY + StatusChange::NEGATIVE1, // PR_MACEMASTERY + StatusChange::NEGATIVE1, // PR_IMPOSITIO + StatusChange::NEGATIVE1, // PR_SUFFRAGIUM + StatusChange::NEGATIVE1, // PR_ASPERSIO + StatusChange::NEGATIVE1, // PR_BENEDICTIO // 70- - StatusChange::NEGATIVE1, - SC_SLOWPOISON, - StatusChange::NEGATIVE1, - SC_KYRIE, /* キリエエレイソン */ - SC_MAGNIFICAT, /* マグニフィカート */ - SC_GLORIA, /* グロリア */ - SC_DIVINA, /* レックスディビーナ */ - StatusChange::NEGATIVE1, - SC_AETERNA, /* レックスエーテルナ */ - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // PR_SANCTUARY + StatusChange::NEGATIVE1, // PR_SLOWPOISON + StatusChange::NEGATIVE1, // PR_STRECOVERY + StatusChange::NEGATIVE1, // PR_KYRIE + StatusChange::NEGATIVE1, // PR_MAGNIFICAT + StatusChange::NEGATIVE1, // PR_GLORIA + StatusChange::NEGATIVE1, // PR_LEXDIVINA + StatusChange::NEGATIVE1, // PR_TURNUNDEAD + StatusChange::NEGATIVE1, // PR_LEXAETERNA + StatusChange::NEGATIVE1, // PR_MAGNUS // 80- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // WZ_FIREPILLAR + StatusChange::NEGATIVE1, // WZ_SIGHTRASHER + StatusChange::NEGATIVE1, // WZ_FIREIVY + StatusChange::NEGATIVE1, // WZ_METEOR + StatusChange::NEGATIVE1, // WZ_JUPITEL + StatusChange::NEGATIVE1, // WZ_VERMILION + StatusChange::NEGATIVE1, // WZ_WATERBALL + StatusChange::NEGATIVE1, // WZ_ICEWALL + StatusChange::NEGATIVE1, // WZ_FROSTNOVA + StatusChange::NEGATIVE1, // WZ_STORMGUST // 90- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_QUAGMIRE, /* クァグマイア */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // WZ_EARTHSPIKE + StatusChange::NEGATIVE1, // WZ_HEAVENDRIVE + StatusChange::NEGATIVE1, // WZ_QUAGMIRE + StatusChange::NEGATIVE1, // WZ_ESTIMATION + StatusChange::NEGATIVE1, // BS_IRON + StatusChange::NEGATIVE1, // BS_STEEL + StatusChange::NEGATIVE1, // BS_ENCHANTEDSTONE + StatusChange::NEGATIVE1, // BS_ORIDEOCON + StatusChange::NEGATIVE1, // BS_DAGGER + StatusChange::NEGATIVE1, // BS_SWORD // 100- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // BS_TWOHANDSWORD + StatusChange::NEGATIVE1, // BS_AXE + StatusChange::NEGATIVE1, // BS_MACE + StatusChange::NEGATIVE1, // BS_KNUCKLE + StatusChange::NEGATIVE1, // BS_SPEAR + StatusChange::NEGATIVE1, // BS_HILTBINDING + StatusChange::NEGATIVE1, // BS_FINDINGORE + StatusChange::NEGATIVE1, // BS_WEAPONRESEARCH + StatusChange::NEGATIVE1, // BS_REPAIRWEAPON + StatusChange::NEGATIVE1, // BS_SKINTEMPER // 110- - StatusChange::NEGATIVE1, - SC_ADRENALINE, /* アドレナリンラッシュ */ - SC_WEAPONPERFECTION, /* ウェポンパーフェクション */ - SC_OVERTHRUST, /* オーバートラスト */ - SC_MAXIMIZEPOWER, /* マキシマイズパワー */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // BS_HAMMERFALL + StatusChange::NEGATIVE1, // BS_ADRENALINE + StatusChange::NEGATIVE1, // BS_WEAPONPERFECT + StatusChange::NEGATIVE1, // BS_OVERTHRUST + StatusChange::NEGATIVE1, // BS_MAXIMIZE + StatusChange::NEGATIVE1, // HT_SKIDTRAP + StatusChange::NEGATIVE1, // HT_LANDMINE + StatusChange::NEGATIVE1, // HT_ANKLESNARE + StatusChange::NEGATIVE1, // HT_SHOCKWAVE + StatusChange::NEGATIVE1, // HT_SANDMAN // 120- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // HT_FLASHER + StatusChange::NEGATIVE1, // HT_FREEZINGTRAP + StatusChange::NEGATIVE1, // HT_BLASTMINE + StatusChange::NEGATIVE1, // HT_CLAYMORETRAP + StatusChange::NEGATIVE1, // HT_REMOVETRAP + StatusChange::NEGATIVE1, // HT_TALKIEBOX + StatusChange::NEGATIVE1, // HT_BEASTBANE + StatusChange::NEGATIVE1, // HT_FALCON + StatusChange::NEGATIVE1, // HT_STEELCROW + StatusChange::NEGATIVE1, // HT_BLITZBEAT // 130- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_CLOAKING, /* クローキング */ - SC_STAN, /* ソニックブロー */ - StatusChange::NEGATIVE1, - SC_ENCPOISON, /* エンチャントポイズン */ - SC_POISONREACT, /* ポイズンリアクト */ + StatusChange::NEGATIVE1, // HT_DETECTING + StatusChange::NEGATIVE1, // HT_SPRINGTRAP + StatusChange::NEGATIVE1, // AS_RIGHT + StatusChange::NEGATIVE1, // AS_LEFT + StatusChange::NEGATIVE1, // AS_KATAR + StatusChange::NEGATIVE1, // AS_CLOAKING + StatusChange::NEGATIVE1, // AS_SONICBLOW + StatusChange::NEGATIVE1, // AS_GRIMTOOTH + StatusChange::NEGATIVE1, // AS_ENCHANTPOISON + StatusChange::NEGATIVE1, // AS_POISONREACT // 140- - SC_POISON, /* ベノムダスト */ - SC_SPLASHER, /* ベナムスプラッシャー */ - StatusChange::NEGATIVE1, - SC_TRICKDEAD, /* 死んだふり */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // AS_VENOMDUST + StatusChange::NEGATIVE1, // AS_SPLASHER + StatusChange::NEGATIVE1, // NV_FIRSTAID + StatusChange::NEGATIVE1, // NV_TRICKDEAD + StatusChange::NEGATIVE1, // SM_MOVINGRECOVERY + StatusChange::NEGATIVE1, // SM_FATALBLOW + StatusChange::NEGATIVE1, // SM_AUTOBERSERK + StatusChange::NEGATIVE1, // AC_MAKINGARROW + StatusChange::NEGATIVE1, // AC_CHARGEARROW + StatusChange::NEGATIVE1, // TF_SPRINKLESAND // 150- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_LOUD, /* ラウドボイス */ - StatusChange::NEGATIVE1, - SC_ENERGYCOAT, /* エナジーコート */ - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // TF_BACKSLIDING + StatusChange::NEGATIVE1, // TF_PICKSTONE + StatusChange::NEGATIVE1, // TF_THROWSTONE + StatusChange::NEGATIVE1, // MC_CARTREVOLUTION + StatusChange::NEGATIVE1, // MC_CHANGECART + StatusChange::NEGATIVE1, // MC_LOUD + StatusChange::NEGATIVE1, // AL_HOLYLIGHT + StatusChange::NEGATIVE1, // MG_ENERGYCOAT + StatusChange::NEGATIVE1, // NPC_PIERCINGATT + StatusChange::NEGATIVE1, // NPC_MENTALBREAKER // 160- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // NPC_RANGEATTACK + StatusChange::NEGATIVE1, // NPC_ATTRICHANGE + StatusChange::NEGATIVE1, // NPC_CHANGEWATER + StatusChange::NEGATIVE1, // NPC_CHANGEGROUND + StatusChange::NEGATIVE1, // NPC_CHANGEFIRE + StatusChange::NEGATIVE1, // NPC_CHANGEWIND + StatusChange::NEGATIVE1, // NPC_CHANGEPOISON + StatusChange::NEGATIVE1, // NPC_CHANGEHOLY + StatusChange::NEGATIVE1, // NPC_CHANGEDARKNESS + StatusChange::NEGATIVE1, // NPC_CHANGETELEKINESIS // 170- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_SELFDESTRUCTION, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // NPC_CRITICALSLASH + StatusChange::NEGATIVE1, // NPC_COMBOATTACK + StatusChange::NEGATIVE1, // NPC_GUIDEDATTACK + SC_SELFDESTRUCTION, // NPC_SELFDESTRUCTION + StatusChange::NEGATIVE1, // NPC_SPLASHATTACK + StatusChange::NEGATIVE1, // NPC_SUICIDE + StatusChange::NEGATIVE1, // NPC_POISON + StatusChange::NEGATIVE1, // NPC_BLINDATTACK + StatusChange::NEGATIVE1, // NPC_SILENCEATTACK + StatusChange::NEGATIVE1, // NPC_STUNATTACK // 180- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // NPC_PETRIFYATTACK + StatusChange::NEGATIVE1, // NPC_CURSEATTACK + StatusChange::NEGATIVE1, // NPC_SLEEPATTACK + StatusChange::NEGATIVE1, // NPC_RANDOMATTACK + StatusChange::NEGATIVE1, // NPC_WATERATTACK + StatusChange::NEGATIVE1, // NPC_GROUNDATTACK + StatusChange::NEGATIVE1, // NPC_FIREATTACK + StatusChange::NEGATIVE1, // NPC_WINDATTACK + StatusChange::NEGATIVE1, // NPC_POISONATTACK + StatusChange::NEGATIVE1, // NPC_HOLYATTACK // 190- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // NPC_DARKNESSATTACK + StatusChange::NEGATIVE1, // NPC_TELEKINESISATTACK + StatusChange::NEGATIVE1, // NPC_MAGICALATTACK + StatusChange::NEGATIVE1, // NPC_METAMORPHOSIS + StatusChange::NEGATIVE1, // NPC_PROVOCATION + StatusChange::NEGATIVE1, // NPC_SMOKING + StatusChange::NEGATIVE1, // NPC_SUMMONSLAVE + StatusChange::NEGATIVE1, // NPC_EMOTION + StatusChange::NEGATIVE1, // NPC_TRANSFORMATION + StatusChange::NEGATIVE1, // NPC_BLOODDRAIN // 200- - StatusChange::NEGATIVE1, - SC_KEEPING, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_BARRIER, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_HALLUCINATION, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // NPC_ENERGYDRAIN + StatusChange::NEGATIVE1, // NPC_KEEPING + StatusChange::NEGATIVE1, // NPC_DARKBREATH + StatusChange::NEGATIVE1, // NPC_DARKBLESSING + StatusChange::NEGATIVE1, // NPC_BARRIER + StatusChange::NEGATIVE1, // NPC_DEFENDER + StatusChange::NEGATIVE1, // NPC_LICK + StatusChange::NEGATIVE1, // NPC_HALLUCINATION + StatusChange::NEGATIVE1, // NPC_REBIRTH + StatusChange::NEGATIVE1, // NPC_SUMMONMONSTER // 210- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_STRIPWEAPON, - SC_STRIPSHIELD, - SC_STRIPARMOR, - SC_STRIPHELM, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // RG_SNATCHER + StatusChange::NEGATIVE1, // RG_STEALCOIN + StatusChange::NEGATIVE1, // RG_BACKSTAP + StatusChange::NEGATIVE1, // RG_TUNNELDRIVE + StatusChange::NEGATIVE1, // RG_RAID + StatusChange::NEGATIVE1, // RG_STRIPWEAPON + StatusChange::NEGATIVE1, // RG_STRIPSHIELD + StatusChange::NEGATIVE1, // RG_STRIPARMOR + StatusChange::NEGATIVE1, // RG_STRIPHELM + StatusChange::NEGATIVE1, // RG_INTIMIDATE // 220- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // RG_GRAFFITI + StatusChange::NEGATIVE1, // RG_FLAGGRAFFITI + StatusChange::NEGATIVE1, // RG_CLEANER + StatusChange::NEGATIVE1, // RG_GANGSTER + StatusChange::NEGATIVE1, // RG_COMPULSION + StatusChange::NEGATIVE1, // RG_PLAGIARISM + StatusChange::NEGATIVE1, // AM_AXEMASTERY + StatusChange::NEGATIVE1, // AM_LEARNINGPOTION + StatusChange::NEGATIVE1, // AM_PHARMACY + StatusChange::NEGATIVE1, // AM_DEMONSTRATION // 230- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_CP_WEAPON, - SC_CP_SHIELD, - SC_CP_ARMOR, - SC_CP_HELM, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // AM_ACIDTERROR + StatusChange::NEGATIVE1, // AM_POTIONPITCHER + StatusChange::NEGATIVE1, // AM_CANNIBALIZE + StatusChange::NEGATIVE1, // AM_SPHEREMINE + StatusChange::NEGATIVE1, // AM_CP_WEAPON + StatusChange::NEGATIVE1, // AM_CP_SHIELD + StatusChange::NEGATIVE1, // AM_CP_ARMOR + StatusChange::NEGATIVE1, // AM_CP_HELM + StatusChange::NEGATIVE1, // AM_BIOETHICS + StatusChange::NEGATIVE1, // AM_BIOTECHNOLOGY // 240- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_AUTOGUARD, + StatusChange::NEGATIVE1, // AM_CREATECREATURE + StatusChange::NEGATIVE1, // AM_CULTIVATION + StatusChange::NEGATIVE1, // AM_FLAMECONTROL + StatusChange::NEGATIVE1, // AM_CALLHOMUN + StatusChange::NEGATIVE1, // AM_REST + StatusChange::NEGATIVE1, // AM_DRILLMASTER + StatusChange::NEGATIVE1, // AM_HEALHOMUN + StatusChange::NEGATIVE1, // AM_RESURRECTHOMUN + StatusChange::NEGATIVE1, // CR_TRUST + StatusChange::NEGATIVE1, // CR_AUTOGUARD // 250- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_REFLECTSHIELD, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_DEVOTION, - StatusChange::NEGATIVE1, - SC_DEFENDER, - SC_SPEARSQUICKEN, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // CR_SHIELDCHARGE + StatusChange::NEGATIVE1, // CR_SHIELDBOOMERANG + StatusChange::NEGATIVE1, // CR_REFLECTSHIELD + StatusChange::NEGATIVE1, // CR_HOLYCROSS + StatusChange::NEGATIVE1, // CR_GRANDCROSS + StatusChange::NEGATIVE1, // CR_DEVOTION + StatusChange::NEGATIVE1, // CR_PROVIDENCE + StatusChange::NEGATIVE1, // CR_DEFENDER + StatusChange::NEGATIVE1, // CR_SPEARQUICKEN + StatusChange::NEGATIVE1, // MO_IRONHAND // 260- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_STEELBODY, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // MO_SPIRITSRECOVERY + StatusChange::NEGATIVE1, // MO_CALLSPIRITS + StatusChange::NEGATIVE1, // MO_ABSORBSPIRITS + StatusChange::NEGATIVE1, // MO_TRIPLEATTACK + StatusChange::NEGATIVE1, // MO_BODYRELOCATION + StatusChange::NEGATIVE1, // MO_DODGE + StatusChange::NEGATIVE1, // MO_INVESTIGATE + StatusChange::NEGATIVE1, // MO_FINGEROFFENSIVE + StatusChange::NEGATIVE1, // MO_STEELBODY + StatusChange::NEGATIVE1, // MO_BLADESTOP // 270- - SC_EXPLOSIONSPIRITS, - SC_EXTREMITYFIST, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_MAGICROD, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // MO_EXPLOSIONSPIRITS + StatusChange::NEGATIVE1, // MO_EXTREMITYFIST + StatusChange::NEGATIVE1, // MO_CHAINCOMBO + StatusChange::NEGATIVE1, // MO_COMBOFINISH + StatusChange::NEGATIVE1, // SA_ADVANCEDBOOK + StatusChange::NEGATIVE1, // SA_CASTCANCEL + StatusChange::NEGATIVE1, // SA_MAGICROD + StatusChange::NEGATIVE1, // SA_SPELLBREAKER + StatusChange::NEGATIVE1, // SA_FREECAST + StatusChange::NEGATIVE1, // SA_AUTOSPELL // 280- - SC_FLAMELAUNCHER, - SC_FROSTWEAPON, - SC_LIGHTNINGLOADER, - SC_SEISMICWEAPON, - StatusChange::NEGATIVE1, - SC_VOLCANO, - SC_DELUGE, - SC_VIOLENTGALE, - SC_LANDPROTECTOR, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // SA_FLAMELAUNCHER + StatusChange::NEGATIVE1, // SA_FROSTWEAPON + StatusChange::NEGATIVE1, // SA_LIGHTNINGLOADER + StatusChange::NEGATIVE1, // SA_SEISMICWEAPON + StatusChange::NEGATIVE1, // SA_DRAGONOLOGY + StatusChange::NEGATIVE1, // SA_VOLCANO + StatusChange::NEGATIVE1, // SA_DELUGE + StatusChange::NEGATIVE1, // SA_VIOLENTGALE + StatusChange::NEGATIVE1, // SA_LANDPROTECTOR + StatusChange::NEGATIVE1, // SA_DISPELL // 290- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // SA_ABRACADABRA + StatusChange::NEGATIVE1, // SA_MONOCELL + StatusChange::NEGATIVE1, // SA_CLASSCHANGE + StatusChange::NEGATIVE1, // SA_SUMMONMONSTER + StatusChange::NEGATIVE1, // SA_REVERSEORCISH + StatusChange::NEGATIVE1, // SA_DEATH + StatusChange::NEGATIVE1, // SA_FORTUNE + StatusChange::NEGATIVE1, // SA_TAMINGMONSTER + StatusChange::NEGATIVE1, // SA_QUESTION + StatusChange::NEGATIVE1, // SA_GRAVITY // 300- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_LULLABY, - SC_RICHMANKIM, - SC_ETERNALCHAOS, - SC_DRUMBATTLE, + StatusChange::NEGATIVE1, // SA_LEVELUP + StatusChange::NEGATIVE1, // SA_INSTANTDEATH + StatusChange::NEGATIVE1, // SA_FULLRECOVERY + StatusChange::NEGATIVE1, // SA_COMA + StatusChange::NEGATIVE1, // BD_ADAPTATION + StatusChange::NEGATIVE1, // BD_ENCORE + StatusChange::NEGATIVE1, // BD_LULLABY + StatusChange::NEGATIVE1, // BD_RICHMANKIM + StatusChange::NEGATIVE1, // BD_ETERNALCHAOS + StatusChange::NEGATIVE1, // BD_DRUMBATTLEFIELD // 310- - SC_NIBELUNGEN, - SC_ROKISWEIL, - SC_INTOABYSS, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_DISSONANCE, - StatusChange::NEGATIVE1, - SC_WHISTLE, + StatusChange::NEGATIVE1, // BD_RINGNIBELUNGEN + StatusChange::NEGATIVE1, // BD_ROKISWEIL + StatusChange::NEGATIVE1, // BD_INTOABYSS + StatusChange::NEGATIVE1, // BD_SIEGFRIED + StatusChange::NEGATIVE1, // BD_RAGNAROK + StatusChange::NEGATIVE1, // BA_MUSICALLESSON + StatusChange::NEGATIVE1, // BA_MUSICALSTRIKE + StatusChange::NEGATIVE1, // BA_DISSONANCE + StatusChange::NEGATIVE1, // BA_FROSTJOKE + StatusChange::NEGATIVE1, // BA_WHISTLE // 320- - SC_ASSNCROS, - SC_POEMBRAGI, - SC_APPLEIDUN, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_UGLYDANCE, - StatusChange::NEGATIVE1, - SC_HUMMING, - SC_DONTFORGETME, - SC_FORTUNE, + StatusChange::NEGATIVE1, // BA_ASSASSINCROSS + StatusChange::NEGATIVE1, // BA_POEMBRAGI + StatusChange::NEGATIVE1, // BA_APPLEIDUN + StatusChange::NEGATIVE1, // DC_DANCINGLESSON + StatusChange::NEGATIVE1, // DC_THROWARROW + StatusChange::NEGATIVE1, // DC_UGLYDANCE + StatusChange::NEGATIVE1, // DC_SCREAM + StatusChange::NEGATIVE1, // DC_HUMMING + StatusChange::NEGATIVE1, // DC_DONTFORGETME + StatusChange::NEGATIVE1, // DC_FORTUNEKISS // 330- - SC_SERVICE4U, - SC_SELFDESTRUCTION, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // DC_SERVICEFORYOU + StatusChange::NEGATIVE1, // NPC_SELFDESTRUCTION2 + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // WE_MALE + StatusChange::NEGATIVE1, // WE_FEMALE + StatusChange::NEGATIVE1, // WE_CALLPARTNER + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // NPC_DARKCROSS + StatusChange::NEGATIVE1, // (none) // 340- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) // 350- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_AURABLADE, - SC_PARRYING, - SC_CONCENTRATION, - SC_TENSIONRELAX, - SC_BERSERK, + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // (none) + StatusChange::NEGATIVE1, // LK_AURABLADE + StatusChange::NEGATIVE1, // LK_PARRYING + StatusChange::NEGATIVE1, // LK_CONCENTRATION + StatusChange::NEGATIVE1, // LK_TENSIONRELAX + StatusChange::NEGATIVE1, // LK_BERSERK // 360- - SC_BERSERK, - SC_ASSUMPTIO, - SC_BASILICA, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_MAGICPOWER, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_GOSPEL, + StatusChange::NEGATIVE1, // LK_FURY + StatusChange::NEGATIVE1, // HP_ASSUMPTIO + StatusChange::NEGATIVE1, // HP_BASILICA + StatusChange::NEGATIVE1, // HP_MEDITATIO + StatusChange::NEGATIVE1, // HW_SOULDRAIN + StatusChange::NEGATIVE1, // HW_MAGICCRASHER + StatusChange::NEGATIVE1, // HW_MAGICPOWER + StatusChange::NEGATIVE1, // PA_PRESSURE + StatusChange::NEGATIVE1, // PA_SACRIFICE + StatusChange::NEGATIVE1, // PA_GOSPEL // 370- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // CH_PALMSTRIKE + StatusChange::NEGATIVE1, // CH_TIGERFIST + StatusChange::NEGATIVE1, // CH_CHAINCRUSH + StatusChange::NEGATIVE1, // PF_HPCONVERSION + StatusChange::NEGATIVE1, // PF_SOULCHANGE + StatusChange::NEGATIVE1, // PF_SOULBURN + StatusChange::NEGATIVE1, // ASC_KATAR + StatusChange::NEGATIVE1, // ASC_HALLUCINATION + StatusChange::NEGATIVE1, // ASC_EDP + StatusChange::NEGATIVE1, // ASC_BREAKER // 380- - SC_TRUESIGHT, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_WINDWALK, - SC_MELTDOWN, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_CARTBOOST, - StatusChange::NEGATIVE1, - SC_CHASEWALK, + StatusChange::NEGATIVE1, // SN_SIGHT + StatusChange::NEGATIVE1, // SN_FALCONASSAULT + StatusChange::NEGATIVE1, // SN_SHARPSHOOTING + StatusChange::NEGATIVE1, // SN_WINDWALK + StatusChange::NEGATIVE1, // WS_MELTDOWN + StatusChange::NEGATIVE1, // WS_CREATECOIN + StatusChange::NEGATIVE1, // WS_CREATENUGGET + StatusChange::NEGATIVE1, // WS_CARTBOOST + StatusChange::NEGATIVE1, // WS_SYSTEMCREATE + StatusChange::NEGATIVE1, // ST_CHASEWALK // 390- - SC_REJECTSWORD, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_MARIONETTE, - StatusChange::NEGATIVE1, - SC_HEADCRUSH, - SC_JOINTBEAT, + StatusChange::NEGATIVE1, // ST_REJECTSWORD + StatusChange::NEGATIVE1, // ST_STEALBACKPACK + StatusChange::NEGATIVE1, // CR_ALCHEMY + StatusChange::NEGATIVE1, // CR_SYNTHESISPOTION + StatusChange::NEGATIVE1, // CG_ARROWVULCAN + StatusChange::NEGATIVE1, // CG_MOONLIT + StatusChange::NEGATIVE1, // CG_MARIONETTE + StatusChange::NEGATIVE1, // LK_SPIRALPIERCE + StatusChange::NEGATIVE1, // LK_HEADCRUSH + StatusChange::NEGATIVE1, // LK_JOINTBEAT // 400- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - SC_MINDBREAKER, - SC_MEMORIZE, - SC_FOGWALL, - SC_SPIDERWEB, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // HW_NAPALMVULCAN + StatusChange::NEGATIVE1, // CH_SOULCOLLECT + StatusChange::NEGATIVE1, // PF_MINDBREAKER + StatusChange::NEGATIVE1, // PF_MEMORIZE + StatusChange::NEGATIVE1, // PF_FOGWALL + StatusChange::NEGATIVE1, // PF_SPIDERWEB + StatusChange::NEGATIVE1, // ASC_METEORASSAULT + StatusChange::NEGATIVE1, // ASC_CDP + StatusChange::NEGATIVE1, // WE_BABY + StatusChange::NEGATIVE1, // WE_CALLPARENT // 410- - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, - StatusChange::NEGATIVE1, + StatusChange::NEGATIVE1, // WE_CALLBABY + StatusChange::NEGATIVE1, // TK_RUN + StatusChange::NEGATIVE1, // TK_READYSTORM + StatusChange::NEGATIVE1, // TK_STORMKICK + StatusChange::NEGATIVE1, // TK_READYDOWN + StatusChange::NEGATIVE1, // TK_DOWNKICK + StatusChange::NEGATIVE1, // TK_READYTURN + StatusChange::NEGATIVE1, // TK_TURNKICK + StatusChange::NEGATIVE1, // TK_READYCOUNTER + StatusChange::NEGATIVE1, // TK_COUNTER }}; struct skill_name_db skill_names[] = { {AC_OWL, "OWL", "Owl's_Eye"}, - {AL_HEAL, "HEAL", "Heal"}, - {AL_TELEPORT, "TELEPORT", "Teleport"}, - - {NPC_ATTRICHANGE, "ATTRICHANGE", "NPC_ATTRICHANGE"}, - {NPC_BARRIER, "BARRIER", "NPC_BARRIER"}, - {NPC_BLINDATTACK, "BLINDATTACK", "NPC_BLINDATTACK"}, - {NPC_BLOODDRAIN, "BLOODDRAIN", "NPC_BLOODDRAIN"}, - {NPC_CHANGEDARKNESS, "CHANGEDARKNESS", "NPC_CHANGEDARKNESS"}, - {NPC_CHANGEFIRE, "CHANGEFIRE", "NPC_CHANGEFIRE"}, - {NPC_CHANGEGROUND, "CHANGEGROUND", "NPC_CHANGEGROUND"}, - {NPC_CHANGEHOLY, "CHANGEHOLY", "NPC_CHANGEHOLY"}, - {NPC_CHANGEPOISON, "CHANGEPOISON", "NPC_CHANGEPOISON"}, - {NPC_CHANGETELEKINESIS, "CHANGETELEKINESIS", "NPC_CHANGETELEKINESIS"}, - {NPC_CHANGEWATER, "CHANGEWATER", "NPC_CHANGEWATER"}, - {NPC_CHANGEWIND, "CHANGEWIND", "NPC_CHANGEWIND"}, - {NPC_COMBOATTACK, "COMBOATTACK", "NPC_COMBOATTACK"}, - {NPC_CRITICALSLASH, "CRITICALSLASH", "NPC_CRITICALSLASH"}, - {NPC_CURSEATTACK, "CURSEATTACK", "NPC_CURSEATTACK"}, - {NPC_DARKBLESSING, "DARKBLESSING", "NPC_DARKBLESSING"}, - {NPC_DARKBREATH, "DARKBREATH", "NPC_DARKBREATH"}, - {NPC_DARKCROSS, "DARKCROSS", "NPC_DARKCROSS"}, - {NPC_DARKNESSATTACK, "DARKNESSATTACK", "NPC_DARKNESSATTACK"}, - {NPC_DEFENDER, "DEFENDER", "NPC_DEFENDER"}, + {NPC_EMOTION, "EMOTION", "NPC_EMOTION"}, - {NPC_ENERGYDRAIN, "ENERGYDRAIN", "NPC_ENERGYDRAIN"}, - {NPC_FIREATTACK, "FIREATTACK", "NPC_FIREATTACK"}, - {NPC_GROUNDATTACK, "GROUNDATTACK", "NPC_GROUNDATTACK"}, - {NPC_GUIDEDATTACK, "GUIDEDATTACK", "NPC_GUIDEDATTACK"}, - {NPC_HALLUCINATION, "HALLUCINATION", "NPC_HALLUCINATION"}, - {NPC_HOLYATTACK, "HOLYATTACK", "NPC_HOLYATTACK"}, - {NPC_KEEPING, "KEEPING", "NPC_KEEPING"}, - {NPC_LICK, "LICK", "NPC_LICK"}, - {NPC_MAGICALATTACK, "MAGICALATTACK", "NPC_MAGICALATTACK"}, - {NPC_MENTALBREAKER, "MENTALBREAKER", "NPC_MENTALBREAKER"}, - {NPC_METAMORPHOSIS, "METAMORPHOSIS", "NPC_METAMORPHOSIS"}, - {NPC_PETRIFYATTACK, "PETRIFYATTACK", "NPC_PETRIFYATTACK"}, - {NPC_PIERCINGATT, "PIERCINGATT", "NPC_PIERCINGATT"}, {NPC_POISON, "POISON", "NPC_POISON"}, - {NPC_POISONATTACK, "POISONATTACK", "NPC_POISONATTACK"}, - {NPC_RANDOMATTACK, "RANDOMATTACK", "NPC_RANDOMATTACK"}, - {NPC_RANGEATTACK, "RANGEATTACK", "NPC_RANGEATTACK"}, - {NPC_REBIRTH, "REBIRTH", "NPC_REBIRTH"}, {NPC_SELFDESTRUCTION, "SELFDESTRUCTION", "Kabooooom!"}, - {NPC_SELFDESTRUCTION2, "SELFDESTRUCTION2", "NPC_SELFDESTRUCTION2"}, - {NPC_SILENCEATTACK, "SILENCEATTACK", "NPC_SILENCEATTACK"}, - {NPC_SLEEPATTACK, "SLEEPATTACK", "NPC_SLEEPATTACK"}, - {NPC_SMOKING, "SMOKING", "NPC_SMOKING"}, - {NPC_SPLASHATTACK, "SPLASHATTACK", "NPC_SPLASHATTACK"}, - {NPC_STUNATTACK, "STUNATTACK", "NPC_STUNATTACK"}, - {NPC_SUICIDE, "SUICIDE", "NPC_SUICIDE"}, - {NPC_SUMMONMONSTER, "SUMMONMONSTER", "NPC_SUMMONMONSTER"}, {NPC_SUMMONSLAVE, "SUMMONSLAVE", "NPC_SUMMONSLAVE"}, - {NPC_TELEKINESISATTACK, "TELEKINESISATTACK", "NPC_TELEKINESISATTACK"}, - {NPC_TRANSFORMATION, "TRANSFORMATION", "NPC_TRANSFORMATION"}, - {NPC_WATERATTACK, "WATERATTACK", "NPC_WATERATTACK"}, - {NPC_WINDATTACK, "WINDATTACK", "NPC_WINDATTACK"}, {NV_EMOTE, "EMOTE", "Emote_Skill"}, {NV_TRADE, "TRADE", "Trade_Skill"}, @@ -759,7 +710,6 @@ int skill_additional_effect(struct block_list *src, struct block_list *bl, unsigned int) { struct map_session_data *sd = NULL; - struct map_session_data *dstsd = NULL; struct mob_data *md = NULL; int luk; @@ -800,9 +750,7 @@ int skill_additional_effect(struct block_list *src, struct block_list *bl, sc_def_vit2 = 100 - (3 + battle_get_vit(src) + luk / 3); sc_def_int2 = 100 - (3 + battle_get_int(src) + luk / 3); sc_def_luk2 = 100 - (3 + luk); - if (bl->type == BL_PC) - dstsd = (struct map_session_data *) bl; - else if (bl->type == BL_MOB) + if (bl->type == BL_MOB) { if (sc_def_mdef > 50) sc_def_mdef = 50; @@ -822,15 +770,6 @@ int skill_additional_effect(struct block_list *src, struct block_list *bl, switch (skillid) { - /* MOBの追加効果付きスキル */ - - case NPC_PETRIFYATTACK: - if (MRAND(100) < sc_def_mdef) - skill_status_change_start(bl, SC_STONE, - skilllv, 0, 0, 0, - skill_get_time2(skillid, skilllv), - 0); - break; case NPC_POISON: if (MRAND(100) < 50 - (sc_def_vit >> 2) - (sc_def_phys_shield_spell) + @@ -838,50 +777,6 @@ int skill_additional_effect(struct block_list *src, struct block_list *bl, skill_status_change_start(bl, SC_POISON, skilllv, 0, 0, 0, skilllv, 0); break; - case NPC_SILENCEATTACK: - if (MRAND(100) < - 50 - (sc_def_vit >> 2) - (sc_def_phys_shield_spell) + - (skilllv >> 2)) - skill_status_change_start(bl, SC_SILENCE, - skilllv, 0, 0, 0, skilllv, 0); - break; - case NPC_STUNATTACK: - if (MRAND(100) < - 50 - (sc_def_vit >> 2) - (sc_def_phys_shield_spell) + - (skilllv >> 2)) - skill_status_change_start(bl, SC_STAN, - skilllv, 0, 0, 0, skilllv, 0); - break; - case NPC_CURSEATTACK: - if (MRAND(100) < sc_def_luk) - skill_status_change_start(bl, SC_CURSE, - skilllv, 0, 0, 0, - skill_get_time2(skillid, skilllv), - 0); - break; - case NPC_SLEEPATTACK: - if (MRAND(100) < sc_def_int) - skill_status_change_start(bl, SC_SLEEP, - skilllv, 0, 0, 0, - skill_get_time2(skillid, skilllv), - 0); - break; - case NPC_BLINDATTACK: - if (MRAND(100) < sc_def_int) - skill_status_change_start(bl, SC_BLIND, - skilllv, 0, 0, 0, - skill_get_time2(skillid, skilllv), - 0); - break; - case NPC_MENTALBREAKER: - if (dstsd) - { - int sp = dstsd->status.max_sp * (10 + skilllv) / 100; - if (sp < 1) - sp = 1; - pc_heal(dstsd, 0, -sp); - } - break; } if (not (sd && bool(attack_type & BF_WEAPON))) @@ -1248,7 +1143,6 @@ int skill_attack(BF attack_type, struct block_list *src, switch (skillid) { case NPC_SELFDESTRUCTION: - case NPC_SELFDESTRUCTION2: break; default: clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, @@ -1493,7 +1387,7 @@ int skill_cleartimerskill(struct block_list *src) // these variables are set in the 'else' branches, // and used in the (recursive) 'if' branch -static int skill_area_temp_id, skill_area_temp_x, skill_area_temp_y, skill_area_temp_hp; +static int skill_area_temp_id, skill_area_temp_hp; /*========================================== @@ -1522,87 +1416,12 @@ int skill_castend_damage_id(struct block_list *src, struct block_list *bl, map_freeblock_lock(); switch (skillid) { - /* 以下MOB専用 */ - /* 単体攻撃、SP減少攻撃、遠距離攻撃、防御無視攻撃、多段攻撃 */ - case NPC_PIERCINGATT: - case NPC_MENTALBREAKER: - case NPC_RANGEATTACK: - case NPC_CRITICALSLASH: - case NPC_COMBOATTACK: - /* 必中攻撃、毒攻撃、暗黒攻撃、沈黙攻撃、スタン攻撃 */ - case NPC_GUIDEDATTACK: case NPC_POISON: - case NPC_BLINDATTACK: - case NPC_SILENCEATTACK: - case NPC_STUNATTACK: - /* 石化攻撃、呪い攻撃、睡眠攻撃、ランダムATK攻撃 */ - case NPC_PETRIFYATTACK: - case NPC_CURSEATTACK: - case NPC_SLEEPATTACK: - case NPC_RANDOMATTACK: - /* 水属性攻撃、地属性攻撃、火属性攻撃、風属性攻撃 */ - case NPC_WATERATTACK: - case NPC_GROUNDATTACK: - case NPC_FIREATTACK: - case NPC_WINDATTACK: - /* 毒属性攻撃、聖属性攻撃、闇属性攻撃、念属性攻撃、SP減少攻撃 */ - case NPC_POISONATTACK: - case NPC_HOLYATTACK: - case NPC_DARKNESSATTACK: - case NPC_TELEKINESISATTACK: skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, flag); break; - case NPC_DARKBREATH: - clif_emotion(src, 7); - skill_attack(BF_MISC, src, src, bl, skillid, skilllv, tick, - flag); - break; - case NPC_SPLASHATTACK: /* スプラッシュアタック */ - { - if (flag & BCT_lo_x01) - { - /* 個別にダメージを与える */ - if (bl->id != skill_area_temp_id) - { - BCT dist = BCT_ZERO; - skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, - tick, BCT_mid_x05 | dist); - } - } - else - { - int ar = 1; - int x = bl->x, y = bl->y; - if (skillid == NPC_SPLASHATTACK) /* スプラッシュアタックは範囲7*7 */ - ar = 3; - skill_area_temp_id = bl->id; - skill_area_temp_x = x; - skill_area_temp_y = y; - /* まずターゲットに攻撃を加える */ - skill_attack(BF_WEAPON, src, src, bl, skillid, skilllv, tick, - BCT_ZERO); - /* その後ターゲット以外の範囲内の敵全体に処理を行う */ - // the BCT_lo_x01 is the important thing - map_foreachinarea(std::bind(skill_area_sub, ph::_1, src, skillid, skilllv, tick, flag | BCT_ENEMY | BCT_lo_x01, skill_castend_damage_id), - bl->m, x - ar, y - ar, - x + ar, y + ar, BL_NUL); - } - } - break; - - case AL_HEAL: /* ヒール */ - case NPC_MAGICALATTACK: /* MOB:魔法打撃攻撃 */ - skill_attack(BF_MAGIC, src, src, bl, skillid, skilllv, tick, - flag); - break; - - case NPC_SMOKING: /* スモーキング */ - skill_attack(BF_MISC, src, src, bl, skillid, skilllv, tick, BCT_ZERO); - break; case NPC_SELFDESTRUCTION: /* 自爆 */ - case NPC_SELFDESTRUCTION2: /* 自爆2 */ if (flag & 1) { /* 個別にダメージを与える */ @@ -1634,18 +1453,6 @@ int skill_castend_damage_id(struct block_list *src, struct block_list *bl, break; /* HP吸収/HP吸収魔法 */ - case NPC_BLOODDRAIN: - case NPC_ENERGYDRAIN: - { - int heal; - heal = - skill_attack((skillid == - NPC_BLOODDRAIN) ? BF_WEAPON : BF_MAGIC, src, - src, bl, skillid, skilllv, tick, flag); - if (heal > 0) - battle_heal(NULL, src, heal, 0, 0); - } - break; case SkillID::ZERO: if (sd) { @@ -1731,148 +1538,28 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, map_freeblock_lock(); switch (skillid) { - case AL_HEAL: /* ヒール */ - { - int heal = skill_calc_heal(src, skilllv); - int heal_get_jobexp; - - if (dstsd && dstsd->special_state.no_magic_damage) - heal = 0; /* 黄金蟲カード(ヒール量0) */ - - heal_get_jobexp = battle_heal(NULL, bl, heal, 0, 0); - - // JOB経験値獲得 - if (src->type == BL_PC && bl->type == BL_PC && heal > 0 - && src != bl && battle_config.heal_exp > 0) - { - heal_get_jobexp = - heal_get_jobexp * battle_config.heal_exp / 100; - if (heal_get_jobexp <= 0) - heal_get_jobexp = 1; - pc_gainexp((struct map_session_data *) src, 0, - heal_get_jobexp); - } - } - break; - - case AL_TELEPORT: /* テレポート */ - if (bl->type == BL_MOB) - mob_warp((struct mob_data *) bl, -1, -1, -1, 3); - break; - - /* ランダム属性変化、水属性変化、地、火、風 */ - case NPC_ATTRICHANGE: - case NPC_CHANGEWATER: - case NPC_CHANGEGROUND: - case NPC_CHANGEFIRE: - case NPC_CHANGEWIND: - /* 毒、聖、念、闇 */ - case NPC_CHANGEPOISON: - case NPC_CHANGEHOLY: - case NPC_CHANGEDARKNESS: - case NPC_CHANGETELEKINESIS: - if (md) - { - md->def_ele = skill_get_pl(skillid); - if (md->def_ele == 0) /* ランダム変化、ただし、 */ - md->def_ele = MRAND(10); /* 不死属性は除く */ - md->def_ele += (1 + MRAND(4)) * 20; /* 属性レベルはランダム */ - } - break; - - case NPC_HALLUCINATION: - if (bl->type == BL_PC - && ((struct map_session_data *) bl)-> - special_state.no_magic_damage) - break; - skill_status_change_start(bl, SkillStatusChangeTable[skillid], - skilllv, 0, 0, 0, - skill_get_time(skillid, skilllv), 0); - break; - - case NPC_KEEPING: - case NPC_BARRIER: - { - int skill_time = skill_get_time(skillid, skilllv); - skill_status_change_start(bl, SkillStatusChangeTable[skillid], - skilllv, 0, 0, 0, skill_time, 0); - mob_changestate((struct mob_data *) src, MS_DELAY, skill_time); - } - break; - - case NPC_DARKBLESSING: - { - int sc_def = 100 - battle_get_mdef(bl); - if (bl->type == BL_PC - && ((struct map_session_data *) bl)-> - special_state.no_magic_damage) - break; - if (battle_get_elem_type(bl) == 7 || battle_get_race(bl) == 6) - break; - if (MRAND(100) < sc_def * (50 + skilllv * 5) / 100) - { - if (dstsd) - { - int hp = battle_get_hp(bl) - 1; - pc_heal(dstsd, -hp, 0); - } - else if (dstmd) - dstmd->hp = 1; - } - } - break; - case NPC_SELFDESTRUCTION: /* 自爆 */ - case NPC_SELFDESTRUCTION2: /* 自爆2 */ skill_status_change_start(bl, SkillStatusChangeTable[skillid], skilllv, uint16_t(skillid), 0, 0, skill_get_time(skillid, skilllv), 0); break; - case NPC_LICK: - if (bl->type == BL_PC - && ((struct map_session_data *) bl)-> - special_state.no_weapon_damage) - break; - if (dstsd) - pc_heal(dstsd, 0, -100); - if (MRAND(100) < (skilllv * 5) * sc_def_vit / 100) - skill_status_change_start(bl, SC_STAN, skilllv, 0, 0, 0, - skill_get_time2(skillid, skilllv), - 0); - break; - - case NPC_SUICIDE: /* 自決 */ - if (src && bl && md) - mob_damage(NULL, md, md->hp, 0); - break; case NPC_SUMMONSLAVE: /* 手下召喚 */ - case NPC_SUMMONMONSTER: /* MOB召喚 */ if (md && !md->master_id) { mob_summonslave(md, mob_db[md->mob_class].skill[md->skillidx].val, skilllv, - (skillid == NPC_SUMMONSLAVE) ? 1 : 0); + (true) ? 1 : 0); } break; - case NPC_TRANSFORMATION: - case NPC_METAMORPHOSIS: - if (md) - mob_class_change(md, - mob_db[md->mob_class].skill[md->skillidx].val); - break; - case NPC_EMOTION: /* エモーション */ if (md) clif_emotion(&md->bl, mob_db[md->mob_class].skill[md->skillidx].val[0]); break; - case NPC_DEFENDER: - break; - default: PRINTF("Unknown skill used:%d\n", skillid); map_freeblock_unlock(); @@ -1994,18 +1681,14 @@ void skill_castend_id(timer_id tid, tick_t tick, custom_id_t id, custom_data_t) /* 攻撃系/吹き飛ばし系 */ case 0: case 2: - skill_castend_damage_id(&sd->bl, bl, sd->skillid, sd->skilllv, - tick, BCT_ZERO); + skill_castend_damage_id(&sd->bl, bl, + sd->skillid, sd->skilllv, + tick, BCT_ZERO); break; case 1: /* 支援系 */ - if (sd->skillid == AL_HEAL - && battle_check_undead(battle_get_race(bl), - battle_get_elem_type(bl))) - skill_castend_damage_id(&sd->bl, bl, sd->skillid, - sd->skilllv, tick, BCT_ZERO); - else - skill_castend_nodamage_id(&sd->bl, bl, sd->skillid, - sd->skilllv, tick, BCT_ZERO); + skill_castend_nodamage_id(&sd->bl, bl, + sd->skillid, sd->skilllv, + tick, BCT_ZERO); break; } } @@ -2045,19 +1728,6 @@ int skill_castend_map(struct map_session_data *sd, SkillID skill_num, if (strcmp(mapname, "cancel") == 0) return 0; - switch (skill_num) - { - case AL_TELEPORT: /* テレポート */ - if (strcmp(mapname, "Random") == 0) - pc_randomwarp(sd, 3); - else - pc_setpos(sd, sd->status.save_point.map, - sd->status.save_point.x, sd->status.save_point.y, - 3); - break; - - } - return 0; } @@ -3003,14 +2673,6 @@ int skill_check_condition(struct map_session_data *sd, int type) if (sd->dsprate != 100) sp = sp * sd->dsprate / 100; /* 消費SP修正 */ - switch (skill) - { - case AL_TELEPORT: - if (map[sd->bl.m].flag.noteleport) - return 0; - break; - } - if (!(type & 2)) { if (hp > 0 && sd->status.hp < hp) diff --git a/src/map/skill.hpp b/src/map/skill.hpp index 7c870a3..69fccf0 100644 --- a/src/map/skill.hpp +++ b/src/map/skill.hpp @@ -142,8 +142,6 @@ int skill_update_heal_animation(struct map_session_data *sd); // [Fate] Check w void skill_reload(void); -extern earray<StatusChange, SkillID, MAX_SKILL_DB> SkillStatusChangeTable; - // [Fate] Skill pools API // Max. # of active entries in the skill pool diff --git a/src/map/skill.t.hpp b/src/map/skill.t.hpp index 36090d5..9040a27 100644 --- a/src/map/skill.t.hpp +++ b/src/map/skill.t.hpp @@ -403,130 +403,19 @@ enum class SkillID : uint16_t NV_PARTY = 3, // #define NV_PARTY SkillID::NV_PARTY - AL_TELEPORT = 28, // -#define AL_TELEPORT SkillID::AL_TELEPORT - AL_HEAL = 30, // -#define AL_HEAL SkillID::AL_HEAL - AC_OWL = 45, // Mallard's Eye #define AC_OWL SkillID::AC_OWL - NV_FIRSTAID = 144, // -#define NV_FIRSTAID SkillID::NV_FIRSTAID - NV_TRICKDEAD = 145, -#define NV_TRICKDEAD SkillID::NV_TRICKDEAD - - NPC_PIERCINGATT = 160, -#define NPC_PIERCINGATT SkillID::NPC_PIERCINGATT - NPC_MENTALBREAKER = 161, -#define NPC_MENTALBREAKER SkillID::NPC_MENTALBREAKER - NPC_RANGEATTACK = 162, -#define NPC_RANGEATTACK SkillID::NPC_RANGEATTACK - NPC_ATTRICHANGE = 163, -#define NPC_ATTRICHANGE SkillID::NPC_ATTRICHANGE - NPC_CHANGEWATER = 164, -#define NPC_CHANGEWATER SkillID::NPC_CHANGEWATER - NPC_CHANGEGROUND = 165, -#define NPC_CHANGEGROUND SkillID::NPC_CHANGEGROUND - NPC_CHANGEFIRE = 166, -#define NPC_CHANGEFIRE SkillID::NPC_CHANGEFIRE - NPC_CHANGEWIND = 167, -#define NPC_CHANGEWIND SkillID::NPC_CHANGEWIND - NPC_CHANGEPOISON = 168, -#define NPC_CHANGEPOISON SkillID::NPC_CHANGEPOISON - NPC_CHANGEHOLY = 169, -#define NPC_CHANGEHOLY SkillID::NPC_CHANGEHOLY - NPC_CHANGEDARKNESS = 170, -#define NPC_CHANGEDARKNESS SkillID::NPC_CHANGEDARKNESS - NPC_CHANGETELEKINESIS = 171, -#define NPC_CHANGETELEKINESIS SkillID::NPC_CHANGETELEKINESIS - NPC_CRITICALSLASH = 172, -#define NPC_CRITICALSLASH SkillID::NPC_CRITICALSLASH - NPC_COMBOATTACK = 173, -#define NPC_COMBOATTACK SkillID::NPC_COMBOATTACK - NPC_GUIDEDATTACK = 174, -#define NPC_GUIDEDATTACK SkillID::NPC_GUIDEDATTACK NPC_SELFDESTRUCTION = 175, // #define NPC_SELFDESTRUCTION SkillID::NPC_SELFDESTRUCTION - NPC_SPLASHATTACK = 176, -#define NPC_SPLASHATTACK SkillID::NPC_SPLASHATTACK - NPC_SUICIDE = 177, -#define NPC_SUICIDE SkillID::NPC_SUICIDE + NPC_POISON = 178, // #define NPC_POISON SkillID::NPC_POISON - NPC_BLINDATTACK = 179, -#define NPC_BLINDATTACK SkillID::NPC_BLINDATTACK - NPC_SILENCEATTACK = 180, -#define NPC_SILENCEATTACK SkillID::NPC_SILENCEATTACK - NPC_STUNATTACK = 181, -#define NPC_STUNATTACK SkillID::NPC_STUNATTACK - NPC_PETRIFYATTACK = 182, -#define NPC_PETRIFYATTACK SkillID::NPC_PETRIFYATTACK - NPC_CURSEATTACK = 183, -#define NPC_CURSEATTACK SkillID::NPC_CURSEATTACK - NPC_SLEEPATTACK = 184, -#define NPC_SLEEPATTACK SkillID::NPC_SLEEPATTACK - NPC_RANDOMATTACK = 185, -#define NPC_RANDOMATTACK SkillID::NPC_RANDOMATTACK - NPC_WATERATTACK = 186, -#define NPC_WATERATTACK SkillID::NPC_WATERATTACK - NPC_GROUNDATTACK = 187, -#define NPC_GROUNDATTACK SkillID::NPC_GROUNDATTACK - NPC_FIREATTACK = 188, -#define NPC_FIREATTACK SkillID::NPC_FIREATTACK - NPC_WINDATTACK = 189, // ? -#define NPC_WINDATTACK SkillID::NPC_WINDATTACK - - NPC_POISONATTACK = 190, // -#define NPC_POISONATTACK SkillID::NPC_POISONATTACK - NPC_HOLYATTACK = 191, -#define NPC_HOLYATTACK SkillID::NPC_HOLYATTACK - NPC_DARKNESSATTACK = 192, -#define NPC_DARKNESSATTACK SkillID::NPC_DARKNESSATTACK - NPC_TELEKINESISATTACK = 193, -#define NPC_TELEKINESISATTACK SkillID::NPC_TELEKINESISATTACK - NPC_MAGICALATTACK = 194, -#define NPC_MAGICALATTACK SkillID::NPC_MAGICALATTACK - NPC_METAMORPHOSIS = 195, -#define NPC_METAMORPHOSIS SkillID::NPC_METAMORPHOSIS - NPC_PROVOCATION = 196, -#define NPC_PROVOCATION SkillID::NPC_PROVOCATION - NPC_SMOKING = 197, -#define NPC_SMOKING SkillID::NPC_SMOKING + NPC_SUMMONSLAVE = 198, // #define NPC_SUMMONSLAVE SkillID::NPC_SUMMONSLAVE NPC_EMOTION = 199, // #define NPC_EMOTION SkillID::NPC_EMOTION - NPC_TRANSFORMATION = 200, -#define NPC_TRANSFORMATION SkillID::NPC_TRANSFORMATION - NPC_BLOODDRAIN = 201, -#define NPC_BLOODDRAIN SkillID::NPC_BLOODDRAIN - NPC_ENERGYDRAIN = 202, -#define NPC_ENERGYDRAIN SkillID::NPC_ENERGYDRAIN - NPC_KEEPING = 203, -#define NPC_KEEPING SkillID::NPC_KEEPING - NPC_DARKBREATH = 204, -#define NPC_DARKBREATH SkillID::NPC_DARKBREATH - NPC_DARKBLESSING = 205, -#define NPC_DARKBLESSING SkillID::NPC_DARKBLESSING - NPC_BARRIER = 206, -#define NPC_BARRIER SkillID::NPC_BARRIER - NPC_DEFENDER = 207, -#define NPC_DEFENDER SkillID::NPC_DEFENDER - NPC_LICK = 208, -#define NPC_LICK SkillID::NPC_LICK - NPC_HALLUCINATION = 209, -#define NPC_HALLUCINATION SkillID::NPC_HALLUCINATION - NPC_REBIRTH = 210, -#define NPC_REBIRTH SkillID::NPC_REBIRTH - NPC_SUMMONMONSTER = 211, -#define NPC_SUMMONMONSTER SkillID::NPC_SUMMONMONSTER - - NPC_SELFDESTRUCTION2 = 333, -#define NPC_SELFDESTRUCTION2 SkillID::NPC_SELFDESTRUCTION2 - - NPC_DARKCROSS = 338, -#define NPC_DARKCROSS SkillID::NPC_DARKCROSS TMW_SKILLPOOL = 339, // skill pool size #define TMW_SKILLPOOL SkillID::TMW_SKILLPOOL |