summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/clif.c2
-rw-r--r--src/map/npc.c4
-rw-r--r--src/map/pc.c7
-rw-r--r--src/map/script.c163
4 files changed, 104 insertions, 72 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 8bbf112..b0dd487 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -2609,7 +2609,7 @@ int clif_changelook_towards (struct block_list *bl, int type, int val,
WBUFB (buf, 6) = type;
if (sd->equip_index[equip_point] >= 0
- && sd->inventory_data[sd->equip_index[2]])
+ && sd->inventory_data[sd->equip_index[equip_point]])
{
if (sd->
inventory_data[sd->equip_index[equip_point]]->view_id > 0)
diff --git a/src/map/npc.c b/src/map/npc.c
index 85ac6e9..a4e1cf1 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -2318,9 +2318,9 @@ int do_init_npc (void)
|| (j && line[j - 1] == ',')))
line[j++] = ' ';
}
- else if (line[i] == '\t')
+ else if (line[i] == '\t' || line[i] == '|')
{
- if (!(j && line[j - 1] == '\t'))
+ if (!(j && (line[j - 1] == '\t' || line[j - 1] == '|')))
line[j++] = '\t';
}
else
diff --git a/src/map/pc.c b/src/map/pc.c
index ac03334..aea9cb5 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1810,9 +1810,10 @@ int pc_calcstatus (struct map_session_data *sd, int first)
// so critical chance can get multiplied by ~1.5 and setting def2 to a third when skill maxed out
// def2 is the defence gained by vit, whereas "def", which is gained by armor, stays as is
int spbsk = skill_power (sd, TMW_RAGING);
- if (spbsk!=0) {
- sd->critical *= (128 + spbsk)/256;
- sd->def2 /= (128 + spbsk)/128;
+ if (spbsk != 0 && sd->attackrange <= 2)
+ {
+ sd->critical = (sd->critical * (128 + spbsk)) / 256;
+ sd->def2 = (sd->def2 * 128) / (128 + spbsk);
}
if (sd->base_atk < 1)
diff --git a/src/map/script.c b/src/map/script.c
index fb8b8af..626babf 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -311,6 +311,9 @@ int buildin_shop (struct script_state *st); // [MadCamel]
int buildin_isdead (struct script_state *st); // [Jaxad0127]
int buildin_fakenpcname (struct script_state *st); //[Kage]
int buildin_unequip_by_id (struct script_state *st); // [Freeyorp]
+int buildin_getx (struct script_state *st); // [Kage]
+int buildin_gety (struct script_state *st); // [Kage]
+
void push_val (struct script_stack *stack, int type, int val);
int run_func (struct script_state *st);
@@ -334,13 +337,13 @@ struct
{
buildin_close2, "close2", ""},
{
- buildin_menu, "menu", "*"},
+ buildin_menu, "menu", "sL*"},
{
- buildin_goto, "goto", "l"},
+ buildin_goto, "goto", "L"},
{
- buildin_callsub, "callsub", "i*"},
+ buildin_callsub, "callsub", "L*"},
{
- buildin_callfunc, "callfunc", "s*"},
+ buildin_callfunc, "callfunc", "F*"},
{
buildin_return, "return", "*"},
{
@@ -348,39 +351,39 @@ struct
{
buildin_jobchange, "jobchange", "i*"},
{
- buildin_input, "input", "*"},
+ buildin_input, "input", "N"},
{
- buildin_warp, "warp", "sii"},
+ buildin_warp, "warp", "Mxy"},
{
- buildin_isat, "isat", "sii"},
+ buildin_isat, "isat", "Mxy"},
{
- buildin_areawarp, "areawarp", "siiiisii"},
+ buildin_areawarp, "areawarp", "MxyxyMxy"},
{
buildin_setlook, "setlook", "ii"},
{
- buildin_set, "set", "ii"},
+ buildin_set, "set", "Ne"},
{
- buildin_setarray, "setarray", "ii*"},
+ buildin_setarray, "setarray", "Ne*"},
{
- buildin_cleararray, "cleararray", "iii"},
+ buildin_cleararray, "cleararray", "Nei"},
{
- buildin_copyarray, "copyarray", "iii"},
+ buildin_copyarray, "copyarray", "NNi"},
{
- buildin_getarraysize, "getarraysize", "i"},
+ buildin_getarraysize, "getarraysize", "N"},
{
- buildin_deletearray, "deletearray", "ii"},
+ buildin_deletearray, "deletearray", "N*"},
{
- buildin_getelementofarray, "getelementofarray", "ii"},
+ buildin_getelementofarray, "getelementofarray", "Ni"},
{
- buildin_if, "if", "i*"},
+ buildin_if, "if", "iF*"},
{
- buildin_getitem, "getitem", "ii**"},
+ buildin_getitem, "getitem", "Ii**"},
{
buildin_getitem2, "getitem2", "iiiiiiiii*"},
{
- buildin_makeitem, "makeitem", "iisii"},
+ buildin_makeitem, "makeitem", "IiMxy"},
{
- buildin_delitem, "delitem", "ii"},
+ buildin_delitem, "delitem", "Ii"},
{
buildin_cutin, "cutin", "si"},
{
@@ -398,9 +401,9 @@ struct
{
buildin_pow, "pow", "ii"},
{
- buildin_countitem, "countitem", "i"},
+ buildin_countitem, "countitem", "I"},
{
- buildin_checkweight, "checkweight", "ii"},
+ buildin_checkweight, "checkweight", "Ii"},
{
buildin_readparam, "readparam", "i*"},
{
@@ -464,11 +467,11 @@ struct
{
buildin_basicskillcheck, "basicskillcheck", "*"},
{
- buildin_getgmlevel, "getgmlevel", "*"},
+ buildin_getgmlevel, "getgmlevel", ""},
{
buildin_end, "end", ""},
{
- buildin_getopt2, "getopt2", "i"},
+ buildin_getopt2, "getopt2", ""},
{
buildin_setopt2, "setopt2", "i"},
{
@@ -492,7 +495,7 @@ struct
{
buildin_savepoint, "save", "sii"},
{
- buildin_savepoint, "savepoint", "sii"},
+ buildin_savepoint, "savepoint", "Mxy"},
{
buildin_gettimetick, "gettimetick", "i"},
{
@@ -506,47 +509,47 @@ struct
{
buildin_itemskill, "itemskill", "iis"},
{
- buildin_monster, "monster", "siisii*"},
+ buildin_monster, "monster", "Mxysmi*"},
{
- buildin_areamonster, "areamonster", "siiiisii*"},
+ buildin_areamonster, "areamonster", "Mxyxysmi*"},
{
- buildin_killmonster, "killmonster", "ss"},
+ buildin_killmonster, "killmonster", "ME"},
{
- buildin_killmonsterall, "killmonsterall", "s"},
+ buildin_killmonsterall, "killmonsterall", "M"},
{
- buildin_doevent, "doevent", "s"},
+ buildin_doevent, "doevent", "E"},
{
- buildin_donpcevent, "donpcevent", "s"},
+ buildin_donpcevent, "donpcevent", "E"},
{
- buildin_addtimer, "addtimer", "is"},
+ buildin_addtimer, "addtimer", "tE"},
{
- buildin_deltimer, "deltimer", "s"},
+ buildin_deltimer, "deltimer", "E"},
{
buildin_addtimercount, "addtimercount", "si"},
{
- buildin_initnpctimer, "initnpctimer", "*"},
+ buildin_initnpctimer, "initnpctimer", ""},
{
- buildin_stopnpctimer, "stopnpctimer", "*"},
+ buildin_stopnpctimer, "stopnpctimer", ""},
{
buildin_startnpctimer, "startnpctimer", "*"},
{
- buildin_setnpctimer, "setnpctimer", "*"},
+ buildin_setnpctimer, "setnpctimer", "i"},
{
- buildin_getnpctimer, "getnpctimer", "i*"},
+ buildin_getnpctimer, "getnpctimer", "i"},
{
buildin_announce, "announce", "si"},
{
- buildin_mapannounce, "mapannounce", "ssi"},
+ buildin_mapannounce, "mapannounce", "Msi"},
{
- buildin_areaannounce, "areaannounce", "siiiisi"},
+ buildin_areaannounce, "areaannounce", "Mxyxysi"},
{
buildin_getusers, "getusers", "i"},
{
- buildin_getmapusers, "getmapusers", "s"},
+ buildin_getmapusers, "getmapusers", "M"},
{
- buildin_getareausers, "getareausers", "siiii"},
+ buildin_getareausers, "getareausers", "Mxyxy"},
{
- buildin_getareadropitem, "getareadropitem", "siiiii*"},
+ buildin_getareadropitem, "getareadropitem", "Mxyxyi*"},
{
buildin_enablenpc, "enablenpc", "s"},
{
@@ -560,9 +563,9 @@ struct
{
buildin_hideonnpc, "hideonnpc", "s"},
{
- buildin_sc_start, "sc_start", "iii*"},
+ buildin_sc_start, "sc_start", "iTi*"},
{
- buildin_sc_start2, "sc_start2", "iiii*"},
+ buildin_sc_start2, "sc_start2", "iTii*"},
{
buildin_sc_end, "sc_end", "i"},
{
@@ -602,15 +605,15 @@ struct
{
buildin_isloggedin, "isloggedin", "i"},
{
- buildin_setmapflagnosave, "setmapflagnosave", "ssii"},
+ buildin_setmapflagnosave, "setmapflagnosave", "MMxy"},
{
- buildin_setmapflag, "setmapflag", "si"},
+ buildin_setmapflag, "setmapflag", "Mi"},
{
- buildin_removemapflag, "removemapflag", "si"},
+ buildin_removemapflag, "removemapflag", "Mi"},
{
- buildin_pvpon, "pvpon", "s"},
+ buildin_pvpon, "pvpon", "M"},
{
- buildin_pvpoff, "pvpoff", "s"},
+ buildin_pvpoff, "pvpoff", "M"},
{
buildin_gvgon, "gvgon", "s"},
{
@@ -642,19 +645,19 @@ struct
{
buildin_failedremovecards, "failedremovecards", "ii"},
{
- buildin_marriage, "marriage", "s"},
+ buildin_marriage, "marriage", "P"},
{
buildin_wedding_effect, "wedding", ""},
{
- buildin_divorce, "divorce", "i"},
+ buildin_divorce, "divorce", ""},
{
- buildin_getitemname, "getitemname", "*"},
+ buildin_getitemname, "getitemname", "I"},
{
buildin_getspellinvocation, "getspellinvocation", "s"},
{
buildin_getanchorinvocation, "getanchorinvocation", "s"},
{
- buildin_getpartnerid, "getpartnerid2", "i"},
+ buildin_getpartnerid, "getpartnerid2", ""},
{
buildin_getexp, "getexp", "ii"},
{
@@ -682,7 +685,7 @@ struct
{
buildin_soundeffect, "soundeffect", "si"},
{
- buildin_strmobinfo, "strmobinfo", "ii"}, // display mob data [Valaris]
+ buildin_strmobinfo, "strmobinfo", "im"}, // display mob data [Valaris]
{
buildin_guardian, "guardian", "siisii*i"}, // summon guardians
{
@@ -696,7 +699,7 @@ struct
{
buildin_nude, "nude", ""}, // nude command [Valaris]
{
- buildin_mapwarp, "mapwarp", "ssii"}, // Added by RoVeRT
+ buildin_mapwarp, "mapwarp", "MMxy"}, // Added by RoVeRT
{
buildin_inittimer, "inittimer", ""},
{
@@ -704,34 +707,38 @@ struct
{
buildin_cmdothernpc, "cmdothernpc", "ss"},
{
- buildin_gmcommand, "gmcommand", "*"}, // [MouseJstr]
+ buildin_gmcommand, "gmcommand", "s"}, // [MouseJstr]
// {buildin_movenpc,"movenpc","siis"}, // [MouseJstr]
{
- buildin_npcwarp, "npcwarp", "iis"}, // [remoitnane]
+ buildin_npcwarp, "npcwarp", "xys"}, // [remoitnane]
{
- buildin_message, "message", "s*"}, // [MouseJstr]
+ buildin_message, "message", "Ps"}, // [MouseJstr]
{
- buildin_npctalk, "npctalk", "*"}, // [Valaris]
+ buildin_npctalk, "npctalk", "s"}, // [Valaris]
{
- buildin_hasitems, "hasitems", "*"}, // [Valaris]
+ buildin_hasitems, "hasitems", ""}, // [Valaris]
{
- buildin_mobcount, "mobcount", "ss"},
+ buildin_mobcount, "mobcount", "ME"},
{
buildin_getlook, "getlook", "i"},
{
buildin_getsavepoint, "getsavepoint", "i"},
{
- buildin_areatimer, "areatimer", "siiiiis"},
+ buildin_areatimer, "areatimer", "MxyxytE"},
{
- buildin_isin, "isin", "siiii"},
+ buildin_isin, "isin", "Mxyxy"},
{
buildin_shop, "shop", "s"},
{
- buildin_isdead, "isdead", "i"},
+ buildin_isdead, "isdead", ""},
{
buildin_fakenpcname, "fakenpcname", "ssi"},
{
buildin_unequip_by_id, "unequipbyid", "i"}, // [Freeyorp]
+ {
+ buildin_getx, "getx", ""}, // [Kage]
+ {
+ buildin_gety, "gety", ""}, // [Kage]
// End Additions
{
NULL, NULL, NULL},};
@@ -1247,7 +1254,7 @@ unsigned char *parse_subexpr (unsigned char *p, int limit)
}
add_scriptc (C_ARG);
- do
+ while (*p && *p != ')' && i < 128)
{
plist[i] = p;
p = parse_subexpr (p, -1);
@@ -1262,7 +1269,6 @@ unsigned char *parse_subexpr (unsigned char *p, int limit)
p = skip_space (p);
i++;
}
- while (*p && *p != ')' && i < 128);
plist[i] = p;
if (*(p++) != ')')
{
@@ -1285,7 +1291,7 @@ unsigned char *parse_subexpr (unsigned char *p, int limit)
}
}
}
- else
+ else // not op == C_FUNC
{
p = parse_subexpr (p, opl);
}
@@ -7242,6 +7248,31 @@ int buildin_fakenpcname (struct script_state *st)
return 0;
}
+/*============================
+ * Gets the PC's x pos
+ *----------------------------
+ */
+
+int buildin_getx (struct script_state *st)
+{
+ struct map_session_data *sd = script_rid2sd (st);
+
+ push_val (st->stack, C_INT, sd->bl.x);
+ return 0;
+}
+
+/*============================
+ * Gets the PC's y pos
+ *----------------------------
+ */
+int buildin_gety (struct script_state *st)
+{
+ struct map_session_data *sd = script_rid2sd (st);
+
+ push_val (st->stack, C_INT, sd->bl.y);
+ return 0;
+}
+
//
// 実行部main
//