|
@@ -1351,7 +1351,7 @@ bool battle_status_block_damage(struct block_list *src, struct block_list *targe
|
|
|
*/
|
|
|
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 *sd = NULL, *tsd = BL_CAST(BL_PC, src);
|
|
|
struct status_change *sc;
|
|
|
struct status_change_entry *sce;
|
|
|
int div_ = d->div_, flag = d->flag;
|
|
@@ -1435,7 +1435,6 @@ 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_DEEPSLEEP] ) {
|
|
|
damage += damage / 2; // 1.5 times more damage while in Deep Sleep.
|
|
|
status_change_end(bl,SC_DEEPSLEEP,INVALID_TIMER);
|
|
@@ -1689,8 +1688,6 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|
|
if (sc->data[SC_UNLIMITEDHUMMINGVOICE] && flag&BF_MAGIC)
|
|
|
damage += damage * sc->data[SC_UNLIMITEDHUMMINGVOICE]->val3 / 100;
|
|
|
|
|
|
- map_session_data *tsd = (map_session_data *)src;
|
|
|
-
|
|
|
if (tsd && (sce = sc->data[SC_SOULREAPER])) {
|
|
|
if (rnd()%100 < sce->val2 && tsd->soulball < MAX_SOUL_BALL) {
|
|
|
clif_specialeffect(src, 1208, AREA);
|
|
@@ -1725,7 +1722,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|
|
damage = div_;
|
|
|
}
|
|
|
|
|
|
- if (sd && pc_ismadogear(sd)) {
|
|
|
+ if (tsd && pc_ismadogear(tsd)) {
|
|
|
short element = skill_get_ele(skill_id, skill_lv);
|
|
|
|
|
|
if( !skill_id || element == ELE_WEAPON ) { //Take weapon's element
|
|
@@ -1739,7 +1736,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
|
|
element = status_get_attack_sc_element(src,status_get_sc(src));
|
|
|
else if( element == ELE_RANDOM ) //Use random element
|
|
|
element = rnd()%ELE_ALL;
|
|
|
- pc_overheat(sd, (element == ELE_FIRE ? 3 : 1));
|
|
|
+ pc_overheat(tsd, (element == ELE_FIRE ? 3 : 1));
|
|
|
}
|
|
|
|
|
|
return damage;
|