Sfoglia il codice sorgente

Fixed losing skill list after base change. (bugreport:3106)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13812 54d463be-8e91-2dee-dedb-b68131a5f0ec
Inkfish 16 anni fa
parent
commit
c61942c8cd
4 ha cambiato i file con 13 aggiunte e 10 eliminazioni
  1. 2 0
      Changelog-Trunk.txt
  2. 9 10
      src/map/pc.c
  3. 1 0
      src/map/script.c
  4. 1 0
      src/map/status.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.
 
+09/05/25
+	* Fixed losing skill list after base change. (bugreport:3106) [Inkfish]
 09/05/24
 	* Taro Card can now break shoes and garment and won't affect dead target. (bugreport:2513) [Inkfish]
 09/05/23

+ 9 - 10
src/map/pc.c

@@ -6108,16 +6108,15 @@ int pc_setoption(struct map_session_data *sd,int type)
 
 	if (type&OPTION_RIDING && !(p_type&OPTION_RIDING) && (sd->class_&MAPID_BASEMASK) == MAPID_SWORDMAN)
 	{	//We are going to mount. [Skotlex]
-		new_look = -1;
 		clif_status_load(&sd->bl,SI_RIDING,1);
 		status_calc_pc(sd,0); //Mounting/Umounting affects walk and attack speeds.
 	}
 	else if (!(type&OPTION_RIDING) && p_type&OPTION_RIDING && (sd->class_&MAPID_BASEMASK) == MAPID_SWORDMAN)
 	{	//We are going to dismount.
-		new_look = -1;
 		clif_status_load(&sd->bl,SI_RIDING,0);
 		status_calc_pc(sd,0); //Mounting/Umounting affects walk and attack speeds.
 	}
+
 	if(type&OPTION_CART && !(p_type&OPTION_CART))
   	{ //Cart On
 		clif_cartlist(sd);
@@ -6157,20 +6156,20 @@ int pc_setoption(struct map_session_data *sd,int type)
 	else if (!(type&OPTION_SUMMER) && p_type&OPTION_SUMMER)
 		new_look = -1;
 
-	if (sd->disguise)
+	if (sd->disguise || !new_look)
 		return 0; //Disguises break sprite changes
 
 	if (new_look < 0) { //Restore normal look.
 		status_set_viewdata(&sd->bl, sd->status.class_);
 		new_look = sd->vd.class_;
 	}
-	if (new_look) {
-		//Stop attacking on new view change (to prevent wedding/santa attacks.
-		pc_stop_attack(sd);
-		clif_changelook(&sd->bl,LOOK_BASE,new_look);
-		if (sd->vd.cloth_color)
-			clif_changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color);
-	}
+
+	pc_stop_attack(sd); //Stop attacking on new view change (to prevent wedding/santa attacks.
+	clif_changelook(&sd->bl,LOOK_BASE,new_look);
+	if (sd->vd.cloth_color)
+		clif_changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color);
+	clif_skillinfoblock(sd); // Skill list needs to be updated after base change.
+
 	return 0;
 }
 

+ 1 - 0
src/map/script.c

@@ -8636,6 +8636,7 @@ BUILDIN_FUNC(changebase)
 		clif_changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
 		if (sd->vd.cloth_color)
 			clif_changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->vd.cloth_color);
+		clif_skillinfoblock(sd);
 	}
 
 	return 0;

+ 1 - 0
src/map/status.c

@@ -6326,6 +6326,7 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
 			clif_changelook(bl,LOOK_CLOTHES_COLOR,vd->cloth_color);
 			clif_changelook(bl,LOOK_WEAPON,vd->weapon);
 			clif_changelook(bl,LOOK_SHIELD,vd->shield);
+			if(sd) clif_skillinfoblock(sd);
 		break;
 		case SC_RUN:
 		{