summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2011-12-29 22:51:31 +0000
committershennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec>2011-12-29 22:51:31 +0000
commita75f13f9a36ad91cf2fd07257beccbf5bd189c75 (patch)
treec52640d4dff0c8c127bc907fffeadace27882bc6
parent863e194ec315b6b45dd0862654359a8f6283f699 (diff)
downloadhercules-a75f13f9a36ad91cf2fd07257beccbf5bd189c75.tar.gz
hercules-a75f13f9a36ad91cf2fd07257beccbf5bd189c75.tar.bz2
hercules-a75f13f9a36ad91cf2fd07257beccbf5bd189c75.tar.xz
hercules-a75f13f9a36ad91cf2fd07257beccbf5bd189c75.zip
Fixed SC_BURNING icon not going off after it was over;
Fixed SC_BURNING from making character unable to move/cast skills/use items/etc, bugreport:5174 git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15328 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/battle.c6
-rw-r--r--src/map/clif.c6
-rw-r--r--src/map/mob.c2
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/pc.h2
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c4
-rw-r--r--src/map/unit.c2
8 files changed, 15 insertions, 13 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index fdb67ae3e..3fe4a23b0 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -428,7 +428,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag
return 0;
}
- if(sc->data[SC_DODGE] && !sc->opt1 &&
+ if(sc->data[SC_DODGE] && ( !sc->opt1 || sc->opt1 == OPT1_BURNING ) &&
(flag&BF_LONG || sc->data[SC_SPURT])
&& rand()%100 < 20) {
if (sd && pc_issit(sd)) pc_setstand(sd); //Stand it to dodge.
@@ -1302,7 +1302,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
flag.hit = 1;
break;
}
- if (tsc && !flag.hit && tsc->opt1 && tsc->opt1 != OPT1_STONEWAIT)
+ if (tsc && !flag.hit && tsc->opt1 && tsc->opt1 != OPT1_STONEWAIT && tsc->opt1 != OPT1_BURNING)
flag.hit = 1;
}
@@ -3366,7 +3366,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
{
struct status_change *sc = status_get_sc(target);
i = 0; //Temp for "hit or no hit"
- if(sc && sc->opt1 && sc->opt1 != OPT1_STONEWAIT)
+ if(sc && sc->opt1 && sc->opt1 != OPT1_STONEWAIT && sc->opt1 != OPT1_BURNING)
i = 1;
else {
short
diff --git a/src/map/clif.c b/src/map/clif.c
index 01fabf6d9..73f97cdb0 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -9013,7 +9013,7 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
return;
}
- if (sd->sc.opt1 && sd->sc.opt1 == OPT1_STONEWAIT)
+ if (sd->sc.opt1 && ( sd->sc.opt1 == OPT1_STONEWAIT || sd->sc.opt1 == OPT1_BURNING ))
; //You CAN walk on this OPT1 value.
else if( sd->progressbar.npc_id )
clif_progressbar_abort(sd);
@@ -9320,7 +9320,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
return;
}
- if (sd->ud.skilltimer != INVALID_TIMER || sd->sc.opt1)
+ if (sd->ud.skilltimer != INVALID_TIMER || (sd->sc.opt1 && sd->sc.opt1 != OPT1_BURNING ))
break;
if (sd->sc.count && (
@@ -9640,7 +9640,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd)
return;
}
- if (sd->sc.opt1 > 0 && sd->sc.opt1 != OPT1_STONEWAIT)
+ if (sd->sc.opt1 > 0 && sd->sc.opt1 != OPT1_STONEWAIT && sd->sc.opt1 != OPT1_BURNING)
return;
//This flag enables you to use items while in an NPC. [Skotlex]
diff --git a/src/map/mob.c b/src/map/mob.c
index 0ad6fbbed..af5db12d7 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -1311,7 +1311,7 @@ static bool mob_ai_sub_hard(struct mob_data *md, unsigned int tick)
return false;
// Abnormalities
- if((md->sc.opt1 > 0 && md->sc.opt1 != OPT1_STONEWAIT) || md->sc.data[SC_BLADESTOP])
+ if(( md->sc.opt1 > 0 && md->sc.opt1 != OPT1_STONEWAIT && md->sc.opt1 != OPT1_BURNING ) || md->sc.data[SC_BLADESTOP])
{ //Should reset targets.
md->target_id = md->attacked_id = 0;
return false;
diff --git a/src/map/pc.c b/src/map/pc.c
index 944775d1b..c6b0d1b62 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4042,7 +4042,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv)
md = (TBL_MOB *)bl;
- if(md->state.steal_flag == UCHAR_MAX || md->sc.opt1) //already stolen from / status change check
+ if(md->state.steal_flag == UCHAR_MAX || ( md->sc.opt1 && md->sc.opt1 != OPT1_BURNING ) ) //already stolen from / status change check
return 0;
sd_status= status_get_status_data(&sd->bl);
diff --git a/src/map/pc.h b/src/map/pc.h
index 06c0f808c..7f036d790 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -571,7 +571,7 @@ enum equip_index {
#define pc_issit(sd) ( (sd)->vd.dead_sit == 2 )
#define pc_isidle(sd) ( (sd)->chatID || (sd)->state.vending || (sd)->state.buyingstore || DIFF_TICK(last_tick, (sd)->idletime) >= battle_config.idle_no_share )
#define pc_istrading(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->state.trading )
-#define pc_cant_act(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chatID || (sd)->sc.opt1 || (sd)->state.trading || (sd)->state.storage_flag )
+#define pc_cant_act(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chatID || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag )
#define pc_setdir(sd,b,h) ( (sd)->ud.dir = (b) ,(sd)->head_dir = (h) )
#define pc_setchatid(sd,n) ( (sd)->chatID = n )
#define pc_ishiding(sd) ( (sd)->sc.option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK) )
diff --git a/src/map/skill.c b/src/map/skill.c
index 869eb6599..5ce391755 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -8249,7 +8249,7 @@ int skill_castend_map (struct map_session_data *sd, short skill_num, const char
return 0;
}
- if(sd->sc.opt1 || sd->sc.option&OPTION_HIDE ) {
+ if( ( sd->sc.opt1 && sd->sc.opt1 != OPT1_BURNING ) || sd->sc.option&OPTION_HIDE ) {
skill_failed(sd);
return 0;
}
@@ -9809,7 +9809,7 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
if(pc_isdead(tsd))
return 0;
- if (tsd->sc.data[SC_SILENCE] || tsd->sc.opt1)
+ if (tsd->sc.data[SC_SILENCE] || ( tsd->sc.opt1 && tsd->sc.opt1 != OPT1_BURNING ))
return 0;
switch(skillid)
diff --git a/src/map/status.c b/src/map/status.c
index ebdbd9370..a9fd25869 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1328,7 +1328,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
if(sc && sc->count)
{
- if(sc->opt1 >0)
+ if(sc->opt1 >0 && sc->opt1 != OPT1_BURNING)
{ //Stuned/Frozen/etc
if (flag != 1) //Can't cast, casted stuff can't damage.
return 0;
@@ -7645,6 +7645,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
case SC_FREEZE:
case SC_STUN:
case SC_SLEEP:
+ case SC_BURNING:
if (sce->val1) {
//Removing the 'level' shouldn't affect anything in the code
//since these SC are not affected by it, and it lets us know
@@ -8051,6 +8052,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
case SC_FREEZE:
case SC_STUN:
case SC_SLEEP:
+ case SC_BURNING:
sc->opt1 = 0;
break;
diff --git a/src/map/unit.c b/src/map/unit.c
index 017932990..d9faf46c6 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -899,7 +899,7 @@ int unit_can_move(struct block_list *bl)
return 0; //Can't move
if (sc) {
- if (sc->opt1 > 0 && sc->opt1 != OPT1_STONEWAIT)
+ if (sc->opt1 > 0 && sc->opt1 != OPT1_STONEWAIT && sc->opt1 != OPT1_BURNING)
return 0;
if ((sc->option & OPTION_HIDE) && (!sd || pc_checkskill(sd, RG_TUNNELDRIVE) <= 0))