summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/atcommand.c4
-rw-r--r--src/map/clif.c2
-rw-r--r--src/map/skill.c17
-rw-r--r--src/map/unit.c4
4 files changed, 18 insertions, 9 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 31e68c224..1ba9e620d 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -7563,7 +7563,7 @@ atcommand_useskill(const int fd, struct map_session_data* sd,
return -1;
}
- if (skillnum >= HM_SKILLBASE && skillnum < HM_SKILLBASE+MAX_HOMUNSKILL
+ if (skillnum >= HM_SKILLBASE && skillnum <= HM_SKILLBASE+MAX_HOMUNSKILL
&& sd->hd && merc_is_hom_active(sd->hd)) // (If used with @useskill, put the homunc as dest)
bl = &sd->hd->bl;
else
@@ -9867,7 +9867,7 @@ int atcommand_homfriendly(
return -1;
friendly = atoi(message);
- if (sd->status.hom_id > 0 && sd->hd) {
+ if (merc_is_hom_active(sd->hd)) {
if (friendly > 0 && friendly <= 1000) {
sd->homunculus.intimacy = friendly * 100 ;
clif_send_homdata(sd,SP_INTIMATE,friendly);
diff --git a/src/map/clif.c b/src/map/clif.c
index 295de5a15..64411d5bf 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -9754,7 +9754,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
//Whether skill fails or not is irrelevant, the char ain't idle. [Skotlex]
sd->idletime = last_tick;
- if (skillnum >= HM_SKILLBASE && skillnum < HM_SKILLBASE+MAX_HOMUNSKILL) {
+ if (skillnum >= HM_SKILLBASE && skillnum <= HM_SKILLBASE+MAX_HOMUNSKILL) {
clif_parse_UseSkillToId_homun(sd->hd, sd, tick, skillnum, skilllv, target_id);
return;
}
diff --git a/src/map/skill.c b/src/map/skill.c
index f69a0dcce..8e2c9e44a 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5814,13 +5814,19 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
clif_slide(src,src->x,src->y);
clif_skill_damage(src,target,tick,sd->battle_status.amotion,0,0,1,ud->skillid, ud->skilllv, 5);
}
- clif_skill_fail(sd,ud->skillid,0,0);
}
}
ud->skillid = ud->skilllv = ud->skilltarget = 0;
ud->canact_tick = tick;
- if(sd) sd->skillitem = sd->skillitemlv = -1;
- if(md) md->skillidx = -1;
+ if(sd)
+ {
+ sd->skillitem = sd->skillitemlv = -1;
+ clif_skill_fail(sd, ud->skillid, 0, 0);
+ }
+ else if (hd)
+ clif_skill_fail(hd->master, ud->skillid, 0, 0);
+ else if(md)
+ md->skillidx = -1;
return 0;
}
@@ -5935,7 +5941,10 @@ int skill_castend_pos (int tid, unsigned int tick, int id, int data)
clif_skill_fail(sd,ud->skillid,0,0);
sd->skillitem = sd->skillitemlv = -1;
}
- if(md) md->skillidx = -1;
+ else if (hd)
+ clif_skill_fail(hd->master, ud->skillid, 0, 0);
+ else if(md)
+ md->skillidx = -1;
return 0;
}
diff --git a/src/map/unit.c b/src/map/unit.c
index 3defad727..e04244469 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -733,9 +733,9 @@ int unit_skilluse_id2(struct block_list *src, int target_id, int skill_num, int
if(status_isdead(src))
return 0; // 死んでいないか
- if( BL_CAST( BL_PC, src, sd ) ) {
+ if( BL_CAST( BL_PC, src, sd ) )
ud = &sd->ud;
- } else
+ else
ud = unit_bl2ud(src);
if(ud == NULL) return 0;