Ver código fonte

- Some cleaning up of OPTION related code. OPTION_XMAS and OPTION_FLYING really ARE the same value clientside! (totally stupid), therefore I've opted from removing the flying animation since it really just displays as Xmas for others (and the correct fix involves adding a bunch of class-change packets...)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7270 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 anos atrás
pai
commit
8e42a240df
4 arquivos alterados com 23 adições e 7 exclusões
  1. 5 0
      Changelog-Trunk.txt
  2. 5 5
      src/map/clif.c
  3. 10 0
      src/map/pc.c
  4. 3 2
      src/map/status.h

+ 5 - 0
Changelog-Trunk.txt

@@ -4,6 +4,11 @@ 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/06/20
+	* Some cleaning up of OPTION related code. OPTION_XMAS and OPTION_FLYING
+	  really ARE the same value clientside! (totally stupid), therefore I've
+	  opted from removing the flying animation since it really just displays as
+	  Xmas for others (and the correct fix involves adding a bunch of
+	  class-change packets...) [Skotlex]
 	* Updated skill_require_db to place the Zeny requirements of ZenyNage and
 	  Fling. [Skotlex]
 	* Fixed crash when non-players use ZenyNage. Added the correct Zeny check

+ 5 - 5
src/map/clif.c

@@ -756,7 +756,7 @@ void clif_get_weapon_view(TBL_PC* sd, unsigned short *rhand, unsigned short *lha
 	struct item_data *id;
 #endif
 
-	if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS)
+	if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 	{
 		*rhand = *lhand = 0;
 		return;
@@ -8661,7 +8661,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
 		if (clif_cant_act(sd) || sd->sc.option&OPTION_HIDE)
 			return;
 
-		if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS)
+		if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 			return;
 
 		if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) {
@@ -9507,7 +9507,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd) {
 		return;
 	}
 
-	if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS)
+	if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 		return;
 	
 	if (sd->invincible_timer != -1)
@@ -9597,7 +9597,7 @@ void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, int skilll
 		return;
 	}
 
-	if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS)
+	if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 		return;
 	
 	if (sd->invincible_timer != -1)
@@ -9661,7 +9661,7 @@ void clif_parse_UseSkillMap(int fd,struct map_session_data *sd)
 	if (clif_cant_act(sd))
 		return;
 
-	if(sd->sc.option&OPTION_WEDDING || sd->vd.class_ == JOB_XMAS)
+	if(sd->sc.option&(OPTION_WEDDING|OPTION_XMAS))
 		return;
 	
 	if(sd->invincible_timer != -1)

+ 10 - 0
src/map/pc.c

@@ -5492,6 +5492,16 @@ int pc_setoption(struct map_session_data *sd,int type)
 		clif_status_load(&sd->bl,SI_FALCON,1);
 	else if (!(type&OPTION_FALCON) && p_type&OPTION_FALCON) //Falcon OFF
 		clif_status_load(&sd->bl,SI_FALCON,0);
+
+	if (type&OPTION_FLYING && !(p_type&OPTION_FLYING))
+		clif_changelook(&sd->bl,LOOK_BASE,JOB_STAR_GLADIATOR2);
+	else if (!(type&OPTION_FLYING) && p_type&OPTION_FLYING)
+	{	
+		status_set_viewdata(&sd->bl, sd->status.class_);
+		clif_changelook(&sd->bl,LOOK_BASE,sd->vd.class_);
+		if(sd->status.clothes_color)
+			clif_changelook(&sd->bl,LOOK_CLOTHES_COLOR,sd->status.clothes_color);
+	}
 	
 	if (type&OPTION_WEDDING && !(p_type&OPTION_WEDDING))
 		clif_changelook(&sd->bl,LOOK_BASE,JOB_WEDDING);

+ 3 - 2
src/map/status.h

@@ -470,10 +470,11 @@ enum {
 #define OPTION_WEDDING 0x00001000
 #define OPTION_RUWACH 0x00002000
 #define OPTION_CHASEWALK 0x00004000
-#define OPTION_FLYING 0x00008000
+#define OPTION_XMAS 0x00008000
+//Note that clientside Flying is 0x8000, the SAME as Xmas!!
+#define OPTION_FLYING 0x0020000
 //TODO: Get these Missing options...
 #define OPTION_SIGHTTRASHER 0x00010000
-#define OPTION_XMAS 0x0020000
 
 #define OPTION_CART (OPTION_CART1|OPTION_CART2|OPTION_CART3|OPTION_CART4|OPTION_CART5)