[READY] Recolourable energy weapons. (#6507)

This commit is contained in:
lolman360
2019-11-02 03:37:27 +11:00
committed by VirgoBot
parent 87e3a84ba2
commit ae859c49e9
9 changed files with 135 additions and 120 deletions

View File

@@ -15,37 +15,17 @@
path = /obj/item/weapon/material/knife/tacknife/combatknife path = /obj/item/weapon/material/knife/tacknife/combatknife
/datum/uplink_item/item/visible_weapons/energy_sword /datum/uplink_item/item/visible_weapons/energy_sword
name = "Energy Sword, Random" name = "Energy Sword, Colorable"
item_cost = 40 item_cost = 40
path = /obj/item/weapon/melee/energy/sword 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 /datum/uplink_item/item/visible_weapons/energy_sword_pirate
name = "Energy Cutlass" name = "Energy Cutlass, Colorable"
item_cost = 40 item_cost = 40
path = /obj/item/weapon/melee/energy/sword/pirate path = /obj/item/weapon/melee/energy/sword/pirate
/datum/uplink_item/item/visible_weapons/energy_spear /datum/uplink_item/item/visible_weapons/energy_spear
name = "Energy Spear" name = "Energy Spear, Colorable"
item_cost = 50 item_cost = 50
path = /obj/item/weapon/melee/energy/spear path = /obj/item/weapon/melee/energy/spear
@@ -192,4 +172,4 @@
/datum/uplink_item/item/visible_weapons/xray /datum/uplink_item/item/visible_weapons/xray
name = "Xray Gun" name = "Xray Gun"
item_cost = 85 item_cost = 85
path = /obj/item/weapon/gun/energy/xray path = /obj/item/weapon/gun/energy/xray

View File

@@ -11,17 +11,26 @@
var/lrange = 2 var/lrange = 2
var/lpower = 2 var/lpower = 2
var/lcolor = "#0099FF" var/lcolor = "#0099FF"
var/colorable = FALSE
var/rainbow = FALSE
// If it uses energy. // If it uses energy.
var/use_cell = FALSE var/use_cell = FALSE
var/hitcost = 120 var/hitcost = 120
var/obj/item/weapon/cell/bcell = null var/obj/item/weapon/cell/bcell = null
var/cell_type = /obj/item/weapon/cell/device 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) /obj/item/weapon/melee/energy/proc/activate(mob/living/user)
if(active) if(active)
return return
active = 1 active = 1
if(rainbow)
item_state = "[icon_state]_blade_rainbow"
else
item_state = "[icon_state]_blade"
embed_chance = active_embed_chance embed_chance = active_embed_chance
force = active_force force = active_force
throwforce = active_throwforce throwforce = active_throwforce
@@ -29,12 +38,14 @@
edge = 1 edge = 1
w_class = active_w_class w_class = active_w_class
playsound(user, 'sound/weapons/saberon.ogg', 50, 1) playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
update_icon()
set_light(lrange, lpower, lcolor) set_light(lrange, lpower, lcolor)
/obj/item/weapon/melee/energy/proc/deactivate(mob/living/user) /obj/item/weapon/melee/energy/proc/deactivate(mob/living/user)
if(!active) if(!active)
return return
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
item_state = "[icon_state]"
active = 0 active = 0
embed_chance = initial(embed_chance) embed_chance = initial(embed_chance)
force = initial(force) force = initial(force)
@@ -42,6 +53,7 @@
sharp = initial(sharp) sharp = initial(sharp)
edge = initial(edge) edge = initial(edge)
w_class = initial(w_class) w_class = initial(w_class)
update_icon()
set_light(0,0) set_light(0,0)
/obj/item/weapon/melee/energy/proc/use_charge(var/cost) /obj/item/weapon/melee/energy/proc/use_charge(var/cost)
@@ -102,6 +114,13 @@
return ..() return ..()
/obj/item/weapon/melee/energy/attackby(obj/item/weapon/W, mob/user) /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, "<span class='notice'>You manipulate the color controller in [src].</span>")
update_icon()
if(use_cell) if(use_cell)
if(istype(W, cell_type)) if(istype(W, cell_type))
if(!bcell) if(!bcell)
@@ -125,13 +144,52 @@
/obj/item/weapon/melee/energy/get_cell() /obj/item/weapon/melee/energy/get_cell()
return bcell 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, "<span class='warning'>You can't do that right now!</span>")
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, "<span class='notice'>Alt-click to recolor it.</span>")
/* /*
* Energy Axe * Energy Axe
*/ */
/obj/item/weapon/melee/energy/axe /obj/item/weapon/melee/energy/axe
name = "energy axe" name = "energy axe"
desc = "An energised battle axe." desc = "An energised battle axe."
icon_state = "axe0" icon_state = "eaxe"
item_state = "eaxe"
//active_force = 150 //holy... //active_force = 150 //holy...
active_force = 60 active_force = 60
active_throwforce = 35 active_throwforce = 35
@@ -152,13 +210,11 @@
/obj/item/weapon/melee/energy/axe/activate(mob/living/user) /obj/item/weapon/melee/energy/axe/activate(mob/living/user)
..() ..()
damtype = SEARING damtype = SEARING
icon_state = "axe1"
to_chat(user, "<span class='notice'>\The [src] is now energised.</span>") to_chat(user, "<span class='notice'>\The [src] is now energised.</span>")
/obj/item/weapon/melee/energy/axe/deactivate(mob/living/user) /obj/item/weapon/melee/energy/axe/deactivate(mob/living/user)
..() ..()
damtype = BRUTE damtype = BRUTE
icon_state = initial(icon_state)
to_chat(user, "<span class='notice'>\The [src] is de-energised. It's just a regular axe now.</span>") to_chat(user, "<span class='notice'>\The [src] is de-energised. It's just a regular axe now.</span>")
/obj/item/weapon/melee/energy/axe/suicide_act(mob/user) /obj/item/weapon/melee/energy/axe/suicide_act(mob/user)
@@ -187,7 +243,8 @@
color color
name = "energy sword" name = "energy sword"
desc = "May the force be within you." desc = "May the force be within you."
icon_state = "sword0" icon_state = "esword"
item_state = "esword"
active_force = 30 active_force = 30
active_throwforce = 20 active_throwforce = 20
active_w_class = ITEMSIZE_LARGE active_w_class = ITEMSIZE_LARGE
@@ -200,9 +257,8 @@
origin_tech = list(TECH_MAGNET = 3, TECH_ILLEGAL = 4) origin_tech = list(TECH_MAGNET = 3, TECH_ILLEGAL = 4)
sharp = 1 sharp = 1
edge = 1 edge = 1
var/blade_color colorable = TRUE
var/random_color = TRUE
var/active_state = "sword"
projectile_parry_chance = 65 projectile_parry_chance = 65
@@ -211,30 +267,6 @@
if(!istype(loc,/mob)) if(!istype(loc,/mob))
deactivate(user) 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) /obj/item/weapon/melee/energy/sword/activate(mob/living/user)
if(!active) if(!active)
@@ -242,14 +274,13 @@
..() ..()
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") 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) /obj/item/weapon/melee/energy/sword/deactivate(mob/living/user)
if(active) if(active)
to_chat(user, "<span class='notice'>\The [src] deactivates!</span>") to_chat(user, "<span class='notice'>\The [src] deactivates!</span>")
..() ..()
attack_verb = list() 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") /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)) if(active && default_parry_check(user, attacker, damage_source) && prob(60))
@@ -284,11 +315,10 @@
/obj/item/weapon/melee/energy/sword/pirate /obj/item/weapon/melee/energy/sword/pirate
name = "energy cutlass" name = "energy cutlass"
desc = "Arrrr matey." 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 *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. \ 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 \ 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." very little damage to purely organic targets."
icon_state = "ionic_rapier0" icon_state = "ionrapier"
random_color = FALSE item_state = "ionrapier"
active_force = 5 active_force = 5
active_throwforce = 3 active_throwforce = 3
active_embed_chance = 0 active_embed_chance = 0
@@ -312,7 +342,6 @@
lrange = 2 lrange = 2
lpower = 2 lpower = 2
lcolor = "#0000FF" 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. 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) /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 active_force = 25
armor_penetration = 25 armor_penetration = 25
projectile_parry_chance = 40 projectile_parry_chance = 40
colorable = TRUE
hitcost = 75 hitcost = 75
@@ -357,15 +387,14 @@
..() ..()
bcell = new/obj/item/weapon/cell/device/weapon(src) bcell = new/obj/item/weapon/cell/device/weapon(src)
/* //Energy Blade (ninja uses this)
*Energy Blade
*/
//Can't be activated or deactivated, so no reason to be a subtype of energy //Can't be activated or deactivated, so no reason to be a subtype of energy
/obj/item/weapon/melee/energy/blade /obj/item/weapon/melee/energy/blade
name = "energy blade" name = "energy blade"
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal." desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
icon_state = "blade" icon_state = "blade"
item_state = "blade"
force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe force = 40 //Normal attacks deal very high damage - about the same as wielded fire axe
armor_penetration = 100 armor_penetration = 100
sharp = 1 sharp = 1
@@ -448,49 +477,27 @@
return 1 return 1
/* //Energy Spear
*Energy Spear
*/
/obj/item/weapon/melee/energy/spear /obj/item/weapon/melee/energy/spear
name = "energy spear" name = "energy spear"
desc = "Concentrated energy forming a sharp tip at the end of a long rod." desc = "Concentrated energy forming a sharp tip at the end of a long rod."
icon_state = "espear0" icon_state = "espear"
armor_penetration = 75 armor_penetration = 75
sharp = 1 sharp = 1
edge = 1 edge = 1
force = 5 force = 5
throwforce = 10 throwforce = 10
throw_speed = 7 throw_speed = 7
throw_range = 11 throw_range = 11
reach = 2 reach = 2
w_class = ITEMSIZE_LARGE w_class = ITEMSIZE_LARGE
active_force = 25 active_force = 25
active_throwforce = 30 active_throwforce = 30
active_w_class = ITEMSIZE_HUGE active_w_class = ITEMSIZE_HUGE
var/random_color = TRUE colorable = TRUE
var/tip_color = ""
var/active_state = "espear"
/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" lcolor = "#800080"
/obj/item/weapon/melee/energy/spear/activate(mob/living/user) /obj/item/weapon/melee/energy/spear/activate(mob/living/user)
@@ -498,7 +505,6 @@
to_chat(user, "<span class='notice'>\The [src] is now energised.</span>") to_chat(user, "<span class='notice'>\The [src] is now energised.</span>")
..() ..()
attack_verb = list("jabbed", "stabbed", "impaled") attack_verb = list("jabbed", "stabbed", "impaled")
icon_state = "[active_state]-[tip_color]"
/obj/item/weapon/melee/energy/spear/deactivate(mob/living/user) /obj/item/weapon/melee/energy/spear/deactivate(mob/living/user)
@@ -506,7 +512,6 @@
to_chat(user, "<span class='notice'>\The [src] deactivates!</span>") to_chat(user, "<span class='notice'>\The [src] deactivates!</span>")
..() ..()
attack_verb = list("whacked", "beat", "slapped", "thonked") 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") /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)) if(active && default_parry_check(user, attacker, damage_source) && prob(50))
@@ -516,4 +521,4 @@
spark_system.start() spark_system.start()
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
return 1 return 1
return 0 return 0

View File

@@ -115,7 +115,8 @@
name = "energy combat shield" name = "energy combat shield"
desc = "A shield capable of stopping most projectile and melee attacks. It can be retracted, expanded, and stored anywhere." 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 = 'icons/obj/weapons.dmi'
icon_state = "eshield0" // eshield1 for expanded icon_state = "eshield"
item_state = "eshield"
slot_flags = SLOT_EARS slot_flags = SLOT_EARS
flags = NOCONDUCT flags = NOCONDUCT
force = 3.0 force = 3.0
@@ -123,9 +124,16 @@
throw_speed = 1 throw_speed = 1
throw_range = 4 throw_range = 4
w_class = ITEMSIZE_SMALL 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) origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 4)
attack_verb = list("shoved", "bashed") attack_verb = list("shoved", "bashed")
var/active = 0 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) /obj/item/weapon/shield/energy/handle_shield(mob/user)
if(!active) if(!active)
@@ -175,11 +183,33 @@
return return
/obj/item/weapon/shield/energy/update_icon() /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) if(active)
set_light(1.5, 1.5, "#006AFF") add_overlay(blade_overlay)
item_state = "[icon_state]_blade"
set_light(lrange, lpower, lcolor)
else else
set_light(0) 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, "<span class='warning'>You can't do that right now!</span>")
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, "<span class='notice'>Alt-click to recolor it.</span>")
/obj/item/weapon/shield/riot/tele /obj/item/weapon/shield/riot/tele
name = "telescopic shield" name = "telescopic shield"
@@ -226,4 +256,4 @@
H.update_inv_r_hand() H.update_inv_r_hand()
add_fingerprint(user) add_fingerprint(user)
return return

View File

@@ -108,7 +108,7 @@
attack_edge = 1 attack_edge = 1
attacktext = list("slashed") 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 // 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) /mob/living/simple_mob/humanoid/merc/melee/sword/attackby(var/obj/item/O as obj, var/mob/user as mob)

View File

@@ -90,3 +90,4 @@
/mob/proc/update_targeted() /mob/proc/update_targeted()
return return

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "RB" = (/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/holofloor/tiled,/area/holodeck/source_thunderdomecourt)
(1,1,1) = {" (1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -2520,4 +2520,3 @@ aaaaRfababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"} "}