Fixed bugreport:7015 missing base aspd for High Priest wearing knuckles.

Fixed bugreport:7033 where fixed cast time reduction bonuses affect variable cast time.
Fixed bugreport:7034 stats display should now display properly when skill debuffs/buffs are used.
Fixed bugreport:6840 where Fire Cloak and Wind Curtain accidentally changed elemental damage resistance.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17043 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
rud0lp20 2012-12-25 13:14:01 +00:00
parent f54be649cd
commit d4b09c6c56
3 changed files with 63 additions and 16 deletions

View File

@ -72,7 +72,7 @@
// Lord Knight // Lord Knight
4008, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 4008, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// High Priest // High Priest
4009, 26000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,2000 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490 4009, 26000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,640 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490
// High Wizard // High Wizard
4010, 24000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620 4010, 24000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620
// Whitesmith // Whitesmith

View File

@ -13837,9 +13837,8 @@ int skill_vfcastfix (struct block_list *bl, double time, int skill_id, int skill
if( !(skill_get_castnodex(skill_id, skill_lv)&1) )// reduction from status point if( !(skill_get_castnodex(skill_id, skill_lv)&1) )// reduction from status point
time = (1 - sqrt( ((float)(status_get_dex(bl)*2 + status_get_int(bl)) / battle_config.vcast_stat_scale) )) * time; time = (1 - sqrt( ((float)(status_get_dex(bl)*2 + status_get_int(bl)) / battle_config.vcast_stat_scale) )) * time;
// underflow checking/capping // underflow checking/capping
time = max(time, 0) + (1 - (float)min(fixcast_r, 100) / 100) * fixed; time = max(time, 0) + (1 - (float)min(fixcast_r, 100) / 100) * max(fixed,0);
// ShowInfo("Casttime vfcastfix = %d\n",time);
return (int)time; return (int)time;
} }
#endif #endif

View File

@ -3035,7 +3035,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
if( sc->data[SC_FIRE_CLOAK_OPTION] ) { if( sc->data[SC_FIRE_CLOAK_OPTION] ) {
i = sc->data[SC_FIRE_CLOAK_OPTION]->val2; i = sc->data[SC_FIRE_CLOAK_OPTION]->val2;
sd->subele[ELE_FIRE] += i; sd->subele[ELE_FIRE] += i;
sd->subele[ELE_EARTH] -= i; sd->subele[ELE_WATER] -= i;
} }
if( sc->data[SC_WATER_DROP_OPTION] ) { if( sc->data[SC_WATER_DROP_OPTION] ) {
i = sc->data[SC_WATER_DROP_OPTION]->val2; i = sc->data[SC_WATER_DROP_OPTION]->val2;
@ -3045,7 +3045,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
if( sc->data[SC_WIND_CURTAIN_OPTION] ) { if( sc->data[SC_WIND_CURTAIN_OPTION] ) {
i = sc->data[SC_WIND_CURTAIN_OPTION]->val2; i = sc->data[SC_WIND_CURTAIN_OPTION]->val2;
sd->subele[ELE_WIND] += i; sd->subele[ELE_WIND] += i;
sd->subele[ELE_WATER] -= i; sd->subele[ELE_EARTH] -= i;
} }
if( sc->data[SC_STONE_SHIELD_OPTION] ) { if( sc->data[SC_STONE_SHIELD_OPTION] ) {
i = sc->data[SC_STONE_SHIELD_OPTION]->val2; i = sc->data[SC_STONE_SHIELD_OPTION]->val2;
@ -3526,7 +3526,11 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
if(flag&SCB_AGI) { if(flag&SCB_AGI) {
status->agi = status_calc_agi(bl, sc, b_status->agi); status->agi = status_calc_agi(bl, sc, b_status->agi);
flag|=SCB_FLEE; flag|=SCB_FLEE
#ifdef RENEWAL
|SCB_DEF2
#endif
;
if( bl->type&(BL_PC|BL_HOM) ) if( bl->type&(BL_PC|BL_HOM) )
flag |= SCB_ASPD|SCB_DSPD; flag |= SCB_ASPD|SCB_DSPD;
} }
@ -3551,7 +3555,11 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
if(flag&SCB_DEX) { if(flag&SCB_DEX) {
status->dex = status_calc_dex(bl, sc, b_status->dex); status->dex = status_calc_dex(bl, sc, b_status->dex);
flag|=SCB_BATK|SCB_HIT; flag|=SCB_BATK|SCB_HIT
#ifdef RENEWAL
|SCB_MATK|SCB_MDEF2
#endif
;
if( bl->type&(BL_PC|BL_HOM) ) if( bl->type&(BL_PC|BL_HOM) )
flag |= SCB_ASPD; flag |= SCB_ASPD;
if( bl->type&BL_HOM ) if( bl->type&BL_HOM )
@ -3560,7 +3568,11 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
if(flag&SCB_LUK) { if(flag&SCB_LUK) {
status->luk = status_calc_luk(bl, sc, b_status->luk); status->luk = status_calc_luk(bl, sc, b_status->luk);
flag|=SCB_BATK|SCB_CRI|SCB_FLEE2; flag|=SCB_BATK|SCB_CRI|SCB_FLEE2
#ifdef RENEWAL
|SCB_MATK|SCB_HIT|SCB_FLEE
#endif
;
} }
if(flag&SCB_BATK && b_status->batk) { if(flag&SCB_BATK && b_status->batk) {
@ -3601,17 +3613,33 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
} }
if(flag&SCB_HIT) { if(flag&SCB_HIT) {
if (status->dex == b_status->dex) if (status->dex == b_status->dex
#ifdef RENEWAL
&& status->luk == b_status->luk
#endif
)
status->hit = status_calc_hit(bl, sc, b_status->hit); status->hit = status_calc_hit(bl, sc, b_status->hit);
else else
status->hit = status_calc_hit(bl, sc, b_status->hit +(status->dex - b_status->dex)); status->hit = status_calc_hit(bl, sc, b_status->hit + (status->dex - b_status->dex)
#ifdef RENEWAL
+ (status->luk/3 - b_status->luk/3)
#endif
);
} }
if(flag&SCB_FLEE) { if(flag&SCB_FLEE) {
if (status->agi == b_status->agi) if (status->agi == b_status->agi
#ifdef RENEWAL
&& status->luk == b_status->luk
#endif
)
status->flee = status_calc_flee(bl, sc, b_status->flee); status->flee = status_calc_flee(bl, sc, b_status->flee);
else else
status->flee = status_calc_flee(bl, sc, b_status->flee +(status->agi - b_status->agi)); status->flee = status_calc_flee(bl, sc, b_status->flee +(status->agi - b_status->agi)
#ifdef RENEWAL
+ (status->luk/5 - b_status->luk/5)
#endif
);
} }
if(flag&SCB_DEF) if(flag&SCB_DEF)
@ -3623,10 +3651,20 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
} }
if(flag&SCB_DEF2) { if(flag&SCB_DEF2) {
if (status->vit == b_status->vit) if (status->vit == b_status->vit
#ifdef RENEWAL
&& status->agi == b_status->agi
#endif
)
status->def2 = status_calc_def2(bl, sc, b_status->def2); status->def2 = status_calc_def2(bl, sc, b_status->def2);
else else
status->def2 = status_calc_def2(bl, sc, b_status->def2 + (status->vit - b_status->vit)); status->def2 = status_calc_def2(bl, sc, b_status->def2
#ifdef RENEWAL
+ (int)( ((float)status->vit/2 + (float)b_status->vit/2) + ((float)status->agi/5 + (float)b_status->agi/5) )
#else
+ (status->vit - b_status->vit)
#endif
);
} }
if(flag&SCB_MDEF) if(flag&SCB_MDEF)
@ -3638,10 +3676,20 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
} }
if(flag&SCB_MDEF2) { if(flag&SCB_MDEF2) {
if (status->int_ == b_status->int_ && status->vit == b_status->vit) if (status->int_ == b_status->int_ && status->vit == b_status->vit
#ifdef RENEWAL
&& status->dex == b_status->dex
#endif
)
status->mdef2 = status_calc_mdef2(bl, sc, b_status->mdef2); status->mdef2 = status_calc_mdef2(bl, sc, b_status->mdef2);
else else
status->mdef2 = status_calc_mdef2(bl, sc, b_status->mdef2 +(status->int_ - b_status->int_) +((status->vit - b_status->vit)>>1)); status->mdef2 = status_calc_mdef2(bl, sc, b_status->mdef2 +(status->int_ - b_status->int_)
#ifdef RENEWAL
+ (int)( ((float)status->dex/5 - (float)b_status->dex/5) + ((float)status->vit/5 + (float)b_status->vit/5) )
#else
+ ((status->vit - b_status->vit)>>1)
#endif
);
} }
if(flag&SCB_SPEED) { if(flag&SCB_SPEED) {