diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/mmo.h | 4 | ||||
-rw-r--r-- | src/map/npc.c | 3 | ||||
-rw-r--r-- | src/map/skill.c | 11 | ||||
-rw-r--r-- | src/map/skill.h | 3 | ||||
-rw-r--r-- | src/map/status.c | 3 |
5 files changed, 20 insertions, 4 deletions
diff --git a/src/common/mmo.h b/src/common/mmo.h index 3f88fbf4d..3773b2acd 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -155,8 +155,8 @@ //Mercenary System #define MC_SKILLBASE 8201 -#define MAX_MERCSKILL 37 -#define MAX_MERCENARY_CLASS 36 +#define MAX_MERCSKILL 40 +#define MAX_MERCENARY_CLASS 38 enum item_types { IT_HEALING = 0, diff --git a/src/map/npc.c b/src/map/npc.c index aa9bfd228..fe3318c9b 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -149,6 +149,9 @@ int npc_enable_sub(struct block_list *bl, va_list ap) if( npc_ontouch_event(sd,nd) > 0 && npc_ontouch2_event(sd,nd) > 0 ) { // failed to run OnTouch event, so just click the npc + if (sd->npc_id != 0) + return 0; + pc_stop_walking(sd,1); npc_click(sd,nd); } diff --git a/src/map/skill.c b/src/map/skill.c index 6b045c43e..5fd1fe54d 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -340,7 +340,9 @@ int can_copy (struct map_session_data *sd, int skillid, struct block_list* bl) } //Added so plagarize can't copy agi/bless if you're undead since it damages you - if ((skillid == AL_INCAGI || skillid == AL_BLESSING || skillid == CASH_BLESSING || skillid == CASH_INCAGI)) + if ((skillid == AL_INCAGI || skillid == AL_BLESSING || + skillid == CASH_BLESSING || skillid == CASH_INCAGI || + skillid == MER_INCAGI || skillid == MER_BLESSING)) return 0; return 1; @@ -1708,7 +1710,9 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds damage = dmg.damage + dmg.damage2; - if( (skillid == AL_INCAGI || skillid == AL_BLESSING || skillid == CASH_BLESSING || skillid == CASH_INCAGI) && tsd->sc.data[SC_CHANGEUNDEAD] ) + if( (skillid == AL_INCAGI || skillid == AL_BLESSING || + skillid == CASH_BLESSING || skillid == CASH_INCAGI || + skillid == MER_INCAGI || skillid == MER_BLESSING) && tsd->sc.data[SC_CHANGEUNDEAD] ) damage = 1; if( damage > 0 && dmg.flag&BF_WEAPON && src != bl && ( src == dsrc || ( dsrc->type == BL_SKILL && ( skillid == SG_SUN_WARM || skillid == SG_MOON_WARM || skillid == SG_STAR_WARM ) ) ) @@ -3613,6 +3617,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in break; case PR_KYRIE: + case MER_KYRIE: clif_skill_nodamage(bl,bl,skillid,skilllv, sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; @@ -3630,6 +3635,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case AL_INCAGI: case AL_BLESSING: + case MER_INCAGI: + case MER_BLESSING: if (dstsd != NULL && tsc->data[SC_CHANGEUNDEAD]) { skill_attack(BF_MISC,src,src,bl,skillid,skilllv,tick,flag); break; diff --git a/src/map/skill.h b/src/map/skill.h index a74a0e644..04f2e8d28 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -1060,6 +1060,9 @@ enum e_skill { MER_SCAPEGOAT, MER_LEXDIVINA, MER_ESTIMATION, + MER_KYRIE, + MER_BLESSING, + MER_INCAGI, }; /// The client view ids for land skills. diff --git a/src/map/status.c b/src/map/status.c index 59b77afa7..aa639337e 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -434,6 +434,9 @@ void initChangeTables(void) add_sc( ML_SPIRALPIERCE , SC_STOP ); set_sc( MER_QUICKEN , SC_MERC_QUICKEN , SI_BLANK , SCB_ASPD ); add_sc( ML_DEVOTION , SC_DEVOTION ); + set_sc( MER_KYRIE , SC_KYRIE , SI_KYRIE , SCB_NONE ); + set_sc( MER_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX ); + set_sc( MER_INCAGI , SC_INCREASEAGI , SI_INCREASEAGI , SCB_AGI|SCB_SPEED ); set_sc( GD_LEADERSHIP , SC_GUILDAURA , SI_BLANK , SCB_STR|SCB_AGI|SCB_VIT|SCB_DEX ); set_sc( GD_BATTLEORDER , SC_BATTLEORDERS , SI_BLANK , SCB_STR|SCB_INT|SCB_DEX ); |