summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-05-20 10:23:49 +0000
committerultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-05-20 10:23:49 +0000
commitb6ea55b755afff6cd8353896353272563498bfe2 (patch)
treea97cc0873d0bff74f1cbd890b007410fbae949bb /src/map
parentc9061fad42f586fae9d9e5598d0bb050f4e38f73 (diff)
downloadhercules-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.c24
-rw-r--r--src/map/unit.c26
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))