From 5af84391c50d5625c870d567e298b0628ba2a4ef Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 31 Jul 2006 18:38:51 +0000 Subject: - Corrected a status_get_race call which should be status_get_race2 in misc attacks. - Moved the Devotion code to the top of the SC list in status_damage, meaning that now stuff like being asleep or confused won't end if you are hit, but the damage is absorbed by devotion. - Some cleanups in battle.c (replaced usage of status_get_* for status->*) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8009 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 6 +++--- src/map/status.c | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 562ac6ce3..9a2374882 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -823,7 +823,7 @@ static struct Damage battle_calc_weapon_attack( //Set miscellaneous data that needs be filled regardless of hit/miss if( (sd && sd->state.arrow_atk) || - (!sd && ((skill_num && skill_get_ammotype(skill_num)) || status_get_range(src)>3)) + (!sd && ((skill_num && skill_get_ammotype(skill_num)) || sstatus->rhw.range>3)) ) { wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG; flag.arrow = 1; @@ -2114,7 +2114,7 @@ struct Damage battle_calc_magic_attack( //Initial Values ad.damage = 1; ad.div_=skill_get_num(skill_num,skill_lv); - ad.amotion=skill_get_inf(skill_num)&INF_GROUND_SKILL?0:status_get_amotion(src); //Amotion should be 0 for ground skills. + ad.amotion=skill_get_inf(skill_num)&INF_GROUND_SKILL?0:sstatus->amotion; //Amotion should be 0 for ground skills. ad.dmotion=tstatus->dmotion; ad.blewcount = skill_get_blewcount(skill_num,skill_lv); ad.flag=BF_MAGIC|BF_LONG|BF_SKILL; @@ -2663,7 +2663,7 @@ struct Damage battle_calc_misc_attack( if(md.damage && flag.cardfix && tsd){ int cardfix = 10000; - int race2 = status_get_race(src); + int race2 = status_get_race2(src); cardfix=cardfix*(100-tsd->subele[s_ele])/100; cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100; cardfix=cardfix*(100-tsd->subrace2[race2])/100; diff --git a/src/map/status.c b/src/map/status.c index 9f43c73ad..1a3ca25ec 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -573,6 +573,17 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s if (hp && !(flag&1)) { if (sc) { + if (sc->data[SC_DEVOTION].val1 && src && battle_getcurrentskill(src) != PA_PRESSURE) + { //Devotion prevents any of the other ailments from ending. + struct map_session_data *sd2 = map_id2sd(sc->data[SC_DEVOTION].val1); + if (sd2 && sd2->devotion[sc->data[SC_DEVOTION].val2] == target->id) + { + clif_damage(&sd2->bl, &sd2->bl, gettick(), 0, 0, hp, 0, 0, 0); + status_fix_damage(NULL, &sd2->bl, hp, 0); + return 0; + } + status_change_end(target, SC_DEVOTION, -1); + } if (sc->data[SC_FREEZE].timer != -1) status_change_end(target,SC_FREEZE,-1); if (sc->data[SC_STONE].timer!=-1 && sc->opt1 == OPT1_STONE) @@ -607,17 +618,6 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s status_change_end(target, SC_GRAVITATION, -1); } } - if (sc->data[SC_DEVOTION].val1 && src && battle_getcurrentskill(src) != PA_PRESSURE) - { - struct map_session_data *sd2 = map_id2sd(sc->data[SC_DEVOTION].val1); - if (sd2 && sd2->devotion[sc->data[SC_DEVOTION].val2] == target->id) - { - clif_damage(&sd2->bl, &sd2->bl, gettick(), 0, 0, hp, 0, 0, 0); - status_fix_damage(NULL, &sd2->bl, hp, 0); - return 0; - } - status_change_end(target, SC_DEVOTION, -1); - } if(sc->data[SC_DANCING].timer != -1 && hp > (signed int)status->max_hp>>2) skill_stop_dancing(target); } -- cgit v1.2.3-70-g09d2