Ver código fonte

Added support for the second summer costume (#2942)

Fixed other costumes being able to be removed by Dispell

Fixes #2788

Thanks to @admkakaroto
Lemongrass3110 7 anos atrás
pai
commit
5c9d7a41a9

+ 1 - 0
db/re/item_db.txt

@@ -11099,6 +11099,7 @@
 22812,Sealed_Dracula_Scroll,Sealed Dracula Scroll,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getitem callfunc("F_Rand",6228,6232,22813,19937,17314, 6635),1; },{},{}
 22813,Bearer's_Shadow_Box,Bearer's Shadow Box,2,10,,10,,,,0,0xFFFFFFFF,63,2,,,1,,,{ getitem callfunc("F_Rand",24180,24181,24182,24183,24184,24185),1; },{},{}
 22814,Cat_Hand_Ticket,Cat Hand Ticket,3,10,,0,,,,,,,,,,,,,{},{},{}
+22822,Summer_Vacation_Costumes,Summer Vacation Costumes,2,,,100,,,,0,0xFFFFFFFF,63,2,,,1,,,{ sc_start SC_DRESSUP,600000,1; },{},{}
 22823,Sealed_Sniper_Scroll,Sealed Sniper Scroll,2,10,,10,,,,,,,,,,,,,{ /*getitem callfunc("F_Rand",4491,6228,6232,24196, Hasty Shadow Armor, 19882, 17474, 6635),1;*/ },{},{}
 22826,Enchant_Stone_Box4,Costume Enchantment Stone Box 4,2,10,,10,,,,,,,,,,,,,{},{},{}
 22827,Shadow_Cube,Shadow Cube,2,10,,10,,,,,,,,,,,,,{/*No Info*/},{},{}

+ 3 - 1
src/map/atcommand.cpp

@@ -9731,6 +9731,7 @@ ACMD_FUNC(costume) {
 		"Wedding",
 		"Xmas",
 		"Summer",
+		"Summer2"
 		"Hanbok",
 		"Oktoberfest",
 	};
@@ -9738,6 +9739,7 @@ ACMD_FUNC(costume) {
 		SC_WEDDING,
 		SC_XMAS,
 		SC_SUMMER,
+		SC_DRESSUP,
 		SC_HANBOK,
 		SC_OKTOBERFEST
 	};
@@ -9779,7 +9781,7 @@ ACMD_FUNC(costume) {
 		return -1;
 	}
 
-	sc_start(&sd->bl, &sd->bl, (sc_type)name2id[k], 100, 0, -1);
+	sc_start(&sd->bl, &sd->bl, (sc_type)name2id[k], 100, name2id[k] == SC_DRESSUP ? 1 : 0, -1);
 
 	return 0;
 }

+ 1 - 0
src/map/script_constants.hpp

@@ -1481,6 +1481,7 @@
 	export_constant(SC_DORAM_SVSP);
 	export_constant(SC_FALLEN_ANGEL);
 	export_constant(SC_CHEERUP);
+	export_constant(SC_DRESSUP);
 #ifdef RENEWAL
 	export_constant(SC_EXTREMITYFIST2);
 #endif

+ 6 - 0
src/map/skill.cpp

@@ -1915,6 +1915,8 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
 					case SC_CLAN_INFO:		case SC_SWORDCLAN:		case SC_ARCWANDCLAN:
 					case SC_GOLDENMACECLAN:	case SC_CROSSBOWCLAN:
 					case SC_DAILYSENDMAILCNT:
+					case SC_WEDDING:		case SC_XMAS:			case SC_SUMMER:
+					case SC_DRESSUP:		case SC_HANBOK:			case SC_OKTOBERFEST:
 						continue;
 					case SC_WHISTLE:		case SC_ASSNCROS:		case SC_POEMBRAGI:
 					case SC_APPLEIDUN:		case SC_HUMMING:		case SC_DONTFORGETME:
@@ -7948,6 +7950,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 					case SC_CROSSBOWCLAN:
 					case SC_JUMPINGCLAN:
 					case SC_DAILYSENDMAILCNT:
+					case SC_WEDDING:		case SC_XMAS:			case SC_SUMMER:
+					case SC_DRESSUP:		case SC_HANBOK:			case SC_OKTOBERFEST:
 						continue;
 					case SC_WHISTLE:
 					case SC_ASSNCROS:
@@ -9417,6 +9421,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 					case SC_CLAN_INFO:		case SC_SWORDCLAN:		case SC_ARCWANDCLAN:
 					case SC_GOLDENMACECLAN:	case SC_CROSSBOWCLAN:
 					case SC_DAILYSENDMAILCNT:
+					case SC_WEDDING:		case SC_XMAS:			case SC_SUMMER:
+					case SC_DRESSUP:		case SC_HANBOK:			case SC_OKTOBERFEST:
 					continue;
 				case SC_ASSUMPTIO:
 					if( bl->type == BL_MOB )

+ 15 - 5
src/map/status.cpp

@@ -1147,12 +1147,14 @@ void initChangeTables(void)
 
 	// Geffen Magic Tournament Buffs
 	StatusIconChangeTable[SC_GEFFEN_MAGIC1] = SI_GEFFEN_MAGIC1;
-    StatusIconChangeTable[SC_GEFFEN_MAGIC2] = SI_GEFFEN_MAGIC2;
-    StatusIconChangeTable[SC_GEFFEN_MAGIC3] = SI_GEFFEN_MAGIC3;
+	StatusIconChangeTable[SC_GEFFEN_MAGIC2] = SI_GEFFEN_MAGIC2;
+	StatusIconChangeTable[SC_GEFFEN_MAGIC3] = SI_GEFFEN_MAGIC3;
 
 	// RODEX
 	StatusIconChangeTable[SC_DAILYSENDMAILCNT] = SI_DAILYSENDMAILCNT;
 
+	StatusIconChangeTable[SC_DRESSUP] = SI_DRESS_UP;
+
 	/* Other SC which are not necessarily associated to skills */
 	StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD;
 	StatusChangeFlagTable[SC_ASPDPOTION1] |= SCB_ASPD;
@@ -1370,6 +1372,7 @@ void initChangeTables(void)
 
 	// Clans
 	StatusDisplayType[SC_CLAN_INFO] = BL_PC|BL_NPC;
+	StatusDisplayType[SC_DRESSUP] = BL_PC;
 
 	/* StatusChangeState (SCS_) NOMOVE */
 	StatusChangeStateTable[SC_ANKLE]				|= SCS_NOMOVE;
@@ -8808,6 +8811,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 	case SC_SUMMER:
 	case SC_HANBOK:
 	case SC_OKTOBERFEST:
+	case SC_DRESSUP:
 		if (!vd)
 			return 0;
 		break;
@@ -11082,6 +11086,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			case SC_SUMMER:
 			case SC_HANBOK:
 			case SC_OKTOBERFEST:
+			case SC_DRESSUP:
 				if( !vd )
 					break;
 				clif_changelook(bl,LOOK_BASE,vd->class_);
@@ -11141,6 +11146,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 		case SC_GOLDENMACECLAN:
 		case SC_CROSSBOWCLAN:
 		case SC_JUMPINGCLAN:
+		case SC_DRESSUP:
 			val_flag |= 1;
 			break;
 		// Start |1|2 val_flag setting
@@ -11286,6 +11292,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 		case SC_SUMMER:
 		case SC_HANBOK:
 		case SC_OKTOBERFEST:
+		case SC_DRESSUP:
 		case SC_SUHIDE:
 			unit_stop_attack(bl);
 			break;
@@ -11449,6 +11456,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			opt_flag |= 0x4;
 			break;
 		case SC_SUMMER:
+		case SC_DRESSUP:
 			sc->option |= OPTION_SUMMER;
 			opt_flag |= 0x4;
 			break;
@@ -11684,6 +11692,7 @@ int status_change_clear(struct block_list* bl, int type)
 			case SC_SUMMER:
 			case SC_HANBOK:
 			case SC_OKTOBERFEST:
+			case SC_DRESSUP:
 			case SC_NOCHAT:
 			case SC_FUSION:
 			case SC_EARTHSCROLL:
@@ -11757,9 +11766,9 @@ int status_change_clear(struct block_list* bl, int type)
 			case SC_SPRITEMABLE:
 			case SC_DORAM_BUF_01:
 			case SC_DORAM_BUF_02:
-            case SC_GEFFEN_MAGIC1:
-            case SC_GEFFEN_MAGIC2:
-            case SC_GEFFEN_MAGIC3:
+			case SC_GEFFEN_MAGIC1:
+			case SC_GEFFEN_MAGIC2:
+			case SC_GEFFEN_MAGIC3:
 			// Costumes
 			case SC_MOONSTAR:
 			case SC_SUPER_STAR:
@@ -12457,6 +12466,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 		opt_flag |= 0x4;
 		break;
 	case SC_SUMMER:
+	case SC_DRESSUP:
 		sc->option &= ~OPTION_SUMMER;
 		opt_flag |= 0x4;
 		break;

+ 1 - 0
src/map/status.hpp

@@ -839,6 +839,7 @@ enum sc_type : int16 {
 	SC_FALLEN_ANGEL,
 
 	SC_CHEERUP,
+	SC_DRESSUP,
 
 #ifdef RENEWAL
 	SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled