diff options
Diffstat (limited to 'src/map/script-fun.cpp')
-rw-r--r-- | src/map/script-fun.cpp | 69 |
1 files changed, 64 insertions, 5 deletions
diff --git a/src/map/script-fun.cpp b/src/map/script-fun.cpp index e42dcd2..8dc1989 100644 --- a/src/map/script-fun.cpp +++ b/src/map/script-fun.cpp @@ -117,6 +117,10 @@ void builtin_mes(ScriptState *st) clif_scriptmes(sd, st->oid, mes); } +/*========================================== + * + *------------------------------------------ + */ static void builtin_mesq(ScriptState *st) { @@ -131,6 +135,31 @@ void builtin_mesq(ScriptState *st) clif_scriptmes(sd, st->oid, RString(mesq)); } +/*========================================== + * + *------------------------------------------ + */ +static +void builtin_mesn(ScriptState *st) +{ + dumb_ptr<map_session_data> sd = script_rid2sd(st); + dumb_ptr<npc_data> nd; + nd = map_id_is_npc(st->oid); + script_nullpo_end(nd, "npc not found"); + script_nullpo_end(sd, "player not found"); + sd->state.npc_dialog_mes = 1; + RString mes = HARG(0) ? conv_str(st, &AARG(0)) : RString(nd->name.xislice_h(std::find(nd->name.begin(), nd->name.end(), '#'))); // strnpcinf + MString mesq; + mesq += "["_s; + mesq += mes; + mesq += "]"_s; + clif_scriptmes(sd, st->oid, RString(mesq)); +} + +/*========================================== + * + *------------------------------------------ + */ static void builtin_clear(ScriptState *st) { @@ -2423,7 +2452,7 @@ void builtin_overrideattack(ScriptState *st) sd->attack_spell_override = BlockId(); pc_set_weapon_icon(sd, 0, StatusChange::ZERO, ItemNameId()); pc_set_attack_info(sd, interval_t::zero(), 0); - pc_calcstatus(sd, 0); + pc_calcstatus(sd, (int)CalcStatusKind::NORMAL_RECALC); } } @@ -2491,7 +2520,7 @@ void builtin_setopt2(ScriptState *st) return; sd->opt2 = new_opt2; clif_changeoption(sd); - pc_calcstatus(sd, 0); + pc_calcstatus(sd, (int)CalcStatusKind::NORMAL_RECALC); } @@ -2700,6 +2729,9 @@ void builtin_mobinfo(ScriptState *st) case MobInfo::MDEF: info = get_mob_db(mob_id).mdef; break; + case MobInfo::CRITICAL_DEF: + info = get_mob_db(mob_id).critical_def; + break; case MobInfo::STR: info = get_mob_db(mob_id).attrs[ATTR::STR]; break; @@ -2757,6 +2789,19 @@ void builtin_mobinfo(ScriptState *st) case MobInfo::MUTATION_POWER: info = get_mob_db(mob_id).mutation_power; break; + case MobInfo::DROPID0: + info = unwrap<ItemNameId>(get_mob_db(mob_id).dropitem[0].nameid); + break; + case MobInfo::DROPNAME0: + { + Option<P<struct item_data>> i_data = Some(itemdb_search(get_mob_db(mob_id).dropitem[0].nameid)); + info_str = i_data.pmd_pget(&item_data::name).copy_or(stringish<ItemName>(""_s)); + mode = 1; + } + break; + case MobInfo::DROPPERCENT0: + info = get_mob_db(mob_id).dropitem[0].p.num; + break; case MobInfo::DROPID1: info = unwrap<ItemNameId>(get_mob_db(mob_id).dropitem[0].nameid); break; @@ -2861,6 +2906,19 @@ void builtin_mobinfo(ScriptState *st) case MobInfo::DROPPERCENT8: info = get_mob_db(mob_id).dropitem[7].p.num; break; + case MobInfo::DROPID9: + info = unwrap<ItemNameId>(get_mob_db(mob_id).dropitem[7].nameid); + break; + case MobInfo::DROPNAME9: + { + Option<P<struct item_data>> i_data = Some(itemdb_search(get_mob_db(mob_id).dropitem[7].nameid)); + info_str = i_data.pmd_pget(&item_data::name).copy_or(stringish<ItemName>(""_s)); + mode = 1; + } + break; + case MobInfo::DROPPERCENT9: + info = get_mob_db(mob_id).dropitem[7].p.num; + break; default: PRINTF("builtin_mobinfo: unknown request\n"_fmt); push_int<ScriptDataInt>(st->stack, -1); @@ -3842,6 +3900,7 @@ void builtin_sc_start(ScriptState *st) case StatusChange::SC_COOLDOWN_AR: case StatusChange::SC_COOLDOWN_ENCH: case StatusChange::SC_COOLDOWN_KOY: + case StatusChange::SC_COOLDOWN_UPMARMU: break; default: @@ -4780,7 +4839,7 @@ void builtin_nude(ScriptState *st) if (idx.ok()) pc_unequipitem(sd, idx, CalcStatus::LATER); } - pc_calcstatus(sd, 0); + pc_calcstatus(sd, (int)CalcStatusKind::NORMAL_RECALC); } @@ -4803,7 +4862,7 @@ void builtin_unequipbyid(ScriptState *st) pc_unequipitem(sd, idx, CalcStatus::LATER); } - pc_calcstatus(sd, 0); + pc_calcstatus(sd, (int)CalcStatusKind::NORMAL_RECALC); } @@ -5516,7 +5575,6 @@ void builtin_mapexit(ScriptState *) runflag = 0; } - #define BUILTIN(func, args, ret) \ {builtin_##func, #func ## _s, args, ret} @@ -5524,6 +5582,7 @@ BuiltinFunction builtin_functions[] = { BUILTIN(mes, "?"_s, '\0'), BUILTIN(mesq, "?"_s, '\0'), + BUILTIN(mesn, "?"_s, '\0'), BUILTIN(clear, ""_s, '\0'), BUILTIN(goto, "L"_s, '\0'), BUILTIN(callfunc, "F"_s, '\0'), |