- Added configuration to wheter the monster size would change experience earned, drop rates and the monster status (such as hp, strength etc). Awesome suggestion by Euphy :)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16905 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
momacabu 2012-11-10 21:02:55 +00:00
parent f28c2a56f5
commit 2ea2550cad
5 changed files with 26 additions and 9 deletions

View File

@ -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

View File

@ -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
/**

View File

@ -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);

View File

@ -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)

View File

@ -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;