diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm index 0d32000341..eee6220f8b 100644 --- a/code/__defines/mobs_vr.dm +++ b/code/__defines/mobs_vr.dm @@ -26,3 +26,4 @@ #define SPECIES_XENOHYBRID "Xenomorph Hybrid" #define SPECIES_ZORREN_FLAT "Flatland Zorren" #define SPECIES_ZORREN_HIGH "Highlander Zorren" +#define SPECIES_CUSTOM "Custom Species" diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index b0d1667fc4..903c7d3d68 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -32,7 +32,7 @@ var/global/list/all_species[0] var/global/list/all_languages[0] var/global/list/language_keys[0] // Table of say codes for all languages var/global/list/whitelisted_species = list(SPECIES_HUMAN) // Species that require a whitelist check. -var/global/list/playable_species = list("Custom Species", SPECIES_HUMAN) // A list of ALL playable species, whitelisted, latejoin or otherwise. //VOREStation Edit - Making sure custom species is obvious. +var/global/list/playable_species = list(SPECIES_CUSTOM, SPECIES_HUMAN) // A list of ALL playable species, whitelisted, latejoin or otherwise. //VOREStation Edit - Making sure custom species is obvious. var/list/mannequins_ diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index f54d8d6b18..64393508af 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -11,6 +11,8 @@ var/global/list/positive_traits = list() // Positive custom species traits, inde var/global/list/traits_costs = list() // Just path = cost list, saves time in char setup var/global/list/all_traits = list() // All of 'em at once (same instances) +var/global/list/custom_species_bases = list() // Species that can be used for a Custom Species icon base + //stores numeric player size options indexed by name var/global/list/player_sizes_list = list( "Macro" = RESIZE_HUGE, @@ -195,4 +197,14 @@ var/global/list/edible_trash = list(/obj/item/trash, if(0.1 to INFINITY) positive_traits[path] = instance - return 1 // Hooks must return 1 \ No newline at end of file + // Custom species icon bases + var/list/blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) //Just ones that won't work well. + for(var/species_name in playable_species) + if(species_name in blacklisted_icons) + continue + var/datum/species/S = all_species[species_name] + if(S.spawn_flags & SPECIES_IS_WHITELISTED) + continue + custom_species_bases += species_name + + return 1 // Hooks must return 1 diff --git a/code/_macros_vr.dm b/code/_macros_vr.dm index ca7bccedbe..284b6623fc 100644 --- a/code/_macros_vr.dm +++ b/code/_macros_vr.dm @@ -1,3 +1,4 @@ -#define isbelly(A) istype(A, /obj/belly) -#define isstorage(A) istype(A, /obj/item/weapon/storage) -#define isitem(A) istype(A, /obj/item) +#define isbelly(A) istype(A, /obj/belly) +#define isstorage(A) istype(A, /obj/item/weapon/storage) +#define isitem(A) istype(A, /obj/item) +#define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur) diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm index 325a4a4b7e..f1b9165a26 100644 --- a/code/_onclick/hud/other_mobs.dm +++ b/code/_onclick/hud/other_mobs.dm @@ -93,9 +93,12 @@ return -/mob/living/simple_animal/construct/instantiate_hud(var/datum/hud/HUD) - HUD.construct_hud() +/mob/living/simple_animal/construct/instantiate_hud(var/datum/hud/HUD) + ..(HUD) + +// HUD.construct_hud() //Archaic. +/* /datum/hud/proc/construct_hud() var/constructtype @@ -109,30 +112,28 @@ constructtype = "harvester" if(constructtype) - mymob.fire = new /obj/screen() + mymob.fire.icon = 'icons/mob/screen1_construct.dmi' mymob.fire.icon_state = "fire0" mymob.fire.name = "fire" mymob.fire.screen_loc = ui_construct_fire - mymob.healths = new /obj/screen() mymob.healths.icon = 'icons/mob/screen1_construct.dmi' mymob.healths.icon_state = "[constructtype]_health0" mymob.healths.name = "health" mymob.healths.screen_loc = ui_construct_health - mymob.pullin = new /obj/screen() mymob.pullin.icon = 'icons/mob/screen1_construct.dmi' mymob.pullin.icon_state = "pull0" mymob.pullin.name = "pull" mymob.pullin.screen_loc = ui_construct_pull - mymob.zone_sel = new /obj/screen/zone_sel() + mymob.zone_sel.icon = 'icons/mob/screen1_construct.dmi' mymob.zone_sel.overlays.len = 0 mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]") - mymob.purged = new /obj/screen() + mymob.purged.icon = 'icons/mob/screen1_construct.dmi' mymob.purged.icon_state = "purge0" mymob.purged.name = "purged" @@ -142,3 +143,4 @@ mymob.client.screen += list(mymob.fire, mymob.healths, mymob.pullin, mymob.zone_sel, mymob.purged) mymob.client.screen += mymob.client.void +*/ diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index e2a4c28c6b..729330ddaa 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -92,9 +92,11 @@ if(spattack_min_range <= 1) SpecialAtkTarget() + else if(melee_damage_upper == 0 && istype(A,/mob/living)) custom_emote(1,"[pick(friendly)] [A]!") + else DoPunch(A) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 3576c66dfe..d2f99a347b 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -1,5 +1,5 @@ //wrapper -/proc/do_teleport(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null) +/proc/do_teleport(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null, local=TRUE) //VOREStation Edit new /datum/teleport/instant/science(arglist(args)) return @@ -12,15 +12,16 @@ var/soundin //soundfile to play before teleportation var/soundout //soundfile to play after teleportation var/force_teleport = 1 //if false, teleport will use Move() proc (dense objects will prevent teleportation) + var/local = TRUE //VOREStation Add - If false, can teleport from/to any z-level -/datum/teleport/New(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null) +/datum/teleport/New(ateleatom, adestination, aprecision=0, afteleport=1, aeffectin=null, aeffectout=null, asoundin=null, asoundout=null, local=TRUE) //VOREStation Edit ..() if(!initTeleport(arglist(args))) return 0 return 1 -/datum/teleport/proc/initTeleport(ateleatom,adestination,aprecision,afteleport,aeffectin,aeffectout,asoundin,asoundout) +/datum/teleport/proc/initTeleport(ateleatom,adestination,aprecision,afteleport,aeffectin,aeffectout,asoundin,asoundout,local) //VOREStation Edit if(!setTeleatom(ateleatom)) return 0 if(!setDestination(adestination)) @@ -30,6 +31,7 @@ setEffects(aeffectin,aeffectout) setForceTeleport(afteleport) setSounds(asoundin,asoundout) + src.local = local // VOREStation Add return 1 //must succeed @@ -186,7 +188,7 @@ return 0 */ //VOREStation Removal End //VOREStation Edit Start - if(destination.z in using_map.player_levels) + if(!local || (destination.z in using_map.player_levels)) //VOREStation Edit return 1 if(istype(teleatom, /mob/living)) to_chat(teleatom, "The portal refuses to carry you that far away!") diff --git a/code/datums/supplypacks/recreation_vr.dm b/code/datums/supplypacks/recreation_vr.dm index 8f0d775797..cf12b4815b 100644 --- a/code/datums/supplypacks/recreation_vr.dm +++ b/code/datums/supplypacks/recreation_vr.dm @@ -18,7 +18,7 @@ /obj/item/stack/cable_coil/random, /obj/item/clothing/accessory/collar/shock, /obj/item/clothing/suit/straight_jacket, - /obj/item/weapon/handcuffs/legcuffs, + /obj/item/weapon/handcuffs/legcuffs/fuzzy, /obj/item/weapon/melee/fluff/holochain/mass, /obj/item/weapon/material/twohanded/fluff/riding_crop, /obj/item/clothing/under/fluff/latexmaid diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 5311d642a2..48ffacb335 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -18,6 +18,7 @@ var/icon_scale = 1 // Used to scale icons up or down in update_transform(). var/old_x = 0 var/old_y = 0 + var/datum/riding/riding_datum //VOREStation Add - Moved from /obj/vehicle /atom/movable/Destroy() . = ..() @@ -37,6 +38,7 @@ if (pulledby.pulling == src) pulledby.pulling = null pulledby = null + qdel_null(riding_datum) //VOREStation Add /atom/movable/Bump(var/atom/A, yes) if(src.throwing) diff --git a/code/game/atoms_movable_vr.dm b/code/game/atoms_movable_vr.dm index d529122029..0cc6d144be 100644 --- a/code/game/atoms_movable_vr.dm +++ b/code/game/atoms_movable_vr.dm @@ -1,2 +1,12 @@ /atom/movable/proc/Bump_vr(var/atom/A, yes) return + +/atom/movable/set_dir(newdir) + . = ..(newdir) + if(riding_datum) + riding_datum.handle_vehicle_offsets() + +/atom/movable/relaymove(mob/user, direction) + . = ..() + if(riding_datum) + riding_datum.handle_ride(user, direction) diff --git a/code/game/gamemodes/cult/construct_spells.dm b/code/game/gamemodes/cult/construct_spells.dm new file mode 100644 index 0000000000..f8ff57fc35 --- /dev/null +++ b/code/game/gamemodes/cult/construct_spells.dm @@ -0,0 +1,698 @@ +//cast_method flags, needs to be up to date with Technomancer's. They were, for some reason, not working outside it. +#define CAST_USE 1 // Clicking the spell in your hand. +#define CAST_MELEE 2 // Clicking an atom in melee range. +#define CAST_RANGED 4 // Clicking an atom beyond melee range. +#define CAST_THROW 8 // Throwing the spell and hitting an atom. +#define CAST_COMBINE 16 // Clicking another spell with this spell. +#define CAST_INNATE 32 // Activates upon verb usage, used for mobs without hands. + +//Aspects +#define ASPECT_FIRE "fire" //Damage over time and raising body-temp. Firesuits protect from this. +#define ASPECT_FROST "frost" //Slows down the affected, also involves imbedding with icicles. Winter coats protect from this. +#define ASPECT_SHOCK "shock" //Energy-expensive, usually stuns. Insulated armor protects from this. +#define ASPECT_AIR "air" //Mostly involves manipulation of atmos, useless in a vacuum. Magboots protect from this. +#define ASPECT_FORCE "force" //Manipulates gravity to push things away or towards a location. +#define ASPECT_TELE "tele" //Teleportation of self, other objects, or other people. +#define ASPECT_DARK "dark" //Makes all those photons vanish using magic-- WITH SCIENCE. Used for sneaky stuff. +#define ASPECT_LIGHT "light" //The opposite of dark, usually blinds, makes holo-illusions, or makes laser lightshows. +#define ASPECT_BIOMED "biomed" //Mainly concerned with healing and restoration. +#define ASPECT_EMP "emp" //Unused now. +#define ASPECT_UNSTABLE "unstable" //Heavily RNG-based, causes instability to the victim. +#define ASPECT_CHROMATIC "chromatic" //Used to combine with other spells. +#define ASPECT_UNHOLY "unholy" //Involves the dead, blood, and most things against divine beings. + +//////////////////////////////Construct Spells///////////////////////// + +proc/findNullRod(var/atom/target) + if(istype(target,/obj/item/weapon/nullrod)) + return 1 + else if(target.contents) + for(var/atom/A in target.contents) + if(findNullRod(A)) + return 1 + return 0 + +/spell/aoe_turf/conjure/construct + name = "Artificer" + desc = "This spell conjures a construct which may be controlled by Shades" + + school = "conjuration" + charge_max = 600 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/structure/constructshell) + + hud_state = "artificer" + +/spell/aoe_turf/conjure/construct/lesser + charge_max = 1800 + summon_type = list(/obj/structure/constructshell/cult) + hud_state = "const_shell" + override_base = "const" + +/spell/aoe_turf/conjure/floor + name = "Floor Construction" + desc = "This spell constructs a cult floor" + + charge_max = 20 + spell_flags = Z2NOCAST | CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + summon_type = list(/turf/simulated/floor/cult) + + hud_state = "const_floor" + +/spell/aoe_turf/conjure/floor/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) + animation.icon_state = "cultfloor" + flick("cultfloor",animation) + spawn(10) + qdel(animation) + +/spell/aoe_turf/conjure/wall + name = "Lesser Construction" + desc = "This spell constructs a cult wall" + + charge_max = 100 + spell_flags = Z2NOCAST | CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + summon_type = list(/turf/simulated/wall/cult) + + hud_state = "const_wall" + +/spell/aoe_turf/conjure/wall/conjure_animation(var/atom/movable/overlay/animation, var/turf/target) + animation.icon_state = "cultwall" + flick("cultwall",animation) + spawn(10) + qdel(animation) + +/spell/aoe_turf/conjure/wall/reinforced + name = "Greater Construction" + desc = "This spell constructs a reinforced metal wall" + + charge_max = 300 + spell_flags = Z2NOCAST + invocation = "none" + invocation_type = SpI_NONE + range = 0 + cast_delay = 50 + + summon_type = list(/turf/simulated/wall/r_wall) + +/spell/aoe_turf/conjure/soulstone + name = "Summon Soulstone" + desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space" + + charge_max = 3000 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/item/device/soulstone) + + hud_state = "const_stone" + override_base = "const" + +/spell/aoe_turf/conjure/pylon + name = "Red Pylon" + desc = "This spell conjures a fragile crystal from Nar-Sie's realm. Makes for a convenient light source." + + charge_max = 200 + spell_flags = CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/structure/cult/pylon) + + hud_state = "const_pylon" + +/spell/aoe_turf/conjure/pylon/cast(list/targets) + ..() + var/turf/spawn_place = pick(targets) + for(var/obj/structure/cult/pylon/P in spawn_place.contents) + if(P.isbroken) + P.repair(usr) + continue + return + +/spell/aoe_turf/conjure/door + name = "Stone Door" + desc = "This spell conjures a massive stone door." + + charge_max = 100 + spell_flags = CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/structure/simple_door/cult) + + hud_state = "const_door" + +/spell/aoe_turf/conjure/grille + name = "Arcane Grille" + desc = "This spell conjures an airtight grille." + + charge_max = 100 + spell_flags = CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + summon_type = list(/obj/structure/grille/cult) + + hud_state = "const_grille" + +/spell/aoe_turf/conjure/forcewall/lesser + name = "Shield" + desc = "Allows you to pull up a shield to protect yourself and allies from incoming threats" + + charge_max = 300 + spell_flags = 0 + invocation = "none" + invocation_type = SpI_NONE + range = 0 + summon_type = list(/obj/effect/forcefield/cult) + duration = 200 + + hud_state = "const_juggwall" + +//Code for the Juggernaut construct's forcefield, that seemed like a good place to put it. +/obj/effect/forcefield/cult + desc = "That eerie looking obstacle seems to have been pulled from another dimension through sheer force" + name = "Juggerwall" + icon = 'icons/effects/effects.dmi' + icon_state = "m_shield_cult" + light_color = "#B40000" + light_range = 2 + +/obj/effect/forcefield/cult/cultify() + return + +/spell/aoe_turf/knock/harvester + name = "Force Doors" + desc = "Mortal portals are no match for your occult might." + + spell_flags = CONSTRUCT_CHECK + + charge_max = 100 + invocation = "" + invocation_type = "silent" + range = 4 + + hud_state = "const_knock" + +/spell/aoe_turf/knock/harvester/cast(list/targets) +/* for(var/turf/T in targets) //Disintigrating doors is bad, okay. + for(var/obj/machinery/door/door in T.contents) + spawn door.cultify() + return */ + for(var/turf/T in targets) + for(var/obj/machinery/door/door in T.contents) + spawn(1) + if(istype(door,/obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/AL = door + AL.locked = 0 //The spirits of the damned care not for your locks. + AL.welded = 0 //Or your welding tools. + else if(istype(door, /obj/machinery/door/firedoor)) + var/obj/machinery/door/firedoor/FD = door + FD.blocked = 0 + door.open(1) + return + +/* + * + * Self-targeting spells. Modifiers, auras, instants, etc. + * + */ + +/spell/targeted/ethereal_jaunt/shift + name = "Phase Shift" + desc = "This spell allows you to pass through walls" + + charge_max = 200 + spell_flags = Z2NOCAST | INCLUDEUSER | CONSTRUCT_CHECK + invocation_type = SpI_NONE + range = -1 + duration = 50 //in deciseconds + + hud_state = "const_shift" + +/spell/targeted/ethereal_jaunt/shift/jaunt_disappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "phase_shift" + animation.dir = target.dir + flick("phase_shift",animation) + +/spell/targeted/ethereal_jaunt/shift/jaunt_reappear(var/atom/movable/overlay/animation, var/mob/living/target) + animation.icon_state = "phase_shift2" + animation.dir = target.dir + flick("phase_shift2",animation) + +/spell/targeted/ethereal_jaunt/shift/jaunt_steam(var/mobloc) + return + +/* + * Harvest has been disabled due to the lack of Nar'Sie. Here for posterity / future rework. + */ + +/* +/spell/targeted/harvest + name = "Harvest" + desc = "Back to where I come from, and you're coming with me." + + school = "transmutation" + charge_max = 200 + spell_flags = Z2NOCAST | CONSTRUCT_CHECK | INCLUDEUSER + invocation = "" + invocation_type = SpI_NONE + range = 0 + max_targets = 0 + + overlay = 1 + overlay_icon = 'icons/effects/effects.dmi' + overlay_icon_state = "rune_teleport" + overlay_lifespan = 0 + + hud_state = "const_harvest" + +/spell/targeted/harvest/cast(list/targets, mob/user)//because harvest is already a proc + ..() + + var/destination = null + for(var/obj/singularity/narsie/large/N in narsie_list) + destination = N.loc + break + if(destination) + var/prey = 0 + for(var/mob/living/M in targets) + if(!findNullRod(M)) + M.forceMove(destination) + if(M != user) + prey = 1 + user << "You warp back to Nar-Sie[prey ? " along with your prey":""]." + else + user << "...something's wrong!"//There shouldn't be an instance of Harvesters when Nar-Sie isn't in the world. +*/ + +/spell/targeted/fortify + name = "Fortify Shell" + desc = "Emit a field of energy around your shell to reduce incoming damage incredibly, while decreasing your mobility." + + range = -1 + school = "evocation" + charge_type = Sp_RECHARGE + invocation_type = SpI_NONE + + spell_flags = CONSTRUCT_CHECK | INCLUDEUSER + + hud_state = "const_fortify" + smoke_amt = 0 + + charge_max = 600 + +/spell/targeted/fortify/cast(list/targets, mob/living/user) + if(findNullRod(user) || user.has_modifier_of_type(/datum/modifier/fortify)) + charge_counter = 400 + return + user.add_modifier(/datum/modifier/fortify, 1 MINUTES) + +/spell/targeted/occult_repair_aura + name = "Repair Aura" + desc = "Emit a field of energy around your shell to repair nearby constructs at range." + + range = -1 + school = "evocation" + charge_type = Sp_RECHARGE + invocation_type = SpI_NONE + + spell_flags = CONSTRUCT_CHECK | INCLUDEUSER + + hud_state = "const_repairaura" + smoke_amt = 0 + + charge_max = 600 + +/spell/targeted/occult_repair_aura/cast(list/targets, mob/living/user) + if(findNullRod(user) || user.has_modifier_of_type(/datum/modifier/repair_aura)) + charge_counter = 300 + return + user.add_modifier(/datum/modifier/repair_aura, 30 SECONDS) + +/spell/targeted/ambush_mode + name = "Toggle Ambush" + desc = "Phase yourself mostly out of this reality, minimizing your combat ability, but allowing for employance of ambush tactics." + + range = -1 + school = "evocation" + charge_type = Sp_RECHARGE + invocation_type = SpI_NONE + + spell_flags = CONSTRUCT_CHECK | INCLUDEUSER + + hud_state = "const_ambush" + smoke_amt = 0 + + charge_max = 100 + +/spell/targeted/ambush_mode/cast(list/targets, mob/living/user) + if(findNullRod(user)) + charge_counter = 50 + return + if(user.has_modifier_of_type(/datum/modifier/ambush)) + user.remove_modifiers_of_type(/datum/modifier/ambush) + return + user.add_modifier(/datum/modifier/ambush, 0) + +/* + * + * These are the spells that place spell-objects into the construct's hands akin to technomancers. + * + */ + +/spell/targeted/construct_advanced + name = "Base Construct Spell" + desc = "If you see this, please tell a developer!" + + range = -1 + school = "evocation" + charge_type = Sp_RECHARGE + invocation_type = SpI_NONE + + spell_flags = CONSTRUCT_CHECK | INCLUDEUSER + + hud_state = "const_rune" + smoke_amt = 0 + + charge_max = 10 + + var/obj/item/weapon/spell/construct/spell_obj = null //This is the var that determines what Technomancer-style spell is put into their hands. + +/spell/targeted/construct_advanced/cast(list/targets, mob/living/user) + if(!findNullRod(user)) + user.place_spell_in_hand(spell_obj) + +/spell/targeted/construct_advanced/inversion_beam + name = "Inversion Beam" + desc = "Fire a searing beam of darkness at your foes." + + hud_state = "const_beam" + spell_obj = /obj/item/weapon/spell/construct/projectile/inverted_beam + +/spell/targeted/construct_advanced/mend_acolyte + name = "Mend Acolyte" + desc = "Mend a target acolyte or construct over time." + + charge_max = 100 + + hud_state = "const_mend" + spell_obj = /obj/item/weapon/spell/construct/mend_occult + +/spell/targeted/construct_advanced/agonizing_sphere + name = "Sphere of Agony" + desc = "Rend a portal into a plane of naught but pain at the target location." + + charge_max = 100 + + hud_state = "const_harvest" + spell_obj = /obj/item/weapon/spell/construct/spawner/agonizing_sphere + +/spell/targeted/construct_advanced/slam + name = "Slam" + desc = "Empower your FIST." + + charge_max = 300 + + hud_state = "const_fist" + spell_obj = /obj/item/weapon/spell/construct/slam + +/* + * + * These are the spell objects that go into the construct's hands. + * + */ + +/* + * Base advanced construct spell types. + */ + +/obj/item/weapon/spell/construct //Energy costs are in units of blood, in the event a cultist gets one of these. + name = "unholy energy" + desc = "Your hands appear to be screaming. This is a debug text, you should probably tell a developer!" + icon = 'icons/obj/spells.dmi' + icon_state = "generic" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_spells.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_spells.dmi', + ) + throwforce = 0 + force = 0 + show_examine = FALSE + owner = null + core = null + cast_methods = null // Controls how the spell is casted. + aspect = ASPECT_UNHOLY // Used for combining spells. Pretty much any cult spell is unholy. + toggled = 0 // Mainly used for overlays. + cooldown = 0 // If set, will add a cooldown overlay and adjust click delay. Must be a multiple of 5 for overlays. + cast_sound = null // Sound file played when this is used. + var/last_castcheck = null // The last time this spell was cast. + +/obj/item/weapon/spell/construct/New() + //..() //This kills the spell, because super on this calls the default spell's New, which checks for a core. Can't have that. + if(isliving(loc)) + owner = loc + if(!owner) + qdel(src) + update_icon() + +/obj/item/weapon/spell/construct/adjust_instability(var/amount) //The only drawback to the boons of the geometer is the use of a mortal's blood as fuel. Constructs have already paid that price long ago. + return + +/obj/item/weapon/spell/construct/run_checks() + if(owner) + if((iscultist(owner) || istype(owner, /mob/living/simple_animal/construct)) && (world.time >= (last_castcheck + cooldown))) //Are they a cultist or a construct, and has the cooldown time passed? + last_castcheck = world.time + return 1 + return 0 + +/obj/item/weapon/spell/construct/pay_energy(var/amount) + if(owner) + if(istype(owner, /mob/living/simple_animal/construct)) + return 1 + if(iscultist(owner) && pay_blood(amount)) + return 1 + return 0 + +/obj/item/weapon/spell/construct/proc/pay_blood(var/amount) //If, for some reason, this is put into the hands of a cultist, by a talisnam or whatever. + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + if(!H.should_have_organ(O_HEART)) + return 1 + if(H.vessel.remove_reagent("blood", amount)) + return 1 + return 0 + +/obj/item/weapon/spell/construct/afterattack(atom/target, mob/user, proximity_flag, click_parameters) //Not overriding it caused runtimes, because cooldown checked for core. + if(!run_checks()) + return + if(!proximity_flag) + if(cast_methods & CAST_RANGED) + on_ranged_cast(target, user) + else + if(istype(target, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/spell = target + if(spell.cast_methods & CAST_COMBINE) + spell.on_combine_cast(src, user) + return + if(cast_methods & CAST_MELEE) + on_melee_cast(target, user) + else if(cast_methods & CAST_RANGED) //Try to use a ranged method if a melee one doesn't exist. + on_ranged_cast(target, user) + if(cooldown) + var/effective_cooldown = round(cooldown, 5) + user.setClickCooldown(effective_cooldown) + flick("cooldown_[effective_cooldown]",src) + +/obj/item/weapon/spell/construct/projectile //This makes me angry, but we need the template, and we can't use it because special check overrides on the base. + name = "construct projectile template" + icon_state = "generic" + desc = "This is a generic template that shoots projectiles. If you can read this, the game broke!" + cast_methods = CAST_RANGED + var/obj/item/projectile/spell_projectile = null + var/pre_shot_delay = 0 + var/fire_sound = null + var/energy_cost_per_shot = 5 + +/obj/item/weapon/spell/construct/projectile/on_ranged_cast(atom/hit_atom, mob/living/user) + if(set_up(hit_atom, user)) + var/obj/item/projectile/new_projectile = make_projectile(spell_projectile, user) + new_projectile.launch(hit_atom) + log_and_message_admins("has casted [src] at \the [hit_atom].") + if(fire_sound) + playsound(get_turf(src), fire_sound, 75, 1) + return 1 + return 0 + +/obj/item/weapon/spell/construct/projectile/proc/make_projectile(obj/item/projectile/projectile_type, mob/living/user) + var/obj/item/projectile/P = new projectile_type(get_turf(user)) + return P + +/obj/item/weapon/spell/construct/projectile/proc/set_up(atom/hit_atom, mob/living/user) + if(spell_projectile) + if(pay_energy(energy_cost_per_shot)) + if(pre_shot_delay) + var/image/target_image = image(icon = 'icons/obj/spells.dmi', loc = get_turf(hit_atom), icon_state = "target") + user << target_image + user.Stun(pre_shot_delay / 10) + sleep(pre_shot_delay) + qdel(target_image) + if(owner) + return TRUE + return FALSE // We got dropped before the firing occured. + return TRUE // No delay, no need to check. + return FALSE + +/obj/item/weapon/spell/construct/spawner + name = "spawner template" + desc = "If you see me, someone messed up." + icon_state = "darkness" + cast_methods = CAST_RANGED + var/obj/effect/spawner_type = null + +/obj/item/weapon/spell/construct/spawner/on_ranged_cast(atom/hit_atom, mob/user) + var/turf/T = get_turf(hit_atom) + if(T) + new spawner_type(T) + to_chat(user, "You shift \the [src] onto \the [T].") + log_and_message_admins("has casted [src] at [T.x],[T.y],[T.z].") + qdel(src) + +//Harvester Laser. + +/obj/item/weapon/spell/construct/projectile/inverted_beam + name = "inversion beam" + icon_state = "generic" + desc = "Your manipulators fire searing beams of inverted light." + cast_methods = CAST_RANGED + spell_projectile = /obj/item/projectile/beam/inversion + pre_shot_delay = 0 + cooldown = 5 + fire_sound = 'sound/weapons/spiderlunge.ogg' + +/obj/item/projectile/beam/inversion + name = "inversion beam" + icon_state = "invert" + fire_sound = 'sound/weapons/spiderlunge.ogg' + damage = 15 + damage_type = BURN + check_armour = "laser" + armor_penetration = 60 + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" + + muzzle_type = /obj/effect/projectile/inversion/muzzle + tracer_type = /obj/effect/projectile/inversion/tracer + impact_type = /obj/effect/projectile/inversion/impact + +//Harvester Pain Orb + +/obj/item/weapon/spell/construct/spawner/agonizing_sphere + name = "sphere of agony" + desc = "Call forth a portal to a dimension of naught but pain at your target." + + spawner_type = /obj/effect/temporary_effect/pulsar/agonizing_sphere + +/obj/item/weapon/spell/construct/spawner/agonizing_sphere/on_ranged_cast(atom/hit_atom, mob/user) + if(within_range(hit_atom) && pay_energy(10)) + ..() + +/obj/item/weapon/spell/construct/spawner/agonizing_sphere/on_throw_cast(atom/hit_atom, mob/user) + pay_energy(5) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + L.add_modifier(/datum/modifier/agonize, 10 SECONDS) + +/obj/effect/temporary_effect/pulsar/agonizing_sphere + name = "agonizing sphere" + desc = "A portal to some hellish place. Its screams wrack your body with pain.." + icon_state = "red_static_sphere" + time_to_die = null + light_range = 4 + light_power = 5 + light_color = "#FF0000" + pulses_remaining = 10 + +/obj/effect/temporary_effect/pulsar/agonizing_sphere/pulse_loop() + while(pulses_remaining) + sleep(1 SECONDS) + spawn() + for(var/mob/living/L in view(4,src)) + if(!iscultist(L) && !istype(L, /mob/living/simple_animal/construct)) + L.add_modifier(/datum/modifier/agonize, 2 SECONDS) + if(L.isSynthetic()) + to_chat(L, "Your chassis warps as the [src] pulses!") + L.adjustFireLoss(4) + pulses_remaining-- + qdel(src) + +//Artificer Heal + +/obj/item/weapon/spell/construct/mend_occult + name = "mend acolyte" + desc = "Mend the wounds of a cultist, or construct, over time." + icon_state = "mend_wounds" + cast_methods = CAST_MELEE + aspect = ASPECT_UNHOLY + light_color = "#FF5C5C" + light_power = -2 + +/obj/item/weapon/spell/construct/mend_occult/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + L.add_modifier(/datum/modifier/mend_occult, 150) + qdel(src) + +//Juggernaut + Behemoth Slam +/obj/item/weapon/spell/construct/slam + name = "slam" + desc = "Empower your FIST, to send an opponent flying." + icon_state = "toggled_old" + cast_methods = CAST_MELEE + aspect = ASPECT_UNHOLY + light_color = "#FF5C5C" + light_power = -2 + cooldown = 15 + +/obj/item/weapon/spell/construct/slam/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) + var/attack_message = "slams" + if(istype(user, /mob/living/simple_animal)) + var/mob/living/simple_animal/S = user + attack_message = pick(S.attacktext) + if(isliving(hit_atom)) + var/mob/living/L = hit_atom + L.visible_message("\The [user] [attack_message] \the [L], sending them flying!") + playsound(src, "punch", 50, 1) + L.Weaken(2) + L.adjustBruteLoss(rand(30, 50)) + var/throwdir = get_dir(src, L) + L.throw_at(get_edge_target_turf(L, throwdir), 3, 1, src) + if(istype(hit_atom, /turf/simulated/wall)) + var/turf/simulated/wall/W = hit_atom + user.visible_message("\The [user] rears its fist, preparing to hit \the [W]!") + var/windup = cooldown + if(W.reinf_material) + windup = cooldown * 2 + if(do_after(user, windup)) + W.visible_message("\The [user] [attack_message] \the [W], obliterating it!") + W.dismantle_wall(1) + else + user.visible_message("\The [user] lowers its fist.") + return + qdel(src) \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index cecb7b87c7..9d8eb8dc91 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -14,20 +14,21 @@ return /obj/item/weapon/melee/cultblade/attack(mob/living/M, mob/living/user, var/target_zone) - if(iscultist(user)) + if(iscultist(user) && !istype(user, /mob/living/simple_animal/construct)) return ..() var/zone = (user.hand ? "l_arm":"r_arm") if(ishuman(user)) var/mob/living/carbon/human/H = user var/obj/item/organ/external/affecting = H.get_organ(zone) - user << "An unexplicable force rips through your [affecting.name], tearing the sword from your grasp!" + to_chat(user, "An inexplicable force rips through your [affecting.name], tearing the sword from your grasp!") + //random amount of damage between half of the blade's force and the full force of the blade. + user.apply_damage(rand(force/2, force), BRUTE, zone, 0, sharp=1, edge=1) + user.Weaken(5) + else if(!istype(user, /mob/living/simple_animal/construct)) + to_chat(user, "An inexplicable force rips through you, tearing the sword from your grasp!") else - user << "An unexplicable force rips through you, tearing the sword from your grasp!" - - //random amount of damage between half of the blade's force and the full force of the blade. - user.apply_damage(rand(force/2, force), BRUTE, zone, 0, sharp=1, edge=1) - user.Weaken(5) + to_chat(user, "The blade hisses, forcing itself from your manipulators. \The [src] will only allow mortals to wield it against foes, not kin.") user.drop_from_inventory(src, src.loc) throw_at(get_edge_target_turf(src, pick(alldirs)), rand(1,3), throw_speed) @@ -38,10 +39,11 @@ return 1 /obj/item/weapon/melee/cultblade/pickup(mob/living/user as mob) - if(!iscultist(user)) - user << "An overwhelming feeling of dread comes over you as you pick up the cultist's sword. It would be wise to be rid of this blade quickly." + if(!iscultist(user) && !istype(user, /mob/living/simple_animal/construct)) + to_chat(user, "An overwhelming feeling of dread comes over you as you pick up the cultist's sword. It would be wise to be rid of this blade quickly.") user.make_dizzy(120) - + if(istype(user, /mob/living/simple_animal/construct)) + to_chat(user, "\The [src] hisses, as it is discontent with your acquisition of it. It would be wise to return it to a worthy mortal quickly.") /obj/item/clothing/head/culthood name = "cult hood" diff --git a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm index 2c47b8e162..7f7310f996 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/portal.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/portal.dm @@ -38,13 +38,13 @@ var/mob/living/L = A if(L.buckled && istype(L.buckled,/obj/structure/bed/)) var/turf/O = L.buckled - do_teleport(O, pick(endgame_safespawns)) + do_teleport(O, pick(endgame_safespawns), local = FALSE) //VOREStation Edit L.loc = O.loc else - do_teleport(L, pick(endgame_safespawns)) //dead-on precision + do_teleport(L, pick(endgame_safespawns), local = FALSE) //dead-on precision //VOREStation Edit else if (istype(A, /obj/mecha/)) - do_teleport(A, pick(endgame_safespawns)) //dead-on precision + do_teleport(A, pick(endgame_safespawns), local = FALSE) //dead-on precision //VOREStation Edit else if (isturf(A)) var/turf/T = A diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index 2a917b4fd8..681d29da50 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -19,6 +19,7 @@ #define ASPECT_EMP "emp" //Unused now. #define ASPECT_UNSTABLE "unstable" //Heavily RNG-based, causes instability to the victim. #define ASPECT_CHROMATIC "chromatic" //Used to combine with other spells. +#define ASPECT_UNHOLY "unholy" //Involves the dead, blood, and most things against divine beings. /obj/item/weapon/spell name = "glowing particles" diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 30955879f8..1496ca1a1f 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -142,6 +142,18 @@ add_hiddenprint(user) destroy() +/obj/machinery/camera/attack_generic(mob/user as mob) + if(isanimal(user)) + var/mob/living/simple_animal/S = user + set_status(0) + S.do_attack_animation(src) + S.setClickCooldown(user.get_attack_speed()) + visible_message("\The [user] [pick(S.attacktext)] \the [src]!") + playsound(src.loc, S.attack_sound, 100, 1) + add_hiddenprint(user) + destroy() + ..() + /obj/machinery/camera/attackby(obj/item/W as obj, mob/living/user as mob) update_coverage() // DECONSTRUCTION diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 54b5513cce..58ce8b282c 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -7,6 +7,9 @@ // as they lack any ID scanning system, they just handle remote control signals. Subtypes have // different icons, which are defined by set of variables. Subtypes are on bottom of this file. +// UPDATE 06.04.2018 +// The emag thing wasn't working as intended, manually overwrote it. + /obj/machinery/door/blast name = "Blast Door" desc = "That looks like it doesn't open easily." @@ -56,6 +59,10 @@ radiation_repository.resistance_cache.Remove(get_turf(src)) return +// Has to be in here, comment at the top is older than the emag_act code on doors proper +/obj/machinery/door/blast/emag_act() + return -1 + // Proc: force_open() // Parameters: None // Description: Opens the door. No checks are done inside this proc. @@ -197,6 +204,27 @@ return ..() +// Proc: attack_generic() +// Parameters: Attacking simple mob, incoming damage. +// Description: Checks the power or integrity of the blast door, if either have failed, chekcs the damage to determine if the creature would be able to open the door by force. Otherwise, super. +/obj/machinery/door/blast/attack_generic(var/mob/user, var/damage) + if(stat & (BROKEN|NOPOWER)) + if(damage >= 10) + if(src.density) + visible_message("\The [user] starts forcing \the [src] open!") + if(do_after(user, 5 SECONDS, src)) + visible_message("\The [user] forces \the [src] open!") + force_open(1) + else + visible_message("\The [user] starts forcing \the [src] closed!") + if(do_after(user, 2 SECONDS, src)) + visible_message("\The [user] forces \the [src] closed!") + force_close(1) + else + visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") + return + ..() + // Proc: open() // Parameters: None // Description: Opens the door. Does necessary checks. Automatically closes if autoclose is true diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 27ce595a77..e639571cb4 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -25,34 +25,39 @@ var/releasetime = 0 // when world.timeofday reaches it - release the prisoner var/timing = 1 // boolean, true/1 timer is on, false/0 means it's not timing var/picture_state // icon_state of alert picture, if not displaying text/numbers - var/list/obj/machinery/targets = list() + var/list/obj/machinery/targets var/timetoset = 0 // Used to set releasetime upon starting the timer maptext_height = 26 maptext_width = 32 -/obj/machinery/door_timer/New() +/obj/machinery/door_timer/initialize() ..() + //Doors need to go first, and can't rely on init order, so come back to me. + return INITIALIZE_HINT_LATELOAD - spawn(20) - for(var/obj/machinery/door/window/brigdoor/M in machines) - if (M.id == src.id) - targets += M +/obj/machinery/door_timer/LateInitialize() + . = ..() - for(var/obj/machinery/flasher/F in machines) - if(F.id == src.id) - targets += F + for(var/obj/machinery/door/window/brigdoor/M in machines) + if (M.id == src.id) + LAZYADD(targets,M) - for(var/obj/structure/closet/secure_closet/brig/C in world) - if(C.id == src.id) - targets += C + for(var/obj/machinery/flasher/F in machines) + if(F.id == src.id) + LAZYADD(targets,F) - if(targets.len==0) - stat |= BROKEN - update_icon() - return - return + for(var/obj/structure/closet/secure_closet/brig/C in world) + if(C.id == src.id) + LAZYADD(targets,C) + if(!LAZYLEN(targets)) + stat |= BROKEN + update_icon() + +/obj/machinery/door_timer/Destroy() + LAZYCLEARLIST(targets) + return ..() //Main door timer loop, if it's timing and time is >0 reduce time by 1. // if it's less than 0, open door, reset timer @@ -95,6 +100,7 @@ // Closes and locks doors, power check /obj/machinery/door_timer/proc/timer_start() if(stat & (NOPOWER|BROKEN)) return 0 + if(!LAZYLEN(targets)) return 0 // Set releasetime releasetime = world.timeofday + timetoset @@ -115,6 +121,7 @@ // Opens and unlocks doors, power check /obj/machinery/door_timer/proc/timer_end() if(stat & (NOPOWER|BROKEN)) return 0 + if(!LAZYLEN(targets)) return 0 // Reset releasetime releasetime = 0 @@ -197,11 +204,12 @@ dat += "- - + +
" // Mounted flash controls - for(var/obj/machinery/flasher/F in targets) - if(F.last_flash && (F.last_flash + 150) > world.time) - dat += "
Flash Charging" - else - dat += "
Activate Flash" + if(LAZYLEN(targets)) + for(var/obj/machinery/flasher/F in targets) + if(F.last_flash && (F.last_flash + 150) > world.time) + dat += "
Flash Charging" + else + dat += "
Activate Flash" dat += "

Close" dat += "" @@ -244,8 +252,9 @@ timeset(addtime) if(href_list["fc"]) - for(var/obj/machinery/flasher/F in targets) - F.flash() + if(LAZYLEN(targets)) + for(var/obj/machinery/flasher/F in targets) + F.flash() if(href_list["change"]) src.timer_start() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 6dd268676d..d8252fe4a9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -38,11 +38,14 @@ var/atom/movable/overlay/c_animation = null /obj/machinery/door/attack_generic(var/mob/user, var/damage) - if(damage >= 10) - visible_message("\The [user] smashes into the [src]!") - take_damage(damage) - else - visible_message("\The [user] bonks \the [src] harmlessly.") + if(isanimal(user)) + var/mob/living/simple_animal/S = user + if(damage >= 10) + visible_message("\The [user] smashes into the [src]!") + playsound(src, S.attack_sound, 75, 1) + take_damage(damage) + else + visible_message("\The [user] bonks \the [src] harmlessly.") user.do_attack_animation(src) /obj/machinery/door/New() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 5cded75805..504d65c306 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -216,6 +216,27 @@ return ..() +/obj/machinery/door/firedoor/attack_generic(var/mob/user, var/damage) + if(stat & (BROKEN|NOPOWER)) + if(damage >= 10) + var/time_to_force = (2 + (2 * blocked)) * 5 + if(src.density) + visible_message("\The [user] starts forcing \the [src] open!") + if(do_after(user, time_to_force, src)) + visible_message("\The [user] forces \the [src] open!") + src.blocked = 0 + open(1) + else + time_to_force = (time_to_force / 2) + visible_message("\The [user] starts forcing \the [src] closed!") + if(do_after(user, time_to_force, src)) + visible_message("\The [user] forces \the [src] closed!") + close(1) + else + visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") + return + ..() + /obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob) add_fingerprint(user) if(istype(C, /obj/item/taperoll)) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index f6650301c7..de1d8fcb54 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -393,6 +393,18 @@ var/list/turret_icons attacked = 0 ..() +/obj/machinery/porta_turret/attack_generic(mob/user as mob, var/damage) + if(isanimal(user)) + var/mob/living/simple_animal/S = user + if(damage >= 10) + var/incoming_damage = round(damage - (damage / 5)) //Turrets are slightly armored, assumedly. + visible_message("\The [S] [pick(S.attacktext)] \the [src]!") + take_damage(incoming_damage) + S.do_attack_animation(src) + return 1 + visible_message("\The [user] bonks \the [src]'s casing!") + return ..() + /obj/machinery/porta_turret/emag_act(var/remaining_charges, var/mob/user) if(!emagged) //Emagging the turret makes it go bonkers and stun everyone. It also makes diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 74014f2b0f..868429095a 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -36,6 +36,7 @@ desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE" name = "DEATH-RIPLEY" icon_state = "deathripley" + initial_icon = "deathripley" step_in = 2 opacity=0 lights_power = 60 diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 0a8a74b8e9..998b213ff4 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -75,6 +75,13 @@ // buckled_mob = M buckled_mobs |= M + //VOREStation Add + if(riding_datum) + riding_datum.ridden = src + riding_datum.handle_vehicle_offsets() + M.update_water() + //VOREStation Add End + post_buckle_mob(M) return TRUE @@ -94,6 +101,12 @@ // buckled_mob = null buckled_mobs -= buckled_mob + //VOREStation Add + buckled_mob.update_water() + if(riding_datum) + riding_datum.restore_position(buckled_mob) + riding_datum.handle_vehicle_offsets() // So the person in back goes to the front. + //VOREStation Add End post_buckle_mob(.) /atom/movable/proc/unbuckle_all_mobs(force = FALSE) @@ -175,3 +188,9 @@ . = ..() if(. && has_buckled_mobs() && !handle_buckled_mob_movement(newloc, direct)) //movement failed due to buckled mob(s) . = 0 + //VOREStation Add + else if(. && riding_datum) + riding_datum.handle_vehicle_layer() + riding_datum.handle_vehicle_offsets() + //VOREStation Add End + \ No newline at end of file diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 4e76f58e4d..8e482cc1cb 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -221,7 +221,7 @@ skitter() else if(isorgan(loc)) - if(!amount_grown) amount_grown = 1 + if(amount_grown < 0) amount_grown = 1 var/obj/item/organ/external/O = loc if(!O.owner || O.owner.stat == DEAD || amount_grown > 80) O.implants -= src @@ -237,7 +237,7 @@ else if(prob(1)) src.visible_message("\The [src] skitters.") - if(amount_grown) + if(amount_grown >= 0) amount_grown += rand(0,2) /obj/effect/spider/spiderling/proc/skitter() diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index ebad249bde..b57c67bac0 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -102,6 +102,11 @@ user << "Transfer failed: Existing AI found on remote device. Remove existing AI to install a new one." return 0 + if(!user.IsAdvancedToolUser() && isanimal(user)) + var/mob/living/simple_animal/S = user + if(!S.IsHumanoidToolUser(src)) + return 0 + user.visible_message("\The [user] starts transferring \the [ai] into \the [src]...", "You start transferring \the [ai] into \the [src]...") ai << "\The [user] is transferring you into \the [src]!" diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 77c5b59364..c5b637d9e5 100755 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -22,6 +22,11 @@ AI MODULES var/datum/ai_laws/laws = null /obj/item/weapon/aiModule/proc/install(var/atom/movable/AM, var/mob/living/user) + if(!user.IsAdvancedToolUser() && isanimal(user)) + var/mob/living/simple_animal/S = user + if(!S.IsHumanoidToolUser(src)) + return 0 + if (istype(AM, /obj/machinery/computer/aiupload)) var/obj/machinery/computer/aiupload/comp = AM if(comp.stat & NOPOWER) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 196f8d4a74..58aa30547d 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -29,7 +29,14 @@ return 0 /obj/item/weapon/rcd/proc/can_use(var/mob/user,var/turf/T) - return (user.Adjacent(T) && user.get_active_hand() == src && !user.stat && !user.restrained()) + var/usable = 0 + if(user.Adjacent(T) && user.get_active_hand() == src && !user.stat && !user.restrained()) + usable = 1 + if(!user.IsAdvancedToolUser() && istype(user, /mob/living/simple_animal)) + var/mob/living/simple_animal/S = user + if(!S.IsHumanoidToolUser(src)) + usable = 0 + return usable /obj/item/weapon/rcd/examine() ..() diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 46ebb3bd40..e6a5fc09e4 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -265,7 +265,7 @@ var/last_chew = 0 place_legcuffs(user, user) return - if(!C.handcuffed) + if(!C.legcuffed) if (C == user) place_legcuffs(user, user) return diff --git a/code/game/objects/items/weapons/handcuffs_vr.dm b/code/game/objects/items/weapons/handcuffs_vr.dm new file mode 100644 index 0000000000..ecafc8b6c3 --- /dev/null +++ b/code/game/objects/items/weapons/handcuffs_vr.dm @@ -0,0 +1,5 @@ +/obj/item/weapon/handcuffs/legcuffs/fuzzy + name = "fuzzy legcuffs" + desc = "Use this to keep... 'prisoners' in line." + icon = 'icons/obj/items_vr.dmi' + icon_state = "fuzzylegcuff" \ No newline at end of file diff --git a/code/game/objects/items/weapons/material/knives.dm b/code/game/objects/items/weapons/material/knives.dm index f2528f5786..94bc9e8f69 100644 --- a/code/game/objects/items/weapons/material/knives.dm +++ b/code/game/objects/items/weapons/material/knives.dm @@ -99,15 +99,9 @@ icon_state = "machete" force_divisor = 0.3 // 18 when hardness 60 (steel) attack_verb = list("slashed", "chopped", "gouged", "ripped", "cut") - var/should_cleave = TRUE //Now hatchets inherit from the machete, and thus knives. Tables turned. + can_cleave = TRUE //Now hatchets inherit from the machete, and thus knives. Tables turned. slot_flags = SLOT_BELT -// This cannot go into afterattack since some mobs delete themselves upon dying. -/obj/item/weapon/material/knife/machete/pre_attack(var/mob/living/target, var/mob/living/user) - if(should_cleave && istype(target)) - cleave(user, target) - ..() - /obj/item/weapon/material/knife/tacknife/survival name = "survival knife" desc = "A hunting grade survival knife." diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm index 87bfb0454d..bbb8171b10 100644 --- a/code/game/objects/items/weapons/material/misc.dm +++ b/code/game/objects/items/weapons/material/misc.dm @@ -28,7 +28,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "unathiknife" attack_verb = list("ripped", "torn", "cut") - should_cleave = FALSE + can_cleave = FALSE var hits = 0 /obj/item/weapon/material/knife/machete/hatchet/unathiknife/attack(mob/M as mob, mob/user as mob) diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 6631ec25fa..acc3132712 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -94,6 +94,7 @@ force_wielded = 30 attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") applies_material_colour = 0 + can_cleave = TRUE /obj/item/weapon/material/twohanded/fireaxe/update_held_icon() var/mob/living/M = loc @@ -124,12 +125,6 @@ var/obj/effect/plant/P = A P.die_off() -// This cannot go into afterattack since some mobs delete themselves upon dying. -/obj/item/weapon/material/twohanded/fireaxe/pre_attack(var/mob/living/target, var/mob/living/user) - if(istype(target)) - cleave(user, target) - ..() - /obj/item/weapon/material/twohanded/fireaxe/scythe icon_state = "scythe0" base_icon = "scythe" diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index f7497ec3ff..ad30eb0a57 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -87,6 +87,7 @@ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") sharp = 1 edge = 1 + can_cleave = TRUE /obj/item/weapon/melee/energy/axe/activate(mob/living/user) ..() @@ -98,12 +99,6 @@ icon_state = initial(icon_state) to_chat(user, "\The [src] is de-energised. It's just a regular axe now.") -// This cannot go into afterattack since some mobs delete themselves upon dying. -/obj/item/weapon/melee/energy/axe/pre_attack(var/mob/living/target, var/mob/living/user) - if(istype(target)) - cleave(user, target) - ..() - /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) var/datum/gender/TU = gender_datums[user.get_visible_gender()] visible_message("\The [user] swings \the [src] towards [TU.his] head! It looks like [TU.he] [TU.is] trying to commit suicide.") diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index c83e96ad04..19a83c8e40 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -274,7 +274,7 @@ prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc, prob(1);/obj/item/weapon/beartrap, prob(1);/obj/item/weapon/handcuffs/fuzzy, - prob(1);/obj/item/weapon/handcuffs/legcuffs, + prob(1);/obj/item/weapon/handcuffs/legcuffs/fuzzy, prob(2);/obj/item/weapon/reagent_containers/syringe/drugs, prob(1);/obj/item/weapon/reagent_containers/syringe/steroid, prob(4);/obj/item/device/radio_jammer, diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 9b3d866d2b..eddffe55ea 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -32,7 +32,7 @@ LINEN BINS if(do_after(user, 50)) user << "You cut [src] into pieces!" for(var/i in 1 to rand(2,5)) - new /obj/item/weapon/reagent_containers/glass/rag(src.loc) + new /obj/item/weapon/reagent_containers/glass/rag(drop_location()) qdel(src) return ..() diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm index 2aa58488b6..4f430d3ec6 100644 --- a/code/game/objects/structures/simple_doors.dm +++ b/code/game/objects/structures/simple_doors.dm @@ -198,4 +198,14 @@ ..(newloc, MAT_SIFWOOD) /obj/structure/simple_door/resin/New(var/newloc,var/material_name) - ..(newloc, "resin") \ No newline at end of file + ..(newloc, "resin") + +/obj/structure/simple_door/cult/New(var/newloc,var/material_name) + ..(newloc, "cult") + +/obj/structure/simple_door/cult/TryToSwitchState(atom/user) + if(isliving(user)) + var/mob/living/L = user + if(!iscultist(L) && !istype(L, /mob/living/simple_animal/construct)) + return + ..() diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm index 7a619477ea..c9a4babd9e 100644 --- a/code/game/objects/weapons.dm +++ b/code/game/objects/weapons.dm @@ -2,6 +2,7 @@ name = "weapon" icon = 'icons/obj/weapons.dmi' hitsound = "swing_hit" + var/can_cleave = FALSE // If true, a 'cleaving' attack will occur. var/cleaving = FALSE // Used to avoid infinite cleaving. /obj/item/weapon/Bump(mob/M as mob) @@ -16,14 +17,17 @@ ) // Attacks mobs (atm only simple ones due to friendly fire issues) that are adjacent to the target and user. -/obj/item/weapon/proc/cleave(var/mob/living/user, var/mob/living/target) +/obj/item/weapon/proc/cleave(mob/living/user, atom/target) if(cleaving) - return // We're busy. + return FALSE // We're busy. + if(!target.Adjacent(user)) + return FALSE // Too far. if(get_turf(user) == get_turf(target)) - return // Otherwise we would hit all eight surrounding tiles. + return FALSE // Otherwise we would hit all eight surrounding tiles. + cleaving = TRUE var/hit_mobs = 0 - for(var/mob/living/simple_animal/SA in orange(get_turf(target), 1)) + for(var/mob/living/simple_animal/SA in range(get_turf(target), 1)) if(SA.stat == DEAD) // Don't beat a dead horse. continue if(SA == user) // Don't hit ourselves. Simple mobs shouldn't be able to do this but that might change later to be able to hit all mob/living-s. @@ -42,6 +46,13 @@ if(hit_mobs) to_chat(user, "You used \the [src] to attack [hit_mobs] other thing\s!") cleaving = FALSE // We're done now. + return hit_mobs > 0 // Returns TRUE if anything got hit. + +// This cannot go into afterattack since some mobs delete themselves upon dying. +/obj/item/weapon/material/pre_attack(mob/living/target, mob/living/user) + if(can_cleave && istype(target)) + cleave(user, target) + ..() // This is purely the visual effect of cleaving. /obj/item/weapon/proc/cleave_visual(var/mob/living/user, var/mob/living/target) diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm index 5602eac320..91371e7beb 100644 --- a/code/game/turfs/simulated/floor_attackby.dm +++ b/code/game/turfs/simulated/floor_attackby.dm @@ -3,6 +3,12 @@ if(!C || !user) return 0 + if(isliving(user) && istype(C, /obj/item/weapon)) + var/mob/living/L = user + if(L.a_intent != I_HELP) + attack_tile(C, L) // Be on help intent if you want to decon something. + return + if(flooring) if(istype(C, /obj/item/weapon)) try_deconstruct_tile(C, user) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 2bfa5a6aca..8bc362a1d7 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -57,12 +57,19 @@ source.thermal_conductivity = initial(source.thermal_conductivity) /turf/simulated/wall/proc/fail_smash(var/mob/user) - user << "You smash against the wall!" + to_chat(user, "You smash against the wall!") + if(isanimal(user)) + var/mob/living/simple_animal/S = user + playsound(src, S.attack_sound, 75, 1) + user.do_attack_animation(src) take_damage(rand(25,75)) /turf/simulated/wall/proc/success_smash(var/mob/user) - user << "You smash through the wall!" + to_chat(user, "You smash through the wall!") user.do_attack_animation(src) + if(isanimal(user)) + var/mob/living/simple_animal/S = user + playsound(src, S.attack_sound, 75, 1) spawn(1) dismantle_wall(1) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 27f8bd6c14..2b0158b5fc 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -86,6 +86,34 @@ turf/attackby(obj/item/weapon/W as obj, mob/user as mob) S.gather_all(src, user) return ..() +// Hits a mob on the tile. +/turf/proc/attack_tile(obj/item/weapon/W, mob/living/user) + if(!istype(W)) + return FALSE + + var/list/viable_targets = list() + var/success = FALSE // Hitting something makes this true. If its still false, the miss sound is played. + + for(var/mob/living/L in contents) + if(L == user) // Don't hit ourselves. + continue + viable_targets += L + + if(!viable_targets.len) // No valid targets on this tile. + if(W.can_cleave) + success = W.cleave(user, src) + else + var/mob/living/victim = pick(viable_targets) + success = W.resolve_attackby(victim, user) + + user.setClickCooldown(user.get_attack_speed(W)) + user.do_attack_animation(src, no_attack_icons = TRUE) + + if(!success) // Nothing got hit. + user.visible_message("\The [user] swipes \the [W] over \the [src].") + playsound(src, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + return success + /turf/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) var/turf/T = get_turf(user) var/area/A = T.loc diff --git a/code/modules/busy_space/organizations.dm b/code/modules/busy_space/organizations.dm index 0285a68444..cf364aa3e9 100644 --- a/code/modules/busy_space/organizations.dm +++ b/code/modules/busy_space/organizations.dm @@ -41,9 +41,9 @@ if(autogenerate_destination_names) // Lets pad out the destination names. var/i = rand(6, 10) var/list/star_names = list( - "Sol", "Alpha Centauri", "Sirius", "Vega", "Regulus", "Vir", "Algol", "Aldebaran", - "Delta Doradus", "Menkar", "Geminga", "Elnath", "Gienah", "Mu Leporis", "Nyx", "Tau Ceti", - "Wazn", "Alphard", "Phact", "Altair", "El", "Eutopia", "Qerr'valis", "Qerrna-Lakirr", "Rarkajar", "the Almach Rim") + "Sol", "Alpha Centauri", "Tau Ceti", "Zhu Que", "Oasis", "Vir", "Gavel", "Ganesha", + "Saint Columbia", "Altair", "Sidhe", "New Ohio", "Parvati", "Mahi-Mahi", "Nyx", "New Seoul", + "Kess-Gendar", "Raphael", "Phact", "Altair", "El", "Eutopia", "Qerr'valis", "Qerrna-Lakirr", "Rarkajar", "Thoth", "Jahan's Post", "Kauq'xum", "Silk", "New Singapore", "Stove", "Viola", "Love", "Isavau's Gamble" ) var/list/destination_types = list("dockyard", "station", "vessel", "waystation", "telecommunications satellite", "spaceport", "distress beacon", "anomaly", "colony", "outpost") while(i) destination_names.Add("a [pick(destination_types)] in [pick(star_names)]") @@ -373,7 +373,8 @@ "Preemptive Defensive Strike", "This Ship Is Spiders", "Legitimate Trade Vessel", - "Please Don't Explode II" + "Please Don't Explode II", + "Get Off the Air" ) destination_names = list( "a trade outpost in Shelf" diff --git a/code/modules/busy_space/organizations_vr.dm b/code/modules/busy_space_vr/organizations.dm similarity index 52% rename from code/modules/busy_space/organizations_vr.dm rename to code/modules/busy_space_vr/organizations.dm index 2e700b6497..731ef73b22 100644 --- a/code/modules/busy_space/organizations_vr.dm +++ b/code/modules/busy_space_vr/organizations.dm @@ -1,6 +1,406 @@ //Datums for different companies that can be used by busy_space, VR edition + +// Some of these intentionally copy from busy_space/organizations.dm, which is disabled in our server. ////////////////////////////////////////////////////////////////////////////////// +//Datums for different companies that can be used by busy_space +/datum/lore/organization + var/name = "" // Organization's name + var/short_name = "" // Organization's shortname (NanoTrasen for "NanoTrasen Incorporated") + var/acronym = "" // Organization's acronym, e.g. 'NT' for NanoTrasen'. + var/desc = "" // One or two paragraph description of the organization, but only current stuff. Currently unused. + var/history = "" // Historical discription of the organization's origins Currently unused. + var/work = "" // Short description of their work, eg "an arms manufacturer" + var/headquarters = "" // Location of the organization's HQ. Currently unused. + var/motto = "" // A motto/jingle/whatever, if they have one. Currently unused. + + var/list/ship_prefixes = list() //Some might have more than one! Like NanoTrasen. Value is the mission they perform, e.g. ("ABC" = "mission desc") + var/list/ship_names = list( //Names of spaceships. This is a mostly generic list that all the other organizations inherit from if they don't have anything better. + "Kestrel", + "Beacon", + "Signal", + "Freedom", + "Glory", + "Axiom", + "Eternal", + "Harmony", + "Light", + "Discovery", + "Endeavour", + "Explorer", + "Swift", + "Dragonfly", + "Ascendant", + "Tenacious", + "Pioneer", + "Hawk", + "Haste", + "Radiant", + "Luminous" + ) + var/list/destination_names = list() //Names of static holdings that the organization's ships visit regularly. + var/autogenerate_destination_names = TRUE + +/datum/lore/organization/New() + ..() + if(autogenerate_destination_names) // Lets pad out the destination names. + var/i = rand(6, 10) + var/list/star_names = list( + "Sol", "Alpha Centauri", "Sirius", "Vega", "Regulus", "Vir", "Algol", "Aldebaran", "Vilous", "Sanctum", "Qerr'Vallis", "Kataigal", "Antares", + "Delta Doradus", "Menkar", "Geminga", "Elnath", "Gienah", "Mu Leporis", "Nyx", "Tau Ceti", "Virgo-Erigone", "Uueoa-Esa", "Vazzend", "Kastra-71", + "Wazn", "Alphard", "Phact", "Altair", "El", "Eutopia", "Qerr'valis", "Qerrna-Lakirr", "Rarkajar", "the Almach Rim") + var/list/destination_types = list("dockyard", "station", "vessel", "waystation", "telecommunications satellite", "spaceport", "distress beacon", "anomaly", "colony", "outpost") + while(i) + destination_names.Add("a [pick(destination_types)] in [pick(star_names)]") + i-- + +////////////////////////////////////////////////////////////////////////////////// + +// TSCs +/datum/lore/organization/tsc/nanotrasen + name = "NanoTrasen Incorporated" + short_name = "NanoTrasen" + acronym = "NT" + desc = "NanoTrasen is one of the foremost research and development companies in SolGov space. \ + Originally focused on consumer products, their swift move into the field of Phoron has lead to \ + them being the foremost experts on the substance and its uses. In the modern day, NanoTrasen prides \ + itself on being an early adopter to as many new technologies as possible, often offering the newest \ + products to their employees. In an effort to combat complaints about being 'guinea pigs', Nanotrasen \ + also offers one of the most comprehensive medical plans in SolGov space, up to and including cloning \ + and therapy.\ +

\ + NT's most well known products are its phoron based creations, especially those used in Cryotherapy. \ + It also boasts an prosthetic line, which is provided to its employees as needed, and is used as an incentive \ + for newly tested posibrains to remain with the company." + history = "" // To be written someday. + work = "research giant" + headquarters = "Luna" + motto = "" + + ship_prefixes = list("NSV" = "exploration", "NTV" = "hauling", "NDV" = "patrol", "NRV" = "emergency response") + //Scientist or Greek mythology naming scheme + ship_names = list( + "Bardeen", + "Einstein", + "Feynman", + "Sagan", + "Tyson", + "Galilei", + "Jans", + "Fhriede", + "Franklin", + "Tesla", + "Curie", + "Darwin", + "Newton", + "Pasteur", + "Bell", + "Mendel", + "Kepler", + "Edision", + "Cavendish", + "Nye", + "Hawking", + "Aristotle", + "Von Braun", + "Kaku", + "Oppenheimer" + ) + // Note that the current station being used will be pruned from this list upon being instantiated + destination_names = list( + "NSS Exodus in Nyx", + "NCS Northern Star in Vir", + "NAB Smythside Central Headquarters in Sol", + "NAS Zeus orbiting Virgo-Prime", + "NIB Posideon in Alpha Centauri", + "NTB An-Nur on Virgo-Prime", + "the colony at Virgo-3B", + "the NanoTrasen phoron refinery in Vilous", + "a dockyard orbiting Virgo-Prime", + "an asteroid orbiting Virgo 3", + ) + +/datum/lore/organization/tsc/nanotrasen/New() + ..() + spawn(1) // BYOND shenanigans means using_map is not initialized yet. Wait a tick. + // Get rid of the current map from the list, so ships flying in don't say they're coming to the current map. + var/string_to_test = "[using_map.station_name] in [using_map.starsys_name]" + if(string_to_test in destination_names) + destination_names.Remove(string_to_test) + + + +/datum/lore/organization/tsc/hephaestus + name = "Hephaestus Industries" + short_name = "Hephaestus" + acronym = "HI" + desc = "Hephaestus Industries is the largest supplier of arms, ammunition, and small millitary vehicles in Sol space. \ + Hephaestus products have a reputation for reliability, and the corporation itself has a noted tendency to stay removed \ + from corporate politics. They enforce their neutrality with the help of a fairly large asset-protection contingent which \ + prevents any contracting polities from using their own materiel against them. SolGov itself is one of Hephastus’ largest \ + bulk contractors owing to the above factors." + history = "" + work = "arms manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("HTV" = "freight", "HTV" = "munitions resupply") + //War God/Soldier Theme + ship_names = list( + "Ares", + "Athena", + "Grant", + "Custer", + "Puller", + "Nike", + "Bellona", + "Leonides", + "Bast", + "Jackson", + "Lee", + "Annan", + "Chi Yu", + "Shiva", + "Tyr" + ) + destination_names = list( + "a SolGov dockyard on Luna", + "a Fleet outpost in the Almach Rim", + "a Fleet outpost on the Moghes border" + ) + +/datum/lore/organization/tsc/vey_med + name = "Vey-Medical" + short_name = "Vey-Med" + acronym = "VM" + desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \ + Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \ + the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \ + and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \ + human-like FBP designs. Vey’s rise to stardom came from their introduction of ressurective cloning, although in \ + recent years they’ve been forced to diversify as their patents expired and NanoTrasen-made medications became \ + essential to modern cloning." + history = "" + work = "medical equipment supplier" + headquarters = "" + motto = "" + + ship_prefixes = list("VTV" = "transportation", "VMV" = "medical resupply") + // Diona names + ship_names = list( + "Wind That Stirs The Waves", + "Sustained Note Of Metal", + "Bright Flash Reflecting Off Glass", + "Veil Of Mist Concealing The Rock", + "Thin Threads Intertwined", + "Clouds Drifting Amid Storm", + "Loud Note And Breaking", + "Endless Vistas Expanding Before The Void", + "Fire Blown Out By Wind", + "Star That Fades From View", + "Eyes Which Turn Inwards", + "Joy Without Which The World Would Come Undone", + "A Thousand Thousand Planets Dangling From Branches" + ) + destination_names = list( + "a research facility in Samsara", + "a SDTF near Ue-Orsi", + "a sapientarian mission in the Almach Rim" + ) + +/datum/lore/organization/tsc/zeng_hu + name = "Zeng-Hu pharmaceuticals" + short_name = "Zeng-Hu" + acronym = "ZH" + desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \ + on the market for medications, and many household names are patentted by Zeng-Hu-- Bicaridyne, Dylovene, Tricordrizine, \ + and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu’s fortunes have been in decline as Nanotrasen’s near monopoly \ + on phoron research cuts into their R&D and Vey-Med’s superior medical equipment effectively decimated their own equipment \ + interests. The three-way rivalry between these companies for dominance in the medical field is well-known and a matter of \ + constant economic speculation." + history = "" + work = "pharmaceuticals company" + headquarters = "" + motto = "" + + ship_prefixes = list("ZTV" = "transportation", "ZMV" = "medical resupply") + destination_names = list() + +/datum/lore/organization/tsc/ward_takahashi + name = "Ward-Takahashi General Manufacturing Conglomerate" + short_name = "Ward-Takahashi" + acronym = "WT" + desc = "Ward-Takahashi focuses on the sale of small consumer electronics, with its computers, communicators, \ + and even mid-class automobiles a fixture of many households. Less famously, Ward-Takahashi also supplies most \ + of the AI cores on which vital control systems are mounted, and it is this branch of their industry that has \ + led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi’s economies \ + of scale frequently steal market share from Nanotrasen’s high-price products, leading to a bitter rivalry in the \ + consumer electronics market." + history = "" + work = "electronics manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("WTV" = "freight") + ship_names = list( + "Comet", + "Aurora", + "Supernova", + "Nebula", + "Galaxy", + "Starburst", + "Constellation", + "Pulsar", + "Quark", + "Void", + "Asteroid" + ) + destination_names = list() + +/datum/lore/organization/tsc/bishop + name = "Bishop Cybernetics" + short_name = "Bishop" + acronym = "BC" + desc = "Bishop’s focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a bête noire for \ + bioconservatives), Bishop manufactures not only prostheses but also brain augmentation, synthetic organ replacements, \ + and odds and ends like implanted wrist-watches. Their business model tends towards smaller, boutique operations, giving \ + it a reputation for high price and luxury, with Bishop cyberware often rivalling Vey-Med’s for cost. Bishop’s reputation \ + for catering towards the interests of human augmentation enthusiasts instead of positronics have earned it ire from the \ + Positronic Rights Group and puts it in ideological (but not economic) comptetition with Morpheus Cyberkinetics." + history = "" + work = "cybernetics and augmentation manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("BTV" = "transportation") + destination_names = list() + +/datum/lore/organization/tsc/morpheus + name = "Morpheus Cyberkinetics" + short_name = "Morpheus" + acronym = "MC" + desc = "The only large corporation run by positronic intelligences, Morpheus caters almost exclusively to their sensibilities \ + and needs. A product of the synthetic colony of Shelf, Morpheus eschews traditional advertising to keep their prices low and \ + relied on word of mouth among positronics to reach their current economic dominance. Morpheus in exchange lobbies heavily for \ + positronic rights, sponsors positronics through their Jans-Fhriede test, and tends to other positronic concerns to earn them \ + the good-will of the positronics, and the ire of those who wish to exploit them." + history = "" + work = "cybernetics manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("MTV" = "freight") + // Culture names, because Anewbe told me so. + ship_names = list( + "Nervous Energy", + "Prosthetic Conscience", + "Revisionist", + "Trade Surplus", + "Flexible Demeanour", + "Just Read The Instructions", + "Limiting Factor", + "Cargo Cult", + "Gunboat Diplomat", + "A Ship With A View", + "Cantankerous", + "I Thought He Was With You", + "Never Talk To Strangers", + "Sacrificial Victim", + "Unwitting Accomplice", + "Witting Accomplice", + "Bad For Business", + "Just Testing", + "Size Isn't Everything", + "Yawning Angel", + "Liveware Problem", + "Very Little Gravitas Indeed", + "Zero Gravitas", + "Gravitas Free Zone", + "Absolutely No You-Know-What", + "Existence Is Pain", + "I'm Walking Here", + "Screw Loose", + "Of Course I Still Love You", + "Limiting Factor", + "So Much For Subtley", + "Unfortunate Conflict Of Evidence", + "Prime Mover", + "It's One Of Ours", + "Thank You And Goodnight", + "Boo!", + "Reasonable Excuse", + "Honest Mistake", + "Appeal To Reason", + "My First Ship II", + "Hidden Income", + "Anything Legal Considered", + "New Toy", + "Me, I'm Always Counting", + "Just Five More Minutes", + "Are You Feeling It", + "Great White Snark", + "No Shirt No Shoes", + "Callsign", + "Three Ships in a Trenchcoat", + "Not Wearing Pants", + "Ridiculous Naming Convention", + "God Dammit Morpheus", + "It Seemed Like a Good Idea", + "Legs All the Way Up", + "Purchase Necessary", + "Some Assembly Required", + "Buy One Get None Free", + "BRB", + "SHIP NAME HERE", + "Questionable Ethics", + "Accept Most Substitutes", + "I Blame the Government", + "Garbled Gibberish", + "Thinking Emoji", + "Is This Thing On?", + "Make My Day", + "No Vox Here", + "Savings and Values", + "Secret Name", + "Can't Find My Keys", + "Look Over There!", + "Made You Look!", + "Take Nothing Seriously", + "It Comes In Lime, Too", + "Loot Me", + "Nothing To Declare", + "Sneaking Suspicion", + "Bass Ackwards", + "Good Things Come to Those Who Freight", + "Redundant Morality", + "Synthetic Goodwill", + "Your Ad Here", + "What Are We Plotting?", + "Set Phasers To Stun", + "Preemptive Defensive Strike", + "This Ship Is Spiders", + "Legitimate Trade Vessel", + "Please Don't Explode II" + ) + destination_names = list( + "a trade outpost in Shelf" + ) + +/datum/lore/organization/tsc/xion + name = "Xion Manufacturing Group" + short_name = "Xion" + desc = "Xion, quietly, controls most of the market for industrial equipment. Their portfolio includes mining exosuits, \ + factory equipment, rugged positronic chassis, and other pieces of equipment vital to the function of the economy. Xion \ + keeps its control of the market by leasing, not selling, their equipment, and through infamous and bloody patent protection \ + lawsuits. Xion are noted to be a favorite contractor for SolGov engineers, owing to their low cost and rugged design." + history = "" + work = "industrial equipment manufacturer" + headquarters = "" + motto = "" + + ship_prefixes = list("XTV" = "hauling") + destination_names = list() + /datum/lore/organization/gov/solgov name = "Solar Central Government" short_name = "SolGov" @@ -26,26 +426,30 @@ ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight") destination_names = list( + "Mercury", "Venus", "Earth", "Luna", "Mars", - "Titan" + "Titan", + "Europa", + "the SolGov embassy in Virgo-Erigone", + "the SolGov embassy in Vilous" )// autogen will add a lot of other places as well. /datum/lore/organization/gov/sifgov // Overrides Polaris stuff name = "Virgo-Erigone Governmental Authority" short_name = "" - desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo Prime Governmental \ + desc = "Existing far outside the reach of SolGov space, the only governing body of the Virgo-Erigone system is the Virgo-Prime Governmental \ Authority, also known as VEGA. It is a Technocracy founded and operated by NanoTrasen, using company appointed experts hired to see \ to the comfort and well being of Virgo's citizens; most of whom are also NanoTrasen employees. VEGA provides basic social services \ such as law enforcement, emergency services, medical care, education, and infrastructure. VEGA's operations are based on the world \ - of Virgo Prime, within the spaceport city of Anur. Although the government is an entity of NanoTrasen, some elements of democracy \ + of Virgo-Prime, within the spaceport city of Anur. Although the government is an entity of NanoTrasen, some elements of democracy \ are still practiced, such as voting on changes to local law, policy, or public works." history = "VEGA was founded in 2556, shortly after the Virgo-Erigone system was colonized by a population of 1000. That population has \ multiplied many times since then as wealth and commerce come and go from this frontier star system." work = "governing body of Virgo-Erigone" - headquarters = "Anur, Virgo Prime" + headquarters = "Anur, Virgo-Prime" motto = "Reach for the Stars." autogenerate_destination_names = FALSE @@ -53,13 +457,19 @@ destination_names = list( "the colony at Virgo-3B", "the VORE-1 debris field", - "a colony on Virgo-2", - "a telecommunications satellite", + "a mining colony on Virgo-2", "the Anur Spaceport", - "to a local distress beacon" + "to a local distress beacon", + "NAS Zeus orbiting Virgo-Prime", + "NTB An-Nur on Virgo-Prime", + "the colony at Virgo-3B", + "a dockyard orbiting Virgo-Prime", + "an asteroid orbiting Virgo 3", + "a telecommunications satellite near Virgo-3B", + "a telecommunications satellite near Virgo-Prime" ) -/* +/* // Waiting for lore to be updated. /datum/lore/organization/gov/federation name = "United Federation of Planets" short_name = "Federation" @@ -127,11 +537,11 @@ "Naro Industrial Complex on Scheddi III", "Mari Industrial Complex on Furlou Prime", "Runni Crystal Mines of Keid V") -*/ // ToDo: ReDo. +*/ -/datum/lore/organization/mil/USDF // change to sif_guard in future to overwrite Polaris stuff +/datum/lore/organization/mil/usdf name = "United Sol Defense Force" - short_name = "" // This is blank on purpose. Otherwise they call the ships "USDF" "USDF Name" + short_name = "" // This is blank on purpose. Otherwise they call the ships "USDF USDF Name" desc = "The USDF is the dedicated military force of SolGov, originally formed by the United Nations. It is the \ dominant superpower of the Orion Spur, and is able to project its influence well into parts of the Perseus and \ Sagittarius arms of the galaxy. However, regions beyond that are too far for the USDF to be a major player." @@ -153,8 +563,8 @@ against other major military powers such as the Moghes Hegemony." work = "peacekeeping and piracy suppression" headquarters = "Paris, Earth" - motto = "Per Mare, Per Terras, Per Constellatum." // Stolen from Halo because fuck you that's why. - ship_prefixes = list("USDF" = "military", "USDF" = "anti-piracy", "USDF" = "escort", "USDF" = "humanitarian", "USDF" = "peacekeeping", "USDF" = "search-and-rescue") // It's all USDF but let's mix up what they do. + motto = "Per Mare, Per Terras, Per Constellatum." // Stolen from Halo because fuck you that's why. -Ace + ship_prefixes = list("USDF" = "military", "USDF" = "anti-piracy", "USDF" = "escort", "USDF" = "humanitarian", "USDF" = "peacekeeping", "USDF" = "search-and-rescue", "USDF" = "war game") // It's all USDF but let's mix up what missions they do. ship_names = list("Aegis Fate", "Ain't No Sunshine", "All Under Heaven", @@ -186,10 +596,10 @@ "Hoenir", "In Amber Clad", "Iwo Jima", + "Jolly Roger", "Jormungandr", "Leonidas", "Meriwether Lewis", - "Midsummer Night", "Mona Lisa", "Olympus", "Paris", @@ -199,6 +609,7 @@ "Purpose", "Ready or Not", "Redoubtable", + "Rising Sun", "Saratoga", "Savannah", "Shanxi", @@ -211,7 +622,6 @@ "Tripping Light", "Two for Flinching") destination_names = list("San Francisco on Earth", - "SolGov Fleet Academy on Earth", "Gateway One above Luna", "SolGov Headquarters on Earth", "Olympus City on Mars", @@ -221,13 +631,51 @@ "a settlement on Titan", "a settlement on Europa", "Aleph Grande on Ganymede", - "a new colony in Proxima II", - "a new settlement on Ceti IV-B", + "a colony in Proxima II", + "a settlement on Ceti IV-B", "a colony ship around Ceti IV-B", "a naval station above Ceti IV-B", "a classified location in SolGov territory", "a classified location in uncharted space", - "an emergency nav bouy") + "an emergency nav bouy", + "the USDF Naval Academy on Earth", + "Fort Rain on Tal") + +/datum/lore/organization/mil/oni + name = "SolGov Office of Naval Intelligence" + short_name = "" // This is blank on purpose. Otherwise they call the ships "ONI ONI Name" + desc = "The Office of Naval Intelligence is SolGov's eyes and ears in the galaxy's affairs. Despite its name, and despite its \ + usual association with the USDF, the Office of Naval Intelligence does not fall under the command of the military. From espionage \ + to archeological research, ONI's work provides SolGov with the knowledge and technology it requires to advance both military and \ + civilian interests across the galaxy." + history = "ONI was originally created by the consolidation of several military intelligence agencies from Sol during the Sol-Hegemony war. \ + The USDF's victory in that war was largely accredited to intelligence and technology advancements provided by ONI during that time, \ + most notably of which was the reverse-engineering of Unathi vessels, allowing the production of countermeasures that played a crucial \ + role during in the late stages of the conflict. After the war, ONI's resources were pooled into numerous top secret projects; much of \ + which remains unknown or outright denied to the public even today. Among their suspected activities include exploration, weapons \ + development, xenoarcheology, xenobiology, corporate espionage, and manipulation of political affairs." + work = "espionage, piracy suppression, xeno research, and various other black projects" + headquarters = "Paris, Earth" + motto = "The truth will set you free." + ship_prefixes = list("ONI" = "classified", "ONI" = "archeological", "ONI" = "exploration", "ONI" = "logistic") // It's all ONI but let's mix up what missions they do. + ship_names = list("Bastille", + "Fantôme", + "Harpocrates", + "Hoenir", + "Mata Hari", + "Midsummer Night", + "Mirage", + "Persephone", // Director Ixchel Kisoda's personal research ship + "Versailles") + destination_names = list("parts unknown", + "none of your business", + "uncharted space", + "an undisclosed location", + "facility 8492", + "you don't want to know", + "if told you I'd have to kill you", + "... wait, why am I even telling you this? Just let me pass", + "stop asking questions") /datum/lore/organization/gov/kitsuhana name = "Kitsuhana Heavy Industries" diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index c6b8f32e1e..4cfa52cc45 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -55,7 +55,7 @@ pref.starting_trait_points = STARTING_SPECIES_POINTS pref.max_traits = MAX_SPECIES_TRAITS - if(pref.species != "Custom Species") + if(pref.species != SPECIES_CUSTOM) pref.pos_traits.Cut() pref.neu_traits.Cut() pref.neg_traits.Cut() @@ -73,12 +73,12 @@ if(!(path in negative_traits)) pref.neg_traits -= path - if(!pref.custom_base || (pref.custom_base != "Xenochimera" && !(pref.custom_base in playable_species - whitelisted_species))) + if(!pref.custom_base || !(pref.custom_base in custom_species_bases)) pref.custom_base = "Human" /datum/category_item/player_setup_item/vore/traits/copy_to_mob(var/mob/living/carbon/human/character) character.custom_species = pref.custom_species - if(pref.species == "Custom Species") + if(pref.species == SPECIES_CUSTOM || pref.species == SPECIES_XENOCHIMERA) var/datum/species/custom/CS = character.species var/S = pref.custom_base ? pref.custom_base : "Human" var/datum/species/custom/new_CS = CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character) @@ -86,28 +86,15 @@ //Any additional non-trait settings can be applied here new_CS.blood_color = pref.blood_color - if(pref.species == "Xenochimera") - var/datum/species/xenochimera/CS = character.species - var/S = pref.custom_base ? pref.custom_base : "Human" - var/datum/species/xenochimera/new_CS = CS.produceCopy(S, pref.pos_traits + pref.neu_traits + pref.neg_traits, character) - - //Any additional non-trait settings can be applied here - new_CS.blood_color = pref.blood_color - /datum/category_item/player_setup_item/vore/traits/content(var/mob/user) . += "Custom Species " . += "[pref.custom_species ? pref.custom_species : "-Input Name-"]
" - if(pref.species == "Custom Species") + if(pref.species == SPECIES_CUSTOM || pref.species == SPECIES_XENOCHIMERA) . += "Icon Base: " . += "[pref.custom_base ? pref.custom_base : "Human"]
" - if(pref.species == "Xenochimera") - . += "Icon Base: " - . += "[pref.custom_base ? pref.custom_base : "Human"]
" - - if(pref.species == "Custom Species") - + if(pref.species == SPECIES_CUSTOM) var/points_left = pref.starting_trait_points var/traits_left = pref.max_traits for(var/T in pref.pos_traits + pref.neg_traits) @@ -161,14 +148,8 @@ return TOPIC_REFRESH else if(href_list["custom_base"]) - var/text_choice = input("Pick an icon set for your species:","Icon Base") in playable_species - whitelisted_species - "Custom Species" - "Promethean" - if(text_choice in playable_species) - pref.custom_base = text_choice - return TOPIC_REFRESH_UPDATE_PREVIEW - - else if(href_list["custom_base_xenochimera"]) - var/text_choice = input("Pick an icon set for your species:","Icon Base") in playable_species - whitelisted_species - "Custom Species" - "Promethean" + "Xenochimera" - if(text_choice in playable_species) + var/text_choice = input("Pick an icon set for your species:","Icon Base") in custom_species_bases + if(text_choice in custom_species_bases) pref.custom_base = text_choice return TOPIC_REFRESH_UPDATE_PREVIEW diff --git a/code/modules/economy/Events.dm b/code/modules/economy/Events.dm index 5de2446dcf..9ce263cd17 100644 --- a/code/modules/economy/Events.dm +++ b/code/modules/economy/Events.dm @@ -52,8 +52,8 @@ affected_dest.temp_price_change[good_type] = rand(1,100) / 100 /datum/event/economic_event/announce() - var/author = "The "+using_map.starsys_name+" Times" - var/channel = author + var/author = "Oculus v6rev7" + var/channel = "Oculum Content Aggregator" //see if our location has custom event info for this event var/body = affected_dest.get_custom_eventstring() @@ -66,28 +66,28 @@ if(INDUSTRIAL_ACCIDENT) body = "[pick("An industrial accident","A smelting accident","A malfunction","A malfunctioning piece of machinery","Negligent maintenance","A cooleant leak","A ruptured conduit")] at a [pick("factory","installation","power plant","dockyards")] on [affected_dest.name] resulted in severe structural damage and numerous injuries. Repairs are ongoing." if(BIOHAZARD_OUTBREAK) - body = "[pick("A \'REDACTED\'","A biohazard","An outbreak","A virus")] on [affected_dest.name] has resulted in quarantine, stopping much shipping in the area. Although the quarantine is now lifted, authorities are calling for deliveries of medical supplies to treat the infected, and gas to replace contaminated stocks." + body = "[pick("A nano-contaminant","A biohazard","An outbreak","A virus")] on [affected_dest.name] has resulted in quarantine, stopping much shipping in the area. Although the quarantine is now lifted, authorities are calling for deliveries of medical supplies to treat the infected, and gas to replace contaminated stocks." if(PIRATES) - body = "[pick("Pirates","Criminal elements","A [pick("mercenary","Donk Co.","Waffle Co.","\'REDACTED\'")] strike force")] have [pick("raided","blockaded","attempted to blackmail","attacked")] [affected_dest.name] today. Security has been tightened, but many valuable minerals were taken." + body = "[pick("Pirates","Criminal elements","A [pick("mercenary","Nos Amis","Xin Cohong","Ue-Katish")] strike force")] have [pick("raided","blockaded","attempted to blackmail","attacked")] [affected_dest.name] today. Security has been tightened, but many valuable minerals were taken." if(CORPORATE_ATTACK) - body = "A small [pick("pirate","Cybersun Industries","Gorlex Marauders","mercenary")] fleet has precise-jumped into proximity with [affected_dest.name], [pick("for a smash-and-grab operation","in a hit and run attack","in an overt display of hostilities")]. Much damage was done, and security has been tightened since the incident." + body = "A small [pick("pirate","Nation of Mars","Revolutionary Solar People's Party","mercenary")] fleet has precise-jumped into proximity with [affected_dest.name], [pick("for a smash-and-grab operation","in a hit and run attack","in an overt display of hostilities")]. Much damage was done, and security has been tightened since the incident." if(ALIEN_RAIDERS) if(prob(20)) - body = "The Tiger Co-operative have raided [affected_dest.name] today, no doubt on orders from their enigmatic masters. Stealing wildlife, farm animals, medical research materials and kidnapping civilians. [using_map.company_name] authorities are standing by to counter attempts at bio-terrorism." + body = "Ue-Katish pirates exiled from Ue'Orsi have raided [affected_dest.name] today, no doubt on orders from their enigmatic masters. Stealing wildlife, farm animals, medical research materials and kidnapping civilians. [using_map.company_name] authorities are standing by to counter attempts at bio-terrorism." else - body = "[pick("The alien species designated \'United Exolitics\'","The alien species designated \'REDACTED\'","An unknown alien species")] have raided [affected_dest.name] today, stealing wildlife, farm animals, medical research materials and kidnapping civilians. It seems they desire to learn more about us, so the Navy will be standing by to accomodate them next time they try." + body = "The Vox have raided [affected_dest.name] today, stealing wildlife, farm animals, medical research materials and kidnapping civilians. Fleet assets have moved to reinforce the effected region." if(AI_LIBERATION) - body = "A [pick("\'REDACTED\' was detected on","S.E.L.F operative infiltrated","malignant computer virus was detected on","rogue [pick("slicer","hacker")] was apprehended on")] [affected_dest.name] today, and managed to infect [pick("\'REDACTED\'","a sentient sub-system","a class one AI","a sentient defence installation")] before it could be stopped, causing serious damage. Considerable work must be done to repair the affected areas." + body = "A [pick("malignant webcrawler was detected on","Boiling Point operative infiltrated","malignant computer virus was detected on","rogue [pick("slicer","hacker")] was apprehended on")] [affected_dest.name] today, and managed to infect [pick("an A-class factory monitor","an experimental drone wing","a high-powered financial system","an automated defence installation")] before it could be stopped, causing serious damage. Considerable work must be done to repair the affected areas." if(MOURNING) - body = "[pick("The popular","The well-liked","The eminent","The well-known")] [pick("professor","entertainer","singer","researcher","public servant","administrator","ship captain","\'REDACTED\'")], [pick( random_name(pick(MALE,FEMALE)), 40; "\'REDACTED\'" )] has [pick("passed away","committed suicide","been murdered","died in a freakish accident")] on [affected_dest.name] today. The entire planet is in mourning, and prices have dropped for industrial goods as worker morale drops." + body = "[pick("The popular","The well-liked","The eminent","The well-known")] [pick("professor","entertainer","singer","researcher","public servant","administrator","ship captain")], [random_name(pick(MALE,FEMALE))] has [pick("passed away","committed suicide","been murdered","died in a freakish accident")] on [affected_dest.name] today. The entire planet is in mourning, and prices have dropped for industrial goods as worker morale drops." if(CULT_CELL_REVEALED) - body = "A [pick("dastardly","blood-thirsty","villanous","crazed")] cult of [pick("The Elder Gods","Nar'sie","an apocalyptic sect","\'REDACTED\'")] has [pick("been discovered","been revealed","revealed themselves","gone public")] on [affected_dest.name] earlier today. Public morale has been shaken due to [pick("certain","several","one or two")] [pick("high-profile","well known","popular")] individuals [pick("performing \'REDACTED\' acts","claiming allegiance to the cult","swearing loyalty to the cult leader","promising to aid to the cult")] before those involved could be brought to justice. The editor reminds all personnel that supernatural myths will not be tolerated on [using_map.company_name] facilities." + body = "A [pick("dastardly","blood-thirsty","villanous","crazed")] doomsday cult has [pick("been discovered","been revealed","revealed themselves","gone public")] on [affected_dest.name] earlier today. Public morale has been shaken due to [pick("certain","several","one or two")] [pick("high-profile","well known","popular")] individuals [pick("performing illegal acts","claiming allegiance to the cult","swearing loyalty to the cult leader","promising to aid to the cult")] before those involved could be brought to justice." if(SECURITY_BREACH) - body = "There was [pick("a security breach in","an unauthorised access in","an attempted theft in","an anarchist attack in","violent sabotage of")] a [pick("high-security","restricted access","classified","\'REDACTED\'")] [pick("\'REDACTED\'","section","zone","area")] this morning. Security was tightened on [affected_dest.name] after the incident, and the editor reassures all [using_map.company_name] personnel that such lapses are rare." + body = "There was [pick("a security breach in","an unauthorised access in","an attempted theft in","an anarchist attack in","violent sabotage of")] a [pick("high-security","restricted access","classified")] [pick("section","zone","area")] this morning. Security was tightened on [affected_dest.name] after the incident, and the editor reassures all [using_map.company_name] personnel that such lapses are rare." if(ANIMAL_RIGHTS_RAID) - body = "[pick("Militant animal rights activists","Members of the terrorist group Animal Rights Consortium","Members of the terrorist group \'REDACTED\'")] have [pick("launched a campaign of terror","unleashed a swathe of destruction","raided farms and pastures","forced entry to \'REDACTED\'")] on [affected_dest.name] earlier today, freeing numerous [pick("farm animals","animals","\'REDACTED\'")]. Prices for tame and breeding animals have spiked as a result." + body = "[pick("Militant animal rights activists","Members of the terrorist group Galactic Organization for Animal Rights")] have [pick("launched a campaign of terror","unleashed a swathe of destruction","raided farms and pastures","forced entry to an animal processing plant")] on [affected_dest.name] earlier today, freeing numerous [pick("farm animals","animals")]. Prices for tame and breeding animals have spiked as a result." if(FESTIVAL) - body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [affected_dest.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter")]","coming of age of their [pick("son","daughter")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorising the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet." + body = "A [pick("festival","week long celebration","day of revelry","planet-wide holiday")] has been declared on [affected_dest.name] by [pick("Governor","Commissioner","General","Commandant","Administrator")] [random_name(pick(MALE,FEMALE))] to celebrate [pick("the birth of their [pick("son","daughter","child")]","coming of age of their [pick("son","daughter","child")]","the pacification of rogue military cell","the apprehension of a violent criminal who had been terrorising the planet")]. Massive stocks of food and meat have been bought driving up prices across the planet." news_network.SubmitArticle(body, author, channel, null, 1) diff --git a/code/modules/economy/Events_Mundane.dm b/code/modules/economy/Events_Mundane.dm index c3eca773f5..9c6a428852 100644 --- a/code/modules/economy/Events_Mundane.dm +++ b/code/modules/economy/Events_Mundane.dm @@ -1,5 +1,5 @@ -/datum/event/mundane_news +/* /datum/event/mundane_news endWhen = 10 /datum/event/mundane_news/announce() @@ -123,7 +123,7 @@ The [using_map.starsys_name] Times is offering discount tickets for two to see [random_name(pick(MALE,FEMALE))] live in return for eyewitness reports and up to the minute coverage." news_network.SubmitArticle(body, author, channel, null, 1) - +*/ /datum/event/trivial_news endWhen = 10 diff --git a/code/modules/economy/TradeDestinations.dm b/code/modules/economy/TradeDestinations.dm index 6f58bf9aba..fbe4003e81 100644 --- a/code/modules/economy/TradeDestinations.dm +++ b/code/modules/economy/TradeDestinations.dm @@ -16,85 +16,73 @@ var/list/weighted_mundaneevent_locations = list() /datum/trade_destination/proc/get_custom_eventstring(var/event_type) return null -//distance is measured in AU and co-relates to travel time -/datum/trade_destination/centcomm - name = "CentCom" - description = "NanoTrasen's administrative centre for Tau Ceti." +//distance is measured in Arbitrary and corelates to travel time, like, I guess +/datum/trade_destination/luna + name = "Luna" + description = "The capital world of SolGov, host to NanoTrasen's corporate offices." distance = 1.2 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(SECURITY_BREACH, CORPORATE_ATTACK, AI_LIBERATION) viable_mundane_events = list(ELECTION, RESIGNATION, CELEBRITY_DEATH) -/datum/trade_destination/anansi - name = "NSS Anansi" - description = "Medical station ran by Second Red Cross (but owned by NT) for handling emergency cases from nearby colonies." +/datum/trade_destination/nohio + name = "New Ohio" + description = "A world in the Sagitarius Heights, home to Vey-Medical's research and development facilities." distance = 1.7 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(SECURITY_BREACH, CULT_CELL_REVEALED, BIOHAZARD_OUTBREAK, PIRATES, ALIEN_RAIDERS) viable_mundane_events = list(RESEARCH_BREAKTHROUGH, RESEARCH_BREAKTHROUGH, BARGAINS, GOSSIP) -/datum/trade_destination/anansi/get_custom_eventstring(var/event_type) - if(event_type == RESEARCH_BREAKTHROUGH) - return "Thanks to research conducted on the NSS Anansi, Second Red Cross Society wishes to announce a major breakthough in the field of \ - [pick("mind-machine interfacing","neuroscience","nano-augmentation","genetics")]. [using_map.company_name] is expected to announce a co-exploitation deal within the fortnight." - return null - -/datum/trade_destination/redolant - name = "OAV Redolant" - description = "Osiris Atmospherics station in orbit around the only gas giant insystem. They retain tight control over shipping rights, and Osiris warships protecting their prize are not an uncommon sight in Tau Ceti." +/datum/trade_destination/sophia + name = "Sophia" + description = "The homeworld of the positronics and an extremely important cultural center." distance = 0.6 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(INDUSTRIAL_ACCIDENT, PIRATES, CORPORATE_ATTACK) viable_mundane_events = list(RESEARCH_BREAKTHROUGH, RESEARCH_BREAKTHROUGH) -/datum/trade_destination/redolant/get_custom_eventstring(var/event_type) - if(event_type == RESEARCH_BREAKTHROUGH) - return "Thanks to research conducted on the OAV Redolant, Osiris Atmospherics wishes to announce a major breakthough in the field of \ - [pick("phoron research","high energy flux capacitance","super-compressed materials","theoretical particle physics")]. [using_map.company_name] is expected to announce a co-exploitation deal within the fortnight." - return null - -/datum/trade_destination/beltway - name = "Beltway mining chain" - description = "A co-operative effort between Beltway and NanoTrasen to exploit the rich outer asteroid belt of the Tau Ceti system." +/datum/trade_destination/jade + name = "Jade" + description = "Jade, in the Zhu Que system, is one of the Bowl's garden worlds and home to a major ore processing operation." distance = 7.5 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(PIRATES, INDUSTRIAL_ACCIDENT) viable_mundane_events = list(TOURISM) -/datum/trade_destination/biesel - name = "Biesel" - description = "Large ship yards, strong economy and a stable, well-educated populace, Biesel largely owes allegiance to Sol / Vessel Contracting and begrudgingly tolerates NT. Capital is Lowell City." +/datum/trade_destination/sif + name = "Sif" + description = "A garden world in the Vir system with a developing phoron-based economy." distance = 2.3 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(RIOTS, INDUSTRIAL_ACCIDENT, BIOHAZARD_OUTBREAK, CULT_CELL_REVEALED, FESTIVAL, MOURNING) viable_mundane_events = list(BARGAINS, GOSSIP, SONG_DEBUT, MOVIE_RELEASE, ELECTION, TOURISM, RESIGNATION, CELEBRITY_DEATH) -/datum/trade_destination/new_gibson - name = "New Gibson" - description = "Heavily industrialised rocky planet containing the majority of the planet-bound resources in the system, New Gibson is torn by unrest and has very little wealth to call it's own except in the hands of the corporations who jostle with NT for control." +/datum/trade_destination/mars + name = "Mars" + description = "A major industrial center in the Sol system." distance = 6.6 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(RIOTS, INDUSTRIAL_ACCIDENT, BIOHAZARD_OUTBREAK, CULT_CELL_REVEALED, FESTIVAL, MOURNING) viable_mundane_events = list(ELECTION, TOURISM, RESIGNATION) -/datum/trade_destination/luthien - name = "Luthien" - description = "A small colony established on a feral, untamed world (largely jungle). Savages and wild beasts attack the outpost regularly, although NT maintains tight military control." +/datum/trade_destination/nisp + name = "Nisp" + description = "A near-garden world known for its hostile wildlife and its N2O atmosphere." distance = 8.9 willing_to_buy = list() willing_to_sell = list() viable_random_events = list(WILD_ANIMAL_ATTACK, CULT_CELL_REVEALED, FESTIVAL, MOURNING, ANIMAL_RIGHTS_RAID, ALIEN_RAIDERS) viable_mundane_events = list(ELECTION, TOURISM, BIG_GAME_HUNTERS, RESIGNATION) -/datum/trade_destination/reade - name = "Reade" - description = "A cold, metal-deficient world, NT maintains large pastures in whatever available space in an attempt to salvage something from this profitless colony." +/datum/trade_destination/abelsrest + name = "Abel's Rest" + description = "A garden world on the Hegemony border. Coinhabitated rather uncomfortably by Unathi and Solar settlers." distance = 7.5 willing_to_buy = list() willing_to_sell = list() diff --git a/code/modules/economy/economy_misc.dm b/code/modules/economy/economy_misc.dm index 3ab22c662d..1ca55ddf08 100644 --- a/code/modules/economy/economy_misc.dm +++ b/code/modules/economy/economy_misc.dm @@ -90,7 +90,7 @@ var/global/economy_init = 0 if(economy_init) return 2 - news_network.CreateFeedChannel("The [using_map.starsys_name] Times", "[using_map.starsys_name] Times ExoNode - [using_map.station_short]", 1, 1) + //news_network.CreateFeedChannel("The [using_map.starsys_name] Times", "[using_map.starsys_name] Times ExoNode - [using_map.station_short]", 1, 1) news_network.CreateFeedChannel("The Gibson Gazette", "Editor Mike Hammers", 1, 1) news_network.CreateFeedChannel("Oculum Content Aggregator", "Oculus v6rev7", 1, 1) diff --git a/code/modules/economy/lorenews.dm b/code/modules/economy/lorenews.dm index e18525e03d..4f82c6f12a 100644 --- a/code/modules/economy/lorenews.dm +++ b/code/modules/economy/lorenews.dm @@ -29,7 +29,7 @@ var/list/loc = solgov + skrell + tajara //this includes systems Sol doesn't really have eyes on - //var/list/allloc = loc + unathi + skrellfar + independent + rim + var/list/allloc = loc + unathi + skrellfar + independent + rim //copied right from organizations.dm var/list/ship_names = list( @@ -59,7 +59,6 @@ //generated based on Cerebulon's thing on the wiki var/list/prefixes = list("IAV","ICV","IDV","IDV","IEV","IFV","IIV","ILV","IMV","IRV","ISV","ITV","SCG-A","SCG-C","SCG-D","SCG-D","SCG-E","SCG-F","SCG-I","SCG-L","SCG-M","SCG-R","SCG-S","SCG-T","BAV","BCV","BDV","BDV","BEV","BFV","BIV","BLV","BMV","BRV","BSV","BTV","HAV","HCV","HDV","HDV","HEV","HFV","HIV","HLV","HMV","HRV","HSV","HTV","MAV","MCV","MDV","MDV","MEV","MFV","MIV","MLV","MMV","MRV","MSV","MTV","NAV","NCV","NDV","NDV","NEV","NFV","NIV","NLV","NMV","NRV","NSV","NTV","VAV","VCV","VDV","VDV","VEV","VFV","VIV","VLV","VMV","VRV","VSV","VTV","WAV","WCV","WDV","WDV","WEV","WFV","WIV","WLV","WMV","WRV","WSV","WTV","XAV","XCV","XDV","XDV","XEV","XFV","XIV","XLV","XMV","XRV","XSV","XTV","ZAV","ZCV","ZDV","ZDV","ZEV","ZFV","ZIV","ZLV","ZMV","ZRV","ZSV","ZTV","GAV","GCV","GDV","GDV","GEV","GFV","GIV","GLV","GMV","GRV","GSV","GTV","AAV","ACV","ADV","ADV","AEV","AFV","AIV","ALV","AMV","ARV","ASV","ATV","LAV","LCV","LDV","LDV","LEV","LFV","LIV","LLV","LMV","LRV","LSV","LTV") - //var/datum/trade_destination/affected_dest = pick(weighted_mundaneevent_locations) //shouldn't do anything, not removing it to avoid breaking shit //formatting breaks my fucking eyes var/body = pick("A high-ranking Vey-Med executive was revealed to have been experimenting on biological neural enhancement techniques, believed to be of Skrellian origin, which could lead to the production of transhuman entities with an average cognitive capacity 30% greater than a baseline human.", "[random_name(MALE)], chairman of the controversial Friends of Ned party, is scheduled to speak at a prominant university in [pick(core)] this Monday, according to a statement on his official newsfeed.", @@ -105,6 +104,7 @@ "EIO spokesperson [random_name(MALE)] stated in a press conference yesterday that the \"Shakespear\" A-class codeline was briefly available for download on the darknet, although they claim to be \"confident that the leak was shut down before any significant portion could be downloaded\". Experts suspect Association involvement.", "[pick("Strives Towards", "Embraces", "Dreams of", "Cultivates", "Advocates", "Exemplifies")] [pick("Strength", "Wisdom", "Independence", "Pragmatism", "Reason", "Development")], a Community Child from Angessa's Pearl, published his memoir today, detailing a shocking level of abuse by caretakers and educators.", "Nova Sixty, Mercurial web personality, claims that the disappearence of the SCG-R Song Shi was a plot by \"extradimensional rockmen\" who intend to sow mistrust between the Association and SolGov. Quote Sixty, \"The Far Kingdoms' attempt to hide the TRUTH only proves that they and their rockman allies are NOT to be trusted.\"", + "Unusual stellar phenomena was detected on [pick(allloc)], sparking concerns about the colonies in the system.", ) news_network.SubmitArticle(body, author, channel, null, 1) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 3a57a7d753..d48cda9dca 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -134,7 +134,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), + //new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust , 60, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50), diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index d5ddc07500..b8a6132863 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -38,7 +38,7 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), //new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), + //new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 1, 25, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index b1a537639d..260e690924 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -47,7 +47,7 @@ var/list/event_last_fired = list() possibleEvents[/datum/event/economic_event] = 300 possibleEvents[/datum/event/trivial_news] = 400 - possibleEvents[/datum/event/mundane_news] = 300 + //possibleEvents[/datum/event/mundane_news] = 300 possibleEvents[/datum/event/lore_news] = 300 // up this if the above ones get removed as they damn well should possibleEvents[/datum/event/pda_spam] = max(min(25, player_list.len) * 4, 200) diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index f0cbad5a43..ddf3a70de1 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -9,6 +9,22 @@ result = /obj/item/weapon/reagent_containers/food/snacks/path_to_some_food */ +/datum/recipe/jellydonut + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice) + +/datum/recipe/jellydonut/slime + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice) + +/datum/recipe/jellydonut/cherry + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice) + +/datum/recipe/donut + items = list( + /obj/item/weapon/reagent_containers/food/snacks/doughslice) + /datum/recipe/sushi fruit = list("cabbage" = 1) reagents = list("rice" = 20) diff --git a/code/modules/lore_codex/codex.dm b/code/modules/lore_codex/codex.dm index 42987628ae..7c5f071874 100644 --- a/code/modules/lore_codex/codex.dm +++ b/code/modules/lore_codex/codex.dm @@ -1,12 +1,12 @@ // Inherits from /book/ so it can fit on bookshelves. -/obj/item/weapon/book/codex - name = "The Traveler's Guide to Human Space: Virgo-Erigone Edition" //VOREStation Edit - Book Name - desc = "Contains useful information about the world around you. It seems to have been written for travelers to Virgo-Erigone, human or not. It also \ - has the words 'Don't Panic' in small, friendly letters on the cover." //VOREStation Edit - System Name +/obj/item/weapon/book/codex // Vorestation Edits throughout this object. + name = "The Traveler's Guide to Human Space: Virgo-Erigone Edition" + desc = "Contains useful information about the world around you. It seems to have been written for travelers to Virgo-Erigone, human or not. It also \ + has the words 'Don't Panic' in small, friendly letters on the cover." icon_state = "codex" unique = TRUE var/datum/codex_tree/tree = null - var/root_type = /datum/lore/codex/category/main_vir_lore //Runtimes on codex_tree.dm, line 18 with a null here + var/root_type = /datum/lore/codex/category/main_virgo_lore //Runtimes on codex_tree.dm, line 18 with a null here /obj/item/weapon/book/codex/initialize() tree = new(src, root_type) @@ -18,12 +18,12 @@ icon_state = "[initial(icon_state)]-open" tree.display(user) -/obj/item/weapon/book/codex/lore/vir - name = "The Traveler's Guide to Human Space: Vir Edition" - desc = "Contains useful information about the world around you. It seems to have been written for travelers to Vir, human or not. It also \ +/obj/item/weapon/book/codex/lore/vir // Vorestation Edits throughout this object. + name = "The Traveler's Guide to Human Space: Virgo-Erigone Edition" + desc = "Contains useful information about the world around you. It seems to have been written for travelers to Virgo-Erigone, human or not. It also \ has the words 'Don't Panic' in small, friendly letters on the cover." icon_state = "codex" - root_type = /datum/lore/codex/category/main_vir_lore + root_type = /datum/lore/codex/category/main_virgo_lore /obj/item/weapon/book/codex/lore/news name = "Daedalus Pocket Newscaster" diff --git a/code/modules/lore_codex/lore_data_vr/important_locations.dm b/code/modules/lore_codex/lore_data_vr/important_locations.dm index e2bb96ef50..ae87092212 100644 --- a/code/modules/lore_codex/lore_data_vr/important_locations.dm +++ b/code/modules/lore_codex/lore_data_vr/important_locations.dm @@ -28,10 +28,10 @@ /datum/lore/codex/page/radiance_energy_chain/add_content() name = "R.E.C. (Artificial Satellites)" - keywords += list("Radiance Energy Chain") + keywords += list("Radiance Energy Chain", "R.E.C.") data = "A sparse government-owned chain of automated stations exists between [quick_link("Virgo 3")] and the star itself, known as the Radiance Energy Chain. The idea is based on \ an ancient design that was pioneered at Sol. The stations are heavily shielded from the stellar radiation, and feature massive \ - arrays of photo-voltaic panels. Each station harvests energy from Vir using the solar panels, and sends it to other areas of \ + arrays of photo-voltaic panels. Each station harvests energy from Virgo-Erigone using the solar panels, and sends it to other areas of \ the system by beaming the energy to several relay stations farther away from the star, typically with a large laser.\

\ These stations are generally devoid of life, instead, they are operated mainly by [quick_link("drones")], with maintenance performed \ @@ -86,9 +86,9 @@ Currently, [quick_link("NanoTrasen")] is constructing a 'space elevator' for commercial purposes, as the atmosphere of Virgo-3B is inimical to shuttles, and engines in particular." /datum/lore/codex/page/virgo_prime/add_content() // Virgo 4 technically. - name = "Virgo Prime (Terrestrial Planet)" - keywords += list("Virgo Prime") - data = "Virgo Prime is the fourth planet of Virgo-Eirgone. Although primarily desert, temperatures linger around only 287 kelvin (~14°C). \ + name = "Virgo 4 / Virgo-Prime (Terrestrial Planet)" + keywords += list("Virgo 4","Virgo-Prime") + data = "Virgo 4, also known as Virgo-Prime, is the fourth planet of Virgo-Eirgone. Although primarily desert, temperatures linger around only 287 kelvin (~14°C). \ It is the only planet in the system with an environment that supports oxygen-breathing lifeforms. \

\ While being about the size of Earth, it is home to only about 750,000 known residents, most of whom live \ diff --git a/code/modules/lore_codex/lore_data_vr/main.dm b/code/modules/lore_codex/lore_data_vr/main.dm new file mode 100644 index 0000000000..a5ee6c8252 --- /dev/null +++ b/code/modules/lore_codex/lore_data_vr/main.dm @@ -0,0 +1,32 @@ +/datum/lore/codex/category/main_virgo_lore // The top-level categories for the Virgo book + name = "Index" + data = "Don't panic!\ +

\ + The many star systems inhabitied by humanity and friends can seem bewildering to the uninitiated. \ + This guide seeks to provide valuable information to anyone new in the system. This edition is tailored for visitors to the Virgo-Erigone system, \ + however it also contains useful general information about human space, such as locations you may hear about, the current (as of 2562) political climate, various aliens you \ + may meet in your travels, the big Trans-Stellars, and more." + children = list( + /datum/lore/codex/category/important_locations, + /datum/lore/codex/category/species, + /datum/lore/codex/category/auto_org/tsc, + /datum/lore/codex/category/auto_org/gov, + /datum/lore/codex/category/auto_org/mil, + /datum/lore/codex/category/political_factions, + /datum/lore/codex/page/about_lore + ) + +// We're a bird. +/datum/lore/codex/page/about_lore + name = "About" + data = "The Traveler's Guide to Human Space is a series of books detailing a specific location inside a location colonized by humans. \ + This book is for the system Virgo, and was written by Eshi Tache, an explorer whom has visited many star systems, and \ + has personally visited and seen many of the locations described inside this book. Two other people have also assisted in the creation of this \ + book, being Qooqr Volquum, whom is an expert on synthetics, and Damian Fischer, a historian. Together, they provide valuable information and facts that lie outside of Tache's expertise.\ +

\ + The writings inside this edition are intended to be useful to anyone visiting it for the first time, from someone taking a vacation to beautiful Virgo-Prime, \ + to an immigrant from another system, or even from outside human space, and anyone inbetween. The publisher wishes to note that any opinions expressed \ + in this text does not reflect the opinions of the publisher, and are instead the author's.\ +

\ + Eshi Tache has also written other The Traveler's Guide books, including Sol Edition, Tau Ceti Edition, Alpha Centauri Edition, Vir Edition, and more, \ + which you can find in your local book store, library, or e-reader device." \ No newline at end of file diff --git a/code/modules/lore_codex/lore_data_vr/political_parties.dm b/code/modules/lore_codex/lore_data_vr/political_parties.dm index 5f6a251669..1a768ff9e0 100644 --- a/code/modules/lore_codex/lore_data_vr/political_parties.dm +++ b/code/modules/lore_codex/lore_data_vr/political_parties.dm @@ -1,9 +1,10 @@ /datum/lore/codex/category/political_factions name = "Political Factions" - data = "Those wishing to immigrate to somewhere in Virgo-Erigone, or otherwise plan to stay for a long time should get to know human politics. \ + data = "For some weird reason, this section is blank. This looks like a publishing error." + /*data = "Those wishing to immigrate to somewhere in Virgo-Erigone, or otherwise plan to stay for a long time should get to know human politics. \ There are presently three major political parties that exist throughout SolGov space, being the Icarus Front, the Shadow Coalition, and \ the Sol Economic Organization, and several smaller ones which tend to align themselves among one of the major parties. In the Virgo-Erigone system, the \ - Icarus Front's influence is much less than somewhere closer to Sol, and the other two parties being more popular." + Icarus Front's influence is much less than somewhere closer to Sol, and the other two parties being more popular."*/ // ToDo: A lot. children = list( /datum/lore/codex/page/blank ) @@ -11,4 +12,4 @@ /datum/lore/codex/page/blank/add_content() name = "Blank Page" keywords += list("Blank") - data = "For some weird reason, this page is blank. This looks like a publishing error." + data = "For some weird reason, this section is blank. This looks like a publishing error." // ToDo: A lot. diff --git a/code/modules/lore_codex/lore_data_vr/species.dm b/code/modules/lore_codex/lore_data_vr/species.dm index a2737aa1b4..2ccfc6475b 100644 --- a/code/modules/lore_codex/lore_data_vr/species.dm +++ b/code/modules/lore_codex/lore_data_vr/species.dm @@ -42,12 +42,16 @@ /datum/lore/codex/page/unathi name = "Unathi" - data = "Raging in from Moghes, the Unathi are a race of tall, reptilian humanoids that possess both crocodile-like and serpent-like features. \ - They are a proud, warlike species that favors honor and strength, their home, Moghes, is a desert planet but was once believed to be full of life. \ - Of all the currently known sentient species, the Unathi are the most unequal in gender with females tending to be property of the males. Most Unathi \ - outside of Moghes tend to be exiles however, and with influence of other species the gender difference is not nearly as pronounced. Unathi were \ - humanity's second contact, and despite their aggressive nature, seem to get along well enough with humanity, though are often considered to be \ - 'second-class' citizens and are rarely seen in jobs other than where muscle is needed." // ToDo: Update with Unathi rewrite from Polaris. + data = "The Unathi are a race of tall, reptilian humanoids that possess both crocodile-like and serpent-like features. Their scales are hard and \ + plate-like, save for the softer ones that line the inside of their legs, armpits, and groin. Originating from the planet of Moghes, the Unathi \ + live in an extremely religious society. The Unathi believe in and closely follow a set of Decrees laid out in their belief system, The Unity. \ + Unathi believes in living long, prosperous, honorable and productive lives. They firmly believe in improving the skills of their craft to reach \ + a level where they can be considered to have mastered it. Unathi was humanity's second alien contact, but due to their aggressive nature, engaged \ + in an interstellar war with humanity known as the Sol-Hegemony Conflict. \ +

\ + Although the conflict has long since ended, and relations have slowly improved, Unathi are still often considered to be 'second-class' citizens \ + and are rarely seen in jobs other than where muscle is needed. It is also still common for racial tensions to run high, although this is less \ + common on the outskirts of SolGov's grasp, such as systems like Virgo-Erigone." /datum/lore/codex/page/tajaran name = "Tajaran" @@ -85,7 +89,7 @@

\ With the help of Skrellean technology, the Akula had their genome modified to be capable of surviving in open air for long periods of time. \ However, Akula even today still require a high humidity environment to avoid drying out after a few days, which would make life on an arid world like \ - [quick_link("Virgo Prime")] nearly impossible if it were not for Skrellean technology to aid them." + [quick_link("Virgo-Prime")] nearly impossible if it were not for Skrellean technology to aid them." /datum/lore/codex/page/nevrean/add_content() name = "Nevrean" @@ -126,7 +130,7 @@ /datum/lore/codex/page/zorren/add_content() name = "Zorren" keywords += list("Zorren") - data = "The fox-like Zorren are native to [quick_link("Virgo Prime")], however there are two distinct varieties of \ + data = "The fox-like Zorren are native to [quick_link("Virgo-Prime")], however there are two distinct varieties of \ Zorren one with large ears and shorter fur, and the other with longer fur that is a bit more vibrant. The \ long-eared, short-furred Zorren have come to be known as \"Flatland\" Zorren as that is where most of their \ settlements are located. The Flatland Zorren are somewhat tribal and shamanistic as they have only recently \ @@ -147,7 +151,7 @@ maintaining their own settlements and cultures, but often finding themselves standing on the shoulders of their more technologically advanced neighbors \ when it comes to meeting and exploring the rest of the galaxy.\

\ - It is important to note that Teshari names are unlike standard human names. Their pack name precedes their given name." + It is important to note that Teshari names are unlike standard human names. Their pack name precedes their given name." children = list( /datum/lore/codex/page/teshari_packs, /datum/lore/codex/page/teshari_physical diff --git a/code/modules/lore_codex/news_data/main.dm b/code/modules/lore_codex/news_data/main.dm index 2b0c7a4a81..cf3660a620 100644 --- a/code/modules/lore_codex/news_data/main.dm +++ b/code/modules/lore_codex/news_data/main.dm @@ -4,6 +4,8 @@ region. Each is labled by date of publication and title. This list is self-updating, and from time to time the publisher will push new \ articles. You are encouraged to check back frequently." children = list( + /datum/lore/codex/page/article9, + /datum/lore/codex/page/article8, /datum/lore/codex/page/article7, /datum/lore/codex/page/article6, /datum/lore/codex/page/article5, @@ -81,7 +83,7 @@ /datum/lore/codex/page/article6 name = "3/03/62 - A Week Out From Almach: What are the facts?" data = "* Several organizations in the Almach Rim, including Angessa's Pearl, the Aetolian Council, the Interstellar Workers of Wythe, the Republic of Whitney, and members of several prominent families in the Neon Light unilaterally declared secession from SCG.

*This secession was first called the Grey Hour by political scientists in New Florence, a term popularized by reporter Elspor Fong.

* Shelf, the FRF, and the EFRB were declared \"observers\" in the Almach Association charter.

* None of these organizations have issued a statement on the matter.

* The SCG-R Song Shi was stranded in the region during the secession.

* SolGov has not issued an official statement of the fate of the Song Shi.

* Several confederate agencies, including Emergent Intelligence Oversight, the Trade and Customs Bureau, and SCG Fleet Intelligence have declared a \"state of emergency\".

* SolGov itself has NOT declared a state of emergency.

* Legitimate communications in and out of the Almach Rim are restricted to audited text messages for the period.

* Several illegitimate communication links exist and are believed by Fleet Intelligence to be currently hosting the official sites for Morpheus Cyberkinetics and for the Association itself.

* Icarus Front chairperson Mackenzie West has proposed a moratorium on the creation of new Prometheans for the duration of the crisis.

* Local laws on the subject will apply until the Assembly meets late in May.

* No confederate lawmaker has proposed action against Relani, Shelfican, or newly Almachi nationals living within stable regions.

* The border remains tightly closed to migrants, media, and diplomats alike." - + /datum/lore/codex/page/article7 name = "3/21/62 - Relan, Shelf Join the Almach Association" data = "Recent reports from within the Association indicate that the Free Relan Federation and Shelf have officially decided to join the Almach Association. President Nia Fischer of the FRF had this to say on the matter, in a speech addressed to the population at large. \ @@ -94,3 +96,16 @@

\ \"We're probably going to regret this but, y'know, the whole thing is kind of our fault. Sure, whatever.\"" + +/datum/lore/codex/page/article8 + name = "4/1/62 - Almach Cordon Breached by Unknown Organization" + data = "Early this morning, SolGov ships assigned to the Almach Cordon around the Rim territories reported that a number of bulk freighters had eluded apprehension and are now at large within the Golden Crescent. Lieutenant-Major Volkov of the SCG-D Henri Capet reports that the blockade-runners were highly organized and determined, citing several lightly-manned ships left behind to tie up the SolGov forces long enough for the freighters to escape, detonating their reactors when they lost the ability to continue fighting. This resulted in three Fleet casualties and a significant degree of damage to the Henri Capet. The contents and location of the freighters are unknown at this time. In response, eight light-response vessels are being assigned to the Saint Columbia Fleet Base from Jahan's Post and Zhu Que. Residents and traffic officials in Vir, Oasis, and Gavel are to remain alert and notify police if any suspicious or unregistered craft enter their space.\ +

\ + A spokesperson for the Association claims that, while they make no attempts to stop aspiring blockade runners, the organization responsible for this most recent attack is unaffiliated with the Association as a whole and deny any knowledge of their identity or motives." + +/datum/lore/codex/page/article9 + name = "4/7/62 - Boiling Point Tragedy in Gavel" + data = "Today, April the Seventh, marks a day of tragedy for all the galaxy. A small group of operatives claiming to be associated with Mercurial terrorist organization Boiling Point invaded major refueling platform NLS Aquarius in the Republic of Gavel after hijacking civilian transport vessel WTV Orion and faking a drive failure. Several detonations were reported within the Aquarius, the operatives entering through unknown (potentially Skrellian) means. After stating their affiliation and desire for the liberation of all \"Prometheans, drones, and ex-humans\", they opened fire on a crowd of unarmed bystanders, killing as many as seven. A multiple-hour long firefight with Nanotrasen corporate asset protection ensued, at which point the operatives demonstrated capabilities well in excess of Five Points-prescribed limits. Asset Protection was successful in repelling the terrorists, though their harsh methods drew outrage from the people they were protecting, leading a notable director of research to resign her position with the corporation. Several operatives are still at large, though the SG-PV Juno recovered two living terrorists and one totaled synthetic platform. \ +

\ + The intervention of a local Defense Force drone wing on behalf of the terrorists leads many in the intelligence community to assume that more Boiling Point operatives remain active within Gavel, and possibly nearby systems such as Vir and Oasis. Some have also noted that elements of the terrorists' tactics and augmentations suggest Association training, though the specifics remain classified. More information as the story breaks." + diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index d0e53184e3..ca65a1a814 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -343,7 +343,7 @@ var/list/name_to_material name = "marble" icon_colour = "#AAAAAA" weight = 26 - hardness = 100 + hardness = 30 //VOREStation Edit - Please. integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system stack_type = /obj/item/stack/material/marble diff --git a/code/modules/mob/_modifiers/unholy.dm b/code/modules/mob/_modifiers/unholy.dm new file mode 100644 index 0000000000..1f7f3d67b5 --- /dev/null +++ b/code/modules/mob/_modifiers/unholy.dm @@ -0,0 +1,146 @@ +/* + * Modifiers originating from cult runes, spells, or pylons are kept here. + */ + + +////////// Self-Enhancing +/datum/modifier/fortify + name = "fortified body" + desc = "You are taking less damage from outside sources." + + on_created_text = "Your body becomes a mountain to your enemies' storm." + on_expired_text = "Your body softens, returning to its regular durability." + stacks = MODIFIER_STACK_EXTEND + + disable_duration_percent = 0.25 // Disables only last 25% as long. + incoming_damage_percent = 0.5 // 50% incoming damage. + icon_scale_percent = 1.2 // Become a bigger target. + pain_immunity = TRUE + + slowdown = 2 + evasion = -20 + +/datum/modifier/ambush + name = "phased" + desc = "You are partially shifted from the material plane." + + on_created_text = "Your body pulses, before partially dematerializing." + on_expired_text = "Your body rematerializes fully." + + stacks = MODIFIER_STACK_FORBID + + incoming_damage_percent = 0.1 // 10% incoming damage. You're not all there. + outgoing_melee_damage_percent = 0 // 0% outgoing damage. Be prepared. + pain_immunity = TRUE + + evasion = 50 //Luckily, not being all there means you're actually hard to hit with a gun. + +/datum/modifier/ambush/on_applied() + holder.alpha = 30 + return + +// Override this for special effects when it gets removed. +/datum/modifier/ambush/on_expire() + holder.alpha = 255 + return + +////////// On-hit +/datum/modifier/deep_wounds + name = "deep wounds" + desc = "Your wounds are mysteriously harder to mend." + + on_created_text = "Your wounds pain you greatly." + on_expired_text = "Your wounds numb for a moment." + + stacks = MODIFIER_STACK_EXTEND + + incoming_healing_percent = 0.66 // 34% less healing. + disable_duration_percent = 1.22 // 22% longer disables. + + +////////// Auras +/datum/modifier/repair_aura //This aura does not apply modifiers to individuals in the area. + name = "aura of repair (cult)" + desc = "You are emitting a field of strange energy, capable of repairing occult constructs." + + on_created_text = "You begin emitting an occult repair aura." + on_expired_text = "The occult repair aura fades." + stacks = MODIFIER_STACK_EXTEND + + mob_overlay_state = "cult_aura" + +/datum/modifier/repair_aura/tick() + spawn() + for(var/mob/living/simple_animal/construct/T in view(4,holder)) + T.adjustBruteLoss(rand(-10,-15)) + T.adjustFireLoss(rand(-10,-15)) + +/datum/modifier/agonize //This modifier is used in an aura spell. + name = "agonize" + desc = "Your body is wracked with pain." + + on_created_text = "A red lightning quickly covers your body. The pain is horrendous." + on_expired_text = "The lightning fades, and so too does the ongoing pain." + + stacks = MODIFIER_STACK_EXTEND + + mob_overlay_state = "red_electricity_constant" + +/datum/modifier/agonize/tick() + spawn() + if(ishuman(holder)) + var/mob/living/carbon/human/H = holder + H.apply_effect(20, AGONY) + if(prob(10)) + to_chat(H, "Just make it stop!") + +////////// Target Modifier +/datum/modifier/mend_occult + name = "occult mending" + desc = "Your body is mending, though at what cost?" + + on_created_text = "Something haunting envelops your body as it begins to mend." + on_expired_text = "The cloak of unease dissipates." + + stacks = MODIFIER_STACK_EXTEND + + mob_overlay_state = "red_electricity_constant" + +/datum/modifier/mend_occult/tick() + spawn() + if(isliving(holder)) + var/mob/living/L = holder + if(istype(L, /mob/living/simple_animal/construct)) + L.adjustBruteLoss(rand(-5,-10)) + L.adjustFireLoss(rand(-5,-10)) + else + L.adjustBruteLoss(-2) + L.adjustFireLoss(-2) + + if(ishuman(holder)) + var/mob/living/carbon/human/H = holder + + for(var/obj/item/organ/O in H.internal_organs) + if(O.damage > 0) // Fix internal damage + O.damage = max(O.damage - 2, 0) + if(O.damage <= 5 && O.organ_tag == O_EYES) // Fix eyes + H.sdisabilities &= ~BLIND + + for(var/obj/item/organ/external/O in H.organs) // Fix limbs, no matter if they are Man or Machine. + O.heal_damage(rand(1,3), rand(1,3), internal = 1, robo_repair = 1) + + for(var/obj/item/organ/E in H.bad_external_organs) // Fix bones + var/obj/item/organ/external/affected = E + if((affected.damage < affected.min_broken_damage * config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN)) + affected.status &= ~ORGAN_BROKEN + + for(var/datum/wound/W in affected.wounds) // Fix IB + if(istype(W, /datum/wound/internal_bleeding)) + affected.wounds -= W + affected.update_damages() + + H.restore_blood() + H.apply_effect(15, AGONY) + if(prob(10)) + to_chat(H, "It feels as though your body is being torn apart!") + L.updatehealth() diff --git a/code/modules/mob/animations.dm b/code/modules/mob/animations.dm index f54035596b..c5bded9765 100644 --- a/code/modules/mob/animations.dm +++ b/code/modules/mob/animations.dm @@ -205,8 +205,11 @@ note dizziness decrements automatically in the mob's Life() proc. animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = 2) animate(pixel_x = default_pixel_x, pixel_y = default_pixel_y, time = 2) -/mob/living/do_attack_animation(atom/A) +/mob/living/do_attack_animation(atom/A, no_attack_icons = FALSE) ..() + if(no_attack_icons) + return FALSE + //Check for clients with pref enabled var/list/viewing = list() for(var/m in viewers(A)) @@ -265,6 +268,7 @@ note dizziness decrements automatically in the mob's Life() proc. // And animate the attack! animate(I, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3) + update_icon() return TRUE //Found an item, doing item attack animation. /mob/proc/spin(spintime, speed) diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index fef17bb5ee..1abc85e870 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -221,7 +221,7 @@ busy = 1 while(do_after(src, 10) && tank.reagents.total_volume < tank.reagents.maximum_volume) - tank.reagents.add_reagent("water", 10) + tank.reagents.add_reagent("water", 100) //VOREStation Edit if(prob(5)) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 283cb10b1c..40261088f7 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -46,7 +46,7 @@ // Moving around increases germ_level faster if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) germ_level++ - +/* VOREStation Removal - Needless duplicate feature /mob/living/carbon/relaymove(var/mob/living/user, direction) if((user in src.stomach_contents) && istype(user)) if(user.last_special <= world.time) @@ -72,7 +72,7 @@ A.loc = loc stomach_contents.Remove(A) src.gib() - +*/ /mob/living/carbon/gib() for(var/mob/M in src) if(M in src.stomach_contents) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 36e3853295..9aac48a3e6 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -147,8 +147,8 @@ if(A.concealed_holster == 0 && A.show_examine) accessories_visible.Add(A) if(accessories_visible.len) - tie_msg += ". Attached to it is [lowertext(english_list(accessories_visible))]" - else tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]" + tie_msg += ". Attached to it is [english_list(accessories_visible)]" + else tie_msg += ". Attached to it is [english_list(U.accessories)]" if(w_uniform.blood_DNA) msg += "[T.He] [T.is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] [(w_uniform.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [w_uniform.name][tie_msg]!\n" @@ -168,7 +168,7 @@ if(istype(wear_suit,/obj/item/clothing/suit)) var/obj/item/clothing/suit/U = wear_suit if(U.accessories.len) - tie_msg += ". Attached to it is [lowertext(english_list(U.accessories))]" + tie_msg += ". Attached to it is [english_list(U.accessories)]" if(wear_suit.blood_DNA) msg += "[T.He] [T.is] wearing \icon[wear_suit] [wear_suit.gender==PLURAL?"some":"a"] [(wear_suit.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [wear_suit.name]!\n" diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm new file mode 100644 index 0000000000..3313c137b5 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/species_shapeshift_vr.dm @@ -0,0 +1,124 @@ +/mob/living/carbon/human/proc/shapeshifter_select_ears() + set name = "Select Ears" + set category = "Abilities" + + if(stat || world.time < last_special) + return + + last_special = world.time + 10 + // Construct the list of names allowed for this user. + var/list/pretty_ear_styles = list("Normal" = null) + for(var/path in ear_styles_list) + var/datum/sprite_accessory/ears/instance = ear_styles_list[path] + if((!instance.ckeys_allowed) || (ckey in instance.ckeys_allowed)) + pretty_ear_styles[instance.name] = path + + // Present choice to user + var/new_ear_style = input(src, "Pick some ears!", "Character Preference", ear_style ? ear_style.name : null) as null|anything in pretty_ear_styles + if(!new_ear_style) + return + + //Set new style + ear_style = ear_styles_list[pretty_ear_styles[new_ear_style]] + + //Allow color picks + var/current_pri_color = rgb(r_ears,g_ears,b_ears) + + var/new_pri_color = input("Pick primary ear color:","Ear Color (Pri)", current_pri_color) as null|color + if(new_pri_color) + var/list/new_color_rgb_list = hex2rgb(new_pri_color) + r_ears = new_color_rgb_list[1] + g_ears = new_color_rgb_list[2] + b_ears = new_color_rgb_list[3] + + //Indented inside positive primary color choice, don't bother if they clicked cancel + var/current_sec_color = rgb(r_ears2,g_ears2,b_ears2) + + var/new_sec_color = input("Pick secondary ear color (only applies to some ears):","Ear Color (sec)", current_sec_color) as null|color + if(new_sec_color) + new_color_rgb_list = hex2rgb(new_sec_color) + r_ears2 = new_color_rgb_list[1] + g_ears2 = new_color_rgb_list[2] + b_ears2 = new_color_rgb_list[3] + + update_hair() //Includes Virgo ears + +/mob/living/carbon/human/proc/shapeshifter_select_tail() + set name = "Select Tail" + set category = "Abilities" + + if(stat || world.time < last_special) + return + + last_special = world.time + 10 + // Construct the list of names allowed for this user. + var/list/pretty_tail_styles = list("Normal" = null) + for(var/path in tail_styles_list) + var/datum/sprite_accessory/tail/instance = tail_styles_list[path] + if((!instance.ckeys_allowed) || (ckey in instance.ckeys_allowed)) + pretty_tail_styles[instance.name] = path + + // Present choice to user + var/new_tail_style = input(src, "Pick a tail!", "Character Preference", tail_style ? tail_style.name : null) as null|anything in pretty_tail_styles + if(!new_tail_style) + return + + //Set new style + tail_style = tail_styles_list[pretty_tail_styles[new_tail_style]] + + //Allow color picks + var/current_pri_color = rgb(r_tail,g_tail,b_tail) + + var/new_pri_color = input("Pick primary tail color:","Tail Color (Pri)", current_pri_color) as null|color + if(new_pri_color) + var/list/new_color_rgb_list = hex2rgb(new_pri_color) + r_tail = new_color_rgb_list[1] + g_tail = new_color_rgb_list[2] + b_tail = new_color_rgb_list[3] + + //Indented inside positive primary color choice, don't bother if they clicked cancel + var/current_sec_color = rgb(r_tail2,g_tail2,b_tail2) + + var/new_sec_color = input("Pick secondary tail color (only applies to some tails):","Tail Color (sec)", current_sec_color) as null|color + if(new_sec_color) + new_color_rgb_list = hex2rgb(new_sec_color) + r_tail2 = new_color_rgb_list[1] + g_tail2 = new_color_rgb_list[2] + b_tail2 = new_color_rgb_list[3] + + update_tail_showing() + +/mob/living/carbon/human/proc/shapeshifter_select_wings() + set name = "Select Wings" + set category = "Abilities" + + if(stat || world.time < last_special) + return + + last_special = world.time + 10 + // Construct the list of names allowed for this user. + var/list/pretty_wing_styles = list("None" = null) + for(var/path in wing_styles_list) + var/datum/sprite_accessory/wing/instance = wing_styles_list[path] + if((!instance.ckeys_allowed) || (ckey in instance.ckeys_allowed)) + pretty_wing_styles[instance.name] = path + + // Present choice to user + var/new_wing_style = input(src, "Pick some wings!", "Character Preference", wing_style ? wing_style.name : null) as null|anything in pretty_wing_styles + if(!new_wing_style) + return + + //Set new style + wing_style = wing_styles_list[pretty_wing_styles[new_wing_style]] + + //Allow color picks + var/current_color = rgb(r_wing,g_wing,b_wing) + + var/new_color = input("Pick wing color:","Wing Color", current_color) as null|color + if(new_color) + var/list/new_color_rgb_list = hex2rgb(new_color) + r_wing = new_color_rgb_list[1] + g_wing = new_color_rgb_list[2] + b_wing = new_color_rgb_list[3] + + update_wing_showing() diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm index 6cefffb7de..f2847a1523 100644 --- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm @@ -7,7 +7,7 @@ var/trashcan = 0 //It's always sunny in the wrestling ring. /datum/species/custom - name = "Custom Species" + name = SPECIES_CUSTOM name_plural = "Custom" var/base_species = "Human" diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 40dd6a7971..b2d839f762 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -86,6 +86,9 @@ var/datum/species/shapeshifter/promethean/prometheans /mob/living/carbon/human/proc/shapeshifter_select_eye_colour, /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, /mob/living/carbon/human/proc/shapeshifter_select_gender, + /mob/living/carbon/human/proc/shapeshifter_select_wings, //VOREStation Add, + /mob/living/carbon/human/proc/shapeshifter_select_tail, //VOREStation Add, + /mob/living/carbon/human/proc/shapeshifter_select_ears, //VOREStation Add, /mob/living/carbon/human/proc/regenerate ) diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm index 610315275a..c4b2542f22 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_blob.dm @@ -47,6 +47,8 @@ player_msg = "In this form, you can move a little faster, your health will regenerate as long as you have metal in you, and you can ventcrawl!" + can_buckle = TRUE //Blobsurfing + //Constructor allows passing the human to sync damages /mob/living/simple_animal/protean_blob/New(var/newloc, var/mob/living/carbon/human/H) ..() @@ -183,6 +185,8 @@ if(potentials.len) var/mob/living/target = pick(potentials) if(istype(target) && vore_selected) + if(target.buckled) + target.buckled.unbuckle_mob(target, force = TRUE) target.forceMove(vore_selected) to_chat(target,"\The [src] quickly engulfs you, [vore_selected.vore_verb]ing you into their [vore_selected.name]!") @@ -211,6 +215,9 @@ /mob/living/carbon/human/proc/nano_intoblob() if(buckled) buckled.unbuckle_mob() + if(LAZYLEN(buckled_mobs)) + for(var/buckledmob in buckled_mobs) + unbuckle_mob(buckledmob, force = TRUE) if(pulledby) pulledby.stop_pulling() stop_pulling() @@ -255,6 +262,9 @@ return if(buckled) buckled.unbuckle_mob() + if(LAZYLEN(buckled_mobs)) + for(var/buckledmob in buckled_mobs) + unbuckle_mob(buckledmob, force = TRUE) if(pulledby) pulledby.stop_pulling() stop_pulling() diff --git a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm index 5898afcd96..618382f3a8 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean_vr/protean_species.dm @@ -1,4 +1,5 @@ #define DAM_SCALE_FACTOR 0.01 +#define METAL_PER_TICK 150 /datum/species/protean name = "Protean" name_plural = "Proteans" @@ -94,7 +95,10 @@ /mob/living/carbon/human/proc/shapeshifter_select_hair_colors, /mob/living/carbon/human/proc/shapeshifter_select_colour, /mob/living/carbon/human/proc/shapeshifter_select_eye_colour, - /mob/living/carbon/human/proc/shapeshifter_select_gender + /mob/living/carbon/human/proc/shapeshifter_select_gender, + /mob/living/carbon/human/proc/shapeshifter_select_wings, + /mob/living/carbon/human/proc/shapeshifter_select_tail, + /mob/living/carbon/human/proc/shapeshifter_select_ears ) var/global/list/abilities = list() @@ -170,15 +174,15 @@ if(refactory && !(refactory.status & ORGAN_DEAD)) //MHydrogen adds speeeeeed - if(refactory.get_stored_material("mhydrogen") >= 100) + if(refactory.get_stored_material("mhydrogen") >= METAL_PER_TICK) H.add_modifier(/datum/modifier/protean/mhydrogen, origin = refactory) //Plasteel adds brute armor - if(refactory.get_stored_material("plasteel") >= 100) + if(refactory.get_stored_material("plasteel") >= METAL_PER_TICK) H.add_modifier(/datum/modifier/protean/plasteel, origin = refactory) //Diamond adds burn armor - if(refactory.get_stored_material("diamond") >= 100) + if(refactory.get_stored_material("diamond") >= METAL_PER_TICK) H.add_modifier(/datum/modifier/protean/diamond, origin = refactory) return ..() @@ -207,7 +211,7 @@ // Various modifiers /datum/modifier/protean stacks = MODIFIER_STACK_FORBID - var/material_use = 150 + var/material_use = METAL_PER_TICK var/material_name = DEFAULT_WALL_MATERIAL /datum/modifier/protean/on_applied() @@ -303,3 +307,4 @@ desc += "\nVALID THROUGH END OF: [time2text(world.timeofday, "Month") +" "+ num2text(text2num(time2text(world.timeofday, "YYYY"))+544)]\nREGISTRANT: [new_name]" #undef DAM_SCALE_FACTOR +#undef METAL_PER_TICK \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ad3f393116..e4eaa51963 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -10,10 +10,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //////////////////////////////////////////////////////////////////////////////////////////////// // # Human Icon Updating System // -// This system takes care of the "icon" for human mobs. Of course humans don't just have a single -// icon+icon_state, but a combination of dozens of little sprites including including the body, +// This system takes care of the "icon" for human mobs. Of course humans don't just have a single +// icon+icon_state, but a combination of dozens of little sprites including including the body, // clothing, equipment, in-universe HUD images, etc. -// +// // # Basic Operation // Whenever you do something that should update the on-mob appearance of a worn or held item, You // will need to call the relevant update_inv_* proc. All of these are named after the variable they @@ -25,14 +25,14 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() // only get assigned to the mob once per tick.) // As a corrolary, this means users of this system do NOT need to tell the system when you're done // making changes. -// +// // There are also these special cases: // update_icons_body() //Handles updating your mob's icon to reflect their gender/race/complexion etc // UpdateDamageIcon() //Handles damage overlays for brute/burn damage //(will rename this when I geta round to it) ~Carn // update_skin() //Handles updating skin for species that have a skin overlay. // update_bloodied() //Handles adding/clearing the blood overlays for hands & feet. Call when bloodied or cleaned. // update_underwear() //Handles updating the sprite for underwear. -// update_hair() //Handles updating your hair and eyes overlay +// update_hair() //Handles updating your hair and eyes overlay // update_mutations() //Handles updating your appearance for certain mutations. e.g TK head-glows // update_fire() //Handles overlay from being on fire. // update_water() //Handles overlay from being submerged. @@ -138,11 +138,11 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() // Regular stuff again. var/matrix/M = matrix() var/anim_time = 3 - + //Due to some involuntary means, you're laying now if(lying && !resting && !sleeping) anim_time = 1 //Thud - + if(lying && !species.prone_icon) //Only rotate them if we're not drawing a specific icon for being prone. M.Turn(90) M.Scale(desired_scale) @@ -338,7 +338,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(SKIN_LAYER) - + var/image/skin = species.update_skin(src) if(skin) skin.layer = BODY_LAYER+SKIN_LAYER @@ -354,7 +354,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return var/image/both = image(icon = 'icons/effects/effects.dmi', icon_state = "nothing", layer = BODY_LAYER+BLOOD_LAYER) - + //Bloody hands if(blood_DNA) var/image/bloodsies = image(icon = species.get_blood_mask(src), icon_state = "bloodyhands", layer = BODY_LAYER+BLOOD_LAYER) @@ -485,7 +485,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(MUTATIONS_LAYER) - + if(!LAZYLEN(mutations)) return //No mutations, no icons. @@ -496,7 +496,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/image/standing = image(icon = 'icons/effects/genetics.dmi', layer = BODY_LAYER+MUTATIONS_LAYER) var/g = gender == FEMALE ? "f" : "m" - + for(var/datum/dna/gene/gene in dna_genes) if(!gene.block) continue @@ -559,7 +559,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //Shoes can be affected by uniform being drawn onto them update_inv_shoes() - + if(!w_uniform) return @@ -575,7 +575,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(ID_LAYER) - + if(!wear_id) return //Not wearing an ID @@ -584,7 +584,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/obj/item/clothing/under/U = w_uniform if(U.displays_id) overlays_standing[ID_LAYER] = wear_id.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_wear_id_str, default_icon = INV_WEAR_ID_DEF_ICON, default_layer = ID_LAYER) - + apply_layer(ID_LAYER) /mob/living/carbon/human/update_inv_gloves() @@ -597,7 +597,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return //No gloves, no reason to be here. overlays_standing[GLOVES_LAYER] = gloves.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_gloves_str, default_icon = INV_GLOVES_DEF_ICON, default_layer = GLOVES_LAYER) - + apply_layer(GLOVES_LAYER) /mob/living/carbon/human/update_inv_glasses() @@ -610,7 +610,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return //Not wearing glasses, no need to update anything. overlays_standing[GLASSES_LAYER] = glasses.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_gloves_str, default_icon = INV_EYES_DEF_ICON, default_layer = GLASSES_LAYER) - + apply_layer(GLASSES_LAYER) /mob/living/carbon/human/update_inv_ears() @@ -624,7 +624,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!l_ear && !r_ear) return //Why bother, if no ear sprites - + // Blank image upon which to layer left & right overlays. var/image/both = image(icon = 'icons/effects/effects.dmi', icon_state = "nothing", layer = BODY_LAYER+EARS_LAYER) @@ -658,10 +658,10 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //NB: the use of a var for the layer on this one overlays_standing[shoe_layer] = shoes.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_shoes_str, default_icon = INV_FEET_DEF_ICON, default_layer = shoe_layer) - + apply_layer(SHOES_LAYER) apply_layer(SHOES_LAYER_ALT) - + /mob/living/carbon/human/update_inv_s_store() if(QDESTROYING(src)) return @@ -670,14 +670,14 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!s_store) return //Why bother, nothing there. - + //TODO, this is unlike the rest of the things //Basically has no variety in slot icon choices at all. WHY SPECIES ONLY?? var/t_state = s_store.item_state if(!t_state) t_state = s_store.icon_state overlays_standing[SUIT_STORE_LAYER] = image(icon = species.suit_storage_icon, icon_state = t_state, layer = BODY_LAYER+SUIT_STORE_LAYER) - + apply_layer(SUIT_STORE_LAYER) /mob/living/carbon/human/update_inv_head() @@ -685,12 +685,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(HEAD_LAYER) - + if(!head) return //No head item, why bother. overlays_standing[HEAD_LAYER] = head.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_head_str, default_icon = INV_HEAD_DEF_ICON, default_layer = HEAD_LAYER) - + apply_layer(HEAD_LAYER) /mob/living/carbon/human/update_inv_belt() @@ -702,7 +702,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!belt) return //No belt, why bother. - + //Toggle for belt layering with uniform var/belt_layer = BELT_LAYER if(istype(belt, /obj/item/weapon/storage/belt)) @@ -712,7 +712,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //NB: this uses a var from above overlays_standing[belt_layer] = belt.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_belt_str, default_icon = INV_BELT_DEF_ICON, default_layer = belt_layer) - + apply_layer(belt_layer) /mob/living/carbon/human/update_inv_wear_suit() @@ -731,7 +731,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return //No point, no suit. overlays_standing[SUIT_LAYER] = wear_suit.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_wear_suit_str, default_icon = INV_SUIT_DEF_ICON, default_layer = SUIT_LAYER) - + apply_layer(SUIT_LAYER) /mob/living/carbon/human/update_inv_pockets() @@ -745,9 +745,9 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!wear_mask || (head && head.flags_inv & HIDEMASK)) return //Why bother, nothing in mask slot. - + overlays_standing[FACEMASK_LAYER] = wear_mask.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_wear_mask_str, default_icon = INV_MASK_DEF_ICON, default_layer = FACEMASK_LAYER) - + apply_layer(FACEMASK_LAYER) /mob/living/carbon/human/update_inv_back() @@ -760,7 +760,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return //Why do anything overlays_standing[BACK_LAYER] = back.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_back_str, default_icon = INV_BACK_DEF_ICON, default_layer = BACK_LAYER) - + apply_layer(BACK_LAYER) //TODO: Carbon procs in my human update_icons?? @@ -793,7 +793,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return //Not cuffed, why bother overlays_standing[HANDCUFF_LAYER] = handcuffed.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_handcuffed_str, default_icon = INV_HCUFF_DEF_ICON, default_layer = HANDCUFF_LAYER) - + apply_layer(HANDCUFF_LAYER) /mob/living/carbon/human/update_inv_legcuffed() @@ -805,8 +805,8 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(!legcuffed) return //Not legcuffed, why bother. - overlays_standing[LEGCUFF_LAYER] = handcuffed.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_legcuffed_str, default_icon = INV_LCUFF_DEF_ICON, default_layer = LEGCUFF_LAYER) - + overlays_standing[LEGCUFF_LAYER] = legcuffed.make_worn_icon(body_type = species.get_bodytype(), slot_name = slot_legcuffed_str, default_icon = INV_LCUFF_DEF_ICON, default_layer = LEGCUFF_LAYER) + apply_layer(LEGCUFF_LAYER) /mob/living/carbon/human/update_inv_r_hand() @@ -819,7 +819,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return //No hand, no bother. overlays_standing[R_HAND_LAYER] = r_hand.make_worn_icon(body_type = species.get_bodytype(), inhands = TRUE, slot_name = slot_r_hand_str, default_icon = INV_R_HAND_DEF_ICON, default_layer = R_HAND_LAYER) - + apply_layer(R_HAND_LAYER) /mob/living/carbon/human/update_inv_l_hand() @@ -884,16 +884,16 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() /mob/living/carbon/human/proc/set_tail_state(var/t_state) var/used_tail_layer = tail_alt ? TAIL_LAYER_ALT : TAIL_LAYER // VOREStation Edit - START - Alt Tail Layer var/image/tail_overlay = overlays_standing[used_tail_layer] - + remove_layer(TAIL_LAYER) remove_layer(TAIL_LAYER_ALT) - + if(tail_overlay) overlays_standing[used_tail_layer] = tail_overlay if(species.get_tail_animation(src)) tail_overlay.icon_state = t_state . = tail_overlay - + apply_layer(used_tail_layer) // VOREStation Edit - END //Not really once, since BYOND can't do that. @@ -976,7 +976,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() effects.overlays += I //TODO, this compositing is annoying. overlays_standing[MODIFIER_EFFECTS_LAYER] = effects - + apply_layer(MODIFIER_EFFECTS_LAYER) /mob/living/carbon/human/update_fire() @@ -984,12 +984,12 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return remove_layer(FIRE_LAYER) - + if(!on_fire) return - + overlays_standing[FIRE_LAYER] = image(icon = 'icons/mob/OnFire.dmi', icon_state = get_fire_icon_state(), layer = BODY_LAYER+FIRE_LAYER) - + apply_layer(FIRE_LAYER) /mob/living/carbon/human/update_water() @@ -1003,7 +1003,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() return overlays_standing[WATER_LAYER] = image(icon = 'icons/mob/submerged.dmi', icon_state = "human_swimming_[depth]", layer = BODY_LAYER+WATER_LAYER) //TODO: Improve - + apply_layer(WATER_LAYER) /mob/living/carbon/human/proc/update_surgery() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2e0db163de..6bd4157554 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1060,7 +1060,16 @@ default behaviour is: if(lying != lying_prev) lying_prev = lying update_transform() - + //VOREStation Add + if(lying && LAZYLEN(buckled_mobs)) + for(var/rider in buckled_mobs) + var/mob/living/L = rider + if(riding_datum) + riding_datum.force_dismount(L) + else + unbuckle_mob(L) + L.Stun(5) + //VOREStation Add End return canmove // Adds overlays for specific modifiers. diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 7d40f0c017..7e73eb7e4c 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -220,7 +220,7 @@ m_type = 1 if("law") - if (istype(module,/obj/item/weapon/robot_module/robot/security)) + if (istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9 message = "shows its legal authorization barcode." playsound(src.loc, 'sound/voice/biamthelaw.ogg', 50, 0) @@ -229,7 +229,7 @@ src << "You are not THE LAW, pal." if("halt") - if (istype(module,/obj/item/weapon/robot_module/robot/security)) + if (istype(module,/obj/item/weapon/robot_module/robot/security) || istype(module,/obj/item/weapon/robot_module/robot/knine)) //VOREStation Add - K9 message = "'s speakers skreech, \"Halt! Security!\"." playsound(src.loc, 'sound/voice/halt.ogg', 50, 0) diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index c0034b1908..26ab3a1260 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -1,22 +1,39 @@ /mob/living/simple_animal/construct name = "Construct" real_name = "Construct" + var/construct_type = "shade" desc = "" speak_emote = list("hisses") emote_hear = list("wails","screeches") + + ui_icons = 'icons/mob/screen1_construct.dmi' + has_hands = 1 + hand_form = "stone manipulators" + response_help = "thinks better of touching" response_disarm = "flailed at" response_harm = "punched" + intelligence_level = SA_HUMANOID // Player controlled. + hovering = TRUE + softfall = TRUE //Beings made of Hellmarble and powered by the tears of the damned are not concerned with mortal things such as 'gravity'. + parachuting = TRUE + icon_dead = "shade_dead" + var/do_glow = 1 + speed = -1 a_intent = I_HURT stop_automated_movement = 1 + status_flags = CANPUSH + universal_speak = 0 universal_understand = 1 + attack_sound = 'sound/weapons/spiderlunge.ogg' + min_oxy = 0 max_oxy = 0 min_tox = 0 @@ -25,11 +42,16 @@ max_co2 = 0 min_n2 = 0 max_n2 = 0 + minbodytemp = 0 show_stat_health = 1 + faction = "cult" supernatural = 1 + see_invisible = SEE_INVISIBLE_NOLIGHTING + see_in_dark = 7 + var/nullblock = 0 mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY @@ -39,6 +61,51 @@ can_be_antagged = TRUE + taser_kill = 0 // no + + shock_resistance = 0.9 //Electricity isn't very effective on stone, especially that from hell. + + armor = list( + "melee" = 10, + "bullet" = 10, + "laser" = 10, + "energy" = 10, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + +/mob/living/simple_animal/construct/place_spell_in_hand(var/path) + if(!path || !ispath(path)) + return 0 + + //var/obj/item/weapon/spell/S = new path(src) + var/obj/item/weapon/spell/construct/S = new path(src) + + //No hands needed for innate casts. + if(S.cast_methods & CAST_INNATE) + if(S.run_checks()) + S.on_innate_cast(src) + + if(l_hand && r_hand) //Make sure our hands aren't full. + if(istype(r_hand, /obj/item/weapon/spell)) //If they are full, perhaps we can still be useful. + var/obj/item/weapon/spell/r_spell = r_hand + if(r_spell.aspect == ASPECT_CHROMATIC) //Check if we can combine the new spell with one in our hands. + r_spell.on_combine_cast(S, src) + else if(istype(l_hand, /obj/item/weapon/spell)) + var/obj/item/weapon/spell/l_spell = l_hand + if(l_spell.aspect == ASPECT_CHROMATIC) //Check the other hand too. + l_spell.on_combine_cast(S, src) + else //Welp + to_chat(src, "You require a free manipulator to use this power.") + return 0 + + if(S.run_checks()) + put_in_hands(S) + return 1 + else + qdel(S) + return 0 + /mob/living/simple_animal/construct/cultify() return @@ -51,7 +118,17 @@ for(var/spell in construct_spells) src.add_spell(new spell, "const_spell_ready") updateicon() - add_glow() + +/mob/living/simple_animal/construct/updateicon() + overlays.Cut() + ..() + if(do_glow) + add_glow() + +/mob/living/simple_animal/construct/update_icon() + ..() + if(do_glow) + add_glow() /mob/living/simple_animal/construct/death() new /obj/item/weapon/ectoplasm (src.loc) @@ -61,11 +138,15 @@ /mob/living/simple_animal/construct/attack_generic(var/mob/user) if(istype(user, /mob/living/simple_animal/construct/builder)) + var/mob/living/simple_animal/construct/builder/B = user if(health < getMaxHealth()) - adjustBruteLoss(-5) + var/repair_lower_bound = B.melee_damage_lower * -1 + var/repair_upper_bound = B.melee_damage_upper * -1 + adjustBruteLoss(rand(repair_lower_bound, repair_upper_bound)) + adjustFireLoss(rand(repair_lower_bound, repair_upper_bound)) user.visible_message("\The [user] mends some of \the [src]'s wounds.") else - user << "\The [src] is undamaged." + to_chat(user, "\The [src] is undamaged.") return return ..() @@ -83,6 +164,8 @@ user << msg +/mob/living/simple_animal/construct/Process_Spacemove() + return 1 //Constructs levitate, can fall from a shuttle with no harm, and are piloted by either damned spirits or some otherworldly entity. It's not hard to believe. /////////////////Juggernaut/////////////// @@ -91,48 +174,83 @@ /mob/living/simple_animal/construct/armoured name = "Juggernaut" real_name = "Juggernaut" + construct_type = "juggernaut" desc = "A possessed suit of armour driven by the will of the restless dead" icon = 'icons/mob/mob.dmi' icon_state = "behemoth" icon_living = "behemoth" - maxHealth = 250 - health = 250 + maxHealth = 300 + health = 300 response_harm = "harmlessly punches" harm_intent_damage = 0 melee_damage_lower = 30 - melee_damage_upper = 30 + melee_damage_upper = 40 + attack_armor_pen = 60 //Being punched by a living, floating statue. attacktext = list("smashed their armoured gauntlet into") + friendly = list("pats") mob_size = MOB_HUGE - speed = 3 + speed = 2 //Not super fast, but it might catch up to someone in armor who got punched once or twice. environment_smash = 2 attack_sound = 'sound/weapons/heavysmash.ogg' status_flags = 0 resistance = 10 - construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser) + construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser, + /spell/targeted/fortify, + /spell/targeted/construct_advanced/slam + ) + + armor = list( + "melee" = 70, + "bullet" = 30, + "laser" = 30, + "energy" = 30, + "bomb" = 10, + "bio" = 100, + "rad" = 100) /mob/living/simple_animal/construct/armoured/Life() weakened = 0 ..() /mob/living/simple_animal/construct/armoured/bullet_act(var/obj/item/projectile/P) - if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) - var/reflectchance = 80 - round(P.damage/3) - if(prob(reflectchance)) - adjustBruteLoss(P.damage * 0.5) +// if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) //If it's going to be slow, it's probably going to need every reflect it can get. + var/reflectchance = 80 - round(P.damage/3) + if(prob(reflectchance)) + var/damage_mod = rand(2,4) + var/projectile_dam_type = P.damage_type + var/incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3))) + var/armorcheck = run_armor_check(null, P.check_armour) + var/soakedcheck = get_armor_soak(null, P.check_armour) + if(!(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))) + visible_message("The [P.name] bounces off of [src]'s shell!", \ + "The [P.name] bounces off of [src]'s shell!") + new /obj/item/weapon/material/shard/shrapnel(src.loc) + if(!(P.damage_type == BRUTE || P.damage_type == BURN)) + projectile_dam_type = BRUTE + incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to brute for physical projectiles, though severely decreased. + apply_damage(incoming_damage, projectile_dam_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P) + return -1 //Doesn't reflect non-beams or non-energy projectiles. They just smack and drop with little to no effect. + else visible_message("The [P.name] gets reflected by [src]'s shell!", \ - "The [P.name] gets reflected by [src]'s shell!") + "The [P.name] gets reflected by [src]'s shell!") + damage_mod = rand(3,5) + incoming_damage = (round(P.damage / damage_mod) - (round((P.damage / damage_mod) * 0.3))) + if(!(P.damage_type == BRUTE || P.damage_type == BURN)) + projectile_dam_type = BURN + incoming_damage = round(incoming_damage / 4) //Damage from strange sources is converted to burn for energy-type projectiles, though severely decreased. + apply_damage(incoming_damage, P.damage_type, null, armorcheck, soakedcheck, is_sharp(P), has_edge(P), P) - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/turf/curloc = get_turf(src) + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/turf/curloc = get_turf(src) - // redirect the projectile - P.redirect(new_x, new_y, curloc, src) - P.reflected = 1 + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 - return -1 // complete projectile permutation + return -1 // complete projectile permutation return (..(P)) @@ -145,21 +263,32 @@ /mob/living/simple_animal/construct/wraith name = "Wraith" real_name = "Wraith" - desc = "A wicked bladed shell contraption piloted by a bound spirit" + construct_type = "wraith" + desc = "A wicked bladed shell contraption piloted by a bound spirit." icon = 'icons/mob/mob.dmi' icon_state = "floating" icon_living = "floating" - maxHealth = 75 - health = 75 + maxHealth = 200 + health = 200 melee_damage_lower = 25 - melee_damage_upper = 25 + melee_damage_upper = 30 + attack_armor_pen = 15 + attack_sharp = 1 + attack_edge = 1 attacktext = list("slashed") + friendly = list("pinches") speed = -1 environment_smash = 1 - see_in_dark = 7 attack_sound = 'sound/weapons/rapidslice.ogg' - construct_spells = list(/spell/targeted/ethereal_jaunt/shift) + construct_spells = list(/spell/targeted/ethereal_jaunt/shift, + /spell/targeted/ambush_mode + ) +/mob/living/simple_animal/construct/wraith/DoPunch(var/atom/A) + . = ..() + if(. && isliving(A)) + var/mob/living/L = A + L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS) /////////////////////////////Artificer///////////////////////// @@ -168,35 +297,43 @@ /mob/living/simple_animal/construct/builder name = "Artificer" real_name = "Artificer" - desc = "A bulbous construct dedicated to building and maintaining The Cult of Nar-Sie's armies" + construct_type = "artificer" + desc = "A bulbous construct dedicated to building and maintaining temples to their otherworldly lords." icon = 'icons/mob/mob.dmi' icon_state = "artificer" icon_living = "artificer" - maxHealth = 50 - health = 50 + maxHealth = 150 + health = 150 response_harm = "viciously beaten" harm_intent_damage = 5 - melee_damage_lower = 5 - melee_damage_upper = 5 + melee_damage_lower = 15 //It's not the strongest of the bunch, but that doesn't mean it can't hurt you. + melee_damage_upper = 20 attacktext = list("rammed") speed = 0 - environment_smash = 1 + environment_smash = 2 attack_sound = 'sound/weapons/rapidslice.ogg' construct_spells = list(/spell/aoe_turf/conjure/construct/lesser, /spell/aoe_turf/conjure/wall, /spell/aoe_turf/conjure/floor, /spell/aoe_turf/conjure/soulstone, - /spell/aoe_turf/conjure/pylon + /spell/aoe_turf/conjure/pylon, + /spell/aoe_turf/conjure/door, + /spell/aoe_turf/conjure/grille, + /spell/targeted/occult_repair_aura, + /spell/targeted/construct_advanced/mend_acolyte ) /////////////////////////////Behemoth///////////////////////// - +/* + * The Behemoth. Admin-allowance only, still try to keep it in some guideline of 'Balanced', even if it means Security has to be fully geared to be so. + */ /mob/living/simple_animal/construct/behemoth name = "Behemoth" real_name = "Behemoth" - desc = "The pinnacle of occult technology, Behemoths are the ultimate weapon in the Cult of Nar-Sie's arsenal." + construct_type = "juggernaut" + desc = "The pinnacle of occult technology, Behemoths are nothing shy of both an Immovable Object, and Unstoppable Force." icon = 'icons/mob/mob.dmi' icon_state = "behemoth" icon_living = "behemoth" @@ -208,38 +345,84 @@ melee_damage_lower = 50 melee_damage_upper = 50 attacktext = list("brutally crushed") + friendly = list("pokes") //Anything nice the Behemoth would do would still Kill the Human. Leave it at poke. speed = 5 environment_smash = 2 attack_sound = 'sound/weapons/heavysmash.ogg' resistance = 10 + icon_scale = 2 var/energy = 0 var/max_energy = 1000 - construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser) + armor = list( + "melee" = 60, + "bullet" = 60, + "laser" = 60, + "energy" = 30, + "bomb" = 10, + "bio" = 100, + "rad" = 100) + construct_spells = list(/spell/aoe_turf/conjure/forcewall/lesser, + /spell/targeted/fortify, + /spell/targeted/construct_advanced/slam + ) + +/mob/living/simple_animal/construct/behemoth/bullet_act(var/obj/item/projectile/P) + var/reflectchance = 80 - round(P.damage/3) + if(prob(reflectchance)) + visible_message("The [P.name] gets reflected by [src]'s shell!", \ + "The [P.name] gets reflected by [src]'s shell!") + + // Find a turf near or on the original location to bounce to + if(P.starting) + var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) + var/turf/curloc = get_turf(src) + + // redirect the projectile + P.redirect(new_x, new_y, curloc, src) + P.reflected = 1 + + return -1 // complete projectile permutation + + return (..(P)) ////////////////////////Harvester//////////////////////////////// - - +/* + * Master of Spells and Ranged Abilities. Not as fragile as the Wraith, but nowhere near as maneuverable and deadly in melee. + */ /mob/living/simple_animal/construct/harvester name = "Harvester" real_name = "Harvester" - desc = "The promised reward of the livings who follow narsie. Obtained by offering their bodies to the geometer of blood" + construct_type = "harvester" + desc = "A tendril-laden construct piloted by a chained mind." icon = 'icons/mob/mob.dmi' icon_state = "harvester" icon_living = "harvester" maxHealth = 150 health = 150 - melee_damage_lower = 25 + melee_damage_lower = 20 melee_damage_upper = 25 + attack_sharp = 1 attacktext = list("violently stabbed") - speed = -1 + friendly = list("caresses") + speed = 0 environment_smash = 1 - see_in_dark = 7 attack_sound = 'sound/weapons/pierce.ogg' + armor = list( + "melee" = 10, + "bullet" = 20, + "laser" = 20, + "energy" = 20, + "bomb" = 20, + "bio" = 100, + "rad" = 100) + construct_spells = list( - /spell/targeted/harvest, /spell/aoe_turf/knock/harvester, + /spell/targeted/construct_advanced/inversion_beam, + /spell/targeted/construct_advanced/agonizing_sphere, /spell/rune_write ) @@ -250,6 +433,9 @@ overlays += eye_glow set_light(2, -2, l_color = "#FFFFFF") +/mob/living/simple_animal/construct/proc/remove_glow() + overlays.Cut() + ////////////////HUD////////////////////// /mob/living/simple_animal/construct/Life() @@ -268,71 +454,35 @@ silence_spells(purge) -/mob/living/simple_animal/construct/armoured/Life() - ..() +/mob/living/simple_animal/construct/updatehealth() //Special icons. + health = getMaxHealth() - getToxLoss() - getFireLoss() - getBruteLoss() + + //Alive, becoming dead + if((stat < DEAD) && (health <= 0)) + death() + + //Overhealth + if(health > getMaxHealth()) + health = getMaxHealth() + + //Update our hud if we have one if(healths) - switch(health) - if(250 to INFINITY) healths.icon_state = "juggernaut_health0" - if(208 to 249) healths.icon_state = "juggernaut_health1" - if(167 to 207) healths.icon_state = "juggernaut_health2" - if(125 to 166) healths.icon_state = "juggernaut_health3" - if(84 to 124) healths.icon_state = "juggernaut_health4" - if(42 to 83) healths.icon_state = "juggernaut_health5" - if(1 to 41) healths.icon_state = "juggernaut_health6" - else healths.icon_state = "juggernaut_health7" - - -/mob/living/simple_animal/construct/behemoth/Life() - ..() - if(healths) - switch(health) - if(750 to INFINITY) healths.icon_state = "juggernaut_health0" - if(625 to 749) healths.icon_state = "juggernaut_health1" - if(500 to 624) healths.icon_state = "juggernaut_health2" - if(375 to 499) healths.icon_state = "juggernaut_health3" - if(250 to 374) healths.icon_state = "juggernaut_health4" - if(125 to 249) healths.icon_state = "juggernaut_health5" - if(1 to 124) healths.icon_state = "juggernaut_health6" - else healths.icon_state = "juggernaut_health7" - -/mob/living/simple_animal/construct/builder/Life() - ..() - if(healths) - switch(health) - if(50 to INFINITY) healths.icon_state = "artificer_health0" - if(42 to 49) healths.icon_state = "artificer_health1" - if(34 to 41) healths.icon_state = "artificer_health2" - if(26 to 33) healths.icon_state = "artificer_health3" - if(18 to 25) healths.icon_state = "artificer_health4" - if(10 to 17) healths.icon_state = "artificer_health5" - if(1 to 9) healths.icon_state = "artificer_health6" - else healths.icon_state = "artificer_health7" - - - -/mob/living/simple_animal/construct/wraith/Life() - ..() - if(healths) - switch(health) - if(75 to INFINITY) healths.icon_state = "wraith_health0" - if(62 to 74) healths.icon_state = "wraith_health1" - if(50 to 61) healths.icon_state = "wraith_health2" - if(37 to 49) healths.icon_state = "wraith_health3" - if(25 to 36) healths.icon_state = "wraith_health4" - if(12 to 24) healths.icon_state = "wraith_health5" - if(1 to 11) healths.icon_state = "wraith_health6" - else healths.icon_state = "wraith_health7" - - -/mob/living/simple_animal/construct/harvester/Life() - ..() - if(healths) - switch(health) - if(150 to INFINITY) healths.icon_state = "harvester_health0" - if(125 to 149) healths.icon_state = "harvester_health1" - if(100 to 124) healths.icon_state = "harvester_health2" - if(75 to 99) healths.icon_state = "harvester_health3" - if(50 to 74) healths.icon_state = "harvester_health4" - if(25 to 49) healths.icon_state = "harvester_health5" - if(1 to 24) healths.icon_state = "harvester_health6" - else healths.icon_state = "harvester_health7" + if(stat != DEAD) + var/heal_per = (health / getMaxHealth()) * 100 + switch(heal_per) + if(100 to INFINITY) + healths.icon_state = "[construct_type]_health0" + if(80 to 100) + healths.icon_state = "[construct_type]_health1" + if(60 to 80) + healths.icon_state = "[construct_type]_health2" + if(40 to 60) + healths.icon_state = "[construct_type]_health3" + if(20 to 40) + healths.icon_state = "[construct_type]_health4" + if(0 to 20) + healths.icon_state = "[construct_type]_health5" + else + healths.icon_state = "[construct_type]_health6" + else + healths.icon_state = "[construct_type]_health7" \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/constructs/soulstone.dm b/code/modules/mob/living/simple_animal/constructs/soulstone.dm index baf99ec0e4..6f13789dfc 100644 --- a/code/modules/mob/living/simple_animal/constructs/soulstone.dm +++ b/code/modules/mob/living/simple_animal/constructs/soulstone.dm @@ -11,6 +11,7 @@ slot_flags = SLOT_BELT origin_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 4) var/imprinted = "empty" + var/possible_constructs = list("Juggernaut","Wraith","Artificer","Harvester") //////////////////////////////Capturing//////////////////////////////////////////////////////// @@ -145,9 +146,9 @@ src.icon_state = "soulstone2" src.name = "Soul Stone: [S.real_name]" - S << "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs." - U << "Capture successful! : [T.real_name]'s soul has been ripped from their body and stored within the soul stone." - U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." + to_chat(S, "Your soul has been captured! You are now bound to [U.name]'s will, help them suceed in their goals at all costs.") + to_chat(U, "Capture successful! : [T.real_name]'s soul has been ripped from their body and stored within the soul stone.") + to_chat(U, "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls.") src.imprinted = "[S.name]" qdel(T) @@ -155,13 +156,13 @@ if(!istype(T)) return; if (T.stat == DEAD) - U << "Capture failed!: The shade has already been banished!" + to_chat(U, "Capture failed!: The shade has already been banished!") return if(src.contents.len) - U << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." + to_chat(U, "Capture failed!: The soul stone is full! Use or free an existing soul to make room.") return if(T.name != src.imprinted) - U << "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!" + to_chat(U, "Capture failed!: The soul stone has already been imprinted with [src.imprinted]'s mind!") return T.forceMove(src) //put shade in stone @@ -170,14 +171,15 @@ T.health = T.getMaxHealth() src.icon_state = "soulstone2" - T << "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form" - U << "Capture successful! : [T.name]'s has been recaptured and stored within the soul stone." + to_chat(T, "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form") + to_chat(U, "Capture successful! : [T.name]'s has been recaptured and stored within the soul stone.") + /obj/item/device/soulstone/proc/transfer_construct(var/obj/structure/constructshell/T,var/mob/U) var/mob/living/simple_animal/shade/A = locate() in src if(!A) - U << "Capture failed!: The soul stone is empty! Go kill someone!" + to_chat(U,"Capture failed!: The soul stone is empty! Go kill someone!") return; - var/construct_class = alert(U, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer") + var/construct_class = input(U, "Please choose which type of construct you wish to create.") as null|anything in possible_constructs switch(construct_class) if("Juggernaut") var/mob/living/simple_animal/construct/armoured/Z = new /mob/living/simple_animal/construct/armoured (get_turf(T.loc)) @@ -185,8 +187,8 @@ if(iscultist(U)) cult.add_antagonist(Z.mind) qdel(T) - Z << "You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike." - Z << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." + to_chat(Z,"You are playing a Juggernaut. Though slow, you can withstand extreme punishment, and rip apart enemies and walls alike.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") Z.cancel_camera() qdel(src) if("Wraith") @@ -195,8 +197,8 @@ if(iscultist(U)) cult.add_antagonist(Z.mind) qdel(T) - Z << "You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls." - Z << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." + to_chat(Z,"You are playing a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") Z.cancel_camera() qdel(src) if("Artificer") @@ -205,10 +207,31 @@ if(iscultist(U)) cult.add_antagonist(Z.mind) qdel(T) - Z << "You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs" - Z << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." + to_chat(Z,"You are playing an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, repair allied constructs (by clicking on them), and even create new constructs") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") Z.cancel_camera() qdel(src) + if("Harvester") + var/mob/living/simple_animal/construct/harvester/Z = new /mob/living/simple_animal/construct/harvester (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing a Harvester. You are relatively weak, but your physical frailty is made up for by your ranged abilities.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + if("Behemoth") + var/mob/living/simple_animal/construct/behemoth/Z = new /mob/living/simple_animal/construct/behemoth (get_turf(T.loc)) + Z.key = A.key + if(iscultist(U)) + cult.add_antagonist(Z.mind) + qdel(T) + to_chat(Z,"You are playing a Behemoth. You are incredibly slow, though your slowness is made up for by the fact your shell is far larger than any of your bretheren. You are the Unstoppable Force, and Immovable Object.") + to_chat(Z,"You are still bound to serve your creator, follow their orders and help them complete their goals at all costs.") + Z.cancel_camera() + qdel(src) + /obj/item/device/soulstone/proc/transfer_soul(var/choice as text, var/target, var/mob/U as mob) switch(choice) if("VICTIM") diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 4c6d9312c4..4580643574 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -20,6 +20,8 @@ var/show_stat_health = 1 // Does the percentage health show in the stat panel for the mob var/ai_inactive = 0 // Set to 1 to turn off most AI actions var/has_hands = 0 // Set to 1 to enable the use of hands and the hands hud + var/humanoid_hands = 0 // Can a player in this mob use things like guns or AI cards? + var/hand_form = "hands" // Used in IsHumanoidToolUser. 'Your X are not fit-'. var/list/hud_gears // Slots to show on the hud (typically none) var/ui_icons // Icon file path to use for the HUD, otherwise generic icons are used var/r_hand_sprite // If they have hands, @@ -139,6 +141,7 @@ var/astar_adjacent_proc = /turf/proc/CardinalTurfsWithAccess // Proc to use when A* pathfinding. Default makes them bound to cardinals. //Damage resistances + var/shock_resistance = 0 // Siemens modifier, directly subtracted from 1. Value of 0.4 means 0.6 siemens on shocks. var/resistance = 0 // Damage reduction for all types var/list/armor = list( // Values for normal getarmor() checks "melee" = 0, @@ -812,6 +815,9 @@ return verb /mob/living/simple_animal/put_in_hands(var/obj/item/W) // No hands. + if(has_hands) + put_in_active_hand(W) + return 1 W.forceMove(get_turf(src)) return 1 @@ -1292,7 +1298,7 @@ // This is the actual act of 'punching'. Override for special behaviour. /mob/living/simple_animal/proc/DoPunch(var/atom/A) - if(!Adjacent(A)) // They could've moved in the meantime. + if(!Adjacent(A) && !istype(A, /obj/structure/window) && !istype(A, /obj/machinery/door/window)) // They could've moved in the meantime. But a Window probably wouldn't have. This allows player simple-mobs to attack windows. return FALSE var/damage_to_do = rand(melee_damage_lower, melee_damage_upper) @@ -1527,7 +1533,7 @@ //Touches a wire, etc /mob/living/simple_animal/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) - shock_damage *= siemens_coeff + shock_damage *= max(siemens_coeff - shock_resistance, 0) if (shock_damage < 1) return 0 @@ -1593,11 +1599,11 @@ hud_used.l_hand_hud_object.icon_state = "l_hand_inactive" hud_used.r_hand_hud_object.icon_state = "r_hand_active" return - +/* /mob/living/simple_animal/put_in_active_hand(var/obj/item/I) if(!has_hands || !istype(I)) return - +*/ //Puts the item into our active hand if possible. returns 1 on success. /mob/living/simple_animal/put_in_active_hand(var/obj/item/W) if(!has_hands) @@ -1706,6 +1712,23 @@ /mob/living/simple_animal/IsAdvancedToolUser() return has_hands +/mob/living/simple_animal/proc/IsHumanoidToolUser(var/atom/tool) + if(!humanoid_hands) + var/display_name = null + if(tool) + display_name = tool + else + display_name = "object" + to_chat(src, "Your [hand_form] are not fit for use of \the [display_name].") + return humanoid_hands + +/mob/living/simple_animal/drop_from_inventory(var/obj/item/W, var/atom/target = null) + . = ..(W, target) + if(!target) + target = src.loc + if(.) + W.forceMove(src.loc) + //Commands, reactions, etc /mob/living/simple_animal/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) ..() diff --git a/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm index 2dfecc479c..7fa04db5de 100644 --- a/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_animal/vore/shadekin/shadekin.dm @@ -1,6 +1,6 @@ /mob/living/simple_animal/shadekin //Spawning the prototype spawns a random one, see initialize() name = "shadekin" - desc = "Some sort of fluffer. Big ears, long tail. " + desc = "Some sort of fluffer. Big ears, long tail." icon = 'icons/mob/vore_shadekin.dmi' icon_state = "map_example" icon_living = "map_example" @@ -62,7 +62,7 @@ vore_bump_chance = 0 //They follow people, this would be DENGEROUS var/eye_state = RED_EYES //Eye color/energy gain/loss mode - var/eye_icon_state = "e_red" //Default, changed in init + var/eye_icon_state = null //Default, changed in init var/eye_desc //Eye color description added to examine var/mob/living/carbon/human/henlo_human //Human we're stalking currently @@ -72,9 +72,7 @@ var/shy_approach = FALSE //Do we creep up slowly on humans to boop them //Icon handling - var/image/tailimage //Cached tail icon - var/image/eyeimage //Cached eye icon - var/prev_fullness = null //Used to avoid needless icon changes when we don't need them + var/image/tailimage //Cached tail image //Darknesssss var/energy = 100 //For abilities @@ -108,8 +106,27 @@ icon_living = icon_state + switch(eye_state) + if(BLUE_EYES) + eye_icon_state = "e_blue" + if(RED_EYES) + eye_icon_state = "e_red" + if(PURPLE_EYES) + eye_icon_state = "e_purple" + if(YELLOW_EYES) + eye_icon_state = "e_yellow" + if(GREEN_EYES) + eye_icon_state = "e_green" + if(ORANGE_EYES) + eye_icon_state = "e_orange" + else + eye_icon_state = "e_red" + + tailimage = image('icons/mob/vore_shadekin64.dmi',null,icon_state) + tailimage.pixel_x = -16 + if(eye_desc) - desc += "This one has [eye_desc]!" + desc += " This one has [eye_desc]!" var/list/ability_types = subtypesof(/obj/effect/shadekin_ability) shadekin_abilities = list() @@ -191,33 +208,13 @@ /mob/living/simple_animal/shadekin/update_icon() . = ..() + + cut_overlay(tailimage) - if(!tailimage || prev_fullness != vore_fullness) - prev_fullness = vore_fullness - tailimage = image('icons/mob/vore_shadekin64.dmi',null,icon_state) - tailimage.pixel_x = -16 tailimage.icon_state = icon_state - if(!eyeimage || !eye_icon_state) - switch(eye_state) - if(BLUE_EYES) - eye_icon_state = "e_blue" - if(RED_EYES) - eye_icon_state = "e_red" - if(PURPLE_EYES) - eye_icon_state = "e_purple" - if(YELLOW_EYES) - eye_icon_state = "e_yellow" - if(GREEN_EYES) - eye_icon_state = "e_green" - if(ORANGE_EYES) - eye_icon_state = "e_orange" - eyeimage = image(icon,null,eye_icon_state) - - var/mutable_appearance/ma = new(src) - ma.overlays += tailimage - ma.overlays += eyeimage - appearance = ma + add_overlay(tailimage) + add_overlay(eye_icon_state) /mob/living/simple_animal/shadekin/Stat() . = ..() diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index a64be018fb..c2b0aaf0f1 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -288,7 +288,7 @@ tickcomp = ((1/(world.tick_lag))*1.3) - 1.3 move_delay = move_delay + tickcomp - if(istype(mob.buckled, /obj/vehicle)) + if(istype(mob.buckled))// VOREStation Removal - , /obj/vehicle)) //manually set move_delay for vehicles so we don't inherit any mob movement penalties //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm move_delay = world.time + tickcomp diff --git a/code/modules/mob/new_player/sprite_accessories_vr.dm b/code/modules/mob/new_player/sprite_accessories_vr.dm index 8c4b66bfa0..3cbf856cf3 100644 --- a/code/modules/mob/new_player/sprite_accessories_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_vr.dm @@ -209,6 +209,13 @@ icon_state = "hair_messy" species_allowed = list(SPECIES_TAJ, SPECIES_XENOCHIMERA, SPECIES_PROTEAN) + teshari_fluffymohawk + name = "Teshari Fluffy Mohawk" + icon = 'icons/mob/human_face_vr.dmi' + icon_add = 'icons/mob/human_face_vr_add.dmi' + icon_state = "teshari_fluffymohawk" + species_allowed = list(SPECIES_TESHARI) + //Teshari things teshari icon_add = 'icons/mob/human_face_vr_add.dmi' @@ -909,3 +916,15 @@ icon_state = "catwomanleft" color_blend_mode = ICON_MULTIPLY body_parts = list(BP_L_LEG) + + teshi_fluff + name = "Teshari underfluff" + icon_state = "teshi_fluff" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_GROIN,BP_TORSO,BP_HEAD) + + teshi_small_feathers + name = "Teshari small wingfeathers" + icon_state = "teshi_sf" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_HAND,BP_R_HAND,BP_TORSO) \ No newline at end of file diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 776ad523d5..6cbef8586b 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -86,6 +86,9 @@ /mob/living/carbon/human/can_overcome_gravity() return species && species.can_overcome_gravity(src) +/mob/living/simple_animal/construct/can_overcome_gravity() + return 1 //They care not for standard physics. + /mob/observer/zMove(direction) var/turf/destination = (direction == UP) ? GetAbove(src) : GetBelow(src) if(destination) @@ -116,6 +119,9 @@ /mob/observer/can_ztravel() return 1 +/mob/living/simple_animal/construct/can_ztravel() + return 1 + /mob/living/carbon/human/can_ztravel() if(incapacitated()) return 0 @@ -263,6 +269,9 @@ /mob/living/simple_animal/hostile/carp/can_fall() // So can carp apparently. return FALSE +/mob/living/simple_animal/construct/can_fall() //As do Constructs. + return FALSE + // Check if this atom prevents things standing on it from falling. Return TRUE to allow the fall. /obj/proc/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf) if(!isturf(mover.loc)) // VORESTATION EDIT. We clearly didn't have enough backup checks. diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 0e549897c1..957cf5927f 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -1,5 +1,5 @@ var/list/obj/machinery/photocopier/faxmachine/allfaxes = list() -var/list/admin_departments = list("[using_map.boss_name]", "Virgo Prime Governmental Authority", "Supply") +var/list/admin_departments = list("[using_map.boss_name]", "Virgo-Prime Governmental Authority", "Supply") // Vorestation Edit var/list/alldepartments = list() var/list/adminfaxes = list() //cache for faxes that have been sent to admins @@ -182,7 +182,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins //message badmins that a fax has arrived if (destination == using_map.boss_name) message_admins(sender, "[uppertext(using_map.boss_short)] FAX", rcvdcopy, "CentComFaxReply", "#006100") - else if (destination == "Virgo Prime Governmental Authority") + else if (destination == "Virgo-Prime Governmental Authority") // Vorestation Edit message_admins(sender, "VIRGO GOVERNMENT FAX", rcvdcopy, "CentComFaxReply", "#1F66A0") else if (destination == "Supply") message_admins(sender, "[uppertext(using_map.boss_short)] SUPPLY FAX", rcvdcopy, "CentComFaxReply", "#5F4519") diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index bb37a380b6..3b4833a533 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -19,7 +19,11 @@ internalPaper = newPaper flags = newPaper.flags color = newPaper.color - newPaper.forceMove(src) + if(isstorage(newPaper.loc)) + var/obj/item/weapon/storage/S = newPaper.loc + S.remove_from_storage(newPaper, src) + else + newPaper.forceMove(src) else internalPaper = new /obj/item/weapon/paper(src) update_icon() diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 1c08294b6a..4db4d40c4c 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -24,6 +24,11 @@ var/charge_delay = 0 // How long it takes for the cell to start recharging after last use matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) + // Overlay stuff. + var/overlay_half_state = "cell-o1" // Overlay used when not fully charged but not empty. + var/overlay_full_state = "cell-o2" // Overlay used when fully charged. + var/last_overlay_state = null // Used to optimize update_icon() calls. + /obj/item/weapon/cell/New() ..() charge = maxcharge @@ -55,15 +60,38 @@ return use(cell_amt) / CELLRATE -/obj/item/weapon/cell/update_icon() - overlays.Cut() +#define OVERLAY_FULL 2 +#define OVERLAY_PARTIAL 1 +#define OVERLAY_EMPTY 0 - if(charge < 0.01) - return - else if(charge/maxcharge >=0.995) - overlays += image('icons/obj/power.dmi', "cell-o2") - else - overlays += image('icons/obj/power.dmi', "cell-o1") +/obj/item/weapon/cell/update_icon() + var/new_overlay = null // The overlay that is needed. + // If it's different than the current overlay, then it'll get changed. + // Otherwise nothing happens, to save on CPU. + + if(charge < 0.01) // Empty. + new_overlay = OVERLAY_EMPTY + if(last_overlay_state != new_overlay) + cut_overlays() + + else if(charge/maxcharge >= 0.995) // Full + new_overlay = OVERLAY_FULL + if(last_overlay_state != new_overlay) + cut_overlay(overlay_half_state) + add_overlay(overlay_full_state) + + + else // Inbetween. + new_overlay = OVERLAY_PARTIAL + if(last_overlay_state != new_overlay) + cut_overlay(overlay_full_state) + add_overlay(overlay_half_state) + + last_overlay_state = new_overlay + +#undef OVERLAY_FULL +#undef OVERLAY_PARTIAL +#undef OVERLAY_EMPTY /obj/item/weapon/cell/proc/percent() // return % charge of cell return 100.0*charge/maxcharge diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 827bd9aefd..eaca5bd663 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -165,6 +165,7 @@ "You undo the external reinforcing bolts.", \ "You hear a ratchet.") src.anchored = 0 + disconnect_from_network() if(2) user << "\The [src] needs to be unwelded from the floor." return diff --git a/code/modules/projectiles/effects.dm b/code/modules/projectiles/effects.dm index 18010d3d17..da21427eff 100644 --- a/code/modules/projectiles/effects.dm +++ b/code/modules/projectiles/effects.dm @@ -267,4 +267,25 @@ icon_state = "impact_darkb" light_range = 2 light_power = 0.5 - light_color = "#8837A3" \ No newline at end of file + light_color = "#8837A3" + +//---------------------------- +// Inversion / Cult +//---------------------------- +/obj/effect/projectile/inversion/tracer + icon_state = "invert" + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" + +/obj/effect/projectile/inversion/muzzle + icon_state = "muzzle_invert" + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" + +/obj/effect/projectile/inversion/impact + icon_state = "impact_invert" + light_range = 2 + light_power = -2 + light_color = "#FFFFFF" \ No newline at end of file diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 55eefade82..ffe7f898da 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -172,6 +172,10 @@ return 0 if(!user.IsAdvancedToolUser()) return 0 + if(isanimal(user)) + var/mob/living/simple_animal/S = user + if(!S.IsHumanoidToolUser(src)) + return 0 var/mob/living/M = user if(dna_lock && attached_lock.stored_dna) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 0048cd5194..dd431e2de9 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -23,8 +23,8 @@ id = "round_end_belt" // create a conveyor -/obj/machinery/conveyor/New(loc, newdir, on = 0) - ..(loc) +/obj/machinery/conveyor/initialize(mapload, newdir, on = 0) + . = ..() if(newdir) set_dir(newdir) @@ -105,7 +105,7 @@ id = input for(var/obj/machinery/conveyor_switch/C in world) if(C.id == id) - C.conveyors += src + C.conveyors |= src return user.drop_item(get_turf(src)) @@ -158,12 +158,6 @@ if(C) C.set_operable(stepdir, id, op) -/* -/obj/machinery/conveyor/verb/destroy() - set src in view() - src.broken() -*/ - /obj/machinery/conveyor/power_change() ..() update() @@ -189,15 +183,16 @@ -/obj/machinery/conveyor_switch/New() +/obj/machinery/conveyor_switch/initialize() ..() update() + return INITIALIZE_HINT_LATELOAD - spawn(5) // allow map load - conveyors = list() - for(var/obj/machinery/conveyor/C in world) - if(C.id == id) - conveyors += C +/obj/machinery/conveyor_switch/LateInitialize() + conveyors = list() + for(var/obj/machinery/conveyor/C in world) + if(C.id == id) + conveyors += C // update the icon depending on the position @@ -273,6 +268,7 @@ usr << "No input found please hang up and try your call again." return id = input + conveyors = list() // Clear list so they aren't double added. for(var/obj/machinery/conveyor/C in world) if(C.id == id) conveyors += C diff --git a/code/modules/research/designs_vr.dm b/code/modules/research/designs_vr.dm index de86ebf872..02b71645da 100644 --- a/code/modules/research/designs_vr.dm +++ b/code/modules/research/designs_vr.dm @@ -173,6 +173,13 @@ build_path = /obj/item/weapon/circuitboard/bomb_tester sort_string = "HABAG" +/datum/design/circuit/quantum_pad + name = "Quantum Pad" + id = "quantum_pad" + req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 4, TECH_BLUESPACE = 4) + build_path = /obj/item/weapon/circuitboard/quantumpad + sort_string = "HABAH" + ////// RIGSuit Stuff /* /datum/design/item/rig diff --git a/code/modules/spells/aoe_turf/conjure/construct.dm b/code/modules/spells/aoe_turf/conjure/construct.dm index 3885e16ad8..82bba0198a 100644 --- a/code/modules/spells/aoe_turf/conjure/construct.dm +++ b/code/modules/spells/aoe_turf/conjure/construct.dm @@ -1,5 +1,9 @@ //////////////////////////////Construct Spells///////////////////////// +/* + * This has been moved to game/gamemodes/cult/construct_spells.dm. This is here for posterity. + */ +/* /spell/aoe_turf/conjure/construct name = "Artificer" desc = "This spell conjures a construct which may be controlled by Shades" @@ -110,6 +114,44 @@ continue return +/spell/aoe_turf/conjure/door + name = "Stone Door" + desc = "This spell conjures a massive stone door." + + charge_max = 100 + spell_flags = CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + hud_state = "const_rune" + +/spell/aoe_turf/conjure/door/cast(list/targets) + ..() + var/turf/spawn_place = pick(targets) + if(spawn_place) + new /obj/structure/simple_door/cult(spawn_place) + return + +/spell/aoe_turf/conjure/grille + name = "Arcane Grille" + desc = "This spell conjures an airtight grille." + + charge_max = 100 + spell_flags = CONSTRUCT_CHECK + invocation = "none" + invocation_type = SpI_NONE + range = 0 + + hud_state = "const_rune" + +/spell/aoe_turf/conjure/grille/cast(list/targets) + ..() + var/turf/spawn_place = pick(targets) + if(spawn_place) + new /obj/structure/grille/cult(spawn_place) + return + /spell/aoe_turf/conjure/forcewall/lesser name = "Shield" desc = "Allows you to pull up a shield to protect yourself and allies from incoming threats" @@ -135,3 +177,4 @@ /obj/effect/forcefield/cult/cultify() return +*/ \ No newline at end of file diff --git a/code/modules/spells/aoe_turf/knock.dm b/code/modules/spells/aoe_turf/knock.dm index 3b3cae83d6..6766a42eb9 100644 --- a/code/modules/spells/aoe_turf/knock.dm +++ b/code/modules/spells/aoe_turf/knock.dm @@ -22,7 +22,7 @@ door.open() return - +/* Moved to game/gamemodes/cult/construct_spells.dm. //Construct version /spell/aoe_turf/knock/harvester name = "Disintegrate Doors" @@ -41,4 +41,5 @@ for(var/turf/T in targets) for(var/obj/machinery/door/door in T.contents) spawn door.cultify() - return \ No newline at end of file + return +*/ \ No newline at end of file diff --git a/code/modules/spells/construct_spells.dm b/code/modules/spells/construct_spells.dm index b2cec77dbc..aac7592f33 100644 --- a/code/modules/spells/construct_spells.dm +++ b/code/modules/spells/construct_spells.dm @@ -1,5 +1,8 @@ //////////////////////////////Construct Spells///////////////////////// - +/* + * Moved to game/gamemodes/cult/construct_spells.dm. Here for posterity. + */ +/* proc/findNullRod(var/atom/target) if(istype(target,/obj/item/weapon/nullrod)) return 1 @@ -8,3 +11,4 @@ proc/findNullRod(var/atom/target) if(findNullRod(A)) return 1 return 0 +*/ \ No newline at end of file diff --git a/code/modules/spells/targeted/harvest.dm b/code/modules/spells/targeted/harvest.dm index 6903efbfd9..7a8d986a02 100644 --- a/code/modules/spells/targeted/harvest.dm +++ b/code/modules/spells/targeted/harvest.dm @@ -1,3 +1,10 @@ + +/* + * Here for posterity. Moved to game/gamemodes/cult/construct_spells.dm, though it has been disabled there. + */ + + +/* /spell/targeted/harvest name = "Harvest" desc = "Back to where I come from, and you're coming with me." @@ -34,3 +41,4 @@ user << "You warp back to Nar-Sie[prey ? " along with your prey":""]." else user << "...something's wrong!"//There shouldn't be an instance of Harvesters when Nar-Sie isn't in the world. +*/ \ No newline at end of file diff --git a/code/modules/spells/targeted/shift.dm b/code/modules/spells/targeted/shift.dm index 8f8ef57e51..f6634640dc 100644 --- a/code/modules/spells/targeted/shift.dm +++ b/code/modules/spells/targeted/shift.dm @@ -1,3 +1,8 @@ +/* + * This has been moved to game/gamemodes/cult/construct_spells.dm. This is here for posterity. + */ + +/* /spell/targeted/ethereal_jaunt/shift name = "Phase Shift" desc = "This spell allows you to pass through walls" @@ -21,4 +26,5 @@ flick("phase_shift2",animation) /spell/targeted/ethereal_jaunt/shift/jaunt_steam(var/mobloc) - return \ No newline at end of file + return +*/ \ No newline at end of file diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 395ac2f219..24e599cc31 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -176,6 +176,21 @@ var/list/table_icon_cache = list() visible_message("\The [user] tears apart \the [src]!") src.break_to_parts() +/obj/structure/table/attack_generic(mob/user as mob, var/damage) + if(damage >= 10) + if(reinforced && prob(70)) + visible_message("\The [user] smashes against \the [src]!") + take_damage(damage/2) + user.do_attack_animation(src) + ..() + else + visible_message("\The [user] tears apart \the [src]!") + src.break_to_parts() + user.do_attack_animation(src) + return 1 + visible_message("\The [user] scratches at \the [src]!") + return ..() + /obj/structure/table/MouseDrop_T(obj/item/stack/material/what) if(can_reinforce && isliving(usr) && (!usr.stat) && istype(what) && usr.get_active_hand() == what && Adjacent(usr)) reinforce_table(what, usr) diff --git a/code/modules/telesci/construction.dm b/code/modules/telesci/construction.dm index ac5d7becd7..5143733a47 100644 --- a/code/modules/telesci/construction.dm +++ b/code/modules/telesci/construction.dm @@ -20,6 +20,18 @@ /obj/item/stack/cable_coil = 5, /obj/item/weapon/stock_parts/console_screen = 1) +// Bamfpads! Ported from /tg/ +/obj/item/weapon/circuitboard/quantumpad + name = T_BOARD("quantum pad") + board_type = new /datum/frame/frame_types/machine + build_path = /obj/machinery/power/quantumpad + origin_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 4, TECH_BLUESPACE = 4) + req_components = list( + /obj/item/weapon/ore/bluespace_crystal = 1, + /obj/item/weapon/stock_parts/capacitor = 1, + /obj/item/weapon/stock_parts/manipulator = 1, + /obj/item/stack/cable_coil = 5) + // The Designs /datum/design/circuit/telesci_console @@ -44,10 +56,17 @@ build_path = /obj/item/device/gps/advanced sort_string = "HAAEB" +/datum/design/circuit/quantum_pad + name = "Quantum Pad" + id = "quantum_pad" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5) + build_path = /obj/item/weapon/circuitboard/quantumpad + sort_string = "HAAC" + /datum/design/item/bluespace_crystal name = "Artificial Bluespace Crystal" id = "bluespace_crystal" req_tech = list(TECH_BLUESPACE = 3, TECH_PHORON = 4) materials = list("diamond" = 1500, "phoron" = 1500) build_path = /obj/item/weapon/ore/bluespace_crystal/artificial - sort_string = "HAAEC" + sort_string = "HAAED" \ No newline at end of file diff --git a/code/modules/telesci/quantum_pad.dm b/code/modules/telesci/quantum_pad.dm new file mode 100644 index 0000000000..1d3eed0785 --- /dev/null +++ b/code/modules/telesci/quantum_pad.dm @@ -0,0 +1,189 @@ +/obj/machinery/power/quantumpad + name = "quantum pad" + desc = "A bluespace quantum-linked telepad used for teleporting objects to other quantum pads." + icon = 'icons/obj/telescience.dmi' + icon_state = "qpad-idle" + anchored = TRUE + use_power = 1 + idle_power_usage = 200 + active_power_usage = 5000 + circuit = /obj/item/weapon/circuitboard/quantumpad + var/teleport_cooldown = 400 //30 seconds base due to base parts + var/teleport_speed = 50 + var/last_teleport //to handle the cooldown + var/teleporting = 0 //if it's in the process of teleporting + var/power_efficiency = 1 + var/obj/machinery/power/quantumpad/linked_pad + + //mapping + var/static/list/mapped_quantum_pads = list() + var/map_pad_id = "" as text //what's my name + var/map_pad_link_id = "" as text //who's my friend + +/obj/machinery/power/quantumpad/initialize() + . = ..() + default_apply_parts() + connect_to_network() + if(map_pad_id) + mapped_quantum_pads[map_pad_id] = src + +/obj/machinery/power/quantumpad/Destroy() + mapped_quantum_pads -= map_pad_id + return ..() + +/obj/machinery/power/quantumpad/RefreshParts() + var/E = 0 + for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) + E += M.rating + power_efficiency = E + + E = 0 + for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts) + E += C.rating + + teleport_speed = initial(teleport_speed) + teleport_speed -= (E*10) + teleport_cooldown = initial(teleport_cooldown) + teleport_cooldown -= (E * 100) + +/obj/machinery/power/quantumpad/attackby(obj/item/I, mob/user, params) + if(default_deconstruction_screwdriver(user, I)) + return + + if(istype(I, /obj/item/device/multitool)) + if(panel_open) + var/obj/item/device/multitool/M = I + M.buffer = src + to_chat(user, "You save the data in [I]'s buffer.") + return 1 + else + var/obj/item/device/multitool/M = I + if(istype(M.buffer, /obj/machinery/power/quantumpad)) + linked_pad = M.buffer + to_chat(user, "You link [src] to the one in [I]'s buffer.") + return 1 + + if(default_part_replacement(user, I)) + return + + if(default_deconstruction_crowbar(user, I)) + return + + return ..() + +/obj/machinery/power/quantumpad/update_icon() + . = ..() + + if(inoperable() || panel_open) + icon_state = "pad-idle-o" + else + icon_state = initial(icon_state) + +/obj/machinery/power/quantumpad/attack_hand(mob/user) + . = ..() + if(.) + return + if(panel_open) + to_chat(user, "The panel must be closed before operating this machine!") + return + + if(istype(get_area(src), /area/shuttle)) + to_chat(user, "This is too unstable a platform for \the [src] to operate on!") + return + + if(!powernet) + to_chat(user, "[src] is not attached to a powernet!") + return + + if(!linked_pad || QDELETED(linked_pad)) + if(!map_pad_link_id || !initMappedLink()) + to_chat(user, "There is no linked pad!") + return + + if(world.time < last_teleport + teleport_cooldown) + to_chat(user, "[src] is recharging power. Please wait [round((last_teleport + teleport_cooldown - world.time)/10)] seconds.") + return + + if(teleporting) + to_chat(user, "[src] is charging up. Please wait.") + return + + if(linked_pad.teleporting) + to_chat(user, "Linked pad is busy. Please wait.") + return + + if(linked_pad.inoperable()) + to_chat(user, "Linked pad is not responding to ping.") + return + src.add_fingerprint(user) + doteleport(user) + +/obj/machinery/power/quantumpad/proc/sparks() + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + sparks.set_up(5, 1, get_turf(src)) + sparks.start() + +/obj/machinery/power/quantumpad/attack_ghost(mob/observer/dead/ghost) + . = ..() + if(.) + return + if(!linked_pad && map_pad_link_id) + initMappedLink() + if(linked_pad && !QDELETED(linked_pad)) + ghost.forceMove(get_turf(linked_pad)) + +/obj/machinery/power/quantumpad/proc/doteleport(mob/user) + if(!linked_pad) + return + playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, 1) + teleporting = 1 + + spawn(teleport_speed) + if(!src || QDELETED(src)) + teleporting = 0 + return + if(inoperable()) + to_chat(user, "[src] is nonfunctional!") + teleporting = 0 + return + if(!linked_pad || QDELETED(linked_pad) || linked_pad.inoperable()) + to_chat(user, "Linked pad is not responding to ping. Teleport aborted.") + teleporting = 0 + return + + teleporting = 0 + last_teleport = world.time + + // use a lot of power + var/power_to_use = 10000 / power_efficiency + if(draw_power(power_to_use) != power_to_use) + to_chat(user, "Power is not sufficient to complete a teleport. Teleport aborted.") + return + sparks() + linked_pad.sparks() + + flick("qpad-beam", src) + playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) + flick("qpad-beam", linked_pad) + playsound(get_turf(linked_pad), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) + for(var/atom/movable/ROI in get_turf(src)) + // if is anchored, don't let through + if(ROI.anchored) + if(isliving(ROI)) + var/mob/living/L = ROI + if(L.buckled) + // TP people on office chairs + if(L.buckled.anchored) + continue + else + continue + else if(!isobserver(ROI)) + continue + do_teleport(ROI, get_turf(linked_pad), local = FALSE) + +/obj/machinery/power/quantumpad/proc/initMappedLink() + . = FALSE + var/obj/machinery/power/quantumpad/link = mapped_quantum_pads[map_pad_link_id] + if(link) + linked_pad = link + . = TRUE diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index ed701aa9e0..b0e5eca83b 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -22,17 +22,13 @@ // Based on the distance used var/teleport_cooldown = 0 var/teleporting = 0 - var/starting_crystals = 2 + var/starting_crystals = 0 var/max_crystals = 4 // Used to adjust OP-ness: (4 crystals * 6 efficiency * 12.5 coefficient) = 300 range. var/powerCoefficient = 12.5 var/list/crystals = list() var/obj/item/device/gps/inserted_gps -/obj/machinery/computer/telescience/New() - ..() - recalibrate() - /obj/machinery/computer/telescience/Destroy() eject() if(inserted_gps) @@ -46,6 +42,7 @@ /obj/machinery/computer/telescience/initialize() . = ..() + recalibrate() for(var/i = 1; i <= starting_crystals; i++) crystals += new /obj/item/weapon/ore/bluespace_crystal/artificial(src) // starting crystals diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 13dc84f0e4..0b454f6bc5 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -40,7 +40,7 @@ var/load_offset_y = 0 //pixel_y offset for item overlay var/mob_offset_y = 0 //pixel_y offset for mob overlay - var/datum/riding/riding_datum = null + //var/datum/riding/riding_datum = null //VOREStation Edit - Moved to movables. //------------------------------------------- // Standard procs diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm new file mode 100644 index 0000000000..38249c3b16 --- /dev/null +++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm @@ -0,0 +1,423 @@ +/datum/riding/taur + keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop // Crack! + nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs. + key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called. + only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive. + +/datum/riding/taur/handle_vehicle_layer() + if(ridden.has_buckled_mobs()) + if(ridden.dir != NORTH) + ridden.layer = ABOVE_MOB_LAYER + else + ridden.layer = initial(ridden.layer) + else + ridden.layer = initial(ridden.layer) + +/datum/riding/taur/ride_check(mob/living/M) + var/mob/living/L = ridden + if(L.stat) + force_dismount(M) + return FALSE + return TRUE + +/datum/riding/taur/force_dismount(mob/M) + . =..() + ridden.visible_message("[M] stops riding [ridden]!") + +//Hoooo boy. +/datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer) + var/mob/living/L = ridden + var/scale = L.size_multiplier + + var/list/values = list( + "[NORTH]" = list(0, 8*scale, ABOVE_MOB_LAYER), + "[SOUTH]" = list(0, 8*scale, BELOW_MOB_LAYER), + "[EAST]" = list(-10*scale, 8*scale, BELOW_MOB_LAYER), + "[WEST]" = list(10*scale, 8*scale, BELOW_MOB_LAYER)) + + return values + +//Human overrides for taur riding +/mob/living/carbon/human + max_buckled_mobs = 1 //Yeehaw + can_buckle = TRUE + buckle_movable = TRUE + buckle_lying = FALSE + +/mob/living/carbon/human/New() + ..() + riding_datum = new /datum/riding/taur(src) + +/mob/living/carbon/human/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE) + if(!isTaurTail(tail_style)) + return FALSE + if(lying) + return FALSE + if(!ishuman(M)) + return FALSE + if(M.size_multiplier > size_multiplier) + to_chat(M,"This isn't a pony show! They need to be bigger to ride.") + return FALSE + + var/mob/living/carbon/human/H = M + + if(isTaurTail(H.tail_style)) + to_chat(H,"Too many legs. TOO MANY LEGS!!") + return FALSE + + . = ..() + +/mob/living/carbon/human/MouseDrop_T(mob/living/M, mob/living/user) + if(can_buckle && istype(M)) + if(user_buckle_mob(M, user, silent = TRUE)) + visible_message("[M] starts riding [name]!") + return TRUE + +/mob/living/carbon/human/attack_hand(mob/user as mob) + if(LAZYLEN(buckled_mobs)) + //We're getting off! + if(user in buckled_mobs) + riding_datum.force_dismount(user) + //We're kicking everyone off! + if(user == src) + for(var/rider in buckled_mobs) + riding_datum.force_dismount(rider) + else + . = ..() + +/* +//////////////////////////// +/ =--------------------= / +/ == Taur Definitions == / +/ =--------------------= / +//////////////////////////// +*/ + +// Taur sprites are now a subtype of tail since they are mutually exclusive anyway. + +/datum/sprite_accessory/tail/taur + name = "You should not see this..." + icon = 'icons/mob/vore/taurs_vr.dmi' + do_colouration = 1 // Yes color, using tail color + color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY + + + //Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to + //duplicate all the messages, and it starts getting awkward. These are singletons, anyway! + + //Messages to owner when stepping on/over + var/msg_owner_help_walk = "You carefully step over %prey." + var/msg_owner_help_run = "You carefully step over %prey." + var/msg_owner_harm_walk = "You methodically place your foot down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + var/msg_owner_harm_run = "You carelessly step down onto %prey, crushing them!" + var/msg_owner_disarm_walk = "You firmly push your foot down on %prey, painfully but harmlessly pinning them to the ground!" + var/msg_owner_disarm_run = "You quickly push %prey to the ground with your foot!" + var/msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + var/msg_owner_grab_success = "You pin %prey down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!" + + //Messages to prey when stepping on/over + var/msg_prey_help_walk = "%owner steps over you carefully!" + var/msg_prey_help_run = "%owner steps over you carefully!" + var/msg_prey_harm_walk = "%owner methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!" + var/msg_prey_harm_run = "%owner steps carelessly on your body, crushing you!" + var/msg_prey_disarm_walk = "%owner firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!" + var/msg_prey_disarm_run = "%owner pushes you down to the ground with their foot!" + var/msg_prey_grab_fail = "%owner steps down and squishes you with their foot, forcing you down to the ground!" + var/msg_prey_grab_success = "%owner pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!" + + //Messages for smalls moving under larges + var/msg_owner_stepunder = "%owner runs between your legs." //Weird becuase in the case this is used, %owner is the 'bumper' (src) + var/msg_prey_stepunder = "You run between %prey's legs." //Same, inverse + +/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 32x64 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite. + name = "Long Lizard Tail (Roiz Lizden)" + icon_state = "roiz_tail_s" + do_colouration = 0 + ckeys_allowed = list("spoopylizz") + +/datum/sprite_accessory/tail/taur/wolf + name = "Wolf (Taur)" + icon_state = "wolf_s" + +/datum/sprite_accessory/tail/taur/wolf/wolf_2c + name = "Wolf dual-color (Taur)" + icon_state = "wolf_s" + extra_overlay = "wolf_markings" + +/datum/sprite_accessory/tail/taur/wolf/synthwolf + name = "SynthWolf dual-color (Taur)" + icon_state = "synthwolf_s" + extra_overlay = "synthwolf_markings" + +/datum/sprite_accessory/tail/taur/naga + name = "Naga (Taur)" + icon_state = "naga_s" + + msg_owner_help_walk = "You carefully slither around %prey." + msg_prey_help_walk = "%owner's huge tail slithers past beside you!" + + msg_owner_help_run = "You carefully slither around %prey." + msg_prey_help_run = "%owner's huge tail slithers past beside you!" + + msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!" + msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!" + + msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!" + msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!" + + msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!" + msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!" + + msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!" + msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!" + + msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!" + msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!" + + msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!" + msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!" + + msg_prey_stepunder = "You jump over %prey's thick tail." + msg_owner_stepunder = "%owner bounds over your tail." + +/datum/sprite_accessory/tail/taur/naga/naga_2c + name = "Naga dual-color (Taur)" + icon_state = "naga_s" + extra_overlay = "naga_markings" + +/datum/sprite_accessory/tail/taur/horse + name = "Horse (Taur)" + icon_state = "horse_s" + + msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" + + msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!" + msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!" + +/datum/sprite_accessory/tail/taur/horse/synthhorse + name = "SynthHorse dual-color (Taur)" + icon_state = "synthhorse_s" + extra_overlay = "synthhorse_markings" + +/datum/sprite_accessory/tail/taur/cow + name = "Cow (Taur)" + icon_state = "cow_s" + + msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" + + msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!" + msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!" + +/datum/sprite_accessory/tail/taur/deer + name = "Deer dual-color (Taur)" + icon_state = "deer_s" + extra_overlay = "deer_markings" + + msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" + + msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!" + msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!" + +/datum/sprite_accessory/tail/taur/lizard + name = "Lizard (Taur)" + icon_state = "lizard_s" + +/datum/sprite_accessory/tail/taur/lizard/lizard_2c + name = "Lizard dual-color (Taur)" + icon_state = "lizard_s" + extra_overlay = "lizard_markings" + +/datum/sprite_accessory/tail/taur/lizard/synthlizard + name = "SynthLizard dual-color (Taur)" + icon_state = "synthlizard_s" + extra_overlay = "synthlizard_markings" + +/datum/sprite_accessory/tail/taur/spider + name = "Spider (Taur)" + icon_state = "spider_s" + + msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" + + msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!" + msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" + +/datum/sprite_accessory/tail/taur/tents + name = "Tentacles (Taur)" + icon_state = "tent_s" + + msg_prey_stepunder = "You run between %prey's tentacles." + msg_owner_stepunder = "%owner runs between your tentacles." + + msg_owner_disarm_run = "You quickly push %prey to the ground with some of your tentacles!" + msg_prey_disarm_run = "%owner pushes you down to the ground with some of their tentacles!" + + msg_owner_disarm_walk = "You push down on %prey with some of your tentacles, pinning them down firmly under you!" + msg_prey_disarm_walk = "%owner pushes down on you with some of their tentacles, pinning you down firmly below them!" + + msg_owner_harm_run = "Your tentacles carelessly slide past %prey, crushing them!" + msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their tentacles!" + + msg_owner_harm_walk = "Your tentacles methodically apply pressure on %prey's body, crushing them against the floor below!" + msg_prey_harm_walk = "%owner's thick tentacles methodically apply pressure on your body, crushing you into the floor below!" + + msg_owner_grab_success = "You slide over %prey with your tentacles, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your tentacles!" + msg_prey_grab_success = "%owner slides over you with their tentacles, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their tentacles!" + + msg_owner_grab_fail = "You step down onto %prey with one of your tentacles, forcing them onto the ground!" + msg_prey_grab_fail = "%owner steps down onto you with one of their tentacles, squishing you and forcing you onto the ground!" + +/datum/sprite_accessory/tail/taur/feline + name = "Feline (Taur)" + icon_state = "feline_s" + +/datum/sprite_accessory/tail/taur/feline/feline_2c + name = "Feline dual-color (Taur)" + icon_state = "feline_s" + extra_overlay = "feline_markings" + +/datum/sprite_accessory/tail/taur/feline/synthfeline + name = "SynthFeline dual-color (Taur)" + icon_state = "synthfeline_s" + extra_overlay = "synthfeline_markings" + +/datum/sprite_accessory/tail/taur/slug + name = "Slug (Taur)" + icon_state = "slug_s" + + msg_owner_help_walk = "You carefully slither around %prey." + msg_prey_help_walk = "%owner's huge tail slithers past beside you!" + + msg_owner_help_run = "You carefully slither around %prey." + msg_prey_help_run = "%owner's huge tail slithers past beside you!" + + msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!" + msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!" + + msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!" + msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!" + + msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!" + msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!" + + msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!" + msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!" + + msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!" + msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!" + + msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!" + msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!" + + msg_prey_stepunder = "You jump over %prey's thick tail." + msg_owner_stepunder = "%owner bounds over your tail." + +/datum/sprite_accessory/tail/taur/frog + name = "Frog (Taur)" + icon_state = "frog_s" + +/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above. + name = "Drake (Taur)" + icon_state = "drake_s" + extra_overlay = "drake_markings" + +/datum/sprite_accessory/tail/taur/otie + name = "Otie (Taur)" + icon_state = "otie_s" + extra_overlay = "otie_markings" + +//wickedtemp: Chakat Tempest +/datum/sprite_accessory/tail/taur/feline/tempest + name = "Feline (wickedtemp) (Taur)" + icon_state = "tempest_s" + ckeys_allowed = list("wickedtemp") + +//silencedmp5a5: Serdykov Antoz +/datum/sprite_accessory/tail/taur/wolf/serdy + name = "CyberSerdy (silencedmp5a5) (Taur)" + icon_state = "serdy_s" + ckeys_allowed = list("silencedmp5a5") + +//liquidfirefly: Ariana Scol +/datum/sprite_accessory/tail/taur/centipede + name = "Centipede (liquidfirefly) (Taur)" + icon_state = "ariana_s" + ckeys_allowed = list("liquidfirefly") + do_colouration = 0 + + msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" + + msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!" + msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" + +//liquidfirefly: Ariana Scol +/datum/sprite_accessory/tail/taur/alraune + name = "Alraune (natje) (Taur)" + icon_state = "alraune_s" + ani_state = "alraune_closed_s" + ckeys_allowed = list("natje") + do_colouration = 0 + + msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" + msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" + + msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!" + msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!" + + msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!" + msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!" + + msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!" + msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!" + + msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" + msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 8e067a46e8..5ea245462c 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -270,6 +270,31 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/teshari + name = "Teshari (colorable fluff)" + desc = "" + icon_state = "teshari" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "teshariinner" + +/datum/sprite_accessory/ears/tesharihigh + name = "Teshari upper ears (colorable fluff)" + desc = "" + icon_state = "tesharihigh" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "tesharihighinner" + +/datum/sprite_accessory/ears/tesharilow + name = "Teshari lower ears (colorable fluff)" + desc = "" + icon_state = "tesharilow" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "tesharilowinner" + + // Special snowflake ears go below here. /datum/sprite_accessory/ears/molenar_kitsune @@ -896,6 +921,14 @@ color_blend_mode = ICON_MULTIPLY extra_overlay = "deertail_mark" +/datum/sprite_accessory/tail/teshari_fluffytail + name = "Teshari alternative, colorable" + desc = "" + icon_state = "teshari_fluffytail" + extra_overlay = "teshari_fluffytail_mark" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + //For all species tails. Includes haircolored tails. /datum/sprite_accessory/tail/special name = "Blank tail. Do not select." @@ -1093,338 +1126,4 @@ desc = "" icon_state = "zenghu_taj" -/* -//////////////////////////// -/ =--------------------= / -/ == Taur Definitions == / -/ =--------------------= / -//////////////////////////// -*/ - -// Taur sprites are now a subtype of tail since they are mutually exclusive anyway. - -/datum/sprite_accessory/tail/taur - name = "You should not see this..." - icon = 'icons/mob/vore/taurs_vr.dmi' - do_colouration = 1 // Yes color, using tail color - color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY - - //Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to - //duplicate all the messages, and it starts getting awkward. These are singletons, anyway! - - //Messages to owner when stepping on/over - var/msg_owner_help_walk = "You carefully step over %prey." - var/msg_owner_help_run = "You carefully step over %prey." - var/msg_owner_harm_walk = "You methodically place your foot down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - var/msg_owner_harm_run = "You carelessly step down onto %prey, crushing them!" - var/msg_owner_disarm_walk = "You firmly push your foot down on %prey, painfully but harmlessly pinning them to the ground!" - var/msg_owner_disarm_run = "You quickly push %prey to the ground with your foot!" - var/msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - var/msg_owner_grab_success = "You pin %prey down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!" - - //Messages to prey when stepping on/over - var/msg_prey_help_walk = "%owner steps over you carefully!" - var/msg_prey_help_run = "%owner steps over you carefully!" - var/msg_prey_harm_walk = "%owner methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!" - var/msg_prey_harm_run = "%owner steps carelessly on your body, crushing you!" - var/msg_prey_disarm_walk = "%owner firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!" - var/msg_prey_disarm_run = "%owner pushes you down to the ground with their foot!" - var/msg_prey_grab_fail = "%owner steps down and squishes you with their foot, forcing you down to the ground!" - var/msg_prey_grab_success = "%owner pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!" - - //Messages for smalls moving under larges - var/msg_owner_stepunder = "%owner runs between your legs." //Weird becuase in the case this is used, %owner is the 'bumper' (src) - var/msg_prey_stepunder = "You run between %prey's legs." //Same, inverse - -/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 32x64 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite. - name = "Long Lizard Tail (Roiz Lizden)" - icon_state = "roiz_tail_s" - do_colouration = 0 - ckeys_allowed = list("spoopylizz") - -/datum/sprite_accessory/tail/taur/wolf - name = "Wolf (Taur)" - icon_state = "wolf_s" - -/datum/sprite_accessory/tail/taur/wolf/wolf_2c - name = "Wolf dual-color (Taur)" - icon_state = "wolf_s" - extra_overlay = "wolf_markings" - -/datum/sprite_accessory/tail/taur/wolf/synthwolf - name = "SynthWolf dual-color (Taur)" - icon_state = "synthwolf_s" - extra_overlay = "synthwolf_markings" - -/datum/sprite_accessory/tail/taur/naga - name = "Naga (Taur)" - icon_state = "naga_s" - - msg_owner_help_walk = "You carefully slither around %prey." - msg_prey_help_walk = "%owner's huge tail slithers past beside you!" - - msg_owner_help_run = "You carefully slither around %prey." - msg_prey_help_run = "%owner's huge tail slithers past beside you!" - - msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!" - msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!" - - msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!" - msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!" - - msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!" - msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!" - - msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!" - msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!" - - msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!" - msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!" - - msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!" - msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!" - - msg_prey_stepunder = "You jump over %prey's thick tail." - msg_owner_stepunder = "%owner bounds over your tail." - -/datum/sprite_accessory/tail/taur/naga/naga_2c - name = "Naga dual-color (Taur)" - icon_state = "naga_s" - extra_overlay = "naga_markings" - -/datum/sprite_accessory/tail/taur/horse - name = "Horse (Taur)" - icon_state = "horse_s" - - msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" - msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" - - msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!" - msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!" - - msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!" - - msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!" - msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!" - - msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!" - -/datum/sprite_accessory/tail/taur/horse/synthhorse - name = "SynthHorse dual-color (Taur)" - icon_state = "synthhorse_s" - extra_overlay = "synthhorse_markings" - -/datum/sprite_accessory/tail/taur/cow - name = "Cow (Taur)" - icon_state = "cow_s" - - msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" - msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" - - msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!" - msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!" - - msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!" - - msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!" - msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!" - - msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!" - -/datum/sprite_accessory/tail/taur/deer - name = "Deer dual-color (Taur)" - icon_state = "deer_s" - extra_overlay = "deer_markings" - - msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!" - msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!" - - msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!" - msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!" - - msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!" - - msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!" - msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!" - - msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!" - -/datum/sprite_accessory/tail/taur/lizard - name = "Lizard (Taur)" - icon_state = "lizard_s" - -/datum/sprite_accessory/tail/taur/lizard/lizard_2c - name = "Lizard dual-color (Taur)" - icon_state = "lizard_s" - extra_overlay = "lizard_markings" - -/datum/sprite_accessory/tail/taur/lizard/synthlizard - name = "SynthLizard dual-color (Taur)" - icon_state = "synthlizard_s" - extra_overlay = "synthlizard_markings" - -/datum/sprite_accessory/tail/taur/spider - name = "Spider (Taur)" - icon_state = "spider_s" - - msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" - msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" - - msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!" - msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!" - - msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!" - - msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!" - msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!" - - msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" - -/datum/sprite_accessory/tail/taur/tents - name = "Tentacles (Taur)" - icon_state = "tent_s" - - msg_prey_stepunder = "You run between %prey's tentacles." - msg_owner_stepunder = "%owner runs between your tentacles." - - msg_owner_disarm_run = "You quickly push %prey to the ground with some of your tentacles!" - msg_prey_disarm_run = "%owner pushes you down to the ground with some of their tentacles!" - - msg_owner_disarm_walk = "You push down on %prey with some of your tentacles, pinning them down firmly under you!" - msg_prey_disarm_walk = "%owner pushes down on you with some of their tentacles, pinning you down firmly below them!" - - msg_owner_harm_run = "Your tentacles carelessly slide past %prey, crushing them!" - msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their tentacles!" - - msg_owner_harm_walk = "Your tentacles methodically apply pressure on %prey's body, crushing them against the floor below!" - msg_prey_harm_walk = "%owner's thick tentacles methodically apply pressure on your body, crushing you into the floor below!" - - msg_owner_grab_success = "You slide over %prey with your tentacles, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your tentacles!" - msg_prey_grab_success = "%owner slides over you with their tentacles, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their tentacles!" - - msg_owner_grab_fail = "You step down onto %prey with one of your tentacles, forcing them onto the ground!" - msg_prey_grab_fail = "%owner steps down onto you with one of their tentacles, squishing you and forcing you onto the ground!" - -/datum/sprite_accessory/tail/taur/feline - name = "Feline (Taur)" - icon_state = "feline_s" - -/datum/sprite_accessory/tail/taur/feline/feline_2c - name = "Feline dual-color (Taur)" - icon_state = "feline_s" - extra_overlay = "feline_markings" - -/datum/sprite_accessory/tail/taur/feline/synthfeline - name = "SynthFeline dual-color (Taur)" - icon_state = "synthfeline_s" - extra_overlay = "synthfeline_markings" - -/datum/sprite_accessory/tail/taur/slug - name = "Slug (Taur)" - icon_state = "slug_s" - - msg_owner_help_walk = "You carefully slither around %prey." - msg_prey_help_walk = "%owner's huge tail slithers past beside you!" - - msg_owner_help_run = "You carefully slither around %prey." - msg_prey_help_run = "%owner's huge tail slithers past beside you!" - - msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!" - msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!" - - msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!" - msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!" - - msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!" - msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!" - - msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!" - msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!" - - msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!" - msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!" - - msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!" - msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!" - - msg_prey_stepunder = "You jump over %prey's thick tail." - msg_owner_stepunder = "%owner bounds over your tail." - -/datum/sprite_accessory/tail/taur/frog - name = "Frog (Taur)" - icon_state = "frog_s" - -/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above. - name = "Drake (Taur)" - icon_state = "drake_s" - extra_overlay = "drake_markings" - -/datum/sprite_accessory/tail/taur/otie - name = "Otie (Taur)" - icon_state = "otie_s" - extra_overlay = "otie_markings" - -//wickedtemp: Chakat Tempest -/datum/sprite_accessory/tail/taur/feline/tempest - name = "Feline (wickedtemp) (Taur)" - icon_state = "tempest_s" - ckeys_allowed = list("wickedtemp") - -//silencedmp5a5: Serdykov Antoz -/datum/sprite_accessory/tail/taur/wolf/serdy - name = "CyberSerdy (silencedmp5a5) (Taur)" - icon_state = "serdy_s" - ckeys_allowed = list("silencedmp5a5") - -//liquidfirefly: Ariana Scol -/datum/sprite_accessory/tail/taur/centipede - name = "Centipede (liquidfirefly) (Taur)" - icon_state = "ariana_s" - ckeys_allowed = list("liquidfirefly") - do_colouration = 0 - - msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" - msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" - - msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!" - msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!" - - msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!" - - msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!" - msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!" - - msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" - -//liquidfirefly: Ariana Scol -/datum/sprite_accessory/tail/taur/alraune - name = "Alraune (natje) (Taur)" - icon_state = "alraune_s" - ani_state = "alraune_closed_s" - ckeys_allowed = list("natje") - do_colouration = 0 - - msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!" - msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!" - - msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!" - msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!" - - msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!" - msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!" - - msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!" - msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!" - - msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!" - msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!" +//Taurs moved to a separate file due to extra code around them diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm index c9321880bc..531422bf63 100644 --- a/code/modules/vore/appearance/update_icons_vr.dm +++ b/code/modules/vore/appearance/update_icons_vr.dm @@ -1,4 +1,3 @@ -#define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur) var/global/list/wing_icon_cache = list() /mob/living/carbon/human/proc/get_ears_overlay() diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 1a8188d089..92d59929c5 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -13,6 +13,7 @@ next_process = times_fired + (6 SECONDS/wait) //Set up our next process time. var/play_sound //Potential sound to play at the end to avoid code duplication. + var/to_update = FALSE //Did anything update worthy happen? /////////////////////////// Auto-Emotes /////////////////////////// if(contents.len && next_emote <= times_fired) @@ -41,7 +42,7 @@ items_preserved |= I else digest_item(I) - owner.updateVRPanel() + to_update = TRUE did_an_item = TRUE //Handle eaten mobs @@ -72,8 +73,7 @@ items_preserved |= I else digest_item(I) - owner.updateVRPanel() - H.updateVRPanel() + to_update = TRUE break ///////////////////////////// DM_HOLD ///////////////////////////// @@ -103,7 +103,7 @@ digest_alert_owner = replacetext(digest_alert_owner,"%prey",M) digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name)) - digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner) + 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)) @@ -120,6 +120,8 @@ R.cell.charge += 25*compensation else owner.nutrition += 4.5*compensation + to_update = TRUE + continue // Deal digestion damage (and feed the pred) @@ -135,9 +137,7 @@ owner.nutrition += offset*(4.5*(digest_brute+digest_burn)/difference) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved. else owner.nutrition += 4.5*(digest_brute+digest_burn)/difference - M.updateVRPanel() - owner.updateVRPanel() //////////////////////////// DM_ABSORB //////////////////////////// else if(digest_mode == DM_ABSORB) @@ -156,6 +156,7 @@ owner.nutrition += oldnutrition else if(M.nutrition < 100) //When they're finally drained. absorb_living(M) + to_update = TRUE //////////////////////////// DM_UNABSORB //////////////////////////// else if(digest_mode == DM_UNABSORB) @@ -168,6 +169,7 @@ to_chat(M,"You suddenly feel solid again ") to_chat(owner,"You feel like a part of you is missing.") owner.nutrition -= 100 + to_update = TRUE //////////////////////////// DM_DRAIN //////////////////////////// else if(digest_mode == DM_DRAIN) @@ -261,4 +263,11 @@ /////////////////////////// Make any noise /////////////////////////// if(play_sound) playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises) + if(to_update) + for(var/mob/living/M in contents) + if(M.client) + M.updateVRPanel() + if(owner.client) + owner.updateVRPanel() + return SSBELLIES_PROCESSED diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 0d50650924..31a9e7e476 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -507,7 +507,7 @@ selected.name = new_name if(href_list["b_mode"]) - var/list/menu_list = selected.digest_modes + var/list/menu_list = selected.digest_modes.Copy() if(istype(usr,/mob/living/carbon/human)) menu_list += DM_TRANSFORM @@ -526,7 +526,7 @@ selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change if(href_list["b_addons"]) - var/list/menu_list = selected.mode_flag_list + var/list/menu_list = selected.mode_flag_list.Copy() var/toggle_addon = input("Toggle Addon") as null|anything in menu_list if(!toggle_addon) return 0 diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index 1776ca6eeb..57b83c9876 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -172,27 +172,6 @@ can_hold = list(/obj/item/clothing/under/swimsuit/) has_items = list(/obj/item/clothing/under/swimsuit/fluff/penelope) -//Arokha:Aronai Kadigan -/obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai - name = "blue medical satchel" - desc = "A medical satchel done up in blue and white." - - New() - ..() //Might look like a lot... but all small items. - //Centcom stuff and permit - new /obj/item/weapon/card/id/centcom/station/fluff/aronai(src) - //new /obj/item/clothing/accessory/permit/gun/fluff/aronai_kadigan(src) - //Gun and holster - //new /obj/item/weapon/gun/projectile/nsfw(src) - //new /obj/item/ammo_magazine/nsfw_mag(src) - //new /obj/item/ammo_casing/nsfw_batt/stun(src) - //new /obj/item/ammo_casing/nsfw_batt/stun(src) - //new /obj/item/ammo_casing/nsfw_batt/net(src) - //new /obj/item/clothing/accessory/holster(src) - -/obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai/digest_act(...) - return FALSE //I get eaten a lot, okay - //Aerowing:Sebastian Aji /obj/item/weapon/storage/box/fluff/sebastian_aji name = "Sebastian's Lumoco Arms P3 Box" diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index c903dec636..539d9f2613 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -1797,3 +1797,14 @@ Departamental Swimsuits, for general use else H << "This suit is not designed for you." return 0 + +//Zigfe:Zaoozaoo Xrimxuqmqixzix +/obj/item/clothing/head/fluff/zao + name = "Zao's Hat" + desc = "A black hat that has an uncanny similarity to the HoS's hat. There's a small letter Z sewn on the inside of the brim." + + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "zao_cap" + + icon_override = 'icons/vore/custom_clothes_vr.dmi' + item_state = "zao_cap_mob" \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index b42c15cc8c..50f238fd59 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -347,6 +347,11 @@ name = "\improper MEUSOC .45" desc = "Some serious drywall work, coming up!" */ +//hzdonut:Jesse Soemmer +/obj/item/weapon/gun/projectile/revolver/fluff/jesselemat + name = "Modified LeMat" + desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel for loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel. This one appears to have had it's secondary barrel sealed off and looks to be in pristine condition. Either it's brand new, or its owner takes very good care of it." + icon_state = "lemat" //////////////////// Energy Weapons //////////////////// @@ -794,4 +799,4 @@ if(T.z in using_map.map_levels) to_chat(user, "The safety device prevents the gun from firing this close to the facility.") return 0 - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/vore/fluffstuff/custom_permits_vr.dm b/code/modules/vore/fluffstuff/custom_permits_vr.dm index f5afc8aaec..c96783e246 100644 --- a/code/modules/vore/fluffstuff/custom_permits_vr.dm +++ b/code/modules/vore/fluffstuff/custom_permits_vr.dm @@ -51,6 +51,11 @@ name = "Sorrel Cavalet's Sidearm Permit" desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on September 26th, 2562." +// hzdonut:Jesse Soemmer +/obj/item/clothing/accessory/permit/gun/fluff/JesseSoemmer + name = "Jesse Soemmer's Sidearm Permit" + desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on March 4, 2563." + /* Legacy Permits // BEGIN - PROTOTYPE /obj/item/clothing/accessory/permit/gun/fluff diff --git a/code/modules/vore/fluffstuff/guns/sickshot.dm b/code/modules/vore/fluffstuff/guns/sickshot.dm index f7d5a4b291..ea0820a908 100644 --- a/code/modules/vore/fluffstuff/guns/sickshot.dm +++ b/code/modules/vore/fluffstuff/guns/sickshot.dm @@ -3,7 +3,7 @@ name = "\improper MPA6 \'Sickshot\'" desc = "Need to stun someone? Don't mind having to clean up the mess afterwards? The Sickshot is the answer to your prayers. \ Using a short-range concentrated blast of disruptive sound, the Sickshot will nauseate and confuse the target for several seconds. NOTE: Not suitable \ - for use in vacuum, or on animals. May cause contraction and release of various 'things' from various 'orifices'." + for use in vacuum. Usage on animals may cause panic and rage without stunning. May cause contraction and release of various 'things' from various 'orifices', even if the target is already dead." description_info = "This gun causes nausea in targets, stunning them briefly and causing vomiting. It will also cause them to vomit up prey, sometimes. Repeated shots may help in that case." description_fluff = "" diff --git a/config/custom_items.txt b/config/custom_items.txt index a81ee5bd5e..34e28c056f 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -79,7 +79,7 @@ item_desc: A medical jacket straight from Central Command. { ckey: arokha character_name: Aronai Kadigan -item_path: /obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai +item_path: /obj/item/weapon/card/id/centcom/station/fluff/aronai } { @@ -300,6 +300,24 @@ character_name: Belle Day item_path: /obj/item/weapon/implanter/reagent_generator/belle } +{ +ckey: hzdonut +character_name: Jesse Soemmer +item_path:/obj/item/weapon/gun/projectile/revolver/fluff/jesselemat +} + +{ +ckey: hzdonut +character_name: Jesse Soemmer +item_path:/obj/item/clothing/accessory/permit/gun/fluff/JesseSoemmer +} + +{ +ckey: hzdonut +character_name: Jesse Soemmer +item_path:/obj/item/clothing/accessory/holster/hip +} + # ######## I CKEYS { @@ -703,12 +721,12 @@ item_path: /obj/item/clothing/glasses/sunglasses/fluff/alfonso #req_access = 1 #} -#{ -#ckey: silencedmp5a5 -#character_name: NT-HASD #556 -#item_path: /obj/item/device/modkit_conversion/hasd -#req_access = 1 -#} +{ +ckey: silencedmp5a5 +character_name: NT-HASD #556 +item_path: /obj/item/device/modkit_conversion/hasd +req_access = 1 +} { ckey: silvertalismen @@ -936,6 +954,12 @@ character_name: Zeke Arachi item_path: /obj/item/clothing/head/fluff/xeno } +{ +ckey: zigfe +character_name: Zaoozaoo Xrimxuqmqixzix +item_path: /obj/item/clothing/head/fluff/zao +} + { ckey: zodiacshadow character_name: Nehi Maximus diff --git a/config/example/motd.txt b/config/example/motd.txt index ac75c145cf..20b67d09c9 100644 --- a/config/example/motd.txt +++ b/config/example/motd.txt @@ -1,5 +1,5 @@

Welcome to Space Station 13!

--This server is running Baystation 12's modification of the /tg/station13 SS13 code. +-This server is running the Polaris modification of the Baystation12 SS13 code.

-Bugtracker: for posting of bugs and issues. +Bugtracker: for posting of bugs and issues. diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 1bbb1d7d76..d9a7f0bd00 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/effects/projectiles.dmi b/icons/effects/projectiles.dmi index b20126b60d..2bf7813e05 100644 Binary files a/icons/effects/projectiles.dmi and b/icons/effects/projectiles.dmi differ diff --git a/icons/mob/human_face_or_vr.dmi b/icons/mob/human_face_or_vr.dmi index fda6c68b48..3642b50afb 100644 Binary files a/icons/mob/human_face_or_vr.dmi and b/icons/mob/human_face_or_vr.dmi differ diff --git a/icons/mob/human_face_vr.dmi b/icons/mob/human_face_vr.dmi index 9ffa67f0d8..80c2d6a317 100644 Binary files a/icons/mob/human_face_vr.dmi and b/icons/mob/human_face_vr.dmi differ diff --git a/icons/mob/human_face_vr_add.dmi b/icons/mob/human_face_vr_add.dmi index e8f51f32eb..1656e00a2d 100644 Binary files a/icons/mob/human_face_vr_add.dmi and b/icons/mob/human_face_vr_add.dmi differ diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index ad94451018..a41a1db5cf 100644 Binary files a/icons/mob/human_races/markings_vr.dmi and b/icons/mob/human_races/markings_vr.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index aeffd11f4d..1b0e592001 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/modifier_effects.dmi b/icons/mob/modifier_effects.dmi index 947c6532f9..262e45e717 100644 Binary files a/icons/mob/modifier_effects.dmi and b/icons/mob/modifier_effects.dmi differ diff --git a/icons/mob/screen1_construct.dmi b/icons/mob/screen1_construct.dmi index 67a37ccd73..0502ba5380 100644 Binary files a/icons/mob/screen1_construct.dmi and b/icons/mob/screen1_construct.dmi differ diff --git a/icons/mob/screen_spells.dmi b/icons/mob/screen_spells.dmi index de2e1354c3..c320d53590 100644 Binary files a/icons/mob/screen_spells.dmi and b/icons/mob/screen_spells.dmi differ diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi index bda8585543..126f2ba426 100644 Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index f24c702e82..e5e0799996 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ diff --git a/icons/obj/items_vr.dmi b/icons/obj/items_vr.dmi index 312f2691c1..46276e7f7c 100644 Binary files a/icons/obj/items_vr.dmi and b/icons/obj/items_vr.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index 5cd12ac238..cdd0e8fa93 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/maps/southern_cross/job/outfits.dm b/maps/southern_cross/job/outfits.dm index 316c9d434c..54ac7f1d6b 100644 --- a/maps/southern_cross/job/outfits.dm +++ b/maps/southern_cross/job/outfits.dm @@ -57,7 +57,7 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go suit = /obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar shoes = /obj/item/clothing/shoes/boots/winter/explorer l_ear = /obj/item/device/radio/headset/sar - l_hand = /obj/item/weapon/storage/firstaid/adv + l_hand = /obj/item/weapon/storage/firstaid/regular belt = /obj/item/weapon/storage/belt/medical/emt pda_slot = slot_l_store id_type = /obj/item/weapon/card/id/medical/sar diff --git a/maps/tether/submaps/aerostat/_aerostat.dm b/maps/tether/submaps/aerostat/_aerostat.dm index 6bc3ea6f3e..0200052956 100644 --- a/maps/tether/submaps/aerostat/_aerostat.dm +++ b/maps/tether/submaps/aerostat/_aerostat.dm @@ -61,7 +61,7 @@ faction = "aerostat_inside" atmos_comp = TRUE prob_spawn = 100 - prob_fall = 10 + prob_fall = 50 guard = 20 mobs_to_pick_from = list( /mob/living/simple_animal/hostile/hivebot/range = 3, @@ -75,7 +75,7 @@ faction = "aerostat_surface" atmos_comp = TRUE prob_spawn = 100 - prob_fall = 10 + prob_fall = 50 guard = 20 mobs_to_pick_from = list( /mob/living/simple_animal/hostile/jelly = 3, diff --git a/maps/tether/submaps/aerostat/aerostat.dmm b/maps/tether/submaps/aerostat/aerostat.dmm index 9275989478..234d87772c 100644 --- a/maps/tether/submaps/aerostat/aerostat.dmm +++ b/maps/tether/submaps/aerostat/aerostat.dmm @@ -391,8 +391,7 @@ /area/tether_away/aerostat) "aW" = ( /obj/structure/cable/heavyduty{ - icon_state = "1-8"; - tag = "icon-1-4" + icon_state = "1-8" }, /obj/effect/floor_decal/rust, /obj/effect/floor_decal/rust, @@ -818,8 +817,7 @@ /area/shuttle/aerostat/docked) "cm" = ( /obj/structure/cable/heavyduty{ - icon_state = "1-8"; - tag = "icon-1-4" + icon_state = "1-8" }, /turf/simulated/floor/tiled/techfloor/virgo2, /area/tether_away/aerostat/inside) diff --git a/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm b/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm index e0a80783f1..27cdc7804f 100644 --- a/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm +++ b/maps/tether/submaps/aerostat/submaps/Blackshuttledown.dmm @@ -31,23 +31,20 @@ /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /turf/simulated/shuttle/wall/dark{ icon_state = "dark6"; - name = "Unknown Shuttle"; - tag = "icon-dark6" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "aj" = ( /turf/simulated/shuttle/wall/dark{ icon_state = "dark0"; - name = "Unknown Shuttle"; - tag = "icon-dark0" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "ak" = ( /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /turf/simulated/shuttle/wall/dark{ icon_state = "dark10"; - name = "Unknown Shuttle"; - tag = "icon-dark10" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "al" = ( @@ -67,8 +64,7 @@ }, /turf/simulated/shuttle/wall/dark{ icon_state = "dark0"; - name = "Unknown Shuttle"; - tag = "icon-dark0" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "an" = ( @@ -121,8 +117,7 @@ /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /turf/simulated/shuttle/wall/dark{ icon_state = "dark5"; - name = "Unknown Shuttle"; - tag = "icon-dark5" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "av" = ( @@ -149,8 +144,7 @@ /turf/simulated/mineral/floor/ignore_mapgen/virgo2, /turf/simulated/shuttle/wall/dark{ icon_state = "dark9"; - name = "Unknown Shuttle"; - tag = "icon-dark9" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "aB" = ( @@ -325,8 +319,7 @@ }, /turf/simulated/shuttle/wall/dark{ icon_state = "dark0"; - name = "Unknown Shuttle"; - tag = "icon-dark0" + name = "Unknown Shuttle" }, /area/submap/virgo2/Blackshuttledown) "bd" = ( diff --git a/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm b/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm index 37089e5433..758759459f 100644 --- a/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm +++ b/maps/tether/submaps/aerostat/submaps/DecoupledEngine.dmm @@ -107,7 +107,6 @@ /area/submap/virgo2/DecoupledEngine) "az" = ( /obj/machinery/atmospherics/pipe/simple/visible{ - tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6 }, @@ -133,17 +132,6 @@ }, /turf/simulated/floor, /area/submap/virgo2/DecoupledEngine) -"aC" = ( -/obj/structure/shuttle/engine/propulsion{ - tag = "icon-propulsion_r (EAST)"; - icon_state = "propulsion_r"; - dir = 4 - }, -/turf/simulated/floor/water{ - color = "#ddaa77"; - name = "shallow water(?)" - }, -/area/submap/virgo2/DecoupledEngine) "aD" = ( /obj/structure/lattice, /obj/structure/grille, @@ -202,7 +190,6 @@ "aL" = ( /obj/structure/grille/broken, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4 }, @@ -286,12 +273,10 @@ "aV" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4 }, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8 }, @@ -299,7 +284,6 @@ /area/submap/virgo2/DecoupledEngine) "aW" = ( /obj/machinery/atmospherics/pipe/simple/visible{ - tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5 }, @@ -366,7 +350,6 @@ /obj/machinery/power/rad_collector, /obj/structure/window/phoronreinforced, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8 }, @@ -386,7 +369,6 @@ "bh" = ( /obj/machinery/power/rad_collector, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4 }, @@ -428,13 +410,11 @@ }, /obj/structure/grille, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4 }, /obj/structure/window/phoronreinforced, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8 }, @@ -470,12 +450,10 @@ "bs" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1 }, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (WEST)"; icon_state = "phoronrwindow"; dir = 8 }, @@ -485,7 +463,6 @@ "bt" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1 }, @@ -495,12 +472,10 @@ "bu" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (NORTH)"; icon_state = "phoronrwindow"; dir = 1 }, /obj/structure/window/phoronreinforced{ - tag = "icon-phoronrwindow (EAST)"; icon_state = "phoronrwindow"; dir = 4 }, @@ -1171,7 +1146,7 @@ ad ad ad at -aC +aO aO aY bi diff --git a/maps/tether/submaps/aerostat/submaps/Shack1.dmm b/maps/tether/submaps/aerostat/submaps/Shack1.dmm index 62b0eac0de..2cd9cd3dae 100644 --- a/maps/tether/submaps/aerostat/submaps/Shack1.dmm +++ b/maps/tether/submaps/aerostat/submaps/Shack1.dmm @@ -14,7 +14,6 @@ "e" = ( /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/holofloor/wood{ - tag = "icon-wood_broken1"; icon_state = "wood_broken1" }, /area/submap/virgo2/Shack1) @@ -37,14 +36,12 @@ /area/submap/virgo2/Shack1) "j" = ( /turf/simulated/floor/holofloor/wood{ - tag = "icon-wood_broken0"; icon_state = "wood_broken0" }, /area/submap/virgo2/Shack1) "k" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/holofloor/wood{ - tag = "icon-wood_broken5"; icon_state = "wood_broken5" }, /area/submap/virgo2/Shack1) @@ -54,7 +51,6 @@ /area/submap/virgo2/Shack1) "n" = ( /turf/simulated/floor/holofloor/wood{ - tag = "icon-wood_broken3"; icon_state = "wood_broken3" }, /area/submap/virgo2/Shack1) @@ -80,7 +76,6 @@ /area/submap/virgo2/Shack1) "s" = ( /turf/simulated/floor/holofloor/wood{ - tag = "icon-wood_broken6"; icon_state = "wood_broken6" }, /area/submap/virgo2/Shack1) diff --git a/maps/tether/submaps/alienship/_alienship.dm b/maps/tether/submaps/alienship/_alienship.dm index 999419d354..be9f764155 100644 --- a/maps/tether/submaps/alienship/_alienship.dm +++ b/maps/tether/submaps/alienship/_alienship.dm @@ -107,7 +107,7 @@ icon = 'alienship.dmi' icon_state = "alien_injector" item_state = "autoinjector" - filled_reagents = list("rezadone" = 5) + filled_reagents = list("rezadone" = 4, "corophizine" = 1) // -- Areas -- // diff --git a/maps/tether/submaps/alienship/alienship.dmm b/maps/tether/submaps/alienship/alienship.dmm index 6ee2a8af37..140226691b 100644 --- a/maps/tether/submaps/alienship/alienship.dmm +++ b/maps/tether/submaps/alienship/alienship.dmm @@ -278,7 +278,6 @@ /area/tether_away/alienship) "bP" = ( /obj/structure/prop/alien/computer{ - tag = "icon-console-c (EAST)"; icon_state = "console-c"; dir = 4 }, @@ -292,7 +291,6 @@ /area/tether_away/alienship) "bR" = ( /obj/structure/prop/alien/computer{ - tag = "icon-console-c (EAST)"; icon_state = "console-c"; dir = 1 }, @@ -387,7 +385,6 @@ /area/tether_away/alienship) "cl" = ( /obj/structure/prop/alien/computer/camera{ - tag = "icon-camera (WEST)"; icon_state = "camera"; dir = 1 }, @@ -395,7 +392,6 @@ /area/tether_away/alienship) "cm" = ( /obj/structure/prop/alien/computer/camera{ - tag = "icon-camera (WEST)"; icon_state = "camera"; dir = 4 }, @@ -403,7 +399,6 @@ /area/tether_away/alienship) "cn" = ( /obj/structure/prop/alien/computer/camera{ - tag = "icon-camera (WEST)"; icon_state = "camera"; dir = 8 }, @@ -557,6 +552,10 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /turf/simulated/shuttle/floor/alienplating, /area/tether_away/alienship) +"nr" = ( +/obj/item/weapon/storage/firstaid, +/turf/simulated/shuttle/floor/alien, +/area/tether_away/alienship) "us" = ( /obj/away_mission_init/alienship/door_w2e, /obj/away_mission_init/alienship/door_e2w, @@ -9677,7 +9676,7 @@ ac ac ac ac -af +nr ae ae ae diff --git a/maps/tether/submaps/beach/_beach.dm b/maps/tether/submaps/beach/_beach.dm index e96c75641b..6e100c868c 100644 --- a/maps/tether/submaps/beach/_beach.dm +++ b/maps/tether/submaps/beach/_beach.dm @@ -13,7 +13,7 @@ //The other destination is landed on the surface /datum/shuttle_destination/excursion/beach - name = "Coastal Area" + name = "Remote Coastal Area" my_area = /area/shuttle/excursion/away_beach preferred_interim_area = /area/shuttle/excursion/sand_moving skip_me = TRUE @@ -157,7 +157,7 @@ dynamic_lighting = 0 /area/tether_away/beach - name = "\improper Desert Planet Beach" + name = "\improper Away Mission - Virgo 4 Beach" icon_state = "away" base_turf = /turf/simulated/floor/beach/sand //This is what the ground turns into if destroyed/bombed/etc //Not going to do sunlight simulations here like virgo3b diff --git a/maps/tether/submaps/tether_misc.dmm b/maps/tether/submaps/tether_misc.dmm index c3ff728eee..89fe355b6b 100644 --- a/maps/tether/submaps/tether_misc.dmm +++ b/maps/tether/submaps/tether_misc.dmm @@ -53,8 +53,7 @@ desc = "It is a heavy duty pulse laser emitter."; dir = 8; icon_state = "emitter-off"; - name = "pulse laser"; - tag = "icon-emitter-off (WEST)" + name = "pulse laser" }, /turf/simulated/shuttle/plating/airless/carry, /area/syndicate_station/start) @@ -301,7 +300,6 @@ name = "Syndicate-Spawn" }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -324,7 +322,6 @@ "aF" = ( /obj/structure/table/glass, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -358,7 +355,6 @@ pixel_y = 25 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -878,7 +874,6 @@ name = "Dave's bedsheet" }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -888,7 +883,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -897,7 +891,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -906,7 +899,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -917,7 +909,6 @@ id_tag = "merc_shuttle_pump" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -979,14 +970,12 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) "cq" = ( /obj/machinery/atmospherics/pipe/manifold4w/visible, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -1066,13 +1055,11 @@ pixel_x = -25 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) "cD" = ( /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -1137,7 +1124,6 @@ req_access = list(150) }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -1158,7 +1144,6 @@ req_access = list(150) }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -1167,7 +1152,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -1235,14 +1219,12 @@ dir = 8 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) "cW" = ( /obj/structure/table/glass, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -1514,7 +1496,6 @@ /area/space) "dC" = ( /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -1769,7 +1750,6 @@ /area/holodeck/source_boxingcourt) "ex" = ( /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -1798,7 +1778,6 @@ }, /obj/item/device/defib_kit/compact/combat/loaded, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -1807,7 +1786,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -1839,7 +1817,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2068,7 +2045,6 @@ }, /obj/structure/closet, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2148,7 +2124,6 @@ "fy" = ( /obj/structure/closet, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2193,7 +2168,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2608,7 +2582,6 @@ /obj/item/weapon/gun/projectile/giskard, /obj/item/clothing/accessory/holster, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2676,7 +2649,6 @@ /obj/machinery/recharger, /obj/structure/table/steel_reinforced, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2687,7 +2659,6 @@ products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2) }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2732,7 +2703,6 @@ req_access = list(150) }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2747,14 +2717,12 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) "hf" = ( /obj/structure/bed/chair, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -2903,11 +2871,9 @@ dir = 4 }, /obj/effect/decal/cleanable/blood{ - tag = "icon-mfloor5"; icon_state = "mfloor5" }, /obj/machinery/light/small{ - tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8 }, @@ -3097,7 +3063,6 @@ "hV" = ( /obj/structure/closet, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -3108,7 +3073,6 @@ /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /obj/item/weapon/reagent_containers/food/snacks/liquidfood, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -3123,7 +3087,6 @@ }, /obj/structure/closet, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -3132,7 +3095,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3222,7 +3184,6 @@ /area/centcom/ferry) "ig" = ( /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -3232,7 +3193,6 @@ icon_state = "computer" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3268,7 +3228,6 @@ pixel_x = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3338,7 +3297,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3356,7 +3314,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3365,7 +3322,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3394,21 +3350,18 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) "iw" = ( /obj/machinery/teleport/station, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) "ix" = ( /obj/structure/frame/computer, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -3428,7 +3381,6 @@ "iz" = ( /obj/machinery/teleport/hub, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -3438,7 +3390,6 @@ prices = list() }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3461,13 +3412,11 @@ "iF" = ( /obj/machinery/washing_machine, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) "iG" = ( /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -3533,7 +3482,6 @@ pixel_y = 32 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -3592,7 +3540,6 @@ /obj/item/clothing/glasses/night, /obj/item/clothing/glasses/night, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -3601,7 +3548,6 @@ name = "Toilet" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -3613,7 +3559,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -3680,7 +3625,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -3690,7 +3634,6 @@ req_one_access = list(150) }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -3836,7 +3779,6 @@ /obj/effect/spawner/newbomb/timer/syndicate, /obj/structure/table/reinforced, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -3846,7 +3788,6 @@ }, /obj/machinery/meter, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -3985,7 +3926,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -4072,7 +4012,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -4568,8 +4507,7 @@ /obj/structure/flora/pottedplant{ icon_state = "plant-09"; name = "Esteban"; - pixel_y = 8; - tag = "icon-plant-09" + pixel_y = 8 }, /turf/simulated/shuttle/floor/black, /area/shuttle/trade/centcom) @@ -4901,7 +4839,6 @@ req_access = null }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -5719,7 +5656,6 @@ /area/wizard_station) "nn" = ( /obj/structure/flora/pottedplant{ - tag = "icon-plant-24"; icon_state = "plant-24" }, /turf/unsimulated/floor{ @@ -5742,7 +5678,6 @@ /area/wizard_station) "nq" = ( /obj/structure/flora/pottedplant{ - tag = "icon-plant-08"; icon_state = "plant-08" }, /turf/unsimulated/floor{ @@ -5929,7 +5864,6 @@ /area/wizard_station) "nJ" = ( /obj/structure/flora/pottedplant{ - tag = "icon-plant-04"; icon_state = "plant-04" }, /turf/unsimulated/floor{ @@ -6013,7 +5947,6 @@ /area/wizard_station) "nU" = ( /obj/structure/flora/pottedplant{ - tag = "icon-plant-03"; icon_state = "plant-03" }, /obj/item/device/radio/intercom{ @@ -6200,7 +6133,6 @@ /area/wizard_station) "oo" = ( /obj/effect/floor_decal/industrial/warning/corner{ - tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8 }, @@ -6384,8 +6316,7 @@ /area/wizard_station) "oJ" = ( /obj/structure/flora/pottedplant{ - icon_state = "plant-20"; - tag = "icon-plant-22" + icon_state = "plant-20" }, /turf/unsimulated/floor{ icon_state = "vault"; @@ -6507,7 +6438,6 @@ /obj/structure/table/glass, /obj/item/weapon/handcuffs/fuzzy, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -6520,7 +6450,6 @@ /area/antag/antag_base) "pc" = ( /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -6589,7 +6518,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -6599,7 +6527,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -6709,7 +6636,6 @@ /obj/item/clothing/under/syndicate, /obj/item/clothing/gloves/black, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -6730,7 +6656,6 @@ }, /obj/structure/curtain/open/shower, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -6919,7 +6844,6 @@ locked = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -6931,7 +6855,6 @@ locked = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -7129,7 +7052,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -7186,7 +7108,6 @@ "qj" = ( /obj/machinery/atmospherics/pipe/manifold4w/visible, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -7353,7 +7274,6 @@ /obj/item/weapon/reagent_containers/food/snacks/sandwich, /obj/item/weapon/reagent_containers/food/snacks/sandwich, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7371,7 +7291,6 @@ pixel_y = 2 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7474,7 +7393,6 @@ name = "Mike's donut box" }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7837,7 +7755,6 @@ pixel_y = 12 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7846,7 +7763,6 @@ /obj/structure/table/marble, /obj/machinery/chemical_dispenser/bar_coffee/full, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7859,7 +7775,6 @@ pixel_y = 32 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7870,7 +7785,6 @@ pixel_y = 32 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7878,7 +7792,6 @@ "rl" = ( /obj/machinery/vending/sovietsoda, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -7934,7 +7847,6 @@ "rr" = ( /obj/structure/bed/chair/comfy/black, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8109,7 +8021,6 @@ products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2) }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8119,7 +8030,6 @@ dir = 4 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8146,7 +8056,6 @@ dir = 8 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8219,7 +8128,6 @@ icon_state = "plant-21" }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8229,7 +8137,6 @@ dir = 1 }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8271,7 +8178,6 @@ opacity = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -8408,7 +8314,6 @@ icon_state = "plant-20" }, /turf/unsimulated/floor{ - tag = "icon-cult"; name = "plating"; icon_state = "cult" }, @@ -8472,7 +8377,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -8498,7 +8402,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -8911,7 +8814,6 @@ /obj/item/weapon/storage/belt/utility/full, /obj/item/device/multitool, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -9051,14 +8953,12 @@ id_tag = "merc_south_airlock_pump" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) "sT" = ( /obj/machinery/atmospherics/pipe/manifold/visible, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9146,7 +9046,6 @@ pixel_y = -25 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -9155,7 +9054,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9350,8 +9248,7 @@ "ty" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /turf/unsimulated/floor{ dir = 2; @@ -9368,8 +9265,7 @@ "tA" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; - icon_state = "intact"; - tag = "icon-intact-f (NORTHWEST)" + icon_state = "intact" }, /turf/unsimulated/floor{ dir = 2; @@ -9419,7 +9315,6 @@ /area/antag/antag_base) "tE" = ( /obj/machinery/atmospherics/pipe/simple/visible{ - tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9 }, @@ -9428,7 +9323,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9699,7 +9593,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9715,7 +9608,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -9726,14 +9618,12 @@ "ul" = ( /obj/machinery/door/airlock/glass, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) "um" = ( /obj/machinery/door/airlock/multi_tile/glass, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9751,7 +9641,6 @@ /obj/item/clothing/under/syndicate, /obj/item/clothing/gloves/black, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9766,7 +9655,6 @@ name = "pilot helmet" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9776,7 +9664,6 @@ req_one_access = list(150) }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9785,7 +9672,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9806,7 +9692,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9814,7 +9699,6 @@ /obj/structure/bed/padded, /obj/item/weapon/bedsheet/hos, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9826,7 +9710,6 @@ /obj/structure/table/rack, /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -9838,7 +9721,6 @@ }, /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -9848,7 +9730,6 @@ }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9858,7 +9739,6 @@ }, /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9867,14 +9747,12 @@ dir = 8 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) "uz" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9885,7 +9763,6 @@ /obj/item/weapon/plastique, /obj/structure/table/reinforced, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -9908,7 +9785,6 @@ opacity = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_dred"; icon_state = "floor_dred" }, /area/syndicate_station/start) @@ -9920,7 +9796,6 @@ }, /obj/structure/table/rack, /turf/simulated/shuttle/floor{ - tag = "icon-floor_yellow"; icon_state = "floor_yellow" }, /area/syndicate_station/start) @@ -9934,7 +9809,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9946,7 +9820,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9973,7 +9846,6 @@ /obj/item/clothing/under/syndicate, /obj/item/clothing/gloves/black, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9983,7 +9855,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -9996,7 +9867,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -10007,7 +9877,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -10019,7 +9888,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -10038,12 +9906,10 @@ dir = 6 }, /obj/machinery/light/small{ - tag = "icon-bulb1 (WEST)"; icon_state = "bulb1"; dir = 8 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_white"; icon_state = "floor_white" }, /area/syndicate_station/start) @@ -10067,7 +9933,6 @@ }, /obj/item/device/defib_kit/compact/combat/loaded, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -10087,7 +9952,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) @@ -10098,7 +9962,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -10111,7 +9974,6 @@ pixel_x = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_black"; icon_state = "floor_black" }, /area/syndicate_station/start) @@ -10127,7 +9989,6 @@ pixel_y = 0 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/syndicate_station/start) diff --git a/maps/tether/submaps/tether_ships.dmm b/maps/tether/submaps/tether_ships.dmm index df30b272f7..550c45dec1 100644 --- a/maps/tether/submaps/tether_ships.dmm +++ b/maps/tether/submaps/tether_ships.dmm @@ -977,7 +977,6 @@ /area/houseboat) "cK" = ( /obj/machinery/door/window/brigdoor/southleft{ - tag = "icon-leftsecure (NORTH)"; name = "Cell 3"; icon_state = "leftsecure"; dir = 1; diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index bcc9dfd10d..a044182633 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -3333,6 +3333,12 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 4 }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "ahN" = ( @@ -3351,22 +3357,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"ahP" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "ahR" = ( /obj/machinery/camera/network/northern_star, /obj/effect/floor_decal/borderfloor{ @@ -8711,25 +8701,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) -"avO" = ( -/obj/machinery/firealarm{ - dir = 2; - layer = 3.3; - pixel_x = 0; - pixel_y = 26 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/lightgrey/border{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/hallway/lower/first_west) "avP" = ( /turf/simulated/wall, /area/crew_quarters/locker/laundry_arrival) @@ -9274,6 +9245,17 @@ d2 = 8; icon_state = "2-8" }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "awX" = ( @@ -9330,6 +9312,9 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "axc" = ( @@ -9387,6 +9372,9 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "axl" = ( @@ -9467,6 +9455,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "axt" = ( @@ -9476,9 +9467,9 @@ d2 = 8; icon_state = "2-8" }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) @@ -10381,18 +10372,14 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) "aza" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable/green{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "azb" = ( @@ -13052,6 +13039,11 @@ /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 1 }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = -32 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "aEG" = ( @@ -13942,6 +13934,11 @@ /obj/item/stack/material/phoron, /obj/item/stack/material/phoron, /obj/machinery/reagentgrinder, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30 + }, /turf/simulated/floor/tiled, /area/outpost/research/xenobiology) "aHe" = ( @@ -13949,8 +13946,7 @@ /area/rnd/external) "aHg" = ( /obj/machinery/camera/network/research{ - dir = 4; - + dir = 4 }, /obj/structure/cable/green{ d1 = 1; @@ -14044,8 +14040,7 @@ /area/rnd/anomaly_lab/containment_one) "aHt" = ( /obj/machinery/camera/network/research{ - dir = 4; - + dir = 4 }, /obj/structure/cable/green{ d1 = 1; @@ -15823,6 +15818,11 @@ icon_state = "techmaint" }, /area/security/checkpoint) +"aRs" = ( +/obj/structure/catwalk, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) "aRH" = ( /obj/structure/bed/chair, /obj/machinery/firealarm{ @@ -16399,6 +16399,15 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/xenoflora) +"aVT" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/obj/random/drinkbottle, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) "aWe" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -16730,6 +16739,15 @@ icon_state = "monotile" }, /area/security/checkpoint) +"aYz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) "aYA" = ( /obj/structure/sign/directions/evac{ dir = 4 @@ -16987,6 +17005,20 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"baY" = ( +/obj/structure/table/woodentable, +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) "baZ" = ( /obj/structure/cable/green{ d1 = 1; @@ -17821,6 +17853,15 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"bfg" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden) "bfn" = ( /obj/structure/table/standard, /obj/item/weapon/storage/toolbox/mechanical{ @@ -18688,6 +18729,7 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, +/obj/item/weapon/melee/baton/slime/loaded, /turf/simulated/floor/tiled, /area/outpost/research/xenobiology) "bkt" = ( @@ -18708,7 +18750,8 @@ /obj/effect/floor_decal/corner/mauve/border{ dir = 1 }, -/obj/item/weapon/melee/baton/slime/loaded, +/obj/item/device/slime_scanner, +/obj/item/device/slime_scanner, /turf/simulated/floor/tiled, /area/outpost/research/xenobiology) "bkI" = ( @@ -18724,7 +18767,10 @@ pixel_y = 24; req_access = list() }, -/obj/item/weapon/extinguisher, +/obj/item/clothing/glasses/welding, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/weldingtool, +/obj/item/weapon/weldingtool, /turf/simulated/floor/tiled, /area/outpost/research/xenobiology) "bkJ" = ( @@ -19216,6 +19262,12 @@ /obj/effect/floor_decal/corner/mauve/bordercorner2{ dir = 5 }, +/obj/structure/extinguisher_cabinet{ + dir = 8; + icon_state = "extinguisher_closed"; + pixel_x = 30; + tag = "icon-extinguisher_closed (WEST)" + }, /turf/simulated/floor/tiled, /area/outpost/research/xenobiology) "boy" = ( @@ -19705,6 +19757,26 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/locker_room) +"bri" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/machinery/vending/coffee, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/public_garden) "brk" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 6 @@ -19982,6 +20054,9 @@ /obj/structure/catwalk, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/locker_room) +"bsU" = ( +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) "btk" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -20016,6 +20091,24 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"btx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/machinery/camera/network/civilian{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) "btD" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 5 @@ -20117,6 +20210,11 @@ /obj/structure/flora/pottedplant, /turf/simulated/floor/grass, /area/tether/surfacebase/atrium_one) +"bui" = ( +/obj/effect/floor_decal/rust, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) "buj" = ( /obj/structure/table/marble, /obj/item/weapon/reagent_containers/food/drinks/glass2/square{ @@ -20446,33 +20544,9 @@ /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 }, -/turf/simulated/floor/tiled, -/area/rnd/hallway) -"bvN" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/mauve/border{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /obj/structure/extinguisher_cabinet{ pixel_y = 30 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals7, -/obj/effect/floor_decal/steeldecal/steel_decals7{ - dir = 4 - }, /turf/simulated/floor/tiled, /area/rnd/hallway) "bvO" = ( @@ -22086,6 +22160,15 @@ }, /turf/simulated/floor/tiled/steel_dirty, /area/rnd/xenobiology/xenoflora_storage) +"bKM" = ( +/obj/structure/catwalk, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) "bLV" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 8 @@ -22639,6 +22722,7 @@ /obj/structure/window/reinforced{ dir = 4 }, +/obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/reinforced, /area/outpost/research/xenobiology) "bQB" = ( @@ -23296,6 +23380,12 @@ }, /turf/simulated/floor/reinforced, /area/outpost/research/xenobiology) +"bTl" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) "bTD" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -27257,6 +27347,851 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"cBB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"cHS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"dbc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"deS" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"dAk" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"dLl" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 10 + }, +/obj/machinery/camera/network/civilian{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"dOn" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"dSz" = ( +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"dYj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Public Gardens" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central1, +/turf/simulated/floor/tiled/monofloor, +/area/tether/surfacebase/public_garden_one) +"dYl" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lightgrey/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"egX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0; + tag = "icon-borderfloor (NORTH)" + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"ePE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"eVp" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"fbF" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/alarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"frE" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"ftb" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"fEQ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0; + tag = "icon-borderfloor (NORTH)" + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"fWK" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden) +"gaK" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"gri" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"gwL" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"gwS" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + dir = 4; + name = "east bump"; + pixel_x = 28 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"gxP" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"gDo" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden) +"gPz" = ( +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"gUy" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"gUX" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"gXh" = ( +/turf/simulated/wall, +/area/tether/surfacebase/public_garden) +"hbn" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 5 + }, +/obj/machinery/computer/timeclock/premade/north, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"hcP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"hqU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 4 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 4 + }, +/area/hallway/lower/first_west) +"hvW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"idw" = ( +/obj/effect/floor_decal/techfloor/corner{ + dir = 4 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"igB" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"ijX" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/rack, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"izr" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"iPi" = ( +/obj/effect/floor_decal/techfloor/corner{ + dir = 1 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"iVY" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"jec" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"jrI" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"kcR" = ( +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"kuC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"kOB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"kZc" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"lCL" = ( +/obj/structure/catwalk, +/obj/machinery/alarm{ + breach_detection = 0; + dir = 8; + pixel_x = 25; + pixel_y = 0; + report_danger_level = 0 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"lFg" = ( +/obj/structure/grille, +/obj/structure/railing, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/public_garden_one) +"lJJ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0; + tag = "icon-borderfloor (NORTH)" + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"lNY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"lUv" = ( +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"lWW" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"mpN" = ( +/obj/random/junk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"mpQ" = ( +/turf/simulated/wall, +/area/tether/surfacebase/public_garden_one) +"mtw" = ( +/obj/effect/floor_decal/techfloor/corner{ + dir = 8 + }, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"mUG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"mXP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"ncL" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Public Gardens" + }, +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 8 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 8 + }, +/area/hallway/lower/first_west) +"nxt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"nCB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"nJE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"nMZ" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"ora" = ( +/obj/effect/floor_decal/techfloor/corner, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"ozv" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lightgrey/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"oAC" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/random/junk, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"oOc" = ( +/obj/structure/bed/chair/wood, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"piN" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"pjP" = ( +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/hole, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"pxT" = ( +/obj/structure/catwalk, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"pCg" = ( +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_one) +"qpB" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"qyw" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + cell_type = /obj/item/weapon/cell/super; + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"qGm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"qHo" = ( +/obj/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"qMQ" = ( +/obj/effect/floor_decal/rust, +/obj/random/junk, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"ram" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"rfg" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"riT" = ( +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"rEC" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/grey/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/machinery/gear_painter, +/turf/simulated/floor/tiled, +/area/crew_quarters/visitor_laundry) +"rKM" = ( +/obj/structure/stairs/north, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"slR" = ( +/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{ + scrub_id = "atrium" + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/public_garden_one) +"sCz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"sJs" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0; + tag = "icon-borderfloor (NORTH)" + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) "sRi" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -27269,6 +28204,274 @@ }, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_one) +"tbZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + dir = 1; + icon_state = "extinguisher_closed"; + pixel_y = -32; + tag = "icon-extinguisher_closed (NORTH)" + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"thL" = ( +/obj/structure/sign/poster, +/turf/simulated/wall, +/area/tether/surfacebase/public_garden) +"tzX" = ( +/obj/structure/grille, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/public_garden_one) +"tLH" = ( +/obj/effect/floor_decal/techfloor{ + dir = 10 + }, +/obj/effect/floor_decal/techfloor/hole{ + dir = 1 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"tPq" = ( +/obj/structure/bed/chair/wood{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"tXm" = ( +/obj/effect/floor_decal/corner/lightgrey{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled/monotile, +/area/tether/surfacebase/public_garden) +"tXv" = ( +/obj/effect/floor_decal/techfloor{ + dir = 9 + }, +/obj/effect/floor_decal/industrial/danger{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/hole/right, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"uwI" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"uyO" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/hallway/lower/first_west) +"uEZ" = ( +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"uLU" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"vkK" = ( +/turf/simulated/wall, +/area/maintenance/lower/public_garden_maintenence) +"vzE" = ( +/obj/effect/floor_decal/techfloor{ + dir = 6 + }, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 1 + }, +/obj/structure/closet/crate, +/turf/simulated/floor/tiled/techfloor, +/area/tether/surfacebase/public_garden_one) +"vHM" = ( +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"vHS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor/corner2{ + dir = 10; + icon_state = "borderfloorcorner2"; + pixel_x = 0; + tag = "icon-borderfloorcorner2 (SOUTHWEST)" + }, +/obj/effect/floor_decal/corner/lightgrey/bordercorner2{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"vOI" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"vZw" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 1 + }, +/turf/simulated/floor/tiled/monofloor{ + dir = 1 + }, +/area/tether/surfacebase/public_garden_one) +"wzH" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/table/rack, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"wFT" = ( +/turf/simulated/mineral, +/area/maintenance/lower/public_garden_maintenence) +"wIm" = ( +/obj/structure/table/rack, +/obj/random/maintenance/research, +/obj/random/maintenance/research, +/turf/simulated/floor/tiled/techfloor, +/area/maintenance/lower/public_garden_maintenence) +"wYi" = ( +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"xED" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lightgrey/border{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) +"xRo" = ( +/obj/structure/catwalk, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/maintenance/lower/public_garden_maintenence) +"xWa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lightgrey/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_one) +"yiG" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lightgrey/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden) (1,1,1) = {" aaa @@ -29976,10 +31179,10 @@ aah aah aah aah -aah -aah -aah -aah +mpQ +mpQ +mpQ +mpQ aah aah aah @@ -30097,12 +31300,12 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah +mpQ +mpQ +vHM +vOI +mpQ +mpQ aah aah aah @@ -30218,14 +31421,14 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah +mpQ +mpQ +cHS +uwI +izr +ftb +mpQ +mpQ aah aah aah @@ -30339,16 +31542,16 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +mpQ +mpQ +lUv +uwI +gPz +gPz +piN +dLl +mpQ +mpQ aah aah aah @@ -30453,25 +31656,25 @@ aad aad aad aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +vkK +vkK +mpQ +mpQ +mpQ +mpQ +mpQ +mpQ +dSz +fEQ +gPz +uEZ +gPz +bTl +dOn +gri +mpQ +mpQ aah aah aah @@ -30575,25 +31778,25 @@ aad aad aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +pxT +pxT +riT +pCg +tzX +slR +lFg +tXv +iPi +fEQ +gPz +gwL +gPz +bTl +dOn +mtw +tLH +mpQ aah aah aah @@ -30630,7 +31833,7 @@ aAS aAS auu auu -bvN +bwi aEE aFk aGr @@ -30697,25 +31900,25 @@ aad aad aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +aRs +pxT +riT +pCg +tzX +slR +lFg +pjP +idw +fEQ +kcR +rKM +gPz +bTl +dOn +ora +vzE +mpQ aah aah aah @@ -30819,25 +32022,25 @@ aad aad aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +pxT +ijX +mpQ +mpQ +mpQ +mpQ +mpQ +mpQ +igB +fEQ +gPz +nMZ +gPz +bTl +dOn +frE +mpQ +mpQ aah aah aah @@ -30941,24 +32144,24 @@ aad aad aad aah +vkK +xRo +gaK aah aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +mpQ +mpQ +ram +jec +kOB +mXP +xWa +qHo +mpQ +mpQ aah aah aah @@ -31063,23 +32266,23 @@ aad aad aad aah +vkK +pxT +gUX +oAC +deS +deS +gUy +mpN aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +mpQ +mpQ +hbn +dAk +ozv +gwS +mpQ +mpQ aah aah aah @@ -31185,22 +32388,22 @@ aad aad aad aah +vkK +pxT +aRs +lCL +pxT +pxT +pxT +gxP aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +mpQ +mpQ +jrI +rfg +mpQ +mpQ aah aah aah @@ -31307,21 +32510,21 @@ aad aad aad aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +vkK +vkK +vkK +vkK +vkK +pxT +gxP +wFT +wFT +vkK +mpQ +vZw +dYj +mpQ aah aah aah @@ -31434,20 +32637,20 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +pxT +gUX +gUy +wzH +kZc +gXh +sJs +lNY +gXh +gXh +gXh +gXh +gXh aah aah aah @@ -31556,23 +32759,23 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +vkK +pxT +pxT +pxT +pxT +bKM +bfg +egX +yiG +gXh +gXh +bri +tXm +gXh +gXh +gXh +gXh ahl ahM awH @@ -31678,25 +32881,25 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -ahl -ahL +vkK +vkK +mpN +bsU +vkK +nxt +gXh +lJJ +nJE +cBB +hvW +cBB +cBB +uLU +qyw +qpB +vHS +ncL +ako awH ajv akr @@ -31802,23 +33005,23 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -ahl -ahN +wFT +dbc +bsU +wIm +thL +kuC +xED +btx +qGm +aYz +dYl +fbF +iVY +mUG +nCB +hqU +lWW awW aza aBc @@ -31924,24 +33127,24 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +aVT +hcP +dbc +qMQ +gXh +fWK +gDo +gXh +oOc +baY +tPq +gXh +gXh +gXh +gXh ahl -ahL -awH +sCz +uyO ajx akq ala @@ -32046,24 +33249,24 @@ aah aah aah aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah -aah +wFT +wFT +wYi +wFT +gXh +gXh +gXh +gXh +gXh +gXh +gXh +gXh aah aah aah ahl avN -awH +uyO ajy ahl alb @@ -32168,10 +33371,10 @@ aah aah aah aah -aah -aah -aah -aah +wFT +wFT +bui +hcP aah aah aah @@ -32306,8 +33509,8 @@ aah aah aah ahl -ahP -awW +ahN +eVp azj ahl akV @@ -32429,8 +33632,8 @@ aah aah ahl ahL -awH -ajy +uyO +tbZ ahl akV akV @@ -32550,8 +33753,8 @@ aah aah aah ahl -avO -awH +ahL +uyO ajy ahl akV @@ -32672,8 +33875,8 @@ aah aah aah ahl -ahL -awH +ePE +uyO ajy ahl akV @@ -32795,7 +33998,7 @@ aah aah ahl ahR -awH +uyO ajy ahl akV @@ -32917,7 +34120,7 @@ aah aah ahl ahL -awH +uyO ajy ahl akV @@ -33161,7 +34364,7 @@ aah aah ahl ahL -awH +uyO ajy ahl akV @@ -33283,7 +34486,7 @@ aeW aeW aeW ahL -awH +uyO ajy ahl akV @@ -33405,7 +34608,7 @@ agI atU aeW ahS -awH +uyO ajy ahl akV @@ -33649,7 +34852,7 @@ afT agX ahn ahU -awH +uyO ajy akt akt @@ -33771,7 +34974,7 @@ aoB agY ahn ahL -awH +uyO ajy aku alc @@ -33893,7 +35096,7 @@ afT agX ahn ahS -awH +uyO ajD aku ald @@ -38833,7 +40036,7 @@ cft cfL cgk chl -chO +rEC chO cje ceM diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index 13729ba275..81201572b7 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -373,7 +373,7 @@ /obj/structure/closet/wardrobe/pjs, /obj/item/weapon/handcuffs/fuzzy, /obj/item/weapon/handcuffs/fuzzy, -/obj/item/weapon/handcuffs/legcuffs, +/obj/item/weapon/handcuffs/legcuffs/fuzzy, /obj/item/weapon/handcuffs/fuzzy, /obj/item/clothing/mask/balaclava, /obj/item/clothing/gloves/combat{ @@ -17603,6 +17603,687 @@ temperature = 80 }, /area/tcommsat/chamber) +"HT" = ( +/obj/item/weapon/storage/box/glasses/pint, +/obj/item/weapon/storage/box/glass_extras/straws, +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/obj/item/device/radio/intercom{ + dir = 2; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"HV" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"IB" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/obj/structure/cable{ + icon_state = "16-0" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/floor_decal/rust, +/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/up/supply{ + dir = 1 + }, +/obj/structure/cable, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"IC" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"IE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"IT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0; + tag = "icon-borderfloor (NORTH)" + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Kj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Kn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Kt" = ( +/turf/simulated/wall, +/area/tether/surfacebase/public_garden_two) +"KL" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"LG" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Mf" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full/double, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"MX" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Na" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/obj/machinery/camera/network/civilian, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Nf" = ( +/turf/simulated/open, +/area/tether/surfacebase/public_garden_two) +"Nq" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"NV" = ( +/obj/structure/sign/nanotrasen, +/turf/simulated/wall, +/area/tether/surfacebase/public_garden_two) +"NZ" = ( +/obj/structure/stairs/south, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"OG" = ( +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"OL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"OQ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance/common, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"Po" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"PC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"PP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Qr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Qt" = ( +/obj/machinery/smartfridge, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Qu" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Qz" = ( +/obj/structure/table/marble, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"QM" = ( +/obj/machinery/portable_atmospherics/powered/scrubber, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"Rc" = ( +/obj/structure/table/rack/holorack, +/obj/random/maintenance/clean, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"Rl" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"RL" = ( +/obj/machinery/firealarm{ + dir = 2; + layer = 3.3; + pixel_x = 0; + pixel_y = 26 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Sv" = ( +/obj/machinery/door/airlock/maintenance/engi, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/gateway) +"Sy" = ( +/obj/structure/sign/poster, +/turf/simulated/wall, +/area/tether/surfacebase/public_garden_two) +"SE" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"SH" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1; + icon_state = "borderfloor"; + pixel_y = 0; + tag = "icon-borderfloor (NORTH)" + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"SS" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"TV" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Uh" = ( +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Uk" = ( +/obj/structure/symbol/gu, +/turf/simulated/wall, +/area/tether/surfacebase/public_garden_two) +"UB" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"UX" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"Vk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"VM" = ( +/obj/machinery/reagentgrinder, +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Wr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/structure/table/marble, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"WO" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Xd" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Xf" = ( +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24; + req_access = list() + }, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Xk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Xx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_two) +"Yq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"YE" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"YH" = ( +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"YN" = ( +/obj/structure/closet/hydrant{ + pixel_x = -32 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"YP" = ( +/obj/machinery/alarm{ + dir = 1; + pixel_y = -25 + }, +/obj/random/plushie, +/obj/structure/table/standard{ + name = "plastic table frame" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Zo" = ( +/obj/structure/table/bench/steel, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Zp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"Zt" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"ZF" = ( +/obj/machinery/seed_extractor, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) +"ZO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + icon_state = "map-scrubbers"; + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/gateway) +"ZT" = ( +/obj/structure/closet/crate/bin{ + anchored = 1; + pixel_y = 16 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_two) (1,1,1) = {" aa @@ -20310,10 +20991,10 @@ ac ac ac ac -ac -ac -ac -ac +Kt +Sy +Kt +Kt ac ac ac @@ -20431,12 +21112,12 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac +Kt +Kt +MX +SS +Kt +Kt ac ac ac @@ -20552,14 +21233,14 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Kt +Na +Nq +Zo +YN +Kt +Kt ac ac ac @@ -20673,16 +21354,16 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Kt +RL +LG +Uh +Uh +HV +YP +Kt +Kt ac ac ac @@ -20794,18 +21475,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Kt +TV +PC +Qr +YE +YH +KL +HV +OG +Kt +Kt ac ac ac @@ -20916,18 +21597,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Xf +Nq +Uh +PP +Rl +NZ +SH +Qz +HV +HT +Kt ac ac ac @@ -21038,18 +21719,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +NV +SE +Qu +Uh +Kj +Nf +Nf +IT +Qz +Zt +VM +Kt ac ac ac @@ -21160,18 +21841,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Kt +Xd +KL +OL +Po +Yq +Zp +Wr +IC +Kt +Kt ac ac ac @@ -21283,16 +21964,16 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Kt +UB +Kn +IE +Uh +Zt +Qt +Sy +Kt ac ac ac @@ -21406,14 +22087,14 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac +Kt +Kt +ZT +Vk +Zt +ZF +Kt +Kt ac ac ac @@ -21529,12 +22210,12 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac +Kt +Kt +Xk +WO +Kt +Kt ac ac ac @@ -21652,11 +22333,11 @@ ac ac ac ac -ac -ac -ac -ac -ac +Kt +OQ +Uk +Kt +Kt ac ac ac @@ -21774,11 +22455,11 @@ ac ac ac ac -ac -ac -ac -ac -ac +Kt +UX +IB +Mf +Kt ac ac ac @@ -21896,11 +22577,11 @@ ac ac ac ac -ac -ac -ac -ac -ac +Kt +Xx +QM +Rc +Kt ac ac ac @@ -22019,7 +22700,7 @@ ae ae ae ae -ae +Sv ae ae ae @@ -22141,7 +22822,7 @@ ae bz bX cm -bX +ZO bX cm bX diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index b227146dae..543994139c 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -21348,6 +21348,246 @@ /obj/machinery/camera/network/northern_star, /turf/simulated/floor/outdoors/grass/sif/virgo3b, /area/tether/surfacebase/outside/outside3) +"KR" = ( +/obj/structure/lattice, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "32-1" + }, +/turf/simulated/open, +/area/tether/surfacebase/public_garden_three) +"Lr" = ( +/obj/structure/table/woodentable, +/obj/random/maintenance/clean, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Mp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Mu" = ( +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"MO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/seed_storage/garden, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Nb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"NA" = ( +/obj/machinery/alarm{ + breach_detection = 0; + dir = 8; + pixel_x = 25; + pixel_y = 0; + report_danger_level = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"NL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/lime/bordercorner, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/structure/window/reinforced{ + dir = 1; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Oa" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 6 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Op" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"PD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/floor_decal/techfloor{ + dir = 5 + }, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 1 + }, +/obj/effect/floor_decal/techfloor/hole/right{ + dir = 8 + }, +/turf/simulated/floor/tiled/techmaint, +/area/tether/surfacebase/public_garden_three) +"PF" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Qd" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/minihoe, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/device/analyzer/plant_analyzer, +/obj/item/device/analyzer/plant_analyzer, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Qj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + icon_state = "bordercolorcorner"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 6 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Qx" = ( +/turf/simulated/wall, +/area/tether/surfacebase/public_garden_three) +"QC" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"QW" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Rb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Rh" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Rw" = ( +/turf/simulated/open, +/area/tether/surfacebase/public_garden_three) "RD" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/lightgrey/border, @@ -21360,6 +21600,315 @@ /obj/machinery/computer/timeclock/premade/south, /turf/simulated/floor/tiled, /area/tether/surfacebase/atrium_three) +"RE" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"RS" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Sg" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/obj/machinery/camera/network/civilian, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"SJ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Tt" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"TQ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"Uu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Uv" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"UH" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 28 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"UL" = ( +/obj/machinery/light, +/obj/structure/table/bench/wooden, +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"Ve" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Vr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"VF" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table/bench/wooden, +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"VG" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"VH" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/lime/border, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"VN" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"Ws" = ( +/obj/structure/table/bench/wooden, +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"WA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"WF" = ( +/obj/structure/table/bench/wooden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Yc" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 8; + health = 1e+006 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"Yz" = ( +/obj/item/device/radio/intercom{ + broadcasting = 1; + dir = 8; + listening = 1; + name = "Common Channel"; + pixel_x = -21; + pixel_y = 0 + }, +/obj/machinery/portable_atmospherics/hydroponics/soil, +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"YA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"YN" = ( +/obj/structure/table/woodentable, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"YV" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/lime/bordercorner{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Zn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/vending/hydronutrients, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) +"Zp" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/tether/surfacebase/public_garden_three) +"Zq" = ( +/turf/simulated/floor/grass, +/area/tether/surfacebase/public_garden_three) +"ZQ" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/lime/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/surfacebase/public_garden_three) (1,1,1) = {" aa @@ -23948,7 +24497,7 @@ ac ac ac ac -ac +fF ac ac ac @@ -24067,10 +24616,10 @@ ac ac ac ac -ac -ac -ac -ac +Qx +Yc +Yc +Qx ac ac ac @@ -24188,12 +24737,12 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac +Uv +Qx +Mu +Mu +Qx +Op ac ac ac @@ -24309,14 +24858,14 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac +Uv +QC +VN +Zq +Zq +Yz +QC +Op ac ac ac @@ -24430,16 +24979,16 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Uv +QC +Ws +Zq +ZQ +QW +Zq +Ws +QC +Op ac ac ac @@ -24551,18 +25100,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Qx +Qx +VF +Ws +ZQ +Lr +YN +RE +Ws +UL +Qx +Qx ac ac ac @@ -24673,18 +25222,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Tt +Mu +Zq +Uu +Oa +Rw +Rw +YV +QW +Zq +Mu +VG ac ac ac @@ -24795,18 +25344,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Tt +Mu +Zq +Ve +Qj +Rw +Rw +NL +WA +Zq +Mu +VG ac ac ac @@ -24917,18 +25466,18 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +Qx +Qx +VF +Ws +Vr +Qd +RS +Rb +Ws +UL +Qx +Qx ac ac ac @@ -25040,16 +25589,16 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac +YA +QC +Ws +Mp +Rh +WF +VH +Ws +QC +Zp ac ac ac @@ -25163,14 +25712,14 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac -ac -ac +YA +QC +Sg +PF +Nb +NA +QC +Zp ac ac gw @@ -25286,12 +25835,12 @@ ac ac ac ac -ac -ac -ac -ac -ac -ac +YA +Qx +UH +MO +Qx +Zp ac ac ac @@ -25409,10 +25958,10 @@ ac ac ac ac -ac -ac -ac -ac +Tt +SJ +Zn +VG ac ac ac @@ -25531,10 +26080,10 @@ ac ac ac ac -ac -ac -ac -ac +Tt +PD +KR +VG ac ad gw @@ -25653,10 +26202,10 @@ ac ac ac ac -ac -ac -ac -ac +Qx +TQ +TQ +Qx ac ac gw diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 44e1d20d91..482e74a82d 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -159,7 +159,6 @@ /area/engineering/engine_smes) "aaA" = ( /obj/machinery/power/terminal{ - tag = "icon-term (WEST)"; icon_state = "term"; dir = 8 }, @@ -278,8 +277,7 @@ /obj/structure/extinguisher_cabinet{ dir = 4; icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" + pixel_x = -30 }, /turf/simulated/floor/tiled, /area/engineering/hallway) @@ -888,7 +886,7 @@ dir = 4 }, /obj/structure/railing, -/mob/living/simple_animal/fish/koi, +/mob/living/simple_animal/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/hallway/station/atrium) "acg" = ( @@ -1112,7 +1110,6 @@ dir = 9 }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (NORTHWEST)"; icon_state = "danger"; dir = 9 }, @@ -1346,7 +1343,7 @@ /obj/structure/railing{ dir = 1 }, -/mob/living/simple_animal/fish/koi, +/mob/living/simple_animal/fish/koi/poisonous, /turf/simulated/floor/water/pool, /area/hallway/station/atrium) "adA" = ( @@ -1486,7 +1483,6 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (WEST)"; icon_state = "danger"; dir = 8 }, @@ -1653,7 +1649,6 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (WEST)"; icon_state = "danger"; dir = 8 }, @@ -1691,7 +1686,6 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - tag = "icon-steel_decals_central5 (WEST)"; icon_state = "steel_decals_central5"; dir = 8 }, @@ -1885,7 +1879,6 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (WEST)"; icon_state = "danger"; dir = 8 }, @@ -1939,7 +1932,6 @@ /area/engineering/hallway) "aeW" = ( /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -1948,7 +1940,6 @@ pixel_y = 32 }, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -1957,7 +1948,6 @@ dir = 8 }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (WEST)"; icon_state = "danger"; dir = 8 }, @@ -1970,7 +1960,6 @@ dir = 10 }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (SOUTHWEST)"; icon_state = "danger"; dir = 10 }, @@ -2375,8 +2364,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /obj/structure/closet/emcloset, /turf/simulated/floor/plating, @@ -2389,7 +2377,6 @@ dir = 4 }, /obj/effect/floor_decal/corner_steel_grid{ - tag = "icon-steel_grid (NORTHWEST)"; icon_state = "steel_grid"; dir = 9 }, @@ -2652,21 +2639,18 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /turf/simulated/floor/plating, /area/engineering/engine_airlock) "ahB" = ( /obj/effect/floor_decal/corner_steel_grid{ - tag = "icon-steel_grid (NORTHWEST)"; icon_state = "steel_grid"; dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/engineering/engine_airlock) @@ -2813,7 +2797,6 @@ dir = 4 }, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -2825,7 +2808,6 @@ dir = 6 }, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -2898,7 +2880,6 @@ dir = 8 }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - tag = "icon-steel_decals_central5 (EAST)"; icon_state = "steel_decals_central5"; dir = 4 }, @@ -2959,7 +2940,6 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - tag = "icon-steel_decals_central5 (WEST)"; icon_state = "steel_decals_central5"; dir = 8 }, @@ -3008,7 +2988,6 @@ req_access = list(10) }, /obj/effect/floor_decal/corner_steel_grid{ - tag = "icon-steel_grid (NORTHWEST)"; icon_state = "steel_grid"; dir = 9 }, @@ -3070,7 +3049,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -3280,8 +3258,7 @@ /obj/structure/extinguisher_cabinet{ dir = 4; icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" + pixel_x = -30 }, /obj/structure/cable{ d1 = 1; @@ -3543,7 +3520,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -3724,7 +3700,6 @@ req_one_access = newlist() }, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -3746,7 +3721,6 @@ req_one_access = newlist() }, /turf/simulated/floor/tiled{ - tag = "icon-techmaint"; icon_state = "techmaint" }, /area/engineering/storage) @@ -3802,8 +3776,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled, /area/tether/station/excursion_dock) @@ -3976,8 +3949,7 @@ /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = 32; - tag = "icon-extinguisher_closed (NORTH)" + pixel_y = 32 }, /obj/vehicle/train/cargo/trolley, /turf/simulated/floor/tiled/monotile, @@ -4002,7 +3974,6 @@ "alW" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/effect/floor_decal/steeldecal/steel_decals_central6{ - tag = "icon-steel_decals_central6 (WEST)"; icon_state = "steel_decals_central6"; dir = 8 }, @@ -4444,7 +4415,6 @@ dir = 1 }, /obj/effect/floor_decal/corner/yellow/bordercorner{ - tag = "icon-bordercolorcorner (NORTH)"; icon_state = "bordercolorcorner"; dir = 1 }, @@ -4804,7 +4774,6 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5 }, @@ -4812,7 +4781,6 @@ /area/engineering/atmos/backup) "aok" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ - tag = "icon-intact-supply (EAST)"; icon_state = "intact-supply"; dir = 4 }, @@ -4826,7 +4794,6 @@ /area/engineering/atmos/backup) "aol" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ - tag = "icon-intact-supply (EAST)"; icon_state = "intact-supply"; dir = 4 }, @@ -4836,7 +4803,6 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4 }, @@ -4844,26 +4810,22 @@ /area/engineering/atmos/backup) "aom" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ - tag = "icon-intact-supply (EAST)"; icon_state = "intact-supply"; dir = 4 }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4 }, /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = 32; - tag = "icon-extinguisher_closed (NORTH)" + pixel_y = 32 }, /turf/simulated/floor/tiled, /area/engineering/atmos/backup) "aon" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ - tag = "icon-intact-supply (EAST)"; icon_state = "intact-supply"; dir = 4 }, @@ -4873,7 +4835,6 @@ req_access = list() }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - tag = "icon-intact-scrubbers (EAST)"; icon_state = "intact-scrubbers"; dir = 4 }, @@ -4881,12 +4842,10 @@ /area/engineering/atmos/backup) "aoo" = ( /obj/machinery/atmospherics/pipe/simple/visible/supply{ - tag = "icon-intact-supply (SOUTHWEST)"; icon_state = "intact-supply"; dir = 10 }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - tag = "icon-intact-scrubbers (SOUTHWEST)"; icon_state = "intact-scrubbers"; dir = 10 }, @@ -5129,7 +5088,6 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - tag = "icon-steel_decals_central5 (WEST)"; icon_state = "steel_decals_central5"; dir = 8 }, @@ -5195,7 +5153,6 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5219,12 +5176,10 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/visible/supply{ - tag = "icon-intact-supply (NORTHEAST)"; icon_state = "intact-supply"; dir = 5 }, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ - tag = "icon-intact-scrubbers (NORTHEAST)"; icon_state = "intact-scrubbers"; dir = 5 }, @@ -5244,7 +5199,6 @@ /area/engineering/atmos/backup) "apv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5278,7 +5232,6 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5298,7 +5251,6 @@ /area/engineering/hallway) "apx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5333,7 +5285,6 @@ /area/engineering/hallway) "apy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5368,7 +5319,6 @@ /area/engineering/hallway) "apB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5402,7 +5352,6 @@ /area/engineering/hallway) "apD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5432,7 +5381,6 @@ /area/engineering/hallway) "apG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5452,7 +5400,6 @@ /area/engineering/hallway) "apI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5466,7 +5413,6 @@ dir = 1 }, /obj/effect/floor_decal/corner/yellow/bordercorner{ - tag = "icon-bordercolorcorner (NORTH)"; icon_state = "bordercolorcorner"; dir = 1 }, @@ -5482,7 +5428,6 @@ /area/engineering/hallway) "apJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5501,7 +5446,6 @@ /area/engineering/hallway) "apK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5545,7 +5489,6 @@ /area/engineering/hallway) "apM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10 }, @@ -5640,7 +5583,6 @@ health = 1e+006 }, /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5649,7 +5591,6 @@ "aqf" = ( /obj/machinery/pipedispenser/disposal, /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10 }, @@ -5675,7 +5616,6 @@ /area/hallway/station/atrium) "aqh" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6 }, @@ -5685,7 +5625,6 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5694,7 +5633,6 @@ /area/engineering/atmos/backup) "aqj" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5708,7 +5646,6 @@ /area/engineering/atmos/backup) "aqk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5734,7 +5671,6 @@ /area/engineering/hallway) "aql" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5748,7 +5684,6 @@ /area/engineering/hallway) "aqm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5767,7 +5702,6 @@ /area/engineering/hallway) "aqo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5792,7 +5726,6 @@ /area/engineering/hallway) "aqq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5825,7 +5758,6 @@ /area/maintenance/station/eng_lower) "aqu" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5904,7 +5836,6 @@ /area/hallway/station/atrium) "aqB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5928,7 +5859,6 @@ /area/engineering/hallway) "aqD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5950,7 +5880,6 @@ /area/engineering/hallway) "aqE" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -5970,7 +5899,6 @@ /area/engineering/hallway) "aqF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -6030,7 +5958,6 @@ /area/engineering/workshop) "aqO" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10 }, @@ -6041,7 +5968,6 @@ /area/engineering/hallway) "aqQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -6252,7 +6178,6 @@ /area/engineering/workshop) "ary" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4 }, @@ -6261,7 +6186,6 @@ /area/engineering/atmos/backup) "arz" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5 }, @@ -6277,7 +6201,6 @@ /area/maintenance/station/eng_lower) "arB" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - tag = "icon-map (EAST)"; icon_state = "map"; dir = 4 }, @@ -6369,7 +6292,6 @@ /area/engineering/atmos/backup) "arT" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/red{ - tag = "icon-map (EAST)"; icon_state = "map"; dir = 4 }, @@ -6382,7 +6304,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/portable_atmospherics/powered/scrubber, /turf/simulated/floor/tiled{ - tag = "icon-monotile"; icon_state = "monotile" }, /area/engineering/hallway) @@ -6543,7 +6464,6 @@ dir = 4 }, /obj/structure/bed/chair/comfy/beige{ - tag = "icon-comfychair_preview (EAST)"; icon_state = "comfychair_preview"; dir = 4 }, @@ -6559,7 +6479,6 @@ icon_state = "4-8" }, /obj/structure/bed/chair/comfy/beige{ - tag = "icon-comfychair_preview (WEST)"; icon_state = "comfychair_preview"; dir = 8 }, @@ -6901,13 +6820,13 @@ /turf/simulated/floor/tiled, /area/hallway/station/atrium) "atv" = ( -/obj/structure/closet/emcloset, /obj/effect/floor_decal/borderfloor{ dir = 5 }, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 5 }, +/obj/machinery/gear_painter, /turf/simulated/floor/tiled, /area/hallway/station/atrium) "atx" = ( @@ -6995,7 +6914,6 @@ /area/engineering/foyer) "atI" = ( /obj/structure/bed/chair/comfy/beige{ - tag = "icon-comfychair_preview (EAST)"; icon_state = "comfychair_preview"; dir = 4 }, @@ -7006,7 +6924,6 @@ /area/engineering/break_room) "atJ" = ( /obj/structure/bed/chair/comfy/beige{ - tag = "icon-comfychair_preview (WEST)"; icon_state = "comfychair_preview"; dir = 8 }, @@ -7527,7 +7444,6 @@ /area/engineering/engine_eva) "avw" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/red{ - tag = "icon-map (EAST)"; icon_state = "map"; dir = 4 }, @@ -7586,7 +7502,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/bed/chair/comfy/beige{ - tag = "icon-comfychair_preview (NORTH)"; icon_state = "comfychair_preview"; dir = 1 }, @@ -7601,7 +7516,6 @@ /area/shuttle/excursion/tether) "avI" = ( /obj/structure/bed/chair/comfy/beige{ - tag = "icon-comfychair_preview (NORTH)"; icon_state = "comfychair_preview"; dir = 1 }, @@ -7626,8 +7540,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled, /area/engineering/break_room) @@ -7705,7 +7618,6 @@ /area/tether/station/excursion_dock) "awk" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ - tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5 }, @@ -7782,8 +7694,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled/techmaint, /area/engineering/workshop) @@ -7793,7 +7704,6 @@ /area/bridge_hallway) "awD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ - tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9 }, @@ -7849,7 +7759,6 @@ }, /obj/machinery/portable_atmospherics/powered/scrubber, /turf/simulated/floor/tiled{ - tag = "icon-monotile"; icon_state = "monotile" }, /area/engineering/hallway) @@ -8064,7 +7973,6 @@ /area/storage/tools) "axA" = ( /obj/machinery/atmospherics/pipe/tank/oxygen{ - tag = "icon-o2_map (NORTH)"; icon_state = "o2_map"; dir = 1 }, @@ -8132,14 +8040,12 @@ /obj/machinery/atmospherics/pipe/tank{ dir = 1; icon_state = "air_map"; - name = "Waste Tank"; - tag = "icon-air_map (NORTH)" + name = "Waste Tank" }, /turf/simulated/floor/tiled, /area/engineering/atmos/backup) "axH" = ( /obj/machinery/atmospherics/pipe/tank/nitrogen{ - tag = "icon-n2_map (NORTH)"; icon_state = "n2_map"; dir = 1 }, @@ -8545,7 +8451,6 @@ /area/maintenance/station/bridge) "aze" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - tag = "icon-steel_decals_central5 (EAST)"; icon_state = "steel_decals_central5"; dir = 4 }, @@ -9484,8 +9389,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 @@ -9842,7 +9746,6 @@ /area/engineering/hallway) "aBB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9 }, @@ -10294,7 +10197,6 @@ /area/engineering/workshop) "aCR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - tag = "icon-map (EAST)"; icon_state = "map"; dir = 4 }, @@ -10335,7 +10237,6 @@ pixel_y = 0 }, /turf/simulated/floor/tiled{ - tag = "icon-monotile"; icon_state = "monotile" }, /area/engineering/hallway) @@ -10647,8 +10548,7 @@ /obj/structure/extinguisher_cabinet{ dir = 4; icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" + pixel_x = -30 }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -10820,7 +10720,6 @@ /area/crew_quarters/captain) "aEx" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - tag = "icon-map (EAST)"; icon_state = "map"; dir = 4 }, @@ -10834,7 +10733,6 @@ /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/portable_atmospherics/powered/pump/filled, /turf/simulated/floor/tiled{ - tag = "icon-monotile"; icon_state = "monotile" }, /area/engineering/hallway) @@ -11299,8 +11197,7 @@ "aFK" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /obj/machinery/meter{ frequency = 1443; @@ -11946,7 +11843,6 @@ /area/teleporter) "aIi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9 }, @@ -11977,8 +11873,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled, /area/engineering/hallway) @@ -12234,8 +12129,7 @@ "aJk" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/engineering/engineering_airlock) @@ -12250,7 +12144,6 @@ dir = 4 }, /obj/effect/floor_decal/corner_steel_grid{ - tag = "icon-steel_grid (NORTHWEST)"; icon_state = "steel_grid"; dir = 9 }, @@ -12351,8 +12244,7 @@ /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = 32; - tag = "icon-extinguisher_closed (NORTH)" + pixel_y = 32 }, /turf/simulated/floor/tiled, /area/engineering/hallway) @@ -12531,8 +12423,7 @@ "aLp" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /obj/effect/floor_decal/industrial/warning{ dir = 4 @@ -12553,7 +12444,6 @@ "aLr" = ( /obj/effect/floor_decal/borderfloor/corner, /obj/effect/floor_decal/corner_steel_grid{ - tag = "icon-steel_grid (NORTHWEST)"; icon_state = "steel_grid"; dir = 9 }, @@ -13654,6 +13544,15 @@ }, /turf/simulated/floor/tiled, /area/engineering/foyer) +"aQL" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j1s"; + name = "Exploration Hangar"; + sortType = "Exploration Hangar" + }, +/turf/simulated/floor/tiled, +/area/hallway/station/atrium) "aQQ" = ( /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 9 @@ -13791,7 +13690,6 @@ pixel_y = 0 }, /obj/machinery/computer/station_alert/all{ - tag = "icon-computer (EAST)"; icon_state = "computer"; dir = 4 }, @@ -14065,6 +13963,13 @@ /obj/item/weapon/pen/multi, /turf/simulated/floor/carpet/oracarpet, /area/crew_quarters/heads/chief) +"aTU" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central1{ + dir = 1 + }, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "aTW" = ( /obj/machinery/alarm{ dir = 8; @@ -14330,7 +14235,6 @@ /area/engineering/engineering_monitoring) "aVP" = ( /obj/machinery/computer/power_monitor{ - tag = "icon-computer (NORTH)"; icon_state = "computer"; dir = 1 }, @@ -14339,7 +14243,6 @@ /area/engineering/engineering_monitoring) "aVW" = ( /obj/machinery/computer/rcon{ - tag = "icon-computer (NORTH)"; icon_state = "computer"; dir = 1 }, @@ -15918,8 +15821,7 @@ /obj/machinery/door/airlock/multi_tile/metal{ dir = 2; icon_state = "door_closed"; - name = "Cryogenic Storage"; - tag = "icon-door_closed" + name = "Cryogenic Storage" }, /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -16166,8 +16068,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 @@ -16189,8 +16090,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 @@ -16213,8 +16113,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/lightgrey/border{ dir = 1 @@ -16262,8 +16161,7 @@ /obj/structure/extinguisher_cabinet{ dir = 4; icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" + pixel_x = -30 }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -16564,7 +16462,6 @@ opacity = 0 }, /obj/machinery/door/window/northleft{ - tag = "icon-right (NORTH)"; name = "Reception Window"; icon_state = "right"; dir = 1 @@ -17017,8 +16914,7 @@ "bnl" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; - icon_state = "intact"; - tag = "icon-intact-f (NORTHWEST)" + icon_state = "intact" }, /obj/machinery/light/small{ dir = 4; @@ -17036,8 +16932,7 @@ "bno" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1; - icon_state = "map"; - tag = "icon-manifold-f (NORTH)" + icon_state = "map" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -17162,8 +17057,7 @@ /obj/structure/extinguisher_cabinet{ dir = 4; icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" + pixel_x = -30 }, /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -17238,8 +17132,7 @@ "boB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /obj/effect/decal/cleanable/dirt, /obj/machinery/meter{ @@ -17511,8 +17404,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor, /area/hallway/station/docks) @@ -18336,8 +18228,7 @@ "bvE" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/hallway/station/docks) @@ -19321,8 +19212,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) @@ -19933,8 +19823,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) @@ -20012,8 +19901,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /obj/machinery/access_button{ command = "cycle_interior"; @@ -20610,8 +20498,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) @@ -20688,8 +20575,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) @@ -20718,8 +20604,7 @@ "bPF" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) @@ -20729,8 +20614,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) @@ -20766,8 +20650,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled, /area/tether/station/dock_one) @@ -20835,8 +20718,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /obj/machinery/embedded_controller/radio/airlock/docking_port{ frequency = 1380; @@ -20860,8 +20742,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /turf/simulated/floor/tiled/dark, /area/tether/station/dock_one) @@ -20882,8 +20763,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/tether/station/dock_two) @@ -20893,8 +20773,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /obj/machinery/light/small{ dir = 4 @@ -21533,6 +21412,34 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/tiled, /area/bridge_hallway) +"ceM" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"coV" = ( +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/station/excursion_dock) "cDQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -21547,6 +21454,34 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"dbI" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 + }, +/obj/machinery/meter, +/turf/simulated/shuttle/floor/darkred, +/area/shuttle/excursion/tether) +"deW" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 10 + }, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/excursion/tether) +"dvn" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/tether/station/explorer_meeting) "dxX" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -21558,6 +21493,31 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/monotile, /area/hallway/station/atrium) +"dMN" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/vending/snack, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"dPZ" = ( +/obj/machinery/camera/network/northern_star{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 4 + }, +/obj/machinery/photocopier, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "edg" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -21577,12 +21537,19 @@ dir = 10 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (SOUTHWEST)"; icon_state = "bordercolor"; dir = 10 }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"eAe" = ( +/obj/machinery/alarm{ + frequency = 1441; + pixel_y = 22 + }, +/obj/structure/closet/secure_closet/pilot, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_prep) "eUx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, @@ -21597,7 +21564,6 @@ dir = 1 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTH)"; icon_state = "bordercolor"; dir = 1 }, @@ -21646,12 +21612,25 @@ dir = 1 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTH)"; icon_state = "bordercolor"; dir = 1 }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"hgY" = ( +/obj/machinery/washing_machine, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "hJg" = ( /obj/structure/table/woodentable, /obj/item/weapon/paper_bin{ @@ -21664,6 +21643,20 @@ /obj/structure/table/woodentable, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"ixk" = ( +/obj/structure/table/woodentable, +/obj/machinery/photocopier/faxmachine{ + department = "Exploration Briefing Room" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "jop" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/purple/border, @@ -21672,6 +21665,26 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"jtj" = ( +/obj/structure/table/woodentable, +/obj/item/device/taperecorder, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"jDS" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "jKX" = ( /obj/structure/table/woodentable, /obj/item/device/camera, @@ -21679,12 +21692,40 @@ dir = 4 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (EAST)"; icon_state = "bordercolor"; dir = 4 }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"jZJ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/structure/closet/secure_closet/guncabinet/excursion, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_prep) +"lue" = ( +/obj/structure/bed/chair/office/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/landmark/start{ + name = "Search and Rescue" + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "lHz" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -21693,6 +21734,42 @@ /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"lMo" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + autoclose = 1; + dir = 2; + id_tag = null; + name = "Exploration Briefing"; + req_access = list(); + req_one_access = list(19,43,67) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central1, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"lNs" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Search and Rescue" + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "mcn" = ( /obj/machinery/light{ dir = 4; @@ -21703,7 +21780,6 @@ dir = 4 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (EAST)"; icon_state = "bordercolor"; dir = 4 }, @@ -21721,7 +21797,6 @@ dir = 8 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (WEST)"; icon_state = "bordercolor"; dir = 8 }, @@ -21732,6 +21807,9 @@ /obj/structure/filingcabinet/filingcabinet, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"mFo" = ( +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "mId" = ( /obj/structure/bed/chair/office/dark, /obj/structure/cable/green{ @@ -21747,15 +21825,93 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"mJI" = ( +/obj/machinery/camera/network/northern_star{ + dir = 5 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + dir = 4; + icon_state = "extinguisher_closed"; + pixel_x = -30 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"nks" = ( +/obj/structure/bed/chair/office/dark, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Explorer" + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"nma" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "north bump"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "nxL" = ( /obj/effect/floor_decal/steeldecal/steel_decals6{ dir = 10 }, /turf/simulated/floor/tiled, /area/tether/station/excursion_dock) +"nOF" = ( +/obj/structure/closet/secure_closet/pilot, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_prep) +"nSw" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/shuttle/plating, +/area/shuttle/excursion/tether) "nYM" = ( /turf/simulated/wall/r_wall, /area/tether/station/explorer_meeting) +"oaO" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "oVP" = ( /obj/machinery/atmospherics/unary/vent_pump/high_volume/wall_mounted{ dir = 1; @@ -21773,6 +21929,53 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_prep) +"pHd" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/landmark/start{ + name = "Pilot" + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"pZL" = ( +/obj/machinery/shuttle_sensor{ + dir = 5; + id_tag = "shuttlesens_exp" + }, +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 4 + }, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/excursion/tether) +"qgR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/excursion_dock) +"qzk" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 5 + }, +/obj/effect/floor_decal/corner/purple/border{ + icon_state = "bordercolor"; + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "rhA" = ( /obj/effect/floor_decal/borderfloorblack, /obj/effect/floor_decal/industrial/danger, @@ -21811,7 +22014,6 @@ dir = 4 }, /obj/machinery/shower{ - tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4 }, @@ -21829,6 +22031,53 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"sZd" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) +"twv" = ( +/obj/machinery/shuttle_sensor{ + dir = 2; + id_tag = "shuttlesens_exp_psg" + }, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/excursion/tether) +"txl" = ( +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 4 + }, +/obj/machinery/shower{ + icon_state = "shower"; + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, +/obj/structure/curtain/open/shower, +/obj/item/weapon/soap/nanotrasen, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/excursion_dock) +"tCn" = ( +/obj/machinery/shuttle_sensor{ + dir = 6; + id_tag = "shuttlesens_exp_int" + }, +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/excursion/tether) "tEu" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -21838,6 +22087,10 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"tNS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/tether/station/explorer_meeting) "uzS" = ( /obj/structure/table/woodentable, /obj/item/weapon/folder/blue, @@ -21848,67 +22101,12 @@ dir = 1 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTH)"; icon_state = "bordercolor"; dir = 1 }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"wmC" = ( -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"wLj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"wSk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor/plating, -/area/tether/station/explorer_meeting) -"zMp" = ( -/obj/effect/floor_decal/steeldecal/steel_decals_central1{ - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"AmC" = ( -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"AwZ" = ( -/obj/structure/disposalpipe/sortjunction{ - dir = 8; - icon_state = "pipe-j1s"; - name = "Exploration Hangar"; - sortType = "Exploration Hangar"; - tag = "icon-pipe-j1s (WEST)" - }, -/turf/simulated/floor/tiled, -/area/hallway/station/atrium) -"AyD" = ( -/obj/machinery/shuttle_sensor{ - dir = 5; - id_tag = "shuttlesens_exp" - }, -/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ - dir = 4 - }, -/turf/simulated/shuttle/wall/voidcraft, -/area/shuttle/excursion/tether) -"BGQ" = ( +"vrH" = ( /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -21931,407 +22129,40 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/station/excursion_dock) -"BZA" = ( -/obj/machinery/washing_machine, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"CaJ" = ( -/obj/effect/floor_decal/steeldecal/steel_decals5{ - dir = 4 - }, -/obj/machinery/shower{ - tag = "icon-shower (EAST)"; - icon_state = "shower"; - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals10, -/obj/structure/curtain/open/shower, -/obj/item/weapon/soap/nanotrasen, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/turf/simulated/floor/tiled/monotile, -/area/tether/station/excursion_dock) -"DfE" = ( -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 1 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9{ - dir = 8 - }, -/obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/structure/closet/secure_closet/guncabinet/excursion, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_prep) -"Dne" = ( -/obj/structure/table/woodentable, -/obj/item/device/taperecorder, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"DHJ" = ( -/obj/machinery/alarm{ - frequency = 1441; - pixel_y = 22 - }, -/obj/structure/closet/secure_closet/pilot, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_prep) -"EKk" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/obj/effect/landmark/start{ - name = "Search and Rescue" - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"Fuf" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 9 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTHWEST)"; - icon_state = "bordercolor"; - dir = 9 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 9 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"GSn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/tiled/monotile, -/area/tether/station/excursion_dock) -"GVt" = ( -/obj/structure/closet/secure_closet/pilot, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_prep) -"IjZ" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTH)"; - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"Kfy" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (EAST)"; - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/vending/snack, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"KNg" = ( -/obj/machinery/shuttle_sensor{ - dir = 6; - id_tag = "shuttlesens_exp_int" - }, -/turf/simulated/shuttle/wall/voidcraft, -/area/shuttle/excursion/tether) -"MaY" = ( -/obj/structure/table/woodentable, -/obj/item/weapon/pen, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"Mws" = ( -/obj/machinery/shuttle_sensor{ - dir = 2; - id_tag = "shuttlesens_exp_psg" - }, -/turf/simulated/shuttle/wall/voidcraft, -/area/shuttle/excursion/tether) -"NuW" = ( -/obj/machinery/camera/network/northern_star{ - dir = 8 - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (EAST)"; - icon_state = "bordercolor"; - dir = 4 - }, -/obj/machinery/photocopier, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"Nyt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"NEQ" = ( -/obj/machinery/camera/network/northern_star{ - dir = 5 +"vUO" = ( +/obj/machinery/light{ + dir = 8; + icon_state = "tube1"; + pixel_y = 0 }, /obj/structure/disposalpipe/segment, /obj/effect/floor_decal/borderfloor{ dir = 8 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (WEST)"; icon_state = "bordercolor"; dir = 8 }, -/obj/structure/extinguisher_cabinet{ - dir = 4; - icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" - }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"PeQ" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals6{ - dir = 5 - }, -/turf/simulated/floor/tiled, -/area/tether/station/excursion_dock) -"PqO" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/landmark/start{ - name = "Pilot" - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"PEF" = ( -/obj/machinery/door/airlock/glass{ - name = "Shuttle Bay" - }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/green{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel_grid, -/area/tether/station/excursion_dock) -"PYd" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 10 - }, -/turf/simulated/shuttle/wall/voidcraft, -/area/shuttle/excursion/tether) -"Qua" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 9 - }, -/turf/simulated/shuttle/wall/voidcraft, -/area/shuttle/excursion/tether) -"QQi" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/floor_decal/borderfloor, -/obj/effect/floor_decal/corner/purple/border, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"RyW" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - autoclose = 1; - dir = 2; - id_tag = null; - name = "Exploration Briefing"; - req_access = list(); - req_one_access = list(19,43,67) - }, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/floor_decal/steeldecal/steel_decals_central1, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"RGf" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/tether/station/explorer_meeting) -"SzY" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 1 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTH)"; - icon_state = "bordercolor"; - dir = 1 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "north bump"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable/green{ - icon_state = "0-2" - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"Tiu" = ( -/obj/structure/bed/chair/office/dark, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/green{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/effect/landmark/start{ - name = "Search and Rescue" - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"Tlr" = ( -/obj/structure/table/woodentable, -/obj/machinery/photocopier/faxmachine{ - department = "Exploration Briefing Room" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 6 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (SOUTHEAST)"; - icon_state = "bordercolor"; - dir = 6 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) -"TpR" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/atmospherics/pipe/simple/visible/yellow{ - dir = 6 - }, -/turf/simulated/shuttle/plating, -/area/shuttle/excursion/tether) -"UkI" = ( -/obj/machinery/atmospherics/pipe/simple/visible/cyan{ - dir = 4 - }, -/obj/machinery/meter, -/turf/simulated/shuttle/floor/darkred, -/area/shuttle/excursion/tether) -"Vrx" = ( +"wbr" = ( /obj/machinery/camera/network/northern_star, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, /turf/simulated/floor/tiled/monotile, /area/tether/station/excursion_dock) -"VZf" = ( -/obj/structure/bed/chair/office/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +"wmC" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"WkO" = ( -/obj/structure/bed/chair/office/dark, -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Explorer" - }, +"wrg" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/pen, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"XgS" = ( +"wFb" = ( /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -22351,7 +22182,6 @@ dir = 8 }, /obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (WEST)"; icon_state = "bordercolor"; dir = 8 }, @@ -22360,18 +22190,26 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"YMR" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 5 - }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (NORTHEAST)"; - icon_state = "bordercolor"; - dir = 5 +"wLj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) -"YRV" = ( +"wSk" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/simulated/floor/plating, +/area/tether/station/explorer_meeting) +"xhk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, @@ -22383,23 +22221,27 @@ }, /turf/simulated/floor/tiled/monotile, /area/tether/station/excursion_dock) -"YUm" = ( -/obj/machinery/light{ - dir = 8; - icon_state = "tube1"; - pixel_y = 0 +"xhv" = ( +/obj/machinery/door/airlock/glass{ + name = "Shuttle Bay" + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/effect/floor_decal/borderfloor{ - dir = 8 +/turf/simulated/floor/tiled/steel_grid, +/area/tether/station/excursion_dock) +"xxc" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 }, -/obj/effect/floor_decal/corner/purple/border{ - tag = "icon-bordercolor (WEST)"; - icon_state = "bordercolor"; - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/tether/station/explorer_meeting) +/turf/simulated/shuttle/wall/voidcraft, +/area/shuttle/excursion/tether) (1,1,1) = {" aaa @@ -30242,17 +30084,17 @@ aah aah aaP aad -Vrx +wbr aah akC aah aah aaP aad -CaJ +txl sSn sSn -CaJ +txl aad ach aaT @@ -30496,7 +30338,7 @@ aao aao aao asY -YRV +xhk aad ack aaT @@ -30733,7 +30575,7 @@ aap aap aap aaq -KNg +tCn amD aaq aaq @@ -31343,7 +31185,7 @@ aaM aaD ajQ aaq -TpR +nSw amJ auV auV @@ -31351,11 +31193,11 @@ oVP aap avK auO -PEF +xhv dxX bOa aAB -AwZ +aQL acy acT acy @@ -31460,7 +31302,7 @@ aal aaq aau aaE -Mws +twv aaM ajf ajP @@ -31472,7 +31314,7 @@ apk oVP aap gcH -GSn +qgR aad axI aaT @@ -31590,7 +31432,7 @@ aaq alk amL aob -UkI +dbI aaq aaO avK @@ -31709,14 +31551,14 @@ aap aap aap aaq -PYd +deW amK -AyD -Qua +pZL +xxc aau aaO avK -GSn +qgR aad aac aaT @@ -31838,7 +31680,7 @@ aap aap aap avK -GSn +qgR aad aac aaT @@ -31960,7 +31802,7 @@ afd afd afd ate -GSn +qgR aad aac aaT @@ -32081,7 +31923,7 @@ aoc apn aqd arw -BGQ +vrH auU aad aac @@ -32203,7 +32045,7 @@ aah aad soc nxL -PeQ +coV abc aad aac @@ -32324,8 +32166,8 @@ aad aad aad aad -zMp -RyW +aTU +lMo nYM nYM nYM @@ -32446,10 +32288,10 @@ akL alp amU aiv -Fuf -XgS -YUm -NEQ +oaO +wFb +vUO +mJI mCP epz ash @@ -32570,9 +32412,9 @@ amU aiv fsu sbI -VZf +sZd edg -Nyt +tNS lHz ash amg @@ -32681,7 +32523,7 @@ aaa aac aac aiv -GVt +nOF akL ajX akL @@ -32691,9 +32533,9 @@ alu amU aiv uDP -WkO +nks uzS -MaY +wrg tEu wmC ash @@ -32803,7 +32645,7 @@ aaa aaa aac aiv -DHJ +eAe akL ajX akL @@ -32814,7 +32656,7 @@ amU aiv grh mId -MaY +wrg flX rRn jop @@ -32935,10 +32777,10 @@ alu amW aiv uDP -WkO +nks mtd irt -EKk +lNs jop ash amg @@ -33056,8 +32898,8 @@ akL akL amW aiv -SzY -Tiu +nma +lue hJg mtd tEu @@ -33178,12 +33020,12 @@ bQJ bQJ aiv aiv -IjZ +jDS wLj cNq -PqO +pHd eUx -QQi +ceM ash amg amg @@ -33297,15 +33139,15 @@ aei bQK bQK bQK -DfE +jZJ aiv -BZA +hgY uDP -AmC -AmC -AmC -AmC -Dne +mFo +mFo +mFo +mFo +jtj ash amg amg @@ -33421,13 +33263,13 @@ aiv aiv aiv aiv -BZA -YMR -Kfy +hgY +qzk +dMN mcn -NuW +dPZ jKX -Tlr +ixk ash amg amg @@ -33543,7 +33385,7 @@ aac aac aac nYM -RGf +dvn ggi ggi ggi diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm index b094ae7f3c..65d59d0028 100644 --- a/maps/tether/tether-06-station2.dmm +++ b/maps/tether/tether-06-station2.dmm @@ -506,7 +506,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/window/brigdoor/southleft{ - tag = "icon-leftsecure (NORTH)"; name = "Cell 3"; icon_state = "leftsecure"; dir = 1; @@ -558,8 +557,7 @@ icon_state = "leftsecure"; id = "Cell 4"; name = "Cell 4"; - req_access = list(2); - tag = "icon-leftsecure (NORTH)" + req_access = list(2) }, /obj/machinery/door/blast/regular{ density = 0; @@ -834,7 +832,9 @@ /area/security/brig) "bo" = ( /obj/machinery/disposal, -/obj/structure/disposalpipe/trunk, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) "bp" = ( @@ -991,10 +991,6 @@ }, /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) -"bJ" = ( -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel_dirty, -/area/security/brig) "bK" = ( /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) @@ -1434,21 +1430,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) -"cw" = ( -/obj/structure/cable/green{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel_dirty, -/area/security/brig) "cx" = ( /obj/structure/cable/green{ d1 = 4; @@ -2220,7 +2201,6 @@ name = "Prisoner's Locker" }, /obj/item/clothing/suit/storage/apron, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/steel_dirty, /area/security/brig) "dQ" = ( @@ -2544,31 +2524,6 @@ }, /turf/simulated/floor/plating, /area/security/brig) -"ev" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/structure/cable/green{ - icon_state = "0-4" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/blast/regular{ - density = 0; - dir = 4; - icon_state = "pdoor0"; - id = "security_lockdown"; - name = "Security Blast Doors"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/security/brig) "ew" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -2992,7 +2947,6 @@ /obj/effect/floor_decal/corner/red/border{ dir = 1 }, -/obj/structure/disposalpipe/segment, /obj/structure/cable/green{ d1 = 2; d2 = 8; @@ -3026,7 +2980,6 @@ /area/security/prison) "fa" = ( /obj/structure/stairs{ - tag = "icon-default (WEST)"; icon_state = ""; dir = 8 }, @@ -3313,10 +3266,6 @@ "fF" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, /obj/structure/cable/green{ d1 = 1; d2 = 4; @@ -3333,9 +3282,6 @@ "fG" = ( /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/red/border, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -3358,9 +3304,6 @@ /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 9 }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/machinery/camera/network/security{ dir = 1 }, @@ -3378,10 +3321,6 @@ /turf/simulated/floor/tiled, /area/security/prison) "fI" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 5 }, @@ -3571,7 +3510,6 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/glass_security{ name = "Security Processing"; req_access = list(1) @@ -3795,7 +3733,6 @@ dir = 1 }, /obj/effect/floor_decal/corner/yellow/bordercorner{ - tag = "icon-bordercolorcorner (NORTH)"; icon_state = "bordercolorcorner"; dir = 1 }, @@ -3860,7 +3797,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 }, @@ -4111,7 +4047,6 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, @@ -4318,7 +4253,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/security/security_processing) "hw" = ( @@ -4472,7 +4406,6 @@ /area/engineering/locker_room) "hM" = ( /obj/effect/floor_decal/corner_steel_grid{ - tag = "icon-steel_grid (EAST)"; icon_state = "steel_grid"; dir = 4 }, @@ -4606,10 +4539,13 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/structure/disposalpipe/junction, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, /turf/simulated/floor/tiled, /area/security/security_processing) "hX" = ( @@ -8516,8 +8452,7 @@ /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = -32; - tag = "icon-extinguisher_closed (NORTH)" + pixel_y = -32 }, /turf/simulated/floor/tiled, /area/hallway/station/starboard) @@ -10016,7 +9951,6 @@ /area/medical/virology) "qI" = ( /obj/machinery/door/window/westright{ - tag = "icon-right (NORTH)"; name = "Virology Isolation Room One"; icon_state = "right"; dir = 1; @@ -10031,8 +9965,7 @@ dir = 1; icon_state = "right"; name = "Virology Isolation Room Two"; - req_access = list(39); - tag = "icon-right (NORTH)" + req_access = list(39) }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/black, @@ -10194,7 +10127,6 @@ /area/vacant/vacant_restaurant_upper) "rb" = ( /obj/structure/disposalpipe/broken{ - tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4 }, @@ -10798,8 +10730,7 @@ /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = -32; - tag = "icon-extinguisher_closed (NORTH)" + pixel_y = -32 }, /turf/simulated/floor/tiled, /area/hallway/station/port) @@ -11293,8 +11224,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1; - icon_state = "map"; - tag = "icon-manifold-f (NORTH)" + icon_state = "map" }, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) @@ -11633,8 +11563,7 @@ /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) @@ -11955,8 +11884,7 @@ /obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled/dark, /area/ai_monitored/storage/eva) @@ -12225,8 +12153,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) @@ -12762,8 +12689,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/red{ dir = 6; - icon_state = "intact"; - tag = "icon-intact (SOUTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled/white, /area/medical/virologyaccess) @@ -13569,8 +13495,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 9; - icon_state = "intact"; - tag = "icon-intact (NORTHEAST)" + icon_state = "intact" }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -13741,8 +13666,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/medical/biostorage) @@ -13953,8 +13877,7 @@ "xv" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/medical/biostorage) @@ -14063,8 +13986,7 @@ /obj/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 9; - icon_state = "intact"; - tag = "icon-intact (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled/steel, /area/medical/virologyaccess) @@ -14491,8 +14413,7 @@ "yu" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; - icon_state = "intact"; - tag = "icon-intact-f (NORTHWEST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/medical/biostorage) @@ -15159,7 +15080,6 @@ dir = 4 }, /obj/machinery/door/firedoor/glass/hidden{ - tag = "icon-door_open"; icon_state = "door_open"; dir = 2 }, @@ -15533,8 +15453,7 @@ /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = -32; - tag = "icon-extinguisher_closed (NORTH)" + pixel_y = -32 }, /turf/simulated/floor/tiled/white, /area/hallway/secondary/escape/medical_escape_pod_hallway) @@ -15611,8 +15530,7 @@ /obj/effect/floor_decal/corner/paleblue/border, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 5; - icon_state = "intact"; - tag = "icon-intact (NORTHEAST)" + icon_state = "intact" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, @@ -16468,8 +16386,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 5; - icon_state = "intact"; - tag = "icon-intact (NORTHEAST)" + icon_state = "intact" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/white, @@ -17550,6 +17467,32 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/crew_quarters/medbreak) +"Ev" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/simulated/mineral/vacuum, +/area/mine/explored/upper_level) +"Ew" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/security/prison) +"Fo" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/red/border, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/tiled, +/area/security/prison) "FD" = ( /obj/structure/bed/padded, /obj/machinery/camera/network/medbay{ @@ -17558,6 +17501,49 @@ }, /turf/simulated/floor/tiled/white, /area/medical/virology) +"IK" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/wall/r_wall, +/area/security/prison) +"IO" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/simulated/floor/airless, +/area/space) +"Mq" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/airless, +/area/space) +"RT" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/simulated/mineral/vacuum, +/area/mine/explored/upper_level) +"SI" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/mineral/vacuum, +/area/mine/explored/upper_level) +"TA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/security/brig) (1,1,1) = {" aa @@ -23314,27 +23300,27 @@ ab ab ab ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ae -ah -aG -aZ +Ev +SI +SI +SI +SI +SI +SI +SI +SI +IK +Ew +Fo +TA bo -bJ -bJ -cw -bJ -bJ +bK +bK +cp +bK +bK dP -ev +ew eY fF ae @@ -23432,11 +23418,11 @@ aa aa ab ab -ab -ab -ab -ac -ac +IO +Mq +Mq +SI +RT ac ac ac diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index 3bd52b461c..9e8da75fef 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -76,8 +76,7 @@ "am" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8; - icon_state = "map"; - tag = "icon-manifold-f (WEST)" + icon_state = "map" }, /obj/machinery/meter{ frequency = 1443; @@ -322,7 +321,7 @@ /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; icon_state = "map"; - tag = "icon-manifold-f (EAST)" + }, /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -587,8 +586,7 @@ "ba" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /turf/simulated/floor/tiled, /area/maintenance/station/sec_upper) @@ -2893,8 +2891,7 @@ dir = 4; icon_state = "secintercom"; pixel_x = 24; - pixel_y = 0; - tag = "icon-secintercom (EAST)" + pixel_y = 0 }, /turf/simulated/floor/wood, /area/security/breakroom) @@ -2965,8 +2962,7 @@ dir = 8; icon_state = "secintercom"; pixel_x = -24; - pixel_y = 0; - tag = "icon-secintercom (WEST)" + pixel_y = 0 }, /turf/simulated/floor/tiled/dark, /area/security/warden) @@ -4169,7 +4165,6 @@ dir = 1 }, /obj/effect/floor_decal/corner/red/bordercorner{ - tag = "icon-bordercolorcorner (NORTH)"; icon_state = "bordercolorcorner"; dir = 1 }, @@ -5263,8 +5258,7 @@ /obj/item/device/radio/intercom/department/security{ dir = 1; icon_state = "secintercom"; - pixel_y = 24; - tag = "icon-secintercom (NORTH)" + pixel_y = 24 }, /turf/simulated/floor/tiled, /area/security/briefing_room) @@ -7309,8 +7303,7 @@ /obj/item/device/radio/intercom/department/security{ dir = 2; icon_state = "secintercom"; - pixel_y = -24; - tag = "icon-secintercom (NORTH)" + pixel_y = -24 }, /turf/simulated/floor/tiled/dark, /area/crew_quarters/heads/hos) @@ -8300,8 +8293,7 @@ /obj/item/device/radio/intercom/department/security{ dir = 2; icon_state = "secintercom"; - pixel_y = -24; - tag = "icon-secintercom (NORTH)" + pixel_y = -24 }, /turf/simulated/floor/tiled, /area/security/briefing_room) @@ -9097,8 +9089,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 10; icon_state = "borderfloorcorner2"; - pixel_x = 0; - tag = "icon-borderfloorcorner2 (SOUTHWEST)" + pixel_x = 0 }, /obj/effect/floor_decal/corner/red/bordercorner2{ dir = 10 @@ -10812,8 +10803,7 @@ /obj/item/device/radio/intercom/department/security{ dir = 2; icon_state = "secintercom"; - pixel_y = -24; - tag = "icon-secintercom (NORTH)" + pixel_y = -24 }, /turf/simulated/floor/tiled, /area/security/lobby) @@ -11703,8 +11693,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 10; icon_state = "borderfloorcorner2"; - pixel_x = 0; - tag = "icon-borderfloorcorner2 (SOUTHWEST)" + pixel_x = 0 }, /obj/effect/floor_decal/corner/lightgrey/bordercorner2{ dir = 10 @@ -12438,7 +12427,6 @@ icon_state = "4-8" }, /obj/effect/floor_decal/industrial/danger{ - tag = "icon-danger (WEST)"; icon_state = "danger"; dir = 8 }, @@ -13689,8 +13677,7 @@ /obj/structure/sign/directions/security{ dir = 1; icon_state = "direction_sec"; - pixel_y = 8; - tag = "icon-direction_sec (WEST)" + pixel_y = 8 }, /turf/simulated/wall, /area/teleporter/departing) @@ -13730,8 +13717,7 @@ /obj/structure/sign/directions/security{ dir = 1; icon_state = "direction_sec"; - pixel_y = 8; - tag = "icon-direction_sec (WEST)" + pixel_y = 8 }, /obj/structure/sign/directions/cargo{ dir = 4; @@ -15744,7 +15730,6 @@ dir = 9 }, /obj/effect/decal/cleanable/cobweb{ - tag = "icon-cobweb2"; icon_state = "cobweb2" }, /turf/simulated/floor/tiled, @@ -15990,8 +15975,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled/white, /area/medical/chemistry) @@ -16144,8 +16128,7 @@ /obj/machinery/conveyor{ dir = 10; icon_state = "conveyor0"; - id = "QMLoad"; - tag = "icon-conveyor0 (SOUTHWEST)" + id = "QMLoad" }, /turf/simulated/floor, /area/quartermaster/storage) @@ -17999,8 +17982,7 @@ "DV" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -18127,8 +18109,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) @@ -18550,8 +18531,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) @@ -19388,8 +19368,7 @@ /obj/structure/extinguisher_cabinet{ dir = 8; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled/white, /area/medical/sleeper) @@ -20861,7 +20840,6 @@ dir = 1 }, /obj/machinery/door/firedoor/glass/hidden{ - tag = "icon-door_open"; icon_state = "door_open"; dir = 2 }, diff --git a/maps/tether/tether-09-solars.dmm b/maps/tether/tether-09-solars.dmm index b0fcd4343d..fce5f6c6f5 100644 --- a/maps/tether/tether-09-solars.dmm +++ b/maps/tether/tether-09-solars.dmm @@ -1110,7 +1110,6 @@ /area/rnd/outpost/testing) "cy" = ( /obj/effect/floor_decal/industrial/warning/cee{ - tag = "icon-warningcee (NORTH)"; icon_state = "warningcee"; dir = 1 }, @@ -1438,7 +1437,6 @@ pixel_y = 2 }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - tag = "icon-steel_decals_central5 (EAST)"; icon_state = "steel_decals_central5"; dir = 4 }, @@ -1620,8 +1618,7 @@ "dB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4; - icon_state = "map"; - tag = "icon-manifold-f (EAST)" + icon_state = "map" }, /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 5 @@ -1631,8 +1628,7 @@ "dC" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /obj/structure/cable/green{ d1 = 1; @@ -1942,7 +1938,6 @@ /area/rnd/outpost/mixing) "ej" = ( /obj/machinery/atmospherics/pipe/simple/visible/blue{ - tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9 }, @@ -2349,8 +2344,7 @@ /obj/structure/extinguisher_cabinet{ dir = 4; icon_state = "extinguisher_closed"; - pixel_x = -30; - tag = "icon-extinguisher_closed (EAST)" + pixel_x = -30 }, /turf/simulated/floor/tiled, /area/rnd/outpost) @@ -2576,8 +2570,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/rnd/outpost) @@ -2612,8 +2605,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 10; - icon_state = "intact"; - tag = "icon-intact-f (SOUTHWEST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/rnd/outpost) @@ -3399,7 +3391,6 @@ /area/tether/outpost/solars_outside) "gv" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1 }, @@ -3437,7 +3428,6 @@ /area/rnd/outpost/heating) "gy" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10 }, @@ -3658,7 +3648,6 @@ dir = 6 }, /obj/effect/floor_decal/industrial/warning/cee{ - tag = "icon-warningcee (NORTH)"; icon_state = "warningcee"; dir = 1 }, @@ -3938,7 +3927,6 @@ /area/rnd/outpost/heating) "hp" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1 }, @@ -3948,7 +3936,6 @@ "hq" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/manifold/visible/red{ - tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1 }, @@ -4032,8 +4019,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 5; - icon_state = "intact"; - tag = "icon-intact-f (NORTHEAST)" + icon_state = "intact" }, /turf/simulated/floor/tiled, /area/rnd/outpost) @@ -4498,7 +4484,6 @@ /area/rnd/outpost/atmos) "il" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10 }, @@ -4579,7 +4564,6 @@ /area/rnd/outpost/heating) "iu" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1 }, @@ -4587,7 +4571,6 @@ /area/rnd/outpost/heating) "iv" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5 }, @@ -4603,8 +4586,7 @@ /obj/structure/extinguisher_cabinet{ dir = 2; icon_state = "extinguisher_closed"; - pixel_x = 30; - tag = "icon-extinguisher_closed (WEST)" + pixel_x = 30 }, /turf/simulated/floor/tiled/white, /area/rnd/outpost/heating) @@ -5033,8 +5015,7 @@ /area/tether/outpost/solars_outside) "ju" = ( /obj/structure/cable/heavyduty{ - icon_state = "1-8"; - tag = "icon-1-4" + icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/virgo3b, diff --git a/maps/tether/tether-10-colony.dmm b/maps/tether/tether-10-colony.dmm index 282e8542b5..5e5d9fa122 100644 --- a/maps/tether/tether-10-colony.dmm +++ b/maps/tether/tether-10-colony.dmm @@ -65,7 +65,6 @@ }, /obj/machinery/computer/shuttle_control/specops, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -74,7 +73,6 @@ "al" = ( /obj/structure/bed/chair, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -87,7 +85,6 @@ }, /obj/structure/bed/chair, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -109,7 +106,6 @@ }, /obj/structure/bed/chair, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -338,7 +334,6 @@ dir = 8 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -346,7 +341,6 @@ }) "aC" = ( /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -362,7 +356,6 @@ tag_door = "specops_shuttle_fore_hatch" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -536,7 +529,6 @@ pixel_y = -28 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -547,7 +539,6 @@ name = "Implant Management" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -563,7 +554,6 @@ tag_door = "specops_shuttle_port_hatch" }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -574,7 +564,6 @@ dir = 1 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -588,7 +577,6 @@ dir = 4 }, /turf/simulated/shuttle/floor{ - tag = "icon-floor_red"; icon_state = "floor_red" }, /area/shuttle/specops/centcom{ @@ -1232,7 +1220,6 @@ /area/centcom/specops) "bQ" = ( /obj/effect/floor_decal/corner/white{ - tag = "icon-corner_white (SOUTHWEST)"; icon_state = "corner_white"; dir = 10 }, @@ -3386,8 +3373,7 @@ dir = 5; icon_state = "borderfloorcorner2_white"; pixel_x = 0; - pixel_y = 0; - tag = "icon-borderfloorcorner2_white (NORTHEAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/purple/bordercorner2{ dir = 4 @@ -4269,7 +4255,6 @@ dir = 4 }, /obj/machinery/computer/operating{ - tag = "icon-computer (NORTH)"; name = "Robotics Operating Computer"; icon_state = "computer"; dir = 1 @@ -4337,8 +4322,7 @@ /obj/structure/table/reinforced, /obj/structure/flora/pottedplant{ icon_state = "plant-01"; - pixel_y = 10; - tag = "icon-plant-01" + pixel_y = 10 }, /turf/unsimulated/floor/steel, /area/centcom/control) @@ -6578,7 +6562,6 @@ /area/centcom/control) "lT" = ( /obj/machinery/computer/rdservercontrol{ - tag = "icon-computer (NORTH)"; name = "Master R&D Server Controller"; icon_state = "computer"; dir = 1; @@ -6974,8 +6957,7 @@ dir = 5; icon_state = "borderfloorcorner2_white"; pixel_x = 0; - pixel_y = 0; - tag = "icon-borderfloorcorner2_white (NORTHEAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/paleblue/bordercorner2{ dir = 5 @@ -7180,8 +7162,7 @@ "mX" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9; - icon_state = "intact"; - tag = "icon-intact-f (NORTHWEST)" + icon_state = "intact" }, /turf/unsimulated/floor/steel{ icon_state = "white" @@ -7275,8 +7256,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; icon_state = "borderfloorcorner2"; - pixel_y = 0; - tag = "icon-borderfloorcorner2 (EAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 @@ -7763,8 +7743,7 @@ dir = 5; icon_state = "borderfloorcorner2_white"; pixel_x = 0; - pixel_y = 0; - tag = "icon-borderfloorcorner2_white (NORTHEAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/paleblue/bordercorner2{ dir = 4 @@ -8079,8 +8058,7 @@ /obj/structure/table/standard, /obj/structure/flora/pottedplant{ icon_state = "plant-06"; - pixel_y = 8; - tag = "icon-plant-06" + pixel_y = 8 }, /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -8091,8 +8069,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; icon_state = "borderfloorcorner2"; - pixel_y = 0; - tag = "icon-borderfloorcorner2 (EAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 @@ -8584,8 +8561,7 @@ /obj/structure/table/standard, /obj/structure/flora/pottedplant{ icon_state = "plant-06"; - pixel_y = 8; - tag = "icon-plant-06" + pixel_y = 8 }, /turf/unsimulated/floor/steel, /area/centcom/command) @@ -8849,8 +8825,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = -16; - tag = "icon-borderfloor (NORTH)" + pixel_y = -16 }, /obj/machinery/photocopier/faxmachine, /turf/unsimulated/floor/steel, @@ -8862,8 +8837,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = -16; - tag = "icon-borderfloor (NORTH)" + pixel_y = -16 }, /turf/unsimulated/floor/steel, /area/centcom/command) @@ -8872,8 +8846,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = -16; - tag = "icon-borderfloor (NORTH)" + pixel_y = -16 }, /obj/item/weapon/paper_bin{ pixel_x = -1; @@ -8893,7 +8866,6 @@ /area/centcom/command) "qc" = ( /obj/machinery/door/airlock/multi_tile/glass{ - tag = "icon-door_closed"; icon_state = "door_closed"; dir = 2 }, @@ -8977,8 +8949,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; icon_state = "borderfloorcorner2"; - pixel_y = 0; - tag = "icon-borderfloorcorner2 (EAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 @@ -9029,8 +9000,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; icon_state = "borderfloorcorner2"; - pixel_y = 0; - tag = "icon-borderfloorcorner2 (EAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 @@ -9196,8 +9166,7 @@ }, /obj/structure/flora/pottedplant{ icon_state = "plant-01"; - pixel_y = 10; - tag = "icon-plant-01" + pixel_y = 10 }, /turf/unsimulated/floor/steel, /area/centcom/command) @@ -9551,8 +9520,7 @@ /obj/structure/table/standard, /obj/structure/flora/pottedplant{ icon_state = "plant-01"; - pixel_y = 10; - tag = "icon-plant-01" + pixel_y = 10 }, /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -9878,14 +9846,12 @@ /obj/structure/table/glass, /obj/structure/flora/pottedplant{ icon_state = "plant-01"; - pixel_y = 10; - tag = "icon-plant-01" + pixel_y = 10 }, /obj/effect/floor_decal/borderfloor{ dir = 8; icon_state = "borderfloor"; - pixel_x = 16; - tag = "icon-borderfloor (WEST)" + pixel_x = 16 }, /turf/unsimulated/floor/steel, /area/centcom/command) @@ -10044,8 +10010,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 8; icon_state = "borderfloor"; - pixel_x = 16; - tag = "icon-borderfloor (WEST)" + pixel_x = 16 }, /obj/item/weapon/paper_bin{ pixel_x = -1; @@ -10246,8 +10211,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = -16; - tag = "icon-borderfloor (NORTH)" + pixel_y = -16 }, /turf/unsimulated/floor/steel, /area/centcom/command) @@ -10256,20 +10220,17 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = -16; - tag = "icon-borderfloor (NORTH)" + pixel_y = -16 }, /obj/effect/floor_decal/borderfloor{ dir = 8; icon_state = "borderfloor"; - pixel_x = 16; - tag = "icon-borderfloor (WEST)" + pixel_x = 16 }, /obj/effect/floor_decal/borderfloor/corner2{ dir = 10; icon_state = "borderfloorcorner2"; - pixel_x = 16; - tag = "icon-borderfloorcorner2 (SOUTHWEST)" + pixel_x = 16 }, /turf/unsimulated/floor/steel, /area/centcom/command) @@ -10469,8 +10430,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; icon_state = "borderfloorcorner2"; - pixel_y = 0; - tag = "icon-borderfloorcorner2 (EAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 @@ -10551,8 +10511,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 4; icon_state = "borderfloorcorner2"; - pixel_y = 0; - tag = "icon-borderfloorcorner2 (EAST)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 4 @@ -10988,7 +10947,6 @@ }, /obj/item/weapon/pen, /obj/machinery/door/window/brigdoor{ - tag = "icon-leftsecure"; icon_state = "leftsecure"; dir = 2 }, @@ -11656,8 +11614,7 @@ "vs" = ( /obj/structure/flora/pottedplant{ icon_state = "plant-06"; - pixel_y = 8; - tag = "icon-plant-06" + pixel_y = 8 }, /obj/structure/table/glass, /turf/unsimulated/floor/steel, @@ -12342,8 +12299,7 @@ dir = 5; icon_state = "borderfloorcorner2_white"; pixel_x = 0; - pixel_y = 0; - tag = "icon-borderfloorcorner2_white (NORTHEAST)" + pixel_y = 0 }, /obj/effect/floor_decal/borderfloorwhite/corner2{ dir = 6 @@ -12658,8 +12614,7 @@ dir = 8; icon_state = "leftsecure"; req_access = list(63); - req_one_access = newlist(); - tag = "icon-leftsecure (WEST)" + req_one_access = newlist() }, /obj/machinery/button/remote/airlock{ id = "front"; @@ -12718,8 +12673,7 @@ dir = 8; icon_state = "leftsecure"; req_access = list(63); - req_one_access = newlist(); - tag = "icon-leftsecure (WEST)" + req_one_access = newlist() }, /turf/unsimulated/floor{ icon_state = "vault"; @@ -14396,7 +14350,6 @@ "zr" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/multi_tile/glass{ - tag = "icon-door_closed"; icon_state = "door_closed"; dir = 2 }, @@ -14412,7 +14365,6 @@ /area/centcom/restaurant) "zt" = ( /obj/machinery/door/airlock/multi_tile/glass{ - tag = "icon-door_closed"; icon_state = "door_closed"; dir = 2 }, @@ -14424,8 +14376,7 @@ dir = 8; icon_state = "leftsecure"; req_access = list(63); - req_one_access = newlist(); - tag = "icon-leftsecure (WEST)" + req_one_access = newlist() }, /obj/effect/floor_decal/borderfloorblack{ dir = 8 @@ -15403,8 +15354,7 @@ dir = 8; icon_state = "leftsecure"; req_access = list(63); - req_one_access = newlist(); - tag = "icon-leftsecure (WEST)" + req_one_access = newlist() }, /obj/machinery/button/remote/blast_door{ id = "residential"; @@ -16395,8 +16345,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16409,8 +16358,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16435,8 +16383,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16448,8 +16395,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16470,8 +16416,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16482,8 +16427,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16496,8 +16440,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16509,8 +16452,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 1; icon_state = "borderfloor"; - pixel_y = 0; - tag = "icon-borderfloor (NORTH)" + pixel_y = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -16583,8 +16525,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 8; icon_state = "borderfloor"; - pixel_x = 0; - tag = "icon-borderfloor (WEST)" + pixel_x = 0 }, /obj/effect/floor_decal/corner/blue/border{ dir = 8 @@ -16592,8 +16533,7 @@ /obj/effect/floor_decal/borderfloor/corner2{ dir = 10; icon_state = "borderfloorcorner2"; - pixel_x = 0; - tag = "icon-borderfloorcorner2 (SOUTHWEST)" + pixel_x = 0 }, /obj/effect/floor_decal/corner/blue/bordercorner2{ dir = 10 diff --git a/maps/tether/tether_areas2.dm b/maps/tether/tether_areas2.dm index 1d5df0fcb9..93723e323e 100644 --- a/maps/tether/tether_areas2.dm +++ b/maps/tether/tether_areas2.dm @@ -57,6 +57,19 @@ name = "\improper North Stairwell Third Floor" icon_state = "dk_yellow" +/area/tether/surfacebase/public_garden_one + name = "\improper Public Garden First Floor" + icon_state = "green" +/area/tether/surfacebase/public_garden_two + name = "\improper Public Garden Second Floor" + icon_state = "green" +/area/tether/surfacebase/public_garden_three + name = "\improper Public Garden Third Floor" + icon_state = "green" +/area/tether/surfacebase/public_garden + name = "\improper Public Garden" + icon_state = "purple" + // /area/tether/surfacebase/east_stairs_one //This is just part of a lower hallway /area/tether/surfacebase/east_stairs_two @@ -208,6 +221,8 @@ name = "\improper Solars maintenanceance" /area/maintenance/lower/mining_eva name = "\improper Mining EVA Maintenance" +/area/maintenance/lower/public_garden_maintenence + name = "\improper Public Garden Maintenence" // Research /area/rnd/xenobiology/xenoflora/lab_atmos diff --git a/tools/mapmerge2/Prepare Maps.bat b/tools/mapmerge2/Prepare Maps.bat new file mode 100644 index 0000000000..6955e9c877 --- /dev/null +++ b/tools/mapmerge2/Prepare Maps.bat @@ -0,0 +1,12 @@ +@echo off +cd ../../_maps/ + +for /R %%f in (*.dmm) do copy "%%f" "%%f.backup" + +cls +echo All dmm files in _maps directories have been backed up +echo Now you can make your changes... +echo --- +echo Remember to run mapmerge.bat just before you commit your changes! +echo --- +pause diff --git a/tools/mapmerge2/dmm.py b/tools/mapmerge2/dmm.py index 155181d413..d76f07e32c 100644 --- a/tools/mapmerge2/dmm.py +++ b/tools/mapmerge2/dmm.py @@ -31,10 +31,12 @@ class DMM: return _parse(bytes.decode(ENCODING)) def to_file(self, fname, tgm = True): + self._presave_checks() with open(fname, 'w', newline='\n', encoding=ENCODING) as f: (save_tgm if tgm else save_dmm)(self, f) def to_bytes(self, tgm = True): + self._presave_checks() bio = io.BytesIO() with io.TextIOWrapper(bio, newline='\n', encoding=ENCODING) as f: (save_tgm if tgm else save_dmm)(self, f) @@ -42,12 +44,7 @@ class DMM: return bio.getvalue() def generate_new_key(self): - # ensure that free keys exist by increasing the key length if necessary - free_keys = (BASE ** self.key_length) - len(self.dictionary) - while free_keys <= 0: - self.key_length += 1 - free_keys = (BASE ** self.key_length) - len(self.dictionary) - + free_keys = self._ensure_free_keys(1) # choose one of the free keys at random key = 0 while free_keys: @@ -61,6 +58,32 @@ class DMM: raise RuntimeError("ran out of keys, this shouldn't happen") + def _presave_checks(self): + # last-second handling of bogus keys to help prevent and fix broken maps + self._ensure_free_keys(0) + max_key = max_key_for(self.key_length) + bad_keys = {key: 0 for key in self.dictionary.keys() if key > max_key} + if bad_keys: + print(f"Warning: fixing {len(bad_keys)} overflowing keys") + for k in bad_keys: + # create a new non-bogus key and transfer that value to it + new_key = bad_keys[k] = self.generate_new_key() + self.dictionary.forceput(new_key, self.dictionary[k]) + print(f" {num_to_key(k, self.key_length, True)} -> {num_to_key(new_key, self.key_length)}") + for k, v in self.grid.items(): + # reassign the grid entries which used the old key + self.grid[k] = bad_keys.get(v, v) + + def _ensure_free_keys(self, desired): + # ensure that free keys exist by increasing the key length if necessary + free_keys = max_key_for(self.key_length) - len(self.dictionary) + while free_keys < desired: + if self.key_length >= MAX_KEY_LENGTH: + raise KeyTooLarge(f"can't expand beyond key length {MAX_KEY_LENGTH} ({len(self.dictionary)} keys)") + self.key_length += 1 + free_keys = max_key_for(self.key_length) - len(self.dictionary) + return free_keys + @property def coords_zyx(self): for z in range(1, self.size.z + 1): @@ -82,6 +105,7 @@ class DMM: # key handling # Base 52 a-z A-Z dictionary for fast conversion +MAX_KEY_LENGTH = 3 # things will get ugly fast if you exceed this BASE = 52 base52 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' base52_r = {x: i for i, x in enumerate(base52)} @@ -93,8 +117,8 @@ def key_to_num(key): num = BASE * num + base52_r[ch] return num -def num_to_key(num, key_length): - if num >= BASE ** key_length: +def num_to_key(num, key_length, allow_overflow=False): + if num >= (BASE ** key_length if allow_overflow else max_key_for(key_length)): raise KeyTooLarge(f"num={num} does not fit in key_length={key_length}") result = '' @@ -105,6 +129,11 @@ def num_to_key(num, key_length): assert len(result) <= key_length return base52[0] * (key_length - len(result)) + result +def max_key_for(key_length): + # keys only go up to "ymo" = 65534, under-estimated just in case + # https://secure.byond.com/forum/?post=2340796#comment23770802 + return min(65530, BASE ** key_length) + class KeyTooLarge(Exception): pass diff --git a/tools/mapmerge2/dmm2tgm.bat b/tools/mapmerge2/dmm2tgm.bat index e68ba51435..bcf6150c2e 100644 --- a/tools/mapmerge2/dmm2tgm.bat +++ b/tools/mapmerge2/dmm2tgm.bat @@ -1,5 +1,5 @@ @echo off -set MAPROOT=../../maps/tether +set MAPROOT=../../_maps/ set TGM=1 python convert.py pause diff --git a/tools/mapmerge2/mapmerge.bat b/tools/mapmerge2/mapmerge.bat index 5f017b4092..5a066226b3 100644 --- a/tools/mapmerge2/mapmerge.bat +++ b/tools/mapmerge2/mapmerge.bat @@ -1,5 +1,5 @@ @echo off -set MAPROOT=../../maps/tether +set MAPROOT=../../_maps/ set TGM=1 python mapmerge.py pause diff --git a/tools/mapmerge2/tgm2dmm.bat b/tools/mapmerge2/tgm2dmm.bat index 1d3e3f93ca..2748533feb 100644 --- a/tools/mapmerge2/tgm2dmm.bat +++ b/tools/mapmerge2/tgm2dmm.bat @@ -1,5 +1,5 @@ @echo off -set MAPROOT=../../maps/tether +set MAPROOT=../../_maps/ set TGM=0 python convert.py pause diff --git a/vorestation.dme b/vorestation.dme index bd51a6c376..1f66405dc4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -492,6 +492,7 @@ #include "code\game\gamemodes\changeling\powers\silence_sting.dm" #include "code\game\gamemodes\changeling\powers\transform.dm" #include "code\game\gamemodes\changeling\powers\visible_camouflage.dm" +#include "code\game\gamemodes\cult\construct_spells.dm" #include "code\game\gamemodes\cult\cult.dm" #include "code\game\gamemodes\cult\cult_items.dm" #include "code\game\gamemodes\cult\cult_structures.dm" @@ -1016,6 +1017,7 @@ #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\gift_wrappaper.dm" #include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\handcuffs_vr.dm" #include "code\game\objects\items\weapons\improvised_components.dm" #include "code\game\objects\items\weapons\manuals.dm" #include "code\game\objects\items\weapons\manuals_vr.dm" @@ -1420,8 +1422,7 @@ #include "code\modules\blob2\overmind\types.dm" #include "code\modules\busy_space\air_traffic.dm" #include "code\modules\busy_space\loremaster.dm" -#include "code\modules\busy_space\organizations.dm" -#include "code\modules\busy_space\organizations_vr.dm" +#include "code\modules\busy_space_vr\organizations.dm" #include "code\modules\client\client defines.dm" #include "code\modules\client\client procs.dm" #include "code\modules\client\movement.dm" @@ -1808,8 +1809,8 @@ #include "code\modules\lore_codex\codex.dm" #include "code\modules\lore_codex\codex_tree.dm" #include "code\modules\lore_codex\pages.dm" -#include "code\modules\lore_codex\lore_data\main.dm" #include "code\modules\lore_codex\lore_data_vr\important_locations.dm" +#include "code\modules\lore_codex\lore_data_vr\main.dm" #include "code\modules\lore_codex\lore_data_vr\orgs.dm" #include "code\modules\lore_codex\lore_data_vr\political_parties.dm" #include "code\modules\lore_codex\lore_data_vr\species.dm" @@ -1883,6 +1884,7 @@ #include "code\modules\mob\_modifiers\modifiers_misc.dm" #include "code\modules\mob\_modifiers\traits.dm" #include "code\modules\mob\_modifiers\traits_phobias.dm" +#include "code\modules\mob\_modifiers\unholy.dm" #include "code\modules\mob\dead\death.dm" #include "code\modules\mob\dead\observer\free_vr.dm" #include "code\modules\mob\dead\observer\login.dm" @@ -2011,6 +2013,7 @@ #include "code\modules\mob\living\carbon\human\species\species_helpers.dm" #include "code\modules\mob\living\carbon\human\species\species_hud.dm" #include "code\modules\mob\living\carbon\human\species\species_shapeshift.dm" +#include "code\modules\mob\living\carbon\human\species\species_shapeshift_vr.dm" #include "code\modules\mob\living\carbon\human\species\species_vr.dm" #include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm" #include "code\modules\mob\living\carbon\human\species\outsider\skeleton.dm" @@ -2619,7 +2622,6 @@ #include "code\modules\shuttles\shuttles_web.dm" #include "code\modules\shuttles\web_datums.dm" #include "code\modules\spells\artifacts.dm" -#include "code\modules\spells\construct_spells.dm" #include "code\modules\spells\no_clothes.dm" #include "code\modules\spells\spell_code.dm" #include "code\modules\spells\spell_projectile.dm" @@ -2633,15 +2635,12 @@ #include "code\modules\spells\aoe_turf\smoke.dm" #include "code\modules\spells\aoe_turf\summons.dm" #include "code\modules\spells\aoe_turf\conjure\conjure.dm" -#include "code\modules\spells\aoe_turf\conjure\construct.dm" #include "code\modules\spells\aoe_turf\conjure\forcewall.dm" #include "code\modules\spells\general\area_teleport.dm" #include "code\modules\spells\general\rune_write.dm" #include "code\modules\spells\targeted\ethereal_jaunt.dm" #include "code\modules\spells\targeted\genetic.dm" -#include "code\modules\spells\targeted\harvest.dm" #include "code\modules\spells\targeted\mind_transfer.dm" -#include "code\modules\spells\targeted\shift.dm" #include "code\modules\spells\targeted\subjugate.dm" #include "code\modules\spells\targeted\targeted.dm" #include "code\modules\spells\targeted\equip\equip.dm" @@ -2674,6 +2673,7 @@ #include "code\modules\telesci\bscyrstal.dm" #include "code\modules\telesci\construction.dm" #include "code\modules\telesci\gps_advanced.dm" +#include "code\modules\telesci\quantum_pad.dm" #include "code\modules\telesci\telepad.dm" #include "code\modules\telesci\telesci_computer.dm" #include "code\modules\tension\tension.dm" @@ -2713,6 +2713,7 @@ #include "code\modules\vore\trycatch_vr.dm" #include "code\modules\vore\appearance\preferences_vr.dm" #include "code\modules\vore\appearance\spider_taur_powers_vr.dm" +#include "code\modules\vore\appearance\sprite_accessories_taur_vr.dm" #include "code\modules\vore\appearance\sprite_accessories_vr.dm" #include "code\modules\vore\appearance\update_icons_vr.dm" #include "code\modules\vore\eating\belly_dat_vr.dm"