Explorar o código

fixed bVariableCastrate not able to decrease the variable cast time
fixed monster flee/hit calculation, we still need a mobdb update for proper monster stats - bugreport:7457


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17249 54d463be-8e91-2dee-dedb-b68131a5f0ec

baalberith %!s(int64=12) %!d(string=hai) anos
pai
achega
3554554874
Modificáronse 3 ficheiros con 15 adicións e 11 borrados
  1. 2 2
      src/config/const.h
  2. 1 2
      src/map/skill.c
  3. 12 7
      src/map/status.c

+ 2 - 2
src/config/const.h

@@ -53,8 +53,8 @@
 
 /* ATCMD_FUNC(mobinfo) HIT and FLEE calculations */
 #ifdef RENEWAL
-	#define MOB_FLEE(mob) ( mob->lv + mob->status.agi + mob->status.luk/5 + 100 )
-	#define MOB_HIT(mob)  ( mob->lv + mob->status.dex + mob->status.luk/3 + 175 )
+	#define MOB_FLEE(mob) ( mob->lv + mob->status.agi + 100 )
+	#define MOB_HIT(mob)  ( mob->lv + mob->status.dex + 175 )
 #else
 	#define MOB_FLEE(mob) ( mob->lv + mob->status.agi )
 	#define MOB_HIT(mob)  ( mob->lv + mob->status.dex )

+ 1 - 2
src/map/skill.c

@@ -14016,8 +14016,7 @@ int skill_vfcastfix (struct block_list *bl, double time, uint16 skill_id, uint16
 			}
 		for( i = 0; i < ARRAYLENGTH(sd->skillcast) && sd->skillcast[i].id; i++ )
 			if( sd->skillcast[i].id == skill_id ){ // bonus2 bVariableCastrate
-				if( (i=sd->skillcast[i].val) < 0)
-					VARCAST_REDUCTION(i);
+				VARCAST_REDUCTION(sd->skillcast[i].val);
 				break;
 			}
 		for( i = 0; i < ARRAYLENGTH(sd->skillfixcastrate) && sd->skillfixcastrate[i].id; i++ )

+ 12 - 7
src/map/status.c

@@ -1922,14 +1922,19 @@ void status_calc_misc(struct block_list *bl, struct status_data *status, int lev
 		status->cri = status->flee2 = 0;
 
 #ifdef RENEWAL // renewal formulas
-    status->matk_min = status->matk_max = status_base_matk(status, level);
-    status->hit += level + status->dex + status->luk/3 + 175; //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175
-    status->flee += level + status->agi + status->luk/5 + 100; //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100
-    status->def2 += (int)(((float)level + status->vit)/2 + ((float)status->agi/5)); //base level + (every 2 vit = +1 def) + (every 5 agi = +1 def)
-    status->mdef2 += (int)(status->int_ + ((float)level/4) + ((float)status->dex/5) + ((float)status->vit/5)); //(every 4 base level = +1 mdef) + (every 1 int = +1 mdef) + (every 5 dex = +1 mdef) + (every 5 vit = +1 mdef)
+	if (bl->type == BL_MOB) {
+		status->hit += level + status->dex + 175;
+		status->flee += level + status->agi + 100;
+	} else {
+		status->hit += level + status->dex + status->luk/3 + 175; //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175
+		status->flee += level + status->agi + status->luk/5 + 100; //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100
+	}
+	status->matk_min = status->matk_max = status_base_matk(status, level);
+	status->def2 += (int)(((float)level + status->vit)/2 + ((float)status->agi/5)); //base level + (every 2 vit = +1 def) + (every 5 agi = +1 def)
+	status->mdef2 += (int)(status->int_ + ((float)level/4) + ((float)status->dex/5) + ((float)status->vit/5)); //(every 4 base level = +1 mdef) + (every 1 int = +1 mdef) + (every 5 dex = +1 mdef) + (every 5 vit = +1 mdef)
 #else
-    status->matk_min = status_base_matk_min(status);
-    status->matk_max = status_base_matk_max(status);
+	status->matk_min = status_base_matk_min(status);
+	status->matk_max = status_base_matk_max(status);
 	status->hit += level + status->dex;
 	status->flee += level + status->agi;
 	status->def2 += status->vit;