summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--src/map/status.c24
-rw-r--r--src/map/unit.c26
3 files changed, 30 insertions, 23 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index adff332d8..1260b3f70 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,9 @@ 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.
2007/05/20
+ * 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 ...
* Added positional music effect to Battle Chant / Gospel
- see r10588 on how to disable it if it annoys you ^^;
2007/05/19
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))