diff --git a/Server/src/main/content/global/skill/construction/ConstructionInterface.kt b/Server/src/main/content/global/skill/construction/ConstructionInterface.kt index 32c244112..2106c04a1 100644 --- a/Server/src/main/content/global/skill/construction/ConstructionInterface.kt +++ b/Server/src/main/content/global/skill/construction/ConstructionInterface.kt @@ -29,16 +29,22 @@ class ConstructionInterface : InterfaceListener { closeInterface(player) val hotspot = getAttribute(player, "con:hotspot", null) val `object` = getAttribute(player, "con:hsobject", null) - if (hotspot == null || `object` == null) { + val flatpackMode = getAttribute(player, WorkbenchListeners.attributeFlatpackMode, false) + if (hotspot == null || `object` == null && !flatpackMode) { log(this.javaClass, Log.ERR, "Failed building decoration $hotspot : $`object`") return@on false } val slot = (if (slot % 2 != 0) 4 else 0) + (slot shr 1) - if (slot >= hotspot.hotspot.decorations.size) { - log(this.javaClass, Log.ERR, "Failed building decoration " + slot + "/" + hotspot.hotspot.decorations.size) + val buildHotspot = if (flatpackMode) { + getAttribute(player, WorkbenchListeners.attributeSelection, null)?: return@on false + } else { + hotspot.hotspot + } + if (slot >= buildHotspot.decorations.size) { + log(this.javaClass, Log.ERR, "Failed building decoration " + slot + "/" + buildHotspot.decorations.size) return@on false } - val deco = hotspot.hotspot.decorations[slot] + val deco = buildHotspot.decorations[slot] if (!player.isAdmin) { if (getDynLevel(player, Skills.CONSTRUCTION) < deco.level) { sendMessage(player, "You need to have a Construction level of " + deco.level + " to build that.") @@ -70,13 +76,12 @@ class ConstructionInterface : InterfaceListener { return@on true } } - if (getAttribute(player, WorkbenchListeners.attributeFlatpackMode, false) && - WorkbenchListeners.getMaxLevel(getAttribute(player, WorkbenchListeners.attributeWorkbenchId, 0)) < deco.level) { + if (flatpackMode && WorkbenchListeners.getMaxLevel(getAttribute(player, WorkbenchListeners.attributeWorkbenchId, 0)) < deco.level) { sendMessage(player, "You need a better workbench to make this flatpack.") // placeholder return@on true } } - if (getAttribute(player, WorkbenchListeners.attributeFlatpackMode, false)) { + if (flatpackMode) { WorkbenchListeners.produceFlatpack(player, deco) } else { BuildingUtils.buildDecoration(player, hotspot, deco, `object`) diff --git a/Server/src/main/content/global/skill/construction/decoration/workshop/WorkbenchListeners.kt b/Server/src/main/content/global/skill/construction/decoration/workshop/WorkbenchListeners.kt index 621478745..48944b562 100644 --- a/Server/src/main/content/global/skill/construction/decoration/workshop/WorkbenchListeners.kt +++ b/Server/src/main/content/global/skill/construction/decoration/workshop/WorkbenchListeners.kt @@ -54,9 +54,105 @@ class WorkbenchListeners : InteractionListener, InterfaceListener { BuildHotspot.TOY_BOX, // 126 ) - val FLATPACKS = mapOf( - Decoration.CRUDE_CHAIR to Items.CRUDE_WOODEN_CHAIR_8496, - Decoration.OAK_CHAIR to Items.OAK_CHAIR_8502 + val FLATPACKS = mapOf( + // Chairs (armchairs) + Decoration.CRUDE_CHAIR to Items.CRUDE_WOODEN_CHAIR_8496, + Decoration.WOODEN_CHAIR to Items.WOODEN_CHAIR_8498, + Decoration.ROCKING_CHAIR to Items.ROCKING_CHAIR_8500, + Decoration.OAK_CHAIR to Items.OAK_CHAIR_8502, + Decoration.OAK_ARMCHAIR to Items.OAK_ARMCHAIR_8504, + Decoration.TEAK_ARMCHAIR to Items.TEAK_ARMCHAIR_8506, + Decoration.MAHOGANY_ARMCHAIR to Items.MAHOGANY_ARMCHAIR_8508, + // Bookcases + Decoration.WOODEN_BOOKCASE to Items.WOODEN_BOOKCASE_8510, + Decoration.OAK_BOOKCASE to Items.OAK_BOOKCASE_8512, + Decoration.MAHOGANY_BOOKCASE to Items.MAHOGANY_BKCASE_8514, + // Beer barrels + Decoration.BASIC_BEER_BARREL to Items.BEER_BARREL_8516, + Decoration.CIDER_BARREL to Items.CIDER_BARREL_8518, + Decoration.ASGARNIAN_ALE_BARREL to Items.ASGARNIAN_ALE_8520, + Decoration.GREENMANS_ALE_BARREL to Items.GREENMANS_ALE_8522, + Decoration.DRAGON_BITTER_BARREL to Items.DRAGON_BITTER_8524, + Decoration.CHEFS_DELIGHT_BARREL to Items.CHEFS_DELIGHT_8526, + // Kitchen tables + Decoration.KITCHEN_WOODEN_TABLE to Items.WOOD_KITCHEN_TABLE_8528, + Decoration.KITCHEN_OAK_TABLE to Items.OAK_KITCHEN_TABLE_8530, + Decoration.KITCHEN_TEAK_TABLE to Items.TEAK_KITCHEN_TABLE_8532, + // Dining tables + Decoration.DINING_TABLE_WOOD to Items.WOOD_DINING_TABLE_8548, + Decoration.DINING_TABLE_OAK to Items.OAK_DINING_TABLE_8550, + Decoration.DINING_TABLE_CARVED_OAK to Items.CARVED_OAK_TABLE_8552, + Decoration.DINING_TABLE_TEAK to Items.TEAK_TABLE_8554, + Decoration.DINING_TABLE_CARVED_TEAK to Items.CARVED_TEAK_TABLE_8556, + Decoration.DINING_TABLE_MAHOGANY to Items.MAHOGANY_TABLE_8558, + Decoration.DINING_TABLE_OPULENT to Items.OPULENT_TABLE_8560, + // Dining benches + Decoration.BENCH_WOODEN to Items.WOODEN_BENCH_8562, + Decoration.BENCH_OAK to Items.OAK_BENCH_8564, + Decoration.BENCH_CARVED_OAK to Items.CARVED_OAK_BENCH_8566, + Decoration.BENCH_TEAK to Items.TEAK_DINING_BENCH_8568, + Decoration.BENCH_CARVED_TEAK to Items.CARVED_TEAK_BENCH_8570, + Decoration.BENCH_MAHOGANY to Items.MAHOGANY_BENCH_8572, + Decoration.BENCH_GILDED to Items.GILDED_BENCH_8574, + // Beds + Decoration.WOODEN_BED to Items.WOODEN_BED_8576, + Decoration.OAK_BED to Items.OAK_BED_8578, + Decoration.LARGE_OAK_BED to Items.LARGE_OAK_BED_8580, + Decoration.TEAK_BED to Items.TEAK_BED_8582, + Decoration.LARGE_TEAK_BED to Items.LARGE_TEAK_BED_8584, + Decoration.FOUR_POSTER to Items.FOUR_POSTER_8586, + Decoration.GILDED_FOUR_POSTER to Items.GILDED_4_POSTER_8588, + // Clocks + Decoration.OAK_CLOCK to Items.OAK_CLOCK_8590, + Decoration.TEAK_CLOCK to Items.TEAK_CLOCK_8592, + Decoration.GILDED_CLOCK to Items.GILDED_CLOCK_8594, + // Dressers + Decoration.SHAVING_STAND to Items.SHAVING_STAND_8596, + Decoration.OAK_SHAVING_STAND to Items.OAK_SHAVING_STAND_8598, + Decoration.OAK_DRESSER to Items.OAK_DRESSER_8600, + Decoration.TEAK_DRESSER to Items.TEAK_DRESSER_8602, + Decoration.FANCY_TEAK_DRESSER to Items.FANCY_TEAK_DRESSER_8604, + Decoration.MAHOGANY_DRESSER to Items.MAHOGANY_DRESSER_8606, + Decoration.GILDED_DRESSER to Items.GILDED_DRESSER_8608, + // Wardrobes + Decoration.SHOE_BOX to Items.SHOE_BOX_8610, + Decoration.OAK_DRAWERS to Items.OAK_DRAWERS_8612, + Decoration.OAK_WARDROBE to Items.OAK_WARDROBE_8614, + Decoration.TEAK_DRAWERS to Items.TEAK_DRAWERS_8616, + Decoration.TEAK_WARDROBE to Items.TEAK_WARDROBE_8618, + Decoration.MAHOGANY_WARDROBE to Items.MAHOGANY_DROBE_8620, + Decoration.GILDED_WARDROBE to Items.GILDED_WARDROBE_8622, + // Cape racks + Decoration.OAK_CAPE_RACK to Items.OAK_CAPE_RACK_9843, + Decoration.TEAK_CAPE_RACK to Items.TEAK_CAPE_RACK_9844, + Decoration.MGANY_CAPE_RACK to Items.MGANY_CAPE_RACK_9845, + Decoration.GILDED_CAPE_RACK to Items.GILDED_CAPE_RACK_9846, + Decoration.MARBLE_CAPE_RACK to Items.MARBLE_CAPE_RACK_9847, + Decoration.MAGIC_CAPE_RACK to Items.MAGICAL_CAPE_RACK_9848, + // Magic wardrobes + Decoration.OAK_MAGIC_WARDROBE to Items.OAK_MAGIC_WARDROBE_9852, + Decoration.C_OAK_MAGIC_WARDROBE to Items.CARVED_OAK_MAGIC_WARDROBE_9853, + Decoration.TEAK_MAGIC_WARDROBE to Items.TEAK_MAGIC_WARDROBE_9854, + Decoration.C_TEAK_MAGIC_WARDROBE to Items.CARVED_TEAK_MAGIC_WARDROBE_9855, + Decoration.MGANY_MAGIC_WARDROBE to Items.MAHOGANY_MAGIC_WARDROBE_9856, + Decoration.GILDED_MAGIC_WARDROBE to Items.GILDED_MAGIC_WARDROBE_9857, + Decoration.MARBLE_MAGIC_WARDROBE to Items.MARBLE_MAGIC_WARDROBE_9858, + // Armour cases + Decoration.OAK_ARMOUR_CASE to Items.OAK_ARMOUR_CASE_9859, + Decoration.TEAK_ARMOUR_CASE to Items.TEAK_ARMOUR_CASE_9860, + Decoration.MGANY_ARMOUR_CASE to Items.MGANY_ARMR_CASE_9861, + // Treasure trail chests + Decoration.OAK_TREASURE_CHEST to Items.OAK_TREASURE_CHEST_9862, + Decoration.TEAK_TREASURE_CHEST to Items.TEAK_TREAS_CHEST_9863, + Decoration.MAHOGANY_TREASURE_CHEST to Items.MGANY_TREAS_CHEST_9864, + // Fancy dress boxes (costume boxes) + Decoration.OAK_COSTUME_BOX to Items.OAK_COSTUME_BOX_9865, + Decoration.TEAK_COSTUME_BOX to Items.TEAK_COSTUME_BOX_9866, + Decoration.MAHOGANY_COSTUME_BOX to Items.MAHOGANY_COS_BOX_9867, + // Toy boxes + Decoration.OAK_TOY_BOX to Items.OAK_TOY_BOX_9849, + Decoration.TEAK_TOY_BOX to Items.TEAK_TOY_BOX_9850, + Decoration.MAHOGANY_TOY_BOX to Items.MAHOGANY_TOY_BOX_9851, ) fun getMaxLevel(workbenchId: Int): Int {