summaryrefslogtreecommitdiff
path: root/src/map/script.cpp
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2013-05-25 13:49:50 -0700
committerBen Longbons <b.r.longbons@gmail.com>2013-05-25 13:49:50 -0700
commit1d0e18a186f67844ccd873eabb56ebdaa3f47f11 (patch)
tree94199c6dbcb6b4a86584c303f6e1e72073873f01 /src/map/script.cpp
parent87218e07b2bc89593eae1cb4abe859cd1a7eaa0f (diff)
downloadtmwa-1d0e18a186f67844ccd873eabb56ebdaa3f47f11.tar.gz
tmwa-1d0e18a186f67844ccd873eabb56ebdaa3f47f11.tar.bz2
tmwa-1d0e18a186f67844ccd873eabb56ebdaa3f47f11.tar.xz
tmwa-1d0e18a186f67844ccd873eabb56ebdaa3f47f11.zip
Switch block_list and subclasses to dumb_ptr
Now we're well-defined, since we're actually calling ctors and dtors. Most of this code will not survive long ...
Diffstat (limited to 'src/map/script.cpp')
-rw-r--r--src/map/script.cpp241
1 files changed, 127 insertions, 114 deletions
diff --git a/src/map/script.cpp b/src/map/script.cpp
index dfb6dbe..6d65fd2 100644
--- a/src/map/script.cpp
+++ b/src/map/script.cpp
@@ -995,9 +995,9 @@ enum
*------------------------------------------
*/
static
-struct map_session_data *script_rid2sd(ScriptState *st)
+dumb_ptr<map_session_data> script_rid2sd(ScriptState *st)
{
- struct map_session_data *sd = map_id2sd(st->rid);
+ dumb_ptr<map_session_data> sd = map_id2sd(st->rid);
if (!sd)
{
PRINTF("script_rid2sd: fatal error ! player not attached!\n");
@@ -1012,7 +1012,7 @@ struct map_session_data *script_rid2sd(ScriptState *st)
static
void get_val(ScriptState *st, struct script_data *data)
{
- struct map_session_data *sd = NULL;
+ dumb_ptr<map_session_data> sd = NULL;
if (data->type == ScriptCode::NAME)
{
char *name = str_buf + str_data[data->u.num & 0x00ffffff].str;
@@ -1112,7 +1112,7 @@ struct script_data get_val2(ScriptState *st, int num)
*------------------------------------------
*/
static
-void set_reg(struct map_session_data *sd, int num, const char *name, struct script_data vd)
+void set_reg(dumb_ptr<map_session_data> sd, int num, const char *name, struct script_data vd)
{
char prefix = *name;
char postfix = name[strlen(name) - 1];
@@ -1164,7 +1164,7 @@ void set_reg(struct map_session_data *sd, int num, const char *name, struct scri
}
static
-void set_reg(struct map_session_data *sd, int num, const char *name, int id)
+void set_reg(dumb_ptr<map_session_data> sd, int num, const char *name, int id)
{
struct script_data vd;
vd.u.num = id;
@@ -1172,7 +1172,7 @@ void set_reg(struct map_session_data *sd, int num, const char *name, int id)
}
static
-void set_reg(struct map_session_data *sd, int num, const char *name, const char *zd)
+void set_reg(dumb_ptr<map_session_data> sd, int num, const char *name, const char *zd)
{
struct script_data vd;
vd.u.str = zd;
@@ -1501,7 +1501,7 @@ void builtin_menu(ScriptState *st)
int menu_choices = 0;
int finished_menu_items = 0; // [fate] set to 1 after we hit the first empty string
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
sd = script_rid2sd(st);
@@ -1609,7 +1609,7 @@ static
void builtin_isat(ScriptState *st)
{
int x, y;
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
x = conv_num(st, &(st->stack->stack_data[st->start + 3]));
@@ -1632,7 +1632,7 @@ static
void builtin_warp(ScriptState *st)
{
int x, y;
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
x = conv_num(st, &(st->stack->stack_data[st->start + 3]));
@@ -1664,12 +1664,13 @@ void builtin_warp(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_areawarp_sub(struct block_list *bl, const char *mapname, int x, int y)
+void builtin_areawarp_sub(dumb_ptr<block_list> bl, const char *mapname, int x, int y)
{
+ dumb_ptr<map_session_data> sd = bl->as_player();
if (strcmp(mapname, "Random") == 0)
- pc_randomwarp((struct map_session_data *) bl, BeingRemoveWhy::WARPED);
+ pc_randomwarp(sd, BeingRemoveWhy::WARPED);
else
- pc_setpos((struct map_session_data *) bl, mapname, x, y, BeingRemoveWhy::GONE);
+ pc_setpos(sd, mapname, x, y, BeingRemoveWhy::GONE);
}
static
@@ -1743,7 +1744,7 @@ void builtin_percentheal(ScriptState *st)
static
void builtin_input(ScriptState *st)
{
- struct map_session_data *sd = NULL;
+ dumb_ptr<map_session_data> sd = NULL;
int num =
(st->end >
st->start + 2) ? st->stack->stack_data[st->start + 2].u.num : 0;
@@ -1836,7 +1837,7 @@ void builtin_if (ScriptState *st)
static
void builtin_set(ScriptState *st)
{
- struct map_session_data *sd = NULL;
+ dumb_ptr<map_session_data> sd = NULL;
int num = st->stack->stack_data[st->start + 2].u.num;
char *name = str_buf + str_data[num & 0x00ffffff].str;
char prefix = *name;
@@ -1873,7 +1874,7 @@ void builtin_set(ScriptState *st)
static
void builtin_setarray(ScriptState *st)
{
- struct map_session_data *sd = NULL;
+ dumb_ptr<map_session_data> sd = NULL;
int num = st->stack->stack_data[st->start + 2].u.num;
char *name = str_buf + str_data[num & 0x00ffffff].str;
char prefix = *name;
@@ -1904,7 +1905,7 @@ void builtin_setarray(ScriptState *st)
static
void builtin_cleararray(ScriptState *st)
{
- struct map_session_data *sd = NULL;
+ dumb_ptr<map_session_data> sd = NULL;
int num = st->stack->stack_data[st->start + 2].u.num;
char *name = str_buf + str_data[num & 0x00ffffff].str;
char prefix = *name;
@@ -2014,7 +2015,7 @@ static
void builtin_countitem(ScriptState *st)
{
int nameid = 0, count = 0, i;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct script_data *data;
@@ -2055,7 +2056,7 @@ static
void builtin_checkweight(ScriptState *st)
{
int nameid = 0, amount;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct script_data *data;
sd = script_rid2sd(st);
@@ -2100,7 +2101,7 @@ void builtin_getitem(ScriptState *st)
{
int nameid, amount;
struct item item_tmp;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct script_data *data;
sd = script_rid2sd(st);
@@ -2155,7 +2156,7 @@ void builtin_makeitem(ScriptState *st)
int nameid, amount, flag = 0;
int x, y, m;
struct item item_tmp;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct script_data *data;
sd = script_rid2sd(st);
@@ -2205,7 +2206,7 @@ static
void builtin_delitem(ScriptState *st)
{
int nameid = 0, amount, i;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct script_data *data;
sd = script_rid2sd(st);
@@ -2269,7 +2270,7 @@ void builtin_delitem(ScriptState *st)
static
void builtin_readparam(ScriptState *st)
{
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
SP type = SP(conv_num(st, &(st->stack->stack_data[st->start + 2])));
if (st->end > st->start + 3)
@@ -2295,7 +2296,7 @@ static
void builtin_getcharid(ScriptState *st)
{
int num;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
if (st->end > st->start + 3)
@@ -2347,7 +2348,7 @@ char *builtin_getpartyname_sub(int party_id)
static
void builtin_strcharinfo(ScriptState *st)
{
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
int num;
sd = script_rid2sd(st);
@@ -2401,7 +2402,7 @@ static
void builtin_getequipid(ScriptState *st)
{
int i, num;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct item_data *item;
sd = script_rid2sd(st);
@@ -2434,7 +2435,7 @@ static
void builtin_getequipname(ScriptState *st)
{
int i, num;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
struct item_data *item;
char *buf;
@@ -2467,7 +2468,7 @@ void builtin_statusup2(ScriptState *st)
{
SP type = SP(conv_num(st, &(st->stack->stack_data[st->start + 2])));
int val = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
pc_statusup2(sd, type, val);
}
@@ -2481,7 +2482,7 @@ void builtin_bonus(ScriptState *st)
{
SP type = SP(conv_num(st, &(st->stack->stack_data[st->start + 2])));
int val = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
pc_bonus(sd, type, val);
}
@@ -2496,7 +2497,7 @@ void builtin_bonus2(ScriptState *st)
SP type = SP(conv_num(st, &(st->stack->stack_data[st->start + 2])));
int type2 = conv_num(st, &(st->stack->stack_data[st->start + 3]));
int val = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
pc_bonus2(sd, type, type2, val);
}
@@ -2509,7 +2510,7 @@ static
void builtin_skill(ScriptState *st)
{
int level, flag = 1;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
SkillID id = SkillID(conv_num(st, &(st->stack->stack_data[st->start + 2])));
level = conv_num(st, &(st->stack->stack_data[st->start + 3]));
@@ -2529,7 +2530,7 @@ static
void builtin_setskill(ScriptState *st)
{
int level;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
SkillID id = static_cast<SkillID>(conv_num(st, &(st->stack->stack_data[st->start + 2])));
level = conv_num(st, &(st->stack->stack_data[st->start + 3]));
@@ -2578,7 +2579,7 @@ void builtin_end(ScriptState *st)
static
void builtin_getopt2(ScriptState *st)
{
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
sd = script_rid2sd(st);
@@ -2594,7 +2595,7 @@ void builtin_getopt2(ScriptState *st)
static
void builtin_setopt2(ScriptState *st)
{
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
Opt2 new_opt2 = Opt2(conv_num(st, &(st->stack->stack_data[st->start + 2])));
sd = script_rid2sd(st);
@@ -2729,7 +2730,7 @@ void builtin_openstorage(ScriptState *st)
{
// int sync = 0;
// if (st->end >= 3) sync = conv_num(st,& (st->stack->stack_data[st->start+2]));
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
// if (sync) {
st->state = STOP;
@@ -2746,7 +2747,7 @@ void builtin_openstorage(ScriptState *st)
static
void builtin_getexp(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
int base = 0, job = 0;
base = conv_num(st, &(st->stack->stack_data[st->start + 2]));
@@ -2811,19 +2812,20 @@ void builtin_areamonster(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_killmonster_sub(struct block_list *bl, const char *event, int allflag)
+void builtin_killmonster_sub(dumb_ptr<block_list> bl, const char *event, int allflag)
{
+ dumb_ptr<mob_data> md = bl->as_mob();
if (!allflag)
{
- if (strcmp(event, ((struct mob_data *) bl)->npc_event) == 0)
- mob_delete((struct mob_data *) bl);
+ if (strcmp(event, md->npc_event) == 0)
+ mob_delete(md);
return;
}
else if (allflag)
{
- if (((struct mob_data *) bl)->spawndelay1 == static_cast<interval_t>(-1)
- && ((struct mob_data *) bl)->spawndelay2 == static_cast<interval_t>(-1))
- mob_delete((struct mob_data *) bl);
+ if (md->spawndelay1 == static_cast<interval_t>(-1)
+ && md->spawndelay2 == static_cast<interval_t>(-1))
+ mob_delete(md);
return;
}
}
@@ -2844,9 +2846,9 @@ void builtin_killmonster(ScriptState *st)
}
static
-void builtin_killmonsterall_sub(struct block_list *bl)
+void builtin_killmonsterall_sub(dumb_ptr<block_list> bl)
{
- mob_delete((struct mob_data *) bl);
+ mob_delete(bl->as_mob());
}
static
@@ -2891,11 +2893,13 @@ void builtin_addtimer(ScriptState *st)
static
void builtin_initnpctimer(ScriptState *st)
{
- struct npc_data *nd;
+ dumb_ptr<npc_data> nd_;
if (st->end > st->start + 2)
- nd = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
+ nd_ = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
else
- nd = (struct npc_data *) map_id2bl(st->oid);
+ nd_ = map_id_as_npc(st->oid);
+ assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT);
+ dumb_ptr<npc_data_script> nd = nd_->as_script();
npc_settimerevent_tick(nd, interval_t::zero());
npc_timerevent_start(nd);
@@ -2908,11 +2912,13 @@ void builtin_initnpctimer(ScriptState *st)
static
void builtin_startnpctimer(ScriptState *st)
{
- struct npc_data *nd;
+ dumb_ptr<npc_data> nd_;
if (st->end > st->start + 2)
- nd = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
+ nd_ = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
else
- nd = (struct npc_data *) map_id2bl(st->oid);
+ nd_ = map_id_as_npc(st->oid);
+ assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT);
+ dumb_ptr<npc_data_script> nd = nd_->as_script();
npc_timerevent_start(nd);
}
@@ -2924,11 +2930,13 @@ void builtin_startnpctimer(ScriptState *st)
static
void builtin_stopnpctimer(ScriptState *st)
{
- struct npc_data *nd;
+ dumb_ptr<npc_data> nd_;
if (st->end > st->start + 2)
- nd = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
+ nd_ = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
else
- nd = (struct npc_data *) map_id2bl(st->oid);
+ nd_ = map_id_as_npc(st->oid);
+ assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT);
+ dumb_ptr<npc_data_script> nd = nd_->as_script();
npc_timerevent_stop(nd);
}
@@ -2940,13 +2948,15 @@ void builtin_stopnpctimer(ScriptState *st)
static
void builtin_getnpctimer(ScriptState *st)
{
- struct npc_data *nd;
+ dumb_ptr<npc_data> nd_;
int type = conv_num(st, &(st->stack->stack_data[st->start + 2]));
int val = 0;
if (st->end > st->start + 3)
- nd = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 3])));
+ nd_ = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 3])));
else
- nd = (struct npc_data *) map_id2bl(st->oid);
+ nd_ = map_id_as_npc(st->oid);
+ assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT);
+ dumb_ptr<npc_data_script> nd = nd_->as_script();
switch (type)
{
@@ -2954,10 +2964,10 @@ void builtin_getnpctimer(ScriptState *st)
val = (int) npc_gettimerevent_tick(nd).count();
break;
case 1:
- val = (nd->u.scr.nexttimer >= 0);
+ val = (nd->scr.nexttimer >= 0);
break;
case 2:
- val = nd->u.scr.timeramount;
+ val = nd->scr.timeramount;
break;
}
push_val(st->stack, ScriptCode::INT, val);
@@ -2970,12 +2980,14 @@ void builtin_getnpctimer(ScriptState *st)
static
void builtin_setnpctimer(ScriptState *st)
{
- struct npc_data *nd;
+ dumb_ptr<npc_data> nd_;
interval_t tick = static_cast<interval_t>(conv_num(st, &(st->stack->stack_data[st->start + 2])));
if (st->end > st->start + 3)
- nd = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 3])));
+ nd_ = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 3])));
else
- nd = (struct npc_data *) map_id2bl(st->oid);
+ nd_ = map_id_as_npc(st->oid);
+ assert (nd_ && nd_->npc_subtype == NpcSubtype::SCRIPT);
+ dumb_ptr<npc_data_script> nd = nd_->as_script();
npc_settimerevent_tick(nd, tick);
}
@@ -2993,8 +3005,8 @@ void builtin_announce(ScriptState *st)
if (flag & 0x0f)
{
- struct block_list *bl = (flag & 0x08) ? map_id2bl(st->oid) :
- (struct block_list *) script_rid2sd(st);
+ dumb_ptr<block_list> bl = (flag & 0x08) ? map_id2bl(st->oid) :
+ (dumb_ptr<block_list>) script_rid2sd(st);
clif_GMmessage(bl, str, flag);
}
else
@@ -3006,7 +3018,7 @@ void builtin_announce(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_mapannounce_sub(struct block_list *bl, const char *str, int flag)
+void builtin_mapannounce_sub(dumb_ptr<block_list> bl, const char *str, int flag)
{
clif_GMmessage(bl, str, flag | 3);
}
@@ -3034,7 +3046,7 @@ static
void builtin_getusers(ScriptState *st)
{
int flag = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- struct block_list *bl = map_id2bl((flag & 0x08) ? st->oid : st->rid);
+ dumb_ptr<block_list> bl = map_id2bl((flag & 0x08) ? st->oid : st->rid);
int val = 0;
switch (flag & 0x07)
{
@@ -3070,15 +3082,15 @@ void builtin_getmapusers(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_getareausers_sub(struct block_list *, int *users)
+void builtin_getareausers_sub(dumb_ptr<block_list>, int *users)
{
(*users)++;
}
static
-void builtin_getareausers_living_sub(struct block_list *bl, int *users)
+void builtin_getareausers_living_sub(dumb_ptr<block_list> bl, int *users)
{
- if (!pc_isdead((struct map_session_data *)bl))
+ if (!pc_isdead(bl->as_player()))
(*users)++;
}
@@ -3112,9 +3124,9 @@ void builtin_getareausers(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_getareadropitem_sub(struct block_list *bl, int item, int *amount)
+void builtin_getareadropitem_sub(dumb_ptr<block_list> bl, int item, int *amount)
{
- struct flooritem_data *drop = (struct flooritem_data *) bl;
+ dumb_ptr<flooritem_data> drop = bl->as_item();
if (drop->item_data.nameid == item)
(*amount) += drop->item_data.amount;
@@ -3122,11 +3134,12 @@ void builtin_getareadropitem_sub(struct block_list *bl, int item, int *amount)
}
static
-void builtin_getareadropitem_sub_anddelete(struct block_list *bl, int item, int *amount)
+void builtin_getareadropitem_sub_anddelete(dumb_ptr<block_list> bl, int item, int *amount)
{
- struct flooritem_data *drop = (struct flooritem_data *) bl;
+ dumb_ptr<flooritem_data> drop = bl->as_item();
- if (drop->item_data.nameid == item) {
+ if (drop->item_data.nameid == item)
+ {
(*amount) += drop->item_data.amount;
clif_clearflooritem(drop, 0);
map_delobject(drop->bl_id, drop->bl_type);
@@ -3205,7 +3218,7 @@ void builtin_disablenpc(ScriptState *st)
static
void builtin_sc_start(ScriptState *st)
{
- struct block_list *bl;
+ dumb_ptr<block_list> bl;
int val1;
StatusChange type = static_cast<StatusChange>(conv_num(st, &(st->stack->stack_data[st->start + 2])));
interval_t tick = static_cast<interval_t>(conv_num(st, &(st->stack->stack_data[st->start + 3])));
@@ -3233,7 +3246,7 @@ void builtin_sc_start(ScriptState *st)
static
void builtin_sc_end(ScriptState *st)
{
- struct block_list *bl;
+ dumb_ptr<block_list> bl;
StatusChange type = StatusChange(conv_num(st, &(st->stack->stack_data[st->start + 2])));
bl = map_id2bl(st->rid);
skill_status_change_end(bl, type, nullptr);
@@ -3242,7 +3255,7 @@ void builtin_sc_end(ScriptState *st)
static
void builtin_sc_check(ScriptState *st)
{
- struct block_list *bl;
+ dumb_ptr<block_list> bl;
StatusChange type = StatusChange(conv_num(st, &(st->stack->stack_data[st->start + 2])));
bl = map_id2bl(st->rid);
@@ -3269,7 +3282,7 @@ void builtin_debugmes(ScriptState *st)
static
void builtin_resetstatus(ScriptState *st)
{
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
sd = script_rid2sd(st);
pc_resetstate(sd);
}
@@ -3281,7 +3294,7 @@ void builtin_resetstatus(ScriptState *st)
static
void builtin_changesex(ScriptState *st)
{
- struct map_session_data *sd = NULL;
+ dumb_ptr<map_session_data> sd = NULL;
sd = script_rid2sd(st);
if (sd->status.sex == 0)
@@ -3658,9 +3671,9 @@ void builtin_cmdothernpc(ScriptState *st) // Added by RoVeRT
}
static
-void builtin_mobcount_sub(struct block_list *bl, const char *event, int *c)
+void builtin_mobcount_sub(dumb_ptr<block_list> bl, const char *event, int *c)
{
- if (strcmp(event, ((struct mob_data *) bl)->npc_event) == 0)
+ if (strcmp(event, bl->as_mob()->npc_event) == 0)
(*c)++;
}
@@ -3687,8 +3700,8 @@ static
void builtin_marriage(ScriptState *st)
{
const char *partner = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- struct map_session_data *sd = script_rid2sd(st);
- struct map_session_data *p_sd = map_nick2sd(partner);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> p_sd = map_nick2sd(partner);
if (sd == NULL || p_sd == NULL || pc_marriage(sd, p_sd) < 0)
{
@@ -3701,7 +3714,7 @@ void builtin_marriage(ScriptState *st)
static
void builtin_divorce(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
st->state = STOP; // rely on pc_divorce to restart
@@ -3765,7 +3778,7 @@ void builtin_getspellinvocation(ScriptState *st)
static
void builtin_getpartnerid2(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
push_val(st->stack, ScriptCode::INT, sd->status.partner_id);
}
@@ -3777,7 +3790,7 @@ void builtin_getpartnerid2(ScriptState *st)
static
void builtin_getinventorylist(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
int i, j = 0;
if (!sd)
return;
@@ -3815,7 +3828,7 @@ void builtin_getinventorylist(ScriptState *st)
static
void builtin_getactivatedpoolskilllist(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
SkillID pool_skills[MAX_SKILL_POOL];
int skill_pool_size = skill_pool(sd, pool_skills);
int i, count = 0;
@@ -3847,7 +3860,7 @@ void builtin_getactivatedpoolskilllist(ScriptState *st)
static
void builtin_getunactivatedpoolskilllist(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
int i, count = 0;
if (!sd)
@@ -3877,7 +3890,7 @@ void builtin_getunactivatedpoolskilllist(ScriptState *st)
static
void builtin_poolskill(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
SkillID skill_id = SkillID(conv_num(st, &(st->stack->stack_data[st->start + 2])));
skill_pool_activate(sd, skill_id);
@@ -3888,7 +3901,7 @@ void builtin_poolskill(ScriptState *st)
static
void builtin_unpoolskill(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
SkillID skill_id = SkillID(conv_num(st, &(st->stack->stack_data[st->start + 2])));
skill_pool_deactivate(sd, skill_id);
@@ -3913,7 +3926,7 @@ void builtin_misceffect(ScriptState *st)
int type;
int id = 0;
const char *name = NULL;
- struct block_list *bl = NULL;
+ dumb_ptr<block_list> bl = NULL;
type = conv_num(st, &(st->stack->stack_data[st->start + 2]));
@@ -3931,7 +3944,7 @@ void builtin_misceffect(ScriptState *st)
if (name)
{
- struct map_session_data *sd = map_nick2sd(name);
+ dumb_ptr<map_session_data> sd = map_nick2sd(name);
if (sd)
bl = sd;
}
@@ -3941,7 +3954,7 @@ void builtin_misceffect(ScriptState *st)
bl = map_id2bl(st->oid);
else
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
if (sd)
bl = sd;
}
@@ -3958,7 +3971,7 @@ void builtin_misceffect(ScriptState *st)
static
void builtin_specialeffect(ScriptState *st)
{
- struct block_list *bl = map_id2bl(st->oid);
+ dumb_ptr<block_list> bl = map_id2bl(st->oid);
if (bl == NULL)
return;
@@ -3973,7 +3986,7 @@ void builtin_specialeffect(ScriptState *st)
static
void builtin_specialeffect2(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
if (sd == NULL)
return;
@@ -3993,7 +4006,7 @@ void builtin_specialeffect2(ScriptState *st)
static
void builtin_nude(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
if (sd == NULL)
return;
@@ -4013,7 +4026,7 @@ void builtin_nude(ScriptState *st)
static
void builtin_unequipbyid(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
if (sd == NULL)
return;
@@ -4037,7 +4050,7 @@ void builtin_unequipbyid(ScriptState *st)
static
void builtin_gmcommand(ScriptState *st)
{
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
sd = script_rid2sd(st);
const char *cmd = conv_str(st, &(st->stack->stack_data[st->start + 2]));
@@ -4055,7 +4068,7 @@ static
void builtin_npcwarp(ScriptState *st)
{
int x, y;
- struct npc_data *nd = NULL;
+ dumb_ptr<npc_data> nd = NULL;
x = conv_num(st, &(st->stack->stack_data[st->start + 2]));
y = conv_num(st, &(st->stack->stack_data[st->start + 3]));
@@ -4090,7 +4103,7 @@ void builtin_npcwarp(ScriptState *st)
static
void builtin_message(ScriptState *st)
{
- struct map_session_data *pl_sd = NULL;
+ dumb_ptr<map_session_data> pl_sd = NULL;
const char *player = conv_str(st, &(st->stack->stack_data[st->start + 2]));
const char *msg = conv_str(st, &(st->stack->stack_data[st->start + 3]));
@@ -4112,7 +4125,7 @@ void builtin_npctalk(ScriptState *st)
{
char message[255];
- struct npc_data *nd = (struct npc_data *) map_id2bl(st->oid);
+ dumb_ptr<npc_data> nd = map_id_as_npc(st->oid);
const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
if (nd)
@@ -4132,7 +4145,7 @@ void builtin_npctalk(ScriptState *st)
static
void builtin_getlook(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
LOOK type = LOOK(conv_num(st, &(st->stack->stack_data[st->start + 2])));
int val = -1;
@@ -4178,7 +4191,7 @@ void builtin_getsavepoint(ScriptState *st)
{
int x, y, type;
char *mapname;
- struct map_session_data *sd;
+ dumb_ptr<map_session_data> sd;
sd = script_rid2sd(st);
@@ -4207,9 +4220,9 @@ void builtin_getsavepoint(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_areatimer_sub(struct block_list *bl, interval_t tick, const char *event)
+void builtin_areatimer_sub(dumb_ptr<block_list> bl, interval_t tick, const char *event)
{
- pc_addeventtimer((struct map_session_data *) bl, tick, event);
+ pc_addeventtimer(bl->as_player(), tick, event);
}
static
@@ -4241,7 +4254,7 @@ static
void builtin_isin(ScriptState *st)
{
int x1, y1, x2, y2;
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
x1 = conv_num(st, &(st->stack->stack_data[st->start + 3]));
@@ -4263,8 +4276,8 @@ void builtin_isin(ScriptState *st)
static
void builtin_shop(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
- struct npc_data *nd;
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
+ dumb_ptr<npc_data> nd;
if (!sd)
return;
@@ -4284,7 +4297,7 @@ void builtin_shop(ScriptState *st)
static
void builtin_isdead(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
push_val(st->stack, ScriptCode::INT, pc_isdead(sd));
}
@@ -4299,7 +4312,7 @@ void builtin_fakenpcname(ScriptState *st)
const char *name = conv_str(st, &(st->stack->stack_data[st->start + 2]));
const char *newname = conv_str(st, &(st->stack->stack_data[st->start + 3]));
int newsprite = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- struct npc_data *nd = npc_name2id(name);
+ dumb_ptr<npc_data> nd = npc_name2id(name);
if (!nd)
return;
strzcpy(nd->name, newname, sizeof(nd->name));
@@ -4318,7 +4331,7 @@ void builtin_fakenpcname(ScriptState *st)
static
void builtin_getx(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
push_val(st->stack, ScriptCode::INT, sd->bl_x);
}
@@ -4330,7 +4343,7 @@ void builtin_getx(ScriptState *st)
static
void builtin_gety(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
push_val(st->stack, ScriptCode::INT, sd->bl_y);
}
@@ -4341,7 +4354,7 @@ void builtin_gety(ScriptState *st)
static
void builtin_getmap(ScriptState *st)
{
- struct map_session_data *sd = script_rid2sd(st);
+ dumb_ptr<map_session_data> sd = script_rid2sd(st);
// A map_data lives essentially forever.
push_str(st->stack, ScriptCode::CONSTSTR, map[sd->bl_m].name);
@@ -4832,7 +4845,7 @@ void run_script_main(const ScriptCode *script, int pos_, int, int,
break;
case END:
{
- struct map_session_data *sd = map_id2sd(st->rid);
+ dumb_ptr<map_session_data> sd = map_id2sd(st->rid);
st->pos = -1;
if (sd && sd->npc_id == st->oid)
npc_event_dequeue(sd);
@@ -4848,7 +4861,7 @@ void run_script_main(const ScriptCode *script, int pos_, int, int,
if (st->state != END)
{
// 再開するためにスタック情報を保存
- struct map_session_data *sd = map_id2sd(st->rid);
+ dumb_ptr<map_session_data> sd = map_id2sd(st->rid);
if (sd /* && sd->npc_stackbuf==NULL */ )
{
if (sd->npc_stackbuf)
@@ -4880,7 +4893,7 @@ int run_script_l(const ScriptCode *script, int pos_, int rid, int oid,
{
struct script_stack stack;
ScriptState st;
- struct map_session_data *sd = map_id2sd(rid);
+ dumb_ptr<map_session_data> sd = map_id2sd(rid);
const ScriptCode *rootscript = script;
int i;
if (script == NULL || pos_ < 0)