summaryrefslogtreecommitdiff
path: root/src/map/script-fun.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/script-fun.cpp')
-rw-r--r--src/map/script-fun.cpp69
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'),