diff --git a/code/__defines/turfs.dm b/code/__defines/turfs.dm index 679b83fa4a..1c4b228b63 100644 --- a/code/__defines/turfs.dm +++ b/code/__defines/turfs.dm @@ -22,3 +22,9 @@ #define IS_OPAQUE_TURF(turf) (turf.directional_opacity == ALL_CARDINALS) #define IS_OPAQUE_TURF_DIR(turf, dir) (turf.directional_opacity & dir) #define FOOTSTEP_SPRITE_AMT 2 + +// Used to designate if a turf (or its area) should initialize as outdoors or not. +#define OUTDOORS_YES 1 // This being 1 helps with backwards compatibility. +#define OUTDOORS_NO 0 // Ditto. +#define OUTDOORS_AREA -1 // If a turf has this, it will defer to the area's settings on init. + // Note that after init, it will be either YES or NO. diff --git a/code/controllers/subsystems/planets.dm b/code/controllers/subsystems/planets.dm index 5486034871..4dae77ccbe 100644 --- a/code/controllers/subsystems/planets.dm +++ b/code/controllers/subsystems/planets.dm @@ -34,7 +34,7 @@ SUBSYSTEM_DEF(planets) // DO NOT CALL THIS DIRECTLY UNLESS IT'S IN INITIALIZE, // USE turf/simulated/proc/make_indoors() and -// tyrf/simulated/proc/make_outdoors() +// turf/simulated/proc/make_outdoors() /datum/controller/subsystem/planets/proc/addTurf(var/turf/T) if(z_to_planet.len >= T.z && z_to_planet[T.z]) var/datum/planet/P = z_to_planet[T.z] @@ -42,7 +42,7 @@ SUBSYSTEM_DEF(planets) return if(istype(T, /turf/unsimulated/wall/planetary)) P.planet_walls += T - else if(istype(T, /turf/simulated) && T.outdoors) + else if(istype(T, /turf/simulated) && T.is_outdoors()) P.planet_floors += T P.weather_holder.apply_to_turf(T) P.sun_holder.apply_to_turf(T) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index 8371c395a4..3d945e5816 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -260,6 +260,7 @@ /mob/living/carbon/human/proc/force_update_organs() for(var/obj/item/organ/O as anything in organs + internal_organs) O.species = species + species.post_spawn_special(src) //VOREStation Add End // Used below, simple injection modifier. diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index 12027e3259..955b99009a 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -12,8 +12,8 @@ name = "space jukebox" desc = "Filled with songs both past and present!" icon = 'icons/obj/jukebox.dmi' - icon_state = "jukebox2-nopower" - var/state_base = "jukebox2" + icon_state = "jukebox-nopower" + var/state_base = "jukebox" anchored = TRUE density = TRUE power_channel = EQUIP diff --git a/code/game/mecha/equipment/weapons/ballistic/mortar.dm b/code/game/mecha/equipment/weapons/ballistic/mortar.dm index 2ae61c230b..cc20f82acf 100644 --- a/code/game/mecha/equipment/weapons/ballistic/mortar.dm +++ b/code/game/mecha/equipment/weapons/ballistic/mortar.dm @@ -21,4 +21,4 @@ if(!MT.is_outdoors() || !TT.is_outdoors()) to_chat(chassis.occupant, "\The [src]'s control system prevents you from firing due to a blocked firing arc.") return 0 - return ..() + return ..() \ No newline at end of file diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 957cd246e6..56cc000dc9 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -220,7 +220,7 @@ var/global/list/tele_landmarks = list() // Terrible, but the alternative is loop if(!istype(candidate) || istype(candidate, /turf/simulated/sky)) safety-- continue - else if(candidate && !candidate.outdoors) + else if(candidate && !candidate.is_outdoors()) safety-- continue else diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 4f73d4151c..e1a58bb0ca 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -1,8 +1,16 @@ -/* Closets for specific jobs +/* + * Closets for specific jobs * Contains: * Bartender * Janitor * Lawyer + * Janitorial Equipment + * + * + * These have been removed from the map for the most part, however + * do not remove these in case people want to make maps or POIs + * with these closets. + * */ /* @@ -28,7 +36,8 @@ /obj/item/clothing/under/dress/dress_saloon, /obj/item/clothing/accessory/wcoat = 2, /obj/item/clothing/shoes/black = 2, - /obj/item/clothing/shoes/laceup) + /obj/item/clothing/shoes/laceup + ) /* * Chef @@ -45,7 +54,8 @@ /obj/item/weapon/storage/box/mousetraps = 2, /obj/item/clothing/under/rank/chef, /obj/item/clothing/head/chefhat, - /obj/item/weapon/storage/bag/food = 2) + /obj/item/weapon/storage/bag/food = 2 + ) /* * Janitor @@ -68,7 +78,8 @@ /obj/item/device/lightreplacer, /obj/item/weapon/storage/bag/trash, /obj/item/weapon/storage/belt/janitor, - /obj/item/clothing/shoes/galoshes) + /obj/item/clothing/shoes/galoshes + ) /* * Lawyer @@ -97,4 +108,23 @@ /obj/item/clothing/glasses/sunglasses/big = 2, /obj/item/clothing/under/lawyer/blue = 2, /obj/item/clothing/under/lawyer/blue/skirt = 2, - /obj/item/device/tape/random = 2) \ No newline at end of file + /obj/item/device/tape/random = 2 + ) + +/* + * Janitorial Equipment + */ +/obj/structure/closet/jequipcloset + name = "custodial equipment closet" + desc = "It's a storage unit for janitorial clothes and gear." + closet_appearance = /decl/closet_appearance/wardrobe/janitor + + starts_with = list( + /obj/item/device/flashlight = 5, + /obj/item/clothing/suit/caution = 12, + /obj/item/device/lightreplacer = 3, + /obj/item/weapon/storage/bag/trash = 3, + /obj/item/weapon/storage/box/lights/mixed = 3, + /obj/item/weapon/storage/box/mousetraps = 1, + /obj/item/weapon/grenade/chem_grenade/cleaner = 4 + ) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm index 15249c0b81..81551e531c 100644 --- a/code/game/objects/structures/crates_lockers/closets/misc_vr.dm +++ b/code/game/objects/structures/crates_lockers/closets/misc_vr.dm @@ -1,5 +1,20 @@ -//Gun Cabinets +/* + * Closets for Virgo + * Contains: + * Gun Cabinets + * Explorer + * Pathfinder + * SAR/Field Medic + * Pilot/Navigator + * Exotic Seeds + * Autolok Suit + * Emergency Suit (Wall) + * + */ +/* + * Gun Cabinets + */ /obj/structure/closet/secure_closet/guncabinet/sidearm name = "emergency weapon cabinet" req_one_access = list(access_armory,access_captain) @@ -7,7 +22,6 @@ starts_with = list( /obj/item/weapon/gun/energy/gun = 4) - /obj/structure/closet/secure_closet/guncabinet/rifle name = "rifle cabinet" req_one_access = list(access_explorer,access_brig) @@ -33,8 +47,9 @@ /obj/item/weapon/cell/device/weapon = 2, /obj/item/clothing/accessory/permit/gun/planetside) -//Explorer Lockers - +/* + * Explorer + */ /obj/structure/closet/secure_closet/explorer name = "explorer locker" req_access = list(access_explorer) @@ -73,8 +88,52 @@ starts_with += /obj/item/weapon/storage/backpack/dufflebag/explorer return ..() -//SAR Lockers +/* + * Pathfinder + */ +/obj/structure/closet/secure_closet/pathfinder + name = "pathfinder locker" + req_access = list(access_gateway) + closet_appearance = /decl/closet_appearance/secure_closet/expedition/pathfinder + starts_with = list( + /obj/item/clothing/under/explorer, + /obj/item/clothing/suit/storage/hooded/explorer, + /obj/item/clothing/mask/gas/explorer, + /obj/item/weapon/storage/belt/explorer/pathfinder, + /obj/item/clothing/shoes/boots/winter/explorer, + /obj/item/clothing/gloves/black, + /obj/item/device/radio/headset/pathfinder, + /obj/item/device/radio/headset/pathfinder/alt, + /obj/item/weapon/cartridge/explorer, + /obj/item/device/flashlight, + /obj/item/device/gps/explorer, + /obj/item/weapon/storage/box/flare, + /obj/item/weapon/storage/box/explorerkeys, + /obj/item/device/geiger, + /obj/item/weapon/cell/device, + /obj/item/device/radio, + /obj/item/device/bluespaceradio/tether_prelinked, + /obj/item/stack/marker_beacon/thirty, + /obj/item/weapon/material/knife/tacknife/survival, + /obj/item/weapon/material/knife/machete/deluxe, + /obj/item/clothing/accessory/holster/machete, + /obj/random/explorer_shield, + /obj/item/weapon/reagent_containers/food/snacks/liquidfood, + /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, + /obj/item/device/cataloguer/compact/pathfinder, + /obj/item/device/mapping_unit) + +/obj/structure/closet/secure_closet/pathfinder/Initialize() + if(prob(50)) + starts_with += /obj/item/weapon/storage/backpack + else + starts_with += /obj/item/weapon/storage/backpack/satchel/norm + return ..() + +/* + * SAR/Field Medic + */ /obj/structure/closet/secure_closet/sar name = "field medic locker" desc = "Supplies for a wilderness first responder." @@ -124,8 +183,9 @@ starts_with += /obj/item/weapon/storage/backpack/dufflebag/med return ..() -//Pilot Locker - +/* + * Pilot/Navigator + */ /obj/structure/closet/secure_closet/pilot name = "pilot locker" req_access = list(access_pilot) @@ -161,48 +221,9 @@ starts_with += /obj/item/weapon/storage/backpack/satchel/norm return ..() -/obj/structure/closet/secure_closet/pathfinder //CHOMPedit: Changes bluespaceradio/tether_prelinked to bluespaceradio because we don't have Tether here - name = "pathfinder locker" - req_access = list(access_gateway) - closet_appearance = /decl/closet_appearance/secure_closet/expedition/pathfinder - - starts_with = list( - /obj/item/clothing/under/explorer, - /obj/item/clothing/suit/storage/hooded/explorer, - /obj/item/clothing/mask/gas/explorer, - /obj/item/weapon/storage/belt/explorer/pathfinder, - /obj/item/clothing/shoes/boots/winter/explorer, - /obj/item/clothing/gloves/black, - /obj/item/device/radio/headset/pathfinder, - /obj/item/device/radio/headset/pathfinder/alt, - /obj/item/weapon/cartridge/explorer, - /obj/item/device/flashlight, - /obj/item/device/gps/explorer, - /obj/item/weapon/storage/box/flare, - /obj/item/weapon/storage/box/explorerkeys, - /obj/item/device/geiger, - /obj/item/weapon/cell/device, - /obj/item/device/radio, - /obj/item/device/bluespaceradio, - /obj/item/stack/marker_beacon/thirty, - /obj/item/weapon/material/knife/tacknife/survival, - /obj/item/weapon/material/knife/machete/deluxe, - /obj/item/clothing/accessory/holster/machete, - /obj/random/explorer_shield, - /obj/item/weapon/reagent_containers/food/snacks/liquidfood, - /obj/item/weapon/reagent_containers/food/snacks/liquidprotein, - /obj/item/device/cataloguer/compact/pathfinder, - /obj/item/device/mapping_unit) - -/obj/structure/closet/secure_closet/pathfinder/Initialize() - if(prob(50)) - starts_with += /obj/item/weapon/storage/backpack - else - starts_with += /obj/item/weapon/storage/backpack/satchel/norm - return ..() - -//Exotic Seeds Crate - +/* + * Exotic Seeds + */ /obj/structure/closet/crate/hydroponics/exotic name = "exotic seeds crate" desc = "All you need to destroy that pesky planet." @@ -215,6 +236,9 @@ /obj/item/seeds/libertymycelium, /obj/item/seeds/reishimycelium) +/* + * Autolok Suit + */ /obj/structure/closet/autolok_wall name = "autolok suit storage" desc = "It's wall-mounted storage unit for an AutoLok suit." @@ -231,6 +255,9 @@ /obj/item/device/suit_cooling_unit/emergency ) +/* + * Emergency Suit (Wall) + */ /obj/structure/closet/emergsuit_wall name = "emergency suit storage" desc = "It's wall-mounted storage unit for an emergency suit." diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index 8342a5d6e8..4f70fc5918 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -46,10 +46,10 @@ return // Create a ceiling to shield from the weather - if(src.outdoors) + if(src.is_outdoors()) for(var/dir in cardinal) var/turf/A = get_step(src, dir) - if(A && !A.outdoors) + if(A && !A.is_outdoors()) if(expended_tile || R.use(1)) make_indoors() playsound(src, 'sound/weapons/Genhit.ogg', 50, 1) diff --git a/code/game/turfs/simulated/floor_icon.dm b/code/game/turfs/simulated/floor_icon.dm index d975f81090..420d8628b5 100644 --- a/code/game/turfs/simulated/floor_icon.dm +++ b/code/game/turfs/simulated/floor_icon.dm @@ -87,7 +87,7 @@ var/image/no_ceiling_image = null // Show 'ceilingless' overlay. var/turf/above = GetAbove(src) - if(above && isopenspace(above) && !istype(src, /turf/simulated/floor/outdoors)) // This won't apply to outdoor turfs since its assumed they don't have a ceiling anyways. + if(!is_outdoors() && above && isopenspace(above)) // This won't apply to outdoor turfs since its assumed they don't have a ceiling anyways. add_overlay(no_ceiling_image) // Update our 'them-to-us' edges, aka edges from external turfs we feel should spill onto us diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index f2902abdfe..e44ac49a66 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -17,11 +17,11 @@ initial_flooring = /decl/flooring/lava // Defining this in case someone DOES step on lava and survive. Somehow. /turf/simulated/floor/lava/outdoors - outdoors = TRUE + outdoors = OUTDOORS_YES // For maximum pedantry. /turf/simulated/floor/lava/Initialize() - if(!outdoors) + if(!is_outdoors()) name = "magma" update_icon() update_light() diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index 3e46ccfeef..84c91366f1 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -1,11 +1,16 @@ var/list/turf_edge_cache = list() -/turf/ +/turf // If greater than 0, this turf will apply edge overlays on top of other turfs cardinally adjacent to it, if those adjacent turfs are of a different icon_state, // and if those adjacent turfs have a lower edge_blending_priority. var/edge_blending_priority = 0 // Outdoors var determines if the game should consider the turf to be 'outdoors', which controls certain things such as weather effects. - var/outdoors = FALSE + var/outdoors = OUTDOORS_AREA + +/area + // If a turf's `outdoors` variable is set to `OUTDOORS_AREA`, + // it will decide if it's outdoors or not when being initialized based on this var. + var/outdoors = OUTDOORS_NO /turf/simulated/floor/outdoors name = "generic ground" @@ -13,7 +18,7 @@ var/list/turf_edge_cache = list() icon = 'icons/turf/outdoors.dmi' icon_state = null edge_blending_priority = 1 - outdoors = TRUE // This variable is used for weather effects. + outdoors = OUTDOORS_YES // This variable is used for weather effects. can_dirty = FALSE // Looks hideous with dirt on it. can_build_into_floor = TRUE @@ -21,31 +26,51 @@ var/list/turf_edge_cache = list() var/list/turf_layers = list(/turf/simulated/floor/outdoors/rocks) /turf/simulated/floor/Initialize(mapload) - if(outdoors) + if(is_outdoors()) SSplanets.addTurf(src) . = ..() /turf/simulated/floor/Destroy() - if(outdoors) + if(is_outdoors()) SSplanets.removeTurf(src) return ..() +// Turfs can decide if they should be indoors or outdoors. +// By default they choose based on their area's setting. +// This helps cut down on ten billion `/outdoors` subtypes being needed. +/turf/proc/is_outdoors() + return FALSE + +/turf/simulated/is_outdoors() + switch(outdoors) + if(OUTDOORS_YES) + return TRUE + if(OUTDOORS_NO) + return FALSE + if(OUTDOORS_AREA) + var/area/A = loc + if(A.outdoors == OUTDOORS_YES) + return TRUE + return FALSE + +/// Makes the turf explicitly outdoors. /turf/simulated/proc/make_outdoors() - if(outdoors) + if(is_outdoors()) // Already outdoors. return - outdoors = TRUE + outdoors = OUTDOORS_YES SSplanets.addTurf(src) +/// Makes the turf explicitly indoors. /turf/simulated/proc/make_indoors() - if(!outdoors) + if(!is_outdoors()) // Already indoors. return - outdoors = FALSE + outdoors = OUTDOORS_NO SSplanets.removeTurf(src) /turf/simulated/post_change() ..() // If it was outdoors and still is, it will not get added twice when the planet controller gets around to putting it in. - if(outdoors) + if(is_outdoors()) make_outdoors() else make_indoors() diff --git a/code/game/turfs/simulated/outdoors/sky.dm b/code/game/turfs/simulated/outdoors/sky.dm index 3188302288..2f9f8106bb 100644 --- a/code/game/turfs/simulated/outdoors/sky.dm +++ b/code/game/turfs/simulated/outdoors/sky.dm @@ -4,7 +4,7 @@ desc = "Hope you don't have a fear of heights." icon = 'icons/turf/floors.dmi' icon_state = "sky_slow" - outdoors = TRUE + outdoors = OUTDOORS_YES // Assume there's a vacuum for the purposes of avoiding active edges at initialization, as well as ZAS fun if a window breaks. oxygen = 0 diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 72edce4503..036cfd5728 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -171,7 +171,7 @@ return // Create a ceiling to shield from the weather - if(outdoors) + if(is_outdoors()) if(expended_tile || R.use(1)) // Don't need to check adjacent turfs for a wall, we're building on one make_indoors() if(!expended_tile) // Would've already played a sound diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index eaef2357b8..d1f0dd37dd 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -8,7 +8,7 @@ var/under_state = "rock" edge_blending_priority = -1 movement_cost = 4 - outdoors = TRUE + outdoors = OUTDOORS_YES layer = WATER_FLOOR_LAYER @@ -106,12 +106,12 @@ name = "pool" desc = "Don't worry, it's not closed." under_state = "pool" - outdoors = FALSE + outdoors = OUTDOORS_NO /turf/simulated/floor/water/deep/pool name = "deep pool" desc = "Don't worry, it's not closed." - outdoors = FALSE + outdoors = OUTDOORS_NO /mob/living/proc/can_breathe_water() return FALSE diff --git a/code/modules/admin/verbs/lightning_strike.dm b/code/modules/admin/verbs/lightning_strike.dm index 96f5419f99..d00fb4a1af 100644 --- a/code/modules/admin/verbs/lightning_strike.dm +++ b/code/modules/admin/verbs/lightning_strike.dm @@ -40,13 +40,13 @@ for(var/obj/machinery/power/thing in range(LIGHTNING_REDIRECT_RANGE, T)) if(istype(thing, /obj/machinery/power/tesla_coil)) var/turf/simulated/coil_turf = get_turf(thing) - if(istype(coil_turf) && thing.anchored && coil_turf.outdoors) + if(istype(coil_turf) && thing.anchored && coil_turf.is_outdoors()) coil = thing break if(istype(thing, /obj/machinery/power/grounding_rod)) var/turf/simulated/rod_turf = get_turf(thing) - if(istype(rod_turf) && thing.anchored && rod_turf.outdoors) + if(istype(rod_turf) && thing.anchored && rod_turf.is_outdoors()) ground = thing if(coil) // Coil gets highest priority. diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index b35cbd5bcf..080c2946e4 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -166,7 +166,7 @@ ) gear_tweaks += new/datum/gear_tweak/path(labcoats) -/datum/gear/suit/labcoat/emt +/datum/gear/suit/labcoat_emt display_name = "labcoat, EMT" path = /obj/item/clothing/suit/storage/toggle/labcoat/emt allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") diff --git a/code/modules/economy/vending_machines.dm b/code/modules/economy/vending_machines.dm index 10b8390657..9fe6ebe8fd 100644 --- a/code/modules/economy/vending_machines.dm +++ b/code/modules/economy/vending_machines.dm @@ -1149,6 +1149,7 @@ products = list( /obj/item/clothing/under/rank/bartender = 5, /obj/item/clothing/under/rank/bartender/skirt = 5, + /obj/item/clothing/under/waiter = 5, /obj/item/clothing/head/that = 5, /obj/item/clothing/head/flatcap = 5, /obj/item/clothing/shoes/brown = 5, @@ -1192,7 +1193,9 @@ /obj/item/clothing/suit/storage/apron/white = 5, /obj/item/clothing/suit/chef = 5, /obj/item/clothing/suit/chef/classic = 5, - /obj/item/clothing/head/chefhat = 5 + /obj/item/clothing/head/chefhat = 5, + /obj/item/clothing/under/waiter = 5, + /obj/item/clothing/under/sundress = 1 ) req_log_access = access_hop has_logs = 1 @@ -1443,16 +1446,16 @@ icon_state = "janidrobe" req_access = list(access_janitor) products = list( - /obj/item/clothing/under/rank/janitor = 5, - /obj/item/clothing/under/dress/maid/janitor = 5, - /obj/item/device/radio/headset/headset_service = 5, - /obj/item/weapon/cartridge/janitor = 5, - /obj/item/clothing/gloves/black = 5, /obj/item/clothing/head/soft/purple = 5, /obj/item/clothing/head/beret/purple = 5, - /obj/item/clothing/suit/caution = 20, + /obj/item/clothing/head/headband/maid = 5, + /obj/item/device/radio/headset/headset_service = 5, + /obj/item/clothing/under/rank/janitor = 5, + /obj/item/clothing/under/dress/maid/janitor = 5, + /obj/item/clothing/gloves/black = 5, /obj/item/weapon/storage/belt/janitor = 5, - /obj/item/clothing/shoes/galoshes = 5 + /obj/item/clothing/shoes/galoshes = 5, + /obj/item/weapon/cartridge/janitor = 5 ) req_log_access = access_hop has_logs = 1 diff --git a/code/modules/flufftext/look_up.dm b/code/modules/flufftext/look_up.dm index 6be3713c03..10cd25b288 100644 --- a/code/modules/flufftext/look_up.dm +++ b/code/modules/flufftext/look_up.dm @@ -12,7 +12,7 @@ to_chat(usr, span("warning", "You appear to be in a place without any sort of concept of direction. You have bigger problems to worry about.")) return - if(!T.outdoors) // They're inside. + if(!T.is_outdoors()) // They're inside. to_chat(usr, "You see nothing interesting.") return diff --git a/code/modules/lighting/lighting_fake_sun_vr.dm b/code/modules/lighting/lighting_fake_sun_vr.dm index 3ea2cb6eac..4a1b332986 100644 --- a/code/modules/lighting/lighting_fake_sun_vr.dm +++ b/code/modules/lighting/lighting_fake_sun_vr.dm @@ -100,7 +100,7 @@ var/list/all_turfs = block(locate(1, 1, min), locate(world.maxx, world.maxy, max)) var/list/turfs_to_use = list() for(var/turf/T as anything in all_turfs) - if(T.outdoors) + if(T.is_outdoors()) turfs_to_use += T if(!turfs_to_use.len) diff --git a/code/modules/metric/activity.dm b/code/modules/metric/activity.dm index c33c88adca..dd93b90179 100644 --- a/code/modules/metric/activity.dm +++ b/code/modules/metric/activity.dm @@ -86,7 +86,7 @@ var/num = 0 for(var/mob/living/L in player_list) var/turf/T = get_turf(L) - if(istype(T) && !istype(T, /turf/space) && T.outdoors) + if(istype(T) && !istype(T, /turf/space) && T.is_outdoors()) . += assess_player_activity(L) num++ if(num) diff --git a/code/modules/metric/count.dm b/code/modules/metric/count.dm index ba3678295f..e0b1843d77 100644 --- a/code/modules/metric/count.dm +++ b/code/modules/metric/count.dm @@ -6,7 +6,7 @@ var/num = 0 for(var/mob/living/L in player_list) var/turf/T = get_turf(L) - if(istype(T) && !istype(T, /turf/space) && T.outdoors) + if(istype(T) && !istype(T, /turf/space) && T.is_outdoors()) if(assess_player_activity(L) >= cutoff) num++ return num diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index c5c939b2f1..dd4993bce2 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -42,7 +42,7 @@ var/global/list/total_extraction_beacons = list() return if(!can_use_indoors) var/turf/T = get_turf(A) - if(T && !T.outdoors) + if(T && !T.is_outdoors()) to_chat(user, "[src] can only be used on things that are outdoors!") return if(!flag) @@ -145,7 +145,7 @@ var/global/list/total_extraction_beacons = list() /obj/item/fulton_core/attack_self(mob/user) var/turf/T = get_turf(user) - var/outdoors = T.outdoors + var/outdoors = T.is_outdoors() if(do_after(user,15,target = user) && !QDELETED(src) && outdoors) new /obj/structure/extraction_point(get_turf(user)) qdel(src) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 6e8f998952..d62f723fed 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -167,7 +167,7 @@ // I don't like that so I'm commenting it out :) // VOREstation Edit Start /* - if(T.outdoors && (T.z <= SSplanets.z_to_planet.len)) + if((T.is_outdoors()) && (T.z <= SSplanets.z_to_planet.len)) var/datum/planet/P = SSplanets.z_to_planet[z] if(P) var/datum/weather_holder/WH = P.weather_holder diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 2e589f3fbb..5bb68f044d 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -257,4 +257,90 @@ e_icon = 4 H.shadekin_display.icon_state = "shadekin-[l_icon]-[e_icon]" - return \ No newline at end of file + return + +/datum/species/shadekin/proc/get_shadekin_eyecolor(var/mob/living/carbon/human/H) + var/eyecolor_rgb = rgb(H.r_eyes, H.g_eyes, H.b_eyes) + + var/eyecolor_hue = rgb2num(eyecolor_rgb, COLORSPACE_HSV)[1] + var/eyecolor_sat = rgb2num(eyecolor_rgb, COLORSPACE_HSV)[2] + var/eyecolor_val = rgb2num(eyecolor_rgb, COLORSPACE_HSV)[3] + + //First, clamp the saturation/value to prevent black/grey/white eyes + if(eyecolor_sat < 10) + eyecolor_sat = 10 + if(eyecolor_val < 40) + eyecolor_val = 40 + + eyecolor_rgb = rgb(eyecolor_hue, eyecolor_sat, eyecolor_val, COLORSPACE_HSV) + + H.r_eyes = rgb2num(eyecolor_rgb)[1] + H.g_eyes = rgb2num(eyecolor_rgb)[2] + H.b_eyes = rgb2num(eyecolor_rgb)[3] + + //Now determine what color we fall into. + var/eyecolor_type = BLUE_EYES + switch(eyecolor_hue) + if(0 to 20) + eyecolor_type = RED_EYES + if(21 to 50) + eyecolor_type = ORANGE_EYES + if(51 to 70) + eyecolor_type = YELLOW_EYES + if(71 to 160) + eyecolor_type = GREEN_EYES + if(161 to 260) + eyecolor_type = BLUE_EYES + if(261 to 340) + eyecolor_type = PURPLE_EYES + if(341 to 360) + eyecolor_type = RED_EYES + + return eyecolor_type + +/datum/species/shadekin/post_spawn_special(var/mob/living/carbon/human/H) + .=..() + + var/eyecolor_type = get_shadekin_eyecolor(H) + + switch(eyecolor_type) + if(BLUE_EYES) + total_health = 100 + energy_light = 0.5 + energy_dark = 0.5 + if(RED_EYES) + total_health = 200 + energy_light = -1 + energy_dark = 0.1 + if(PURPLE_EYES) + total_health = 150 + energy_light = -0.5 + energy_dark = 1 + if(YELLOW_EYES) + total_health = 100 + energy_light = -2 + energy_dark = 3 + if(GREEN_EYES) + total_health = 100 + energy_light = 0.125 + energy_dark = 2 + if(ORANGE_EYES) + total_health = 175 + energy_light = -0.5 + energy_dark = 0.25 + + H.maxHealth = total_health + + H.health = H.maxHealth + +/datum/species/shadekin/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base) + + var/datum/species/shadekin/new_copy = ..() + + new_copy.total_health = total_health + + new_copy.energy_light = energy_light + + new_copy.energy_dark = energy_dark + + return new_copy \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm deleted file mode 100644 index 4ce2ec704e..0000000000 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_trait.dm +++ /dev/null @@ -1,92 +0,0 @@ -/datum/trait/kintype - sort = TRAIT_SORT_SPECIES - allowed_species = list(SPECIES_SHADEKIN) - var/color = BLUE_EYES - name = "Shadekin Blue Adaptation" - desc = "Makes your shadekin adapted as a Blue eyed kin! This gives you decreased energy regeneration in darkness, decreased regeneration in the light and unchanged health!" - cost = 0 - var_changes = list( "total_health" = 100, - "energy_light" = 0.5, - "energy_dark" = 0.5, - "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) - custom_only = FALSE - -/datum/trait/kintype/red - name = "Shadekin Red Adaptation" - color = RED_EYES - desc = "Makes your shadekin adapted as a Red eyed kin! This gives you minimal energy regeneration in darkness, moderate degeneration in the light and increased health!" - var_changes = list( "total_health" = 200, - "energy_light" = -1, - "energy_dark" = 0.1, - "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) - -/datum/trait/kintype/purple - name = "Shadekin Purple Adaptation" - color = PURPLE_EYES - desc = "Makes your shadekin adapted as a Purple eyed kin! This gives you moderate energy regeneration in darkness, minor degeneration in the light and increased health!" - var_changes = list( "total_health" = 150, - "energy_light" = -0.5, - "energy_dark" = 1, - "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) - -/datum/trait/kintype/yellow - name = "Shadekin Yellow Adaptation" - color = YELLOW_EYES - desc = "Makes your shadekin adapted as a Yellow eyed kin! This gives you the highest energy regeneration in darkness, high degeneration in the light and unchanged health!" - var_changes = list( "total_health" = 100, - "energy_light" = -2, - "energy_dark" = 3, - "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) - -/datum/trait/kintype/green - name = "Shadekin Green Adaptation" - color = GREEN_EYES - desc = "Makes your shadekin adapted as a Green eyed kin! This gives you high energy regeneration in darkness, minor regeneration in the light and unchanged health!" - var_changes = list( "total_health" = 100, - "energy_light" = 0.125, - "energy_dark" = 2, - "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) - -/datum/trait/kintype/orange - name = "Shadekin Orange Adaptation" - color = ORANGE_EYES - desc = "Makes your shadekin adapted as a Orange eyed kin! This gives you minor energy regeneration in darkness, moderate degeneration in the light and increased health!" - var_changes = list( "total_health" = 175, - "energy_light" = -0.5, - "energy_dark" = 0.25, - "unarmed_types" = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin,/datum/unarmed_attack/shadekinharmbap)) - -/datum/trait/kintype/apply(var/datum/species/shadekin/S,var/mob/living/carbon/human/H) - if(color && istype(S)) //Sanity check to see if they're actually a shadekin, otherwise just don't do anything. They shouldn't be able to spawn with the trait. - S.kin_type = color - ..(S,H) - switch(color) - if(BLUE_EYES) - H.shapeshifter_set_eye_color("0000FF") - if(RED_EYES) - H.shapeshifter_set_eye_color("FF0000") - if(GREEN_EYES) - H.shapeshifter_set_eye_color("00FF00") - if(PURPLE_EYES) - H.shapeshifter_set_eye_color("FF00FF") - if(YELLOW_EYES) - H.shapeshifter_set_eye_color("FFFF00") - if(ORANGE_EYES) - H.shapeshifter_set_eye_color("FFA500") - - -/datum/unarmed_attack/shadekinharmbap - attack_name = "syphon strike" - attack_verb = list("hit", "clawed", "slashed", "scratched") - attack_sound = 'sound/weapons/slice.ogg' - miss_sound = 'sound/weapons/slashmiss.ogg' - shredding = 0 - -/datum/unarmed_attack/shadekinharmbap/apply_effects(var/mob/living/carbon/human/shadekin/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone) - ..() - if(user == target) //Prevent self attack to gain energy - return - var/obj/item/organ/internal/brain/shadekin/shade_organ = user.internal_organs_by_name[O_BRAIN] - if(!istype(shade_organ)) - return - shade_organ.dark_energy = CLAMP(shade_organ.dark_energy + attack_damage,0,shade_organ.max_dark_energy) //Convert Damage done to Energy Gained \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index b93a56b3db..67ff1de565 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -547,3 +547,7 @@ /datum/species/proc/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary) return FALSE + +/datum/species/proc/post_spawn_special(mob/living/carbon/human/H) + return + diff --git a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm index bff44609ea..110b76ef9b 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack_vr.dm @@ -49,15 +49,15 @@ target.bloodstr.add_reagent("numbenzyme",attack_damage) /datum/unarmed_attack/claws/shadekin - var/energy_gain = 3 -/datum/unarmed_attack/claws/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) +/datum/unarmed_attack/claws/shadekin/apply_effects(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) ..() - user.shadekin_adjust_energy(energy_gain) + if(!(target == user)) + user.shadekin_adjust_energy(attack_damage) /datum/unarmed_attack/bite/sharp/shadekin - var/energy_gain = 3 -/datum/unarmed_attack/bite/sharp/shadekin/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) +/datum/unarmed_attack/bite/sharp/shadekin/apply_effects(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage) ..() - user.shadekin_adjust_energy(energy_gain) \ No newline at end of file + if(!(target == user)) + user.shadekin_adjust_energy(attack_damage) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm b/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm index cc0b3785b6..4efce708e8 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm @@ -136,7 +136,8 @@ if(stat != DEAD && cell) // TODO generalize solar occlusion to charge from the actual sun. - var/new_recharge_state = istype(loc, /turf/simulated/floor/outdoors) || /*, /turf/exterior) */ istype(loc, /turf/space) + var/turf/T = get_turf(src) + var/new_recharge_state = T?.is_outdoors() || isspace(T) if(new_recharge_state != last_recharge_state) last_recharge_state = new_recharge_state if(last_recharge_state) diff --git a/code/modules/overmap/turfs.dm b/code/modules/overmap/turfs.dm index 9d7a35c226..33c6b7cb04 100644 --- a/code/modules/overmap/turfs.dm +++ b/code/modules/overmap/turfs.dm @@ -10,10 +10,12 @@ var/global/list/map_sectors = list() /turf/unsimulated/map icon = 'icons/turf/space.dmi' icon_state = "map" + alpha = 200 /turf/unsimulated/map/edge opacity = 1 density = TRUE + alpha = 255 var/map_is_to_my var/turf/unsimulated/map/edge/wrap_buddy @@ -75,6 +77,7 @@ var/global/list/map_sectors = list() if(x == global.using_map.overmap_size) I.pixel_x = 5*i + 2 add_overlay(I) + AddElement(/datum/element/turf_z_transparency) /turf/unsimulated/map/Entered(var/atom/movable/O, var/atom/oldloc) ..() diff --git a/code/modules/planet/sif.dm b/code/modules/planet/sif.dm index 1d2e4b0af0..e09b808a3a 100644 --- a/code/modules/planet/sif.dm +++ b/code/modules/planet/sif.dm @@ -296,7 +296,7 @@ var/datum/planet/sif/planet_sif = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to rain on them. // If they have an open umbrella, it'll guard from rain @@ -349,7 +349,7 @@ var/datum/planet/sif/planet_sif = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to rain on them. // If they have an open umbrella, it'll guard from rain @@ -407,7 +407,7 @@ var/datum/planet/sif/planet_sif = null for(var/mob/living/carbon/H as anything in human_mob_list) if(H.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(H) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to pelt them with ice. // If they have an open umbrella, it'll guard from hail @@ -502,7 +502,7 @@ var/datum/planet/sif/planet_sif = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to burn them with ash. L.inflict_heat_damage(rand(1, 3)) @@ -539,7 +539,7 @@ var/datum/planet/sif/planet_sif = null if(L.z in holder.our_planet.expected_z_levels) irradiate_nearby_turf(L) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to irradiate them with fallout. L.rad_act(rand(direct_rad_low, direct_rad_high)) @@ -553,5 +553,5 @@ var/datum/planet/sif/planet_sif = null var/turf/T = pick(turfs) // We get one try per tick. if(!istype(T)) return - if(T.outdoors) + if(T.is_outdoors()) SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high)) diff --git a/code/modules/planet/virgo3b_vr.dm b/code/modules/planet/virgo3b_vr.dm index d2faf2315d..822faa2d7e 100644 --- a/code/modules/planet/virgo3b_vr.dm +++ b/code/modules/planet/virgo3b_vr.dm @@ -276,7 +276,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to rain on them. // If they have an open umbrella, it'll guard from rain @@ -327,7 +327,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to rain on them. // If they have an open umbrella, it'll guard from rain @@ -383,7 +383,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null for(var/mob/living/carbon/H as anything in human_mob_list) if(H.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(H) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to pelt them with ice. // If they have an open umbrella, it'll guard from hail @@ -474,7 +474,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to burn them with ash. L.inflict_heat_damage(rand(1, 3)) @@ -511,7 +511,7 @@ var/datum/planet/virgo3b/planet_virgo3b = null if(L.z in holder.our_planet.expected_z_levels) irradiate_nearby_turf(L) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to irradiate them with fallout. L.rad_act(rand(direct_rad_low, direct_rad_high)) @@ -525,6 +525,6 @@ var/datum/planet/virgo3b/planet_virgo3b = null var/turf/T = pick(turfs) // We get one try per tick. if(!istype(T)) return - if(T.outdoors) + if(T.is_outdoors()) SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high)) diff --git a/code/modules/planet/virgo4_vr.dm b/code/modules/planet/virgo4_vr.dm index 18f4298aa1..74cd6c33b4 100644 --- a/code/modules/planet/virgo4_vr.dm +++ b/code/modules/planet/virgo4_vr.dm @@ -255,7 +255,7 @@ var/datum/planet/virgo4/planet_virgo4 = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to rain on them. // If they have an open umbrella, it'll guard from rain @@ -301,7 +301,7 @@ var/datum/planet/virgo4/planet_virgo4 = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to rain on them. // If they have an open umbrella, it'll guard from rain @@ -354,7 +354,7 @@ var/datum/planet/virgo4/planet_virgo4 = null for(var/mob/living/carbon/H as anything in human_mob_list) if(H.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(H) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to pelt them with ice. // If they have an open umbrella, it'll guard from hail @@ -447,7 +447,7 @@ var/datum/planet/virgo4/planet_virgo4 = null for(var/mob/living/L as anything in living_mob_list) if(L.z in holder.our_planet.expected_z_levels) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to burn them with ash. L.inflict_heat_damage(rand(1, 3)) @@ -484,7 +484,7 @@ var/datum/planet/virgo4/planet_virgo4 = null if(L.z in holder.our_planet.expected_z_levels) irradiate_nearby_turf(L) var/turf/T = get_turf(L) - if(!T.outdoors) + if(!T.is_outdoors()) continue // They're indoors, so no need to irradiate them with fallout. L.rad_act(rand(direct_rad_low, direct_rad_high)) @@ -498,7 +498,7 @@ var/datum/planet/virgo4/planet_virgo4 = null var/turf/T = pick(turfs) // We get one try per tick. if(!istype(T)) return - if(T.outdoors) + if(T.is_outdoors()) SSradiation.radiate(T, rand(fallout_rad_low, fallout_rad_high)) /turf/unsimulated/wall/planetary/normal/virgo4 diff --git a/code/modules/planet/weather.dm b/code/modules/planet/weather.dm index bbe2318a27..c354e8bde3 100644 --- a/code/modules/planet/weather.dm +++ b/code/modules/planet/weather.dm @@ -137,7 +137,7 @@ for(var/mob/M in player_list) // Don't need to care about clientless mobs. if(M.z in our_planet.expected_z_levels) var/turf/T = get_turf(M) - if(!T.outdoors) + if(!T.is_outdoors()) continue to_chat(M, message) @@ -213,7 +213,7 @@ // Otherwise they should hear some sounds, depending on if they're inside or not. var/turf/T = get_turf(M) if(istype(T)) - if(T.outdoors) // Mob is currently outdoors. + if(T.is_outdoors()) // Mob is currently outdoors. hear_outdoor_sounds(M, TRUE) hear_indoor_sounds(M, FALSE) diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm index c5021ba960..dcf8dab1bd 100644 --- a/code/modules/power/batteryrack.dm +++ b/code/modules/power/batteryrack.dm @@ -9,7 +9,7 @@ /obj/machinery/power/smes/batteryrack name = "power cell rack PSU" - desc = "A rack of power cells working as a PSU." + desc = "A rack of power cells working as a PSU. Made from a recycled Breaker Box frame." icon = 'icons/obj/cellrack.dmi' icon_state = "rack" capacity = 0 diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 16d1280b21..0b915203ba 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -447,8 +447,8 @@ formatted_message = replacetext(raw_message, "%belly", lowertext(name)) formatted_message = replacetext(formatted_message, "%pred", owner) formatted_message = replacetext(formatted_message, "%prey", english_list(contents)) - formatted_message = replacetext(formatted_message, "%count", contents.len) formatted_message = replacetext(formatted_message, "%countprey", living_count) + formatted_message = replacetext(formatted_message, "%count", contents.len) return("[formatted_message]") @@ -719,14 +719,14 @@ struggle_outer_message = replacetext(struggle_outer_message, "%pred", owner) struggle_outer_message = replacetext(struggle_outer_message, "%prey", R) struggle_outer_message = replacetext(struggle_outer_message, "%belly", lowertext(name)) - struggle_outer_message = replacetext(struggle_outer_message, "%count", contents.len) struggle_outer_message = replacetext(struggle_outer_message, "%countprey", living_count) + struggle_outer_message = replacetext(struggle_outer_message, "%count", contents.len) struggle_user_message = replacetext(struggle_user_message, "%pred", owner) struggle_user_message = replacetext(struggle_user_message, "%prey", R) struggle_user_message = replacetext(struggle_user_message, "%belly", lowertext(name)) - struggle_user_message = replacetext(struggle_user_message, "%count", contents.len) struggle_user_message = replacetext(struggle_user_message, "%countprey", living_count) + struggle_user_message = replacetext(struggle_user_message, "%count", contents.len) struggle_outer_message = "[struggle_outer_message]" struggle_user_message = "[struggle_user_message]" diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 4687fb30cc..3b79c2424f 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -122,8 +122,8 @@ formatted_message = replacetext(raw_message, "%belly", lowertext(name)) formatted_message = replacetext(formatted_message, "%pred", owner) formatted_message = replacetext(formatted_message, "%prey", english_list(contents)) - formatted_message = replacetext(formatted_message, "%count", contents.len) formatted_message = replacetext(formatted_message, "%countprey", living_count) + formatted_message = replacetext(formatted_message, "%count", contents.len) to_chat(M, "[formatted_message]") @@ -244,14 +244,14 @@ digest_alert_owner = replacetext(digest_alert_owner, "%pred", owner) digest_alert_owner = replacetext(digest_alert_owner, "%prey", M) digest_alert_owner = replacetext(digest_alert_owner, "%belly", lowertext(name)) - digest_alert_owner = replacetext(digest_alert_owner, "%count", contents.len) digest_alert_owner = replacetext(digest_alert_owner, "%countprey", living_count) + digest_alert_owner = replacetext(digest_alert_owner, "%count", contents.len) digest_alert_prey = replacetext(digest_alert_prey, "%pred", owner) digest_alert_prey = replacetext(digest_alert_prey, "%prey", M) digest_alert_prey = replacetext(digest_alert_prey, "%belly", lowertext(name)) - digest_alert_prey = replacetext(digest_alert_prey, "%count", contents.len) digest_alert_prey = replacetext(digest_alert_prey, "%countprey", living_count) + digest_alert_prey = replacetext(digest_alert_prey, "%count", contents.len) //Send messages to_chat(owner, "[digest_alert_owner]") diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 70ba60b90d..15d2313bcf 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -953,7 +953,8 @@ if(owner.client) create_mob_button(parent) owner.verbs |= /mob/living/proc/insidePanel - owner.vorePanel = new(owner) + if(!owner.vorePanel) //CHOMPEdit + owner.vorePanel = new(owner) /datum/component/vore_panel/UnregisterFromParent() . = ..() diff --git a/icons/mob/screen_full_vore.dmi b/icons/mob/screen_full_vore.dmi index 4d89bd8204..b738cae800 100644 Binary files a/icons/mob/screen_full_vore.dmi and b/icons/mob/screen_full_vore.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index f229285fe7..9e2f5f10a4 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/jukebox.dmi b/icons/obj/jukebox.dmi index 1ac739dffc..439d460b81 100644 Binary files a/icons/obj/jukebox.dmi and b/icons/obj/jukebox.dmi differ diff --git a/maps/southern_cross/events/wildlife_encounter.dm b/maps/southern_cross/events/wildlife_encounter.dm index 0a045f9f17..204bb43232 100644 --- a/maps/southern_cross/events/wildlife_encounter.dm +++ b/maps/southern_cross/events/wildlife_encounter.dm @@ -24,7 +24,9 @@ // continue // Not on the right z-level. if(L.stat) continue // Don't want dead people. - if(istype(get_turf(L), /turf/simulated/floor/outdoors) && istype(get_area(L),/area/surface/outside/wilderness)) + var/turf/T = get_turf(L) + var/area/A = get_area(L) + if(T?.is_outdoors() && istype(A, /area/surface/outside/wilderness)) // VOREStation Edit potential_victims += L if(potential_victims.len) diff --git a/maps/southern_cross/southern_cross_areas.dm b/maps/southern_cross/southern_cross_areas.dm index af5487c489..6f80dc475b 100644 --- a/maps/southern_cross/southern_cross_areas.dm +++ b/maps/southern_cross/southern_cross_areas.dm @@ -60,6 +60,8 @@ /area/surface/outside ambience = AMBIENCE_SIF always_unpowered = TRUE + flags = AREA_FLAG_IS_NOT_PERSISTENT + outdoors = OUTDOORS_YES // The area near the outpost, so POIs don't show up right next to the outpost. /area/surface/outside/plains/outpost @@ -162,10 +164,12 @@ /area/surface/outpost/mining_main name = "North Mining Outpost" icon_state = "outpost_mine_main" + outdoors = OUTDOORS_NO /area/surface/outpost/mining_main/exterior name = "North Mining Outpost Exterior" icon_state = "outpost_mine_main" + outdoors = OUTDOORS_YES /area/surface/outpost/mining_main/crew_area name = "North Mining Crew Area" @@ -234,6 +238,7 @@ /area/surface/outpost/research icon_state = "outpost_research" + outdoors = OUTDOORS_NO /area/surface/outpost/research/xenoresearch name = "\improper Xenoresearch" @@ -324,6 +329,7 @@ /area/surface/outpost/main name = "\improper Main Outpost" icon_state = "Sleep" + outdoors = OUTDOORS_NO /area/surface/outpost/main/laundry name = "\improper Main Outpost Laundry Room" @@ -559,6 +565,7 @@ /area/outpost/mining_station icon_state = "outpost_mine_main" name = "Mining Station" + outdoors = OUTDOORS_NO /area/outpost/mining_station/dorms name = "Mining Station Dormitory" diff --git a/maps/southern_cross/turfs/outdoors.dm b/maps/southern_cross/turfs/outdoors.dm index ff145240ed..f37612afff 100644 --- a/maps/southern_cross/turfs/outdoors.dm +++ b/maps/southern_cross/turfs/outdoors.dm @@ -24,19 +24,19 @@ oxygen = MOLES_O2SIF nitrogen = MOLES_N2SIF temperature = TEMPERATURE_SIF - outdoors = TRUE + outdoors = OUTDOORS_YES /turf/simulated/floor/tiled/steel/sif/planetuse oxygen = MOLES_O2SIF nitrogen = MOLES_N2SIF temperature = TEMPERATURE_SIF - outdoors = TRUE + outdoors = OUTDOORS_YES /turf/simulated/floor/plating/sif/planetuse oxygen = MOLES_O2SIF nitrogen = MOLES_N2SIF temperature = TEMPERATURE_SIF - outdoors = TRUE + outdoors = OUTDOORS_YES /turf/simulated/floor/outdoors/snow/sif/planetuse oxygen = MOLES_O2SIF diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index b80ce88ed0..ee8aa44175 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -25885,6 +25885,7 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/east_stairs_two) "aUL" = ( +<<<<<<< HEAD /obj/effect/floor_decal/corner/purple{ dir = 5 }, @@ -25893,49 +25894,65 @@ /obj/item/weapon/reagent_containers/glass/bucket, /obj/effect/floor_decal/borderfloor/shifted{ dir = 1 +||||||| parent of 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite +/obj/effect/floor_decal/corner/purple{ + dir = 5 }, -/obj/effect/floor_decal/corner/purple/border/shifted{ +/obj/effect/floor_decal/borderfloor/shifted{ dir = 1 +======= +/obj/effect/floor_decal/borderfloor{ + dir = 9 +>>>>>>> 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 9 + }, +<<<<<<< HEAD /obj/machinery/camera/network/civilian, +||||||| parent of 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite +/obj/machinery/camera/network/civilian, +/obj/structure/closet/jcloset, +======= +/obj/machinery/vending/wardrobe/janidrobe, +>>>>>>> 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite /turf/simulated/floor/tiled, /area/janitor) "aUM" = ( /obj/machinery/newscaster{ pixel_y = 32 }, -/obj/effect/floor_decal/borderfloor/shifted{ +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/effect/floor_decal/corner/purple/border/shifted{ +/obj/effect/floor_decal/corner/purple/border{ dir = 1 }, +<<<<<<< HEAD /obj/effect/floor_decal/corner/purple{ dir = 5 }, /obj/structure/mopbucket, /obj/item/weapon/mop, /obj/item/weapon/reagent_containers/glass/bucket, +||||||| parent of 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite +/obj/effect/floor_decal/corner/purple{ + dir = 5 + }, +/obj/machinery/vending/wardrobe/janidrobe, +======= +>>>>>>> 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite /turf/simulated/floor/tiled, /area/janitor) "aUN" = ( -/obj/structure/cable{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_y = 24 - }, -/obj/effect/floor_decal/borderfloor/shifted{ +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/effect/floor_decal/corner/purple/border/shifted{ +/obj/effect/floor_decal/corner/purple/border{ dir = 1 }, -/obj/effect/floor_decal/corner/purple{ - dir = 5 +/obj/structure/sink/kitchen{ + pixel_y = 22 }, /obj/structure/mopbucket, /obj/item/weapon/mop, @@ -25943,49 +25960,37 @@ /turf/simulated/floor/tiled, /area/janitor) "aUO" = ( -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border/shifted{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple{ - dir = 5 - }, /obj/structure/janitorialcart, -/obj/structure/sink/kitchen{ - pixel_y = 28 +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 }, /turf/simulated/floor/tiled, /area/janitor) "aUP" = ( /obj/structure/janitorialcart, -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border/shifted{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple{ - dir = 5 - }, /obj/machinery/alarm{ pixel_y = 22 }, /obj/machinery/light{ dir = 1 }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/janitor) "aUQ" = ( /obj/structure/janitorialcart, -/obj/effect/floor_decal/borderfloor/shifted{ - dir = 1 +/obj/effect/floor_decal/borderfloor{ + dir = 5 }, -/obj/effect/floor_decal/corner/purple/border/shifted{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple{ +/obj/effect/floor_decal/corner/purple/border{ dir = 5 }, /turf/simulated/floor/tiled, @@ -26163,36 +26168,28 @@ /turf/simulated/floor/tiled/techmaint, /area/tether/surfacebase/east_stairs_two) "aVu" = ( -/obj/machinery/button/remote/blast_door{ - id = "janitor_blast"; - name = "Desk Shutters"; - pixel_x = -22 - }, /obj/effect/floor_decal/borderfloor{ dir = 8 }, /obj/effect/floor_decal/corner/purple/border{ dir = 8 }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + nightshift_setting = 2; + pixel_x = -30 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, /turf/simulated/floor/tiled, /area/janitor) "aVv" = ( /turf/simulated/floor/tiled, /area/janitor) -"aVw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/tiled, -/area/janitor) -"aVx" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/simulated/floor/tiled, -/area/janitor) "aVy" = ( /obj/structure/cable{ d1 = 4; @@ -26879,6 +26876,7 @@ "aWr" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/corner/purple/bordercorner, +/obj/structure/closet/jequipcloset, /turf/simulated/floor/tiled, /area/janitor) "aWs" = ( @@ -27311,7 +27309,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/light_switch{ dir = 4; - pixel_x = -28 + pixel_x = -31 }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -27325,6 +27323,11 @@ /obj/effect/floor_decal/corner/purple/bordercorner2{ dir = 10 }, +/obj/machinery/button/remote/blast_door{ + id = "janitor_blast"; + name = "Desk Shutters"; + pixel_x = -22 + }, /turf/simulated/floor/tiled, /area/janitor) "aXj" = ( @@ -27597,9 +27600,6 @@ dir = 2; icon_state = "pipe-c" }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 25 - }, /obj/effect/floor_decal/borderfloor{ dir = 4 }, @@ -27611,12 +27611,23 @@ /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/cleaner, -/obj/item/weapon/storage/box/mousetraps, -/obj/item/weapon/storage/box/lights/mixed, -/obj/item/weapon/storage/box/lights/mixed, /obj/item/weapon/reagent_containers/spray/cleaner, /obj/item/weapon/reagent_containers/spray/cleaner, /obj/item/weapon/reagent_containers/spray/cleaner, +<<<<<<< HEAD +||||||| parent of 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, +======= +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, +/obj/item/weapon/soap/nanotrasen, +/obj/structure/extinguisher_cabinet{ + dir = 8; + pixel_x = 30 + }, +>>>>>>> 5943bf4f2e... Merge pull request #11305 from GhostActual/Janitorial-oversite /turf/simulated/floor/tiled, /area/janitor) "aXT" = ( @@ -49612,7 +49623,7 @@ aLY aTe aUc aUM -aVv +aVy aWq aVv aXQ @@ -49754,7 +49765,7 @@ aLY aTf aUc aUN -aVw +aVy aVv aXj aXR @@ -49896,7 +49907,7 @@ aLY aTg aUc aUO -aVx +aVy aWr aXk aXS @@ -50044,7 +50055,7 @@ aLY aTh aUc aUP -aVx +aVy aWs aUc aUc diff --git a/vorestation.dme b/vorestation.dme index 5adf208ce5..24bbae8e6c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2954,8 +2954,6 @@ #include "code\modules\mob\living\carbon\human\species\shadekin\shadekin.dm" #include "code\modules\mob\living\carbon\human\species\shadekin\shadekin_abilities.dm" #include "code\modules\mob\living\carbon\human\species\shadekin\shadekin_hud.dm" -#include "code\modules\mob\living\carbon\human\species\shadekin\shadekin_trait.dm" -#include "code\modules\mob\living\carbon\human\species\shadekin\shadekin_zz_ch.dm" #include "code\modules\mob\living\carbon\human\species\station\alraune.dm" #include "code\modules\mob\living\carbon\human\species\station\blank_vr.dm" #include "code\modules\mob\living\carbon\human\species\station\golem.dm"