This commit is contained in:
Dmitry
2025-02-20 14:26:02 +03:00
159 changed files with 2163 additions and 1081 deletions
+9
View File
@@ -0,0 +1,9 @@
/datum/map_template/shuttle/feeder
shuttle_id = "feeder_ship"
port_id = "feeder_ship"
suffix = "default"
name = "Mysterious Shuttle"
can_be_bought = FALSE
/area/shuttle/feeder_shuttle
name = "Mysterious Shuttle"
@@ -1,10 +1,10 @@
/datum/feeders_den_goodie
/// What is the name of the goodie we want to buy?
var/name
var/name
/// How much credits does this cost to buy?
var/credit_cost = 0
/// How much stock of this can be bought? If this is null, infinite can be bought
var/initial_stock
var/initial_stock
/// What is the path of the item to dispense?
var/item_to_dispense
@@ -13,11 +13,6 @@
credit_cost = 100
item_to_dispense = /obj/item/vending_refill/mealdor
/datum/feeders_den_goodie/gizmo
name = "Science Tool"
credit_cost = 120
item_to_dispense = /obj/item/abductor/gizmo/feeder
/datum/feeders_den_goodie/nutripump_turbo
name = "Nutri-Pump TURBO Autosurgeon"
credit_cost = 150
@@ -85,4 +80,9 @@
name = "Livestock Implant"
credit_cost = 250
item_to_dispense = /obj/item/implantcase/docile/livestock
initial_stock = 5
/datum/feeders_den_goodie/space_suit
name = "Boxed Space Suit and Helmet"
credit_cost = 300
item_to_dispense = /obj/item/storage/box/syndie_kit/space
initial_stock = 2
+9
View File
@@ -26,6 +26,11 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/command/bridge, /area/mainten
var/fullness = FULLNESS_LEVEL_HALF_FULL
var/fullness_reduction_timer = 0 // When was the last time they emoted to reduce their fullness
/// How many mobs have been digested by this mob?
var/prey_digested = 0
/// How many humanoid mobs have been digested by this mob?
var/human_prey_digested = 0
/**
* Adjusts the fatness level of the parent mob.
*
@@ -274,6 +279,10 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/command/bridge, /area/mainten
return needed_fatness
/mob/living/carbon/proc/applyFatnessDamage(amount)
if(!client?.prefs?.weight_gain_weapons) // If we can't fatten them through weapons, apply stamina damage
adjustStaminaLoss(amount)
return TRUE
var/fat_to_add = ((amount * CONFIG_GET(number/damage_multiplier)) * FAT_DAMAGE_TO_FATNESS)
adjust_fatness(fat_to_add, FATTENING_TYPE_WEAPON)
return fat_to_add
+36 -13
View File
@@ -2,13 +2,24 @@
var/food_per_feeding = 5
var/food_fed = /datum/reagent/consumable/nutriment
/mob/living/simple_animal/hostile/feed/CanAttack(atom/the_target)
var/mob/living/carbon/target = the_target
if(!istype(the_target)|| !check_target_prefs(target))
return FALSE
return ..()
/// Called when seeing if a target can be attacked. See if the target has the pref on and return accordingly.
/mob/living/simple_animal/hostile/proc/check_target_prefs(mob/living/carbon/target)
return target?.client?.prefs?.weight_gain_weapons
/mob/living/simple_animal/hostile/feed/AttackingTarget()
. = ..()
var/mob/living/carbon/L = target
if(L.client?.prefs?.weight_gain_weapons)
if(L.reagents)
if(!L.is_mouth_covered(head_only = 1))
L.reagents.add_reagent(food_fed, food_per_feeding)
if(!istype(L) || !L.reagents || !L.is_mouth_covered(head_only = 1))
return FALSE
L.reagents.add_reagent(food_fed, food_per_feeding)
/mob/living/simple_animal/hostile/feed/chocolate_slime
name = "Chocolate slime"
@@ -83,13 +94,13 @@
/obj/item/projectile/beam/fattening/icecream/on_hit(atom/target, blocked)
. = ..()
var/mob/living/carbon/L = target
if(L.client?.prefs?.weight_gain_weapons)
if(L.reagents)
if(!L.is_mouth_covered(head_only = 1))
L.reagents.add_reagent(food_fed, food_per_feeding)
if(HAS_TRAIT(L, TRAIT_VORACIOUS))
fullness_add = fullness_add * 0.67
L.fullness += (fullness_add)
if(!istype(L) || !L.reagents || L.is_mouth_covered(head_only = 1))
return FALSE
L.reagents.add_reagent(food_fed, food_per_feeding)
if(HAS_TRAIT(L, TRAIT_VORACIOUS))
fullness_add = fullness_add * 0.67
L.fullness += (fullness_add)
@@ -137,5 +148,17 @@
/mob/living/simple_animal/hostile/fatten/AttackingTarget()
. = ..()
var/mob/living/carbon/L = target
if(L.client?.prefs?.weight_gain_magic)
L.adjust_fatness(fat_per_hit)
if(!istype(L))
return FALSE
L.adjust_fatness(fat_per_hit, FATTENING_TYPE_MAGIC)
/mob/living/simple_animal/hostile/fatten/CanAttack(atom/the_target)
var/mob/living/carbon/target = the_target
if(!istype(the_target)|| !check_target_prefs(target))
return FALSE
return ..()
/mob/living/simple_animal/hostile/fatten/check_target_prefs(mob/living/carbon/target)
return target?.client?.prefs?.weight_gain_magic
@@ -3,6 +3,7 @@
/obj/item/grenade/chem_grenade/lipoifier_strong
name = "lipoifier grenade"
desc = "For when you want everyone in the room to gain a couple hundred pounds."
stage = 3
/obj/item/grenade/chem_grenade/lipoifier_strong/Initialize(mapload)
. = ..()
@@ -21,6 +22,7 @@
/obj/item/grenade/chem_grenade/lipoifier_weak
name = "lipoifier grenade"
desc = "For when you want everyone in the room to gain a couple dozen pounds."
stage = 3
/obj/item/grenade/chem_grenade/lipoifier_weak/Initialize(mapload)
. = ..()
@@ -0,0 +1,11 @@
/obj/item/melee/baton/stunsword/fattening
name = "fattening stunsword"
desc = "functions the same as it's standard counterpart, but fattens targets when used aggressively."
force = 20
damtype = FAT
/obj/item/melee/baton/fattening
name = "fattening stunbaton"
desc = "functions the same as it's standard counterpart, but fattens targets when used aggressively."
force = 20
damtype = FAT
+64 -51
View File
@@ -17,19 +17,20 @@
"cw" = (/obj/machinery/light{dir = 8},/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"cx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"cy" = (/obj/structure/table/reinforced,/obj/item/reagent_containers/food/snacks/store/cake/chocolate,/obj/machinery/light/small{dir = 1},/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"cR" = (/obj/machinery/door/airlock/abductor,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"cV" = (/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"cR" = (/obj/effect/turf_decal{dir = 4},/obj/structure/fans/tiny,/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"cW" = (/obj/structure/cable{icon_state = "0-4"},/obj/machinery/power/apc{name = "Base Power Controller"; pixel_x = -28},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"dd" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"de" = (/obj/structure/sign/poster/contraband/donut_corp{pixel_y = 32},/turf/open/floor/carpet/black,/area/ruin/space/has_grav/feedersden)
"dj" = (/obj/structure/sink{dir = 4; pixel_x = 12},/obj/structure/mirror{pixel_x = 24},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "borderfloor"},/obj/effect/turf_decal/loading_area{dir = 2; icon_state = "steel_decals9"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"dl" = (/obj/structure/rack/shelf,/obj/item/stack/sheet/glass/fifty,/obj/item/stack/sheet/metal/fifty,/obj/item/stack/sheet/mineral/titanium/fifty{pixel_x = -4; pixel_y = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"dr" = (/obj/machinery/door/airlock/external,/obj/effect/turf_decal{dir = 8},/obj/effect/turf_decal{dir = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"dv" = (/obj/machinery/chem_dispenser/mutagensaltpeter,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"dz" = (/obj/structure/rack,/obj/item/mop/advanced,/obj/item/storage/bag/trash,/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown,/obj/item/storage/box/lights/mixed,/obj/structure/window/reinforced/tinted{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"dz" = (/obj/structure/rack,/obj/item/mop/advanced,/obj/item/storage/bag/trash,/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown,/obj/item/storage/box/lights/mixed,/obj/structure/window/reinforced/tinted{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"dA" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 4; light_color = "#d8b1b1"},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"dC" = (/obj/machinery/deepfryer,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"dG" = (/obj/structure/flora/ausbushes/grassybush,/turf/open/floor/plating/asteroid,/area/ruin/space/has_grav/feedersden)
"dH" = (/obj/machinery/door/airlock/public/glass{name = "Cell 2"; id_tag = "feederden_cell2"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"dL" = (/obj/structure/lattice,/turf/closed/mineral/random,/area/ruin/space/has_grav/feedersden)
"eb" = (/obj/structure/lattice,/turf/template_noop,/area/ruin/unpowered/no_grav)
"ef" = (/obj/structure/table/wood,/obj/item/storage/pill_bottle/breast_enlargement{pixel_y = 5; pixel_x = -5},/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"eg" = (/obj/structure/reagent_dispensers/keg/lipoifier,/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
@@ -50,7 +51,7 @@
"fS" = (/obj/structure/table/wood,/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{dir = 1},/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"ga" = (/obj/item/trash/boritos,/obj/structure/sign/poster/contraband/donut_corp{pixel_y = 32},/turf/open/floor/carpet/black,/area/ruin/space/has_grav/feedersden)
"gi" = (/obj/structure/sink{dir = 4; pixel_x = 11},/obj/structure/mirror{pixel_x = 24},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"gk" = (/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 4},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"gk" = (/obj/effect/turf_decal,/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"gn" = (/obj/item/trash/can,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"},/obj/effect/turf_decal/stripes{icon_state = "steel_grid"; dir = 5},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"gq" = (/obj/vehicle/ridden/wheelchair,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"gu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/loading_area{icon_state = "steel_decals_central6"},/obj/effect/turf_decal/stripes/white/line{dir = 4; icon_state = "steel_decals3"},/obj/effect/turf_decal/stripes/white/line{dir = 2; icon_state = "steel_decals3"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals3"},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals3"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
@@ -63,7 +64,8 @@
"hl" = (/obj/item/storage/toolbox/syndicate,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"hT" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"ie" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/seed_extractor,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"ik" = (/obj/structure/ore_box,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"ik" = (/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/machinery/quantumpad/supply_only{map_pad_id = "denbase"; map_pad_link_id = "lavalandbase"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"iu" = (/obj/structure/curtain,/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"iv" = (/obj/structure/chair/sofa/corner,/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"iN" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/processor,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"iO" = (/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
@@ -72,7 +74,7 @@
"jh" = (/obj/structure/table,/obj/machinery/disposal/bin{pixel_y = -10},/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"jI" = (/turf/open/floor/plating/asteroid,/area/ruin/space/has_grav/feedersden)
"jO" = (/obj/effect/turf_decal/tile/red{dir = 1},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"jS" = (/obj/structure/rack/shelf,/obj/item/electropack/shockcollar,/obj/item/clothing/neck/petcollar,/obj/item/melee/baton/stunsword,/obj/item/restraints/handcuffs,/obj/item/restraints/handcuffs/cable/zipties,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/obj/item/melee/baton/stunsword,/obj/item/clothing/neck/petcollar/calorite,/obj/item/clothing/mask/cowmask/gag,/obj/item/clothing/mask/cowmask/gag,/obj/item/clothing/mask/pig/gag,/obj/item/clothing/mask/pig/gag,/obj/item/stock_parts/cell/high,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"jS" = (/obj/structure/rack/shelf,/obj/item/electropack/shockcollar,/obj/item/clothing/neck/petcollar,/obj/item/melee/baton/stunsword/fattening,/obj/item/restraints/handcuffs,/obj/item/restraints/handcuffs/cable/zipties,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/obj/item/melee/baton/stunsword/fattening,/obj/item/clothing/neck/petcollar/calorite,/obj/item/clothing/mask/cowmask/gag,/obj/item/clothing/mask/cowmask/gag,/obj/item/clothing/mask/pig/gag,/obj/item/clothing/mask/pig/gag,/obj/item/stock_parts/cell/high,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"kd" = (/obj/structure/table,/obj/item/kitchen/rollingpin,/obj/item/kitchen/knife/butcher,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"kg" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/shutters/old/preopen{id = "feederden_south"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"ko" = (/obj/machinery/space_heater,/obj/machinery/airalarm/syndicate{pixel_y = 32},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
@@ -85,7 +87,7 @@
"lQ" = (/obj/structure/chair/sofa/right,/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"lR" = (/obj/machinery/iv_drip/feeding_tube,/obj/machinery/light/small{dir = 1},/turf/open/floor/carpet/black,/area/ruin/space/has_grav/feedersden)
"ma" = (/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"mf" = (/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/machinery/quantumpad/supply_only{map_pad_id = "denbase"; map_pad_link_id = "lavalandbase"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"mf" = (/obj/effect/turf_decal/tile/brown{dir = 8},/obj/effect/turf_decal/tile/brown{dir = 1},/obj/machinery/computer/shuttle/syndicate{name = "shuttle terminal"; dir = 4; shuttleId = "feeder_ship"; possible_destinations = "feeder_home;whiteship_home;feeder_custom"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"mm" = (/obj/machinery/vending/mealdor{free = 1},/obj/machinery/light{dir = 4},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"mD" = (/obj/structure/closet/emcloset/anchored,/obj/effect/turf_decal/stripes/white/line{dir = 2},/obj/effect/turf_decal/stripes/white/line{dir = 1; icon_state = "steel_decals_central4"},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"mJ" = (/obj/structure/chair/sofa/corner{dir = 4},/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
@@ -93,12 +95,11 @@
"nd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "steel_decals9"},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 9; icon_state = "steel_decals7"},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"nr" = (/turf/closed/wall/r_wall/syndicate,/area/ruin/space/has_grav/feedersden)
"nu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/door/airlock/public/glass{name = "Cell 1"; id_tag = "feederden_cell1"},/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"nw" = (/obj/machinery/light/small{dir = 1},/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 1},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"nw" = (/obj/machinery/light/small{dir = 1},/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 1},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"nA" = (/obj/machinery/atmospherics/pipe/manifold/supply,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "steel_decals9"},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 9; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"nE" = (/obj/structure/flora/junglebush,/turf/open/floor/plating/asteroid,/area/ruin/space/has_grav/feedersden)
"nK" = (/obj/machinery/abductor/feeder_console,/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 9},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"nQ" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate{pixel_x = -10},/obj/item/clothing/head/helmet/space/syndicate{pixel_x = -10},/obj/item/clothing/mask/gas{pixel_x = -10; pixel_y = 3},/obj/item/clothing/suit/space/syndicate/orange{pixel_x = 8; name = "extra stretchy space suit"},/obj/item/clothing/head/helmet/space/syndicate/orange{pixel_x = 10},/obj/item/clothing/mask/gas{pixel_x = 10; pixel_y = 3},/obj/item/tank/jetpack/carbondioxide/eva,/obj/effect/turf_decal/stripes/white/line{dir = 9},/obj/effect/turf_decal/stripes/white/line{dir = 1; icon_state = "steel_decals_central4"},/obj/effect/turf_decal/tile/neutral{dir = 1},/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 8},/obj/effect/turf_decal/tile/neutral,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"nW" = (/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"nW" = (/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal{dir = 1},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"oF" = (/obj/structure/chair/office/dark{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"oH" = (/obj/structure/lattice/catwalk,/turf/template_noop,/area/ruin/space/has_grav/feedersden)
"oK" = (/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
@@ -110,14 +111,14 @@
"ph" = (/obj/machinery/vending/gato{free = 1},/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"pl" = (/obj/machinery/porta_turret/fattening,/obj/structure/lattice/catwalk,/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"pO" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/snacks/meat/bacon,/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"qh" = (/obj/machinery/food_cart,/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"qh" = (/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/structure/ore_box,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"qi" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"qq" = (/obj/machinery/atmospherics/pipe/manifold/supply,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 6},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"qt" = (/obj/effect/mob_spawn/human/feeders_den/fanatic{dir = 8},/obj/item/flashlight/seclite,/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"qC" = (/obj/structure/falsewall/plastitanium,/obj/structure/fans/tiny/invisible,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"qD" = (/obj/machinery/computer/security/telescreen/entertainment,/turf/closed/wall/r_wall/syndicate,/area/ruin/space/has_grav/feedersden)
"qF" = (/obj/structure/lattice,/turf/closed/mineral/random,/area/ruin/unpowered/no_grav)
"qM" = (/obj/structure/closet/crate/secure/weapon,/obj/item/clothing/glasses/hud/health/night,/obj/item/kitchen/knife/combat,/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/effect/turf_decal/tile/brown,/obj/item/gun/energy/fatoray,/obj/item/book/granter/spell/fattening,/obj/item/gun/energy/laser/alter_ray/gainrate,/obj/item/cookiesynth,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"qM" = (/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/obj/effect/turf_decal/stripes/line{dir = 6},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"rf" = (/obj/effect/turf_decal/stripes/white/line{dir = 8; icon_state = "steel_decals4"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"ri" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"rj" = (/obj/machinery/iv_drip/feeding_tube,/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
@@ -126,10 +127,13 @@
"rt" = (/obj/structure/chair/sofa,/obj/item/reagent_containers/food/snacks/pizzaslice/margherita,/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"rB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 9; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"rE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/vending/hydroseeds{slogan_delay = 700; free = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"rH" = (/obj/effect/turf_decal{dir = 1},/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"rJ" = (/obj/machinery/atmospherics/pipe/manifold/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 10},/obj/structure/cable{icon_state = "2-4"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"rO" = (/obj/machinery/light/small{brightness = 2; dir = 8},/obj/structure/rack/shelf,/obj/item/reagent_containers/rag/towel/syndicate,/obj/item/reagent_containers/rag/towel/syndicate,/obj/item/soap/syndie,/obj/item/reagent_containers/rag/towel/syndicate,/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "borderfloor"},/turf/open/floor/plasteel/yellowsiding,/area/ruin/space/has_grav/feedersden)
"rS" = (/obj/structure/table,/obj/item/reagent_containers/glass/beaker/fizulphite{pixel_x = -8},/obj/item/reagent_containers/glass/beaker/lipoifier{name = "lipoifier beaker"; pixel_y = -5},/obj/item/clothing/glasses/science{pixel_y = 8},/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"rW" = (/turf/open/floor/wood{icon_state = "wood-broken7"},/area/ruin/space/has_grav/feedersden)
"sa" = (/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 10; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"sn" = (/obj/structure/lattice/catwalk,/obj/machinery/porta_turret/fattening,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"sq" = (/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"su" = (/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/obj/structure/rack/shelf,/obj/item/storage/box/ingredients/wildcard,/obj/item/storage/box/ingredients/wildcard,/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"sC" = (/obj/machinery/vending/hydronutrients{free = 1},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
@@ -140,7 +144,7 @@
"tb" = (/obj/structure/table/wood,/obj/machinery/chem_dispenser/drinks/fullupgrade{dir = 1},/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"tf" = (/obj/item/trash/plate{pixel_x = -5; pixel_y = 4},/turf/open/floor/wood{icon_state = "wood-broken7"},/area/ruin/space/has_grav/feedersden)
"tj" = (/obj/item/book/manual/blubbery_bartender{pixel_y = -4; pixel_x = -4},/obj/item/book/manual/fatty_chems{pixel_y = -8; pixel_x = -8},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"ty" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{brightness = 2; dir = 8},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"ty" = (/obj/effect/turf_decal/stripes/white/line{dir = 8; icon_state = "steel_decals_central4"},/turf/open/floor/plasteel/yellowsiding{dir = 8},/area/ruin/space/has_grav/feedersden)
"tB" = (/obj/effect/turf_decal/loading_area{icon_state = "steel_decals_central7"},/obj/effect/turf_decal/loading_area{dir = 9; icon_state = "steel_decals4"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"tE" = (/obj/structure/table/wood,/obj/item/reagent_containers/food/drinks/soda_cans/cola,/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb{pixel_y = -7; pixel_x = -5},/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"tH" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes/white/line{dir = 2; icon_state = "steel_decals_central4"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
@@ -156,14 +160,16 @@
"uF" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high/plus,/obj/structure/cable{icon_state = "1-2"},/obj/item/gps,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"uO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"uX" = (/obj/machinery/computer/security/telescreen/entertainment,/obj/structure/disposalpipe/segment,/turf/closed/wall/r_wall/syndicate,/area/ruin/space/has_grav/feedersden)
"vf" = (/obj/machinery/button/door{desc = "A remote control-switch for secure storage."; id = "feederden_hangar"; name = "Syndicate Hangar Blast Doors"; req_access_txt = "11"; pixel_y = -24},/obj/effect/turf_decal/caution{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"vk" = (/obj/item/trash/candy{pixel_x = 10; pixel_y = -3},/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"vp" = (/obj/effect/turf_decal/stripes{icon_state = "trim"},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"vp" = (/obj/machinery/abductor/feeder_console,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"vt" = (/obj/effect/turf_decal/loading_area{dir = 2; icon_state = "steel_decals9"},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "steel_decals9"},/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "steel_decals9"},/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "steel_decals9"},/obj/effect/turf_decal{dir = 4},/obj/effect/turf_decal{dir = 8},/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"vv" = (/obj/structure/table/wood,/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"vw" = (/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/bar{dir = 1},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"vH" = (/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"vL" = (/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals1"},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"vY" = (/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/bar{dir = 1},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"wk" = (/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/obj/effect/turf_decal/stripes/line{dir = 10},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"wn" = (/obj/machinery/atmospherics/components/unary/vent_pump/on,/obj/structure/rack/shelf,/obj/item/storage/box/beakers/bluespace,/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"ww" = (/obj/structure/flora/rock,/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered/no_grav)
"wy" = (/obj/machinery/button/door{id = "feederden_cell1"; name = "Cell 1 Control"; normaldoorcontrol = 1; specialfunctions = 4; pixel_y = 32; pixel_x = -8},/obj/machinery/button/door{id = "feederden_cell2"; name = "Cell 2 Control"; normaldoorcontrol = 1; specialfunctions = 4; pixel_y = 32; pixel_x = 8},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 10; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
@@ -179,7 +185,7 @@
"yb" = (/obj/structure/sign/poster/contraband/eat{pixel_y = 32},/obj/structure/chair/sofachair,/obj/machinery/light/small{dir = 1},/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"yg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"yk" = (/obj/effect/turf_decal/stripes/white/line{dir = 1; icon_state = "steel_decals_central7"},/obj/effect/turf_decal/stripes/white/line{dir = 2; icon_state = "steel_decals3"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals3"},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals3"},/obj/effect/turf_decal/stripes/white/line{dir = 4; icon_state = "steel_decals3"},/obj/machinery/light{light_color = "#cee5d2"},/obj/item/storage/bag/plants,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"yq" = (/obj/structure/ore_box,/obj/effect/turf_decal/tile/brown,/obj/effect/turf_decal/tile/brown{dir = 8},/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/obj/item/stack/sheet/mineral/calorite,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"yq" = (/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/obj/effect/turf_decal/stripes/line{dir = 5},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"zc" = (/obj/effect/turf_decal/loading_area{icon_state = "steel_decals6"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"zg" = (/obj/machinery/airalarm/syndicate{pixel_y = 32},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"zl" = (/obj/machinery/autolathe/hacked,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
@@ -195,6 +201,7 @@
"zS" = (/obj/structure/chair/sofa/right{dir = 4},/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"zY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/spawner/structure/window/plastitanium,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Aa" = (/obj/structure/fans/tiny,/obj/effect/turf_decal{dir = 4},/obj/effect/turf_decal{dir = 8},/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Ae" = (/obj/machinery/shower{dir = 4},/turf/open/pool,/area/ruin/space/has_grav/feedersden)
"Ag" = (/obj/machinery/vending/boozeomat/all_access,/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"Aj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/stripes/white/line{dir = 9; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"AD" = (/obj/structure/table/wood,/obj/item/storage/box/drinkingglasses{pixel_y = 10; pixel_x = 4},/obj/item/reagent_containers/glass/beaker/bluespace{pixel_y = 10; pixel_x = -10},/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
@@ -205,26 +212,29 @@
"Bz" = (/obj/structure/flora/rock/pile,/turf/open/floor/plating/asteroid,/area/ruin/space/has_grav/feedersden)
"BD" = (/obj/machinery/atmospherics/pipe/manifold/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"BP" = (/obj/structure/rack/shelf,/obj/item/vending_refill/kink,/obj/item/vending_refill/mealdor,/obj/item/vending_refill/mealdor,/obj/item/vending_refill/mealdor,/obj/item/vending_refill/mealdor,/obj/item/vending_refill/cola,/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"BV" = (/obj/effect/turf_decal/stripes{icon_state = "trim"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"BV" = (/obj/effect/turf_decal/stripes{icon_state = "trim"},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"Cc" = (/obj/structure/chair/sofa/left,/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"Cd" = (/obj/structure/lattice/catwalk,/turf/open/floor/plating,/area/ruin/unpowered/no_grav)
"Cn" = (/obj/structure/lattice,/turf/closed/wall/r_wall/syndicate/nodiagonal,/area/ruin/space/has_grav/feedersden)
"Cu" = (/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/obj/effect/turf_decal/stripes/red/line{dir = 4},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"CH" = (/obj/item/reagent_containers/food/snacks/pizzaslice/margherita,/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"CT" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "borderfloor"},/turf/open/floor/plasteel/yellowsiding,/area/ruin/space/has_grav/feedersden)
"Dc" = (/turf/closed/wall/r_wall/syndicate/nodiagonal,/area/ruin/space/has_grav/feedersden)
"Dq" = (/obj/structure/closet/crate/secure/weapon,/obj/item/clothing/glasses/hud/health/night,/obj/item/kitchen/knife/combat,/obj/effect/turf_decal/tile/brown,/obj/item/gun/energy/fatoray,/obj/item/book/granter/spell/fattening,/obj/item/gun/energy/laser/alter_ray/gainrate,/obj/item/cookiesynth,/obj/effect/turf_decal/tile/brown{dir = 4},/obj/structure/window/reinforced/tinted{dir = 4},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Ds" = (/turf/closed/mineral/random,/area/template_noop)
"Dx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/bar{dir = 1},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"DB" = (/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"DK" = (/obj/structure/closet/secure_closet/freezer/kitchen{req_access = null},/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/flour,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/milk,/obj/item/reagent_containers/food/condiment/rice,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"DM" = (/obj/machinery/power/rtg/advanced/fullupgrade,/obj/structure/cable,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"DO" = (/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"DU" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Ef" = (/obj/machinery/light{dir = 1},/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 1},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"Eh" = (/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Ek" = (/obj/structure/cable,/obj/machinery/power/rtg/advanced/fullupgrade,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"DM" = (/obj/machinery/power/rtg/advanced/fullupgrade,/obj/structure/cable,/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"DO" = (/obj/effect/turf_decal/tile/brown{dir = 1},/obj/effect/turf_decal/tile/brown{dir = 8},/obj/machinery/food_cart,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"DU" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "2-8"},/obj/effect/turf_decal/stripes/line,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Eh" = (/obj/structure/cable{icon_state = "1-4"},/obj/structure/cable{icon_state = "1-2"},/obj/effect/turf_decal/stripes/line,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Ek" = (/obj/structure/cable,/obj/machinery/power/rtg/advanced/fullupgrade,/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"En" = (/obj/item/reagent_containers/food/snacks/chocolatebar,/turf/open/floor/carpet/black,/area/ruin/space/has_grav/feedersden)
"Eq" = (/obj/machinery/shower{dir = 8},/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"Eq" = (/obj/effect/turf_decal/loading_area{dir = 2; icon_state = "steel_decals9"},/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "steel_decals9"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Es" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/closed/wall/r_wall/syndicate,/area/ruin/space/has_grav/feedersden)
"Ex" = (/obj/item/trash/boritos,/turf/open/floor/wood,/area/ruin/space/has_grav/feedersden)
"EB" = (/obj/structure/pool/ladder{dir = 8},/turf/open/pool,/area/ruin/space/has_grav/feedersden)
"EH" = (/obj/structure/reagent_dispensers/keg/milk,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"EU" = (/obj/structure/table/wood,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/item/paper/fluff/ruins/feeder_den/report4,/obj/item/pen/red,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"EW" = (/obj/machinery/porta_turret/fattening,/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/obj/structure/lattice/catwalk,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
@@ -264,12 +274,11 @@
"LN" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/enzyme{layer = 5; pixel_x = -5; pixel_y = 6},/obj/item/reagent_containers/food/condiment/enzyme{layer = 5; pixel_x = 1; pixel_y = 6},/obj/item/reagent_containers/food/condiment/peppermill{pixel_x = 3},/obj/item/reagent_containers/food/condiment/saltshaker{pixel_x = 9},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"LT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"},/obj/effect/turf_decal/stripes{icon_state = "steel_grid"; dir = 5},/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "steel_decals9"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"LV" = (/obj/machinery/adipoelectric_transformer,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Ma" = (/obj/structure/sink{dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -24},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"Ma" = (/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "borderfloor"},/turf/open/floor/plasteel/yellowsiding/corner{dir = 8},/area/ruin/space/has_grav/feedersden)
"Md" = (/obj/structure/table,/obj/machinery/microwave,/obj/machinery/button/door{name = "Window Shutters South"; id = "feederden_south"; pixel_y = -25},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Mi" = (/obj/structure/disposalpipe/segment{dir = 10},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Mq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 10; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"MV" = (/obj/item/trash/boritos,/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"MW" = (/obj/machinery/door/poddoor/shutters/old/preopen{id = "feederden_south"},/obj/effect/spawner/structure/window/plastitanium,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"MY" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/snacks/grown/corn,/obj/item/reagent_containers/food/condiment/sugar,/obj/item/reagent_containers/food/condiment/sugar,/obj/item/reagent_containers/food/condiment/sugar,/obj/item/reagent_containers/food/condiment/sugar,/obj/item/reagent_containers/food/snacks/spaghetti,/obj/item/reagent_containers/food/snacks/spaghetti,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Ng" = (/obj/structure/closet/wardrobe/mixed,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Nk" = (/obj/effect/turf_decal{dir = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
@@ -279,14 +288,16 @@
"Nz" = (/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"NA" = (/obj/structure/sign/poster/contraband/donut_corp{pixel_x = -32},/obj/structure/scale,/turf/open/floor/mineral/basaltstone_floor,/area/ruin/space/has_grav/feedersden)
"NB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/stripes{icon_state = "steel_grid"; dir = 10},/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "steel_decals9"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"NJ" = (/obj/structure/curtain,/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "borderfloor"},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"NJ" = (/obj/structure/curtain,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"NR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "steel_decals9"},/obj/effect/turf_decal/stripes/white/line{dir = 9; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"NU" = (/obj/machinery/abductor/pad/feeder,/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 8},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"NX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/structure/railing,/turf/open/floor/plasteel/stairs/left{dir = 4},/area/ruin/space/has_grav/feedersden)
"Oc" = (/turf/open/floor/wood{icon_state = "wood-broken"},/area/ruin/space/has_grav/feedersden)
"Ow" = (/obj/effect/turf_decal/sand/plating,/turf/open/floor/plating/asteroid,/area/ruin/space/has_grav/feedersden)
"OE" = (/obj/item/trash/can,/obj/effect/mob_spawn/human/feeders_den/victim{dir = 8},/turf/open/floor/carpet/black,/area/ruin/space/has_grav/feedersden)
"OH" = (/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/obj/effect/turf_decal/stripes/line{dir = 9},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"Pg" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/medkit_cabinet{pixel_y = 27},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Pk" = (/obj/effect/turf_decal{dir = 1},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"Pv" = (/obj/effect/turf_decal/tile/brown{dir = 8},/obj/effect/turf_decal/tile/brown,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"PI" = (/obj/structure/closet/secure_closet/freezer/meat,/obj/item/reagent_containers/food/snacks/meat/slab/monkey,/obj/item/reagent_containers/food/snacks/meat/slab/monkey,/obj/item/reagent_containers/food/snacks/meat/slab/monkey,/obj/item/reagent_containers/food/snacks/meat/slab/monkey,/obj/item/reagent_containers/food/snacks/meat/slab/spider,/obj/item/reagent_containers/food/snacks/meat/slab/spider,/obj/structure/window/reinforced/tinted{dir = 8},/turf/open/floor/plasteel/freezer,/area/ruin/space/has_grav/feedersden)
"PL" = (/obj/structure/sign/poster/contraband/eat{pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/structure/scale,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"PV" = (/obj/item/paper/fluff/ruins/feeder_den/hidden,/turf/open/floor/plating{icon_state = "panelscorched"},/area/ruin/space/has_grav/feedersden)
@@ -294,17 +305,17 @@
"QK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"},/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "steel_decals9"},/obj/effect/turf_decal/stripes/white/line{dir = 5; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 10; icon_state = "steel_decals7"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"QW" = (/obj/structure/table/wood,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"Ra" = (/obj/machinery/door/airlock/hatch{name = "airlock"; req_access_txt = "150"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Rc" = (/obj/machinery/computer/camera_advanced/abductor/feeder,/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 10},/obj/item/paper/fluff/ruins/feeder_den/tool_warning,/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"Rc" = (/obj/docking_port/stationary{dir = 8; height = 7; name = "Outpost"; width = 7; roundstart_template = /datum/map_template/shuttle/feeder; shuttle_id = "feeder_home"; area_type = /area/ruin/space/has_grav/feedersden; dwidth = 3},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Rh" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Rp" = (/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"Rr" = (/obj/structure/table/abductor,/obj/item/abductor/gizmo/feeder,/obj/item/abductor/gizmo/feeder,/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 6},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"Ru" = (/obj/machinery/door/poddoor/shutters/old/preopen{id = "feederden_north"},/obj/effect/spawner/structure/window/plastitanium,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Rp" = (/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 4},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "drain"; name = "drain"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"Ru" = (/obj/effect/spawner/structure/window/reinforced,/obj/machinery/door/poddoor/shutters/old/preopen{id = "feederden_north"},/obj/effect/turf_decal/tile/red,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Rw" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/plating/airless,/area/ruin/space/has_grav/feedersden)
"Rz" = (/obj/structure/railing{dir = 1},/turf/open/floor/plasteel/stairs/left{dir = 8},/area/ruin/space/has_grav/feedersden)
"RC" = (/obj/machinery/atmospherics/components/unary/vent_scrubber/on{dir = 8; piping_layer = 3; pixel_x = 5; pixel_y = 5},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"RV" = (/obj/structure/toilet{dir = 8},/obj/effect/turf_decal/loading_area{dir = 2; icon_state = "steel_decals9"},/obj/effect/turf_decal/loading_area{dir = 4; icon_state = "steel_decals9"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Sh" = (/obj/machinery/telecomms/relay/preset/ruskie{use_power = 0},/obj/item/multitool{pixel_x = 8},/turf/open/floor/circuit/red,/area/ruin/space/has_grav/feedersden)
"Sm" = (/obj/structure/cable{icon_state = "1-8"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Sp" = (/obj/structure/sign/warning/radiation{pixel_y = -31},/obj/structure/cable,/obj/machinery/power/rtg/advanced/fullupgrade,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Sp" = (/obj/structure/sign/warning/radiation{pixel_y = -31},/obj/structure/cable,/obj/machinery/power/rtg/advanced/fullupgrade,/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"Ss" = (/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/bar{dir = 1},/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"Sy" = (/obj/structure/table,/obj/item/reagent_containers/food/condiment/sugar{pixel_x = -7},/obj/item/reagent_containers/glass/beaker{pixel_x = 9},/obj/item/reagent_containers/glass/beaker/bluespace{pixel_y = 3},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"SX" = (/obj/structure/filingcabinet,/obj/item/paper/fluff/ruins/feeder_den/report1,/obj/item/paper/fluff/ruins/feeder_den/report2,/obj/item/paper/fluff/ruins/feeder_den/report3,/obj/structure/fluff/paper,/obj/item/paper,/obj/item/paper,/obj/item/paper,/obj/item/paper,/obj/item/paper,/obj/item/paper,/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/obj/effect/turf_decal/tile/red,/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
@@ -321,10 +332,11 @@
"Ue" = (/obj/machinery/atmospherics/pipe/manifold/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "1-4"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"UB" = (/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/bar{dir = 1},/obj/structure/disposalpipe/segment,/obj/effect/turf_decal/stripes{icon_state = "steel_grid"; dir = 5},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"UE" = (/turf/open/floor/carpet/black,/area/ruin/space/has_grav/feedersden)
"UJ" = (/obj/structure/cable{icon_state = "2-8"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"UJ" = (/obj/structure/cable{icon_state = "2-8"},/obj/effect/turf_decal/stripes/line,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"UZ" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/airless,/area/ruin/space/has_grav/feedersden)
"Ve" = (/obj/structure/flora/junglebush,/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered/no_grav)
"Vx" = (/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 1},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Vv" = (/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/obj/effect/turf_decal/stripes/box,/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Vx" = (/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 1},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"VF" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/bedsheet,/obj/effect/spawner/lootdrop/bedsheet,/obj/effect/spawner/lootdrop/bedsheet,/obj/effect/spawner/lootdrop/bedsheet,/obj/item/toy/plush/random,/obj/item/toy/plush/random,/obj/item/toy/plush/random,/obj/machinery/light{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"VW" = (/obj/effect/turf_decal/stripes/white/line{dir = 1; icon_state = "steel_decals_central4"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"Wr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/stripes{icon_state = "steel_decals5"; dir = 1},/obj/effect/turf_decal/stripes/white/line{dir = 6; icon_state = "steel_decals7"},/obj/effect/turf_decal/stripes/white/line{dir = 9; icon_state = "steel_decals7"},/obj/structure/cable{icon_state = "4-8"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
@@ -332,7 +344,6 @@
"Wt" = (/obj/structure/lattice/catwalk,/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"; pixel_x = 12; pixel_y = -10},/turf/template_noop,/area/ruin/space/has_grav/feedersden)
"WH" = (/obj/item/trash/plate{pixel_x = -4; pixel_y = 10},/obj/item/trash/plate{pixel_x = -5; pixel_y = -1},/obj/item/trash/plate{pixel_y = 4},/turf/open/floor/carpet/orange,/area/ruin/space/has_grav/feedersden)
"WJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/effect/turf_decal/tile/bar,/obj/effect/turf_decal/tile/neutral{dir = 4},/obj/effect/turf_decal/tile/neutral{dir = 1},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
"WK" = (/obj/structure/table/abductor,/obj/item/paper/fluff/ruins/feeder_den/tool_warning,/obj/effect/turf_decal/stripes{icon_state = "trim"; dir = 5},/turf/open/floor/plating/abductor,/area/ruin/space/has_grav/feedersden)
"WN" = (/obj/structure/rack/shelf,/obj/item/reagent_containers/food/snacks/syndicake,/obj/item/reagent_containers/food/snacks/syndicake,/obj/item/reagent_containers/food/snacks/chips,/obj/item/reagent_containers/food/snacks/chips,/obj/item/reagent_containers/food/snacks/cornchips,/obj/item/reagent_containers/food/snacks/cornchips,/obj/item/reagent_containers/food/snacks/candy,/obj/item/reagent_containers/food/snacks/candy,/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 1},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"WZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5; piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Xa" = (/obj/structure/table/wood,/obj/item/card/id/syndicate{pixel_y = 14},/obj/item/storage/fancy/cigarettes/cigpack_syndicate{pixel_x = -3},/obj/item/lighter{pixel_x = 4},/obj/effect/turf_decal/tile/red{dir = 1},/obj/effect/turf_decal/tile/red{dir = 8},/turf/open/floor/plasteel/dark,/area/ruin/space/has_grav/feedersden)
@@ -347,7 +358,9 @@
"Yk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{piping_layer = 3; pixel_x = 5; pixel_y = 5},/obj/machinery/door/airlock/public/glass{name = "Cell 3"; id_tag = "feederden_cell3"},/obj/structure/cable{icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"Yp" = (/obj/machinery/atmospherics/components/unary/vent_pump/on{dir = 8},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"YA" = (/obj/effect/turf_decal/loading_area{dir = 8; icon_state = "steel_decals9"},/obj/effect/turf_decal/loading_area{dir = 1; icon_state = "steel_decals9"},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"YB" = (/obj/structure/fans/tiny,/obj/machinery/door/poddoor{id = "feederden_hangar"; name = "den hangar door"; dir = 4},/turf/open/floor/plating,/area/ruin/space/has_grav/feedersden)
"YE" = (/obj/structure/rack,/obj/item/storage/toolbox/syndicate,/obj/item/multitool,/obj/item/clothing/head/welding,/obj/effect/turf_decal/tile/brown{dir = 4},/obj/effect/turf_decal/tile/brown{dir = 1},/obj/structure/sign/poster/contraband/syndicate_pistol{pixel_y = 32},/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"YI" = (/obj/effect/turf_decal,/obj/item/stack/marker_beacon{anchored = 1; icon_state = "markerburgundy-on"; light_color = "#FA644B"; light_power = 3; light_range = 2; name = "landing marker"; picked_color = "Burgundy"},/turf/open/floor/mineral/plastitanium/red,/area/ruin/space/has_grav/feedersden)
"YN" = (/obj/item/trash/fatoray_scrap1,/obj/structure/sign/warning/securearea{pixel_y = 32},/turf/open/floor/plating/asteroid/airless,/area/ruin/unpowered/no_grav)
"YU" = (/obj/structure/table,/obj/item/reagent_containers/food/snacks/burger/cheese,/turf/open/floor/plasteel,/area/ruin/space/has_grav/feedersden)
"YX" = (/turf/open/floor/circuit/red,/area/ruin/space/has_grav/feedersden)
@@ -380,21 +393,21 @@ FEebebebqFBrBrnrfMsqelzCnrLMelwnnrSXXFXFwODcwYrWOclQeSiXGFCcoKoKoKNzItgUeZICnrhl
FEFEFEFEFEBrBrDcnrnrnurkDcgUKHzYDcDcgUdHDcDccwoKoKOcoKoKoKvkrWoKoKNzItDcDcDcDcgUYkzYDcftbxnrnrDcBrBrFEFEFEFEFE
FEFEFEFEFEBrBrBrnrtZlltPwyLoJWMqLoKofbcdcdzgcdRpRpqiRpRpRpXhRpRpRpjOkKkKRzKoLusabcQKzwgnLTmmnrBrBrFEFEFEFEFEFE
FEFEFEFEfmBrBrBrnrZnNBLvAjNRgZKWNRAjNXTGTGTGTGBDTGXWZhZhZhqquOuOuOuOuOrJZOWrndWrsNnArBxJLfZnnrqFebebebFEFEFEFE
FEFEFEfmfmBrBrBrDcDcNJNJDcnrnrnrnrnrnrnrnrnrDcWJiONxgUgUgUuXZpTKDcnrnrQFnrnrnrnrnrnrDcNJNJDcDcBrFEFEFEFEFEFEFE
FEFEBrZCfmISBrBrBrnrMaEqnrikNggqnrWNYEfncnbanrDxvYFDLNdCsRiNvYSsnrZeIoxCkoPgnrridlkCnrfNginrBrBrBrFEFEFEFEFEFE
FEFEBrBrfmfmBrBrBrnrtyEqnrIGJhJhWsDOlsuklslsvtDxvYSyBeaaaaUBvYmUnrcWmaUerscxtVbXJhkMnrfNdAnrBrBrBrFEFEFEFEFEFE
FEFEFEBrwwfmeEBrBrDcnrnrDcxGHpEHNkDOtHguboygaQoYvYvYvYvYvYvwvYkdnrgFXsFHYpDBnrzlJhXPDcnrnrDcBrBrBrFEFEFEFEFEFE
FEFEFEBrxZfmfmBrBrBrBrBrDcDcnrnrDcmflsucaEBPnrvYaDMYMdRhDKjhANYUnrnrnrTPJhfKDcnrRanrDcBrEWYNxZBrBrBrFEFEFEFEFE
FEFEFEFEfmfmBrBrBrBrBrBrnrnKEfWKnrqhlslszcVFDczAnrnrnrMWnrnrnrnrDcmDnQddRCuFnrNtVWdvnrISVefmfmfxBrBrFEFEFEFEFE
FEFEFEFEFEfmBrBrBrBrBrBrnrNUcVgkcRDOrfrfYhdzPItjfhnroHoHoHdrVxnwAaYAtBTYzGzEHivLMisCkgeEfmFEFEebFEFEFEFEFEFEFE
FEFEFEFEFEFEBrBrBrBrBrBrnrRcvpRrnrqMyqzJjSTUbWTxsunroHoHoHdrBVBVAaYApeWZlhFmEsieuqrEuyRwfmFEFEebFEFEFEFEFEFEFE
FEFEFEFEFEFEFEBrBrBrBrBrDcnrnrnrDcnrnrnrnrnrnrnrnrpfgDoHWtpfnrnrnrnrnrnWnrnrDcaMsIaMtIUZFEFEFEebFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEBrBrBrBrBrBrBrBrBrBrBrBrBrBrXLBrqFebebebebebqFXLBrBrDcEhDUUJDcaMsIaMDcqFebebqFqFFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrBrBrBrplVeFEFEFEFEFEFEVeEWVefmDcEkSpDMDcaMykaMDcDsFEFEBrBrFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrISfmFEFEFEFEFEFEfmISZCISDcDcDcDcDcDcDcDcDcDsFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrFEFEFEFEFEFEFEBrfmfmwwxZfmfmfmBrBrqFqFDsDsFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrVefmfmfmfmeEfmKuqFqFKuFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrBrBrZCZCfmFEFEFEebebFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrBrBrBrFEFEFEFEFEebFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEfmfmBrBrDcDcDcNJNJDcnrnrnrnrnrnrnrnrnrDcWJiONxgUgUgUuXZpTKDcnrnrQFnrnrnrnrnrnrDciuiuDcDcBrFEFEFEFEFEFEFE
FEFEBrZCfmISBrDcrOCTMadjnrNggqvpnrWNYEfncnbanrDxvYFDLNdCsRiNvYSsnrZeIoxCkoPgnrridlkCnrfNginrBrBrBrFEFEFEFEFEFE
FEFEBrBrfmfmBrDcAeEBtyEqnrIGJhJhWslslsuklslsvtDxvYSyBeaaaaUBvYmUnrcWmaUerscxtVbXJhkMnrfNdAnrBrBrBrFEFEFEFEFEFE
FEFEFEBrfmfmeEDcAeEBtyRVDcxGHpEHNklstHguboygaQoYvYvYvYvYvYvwvYkdnrgFXsFHYpDBnrzlJhXPDcnrnrDcBrBrBrFEFEFEFEFEFE
FEFEFEBrfmsnVvpfDcDcDcDcDcDcnrnrDcDOlsucaEBPnrvYaDMYMdRhDKjhANYUnrnrnrTPJhfKDcnrRanrDcBrEWYNxZBrBrBrFEFEFEFEFE
FEFEFEFEfmfmCdYBYIgkgkqMJhJhJhwknrqhlslszcVFDczAnrnrnrkgnrnrnrnrDcmDnQddRCuFnrNtVWdvnrISVefmfmfxBrBrFEFEFEFEFE
FEFEFEFEFEfmCdYBJhJhJhJhJhJhJhJhnrmfrflsYhdzPItjfhnroHoHoHdrVxnwAaYAtBTYzGzEHivLMisCkgeEfmFEFEebFEFEFEFEFEFEFE
FEFEFEFEFEFECdYBJhJhJhJhJhJhJhJhnrikrflsYhDqbWTxsunroHoHoHdrBVBVAaYApeWZlhFmEsieuqrEuyRwfmFEFEebFEFEFEFEFEFEFE
FEFEFEFEFEFECdYBJhJhJhJhJhJhJhRccRvfPvzJjSTUnrnrnrpfgDoHWtpfnrnrnrnrnrnWnrnrDcaMsIaMtIUZFEFEFEebFEFEFEFEFEFEFE
FEFEFEFEFEFECdYBJhJhJhJhJhJhJhJhDcnrnrnrnrnrnrXLdLebebebebebqFXLBrBrDcEhDUUJDcaMsIaMDcqFebebqFqFFEFEFEFEFEFEFE
FEFEFEFEFEFECdYBJhJhJhJhJhJhJhJhDcBrBrBrBrBrBrBrplVeFEFEFEFEVeEWVefmDcEkSpDMDcaMykaMDcDsFEFEBrBrFEFEFEFEFEFEFE
FEFEFEFEFEFECdYBrHPkPkyqJhJhJhOHDcBrBrBrBrBrBrBrISfmFEFEFEFEfmISZCISDcDcDcDcDcDcDcDcDcDsFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEsnVvpfDcDcDcDcDcDcDcDcDcBrBrBrFEBrBrFEFEFEFEFEFEFEBrfmfmwwxZfmfmfmBrBrqFqFDsDsFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEBrBrBrBrBrBrBrBrBrBrBrBrBrBrFEFEFEFEFEFEFEFEFEFEFEBrBrVefmfmfmfmeEfmKuqFqFKuFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEBrBrBrBrBrBrBrBrBrBrBrBrFEFEFEFEFEFEFEFEFEFEFEFEBrBrBrBrZCZCfmFEFEFEebebFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEBrBrBrBrBrFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrBrBrBrFEFEFEFEFEebFEFEFEFEFEFEFEFEFEFEFEFEFE
FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEBrBrBrBrFEFEFEFEFEebFEFEFEFEFEFEFEFEFEFEFEFEFE
"}
+236
View File
@@ -0,0 +1,236 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/turf/closed/wall/mineral/plastitanium,
/area/space)
"c" = (
/obj/structure/chair/office/dark{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/space)
"g" = (
/turf/open/floor/wood,
/area/space)
"h" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/wood,
/area/space)
"j" = (
/turf/open/floor/mineral/basaltstone_floor,
/area/space)
"l" = (
/obj/machinery/light/small{
dir = 1
},
/obj/structure/chair/sofachair{
dir = 8
},
/turf/open/floor/mineral/basaltstone_floor,
/area/space)
"n" = (
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/loading_area{
dir = 8;
icon_state = "drain";
name = "drain"
},
/obj/machinery/door/window/brigdoor/westleft,
/turf/open/floor/plasteel/dark,
/area/space)
"o" = (
/obj/structure/chair/sofachair{
dir = 8
},
/turf/open/floor/mineral/basaltstone_floor,
/area/space)
"p" = (
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/loading_area{
dir = 8;
icon_state = "drain";
name = "drain"
},
/obj/structure/window/reinforced/spawner/west,
/turf/open/floor/plasteel/dark,
/area/space)
"u" = (
/obj/effect/turf_decal/tile/red{
dir = 1
},
/obj/effect/turf_decal/tile/red{
dir = 8
},
/obj/effect/turf_decal/loading_area{
dir = 8;
icon_state = "drain";
name = "drain"
},
/obj/structure/window/reinforced/spawner/west,
/obj/structure/closet/secure_closet{
req_one_access_txt = "150"
},
/turf/open/floor/plasteel/dark,
/area/space)
"y" = (
/obj/structure/chair/sofa/left{
dir = 1
},
/turf/open/floor/wood,
/area/space)
"z" = (
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate{
name = "shuttle navigation computer";
desc = "Used to designate a precise transit location for the shuttle."
},
/turf/open/floor/plasteel/dark,
/area/space)
"G" = (
/obj/structure/chair/sofa/right{
dir = 1
},
/turf/open/floor/wood,
/area/space)
"H" = (
/obj/machinery/light,
/obj/structure/chair/sofa{
dir = 1
},
/turf/open/floor/wood,
/area/space)
"J" = (
/obj/machinery/computer/shuttle/syndicate{
name = "shuttle terminal"
},
/turf/open/floor/plasteel/dark,
/area/space)
"K" = (
/obj/machinery/door/airlock/abductor,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/space)
"M" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8
},
/turf/open/floor/plating/airless,
/area/space)
"P" = (
/obj/item/kirbyplants/photosynthetic,
/turf/open/floor/wood,
/area/space)
"Q" = (
/turf/open/space/basic,
/area/space)
"S" = (
/obj/structure/falsewall/plastitanium,
/obj/machinery/door/window/brigdoor/northright{
layer = 1
},
/turf/open/floor/mineral/basaltstone_floor,
/area/space)
"Y" = (
/obj/structure/shuttle/engine/heater{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/turf/open/floor/plating/airless,
/area/space)
"Z" = (
/obj/effect/spawner/structure/window/plastitanium,
/turf/open/floor/plating,
/area/space)
(1,1,1) = {"
Q
M
M
M
Q
Q
Q
Q
"}
(2,1,1) = {"
a
Y
Y
Y
a
a
a
a
"}
(3,1,1) = {"
K
g
g
G
S
j
j
a
"}
(4,1,1) = {"
a
h
g
H
a
l
o
a
"}
(5,1,1) = {"
Z
P
g
y
a
a
a
a
"}
(6,1,1) = {"
Z
u
n
p
a
Q
Q
Q
"}
(7,1,1) = {"
a
J
c
z
a
Q
Q
Q
"}
(8,1,1) = {"
a
Z
Z
Z
a
Q
Q
Q
"}
+241
View File
@@ -0,0 +1,241 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
/obj/structure/window/reinforced/survival_pod{
dir = 8
},
/obj/structure/closet/emcloset/anchored,
/obj/item/clothing/mask/breath,
/obj/item/clothing/mask/breath,
/obj/item/tank/internals/emergency_oxygen/double,
/obj/item/tank/internals/emergency_oxygen/double,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"g" = (
/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate{
name = "shuttle navigation computer";
desc = "Used to designate a precise transit location for the shuttle.";
dir = 4;
shuttleId = "feeder_ship";
shuttlePortId = "feeder_custom";
jump_to_ports = list("whiteship_home" = 1, "feeder_home" = 1)
},
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"j" = (
/turf/closed/wall/r_wall/syndicate,
/area/shuttle/feeder_shuttle)
"k" = (
/obj/structure/shuttle/engine/heater{
dir = 4
},
/obj/structure/window/reinforced/survival_pod{
dir = 1
},
/obj/structure/window/reinforced/survival_pod{
dir = 8
},
/turf/open/floor/plating,
/area/shuttle/feeder_shuttle)
"l" = (
/turf/open/floor/mineral/plastitanium,
/area/shuttle/feeder_shuttle)
"o" = (
/obj/machinery/computer{
dir = 4;
name = "Shuttle computer"
},
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"p" = (
/obj/structure/chair/comfy/shuttle,
/obj/machinery/door/window/survival_pod,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"r" = (
/obj/machinery/light{
dir = 4;
light_color = "#c1caff"
},
/obj/effect/turf_decal/stripes/red/line{
dir = 4
},
/obj/structure/medkit_cabinet{
pixel_x = 24
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/feeder_shuttle)
"y" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/obj/machinery/door/window/survival_pod{
dir = 1
},
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"z" = (
/obj/structure/shuttle/engine/propulsion/left{
dir = 4
},
/turf/open/space/basic,
/area/shuttle/feeder_shuttle)
"C" = (
/obj/structure/table/reinforced,
/obj/machinery/cell_charger,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"D" = (
/obj/structure/shuttle/engine/heater{
dir = 4
},
/obj/structure/window/reinforced/survival_pod{
dir = 8
},
/obj/structure/window/reinforced/survival_pod,
/turf/open/floor/plating,
/area/shuttle/feeder_shuttle)
"F" = (
/obj/machinery/light{
dir = 4;
light_color = "#c1caff"
},
/obj/effect/turf_decal/stripes/red/line{
dir = 4
},
/obj/structure/extinguisher_cabinet{
pixel_x = 24
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/feeder_shuttle)
"G" = (
/obj/structure/table/reinforced,
/obj/machinery/recharger,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"I" = (
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/shuttle/feeder_shuttle)
"J" = (
/obj/machinery/door/airlock/hatch{
name = "airlock";
req_access_txt = "150"
},
/obj/structure/fans/tiny,
/obj/docking_port/mobile{
dir = 8;
shuttle_id = "feeder_ship";
port_direction = 4;
shuttle_areas = /area/shuttle/feeder_shuttle;
dwidth = 3;
height = 7;
width = 7
},
/turf/open/floor/plating,
/area/shuttle/feeder_shuttle)
"M" = (
/obj/machinery/porta_turret/fattening,
/turf/closed/wall/r_wall/syndicate,
/area/shuttle/feeder_shuttle)
"P" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/feeder_shuttle)
"Q" = (
/turf/template_noop,
/area/template_noop)
"S" = (
/obj/structure/window/reinforced/survival_pod{
dir = 8
},
/obj/machinery/suit_storage_unit/syndicatemod,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/feeder_shuttle)
"X" = (
/obj/machinery/computer/shuttle/syndicate{
name = "shuttle terminal";
dir = 4;
shuttleId = "feeder_ship";
possible_destinations = "feeder_home;whiteship_home;feeder_custom"
},
/obj/effect/turf_decal/stripes/red/line{
dir = 8
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/feeder_shuttle)
"Y" = (
/obj/effect/spawner/structure/window/plastitanium,
/obj/structure/grille,
/turf/open/floor/plating,
/area/shuttle/feeder_shuttle)
"Z" = (
/obj/effect/turf_decal/stripes/red/line{
dir = 4
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/feeder_shuttle)
(1,1,1) = {"
Q
M
Y
Y
Y
M
Q
"}
(2,1,1) = {"
Q
Y
o
X
g
Y
Q
"}
(3,1,1) = {"
Q
j
G
P
C
j
Q
"}
(4,1,1) = {"
j
I
a
l
S
I
j
"}
(5,1,1) = {"
j
p
l
l
l
y
j
"}
(6,1,1) = {"
j
D
F
Z
r
k
j
"}
(7,1,1) = {"
Q
z
I
J
I
z
Q
"}
+1
View File
@@ -30,6 +30,7 @@
#define COLOR_YELLOW "#FFFF00"
#define COLOR_VIVID_YELLOW "#FBFF23"
#define COLOR_VERY_SOFT_YELLOW "#FAE48E"
#define COLOR_GOLD "#FFD700"
#define COLOR_OLIVE "#808000"
#define COLOR_VIBRANT_LIME "#00FF00"
+2 -2
View File
@@ -279,5 +279,5 @@
#define FAT "fat"
#define PERMA_FAT "perma_fat"
/// What is the rate that one damage is converted to fatness?
#define FAT_DAMAGE_TO_FATNESS 4
#define PERMA_FAT_DAMAGE_TO_FATNESS 4
#define FAT_DAMAGE_TO_FATNESS 8
#define PERMA_FAT_DAMAGE_TO_FATNESS 8
+2
View File
@@ -214,6 +214,8 @@
#define COMSIG_TURF_MULTIZ_DEL "turf_multiz_del"
///from base of turf/multiz_turf_new: (turf/source, direction)
#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new"
/// from base of turf/proc/afterShuttleMove: (turf/new_turf)
#define COMSIG_TURF_AFTER_SHUTTLE_MOVE "turf_after_shuttle_move"
// /atom/movable signals
#define COMSIG_MOVABLE_PRE_MOVE "movable_pre_move" ///from base of atom/movable/Moved(): (/atom)
@@ -23,3 +23,5 @@
#define COMPONENT_NO_MOUSEDROP (1<<0)
///from base of atom/MouseDrop_T: (/atom/from, /mob/user)
#define COMSIG_MOUSEDROPPED_ONTO "mousedropped_onto" //from base of atom/MouseDrop_T: (/atom/from, /mob/user)
/// From /atom/movable/screen/click(): (atom/target, atom/location, control, params, mob/user)
#define COMSIG_SCREEN_ELEMENT_CLICK "screen_element_click"
@@ -1,2 +1,5 @@
/// a person somewhere has thrown something : (mob/living/carbon/carbon_thrower, target)
#define COMSIG_GLOB_CARBON_THROW_THING "!throw_thing"
/// Global signal sent before we decide what job everyone has
#define COMSIG_GLOB_PRE_JOBS_ASSIGNED "!pre_roles_assigned"
@@ -2,3 +2,5 @@
#define COMSIG_HUD_LOBBY_COLLAPSED "hud_lobby_collapsed"
/// Sent from /atom/movable/screen/lobby/button/collapse/proc/expand_buttons() : ()
#define COMSIG_HUD_LOBBY_EXPANDED "hud_lobby_expanded"
/// Sent from /atom/movable/screen/lobby/button/ready/Click() : ()
#define COMSIG_HUD_PLAYER_READY_TOGGLE "hud_player_ready_toggle"
+3 -1
View File
@@ -99,6 +99,7 @@
#define ui_internal "EAST-1:28,CENTER+1:19"//CIT CHANGE - moves internal icon up a little bit to accommodate for the stamina meter
#define ui_mood "EAST-1:28,CENTER-3:10"
#define ui_arousal "EAST-1:28,CENTER-4:8"
#define ui_stamina "EAST-1:28,CENTER-0:14"
// #define ui_spacesuit "EAST-1:28,CENTER-4:10"
//Pop-up inventory
@@ -209,7 +210,6 @@
#define ui_ghost_spawners "SOUTH: 6, CENTER+1:24" // LEGACY. SAME LOC AS PAI
//UI position overrides for 1:1 screen layout. (default is 7:5)
#define ui_stamina "EAST-1:28,CENTER:17" // replacing internals button
#define ui_overridden_resist "EAST-3:24,SOUTH+1:7"
#define ui_clickdelay "CENTER,SOUTH+1:-31"
#define ui_resistdelay "EAST-3:24,SOUTH+1:4"
@@ -232,6 +232,8 @@
#define SCRN_OBJ_IN_LIST "list"
/// In the collapseable palette
#define SCRN_OBJ_IN_PALETTE "palette"
///Inserted first in the list
#define SCRN_OBJ_INSERT_FIRST "first"
/// The filter name for the hover outline
#define HOVER_OUTLINE_FILTER "hover_outline"
+20 -3
View File
@@ -4,10 +4,21 @@
#define LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD 8
// LANGUAGE SOURCE DEFINES
#define LANGUAGE_ALL "all" // For use in full removal only.
#define LANGUAGE_ATOM "atom"
#define LANGUAGE_MIND "mind"
/// For use in full removal only.
#define LANGUAGE_ALL "all"
// Generic language sources.
/// Language is linked to the movable directly.
#define LANGUAGE_ATOM "atom"
/// Language is linked to the mob's mind.
/// If a mind transfer happens, language follows.
#define LANGUAGE_MIND "mind"
/// Language is linked to the mob's species.
/// If a species change happens, language goes away.
/// If applied to a non-human (no species) atom, this is effectively the same as [LANGUAGE_ATOM].
#define LANGUAGE_SPECIES "species"
// More specific language sources.
// Only ever goes away when dismissed directly.
#define LANGUAGE_ABSORB "absorb"
#define LANGUAGE_APHASIA "aphasia"
#define LANGUAGE_BLOODSUCKER "bloodsucker"
@@ -25,3 +36,9 @@
#define LANGUAGE_VASSAL "vassal"
#define LANGUAGE_VOICECHANGE "voicechange"
#define LANGUAGE_MULTILINGUAL "multilingual"
// Language flags. Used in granting and removing languages.
/// This language can be spoken.
#define SPOKEN_LANGUAGE (1<<0)
/// This language can be understood.
#define UNDERSTOOD_LANGUAGE (1<<1)
+3
View File
@@ -200,5 +200,8 @@
#define SPLASHSCREEN_PLANE 90
#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE"
///Plane master controller keys
#define PLANE_MASTERS_GAME "plane_masters_game"
///Layer for screentips
#define SCREENTIP_LAYER 40
+7
View File
@@ -744,6 +744,13 @@
else
L1[key] = other_value
/// Turns an associative list into a flat list of keys
/proc/assoc_to_keys(list/input)
var/list/keys = list()
for(var/key in input)
UNTYPED_LIST_ADD(keys, key)
return keys
/proc/assoc_list_strip_value(list/input)
var/list/ret = list()
for(var/key in input)
+4 -1
View File
@@ -5,10 +5,11 @@
var/datum/hud/our_hud
var/actiontooltipstyle = ""
screen_loc = null
mouse_over_pointer = MOUSE_HAND_POINTER
var/button_icon_state
var/appearance_cache
var/mutable_appearance/button_overlay
/// Where we are currently placed on the hud. SCRN_OBJ_DEFAULT asks the linked action what it thinks
var/location = SCRN_OBJ_DEFAULT
/// A unique bitflag, combined with the name of our linked action this lets us persistently remember any user changes to our position
@@ -199,6 +200,7 @@
icon = 'icons/hud/64x16_actions.dmi'
icon_state = "screen_gen_palette"
screen_loc = ui_action_palette
mouse_over_pointer = MOUSE_HAND_POINTER
var/datum/hud/our_hud
var/expanded = FALSE
/// Id of any currently running timers that set our color matrix
@@ -324,6 +326,7 @@ GLOBAL_LIST_INIT(palette_removed_matrix, list(1.4,0,0,0, 0.7,0.4,0,0, 0.4,0,0.6,
/atom/movable/screen/palette_scroll
icon = 'icons/mob/screen_gen.dmi'
screen_loc = ui_palette_scroll
mouse_over_pointer = MOUSE_HAND_POINTER
/// How should we move the palette's actions?
/// Positive scrolls down the list, negative scrolls back
var/scroll_direction = 0
+19 -36
View File
@@ -1,5 +1,6 @@
/atom/movable/screen/ai
icon = 'icons/mob/screen_ai.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ai/Click()
if(isobserver(usr) || usr.incapacitated())
@@ -193,109 +194,91 @@
var/atom/movable/screen/using
// Language menu
using = new /atom/movable/screen/language_menu
using = new /atom/movable/screen/language_menu(null, src)
using.screen_loc = ui_ai_language_menu
using.hud = src
static_inventory += using
//AI core
using = new /atom/movable/screen/ai/aicore()
using = new /atom/movable/screen/ai/aicore(null, src)
using.screen_loc = ui_ai_core
using.hud = src
static_inventory += using
//Camera list
using = new /atom/movable/screen/ai/camera_list()
using = new /atom/movable/screen/ai/camera_list(null, src)
using.screen_loc = ui_ai_camera_list
using.hud = src
static_inventory += using
//Track
using = new /atom/movable/screen/ai/camera_track()
using = new /atom/movable/screen/ai/camera_track(null, src)
using.screen_loc = ui_ai_track_with_camera
using.hud = src
static_inventory += using
//Camera light
using = new /atom/movable/screen/ai/camera_light()
using = new /atom/movable/screen/ai/camera_light(null, src)
using.screen_loc = ui_ai_camera_light
using.hud = src
static_inventory += using
//Crew Monitoring
using = new /atom/movable/screen/ai/crew_monitor()
using = new /atom/movable/screen/ai/crew_monitor(null, src)
using.screen_loc = ui_ai_crew_monitor
using.hud = src
static_inventory += using
//Crew Manifest
using = new /atom/movable/screen/ai/crew_manifest()
using = new /atom/movable/screen/ai/crew_manifest(null, src)
using.screen_loc = ui_ai_crew_manifest
using.hud = src
static_inventory += using
//Alerts
using = new /atom/movable/screen/ai/alerts()
using = new /atom/movable/screen/ai/alerts(null, src)
using.screen_loc = ui_ai_alerts
using.hud = src
static_inventory += using
//Announcement
using = new /atom/movable/screen/ai/announcement()
using = new /atom/movable/screen/ai/announcement(null, src)
using.screen_loc = ui_ai_announcement
using.hud = src
static_inventory += using
//Shuttle
using = new /atom/movable/screen/ai/call_shuttle()
using = new /atom/movable/screen/ai/call_shuttle(null, src)
using.screen_loc = ui_ai_shuttle
using.hud = src
static_inventory += using
//Laws
using = new /atom/movable/screen/ai/state_laws()
using = new /atom/movable/screen/ai/state_laws(null, src)
using.screen_loc = ui_ai_state_laws
using.hud = src
static_inventory += using
//PDA message
using = new /atom/movable/screen/ai/pda_msg_send()
using = new /atom/movable/screen/ai/pda_msg_send(null, src)
using.screen_loc = ui_ai_pda_send
using.hud = src
static_inventory += using
//PDA log
using = new /atom/movable/screen/ai/pda_msg_show()
using = new /atom/movable/screen/ai/pda_msg_show(null, src)
using.screen_loc = ui_ai_pda_log
using.hud = src
static_inventory += using
//Take image
using = new /atom/movable/screen/ai/image_take()
using = new /atom/movable/screen/ai/image_take(null, src)
using.screen_loc = ui_ai_take_picture
using.hud = src
static_inventory += using
//View images
using = new /atom/movable/screen/ai/image_view()
using = new /atom/movable/screen/ai/image_view(null, src)
using.screen_loc = ui_ai_view_images
using.hud = src
static_inventory += using
//Medical/Security sensors
using = new /atom/movable/screen/ai/sensors()
using = new /atom/movable/screen/ai/sensors(null, src)
using.screen_loc = ui_ai_sensor
using.hud = src
static_inventory += using
//Multicamera mode
using = new /atom/movable/screen/ai/multicam()
using = new /atom/movable/screen/ai/multicam(null, src)
using.screen_loc = ui_ai_multicam
using.hud = src
static_inventory += using
//Add multicamera camera
using = new /atom/movable/screen/ai/add_multicam()
using = new /atom/movable/screen/ai/add_multicam(null, src)
using.screen_loc = ui_ai_add_multicam
using.hud = src
static_inventory += using
+114 -25
View File
@@ -91,6 +91,8 @@
name = "Alert"
desc = "Something seems to have gone wrong with this alert, so report this bug please"
mouse_opacity = MOUSE_OPACITY_ICON
/// do we glow to represent we do stuff when clicked
var/clickable_glow = FALSE
var/timeout = 0 //If set to a number, this alert will clear itself after that many deciseconds
var/severity = 0
var/alerttooltipstyle = ""
@@ -100,6 +102,12 @@
/// Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
var/click_master = TRUE
/atom/movable/screen/alert/Initialize(mapload, datum/hud/hud_owner)
. = ..()
if(clickable_glow)
add_filter("clickglow", 2, outline_filter(color = COLOR_GOLD, size = 1))
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/alert/MouseEntered(location,control,params)
if(!QDELETED(src))
openToolTip(usr,src,params,title = name,content = desc,theme = alerttooltipstyle)
@@ -247,13 +255,14 @@ or something covering your eyes."
name = "Mind Control"
desc = "Your mind has been hijacked! Click to view the mind control command."
icon_state = "mind_control"
clickable_glow = TRUE
var/command
/atom/movable/screen/alert/mind_control/Click()
var/mob/living/L = usr
if(L != owner)
. = ..()
if(!.)
return
to_chat(L, "<span class='mind_control'>[command]</span>")
to_chat(usr, "<span class='mind_control'>[command]</span>")
/atom/movable/screen/alert/hypnosis
name = "Hypnosis"
@@ -271,11 +280,16 @@ or something covering your eyes."
desc = "Something got lodged into your flesh and is causing major bleeding. It might fall out with time, but surgery is the safest way. \
If you're feeling frisky, examine yourself and click the underlined item to pull the object out."
icon_state = "embeddedobject"
clickable_glow = TRUE
/atom/movable/screen/alert/embeddedobject/Click()
if(isliving(usr) && usr == owner)
var/mob/living/carbon/M = usr
return M.help_shake_act(M)
. = ..()
if(!.)
return
if(!isliving(usr))
return
var/mob/living/carbon/M = usr
return M.help_shake_act(M)
/atom/movable/screen/alert/weightless
name = "Weightless"
@@ -299,10 +313,14 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
name = "On Fire"
desc = "You're on fire. Stop, drop and roll to put the fire out or move to a vacuum area."
icon_state = "fire"
clickable_glow = TRUE
/atom/movable/screen/alert/fire/Click()
. = ..()
if(!.)
return
var/mob/living/L = usr
if(!istype(L) || !L.can_resist() || L != owner)
if(!istype(L) || !L.can_resist())
return
L.MarkResistTime()
if(CHECK_MOBILITY(L, MOBILITY_MOVE))
@@ -310,8 +328,29 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/atom/movable/screen/alert/give // information set when the give alert is made
icon_state = "default"
clickable_glow = TRUE
var/mob/living/carbon/offerer
var/obj/item/receiving
/// Additional text displayed in the description of the alert.
var/additional_desc_text = "Click this alert to take it, or shift click it to examine it."
/// Text to override what appears in screentips for the alert
var/screentip_override_text
/// Whether the offered item can be examined by shift-clicking the alert
var/examinable = TRUE
/atom/movable/screen/alert/give/Initialize(mapload, datum/hud/hud_owner)
. = ..()
register_context()
/atom/movable/screen/alert/give/Destroy()
offerer = null
receiving = null
return ..()
/atom/movable/screen/alert/give/add_context(atom/source, list/context, obj/item/held_item, mob/user)
LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, screentip_override_text || "Take [receiving.name]")
LAZYSET(context[SCREENTIP_CONTEXT_SHIFT_LMB], INTENT_ANY, "Examine")
return CONTEXTUAL_SCREENTIP_SET
/**
* Handles assigning most of the variables for the alert that pops up when an item is offered
@@ -341,6 +380,16 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
CRASH("User for [src] is of type \[[usr.type]\]. This should never happen.")
handle_transfer()
/atom/movable/screen/alert/give/examine(mob/user)
if(!examinable)
return ..()
return list(
span_boldnotice(name),
span_info("[offerer] is offering you the following item (click the alert to take it!):"),
"<hr>[jointext(receiving.examine(user), "\n")]",
)
/// An overrideable proc used simply to hand over the item when claimed, this is a proc so that high-fives can override them since nothing is actually transferred
/atom/movable/screen/alert/give/proc/handle_transfer()
var/mob/living/carbon/taker = owner
@@ -354,6 +403,11 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
to_chat(owner, span_warning("You moved out of range of [offerer]!"))
owner.clear_alert("[offerer]")
/atom/movable/screen/alert/give/highfive
additional_desc_text = "Click this alert to slap it."
screentip_override_text = "High Five"
examinable = FALSE
/atom/movable/screen/alert/give/highfive/setup(mob/living/carbon/taker, mob/living/carbon/offerer, obj/item/receiving)
. = ..()
name = "[offerer] is offering a high-five!"
@@ -404,6 +458,9 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/// Families handshakes
/atom/movable/screen/alert/give/secret_handshake
icon_state = "default"
additional_desc_text = "Click this alert to accept."
screentip_override_text = "Handshake"
examinable = FALSE
/atom/movable/screen/alert/give/secret_handshake/setup(mob/living/carbon/taker, mob/living/carbon/offerer, obj/item/receiving)
name = "[offerer] is offering a Handshake"
@@ -666,18 +723,21 @@ so as to remain in compliance with the most up-to-date laws."
complete, you will have exclusive control of it, and you will gain \
additional processing time to unlock more malfunction abilities."
icon_state = "hackingapc"
timeout = 600
timeout = 60 SECONDS
clickable_glow = TRUE
var/atom/target = null
/atom/movable/screen/alert/hackingapc/Click()
if(!usr || !usr.client || usr != owner)
. = ..()
if(!.)
return
if(!target)
return
var/mob/living/silicon/ai/AI = usr
var/turf/T = get_turf(target)
if(T)
AI.eyeobj.setLoc(T)
if(!T)
return
AI.eyeobj.setLoc(T)
//MECHS
@@ -693,25 +753,30 @@ so as to remain in compliance with the most up-to-date laws."
name = "Revival"
desc = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!"
icon_state = "template"
timeout = 300
timeout = 30 SECONDS
clickable_glow = TRUE
/atom/movable/screen/alert/notify_cloning/Click()
if(!usr || !usr.client || usr != owner)
. = ..()
if(!.)
return
var/mob/dead/observer/G = usr
G.reenter_corpse()
var/mob/dead/observer/dead_owner = usr
dead_owner.reenter_corpse()
/atom/movable/screen/alert/notify_action
name = "Body created"
desc = "A body was created. You can enter it."
icon_state = "template"
timeout = 300
timeout = 30 SECONDS
clickable_glow = TRUE
var/atom/target = null
var/action = NOTIFY_JUMP
/atom/movable/screen/alert/notify_action/Click()
if(!usr || !usr.client || usr != owner)
. = ..()
if(!.)
return
if(!target)
return
var/mob/dead/observer/G = usr
@@ -729,29 +794,43 @@ so as to remain in compliance with the most up-to-date laws."
//OBJECT-BASED
/atom/movable/screen/alert/restrained/buckled
/atom/movable/screen/alert/buckled
name = "Buckled"
desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed."
icon_state = "buckled"
clickable_glow = TRUE
/atom/movable/screen/alert/restrained
clickable_glow = TRUE
/atom/movable/screen/alert/restrained/handcuffed
name = "Handcuffed"
desc = "You're handcuffed and can't act. If anyone drags you, you won't be able to move. Click the alert to free yourself."
click_master = FALSE
/atom/movable/screen/alert/restrained/legcuffed
name = "Legcuffed"
desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself."
click_master = FALSE
/atom/movable/screen/alert/restrained/Click()
. = ..()
if(!.)
return
var/mob/living/L = usr
if(!istype(L) || !L.can_resist() || L != owner)
if(!istype(L) || !L.can_resist())
return
L.MarkResistTime()
return L.resist_restraints()
/atom/movable/screen/alert/restrained/buckled/Click()
/atom/movable/screen/alert/buckled/Click()
. = ..()
if(!.)
return
var/mob/living/L = usr
if(!istype(L) || !L.can_resist() || L != owner)
if(!istype(L) || !L.can_resist())
return
L.MarkResistTime()
return L.resist_buckle()
@@ -765,10 +844,14 @@ so as to remain in compliance with the most up-to-date laws."
name = "Knotted Shoes"
desc = "Someone tied your shoelaces together! Click the alert or your shoes to undo the knot."
icon_state = "shoealert"
clickable_glow = TRUE
/atom/movable/screen/alert/shoes/Click()
. = ..()
if(!.)
return
var/mob/living/carbon/C = usr
if(!istype(C) || !C.can_resist() || C != owner || !C.shoes)
if(!istype(C) || !C.can_resist() || !C.shoes)
return
C.MarkResistTime()
C.shoes.handle_tying(C)
@@ -814,9 +897,9 @@ so as to remain in compliance with the most up-to-date laws."
return FALSE
if(usr != owner)
return FALSE
var/paramslist = params2list(params)
if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat
to_chat(usr, "<span class='boldnotice'>[name]</span> - <span class='info'>[desc]</span>")
var/modifiers = params2list(params)
if(LAZYACCESS(modifiers, SHIFT_CLICK)) // screen objects don't do the normal Click() stuff so we'll cheat
to_chat(usr, "<blockquote class='info'>[jointext(examine(usr), "\n")]</blockquote>")
return FALSE
if(master && click_master)
return usr.client.Click(master, location, control, params)
@@ -829,3 +912,9 @@ so as to remain in compliance with the most up-to-date laws."
master = null
owner = null
screen_loc = ""
/atom/movable/screen/alert/examine(mob/user)
return list(
span_boldnotice(name),
span_info(desc),
)
+13 -26
View File
@@ -39,84 +39,71 @@
//begin buttons
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_1"
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
action_intent = new /atom/movable/screen/act_intent/alien()
action_intent = new /atom/movable/screen/act_intent/alien(null, src)
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
if(isalienhunter(mymob))
var/mob/living/carbon/alien/humanoid/hunter/H = mymob
H.leap_icon = new /atom/movable/screen/alien/leap()
H.leap_icon = new /atom/movable/screen/alien/leap(null, src)
H.leap_icon.screen_loc = ui_alien_storage_r
static_inventory += H.leap_icon
using = new/atom/movable/screen/language_menu
using = new/atom/movable/screen/language_menu(null, src)
using.screen_loc = ui_alien_language_menu
using.hud = src
static_inventory += using
using = new /atom/movable/screen/drop()
using = new /atom/movable/screen/drop(null, src)
using.icon = ui_style
using.screen_loc = ui_drop_throw
using.hud = src
static_inventory += using
using = new /atom/movable/screen/resist()
using = new /atom/movable/screen/resist(null, src)
using.icon = ui_style
using.screen_loc = ui_pull_resist
using.hud = src
hotkeybuttons += using
throw_icon = new /atom/movable/screen/throw_catch()
throw_icon = new /atom/movable/screen/throw_catch(null, src)
throw_icon.icon = ui_style
throw_icon.screen_loc = ui_drop_throw
throw_icon.hud = src
hotkeybuttons += throw_icon
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_pull_resist
static_inventory += pull_icon
//begin indicators
healths = new /atom/movable/screen/healths/alien()
healths.hud = src
healths = new /atom/movable/screen/healths/alien(null, src)
infodisplay += healths
alien_plasma_display = new /atom/movable/screen/alien/plasma_display()
alien_plasma_display.hud = src
alien_plasma_display = new /atom/movable/screen/alien/plasma_display(null, src)
infodisplay += alien_plasma_display
if(!isalienqueen(mymob))
alien_queen_finder = new /atom/movable/screen/alien/alien_queen_finder
alien_queen_finder.hud = src
alien_queen_finder = new /atom/movable/screen/alien/alien_queen_finder(null, src)
infodisplay += alien_queen_finder
zone_select = new /atom/movable/screen/zone_sel/alien()
zone_select.hud = src
zone_select = new /atom/movable/screen/zone_sel/alien(null, src)
zone_select.update_icon()
static_inventory += zone_select
for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[TOBITSHIFT(inv.slot_id) + 1] = inv
inv.update_icon()
+6 -12
View File
@@ -5,32 +5,26 @@
..()
var/atom/movable/screen/using
action_intent = new /atom/movable/screen/act_intent/alien()
action_intent = new /atom/movable/screen/act_intent/alien(null, src)
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
healths = new /atom/movable/screen/healths/alien()
healths.hud = src
healths = new /atom/movable/screen/healths/alien(null, src)
infodisplay += healths
alien_queen_finder = new /atom/movable/screen/alien/alien_queen_finder()
alien_queen_finder.hud = src
alien_queen_finder = new /atom/movable/screen/alien/alien_queen_finder(null, src)
infodisplay += alien_queen_finder
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = 'icons/mob/screen_alien.dmi'
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_pull_resist
hotkeybuttons += pull_icon
using = new/atom/movable/screen/language_menu
using = new/atom/movable/screen/language_menu(null, src)
using.screen_loc = ui_alien_language_menu
using.hud = src
static_inventory += using
zone_select = new /atom/movable/screen/zone_sel/alien()
zone_select.hud = src
zone_select = new /atom/movable/screen/zone_sel/alien(null, src)
zone_select.update_icon()
static_inventory += zone_select
+12 -22
View File
@@ -1,6 +1,7 @@
/atom/movable/screen/blob
icon = 'icons/mob/blob.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/blob/MouseEntered(location,control,params)
openToolTip(usr,src,params,title = name,content = desc, theme = "blob")
@@ -126,61 +127,50 @@
..()
var/atom/movable/screen/using
blobpwrdisplay = new /atom/movable/screen()
blobpwrdisplay = new /atom/movable/screen(null, src)
blobpwrdisplay.name = "blob power"
blobpwrdisplay.icon_state = "block"
blobpwrdisplay.screen_loc = ui_health
blobpwrdisplay.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
blobpwrdisplay.layer = ABOVE_HUD_LAYER
blobpwrdisplay.plane = ABOVE_HUD_PLANE
blobpwrdisplay.hud = src
infodisplay += blobpwrdisplay
healths = new /atom/movable/screen/healths/blob()
healths.hud = src
healths = new /atom/movable/screen/healths/blob(null, src)
infodisplay += healths
using = new /atom/movable/screen/blob/BlobHelp()
using = new /atom/movable/screen/blob/BlobHelp(null, src)
using.screen_loc = "WEST:6,NORTH:-3"
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/JumpToNode()
using = new /atom/movable/screen/blob/JumpToNode(null, src)
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/JumpToCore()
using = new /atom/movable/screen/blob/JumpToCore(null, src)
using.screen_loc = ui_zonesel
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/Blobbernaut()
using = new /atom/movable/screen/blob/Blobbernaut(null, src)
using.screen_loc = ui_belt
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/ResourceBlob()
using = new /atom/movable/screen/blob/ResourceBlob(null, src)
using.screen_loc = ui_back
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/NodeBlob()
using = new /atom/movable/screen/blob/NodeBlob(null, src)
using.screen_loc = ui_hand_position(2)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/FactoryBlob()
using = new /atom/movable/screen/blob/FactoryBlob(null, src)
using.screen_loc = ui_hand_position(1)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/ReadaptStrain()
using = new /atom/movable/screen/blob/ReadaptStrain(null, src)
using.screen_loc = ui_storage1
using.hud = src
static_inventory += using
using = new /atom/movable/screen/blob/RelocateCore()
using = new /atom/movable/screen/blob/RelocateCore(null, src)
using.screen_loc = ui_storage2
using.hud = src
static_inventory += using
+2 -4
View File
@@ -2,10 +2,8 @@
/datum/hud/blobbernaut/New(mob/owner)
..()
blobpwrdisplay = new /atom/movable/screen/healths/blob/naut/core()
blobpwrdisplay.hud = src
blobpwrdisplay = new /atom/movable/screen/healths/blob/naut/core(null, src)
infodisplay += blobpwrdisplay
healths = new /atom/movable/screen/healths/blob/naut()
healths.hud = src
healths = new /atom/movable/screen/healths/blob/naut(null, src)
infodisplay += healths
+3 -3
View File
@@ -7,14 +7,14 @@
..()
var/atom/movable/screen/using
healths = new /atom/movable/screen/healths/clock()
healths = new /atom/movable/screen/healths/clock(null, src)
infodisplay += healths
hosthealth = new /atom/movable/screen/healths/clock()
hosthealth = new /atom/movable/screen/healths/clock(null, src)
hosthealth.screen_loc = ui_internal
infodisplay += hosthealth
using = new /atom/movable/screen/marauder/emerge()
using = new /atom/movable/screen/marauder/emerge(null, src)
using.screen_loc = ui_zonesel
static_inventory += using
+2 -4
View File
@@ -3,13 +3,11 @@
/datum/hud/constructs/New(mob/owner)
..()
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_construct_pull
static_inventory += pull_icon
healths = new /atom/movable/screen/healths/construct()
healths.hud = src
healths = new /atom/movable/screen/healths/construct(null, src)
infodisplay += healths
+7 -14
View File
@@ -6,51 +6,44 @@
..()
var/atom/movable/screen/using
using = new /atom/movable/screen/drop()
using = new /atom/movable/screen/drop(null, src)
using.icon = ui_style
using.screen_loc = ui_drone_drop
using.hud = src
static_inventory += using
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_drone_pull
static_inventory += pull_icon
build_hand_slots()
using = new /atom/movable/screen/inventory()
using = new /atom/movable/screen/inventory(null, src)
using.name = "hand"
using.icon = ui_style
using.icon_state = "swap_1_m"
using.screen_loc = ui_swaphand_position(owner,1)
using.layer = HUD_LAYER
using.plane = HUD_PLANE
using.hud = src
static_inventory += using
using = new /atom/movable/screen/inventory()
using = new /atom/movable/screen/inventory(null, src)
using.name = "hand"
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.layer = HUD_LAYER
using.plane = HUD_PLANE
using.hud = src
static_inventory += using
zone_select = new /atom/movable/screen/zone_sel()
zone_select = new /atom/movable/screen/zone_sel(null, src)
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
lingchemdisplay = new /atom/movable/screen/ling/chems()
lingchemdisplay.hud = src
lingchemdisplay = new /atom/movable/screen/ling/chems(null, src)
devilsouldisplay = new /atom/movable/screen/devil/soul_counter
devilsouldisplay.hud = src
devilsouldisplay = new /atom/movable/screen/devil/soul_counter(null, src)
infodisplay += devilsouldisplay
+2 -3
View File
@@ -2,7 +2,7 @@
..()
var/atom/movable/screen/inventory/inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "internal storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
@@ -11,7 +11,7 @@
inv_box.slot_id = ITEM_SLOT_DEX_STORAGE
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "head/mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
@@ -22,7 +22,6 @@
for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[TOBITSHIFT(inv.slot_id) + 1] = inv
inv.update_icon()
-3
View File
@@ -9,9 +9,6 @@
/// Boolean, have the cops arrived? If so, the icon stops changing and remains the same.
var/cops_arrived = 0
/atom/movable/screen/wanted/New()
return ..()
/atom/movable/screen/wanted/Initialize(mapload)
. = ..()
update_icon()
+8 -16
View File
@@ -3,63 +3,55 @@
..()
var/atom/movable/screen/using
using = new /atom/movable/screen/drop()
using = new /atom/movable/screen/drop(null, src)
using.icon = ui_style
using.screen_loc = ui_drone_drop
using.hud = src
static_inventory += using
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_drone_pull
static_inventory += pull_icon
build_hand_slots()
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_1_m"
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
if(mymob.possible_a_intents)
if(mymob.possible_a_intents.len == 4)
// All possible intents - full intent selector
action_intent = new /atom/movable/screen/act_intent/segmented
action_intent = new /atom/movable/screen/act_intent/segmented(null, src)
else
action_intent = new /atom/movable/screen/act_intent
action_intent = new /atom/movable/screen/act_intent(null, src)
action_intent.icon = ui_style
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
zone_select = new /atom/movable/screen/zone_sel()
zone_select = new /atom/movable/screen/zone_sel(null, src)
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
using = new /atom/movable/screen/area_creator
using = new /atom/movable/screen/area_creator(null, src)
using.icon = ui_style
using.hud = src
static_inventory += using
mymob.client.screen = list()
for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[TOBITSHIFT(inv.slot_id) + 1] = inv
inv.update_icon()
+7 -12
View File
@@ -1,5 +1,6 @@
/atom/movable/screen/ghost
icon = 'icons/mob/screen_ghost.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ghost/MouseEntered()
flick(icon_state + "_anim", src)
@@ -48,34 +49,28 @@
..()
var/atom/movable/screen/using
using = new /atom/movable/screen/ghost/jumptomob()
using = new /atom/movable/screen/ghost/jumptomob(null, src)
using.screen_loc = ui_ghost_jumptomob
using.hud = src
static_inventory += using
using = new /atom/movable/screen/ghost/orbit()
using = new /atom/movable/screen/ghost/orbit(null, src)
using.screen_loc = ui_ghost_orbit
using.hud = src
static_inventory += using
using = new /atom/movable/screen/ghost/reenter_corpse()
using = new /atom/movable/screen/ghost/reenter_corpse(null, src)
using.screen_loc = ui_ghost_reenter_corpse
using.hud = src
static_inventory += using
using = new /atom/movable/screen/ghost/teleport()
using = new /atom/movable/screen/ghost/teleport(null, src)
using.screen_loc = ui_ghost_teleport
using.hud = src
static_inventory += using
using = new /atom/movable/screen/ghost/spawners()
using = new /atom/movable/screen/ghost/spawners(null, src)
using.screen_loc = ui_ghost_spawners
using.hud = src
static_inventory += using
using = new /atom/movable/screen/language_menu
using = new /atom/movable/screen/language_menu(null, src)
using.icon = ui_style
using.hud = src
static_inventory += using
/datum/hud/ghost/show_hud(version = 0, mob/viewmob)
+15 -20
View File
@@ -3,33 +3,27 @@
..()
var/atom/movable/screen/using
healths = new /atom/movable/screen/healths/guardian()
healths.hud = src
healths = new /atom/movable/screen/healths/guardian(null, src)
infodisplay += healths
using = new /atom/movable/screen/guardian/Manifest()
using = new /atom/movable/screen/guardian/Manifest(null, src)
using.screen_loc = ui_hand_position(2)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/guardian/Recall()
using = new /atom/movable/screen/guardian/Recall(null, src)
using.screen_loc = ui_hand_position(1)
using.hud = src
static_inventory += using
using = new owner.toggle_button_type()
using = new owner.toggle_button_type(null, src)
using.screen_loc = ui_storage1
using.hud = src
static_inventory += using
using = new /atom/movable/screen/guardian/ToggleLight()
using = new /atom/movable/screen/guardian/ToggleLight(null, src)
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
using = new /atom/movable/screen/guardian/Communicate()
using = new /atom/movable/screen/guardian/Communicate(null, src)
using.screen_loc = ui_back
using.hud = src
static_inventory += using
/datum/hud/dextrous/guardian/New(mob/living/simple_animal/hostile/guardian/owner) //for a dextrous guardian
@@ -38,7 +32,7 @@
if(istype(owner, /mob/living/simple_animal/hostile/guardian/dextrous))
var/atom/movable/screen/inventory/inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "internal storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
@@ -46,32 +40,32 @@
inv_box.slot_id = ITEM_SLOT_DEX_STORAGE
static_inventory += inv_box
using = new /atom/movable/screen/guardian/Communicate()
using = new /atom/movable/screen/guardian/Communicate(null, src)
using.screen_loc = ui_sstore1
static_inventory += using
else
using = new /atom/movable/screen/guardian/Communicate()
using = new /atom/movable/screen/guardian/Communicate(null, src)
using.screen_loc = ui_id
static_inventory += using
healths = new /atom/movable/screen/healths/guardian()
healths = new /atom/movable/screen/healths/guardian(null, src)
infodisplay += healths
using = new /atom/movable/screen/guardian/Manifest()
using = new /atom/movable/screen/guardian/Manifest(null, src)
using.screen_loc = ui_belt
static_inventory += using
using = new /atom/movable/screen/guardian/Recall()
using = new /atom/movable/screen/guardian/Recall(null, src)
using.screen_loc = ui_back
static_inventory += using
using = new owner.toggle_button_type()
using = new owner.toggle_button_type(null, src)
using.screen_loc = ui_storage2
static_inventory += using
using = new /atom/movable/screen/guardian/ToggleLight()
using = new /atom/movable/screen/guardian/ToggleLight(null, src)
using.screen_loc = ui_inventory
static_inventory += using
@@ -93,6 +87,7 @@
/atom/movable/screen/guardian
icon = 'icons/mob/guardian.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/guardian/Manifest
icon_state = "manifest"
+13 -6
View File
@@ -57,7 +57,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
var/list/inv_slots[SLOTS_AMT] // /atom/movable/screen/inventory objects, ordered by their slot ID.
var/list/hand_slots // /atom/movable/screen/inventory/hand objects, assoc list of "[held_index]" = object
var/list/atom/movable/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object
///Assoc list of controller groups, associated with key string group name with value of the plane master controller ref
var/list/atom/movable/plane_master_controller/plane_master_controllers = list()
///UI for screentips that appear when you mouse over things
var/atom/movable/screen/screentip/screentip_text
@@ -86,7 +87,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
var/atom/movable/screen/healths
var/atom/movable/screen/healthdoll
var/atom/movable/screen/internals
//GS13 Port - Add back Arousal
var/atom/movable/screen/arousal
@@ -112,10 +112,14 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
hand_slots = list()
for(var/mytype in subtypesof(/atom/movable/screen/plane_master))
var/atom/movable/screen/plane_master/instance = new mytype()
var/atom/movable/screen/plane_master/instance = new mytype(null, src)
plane_masters["[instance.plane]"] = instance
instance.backdrop(mymob)
for(var/mytype in subtypesof(/atom/movable/plane_master_controller))
var/atom/movable/plane_master_controller/controller_instance = new mytype(null, src)
plane_master_controllers[controller_instance.name] = controller_instance
screentip_text = new(null, src)
static_inventory += screentip_text
@@ -146,8 +150,8 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
healths = null
healthdoll = null
wanted_lvl = null
internals = null
arousal = null
lingchemdisplay = null
devilsouldisplay = null
lingstingdisplay = null
@@ -157,6 +161,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
combo_display = null
QDEL_LIST_ASSOC_VAL(plane_masters)
QDEL_LIST_ASSOC_VAL(plane_master_controllers)
QDEL_LIST(screenoverlays)
mymob = null
@@ -322,14 +327,13 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
hand_slots = list()
var/atom/movable/screen/inventory/hand/hand_box
for(var/i in 1 to mymob.held_items.len)
hand_box = new /atom/movable/screen/inventory/hand()
hand_box = new /atom/movable/screen/inventory/hand(null, src)
hand_box.name = mymob.get_held_index_name(i)
hand_box.icon = ui_style
hand_box.icon_state = "hand_[mymob.held_index_to_dir(i)]"
hand_box.screen_loc = ui_hand_position(i)
hand_box.held_index = i
hand_slots["[i]"] = hand_box
hand_box.hud = src
static_inventory += hand_box
hand_box.update_icon()
@@ -363,6 +367,9 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
listed_actions.insert_action(button)
if(SCRN_OBJ_IN_PALETTE)
palette_actions.insert_action(button)
if(SCRN_OBJ_INSERT_FIRST)
listed_actions.insert_action(button, index = 1)
position = SCRN_OBJ_IN_LIST
else // If we don't have it as a define, this is a screen_loc, and we should be floating
floating_actions += button
button.screen_loc = position
+50 -83
View File
@@ -4,6 +4,7 @@
/atom/movable/screen/human/toggle
name = "toggle"
icon_state = "toggle"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/human/toggle/Click()
@@ -26,6 +27,7 @@
/atom/movable/screen/human/equip
name = "equip"
icon_state = "act_equip"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/human/equip/Click()
if(ismecha(usr.loc)) // stops inventory actions in a mech
@@ -68,6 +70,7 @@
/atom/movable/screen/ling/sting
name = "current sting"
screen_loc = ui_lingstingdisplay
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/ling/sting/Click()
if(isobserver(usr))
@@ -183,54 +186,47 @@
var/atom/movable/screen/using
var/atom/movable/screen/inventory/inv_box
using = new/atom/movable/screen/language_menu
using = new/atom/movable/screen/language_menu(null, src)
using.icon = ui_style
if(!widescreenlayout) // CIT CHANGE
using.screen_loc = ui_boxlang // CIT CHANGE
using.hud = src
static_inventory += using
using = new /atom/movable/screen/area_creator
using = new /atom/movable/screen/area_creator(null, src)
using.icon = ui_style
if(!widescreenlayout) // CIT CHANGE
using.screen_loc = ui_boxarea // CIT CHANGE
using.hud = src
static_inventory += using
using = new /atom/movable/screen/voretoggle() //We fancy Vore now
using = new /atom/movable/screen/voretoggle(null, src) //We fancy Vore now
using.icon = tg_ui_icon_to_cit_ui(ui_style)
using.screen_loc = ui_voremode
if(!widescreenlayout)
using.screen_loc = ui_boxvore
using.hud = src
static_inventory += using
action_intent = new /atom/movable/screen/act_intent/segmented
action_intent = new /atom/movable/screen/act_intent/segmented(null, src)
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
assert_move_intent_ui(owner, TRUE)
// clickdelay
clickdelay = new
clickdelay.hud = src
clickdelay = new(null, src)
clickdelay.screen_loc = ui_clickdelay
static_inventory += clickdelay
// resistdelay
resistdelay = new
resistdelay.hud = src
resistdelay = new(null, src)
resistdelay.screen_loc = ui_resistdelay
static_inventory += resistdelay
using = new /atom/movable/screen/drop()
using = new /atom/movable/screen/drop(null, src)
using.icon = ui_style
using.screen_loc = ui_drop_throw
using.hud = src
static_inventory += using
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "uniform"
inv_box.icon = ui_style
inv_box.slot_id = ITEM_SLOT_ICLOTHING
@@ -239,7 +235,7 @@
inv_box.screen_loc = ui_iclothing
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "suit"
inv_box.icon = ui_style
inv_box.slot_id = ITEM_SLOT_OCLOTHING
@@ -250,21 +246,19 @@
build_hand_slots()
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_1"
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "id"
inv_box.icon = ui_style
inv_box.icon_state = "id"
@@ -273,7 +267,7 @@
inv_box.slot_id = ITEM_SLOT_ID
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
@@ -282,7 +276,7 @@
inv_box.slot_id = ITEM_SLOT_MASK
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "neck"
inv_box.icon = ui_style
inv_box.icon_state = "neck"
@@ -291,7 +285,7 @@
inv_box.slot_id = ITEM_SLOT_NECK
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "back"
inv_box.icon = ui_style
inv_box.icon_state = "back"
@@ -300,7 +294,7 @@
inv_box.slot_id = ITEM_SLOT_BACK
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "left pocket"
inv_box.icon = ui_style
inv_box.icon_state = "pocket"
@@ -309,7 +303,7 @@
inv_box.slot_id = ITEM_SLOT_LPOCKET
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "right pocket"
inv_box.icon = ui_style
inv_box.icon_state = "pocket"
@@ -318,7 +312,7 @@
inv_box.slot_id = ITEM_SLOT_RPOCKET
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "suit storage"
inv_box.icon = ui_style
inv_box.icon_state = "suit_storage"
@@ -327,32 +321,28 @@
inv_box.slot_id = ITEM_SLOT_SUITSTORE
static_inventory += inv_box
using = new /atom/movable/screen/resist()
using = new /atom/movable/screen/resist(null, src)
using.icon = ui_style
using.screen_loc = ui_overridden_resist // CIT CHANGE - changes this to overridden resist
using.hud = src
hotkeybuttons += using
rest_icon = new /atom/movable/screen/rest()
rest_icon = new /atom/movable/screen/rest(null, src)
rest_icon.icon = ui_style
rest_icon.screen_loc = ui_pull_resist
rest_icon.hud = src
static_inventory += rest_icon
//END OF CIT CHANGES
using = new /atom/movable/screen/human/toggle()
using = new /atom/movable/screen/human/toggle(null, src)
using.icon = ui_style
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
using = new /atom/movable/screen/human/equip()
using = new /atom/movable/screen/human/equip(null, src)
using.icon = ui_style
using.screen_loc = ui_equip_position(mymob)
using.hud = src
static_inventory += using
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "gloves"
inv_box.icon = ui_style
inv_box.icon_state = "gloves"
@@ -361,7 +351,7 @@
inv_box.slot_id = ITEM_SLOT_GLOVES
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "eyes"
inv_box.icon = ui_style
inv_box.icon_state = "glasses"
@@ -370,7 +360,7 @@
inv_box.slot_id = ITEM_SLOT_EYES
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "ears"
inv_box.icon = ui_style
inv_box.icon_state = "ears"
@@ -379,7 +369,7 @@
inv_box.slot_id = ITEM_SLOT_EARS
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "head"
inv_box.icon = ui_style
inv_box.icon_state = "head"
@@ -388,7 +378,7 @@
inv_box.slot_id = ITEM_SLOT_HEAD
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "shoes"
inv_box.icon = ui_style
inv_box.icon_state = "shoes"
@@ -397,7 +387,7 @@
inv_box.slot_id = ITEM_SLOT_FEET
toggleable_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "belt"
inv_box.icon = ui_style
inv_box.icon_state = "belt"
@@ -406,87 +396,67 @@
inv_box.slot_id = ITEM_SLOT_BELT
static_inventory += inv_box
throw_icon = new /atom/movable/screen/throw_catch()
throw_icon = new /atom/movable/screen/throw_catch(null, src)
throw_icon.icon = ui_style
throw_icon.screen_loc = ui_drop_throw
throw_icon.hud = src
hotkeybuttons += throw_icon
internals = new /atom/movable/screen/internals()
internals.hud = src
infodisplay += internals
healths = new /atom/movable/screen/healths()
healths.hud = src
healths = new /atom/movable/screen/healths(null, src)
infodisplay += healths
staminas = new /atom/movable/screen/staminas()
staminas.hud = src
staminas = new /atom/movable/screen/staminas(null, src)
infodisplay += staminas
if(!CONFIG_GET(flag/disable_stambuffer))
staminabuffer = new /atom/movable/screen/staminabuffer()
staminabuffer.hud = src
staminabuffer = new /atom/movable/screen/staminabuffer(null, src)
infodisplay += staminabuffer
//END OF CIT CHANGES
//GS13 Port - adds arousal and stamina to hud
arousal = new /atom/movable/screen/arousal()
arousal = new /atom/movable/screen/arousal(null, src)
arousal.icon_state = (owner.canbearoused == 1 ? "arousal0" : "")
arousal.hud = src
infodisplay += arousal
healthdoll = new /atom/movable/screen/healthdoll()
healthdoll.hud = src
healthdoll = new /atom/movable/screen/healthdoll(null, src)
infodisplay += healthdoll
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_pull_resist
static_inventory += pull_icon
lingchemdisplay = new /atom/movable/screen/ling/chems()
lingchemdisplay.hud = src
lingchemdisplay = new /atom/movable/screen/ling/chems(null, src)
infodisplay += lingchemdisplay
lingstingdisplay = new /atom/movable/screen/ling/sting()
lingstingdisplay.hud = src
lingstingdisplay = new /atom/movable/screen/ling/sting(null, src)
infodisplay += lingstingdisplay
devilsouldisplay = new /atom/movable/screen/devil/soul_counter
devilsouldisplay.hud = src
devilsouldisplay = new /atom/movable/screen/devil/soul_counter(null, src)
infodisplay += devilsouldisplay
blood_display = new /atom/movable/screen/bloodsucker/blood_counter // Blood Volume
blood_display.hud = src
blood_display = new /atom/movable/screen/bloodsucker/blood_counter(null, src) // Blood Volume
infodisplay += blood_display
vamprank_display = new /atom/movable/screen/bloodsucker/rank_counter // Bloodsucker Rank
vamprank_display.hud = src
vamprank_display = new /atom/movable/screen/bloodsucker/rank_counter(null, src) // Bloodsucker Rank
infodisplay += vamprank_display
sunlight_display = new /atom/movable/screen/bloodsucker/sunlight_counter // Sunlight
sunlight_display.hud = src
sunlight_display = new /atom/movable/screen/bloodsucker/sunlight_counter(null, src) // Sunlight
infodisplay += sunlight_display
coolant_display = new /atom/movable/screen/synth/coolant_counter //Coolant & cooling efficiency readouts for Synths.
coolant_display.hud = src
coolant_display = new /atom/movable/screen/synth/coolant_counter(null, src) //Coolant & cooling efficiency readouts for Synths.
infodisplay += coolant_display
zone_select = new /atom/movable/screen/zone_sel()
zone_select = new /atom/movable/screen/zone_sel(null, src)
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
combo_display = new /atom/movable/screen/combo()
combo_display = new /atom/movable/screen/combo(null, src)
infodisplay += combo_display
for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[TOBITSHIFT(inv.slot_id) + 1] = inv
inv.update_icon()
@@ -507,10 +477,9 @@
// make new ones
// walk/run
using = new /atom/movable/screen/mov_intent
using = new /atom/movable/screen/mov_intent(null, src)
using.icon = tg_ui_icon_to_cit_ui(ui_style) // CIT CHANGE - overrides mov intent icon
using.screen_loc = ui_movi
using.hud = src
using.update_icon()
static_inventory += using
if(!on_new)
@@ -520,19 +489,17 @@
return
// sprint button
using = new /atom/movable/screen/sprintbutton
using = new /atom/movable/screen/sprintbutton(null, src)
using.icon = tg_ui_icon_to_cit_ui(ui_style)
using.icon_state = ((owner.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) ? "act_sprint_on" : "act_sprint")
using.screen_loc = ui_movi
using.hud = src
static_inventory += using
if(!on_new)
owner?.client?.screen += using
// same as above but buffer.
sprint_buffer = new /atom/movable/screen/sprint_buffer
sprint_buffer = new /atom/movable/screen/sprint_buffer(null, src)
sprint_buffer.screen_loc = ui_sprintbufferloc
sprint_buffer.hud = src
static_inventory += sprint_buffer
if(!on_new)
owner?.client?.screen += using
+2 -4
View File
@@ -4,13 +4,11 @@
/datum/hud/lavaland_elite/New(mob/living/simple_animal/hostile/asteroid/elite)
..()
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.hud = src
pull_icon.update_icon()
pull_icon.screen_loc = ui_living_pull
static_inventory += pull_icon
healths = new /atom/movable/screen/healths/lavaland_elite()
healths.hud = src
healths = new /atom/movable/screen/healths/lavaland_elite(null, src)
infodisplay += healths
+17 -35
View File
@@ -3,48 +3,42 @@
var/atom/movable/screen/using
var/atom/movable/screen/inventory/inv_box
action_intent = new /atom/movable/screen/act_intent()
action_intent = new /atom/movable/screen/act_intent(null, src)
action_intent.icon = ui_style
action_intent.icon_state = mymob.a_intent
action_intent.screen_loc = ui_acti
action_intent.hud = src
static_inventory += action_intent
using = new /atom/movable/screen/mov_intent()
using = new /atom/movable/screen/mov_intent(null, src)
using.icon = ui_style
using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking")
using.screen_loc = ui_movi
using.hud = src
static_inventory += using
using = new/atom/movable/screen/language_menu
using = new/atom/movable/screen/language_menu(null, src)
using.icon = ui_style
using.hud = src
static_inventory += using
using = new /atom/movable/screen/drop()
using = new /atom/movable/screen/drop(null, src)
using.icon = ui_style
using.screen_loc = ui_drop_throw
using.hud = src
static_inventory += using
build_hand_slots()
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_1_m" //extra wide!
using.screen_loc = ui_swaphand_position(owner,1)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swap_hand()
using = new /atom/movable/screen/swap_hand(null, src)
using.icon = ui_style
using.icon_state = "swap_2"
using.screen_loc = ui_swaphand_position(owner,2)
using.hud = src
static_inventory += using
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "mask"
inv_box.icon = ui_style
inv_box.icon_state = "mask"
@@ -53,7 +47,7 @@
inv_box.slot_id = ITEM_SLOT_MASK
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "neck"
inv_box.icon = ui_style
inv_box.icon_state = "neck"
@@ -62,7 +56,7 @@
inv_box.slot_id = ITEM_SLOT_NECK
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "head"
inv_box.icon = ui_style
inv_box.icon_state = "head"
@@ -71,7 +65,7 @@
inv_box.slot_id = ITEM_SLOT_HEAD
static_inventory += inv_box
inv_box = new /atom/movable/screen/inventory()
inv_box = new /atom/movable/screen/inventory(null, src)
inv_box.name = "back"
inv_box.icon = ui_style
inv_box.icon_state = "back"
@@ -79,53 +73,41 @@
inv_box.slot_id = ITEM_SLOT_BACK
static_inventory += inv_box
throw_icon = new /atom/movable/screen/throw_catch()
throw_icon = new /atom/movable/screen/throw_catch(null, src)
throw_icon.icon = ui_style
throw_icon.screen_loc = ui_drop_throw
throw_icon.hud = src
hotkeybuttons += throw_icon
internals = new /atom/movable/screen/internals()
internals.hud = src
infodisplay += internals
healths = new /atom/movable/screen/healths()
healths.hud = src
healths = new /atom/movable/screen/healths(null, src)
infodisplay += healths
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.screen_loc = ui_pull_resist
pull_icon.hud = src
pull_icon.update_icon()
static_inventory += pull_icon
lingchemdisplay = new /atom/movable/screen/ling/chems()
lingchemdisplay.hud = src
lingchemdisplay = new /atom/movable/screen/ling/chems(null, src)
infodisplay += lingchemdisplay
lingstingdisplay = new /atom/movable/screen/ling/sting()
lingstingdisplay.hud = src
lingstingdisplay = new /atom/movable/screen/ling/sting(null, src)
infodisplay += lingstingdisplay
zone_select = new /atom/movable/screen/zone_sel()
zone_select = new /atom/movable/screen/zone_sel(null, src)
zone_select.icon = ui_style
zone_select.hud = src
zone_select.update_icon()
static_inventory += zone_select
mymob.client.screen = list()
using = new /atom/movable/screen/resist()
using = new /atom/movable/screen/resist(null, src)
using.icon = ui_style
using.screen_loc = ui_pull_resist
using.hud = src
hotkeybuttons += using
for(var/atom/movable/screen/inventory/inv in (static_inventory + toggleable_inventory))
if(inv.slot_id)
inv.hud = src
inv_slots[TOBITSHIFT(inv.slot_id) + 1] = inv
inv.update_icon()
+189 -16
View File
@@ -1,9 +1,12 @@
#define SHUTTER_MOVEMENT_DURATION 0.4 SECONDS
#define SHUTTER_WAIT_DURATION 0.2 SECONDS
/// Maximum number of station trait buttons we will display, please think hard before creating scenarios where there are more than this
#define MAX_STATION_TRAIT_BUTTONS_VERTICAL 3
/datum/hud/new_player
///Whether the menu is currently on the client's screen or not
var/menu_hud_status = TRUE
var/list/shown_station_trait_buttons
/datum/hud/new_player/New(mob/dead/new_player/owner)
. = ..()
@@ -13,29 +16,89 @@
/datum/hud/new_player/proc/populate_buttons(mob/dead/new_player/owner)
var/list/buttons = subtypesof(/atom/movable/screen/lobby)
for(var/button_type in buttons)
var/atom/movable/screen/lobby/lobbyscreen = new button_type(our_hud = src)
for (var/atom/movable/screen/lobby/lobbyscreen as anything in buttons)
if (!initial(lobbyscreen.always_available))
continue
lobbyscreen = new lobbyscreen(our_hud = src)
lobbyscreen.SlowInit()
lobbyscreen.hud = src
static_inventory += lobbyscreen
if(!lobbyscreen.always_shown)
lobbyscreen.RegisterSignal(src, COMSIG_HUD_LOBBY_COLLAPSED, TYPE_PROC_REF(/atom/movable/screen/lobby, collapse_button))
lobbyscreen.RegisterSignal(src, COMSIG_HUD_LOBBY_EXPANDED, TYPE_PROC_REF(/atom/movable/screen/lobby, expand_button))
if(istype(lobbyscreen, /atom/movable/screen/lobby/button))
var/atom/movable/screen/lobby/button/lobby_button = lobbyscreen
lobby_button.owner = REF(owner)
if(owner.client.is_localhost())
var/atom/movable/screen/lobby/button/start_now/start_button = new(our_hud = src)
start_button.SlowInit()
static_inventory += start_button
start_button.RegisterSignal(src, COMSIG_HUD_LOBBY_COLLAPSED, TYPE_PROC_REF(/atom/movable/screen/lobby, collapse_button))
start_button.RegisterSignal(src, COMSIG_HUD_LOBBY_EXPANDED, TYPE_PROC_REF(/atom/movable/screen/lobby, expand_button))
show_hud(hud_version)
/// Load and then display the buttons for relevant station traits
/datum/hud/new_player/proc/show_station_trait_buttons()
var/mob/dead/new_player/user = mymob
if (!user.age_verify())
return
for (var/datum/station_trait/trait as anything in GLOB.lobby_station_traits)
if (QDELETED(trait) || !trait.can_display_lobby_button(mymob.client))
remove_station_trait_button(trait)
continue
if(LAZYACCESS(shown_station_trait_buttons, trait))
continue
var/atom/movable/screen/lobby/button/sign_up/sign_up_button = new(our_hud = src)
trait.setup_lobby_button(sign_up_button)
static_inventory |= sign_up_button
LAZYSET(shown_station_trait_buttons, trait, sign_up_button)
RegisterSignal(trait, COMSIG_PARENT_QDELETING, PROC_REF(remove_station_trait_button))
place_station_trait_buttons()
/// Display the buttosn for relevant station traits.
/datum/hud/new_player/proc/place_station_trait_buttons()
if(hud_version != HUD_STYLE_STANDARD || !mymob?.client)
return
var/y_offset = 397
var/x_offset = 233
var/y_button_offset = 27
var/x_button_offset = -27
var/iteration = 0
for(var/trait in shown_station_trait_buttons)
var/atom/movable/screen/lobby/button/sign_up/sign_up_button = shown_station_trait_buttons[trait]
iteration++
sign_up_button.screen_loc = offset_to_screen_loc(x_offset, y_offset, mymob.client.view)
mymob.client.screen |= sign_up_button
if (iteration >= MAX_STATION_TRAIT_BUTTONS_VERTICAL)
iteration = 0
y_offset = 397
x_offset += x_button_offset
else
y_offset += y_button_offset
/// Remove a station trait button, then re-order the rest.
/datum/hud/new_player/proc/remove_station_trait_button(datum/station_trait/trait)
SIGNAL_HANDLER
var/atom/movable/screen/lobby/button/sign_up/button = LAZYACCESS(shown_station_trait_buttons, trait)
if(!button)
return
LAZYREMOVE(shown_station_trait_buttons, trait)
UnregisterSignal(trait, COMSIG_PARENT_QDELETING)
static_inventory -= button
qdel(button)
place_station_trait_buttons()
/atom/movable/screen/lobby
plane = SPLASHSCREEN_PLANE
layer = LOBBY_MENU_LAYER
screen_loc = "TOP,CENTER"
///Whether this HUD element can be hidden from the client's "screen" (moved off-screen) or not
var/always_shown = FALSE
/// If true we will create this button every time the HUD is generated
var/always_available = TRUE
/atom/movable/screen/lobby/New(loc, datum/hud/our_hud, ...)
if(our_hud)
hud = our_hud
set_new_hud(our_hud)
return ..()
/// Run sleeping actions after initialize
@@ -62,15 +125,20 @@
screen_loc = "TOP,CENTER:-61"
/atom/movable/screen/lobby/button
mouse_over_pointer = MOUSE_HAND_POINTER
///Is the button currently enabled?
var/enabled = TRUE
VAR_PROTECTED/enabled = TRUE
///Is the button currently being hovered over with the mouse?
var/highlighted = FALSE
/// The ref of the mob that owns this button. Only the owner can click on it.
var/owner
///Should this button play the select sound?
var/select_sound_play = TRUE
/atom/movable/screen/lobby/button/Click(location, control, params)
if(owner != REF(usr))
if(usr != get_mob())
return
var/mob/dead/new_player/user = usr
if(!user.age_verify())
return
. = ..()
@@ -78,11 +146,19 @@
if(!enabled)
return
flick("[base_icon_state]_pressed", src)
if(select_sound_play)
var/sound/ui_select_sound = sound('sound/misc/menu/ui_select1.ogg')
ui_select_sound.frequency = get_rand_frequency_low_range()
SEND_SOUND(hud.mymob, ui_select_sound)
update_appearance(UPDATE_ICON)
return TRUE
/atom/movable/screen/lobby/button/MouseEntered(location,control,params)
if(owner != REF(usr))
if(usr != get_mob())
return
var/mob/dead/new_player/user = usr
if(!user.age_verify())
return
. = ..()
@@ -90,7 +166,11 @@
update_appearance(UPDATE_ICON)
/atom/movable/screen/lobby/button/MouseExited()
if(owner != REF(usr))
if(usr != get_mob())
return
var/mob/dead/new_player/user = usr
if(!user.age_verify())
return
. = ..()
@@ -113,6 +193,7 @@
return FALSE
enabled = status
update_appearance(UPDATE_ICON)
mouse_over_pointer = enabled ? MOUSE_HAND_POINTER : MOUSE_INACTIVE_POINTER
return TRUE
///Prefs menu
@@ -176,6 +257,7 @@
new_player.ready = PLAYER_NOT_READY
base_icon_state = "not_ready"
update_appearance(UPDATE_ICON)
SEND_SIGNAL(hud, COMSIG_HUD_PLAYER_READY_TOGGLE)
///Shown when the game has started
/atom/movable/screen/lobby/button/join
@@ -184,12 +266,13 @@
icon = 'icons/hud/lobby/join.dmi'
icon_state = "" //Default to not visible
base_icon_state = "join_game"
enabled = FALSE
enabled = null // set in init
/atom/movable/screen/lobby/button/join/Initialize(mapload)
. = ..()
switch(SSticker.current_state)
if(GAME_STATE_PREGAME, GAME_STATE_STARTUP)
set_button_status(FALSE)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(show_join_button))
if(GAME_STATE_SETTING_UP)
set_button_status(TRUE)
@@ -248,13 +331,14 @@
icon = 'icons/hud/lobby/observe.dmi'
icon_state = "observe_disabled"
base_icon_state = "observe"
enabled = FALSE
enabled = null // set in init
/atom/movable/screen/lobby/button/observe/Initialize(mapload)
. = ..()
if(SSticker.current_state > GAME_STATE_STARTUP)
set_button_status(TRUE)
else
set_button_status(FALSE)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_PREGAME, PROC_REF(enable_observing))
/atom/movable/screen/lobby/button/observe/Click(location, control, params)
@@ -376,6 +460,23 @@
var/mob/dead/new_player/new_player = hud.mymob
new_player.handle_player_polling()
/// A generic "sign up" button used by station traits
/atom/movable/screen/lobby/button/sign_up
icon = 'icons/hud/lobby/signup_button.dmi'
icon_state = "signup"
base_icon_state = "signup"
always_available = FALSE
/atom/movable/screen/lobby/button/sign_up/MouseEntered(location, control, params)
. = ..()
if(QDELETED(src) || !desc)
return
openToolTip(usr, tip_src = src, params = params, title = name, content = desc,)
/atom/movable/screen/lobby/button/sign_up/MouseExited()
. = ..()
closeToolTip(usr)
/atom/movable/screen/lobby/button/collapse
name = "Collapse Lobby Menu"
icon = 'icons/hud/lobby/collapse_expand.dmi'
@@ -385,6 +486,27 @@
screen_loc = "TOP:-82,CENTER:-54"
always_shown = TRUE
var/blip_enabled = TRUE
/atom/movable/screen/lobby/button/collapse/Initialize(mapload, datum/hud/hud_owner)
. = ..()
switch(SSticker.current_state)
if(GAME_STATE_PREGAME, GAME_STATE_STARTUP)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(disable_blip))
RegisterSignal(hud, COMSIG_HUD_PLAYER_READY_TOGGLE, PROC_REF(on_player_ready_toggle))
if(GAME_STATE_SETTING_UP)
blip_enabled = FALSE
RegisterSignal(SSticker, COMSIG_TICKER_ERROR_SETTING_UP, PROC_REF(enable_blip))
else
blip_enabled = FALSE
add_overlay(get_blip_overlay())
update_icon(UPDATE_OVERLAYS)
/atom/movable/screen/lobby/button/collapse/update_overlays()
. = ..()
. += get_blip_overlay()
/atom/movable/screen/lobby/button/collapse/Click(location, control, params)
. = ..()
if(!.)
@@ -414,6 +536,38 @@
sleep(2 * SHUTTER_MOVEMENT_DURATION + SHUTTER_WAIT_DURATION)
set_button_status(TRUE)
///Proc to update the ready blip state upon new player's ready status change
/atom/movable/screen/lobby/button/collapse/proc/on_player_ready_toggle()
SIGNAL_HANDLER
update_appearance(UPDATE_ICON)
///Returns a ready blip overlay depending on the player's ready state
/atom/movable/screen/lobby/button/collapse/proc/get_blip_overlay()
var/blip_icon_state = "ready_blip"
if(blip_enabled && hud)
var/mob/dead/new_player/new_player = hud.mymob
blip_icon_state += "_[new_player.ready ? "" : "not_"]ready"
else
blip_icon_state += "_disabled"
var/mutable_appearance/ready_blip = mutable_appearance(icon, blip_icon_state)
return ready_blip
///Disables the ready blip; makes us listen for the setup error to re-enable the blip
/atom/movable/screen/lobby/button/collapse/proc/disable_blip()
SIGNAL_HANDLER
blip_enabled = FALSE
UnregisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP)
RegisterSignal(SSticker, COMSIG_TICKER_ERROR_SETTING_UP, PROC_REF(enable_blip))
update_appearance(UPDATE_ICON)
///Enables the ready blip; makes us listen for the setup completion and game start to disable the blip
/atom/movable/screen/lobby/button/collapse/proc/enable_blip()
SIGNAL_HANDLER
blip_enabled = TRUE
UnregisterSignal(SSticker, COMSIG_TICKER_ERROR_SETTING_UP)
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_SETTING_UP, PROC_REF(disable_blip))
update_appearance(UPDATE_ICON)
///Moves the button to the top of the screen, leaving only the screen part in view
///Sends a signal on the hud for the menu hud elements to listen to
/atom/movable/screen/lobby/button/collapse/proc/collapse_menu()
@@ -422,12 +576,14 @@
animate(src, transform = transform, time = SHUTTER_MOVEMENT_DURATION + SHUTTER_WAIT_DURATION)
//then pull the button up with the shutter and leave it on the edge of the screen
animate(transform = transform.Translate(x = 0, y = 134), time = SHUTTER_MOVEMENT_DURATION, easing = CUBIC_EASING|EASE_IN)
SEND_SOUND(hud.mymob, sound('sound/misc/menu/menu_rollup1.ogg'))
///Extends the button back to its usual spot
///Sends a signal on the hud for the menu hud elements to listen to
/atom/movable/screen/lobby/button/collapse/proc/expand_menu()
SEND_SIGNAL(hud, COMSIG_HUD_LOBBY_EXPANDED)
animate(src, transform = matrix(), time = SHUTTER_MOVEMENT_DURATION, easing = CUBIC_EASING|EASE_OUT)
SEND_SOUND(hud.mymob, sound('sound/misc/menu/menu_rolldown1.ogg'))
/atom/movable/screen/lobby/shutter
icon = 'icons/hud/lobby/shutter.dmi'
@@ -448,5 +604,22 @@
//pull the shutter back off-screen
animate(transform = matrix(), time = SHUTTER_MOVEMENT_DURATION, easing = CUBIC_EASING|EASE_IN)
/// LOCALHOST ONLY - Start Now button
/atom/movable/screen/lobby/button/start_now
name = "Start Now (LOCALHOST ONLY)"
screen_loc = "TOP:-146,CENTER:-54"
icon = 'icons/hud/lobby/start_now.dmi'
icon_state = "start_now"
base_icon_state = "start_now"
always_available = FALSE
select_sound_play = FALSE
/atom/movable/screen/lobby/button/start_now/Click(location, control, params)
. = ..()
if(!. || !usr.client.is_localhost() || !check_rights_for(usr.client, R_SERVER))
return
SEND_SOUND(hud.mymob, sound('sound/effects/splat.ogg', volume = 50))
SSticker.start_immediately = TRUE
#undef SHUTTER_MOVEMENT_DURATION
#undef SHUTTER_WAIT_DURATION
@@ -0,0 +1,90 @@
///Atom that manages and controls multiple planes. It's an atom so we can hook into add_filter etc. Multiple controllers can control one plane.
/atom/movable/plane_master_controller
///List of planes in this controllers control. Initially this is a normal list, but becomes an assoc list of plane numbers as strings | plane instance
var/list/controlled_planes = list()
///hud that owns this controller
var/datum/hud/owner_hud
INITIALIZE_IMMEDIATE(/atom/movable/plane_master_controller)
///Ensures that all the planes are correctly in the controlled_planes list.
/atom/movable/plane_master_controller/Initialize(mapload, datum/hud/hud)
. = ..()
owner_hud = hud
var/assoc_controlled_planes = list()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/instance = owner_hud.plane_masters["[i]"]
if(!instance) //If we looked for a hud that isn't instanced, just keep going
stack_trace("[i] isn't a valid plane master layer for [owner_hud.type], are you sure it exists in the first place?")
continue
assoc_controlled_planes["[i]"] = instance
controlled_planes = assoc_controlled_planes
// From BeeStation
/atom/movable/plane_master_controller/Destroy()
if(owner_hud)
owner_hud.plane_master_controllers -= src
controlled_planes.Cut()
return ..()
///Full override so we can just use filterrific
/atom/movable/plane_master_controller/add_filter(name, priority, list/params)
. = ..()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.add_filter(name, priority, params)
///Full override so we can just use filterrific
/atom/movable/plane_master_controller/remove_filter(name_or_names)
. = ..()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.remove_filter(name_or_names)
/atom/movable/plane_master_controller/update_filters()
. = ..()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.update_filters()
///Gets all filters for this controllers plane masters
/atom/movable/plane_master_controller/proc/get_filters(name)
. = list()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
. += pm_iterator.get_filter(name)
///Transitions all filters owned by this plane master controller
/atom/movable/plane_master_controller/transition_filter(name, time, list/new_params, easing, loop)
. = ..()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.transition_filter(name, time, new_params, easing, loop)
///Full override so we can just use filterrific
/atom/movable/plane_master_controller/add_atom_colour(coloration, colour_priority)
. = ..()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.add_atom_colour(coloration, colour_priority)
///Removes an instance of colour_type from the atom's atom_colours list
/atom/movable/plane_master_controller/remove_atom_colour(colour_priority, coloration)
. = ..()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.remove_atom_colour(colour_priority, coloration)
///Resets the atom's color to null, and then sets it to the highest priority colour available
/atom/movable/plane_master_controller/update_atom_colour()
for(var/i in controlled_planes)
var/atom/movable/screen/plane_master/pm_iterator = controlled_planes[i]
pm_iterator.update_atom_colour()
/atom/movable/plane_master_controller/game
name = PLANE_MASTERS_GAME
controlled_planes = list(FLOOR_PLANE, GAME_PLANE, WALL_PLANE, ABOVE_WALL_PLANE, LIGHTING_PLANE, EMISSIVE_PLANE)
+2 -2
View File
@@ -7,8 +7,8 @@
icon_state = "radial_center"
/atom/movable/screen/radial/persistent/center/Click(location, control, params)
if(usr.client == parent.current_user)
parent.element_chosen(null,usr)
if(usr == get_mob())
parent.element_chosen(null, usr)
/atom/movable/screen/radial/persistent/center/MouseEntered(location, control, params)
. = ..()
+1 -2
View File
@@ -2,6 +2,5 @@
/datum/hud/revenant/New(mob/owner)
..()
healths = new /atom/movable/screen/healths/revenant()
healths.hud = src
healths = new /atom/movable/screen/healths/revenant(null, src)
infodisplay += healths
+20 -39
View File
@@ -1,5 +1,6 @@
/atom/movable/screen/robot
icon = 'icons/mob/screen_cyborg.dmi'
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/robot/module
name = "cyborg module"
@@ -77,64 +78,56 @@
var/mob/living/silicon/robot/robit = mymob
var/atom/movable/screen/using
using = new/atom/movable/screen/language_menu
using = new/atom/movable/screen/language_menu(null, src)
using.screen_loc = ui_borg_language_menu
static_inventory += using
//Radio
using = new /atom/movable/screen/robot/radio()
using = new /atom/movable/screen/robot/radio(null, src)
using.screen_loc = ui_borg_radio
using.hud = src
static_inventory += using
//Module select
if(!robit.inv1)
robit.inv1 = new /atom/movable/screen/robot/module1()
robit.inv1 = new /atom/movable/screen/robot/module1(null, src)
robit.inv1.screen_loc = ui_inv1
robit.inv1.hud = src
static_inventory += robit.inv1
if(!robit.inv2)
robit.inv2 = new /atom/movable/screen/robot/module2()
robit.inv2 = new /atom/movable/screen/robot/module2(null, src)
robit.inv2.screen_loc = ui_inv2
robit.inv2.hud = src
static_inventory += robit.inv2
if(!robit.inv3)
robit.inv3 = new /atom/movable/screen/robot/module3()
robit.inv3 = new /atom/movable/screen/robot/module3(null, src)
robit.inv3.screen_loc = ui_inv3
robit.inv3.hud = src
static_inventory += robit.inv3
//End of module select
using = new /atom/movable/screen/robot/lamp()
using = new /atom/movable/screen/robot/lamp(null, src)
using.screen_loc = ui_borg_lamp
using.hud = src
static_inventory += using
robit.lampButton = using
var/atom/movable/screen/robot/lamp/lampscreen = using
lampscreen.robot = robit
//Photography stuff
using = new /atom/movable/screen/ai/image_take()
using = new /atom/movable/screen/ai/image_take(null, src)
using.screen_loc = ui_borg_camera
using.hud = src
static_inventory += using
//Sec/Med HUDs
using = new /atom/movable/screen/robot/sensors()
using = new /atom/movable/screen/robot/sensors(null, src)
using.screen_loc = ui_borg_sensor
using.hud = src
static_inventory += using
//Borg Integrated Tablet
using = new /atom/movable/screen/robot/modPC()
using = new /atom/movable/screen/robot/modPC(null, src)
using.screen_loc = ui_borg_tablet
using.hud = src
static_inventory += using
robit.interfaceButton = using
if(robit.modularInterface)
@@ -143,64 +136,54 @@
tabletbutton.robot = robit
//Alerts
using = new /atom/movable/screen/robot/alerts()
using = new /atom/movable/screen/robot/alerts(null, src)
using.screen_loc = ui_borg_alerts
using.hud = src
static_inventory += using
//Thrusters
using = new /atom/movable/screen/robot/thrusters()
using = new /atom/movable/screen/robot/thrusters(null, src)
using.screen_loc = ui_borg_thrusters
using.hud = src
static_inventory += using
robit.thruster_button = using
//PDA message
using = new /atom/movable/screen/robot/pda_msg_send
using = new /atom/movable/screen/robot/pda_msg_send(null, src)
using.screen_loc = ui_borg_pda_send
using.hud = src
static_inventory += using
//PDA log
using = new /atom/movable/screen/robot/pda_msg_show
using = new /atom/movable/screen/robot/pda_msg_show(null, src)
using.screen_loc = ui_borg_pda_log
using.hud = src
static_inventory += using
//Intent
action_intent = new /atom/movable/screen/act_intent/robot()
action_intent = new /atom/movable/screen/act_intent/robot(null, src)
action_intent.icon_state = mymob.a_intent
action_intent.hud = src
static_inventory += action_intent
assert_move_intent_ui(owner, TRUE)
//Health
healths = new /atom/movable/screen/healths/robot()
healths.hud = src
healths = new /atom/movable/screen/healths/robot(null, src)
infodisplay += healths
//Installed Module
robit.hands = new /atom/movable/screen/robot/module()
robit.hands = new /atom/movable/screen/robot/module(null, src)
robit.hands.screen_loc = ui_borg_module
robit.hands.hud = src
static_inventory += robit.hands
//Store
module_store_icon = new /atom/movable/screen/robot/store()
module_store_icon = new /atom/movable/screen/robot/store(null, src)
module_store_icon.screen_loc = ui_borg_store
module_store_icon.hud = src
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = 'icons/mob/screen_cyborg.dmi'
pull_icon.screen_loc = ui_borg_pull
pull_icon.hud = src
pull_icon.update_icon()
hotkeybuttons += pull_icon
zone_select = new /atom/movable/screen/zone_sel/robot()
zone_select.hud = src
zone_select = new /atom/movable/screen/zone_sel/robot(null, src)
zone_select.update_icon()
static_inventory += zone_select
@@ -221,7 +204,6 @@
using = new /atom/movable/screen/mov_intent
using.icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
using.screen_loc = ui_borg_movi
using.hud = src
using.update_icon()
static_inventory += using
if(!on_new)
@@ -235,7 +217,6 @@
using.icon = 'modular_citadel/icons/ui/screen_cyborg.dmi'
using.icon_state = owner.cansprint ? ((owner.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) ? "act_sprint_on" : "act_sprint") : "act_sprint_locked"
using.screen_loc = ui_borg_movi
using.hud = src
static_inventory += using
if(!on_new)
owner?.client?.screen += using
+72 -81
View File
@@ -17,7 +17,7 @@
/// A reference to the object in the slot. Grabs or items, generally.
var/obj/master = null
/// A reference to the owner HUD, if any.
var/datum/hud/hud = null
VAR_PRIVATE/datum/hud/hud = null
/**
* Map name assigned to this object.
* Automatically set by /client/proc/add_obj_to_map.
@@ -31,12 +31,36 @@
* But for now, this works.
*/
var/del_on_map_removal = TRUE
/// If FALSE, this will not be cleared when calling /client/clear_screen()
// var/clear_with_screen = TRUE // Unimplemented
/// If TRUE, clicking the screen element will fall through and perform a default "Click" call
/// Obviously this requires your Click override, if any, to call parent on their own.
/// This is set to FALSE to default to dissade you from doing this.
/// Generally we don't want default Click stuff, which results in bugs like using Telekinesis on a screen element
/// or trying to point your gun at your screen.
var/default_click = FALSE
/atom/movable/screen/Initialize(mapload, datum/hud/hud_owner)
. = ..()
if(isnull(hud_owner)) //some screens set their hud owners on /new, this prevents overriding them with null post atoms init
return
set_new_hud(hud_owner)
/atom/movable/screen/Destroy()
master = null
hud = null
return ..()
/atom/movable/screen/Click(location, control, params)
if(flags_1 & INITIALIZED_1)
SEND_SIGNAL(src, COMSIG_SCREEN_ELEMENT_CLICK, location, control, params, usr)
if(default_click)
return ..()
///Screen elements are always on top of the players screen and don't move so yes they are adjacent
/atom/movable/screen/Adjacent(atom/neighbor, atom/target, atom/movable/mover)
return TRUE
/atom/movable/screen/examine(mob/user)
return list()
@@ -46,6 +70,26 @@
/atom/movable/screen/proc/component_click(atom/movable/screen/component_button/component, params)
return
///setter used to set our new hud
/atom/movable/screen/proc/set_new_hud(datum/hud/hud_owner)
if(hud)
UnregisterSignal(hud, COMSIG_PARENT_QDELETING)
if(isnull(hud_owner))
hud = null
return
hud = hud_owner
RegisterSignal(hud, COMSIG_PARENT_QDELETING, PROC_REF(on_hud_delete))
/// Returns the mob this is being displayed to, if any
/atom/movable/screen/proc/get_mob()
RETURN_TYPE(/mob)
return hud?.mymob
/atom/movable/screen/proc/on_hud_delete(datum/source)
SIGNAL_HANDLER
set_new_hud(hud_owner = null)
/atom/movable/screen/text
icon = null
icon_state = null
@@ -57,6 +101,7 @@
/atom/movable/screen/swap_hand
plane = HUD_PLANE
name = "swap hand"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/swap_hand/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else
@@ -85,12 +130,14 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "craft"
screen_loc = ui_crafting
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/area_creator
name = "create new area"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "area_edit"
screen_loc = ui_building
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/area_creator/Click()
if(usr.incapacitated() || (isobserver(usr) && !IsAdminGhost(usr)))
@@ -106,11 +153,10 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "talk_wheel"
screen_loc = ui_language_menu
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/language_menu/Click()
var/mob/M = usr
var/datum/language_holder/H = M.get_language_holder()
H.open_language_menu(usr)
usr.get_language_holder().open_language_menu(usr)
/atom/movable/screen/inventory
/// The identifier for the slot. It has nothing to do with ID cards.
@@ -172,7 +218,7 @@
var/image/item_overlay = image(holding)
item_overlay.alpha = 92
if(!user.can_equip(holding, slot_id, disable_warning = TRUE, bypass_equip_delay_self = TRUE))
if(!holding.mob_can_equip(user, slot_id, disable_warning = TRUE, bypass_equip_delay_self = TRUE))
item_overlay.color = "#FF0000"
else
item_overlay.color = "#00ff00"
@@ -247,6 +293,7 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_drop"
plane = HUD_PLANE
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/drop/Click()
if(usr.stat == CONSCIOUS)
@@ -256,6 +303,7 @@
name = "intent"
icon_state = "help"
screen_loc = ui_acti
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/act_intent/Click(location, control, params)
usr.a_intent_change(INTENT_HOTKEY_RIGHT)
@@ -287,76 +335,11 @@
icon = 'icons/mob/screen_cyborg.dmi'
screen_loc = ui_borg_intents
/atom/movable/screen/internals
name = "toggle internals"
icon_state = "internal0"
screen_loc = ui_internal
/atom/movable/screen/internals/Click()
if(!iscarbon(usr))
return
var/mob/living/carbon/C = usr
if(C.incapacitated())
return
if(C.internal)
C.internal = null
to_chat(C, span_notice("You are no longer running on internals."))
icon_state = "internal0"
else
if(!C.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(HAS_TRAIT(C, TRAIT_NO_INTERNALS))
to_chat(C, span_warning("Due to cumbersome equipment or anatomy, you are currently unable to use internals!"))
return
var/obj/item/clothing/check
var/internals = FALSE
for(check in GET_INTERNAL_SLOTS(C))
if(istype(check, /obj/item/clothing/mask))
var/obj/item/clothing/mask/M = check
if(M.mask_adjusted)
M.adjustmask(C)
if((check.clothing_flags & ALLOWINTERNALS))
internals = TRUE
if(!internals)
to_chat(C, span_warning("You are not wearing an internals mask!"))
return
var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank)
if(I)
to_chat(C, span_notice("You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))]."))
C.internal = I
else if(ishuman(C))
var/mob/living/carbon/human/H = C
if(istype(H.s_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.s_store] on your [H.wear_suit.name]."))
H.internal = H.s_store
else if(istype(H.belt, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.belt] on your belt."))
H.internal = H.belt
else if(istype(H.l_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.l_store] in your left pocket."))
H.internal = H.l_store
else if(istype(H.r_store, /obj/item/tank))
to_chat(H, span_notice("You are now running on internals from [H.r_store] in your right pocket."))
H.internal = H.r_store
//Separate so CO2 jetpacks are a little less cumbersome.
if(!C.internal && istype(C.back, /obj/item/tank))
to_chat(C, span_notice("You are now running on internals from [C.back] on your back."))
C.internal = C.back
if(C.internal)
icon_state = "internal1"
else
to_chat(C, span_warning("You don't have an oxygen tank!"))
return
C.update_action_buttons_icon()
/atom/movable/screen/mov_intent
name = "run/walk toggle"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "running"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/mov_intent/Initialize(mapload)
. = ..()
@@ -366,7 +349,10 @@
toggle(usr)
/atom/movable/screen/mov_intent/update_icon_state()
switch(hud?.mymob?.m_intent)
if(!hud || !hud.mymob || !isliving(hud.mymob))
return
var/mob/living/living_hud_owner = hud.mymob
switch(living_hud_owner.m_intent)
if(MOVE_INTENT_WALK)
icon_state = CONFIG_GET(flag/sprint_enabled)? "walking" : "walking_nosprint"
if(MOVE_INTENT_RUN)
@@ -382,6 +368,8 @@
name = "stop pulling"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "pull"
base_icon_state = "pull"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/pull/Click()
if(isobserver(usr))
@@ -389,17 +377,14 @@
usr.stop_pulling()
/atom/movable/screen/pull/update_icon_state()
if(hud?.mymob?.pulling)
icon_state = "pull"
else
icon_state = "pull0"
icon_state = "[base_icon_state][hud?.mymob?.pulling ? null : 0]"
return ..()
/atom/movable/screen/resist
name = "resist"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_resist"
plane = HUD_PLANE
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/resist/Click()
if(isliving(usr))
@@ -411,7 +396,7 @@
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_rest"
base_icon_state = "act_rest"
plane = HUD_PLANE
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/rest/Click()
if(isliving(usr))
@@ -429,6 +414,7 @@
name = "throw/catch"
icon = 'icons/mob/screen_midnight.dmi'
icon_state = "act_throw_off"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/throw_catch/Click()
if(iscarbon(usr))
@@ -439,6 +425,7 @@
name = "damage zone"
icon_state = "zone_sel"
screen_loc = ui_zonesel
mouse_over_pointer = MOUSE_HAND_POINTER
var/overlay_icon = 'icons/mob/screen_gen.dmi'
var/static/list/hover_overlays_cache = list()
var/hovering
@@ -641,6 +628,7 @@
/atom/movable/screen/healthdoll
name = "health doll"
screen_loc = ui_healthdoll
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/healthdoll/Click()
if (iscarbon(usr))
@@ -656,6 +644,7 @@
name = "mood"
icon_state = "mood5"
screen_loc = ui_mood
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/mood/attack_tk()
return
@@ -668,7 +657,9 @@
plane = SPLASHSCREEN_PLANE
var/client/holder
/atom/movable/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE, except its not easy
INITIALIZE_IMMEDIATE(/atom/movable/screen/splash)
/atom/movable/screen/splash/Initialize(mapload, datum/hud/hud_owner, client/C, visible, use_previous_title)
. = ..()
if(!istype(C))
return
@@ -683,8 +674,7 @@
icon = SStitle.icon
else
if(!SStitle.previous_icon)
qdel(src)
return
return INITIALIZE_HINT_QDEL
icon = SStitle.previous_icon
holder.screen += src
@@ -708,6 +698,7 @@
/atom/movable/screen/component_button
mouse_over_pointer = MOUSE_HAND_POINTER
var/atom/movable/screen/parent
/atom/movable/screen/component_button/Initialize(mapload, atom/movable/screen/parent)
+2 -1
View File
@@ -5,7 +5,7 @@
name = "toggle sprint"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "act_sprint"
layer = ABOVE_HUD_LAYER - 0.1
mouse_over_pointer = MOUSE_HAND_POINTER
var/mutable_appearance/flashy
/atom/movable/screen/sprintbutton/Click()
@@ -44,6 +44,7 @@
name = "sprint buffer"
icon = 'icons/effects/progessbar.dmi'
icon_state = "prog_bar_100"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/sprint_buffer/Click()
if(isliving(usr))
+6 -5
View File
@@ -1,19 +1,20 @@
/datum/hud/var/atom/movable/screen/staminas/staminas
/datum/hud/var/atom/movable/screen/staminabuffer/staminabuffer
/datum/hud
var/atom/movable/screen/staminas/staminas
var/atom/movable/screen/staminabuffer/staminabuffer
/atom/movable/screen/staminas
icon = 'modular_citadel/icons/ui/screen_gen.dmi'
name = "stamina"
icon_state = "stamina0"
screen_loc = ui_stamina
mouse_opacity = 1
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/staminas/Click(location,control,params)
if(isliving(usr))
var/mob/living/L = usr
CONFIG_CACHE_ENTRY_AND_FETCH_VALUE(number/stamina_combat/buffer_max, buffer_max)
to_chat(L, "<span class='notice'>You have <b>[L.getStaminaLoss()]</b> stamina loss.<br>\
<br>Your stamina buffer is <b>[round((L.stamina_buffer / buffer_max) * 100, 0.1)]%</b> full.</span>")
to_chat(L, "<blockquote class='info'><span class='notice'>You have <b>[L.getStaminaLoss()]</b> stamina loss.<br>\
<br>Your stamina buffer is <b>[round((L.stamina_buffer / buffer_max) * 100, 0.1)]%</b> full.</span></blockquote>")
/atom/movable/screen/staminas/update_icon_state()
var/mob/living/carbon/user = hud?.mymob
+10 -10
View File
@@ -2,14 +2,14 @@
name = "storage"
var/insertion_click = FALSE
/atom/movable/screen/storage/Initialize(mapload, new_master)
/atom/movable/screen/storage/Initialize(mapload, datum/hud/hud, new_master)
. = ..()
master = new_master
/atom/movable/screen/storage/Click(location, control, params)
if(!insertion_click)
return ..()
if(hud?.mymob && (hud.mymob != usr))
if(get_mob() != usr)
return
// just redirect clicks
if(master)
@@ -55,7 +55,7 @@
plane = VOLUMETRIC_STORAGE_BOX_PLANE
var/obj/item/our_item
/atom/movable/screen/storage/volumetric_box/Initialize(mapload, new_master, obj/item/our_item)
/atom/movable/screen/storage/volumetric_box/Initialize(mapload, datum/hud/hud, new_master, obj/item/our_item)
src.our_item = our_item
RegisterSignal(our_item, COMSIG_ITEM_MOUSE_ENTER, PROC_REF(on_item_mouse_enter))
RegisterSignal(our_item, COMSIG_ITEM_MOUSE_EXIT, PROC_REF(on_item_mouse_exit))
@@ -97,9 +97,9 @@
var/atom/movable/screen/storage/item_holder/holder
var/pixel_size
/atom/movable/screen/storage/volumetric_box/center/Initialize(mapload, new_master, our_item)
left = new(null, src, our_item)
right = new(null, src, our_item)
/atom/movable/screen/storage/volumetric_box/center/Initialize(mapload, datum/hud/hud, new_master, our_item)
left = new(null, hud, src, our_item)
right = new(null, hud, src, our_item)
return ..()
/atom/movable/screen/storage/volumetric_box/center/Destroy()
@@ -116,7 +116,7 @@
/**
* Sets the size of this box screen object and regenerates its left/right borders. This includes the actual border's size!
*/
/atom/movable/screen/storage/volumetric_box/center/proc/set_pixel_size(pixels)
/atom/movable/screen/storage/volumetric_box/center/proc/set_pixel_size(pixels, datum/hud/hud)
if(pixel_size == pixels)
return
pixel_size = pixels
@@ -128,7 +128,7 @@
if(our_item)
if(holder)
qdel(holder)
holder = new(null, src, our_item)
holder = new(null, hud, src, our_item)
holder.transform = matrix(1 / multiplier, 0, 0, 0, 1, 0)
holder.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
holder.appearance_flags &= ~RESET_TRANSFORM
@@ -155,7 +155,7 @@
layer = VOLUMETRIC_STORAGE_BOX_LAYER
plane = VOLUMETRIC_STORAGE_BOX_PLANE
/atom/movable/screen/storage/volumetric_edge/Initialize(mapload, master, our_item)
/atom/movable/screen/storage/volumetric_edge/Initialize(mapload, datum/hud/hud, master, our_item)
src.master = master
return ..()
@@ -183,7 +183,7 @@
var/obj/item/our_item
vis_flags = NONE
/atom/movable/screen/storage/item_holder/Initialize(mapload, new_master, obj/item/I)
/atom/movable/screen/storage/item_holder/Initialize(mapload, datum/hud/hud, new_master, obj/item/I)
. = ..()
our_item = I
vis_contents += I
+1
View File
@@ -2,6 +2,7 @@
name = "toggle vore mode"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "nom_off"
mouse_over_pointer = MOUSE_HAND_POINTER
/atom/movable/screen/voretoggle/Click()
if(usr != hud.mymob)
+3 -4
View File
@@ -1,15 +1,14 @@
/datum/hud/living/simple_animal
ui_style = 'icons/mob/screen_gen.dmi'
/datum/hud/living/simple_animal/New(mob/living/owner)
..()
pull_icon = new /atom/movable/screen/pull()
pull_icon = new /atom/movable/screen/pull(null, src)
pull_icon.icon = ui_style
pull_icon.update_icon()
pull_icon.screen_loc = ui_living_pull
pull_icon.hud = src
static_inventory += pull_icon
//mob health doll! assumes whatever sprite the mob is
healthdoll = new /atom/movable/screen/healthdoll/living()
healthdoll.hud = src
healthdoll = new /atom/movable/screen/healthdoll/living(null, src)
infodisplay += healthdoll
+6 -12
View File
@@ -67,32 +67,26 @@
..()
var/atom/movable/screen/using
using = new /atom/movable/screen/swarmer/FabricateTrap()
using = new /atom/movable/screen/swarmer/FabricateTrap(null, src)
using.screen_loc = ui_hand_position(2)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swarmer/Barricade()
using = new /atom/movable/screen/swarmer/Barricade(null, src)
using.screen_loc = ui_hand_position(1)
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swarmer/Replicate()
using = new /atom/movable/screen/swarmer/Replicate(null, src)
using.screen_loc = ui_zonesel
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swarmer/RepairSelf()
using = new /atom/movable/screen/swarmer/RepairSelf(null, src)
using.screen_loc = ui_storage1
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swarmer/ToggleLight()
using = new /atom/movable/screen/swarmer/ToggleLight(null, src)
using.screen_loc = ui_back
using.hud = src
static_inventory += using
using = new /atom/movable/screen/swarmer/ContactSwarmers()
using = new /atom/movable/screen/swarmer/ContactSwarmers(null, src)
using.screen_loc = ui_inventory
using.hud = src
static_inventory += using
@@ -77,8 +77,17 @@ PROCESSING_SUBSYSTEM_DEF(station)
var/datum/station_trait/trait_instance = new trait_type()
can_fire = can_fire || trait_instance.trait_processes
station_traits += trait_instance
log_game("Station Trait: [trait_instance.name] chosen for this round.")
if(!trait_instance.blacklist)
return
for(var/i in trait_instance.blacklist)
var/datum/station_trait/trait_to_remove = i
selectable_traits_by_types[initial(trait_to_remove.trait_type)] -= trait_to_remove
/// Update station trait lobby buttons for clients who joined before we initialised this subsystem
/datum/controller/subsystem/processing/station/proc/display_lobby_traits()
for (var/mob/dead/new_player/player as anything in GLOB.new_player_list)
var/datum/hud/new_player/observer_hud = player.hud_used
if (!istype(observer_hud))
continue
observer_hud.show_station_trait_buttons()
+2 -2
View File
@@ -161,7 +161,7 @@ SUBSYSTEM_DEF(ticker)
start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10)
for(var/client/C in GLOB.clients)
window_flash(C, ignorepref = TRUE) //let them know lobby has opened up.
to_chat(world, "<span class='boldnotice'>Welcome to [station_name()]!</span>")
to_chat(world, span_boldnotice("Welcome to [station_name()]!"))
send2chat("New round starting on [SSmapping.config.map_name]!", CONFIG_GET(string/chat_announce_new_game))
current_state = GAME_STATE_PREGAME
SEND_SIGNAL(src, COMSIG_TICKER_ENTER_PREGAME)
@@ -424,7 +424,7 @@ SUBSYSTEM_DEF(ticker)
if (living.client.prefs && living.client.prefs.auto_ooc)
if (living.client.prefs.chat_toggles & CHAT_OOC)
living.client.prefs.chat_toggles ^= CHAT_OOC
var/atom/movable/screen/splash/S = new(living.client, TRUE)
var/atom/movable/screen/splash/S = new(null, living.client, TRUE)
S.Fade(TRUE)
living.client.init_verbs()
livings += living
+1 -1
View File
@@ -60,7 +60,7 @@ SUBSYSTEM_DEF(title)
for(var/thing in GLOB.clients)
if(!thing)
continue
var/atom/movable/screen/splash/S = new(thing, FALSE)
var/atom/movable/screen/splash/S = new(null, thing, FALSE)
S.Fade(FALSE,FALSE)
/datum/controller/subsystem/title/Recover()
+8 -14
View File
@@ -39,6 +39,7 @@
var/icon_icon = 'icons/mob/actions.dmi'
/// This is the icon state for the icon that appears on the button
var/button_icon_state = "default"
var/button_overlay_state
/datum/action/New(Target)
link_to(Target)
@@ -177,6 +178,11 @@
ApplyIcon(button, force)
if(button_overlay_state)
button.cut_overlay(button.button_overlay)
button.button_overlay = mutable_appearance(icon = 'icons/mob/actions.dmi', icon_state = button_overlay_state)
button.add_overlay(button.button_overlay)
if(!IsAvailable(TRUE))
button.color = transparent_when_unavailable ? rgb(128,0,0,128) : rgb(128,0,0)
else
@@ -362,6 +368,8 @@
/datum/action/item_action/set_internals
name = "Set Internals"
default_button_position = SCRN_OBJ_INSERT_FIRST
button_overlay_state = "ab_goldborder"
/datum/action/item_action/set_internals/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force)
if(!..()) // no button available
@@ -940,20 +948,6 @@
icon_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "jetboot"
/datum/action/language_menu
name = "Language Menu"
desc = "Open the language menu to review your languages, their keys, and select your default language."
button_icon_state = "language_menu"
check_flags = 0
/datum/action/language_menu/Trigger()
if(!..())
return FALSE
if(ismob(owner))
var/mob/M = owner
var/datum/language_holder/H = M.get_language_holder()
H.open_language_menu(usr)
/datum/action/item_action/wheelys
name = "Toggle Wheely-Heel's Wheels"
desc = "Pops out or in your wheely-heel's wheels."
+4 -4
View File
@@ -28,13 +28,13 @@
lose_text = "<span class='notice'>You suddenly remember how languages work.</span>"
/datum/brain_trauma/severe/aphasia/on_gain()
owner.add_blocked_language(subtypesof(/datum/language/) - /datum/language/aphasia, LANGUAGE_APHASIA)
owner.grant_language(/datum/language/aphasia, TRUE, TRUE, LANGUAGE_APHASIA)
owner.add_blocked_language(subtypesof(/datum/language) - /datum/language/aphasia, LANGUAGE_APHASIA)
owner.grant_language(/datum/language/aphasia, source = LANGUAGE_APHASIA)
..()
/datum/brain_trauma/severe/aphasia/on_lose()
owner.remove_blocked_language(subtypesof(/datum/language/), LANGUAGE_APHASIA)
owner.remove_language(/datum/language/aphasia, TRUE, TRUE, LANGUAGE_APHASIA)
owner.remove_blocked_language(subtypesof(/datum/language), LANGUAGE_APHASIA)
owner.remove_language(/datum/language/aphasia, LANGUAGE_APHASIA)
..()
/datum/brain_trauma/severe/blindness
+2 -2
View File
@@ -40,8 +40,7 @@
/// Creates the hud screen object.
/datum/component/combat_mode/proc/on_mob_hud_created(mob/source)
hud_icon = new
hud_icon.hud = source.hud_used
hud_icon = new(null, source.hud_used)
hud_icon.icon = tg_ui_icon_to_cit_ui(source.hud_used.ui_style)
hud_icon.screen_loc = hud_loc
source.hud_used.static_inventory += hud_icon
@@ -182,6 +181,7 @@
name = "toggle combat mode"
icon = 'modular_citadel/icons/ui/screen_midnight.dmi'
icon_state = "combat_off"
mouse_over_pointer = MOUSE_HAND_POINTER
var/mutable_appearance/flashy
var/combat_on = FALSE ///Wheter combat mode is enabled or not, so we don't have to store a reference.
+2 -2
View File
@@ -4,11 +4,11 @@
/datum/component/personal_crafting/proc/create_mob_button(mob/user)
var/datum/hud/H = user.hud_used
var/atom/movable/screen/craft/C = new()
var/atom/movable/screen/craft/C = new(null, H)
C.icon = H.ui_style
H.static_inventory += C
user.client.screen += C
RegisterSignal(C, COMSIG_CLICK, PROC_REF(component_ui_interact))
RegisterSignal(C, COMSIG_SCREEN_ELEMENT_CLICK, PROC_REF(component_ui_interact))
/datum/component/personal_crafting
var/busy
+2 -2
View File
@@ -299,10 +299,10 @@
/datum/component/mood/proc/modify_hud(datum/source)
var/mob/living/owner = parent
var/datum/hud/hud = owner.hud_used
screen_obj = new
screen_obj = new(null, hud)
hud.infodisplay += screen_obj
RegisterSignal(hud, COMSIG_PARENT_QDELETING, PROC_REF(unmodify_hud))
RegisterSignal(screen_obj, COMSIG_CLICK, PROC_REF(hud_click))
RegisterSignal(screen_obj, COMSIG_SCREEN_ELEMENT_CLICK, PROC_REF(hud_click))
/datum/component/mood/proc/unmodify_hud(datum/source)
if(!screen_obj || !parent)
+15 -15
View File
@@ -33,11 +33,11 @@
var/rows = clamp(CEILING(adjusted_contents / columns, 1), 1, screen_max_rows)
// First, boxes.
ui_boxes = get_ui_boxes()
ui_boxes = get_ui_boxes(user.hud_used)
ui_boxes.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+columns-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
. += ui_boxes
// Then, closer.
ui_close = get_ui_close()
ui_close = get_ui_close(user.hud_used)
ui_close.screen_loc = "[screen_start_x + columns]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y]"
. += ui_close
// Then orient the actual items.
@@ -62,7 +62,7 @@
for(var/obj/O in accessible_items())
if(QDELETED(O))
continue
var/atom/movable/screen/storage/item_holder/D = new(null, src, O)
var/atom/movable/screen/storage/item_holder/D = new(null, user.hud_used, src, O)
// SNOWFLAKE: make O opaque too, pending storage rewrite
O.mouse_opacity = MOUSE_OPACITY_OPAQUE
D.mouse_opacity = MOUSE_OPACITY_OPAQUE //This is here so storage items that spawn with contents correctly have the "click around item to equip"
@@ -139,7 +139,7 @@
for(var/i in percentage_by_item)
I = i
var/percent = percentage_by_item[I]
var/atom/movable/screen/storage/volumetric_box/center/B = new /atom/movable/screen/storage/volumetric_box/center(null, src, I)
var/atom/movable/screen/storage/volumetric_box/center/B = new /atom/movable/screen/storage/volumetric_box/center(null, user.hud_used, src, I)
// SNOWFLAKE: force it to icon until we unfuck storage/click passing
I.mouse_opacity = MOUSE_OPACITY_ICON
var/pixels_to_use = overrun? MINIMUM_PIXELS_PER_ITEM : max(using_horizontal_pixels * percent, MINIMUM_PIXELS_PER_ITEM)
@@ -168,15 +168,15 @@
current_pixel = VOLUMETRIC_STORAGE_EDGE_PADDING
// Then, continuous section.
ui_continuous = get_ui_continuous()
ui_continuous = get_ui_continuous(user.hud_used)
ui_continuous.screen_loc = "[screen_start_x]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x+maxcolumns-1]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
. += ui_continuous
// Then, left.
ui_left = get_ui_left()
ui_left = get_ui_left(user.hud_used)
ui_left.screen_loc = "[screen_start_x]:[screen_pixel_x - 2],[screen_start_y]:[screen_pixel_y] to [screen_start_x]:[screen_pixel_x - 2],[screen_start_y+rows-1]:[screen_pixel_y]"
. += ui_left
// Then, closer, which is also our right element.
ui_close = get_ui_close()
ui_close = get_ui_close(user.hud_used)
ui_close.screen_loc = "[screen_start_x + maxcolumns]:[screen_pixel_x],[screen_start_y]:[screen_pixel_y] to [screen_start_x + maxcolumns]:[screen_pixel_x],[screen_start_y+rows-1]:[screen_pixel_y]"
. += ui_close
@@ -258,23 +258,23 @@
/**
* Gets our ui_boxes, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_boxes()
return new /atom/movable/screen/storage/boxes(null, src)
/datum/component/storage/proc/get_ui_boxes(datum/hud/hud)
return new /atom/movable/screen/storage/boxes(null, hud, src)
/**
* Gets our ui_left, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_left()
return new /atom/movable/screen/storage/left(null, src)
/datum/component/storage/proc/get_ui_left(datum/hud/hud)
return new /atom/movable/screen/storage/left(null, hud, src)
/**
* Gets our ui_close, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_close()
return new /atom/movable/screen/storage/close(null, src)
/datum/component/storage/proc/get_ui_close(datum/hud/hud)
return new /atom/movable/screen/storage/close(null, hud, src)
/**
* Gets our ui_continuous, making it if it doesn't exist.
*/
/datum/component/storage/proc/get_ui_continuous()
return new /atom/movable/screen/storage/continuous(null, src)
/datum/component/storage/proc/get_ui_continuous(datum/hud/hud)
return new /atom/movable/screen/storage/continuous(null, hud, src)
@@ -63,7 +63,7 @@ Bonus
if(scramble_language && !current_language) // Last part prevents rerolling language with small amounts of cure.
current_language = pick(subtypesof(/datum/language) - /datum/language/common)
H.add_blocked_language(subtypesof(/datum/language) - current_language, LANGUAGE_VOICECHANGE)
H.grant_language(current_language, TRUE, TRUE, LANGUAGE_VOICECHANGE)
H.grant_language(current_language, source = LANGUAGE_VOICECHANGE)
/datum/symptom/voice_change/End(datum/disease/advance/A)
..()
+1 -3
View File
@@ -409,9 +409,7 @@
if(H.additional_language && H.additional_language != "None")
var/language_entry = GLOB.roundstart_languages[H.additional_language]
if(language_entry)
grant_language(language_entry, TRUE, TRUE)
update_atom_languages()
grant_language(language_entry)
/mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE)
..()
+64 -49
View File
@@ -4,75 +4,90 @@
var/cleanable
var/description
var/mutable_appearance/pic
var/list/num_decals_per_atom
/**
* A short lecture on decal element collision on rotation
* If a given decal's rotated version is identical to one of existing (at a same target), pre-rotation decals,
* then the rotated decal won't stay after when the colliding pre-rotation decal gets rotated,
* resulting in some decal elements colliding into nonexistence. This internal tick-tock prevents
* such collision by forcing a non-collision.
*/
var/rotated
var/first_dir // This stores the direction of the decal compared to the parent facing NORTH
/datum/element/decal/Attach(datum/target, _icon, _icon_state, _dir, _cleanable=CLEAN_GOD, _color, _layer=TURF_LAYER, _description, _alpha=255)
/datum/element/decal/Attach(atom/target, _icon, _icon_state, _dir, _cleanable=CLEAN_GOD, _color, _layer=TURF_LAYER, _description, _alpha=255, _rotated=FALSE)
. = ..()
if(. == ELEMENT_INCOMPATIBLE || !_icon || !_icon_state || !isatom(target))
if(!isatom(target) || (pic ? FALSE : !generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, target)))
return ELEMENT_INCOMPATIBLE
var/atom/A = target
if(!pic)
// It has to be made from an image or dir breaks because of a byond bug
var/temp_image = image(_icon, null, _icon_state, _layer, _dir)
pic = new(temp_image)
pic.color = _color
pic.alpha = _alpha
first_dir = _dir
description = _description
cleanable = _cleanable
rotated = _rotated
LAZYINITLIST(num_decals_per_atom)
if(!num_decals_per_atom[A])
if(first_dir)
RegisterSignal(A, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate_react))
if(cleanable)
RegisterSignal(A, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_react))
if(description)
RegisterSignal(A, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
RegisterSignal(A, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_overlay), TRUE)
num_decals_per_atom[A]++
apply(A)
/datum/element/decal/Detach(datum/target)
var/atom/A = target
num_decals_per_atom[A]--
if(!num_decals_per_atom[A])
UnregisterSignal(A, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE,
COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE, COMSIG_ATOM_UPDATE_OVERLAYS))
LAZYREMOVE(num_decals_per_atom, A)
apply(A)
return ..()
/datum/element/decal/proc/apply(atom/target)
RegisterSignal(target,COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_overlay), TRUE)
if(isturf(target))
RegisterSignal(target,COMSIG_TURF_AFTER_SHUTTLE_MOVE, PROC_REF(shuttlemove_react), TRUE)
if(target.flags_1 & INITIALIZED_1)
target.update_icon() //could use some queuing here now maybe.
else if(!QDELETED(target) && num_decals_per_atom[target] == 1)
RegisterSignal(target, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE, PROC_REF(late_update_icon))
else
RegisterSignal(target,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE,PROC_REF(late_update_icon), TRUE)
if(isitem(target))
addtimer(CALLBACK(target, TYPE_PROC_REF(/obj/item, update_slot_icon)), 0, TIMER_UNIQUE)
INVOKE_ASYNC(target, TYPE_PROC_REF(/obj/item, update_slot_icon), TRUE)
if(_dir)
RegisterSignal(target, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate_react),TRUE)
if(_cleanable)
RegisterSignal(target, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_react),TRUE)
if(_description)
RegisterSignal(target, COMSIG_PARENT_EXAMINE, PROC_REF(examine),TRUE)
/datum/element/decal/proc/generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, source)
if(!_icon || !_icon_state)
return FALSE
var/temp_image = image(_icon, null, _icon_state, _layer, _dir)
pic = new(temp_image)
pic.color = _color
pic.alpha = _alpha
return TRUE
/datum/element/decal/Detach(atom/source, force)
UnregisterSignal(source, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE, COMSIG_ATOM_UPDATE_OVERLAYS,COMSIG_TURF_AFTER_SHUTTLE_MOVE))
source.update_icon()
if(isitem(source))
INVOKE_ASYNC(source, TYPE_PROC_REF(/obj/item, update_slot_icon))
return ..()
/datum/element/decal/proc/late_update_icon(atom/source)
source.update_icon()
UnregisterSignal(source,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE)
SIGNAL_HANDLER
if(source && istype(source))
source.update_icon()
UnregisterSignal(source,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE)
/datum/element/decal/proc/apply_overlay(atom/source, list/overlay_list)
if(first_dir)
pic.dir = first_dir == SOUTH ? source.dir : turn(first_dir, dir2angle(source.dir)-180) //Never turn a dir by 0.
for(var/i in 1 to num_decals_per_atom[source])
overlay_list += pic
SIGNAL_HANDLER
overlay_list += pic
/datum/element/decal/proc/shuttlemove_react(datum/source, turf/newT)
SIGNAL_HANDLER
Detach(source)
newT.AddElement(/datum/element/decal, pic.icon, pic.icon_state, pic.dir, cleanable, pic.color, pic.layer, description, pic.alpha, rotated)
/datum/element/decal/proc/rotate_react(datum/source, old_dir, new_dir)
SIGNAL_HANDLER
/datum/element/decal/proc/rotate_react(atom/source, old_dir, new_dir)
if(old_dir == new_dir)
return
source.update_icon()
Detach(source)
source.AddElement(/datum/element/decal, pic.icon, pic.icon_state, angle2dir(dir2angle(pic.dir)+dir2angle(new_dir)-dir2angle(old_dir)), cleanable, pic.color, pic.layer, description, pic.alpha, !rotated)
/datum/element/decal/proc/clean_react(datum/source, strength)
SIGNAL_HANDLER
if(strength >= cleanable)
Detach(source)
return TRUE
return NONE
/datum/element/decal/proc/examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
examine_list += description
+13 -10
View File
@@ -64,7 +64,6 @@
var/isholy = FALSE //is this person a chaplain or admin role allowed to use bibles
var/mob/living/enslaved_to //If this mind's master is another mob (i.e. adamantine golems)
var/datum/language_holder/language_holder
var/unconvertable = FALSE
var/late_joiner = FALSE
///has this mind ever been an AI
@@ -96,7 +95,6 @@
/datum/mind/Destroy()
SSticker.minds -= src
QDEL_LIST(antag_datums)
QDEL_NULL(language_holder)
QDEL_NULL(skill_holder)
set_current(null)
soulOwner = null
@@ -118,12 +116,6 @@
/datum/mind/proc/set_original_character(new_original_character)
original_character = WEAKREF(new_original_character)
/datum/mind/proc/get_language_holder()
if(!language_holder)
language_holder = new (src)
return language_holder
/datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0)
var/old_character = current
var/signals = SEND_SIGNAL(new_character, COMSIG_MOB_PRE_PLAYER_CHANGE, new_character, old_character) | SEND_SIGNAL(src, COMSIG_PRE_MIND_TRANSFER, new_character, old_character)
@@ -145,7 +137,19 @@
var/datum/atom_hud/antag/hud_to_transfer = antag_hud//we need this because leave_hud() will clear this list
var/mob/living/old_current = current
if(current)
current.transfer_observers_to(new_character) //transfer anyone observing the old character to the new one
//transfer anyone observing the old character to the new one
current.transfer_observers_to(new_character)
// Offload all mind languages from the old holder to a temp one
var/datum/language_holder/empty/temp_holder = new()
var/datum/language_holder/old_holder = old_current.get_language_holder()
var/datum/language_holder/new_holder = new_character.get_language_holder()
// Off load mind languages to the temp holder momentarily
new_holder.transfer_mind_languages(temp_holder)
// Transfer the old holder's mind languages to the new holder
old_holder.transfer_mind_languages(new_holder)
// And finally transfer the temp holder's mind languages back to the old holder
temp_holder.transfer_mind_languages(old_holder)
set_current(new_character) //associate ourself with our new body
new_character.mind = src //and associate our new body with ourself
for(var/a in antag_datums) //Makes sure all antag datums effects are applied in the new body
@@ -162,7 +166,6 @@
if(new_character.client)
LAZYCLEARLIST(new_character.client.recent_examines)
new_character.client.init_verbs() // re-initialize character specific verbs
current.update_atom_languages()
//CIT CHANGE - makes arousal update when transfering bodies
if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs.
+2 -2
View File
@@ -277,10 +277,10 @@
/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner)
..()
owner.grant_language(/datum/language/beachbum, TRUE, TRUE, LANGUAGE_STONER)
owner.grant_language(/datum/language/beachbum, source = LANGUAGE_STONER)
owner.add_blocked_language(subtypesof(/datum/language) - /datum/language/beachbum, LANGUAGE_STONER)
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
..()
owner.remove_language(/datum/language/beachbum, TRUE, TRUE, LANGUAGE_STONER)
owner.remove_language(/datum/language/beachbum, source = LANGUAGE_STONER)
owner.remove_blocked_language(subtypesof(/datum/language) - /datum/language/beachbum, LANGUAGE_STONER)
+1 -1
View File
@@ -6,5 +6,5 @@
/datum/numbered_display/New(obj/item/sample, _number = 1, datum/component/storage/parent)
if(!istype(sample))
qdel(src)
sample_object = new /atom/movable/screen/storage/item_holder(null, parent, sample)
sample_object = new /atom/movable/screen/storage/item_holder(null, null, parent, sample)
number = _number
+59 -5
View File
@@ -1,3 +1,6 @@
/// Station traits displayed in the lobby
GLOBAL_LIST_EMPTY(lobby_station_traits)
///Base class of station traits. These are used to influence rounds in one way or the other by influencing the levers of the station.
/datum/station_trait
///Name of the trait
@@ -22,26 +25,30 @@
var/trait_flags
/// Whether or not this trait can be reverted by an admin
var/can_revert = TRUE
/// If set to true we'll show a button on the lobby to notify people about this trait
var/sign_up_button = FALSE
/// Lobby buttons controlled by this trait
var/list/lobby_buttons = list()
/datum/station_trait/New()
. = ..()
RegisterSignal(SSticker, COMSIG_TICKER_ROUND_STARTING, PROC_REF(on_round_start))
if(sign_up_button)
GLOB.lobby_station_traits += src
if(SSstation.initialized)
SSstation.display_lobby_traits()
if(trait_processes)
START_PROCESSING(SSstation, src)
if(trait_to_give)
ADD_TRAIT(SSstation, trait_to_give, STATION_TRAIT)
/datum/station_trait/Destroy()
destroy_lobby_buttons()
SSstation.station_traits -= src
return ..()
/// Proc ran when round starts. Use this for roundstart effects.
/datum/station_trait/proc/on_round_start()
SIGNAL_HANDLER
return
///type of info the centcom report has on this trait, if any.
/datum/station_trait/proc/get_report()
return "[name] - [report_message]"
@@ -55,3 +62,50 @@
REMOVE_TRAIT(SSstation, trait_to_give, STATION_TRAIT)
qdel(src)
/// Return TRUE if we want to show a lobby button, by default we assume we don't want it after the round begins
/datum/station_trait/proc/can_display_lobby_button(client/player)
return sign_up_button && !SSticker.HasRoundStarted()
/// Apply any additional handling we need to our lobby button
/datum/station_trait/proc/setup_lobby_button(atom/movable/screen/lobby/button/sign_up/lobby_button)
SHOULD_CALL_PARENT(TRUE)
lobby_button.name = name
lobby_buttons |= lobby_button
RegisterSignal(lobby_button, COMSIG_ATOM_UPDATE_ICON, PROC_REF(on_lobby_button_update_icon))
RegisterSignal(lobby_button, COMSIG_SCREEN_ELEMENT_CLICK, PROC_REF(on_lobby_button_click))
RegisterSignal(lobby_button, COMSIG_PARENT_QDELETING, PROC_REF(on_lobby_button_destroyed))
lobby_button.update_appearance(UPDATE_ICON)
/// Called when our lobby button is clicked on
/datum/station_trait/proc/on_lobby_button_click(atom/movable/screen/lobby/button/sign_up/lobby_button, location, control, params, mob/dead/new_player/user)
SIGNAL_HANDLER
return
/// Called when our lobby button tries to update its appearance
/datum/station_trait/proc/on_lobby_button_update_icon(atom/movable/screen/lobby/button/sign_up/lobby_button, updates)
SIGNAL_HANDLER
return
/// Don't hold references to deleted buttons
/datum/station_trait/proc/on_lobby_button_destroyed(atom/movable/screen/lobby/button/sign_up/lobby_button)
SIGNAL_HANDLER
lobby_buttons -= lobby_button
/// Proc ran when round starts. Use this for roundstart effects. By default we clean up our buttons here.
/datum/station_trait/proc/on_round_start()
SIGNAL_HANDLER
destroy_lobby_buttons()
/// Remove all of our active lobby buttons
/datum/station_trait/proc/destroy_lobby_buttons()
for (var/atom/movable/screen/button as anything in lobby_buttons)
var/mob/dead/new_player/hud_owner = button.get_mob()
if (QDELETED(hud_owner))
qdel(button)
continue
var/datum/hud/new_player/using_hud = hud_owner.hud_used
if(!using_hud)
qdel(button)
continue
using_hud.remove_station_trait_button(src)
@@ -152,9 +152,7 @@
. = ..()
//All bots that exist round start have their set language randomized.
for(var/mob/living/simple_animal/bot/found_bot in GLOB.alive_mob_list)
/// The bot's language holder - so we can randomize and change their language
var/datum/language_holder/bot_languages = found_bot.get_language_holder()
bot_languages.selected_language = bot_languages.get_random_spoken_language()
found_bot.set_active_language(found_bot.get_random_spoken_language())
/datum/station_trait/revenge_of_pun_pun
name = "Revenge of Pun Pun"
+9 -6
View File
@@ -971,17 +971,20 @@
desc = "A magical strand of Durathread is wrapped around your neck, preventing you from breathing! Click this icon to remove the strand."
icon_state = "his_grace"
alerttooltipstyle = "hisgrace"
clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/strandling/Click(location, control, params)
. = ..()
if(usr != owner)
if(!.)
return
to_chat(owner, "<span class='notice'>You attempt to remove the durathread strand from around your neck.</span>")
if(do_after(owner, 3.5 SECONDS, owner))
if(isliving(owner))
var/mob/living/L = owner
to_chat(owner, "<span class='notice'>You successfully remove the durathread strand.</span>")
L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
if(!do_after(owner, 3.5 SECONDS, owner))
return
if(!isliving(owner))
return
var/mob/living/L = owner
to_chat(owner, "<span class='notice'>You successfully remove the durathread strand.</span>")
L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND)
/datum/status_effect/pacify
@@ -102,8 +102,12 @@
/atom/movable/screen/alert/status_effect/wound
name = "Wounded"
desc = "Your body has sustained serious damage, click here to inspect yourself."
clickable_glow = TRUE
/atom/movable/screen/alert/status_effect/wound/Click()
. = ..()
if(!.)
return
var/mob/living/carbon/C = usr
C.check_self_for_injuries()
+2 -2
View File
@@ -26,7 +26,7 @@
var/require_comms_key = FALSE
/datum/world_topic/proc/TryRun(list/input, addr)
key_valid = config && (CONFIG_GET(string/comms_key) == input["key"])
key_valid = (CONFIG_GET(string/comms_key) == input["key"]) && CONFIG_GET(string/comms_key) && input["key"]
if(require_comms_key && !key_valid)
return "Bad Key"
input -= "key"
@@ -124,7 +124,7 @@
for(var/mob/dead/observer/O in GLOB.player_list)
if(O.key == expected_key)
if(O.client?.address == addr)
new /atom/movable/screen/splash(O.client, TRUE)
new /atom/movable/screen/splash(null, O.client, TRUE)
break
/datum/world_topic/adminmsg
+35 -36
View File
@@ -12,8 +12,11 @@
var/throw_speed = 2 //How many tiles to move per ds when being thrown. Float values are fully supported
var/throw_range = 7
var/mob/pulledby = null
/// What language holder type to init as
var/initial_language_holder = /datum/language_holder
var/datum/language_holder/language_holder // Mindless mobs and objects need language too, some times. Mind holder takes prescedence.
/// Holds all languages this mob can speak and understand
VAR_PRIVATE/datum/language_holder/language_holder
var/verb_say = "says"
var/verb_ask = "asks"
var/verb_exclaim = "exclaims"
@@ -647,49 +650,46 @@
/// Gets or creates the relevant language holder. For mindless atoms, gets the local one. For atom with mind, gets the mind one.
/atom/movable/proc/get_language_holder(get_minds = TRUE)
RETURN_TYPE(/datum/language_holder)
if(QDELING(src))
CRASH("get_language_holder() called on a QDELing atom, \
this will try to re-instantiate the language holder that's about to be deleted, which is bad.")
if(!language_holder)
language_holder = new initial_language_holder(src)
return language_holder
/// Grants the supplied language and sets omnitongue true.
/atom/movable/proc/grant_language(language, understood = TRUE, spoken = TRUE, source = LANGUAGE_ATOM)
var/datum/language_holder/LH = get_language_holder()
return LH.grant_language(language, understood, spoken, source)
/atom/movable/proc/grant_language(language, language_flags = ALL, source = LANGUAGE_ATOM)
return get_language_holder().grant_language(language, language_flags, source)
/// Grants every language.
/atom/movable/proc/grant_all_languages(understood = TRUE, spoken = TRUE, grant_omnitongue = TRUE, source = LANGUAGE_MIND)
var/datum/language_holder/LH = get_language_holder()
return LH.grant_all_languages(understood, spoken, grant_omnitongue, source)
/atom/movable/proc/grant_all_languages(language_flags = ALL, grant_omnitongue = TRUE, source = LANGUAGE_MIND)
return get_language_holder().grant_all_languages(language_flags, grant_omnitongue, source)
/// Removes a single language.
/atom/movable/proc/remove_language(language, understood = TRUE, spoken = TRUE, source = LANGUAGE_ALL)
var/datum/language_holder/LH = get_language_holder()
return LH.remove_language(language, understood, spoken, source)
/atom/movable/proc/remove_language(language, language_flags = ALL, source = LANGUAGE_ALL)
return get_language_holder().remove_language(language, language_flags, source)
/// Removes every language and sets omnitongue false.
/atom/movable/proc/remove_all_languages(source = LANGUAGE_ALL, remove_omnitongue = FALSE)
var/datum/language_holder/LH = get_language_holder()
return LH.remove_all_languages(source, remove_omnitongue)
return get_language_holder().remove_all_languages(source, remove_omnitongue)
/// Adds a language to the blocked language list. Use this over remove_language in cases where you will give languages back later.
/atom/movable/proc/add_blocked_language(language, source = LANGUAGE_ATOM)
var/datum/language_holder/LH = get_language_holder()
return LH.add_blocked_language(language, source)
return get_language_holder().add_blocked_language(language, source)
/// Removes a language from the blocked language list.
/atom/movable/proc/remove_blocked_language(language, source = LANGUAGE_ATOM)
var/datum/language_holder/LH = get_language_holder()
return LH.remove_blocked_language(language, source)
return get_language_holder().remove_blocked_language(language, source)
/// Checks if atom has the language. If spoken is true, only checks if atom can speak the language.
/atom/movable/proc/has_language(language, spoken = FALSE)
var/datum/language_holder/LH = get_language_holder()
return LH.has_language(language, spoken)
/atom/movable/proc/has_language(language, flags_to_check)
return get_language_holder().has_language(language, flags_to_check)
/// Checks if atom can speak the language.
/atom/movable/proc/can_speak_language(language)
var/datum/language_holder/LH = get_language_holder()
return LH.can_speak_language(language)
return get_language_holder().can_speak_language(language)
/// Returns the result of tongue specific limitations on spoken languages.
/atom/movable/proc/could_speak_language(language)
@@ -697,33 +697,32 @@
/// Returns selected language, if it can be spoken, or finds, sets and returns a new selected language if possible.
/atom/movable/proc/get_selected_language()
var/datum/language_holder/LH = get_language_holder()
return LH.get_selected_language()
return get_language_holder().get_selected_language()
/// Gets a random understood language, useful for hallucinations and such.
/atom/movable/proc/get_random_understood_language()
var/datum/language_holder/LH = get_language_holder()
return LH.get_random_understood_language()
return get_language_holder().get_random_understood_language()
/// Gets a random spoken language, useful for forced speech and such.
/atom/movable/proc/get_random_spoken_language()
var/datum/language_holder/LH = get_language_holder()
return LH.get_random_spoken_language()
return get_language_holder().get_random_spoken_language()
/// Copies all languages into the supplied atom/language holder. Source should be overridden when you
/// do not want the language overwritten by later atom updates or want to avoid blocked languages.
/atom/movable/proc/copy_languages(from_holder, source_override)
if(isatom(from_holder))
/atom/movable/proc/copy_languages(datum/language_holder/from_holder, source_override)
if(ismovable(from_holder))
var/atom/movable/thing = from_holder
from_holder = thing.get_language_holder()
var/datum/language_holder/LH = get_language_holder()
return LH.copy_languages(from_holder, source_override)
/// Empties out the atom specific languages and updates them according to the current atoms language holder.
/// As a side effect, it also creates missing language holders in the process.
/atom/movable/proc/update_atom_languages()
var/datum/language_holder/LH = get_language_holder()
return LH.update_atom_languages(src)
return get_language_holder().copy_languages(from_holder, source_override)
/// Sets the passed path as the active language
/// Returns the currently selected language if successful, if the language was not valid, returns null
/atom/movable/proc/set_active_language(language_path)
var/datum/language_holder/our_holder = get_language_holder()
our_holder.selected_language = language_path
return our_holder.get_selected_language() // verifies its validity, returns it if successful.
/// Sets the vocal bark for the atom, using the bark's ID
/atom/movable/proc/set_bark(id)
@@ -291,7 +291,6 @@ Credit where due:
W.update_label()
if(plasmaman && !visualsOnly) //If we need to breathe from the plasma tank, we should probably start doing that
H.internal = H.get_item_for_held_index(2)
H.update_internals_hud_icon(1)
PDA.owner = H.real_name
PDA.ownjob = "Assistant"
PDA.update_label()
-1
View File
@@ -176,7 +176,6 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
P.back.plane = ABOVE_HUD_PLANE
P.update_inv_back()
P.internal = P.back
P.update_internals_hud_icon(1)
if("hsbscrubber") // This is beyond its normal capability but this is sandbox and you spawned one, I assume you need it
var/obj/hsb = new/obj/machinery/portable_atmospherics/scrubber{volume_rate=50*ONE_ATMOSPHERE;on=1}(usr.loc)
+1
View File
@@ -14,6 +14,7 @@
use_power = IDLE_POWER_USE
idle_power_usage = 2
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
mouse_over_pointer = MOUSE_HAND_POINTER
/obj/machinery/button/Initialize(mapload, ndir = 0, built = 0)
if(istext(id) && mapload && id[1] == "!")
@@ -10,6 +10,7 @@
idle_power_usage = 2
active_power_usage = 4
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
mouse_over_pointer = MOUSE_HAND_POINTER
var/idSelf
/obj/machinery/doorButtons/attackby(obj/O, mob/user)
+1
View File
@@ -21,6 +21,7 @@
max_integrity = 250
integrity_failure = 0.4
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, RAD = 100, FIRE = 90, ACID = 30)
mouse_over_pointer = MOUSE_HAND_POINTER
use_power = IDLE_POWER_USE
idle_power_usage = 2
active_power_usage = 6
+1
View File
@@ -5,6 +5,7 @@
icon_state = "light1"
base_icon_state = "light"
desc = "Make dark."
mouse_over_pointer = MOUSE_HAND_POINTER
var/area/area = null
var/otherarea = null
+1 -1
View File
@@ -94,7 +94,7 @@
M.setDir(dir)
buckled_mobs |= M
M.update_mobility()
M.throw_alert("buckled", /atom/movable/screen/alert/restrained/buckled)
M.throw_alert("buckled", /atom/movable/screen/alert/buckled)
post_buckle_mob(M)
SEND_SIGNAL(src, COMSIG_MOVABLE_BUCKLE, M, force)
+1 -1
View File
@@ -47,4 +47,4 @@
if(!istype(T)) //you know this will happen somehow
CRASH("Turf decal initialized in an object/nullspace")
var/turn_dir = 180 - dir2angle(T.dir) //Turning a dir by 0 results in a roulette of random dirs.
T.AddElement(/datum/element/decal, icon, icon_state, turn_dir ? turn(dir, turn_dir) : dir, CLEAN_GOD, color, null, null, alpha)
T.AddElement(/datum/element/decal, icon, icon_state, turn_dir ? turn(dir, turn_dir) : dir, CLEAN_GOD, color, null, null, alpha, FALSE)
+25 -25
View File
@@ -220,8 +220,8 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark)
name = "department_sec"
icon_state = "Security Officer"
/obj/effect/landmark/start/depsec/New()
..()
/obj/effect/landmark/start/depsec/Initialize(mapload)
. = ..()
GLOB.department_security_spawns += src
/obj/effect/landmark/start/depsec/Destroy()
@@ -246,7 +246,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark)
icon_state = "wiznerd_spawn"
/obj/effect/landmark/start/wizard/Initialize(mapload)
..()
. = ..()
GLOB.wizardstart += loc
return INITIALIZE_HINT_QDEL
@@ -256,7 +256,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark)
icon_state = "snukeop_spawn"
/obj/effect/landmark/start/nukeop/Initialize(mapload)
..()
. = ..()
GLOB.nukeop_start += loc
return INITIALIZE_HINT_QDEL
@@ -266,7 +266,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark)
icon_state = "snukeop_leader_spawn"
/obj/effect/landmark/start/nukeop_leader/Initialize(mapload)
..()
. = ..()
GLOB.nukeop_leader_start += loc
return INITIALIZE_HINT_QDEL
@@ -278,7 +278,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
name = "New Player"
/obj/effect/landmark/start/new_player/Initialize(mapload)
..()
. = ..()
GLOB.newplayer_start += loc
return INITIALIZE_HINT_QDEL
@@ -308,7 +308,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
name = "JoinLate"
/obj/effect/landmark/latejoin/Initialize(mapload)
..()
. = ..()
SSjob.latejoin_trackers += loc
return INITIALIZE_HINT_QDEL
@@ -333,7 +333,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "xeno_spawn"
/obj/effect/landmark/xeno_spawn/Initialize(mapload)
..()
. = ..()
GLOB.xeno_spawn += loc
return INITIALIZE_HINT_QDEL
@@ -343,7 +343,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "blob_start"
/obj/effect/landmark/blobstart/Initialize(mapload)
..()
. = ..()
GLOB.blobstart += loc
return INITIALIZE_HINT_QDEL
@@ -352,7 +352,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "secequipment"
/obj/effect/landmark/secequipment/Initialize(mapload)
..()
. = ..()
GLOB.secequipment += loc
return INITIALIZE_HINT_QDEL
@@ -361,7 +361,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "prisonwarp"
/obj/effect/landmark/prisonwarp/Initialize(mapload)
..()
. = ..()
GLOB.prisonwarp += loc
return INITIALIZE_HINT_QDEL
@@ -370,7 +370,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "ert_spawn"
/obj/effect/landmark/ert_spawn/Initialize(mapload)
..()
. = ..()
GLOB.emergencyresponseteamspawn += loc
return INITIALIZE_HINT_QDEL
@@ -379,7 +379,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "holding_facility"
/obj/effect/landmark/holding_facility/Initialize(mapload)
..()
. = ..()
GLOB.holdingfacility += loc
return INITIALIZE_HINT_QDEL
@@ -388,7 +388,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "tdome_observer"
/obj/effect/landmark/thunderdome/observe/Initialize(mapload)
..()
. = ..()
GLOB.tdomeobserve += loc
return INITIALIZE_HINT_QDEL
@@ -397,7 +397,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "tdome_t1"
/obj/effect/landmark/thunderdome/one/Initialize(mapload)
..()
. = ..()
GLOB.tdome1 += loc
return INITIALIZE_HINT_QDEL
@@ -406,7 +406,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "tdome_t2"
/obj/effect/landmark/thunderdome/two/Initialize(mapload)
..()
. = ..()
GLOB.tdome2 += loc
return INITIALIZE_HINT_QDEL
@@ -415,7 +415,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "tdome_admin"
/obj/effect/landmark/thunderdome/admin/Initialize(mapload)
..()
. = ..()
GLOB.tdomeadmin += loc
return INITIALIZE_HINT_QDEL
@@ -426,7 +426,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
layer = MOB_LAYER
/obj/effect/landmark/servant_of_ratvar/Initialize(mapload)
..()
. = ..()
GLOB.servant_spawns += loc
return INITIALIZE_HINT_QDEL
@@ -436,7 +436,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
icon_state = "city_of_cogs"
/obj/effect/landmark/city_of_cogs/Initialize(mapload)
..()
. = ..()
GLOB.city_of_cogs_spawns += loc
return INITIALIZE_HINT_QDEL
@@ -448,7 +448,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
/obj/effect/landmark/event_spawn/New()
..()
. = ..()
GLOB.generic_event_spawns += src
/obj/effect/landmark/event_spawn/Destroy()
@@ -458,9 +458,9 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
/obj/effect/landmark/ruin
var/datum/map_template/ruin/ruin_template
/obj/effect/landmark/ruin/New(loc, my_ruin_template)
/obj/effect/landmark/ruin/Initialize(mapload, my_ruin_template)
. = ..()
name = "ruin_[GLOB.ruin_landmarks.len + 1]"
..(loc)
ruin_template = my_ruin_template
GLOB.ruin_landmarks |= src
@@ -475,8 +475,8 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
layer = BULLET_HOLE_LAYER
plane = ABOVE_WALL_PLANE
/obj/effect/landmark/stationroom/New()
..()
/obj/effect/landmark/stationroom/Initialize(mapload)
. = ..()
GLOB.stationroom_landmarks += src
/obj/effect/landmark/stationroom/Destroy()
@@ -514,7 +514,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
templates = list("Engine SM" = 3, "Engine Singulo" = 3, "Engine Tesla" = 3)
icon = 'icons/rooms/box/engine.dmi'
/obj/effect/landmark/stationroom/box/engine/New()
/obj/effect/landmark/stationroom/box/engine/Initialize(mapload)
. = ..()
templates = CONFIG_GET(keyed_list/box_random_engine)
-3
View File
@@ -160,9 +160,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
//the outline filter on hover
var/outline_filter
/* Our block parry data. Should be set in init, or something if you are using it.
* This won't be accessed without ITEM_CAN_BLOCK or ITEM_CAN_PARRY so do not set it unless you have to to save memory.
* If you decide it's a good idea to leave this unset while turning the flags on, you will runtime. Enjoy.
@@ -399,8 +399,8 @@
var/emp_cur_charges = 4
var/charge_tick = 0
/obj/item/flashlight/emp/New()
..()
/obj/item/flashlight/emp/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
/obj/item/flashlight/emp/Destroy()
@@ -81,6 +81,12 @@ GLOBAL_LIST_INIT(channel_tokens, list(
return ..(freq, level)
return FALSE
/obj/item/radio/headset/MouseDrop(mob/over, src_location, over_location)
var/mob/headset_user = usr
if((headset_user == over) && headset_user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return attack_self(headset_user)
return ..()
/obj/item/radio/headset/syndicate //disguised to look like a normal headset for stealth ops
/obj/item/radio/headset/syndicate/alt //undisguised bowman with flash protection
+2 -2
View File
@@ -37,8 +37,8 @@
var/forgedseal = 0
var/copy_type = null
/obj/item/documents/photocopy/New(loc, obj/item/documents/copy=null)
..()
/obj/item/documents/photocopy/Initialize(mapload, obj/item/documents/copy=null)
. = ..()
if(copy)
copy_type = copy.type
if(istype(copy, /obj/item/documents/photocopy)) // Copy Of A Copy Of A Copy
-1
View File
@@ -522,7 +522,6 @@
S.ckey = C.ckey
S.status_flags |= GODMODE
S.copy_languages(user, LANGUAGE_MASTER) //Make sure the sword can understand and communicate with the user.
S.update_atom_languages()
grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue
S.AddElement(/datum/element/ghost_role_eligibility,penalize_on_ghost = TRUE)
START_PROCESSING(SSprocessing,src)
+7 -2
View File
@@ -149,7 +149,9 @@
/obj/item/storage/belt/medical/ComponentInitialize()
. = ..()
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_BULKY
// GS13 Edit
//STR.max_w_class = WEIGHT_CLASS_BULKY
// GS13 End Edit
STR.max_items = 11
STR.max_w_class = WEIGHT_CLASS_NORMAL
STR.max_combined_w_class = 24
@@ -202,7 +204,10 @@
/obj/item/implanter,
/obj/item/pinpointer/crew,
/obj/item/reagent_containers/chem_pack,
/obj/item/stack/sticky_tape //surgical tape
// GS13 Edit
/obj/item/stack/sticky_tape, //surgical tape
/obj/item/fermichem/pHmeter // chemical analyzer
// GS13 End Edit
))
/obj/item/storage/belt/medical/surgery_belt_adv
-2
View File
@@ -34,7 +34,6 @@
if(H.internal == src)
to_chat(H, "<span class='notice'>You close [src] valve.</span>")
H.internal = null
H.update_internals_hud_icon(0)
else
if(!H.getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(HAS_TRAIT(H, TRAIT_NO_INTERNALS))
@@ -60,7 +59,6 @@
else
to_chat(H, "<span class='notice'>You open [src] valve.</span>")
H.internal = src
H.update_internals_hud_icon(1)
H.update_action_buttons_icon()
+2 -2
View File
@@ -17,8 +17,8 @@
var/fuel_added = 0
var/flame_expiry_timer
/obj/structure/fireplace/New()
..()
/obj/structure/fireplace/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
/obj/structure/fireplace/Destroy()
@@ -32,7 +32,7 @@
new_spawn.undershirt = "Nude" //changing underwear/shirt/socks doesn't seem to function correctly right now because of some bug elsewhere?
new_spawn.socks = "Nude"
new_spawn.update_body(TRUE)
new_spawn.language_holder.selected_language = /datum/language/sylvan
new_spawn.set_active_language(/datum/language/sylvan)
//Ash walker eggs: Spawns in ash walker dens in lavaland. Ghosts become unbreathing lizards that worship the Necropolis and are advised to retrieve corpses to create more ash walkers.
@@ -878,7 +878,6 @@
/datum/outfit/ghostcafe/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source)
H.internal = H.get_item_for_held_index(1)
H.update_internals_hud_icon(1)
/obj/item/storage/box/syndie_kit/chameleon/ghostcafe
name = "ghost cafe costuming kit"
@@ -154,12 +154,9 @@ GLOBAL_LIST_EMPTY(lifts)
var/list/atom/movable/lift_load //things to move
var/datum/lift_master/lift_master_datum //control from
/obj/structure/industrial_lift/New()
GLOB.lifts.Add(src)
..()
/obj/structure/industrial_lift/Initialize(mapload)
. = ..()
GLOB.lifts.Add(src)
RegisterSignal(src, COMSIG_MOVABLE_CROSSED, PROC_REF(AddItemOnLift))
RegisterSignal(loc, COMSIG_ATOM_CREATED, PROC_REF(AddItemOnLift))//For atoms created on platform
RegisterSignal(src, COMSIG_MOVABLE_UNCROSSED, PROC_REF(RemoveItemFromLift))
+6 -6
View File
@@ -119,23 +119,23 @@
var/list/races_blacklist = list("skeleton", "agent", "military_synth", "memezombies", "clockwork golem servant", "android", "synth", "mush", "zombie", "memezombie")
var/list/choosable_races = list()
/obj/structure/mirror/magic/New()
/obj/structure/mirror/magic/Initialize(mapload)
. = ..()
if(!choosable_races.len)
for(var/speciestype in subtypesof(/datum/species))
var/datum/species/S = new speciestype()
if(!(S.id in races_blacklist))
choosable_races += S.id
..()
/obj/structure/mirror/magic/lesser/New()
/obj/structure/mirror/magic/lesser/Initialize(mapload)
choosable_races = GLOB.roundstart_races.Copy()
..()
return ..()
/obj/structure/mirror/magic/badmin/New()
/obj/structure/mirror/magic/badmin/Initialize(mapload)
for(var/speciestype in subtypesof(/datum/species))
var/datum/species/S = new speciestype()
choosable_races += S.id
..()
return ..()
/obj/structure/mirror/magic/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
if(!ishuman(user))
@@ -15,8 +15,8 @@
var/enter_delay = 0
var/const/time_to_unwrench = 2 SECONDS
/obj/structure/transit_tube/New(loc, newdirection)
..(loc)
/obj/structure/transit_tube/Initialize(mapload, newdirection)
. = ..()
if(newdirection)
setDir(newdirection)
init_tube_dirs()
+4
View File
@@ -232,6 +232,10 @@ distance_multiplier - Can be used to multiply the distance at which the sound is
/proc/get_rand_frequency()
return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs.
///get_rand_frequency but lower range.
/proc/get_rand_frequency_low_range()
return rand(38000, 45000)
/proc/get_sfx(soundin)
if(istext(soundin))
switch(soundin)
@@ -13,9 +13,6 @@
desc = "Flooring that shows its contents underneath. Engineers love it!"
baseturfs = /turf/open/floor/plating
footstep = FOOTSTEP_CATWALK
barefootstep = FOOTSTEP_CATWALK
clawfootstep = FOOTSTEP_CATWALK
heavyfootstep = FOOTSTEP_CATWALK
intact = FALSE
var/covered = TRUE
+1 -1
View File
@@ -1007,7 +1007,7 @@
log_admin("[key_name(usr)] stuffed [frommob.key] into [tomob.name].")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Ghost Drag Control")
tomob.ckey = frommob.ckey
tomob.key = frommob.key
qdel(frommob)
return TRUE
+1 -2
View File
@@ -2081,8 +2081,7 @@
if(!ismob(M))
to_chat(usr, "This can only be used on instances of type /mob.")
return
var/datum/language_holder/H = M.get_language_holder()
H.open_language_menu(usr)
M.get_language_holder().open_language_menu(usr)
else if(href_list["traitor"])
if(!check_rights(R_ADMIN))
+2 -2
View File
@@ -135,9 +135,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
/obj/effect/statclick/ticket_list
var/current_state
/obj/effect/statclick/ticket_list/New(loc, name, state)
/obj/effect/statclick/ticket_list/Initialize(mapload, name, state)
. = ..()
current_state = state
..()
/obj/effect/statclick/ticket_list/Click()
GLOB.ahelp_tickets.BrowseTickets(current_state)
@@ -63,6 +63,13 @@ GLOBAL_DATUM_INIT(pluto, /atom/movable, new /atom/movable(null))
return FALSE
if(var_name == NAMEOF(src, realized_underlays))
return FALSE
#if (MIN_COMPILER_VERSION >= 515 && MIN_COMPILER_BUILD >= 1643)
#warn X/Y/Z and contents are now fully unviewable on our supported versions, remove the below check
#endif
// lummy removed these from the the MA/image type
#if (DM_VERSION <= 515 && DM_BUILD < 1643)
// Filtering out the stuff I know we don't care about
if(var_name == NAMEOF(src, x))
return FALSE
@@ -70,13 +77,14 @@ GLOBAL_DATUM_INIT(pluto, /atom/movable, new /atom/movable(null))
return FALSE
if(var_name == NAMEOF(src, z))
return FALSE
// Could make an argument for these but I think they will just confuse people, so yeeet
#ifndef SPACEMAN_DMM // Spaceman doesn't believe in contents on appearances, sorry lads
#ifndef SPACEMAN_DMM // Spaceman doesn't believe in contents on appearances, sorry lads
if(var_name == NAMEOF(src, contents))
return FALSE
#endif
#endif
if(var_name == NAMEOF(src, loc))
return FALSE
#endif
// Could make an argument for this but I think they will just confuse people, so yeeet
if(var_name == NAMEOF(src, vis_contents))
return FALSE
return ..()
@@ -10,12 +10,12 @@
/obj/item/organ/heart/gland/slime/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
owner.faction |= "slime"
owner.grant_language(/datum/language/slime, TRUE, TRUE, LANGUAGE_GLAND)
owner.grant_language(/datum/language/slime, source = LANGUAGE_GLAND)
/obj/item/organ/heart/gland/slime/Remove(mob/living/carbon/M, special = 0)
..()
owner.faction -= "slime"
owner.remove_language(/datum/language/slime, TRUE, TRUE, LANGUAGE_GLAND)
owner.remove_language(/datum/language/slime, source = LANGUAGE_GLAND)
/obj/item/organ/heart/gland/slime/activate()
to_chat(owner, "<span class='warning'>You feel nauseated!</span>")
@@ -210,7 +210,7 @@
// Physiology
CheckVampOrgans() // Heart, Eyes
// Language
owner.current.grant_language(/datum/language/vampiric, TRUE, TRUE, LANGUAGE_BLOODSUCKER)
owner.current.grant_language(/datum/language/vampiric, source = LANGUAGE_BLOODSUCKER)
owner.hasSoul = FALSE // If false, renders the character unable to sell their soul.
owner.isholy = FALSE // is this person a chaplain or admin role allowed to use bibles
// Disabilities

Some files were not shown because too many files have changed in this diff Show More