summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/skill.c14
-rw-r--r--src/map/status.c4
-rw-r--r--src/map/status.h5
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,