summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt2
-rw-r--r--src/map/skill.c30
-rw-r--r--src/map/status.c14
3 files changed, 24 insertions, 22 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index fd03d3e51..15dec2284 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -5,6 +5,8 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EV
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
2006/03/15
+ * Fixed Tarot Card of Fate using time instead of time2 which is the one
+ that actually holds the effect duration. [Skotlex]
* Fixed mob random walk interval being set to up to 6K seconds in some
instances. [Skotlex]
* Added mapflag nodrop (prevents droping items to the ground). [Skotlex]
diff --git a/src/map/skill.c b/src/map/skill.c
index 33bd65255..98010dd6f 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5338,7 +5338,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
if (dstsd) pc_heal(dstsd,0,-dstsd->status.sp);
break;
case 1: // matk halved
- sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time(skillid,skilllv));
+ sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time2(skillid,skilllv));
break;
case 2: // all buffs removed
status_change_clear_buffs(bl);
@@ -5352,7 +5352,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
}
break;
case 4: // atk halved
- sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time(skillid,skilllv));
+ sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time2(skillid,skilllv));
break;
case 5: // 2000HP heal, random teleported
battle_heal(src, src, 2000, 0, 0);
@@ -5368,23 +5368,23 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case 7: // stop freeze or stoned
{
int sc[] = { SC_STOP, SC_FREEZE, SC_STONE };
- sc_start(bl,sc[rand()%3],100,skilllv,skill_get_time(skillid,skilllv));
+ sc_start(bl,sc[rand()%3],100,skilllv,skill_get_time2(skillid,skilllv));
}
break;
case 8: // curse coma and poison
- sc_start(bl,SC_COMA,100,skilllv,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_CURSE,100,skilllv,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_POISON,100,skilllv,skill_get_time(skillid,skilllv));
+ sc_start(bl,SC_COMA,100,skilllv,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_CURSE,100,skilllv,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_POISON,100,skilllv,skill_get_time2(skillid,skilllv));
break;
case 9: // chaos
- sc_start(bl,SC_CONFUSION,100,skilllv,skill_get_time(skillid,skilllv));
+ sc_start(bl,SC_CONFUSION,100,skilllv,skill_get_time2(skillid,skilllv));
break;
case 10: // 6666 damage, atk matk halved, cursed
battle_damage(src, bl, 6666, 0);
clif_damage(src,bl,tick,0,0,6666,0,0,0);
- sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_CURSE,skilllv,100,skill_get_time(skillid,skilllv));
+ sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_CURSE,skilllv,100,skill_get_time2(skillid,skilllv));
break;
case 11: // 4444 damage
battle_damage(src, bl, 4444, 0);
@@ -5394,11 +5394,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
sc_start(bl,SC_STUN,100,skilllv,5000);
break;
case 13: // atk,matk,hit,flee,def reduced
- sc_start(bl,SC_INCATKRATE,100,-20,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_INCMATKRATE,100,-20,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_INCHITRATE,100,-20,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_INCFLEERATE,100,-20,skill_get_time(skillid,skilllv));
- sc_start(bl,SC_INCDEFRATE,100,-20,skill_get_time(skillid,skilllv));
+ sc_start(bl,SC_INCATKRATE,100,-20,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_INCMATKRATE,100,-20,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_INCHITRATE,100,-20,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_INCFLEERATE,100,-20,skill_get_time2(skillid,skilllv));
+ sc_start(bl,SC_INCDEFRATE,100,-20,skill_get_time2(skillid,skilllv));
break;
default:
break;
diff --git a/src/map/status.c b/src/map/status.c
index 743cde2c7..8d187ffa1 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -3542,6 +3542,13 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
return 0;
}
+ //SC duration reduction.
+ if(!(flag&(2|4)) && tick) {
+ tick = status_get_sc_tick(bl, type, tick);
+ if (tick <= 0)
+ return 0;
+ }
+
race=status_get_race(bl);
mode=status_get_mode(bl);
elem=status_get_elem_type(bl);
@@ -3792,13 +3799,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
sc->data[type].timer = -1;
}
- //SC duration reduction.
- if(!(flag&(2|4)) && tick) {
- tick = status_get_sc_tick(bl, type, tick);
- if (tick < 0)
- return 0;
- }
-
switch(type){ /* 異常の種類ごとの?理 */
case SC_PROVOKE: /* プロボック */
calc_flag = 1;