summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/script.cpp1784
1 files changed, 13 insertions, 1771 deletions
diff --git a/src/map/script.cpp b/src/map/script.cpp
index 1a00594..690e938 100644
--- a/src/map/script.cpp
+++ b/src/map/script.cpp
@@ -1357,9 +1357,11 @@ void builtin_callfunc(ScriptState *st)
if ((scr = (const ScriptCode *)strdb_search(script_get_userfunc_db(), str)))
{
- int i, j;
- for (i = st->start + 3, j = 0; i < st->end; i++, j++)
+ int j = 0;
+#if 0
+ for (int i = st->start + 3; i < st->end; i++, j++)
push_copy(st->stack, i);
+#endif
push_val(st->stack, ScriptCode::INT, j); // 引数の数をプッシュ
push_val(st->stack, ScriptCode::INT, st->defsp); // 現在の基準スタックポインタをプッシュ
@@ -1386,9 +1388,11 @@ static
void builtin_callsub(ScriptState *st)
{
int pos_ = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- int i, j;
- for (i = st->start + 3, j = 0; i < st->end; i++, j++)
+ int j = 0;
+#if 0
+ for (int i = st->start + 3; i < st->end; i++, j++)
push_copy(st->stack, i);
+#endif
push_val(st->stack, ScriptCode::INT, j); // 引数の数をプッシュ
push_val(st->stack, ScriptCode::INT, st->defsp); // 現在の基準スタックポインタをプッシュ
@@ -1401,43 +1405,18 @@ void builtin_callsub(ScriptState *st)
}
/*==========================================
- * 引数の所得
- *------------------------------------------
- */
-static
-void builtin_getarg(ScriptState *st)
-{
- int num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- int max, stsp;
- if (st->defsp < 4
- || st->stack->stack_data[st->defsp - 1].type != ScriptCode::RETINFO)
- {
- printf("script:getarg without callfunc or callsub!\n");
- st->state = END;
- return;
- }
- max = conv_num(st, &(st->stack->stack_data[st->defsp - 4]));
- stsp = st->defsp - max - 4;
- if (num >= max)
- {
- printf("script:getarg arg1 (%d) out of range (%d) !\n", num, max);
- st->state = END;
- return;
- }
- push_copy(st->stack, stsp + num);
-}
-
-/*==========================================
* サブルーチン/ユーザー定義関数の終了
*------------------------------------------
*/
static
void builtin_return(ScriptState *st)
{
+#if 0
if (st->end > st->start + 2)
{ // 戻り値有り
push_copy(st->stack, st->start + 2);
}
+#endif
st->state = RETFUNC;
}
@@ -1730,24 +1709,6 @@ void builtin_percentheal(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_jobchange(ScriptState *st)
-{
- int job, upper = -1;
-
- job = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- if (st->end > st->start + 3)
- upper = conv_num(st, &(st->stack->stack_data[st->start + 3]));
-
- if ((job >= 0 && job < MAX_PC_CLASS))
- pc_jobchange(script_rid2sd(st), job, upper);
-
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
void builtin_input(ScriptState *st)
{
struct map_session_data *sd = NULL;
@@ -1937,42 +1898,6 @@ void builtin_cleararray(ScriptState *st)
}
/*==========================================
- * 配列変数コピー
- *------------------------------------------
- */
-static
-void builtin_copyarray(ScriptState *st)
-{
- struct 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;
- char postfix = name[strlen(name) - 1];
- int num2 = st->stack->stack_data[st->start + 3].u.num;
- char *name2 = str_buf + str_data[num2 & 0x00ffffff].str;
- char prefix2 = *name2;
- char postfix2 = name2[strlen(name2) - 1];
- int sz = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- int i;
-
- if (prefix != '$' && prefix != '@' && prefix2 != '$' && prefix2 != '@')
- {
- printf("builtin_copyarray: illegal scope !\n");
- return;
- }
- if ((postfix == '$' || postfix2 == '$') && postfix != postfix2)
- {
- printf("builtin_copyarray: type mismatch !\n");
- return;
- }
- if (prefix != '$' || prefix2 != '$')
- sd = script_rid2sd(st);
-
- for (i = 0; i < sz; i++)
- set_reg(sd, num + (i << 24), name, get_val2(st, num2 + (i << 24)));
-}
-
-/*==========================================
* 配列変数のサイズ所得
*------------------------------------------
*/
@@ -2007,46 +1932,6 @@ void builtin_getarraysize(ScriptState *st)
}
/*==========================================
- * 配列変数から要素削除
- *------------------------------------------
- */
-static
-void builtin_deletearray(ScriptState *st)
-{
- struct 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;
- char postfix = name[strlen(name) - 1];
- int count = 1;
- int i, sz = getarraysize(st, num, postfix) - (num >> 24) - count + 1;
-
- if ((st->end > st->start + 3))
- count = conv_num(st, &(st->stack->stack_data[st->start + 3]));
-
- if (prefix != '$' && prefix != '@')
- {
- printf("builtin_deletearray: illegal scope !\n");
- return;
- }
- if (prefix != '$')
- sd = script_rid2sd(st);
-
- for (i = 0; i < sz; i++)
- {
- set_reg(sd, num + (i << 24), name,
- get_val2(st, num + ((i + count) << 24)));
- }
- for (; i < (128 - (num >> 24)); i++)
- {
- if (postfix != '$')
- set_reg(sd, num + (i << 24), name, 0);
- if (postfix == '$')
- set_reg(sd, num + (i << 24), name, "");
- }
-}
-
-/*==========================================
* 指定要素を表す値(キー)を所得する
*------------------------------------------
*/
@@ -2096,58 +1981,6 @@ void builtin_setlook(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_cutin(ScriptState *st)
-{
- int type;
-
- conv_str(st, &(st->stack->stack_data[st->start + 2]));
- type = conv_num(st, &(st->stack->stack_data[st->start + 3]));
-
- clif_cutin(script_rid2sd(st),
- st->stack->stack_data[st->start + 2].u.str, type);
-
-}
-
-/*==========================================
- * カードのイラストを表示する
- *------------------------------------------
- */
-static
-void builtin_cutincard(ScriptState *st)
-{
- int itemid;
-
- itemid = conv_num(st, &(st->stack->stack_data[st->start + 2]));
-
- clif_cutin(script_rid2sd(st), itemdb_search(itemid)->cardillustname,
- 4);
-
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
-void builtin_viewpoint(ScriptState *st)
-{
- int type, x, y, id, color;
-
- type = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- x = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- y = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- id = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- color = conv_num(st, &(st->stack->stack_data[st->start + 6]));
-
- clif_viewpoint(script_rid2sd(st), st->oid, type, x, y, id, color);
-
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
void builtin_countitem(ScriptState *st)
{
int nameid = 0, count = 0, i;
@@ -2293,94 +2126,6 @@ void builtin_getitem(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_getitem2(ScriptState *st)
-{
- int nameid, amount, flag = 0;
- int iden, ref, attr, c1, c2, c3, c4;
- struct item item_tmp;
- struct map_session_data *sd;
- struct script_data *data;
-
- sd = script_rid2sd(st);
-
- data = &(st->stack->stack_data[st->start + 2]);
- get_val(st, data);
- if (data->type == ScriptCode::STR || data->type == ScriptCode::CONSTSTR)
- {
- const char *name = conv_str(st, data);
- struct item_data *item_data = itemdb_searchname(name);
- nameid = 512; //Apple item ID
- if (item_data)
- nameid = item_data->nameid;
- }
- else
- nameid = conv_num(st, data);
-
- amount = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- iden = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- ref = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- attr = conv_num(st, &(st->stack->stack_data[st->start + 6]));
- c1 = conv_num(st, &(st->stack->stack_data[st->start + 7]));
- c2 = conv_num(st, &(st->stack->stack_data[st->start + 8]));
- c3 = conv_num(st, &(st->stack->stack_data[st->start + 9]));
- c4 = conv_num(st, &(st->stack->stack_data[st->start + 10]));
- if (st->end > st->start + 11) //アイテムを指定したIDに渡す
- sd = map_id2sd(conv_num(st, &(st->stack->stack_data[st->start + 11])));
- if (sd == NULL) //アイテムを渡す相手がいなかったらお帰り
- return;
-
- if (nameid < 0)
- { // ランダム
- nameid = itemdb_searchrandomid(-nameid);
- flag = 1;
- }
-
- if (nameid > 0)
- {
- memset(&item_tmp, 0, sizeof(item_tmp));
- struct item_data *item_data = itemdb_search(nameid);
- if (item_data->type == 4 || item_data->type == 5)
- {
- if (ref > 10)
- ref = 10;
- }
- else if (item_data->type == 7)
- {
- iden = 1;
- ref = 0;
- }
- else
- {
- iden = 1;
- ref = attr = 0;
- }
-
- item_tmp.nameid = nameid;
- if (!flag)
- item_tmp.identify = iden;
- else if (item_data->type == 4 || item_data->type == 5)
- item_tmp.identify = 0;
- item_tmp.refine = ref;
- item_tmp.attribute = attr;
- item_tmp.card[0] = c1;
- item_tmp.card[1] = c2;
- item_tmp.card[2] = c3;
- item_tmp.card[3] = c4;
- if ((flag = pc_additem(sd, &item_tmp, amount)))
- {
- clif_additem(sd, 0, 0, flag);
- map_addflooritem(&item_tmp, amount, sd->bl.m, sd->bl.x, sd->bl.y,
- NULL, NULL, NULL, 0);
- }
- }
-
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
void builtin_makeitem(ScriptState *st)
{
int nameid, amount, flag = 0;
@@ -2579,52 +2324,6 @@ char *builtin_getpartyname_sub(int party_id)
return 0;
}
-static
-void builtin_getpartyname(ScriptState *st)
-{
- char *name;
- int party_id;
-
- party_id = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- name = builtin_getpartyname_sub(party_id);
- if (name != 0)
- push_str(st->stack, ScriptCode::STR, name);
- else
- push_str(st->stack, ScriptCode::CONSTSTR, "null");
-
-}
-
-/*==========================================
- *指定IDのPT人数とメンバーID取得
- *------------------------------------------
- */
-static
-void builtin_getpartymember(ScriptState *st)
-{
- struct party *p;
- int i, j = 0;
-
- p = NULL;
- p = party_search(conv_num(st, &(st->stack->stack_data[st->start + 2])));
-
- if (p != NULL)
- {
- for (i = 0; i < MAX_PARTY; i++)
- {
- if (p->member[i].account_id)
- {
-// printf("name:%s %d\n",p->member[i].name,i);
- mapreg_setregstr(add_str("$@partymembername$") + (i << 24),
- p->member[i].name);
- j++;
- }
- }
- }
- mapreg_setreg(add_str("$@partymembercount"), j);
-
-}
-
-
/*==========================================
* キャラクタの名前
*------------------------------------------
@@ -2741,273 +2440,6 @@ void builtin_getequipname(ScriptState *st)
}
/*==========================================
- * getbrokenid [Valaris]
- *------------------------------------------
- */
-static
-void builtin_getbrokenid(ScriptState *st)
-{
- int i, num, id = 0, brokencounter = 0;
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- for (i = 0; i < MAX_INVENTORY; i++)
- {
- if (sd->status.inventory[i].broken == 1)
- {
- brokencounter++;
- if (num == brokencounter)
- {
- id = sd->status.inventory[i].nameid;
- break;
- }
- }
- }
-
- push_val(st->stack, ScriptCode::INT, id);
-
-}
-
-/*==========================================
- * repair [Valaris]
- *------------------------------------------
- */
-static
-void builtin_repair(ScriptState *st)
-{
- int i, num;
- int repaircounter = 0;
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- for (i = 0; i < MAX_INVENTORY; i++)
- {
- if (sd->status.inventory[i].broken == 1)
- {
- repaircounter++;
- if (num == repaircounter)
- {
- sd->status.inventory[i].broken = 0;
- clif_equiplist(sd);
- clif_produceeffect(sd, 0, sd->status.inventory[i].nameid);
- clif_misceffect(&sd->bl, 3);
- clif_displaymessage(sd->fd, "Item has been repaired.");
- break;
- }
- }
- }
-
-}
-
-/*==========================================
- * 装備チェック
- *------------------------------------------
- */
-static
-void builtin_getequipisequiped(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0)
- {
- push_val(st->stack, ScriptCode::INT, 1);
- }
- else
- {
- push_val(st->stack, ScriptCode::INT, 0);
- }
-
-}
-
-/*==========================================
- * 装備品精錬可能チェック
- *------------------------------------------
- */
-static
-void builtin_getequipisenableref(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0 && num < 7 && sd->inventory_data[i]
- && (num != 1 || sd->inventory_data[i]->def > 1
- || (sd->inventory_data[i]->def == 1
- && sd->inventory_data[i]->equip_script == NULL)
- || (sd->inventory_data[i]->def <= 0
- && sd->inventory_data[i]->equip_script != NULL)))
- {
- push_val(st->stack, ScriptCode::INT, 1);
- }
- else
- {
- push_val(st->stack, ScriptCode::INT, 0);
- }
-
-}
-
-/*==========================================
- * 装備品鑑定チェック
- *------------------------------------------
- */
-static
-void builtin_getequipisidentify(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0)
- push_val(st->stack, ScriptCode::INT, sd->status.inventory[i].identify);
- else
- push_val(st->stack, ScriptCode::INT, 0);
-
-}
-
-/*==========================================
- * 装備品精錬度
- *------------------------------------------
- */
-static
-void builtin_getequiprefinerycnt(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0)
- push_val(st->stack, ScriptCode::INT, sd->status.inventory[i].refine);
- else
- push_val(st->stack, ScriptCode::INT, 0);
-
-}
-
-/*==========================================
- * 装備品武器LV
- *------------------------------------------
- */
-static
-void builtin_getequipweaponlv(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0 && sd->inventory_data[i])
- push_val(st->stack, ScriptCode::INT, sd->inventory_data[i]->wlv);
- else
- push_val(st->stack, ScriptCode::INT, 0);
-
-}
-
-/*==========================================
- * 装備品精錬成功率
- *------------------------------------------
- */
-static
-void builtin_getequippercentrefinery(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0)
- push_val(st->stack, ScriptCode::INT,
- pc_percentrefinery(sd, &sd->status.inventory[i]));
- else
- push_val(st->stack, ScriptCode::INT, 0);
-
-}
-
-/*==========================================
- * 精錬成功
- *------------------------------------------
- */
-static
-void builtin_successrefitem(ScriptState *st)
-{
- int i, num, ep;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0)
- {
- ep = sd->status.inventory[i].equip;
-
- sd->status.inventory[i].refine++;
- pc_unequipitem(sd, i, 0);
- clif_refine(sd->fd, sd, 0, i, sd->status.inventory[i].refine);
- clif_delitem(sd, i, 1);
- clif_additem(sd, i, 1, 0);
- pc_equipitem(sd, i, ep);
- clif_misceffect(&sd->bl, 3);
- }
-
-}
-
-/*==========================================
- * 精錬失敗
- *------------------------------------------
- */
-static
-void builtin_failedrefitem(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (i >= 0)
- {
- sd->status.inventory[i].refine = 0;
- pc_unequipitem(sd, i, 0);
- // 精錬失敗エフェクトのパケット
- clif_refine(sd->fd, sd, 1, i, sd->status.inventory[i].refine);
- pc_delitem(sd, i, 1, 0);
- // 他の人にも失敗を通知
- clif_misceffect(&sd->bl, 2);
- }
-
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
-void builtin_statusup(ScriptState *st)
-{
- int type;
- struct map_session_data *sd;
-
- type = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- pc_statusup(sd, type);
-
-}
-
-/*==========================================
*
*------------------------------------------
*/
@@ -3060,25 +2492,6 @@ void builtin_bonus2(ScriptState *st)
}
/*==========================================
- * 装備品による能力値ボーナス
- *------------------------------------------
- */
-static
-void builtin_bonus3(ScriptState *st)
-{
- int type, type2, type3, val;
- struct map_session_data *sd;
-
- type = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- type2 = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- type3 = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- val = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- sd = script_rid2sd(st);
- pc_bonus3(sd, type, type2, type3, val);
-
-}
-
-/*==========================================
* スキル所得
*------------------------------------------
*/
@@ -3133,16 +2546,6 @@ void builtin_getskilllv(ScriptState *st)
*------------------------------------------
*/
static
-void builtin_basicskillcheck(ScriptState *st)
-{
- push_val(st->stack, ScriptCode::INT, battle_config.basic_skill_check);
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
void builtin_getgmlevel(ScriptState *st)
{
push_val(st->stack, ScriptCode::INT, pc_isGM(script_rid2sd(st)));
@@ -3195,154 +2598,6 @@ void builtin_setopt2(ScriptState *st)
}
/*==========================================
- *
- *------------------------------------------
- */
-static
-void builtin_checkoption(ScriptState *st)
-{
- struct map_session_data *sd;
-
- Option type = Option(conv_num(st, &(st->stack->stack_data[st->start + 2])));
- sd = script_rid2sd(st);
-
- if (bool(sd->status.option & type))
- {
- push_val(st->stack, ScriptCode::INT, 1);
- }
- else
- {
- push_val(st->stack, ScriptCode::INT, 0);
- }
-
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
-void builtin_setoption(ScriptState *st)
-{
- struct map_session_data *sd;
-
- Option type = Option(conv_num(st, &(st->stack->stack_data[st->start + 2])));
- sd = script_rid2sd(st);
- pc_setoption(sd, type);
-
-}
-
-/*==========================================
- * Checkcart [Valaris]
- *------------------------------------------
- */
-
-static
-void builtin_checkcart(ScriptState *st)
-{
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
-
- if (pc_iscarton(sd))
- {
- push_val(st->stack, ScriptCode::INT, 1);
- }
- else
- {
- push_val(st->stack, ScriptCode::INT, 0);
- }
-}
-
-/*==========================================
- * カートを付ける
- *------------------------------------------
- */
-static
-void builtin_setcart(ScriptState *st)
-{
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
- pc_setcart(sd, 1);
-
-}
-
-/*==========================================
- * checkfalcon [Valaris]
- *------------------------------------------
- */
-
-static
-void builtin_checkfalcon(ScriptState *st)
-{
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
-
- if (pc_isfalcon(sd))
- {
- push_val(st->stack, ScriptCode::INT, 1);
- }
- else
- {
- push_val(st->stack, ScriptCode::INT, 0);
- }
-
-}
-
-/*==========================================
- * 鷹を付ける
- *------------------------------------------
- */
-static
-void builtin_setfalcon(ScriptState *st)
-{
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
- pc_setfalcon(sd);
-
-}
-
-/*==========================================
- * Checkcart [Valaris]
- *------------------------------------------
- */
-
-static
-void builtin_checkriding(ScriptState *st)
-{
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
-
- if (pc_isriding(sd))
- {
- push_val(st->stack, ScriptCode::INT, 1);
- }
- else
- {
- push_val(st->stack, ScriptCode::INT, 0);
- }
-
-}
-
-/*==========================================
- * ペコペコ乗り
- *------------------------------------------
- */
-static
-void builtin_setriding(ScriptState *st)
-{
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
- pc_setriding(sd);
-
-}
-
-/*==========================================
* セーブポイントの保存
*------------------------------------------
*/
@@ -3488,29 +2743,6 @@ void builtin_openstorage(ScriptState *st)
}
/*==========================================
- * アイテムによるスキル発動
- *------------------------------------------
- */
-static
-void builtin_itemskill(ScriptState *st)
-{
- int lv;
- struct map_session_data *sd = script_rid2sd(st);
-
- SkillID id = SkillID(conv_num(st, &(st->stack->stack_data[st->start + 2])));
- lv = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- const char *str = conv_str(st, &(st->stack->stack_data[st->start + 4]));
-
- // 詠唱中にスキルアイテムは使用できない
- if (sd->skilltimer != -1)
- return;
-
- sd->skillitem = id;
- sd->skillitemlv = lv;
- clif_item_skill(sd, id, lv, str);
-}
-
-/*==========================================
* NPCで経験値上げる
*------------------------------------------
*/
@@ -3633,17 +2865,6 @@ void builtin_killmonsterall(ScriptState *st)
}
/*==========================================
- * イベント実行
- *------------------------------------------
- */
-static
-void builtin_doevent(ScriptState *st)
-{
- const char *event = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- npc_event(map_id2sd(st->rid), event, 0);
-}
-
-/*==========================================
* NPC主体イベント実行
*------------------------------------------
*/
@@ -3668,30 +2889,6 @@ void builtin_addtimer(ScriptState *st)
}
/*==========================================
- * イベントタイマー削除
- *------------------------------------------
- */
-static
-void builtin_deltimer(ScriptState *st)
-{
- const char *event = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- pc_deleventtimer(script_rid2sd(st), event);
-}
-
-/*==========================================
- * イベントタイマーのカウント値追加
- *------------------------------------------
- */
-static
-void builtin_addtimercount(ScriptState *st)
-{
- int tick;
- const char *event = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- tick = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- pc_addeventtimercount(script_rid2sd(st), event, tick);
-}
-
-/*==========================================
* NPCタイマー初期化
*------------------------------------------
*/
@@ -3835,31 +3032,6 @@ void builtin_mapannounce(ScriptState *st)
}
/*==========================================
- * 天の声アナウンス(特定エリア)
- *------------------------------------------
- */
-static
-void builtin_areaannounce(ScriptState *st)
-{
- int flag, m;
- int x0, y0, x1, y1;
-
- const char *mapname = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- x0 = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- y0 = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- x1 = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- y1 = conv_num(st, &(st->stack->stack_data[st->start + 6]));
- const char *str = conv_str(st, &(st->stack->stack_data[st->start + 7]));
- flag = conv_num(st, &(st->stack->stack_data[st->start + 8]));
-
- if ((m = map_mapname2mapid(mapname)) < 0)
- return;
-
- map_foreachinarea(std::bind(builtin_mapannounce_sub, ph::_1, str, strlen(str) + 1, flag & 0x10),
- m, x0, y0, x1, y1, BL_PC);
-}
-
-/*==========================================
* ユーザー数所得
*------------------------------------------
*/
@@ -4031,54 +3203,6 @@ void builtin_disablenpc(ScriptState *st)
npc_enable(str, 0);
}
-static
-void builtin_enablearena(ScriptState *st) // Added by RoVeRT
-{
- struct npc_data *nd = (struct npc_data *) map_id2bl(st->oid);
- struct chat_data *cd;
-
- if (nd == NULL
- || (cd = (struct chat_data *) map_id2bl(nd->chat_id)) == NULL)
- return;
-
- npc_enable(nd->name, 1);
- nd->arenaflag = 1;
-
- if (cd->users >= cd->trigger && cd->npc_event[0])
- npc_timer_event(cd->npc_event);
-
-}
-
-static
-void builtin_disablearena(ScriptState *st) // Added by RoVeRT
-{
- struct npc_data *nd = (struct npc_data *) map_id2bl(st->oid);
- nd->arenaflag = 0;
-
-}
-
-/*==========================================
- * 隠れているNPCの表示
- *------------------------------------------
- */
-static
-void builtin_hideoffnpc(ScriptState *st)
-{
- const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- npc_enable(str, 2);
-}
-
-/*==========================================
- * NPCをハイディング
- *------------------------------------------
- */
-static
-void builtin_hideonnpc(ScriptState *st)
-{
- const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- npc_enable(str, 4);
-}
-
/*==========================================
* 状態異常にかかる
*------------------------------------------
@@ -4102,30 +3226,6 @@ void builtin_sc_start(ScriptState *st)
}
/*==========================================
- * 状態異常にかかる(確率指定)
- *------------------------------------------
- */
-static
-void builtin_sc_start2(ScriptState *st)
-{
- struct block_list *bl;
- int tick, val1, per;
- StatusChange type = StatusChange(conv_num(st, &(st->stack->stack_data[st->start + 2])));
- tick = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- val1 = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- per = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- if (st->end > st->start + 6) //指定したキャラを状態異常にする
- bl = map_id2bl(conv_num(st, &(st->stack->stack_data[st->start + 6])));
- else
- bl = map_id2bl(st->rid);
- if (bl->type == BL_PC
- && ((struct map_session_data *) bl)->state.potionpitcher_flag)
- bl = map_id2bl(((struct map_session_data *) bl)->skilltarget);
- if (MRAND(10000) < per)
- skill_status_change_start(bl, type, val1, 0, 0, 0, tick, 0);
-}
-
-/*==========================================
* 状態異常が直る
*------------------------------------------
*/
@@ -4158,46 +3258,6 @@ void builtin_sc_check(ScriptState *st)
}
/*==========================================
- * 状態異常耐性を計算した確率を返す
- *------------------------------------------
- */
-static
-void builtin_getscrate(ScriptState *st)
-{
- struct block_list *bl;
- int sc_def = 100, sc_def_mdef2, sc_def_vit2, sc_def_int2, sc_def_luk2;
- int rate, luk;
-
- StatusChange type = StatusChange(conv_num(st, &(st->stack->stack_data[st->start + 2])));
- rate = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- if (st->end > st->start + 4) //指定したキャラの耐性を計算する
- bl = map_id2bl(conv_num(st, &(st->stack->stack_data[st->start + 6])));
- else
- bl = map_id2bl(st->rid);
-
- luk = battle_get_luk(bl);
- sc_def_mdef2 = 100 - (3 + battle_get_mdef(bl) + luk / 3);
- sc_def_vit2 = 100 - (3 + battle_get_vit(bl) + luk / 3);
- sc_def_int2 = 100 - (3 + battle_get_int(bl) + luk / 3);
- sc_def_luk2 = 100 - (3 + luk);
-
- if (type == SC_STONE || type == SC_FREEZE)
- sc_def = sc_def_mdef2;
- else if (type == SC_STAN || type == SC_POISON || type == SC_SILENCE)
- sc_def = sc_def_vit2;
- else if (type == SC_SLEEP || type == SC_CONFUSION || type == SC_BLIND)
- sc_def = sc_def_int2;
- else if (type == SC_CURSE)
- sc_def = sc_def_luk2;
-
- rate = rate * sc_def / 100;
- push_val(st->stack, ScriptCode::INT, rate);
-
- return;
-
-}
-
-/*==========================================
*
*------------------------------------------
*/
@@ -4210,21 +3270,6 @@ void builtin_debugmes(ScriptState *st)
}
/*==========================================
- * Added - AppleGirl For Advanced Classes, (Updated for Cleaner Script Purposes)
- *------------------------------------------
- */
-static
-void builtin_resetlvl(ScriptState *st)
-{
- struct map_session_data *sd;
-
- int type = conv_num(st, &(st->stack->stack_data[st->start + 2]));
-
- sd = script_rid2sd(st);
- pc_resetlvl(sd, type);
-}
-
-/*==========================================
* ステータスリセット
*------------------------------------------
*/
@@ -4237,48 +3282,6 @@ void builtin_resetstatus(ScriptState *st)
}
/*==========================================
- * スキルリセット
- *------------------------------------------
- */
-static
-void builtin_resetskill(ScriptState *st)
-{
- struct map_session_data *sd;
- sd = script_rid2sd(st);
- pc_resetskill(sd);
-}
-
-/*==========================================
- *
- *------------------------------------------
- */
-static
-void builtin_changebase(ScriptState *st)
-{
- struct map_session_data *sd = NULL;
- int vclass;
-
- if (st->end > st->start + 3)
- sd = map_id2sd(conv_num(st, &(st->stack->stack_data[st->start + 3])));
- else
- sd = script_rid2sd(st);
-
- if (sd == NULL)
- return;
-
- vclass = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- if (vclass == 22 && !battle_config.wedding_modifydisplay)
- return;
-
-// if(vclass==22) {
-// pc_unequipitem(sd,sd->equip_index[9],0); // 装備外
-// }
-
- sd->view_class = vclass;
-
-}
-
-/*==========================================
* 性別変換
*------------------------------------------
*/
@@ -4307,206 +3310,6 @@ void builtin_changesex(ScriptState *st)
}
/*==========================================
- * npcチャット作成
- *------------------------------------------
- */
-static
-void builtin_waitingroom(ScriptState *st)
-{
- const char *name, *ev = "";
- int limit, trigger = 0, pub = 1;
- name = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- limit = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- if (limit == 0)
- pub = 3;
-
- if ((st->end > st->start + 5))
- {
- struct script_data *data = &(st->stack->stack_data[st->start + 5]);
- get_val(st, data);
- if (data->type == ScriptCode::INT)
- {
- // 新Athena仕様(旧Athena仕様と互換性あり)
- ev = conv_str(st, &(st->stack->stack_data[st->start + 4]));
- trigger = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- }
- else
- {
- // eathena仕様
- trigger = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- ev = conv_str(st, &(st->stack->stack_data[st->start + 5]));
- }
- }
- else
- {
- // 旧Athena仕様
- if (st->end > st->start + 4)
- ev = conv_str(st, &(st->stack->stack_data[st->start + 4]));
- }
- chat_createnpcchat((struct npc_data *) map_id2bl(st->oid),
- limit, pub, trigger, name, strlen(name) + 1, ev);
-}
-
-/*==========================================
- * npcチャット削除
- *------------------------------------------
- */
-static
-void builtin_delwaitingroom(ScriptState *st)
-{
- struct npc_data *nd;
- if (st->end > 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);
- chat_deletenpcchat(nd);
-}
-
-/*==========================================
- * npcチャットイベント有効化
- *------------------------------------------
- */
-static
-void builtin_enablewaitingroomevent(ScriptState *st)
-{
- struct npc_data *nd;
- struct chat_data *cd;
-
- if (st->end > 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);
-
- if (nd == NULL
- || (cd = (struct chat_data *) map_id2bl(nd->chat_id)) == NULL)
- return;
- chat_enableevent(cd);
-}
-
-/*==========================================
- * npcチャットイベント無効化
- *------------------------------------------
- */
-static
-void builtin_disablewaitingroomevent(ScriptState *st)
-{
- struct npc_data *nd;
- struct chat_data *cd;
-
- if (st->end > 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);
-
- if (nd == NULL
- || (cd = (struct chat_data *) map_id2bl(nd->chat_id)) == NULL)
- return;
- chat_disableevent(cd);
-}
-
-/*==========================================
- * npcチャット状態所得
- *------------------------------------------
- */
-static
-void builtin_getwaitingroomstate(ScriptState *st)
-{
- struct npc_data *nd;
- struct chat_data *cd;
- int val = 0, type;
- type = 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])));
- else
- nd = (struct npc_data *) map_id2bl(st->oid);
-
- if (nd == NULL
- || (cd = (struct chat_data *) map_id2bl(nd->chat_id)) == NULL)
- {
- push_val(st->stack, ScriptCode::INT, -1);
- return;
- }
-
- switch (type)
- {
- case 0:
- val = cd->users;
- break;
- case 1:
- val = cd->limit;
- break;
- case 2:
- val = cd->trigger & 0x7f;
- break;
- case 3:
- val = ((cd->trigger & 0x80) > 0);
- break;
- case 32:
- val = (cd->users >= cd->limit);
- break;
- case 33:
- val = (cd->users >= cd->trigger);
- break;
-
- case 4:
- push_str(st->stack, ScriptCode::CONSTSTR, cd->title);
- return;
- case 5:
- push_str(st->stack, ScriptCode::CONSTSTR, cd->pass);
- return;
- case 16:
- push_str(st->stack, ScriptCode::CONSTSTR, cd->npc_event);
- return;
- }
- push_val(st->stack, ScriptCode::INT, val);
-}
-
-/*==========================================
- * チャットメンバー(規定人数)ワープ
- *------------------------------------------
- */
-static
-void builtin_warpwaitingpc(ScriptState *st)
-{
- int x, y, i, n;
- struct npc_data *nd = (struct npc_data *) map_id2bl(st->oid);
- struct chat_data *cd;
-
- if (nd == NULL
- || (cd = (struct chat_data *) map_id2bl(nd->chat_id)) == NULL)
- return;
-
- n = cd->trigger & 0x7f;
- const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- x = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- y = conv_num(st, &(st->stack->stack_data[st->start + 4]));
-
- if (st->end > st->start + 5)
- n = conv_num(st, &(st->stack->stack_data[st->start + 5]));
-
- for (i = 0; i < n; i++)
- {
- struct map_session_data *sd = cd->usersd[0]; // リスト先頭のPCを次々に。
-
- mapreg_setreg(add_str("$@warpwaitingpc") + (i << 24), sd->bl.id);
-
- if (strcmp(str, "Random") == 0)
- pc_randomwarp(sd, 3);
- else if (strcmp(str, "SavePoint") == 0)
- {
- if (map[sd->bl.m].flag.noteleport) // テレポ禁止
- return;
-
- pc_setpos(sd, sd->status.save_point.map,
- sd->status.save_point.x, sd->status.save_point.y, 3);
- }
- else
- pc_setpos(sd, str, x, y, 0);
- }
- mapreg_setreg(add_str("$@warpwaitingpcnum"), n);
-}
-
-/*==========================================
* RIDのアタッチ
*------------------------------------------
*/
@@ -4569,26 +3372,6 @@ enum
};
static
-void builtin_setmapflagnosave(ScriptState *st)
-{
- int m, x, y;
-
- const char *str = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- const char *str2 = conv_str(st, &(st->stack->stack_data[st->start + 3]));
- x = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- y = conv_num(st, &(st->stack->stack_data[st->start + 5]));
- m = map_mapname2mapid(str);
- if (m >= 0)
- {
- map[m].flag.nosave = 1;
- memcpy(map[m].save.map, str2, 16);
- map[m].save.x = x;
- map[m].save.y = y;
- }
-
-}
-
-static
void builtin_setmapflag(ScriptState *st)
{
int m, i;
@@ -4873,183 +3656,6 @@ void builtin_emotion(ScriptState *st)
clif_emotion(map_id2bl(st->oid), type);
}
-/* =====================================================================
- * カードの数を得る
- * ---------------------------------------------------------------------
- */
-static
-void builtin_getequipcardcnt(ScriptState *st)
-{
- int i, num;
- struct map_session_data *sd;
- int c = 4;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (sd->status.inventory[i].card[0] == 0x00ff)
- { // 製造武器はカードなし
- push_val(st->stack, ScriptCode::INT, 0);
- return;
- }
- do
- {
- if ((sd->status.inventory[i].card[c - 1] > 4000) &&
- (sd->status.inventory[i].card[c - 1] < 5000))
- {
-
- push_val(st->stack, ScriptCode::INT, (c));
- return;
- }
- }
- while (c--);
- push_val(st->stack, ScriptCode::INT, 0);
-}
-
-/* ================================================================
- * カード取り外し成功
- * ----------------------------------------------------------------
- */
-static
-void builtin_successremovecards(ScriptState *st)
-{
- int i, num, cardflag = 0, flag;
- struct map_session_data *sd;
- struct item item_tmp;
- int c = 4;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (sd->status.inventory[i].card[0] == 0x00ff)
- { // 製造武器は処理しない
- return;
- }
- do
- {
- if ((sd->status.inventory[i].card[c - 1] > 4000) &&
- (sd->status.inventory[i].card[c - 1] < 5000))
- {
-
- cardflag = 1;
- item_tmp.id = 0, item_tmp.nameid =
- sd->status.inventory[i].card[c - 1];
- item_tmp.equip = 0, item_tmp.identify = 1, item_tmp.refine = 0;
- item_tmp.attribute = 0;
- item_tmp.card[0] = 0, item_tmp.card[1] = 0, item_tmp.card[2] =
- 0, item_tmp.card[3] = 0;
-
- if ((flag = pc_additem(sd, &item_tmp, 1)))
- { // 持てないならドロップ
- clif_additem(sd, 0, 0, flag);
- map_addflooritem(&item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y,
- NULL, NULL, NULL, 0);
- }
- }
- }
- while (c--);
-
- if (cardflag == 1)
- { // カードを取り除いたアイテム所得
- flag = 0;
- item_tmp.id = 0, item_tmp.nameid = sd->status.inventory[i].nameid;
- item_tmp.equip = 0, item_tmp.identify = 1, item_tmp.refine =
- sd->status.inventory[i].refine;
- item_tmp.attribute = sd->status.inventory[i].attribute;
- item_tmp.card[0] = 0, item_tmp.card[1] = 0, item_tmp.card[2] =
- 0, item_tmp.card[3] = 0;
- pc_delitem(sd, i, 1, 0);
- if ((flag = pc_additem(sd, &item_tmp, 1)))
- { // もてないならドロップ
- clif_additem(sd, 0, 0, flag);
- map_addflooritem(&item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y,
- NULL, NULL, NULL, 0);
- }
- clif_misceffect(&sd->bl, 3);
- return;
- }
-}
-
-/* ================================================================
- * カード取り外し失敗 slot,type
- * type=0: 両方損失、1:カード損失、2:武具損失、3:損失無し
- * ----------------------------------------------------------------
- */
-static
-void builtin_failedremovecards(ScriptState *st)
-{
- int i, num, cardflag = 0, flag, typefail;
- struct map_session_data *sd;
- struct item item_tmp;
- int c = 4;
-
- num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- typefail = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- sd = script_rid2sd(st);
- i = pc_checkequip(sd, equip[num - 1]);
- if (sd->status.inventory[i].card[0] == 0x00ff)
- { // 製造武器は処理しない
- return;
- }
- do
- {
- if ((sd->status.inventory[i].card[c - 1] > 4000) &&
- (sd->status.inventory[i].card[c - 1] < 5000))
- {
-
- cardflag = 1;
-
- if (typefail == 2)
- { // 武具のみ損失なら、カードは受け取らせる
- item_tmp.id = 0, item_tmp.nameid =
- sd->status.inventory[i].card[c - 1];
- item_tmp.equip = 0, item_tmp.identify = 1, item_tmp.refine =
- 0;
- item_tmp.attribute = 0;
- item_tmp.card[0] = 0, item_tmp.card[1] = 0, item_tmp.card[2] =
- 0, item_tmp.card[3] = 0;
- if ((flag = pc_additem(sd, &item_tmp, 1)))
- {
- clif_additem(sd, 0, 0, flag);
- map_addflooritem(&item_tmp, 1, sd->bl.m, sd->bl.x,
- sd->bl.y, NULL, NULL, NULL, 0);
- }
- }
- }
- }
- while (c--);
-
- if (cardflag == 1)
- {
-
- if (typefail == 0 || typefail == 2)
- { // 武具損失
- pc_delitem(sd, i, 1, 0);
- clif_misceffect(&sd->bl, 2);
- return;
- }
- if (typefail == 1)
- { // カードのみ損失(武具を返す)
- flag = 0;
- item_tmp.id = 0, item_tmp.nameid = sd->status.inventory[i].nameid;
- item_tmp.equip = 0, item_tmp.identify = 1, item_tmp.refine =
- sd->status.inventory[i].refine;
- item_tmp.attribute = sd->status.inventory[i].attribute;
- item_tmp.card[0] = 0, item_tmp.card[1] = 0, item_tmp.card[2] =
- 0, item_tmp.card[3] = 0;
- pc_delitem(sd, i, 1, 0);
- if ((flag = pc_additem(sd, &item_tmp, 1)))
- {
- clif_additem(sd, 0, 0, flag);
- map_addflooritem(&item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y,
- NULL, NULL, NULL, 0);
- }
- }
- clif_misceffect(&sd->bl, 2);
- return;
- }
-}
-
static
void builtin_mapwarp(ScriptState *st) // Added by RoVeRT
{
@@ -5082,26 +3688,6 @@ void builtin_cmdothernpc(ScriptState *st) // Added by RoVeRT
}
static
-void builtin_inittimer(ScriptState *st) // Added by RoVeRT
-{
-// struct npc_data *nd=(struct npc_data*)map_id2bl(st->oid);
-
-// nd->lastaction=nd->timer=gettick();
- npc_do_ontimer(st->oid, map_id2sd(st->rid), 1);
-
-}
-
-static
-void builtin_stoptimer(ScriptState *st) // Added by RoVeRT
-{
-// struct npc_data *nd=(struct npc_data*)map_id2bl(st->oid);
-
-// nd->lastaction=nd->timer=-1;
- npc_do_ontimer(st->oid, map_id2sd(st->rid), 0);
-
-}
-
-static
void builtin_mobcount_sub(struct block_list *bl, const char *event, int *c)
{
if (strcmp(event, ((struct mob_data *) bl)->npc_event) == 0)
@@ -5143,16 +3729,6 @@ void builtin_marriage(ScriptState *st)
}
static
-void builtin_wedding_effect(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
-
- if (sd == NULL)
- return;
- clif_wedding_effect(&sd->bl);
-}
-
-static
void builtin_divorce(ScriptState *st)
{
struct map_session_data *sd = script_rid2sd(st);
@@ -5170,46 +3746,6 @@ void builtin_divorce(ScriptState *st)
push_val(st->stack, ScriptCode::INT, 1);
}
-/*================================================
- * Script for Displaying MOB Information [Valaris]
- *------------------------------------------------
- */
-static
-void builtin_strmobinfo(ScriptState *st)
-{
-
- int num = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- int mob_class = conv_num(st, &(st->stack->stack_data[st->start + 3]));
-
- if (num <= 0 || num >= 8 || (mob_class >= 0 && mob_class <= 1000) || mob_class > 2000)
- return;
-
- if (num == 1)
- {
- char *buf;
- buf = mob_db[mob_class].name;
- push_str(st->stack, ScriptCode::STR, buf);
- return;
- }
- else if (num == 2)
- {
- char *buf;
- buf = mob_db[mob_class].jname;
- push_str(st->stack, ScriptCode::STR, buf);
- return;
- }
- else if (num == 3)
- push_val(st->stack, ScriptCode::INT, mob_db[mob_class].lv);
- else if (num == 4)
- push_val(st->stack, ScriptCode::INT, mob_db[mob_class].max_hp);
- else if (num == 5)
- push_val(st->stack, ScriptCode::INT, mob_db[mob_class].max_sp);
- else if (num == 6)
- push_val(st->stack, ScriptCode::INT, mob_db[mob_class].base_exp);
- else if (num == 7)
- push_val(st->stack, ScriptCode::INT, mob_db[mob_class].job_exp);
-}
-
/*==========================================
* IDからItem名
*------------------------------------------
@@ -5257,18 +3793,6 @@ void builtin_getspellinvocation(ScriptState *st)
}
static
-void builtin_getanchorinvocation(ScriptState *st)
-{
- const char *name = conv_str(st, &(st->stack->stack_data[st->start + 2]));
-
- const char *invocation = magic_find_anchor_invocation(name);
- if (!invocation)
- invocation = "...";
-
- push_str(st->stack, ScriptCode::STR, strdup(invocation));
-}
-
-static
void builtin_getpartnerid2(ScriptState *st)
{
struct map_session_data *sd = script_rid2sd(st);
@@ -5319,31 +3843,6 @@ void builtin_getinventorylist(ScriptState *st)
}
static
-void builtin_getskilllist(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
- int j = 0;
- if (!sd)
- return;
- for (SkillID i : erange(SkillID(), MAX_SKILL))
- {
- if (sd->status.skill[i].id != SkillID::ZERO
- && sd->status.skill[i].id != SkillID::NEGATIVE
- && sd->status.skill[i].lv > 0)
- {
- pc_setreg(sd, add_str("@skilllist_id") + (j << 24),
- uint16_t(sd->status.skill[i].id));
- pc_setreg(sd, add_str("@skilllist_lv") + (j << 24),
- sd->status.skill[i].lv);
- pc_setreg(sd, add_str("@skilllist_flag") + (j << 24),
- sd->status.skill[i].flags);
- j++;
- }
- }
- pc_setreg(sd, add_str("@skilllist_count"), j);
-}
-
-static
void builtin_getactivatedpoolskilllist(ScriptState *st)
{
struct map_session_data *sd = script_rid2sd(st);
@@ -5406,36 +3905,6 @@ void builtin_getunactivatedpoolskilllist(ScriptState *st)
}
static
-void builtin_getpoolskilllist(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
- int i, count = 0;
-
- if (!sd)
- return;
-
- for (i = 0; i < skill_pool_skills_size; i++)
- {
- SkillID skill_id = skill_pool_skills[i];
-
- if (sd->status.skill[skill_id].id == skill_id)
- {
- pc_setreg(sd, add_str("@skilllist_id") + (count << 24),
- uint16_t(sd->status.skill[skill_id].id));
- pc_setreg(sd, add_str("@skilllist_lv") + (count << 24),
- sd->status.skill[skill_id].lv);
- pc_setreg(sd, add_str("@skilllist_flag") + (count << 24),
- sd->status.skill[skill_id].flags);
- pc_setregstr(sd, add_str("@skilllist_name$") + (count << 24),
- skill_name(skill_id));
- ++count;
- }
- }
- pc_setreg(sd, add_str("@skilllist_count"), count);
-
-}
-
-static
void builtin_poolskill(ScriptState *st)
{
struct map_session_data *sd = script_rid2sd(st);
@@ -5457,50 +3926,6 @@ void builtin_unpoolskill(ScriptState *st)
}
-static
-void builtin_checkpoolskill(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
- SkillID skill_id = SkillID(conv_num(st, &(st->stack->stack_data[st->start + 2])));
-
- push_val(st->stack, ScriptCode::INT, skill_pool_is_activated(sd, skill_id));
-
-}
-
-static
-void builtin_clearitem(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
- int i;
- if (sd == NULL)
- return;
- for (i = 0; i < MAX_INVENTORY; i++)
- {
- if (sd->status.inventory[i].amount)
- pc_delitem(sd, i, sd->status.inventory[i].amount, 0);
- }
-}
-
-/*==========================================
- * NPCクラスチェンジ
- * classは変わりたいclass
- * typeは通常0なのかな?
- *------------------------------------------
- */
-static
-void builtin_classchange(ScriptState *st)
-{
- int npc_class, type;
- struct block_list *bl = map_id2bl(st->oid);
-
- if (bl == NULL)
- return;
-
- npc_class = conv_num(st, &(st->stack->stack_data[st->start + 2]));
- type = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- clif_npc_class_change(bl, npc_class, type);
-}
-
/*==========================================
* NPCから発生するエフェクト
* misceffect(effect, [target])
@@ -5557,47 +3982,6 @@ void builtin_misceffect(ScriptState *st)
}
/*==========================================
- * サウンドエフェクト
- *------------------------------------------
- */
-static
-void builtin_soundeffect(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
- int type = 0;
-
- const char *name = conv_str(st, &(st->stack->stack_data[st->start + 2]));
- type = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- if (sd)
- {
- if (st->oid)
- clif_soundeffect(sd, map_id2bl(st->oid), name, type);
- else
- {
- clif_soundeffect(sd, &sd->bl, name, type);
- }
- }
-}
-
-/*==========================================
- * NPC skill effects [Valaris]
- *------------------------------------------
- */
-static
-void builtin_npcskilleffect(ScriptState *st)
-{
- struct npc_data *nd = (struct npc_data *) map_id2bl(st->oid);
-
- SkillID skillid = SkillID(conv_num(st, &(st->stack->stack_data[st->start + 2])));
- int skilllv = conv_num(st, &(st->stack->stack_data[st->start + 3]));
- int x = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- int y = conv_num(st, &(st->stack->stack_data[st->start + 5]));
-
- clif_skill_poseffect(&nd->bl, skillid, skilllv, x, y, gettick());
-
-}
-
-/*==========================================
* Special effects [Valaris]
*------------------------------------------
*/
@@ -5772,34 +4156,6 @@ void builtin_npctalk(ScriptState *st)
}
/*==========================================
- * hasitems (checks to see if player has any
- * items on them, if so will return a 1)
- * [Valaris]
- *------------------------------------------
- */
-
-static
-void builtin_hasitems(ScriptState *st)
-{
- int i;
- struct map_session_data *sd;
-
- sd = script_rid2sd(st);
-
- for (i = 0; i < MAX_INVENTORY; i++)
- {
- if (sd->status.inventory[i].amount)
- {
- push_val(st->stack, ScriptCode::INT, 1);
- return;
- }
- }
-
- push_val(st->stack, ScriptCode::INT, 0);
-
-}
-
-/*==========================================
* getlook char info. getlook(arg)
*------------------------------------------
*/
@@ -5935,24 +4291,6 @@ void builtin_isin(ScriptState *st)
}
-// Trigger the shop on a (hopefully) nearby shop NPC
-static
-void builtin_shop(ScriptState *st)
-{
- struct map_session_data *sd = script_rid2sd(st);
- struct npc_data *nd;
-
- if (!sd)
- return;
-
- nd = npc_name2id(conv_str(st, &(st->stack->stack_data[st->start + 2])));
- if (!nd)
- return;
-
- builtin_close(st);
- clif_npcbuysell(sd, nd->bl.id);
-}
-
/*==========================================
* Check whether the PC is dead
*------------------------------------------
@@ -5965,32 +4303,6 @@ void builtin_isdead(ScriptState *st)
push_val(st->stack, ScriptCode::INT, pc_isdead(sd));
}
-/*========================================
- * Changes a NPC name, and sprite
- *----------------------------------------
- */
-static
-void builtin_fakenpcname(ScriptState *st)
-{
- int newsprite;
- struct npc_data *nd;
-
- 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]));
- newsprite = conv_num(st, &(st->stack->stack_data[st->start + 4]));
- nd = npc_name2id(name);
- if (!nd)
- return;
- strncpy(nd->name, newname, sizeof(nd->name)-1);
- nd->name[sizeof(nd->name)-1] = '\0';
- nd->npc_class = newsprite;
-
- // Refresh this npc
- npc_enable(name, 0);
- npc_enable(name, 1);
-
-}
-
/*============================
* Gets the PC's x pos
*----------------------------
@@ -6868,11 +5180,9 @@ BuiltinFunction builtin_functions[] =
BUILTIN(close2, ""),
BUILTIN(menu, "sL*"),
BUILTIN(goto, "L"),
- BUILTIN(callsub, "L*"),
- BUILTIN(callfunc, "F*"),
- BUILTIN(return, "*"),
- BUILTIN(getarg, "i"),
- BUILTIN(jobchange, "i*"),
+ BUILTIN(callsub, "L"),
+ BUILTIN(callfunc, "F"),
+ BUILTIN(return, ""),
BUILTIN(input, "N"),
BUILTIN(warp, "Mxy"),
BUILTIN(isat, "Mxy"),
@@ -6881,18 +5191,12 @@ BuiltinFunction builtin_functions[] =
BUILTIN(set, "Ne"),
BUILTIN(setarray, "Ne*"),
BUILTIN(cleararray, "Nei"),
- BUILTIN(copyarray, "NNi"),
BUILTIN(getarraysize, "N"),
- BUILTIN(deletearray, "N*"),
BUILTIN(getelementofarray, "Ni"),
BUILTIN(if, "iF*"),
BUILTIN(getitem, "Ii**"),
- BUILTIN(getitem2, "iiiiiiiii*"),
BUILTIN(makeitem, "IiMxy"),
BUILTIN(delitem, "Ii"),
- BUILTIN(cutin, "si"),
- BUILTIN(cutincard, "i"),
- BUILTIN(viewpoint, "iiiii"),
BUILTIN(heal, "ii"),
BUILTIN(itemheal, "ii"),
BUILTIN(percentheal, "ii"),
@@ -6902,57 +5206,30 @@ BuiltinFunction builtin_functions[] =
BUILTIN(checkweight, "Ii"),
BUILTIN(readparam, "i*"),
BUILTIN(getcharid, "i*"),
- BUILTIN(getpartyname, "i"),
- BUILTIN(getpartymember, "i"),
BUILTIN(strcharinfo, "i"),
BUILTIN(getequipid, "i"),
BUILTIN(getequipname, "i"),
- BUILTIN(getbrokenid, "i"),
- BUILTIN(repair, "i"),
- BUILTIN(getequipisequiped, "i"),
- BUILTIN(getequipisenableref, "i"),
- BUILTIN(getequipisidentify, "i"),
- BUILTIN(getequiprefinerycnt, "i"),
- BUILTIN(getequipweaponlv, "i"),
- BUILTIN(getequippercentrefinery, "i"),
- BUILTIN(successrefitem, "i"),
- BUILTIN(failedrefitem, "i"),
- BUILTIN(statusup, "i"),
BUILTIN(statusup2, "ii"),
BUILTIN(bonus, "ii"),
BUILTIN(bonus2, "iii"),
- BUILTIN(bonus3, "iiii"),
BUILTIN(skill, "ii*"),
BUILTIN(setskill, "ii"),
BUILTIN(getskilllv, "i"),
- BUILTIN(basicskillcheck, "*"),
BUILTIN(getgmlevel, ""),
BUILTIN(end, ""),
BUILTIN(getopt2, ""),
BUILTIN(setopt2, "i"),
- BUILTIN(checkoption, "i"),
- BUILTIN(setoption, "i"),
- BUILTIN(setcart, ""),
- BUILTIN(checkcart, "*"),
- BUILTIN(setfalcon, ""),
- BUILTIN(checkfalcon, "*"),
- BUILTIN(setriding, ""),
- BUILTIN(checkriding, "*"),
BUILTIN(savepoint, "Mxy"),
BUILTIN(gettimetick, "i"),
BUILTIN(gettime, "i"),
BUILTIN(gettimestr, "si"),
BUILTIN(openstorage, "*"),
- BUILTIN(itemskill, "iis"),
BUILTIN(monster, "Mxysmi*"),
BUILTIN(areamonster, "Mxyxysmi*"),
BUILTIN(killmonster, "ME"),
BUILTIN(killmonsterall, "M"),
- BUILTIN(doevent, "E"),
BUILTIN(donpcevent, "E"),
BUILTIN(addtimer, "tE"),
- BUILTIN(deltimer, "E"),
- BUILTIN(addtimercount, "si"),
BUILTIN(initnpctimer, ""),
BUILTIN(stopnpctimer, ""),
BUILTIN(startnpctimer, "*"),
@@ -6960,89 +5237,54 @@ BuiltinFunction builtin_functions[] =
BUILTIN(getnpctimer, "i"),
BUILTIN(announce, "si"),
BUILTIN(mapannounce, "Msi"),
- BUILTIN(areaannounce, "Mxyxysi"),
BUILTIN(getusers, "i"),
BUILTIN(getmapusers, "M"),
BUILTIN(getareausers, "Mxyxy*"),
BUILTIN(getareadropitem, "Mxyxyi*"),
BUILTIN(enablenpc, "s"),
BUILTIN(disablenpc, "s"),
- BUILTIN(enablearena, ""),
- BUILTIN(disablearena, ""),
- BUILTIN(hideoffnpc, "s"),
- BUILTIN(hideonnpc, "s"),
BUILTIN(sc_start, "iTi*"),
- BUILTIN(sc_start2, "iTii*"),
BUILTIN(sc_end, "i"),
BUILTIN(sc_check, "i"),
- BUILTIN(getscrate, "ii*"),
BUILTIN(debugmes, "s"),
- BUILTIN(resetlvl, "i"),
BUILTIN(resetstatus, ""),
- BUILTIN(resetskill, ""),
- BUILTIN(changebase, "i"),
BUILTIN(changesex, ""),
- BUILTIN(waitingroom, "si*"),
- BUILTIN(warpwaitingpc, "sii"),
- BUILTIN(delwaitingroom, "*"),
- BUILTIN(enablewaitingroomevent, "*"),
- BUILTIN(disablewaitingroomevent, "*"),
- BUILTIN(getwaitingroomstate, "i*"),
- BUILTIN(warpwaitingpc, "sii*"),
BUILTIN(attachrid, "i"),
BUILTIN(detachrid, ""),
BUILTIN(isloggedin, "i"),
- BUILTIN(setmapflagnosave, "MMxy"),
BUILTIN(setmapflag, "Mi"),
BUILTIN(removemapflag, "Mi"),
BUILTIN(getmapflag, "Mi"),
BUILTIN(pvpon, "M"),
BUILTIN(pvpoff, "M"),
BUILTIN(emotion, "i"),
- BUILTIN(getequipcardcnt, "i"),
- BUILTIN(successremovecards, "i"),
- BUILTIN(failedremovecards, "ii"),
BUILTIN(marriage, "P"),
BUILTIN(divorce, ""),
BUILTIN(getitemname, "I"),
BUILTIN(getspellinvocation, "s"),
- BUILTIN(getanchorinvocation, "s"),
BUILTIN(getpartnerid2, ""),
BUILTIN(getexp, "ii"),
BUILTIN(getinventorylist, ""),
- BUILTIN(getskilllist, ""),
- BUILTIN(getpoolskilllist, ""),
BUILTIN(getactivatedpoolskilllist, ""),
BUILTIN(getunactivatedpoolskilllist, ""),
BUILTIN(poolskill, "i"),
BUILTIN(unpoolskill, "i"),
- BUILTIN(checkpoolskill, "i"),
- BUILTIN(clearitem, ""),
- BUILTIN(classchange, "ii"),
BUILTIN(misceffect, "i*"),
- BUILTIN(soundeffect, "si"),
- BUILTIN(strmobinfo, "im"),
- BUILTIN(npcskilleffect, "iiii"),
BUILTIN(specialeffect, "i"),
BUILTIN(specialeffect2, "i"),
BUILTIN(nude, ""),
BUILTIN(mapwarp, "MMxy"),
- BUILTIN(inittimer, ""),
- BUILTIN(stoptimer, ""),
BUILTIN(cmdothernpc, "ss"),
BUILTIN(gmcommand, "s"),
BUILTIN(npcwarp, "xys"),
BUILTIN(message, "Ps"),
BUILTIN(npctalk, "s"),
- BUILTIN(hasitems, ""),
BUILTIN(mobcount, "ME"),
BUILTIN(getlook, "i"),
BUILTIN(getsavepoint, "i"),
BUILTIN(areatimer, "MxyxytE"),
BUILTIN(isin, "Mxyxy"),
- BUILTIN(shop, "s"),
BUILTIN(isdead, ""),
- BUILTIN(fakenpcname, "ssi"),
BUILTIN(unequipbyid, "i"),
BUILTIN(getx, ""),
BUILTIN(gety, ""),