فهرست منبع

Fixed #767
- Visuals effect from headgear not remove when rent of item expire
* Thank you to @admkakaroto

icxbb-xx 9 سال پیش
والد
کامیت
8c6b720e8f
4فایلهای تغییر یافته به همراه22 افزوده شده و 0 حذف شده
  1. 4 0
      src/map/clif.c
  2. 5 0
      src/map/map.c
  3. 11 0
      src/map/pc.c
  4. 2 0
      src/map/status.c

+ 4 - 0
src/map/clif.c

@@ -4398,6 +4398,10 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
 				clif_status_load(bl,SI_MOONSTAR,1);
 			if( tsd->sc.data[SC_SUPER_STAR] )
 				clif_status_load(bl,SI_SUPER_STAR,1);
+			if( tsd->sc.data[SC_DECORATION_OF_MUSIC] )
+				clif_status_load(bl,SI_DECORATION_OF_MUSIC,1);
+			if( tsd->sc.data[SC_STRANGELIGHTS] )
+				clif_status_load(bl,SI_STRANGELIGHTS,1);
 			if( tsd->sc.data[SC_ALL_RIDING] )
 				clif_status_load(bl,SI_ALL_RIDING,1);
 		}

+ 5 - 0
src/map/map.c

@@ -1783,6 +1783,11 @@ int map_quit(struct map_session_data *sd) {
 		status_change_end(&sd->bl, SC_READYCOUNTER, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_CBC, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_EQC, INVALID_TIMER);
+		// Remove visuals effect from headgear
+		status_change_end(&sd->bl, SC_MOONSTAR, INVALID_TIMER); 
+		status_change_end(&sd->bl, SC_SUPER_STAR, INVALID_TIMER); 
+		status_change_end(&sd->bl, SC_STRANGELIGHTS, INVALID_TIMER); 
+		status_change_end(&sd->bl, SC_DECORATION_OF_MUSIC, INVALID_TIMER); 
 		if (battle_config.debuff_on_logout&1) { //Remove negative buffs
 			status_change_end(&sd->bl, SC_ORCISH, INVALID_TIMER);
 			status_change_end(&sd->bl, SC_STRIPWEAPON, INVALID_TIMER);

+ 11 - 0
src/map/pc.c

@@ -535,6 +535,17 @@ void pc_rental_expire(struct map_session_data *sd, int i)
 			}
 			break;
 	}
+
+	// Remove visuals effect from headgear
+	if( &sd->sc && sd->sc.data[SC_MOONSTAR] )
+		status_change_end(&sd->bl, SC_MOONSTAR, INVALID_TIMER);
+	if( &sd->sc && sd->sc.data[SC_SUPER_STAR] )
+		status_change_end(&sd->bl, SC_SUPER_STAR, INVALID_TIMER);
+	if( &sd->sc && sd->sc.data[SC_DECORATION_OF_MUSIC] )
+		status_change_end(&sd->bl, SC_DECORATION_OF_MUSIC, INVALID_TIMER);
+	if( &sd->sc && sd->sc.data[SC_STRANGELIGHTS] )
+		status_change_end(&sd->bl, SC_STRANGELIGHTS, INVALID_TIMER);
+
 	clif_rental_expired(sd->fd, i, sd->status.inventory[i].nameid);
 	pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_OTHER);
 }

+ 2 - 0
src/map/status.c

@@ -823,6 +823,8 @@ void initChangeTables(void)
 	set_sc_with_vfx_noskill( SC_MOONSTAR	, SI_MOONSTAR	, SCB_NONE );
 	set_sc_with_vfx_noskill( SC_SUPER_STAR	, SI_SUPER_STAR	, SCB_NONE );
 	set_sc_with_vfx_noskill( SC_ALL_RIDING	, SI_ALL_RIDING	, SCB_SPEED );
+	set_sc_with_vfx_noskill( SC_STRANGELIGHTS	, SI_STRANGELIGHTS	, SCB_NONE );
+	set_sc_with_vfx_noskill( SC_DECORATION_OF_MUSIC		, SI_DECORATION_OF_MUSIC		, SCB_NONE );
 
 	/* Storing the target job rather than simply SC_SPIRIT simplifies code later on */
 	SkillStatusChangeTable[skill_get_index(SL_ALCHEMIST)]	= (sc_type)MAPID_ALCHEMIST,