diff options
-rw-r--r-- | conf/map/battle/items.conf | 8 | ||||
-rw-r--r-- | src/map/battle.c | 2 | ||||
-rw-r--r-- | src/map/battle.h | 3 | ||||
-rw-r--r-- | src/map/pc.c | 14 |
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; } |