summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/map/battle/items.conf8
-rw-r--r--src/map/battle.c2
-rw-r--r--src/map/battle.h3
-rw-r--r--src/map/pc.c14
4 files changed, 19 insertions, 8 deletions
diff --git a/conf/map/battle/items.conf b/conf/map/battle/items.conf
index 144e04ea4..e834b80f6 100644
--- a/conf/map/battle/items.conf
+++ b/conf/map/battle/items.conf
@@ -123,3 +123,11 @@ boarding_halter_speed: 25
// Allow to use items when the storage is open?
// Official: false (Default)
storage_use_item: false
+
+// Minimum item buy price at shop
+// Default: 1
+min_item_buy_price: 1
+
+// Minimum item sell price at shop
+// Default: 0
+min_item_sell_price: 0
diff --git a/src/map/battle.c b/src/map/battle.c
index fceb30be1..9d4c416b0 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -7371,6 +7371,8 @@ static const struct battle_data {
{ "storage_use_item", &battle_config.storage_use_item, 0, 0, 1, },
{ "features/enable_attendance_system", &battle_config.feature_enable_attendance_system,1, 0, 1, },
{ "features/feature_attendance_endtime",&battle_config.feature_attendance_endtime, 1, 0, 99999999, },
+ { "min_item_buy_price", &battle_config.min_item_buy_price, 1, 0, INT_MAX, },
+ { "min_item_sell_price", &battle_config.min_item_sell_price, 0, 0, INT_MAX, },
};
static bool battle_set_value_sub(int index, int value)
diff --git a/src/map/battle.h b/src/map/battle.h
index 9f5207e95..4472c0c52 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -570,6 +570,9 @@ struct Battle_Config {
int feature_enable_attendance_system;
int feature_attendance_endtime;
+
+ int min_item_buy_price;
+ int min_item_sell_price;
};
/* criteria for battle_config.idletime_critera */
diff --git a/src/map/pc.c b/src/map/pc.c
index 56f42690d..b8a6912ee 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4402,8 +4402,6 @@ static int pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equ
static int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
{
int skill_lv, rate1 = 0, rate2 = 0;
- if (orig_value <= 0)
- return 0;
if ((skill_lv=pc->checkskill(sd,MC_DISCOUNT)) > 0) // merchant discount
rate1 = 5+skill_lv*2-((skill_lv==10)? 1:0);
if ((skill_lv=pc->checkskill(sd,RG_COMPULSION)) > 0) // rogue discount
@@ -4412,8 +4410,9 @@ static int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
rate1 = rate2;
if (rate1 != 0)
orig_value = apply_percentrate(orig_value, 100-rate1, 100);
- if (orig_value < 1)
- orig_value = 1;
+
+ if (orig_value < battle_config.min_item_buy_price)
+ orig_value = battle_config.min_item_buy_price;
return orig_value;
}
@@ -4423,14 +4422,13 @@ static int pc_modifybuyvalue(struct map_session_data *sd, int orig_value)
static int pc_modifysellvalue(struct map_session_data *sd, int orig_value)
{
int skill_lv, rate = 0;
- if (orig_value <= 0)
- return 0;
if ((skill_lv=pc->checkskill(sd,MC_OVERCHARGE)) > 0) //OverCharge
rate = 5+skill_lv*2-((skill_lv==10)? 1:0);
if (rate != 0)
orig_value = apply_percentrate(orig_value, 100+rate, 100);
- if (orig_value < 1)
- orig_value = 1;
+
+ if (orig_value < battle_config.min_item_sell_price)
+ orig_value = battle_config.min_item_sell_price;
return orig_value;
}