diff options
author | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-12-29 22:51:31 +0000 |
---|---|---|
committer | shennetsind <shennetsind@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-12-29 22:51:31 +0000 |
commit | a75f13f9a36ad91cf2fd07257beccbf5bd189c75 (patch) | |
tree | c52640d4dff0c8c127bc907fffeadace27882bc6 /src/map | |
parent | 863e194ec315b6b45dd0862654359a8f6283f699 (diff) | |
download | hercules-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
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/battle.c | 6 | ||||
-rw-r--r-- | src/map/clif.c | 6 | ||||
-rw-r--r-- | src/map/mob.c | 2 | ||||
-rw-r--r-- | src/map/pc.c | 2 | ||||
-rw-r--r-- | src/map/pc.h | 2 | ||||
-rw-r--r-- | src/map/skill.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 4 | ||||
-rw-r--r-- | src/map/unit.c | 2 |
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)) |