فهرست منبع

Fixed homunc skill up bug

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8215 54d463be-8e91-2dee-dedb-b68131a5f0ec
toms 19 سال پیش
والد
کامیت
4940b38ba3
4فایلهای تغییر یافته به همراه6 افزوده شده و 4 حذف شده
  1. 1 0
      Changelog-Trunk.txt
  2. 3 3
      src/map/clif.c
  3. 1 1
      src/map/mercenary.c
  4. 1 0
      src/map/mercenary.h

+ 1 - 0
Changelog-Trunk.txt

@@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/08/09
+	* Fixed homunc skill up bug [Toms]
 	* Adjusted some the dance/song/encore code so that the source of an
 	  ensemble will always get checked, so that walking out of an ensemble skill
 	  should make it end now. However, it's likely this is not completely solved

+ 3 - 3
src/map/clif.c

@@ -1531,7 +1531,7 @@ int clif_homskillinfoblock(struct map_session_data *sd) {	//[orn]
 			WFIFOW(fd,len+8) = skill_get_sp(id,sd->homunculus.hskill[j].lv) ;
 			WFIFOW(fd,len+10)= skill_get_range2(&sd->hd->bl, id,sd->homunculus.hskill[j].lv) ;
 			strncpy(WFIFOP(fd,len+12), skill_get_name(id), NAME_LENGTH) ;
-				WFIFOB(fd,len+36) = 1;//0;
+			WFIFOB(fd,len+36) = (sd->homunculus.hskill[j].lv < merc_skill_tree_get_max(id, sd->homunculus.class_))?1:0;
 			len+=37;
 			c++;
 		}
@@ -1546,10 +1546,10 @@ void clif_homskillup(struct map_session_data *sd, int skill_num) {	//[orn]
 	int range,fd,skillid;
 
 	nullpo_retv(sd);
-	skillid = skill_num - HM_SKILLBASE ;
+	skillid = skill_num - HM_SKILLBASE - 1;
 
 	fd=sd->fd;
-	WFIFOW(fd,0) = 0x10e;
+	WFIFOW(fd,0) = 0x239;
 	WFIFOW(fd,2) = skill_num;
 	WFIFOW(fd,4) = sd->homunculus.hskill[skillid].lv;
 	WFIFOW(fd,6) = skill_get_sp(skill_num,sd->homunculus.hskill[skillid].lv);

+ 1 - 1
src/map/mercenary.c

@@ -186,7 +186,7 @@ int merc_hom_checkskill(struct map_session_data *sd,int skill_id)
 	return 0;
 }
 
-static int merc_skill_tree_get_max(int id, int b_class){
+int merc_skill_tree_get_max(int id, int b_class){
 	int i, skillid;
 	for(i=0;(skillid=hskill_tree[b_class-6001][i].id)>0;i++)
 		if (id == skillid) return hskill_tree[b_class-6001][i].max;

+ 1 - 0
src/map/mercenary.h

@@ -78,3 +78,4 @@ int merc_natural_heal_timer_delete(struct homun_data *hd);
 int read_homunculusdb(void);
 int merc_hom_increase_intimacy(struct homun_data * hd, unsigned int value);
 int merc_hom_decrease_intimacy(struct homun_data * hd, unsigned int value);
+int merc_skill_tree_get_max(int id, int b_class);