Follow up to 7c5bda2

* Corrected the Flash Combo bonus ATK not being applied to the caster and not displaying in the status window.
* Corrected Sky Net Blow not casting at the end of Flash Combo if the target is dead.
This commit is contained in:
aleos89 2016-02-21 09:53:05 -05:00
parent 4c1c6e6d2f
commit f264885411
3 changed files with 11 additions and 15 deletions

View File

@ -4438,13 +4438,6 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
} }
} }
if (sc->data[SC_FLASHCOMBO]) {
ATK_ADD(wd.damage, wd.damage2, sc->data[SC_FLASHCOMBO]->val2);
#ifdef RENEWAL
ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_FLASHCOMBO]->val2);
#endif
}
if((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { // Monster Transformation bonus if((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { // Monster Transformation bonus
if (sc->data[SC_MTF_RANGEATK]) { if (sc->data[SC_MTF_RANGEATK]) {
ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_MTF_RANGEATK]->val1); ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_MTF_RANGEATK]->val1);

View File

@ -3845,12 +3845,6 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
target = map_id2bl(skl->target_id); target = map_id2bl(skl->target_id);
if( ( skl->skill_id == RG_INTIMIDATE || skl->skill_id == SC_FATALMENACE ) && (!target || target->prev == NULL || !check_distance_bl(src,target,AREA_SIZE)) ) if( ( skl->skill_id == RG_INTIMIDATE || skl->skill_id == SC_FATALMENACE ) && (!target || target->prev == NULL || !check_distance_bl(src,target,AREA_SIZE)) )
target = src; //Required since it has to warp. target = src; //Required since it has to warp.
if(target == NULL)
break; // Target offline?
if(target->prev == NULL)
break; // Target not on Map
if(src->m != target->m)
break; // Different Maps
if (skl->skill_id == SR_SKYNETBLOW) { if (skl->skill_id == SR_SKYNETBLOW) {
clif_skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skl->skill_id,skl->skill_lv,DMG_SKILL); clif_skill_damage(src,src,tick,status_get_amotion(src),0,-30000,1,skl->skill_id,skl->skill_lv,DMG_SKILL);
@ -3860,6 +3854,13 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
break; break;
} }
if(target == NULL)
break; // Target offline?
if(target->prev == NULL)
break; // Target not on Map
if(src->m != target->m)
break; // Different Maps
if(status_isdead(src)) { if(status_isdead(src)) {
switch(skl->skill_id) { switch(skl->skill_id) {
case WL_CHAINLIGHTNING_ATK: case WL_CHAINLIGHTNING_ATK:
@ -9743,7 +9744,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
if (sd) if (sd)
sd->ud.attackabletime = sd->canuseitem_tick = sd->ud.canact_tick; sd->ud.attackabletime = sd->canuseitem_tick = sd->ud.canact_tick;
clif_skill_nodamage(src,bl,skill_id,skill_lv, clif_skill_nodamage(src,bl,skill_id,skill_lv,
sc_start2(src,bl,type,100,skill_lv,bl->id,skill_get_time(skill_id,skill_lv))); sc_start(src,src,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
for (i = 0; i < ARRAYLENGTH(combo); i++) for (i = 0; i < ARRAYLENGTH(combo); i++)
skill_addtimerskill(src,tick + delay[i],bl->id,0,0,combo[i],skill_lv,BF_WEAPON,flag|SD_LEVEL); skill_addtimerskill(src,tick + delay[i],bl->id,0,0,combo[i],skill_lv,BF_WEAPON,flag|SD_LEVEL);
} }

View File

@ -723,7 +723,7 @@ void initChangeTables(void)
set_sc( SR_GENTLETOUCH_ENERGYGAIN , SC_GT_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN , SCB_NONE ); set_sc( SR_GENTLETOUCH_ENERGYGAIN , SC_GT_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN , SCB_NONE );
set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD ); set_sc( SR_GENTLETOUCH_CHANGE , SC_GT_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_WATK|SCB_MDEF|SCB_ASPD );
set_sc( SR_GENTLETOUCH_REVITALIZE , SC_GT_REVITALIZE , SI_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_REGEN ); set_sc( SR_GENTLETOUCH_REVITALIZE , SC_GT_REVITALIZE , SI_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_REGEN );
set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_NONE ); set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_WATK );
/* Wanderer / Minstrel */ /* Wanderer / Minstrel */
set_sc( WA_SWING_DANCE , SC_SWINGDANCE , SI_SWINGDANCE , SCB_SPEED|SCB_ASPD ); set_sc( WA_SWING_DANCE , SC_SWINGDANCE , SI_SWINGDANCE , SCB_SPEED|SCB_ASPD );
@ -5518,6 +5518,8 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan
watk += watk * sc->data[SC_ANGRIFFS_MODUS]->val2/100; watk += watk * sc->data[SC_ANGRIFFS_MODUS]->val2/100;
if(sc->data[SC_ODINS_POWER]) if(sc->data[SC_ODINS_POWER])
watk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; watk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1;
if (sc->data[SC_FLASHCOMBO])
watk += sc->data[SC_FLASHCOMBO]->val2;
return (unsigned short)cap_value(watk,0,USHRT_MAX); return (unsigned short)cap_value(watk,0,USHRT_MAX);
} }