Procházet zdrojové kódy

- Added clif_skill_fail for homunc to skill_castend_id & skill_castend_pos ('skill has failed' will may be appear 2 times)
- Fixed homunc skill 8016 not considered as homunc skill


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8386 54d463be-8e91-2dee-dedb-b68131a5f0ec

toms před 19 roky
rodič
revize
e67db33d16
5 změnil soubory, kde provedl 20 přidání a 9 odebrání
  1. 2 0
      Changelog-Trunk.txt
  2. 2 2
      src/map/atcommand.c
  3. 1 1
      src/map/clif.c
  4. 13 4
      src/map/skill.c
  5. 2 2
      src/map/unit.c

+ 2 - 0
Changelog-Trunk.txt

@@ -3,6 +3,8 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 2006/08/20
+	* Added clif_skill_fail for homunc to skill_castend_id & skill_castend_pos [Toms]
+	* Fixed homunc skill 8016 not considered as homunc skill [Toms]
 	* @useskill will now cause your homun to use the skill instead of you if
 	  the skill is a Homun skill and you have an active homunculus. [Skotlex]
 	* Reduced the Success Chance of GS_FLING to 10+10*lv% (Playtester told me

+ 2 - 2
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);

+ 1 - 1
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;
 	}

+ 13 - 4
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;
 
 }

+ 2 - 2
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;