Ver código fonte

- 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
momacabu 12 anos atrás
pai
commit
2ea2550cad
5 arquivos alterados com 26 adições e 9 exclusões
  1. 7 0
      conf/battle/monster.conf
  2. 1 0
      src/map/battle.c
  3. 2 0
      src/map/battle.h
  4. 15 8
      src/map/mob.c
  5. 1 1
      src/map/status.c

+ 7 - 0
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

+ 1 - 0
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
 /**

+ 2 - 0
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);

+ 15 - 8
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)

+ 1 - 1
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;