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://svn.code.sf.net/p/rathena/svn/trunk@15328 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
a2705ca177
commit
bccb331fb5
@ -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
|
||||
|
@ -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]
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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) )
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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))
|
||||
|
Loading…
x
Reference in New Issue
Block a user