summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/battle/monster.conf7
-rw-r--r--src/map/battle.c1
-rw-r--r--src/map/battle.h2
-rw-r--r--src/map/mob.c23
-rw-r--r--src/map/status.c2
5 files changed, 26 insertions, 9 deletions
diff --git a/conf/battle/monster.conf b/conf/battle/monster.conf
index 398b2a0ab..cb53078ec 100644
--- a/conf/battle/monster.conf
+++ b/conf/battle/monster.conf
@@ -201,3 +201,10 @@ mob_slave_keep_target: yes
// Whether or not to spawn the mvp tomb.
// See http://irowiki.org/wiki/MVP#Gravestone
mvp_tomb_enabled: yes
+
+// Whether or not mob size influences on experience earned, drop rates, monster status. (Note 1)
+// If the monster is big, it will give two times the experience, increase the drop rates by twice
+// and double all status (hp, str, agi etc). But if the monster is small everything will be divided
+// by two (experience, drop rates and status).
+// Default: no
+mob_size_influence: no
diff --git a/src/map/battle.c b/src/map/battle.c
index 18aadf0ac..9c109964c 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -5756,6 +5756,7 @@ static const struct _battle_data {
{ "atcommand_mobinfo_type", &battle_config.atcommand_mobinfo_type, 0, 0, 1 },
{ "homunculus_max_level", &battle_config.hom_max_level, 99, 0, MAX_LEVEL, },
{ "homunculus_S_max_level", &battle_config.hom_S_max_level, 150, 0, MAX_LEVEL, },
+ { "mob_size_influence", &battle_config.mob_size_influence, 0, 0, 1, },
};
#ifndef STATS_OPT_OUT
/**
diff --git a/src/map/battle.h b/src/map/battle.h
index 28e6176ec..b901644de 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -480,6 +480,8 @@ extern struct Battle_Config
int atcommand_suggestions_enabled;
int min_npc_vending_distance;
int atcommand_mobinfo_type;
+
+ int mob_size_influence; // Enable modifications on earned experience, drop rates and monster status depending on monster size. [mkbu95]
} battle_config;
void do_init_battle(void);
diff --git a/src/map/mob.c b/src/map/mob.c
index fe174ba22..465f1f74e 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2216,10 +2216,13 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
}
// change experience for different sized monsters [Valaris]
- if(md->special_state.size==SZ_MEDIUM)
- per /=2.;
- else if(md->special_state.size==SZ_BIG)
- per *=2.;
+ if (battle_config.mob_size_influence)
+ {
+ if (md->special_state.size == SZ_MEDIUM)
+ per /= 2.;
+ else if (md->special_state.size == SZ_BIG)
+ per *= 2.;
+ }
if( md->dmglog[i].flag == MDLF_PET )
per *= battle_config.pet_attack_exp_rate/100.;
@@ -2334,10 +2337,14 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
}
// change drops depending on monsters size [Valaris]
- if(md->special_state.size==SZ_MEDIUM && drop_rate >= 2)
- drop_rate/=2;
- else if(md->special_state.size==SZ_BIG)
- drop_rate*=2;
+ if (battle_config.mob_size_influence)
+ {
+ if (md->special_state.size == SZ_MEDIUM && drop_rate >= 2)
+ drop_rate /= 2;
+ else if( md->special_state.size == SZ_BIG)
+ drop_rate *= 2;
+ }
+
if (src) {
//Drops affected by luk as a fixed increase [Valaris]
if (battle_config.drops_by_luk)
diff --git a/src/map/status.c b/src/map/status.c
index e097dcdb1..3b641cf92 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -2061,7 +2061,7 @@ int status_calc_mob_(struct mob_data* md, bool first)
}
- if (flag&2)
+ if (flag&2 && battle_config.mob_size_influence)
{ // change for sized monsters [Valaris]
if (md->special_state.size==SZ_MEDIUM) {
status->max_hp>>=1;