diff options
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | src/map/battle.c | 6 | ||||
-rw-r--r-- | src/map/status.c | 22 |
3 files changed, 19 insertions, 14 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 379e61332..11bcd27aa 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/07/31
+ * Corrected a status_get_race call which should be status_get_race2 in misc
+ attacks. [Skotlex]
+ * 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. [Skotlex]
* Added the Soul Link of Rogue speed bonus to Chase-Walk. Since there's no
information of how much the bonus should be, it currently is a conservative
10%. [Skotlex]
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); } |