diff options
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/atcommand.c | 4 | ||||
-rw-r--r-- | src/map/clif.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 17 | ||||
-rw-r--r-- | src/map/unit.c | 4 |
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; |