From edd67db458188a76934b963e6a40f7b681f86b3d Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 12 Oct 2013 18:41:40 -0700 Subject: Disallow unchecked being casts Despite the fact that that's what the code always did, it was sometimes wrong. --- src/map/atcommand.cpp | 8 +- src/map/battle.cpp | 214 ++++++++++++++++++------------------- src/map/chrif.cpp | 6 +- src/map/clif.cpp | 50 ++++----- src/map/magic-expr-eval.hpp | 6 +- src/map/magic-expr.cpp | 20 ++-- src/map/magic-interpreter-base.cpp | 2 +- src/map/magic-stmt.cpp | 68 ++++++------ src/map/map.cpp | 12 +-- src/map/map.hpp | 39 ++----- src/map/mob.cpp | 60 +++++------ src/map/npc.cpp | 48 ++++----- src/map/party.cpp | 2 +- src/map/pc.cpp | 12 +-- src/map/script.cpp | 38 +++---- src/map/skill-pools.cpp | 2 +- src/map/skill.cpp | 52 ++++----- 17 files changed, 306 insertions(+), 333 deletions(-) diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index e4d1745..508209c 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -553,7 +553,7 @@ void atkillmonster_sub(dumb_ptr bl, int flag) { nullpo_retv(bl); - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (flag) mob_damage(NULL, md, md->hp, 2); else @@ -2184,7 +2184,7 @@ void atlist_nearby_sub(dumb_ptr bl, int fd) nullpo_retv(bl); FString buf = STRPRINTF(" - \"%s\"", - bl->as_player()->status.name); + bl->is_player()->status.name); clif_displaymessage(fd, buf); } @@ -5456,7 +5456,7 @@ int atcommand_summon(const int, dumb_ptr sd, y = sd->bl_y + random_::in(-5, 4); id = mob_once_spawn(sd, MOB_THIS_MAP, x, y, JAPANESE_NAME, mob_id, 1, NpcEvent()); - dumb_ptr md = map_id_as_mob(id); + dumb_ptr md = map_id_is_mob(id); if (md) { md->master_id = sd->bl_id; @@ -5725,7 +5725,7 @@ int atcommand_jump_iterate(const int fd, dumb_ptr sd, { dumb_ptr pl_sd; - pl_sd = map_id_as_player(sd->followtarget); + pl_sd = map_id_is_player(sd->followtarget); if (pl_sd) pl_sd = get_next(pl_sd); diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 7bdac86..c95ad61 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -35,10 +35,10 @@ int battle_counttargeted(dumb_ptr bl, dumb_ptr src, { nullpo_ret(bl); if (bl->bl_type == BL::PC) - return pc_counttargeted(bl->as_player(), src, + return pc_counttargeted(bl->is_player(), src, target_lv); else if (bl->bl_type == BL::MOB) - return mob_counttargeted(bl->as_mob(), src, target_lv); + return mob_counttargeted(bl->is_mob(), src, target_lv); return 0; } @@ -51,7 +51,7 @@ int battle_get_class(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return bl->as_mob()->mob_class; + return bl->is_mob()->mob_class; else if (bl->bl_type == BL::PC) return 0; else @@ -67,9 +67,9 @@ DIR battle_get_dir(dumb_ptr bl) { nullpo_retr(DIR::S, bl); if (bl->bl_type == BL::MOB) - return bl->as_mob()->dir; + return bl->is_mob()->dir; else if (bl->bl_type == BL::PC) - return bl->as_player()->dir; + return bl->is_player()->dir; else return DIR::S; } @@ -83,9 +83,9 @@ int battle_get_lv(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return bl->as_mob()->stats[mob_stat::LV]; + return bl->is_mob()->stats[mob_stat::LV]; else if (bl->bl_type == BL::PC) - return bl->as_player()->status.base_level; + return bl->is_player()->status.base_level; else return 0; } @@ -99,9 +99,9 @@ int battle_get_range(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return mob_db[bl->as_mob()->mob_class].range; + return mob_db[bl->is_mob()->mob_class].range; else if (bl->bl_type == BL::PC) - return bl->as_player()->attackrange; + return bl->is_player()->attackrange; else return 0; } @@ -115,9 +115,9 @@ int battle_get_hp(dumb_ptr bl) { nullpo_retr(1, bl); if (bl->bl_type == BL::MOB) - return bl->as_mob()->hp; + return bl->is_mob()->hp; else if (bl->bl_type == BL::PC) - return bl->as_player()->status.hp; + return bl->is_player()->status.hp; else return 1; } @@ -131,13 +131,13 @@ int battle_get_max_hp(dumb_ptr bl) { nullpo_retr(1, bl); if (bl->bl_type == BL::PC) - return bl->as_player()->status.max_hp; + return bl->is_player()->status.max_hp; else { int max_hp = 1; if (bl->bl_type == BL::MOB) { - max_hp = bl->as_mob()->stats[mob_stat::MAX_HP]; + max_hp = bl->is_mob()->stats[mob_stat::MAX_HP]; { if (battle_config.monster_hp_rate != 100) max_hp = (max_hp * battle_config.monster_hp_rate) / 100; @@ -162,9 +162,9 @@ int battle_get_str(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::MOB) - str = bl->as_mob()->stats[mob_stat::STR]; + str = bl->is_mob()->stats[mob_stat::STR]; else if (bl->bl_type == BL::PC) - return bl->as_player()->paramc[ATTR::STR]; + return bl->is_player()->paramc[ATTR::STR]; if (str < 0) str = 0; @@ -185,9 +185,9 @@ int battle_get_agi(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::MOB) - agi = bl->as_mob()->stats[mob_stat::AGI]; + agi = bl->is_mob()->stats[mob_stat::AGI]; else if (bl->bl_type == BL::PC) - agi = bl->as_player()->paramc[ATTR::AGI]; + agi = bl->is_player()->paramc[ATTR::AGI]; if (agi < 0) agi = 0; @@ -207,9 +207,9 @@ int battle_get_vit(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::MOB) - vit = bl->as_mob()->stats[mob_stat::VIT]; + vit = bl->is_mob()->stats[mob_stat::VIT]; else if (bl->bl_type == BL::PC) - vit = bl->as_player()->paramc[ATTR::VIT]; + vit = bl->is_player()->paramc[ATTR::VIT]; if (vit < 0) vit = 0; @@ -229,9 +229,9 @@ int battle_get_int(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::MOB) - int_ = bl->as_mob()->stats[mob_stat::INT]; + int_ = bl->is_mob()->stats[mob_stat::INT]; else if (bl->bl_type == BL::PC) - int_ = bl->as_player()->paramc[ATTR::INT]; + int_ = bl->is_player()->paramc[ATTR::INT]; if (int_ < 0) int_ = 0; @@ -251,9 +251,9 @@ int battle_get_dex(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::MOB) - dex = bl->as_mob()->stats[mob_stat::DEX]; + dex = bl->is_mob()->stats[mob_stat::DEX]; else if (bl->bl_type == BL::PC) - dex = bl->as_player()->paramc[ATTR::DEX]; + dex = bl->is_player()->paramc[ATTR::DEX]; if (dex < 0) dex = 0; @@ -273,9 +273,9 @@ int battle_get_luk(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::MOB) - luk = bl->as_mob()->stats[mob_stat::LUK]; + luk = bl->is_mob()->stats[mob_stat::LUK]; else if (bl->bl_type == BL::PC) - luk = bl->as_player()->paramc[ATTR::LUK]; + luk = bl->is_player()->paramc[ATTR::LUK]; if (luk < 0) luk = 0; @@ -296,7 +296,7 @@ int battle_get_flee(dumb_ptr bl) nullpo_retr(1, bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) - flee = bl->as_player()->flee; + flee = bl->is_player()->flee; else flee = battle_get_agi(bl) + battle_get_lv(bl); @@ -325,7 +325,7 @@ int battle_get_hit(dumb_ptr bl) nullpo_retr(1, bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) - hit = bl->as_player()->hit; + hit = bl->is_player()->hit; else hit = battle_get_dex(bl) + battle_get_lv(bl); @@ -354,7 +354,7 @@ int battle_get_flee2(dumb_ptr bl) sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); flee2 = battle_get_luk(bl) + 10; flee2 += sd->flee2 - (sd->paramc[ATTR::LUK] + 10); } @@ -386,7 +386,7 @@ int battle_get_critical(dumb_ptr bl) sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); critical = battle_get_luk(bl) * 2 + 10; critical += sd->critical - ((sd->paramc[ATTR::LUK] * 3) + 10); } @@ -412,7 +412,7 @@ int battle_get_baseatk(dumb_ptr bl) nullpo_retr(1, bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) - batk = bl->as_player()->base_atk; //設定されているbase_atk + batk = bl->is_player()->base_atk; //設定されているbase_atk else { //それ以外なら int str, dstr; @@ -439,9 +439,9 @@ int battle_get_atk(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) - atk = bl->as_player()->watk; + atk = bl->is_player()->watk; else if (bl->bl_type == BL::MOB) - atk = bl->as_mob()->stats[mob_stat::ATK1]; + atk = bl->is_mob()->stats[mob_stat::ATK1]; if (atk < 0) atk = 0; @@ -458,7 +458,7 @@ int battle_get_atk_(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::PC) - return bl->as_player()->watk_; + return bl->is_player()->watk_; else return 0; } @@ -473,12 +473,12 @@ int battle_get_atk2(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::PC) - return bl->as_player()->watk2; + return bl->is_player()->watk2; else { int atk2 = 0; if (bl->bl_type == BL::MOB) - atk2 = bl->as_mob()->stats[mob_stat::ATK2]; + atk2 = bl->is_mob()->stats[mob_stat::ATK2]; if (atk2 < 0) atk2 = 0; @@ -496,7 +496,7 @@ int battle_get_atk_2(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::PC) - return bl->as_player()->watk_2; + return bl->is_player()->watk_2; else return 0; } @@ -520,7 +520,7 @@ int battle_get_matk1(dumb_ptr bl) return matk; } else if (bl->bl_type == BL::PC) - return bl->as_player()->matk1; + return bl->is_player()->matk1; else return 0; } @@ -542,7 +542,7 @@ int battle_get_matk2(dumb_ptr bl) return matk; } else if (bl->bl_type == BL::PC) - return bl->as_player()->matk2; + return bl->is_player()->matk2; else return 0; } @@ -561,11 +561,11 @@ int battle_get_def(dumb_ptr bl) sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) { - def = bl->as_player()->def; + def = bl->is_player()->def; } else if (bl->bl_type == BL::MOB) { - def = bl->as_mob()->stats[mob_stat::DEF]; + def = bl->is_mob()->stats[mob_stat::DEF]; } if (def < 1000000) @@ -596,9 +596,9 @@ int battle_get_mdef(dumb_ptr bl) nullpo_ret(bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) - mdef = bl->as_player()->mdef; + mdef = bl->is_player()->mdef; else if (bl->bl_type == BL::MOB) - mdef = bl->as_mob()->stats[mob_stat::MDEF]; + mdef = bl->is_mob()->stats[mob_stat::MDEF]; if (mdef < 1000000) { @@ -631,9 +631,9 @@ int battle_get_def2(dumb_ptr bl) nullpo_retr(1, bl); sc_data = battle_get_sc_data(bl); if (bl->bl_type == BL::PC) - def2 = bl->as_player()->def2; + def2 = bl->is_player()->def2; else if (bl->bl_type == BL::MOB) - def2 = bl->as_mob()->stats[mob_stat::VIT]; + def2 = bl->is_mob()->stats[mob_stat::VIT]; if (sc_data) { @@ -658,12 +658,12 @@ int battle_get_mdef2(dumb_ptr bl) nullpo_ret(bl); if (bl->bl_type == BL::MOB) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); mdef2 = md->stats[mob_stat::INT] + (md->stats[mob_stat::VIT] >> 1); } else if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); mdef2 = sd->mdef2 + (sd->paramc[ATTR::VIT] >> 1); } @@ -682,12 +682,12 @@ interval_t battle_get_speed(dumb_ptr bl) { nullpo_retr(std::chrono::seconds(1), bl); if (bl->bl_type == BL::PC) - return bl->as_player()->speed; + return bl->is_player()->speed; else { interval_t speed = std::chrono::seconds(1); if (bl->bl_type == BL::MOB) - speed = static_cast(bl->as_mob()->stats[mob_stat::SPEED]); + speed = static_cast(bl->is_mob()->stats[mob_stat::SPEED]); return std::max(speed, std::chrono::milliseconds(1)); } @@ -703,14 +703,14 @@ interval_t battle_get_adelay(dumb_ptr bl) { nullpo_retr(std::chrono::seconds(4), bl); if (bl->bl_type == BL::PC) - return bl->as_player()->aspd * 2; + return bl->is_player()->aspd * 2; else { eptr sc_data = battle_get_sc_data(bl); interval_t adelay = std::chrono::seconds(4); int aspd_rate = 100; if (bl->bl_type == BL::MOB) - adelay = static_cast(bl->as_mob()->stats[mob_stat::ADELAY]); + adelay = static_cast(bl->is_mob()->stats[mob_stat::ADELAY]); if (sc_data) { @@ -731,14 +731,14 @@ interval_t battle_get_amotion(dumb_ptr bl) { nullpo_retr(std::chrono::seconds(2), bl); if (bl->bl_type == BL::PC) - return bl->as_player()->amotion; + return bl->is_player()->amotion; else { eptr sc_data = battle_get_sc_data(bl); interval_t amotion = std::chrono::seconds(2); int aspd_rate = 100; if (bl->bl_type == BL::MOB) - amotion = static_cast(mob_db[bl->as_mob()->mob_class].amotion); + amotion = static_cast(mob_db[bl->is_mob()->mob_class].amotion); if (sc_data) { @@ -759,11 +759,11 @@ interval_t battle_get_dmotion(dumb_ptr bl) nullpo_retr(interval_t::zero(), bl); if (bl->bl_type == BL::MOB) { - return static_cast(mob_db[bl->as_mob()->mob_class].dmotion); + return static_cast(mob_db[bl->is_mob()->mob_class].dmotion); } else if (bl->bl_type == BL::PC) { - return bl->as_player()->dmotion; + return bl->is_player()->dmotion; } else return std::chrono::seconds(2); @@ -775,7 +775,7 @@ LevelElement battle_get_element(dumb_ptr bl) nullpo_retr(ret, bl); if (bl->bl_type == BL::MOB) // 10の位=Lv*2、1の位=属性 - ret = bl->as_mob()->def_ele; + ret = bl->is_mob()->def_ele; return ret; } @@ -784,10 +784,10 @@ int battle_get_party_id(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::PC) - return bl->as_player()->status.party_id; + return bl->is_player()->status.party_id; else if (bl->bl_type == BL::MOB) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (md->master_id > 0) return -md->master_id; return -md->bl_id; @@ -799,7 +799,7 @@ Race battle_get_race(dumb_ptr bl) { nullpo_retr(Race::formless, bl); if (bl->bl_type == BL::MOB) - return mob_db[bl->as_mob()->mob_class].race; + return mob_db[bl->is_mob()->mob_class].race; else if (bl->bl_type == BL::PC) return Race::demihuman; else @@ -810,7 +810,7 @@ MobMode battle_get_mode(dumb_ptr bl) { nullpo_retr(MobMode::CAN_MOVE, bl); if (bl->bl_type == BL::MOB) - return mob_db[bl->as_mob()->mob_class].mode; + return mob_db[bl->is_mob()->mob_class].mode; // とりあえず動くということで1 return MobMode::CAN_MOVE; } @@ -844,9 +844,9 @@ eptr battle_get_sc_data(dumb_ptr switch (bl->bl_type) { case BL::MOB: - return bl->as_mob()->sc_data; + return bl->is_mob()->sc_data; case BL::PC: - return bl->as_player()->sc_data; + return bl->is_player()->sc_data; } return nullptr; } @@ -855,9 +855,9 @@ short *battle_get_sc_count(dumb_ptr bl) { nullpo_retr(NULL, bl); if (bl->bl_type == BL::MOB) - return &bl->as_mob()->sc_count; + return &bl->is_mob()->sc_count; else if (bl->bl_type == BL::PC) - return &bl->as_player()->sc_count; + return &bl->is_player()->sc_count; return NULL; } @@ -865,11 +865,11 @@ Opt1 *battle_get_opt1(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return &bl->as_mob()->opt1; + return &bl->is_mob()->opt1; else if (bl->bl_type == BL::PC) - return &bl->as_player()->opt1; + return &bl->is_player()->opt1; else if (bl->bl_type == BL::NPC) - return &bl->as_npc()->opt1; + return &bl->is_npc()->opt1; return 0; } @@ -877,11 +877,11 @@ Opt2 *battle_get_opt2(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return &bl->as_mob()->opt2; + return &bl->is_mob()->opt2; else if (bl->bl_type == BL::PC) - return &bl->as_player()->opt2; + return &bl->is_player()->opt2; else if (bl->bl_type == BL::NPC) - return &bl->as_npc()->opt2; + return &bl->is_npc()->opt2; return 0; } @@ -889,11 +889,11 @@ Opt3 *battle_get_opt3(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return &bl->as_mob()->opt3; + return &bl->is_mob()->opt3; else if (bl->bl_type == BL::PC) - return &bl->as_player()->opt3; + return &bl->is_player()->opt3; else if (bl->bl_type == BL::NPC) - return &bl->as_npc()->opt3; + return &bl->is_npc()->opt3; return 0; } @@ -901,11 +901,11 @@ Option *battle_get_option(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return &bl->as_mob()->option; + return &bl->is_mob()->option; else if (bl->bl_type == BL::PC) - return &bl->as_player()->status.option; + return &bl->is_player()->status.option; else if (bl->bl_type == BL::NPC) - return &bl->as_npc()->option; + return &bl->is_npc()->option; return 0; } @@ -942,7 +942,7 @@ int battle_damage(dumb_ptr bl, dumb_ptr target, if (target->bl_type == BL::MOB) { // MOB - dumb_ptr md = target->as_mob(); + dumb_ptr md = target->is_mob(); if (md && md->skilltimer && md->state.skillcastcancel) // 詠唱妨害 skill_castcancel(target, 0); return mob_damage(bl, md, damage, 0); @@ -950,7 +950,7 @@ int battle_damage(dumb_ptr bl, dumb_ptr target, else if (target->bl_type == BL::PC) { // PC - dumb_ptr tsd = target->as_player(); + dumb_ptr tsd = target->is_player(); return pc_damage(bl, tsd, damage); @@ -964,7 +964,7 @@ int battle_heal(dumb_ptr bl, dumb_ptr target, int hp, nullpo_ret(target); //blはNULLで呼ばれることがあるので他でチェック if (target->bl_type == BL::PC - && pc_isdead(target->as_player())) + && pc_isdead(target->is_player())) return 0; if (hp == 0 && sp == 0) return 0; @@ -973,9 +973,9 @@ int battle_heal(dumb_ptr bl, dumb_ptr target, int hp, return battle_damage(bl, target, -hp, flag); if (target->bl_type == BL::MOB) - return mob_heal(target->as_mob(), hp); + return mob_heal(target->is_mob(), hp); else if (target->bl_type == BL::PC) - return pc_heal(target->as_player(), hp, sp); + return pc_heal(target->is_player(), hp, sp); return 0; } @@ -984,9 +984,9 @@ int battle_stopattack(dumb_ptr bl) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return mob_stopattack(bl->as_mob()); + return mob_stopattack(bl->is_mob()); else if (bl->bl_type == BL::PC) - return pc_stopattack(bl->as_player()); + return pc_stopattack(bl->is_player()); return 0; } @@ -995,9 +995,9 @@ int battle_stopwalking(dumb_ptr bl, int type) { nullpo_ret(bl); if (bl->bl_type == BL::MOB) - return mob_stop_walking(bl->as_mob(), type); + return mob_stop_walking(bl->is_mob(), type); else if (bl->bl_type == BL::PC) - return pc_stop_walking(bl->as_player(), type); + return pc_stop_walking(bl->is_player(), type); return 0; } @@ -1015,7 +1015,7 @@ int battle_calc_damage(dumb_ptr, dumb_ptr bl, nullpo_ret(bl); if (bl->bl_type == BL::MOB) - md = bl->as_mob(); + md = bl->is_mob(); if (battle_config.skill_min_damage || bool(flag & BF::MISC)) @@ -1042,7 +1042,7 @@ struct Damage battle_calc_mob_weapon_attack(dumb_ptr src, int skill_lv, int) { dumb_ptr tsd = NULL; - dumb_ptr md = src->as_mob(), tmd = NULL; + dumb_ptr md = src->is_mob(), tmd = NULL; int hitrate, flee, cri = 0, atkmin, atkmax; int target_count = 1; int def1 = battle_get_def(target); @@ -1065,9 +1065,9 @@ struct Damage battle_calc_mob_weapon_attack(dumb_ptr src, // ターゲット if (target->bl_type == BL::PC) - tsd = target->as_player(); + tsd = target->is_player(); else if (target->bl_type == BL::MOB) - tmd = target->as_mob(); + tmd = target->is_mob(); MobMode t_mode = battle_get_mode(target); t_sc_data = battle_get_sc_data(target); @@ -1295,7 +1295,7 @@ int battle_is_unarmed(dumb_ptr bl) return 0; if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); return (sd->equip_index[EQUIP::SHIELD] == -1 && sd->equip_index[EQUIP::WEAPON] == -1); @@ -1315,7 +1315,7 @@ struct Damage battle_calc_pc_weapon_attack(dumb_ptr src, SkillID skill_num, int skill_lv, int) { - dumb_ptr sd = src->as_player(), tsd = NULL; + dumb_ptr sd = src->is_player(), tsd = NULL; dumb_ptr tmd = NULL; int hitrate, flee, cri = 0, atkmin, atkmax; int dex, target_count = 1; @@ -1346,9 +1346,9 @@ struct Damage battle_calc_pc_weapon_attack(dumb_ptr src, // ターゲット if (target->bl_type == BL::PC) //対象がPCなら - tsd = target->as_player(); //tsdに代入(tmdはNULL) + tsd = target->is_player(); //tsdに代入(tmdはNULL) else if (target->bl_type == BL::MOB) //対象がMobなら - tmd = target->as_mob(); //tmdに代入(tsdはNULL) + tmd = target->is_mob(); //tmdに代入(tsdはNULL) MobMode t_mode = battle_get_mode(target); //対象のMode t_sc_data = battle_get_sc_data(target); //対象のステータス異常 @@ -1800,7 +1800,7 @@ struct Damage battle_calc_magic_attack(dumb_ptr bl, if (bl->bl_type == BL::PC) { - sd = bl->as_player(); + sd = bl->is_player(); sd->state.attack_type = BF::MAGIC; if (sd->matk_rate != 100) { @@ -1877,7 +1877,7 @@ struct Damage battle_calc_misc_attack(dumb_ptr bl, if (bl->bl_type == BL::PC) { - sd = bl->as_player(); + sd = bl->is_player(); sd->state.attack_type = BF::MISC; sd->state.arrow_atk = 0; } @@ -1967,14 +1967,14 @@ ATK battle_weapon_attack(dumb_ptr src, dumb_ptr target, nullpo_retr(ATK::ZERO, target); if (src->bl_type == BL::PC) - sd = src->as_player(); + sd = src->is_player(); if (src->bl_prev == NULL || target->bl_prev == NULL) return ATK::ZERO; if (src->bl_type == BL::PC && pc_isdead(sd)) return ATK::ZERO; if (target->bl_type == BL::PC - && pc_isdead(target->as_player())) + && pc_isdead(target->is_player())) return ATK::ZERO; Opt1 *opt1 = battle_get_opt1(src); @@ -2018,7 +2018,7 @@ ATK battle_weapon_attack(dumb_ptr src, dumb_ptr target, reduction = wd.damage; wd.damage -= reduction; - MAP_LOG_PC(target->as_player(), + MAP_LOG_PC(target->is_player(), "MAGIC-ABSORB-DMG %d", reduction); } @@ -2047,7 +2047,7 @@ ATK battle_weapon_attack(dumb_ptr src, dumb_ptr target, sd->status.char_id, src->bl_m->name_, src->bl_x, src->bl_y, (target->bl_type == BL::PC) ? "PC" : "MOB", (target->bl_type == BL::PC) - ? target->as_player()-> status.char_id + ? target->is_player()-> status.char_id : target->bl_id, battle_get_class(target), wd.damage + wd.damage2, weapon); @@ -2055,12 +2055,12 @@ ATK battle_weapon_attack(dumb_ptr src, dumb_ptr target, if (target->bl_type == BL::PC) { - dumb_ptr sd2 = target->as_player(); + dumb_ptr sd2 = target->is_player(); MAP_LOG("PC%d %s:%d,%d WPNINJURY %s%d %d FOR %d", sd2->status.char_id, target->bl_m->name_, target->bl_x, target->bl_y, (src->bl_type == BL::PC) ? "PC" : "MOB", (src->bl_type == BL::PC) - ? src->as_player()->status.char_id + ? src->is_player()->status.char_id : src->bl_id, battle_get_class(src), wd.damage + wd.damage2); @@ -2070,7 +2070,7 @@ ATK battle_weapon_attack(dumb_ptr src, dumb_ptr target, if (target->bl_prev != NULL && (target->bl_type != BL::PC || (target->bl_type == BL::PC - && !pc_isdead(target->as_player())))) + && !pc_isdead(target->is_player())))) { if (wd.damage > 0 || wd.damage2 > 0) { @@ -2163,13 +2163,13 @@ int battle_check_target(dumb_ptr src, dumb_ptr target, } if (target->bl_type == BL::PC - && target->as_player()->invincible_timer) + && target->is_player()->invincible_timer) return -1; // Mobでmaster_idがあってspecial_mob_aiなら、召喚主を求める if (src->bl_type == BL::MOB) { - dumb_ptr md = src->as_mob(); + dumb_ptr md = src->is_mob(); if (md && md->master_id > 0) { if (md->master_id == target->bl_id) // 主なら肯定 @@ -2178,7 +2178,7 @@ int battle_check_target(dumb_ptr src, dumb_ptr target, { if (target->bl_type == BL::MOB) { //special_mob_aiで対象がMob - dumb_ptr tmd = target->as_mob(); + dumb_ptr tmd = target->is_mob(); if (tmd) { if (tmd->master_id != md->master_id) //召喚主が一緒でなければ否定 @@ -2202,11 +2202,11 @@ int battle_check_target(dumb_ptr src, dumb_ptr target, return 1; if (target->bl_type == BL::PC - && pc_isinvisible(target->as_player())) + && pc_isinvisible(target->is_player())) return -1; if (src->bl_prev == NULL || // 死んでるならエラー - (src->bl_type == BL::PC && pc_isdead(src->as_player()))) + (src->bl_type == BL::PC && pc_isdead(src->is_player()))) return -1; if ((ss->bl_type == BL::PC && target->bl_type == BL::MOB) || @@ -2231,7 +2231,7 @@ int battle_check_target(dumb_ptr src, dumb_ptr target, if (ss->bl_type == BL::PC && target->bl_type == BL::PC) { // 両方PVPモードなら否定(敵) if (ss->bl_m->flag.pvp - || pc_iskiller(ss->as_player(), target->as_player())) + || pc_iskiller(ss->is_player(), target->is_player())) { // [MouseJstr] if (battle_config.pk_mode) return 1; // prevent novice engagement in pk_mode [Valaris] diff --git a/src/map/chrif.cpp b/src/map/chrif.cpp index 43608d3..8e62e4d 100644 --- a/src/map/chrif.cpp +++ b/src/map/chrif.cpp @@ -923,7 +923,7 @@ void ladmin_itemfrob_c2(dumb_ptr bl, int source_id, int dest_id) { case BL::PC: { - dumb_ptr pc = bl->as_player(); + dumb_ptr pc = bl->is_player(); struct storage *stor = account2storage2(pc->status.account_id); int j; @@ -958,7 +958,7 @@ void ladmin_itemfrob_c2(dumb_ptr bl, int source_id, int dest_id) case BL::MOB: { - dumb_ptr mob = bl->as_mob(); + dumb_ptr mob = bl->is_mob(); for (struct item& itm : mob->lootitemv) FIX(itm); break; @@ -966,7 +966,7 @@ void ladmin_itemfrob_c2(dumb_ptr bl, int source_id, int dest_id) case BL::ITEM: { - dumb_ptr item = bl->as_item(); + dumb_ptr item = bl->is_item(); FIX(item->item_data); break; } diff --git a/src/map/clif.cpp b/src/map/clif.cpp index c0d4681..1728041 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -196,7 +196,7 @@ int is_deaf(dumb_ptr bl) { if (!bl || bl->bl_type != BL::PC) return 0; - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); return sd->special_state.deaf; } @@ -224,7 +224,7 @@ void clif_send_sub(dumb_ptr bl, const unsigned char *buf, int len, dumb_ptr src_bl, SendWho type) { nullpo_retv(bl); - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); switch (type) { @@ -236,7 +236,7 @@ void clif_send_sub(dumb_ptr bl, const unsigned char *buf, int len, case SendWho::AREA_CHAT_WOC: if (is_deaf(bl) && !(bl->bl_type == BL::PC - && pc_isGM(src_bl->as_player()))) + && pc_isGM(src_bl->is_player()))) { clif_emotion_towards(src_bl, bl, EMOTE_IGNORED); return; @@ -276,7 +276,7 @@ int clif_send(const uint8_t *buf, int len, dumb_ptr bl, SendWho type if (bl->bl_type == BL::PC) { - dumb_ptr sd2 = bl->as_player(); + dumb_ptr sd2 = bl->is_player(); if (bool(sd2->status.option & Option::INVISIBILITY)) { // Obscure hidden GMs @@ -362,7 +362,7 @@ int clif_send(const uint8_t *buf, int len, dumb_ptr bl, SendWho type case SendWho::PARTY_SAMEMAP_WOS: // 自分以外の同じマップの全パーティーメンバに送信 if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (sd->partyspy > 0) { p = party_search(sd->partyspy); @@ -420,7 +420,7 @@ int clif_send(const uint8_t *buf, int len, dumb_ptr bl, SendWho type break; case SendWho::SELF: { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (clif_parse_func_table[RBUFW(buf, 0)].len) { // packet must exist @@ -1815,7 +1815,7 @@ int clif_changelook_towards(dumb_ptr bl, LOOK type, int val, nullpo_ret(bl); if (bl->bl_type == BL::PC) - sd = bl->as_player(); + sd = bl->is_player(); if (sd && bool(sd->status.option & Option::INVISIBILITY)) return 0; @@ -2604,18 +2604,18 @@ void clif_getareachar(dumb_ptr bl, dumb_ptr sd) switch (bl->bl_type) { case BL::PC: - if (sd == bl->as_player()) + if (sd == bl->is_player()) break; - clif_getareachar_pc(sd, bl->as_player()); + clif_getareachar_pc(sd, bl->is_player()); break; case BL::NPC: - clif_getareachar_npc(sd, bl->as_npc()); + clif_getareachar_npc(sd, bl->is_npc()); break; case BL::MOB: - clif_getareachar_mob(sd, bl->as_mob()); + clif_getareachar_mob(sd, bl->is_mob()); break; case BL::ITEM: - clif_getareachar_item(sd, bl->as_item()); + clif_getareachar_item(sd, bl->is_item()); break; case BL::SPELL: // spell objects are not visible @@ -2645,7 +2645,7 @@ void clif_pcoutsight(dumb_ptr bl, dumb_ptr sd) switch (bl->bl_type) { case BL::PC: - dstsd = bl->as_player(); + dstsd = bl->is_player(); if (sd != dstsd) { clif_clearchar_id(dstsd->bl_id, BeingRemoveWhy::GONE, sd->fd); @@ -2653,14 +2653,14 @@ void clif_pcoutsight(dumb_ptr bl, dumb_ptr sd) } break; case BL::NPC: - if (bl->as_npc()->npc_class != INVISIBLE_CLASS) + if (bl->is_npc()->npc_class != INVISIBLE_CLASS) clif_clearchar_id(bl->bl_id, BeingRemoveWhy::GONE, sd->fd); break; case BL::MOB: clif_clearchar_id(bl->bl_id, BeingRemoveWhy::GONE, sd->fd); break; case BL::ITEM: - clif_clearflooritem(bl->as_item(), sd->fd); + clif_clearflooritem(bl->is_item(), sd->fd); break; } } @@ -2679,7 +2679,7 @@ void clif_pcinsight(dumb_ptr bl, dumb_ptr sd) switch (bl->bl_type) { case BL::PC: - dstsd = bl->as_player(); + dstsd = bl->is_player(); if (sd != dstsd) { clif_getareachar_pc(sd, dstsd); @@ -2687,13 +2687,13 @@ void clif_pcinsight(dumb_ptr bl, dumb_ptr sd) } break; case BL::NPC: - clif_getareachar_npc(sd, bl->as_npc()); + clif_getareachar_npc(sd, bl->is_npc()); break; case BL::MOB: - clif_getareachar_mob(sd, bl->as_mob()); + clif_getareachar_mob(sd, bl->is_mob()); break; case BL::ITEM: - clif_getareachar_item(sd, bl->as_item()); + clif_getareachar_item(sd, bl->is_item()); break; } } @@ -2711,7 +2711,7 @@ void clif_moboutsight(dumb_ptr bl, dumb_ptr md) if (bl->bl_type == BL::PC) { - sd = bl->as_player(); + sd = bl->is_player(); clif_clearchar_id(md->bl_id, BeingRemoveWhy::GONE, sd->fd); } } @@ -2729,7 +2729,7 @@ void clif_mobinsight(dumb_ptr bl, dumb_ptr md) if (bl->bl_type == BL::PC) { - sd = bl->as_player(); + sd = bl->is_player(); clif_getareachar_mob(sd, md); } } @@ -3337,7 +3337,7 @@ void clif_emotion_towards(dumb_ptr bl, { unsigned char buf[8]; int len = clif_parse_func_table[0xc0].len; - dumb_ptr sd = target->as_player(); + dumb_ptr sd = target->is_player(); nullpo_retv(bl); nullpo_retv(target); @@ -3706,7 +3706,7 @@ void clif_parse_GetCharNameRequest(int fd, dumb_ptr sd) { case BL::PC: { - dumb_ptr ssd = bl->as_player(); + dumb_ptr ssd = bl->is_player(); nullpo_retv(ssd); @@ -3758,7 +3758,7 @@ void clif_parse_GetCharNameRequest(int fd, dumb_ptr sd) break; case BL::NPC: { - NpcName name = bl->as_npc()->name; + NpcName name = bl->is_npc()->name; // [fate] elim hashed out/invisible names for the client auto it = std::find(name.begin(), name.end(), '#'); WFIFO_STRING(fd, 6, name.xislice_h(it), 24); @@ -3767,7 +3767,7 @@ void clif_parse_GetCharNameRequest(int fd, dumb_ptr sd) break; case BL::MOB: { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); nullpo_retv(md); diff --git a/src/map/magic-expr-eval.hpp b/src/map/magic-expr-eval.hpp index 29fdab6..a4a71f8 100644 --- a/src/map/magic-expr-eval.hpp +++ b/src/map/magic-expr-eval.hpp @@ -36,9 +36,9 @@ void magic_area_rect(map_local **m, int *x, int *y, int *width, int *height, #define ARG_TYPE(x) args[x].ty #define ENTITY_TYPE(x) ARGENTITY(x)->bl_type -#define ARGPC(x) (ARGENTITY(x)->as_player()) -#define ARGNPC(x) (ARGENTITY(x)->as_npc()) -#define ARGMOB(x) (ARGENTITY(x)->as_mob()) +#define ARGPC(x) (ARGENTITY(x)->is_player()) +#define ARGNPC(x) (ARGENTITY(x)->is_npc()) +#define ARGMOB(x) (ARGENTITY(x)->is_mob()) #define ARG_MAY_BE_AREA(x) (ARG_TYPE(x) == TYPE::AREA || ARG_TYPE(x) == TYPE::LOCATION) diff --git a/src/map/magic-expr.cpp b/src/map/magic-expr.cpp index 8f4a5eb..aff4412 100644 --- a/src/map/magic-expr.cpp +++ b/src/map/magic-expr.cpp @@ -97,16 +97,16 @@ FString show_entity(dumb_ptr entity) switch (entity->bl_type) { case BL::PC: - return entity->as_player()->status.name.to__actual(); + return entity->is_player()->status.name.to__actual(); case BL::NPC: - return entity->as_npc()->name; + return entity->is_npc()->name; case BL::MOB: - return entity->as_mob()->name; + return entity->is_mob()->name; case BL::ITEM: assert (0 && "There is no way this code did what it was supposed to do!"); /* Sorry about this one... */ // WTF? item_data is a struct item, not a struct item_data - // return ((struct item_data *) (&entity->as_item()->item_data))->name; + // return ((struct item_data *) (&entity->is_item()->item_data))->name; abort(); case BL::SPELL: return {"%invocation(ERROR:this-should-not-be-an-entity)"}; @@ -168,7 +168,7 @@ void stringify(val_t *v, int within_op) { dumb_ptr invocation_ = within_op ? v->v.v_invocation - : map_id2bl(v->v.v_int)->as_spell(); + : map_id2bl(v->v.v_int)->is_spell(); buf = invocation_->spell->name; } break; @@ -606,7 +606,7 @@ int fun_skill(dumb_ptr, val_t *result, const_array args) } static -int fun_has_shroud(dumb_ptr, val_t *result, const_array args) +int fun_his_shroud(dumb_ptr, val_t *result, const_array args) { RESULTINT = (ENTITY_TYPE(0) == BL::PC && ARGPC(0)->state.shroud_active); return 0; @@ -1009,7 +1009,7 @@ int fun_read_script_int(dumb_ptr, val_t *result, const_array args) if (subject_p->bl_type != BL::PC) return 1; - RESULTINT = pc_readglobalreg(subject_p->as_player(), var_name); + RESULTINT = pc_readglobalreg(subject_p->is_player(), var_name); return 0; } @@ -1286,7 +1286,7 @@ std::map functions = MAGIC_FUNCTION1(status_option, "ei", 'i'), MAGIC_FUNCTION1(element, "e", 'i'), MAGIC_FUNCTION1(element_level, "e", 'i'), - MAGIC_FUNCTION1(has_shroud, "e", 'i'), + MAGIC_FUNCTION1(his_shroud, "e", 'i'), MAGIC_FUNCTION1(is_equipped, "e.", 'i'), MAGIC_FUNCTION1(is_exterior, "l", 'i'), MAGIC_FUNCTION1(contains_string, "ss", 'i'), @@ -1500,7 +1500,7 @@ int magic_signature_check(ZString opname, ZString funname, ZString signature, } else if (ty == TYPE::INVOCATION) { - arg->v.v_invocation = map_id2bl(arg->v.v_int)->as_spell(); + arg->v.v_invocation = map_id2bl(arg->v.v_int)->is_spell(); if (!arg->v.v_entity) ty = arg->ty = TYPE::FAIL; } @@ -1635,7 +1635,7 @@ void magic_eval(dumb_ptr env, val_t *dest, dumb_ptr expr) if (v.ty == TYPE::INVOCATION) { - dumb_ptr t = map_id2bl(v.v.v_int)->as_spell(); + dumb_ptr t = map_id2bl(v.v.v_int)->is_spell(); if (!t) dest->ty = TYPE::UNDEF; diff --git a/src/map/magic-interpreter-base.cpp b/src/map/magic-interpreter-base.cpp index 09656c6..e86e86b 100644 --- a/src/map/magic-interpreter-base.cpp +++ b/src/map/magic-interpreter-base.cpp @@ -415,7 +415,7 @@ void spell_update_location(dumb_ptr invocation) dumb_ptr owner_bl = map_id2bl(invocation->subject); if (!owner_bl) return; - dumb_ptr owner = owner_bl->as_player(); + dumb_ptr owner = owner_bl->is_player(); spell_set_location(invocation, owner); } diff --git a/src/map/magic-stmt.cpp b/src/map/magic-stmt.cpp index 2d246de..a0e2b7c 100644 --- a/src/map/magic-stmt.cpp +++ b/src/map/magic-stmt.cpp @@ -86,7 +86,7 @@ void clear_activation_record(cont_activation_record_t *ar) static void invocation_timer_callback(TimerData *, tick_t, int id) { - dumb_ptr invocation = map_id_as_spell(id); + dumb_ptr invocation = map_id_is_spell(id); assert (invocation); { @@ -185,7 +185,7 @@ void magic_stop_completely(dumb_ptr c) if (c->attack_spell_override) { - dumb_ptr attack_spell = map_id_as_spell(c->attack_spell_override); + dumb_ptr attack_spell = map_id_is_spell(c->attack_spell_override); if (attack_spell) spell_free_invocation(attack_spell); c->attack_spell_override = 0; @@ -215,14 +215,14 @@ void try_to_finish_invocation(dumb_ptr invocation) static int trigger_spell(int subject, int spell) { - dumb_ptr invocation_ = map_id_as_spell(spell); + dumb_ptr invocation_ = map_id_is_spell(spell); if (!invocation_) return 0; invocation_ = spell_clone_effect(invocation_); - spell_bind(map_id_as_player(subject), invocation_); + spell_bind(map_id_is_player(subject), invocation_); magic_clear_var(&invocation_->env->varu[VAR_CASTER]); invocation_->env->varu[VAR_CASTER].ty = TYPE::ENTITY; invocation_->env->varu[VAR_CASTER].v.v_int = subject; @@ -269,7 +269,7 @@ void magic_unshroud(dumb_ptr other_char) static void timer_callback_effect_npc_delete(TimerData *, tick_t, int npc_id) { - dumb_ptr effect_npc = map_id_as_npc(npc_id); + dumb_ptr effect_npc = map_id_is_npc(npc_id); npc_free(effect_npc); } @@ -324,8 +324,8 @@ int op_instaheal(dumb_ptr env, const_array args) if (caster->bl_type == BL::PC && subject->bl_type == BL::PC) { - dumb_ptr caster_pc = caster->as_player(); - dumb_ptr subject_pc = subject->as_player(); + dumb_ptr caster_pc = caster->is_player(); + dumb_ptr subject_pc = subject->is_player(); MAP_LOG_PC(caster_pc, "SPELLHEAL-INSTA PC%d FOR %d", subject_pc->status.char_id, ARGINT(1)); } @@ -340,7 +340,7 @@ int op_itemheal(dumb_ptr env, const_array args) dumb_ptr subject = ARGENTITY(0); if (subject->bl_type == BL::PC) { - pc_itemheal(subject->as_player(), + pc_itemheal(subject->is_player(), ARGINT(1), ARGINT(2)); } else @@ -408,7 +408,7 @@ int op_message(dumb_ptr, const_array args) static void timer_callback_kill_npc(TimerData *, tick_t, int npc_id) { - dumb_ptr npc = map_id_as_npc(npc_id); + dumb_ptr npc = map_id_is_npc(npc_id); if (npc) npc_free(npc); } @@ -441,7 +441,7 @@ void entity_warp(dumb_ptr target, map_local *destm, int destx, int d { case BL::PC: { - dumb_ptr character = target->as_player(); + dumb_ptr character = target->is_player(); clif_clearchar(character, BeingRemoveWhy::WARPED); map_delblock(character); character->bl_x = destx; @@ -464,7 +464,7 @@ void entity_warp(dumb_ptr target, map_local *destm, int destx, int d target->bl_x = destx; target->bl_y = desty; target->bl_m = destm; - clif_fixmobpos(target->as_mob()); + clif_fixmobpos(target->is_mob()); break; } } @@ -503,7 +503,7 @@ int op_banish(dumb_ptr, const_array args) if (subject->bl_type == BL::MOB) { - dumb_ptr mob = subject->as_mob(); + dumb_ptr mob = subject->is_mob(); if (bool(mob->mode & MobMode::SUMMONED)) mob_catch_delete(mob, BeingRemoveWhy::WARPED); @@ -529,7 +529,7 @@ int op_status_change(dumb_ptr env, const_array args) dumb_ptr subject = ARGENTITY(0); int invocation_id = env->VAR(VAR_INVOCATION).ty == TYPE::INVOCATION ? env->VAR(VAR_INVOCATION).v.v_int : 0; - dumb_ptr invocation_ = map_id_as_spell(invocation_id); + dumb_ptr invocation_ = map_id_is_spell(invocation_id); assert (!ARGINT(3)); assert (!ARGINT(4)); @@ -570,11 +570,11 @@ int op_override_attack(dumb_ptr env, const_array args) if (psubject->bl_type != BL::PC) return 0; - subject = psubject->as_player(); + subject = psubject->is_player(); if (subject->attack_spell_override) { - dumb_ptr old_invocation = map_id_as_spell(subject->attack_spell_override); + dumb_ptr old_invocation = map_id_is_spell(subject->attack_spell_override); if (old_invocation) spell_free_invocation(old_invocation); } @@ -585,7 +585,7 @@ int op_override_attack(dumb_ptr env, const_array args) if (subject->attack_spell_override) { - dumb_ptr attack_spell = map_id_as_spell(subject->attack_spell_override); + dumb_ptr attack_spell = map_id_is_spell(subject->attack_spell_override); if (attack_spell && stopattack) attack_spell->flags |= INVOCATION_FLAG::STOPATTACK; @@ -608,7 +608,7 @@ int op_create_item(dumb_ptr, const_array args) return 0; if (entity->bl_type == BL::PC) - subject = entity->as_player(); + subject = entity->is_player(); else return 0; @@ -643,7 +643,7 @@ int op_aggravate(dumb_ptr, const_array args) dumb_ptr other; if (target->bl_type == BL::MOB) - other = target->as_mob(); + other = target->is_mob(); else return 0; @@ -683,7 +683,7 @@ int op_spawn(dumb_ptr, const_array args) dumb_ptr owner = NULL; if (monster_attitude == MonsterAttitude::SERVANT && owner_e->bl_type == BL::PC) - owner = owner_e->as_player(); + owner = owner_e->is_player(); for (i = 0; i < monster_count; i++) { @@ -696,7 +696,7 @@ int op_spawn(dumb_ptr, const_array args) mob_id = mob_once_spawn(owner, loc.m->name_, loc.x, loc.y, JAPANESE_NAME, // Is that needed? monster_id, 1, NpcEvent()); - mob = map_id_as_mob(mob_id); + mob = map_id_is_mob(mob_id); if (mob) { @@ -752,7 +752,7 @@ const char *get_invocation_name(dumb_ptr env) if (env->VAR(VAR_INVOCATION).ty != TYPE::INVOCATION) return "?"; - invocation_ = map_id_as_spell(env->VAR(VAR_INVOCATION).v.v_int); + invocation_ = map_id_is_spell(env->VAR(VAR_INVOCATION).v.v_int); if (invocation_) return invocation_->spell->name.c_str(); @@ -772,8 +772,8 @@ int op_injure(dumb_ptr env, const_array args) if (target->bl_type == BL::PC && !target->bl_m->flag.pvp - && !target->as_player()->special_state.killable - && (caster->bl_type != BL::PC || !caster->as_player()->special_state.killer)) + && !target->is_player()->special_state.killable + && (caster->bl_type != BL::PC || !caster->is_player()->special_state.killer)) return 0; /* Cannot damage other players outside of pvp */ if (target != caster) @@ -795,10 +795,10 @@ int op_injure(dumb_ptr env, const_array args) if (caster->bl_type == BL::PC) { - dumb_ptr caster_pc = caster->as_player(); + dumb_ptr caster_pc = caster->is_player(); if (target->bl_type == BL::MOB) { - dumb_ptr mob = target->as_mob(); + dumb_ptr mob = target->is_mob(); MAP_LOG_PC(caster_pc, "SPELLDMG MOB%d %d FOR %d BY %s", mob->bl_id, mob->mob_class, damage_caused, @@ -941,7 +941,7 @@ op_t *magic_get_op(ZString name) void spell_effect_report_termination(int invocation_id, int bl_id, StatusChange sc_id, int) { - dumb_ptr invocation_ = map_id_as_spell(invocation_id); + dumb_ptr invocation_ = map_id_is_spell(invocation_id); if (!invocation_ || invocation_->bl_type != BL::SPELL) return; @@ -1091,7 +1091,7 @@ void find_entities_in_area_c(dumb_ptr target, break; else if (filter == FOREACH_FILTER::SPELL) { /* Check all spells bound to the caster */ - dumb_ptr invoc = target->as_player()->active_spells; + dumb_ptr invoc = target->is_player()->active_spells; /* Add all spells locked onto thie PC */ while (invoc) @@ -1113,7 +1113,7 @@ void find_entities_in_area_c(dumb_ptr target, case BL::SPELL: if (filter == FOREACH_FILTER::SPELL) { - dumb_ptr invocation = target->as_spell(); + dumb_ptr invocation = target->is_spell(); /* Check whether the spell is `bound'-- if so, we'll consider it iff we see the caster(case BL::PC). */ if (bool(invocation->flags & INVOCATION_FLAG::BOUND)) @@ -1351,7 +1351,7 @@ static interval_t spell_run(dumb_ptr invocation_, int allow_delete) { const int invocation_id = invocation_->bl_id; -#define REFRESH_INVOCATION invocation_ = map_id_as_spell(invocation_id); if (!invocation_) return interval_t::zero(); +#define REFRESH_INVOCATION invocation_ = map_id_is_spell(invocation_id); if (!invocation_) return interval_t::zero(); #ifdef DEBUG FPRINTF(stderr, "Resuming execution: invocation of `%s'\n", @@ -1416,7 +1416,7 @@ interval_t spell_run(dumb_ptr invocation_, int allow_delete) case EFFECT::SCRIPT: { - dumb_ptr caster = map_id_as_player(invocation_->caster); + dumb_ptr caster = map_id_is_player(invocation_->caster); if (caster) { dumb_ptr env = invocation_->env; @@ -1431,7 +1431,7 @@ interval_t spell_run(dumb_ptr invocation_, int allow_delete) env->VAR(VAR_SCRIPTTARGET).ty == TYPE::ENTITY ? env->VAR(VAR_SCRIPTTARGET). v.v_int : invocation_->caster; - dumb_ptr recipient = map_id_as_player(message_recipient); + dumb_ptr recipient = map_id_is_player(message_recipient); if (recipient->npc_id && recipient->npc_id != invocation_->bl_id) @@ -1544,14 +1544,14 @@ void spell_execute_script(dumb_ptr invocation) int spell_attack(int caster_id, int target_id) { - dumb_ptr caster = map_id_as_player(caster_id); + dumb_ptr caster = map_id_is_player(caster_id); dumb_ptr invocation_; int stop_attack = 0; if (!caster) return 0; - invocation_ = map_id_as_spell(caster->attack_spell_override); + invocation_ = map_id_is_spell(caster->attack_spell_override); if (invocation_ && bool(invocation_->flags & INVOCATION_FLAG::STOPATTACK)) stop_attack = 1; @@ -1568,7 +1568,7 @@ int spell_attack(int caster_id, int target_id) 0 /* don't delete the invocation if done */ ); // If the caster died, we need to refresh here: - invocation_ = map_id_as_spell(caster->attack_spell_override); + invocation_ = map_id_is_spell(caster->attack_spell_override); if (invocation_ && !bool(invocation_->flags & INVOCATION_FLAG::ABORTED)) // If we didn't abort: caster->attack_spell_charges--; diff --git a/src/map/map.cpp b/src/map/map.cpp index f8bda41..1f44747 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -582,7 +582,7 @@ int map_delobject(int id, BL type) map_delobjectnofree(id, type); if (obj->bl_type == BL::PC) // [Fate] Not sure where else to put this... I'm not sure where delobject for PCs is called from - pc_cleanup(obj->as_player()); + pc_cleanup(obj->is_player()); MapBlockLock::freeblock(obj); @@ -630,7 +630,7 @@ void map_clearflooritem_timer(TimerData *tid, tick_t, int id) { dumb_ptr obj = object[id]; assert (obj && obj->bl_type == BL::ITEM); - dumb_ptr fitem = obj->as_item(); + dumb_ptr fitem = obj->is_item(); if (!tid) fitem->cleartimer.cancel(); clif_clearflooritem(fitem, 0); @@ -1569,16 +1569,16 @@ void cleanup_sub(dumb_ptr bl) map_delblock(bl); // There is something better... break; case BL::NPC: - npc_delete(bl->as_npc()); + npc_delete(bl->is_npc()); break; case BL::MOB: - mob_delete(bl->as_mob()); + mob_delete(bl->is_mob()); break; case BL::ITEM: map_clearflooritem(bl->bl_id); break; case BL::SPELL: - spell_free_invocation(bl->as_spell()); + spell_free_invocation(bl->is_spell()); break; } } @@ -1703,7 +1703,7 @@ int map_scriptcont(dumb_ptr sd, int id) case BL::NPC: return npc_scriptcont(sd, id); case BL::SPELL: - spell_execute_script(bl->as_spell()); + spell_execute_script(bl->is_spell()); break; } diff --git a/src/map/map.hpp b/src/map/map.hpp index 356e077..e288d36 100644 --- a/src/map/map.hpp +++ b/src/map/map.hpp @@ -90,12 +90,15 @@ struct block_list block_list& operator = (block_list&&) = delete; virtual ~block_list() {} +private: + // historically, a lot of code used this. + // historically, a lot of code crashed. dumb_ptr as_player(); dumb_ptr as_npc(); dumb_ptr as_mob(); dumb_ptr as_item(); dumb_ptr as_spell(); - +public: dumb_ptr is_player(); dumb_ptr is_npc(); dumb_ptr is_mob(); @@ -346,11 +349,12 @@ struct npc_data : block_list Timer eventtimer[MAX_EVENTTIMER]; short arenaflag; +private: dumb_ptr as_script(); dumb_ptr as_shop(); dumb_ptr as_warp(); dumb_ptr as_message(); - +public: dumb_ptr is_script(); dumb_ptr is_shop(); dumb_ptr is_warp(); @@ -651,37 +655,6 @@ CharName map_charid2nick(int); dumb_ptr map_id2sd(int); dumb_ptr map_id2bl(int); -inline -dumb_ptr map_id_as_player(int id) -{ - dumb_ptr bl = map_id2bl(id); - return bl ? bl->as_player() : nullptr; -} -inline -dumb_ptr map_id_as_npc(int id) -{ - dumb_ptr bl = map_id2bl(id); - return bl ? bl->as_npc() : nullptr; -} -inline -dumb_ptr map_id_as_mob(int id) -{ - dumb_ptr bl = map_id2bl(id); - return bl ? bl->as_mob() : nullptr; -} -inline -dumb_ptr map_id_as_item(int id) -{ - dumb_ptr bl = map_id2bl(id); - return bl ? bl->as_item() : nullptr; -} -inline -dumb_ptr map_id_as_spell(int id) -{ - dumb_ptr bl = map_id2bl(id); - return bl ? bl->as_spell() : nullptr; -} - inline dumb_ptr map_id_is_player(int id) { diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 09107ed..1885fbd 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -689,9 +689,9 @@ int mob_check_attack(dumb_ptr md) } if (tbl->bl_type == BL::PC) - tsd = tbl->as_player(); + tsd = tbl->is_player(); else if (tbl->bl_type == BL::MOB) - tmd = tbl->as_mob(); + tmd = tbl->is_mob(); else return 0; @@ -907,7 +907,7 @@ void mob_timer(TimerData *, tick_t tick, int id, unsigned char data) if (bl->bl_type == BL::NUL || bl->bl_type != BL::MOB) return; - md = bl->as_mob(); + md = bl->is_mob(); if (md->bl_prev == NULL || md->state.state == MS::DEAD) return; @@ -1009,7 +1009,7 @@ int mob_setdelayspawn(int id) if (!bl || bl->bl_type == BL::NUL || bl->bl_type != BL::MOB) return -1; - md = bl->as_mob(); + md = bl->is_mob(); nullpo_retr(-1, md); if (!md || md->bl_type != BL::MOB) @@ -1055,7 +1055,7 @@ int mob_spawn(int id) if (!bl || bl->bl_type == BL::NUL || bl->bl_type != BL::MOB) return -1; - md = bl->as_mob(); + md = bl->is_mob(); nullpo_retr(-1, md); if (!md || md->bl_type == BL::NUL || md->bl_type != BL::MOB) @@ -1255,7 +1255,7 @@ int mob_can_reach(dumb_ptr md, dumb_ptr bl, int range) if (bl->bl_type == BL::PC && battle_config.monsters_ignore_gm == 1) { // option to have monsters ignore GMs [Valaris] - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (pc_isGM(sd)) return 0; } @@ -1338,7 +1338,7 @@ int mob_target(dumb_ptr md, dumb_ptr bl, int dist) { if (bl->bl_type == BL::PC) { - sd = bl->as_player(); + sd = bl->is_player(); nullpo_ret(sd); if (sd->invincible_timer || pc_isinvisible(sd)) return 0; @@ -1377,9 +1377,9 @@ void mob_ai_sub_hard_activesearch(dumb_ptr bl, nullpo_retv(pcc); if (bl->bl_type == BL::PC) - tsd = bl->as_player(); + tsd = bl->is_player(); else if (bl->bl_type == BL::MOB) - tmd = bl->as_mob(); + tmd = bl->is_mob(); else return; @@ -1490,7 +1490,7 @@ void mob_ai_sub_hard_linksearch(dumb_ptr bl, dumb_ptr md, dumb_ptr tmd; nullpo_retv(bl); - tmd = bl->as_mob(); + tmd = bl->is_mob(); nullpo_retv(md); nullpo_retv(target); @@ -1527,7 +1527,7 @@ int mob_ai_sub_hard_slavemob(dumb_ptr md, tick_t tick) nullpo_ret(md); if ((bl = map_id2bl(md->master_id)) != NULL) - mmd = bl->as_mob(); + mmd = bl->is_mob(); mode = mob_db[md->mob_class].mode; @@ -1733,7 +1733,7 @@ void mob_ai_sub_hard(dumb_ptr bl, tick_t tick) MobMode mode; nullpo_retv(bl); - md = bl->as_mob(); + md = bl->is_mob(); if (tick < md->last_thinktime + MIN_MOBTHINKTIME) return; @@ -1787,7 +1787,7 @@ void mob_ai_sub_hard(dumb_ptr bl, tick_t tick) if (abl) { if (abl->bl_type == BL::PC) - asd = abl->as_player(); + asd = abl->is_player(); if (asd == NULL || md->bl_m != abl->bl_m || abl->bl_prev == NULL || asd->invincible_timer || pc_isinvisible(asd) || (dist = @@ -1855,9 +1855,9 @@ void mob_ai_sub_hard(dumb_ptr bl, tick_t tick) if ((tbl = map_id2bl(md->target_id))) { if (tbl->bl_type == BL::PC) - tsd = tbl->as_player(); + tsd = tbl->is_player(); else if (tbl->bl_type == BL::MOB) - tmd = tbl->as_mob(); + tmd = tbl->is_mob(); if (tsd || tmd) { if (tbl->bl_m != md->bl_m || tbl->bl_prev == NULL @@ -1988,7 +1988,7 @@ void mob_ai_sub_hard(dumb_ptr bl, tick_t tick) return; // 攻撃中 if (md->state.state == MS::WALK) mob_stop_walking(md, 1); // 歩行中なら停止 - fitem = tbl->as_item(); + fitem = tbl->is_item(); md->lootitemv.push_back(fitem->item_data); map_clearflooritem(tbl->bl_id); mob_unlocktarget(md, tick); @@ -2074,7 +2074,7 @@ void mob_ai_sub_lazy(dumb_ptr bl, tick_t tick) if (bl->bl_type != BL::MOB) return; - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (tick < md->last_thinktime + MIN_MOBTHINKTIME * 10) return; @@ -2259,7 +2259,7 @@ void mob_timer_delete(TimerData *, tick_t, int id) nullpo_retv(bl); - md = bl->as_mob(); + md = bl->is_mob(); mob_catch_delete(md, BeingRemoveWhy::WARPED); } @@ -2273,7 +2273,7 @@ void mob_deleteslave_sub(dumb_ptr bl, int id) dumb_ptr md; nullpo_retv(bl); - md = bl->as_mob(); + md = bl->is_mob(); if (md->master_id > 0 && md->master_id == id) mob_damage(NULL, md, md->hp, 1); @@ -2331,7 +2331,7 @@ int mob_damage(dumb_ptr src, dumb_ptr md, int damage, if (src && src->bl_type == BL::PC) { - sd = src->as_player(); + sd = src->is_player(); mvp_sd = sd; } @@ -2395,13 +2395,13 @@ int mob_damage(dumb_ptr src, dumb_ptr md, int damage, md->attacked_id = sd->bl_id; } if (src && src->bl_type == BL::MOB - && src->as_mob()->state.special_mob_ai) + && src->is_mob()->state.special_mob_ai) { - dumb_ptr md2 = src->as_mob(); + dumb_ptr md2 = src->is_mob(); dumb_ptr master_bl = map_id2bl(md2->master_id); if (master_bl && master_bl->bl_type == BL::PC) { - MAP_LOG_PC(master_bl->as_player(), + MAP_LOG_PC(master_bl->is_player(), "MOB-TO-MOB-DMG FROM MOB%d %d TO MOB%d %d FOR %d", md2->bl_id, md2->mob_class, md->bl_id, md->mob_class, damage); @@ -2450,7 +2450,7 @@ int mob_damage(dumb_ptr src, dumb_ptr md, int damage, max_hp = battle_get_max_hp(md); if (src && src->bl_type == BL::MOB) - mob_unlocktarget(src->as_mob(), tick); + mob_unlocktarget(src->is_mob(), tick); // map外に消えた人は計算から除くので // overkill分は無いけどsumはmax_hpとは違う @@ -2703,7 +2703,7 @@ int mob_heal(dumb_ptr md, int heal) static void mob_warpslave_sub(dumb_ptr bl, int id, int x, int y) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (md->master_id == id) { @@ -2821,7 +2821,7 @@ void mob_countslave_sub(dumb_ptr bl, int id, int *c) dumb_ptr md; nullpo_retv(bl); - md = bl->as_mob(); + md = bl->is_mob(); if (md->master_id == id) (*c)++; @@ -2939,14 +2939,14 @@ void mob_counttargeted_sub(dumb_ptr bl, return; if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (sd && sd->attacktarget == id && sd->attacktimer && sd->attacktarget_lv >= target_lv) (*c)++; } else if (bl->bl_type == BL::MOB) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (md && md->target_id == id && md->timer && md->state.state == MS::ATTACK && md->target_lv >= target_lv) (*c)++; @@ -2989,7 +2989,7 @@ void mobskill_castend_id(TimerData *, tick_t tick, int id) if ((mbl = map_id2bl(id)) == NULL) //詠唱したMobがもういないというのは良くある正常処理 return; - if ((md = mbl->as_mob()) == NULL) + if ((md = mbl->is_mob()) == NULL) { PRINTF("mobskill_castend_id nullpo mbl->bl_id:%d\n", mbl->bl_id); return; @@ -3057,7 +3057,7 @@ void mobskill_castend_pos(TimerData *, tick_t tick, int id) if ((bl = map_id2bl(id)) == NULL) return; - md = bl->as_mob(); + md = bl->is_mob(); nullpo_retv(md); if (md->bl_type != BL::MOB || md->bl_prev == NULL) diff --git a/src/map/npc.cpp b/src/map/npc.cpp index 28f348e..e3038a1 100644 --- a/src/map/npc.cpp +++ b/src/map/npc.cpp @@ -73,7 +73,7 @@ void npc_enable_sub(dumb_ptr bl, dumb_ptr nd) assert (bl->bl_type == BL::PC); { - sd = bl->as_player(); + sd = bl->is_player(); // not if disabled if (nd->flag & 1) @@ -298,7 +298,7 @@ int npc_event_do_oninit(void) static void npc_timerevent(TimerData *, tick_t tick, int id, interval_t data) { - dumb_ptr nd = map_id2bl(id)->as_npc()->as_script(); + dumb_ptr nd = map_id2bl(id)->is_npc()->is_script(); assert (nd != NULL); assert (nd->npc_subtype == NpcSubtype::SCRIPT); assert (nd->scr.next_event != nd->scr.timer_eventv.end()); @@ -537,8 +537,8 @@ int npc_touch_areanpc(dumb_ptr sd, map_local *m, int x, int y) switch (m->npc[i]->npc_subtype) { case NpcSubtype::WARP: - xs = m->npc[i]->as_warp()->warp.xs; - ys = m->npc[i]->as_warp()->warp.ys; + xs = m->npc[i]->is_warp()->warp.xs; + ys = m->npc[i]->is_warp()->warp.ys; break; case NpcSubtype::MESSAGE: assert (0 && "I'm pretty sure these are never put on a map"); @@ -546,8 +546,8 @@ int npc_touch_areanpc(dumb_ptr sd, map_local *m, int x, int y) ys = 0; break; case NpcSubtype::SCRIPT: - xs = m->npc[i]->as_script()->scr.xs; - ys = m->npc[i]->as_script()->scr.ys; + xs = m->npc[i]->is_script()->scr.xs; + ys = m->npc[i]->is_script()->scr.ys; break; default: continue; @@ -571,8 +571,8 @@ int npc_touch_areanpc(dumb_ptr sd, map_local *m, int x, int y) { case NpcSubtype::WARP: skill_stop_dancing(sd, 0); - pc_setpos(sd, m->npc[i]->as_warp()->warp.name, - m->npc[i]->as_warp()->warp.x, m->npc[i]->as_warp()->warp.y, BeingRemoveWhy::GONE); + pc_setpos(sd, m->npc[i]->is_warp()->warp.name, + m->npc[i]->is_warp()->warp.x, m->npc[i]->is_warp()->warp.y, BeingRemoveWhy::GONE); break; case NpcSubtype::MESSAGE: assert (0 && "I'm pretty sure these NPCs are never put on a map."); @@ -606,7 +606,7 @@ int npc_checknear(dumb_ptr sd, int id) nullpo_ret(sd); - nd = map_id_as_npc(id); + nd = map_id_is_npc(id); // this actually happens if (nd == NULL) return 1; @@ -649,7 +649,7 @@ int npc_click(dumb_ptr sd, int id) return 1; } - nd = map_id_as_npc(id); + nd = map_id_is_npc(id); if (nd->flag & 1) // 無効化されている return 1; @@ -662,12 +662,12 @@ int npc_click(dumb_ptr sd, int id) npc_event_dequeue(sd); break; case NpcSubtype::SCRIPT: - sd->npc_pos = run_script(ScriptPointer(nd->as_script()->scr.script.get(), 0), sd->bl_id, id); + sd->npc_pos = run_script(ScriptPointer(nd->is_script()->scr.script.get(), 0), sd->bl_id, id); break; case NpcSubtype::MESSAGE: - if (nd->as_message()->message) + if (nd->is_message()->message) { - clif_scriptmes(sd, id, nd->as_message()->message); + clif_scriptmes(sd, id, nd->is_message()->message); clif_scriptclose(sd, id); } break; @@ -694,7 +694,7 @@ int npc_scriptcont(dumb_ptr sd, int id) return 1; } - nd = map_id_as_npc(id); + nd = map_id_is_npc(id); if (!nd /* NPC was disposed? */ || nd->npc_subtype == NpcSubtype::MESSAGE) { @@ -703,7 +703,7 @@ int npc_scriptcont(dumb_ptr sd, int id) return 0; } - sd->npc_pos = run_script(ScriptPointer(nd->as_script()->scr.script.get(), sd->npc_pos), sd->bl_id, id); + sd->npc_pos = run_script(ScriptPointer(nd->is_script()->scr.script.get(), sd->npc_pos), sd->bl_id, id); return 0; } @@ -721,7 +721,7 @@ int npc_buysellsel(dumb_ptr sd, int id, int type) if (npc_checknear(sd, id)) return 1; - nd = map_id_as_npc(id); + nd = map_id_is_npc(id); if (nd->npc_subtype != NpcSubtype::SHOP) { if (battle_config.error_log) @@ -735,7 +735,7 @@ int npc_buysellsel(dumb_ptr sd, int id, int type) sd->npc_shopid = id; if (type == 0) { - clif_buylist(sd, nd->as_shop()); + clif_buylist(sd, nd->is_shop()); } else { @@ -762,21 +762,21 @@ int npc_buylist(dumb_ptr sd, int n, if (npc_checknear(sd, sd->npc_shopid)) return 3; - nd = map_id_as_npc(sd->npc_shopid); + nd = map_id_is_npc(sd->npc_shopid); if (nd->npc_subtype != NpcSubtype::SHOP) return 3; for (i = 0, w = 0, z = 0; i < n; i++) { - for (j = 0; j < nd->as_shop()->shop_items.size(); j++) + for (j = 0; j < nd->is_shop()->shop_items.size(); j++) { - if (nd->as_shop()->shop_items[j].nameid == item_list[i * 2 + 1]) + if (nd->is_shop()->shop_items[j].nameid == item_list[i * 2 + 1]) break; } - if (j == nd->as_shop()->shop_items.size()) + if (j == nd->is_shop()->shop_items.size()) return 3; - z += static_cast(nd->as_shop()->shop_items[j].value) * item_list[i * 2]; + z += static_cast(nd->is_shop()->shop_items[j].value) * item_list[i * 2]; itemamount += item_list[i * 2]; switch (pc_checkadditem(sd, item_list[i * 2 + 1], item_list[i * 2])) @@ -1667,7 +1667,7 @@ void npc_free_internal(dumb_ptr nd_) { if (nd_->npc_subtype == NpcSubtype::SCRIPT) { - dumb_ptr nd = nd_->as_script(); + dumb_ptr nd = nd_->is_script(); nd->scr.timer_eventv.clear(); { @@ -1677,7 +1677,7 @@ void npc_free_internal(dumb_ptr nd_) } else if (nd_->npc_subtype == NpcSubtype::MESSAGE) { - dumb_ptr nd = nd_->as_message(); + dumb_ptr nd = nd_->is_message(); nd->message = FString(); } nd_.delete_(); diff --git a/src/map/party.cpp b/src/map/party.cpp index d0039de..0ba251f 100644 --- a/src/map/party.cpp +++ b/src/map/party.cpp @@ -685,7 +685,7 @@ void party_send_hp_check(dumb_ptr bl, int party_id, int *flag) dumb_ptr sd; nullpo_retv(bl); - sd = bl->as_player(); + sd = bl->is_player(); if (sd->status.party_id == party_id) { diff --git a/src/map/pc.cpp b/src/map/pc.cpp index cf953aa..8750910 100644 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -362,14 +362,14 @@ void pc_counttargeted_sub(dumb_ptr bl, return; if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (sd->attacktarget == id && sd->attacktimer && sd->attacktarget_lv >= target_lv) (*c)++; } else if (bl->bl_type == BL::MOB) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (md->target_id == id && md->timer && md->state.state == MS::ATTACK && md->target_lv >= target_lv) @@ -2775,7 +2775,7 @@ void pc_attack_timer(TimerData *, tick_t tick, int id) if (bl == NULL || bl->bl_prev == NULL) return; - if (bl->bl_type == BL::PC && pc_isdead(bl->as_player())) + if (bl->bl_type == BL::PC && pc_isdead(bl->is_player())) return; // 同じmapでないなら攻撃しない @@ -3427,7 +3427,7 @@ int pc_damage(dumb_ptr src, dumb_ptr sd, if (src->bl_type == BL::PC) { MAP_LOG_PC(sd, "INJURED-BY PC%d FOR %d", - src->as_player()->status.char_id, + src->is_player()->status.char_id, damage); } else @@ -3550,7 +3550,7 @@ int pc_damage(dumb_ptr src, dumb_ptr sd, { sd->pvp_point -= 5; if (src && src->bl_type == BL::PC) - src->as_player()->pvp_point++; + src->is_player()->pvp_point++; pc_setdead(sd); } // 強制送還 @@ -4747,7 +4747,7 @@ void pc_calc_pvprank_sub(dumb_ptr bl, dumb_ptr sd2 dumb_ptr sd1; nullpo_retv(bl); - sd1 = bl->as_player(); + sd1 = bl->is_player(); nullpo_retv(sd2); if (sd1->pvp_point > sd2->pvp_point) diff --git a/src/map/script.cpp b/src/map/script.cpp index 55e6b53..07a1ea1 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -1468,7 +1468,7 @@ void builtin_warp(ScriptState *st) static void builtin_areawarp_sub(dumb_ptr bl, MapName mapname, int x, int y) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (mapname == "Random") pc_randomwarp(sd, BeingRemoveWhy::WARPED); else @@ -2581,7 +2581,7 @@ void builtin_areamonster(ScriptState *st) static void builtin_killmonster_sub(dumb_ptr bl, NpcEvent event) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (event) { if (event == md->npc_event) @@ -2619,7 +2619,7 @@ void builtin_killmonster(ScriptState *st) static void builtin_killmonsterall_sub(dumb_ptr bl) { - mob_delete(bl->as_mob()); + mob_delete(bl->is_mob()); } static @@ -2675,9 +2675,9 @@ void builtin_initnpctimer(ScriptState *st) if (HARGO2(2)) nd_ = npc_name2id(stringish(ZString(conv_str(st, &AARGO2(2))))); else - nd_ = map_id_as_npc(st->oid); + nd_ = map_id_is_npc(st->oid); assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT); - dumb_ptr nd = nd_->as_script(); + dumb_ptr nd = nd_->is_script(); npc_settimerevent_tick(nd, interval_t::zero()); npc_timerevent_start(nd); @@ -2694,9 +2694,9 @@ void builtin_startnpctimer(ScriptState *st) if (HARGO2(2)) nd_ = npc_name2id(stringish(ZString(conv_str(st, &AARGO2(2))))); else - nd_ = map_id_as_npc(st->oid); + nd_ = map_id_is_npc(st->oid); assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT); - dumb_ptr nd = nd_->as_script(); + dumb_ptr nd = nd_->is_script(); npc_timerevent_start(nd); } @@ -2712,9 +2712,9 @@ void builtin_stopnpctimer(ScriptState *st) if (HARGO2(2)) nd_ = npc_name2id(stringish(ZString(conv_str(st, &AARGO2(2))))); else - nd_ = map_id_as_npc(st->oid); + nd_ = map_id_is_npc(st->oid); assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT); - dumb_ptr nd = nd_->as_script(); + dumb_ptr nd = nd_->is_script(); npc_timerevent_stop(nd); } @@ -2732,9 +2732,9 @@ void builtin_getnpctimer(ScriptState *st) if (HARGO2(3)) nd_ = npc_name2id(stringish(ZString(conv_str(st, &AARGO2(3))))); else - nd_ = map_id_as_npc(st->oid); + nd_ = map_id_is_npc(st->oid); assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT); - dumb_ptr nd = nd_->as_script(); + dumb_ptr nd = nd_->is_script(); switch (type) { @@ -2763,9 +2763,9 @@ void builtin_setnpctimer(ScriptState *st) if (HARGO2(3)) nd_ = npc_name2id(stringish(ZString(conv_str(st, &AARGO2(3))))); else - nd_ = map_id_as_npc(st->oid); + nd_ = map_id_is_npc(st->oid); assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT); - dumb_ptr nd = nd_->as_script(); + dumb_ptr nd = nd_->is_script(); npc_settimerevent_tick(nd, tick); } @@ -2875,7 +2875,7 @@ void builtin_getareausers_sub(dumb_ptr, int *users) static void builtin_getareausers_living_sub(dumb_ptr bl, int *users) { - if (!pc_isdead(bl->as_player())) + if (!pc_isdead(bl->is_player())) (*users)++; } @@ -2915,7 +2915,7 @@ void builtin_getareausers(ScriptState *st) static void builtin_getareadropitem_sub(dumb_ptr bl, int item, int *amount) { - dumb_ptr drop = bl->as_item(); + dumb_ptr drop = bl->is_item(); if (drop->item_data.nameid == item) (*amount) += drop->item_data.amount; @@ -2925,7 +2925,7 @@ void builtin_getareadropitem_sub(dumb_ptr bl, int item, int *amount) static void builtin_getareadropitem_sub_anddelete(dumb_ptr bl, int item, int *amount) { - dumb_ptr drop = bl->as_item(); + dumb_ptr drop = bl->is_item(); if (drop->item_data.nameid == item) { @@ -3467,7 +3467,7 @@ void builtin_cmdothernpc(ScriptState *st) // Added by RoVeRT static void builtin_mobcount_sub(dumb_ptr bl, NpcEvent event, int *c) { - if (event == bl->as_mob()->npc_event) + if (event == bl->is_mob()->npc_event) (*c)++; } @@ -3923,7 +3923,7 @@ void builtin_message(ScriptState *st) static void builtin_npctalk(ScriptState *st) { - dumb_ptr nd = map_id_as_npc(st->oid); + dumb_ptr nd = map_id_is_npc(st->oid); dumb_string str = conv_str(st, &AARGO2(2)); if (nd) @@ -4020,7 +4020,7 @@ void builtin_getsavepoint(ScriptState *st) static void builtin_areatimer_sub(dumb_ptr bl, interval_t tick, NpcEvent event) { - pc_addeventtimer(bl->as_player(), tick, event); + pc_addeventtimer(bl->is_player(), tick, event); } static diff --git a/src/map/skill-pools.cpp b/src/map/skill-pools.cpp index 99d9abf..2774922 100644 --- a/src/map/skill-pools.cpp +++ b/src/map/skill-pools.cpp @@ -119,7 +119,7 @@ int skill_power(dumb_ptr sd, SkillID skill_id) int skill_power_bl(dumb_ptr bl, SkillID skill) { if (bl->bl_type == BL::PC) - return skill_power(bl->as_player(), skill); + return skill_power(bl->is_player(), skill); else return 0; } diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 46b8dda..ab5f55b 100644 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -161,11 +161,11 @@ int skill_additional_effect(dumb_ptr src, dumb_ptr bl, if (src->bl_type == BL::PC) { - sd = src->as_player(); + sd = src->is_player(); } else if (src->bl_type == BL::MOB) { - md = src->as_mob(); + md = src->is_mob(); } sc_def_phys_shield_spell = 0; @@ -243,11 +243,11 @@ int skill_attack(BF attack_type, dumb_ptr src, return 0; if (src->bl_prev == NULL || dsrc->bl_prev == NULL || bl->bl_prev == NULL) //prevよくわからない※ return 0; - if (src->bl_type == BL::PC && pc_isdead(src->as_player())) //術者?がPCですでに死んでいたら何もしない + if (src->bl_type == BL::PC && pc_isdead(src->is_player())) //術者?がPCですでに死んでいたら何もしない return 0; - if (dsrc->bl_type == BL::PC && pc_isdead(dsrc->as_player())) //術者?がPCですでに死んでいたら何もしない + if (dsrc->bl_type == BL::PC && pc_isdead(dsrc->is_player())) //術者?がPCですでに死んでいたら何もしない return 0; - if (bl->bl_type == BL::PC && pc_isdead(bl->as_player())) //対象がPCですでに死んでいたら何もしない + if (bl->bl_type == BL::PC && pc_isdead(bl->is_player())) //対象がPCですでに死んでいたら何もしない return 0; //何もしない判定ここまで @@ -282,14 +282,14 @@ int skill_attack(BF attack_type, dumb_ptr src, /* ダメージがあるなら追加効果判定 */ if (bl->bl_prev != NULL) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); if (bl->bl_type != BL::PC || !pc_isdead(sd)) { if (damage > 0) skill_additional_effect(src, bl, skillid, skilllv); if (bl->bl_type == BL::MOB && src != bl) /* スキル使用条件のMOBスキル */ { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (battle_config.mob_changetarget_byskill == 1) { int target; @@ -311,7 +311,7 @@ int skill_attack(BF attack_type, dumb_ptr src, && src == dsrc && damage > 0) { - dumb_ptr sd = src->as_player(); + dumb_ptr sd = src->is_player(); int hp = 0, sp = 0; if (sd->hp_drain_rate && dmg.damage > 0 && random_::chance({sd->hp_drain_rate, 100})) @@ -383,13 +383,13 @@ int skill_castend_damage_id(dumb_ptr src, dumb_ptr bl, nullpo_retr(1, bl); if (src->bl_type == BL::PC) - sd = src->as_player(); + sd = src->is_player(); if (sd && pc_isdead(sd)) return 1; if (bl->bl_prev == NULL) return 1; - if (bl->bl_type == BL::PC && pc_isdead(bl->as_player())) + if (bl->bl_type == BL::PC && pc_isdead(bl->is_player())) return 1; MapBlockLock lock; @@ -406,7 +406,7 @@ int skill_castend_damage_id(dumb_ptr src, dumb_ptr bl, /* 個別にダメージを与える */ if (src->bl_type == BL::MOB) { - dumb_ptr mb = src->as_mob(); + dumb_ptr mb = src->is_mob(); mb->hp = skill_area_temp_hp; if (bl->bl_id != skill_area_temp_id) skill_attack(BF::MISC, src, src, bl, @@ -417,7 +417,7 @@ int skill_castend_damage_id(dumb_ptr src, dumb_ptr bl, } else { - dumb_ptr md = src->as_mob(); + dumb_ptr md = src->is_mob(); { skill_area_temp_id = bl->bl_id; skill_area_temp_hp = battle_get_hp(src); @@ -482,9 +482,9 @@ int skill_castend_nodamage_id(dumb_ptr src, dumb_ptr bl, nullpo_retr(1, bl); if (src->bl_type == BL::PC) - sd = src->as_player(); + sd = src->is_player(); else if (src->bl_type == BL::MOB) - md = src->as_mob(); + md = src->is_mob(); sc_def_vit = 100 - (3 + battle_get_vit(bl) + battle_get_luk(bl) / 3); sc_def_vit = 100 - (3 + battle_get_vit(bl) + battle_get_luk(bl) / 3); @@ -493,11 +493,11 @@ int skill_castend_nodamage_id(dumb_ptr src, dumb_ptr bl, if (bl->bl_type == BL::PC) { - dstsd = bl->as_player(); + dstsd = bl->is_player(); } else if (bl->bl_type == BL::MOB) { - dstmd = bl->as_mob(); + dstmd = bl->is_mob(); if (sc_def_vit > 50) sc_def_vit = 50; if (sc_def_mdef > 50) @@ -557,7 +557,7 @@ interval_t skill_castfix(dumb_ptr bl, interval_t interval) if (bl->bl_type == BL::MOB) { // Crash fix [Valaris] - md = bl->as_mob(); + md = bl->is_mob(); skill = md->skillid; lv = md->skilllv; } @@ -629,7 +629,7 @@ int skill_castcancel(dumb_ptr bl, int) if (bl->bl_type == BL::PC) { - dumb_ptr sd = bl->as_player(); + dumb_ptr sd = bl->is_player(); tick_t tick = gettick(); sd->canact_tick = tick; sd->canmove_tick = tick; @@ -638,7 +638,7 @@ int skill_castcancel(dumb_ptr bl, int) } else if (bl->bl_type == BL::MOB) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); if (md->skilltimer) { md->skilltimer.cancel(); @@ -773,7 +773,7 @@ void skill_status_change_end(dumb_ptr bl, StatusChange type, TimerDa clif_changeoption(bl); if (bl->bl_type == BL::PC && calc_flag) - pc_calcstatus(bl->as_player(), 0); /* ステータス再計算 */ + pc_calcstatus(bl->is_player(), 0); /* ステータス再計算 */ } int skill_update_heal_animation(dumb_ptr sd) @@ -781,10 +781,10 @@ int skill_update_heal_animation(dumb_ptr sd) const Opt2 mask = Opt2::_heal; nullpo_ret(sd); - bool was_active = bool(sd->opt2 & mask); + bool wis_active = bool(sd->opt2 & mask); bool is_active = sd->quick_regeneration_hp.amount > 0; - if (was_active == is_active) + if (wis_active == is_active) return 0; // no update if (is_active) @@ -814,7 +814,7 @@ void skill_status_change_timer(TimerData *tid, tick_t tick, int id, StatusChange return; if (bl->bl_type == BL::PC) - sd = bl->as_player(); + sd = bl->is_player(); //sc_count=battle_get_sc_count(bl); //使ってない? @@ -844,11 +844,11 @@ void skill_status_change_timer(TimerData *tid, tick_t tick, int id, StatusChange if (bl->bl_type == BL::PC) { hp = 3 + hp * 3 / 200; - pc_heal(bl->as_player(), -hp, 0); + pc_heal(bl->is_player(), -hp, 0); } else if (bl->bl_type == BL::MOB) { - dumb_ptr md = bl->as_mob(); + dumb_ptr md = bl->is_mob(); hp = 3 + hp / 200; md->hp -= hp; } @@ -940,7 +940,7 @@ int skill_status_effect(dumb_ptr bl, StatusChange type, return 0; if (bl->bl_type == BL::PC) { - sd = bl->as_player(); + sd = bl->is_player(); } else if (bl->bl_type == BL::MOB) { -- cgit v1.2.3-60-g2f50