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
This commit is contained in:
baalberith 2013-04-11 22:22:32 +00:00
parent b43102152f
commit 3554554874
3 changed files with 15 additions and 11 deletions

View File

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

View File

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

View File

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