From 04d15f03e28b9f8b0ed9ffa2d3c0c6ef6625363a Mon Sep 17 00:00:00 2001 From: ultramage Date: Thu, 21 Jan 2016 13:57:27 +0100 Subject: Add top-level s_sd variable to battle_calc_damage() to represent a player source of damage. This cleans up the various badly-named duplicates that have accumulated in local scopes over time. The unusual name, s_sd (with underscore), was chosen to prevent interaction with any existing custom code. --- src/map/battle.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 44adef051..d76a7a76c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2717,7 +2717,7 @@ void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list * * After this we apply bg/gvg reduction *------------------------------------------*/ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv) { - struct map_session_data *sd = NULL; + struct map_session_data *s_sd, *sd = NULL; struct status_change *sc, *tsc; struct status_change_entry *sce; int div_, flag; @@ -2725,6 +2725,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam nullpo_ret(bl); nullpo_ret(d); + s_sd = BL_CAST(BL_PC, src); sd = BL_CAST(BL_PC, bl); div_ = d->div_; flag = d->flag; @@ -2987,13 +2988,12 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam #endif if( damage ) { - struct map_session_data *tsd = BL_CAST(BL_PC, src); if( sc->data[SC_DEEP_SLEEP] ) { damage += damage / 2; // 1.5 times more damage while in Deep Sleep. status_change_end(bl,SC_DEEP_SLEEP,INVALID_TIMER); } - if( tsd && sd && sc->data[SC_COLD] && flag&BF_WEAPON ){ - switch(tsd->status.weapon){ + if( s_sd && sd && sc->data[SC_COLD] && flag&BF_WEAPON ){ + switch(s_sd->status.weapon){ case W_MACE: case W_2HMACE: case W_1HAXE: @@ -3131,8 +3131,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if( (sce = sc->data[SC_STONEHARDSKIN]) && flag&(BF_SHORT|BF_WEAPON) && damage > 0 ) { sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX); if( src->type == BL_PC ) { - struct map_session_data *ssd = BL_CAST(BL_PC, src); - if (ssd && ssd->status.weapon != W_BOW) + if (s_sd && s_sd->status.weapon != W_BOW) skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF); } else skill->break_equip(src, EQP_WEAPON, 3000, BCT_SELF); @@ -3259,9 +3258,8 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if (hd) homun->addspiritball(hd, 10); } if (src->type == BL_PC && damage > 0 && (sce = tsc->data[SC_GENTLETOUCH_ENERGYGAIN]) != NULL) { - struct map_session_data *tsd = BL_UCAST(BL_PC, src); - if (tsd != NULL && rnd() % 100 < sce->val2) - pc->addspiritball(tsd, skill->get_time(MO_CALLSPIRITS, 1), pc->getmaxspiritball(tsd, 0)); + if (s_sd != NULL && rnd() % 100 < sce->val2) + pc->addspiritball(s_sd, skill->get_time(MO_CALLSPIRITS, 1), pc->getmaxspiritball(s_sd, 0)); } } /* no data claims these settings affect anything other than players */ @@ -3312,9 +3310,8 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if (!skill_id || (element = skill->get_ele(skill_id, skill_lv)) == -1) { // Take weapon's element struct status_data *sstatus = NULL; - struct map_session_data *ssd = BL_CAST(BL_PC, src); - if (src->type == BL_PC && ssd->bonus.arrow_ele != 0) { - element = ssd->bonus.arrow_ele; + if (s_sd != NULL && s_sd->bonus.arrow_ele != 0) { + element = s_sd->bonus.arrow_ele; } else if ((sstatus = status->get_status_data(src)) != NULL) { element = sstatus->rhw.ele; } -- cgit v1.2.3-60-g2f50 From 1f2ac63c2d11fb97e23b5684bbd9dcce67982d11 Mon Sep 17 00:00:00 2001 From: ultramage Date: Thu, 21 Jan 2016 13:59:34 +0100 Subject: Rename 'sd' to 't_sd' in battle_calc_damage(). --- src/map/battle.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index d76a7a76c..adf8d38c5 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2717,7 +2717,7 @@ void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list * * After this we apply bg/gvg reduction *------------------------------------------*/ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv) { - struct map_session_data *s_sd, *sd = NULL; + struct map_session_data *s_sd, *t_sd; struct status_change *sc, *tsc; struct status_change_entry *sce; int div_, flag; @@ -2726,7 +2726,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam nullpo_ret(d); s_sd = BL_CAST(BL_PC, src); - sd = BL_CAST(BL_PC, bl); + t_sd = BL_CAST(BL_PC, bl); div_ = d->div_; flag = d->flag; @@ -2736,16 +2736,16 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam return 0; if( battle_config.ksprotection && mob->ksprotected(src, bl) ) return 0; - if (sd != NULL) { + if (t_sd != NULL) { //Special no damage states - if(flag&BF_WEAPON && sd->special_state.no_weapon_damage) - damage -= damage * sd->special_state.no_weapon_damage / 100; + if(flag&BF_WEAPON && t_sd->special_state.no_weapon_damage) + damage -= damage * t_sd->special_state.no_weapon_damage / 100; - if(flag&BF_MAGIC && sd->special_state.no_magic_damage) - damage -= damage * sd->special_state.no_magic_damage / 100; + if(flag&BF_MAGIC && t_sd->special_state.no_magic_damage) + damage -= damage * t_sd->special_state.no_magic_damage / 100; - if(flag&BF_MISC && sd->special_state.no_misc_damage) - damage -= damage * sd->special_state.no_misc_damage / 100; + if(flag&BF_MISC && t_sd->special_state.no_misc_damage) + damage -= damage * t_sd->special_state.no_misc_damage / 100; if(!damage) return 0; } @@ -2839,7 +2839,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } if( sc->data[SC__MAELSTROM] && (flag&BF_MAGIC) && skill_id && (skill->get_inf(skill_id)&INF_GROUND_SKILL) ) { // {(Maelstrom Skill LevelxAbsorbed Skill Level)+(Caster's Job/5)}/2 - int sp = (sc->data[SC__MAELSTROM]->val1 * skill_lv + (sd ? sd->status.job_level / 5 : 0)) / 2; + int sp = (sc->data[SC__MAELSTROM]->val1 * skill_lv + (t_sd ? t_sd->status.job_level / 5 : 0)) / 2; status->heal(bl, 0, sp, 3); d->dmg_lv = ATK_BLOCK; return 0; @@ -2917,7 +2917,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if(sc->data[SC_DODGE_READY] && ( !sc->opt1 || sc->opt1 == OPT1_BURNING ) && (flag&BF_LONG || sc->data[SC_STRUP]) && rnd()%100 < 20) { - if (sd && pc_issit(sd)) pc->setstand(sd); //Stand it to dodge. + if (t_sd && pc_issit(t_sd)) pc->setstand(t_sd); //Stand it to dodge. clif->skill_nodamage(bl,bl,TK_DODGE,1,1); if (!sc->data[SC_COMBOATTACK]) sc_start4(src, bl, SC_COMBOATTACK, 100, TK_JUMPKICK, src->id, 1, 0, 2000); @@ -2992,7 +2992,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam damage += damage / 2; // 1.5 times more damage while in Deep Sleep. status_change_end(bl,SC_DEEP_SLEEP,INVALID_TIMER); } - if( s_sd && sd && sc->data[SC_COLD] && flag&BF_WEAPON ){ + if( s_sd && t_sd && sc->data[SC_COLD] && flag&BF_WEAPON ){ switch(s_sd->status.weapon){ case W_MACE: case W_2HMACE: @@ -3002,7 +3002,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam break; case W_MUSICAL: case W_WHIP: - if(!sd->state.arrow_atk) + if(!t_sd->state.arrow_atk) break; case W_BOW: case W_REVOLVER: @@ -3208,9 +3208,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if( sc->data[SC__DEADLYINFECT] && flag&BF_SHORT && damage > 0 && rnd()%100 < 30 + 10 * sc->data[SC__DEADLYINFECT]->val1 && !is_boss(src) ) status->change_spread(bl, src); // Deadly infect attacked side - if (sd && damage > 0 && (sce = sc->data[SC_GENTLETOUCH_ENERGYGAIN]) != NULL) { + if (t_sd && damage > 0 && (sce = sc->data[SC_GENTLETOUCH_ENERGYGAIN]) != NULL) { if ( rnd() % 100 < sce->val2 ) - pc->addspiritball(sd, skill->get_time(MO_CALLSPIRITS, 1), pc->getmaxspiritball(sd, 0)); + pc->addspiritball(t_sd, skill->get_time(MO_CALLSPIRITS, 1), pc->getmaxspiritball(t_sd, 0)); } } @@ -3263,7 +3263,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } } /* no data claims these settings affect anything other than players */ - if( damage && sd && bl->type == BL_PC ) { + if( damage && t_sd && bl->type == BL_PC ) { switch( skill_id ) { //case PA_PRESSURE: /* pressure also belongs to this list but it doesn't reach this area -- so don't worry about it */ case HW_GRAVITATION: @@ -3305,7 +3305,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if (skill_id) mob->skill_event(md, src, timer->gettick(), MSC_SKILLUSED|(skill_id<<16)); } - if (sd && pc_ismadogear(sd) && rnd()%100 < 50) { + if (t_sd && pc_ismadogear(t_sd) && rnd()%100 < 50) { int element = -1; if (!skill_id || (element = skill->get_ele(skill_id, skill_lv)) == -1) { // Take weapon's element @@ -3323,9 +3323,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam element = rnd()%ELE_MAX; } if (element == ELE_FIRE) - pc->overheat(sd, 1); + pc->overheat(t_sd, 1); else if (element == ELE_WATER) - pc->overheat(sd, -1); + pc->overheat(t_sd, -1); } return damage; -- cgit v1.2.3-60-g2f50 From e820b348bada58b7d57ab4fd800c536aecf52eac Mon Sep 17 00:00:00 2001 From: ultramage Date: Thu, 21 Jan 2016 14:13:33 +0100 Subject: Rename 'tsc' to 's_sc' in battle_calc_damage() since it's actually referring to the status of the source. Blame goes to 6f264513. --- src/map/battle.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index adf8d38c5..4635c3c36 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2718,7 +2718,7 @@ void battle_calc_skillratio_weapon_unknown(int *attack_type, struct block_list * *------------------------------------------*/ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv) { struct map_session_data *s_sd, *t_sd; - struct status_change *sc, *tsc; + struct status_change *s_sc, *sc; struct status_change_entry *sce; int div_, flag; @@ -2750,8 +2750,8 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam if(!damage) return 0; } + s_sc = status->get_sc(src); sc = status->get_sc(bl); - tsc = status->get_sc(src); if( sc && sc->data[SC_INVINCIBLE] && !sc->data[SC_INVINCIBLEOFF] ) return 1; @@ -3215,24 +3215,24 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } //SC effects from caster side. - if (tsc && tsc->count) { - if( tsc->data[SC_INVINCIBLE] && !tsc->data[SC_INVINCIBLEOFF] ) + if (s_sc && s_sc->count) { + if( s_sc->data[SC_INVINCIBLE] && !s_sc->data[SC_INVINCIBLEOFF] ) damage += damage * 75 / 100; // [Epoque] if (bl->type == BL_MOB) { const struct mob_data *md = BL_UCCAST(BL_MOB, bl); int i; - if (((sce=tsc->data[SC_MANU_ATK]) != NULL && (flag&BF_WEAPON)) - || ((sce=tsc->data[SC_MANU_MATK]) != NULL && (flag&BF_MAGIC))) { + if (((sce=s_sc->data[SC_MANU_ATK]) != NULL && (flag&BF_WEAPON)) + || ((sce=s_sc->data[SC_MANU_MATK]) != NULL && (flag&BF_MAGIC))) { for (i = 0; i < ARRAYLENGTH(mob->manuk); i++) if (md->class_ == mob->manuk[i]) { damage += damage * sce->val1 / 100; break; } } - if (((sce=tsc->data[SC_SPL_ATK]) != NULL && (flag&BF_WEAPON)) - || ((sce=tsc->data[SC_SPL_MATK]) != NULL && (flag&BF_MAGIC))) { + if (((sce=s_sc->data[SC_SPL_ATK]) != NULL && (flag&BF_WEAPON)) + || ((sce=s_sc->data[SC_SPL_MATK]) != NULL && (flag&BF_MAGIC))) { for (i = 0; i < ARRAYLENGTH(mob->splendide); i++) if (md->class_ == mob->splendide[i]) { damage += damage * sce->val1 / 100; @@ -3240,24 +3240,24 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } } } - if( tsc->data[SC_POISONINGWEAPON] ) { + if( s_sc->data[SC_POISONINGWEAPON] ) { struct status_data *tstatus = status->get_status_data(bl); - if ( !(flag&BF_SKILL) && (flag&BF_WEAPON) && damage > 0 && rnd()%100 < tsc->data[SC_POISONINGWEAPON]->val3 ) { + if ( !(flag&BF_SKILL) && (flag&BF_WEAPON) && damage > 0 && rnd()%100 < s_sc->data[SC_POISONINGWEAPON]->val3 ) { short rate = 100; - if ( tsc->data[SC_POISONINGWEAPON]->val1 == 9 ) // Oblivion Curse gives a 2nd success chance after the 1st one passes which is reducible. [Rytech] + if ( s_sc->data[SC_POISONINGWEAPON]->val1 == 9 ) // Oblivion Curse gives a 2nd success chance after the 1st one passes which is reducible. [Rytech] rate = 100 - tstatus->int_ * 4 / 5; - sc_start(src,bl,tsc->data[SC_POISONINGWEAPON]->val2,rate,tsc->data[SC_POISONINGWEAPON]->val1,skill->get_time2(GC_POISONINGWEAPON,1) - (tstatus->vit + tstatus->luk) / 2 * 1000); + sc_start(src,bl,s_sc->data[SC_POISONINGWEAPON]->val2,rate,s_sc->data[SC_POISONINGWEAPON]->val1,skill->get_time2(GC_POISONINGWEAPON,1) - (tstatus->vit + tstatus->luk) / 2 * 1000); } } - if( tsc->data[SC__DEADLYINFECT] && flag&BF_SHORT && damage > 0 && rnd()%100 < 30 + 10 * tsc->data[SC__DEADLYINFECT]->val1 && !is_boss(src) ) + if( s_sc->data[SC__DEADLYINFECT] && flag&BF_SHORT && damage > 0 && rnd()%100 < 30 + 10 * s_sc->data[SC__DEADLYINFECT]->val1 && !is_boss(src) ) status->change_spread(src, bl); - if (tsc->data[SC_SHIELDSPELL_REF] && tsc->data[SC_SHIELDSPELL_REF]->val1 == 1 && damage > 0) + if (s_sc->data[SC_SHIELDSPELL_REF] && s_sc->data[SC_SHIELDSPELL_REF]->val1 == 1 && damage > 0) skill->break_equip(bl,EQP_ARMOR,10000,BCT_ENEMY ); - if (tsc->data[SC_STYLE_CHANGE] && rnd()%2) { + if (s_sc->data[SC_STYLE_CHANGE] && rnd()%2) { struct homun_data *hd = BL_CAST(BL_HOM,bl); if (hd) homun->addspiritball(hd, 10); } - if (src->type == BL_PC && damage > 0 && (sce = tsc->data[SC_GENTLETOUCH_ENERGYGAIN]) != NULL) { + if (src->type == BL_PC && damage > 0 && (sce = s_sc->data[SC_GENTLETOUCH_ENERGYGAIN]) != NULL) { if (s_sd != NULL && rnd() % 100 < sce->val2) pc->addspiritball(s_sd, skill->get_time(MO_CALLSPIRITS, 1), pc->getmaxspiritball(s_sd, 0)); } -- cgit v1.2.3-60-g2f50