summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/script_commands.txt6
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/pc.c15
-rw-r--r--src/map/script.c2
4 files changed, 22 insertions, 2 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index d7795b7a6..c35731cb7 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -540,7 +540,8 @@ allows you to replace lots of numbered arguments for many commands with
easier to read text. The special variables most commonly used are all
permanent character-based variables:
-Zeny - Amount of Zeny.
+Zeny - Amount of Zeny in the inventory.
+BankVault - Amount of Zeny in the bank.
Hp - Current amount of hit points.
MaxHp - Maximum amount of hit points.
Sp - Current spell points.
@@ -707,7 +708,8 @@ MAX_STORAGE - Maximum storage items
MAX_GUILD_STORAGE - Maximum guild storage items
MAX_CART - Maximum cart items
MAX_INVENTORY - Maximum inventory items
-MAX_ZENY - Maximum Zeny
+MAX_ZENY - Maximum Zeny in the inventory
+MAX_BANK_ZENY - Maximum Zeny in the bank
MAX_BG_MEMBERS - Maximum BattleGround members
MAX_CHAT_USERS - Maximum Chat users
MAX_REFINE - Maximum Refine level
diff --git a/src/map/map.h b/src/map/map.h
index 8c5372093..d4284b3f7 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -553,6 +553,7 @@ enum status_point_types { //we better clean up this enum and change it name [Hem
SP_MOD_EXP=125,
SP_MOD_DROP=126,
SP_MOD_DEATH=127,
+ SP_BANKVAULT=128,
// Mercenaries
SP_MERCFLEE=165, SP_MERCKILLS=189, SP_MERCFAITH=190,
diff --git a/src/map/pc.c b/src/map/pc.c
index 582abf71c..156e07dee 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -8141,6 +8141,7 @@ int pc_readparam(const struct map_session_data *sd, int type)
case SP_SKILLPOINT: val = sd->status.skill_point; break;
case SP_STATUSPOINT: val = sd->status.status_point; break;
case SP_ZENY: val = sd->status.zeny; break;
+ case SP_BANKVAULT: val = sd->status.bank_vault; break;
case SP_BASELEVEL: val = sd->status.base_level; break;
case SP_JOBLEVEL: val = sd->status.job_level; break;
case SP_CLASS: val = sd->status.class; break;
@@ -8285,6 +8286,7 @@ int pc_readparam(const struct map_session_data *sd, int type)
*------------------------------------------*/
int pc_setparam(struct map_session_data *sd,int type,int val)
{
+ int delta;
nullpo_ret(sd);
switch(type){
@@ -8335,6 +8337,19 @@ int pc_setparam(struct map_session_data *sd,int type,int val)
logs->zeny(sd, LOG_TYPE_SCRIPT, sd, -(sd->status.zeny - cap_value(val, 0, MAX_ZENY)));
sd->status.zeny = cap_value(val, 0, MAX_ZENY);
break;
+ case SP_BANKVAULT:
+ val = cap_value(val, 0, MAX_BANK_ZENY);
+ delta = (val - sd->status.bank_vault);
+ sd->status.bank_vault = val;
+ if (map->save_settings & 256) {
+ chrif->save(sd, 0); // send to char server
+ }
+ if (delta > 0) {
+ clif->bank_deposit(sd, BDA_SUCCESS);
+ } else if (delta < 0) {
+ clif->bank_withdraw(sd, BWA_SUCCESS);
+ }
+ return 1; // the vault uses a different packet
case SP_BASEEXP:
if(pc->nextbaseexp(sd) > 0) {
sd->status.base_exp = val;
diff --git a/src/map/script.c b/src/map/script.c
index d1806cb41..6b996a11c 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -2384,6 +2384,7 @@ void script_load_parameters(void)
{"SkillPoint", SP_SKILLPOINT},
{"Class", SP_CLASS},
{"Zeny", SP_ZENY},
+ {"BankVault", SP_BANKVAULT},
{"Sex", SP_SEX},
{"NextBaseExp", SP_NEXTBASEEXP},
{"NextJobExp", SP_NEXTJOBEXP},
@@ -23679,6 +23680,7 @@ void script_hardcoded_constants(void)
script->set_constant("MAX_CART",MAX_INVENTORY,false, false);
script->set_constant("MAX_INVENTORY",MAX_INVENTORY,false, false);
script->set_constant("MAX_ZENY",MAX_ZENY,false, false);
+ script->set_constant("MAX_BANK_ZENY", MAX_BANK_ZENY, false, false);
script->set_constant("MAX_BG_MEMBERS",MAX_BG_MEMBERS,false, false);
script->set_constant("MAX_CHAT_USERS",MAX_CHAT_USERS,false, false);
script->set_constant("MAX_REFINE",MAX_REFINE,false, false);