diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-05-20 10:23:49 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-05-20 10:23:49 +0000 |
commit | b6ea55b755afff6cd8353896353272563498bfe2 (patch) | |
tree | a97cc0873d0bff74f1cbd890b007410fbae949bb /src/map | |
parent | c9061fad42f586fae9d9e5598d0bb050f4e38f73 (diff) | |
download | hercules-b6ea55b755afff6cd8353896353272563498bfe2.tar.gz hercules-b6ea55b755afff6cd8353896353272563498bfe2.tar.bz2 hercules-b6ea55b755afff6cd8353896353272563498bfe2.tar.xz hercules-b6ea55b755afff6cd8353896353272563498bfe2.zip |
- Fixed Chase Walk having a deactivation cast time (should be instant)
- Changed status calc to allow value 0 stats; aegis allows negative values, but eA is unsigned in this regard, so ...
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10589 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/status.c | 24 | ||||
-rw-r--r-- | src/map/unit.c | 26 |
2 files changed, 27 insertions, 23 deletions
diff --git a/src/map/status.c b/src/map/status.c index 81b28abb7..54b6db02e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3114,7 +3114,7 @@ void status_calc_bl(struct block_list *bl, unsigned long flag) static unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str) { if(!sc || !sc->count) - return cap_value(str,1,USHRT_MAX); + return cap_value(str,0,USHRT_MAX); if(sc->data[SC_INCALLSTATUS].timer!=-1) str += sc->data[SC_INCALLSTATUS].val1; @@ -3147,13 +3147,13 @@ static unsigned short status_calc_str(struct block_list *bl, struct status_chang if(sc->data[SC_SPIRIT].timer!=-1 && sc->data[SC_SPIRIT].val2 == SL_HIGH && str < 50) str = 50; - return cap_value(str,1,USHRT_MAX); + return cap_value(str,0,USHRT_MAX); } static unsigned short status_calc_agi(struct block_list *bl, struct status_change *sc, int agi) { if(!sc || !sc->count) - return cap_value(agi,1,USHRT_MAX); + return cap_value(agi,0,USHRT_MAX); if(sc->data[SC_CONCENTRATE].timer!=-1 && sc->data[SC_QUAGMIRE].timer == -1) agi += (agi-sc->data[SC_CONCENTRATE].val3)*sc->data[SC_CONCENTRATE].val2/100; @@ -3186,13 +3186,13 @@ static unsigned short status_calc_agi(struct block_list *bl, struct status_chang if(sc->data[SC_SPIRIT].timer!=-1 && sc->data[SC_SPIRIT].val2 == SL_HIGH && agi < 50) agi = 50; - return cap_value(agi,1,USHRT_MAX); + return cap_value(agi,0,USHRT_MAX); } static unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc, int vit) { if(!sc || !sc->count) - return cap_value(vit,1,USHRT_MAX); + return cap_value(vit,0,USHRT_MAX); if(sc->data[SC_INCALLSTATUS].timer!=-1) vit += sc->data[SC_INCALLSTATUS].val1; @@ -3215,13 +3215,13 @@ static unsigned short status_calc_vit(struct block_list *bl, struct status_chang if(sc->data[SC_SPIRIT].timer!=-1 && sc->data[SC_SPIRIT].val2 == SL_HIGH && vit < 50) vit = 50; - return cap_value(vit,1,USHRT_MAX); + return cap_value(vit,0,USHRT_MAX); } static unsigned short status_calc_int(struct block_list *bl, struct status_change *sc, int int_) { if(!sc || !sc->count) - return cap_value(int_,1,USHRT_MAX); + return cap_value(int_,0,USHRT_MAX); if(sc->data[SC_INCALLSTATUS].timer!=-1) int_ += sc->data[SC_INCALLSTATUS].val1; @@ -3252,13 +3252,13 @@ static unsigned short status_calc_int(struct block_list *bl, struct status_chang if(sc->data[SC_SPIRIT].timer!=-1 && sc->data[SC_SPIRIT].val2 == SL_HIGH && int_ < 50) int_ = 50; - return cap_value(int_,1,USHRT_MAX); + return cap_value(int_,0,USHRT_MAX); } static unsigned short status_calc_dex(struct block_list *bl, struct status_change *sc, int dex) { if(!sc || !sc->count) - return cap_value(dex,1,USHRT_MAX); + return cap_value(dex,0,USHRT_MAX); if(sc->data[SC_CONCENTRATE].timer!=-1 && sc->data[SC_QUAGMIRE].timer == -1) dex += (dex-sc->data[SC_CONCENTRATE].val4)*sc->data[SC_CONCENTRATE].val2/100; @@ -3294,13 +3294,13 @@ static unsigned short status_calc_dex(struct block_list *bl, struct status_chang if(sc->data[SC_SPIRIT].timer!=-1 && sc->data[SC_SPIRIT].val2 == SL_HIGH && dex < 50) dex = 50; - return cap_value(dex,1,USHRT_MAX); + return cap_value(dex,0,USHRT_MAX); } static unsigned short status_calc_luk(struct block_list *bl, struct status_change *sc, int luk) { if(!sc || !sc->count) - return cap_value(luk,1,USHRT_MAX); + return cap_value(luk,0,USHRT_MAX); if(sc->data[SC_CURSE].timer!=-1) return 0; @@ -3321,7 +3321,7 @@ static unsigned short status_calc_luk(struct block_list *bl, struct status_chang if(sc->data[SC_SPIRIT].timer!=-1 && sc->data[SC_SPIRIT].val2 == SL_HIGH && luk < 50) luk = 50; - return cap_value(luk,1,USHRT_MAX); + return cap_value(luk,0,USHRT_MAX); } static unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc, int batk) diff --git a/src/map/unit.c b/src/map/unit.c index d3738393e..b1612f986 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -946,35 +946,39 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int switch(skill_num){ case ALL_RESURRECTION: - if(battle_check_undead(tstatus->race,tstatus->def_ele)){ - temp=1; + if(battle_check_undead(tstatus->race,tstatus->def_ele)) { + temp = 1; casttime = skill_castfix(src, PR_TURNUNDEAD, skill_lv); } else if (!status_isdead(target)) return 0; //Can't cast on non-dead characters. - break; + break; case MO_FINGEROFFENSIVE: if(sd) casttime += casttime * ((skill_lv > sd->spiritball)? sd->spiritball:skill_lv); - break; + break; case MO_EXTREMITYFIST: if (sc && sc->data[SC_COMBO].timer != -1 && - (sc->data[SC_COMBO].val1 == MO_COMBOFINISH || + (sc->data[SC_COMBO].val1 == MO_COMBOFINISH || sc->data[SC_COMBO].val1 == CH_TIGERFIST || sc->data[SC_COMBO].val1 == CH_CHAINCRUSH)) casttime = 0; temp = 1; - break; + break; + case SA_SPELLBREAKER: + temp = 1; + break; + case ST_CHASEWALK: + if (sc && sc->data[ST_CHASEWALK].timer != -1) + casttime = 0; + break; case TK_RUN: if (sc && sc->data[SC_RUN].timer != -1) casttime = 0; - break; - case SA_SPELLBREAKER: - temp =1; - break; + break; case KN_CHARGEATK: //Taken from jA: Casttime is increased by dist/3*100% casttime+= casttime * (distance_bl(src,target)-1)/3; - break; + break; } if (!(skill_get_castnodex(skill_num, skill_lv)&2)) |