diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm index e8a69d2aaf..e4c27752f0 100644 --- a/code/datums/uplink/visible_weapons.dm +++ b/code/datums/uplink/visible_weapons.dm @@ -15,37 +15,17 @@ path = /obj/item/weapon/material/knife/tacknife/combatknife /datum/uplink_item/item/visible_weapons/energy_sword - name = "Energy Sword, Random" + name = "Energy Sword, Colorable" item_cost = 40 path = /obj/item/weapon/melee/energy/sword -/datum/uplink_item/item/visible_weapons/energy_sword_blue - name = "Energy Sword, Blue" - item_cost = 40 - path = /obj/item/weapon/melee/energy/sword/blue - -/datum/uplink_item/item/visible_weapons/energy_sword_green - name = "Energy Sword, Green" - item_cost = 40 - path = /obj/item/weapon/melee/energy/sword/green - -/datum/uplink_item/item/visible_weapons/energy_sword_red - name = "Energy Sword, Red" - item_cost = 40 - path = /obj/item/weapon/melee/energy/sword/red - -/datum/uplink_item/item/visible_weapons/energy_sword_purple - name = "Energy Sword, Purple" - item_cost = 40 - path = /obj/item/weapon/melee/energy/sword/purple - /datum/uplink_item/item/visible_weapons/energy_sword_pirate - name = "Energy Cutlass" + name = "Energy Cutlass, Colorable" item_cost = 40 path = /obj/item/weapon/melee/energy/sword/pirate /datum/uplink_item/item/visible_weapons/energy_spear - name = "Energy Spear" + name = "Energy Spear, Colorable" item_cost = 50 path = /obj/item/weapon/melee/energy/spear @@ -192,4 +172,4 @@ /datum/uplink_item/item/visible_weapons/xray name = "Xray Gun" item_cost = 85 - path = /obj/item/weapon/gun/energy/xray \ No newline at end of file + path = /obj/item/weapon/gun/energy/xray diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index d935d4eaa2..2c4fd9949b 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -11,17 +11,26 @@ var/lrange = 2 var/lpower = 2 var/lcolor = "#0099FF" - + var/colorable = FALSE + var/rainbow = FALSE // If it uses energy. var/use_cell = FALSE var/hitcost = 120 var/obj/item/weapon/cell/bcell = null var/cell_type = /obj/item/weapon/cell/device + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) /obj/item/weapon/melee/energy/proc/activate(mob/living/user) if(active) return active = 1 + if(rainbow) + item_state = "[icon_state]_blade_rainbow" + else + item_state = "[icon_state]_blade" embed_chance = active_embed_chance force = active_force throwforce = active_throwforce @@ -29,12 +38,14 @@ edge = 1 w_class = active_w_class playsound(user, 'sound/weapons/saberon.ogg', 50, 1) + update_icon() set_light(lrange, lpower, lcolor) /obj/item/weapon/melee/energy/proc/deactivate(mob/living/user) if(!active) return playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) + item_state = "[icon_state]" active = 0 embed_chance = initial(embed_chance) force = initial(force) @@ -42,6 +53,7 @@ sharp = initial(sharp) edge = initial(edge) w_class = initial(w_class) + update_icon() set_light(0,0) /obj/item/weapon/melee/energy/proc/use_charge(var/cost) @@ -102,6 +114,13 @@ return ..() /obj/item/weapon/melee/energy/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/device/multitool) && colorable && !active) + if(!rainbow) + rainbow = TRUE + else + rainbow = FALSE + to_chat(user, "You manipulate the color controller in [src].") + update_icon() if(use_cell) if(istype(W, cell_type)) if(!bcell) @@ -125,13 +144,52 @@ /obj/item/weapon/melee/energy/get_cell() return bcell +/obj/item/weapon/melee/energy/update_icon() + . = ..() + var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade") + if(colorable) + blade_overlay.color = lcolor + if(rainbow || !colorable) + blade_overlay = mutable_appearance(icon, "[icon_state]_blade_rainbow") + blade_overlay.color = "FFFFFF" + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + if(active) + add_overlay(blade_overlay) + if(istype(usr,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = usr + H.update_inv_l_hand() + H.update_inv_r_hand() + + + + +/obj/item/weapon/melee/energy/AltClick(mob/living/user) + if(!colorable) //checks if is not colorable + return + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + + if(alert("Are you sure you want to recolor your blade?", "Confirm Recolor", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",lcolor) as color|null + if(energy_color_input) + lcolor = sanitize_hexcolor(energy_color_input) + update_icon() + +/obj/item/weapon/melee/energy/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + /* * Energy Axe */ /obj/item/weapon/melee/energy/axe name = "energy axe" desc = "An energised battle axe." - icon_state = "axe0" + icon_state = "eaxe" + item_state = "eaxe" //active_force = 150 //holy... active_force = 60 active_throwforce = 35 @@ -152,13 +210,11 @@ /obj/item/weapon/melee/energy/axe/activate(mob/living/user) ..() damtype = SEARING - icon_state = "axe1" to_chat(user, "\The [src] is now energised.") /obj/item/weapon/melee/energy/axe/deactivate(mob/living/user) ..() damtype = BRUTE - icon_state = initial(icon_state) to_chat(user, "\The [src] is de-energised. It's just a regular axe now.") /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) @@ -187,7 +243,8 @@ color name = "energy sword" desc = "May the force be within you." - icon_state = "sword0" + icon_state = "esword" + item_state = "esword" active_force = 30 active_throwforce = 20 active_w_class = ITEMSIZE_LARGE @@ -200,9 +257,8 @@ origin_tech = list(TECH_MAGNET = 3, TECH_ILLEGAL = 4) sharp = 1 edge = 1 - var/blade_color - var/random_color = TRUE - var/active_state = "sword" + colorable = TRUE + projectile_parry_chance = 65 @@ -211,30 +267,6 @@ if(!istype(loc,/mob)) deactivate(user) -/obj/item/weapon/melee/energy/sword/New() - if(random_color) - blade_color = pick("red","blue","green","purple","white") - lcolor = blade_color - -/obj/item/weapon/melee/energy/sword/green/New() - blade_color = "green" - lcolor = "#008000" - -/obj/item/weapon/melee/energy/sword/red/New() - blade_color = "red" - lcolor = "#FF0000" - -/obj/item/weapon/melee/energy/sword/blue/New() - blade_color = "blue" - lcolor = "#0000FF" - -/obj/item/weapon/melee/energy/sword/purple/New() - blade_color = "purple" - lcolor = "#800080" - -/obj/item/weapon/melee/energy/sword/white/New() - blade_color = "white" - lcolor = "#FFFFFF" /obj/item/weapon/melee/energy/sword/activate(mob/living/user) if(!active) @@ -242,14 +274,13 @@ ..() attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - icon_state = "[active_state][blade_color]" + /obj/item/weapon/melee/energy/sword/deactivate(mob/living/user) if(active) to_chat(user, "\The [src] deactivates!") ..() attack_verb = list() - icon_state = initial(icon_state) /obj/item/weapon/melee/energy/sword/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") if(active && default_parry_check(user, attacker, damage_source) && prob(60)) @@ -284,11 +315,10 @@ /obj/item/weapon/melee/energy/sword/pirate name = "energy cutlass" desc = "Arrrr matey." - icon_state = "cutlass0" + icon_state = "cutlass" + item_state = "cutlass" + colorable = TRUE -/obj/item/weapon/melee/energy/sword/pirate/activate(mob/living/user) - ..() - icon_state = "cutlass1" /* *Ionic Rapier @@ -300,8 +330,8 @@ description_info = "This is a dangerous melee weapon that will deliver a moderately powerful electromagnetic pulse to whatever it strikes. \ Striking a lesser robotic entity will compel it to attack you, as well. It also does extra burn damage to robotic entities, but it does \ very little damage to purely organic targets." - icon_state = "ionic_rapier0" - random_color = FALSE + icon_state = "ionrapier" + item_state = "ionrapier" active_force = 5 active_throwforce = 3 active_embed_chance = 0 @@ -312,7 +342,6 @@ lrange = 2 lpower = 2 lcolor = "#0000FF" - active_state = "ionic_rapier" projectile_parry_chance = 30 // It's not specifically designed for cutting and slashing, but it can still, maybe, save your life. /obj/item/weapon/melee/energy/sword/ionic_rapier/afterattack(var/atom/movable/AM, var/mob/living/user, var/proximity) @@ -350,6 +379,7 @@ active_force = 25 armor_penetration = 25 projectile_parry_chance = 40 + colorable = TRUE hitcost = 75 @@ -357,15 +387,14 @@ ..() bcell = new/obj/item/weapon/cell/device/weapon(src) -/* - *Energy Blade - */ +//Energy Blade (ninja uses this) //Can't be activated or deactivated, so no reason to be a subtype of energy /obj/item/weapon/melee/energy/blade name = "energy blade" desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal." icon_state = "blade" + item_state = "blade" force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe armor_penetration = 100 sharp = 1 @@ -448,49 +477,27 @@ return 1 -/* - *Energy Spear - */ +//Energy Spear /obj/item/weapon/melee/energy/spear - name = "energy spear" - desc = "Concentrated energy forming a sharp tip at the end of a long rod." - icon_state = "espear0" - armor_penetration = 75 - sharp = 1 - edge = 1 - force = 5 - throwforce = 10 - throw_speed = 7 - throw_range = 11 - reach = 2 - w_class = ITEMSIZE_LARGE - active_force = 25 - active_throwforce = 30 - active_w_class = ITEMSIZE_HUGE - var/random_color = TRUE - var/tip_color = "" - var/active_state = "espear" + name = "energy spear" + desc = "Concentrated energy forming a sharp tip at the end of a long rod." + icon_state = "espear" + armor_penetration = 75 + sharp = 1 + edge = 1 + force = 5 + throwforce = 10 + throw_speed = 7 + throw_range = 11 + reach = 2 + w_class = ITEMSIZE_LARGE + active_force = 25 + active_throwforce = 30 + active_w_class = ITEMSIZE_HUGE + colorable = TRUE -/obj/item/weapon/melee/energy/spear/New() - if(random_color) - tip_color = pick("red","blue","green","purple") - lcolor = tip_color -/obj/item/weapon/melee/energy/spear/green/New() - tip_color = "green" - lcolor = "#008000" - -/obj/item/weapon/melee/energy/spear/red/New() - tip_color = "red" - lcolor = "#FF0000" - -/obj/item/weapon/melee/energy/spear/blue/New() - tip_color = "blue" - lcolor = "#0000FF" - -/obj/item/weapon/melee/energy/spear/purple/New() - tip_color = "purple" lcolor = "#800080" /obj/item/weapon/melee/energy/spear/activate(mob/living/user) @@ -498,7 +505,6 @@ to_chat(user, "\The [src] is now energised.") ..() attack_verb = list("jabbed", "stabbed", "impaled") - icon_state = "[active_state]-[tip_color]" /obj/item/weapon/melee/energy/spear/deactivate(mob/living/user) @@ -506,7 +512,6 @@ to_chat(user, "\The [src] deactivates!") ..() attack_verb = list("whacked", "beat", "slapped", "thonked") - icon_state = "espear0" /obj/item/weapon/melee/energy/spear/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") if(active && default_parry_check(user, attacker, damage_source) && prob(50)) @@ -516,4 +521,4 @@ spark_system.start() playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1) return 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/game/objects/items/weapons/shields.dm b/code/game/objects/items/weapons/shields.dm index 5ea586f43d..6d3310cdc4 100644 --- a/code/game/objects/items/weapons/shields.dm +++ b/code/game/objects/items/weapons/shields.dm @@ -115,7 +115,8 @@ name = "energy combat shield" desc = "A shield capable of stopping most projectile and melee attacks. It can be retracted, expanded, and stored anywhere." icon = 'icons/obj/weapons.dmi' - icon_state = "eshield0" // eshield1 for expanded + icon_state = "eshield" + item_state = "eshield" slot_flags = SLOT_EARS flags = NOCONDUCT force = 3.0 @@ -123,9 +124,16 @@ throw_speed = 1 throw_range = 4 w_class = ITEMSIZE_SMALL + var/lrange = 1.5 + var/lpower = 1.5 + var/lcolor = "#006AFF" origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 4) attack_verb = list("shoved", "bashed") var/active = 0 + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_melee.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_melee.dmi', + ) /obj/item/weapon/shield/energy/handle_shield(mob/user) if(!active) @@ -175,11 +183,33 @@ return /obj/item/weapon/shield/energy/update_icon() - icon_state = "eshield[active]" + var/mutable_appearance/blade_overlay = mutable_appearance(icon, "[icon_state]_blade") + if(lcolor) + blade_overlay.color = lcolor + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other if(active) - set_light(1.5, 1.5, "#006AFF") + add_overlay(blade_overlay) + item_state = "[icon_state]_blade" + set_light(lrange, lpower, lcolor) else set_light(0) + item_state = "[icon_state]" + +/obj/item/weapon/shield/energy/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + if(alert("Are you sure you want to recolor your shield?", "Confirm Recolor", "Yes", "No") == "Yes") + var/energy_color_input = input(usr,"","Choose Energy Color",lcolor) as color|null + if(energy_color_input) + lcolor = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1) + update_icon() + +/obj/item/weapon/shield/energy/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") /obj/item/weapon/shield/riot/tele name = "telescopic shield" @@ -226,4 +256,4 @@ H.update_inv_r_hand() add_fingerprint(user) - return \ No newline at end of file + return diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm index bddfc140d4..237612acae 100644 --- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm +++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs.dm @@ -108,7 +108,7 @@ attack_edge = 1 attacktext = list("slashed") - loot_list = list(/obj/item/weapon/melee/energy/sword/red = 100, /obj/item/weapon/shield/energy = 100) + loot_list = list(/obj/item/weapon/melee/energy/sword = 100, /obj/item/weapon/shield/energy = 100) // They have a shield, so they try to block /mob/living/simple_mob/humanoid/merc/melee/sword/attackby(var/obj/item/O as obj, var/mob/user as mob) diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index 6004ca3e4c..7b9bb15baa 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -90,3 +90,4 @@ /mob/proc/update_targeted() return + diff --git a/icons/mob/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi index dbef5acf99..92199228ca 100644 Binary files a/icons/mob/items/lefthand_melee.dmi and b/icons/mob/items/lefthand_melee.dmi differ diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi index 5cfed3c119..e2f1b7ee47 100644 Binary files a/icons/mob/items/righthand_melee.dmi and b/icons/mob/items/righthand_melee.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index da2754d04b..213b884a33 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm index 1045e5703b..26deeda170 100644 --- a/maps/southern_cross/southern_cross-6.dmm +++ b/maps/southern_cross/southern_cross-6.dmm @@ -220,7 +220,7 @@ "el" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "em" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/obj/item/weapon/rig/ert/assetprotection,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "en" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"eo" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"eo" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ep" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/ammo_magazine/m545saw,/obj/item/ammo_magazine/m545saw,/obj/item/ammo_magazine/m545saw,/obj/item/ammo_magazine/m545saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "eq" = (/obj/structure/table/rack,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/obj/item/weapon/shield/energy,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "er" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -508,7 +508,7 @@ "jN" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_1_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 1"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/centcom/evac) "jO" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 2"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/centcom/evac) "jP" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) -"jQ" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/red,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"jQ" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "jR" = (/obj/structure/closet/chefcloset,/obj/item/glass_jar,/obj/item/device/retail_scanner/civilian,/obj/item/weapon/soap/nanotrasen,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) "jS" = (/obj/effect/floor_decal/corner/white/diagonal,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bar) "jT" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bar) @@ -924,7 +924,7 @@ "rN" = (/obj/machinery/computer/shuttle_control{name = "Beruang control console"; req_access = list(160); shuttle_tag = "Trade"},/turf/unsimulated/floor{icon_state = "steel"},/area/shuttle/trade) "rO" = (/obj/structure/closet/crate,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/shuttle/trade) "rP" = (/turf/unsimulated/floor{icon_state = "dark"},/area/shuttle/trade) -"rQ" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/energy/sword/green,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) +"rQ" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/head/helmet/thunderdome,/obj/item/weapon/melee/baton/loaded,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome) "rR" = (/obj/machinery/door/airlock/centcom{name = "Bridge Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "rS" = (/obj/machinery/door/airlock/glass_centcom{name = "Bridge Access"; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall) "rT" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bar) @@ -2262,7 +2262,7 @@ "Rz" = (/obj/effect/floor_decal/corner/green/full,/obj/structure/window/reinforced/holowindow/disappearing{dir = 8},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) "RA" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/structure/window/reinforced/holowindow/disappearing{dir = 4},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) "RB" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -2520,4 +2520,3 @@ aaaaRfababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} -