diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/skill.c | 14 | ||||
-rw-r--r-- | src/map/status.c | 4 | ||||
-rw-r--r-- | src/map/status.h | 5 |
3 files changed, 20 insertions, 3 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index f5aa37b6b..5891aa7a3 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7245,6 +7245,19 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in skill_castend_nodamage_id); } break; + case ALL_PARTYFLEE: + if( sd && !(flag&1) ) + { + if( !sd->status.party_id ) + { + clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0); + break; + } + party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skillid, skilllv), src, skillid, skilllv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); + } + else + clif_skill_nodamage(src,bl,skillid,skilllv,sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); + break; case NPC_TALK: case ALL_WEWISH: clif_skill_nodamage(src,bl,skillid,skilllv,1); @@ -7577,6 +7590,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SC_STEALTHFIELD_MASTER: case SC_STEALTHFIELD: case SC_LEADERSHIP: case SC_GLORYWOUNDS: case SC_SOULCOLD: case SC_HAWKEYES: case SC_GUILDAURA: case SC_PUSH_CART: + case SC_PARTYFLEE: continue; case SC_ASSUMPTIO: if( bl->type == BL_MOB ) diff --git a/src/map/status.c b/src/map/status.c index 541123050..a5bc25d91 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -464,7 +464,7 @@ void initChangeTables(void) { set_sc( CASH_INCAGI , SC_INCREASEAGI , SI_INCREASEAGI , SCB_AGI|SCB_SPEED ); set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 ); - //set_sc( ALL_PARTYFLEE , SC_INCFLEE , SI_PARTYFLEE , SCB_NONE ); + set_sc( ALL_PARTYFLEE , SC_PARTYFLEE , SI_PARTYFLEE , SCB_NONE ); set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SI_ODINS_POWER , SCB_MATK|SCB_BATK|SCB_MDEF|SCB_DEF ); set_sc( CR_SHRINK , SC_SHRINK , SI_SHRINK , SCB_NONE ); @@ -4577,6 +4577,8 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change flee -= sc->data[SC_GATLINGFEVER]->val4; if(sc->data[SC_SPEED]) flee += 10 + sc->data[SC_SPEED]->val1 * 10; + if(sc->data[SC_PARTYFLEE]) + flee += sc->data[SC_PARTYFLEE]->val1 * 10; if(sc->data[SC_MERC_FLEEUP]) flee += sc->data[SC_MERC_FLEEUP]->val2; if(sc->data[SC_FEAR]) diff --git a/src/map/status.h b/src/map/status.h index efa2a84a1..41010a34b 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -619,7 +619,8 @@ typedef enum sc_type { SC_ERASER_CUTTER, /* Max HP & SP */ SC_INCMHP, - SC_INCMSP, + SC_INCMSP, + SC_PARTYFLEE, // 531 SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; @@ -939,7 +940,7 @@ enum si_type { // SI_REUSE_LIMIT_F = 310, SI_INVINCIBLE = 311, SI_CASH_PLUSONLYJOBEXP = 312, -// SI_PARTYFLEE = 313, + SI_PARTYFLEE = 313, // SI_ANGEL_PROTECT = 314, SI_ENDURE_MDEF = 315, SI_ENCHANTBLADE = 316, |