summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/mmo.h4
-rw-r--r--src/map/npc.c3
-rw-r--r--src/map/skill.c11
-rw-r--r--src/map/skill.h3
-rw-r--r--src/map/status.c3
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 );