diff --git a/.vscode/tasks.json b/.vscode/tasks.json index a3cb84d5a8..c86b64cece 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -33,6 +33,19 @@ "problemMatcher": [], "label": "tgui: build tgfont", "detail": "node mkdist.cjs && fantasticon --config config.cjs" + }, + { + "type": "shell", + "command": "tgui/bin/tgui", + "windows": { + "command": ".\\tgui\\bin\\tgui-prettybuild.bat" + }, + "problemMatcher": [ + "$tsc", + "$eslint-stylish" + ], + "group": "build", + "label": "tgui: prettybuild" } ] -} \ No newline at end of file +} diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..a47f021db1 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,18 @@ +# Security Policy + +## Supported Versions + +Please check to ensure the vulnerability still exists in the current `master` branch before reporting. + +## Reporting a Vulnerability + +Please be as descriptive as possible! + +## Older Libraries/Dependencies + +Some of our libraries may not be used in a way that makes +them vulnerable, because we tend to only use a couple of +functions out of them. If that's the case and we think that +your vulnerability won't apply to our use-case, then +it may be closed, even if we're using an older version +of the library. diff --git a/code/__defines/damage_organs.dm b/code/__defines/damage_organs.dm index db1a71c77a..3d55bf87ad 100644 --- a/code/__defines/damage_organs.dm +++ b/code/__defines/damage_organs.dm @@ -9,6 +9,7 @@ #define ELECTROCUTE "electrocute" #define BIOACID "bioacid" #define SEARING "searing" +#define ELECTROMAG "electromagnetic" #define CUT "cut" #define BRUISE "bruise" diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index b133acc9ec..a538c77ce0 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -38,6 +38,7 @@ #define ALLERGEN_SUGARS 0x400 // For unathi-like reactions #define ALLERGEN_EGGS 0x800 // For Skrell eggs allergy #define ALLERGEN_STIMULANT 0x1000 // Stimulants are what makes the Tajaran heart go ruh roh - not just coffee! +#define ALLERGEN_CHOCOLATE 0x2000 // Makes dogs die if they want to? // Allergen reactions #define AG_PHYS_DMG 0x1 // brute diff --git a/code/datums/ghost_query.dm b/code/datums/ghost_query.dm index 47519813e8..2f3f4884b5 100644 --- a/code/datums/ghost_query.dm +++ b/code/datums/ghost_query.dm @@ -137,6 +137,14 @@ query_sound = 'sound/voice/hiss5.ogg' be_special_flag = BE_ALIEN +/datum/ghost_query/xenomorph_larva + role_name = "Xenomorph Larva" + question = "A xenomorph larva is ready to hatch from their egg. Would you like to join the hive?" + be_special_flag = BE_ALIEN + check_bans = list("Xenomorph") + cutoff_number = 1 + + /datum/ghost_query/blob role_name = "Blob" question = "A rapidly expanding Blob has just appeared on the facility. Would you like to play as it?" diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm index d750cfc70b..14e20ffb13 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -14,6 +14,12 @@ light_power = 1 light_color = "#FF0D00" +/obj/effect/projectile/impact/laser_em + icon_state = "impact_em_laser" + light_range = 3 + light_power = 1 + light_color = "#00C6FF" + /obj/effect/projectile/impact/xray icon_state = "impact_xray" light_range = 2 diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm index 64afc04951..0eeeed0f94 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -38,6 +38,12 @@ light_power = 1 light_color = "#FF0D00" +/obj/effect/projectile/muzzle/laser_em + icon_state = "muzzle_em_laser" + light_range = 3 + light_power = 1 + light_color = "#00C6FF" + /obj/effect/projectile/muzzle/lightning icon_state = "muzzle_lightning" light_range = 2 diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm index 7398633fc4..cc14471b09 100644 --- a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -83,6 +83,12 @@ light_power = 1 light_color = "#FF0D00" +/obj/effect/projectile/tracer/laser_em + icon_state = "em_laser" + light_range = 3 + light_power = 1 + light_color = "#00C6FF" + /obj/effect/projectile/tracer/darkmatter icon_state = "darkb" light_range = 2 diff --git a/code/game/objects/items/weapons/melee/shock_maul.dm b/code/game/objects/items/weapons/melee/shock_maul.dm new file mode 100644 index 0000000000..69896c885d --- /dev/null +++ b/code/game/objects/items/weapons/melee/shock_maul.dm @@ -0,0 +1,276 @@ +/obj/item/weapon/melee/shock_maul + name = "concussion maul" + desc = "A heavy-duty concussion hammer, typically used for mining. An iconic weapon for the many uprisings of Mars. It uses a manually engaged concussive-force amplifier unit in the head to multiply impact force, but its weight and the charge up time makes it difficult to use effectively. Devastating if used correctly, but requires skill." + icon_state = "forcemaul" + item_state = "forcemaul" + slot_flags = SLOT_BACK + + //stopping power/lethality + force = 35 + armor_penetration = 20 //the sheer impact force bypasses quite a bit of armour + var/unwielded_force_divisor = 0.25 + var/wielded = 0 + var/force_unwielded = 8.75 + var/wieldsound = null + var/unwieldsound = null + var/charge_force_mult = 1.75 //damage and AP multiplier on charged hits + var/launch_force = 3 //yeet distance + var/launch_force_unwielded = 1 //awful w/ one hand, but still gets a little distance + var/launch_force_disarm = 1.5 //distance multiplier when swinging in disarm mode, since disarm attacks do half damage + var/weaken_force = 2 //stun power + var/weaken_force_unwielded = 0 //can't stun at all if used onehanded + var/weaken_force_disarm = 1.5 //stun multiplier when in disarm mode + + //mining interacts + var/excavation_amount = 200 + var/destroy_artefacts = TRUE //sorry, breaks stuff + + can_cleave = TRUE //SSSSMITE! + attackspeed = 15 //very slow!! + sharp = FALSE + edge = FALSE + throwforce = 25 + flags = NOCONDUCT + w_class = ITEMSIZE_HUGE + drop_sound = 'sound/items/drop/metalweapon.ogg' + pickup_sound = 'sound/items/pickup/metalweapon.ogg' + origin_tech = list(TECH_COMBAT = 5) + attack_verb = list("beaten","slammed","smashed","mauled","hammered","bludgeoned") + var/lightcolor = "#D3FDFD" + var/status = 0 //whether the thing is on or not + var/obj/item/weapon/cell/bcell = null + var/hitcost = 600 //you get 4 hits out of a standard cell + +/obj/item/weapon/melee/shock_maul/update_held_icon() + var/mob/living/M = loc + if(istype(M) && M.can_wield_item(src) && is_held_twohanded(M)) + wielded = 1 + if(status) + force = initial(force)*charge_force_mult + armor_penetration *= charge_force_mult + else + force = initial(force) + armor_penetration = initial(armor_penetration) + launch_force = initial(launch_force) + weaken_force = initial(weaken_force) + name = "[initial(name)] (wielded)" + update_icon() + else + wielded = 0 + if(status) + force = force_unwielded*charge_force_mult + armor_penetration *= charge_force_mult + else + force = force_unwielded + armor_penetration = initial(armor_penetration) + launch_force = launch_force_unwielded + weaken_force = weaken_force_unwielded + name = "[initial(name)]" + update_icon() + ..() + +/obj/item/weapon/melee/shock_maul/New() + ..() + update_held_icon() + return + +/obj/item/weapon/melee/shock_maul/get_cell() + return bcell + +/obj/item/weapon/melee/shock_maul/MouseDrop(obj/over_object as obj) + if(!canremove) + return + + if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist + + if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why? + return + + if (!( istype(over_object, /obj/screen) )) + return ..() + + //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away. + //there's got to be a better way of doing this. + if (!(src.loc == usr) || (src.loc && src.loc.loc == usr)) + return + + if (( usr.restrained() ) || ( usr.stat )) + return + + if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src)) + return + + switch(over_object.name) + if("r_hand") + usr.u_equip(src) + usr.put_in_r_hand(src) + if("l_hand") + usr.u_equip(src) + usr.put_in_l_hand(src) + src.add_fingerprint(usr) + +/obj/item/weapon/melee/shock_maul/loaded/New() //this one starts with a cell pre-installed. + ..() + bcell = new/obj/item/weapon/cell/device/weapon(src) + update_icon() + return + +/obj/item/weapon/melee/shock_maul/proc/deductcharge() + if(status == 1) //Only deducts charge when it's on + if(bcell) + if(bcell.checked_use(hitcost)) + return 1 + else + return 0 + return null + +/obj/item/weapon/melee/shock_maul/proc/powercheck() + if(bcell) + if(bcell.charge < hitcost) + status = 0 + update_held_icon() + +/obj/item/weapon/melee/shock_maul/update_icon() + if(status) + icon_state = "[initial(icon_state)]_active[wielded]" + item_state = icon_state + else if(!bcell) + icon_state = "[initial(icon_state)]_nocell[wielded]" + item_state = icon_state + else + icon_state = "[initial(icon_state)][wielded]" + item_state = icon_state + + if(icon_state == "[initial(icon_state)]_active[wielded]") + set_light(2, 1, lightcolor) + else + set_light(0) + +/obj/item/weapon/melee/shock_maul/dropped() + ..() + if(status) + status = 0 + visible_message("\The [src]'s grip safety engages!") + update_held_icon() + +/obj/item/weapon/melee/shock_maul/examine(mob/user) + . = ..() + + if(Adjacent(user)) + if(bcell) + . += "The concussion maul is [round(bcell.percent())]% charged." + if(!bcell) + . += "The concussion maul does not have a power source installed." + +/obj/item/weapon/melee/shock_maul/attackby(obj/item/weapon/W, mob/user) + if(!user.IsAdvancedToolUser()) + return + if(istype(W, /obj/item/weapon/cell)) + if(istype(W, /obj/item/weapon/cell/device)) + if(!bcell) + user.drop_item() + W.loc = src + bcell = W + to_chat(user, "You install a cell in \the [src].") + update_held_icon() + else + to_chat(user, "\The [src] already has a cell.") + else + to_chat(user, "This cell is not fitted for [src].") + +/obj/item/weapon/melee/shock_maul/attack_hand(mob/user as mob) + if(user.get_inactive_hand() == src) + if(!user.IsAdvancedToolUser()) + return + else if(bcell) + bcell.update_icon() + user.put_in_hands(bcell) + bcell = null + to_chat(user, "You remove the cell from the [src].") + status = 0 + update_held_icon() + return + ..() + else + return ..() + +/obj/item/weapon/melee/shock_maul/attack_self(mob/user) + if(!user.IsAdvancedToolUser()) + return + if(!status && bcell && bcell.charge >= hitcost) + if(do_after(user, 2 SECONDS)) + status = 1 + user.visible_message("[user] charges \the [src]!","You charge \the [src]. It's hammer time!") + playsound(src, "sparks", 75, 1, -1) + update_held_icon() + else if(status) + status = 0 + user.visible_message("[user] safely disengages \the [src]'s power field.","\The [src] is now off.") + update_held_icon() + playsound(src, "sparks", 75, 1, -1) + if(!bcell) + to_chat(user, "\The [src] does not have a power source!") + else + to_chat(user, "\The [src] is out of charge.") + add_fingerprint(user) + +/obj/item/weapon/melee/shock_maul/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) + if(!proximity) return + ..() + if(A && wielded && status) + deductcharge() + status = 0 + user.visible_message("\The [src] discharges with a thunderous, hair-raising crackle!") + playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1) + update_held_icon() + if(istype(A,/obj/structure/window)) + var/obj/structure/window/W = A + visible_message("\The [W] crumples under the force of the impact!") + W.shatter() + else if(istype(A,/obj/structure/barricade)) + var/obj/structure/barricade/B = A + B.dismantle() + else if(istype(A,/obj/structure/grille)) + qdel(A) + powercheck(hitcost) + +/obj/item/weapon/melee/shock_maul/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) + . = ..() + if(user.a_intent == I_DISARM) + launch_force *= launch_force_disarm + weaken_force *= weaken_force_disarm + + //yeet 'em away, boys! + if(status) + var/atom/target_zone = get_edge_target_turf(user,get_dir(user, target)) + if(!target.anchored) //unless they're secured in place, natch + target.throw_at(target_zone, launch_force, 2, user, FALSE) + target.Weaken(weaken_force) + + deductcharge() + status = 0 + user.visible_message("\The [src] discharges with a thunderous, hair-raising crackle!") + playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1) + update_held_icon() + powercheck(hitcost) + +/obj/item/weapon/melee/shock_maul/emp_act(severity) + if(bcell) + bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please. + if(status) + status = 0 + visible_message("\The [src]'s power field hisses and sputters out.") + update_held_icon() + ..() + +/obj/item/weapon/melee/shock_maul/get_description_interaction() + var/list/results = list() + + if(bcell) + results += "[desc_panel_image("offhand")]to remove the weapon cell." + else + results += "[desc_panel_image("weapon cell")]to add a new weapon cell." + + results += ..() + + return results \ No newline at end of file diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 31de9517cc..5799c5f2d9 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -22,6 +22,7 @@ var/obj/item/weapon/cell/bcell = null var/hitcost = 240 var/use_external_power = FALSE //only used to determine if it's a cyborg baton + var/grip_safety = TRUE /obj/item/weapon/melee/baton/New() ..() @@ -69,18 +70,18 @@ update_icon() return -/obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt) +/obj/item/weapon/melee/baton/proc/deductcharge() if(status == 1) //Only deducts charge when it's on if(bcell) - if(bcell.checked_use(chrgdeductamt)) + if(bcell.checked_use(hitcost)) return 1 else return 0 return null -/obj/item/weapon/melee/baton/proc/powercheck(var/chrgdeductamt) +/obj/item/weapon/melee/baton/proc/powercheck() if(bcell) - if(bcell.charge < chrgdeductamt) + if(bcell.charge < hitcost) status = 0 update_icon() @@ -97,6 +98,13 @@ else set_light(0) +/obj/item/weapon/melee/baton/dropped() + ..() + if(status && grip_safety) + status = 0 + visible_message("\The [src]'s grip safety engages!") + update_icon() + /obj/item/weapon/melee/baton/examine(mob/user) . = ..() @@ -142,7 +150,7 @@ var/mob/living/silicon/robot/R = loc if (istype(R)) bcell = R.cell - if(bcell && bcell.charge > hitcost) + if(bcell && bcell.charge >= hitcost) status = !status to_chat(user, "[src] is now [status ? "on" : "off"].") playsound(src, "sparks", 75, 1, -1) @@ -200,7 +208,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target H.forcesay(hit_appends) - powercheck(hitcost) + powercheck() /obj/item/weapon/melee/baton/emp_act(severity) if(bcell) @@ -222,9 +230,10 @@ throwforce = 5 stunforce = 0 agonyforce = 60 //same force as a stunbaton, but uses way more charge. - hitcost = 2500 + hitcost = 2500 //runs off the same kind of big batteries as APCs, not small cells! attack_verb = list("poked") slot_flags = null + grip_safety = FALSE /obj/item/weapon/melee/baton/cattleprod/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/cell)) diff --git a/code/game/objects/random/mob_vr.dm b/code/game/objects/random/mob_vr.dm index d32f365dc8..5eb18d7de0 100644 --- a/code/game/objects/random/mob_vr.dm +++ b/code/game/objects/random/mob_vr.dm @@ -73,6 +73,7 @@ prob(2);/obj/item/weapon/twohanded/fireaxe,\ prob(2);/obj/item/weapon/gun/projectile/luger/brown,\ prob(2);/obj/item/weapon/gun/launcher/crossbow,\ + prob(2);/obj/item/weapon/melee/shock_maul,\ /* prob(1);/obj/item/weapon/gun/projectile/automatic/battlerifle,\ */ // Too OP prob(1);/obj/item/weapon/gun/projectile/deagle/gold,\ prob(1);/obj/item/weapon/gun/energy/imperial,\ diff --git a/code/game/objects/structures/alien/alien egg.dm b/code/game/objects/structures/alien/alien egg.dm deleted file mode 100644 index 03b7e8de23..0000000000 --- a/code/game/objects/structures/alien/alien egg.dm +++ /dev/null @@ -1,116 +0,0 @@ -#define MAX_PROGRESS 100 - -/obj/structure/alien/egg //Gurg Addition, working alien egg structure. - desc = "It looks like a weird egg." - name = "egg" - icon_state = "egg_growing" - density = FALSE - var/progress = 0 - -/obj/structure/alien/egg/Initialize() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/structure/alien/egg/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/structure/alien/egg/CanUseTopic(var/mob/user) - return isobserver(user) ? STATUS_INTERACTIVE : STATUS_CLOSE - -/obj/structure/alien/egg/Topic(href, href_list) - if(..()) - return 1 - - if(href_list["spawn"]) - attack_ghost(usr) - -/obj/structure/alien/egg/process() - progress++ - if(progress >= MAX_PROGRESS) - for(var/mob/observer/dead/O in observer_mob_list) - if(O.client) - to_chat(O, "An alien is ready to hatch at [get_area(src.loc)]! (spawn)") - STOP_PROCESSING(SSobj, src) - update_icon() - -/obj/structure/alien/egg/update_icon() - if(progress == -1) - icon_state = "egg_opened" - else if(progress < MAX_PROGRESS) - icon_state = "egg_growing" - else - icon_state = "egg" - - // Ghostjoinable icon - var/static/image/I - if(!I) - I = image('icons/mob/hud_vr.dmi', "ghostjoin") - I.invisibility = INVISIBILITY_OBSERVER - I.plane = PLANE_GHOSTS - I.appearance_flags = KEEP_APART|RESET_TRANSFORM - - if(progress >= MAX_PROGRESS) - add_overlay(I) - else - cut_overlay(I) - - -/obj/structure/alien/egg/attack_ghost(var/mob/observer/dead/user) - // Still a ghost? - if(!istype(user)) - tgui_alert_async(user, "You have to be an observer to join as this Xenomorph larva.") - return - - // Check for bans properly. - if(jobban_isbanned(user, "Xenomorph")) - tgui_alert_async(user, "You are banned from playing a Xenomorph, so you can't join as this Xenomorph larva.") - return - - // Check for respawn - if(!user.MayRespawn(1)) - tgui_alert_async(user, "You aren't allowed to respawn, so you can't join as this Xenomorph larva.") - return - - if(progress == -1) - tgui_alert_async(user, "That egg has already hatched.") - else if(progress >= MAX_PROGRESS) - tgui_alert_async(user, "Are you sure you want to join as a Xenomorph larva?", "Become Larva", list("Yes","No"), CALLBACK(src, .proc/ghost_dunk), 20 SECONDS) - else - tgui_alert_async(user, "\The [src] has not yet matured.") - -/obj/structure/alien/egg/proc/ghost_dunk(choice) - if(choice != "Yes") - return - var/mob/observer/dead/user = usr - if(progress < MAX_PROGRESS || !istype(user)) - return - - progress = -1 // No harvesting pls. - flick("egg_opening",src) - sleep(5) //5ds animation - - if(!src || !istype(user)) - visible_message("\The [src] writhes with internal motion, but nothing comes out.") - progress = MAX_PROGRESS // Someone else can have a go. - return // What a pain. - - // Create the mob, transfer over key. - var/mob/living/carbon/alien/larva/larva = new(get_turf(src)) - - // Move the ghost in - if(user.mind) - user.mind.active = TRUE - user.mind.transfer_to(larva) - else - larva.ckey = user.ckey - qdel(user) - - visible_message("\The [src] splits open with a wet slithering noise, and \the [larva] writhes free!") - - // Turn us into a hatched egg. - name = "hatched alien egg" - desc += " This one has hatched." - update_icon() - -#undef MAX_PROGRESS diff --git a/code/game/objects/structures/alien/alien.dm b/code/game/objects/structures/alien/alien.dm index d404dcf141..cde036bc68 100644 --- a/code/game/objects/structures/alien/alien.dm +++ b/code/game/objects/structures/alien/alien.dm @@ -1,4 +1,4 @@ -/obj/structure/alien //Gurg Addition, framework for alien eggs and structures. +/obj/structure/alien //Gurg Addition, framework for alien structures. name = "alien thing" desc = "There's something alien about this." icon = 'icons/mob/alien.dmi' diff --git a/code/game/objects/structures/ghost_pods/antagonist.dm b/code/game/objects/structures/ghost_pods/antagonist.dm new file mode 100644 index 0000000000..e0504537db --- /dev/null +++ b/code/game/objects/structures/ghost_pods/antagonist.dm @@ -0,0 +1,56 @@ +//Antagonist ghost pods for potentially self replicating creatures, xenomorphs as one example. These should not naturally spawn on their own. + +/obj/structure/ghost_pod/automatic/xenomorph_egg + name = "xenomorph egg" + desc = "A disgusting egg dripping with clear ooze, the existence of this is a omen for what is to come." + description_info = "This contains a growing xenomorph larva, which may wake up at any moment. The larva will be another player, once activated." + icon = 'icons/mob/alien.dmi' + icon_state = "egg" + icon_state_opened = "egg_opened" + var/health = 50 //So they can be destroyed by the crew + density = FALSE + ghost_query_type = /datum/ghost_query/xenomorph_larva + delay_to_try_again = 1 MINUTES //10 minutes for egg to grow, 5 minutes for larva to mature + anchored = TRUE + +/obj/structure/ghost_pod/automatic/xenomorph_egg/create_occupant(var/mob/M) + var/mob/living/carbon/alien/larva/R = new(get_turf(src)) + if(M.mind) + M.mind.transfer_to(R) + // Description for new larva, so they understand what to expect. + to_chat(M, "You are a Xenomorph Larva, freshly slithered out of their egg to serve the hive.") + to_chat(M, "Be sure to carefully listen to your queen, as xenomorph egg spawns may act different to loner xenomorph spawns.") + to_chat(M, "Remember, you are technically a antagonist. Be sure to learn the context of your existence via IC or ahelp to prevent headaches, and follow the orders of your queen to the letter.") + to_chat(M, " Your life for the hive!") + R.ckey = M.ckey + visible_message("\the [src] peels open, and a fresh larva slithers out!") + ..() + +/obj/structure/ghost_pod/automatic/xenomorph_egg/proc/healthcheck() + if(health <=0) + visible_message("\the [src] splatters everywhere as it cracks open!") + playsound(src, 'sound/effects/slime_squish.ogg', 50, 1) + qdel(src) + return + +/obj/structure/ghost_pod/automatic/xenomorph_egg/attackby(obj/item/W as obj, mob/user as mob) + user.setClickCooldown(user.get_attack_speed(W)) + switch(W.damtype) + if("fire") + health -= W.force * 1.25 //It really doesn't like fire + if("brute") + health -= W.force * 0.75 //Bit hard to cut + playsound(src, 'sound/effects/attackblob.ogg', 50, 1) + healthcheck() + ..() + return + +/obj/structure/ghost_pod/automatic/xenomorph_egg/bullet_act(var/obj/item/projectile/Proj) + switch(damtype) + if("fire") + health -= Proj.damage * 1.5 //It burns! + if("brute") + health -= Proj.damage //It hurts a bit more then a sharp stick + healthcheck() + ..() + return diff --git a/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm b/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm index a53906a7a3..9a173c0ba7 100644 --- a/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm +++ b/code/modules/ai/ai_holder_subtypes/simple_mob_ai.dm @@ -147,6 +147,9 @@ hostile = FALSE retaliate = TRUE +/datum/ai_holder/simple_mob/retaliate/chill + base_wander_delay = 8 + // Simple mobs that retaliate and support others in their faction who get attacked. /datum/ai_holder/simple_mob/retaliate/cooperative cooperative = TRUE diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 2925ef1877..9b6a93a85c 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -1,5 +1,6 @@ /datum/preferences var/extra_languages = 0 + var/preferred_language = "common" // VOREStation Edit: Allow selecting a preferred language /datum/category_item/player_setup_item/general/language name = "Language" @@ -12,6 +13,9 @@ if(islist(pref.alternate_languages)) // Because aparently it may not be? testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]") S["language_prefixes"] >> pref.language_prefixes + //VORE Edit Begin + S["preflang"] >> pref.preferred_language + //VORE Edit End S["language_custom_keys"] >> pref.language_custom_keys /datum/category_item/player_setup_item/general/language/save_character(var/savefile/S) @@ -21,6 +25,7 @@ testing("LANGSANI: Loaded from [pref.client]'s character [pref.real_name || "-name not yet loaded-"] savefile: [english_list(pref.alternate_languages || list())]") S["language_prefixes"] << pref.language_prefixes S["language_custom_keys"] << pref.language_custom_keys + S["preflang"] << pref.preferred_language // VOREStation Edit /datum/category_item/player_setup_item/general/language/sanitize_character() if(!islist(pref.alternate_languages)) @@ -36,6 +41,11 @@ testing("LANGSANI: Truncated [pref.client]'s character [pref.real_name || "-name not yet loaded-"] language list because it was too long (len: [pref.alternate_languages.len], allowed: [S.num_alternate_languages])") pref.alternate_languages.len = (S.num_alternate_languages + pref.extra_languages) // Truncate to allowed length + // VOREStation Edit Start + if(!(pref.preferred_language in pref.alternate_languages) || !pref.preferred_language) // Safety handling for if our preferred language is ever somehow removed from the character's list of langauges, or they don't have one set + pref.preferred_language = S.language // Reset to default, for safety + // VOREStation Edit end + // Sanitize illegal languages for(var/language in pref.alternate_languages) var/datum/language/L = GLOB.all_languages[language] @@ -80,6 +90,7 @@ . += "Language Keys
" . += " [jointext(pref.language_prefixes, " ")] Change Reset
" + . += "Preferred Language [pref.preferred_language]
" // VOREStation Add /datum/category_item/player_setup_item/general/language/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["remove_language"]) @@ -167,4 +178,22 @@ return TOPIC_REFRESH + // VOREStation Add: Preferred Language + else if(href_list["pref_lang"]) + if(pref.species) // Safety to prevent a null runtime here + var/datum/species/S = GLOB.all_species[pref.species] + var/list/lang_opts = list(S.language) + pref.alternate_languages + LANGUAGE_GALCOM + var/selection = tgui_input_list(user, "Choose your preferred spoken language:", "Preferred Spoken Language", lang_opts, pref.preferred_language) + if(!selection) // Set our preferred to default, just in case. + tgui_alert_async(user, "Preferred Language not modified.", "Selection Canceled") + if(selection) + pref.preferred_language = selection + if(selection == "common" || selection == S.language) + tgui_alert_async(user, "You will now speak your standard default language, [S.language ? S.language : "common"], if you do not specify a language when speaking.", "Preferred Set to Default") + else // Did they set anything else? + tgui_alert_async(user, "You will now speak [pref.preferred_language] if you do not specify a language when speaking.", "Preferred Language Set") + return TOPIC_REFRESH + // VOREStation Add End + + return ..() diff --git a/code/modules/client/preference_setup/general/05_background.dm b/code/modules/client/preference_setup/general/05_background.dm index 99d55b06eb..4838629cdf 100644 --- a/code/modules/client/preference_setup/general/05_background.dm +++ b/code/modules/client/preference_setup/general/05_background.dm @@ -133,19 +133,19 @@ else if(href_list["set_medical_records"]) var/new_medical = strip_html_simple(tgui_input_text(user,"Enter medical information here.","Character Preference", html_decode(pref.med_record), MAX_RECORD_LENGTH, TRUE, prevent_enter = TRUE), MAX_RECORD_LENGTH) - if(!isnull(new_medical) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) + if(new_medical && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.med_record = new_medical return TOPIC_REFRESH else if(href_list["set_general_records"]) var/new_general = strip_html_simple(tgui_input_text(user,"Enter employment information here.","Character Preference", html_decode(pref.gen_record), MAX_RECORD_LENGTH, TRUE, prevent_enter = TRUE), MAX_RECORD_LENGTH) - if(!isnull(new_general) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) + if(new_general && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.gen_record = new_general return TOPIC_REFRESH else if(href_list["set_security_records"]) var/sec_medical = strip_html_simple(tgui_input_text(user,"Enter security information here.","Character Preference", html_decode(pref.sec_record), MAX_RECORD_LENGTH, TRUE, prevent_enter = TRUE), MAX_RECORD_LENGTH) - if(!isnull(sec_medical) && !jobban_isbanned(user, "Records") && CanUseTopic(user)) + if(sec_medical && !jobban_isbanned(user, "Records") && CanUseTopic(user)) pref.sec_record = sec_medical return TOPIC_REFRESH diff --git a/code/modules/client/preference_setup/general/06_flavor.dm b/code/modules/client/preference_setup/general/06_flavor.dm index a759732022..be02dc3146 100644 --- a/code/modules/client/preference_setup/general/06_flavor.dm +++ b/code/modules/client/preference_setup/general/06_flavor.dm @@ -60,11 +60,11 @@ if("open") if("general") var/msg = strip_html_simple(tgui_input_text(usr,"Give a general description of your character. This will be shown regardless of clothings. Put in a single space to make blank.","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]]), multiline = TRUE, prevent_enter = TRUE)) //VOREStation Edit: separating out OOC notes - if(CanUseTopic(user) && !isnull(msg)) + if(CanUseTopic(user) && msg) pref.flavor_texts[href_list["flavor_text"]] = msg else var/msg = strip_html_simple(tgui_input_text(usr,"Set the flavor text for your [href_list["flavor_text"]]. Put in a single space to make blank.","Flavor Text",html_decode(pref.flavor_texts[href_list["flavor_text"]]), multiline = TRUE, prevent_enter = TRUE)) - if(CanUseTopic(user) && !isnull(msg)) + if(CanUseTopic(user) && msg) pref.flavor_texts[href_list["flavor_text"]] = msg SetFlavorText(user) return TOPIC_HANDLED @@ -74,11 +74,11 @@ if("open") if("Default") var/msg = strip_html_simple(tgui_input_text(usr,"Set the default flavour text for your robot. It will be used for any module without individual setting. Put in a single space to make blank.","Flavour Text",html_decode(pref.flavour_texts_robot["Default"]), multiline = TRUE, prevent_enter = TRUE)) - if(CanUseTopic(user) && !isnull(msg)) + if(CanUseTopic(user) && msg) pref.flavour_texts_robot[href_list["flavour_text_robot"]] = msg else var/msg = strip_html_simple(tgui_input_text(usr,"Set the flavour text for your robot with [href_list["flavour_text_robot"]] module. If you leave this blank, default flavour text will be used for this module. Put in a single space to make blank.","Flavour Text",html_decode(pref.flavour_texts_robot[href_list["flavour_text_robot"]]), multiline = TRUE, prevent_enter = TRUE)) - if(CanUseTopic(user) && !isnull(msg)) + if(CanUseTopic(user) && msg) pref.flavour_texts_robot[href_list["flavour_text_robot"]] = msg SetFlavourTextRobot(user) return TOPIC_HANDLED diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm index cb27f19b8a..163ed97bb7 100644 --- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm @@ -35,6 +35,13 @@ character_name = list("Malady Blanche") // A CKEYS + +/datum/gear/fluff/mira_medal + path = /obj/item/clothing/accessory/medal/silver/fluff/abc314 + display_name = "Mira's Health Service Achievement medal" + ckeywhitelist = list("abc314") + character_name = list("Mira Nesyne") + /datum/gear/fluff/lethe_helmet path = /obj/item/clothing/head/helmet/hos/fluff/lethe display_name = "Lethe's Helmet" @@ -451,6 +458,20 @@ ckeywhitelist = list("flintlockdafox") character_name = list("Flintlock Sharpsman") +/datum/gear/fluff/zera_weldmask + path = /obj/item/clothing/head/welding/fluff/zera + display_name = "Zera's Welding Mask" + slot = slot_head + ckeywhitelist = list("fuackwit422") + character_name = list("Zera Livanne") + +/datum/gear/fluff/zera_labcloak + path = /obj/item/clothing/suit/storage/toggle/labcoat/fluff/zera + display_name = "Zera's Labcloak" + slot = slot_wear_suit + ckeywhitelist = list("fuackwit422") + character_name = list("Zera Livanne") + // G CKEYS diff --git a/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm b/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm index 03b1a0dcf5..8365de95c5 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit_vr.dm @@ -299,6 +299,25 @@ Talon winter coat ) gear_tweaks += new/datum/gear_tweak/path(shrouds) +/datum/gear/suit/roles/cropjackets + display_name = "crop jacket selection" + path = /obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket + +/datum/gear/suit/roles/cropjackets/New() + ..() + var/list/shrouds = list( + "white crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket, + "blue crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/blue, + "red crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/red, + "green crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/green, + "purple crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/purple, + "orange crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/orange, + "charcoal crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/charcoal, + "faded reflec crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/marine, + "drab crop jacket"=/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/drab + ) + gear_tweaks += new/datum/gear_tweak/path(shrouds) + //Actually colorable hoodies /datum/gear/suit/roles/choodies display_name = "hoodie selection, colorable" diff --git a/code/modules/client/preference_setup/vore/03_egg.dm b/code/modules/client/preference_setup/vore/03_egg.dm index 49efcdf798..5ad651fbf9 100644 --- a/code/modules/client/preference_setup/vore/03_egg.dm +++ b/code/modules/client/preference_setup/vore/03_egg.dm @@ -1,6 +1,13 @@ // Define a place to save appearance in character setup +// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than # +#define AUTOHISS_OFF 0 +#define AUTOHISS_BASIC 1 +#define AUTOHISS_FULL 2 +// VOREStation Add End + /datum/preferences var/vore_egg_type = "Egg" //The egg type they have. + var/autohiss = "Full" // VOREStation Add: Whether we have Autohiss on. I'm hijacking the egg panel bc this one has a shitton of unused space. // Definition of the stuff for the egg type. /datum/category_item/player_setup_item/vore/egg @@ -9,19 +16,35 @@ /datum/category_item/player_setup_item/vore/egg/load_character(var/savefile/S) S["vore_egg_type"] >> pref.vore_egg_type + S["autohiss"] >> pref.autohiss // VOREStation Add /datum/category_item/player_setup_item/vore/egg/save_character(var/savefile/S) S["vore_egg_type"] << pref.vore_egg_type + S["autohiss"] << pref.autohiss // VOREStation Add /datum/category_item/player_setup_item/vore/egg/sanitize_character() pref.vore_egg_type = sanitize_inlist(pref.vore_egg_type, global_vore_egg_types, initial(pref.vore_egg_type)) /datum/category_item/player_setup_item/vore/egg/copy_to_mob(var/mob/living/carbon/human/character) character.vore_egg_type = pref.vore_egg_type + // VOREStation Add + if(pref.client) // Safety, just in case so we don't runtime. + if(!pref.autohiss) + pref.client.autohiss_mode = AUTOHISS_FULL + else + switch(pref.autohiss) + if("Full") + pref.client.autohiss_mode = AUTOHISS_FULL + if("Basic") + pref.client.autohiss_mode = AUTOHISS_BASIC + if("Off") + pref.client.autohiss_mode = AUTOHISS_OFF + // VOREStation Add /datum/category_item/player_setup_item/vore/egg/content(var/mob/user) . += "
" . += " Egg Type: [pref.vore_egg_type]
" + . += "Autohiss Default Setting: [pref.autohiss]
" // VOREStation Add /datum/category_item/player_setup_item/vore/egg/OnTopic(var/href, var/list/href_list, var/mob/user) if(!CanUseTopic(user)) @@ -33,5 +56,21 @@ if(selection) pref.vore_egg_type = selection return TOPIC_REFRESH + // VOREStation Add Start + else if(href_list["autohiss"]) + var/list/autohiss_selection = list("Full", "Basic", "Off") + var/selection = tgui_input_list(user, "Choose your default autohiss setting:", "Character Preference", autohiss_selection, pref.autohiss) + if(selection) + pref.autohiss = selection + else if(!selection) + pref.autohiss = "Full" + return TOPIC_REFRESH + // VOREStation Add End else return + +// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than # +#undef AUTOHISS_OFF +#undef AUTOHISS_BASIC +#undef AUTOHISS_FULL +// VOREStation Add End diff --git a/code/modules/clothing/glasses/hud_vr.dm b/code/modules/clothing/glasses/hud_vr.dm index 12f409204e..bb3260213b 100644 --- a/code/modules/clothing/glasses/hud_vr.dm +++ b/code/modules/clothing/glasses/hud_vr.dm @@ -13,6 +13,8 @@ var/flash_prot = 0 //0 for none, 1 for flash weapon protection, 2 for welder protection enables_planes = list(VIS_CH_ID,VIS_CH_HEALTH_VR,VIS_AUGMENTED) plane_slots = list(slot_glasses) + var/ar_toggled = TRUE //Used for toggle_ar_planes() verb + /obj/item/clothing/glasses/omnihud/New() ..() @@ -28,6 +30,14 @@ SStgui.close_uis(src) ..() +/obj/item/clothing/glasses/omnihud/examine() + . = ..() + if(ar_toggled) + . += "\n The HUD indicator reads ON." + else + . += "\n The HUD indicator reads OFF." + + /obj/item/clothing/glasses/omnihud/emp_act(var/severity) if(tgarscreen) SStgui.close_uis(src) @@ -114,6 +124,29 @@ to_chat(usr, "The [src] don't seem to support this functionality.") update_clothing_icon() +/obj/item/clothing/glasses/omnihud/verb/toggle_ar_planes() + set name = "Toggle AR Heads-Up Display" + set desc = "Toggles the job icon and other non-manually requested displays. Does not disable Crew monitor and similar." + set category = "Object" + set src in usr + + //We do not check if user can move or not, since this system is inspired to help see chat bubbles during scenes primarily. + //Preventing turning off the HUD could get in the way of scene flow. + usr.visible_emote("toggles a button on their [src.name]!") //Since we're turning stuff like arrest/medical HUD on/off, we should inform those nearby. + if(ar_toggled) + away_planes = enables_planes + enables_planes = null + to_chat(usr, SPAN_NOTICE("You disabled the Augmented Reality HUD of your [src.name].")) + else + enables_planes = away_planes + away_planes = null + to_chat(usr, SPAN_NOTICE("You enabled the Augmented Reality HUD of your [src.name].")) + ar_toggled = !ar_toggled + usr.update_action_buttons() + usr.recalculate_vis() + + + /obj/item/clothing/glasses/omnihud/proc/ar_interact(var/mob/living/carbon/human/user) return 0 //The base models do nothing. @@ -305,4 +338,4 @@ icon_state = "[icon_state]_1" else icon_state = initial(icon_state) - update_clothing_icon() \ No newline at end of file + update_clothing_icon() diff --git a/code/modules/clothing/head/misc_vr.dm b/code/modules/clothing/head/misc_vr.dm index e46d2bfa11..9541e577d8 100644 --- a/code/modules/clothing/head/misc_vr.dm +++ b/code/modules/clothing/head/misc_vr.dm @@ -91,7 +91,10 @@ /obj/item/clothing/head/pizzaguy name = "pizza delivery visor" desc = "A fancy visor showing alignment to pizza delivery service. Extremely risky career choice." + icon = 'icons/inventory/head/item_vr.dmi' + icon_override = 'icons/inventory/head/mob_vr.dmi' icon_state = "pizzadelivery" + item_state = "pizzadelivery" /obj/item/clothing/head/wedding name = "wedding veil" diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index f998677f76..b9cb44faea 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -666,4 +666,59 @@ /obj/item/clothing/accessory/poncho/roles/cloak/shroud/science name = "research shroud" icon_state = "scishroud" - item_state = "scishroud" \ No newline at end of file + item_state = "scishroud" + +//Crop Jackets +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket + name = "white crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. This one's in plain white, more or less." + icon_state = "cropjacket_white" + item_state = "cropjacket_white" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/blue + name = "blue crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. Let everyone know who's in control of the situation around here." + icon_state = "cropjacket_blue" + item_state = "cropjacket_blue" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/red + name = "red crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. You could probably hide a holster under this without too much trouble." + icon_state = "cropjacket_red" + item_state = "cropjacket_red" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/green + name = "green crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. The faded green tones bring to mind the smell of antiseptics." + icon_state = "cropjacket_green" + item_state = "cropjacket_green" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/purple + name = "purple crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. This doesn't seem like very practical labwear." + icon_state = "cropjacket_purple" + item_state = "cropjacket_purple" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/orange + name = "orange crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. Perfect for keeping cool whilst showing off your gains from shifting crates." + icon_state = "cropjacket_orange" + item_state = "cropjacket_orange" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/charcoal + name = "charcoal crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. Dark and slightly edgy, just like its wearer." + icon_state = "cropjacket_charcoal" + item_state = "cropjacket_charcoal" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/marine + name = "faded reflec crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. Seems to be made of a semi-reflective material, like an EMT's jacket." + icon_state = "cropjacket_marine" + item_state = "cropjacket_marine" + +/obj/item/clothing/accessory/poncho/roles/cloak/crop_jacket/drab + name = "drab crop jacket" + desc = "A cut down jacket that looks like it's light enough to wear on top of some other clothes. This one's a sort of olive-drab kind of colour." + icon_state = "cropjacket_drab" + item_state = "cropjacket_drab" \ No newline at end of file diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm index 4fb63982ce..0e838101f4 100644 --- a/code/modules/emotes/definitions/audible_furry_vr.dm +++ b/code/modules/emotes/definitions/audible_furry_vr.dm @@ -238,3 +238,13 @@ key = "coyawoo5" emote_message_3p = "lets out a scraggly, whine-awoo." emote_sound = 'sound/voice/coyoteawoo5.ogg' + +/decl/emote/audible/roarbark // Upstream port from CHOMP + key = "roarbark" + emote_message_3p = "lets out a roar-bark!" + emote_sound = 'sound/voice/roarbark.ogg' + +/decl/emote/audible/dook + key = "dook" + emote_message_3p = "dooks." + emote_sound = 'sound/voice/FerretDook.ogg' \ No newline at end of file diff --git a/code/modules/events/gnat_migration.dm b/code/modules/events/gnat_migration.dm new file mode 100644 index 0000000000..e807f85b3c --- /dev/null +++ b/code/modules/events/gnat_migration.dm @@ -0,0 +1,102 @@ +/datum/event/gnat_migration + startWhen = 0 // Start immediately + announceWhen = 45 // Adjusted by setup + endWhen = 75 // Adjusted by setup + var/gnat_cap = 10 + var/list/spawned_gnat = list() + +/datum/event/gnat_migration/setup() + announceWhen = rand(30, 60) // 1 to 2 minutes + endWhen += severity * 25 + gnat_cap = 8 + 4 ** severity // No more than this many at once regardless of waves. (12, 16, ??) + +/datum/event/gnat_migration/start() + affecting_z -= global.using_map.sealed_levels // Space levels only please! + ..() + +/datum/event/gnat_migration/announce() + var/announcement = "" + if(severity == EVENT_LEVEL_MAJOR) + announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by." + else + announcement = "Unknown biological [spawned_gnat.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by." + command_announcement.Announce(announcement, "Lifesign Alert") + +/datum/event/gnat_migration/tick() + if(activeFor % 5 != 0) + return // Only process every 10 seconds. + if(count_spawned_gnats() < gnat_cap) + spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2) + +/datum/event/gnat_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir) + if(isnull(dir)) + dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal) + + // Check if any landmarks exist! + var/list/spawn_locations = list() + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == "gnatspawn" && (C.z in affecting_z)) + spawn_locations.Add(C.loc) + if(spawn_locations.len) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + for (var/i = 1, i <= num_groups, i++) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 0, j < group_size, j++) + spawn_one_gnat(spawn_locations[i]) + return + + // Okay we did *not* have any landmarks, so lets do our best! + var/i = 1 + while (i <= num_groups) + var/Z = pick(affecting_z) + var/group_size = rand(group_size_min, group_size_max) + var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z) + var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2) + var/list/turfs = getcircle(group_center, 2) + for (var/j = 0, j < group_size, j++) + var/mob/living/simple_mob/animal/M = spawn_one_gnat(turfs[(i % turfs.len) + 1]) + // Ray trace towards middle of the map to find where they can stop just outside of structure/ship. + var/turf/target + for(var/turf/T in getline(get_turf(M), map_center)) + if(!T.is_space()) + break; + target = T + if(target) + M.ai_holder?.give_destination(target) // Ask gnat to swim towards the middle of the map + i++ + +// Spawn a single gnat at given location. +/datum/event/gnat_migration/proc/spawn_one_gnat(var/loc) + var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/gnat(loc) + GLOB.destroyed_event.register(M, src, .proc/on_gnat_destruction) + spawned_gnat.Add(M) + return M + +// Counts living gnat spawned by this event. +/datum/event/gnat_migration/proc/count_spawned_gnats() + . = 0 + for(var/mob/living/simple_mob/animal/M as anything in spawned_gnat) + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If gnat is bomphed, remove it from the list. +/datum/event/gnat_migration/proc/on_gnat_destruction(var/mob/M) + spawned_gnat -= M + GLOB.destroyed_event.unregister(M, src, .proc/on_gnat_destruction) + +/datum/event/gnat_migration/end() + . = ..() + // Clean up gnat that died in space for some reason. + spawn(0) + for(var/mob/living/simple_mob/SM in spawned_gnat) + if(SM.stat == DEAD) + var/turf/T = get_turf(SM) + if(istype(T, /turf/space)) + if(prob(75)) + qdel(SM) + CHECK_TICK + +// Overmap version +/datum/event/gnat_migration/overmap/announce() + return diff --git a/code/modules/events/ray_migration.dm b/code/modules/events/ray_migration.dm new file mode 100644 index 0000000000..3df3971a81 --- /dev/null +++ b/code/modules/events/ray_migration.dm @@ -0,0 +1,102 @@ +/datum/event/ray_migration + startWhen = 0 // Start immediately + announceWhen = 45 // Adjusted by setup + endWhen = 75 // Adjusted by setup + var/ray_cap = 10 + var/list/spawned_ray = list() + +/datum/event/ray_migration/setup() + announceWhen = rand(30, 60) // 1 to 2 minutes + endWhen += severity * 25 + ray_cap = 1 + 1 ** severity // No more than this many at once regardless of waves. (2, 3, ?) + +/datum/event/ray_migration/start() + affecting_z -= global.using_map.sealed_levels // Space levels only please! + ..() + +/datum/event/ray_migration/announce() + var/announcement = "" + if(severity == EVENT_LEVEL_MAJOR) + announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by." + else + announcement = "Unknown biological [spawned_ray.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by." + command_announcement.Announce(announcement, "Lifesign Alert") + +/datum/event/ray_migration/tick() + if(activeFor % 5 != 0) + return // Only process every 10 seconds. + if(count_spawned_rays() < ray_cap) + spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2) + +/datum/event/ray_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir) + if(isnull(dir)) + dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal) + + // Check if any landmarks exist! + var/list/spawn_locations = list() + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == "carpspawn" && (C.z in affecting_z)) + spawn_locations.Add(C.loc) + if(spawn_locations.len) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + for (var/i = 1, i <= num_groups, i++) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 0, j < group_size, j++) + spawn_one_ray(spawn_locations[i]) + return + + // Okay we did *not* have any landmarks, so lets do our best! + var/i = 1 + while (i <= num_groups) + var/Z = pick(affecting_z) + var/group_size = rand(group_size_min, group_size_max) + var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z) + var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2) + var/list/turfs = getcircle(group_center, 2) + for (var/j = 0, j < group_size, j++) + var/mob/living/simple_mob/animal/M = spawn_one_ray(turfs[(i % turfs.len) + 1]) + // Ray trace towards middle of the map to find where they can stop just outside of structure/ship. + var/turf/target + for(var/turf/T in getline(get_turf(M), map_center)) + if(!T.is_space()) + break; + target = T + if(target) + M.ai_holder?.give_destination(target) // Ask ray to swim towards the middle of the map + i++ + +// Spawn a single ray at given location. +/datum/event/ray_migration/proc/spawn_one_ray(var/loc) + var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/ray(loc) + GLOB.destroyed_event.register(M, src, .proc/on_ray_destruction) + spawned_ray.Add(M) + return M + +// Counts living ray spawned by this event. +/datum/event/ray_migration/proc/count_spawned_rays() + . = 0 + for(var/mob/living/simple_mob/animal/M as anything in spawned_ray) + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If ray is bomphed, remove it from the list. +/datum/event/ray_migration/proc/on_ray_destruction(var/mob/M) + spawned_ray -= M + GLOB.destroyed_event.unregister(M, src, .proc/on_ray_destruction) + +/datum/event/ray_migration/end() + . = ..() + // Clean up ray that died in space for some reason. + spawn(0) + for(var/mob/living/simple_mob/SM in spawned_ray) + if(SM.stat == DEAD) + var/turf/T = get_turf(SM) + if(istype(T, /turf/space)) + if(prob(75)) + qdel(SM) + CHECK_TICK + +// Overmap version +/datum/event/ray_migration/overmap/announce() + return diff --git a/code/modules/events/shark_migration.dm b/code/modules/events/shark_migration.dm new file mode 100644 index 0000000000..7baed0af9c --- /dev/null +++ b/code/modules/events/shark_migration.dm @@ -0,0 +1,102 @@ +/datum/event/shark_migration + startWhen = 0 // Start immediately + announceWhen = 45 // Adjusted by setup + endWhen = 75 // Adjusted by setup + var/shark_cap = 10 + var/list/spawned_shark = list() + +/datum/event/shark_migration/setup() + announceWhen = rand(30, 60) // 1 to 2 minutes + endWhen += severity * 25 + shark_cap = 1 + 1 ** severity // No more than this many at once regardless of waves. (2, 3, ?) + +/datum/event/shark_migration/start() + affecting_z -= global.using_map.sealed_levels // Space levels only please! + ..() + +/datum/event/shark_migration/announce() + var/announcement = "" + if(severity == EVENT_LEVEL_MAJOR) + announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by." + else + announcement = "Unknown biological [spawned_shark.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by." + command_announcement.Announce(announcement, "Lifesign Alert") + +/datum/event/shark_migration/tick() + if(activeFor % 5 != 0) + return // Only process every 10 seconds. + if(count_spawned_sharks() < shark_cap) + spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2) + +/datum/event/shark_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir) + if(isnull(dir)) + dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal) + + // Check if any landmarks exist! + var/list/spawn_locations = list() + for(var/obj/effect/landmark/C in landmarks_list) + if(C.name == "carpspawn" && (C.z in affecting_z)) + spawn_locations.Add(C.loc) + if(spawn_locations.len) // Okay we've got landmarks, lets use those! + shuffle_inplace(spawn_locations) + num_groups = min(num_groups, spawn_locations.len) + for (var/i = 1, i <= num_groups, i++) + var/group_size = rand(group_size_min, group_size_max) + for (var/j = 0, j < group_size, j++) + spawn_one_shark(spawn_locations[i]) + return + + // Okay we did *not* have any landmarks, so lets do our best! + var/i = 1 + while (i <= num_groups) + var/Z = pick(affecting_z) + var/group_size = rand(group_size_min, group_size_max) + var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z) + var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2) + var/list/turfs = getcircle(group_center, 2) + for (var/j = 0, j < group_size, j++) + var/mob/living/simple_mob/animal/M = spawn_one_shark(turfs[(i % turfs.len) + 1]) + // Ray trace towards middle of the map to find where they can stop just outside of structure/ship. + var/turf/target + for(var/turf/T in getline(get_turf(M), map_center)) + if(!T.is_space()) + break; + target = T + if(target) + M.ai_holder?.give_destination(target) // Ask shark to swim towards the middle of the map + i++ + +// Spawn a single shark at given location. +/datum/event/shark_migration/proc/spawn_one_shark(var/loc) + var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/shark/event(loc) + GLOB.destroyed_event.register(M, src, .proc/on_shark_destruction) + spawned_shark.Add(M) + return M + +// Counts living shark spawned by this event. +/datum/event/shark_migration/proc/count_spawned_sharks() + . = 0 + for(var/mob/living/simple_mob/animal/M as anything in spawned_shark) + if(!QDELETED(M) && M.stat != DEAD) + . += 1 + +// If shark is bomphed, remove it from the list. +/datum/event/shark_migration/proc/on_shark_destruction(var/mob/M) + spawned_shark -= M + GLOB.destroyed_event.unregister(M, src, .proc/on_shark_destruction) + +/datum/event/shark_migration/end() + . = ..() + // Clean up shark that died in space for some reason. + spawn(0) + for(var/mob/living/simple_mob/SM in spawned_shark) + if(SM.stat == DEAD) + var/turf/T = get_turf(SM) + if(istype(T, /turf/space)) + if(prob(75)) + qdel(SM) + CHECK_TICK + +// Overmap version +/datum/event/shark_migration/overmap/announce() + return diff --git a/code/modules/food/food/cans.dm b/code/modules/food/food/cans.dm index 8001d10516..90890409bd 100644 --- a/code/modules/food/food/cans.dm +++ b/code/modules/food/food/cans.dm @@ -4,6 +4,7 @@ flags = 0 //starts closed drop_sound = 'sound/items/drop/soda.ogg' pickup_sound = 'sound/items/pickup/soda.ogg' + cant_chance = 1 //arbitrarily high for april fools; if it's not reverted in its entirety I suggest rolling it down to 2% or something //DRINKS @@ -36,6 +37,7 @@ center_of_mass = list("x"=16, "y"=8) drop_sound = 'sound/items/drop/disk.ogg' pickup_sound = 'sound/items/pickup/disk.ogg' + cant_chance = 0 /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle/Initialize() . = ..() diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm index 8a9e434669..f1f1457788 100644 --- a/code/modules/food/food/drinks.dm +++ b/code/modules/food/food/drinks.dm @@ -13,6 +13,13 @@ possible_transfer_amounts = list(5,10,15,25,30) volume = 50 var/trash = null + var/cant_open = 0 + var/cant_chance = 0 + +/obj/item/weapon/reagent_containers/food/drinks/Initialize() + . = ..() + if (prob(cant_chance)) + cant_open = 1 /obj/item/weapon/reagent_containers/food/drinks/on_reagent_change() if (reagents.reagent_list.len > 0) @@ -46,10 +53,14 @@ open(user) /obj/item/weapon/reagent_containers/food/drinks/proc/open(mob/user) - playsound(src,"canopen", rand(10,50), 1) - GLOB.cans_opened_roundstat++ - to_chat(user, "You open [src] with an audible pop!") - flags |= OPENCONTAINER + if(!cant_open) + playsound(src,"canopen", rand(10,50), 1) + GLOB.cans_opened_roundstat++ + to_chat(user, "You open [src] with an audible pop!") + flags |= OPENCONTAINER + else + to_chat(user, "...wait a second, this one doesn't have a ring pull. It's not a can, it's a can't!") + name = "\improper can't of [initial(name)]" //don't update the name until they try to open it /obj/item/weapon/reagent_containers/food/drinks/attack(mob/M as mob, mob/user as mob, def_zone) if(force && !(flags & NOBLUDGEON) && user.a_intent == I_HURT) @@ -100,6 +111,8 @@ /obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) . = ..() if(Adjacent(user)) + if(cant_open) + . += "It doesn't have a ring pull!" if(!reagents?.total_volume) . += "It is empty!" else if (reagents.total_volume <= volume * 0.25) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 8299902b61..c55cf89469 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -557,6 +557,7 @@ /obj/item/weapon/reagent_containers/food/snacks/donut/choc/Initialize() . = ..() reagents.add_reagent("nutriment", 3, nutriment_desc) + reagents.add_reagent("chocolate", 5) /obj/item/weapon/reagent_containers/food/snacks/donut/choc/jelly name = "chocolate frosted jelly donut" @@ -566,6 +567,7 @@ . = ..() reagents.add_reagent("nutriment", 3, nutriment_desc) reagents.add_reagent("berryjuice", 5) + reagents.add_reagent("chocolate", 5) /obj/item/weapon/reagent_containers/food/snacks/donut/blue name = "blue frosted donut" @@ -650,6 +652,7 @@ . = ..() reagents.add_reagent("nutriment", 3, nutriment_desc) reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("chocolate", 1) /obj/item/weapon/reagent_containers/food/snacks/donut/choc_sprinkles/jelly name = "chocolate sprinkles jelly donut" @@ -660,6 +663,7 @@ reagents.add_reagent("nutriment", 3, nutriment_desc) reagents.add_reagent("sprinkles", 1) reagents.add_reagent("berryjuice", 5) + reagents.add_reagent("chocolate", 1) /obj/item/weapon/reagent_containers/food/snacks/donut/meat name = "meat donut" @@ -910,6 +914,18 @@ filling_color = "#2c2cff" color = "#2c2cff" +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/ray + desc = "A fillet of space ray meat." + toxin_type = "stoxin" + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/gnat + desc = "A paltry sample of space-gnat meat. It looks pretty stringy and unpleasant, honestly." + toxin_amount = 1 + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/shark + desc = "A fillet of space shark meat. It looks rather tough and chewy." + toxin_amount = 5 + /obj/item/weapon/reagent_containers/food/snacks/crab_legs name = "steamed crab legs" desc = "Crab legs steamed and buttered to perfection. One day when the boss gets hungry..." diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index e999a377cd..090e78803b 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -374,9 +374,12 @@ // If a weed growth is sufficient, this proc is called. /obj/machinery/portable_atmospherics/hydroponics/proc/weed_invasion() + var/previous_plant //Remove the seed if something is already planted. - if(seed) seed = null + if(seed) + previous_plant = seed.display_name + seed = null seed = SSplants.seeds[pick(list("reishi","nettle","amanita","mushrooms","plumphelmet","towercap","harebells","weeds"))] if(!seed) return //Weed does not exist, someone fucked up. @@ -389,7 +392,7 @@ pestlevel = 0 sampled = 0 update_icon() - visible_message("[src] has been overtaken by [seed.display_name].") + visible_message("\The [previous_plant ? previous_plant : initial(name)] has been overtaken by [seed.display_name].") return diff --git a/code/modules/mining/abandonedcrates_vr.dm b/code/modules/mining/abandonedcrates_vr.dm index e5297e4f6c..cd6113f505 100644 --- a/code/modules/mining/abandonedcrates_vr.dm +++ b/code/modules/mining/abandonedcrates_vr.dm @@ -99,6 +99,7 @@ list(pick(/obj/item/weapon/grenade/spawnergrenade/spesscarp, /obj/item/weapon/grenade/spawnergrenade/spider, /obj/item/weapon/grenade/explosive/frag), 7) = 1, list(/obj/item/weapon/grenade/flashbang/clusterbang, 7) = 1, list(/obj/item/weapon/card/emag, 11) = 1, + list(/obj/item/weapon/melee/shock_maul, 11) = 5, list(/obj/item/weapon/storage/backpack/sport/hyd/catchemall, 11) = 1 )) var/path = choice[1] diff --git a/code/modules/mining/mine_outcrops.dm b/code/modules/mining/mine_outcrops.dm index ae70e710e3..fb570af547 100644 --- a/code/modules/mining/mine_outcrops.dm +++ b/code/modules/mining/mine_outcrops.dm @@ -97,6 +97,21 @@ new outcropdrop(get_turf(src)) qdel(src) return + if (istype(W, /obj/item/weapon/melee/shock_maul)) + var/obj/item/weapon/melee/shock_maul/S = W + if(!S.wielded || !S.status) + to_chat(user, "\The [src] must be wielded in two hands and powered on to be used for mining!") + return + to_chat(user, "You pulverize \the [src]!") + for(var/i=0;i<(rand(mindrop,upperdrop));i++) + new outcropdrop(get_turf(src)) + playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1) + user.visible_message("\The [S] discharges with a thunderous, hair-raising crackle!") + S.deductcharge() + S.status = 0 + S.update_held_icon() + qdel(src) + return /obj/random/outcrop //In case you want an outcrop without pre-determining the type of ore. name = "random rock outcrop" diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index a5f8f2b4d9..c6b0a91f40 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -382,7 +382,6 @@ var/list/mining_overlay_cache = list() valid_tool = 1 digspeed = P.digspeed - if(valid_tool) if (sand_dug) to_chat(user, "This area has already been dug.") @@ -453,6 +452,51 @@ var/list/mining_overlay_cache = list() to_chat(user, "\The [src] has been excavated to a depth of [excavation_level]cm.") return + if (istype(W, /obj/item/weapon/melee/shock_maul)) + if(!istype(user.loc, /turf)) + return + + var/obj/item/weapon/melee/shock_maul/S = W + if(!S.wielded || !S.status) //if we're not wielded OR not powered up, do nothing + to_chat(user, "\The [src] must be wielded in two hands and powered on to be used for mining!") + return + + var/newDepth = excavation_level + S.excavation_amount // Used commonly below + + //handle any archaeological finds we might uncover + var/fail_message = "" + if(finds && finds.len) + var/datum/find/F = finds[1] + if(newDepth > F.excavation_required) // Digging too deep can break the item. At least you won't summon a Balrog (probably) + fail_message = ". [pick("There is a crunching noise","[S] collides with some different rock","Part of the rock face crumbles away","Something breaks under [S]")]" + wreckfinds(S.destroy_artefacts) + + to_chat(user, "You smash through \the [src][fail_message].") + + if(newDepth >= 200) // This means the rock is mined out fully + if(S.destroy_artefacts) + GetDrilled(0) + else + excavate_turf() + return + + excavation_level += S.excavation_amount + update_archeo_overlays(S.excavation_amount) + + //drop some rocks + next_rock += S.excavation_amount + while(next_rock > 50) + next_rock -= 50 + var/obj/item/weapon/ore/O = new(src) + geologic_data.UpdateNearbyArtifactInfo(src) + O.geologic_data = geologic_data + + user.visible_message("\The [src] discharges with a thunderous, hair-raising crackle!") + playsound(src, 'sound/weapons/resonator_blast.ogg', 100, 1, -1) + S.deductcharge() + S.status = 0 + S.update_held_icon() + if (istype(W, /obj/item/weapon/pickaxe)) if(!istype(user.loc, /turf)) return diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 2cd6bd91f5..87c43a12e9 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -171,6 +171,8 @@ var/list/_human_default_emotes = list( /decl/emote/audible/croon, /decl/emote/audible/lwarble, /decl/emote/audible/croak_skrell, + /decl/emote/audible/roarbark, + /decl/emote/audible/dook, //VOREStation Add End //YW ADDITION: Add Start @@ -320,7 +322,8 @@ var/list/_simple_mob_default_emotes = list( /decl/emote/audible/warble, /decl/emote/audible/vox_shriek, /decl/emote/audible/purr, - /decl/emote/audible/purrlong + /decl/emote/audible/purrlong, + /decl/emote/audible/dook ) //VOREStation Add End diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 45a4616a1a..2811e6ffd4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -686,12 +686,15 @@ return if("general") var/msg = strip_html_simple(tgui_input_text(usr,"Update the general description of your character. This will be shown regardless of clothing.","Flavor Text",html_decode(flavor_texts[href_list["flavor_change"]]), multiline = TRUE, prevent_enter = TRUE)) //VOREStation Edit: separating out OOC notes - flavor_texts[href_list["flavor_change"]] = msg + if(msg) + flavor_texts[href_list["flavor_change"]] = msg + set_flavor() return else var/msg = strip_html_simple(tgui_input_text(usr,"Update the flavor text for your [href_list["flavor_change"]].","Flavor Text",html_decode(flavor_texts[href_list["flavor_change"]]), multiline = TRUE, prevent_enter = TRUE)) - flavor_texts[href_list["flavor_change"]] = msg - set_flavor() + if(msg) + flavor_texts[href_list["flavor_change"]] = msg + set_flavor() return ..() return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 28f38266c8..8c7aaebe8e 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -435,6 +435,10 @@ emp_act var/dtype = O.damtype var/throw_damage = O.throwforce*(speed/THROWFORCE_SPEED_DIVISOR) + if(species && species.throwforce_absorb_threshold >= throw_damage) + visible_message("\The [O] simply bounces off of [src]'s body!") + return + var/zone if (istype(O.thrower, /mob/living)) var/mob/living/L = O.thrower diff --git a/code/modules/mob/living/carbon/human/login.dm b/code/modules/mob/living/carbon/human/login.dm index 7d507c62cb..802ed62a6d 100644 --- a/code/modules/mob/living/carbon/human/login.dm +++ b/code/modules/mob/living/carbon/human/login.dm @@ -1,5 +1,30 @@ +// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than # +#define AUTOHISS_OFF 0 +#define AUTOHISS_BASIC 1 +#define AUTOHISS_FULL 2 +// VOREStation Add End + /mob/living/carbon/human/Login() ..() update_hud() + // VOREStation Add + if(client.prefs) // Safety, just in case so we don't runtime. + if(!client.prefs.autohiss) + client.autohiss_mode = AUTOHISS_FULL + else + switch(client.prefs.autohiss) + if("Full") + client.autohiss_mode = AUTOHISS_FULL + if("Basic") + client.autohiss_mode = AUTOHISS_BASIC + if("Off") + client.autohiss_mode = AUTOHISS_OFF + // VOREStation Add if(species) species.handle_login_special(src) - return \ No newline at end of file + return + +// VOREStation Add Start: Doing this here bc AUTOHISS_FULL is more readable than # +#undef AUTOHISS_OFF +#undef AUTOHISS_BASIC +#undef AUTOHISS_FULL +// VOREStation Add End diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 49d459a00a..47089619ef 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -99,6 +99,7 @@ var/flash_mod = 1 // Stun from blindness modifier (flashes and flashbangs) var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive var/sound_mod = 1 // Multiplier to the effective *range* of flashbangs. a flashbang's bang hits an entire screen radius, with some falloff. + var/throwforce_absorb_threshold = 0 // Ignore damage of thrown items below this value var/chem_strength_heal = 1 // Multiplier to most beneficial chem strength var/chem_strength_pain = 1 // Multiplier to painkiller strength (could be used in a negative trait to simulate long-term addiction reducing effects, etc.) 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 2a23d16157..1f2bd08a13 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -58,6 +58,7 @@ var/datum/species/shapeshifter/promethean/prometheans oxy_mod = 0 flash_mod = 0.5 //No centralized, lensed eyes. item_slowdown_mod = 1.33 + throwforce_absorb_threshold = 10 chem_strength_alcohol = 2 diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 62c6d57dab..6b324d5144 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -72,6 +72,7 @@ species_language = LANGUAGE_UNATHI health_hud_intensity = 2.5 chem_strength_alcohol = 0.75 + throwforce_absorb_threshold = 10 min_age = 32 max_age = 260 @@ -403,6 +404,7 @@ name_language = LANGUAGE_ZADDAT species_language = LANGUAGE_ZADDAT health_hud_intensity = 2.5 + throwforce_absorb_threshold = 5 minimum_breath_pressure = 20 //have fun with underpressures. any higher than this and they'll be even less suitible for life on the station @@ -518,6 +520,7 @@ health_hud_intensity = 2.5 item_slowdown_mod = 0.1 chem_strength_alcohol = 0 + throwforce_absorb_threshold = 5 num_alternate_languages = 3 name_language = LANGUAGE_ROOTLOCAL diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 865e0927f5..ddda7fb2c4 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -331,6 +331,7 @@ slowdown = -0.15 //Small speedboost, as they've got a bunch of legs. Or something. I dunno. brute_mod = 0.8 //20% brute damage reduction burn_mod = 1.15 //15% burn damage increase. They're spiders. Aerosol can+lighter = dead spiders. + throwforce_absorb_threshold = 10 num_alternate_languages = 3 species_language = LANGUAGE_VESPINAE diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index 279dd58f89..9877992b53 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -369,6 +369,13 @@ YW change end */ custom_only = FALSE allergen = ALLERGEN_COFFEE +/datum/trait/neutral/allergy/chocolate + name = "Allergy: Chocolate" + desc = "You're highly allergic to coco and chocolate in specific. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance." + cost = 0 + custom_only = FALSE + allergen = ALLERGEN_CHOCOLATE + /datum/trait/neutral/allergy_reaction name = "Allergy Reaction: Disable Toxicity" desc = "Take this trait to disable the toxic damage effect of being exposed to one of your allergens. Combine with the Disable Suffocation trait to have purely nonlethal reactions." diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 2a1578f56f..fb892e65de 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -338,3 +338,9 @@ var_changes = list("trauma_mod" = 0.85) excludes = list(/datum/trait/negative/neural_hypersensitivity) can_take = ORGANICS + +/datum/trait/positive/throw_resistance + name = "Firm Body" + desc = "Your body is firm enough that small thrown items can't do anything to you." + cost = 1 + var_changes = list("throwforce_absorb_threshold" = 10) diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm index f627a191fe..6015dd16a9 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_powers.dm @@ -79,8 +79,8 @@ // Queen verbs. /mob/living/carbon/human/proc/lay_egg() - set name = "Lay Egg (200)" - set desc = "Lay an egg to produce huggers to impregnate prey with." + set name = "Lay Egg (500)" //Cost is entire queen reserve, to compensate being able to reproduce on it's own + set desc = "Lay an egg that will eventually hatch into a new xenomorph larva. Life finds a way." set category = "Abilities" if(!config.aliens_allowed) @@ -88,13 +88,13 @@ verbs -= /mob/living/carbon/human/proc/lay_egg return - if(locate(/obj/structure/alien/egg) in get_turf(src)) + if(locate(/obj/structure/ghost_pod/automatic/xenomorph_egg) in get_turf(src)) to_chat(src, "There's already an egg here.") return - if(check_alien_ability(200,1,O_EGG)) + if(check_alien_ability(500,1,O_EGG)) visible_message("[src] has laid an egg!") - new /obj/structure/alien/egg(loc) + new /obj/structure/ghost_pod/automatic/xenomorph_egg(loc) return @@ -243,7 +243,7 @@ if(iswall(targetLoc)) targetLoc = get_turf(src) - + var/obj/O switch(choice) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 3694acaf23..7ac301e895 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -145,32 +145,25 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() var/matrix/M = matrix() var/anim_time = 3 - // VOREStation Edit Start: Porting Taur Loafing - if(tail_style?.can_loaf && resting) // Only call these if we're resting? - update_tail_showing() - return // No need to do the rest, we return early - /* // Commenting this out as sleeping is fucky - if(tail_style?.can_loaf && lying && sleeping) // If we're put under by anesthetic or fainting - update_tail_showing() - // return // No need to do the rest, we return early - */ - // VOREStation Edit End - //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. - var/randn = rand(1, 2) - if(randn <= 1) // randomly choose a rotation - M.Turn(-90) + if(tail_style?.can_loaf && resting) // Only call these if we're resting? + update_tail_showing() + M.Scale(desired_scale_x, desired_scale_y) else - M.Turn(90) - M.Scale(desired_scale_y, desired_scale_x)//VOREStation Edit - if(species.icon_height == 64)//VOREStation Edit - M.Translate(13,-22) - else - M.Translate(1,-6) + var/randn = rand(1, 2) + if(randn <= 1) // randomly choose a rotation + M.Turn(-90) + else + M.Turn(90) + if(species.icon_height == 64) + M.Translate(13,-22) + else + M.Translate(1,-6) + M.Scale(desired_scale_y, desired_scale_x) layer = MOB_LAYER -0.01 // Fix for a byond bug where turf entry order no longer matters else M.Scale(desired_scale_x, desired_scale_y)//VOREStation Edit @@ -1270,13 +1263,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() //If you have a custom tail selected if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden) - var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style.can_loaf && resting) ? "[tail_style.icon_state]_loaf" : (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) // VOREStation Edit: Taur Loafing + var/icon/tail_s = new/icon("icon" = (tail_style.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) //CHOMPEdit if(tail_style.can_loaf && !is_shifted) pixel_y = (resting) ? -tail_style.loaf_offset*size_multiplier : default_pixel_y //move player down, then taur up, to fit the overlays correctly // VOREStation Edit: Taur Loafing if(tail_style.do_colouration) tail_s.Blend(rgb(src.r_tail, src.g_tail, src.b_tail), tail_style.color_blend_mode) if(tail_style.extra_overlay) - var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style?.can_loaf && resting) ? "[tail_style.extra_overlay]_loaf" : tail_style.extra_overlay) // VOREStation Edit: Taur Loafing + var/icon/overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay) //CHOMPEdit if(wagging && tail_style.ani_state) overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay_w) overlay.Blend(rgb(src.r_tail2, src.g_tail2, src.b_tail2), tail_style.color_blend_mode) @@ -1288,7 +1281,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() qdel(overlay) if(tail_style.extra_overlay2) - var/icon/overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2) + var/icon/overlay = new/icon("icon" = (tail_style?.can_loaf && resting) ? tail_style.icon_loaf : tail_style.icon, "icon_state" = tail_style.extra_overlay2) //CHOMPEdit if(wagging && tail_style.ani_state) overlay = new/icon("icon" = tail_style.icon, "icon_state" = tail_style.extra_overlay2_w) overlay.Blend(rgb(src.r_tail3, src.g_tail3, src.b_tail3), tail_style.color_blend_mode) @@ -1306,7 +1299,6 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() if(istaurtail(tail_style)) var/datum/sprite_accessory/tail/taur/taurtype = tail_style working.pixel_x = -16 - working.pixel_y = (tail_style.can_loaf && resting) ? tail_style.loaf_offset : 0 // VOREStation Edit: Taur Loafing if(taurtype.can_ride && !riding_datum) riding_datum = new /datum/riding/taur(src) verbs |= /mob/living/carbon/human/proc/taur_mount diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index a865a6b05d..babe6c4300 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -94,6 +94,32 @@ apply_damage(damage, BURN, def_zone, initial_blocked, soaked, used_weapon, sharp, edge) // Handle it as normal burn. else adjustToxLoss(damage * blocked) + if(ELECTROMAG) + damage = damage * blocked + switch(round(damage)) + if(91 to INFINITY) + emp_act(1) + if(76 to 90) + if(prob(50)) + emp_act(1) + else + emp_act(2) + if(61 to 75) + emp_act(2) + if(46 to 60) + if(prob(50)) + emp_act(2) + else + emp_act(3) + if(31 to 45) + emp_act(3) + if(16 to 30) + if(prob(50)) + emp_act(3) + else + emp_act(4) + if(0 to 15) + emp_act(4) flash_weak_pain() updatehealth() return 1 diff --git a/code/modules/mob/living/silicon/pai/pai_vr.dm b/code/modules/mob/living/silicon/pai/pai_vr.dm index 1f6349df05..5819a9a9f8 100644 --- a/code/modules/mob/living/silicon/pai/pai_vr.dm +++ b/code/modules/mob/living/silicon/pai/pai_vr.dm @@ -46,7 +46,8 @@ "catslug", "car", "typeone", - "13" + "13", + "pai-raptor" ) //These vars keep track of whether you have the related software, used for easily updating the UI var/soft_ut = FALSE //universal translator diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 3d6ebe9739..a10d1f2c0b 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -87,7 +87,9 @@ death() if (src.stat != 2) //Alive. - if (src.paralysis || src.stunned || src.weakened || !src.has_power) //Stunned etc. + if (src.weakened > 0) // Do not fullstun on weaken + AdjustWeakened(-1) + if (src.paralysis || src.stunned || !src.has_power) //Stunned etc. src.set_stat(UNCONSCIOUS) if (src.stunned > 0) AdjustStunned(-1) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 07540532da..d16fc7418a 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -266,7 +266,9 @@ set desc = "Sets an extended description of your character's features." set category = "IC" - flavor_text = strip_html_simple(tgui_input_text(usr, "Please enter your new flavour text.", "Flavour text", null)) + var/new_flavortext = strip_html_simple(tgui_input_text(usr, "Please enter your new flavour text.", "Flavour text", null)) + if(new_flavortext) + flavor_text = new_flavortext /mob/living/silicon/binarycheck() return 1 diff --git a/code/modules/mob/living/simple_mob/combat.dm b/code/modules/mob/living/simple_mob/combat.dm index 73045b51da..7c8ccfadc5 100644 --- a/code/modules/mob/living/simple_mob/combat.dm +++ b/code/modules/mob/living/simple_mob/combat.dm @@ -14,9 +14,14 @@ handle_attack_delay(A, melee_attack_delay) // This will sleep this proc for a bit, which is why waitfor is false. // Cooldown testing is done at click code (for players) and interface code (for AI). - setClickCooldown(get_attack_speed()) + // VOREStation Edit Start: Simplemob Injury + if(injury_enrages) + setClickCooldown(get_attack_speed() - ((injury_level / 2) SECONDS)) // Increase how fast we can attack by our injury level / 2 + else + setClickCooldown(get_attack_speed() + ((injury_level / 2) SECONDS)) // Delay how fast we can attack by our injury level / 2 + // VOREStation Edit Stop: Simplemob Injury - // Returns a value, but will be lost if + // Returns a value, but will be lost if . = do_attack(A, their_T) if(melee_attack_delay) @@ -90,7 +95,12 @@ if(!istype(A) || QDELETED(A)) return - setClickCooldown(get_attack_speed()) + // VOREStation Edit Start: Simplemob Injury + if(injury_enrages) + setClickCooldown(get_attack_speed() - ((injury_level / 2) SECONDS)) // Increase how fast we can attack by our injury level / 2 + else + setClickCooldown(get_attack_speed() + ((injury_level / 2) SECONDS)) // Delay how fast we can attack by our injury level / 2 + // VOREStation Edit Stop: Simplemob Injury face_atom(A) @@ -259,4 +269,4 @@ /mob/living/simple_mob/proc/special_pre_animation(atom/A) do_windup_animation(A, special_attack_delay) // Semi-placeholder. -/mob/living/simple_mob/proc/special_post_animation(atom/A) \ No newline at end of file +/mob/living/simple_mob/proc/special_post_animation(atom/A) diff --git a/code/modules/mob/living/simple_mob/simple_mob.dm b/code/modules/mob/living/simple_mob/simple_mob.dm index 7a9384ce97..fe67168891 100644 --- a/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/code/modules/mob/living/simple_mob/simple_mob.dm @@ -165,17 +165,22 @@ var/limb_icon_key var/understands_common = TRUE //VOREStation Edit - Makes it so that simplemobs can understand galcomm without being able to speak it. var/heal_countdown = 5 //VOREStation Edit - A cooldown ticker for passive healing - var/obj/item/weapon/card/id/mobcard = null //VOREStation Edit - var/list/mobcard_access = list() //VOREStation Edit - var/mobcard_provided = FALSE //VOREStation Edit + var/list/myid_access = list() //VOREStation Edit + var/ID_provided = FALSE //VOREStation Edit + // VOREStation Add: Move/Shoot/Attack delays based on damage + var/damage_fatigue_mult = 0 // Our multiplier for how heavily mobs are affected by injury. [UPDATE THIS IF THE FORMULA CHANGES]: Formula = injury_level = round(rand(1,3) * damage_fatigue_mult * clamp(((rand(2,5) * (h / getMaxHealth())) - rand(0,2)), 1, 5)) + var/injury_level = 0 // What our injury level is. Rather than being the flat damage, this is the amount added to various delays to simulate injuries in a manner as lightweight as possible. + var/threshold = 0.6 // When we start slowing down. Configure this setting per-mob. Default is 60% + var/injury_enrages = FALSE // Do injuries enrage (aka strengthen) our mob? If yes, we'll interpret how hurt we are differently. + // VOREStation Add End /mob/living/simple_mob/Initialize() verbs -= /mob/verb/observe health = maxHealth - if(mobcard_provided) //VOREStation Edit - mobcard = new /obj/item/weapon/card/id(src) - mobcard.access = mobcard_access.Copy() + if(ID_provided) //VOREStation Edit + myid = new /obj/item/weapon/card/id(src) + myid.access = myid_access.Copy() for(var/L in has_langs) languages |= GLOB.all_languages[L] @@ -259,6 +264,13 @@ if(m_intent == "walk") . *= 1.5 + // VOREStation Edit Start + if(injury_enrages) // If we enrage, then do this, else + . -= injury_level + else + . += injury_level + // VOREStation Edit Stop + . += config.animal_delay . += ..() @@ -308,12 +320,20 @@ /decl/mob_organ_names var/list/hit_zones = list("body") //When in doubt, it's probably got a body. -//VOREStation Add Start For allowing mobs with ID's door access -/mob/living/simple_mob/Bump(var/atom/A) - if(mobcard && istype(A, /obj/machinery/door)) - var/obj/machinery/door/D = A - if(client && !istype(D, /obj/machinery/door/firedoor) && !istype(D, /obj/machinery/door/blast) && !istype(D, /obj/machinery/door/airlock/lift) && D.check_access(mobcard)) - D.open() - else - ..() -//Vorestation Add End +/* + * VOREStation Add + * How injured are we? Returns a number that is then added to movement cooldown and firing/melee delay respectively. + * Called by movement_delay and our firing/melee delay checks +*/ +/mob/living/simple_mob/proc/get_injury_level(var/mob/living/simple_mob/M) + var/h = getMaxHealth() - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss // We're not updating our actual health here bc we want updatehealth() and other checks to handle that + if(h > 0) // Safety to prevent division by 0 errors + if((h / getMaxHealth()) <= threshold) // Essentially, did our health go down? We don't modify want to modify our total slowdown if we didn't actually take damage, and aren't below our threshold % + var/totaldelay = round(rand(1,3) * damage_fatigue_mult * clamp(((rand(2,5) * (h / getMaxHealth())) - rand(0,2)), 1, 5)) // totaldelay is how much delay we're going to feed into attacks and movement. Do NOT change this formula unless you know how to math. + injury_level = totaldelay // Adds our returned slowdown to the mob's injury level + +/mob/living/simple_mob/updatehealth() // We don't want to fully override the check, just hook our own code in + get_injury_level() // We check how injured we are, then actually update the mob on how hurt we are. + . = ..() // Calling parent here, actually updating our mob on how hurt we are. + +// VOREStation Add End diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index 59177f3659..6fea80f626 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -44,7 +44,7 @@ friendly = list("hugs") see_in_dark = 8 - mobcard_provided = TRUE + ID_provided = TRUE catalogue_data = list(/datum/category_item/catalogue/fauna/catslug) ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/catslug @@ -426,7 +426,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/engislug) holder_type = /obj/item/weapon/holder/catslug/custom/engislug say_list_type = /datum/say_list/catslug/custom/engislug - mobcard_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_construction, access_atmospherics) + myid_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_construction, access_atmospherics) siemens_coefficient = 0 //Noodly fella's gone and built up an immunity from many small shocks minbodytemp = 200 @@ -543,7 +543,7 @@ "bio" = 0, "rad" = 0 ) //Similarly, \some\ armour values for a smidge more survivability compared to other catslugs. - mobcard_access = list(access_security, access_sec_doors, access_forensics_lockers, access_maint_tunnels) + myid_access = list(access_security, access_sec_doors, access_forensics_lockers, access_maint_tunnels) /datum/say_list/catslug/custom/gatslug speak = list("Have any flashbangs?", "Valids!", "Heard spiders?", "What is that?", "Freeze!", "What are you doing?", "How did you get here?", "Red alert means big bangsticks.", "No being naughty now.", "WAOW!", "Who ate all the donuts?") @@ -580,7 +580,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/medislug) holder_type = /obj/item/weapon/holder/catslug/custom/medislug say_list_type = /datum/say_list/catslug/custom/medislug - mobcard_access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) + myid_access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) /datum/say_list/catslug/custom/medislug speak = list("Have any osteodaxon?", "What is that?", "Suit sensors!", "What are you doing?", "How did you get here?", "Put a mask on!", "No smoking!", "WAOW!", "Stop getting blood everywhere!", "WHERE IN MAINT?") @@ -616,7 +616,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/scienceslug) holder_type = /obj/item/weapon/holder/catslug/custom/scienceslug say_list_type = /datum/say_list/catslug/custom/scienceslug - mobcard_access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) + myid_access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) /datum/say_list/catslug/custom/scienceslug @@ -654,7 +654,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/cargoslug) holder_type = /obj/item/weapon/holder/catslug/custom/cargoslug say_list_type = /datum/say_list/catslug/custom/cargoslug - mobcard_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station) + myid_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station) /datum/say_list/catslug/custom/cargoslug speak = list("Disposals is not for slip and slide.", "What is that?", "Stamp those manifests!", "What are you doing?", "How did you get here?", "Can order pizza crate?", "WAOW!", "Where are all of our materials?", "Got glubbs?") @@ -693,7 +693,7 @@ catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/capslug) holder_type = /obj/item/weapon/holder/catslug/custom/capslug say_list_type = /datum/say_list/catslug/custom/capslug - mobcard_access = list(access_maint_tunnels) //The all_station_access part below adds onto this. + myid_access = list(access_maint_tunnels) //The all_station_access part below adds onto this. /datum/say_list/catslug/custom/capslug speak = list("How open big glass box with shiny inside?.", "What is that?", "Respect my authority!", "What are you doing?", "How did you get here?", "Fax for yellow-shirts!", "WAOW!", "Why is that console blinking and clicking?", "Do we need to call for ERT?", "Have been called comdom before, not sure why they thought I was a balloon.") @@ -708,7 +708,7 @@ mob_radio.ks2type = /obj/item/device/encryptionkey/heads/captain //Might not be able to speak, but the catslug can listen. mob_radio.keyslot2 = new /obj/item/device/encryptionkey/heads/captain(mob_radio) mob_radio.recalculateChannels(1) - mobcard.access |= get_all_station_access() + myid.access |= get_all_station_access() //============================================================================= //Admin-spawn only catslugs below - Expect overpowered things & silliness below @@ -725,7 +725,7 @@ icon_dead = "deathslug_dead" catalogue_data = list(/datum/category_item/catalogue/fauna/catslug) //So they don't get the spaceslug's cataloguer entry say_list_type = /datum/say_list/catslug //Similarly, so they don't get the spaceslug's speech lines. - mobcard_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) + myid_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) maxHealth = 100 //Tough noodles health = 100 taser_kill = 0 @@ -750,7 +750,7 @@ . = ..() mob_radio = new /obj/item/device/radio/headset/mob_headset(src) mob_radio.frequency = DTH_FREQ //Can't tell if bugged, deathsquad freq in general seems broken - mobcard.access |= get_all_station_access() + myid.access |= get_all_station_access() //Syndicate catslug /mob/living/simple_mob/vore/alienanimals/catslug/custom/spaceslug/syndislug @@ -763,7 +763,7 @@ icon_dead = "syndislug_dead" catalogue_data = list(/datum/category_item/catalogue/fauna/catslug) say_list_type = /datum/say_list/catslug - mobcard_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks) + myid_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks) faction = "syndicate" maxHealth = 100 //Tough noodles health = 100 @@ -795,7 +795,7 @@ mob_radio.ks2type = /obj/item/device/encryptionkey/syndicate mob_radio.keyslot2 = new /obj/item/device/encryptionkey/syndicate(mob_radio) mob_radio.recalculateChannels(1) - mobcard.access |= get_all_station_access() + myid.access |= get_all_station_access() //ERT catslug /mob/living/simple_mob/vore/alienanimals/catslug/custom/spaceslug/responseslug @@ -808,7 +808,7 @@ icon_dead = "responseslug_dead" catalogue_data = list(/datum/category_item/catalogue/fauna/catslug) say_list_type = /datum/say_list/catslug - mobcard_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) + myid_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) maxHealth = 100 //Tough noodles health = 100 taser_kill = 0 @@ -839,7 +839,7 @@ mob_radio.ks2type = /obj/item/device/encryptionkey/ert mob_radio.keyslot2 = new /obj/item/device/encryptionkey/ert(mob_radio) mob_radio.recalculateChannels(1) - mobcard.access |= get_all_station_access() + myid.access |= get_all_station_access() //Pilot Catslug diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/gnat.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/gnat.dm new file mode 100644 index 0000000000..35c77548b1 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/gnat.dm @@ -0,0 +1,57 @@ +// Space carp show up as a random event to wreck hapless people in space or near windows. +// They generally fit the archetype of 'fast but fragile'. +// This is compensated by being in groups (usually). + +/datum/category_item/catalogue/fauna/gnat + name = "Voidborne Fauna - Space Gnat" + desc = "Stellar explorers once thought the greatest nuisance was the space carp. \ +

\ + Regrettably, they were wrong.\ +

\ + The so-called 'space gnat' is a populous and highly irritating but largely harmless threat \ + mostly known for how much of a nuisance it poses by flying into various intakes and other \ + sensitive or delicate starship components. Their small, spherical bodies are very fragile \ + and possess four stubby wings that serve no apparent purpose, but which the gnats flap furiously \ + all the same, perhaps in anger at the cruelties of life and the universe.\ +

\ + Indeed, what kind of god could create such a misbegotten creature? Certainly not a benevolent one." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/space/gnat + name = "space gnat" + desc = "A small, wretched interstellar pest. Whilst little danger by themselves, they can be a problem in large numbers." + catalogue_data = list(/datum/category_item/catalogue/fauna/gnat) + icon = 'icons/mob/mobs_monsters/animal.dmi' + icon_state = "gnat" + icon_living = "gnat" + icon_dead = "gnat_dead" + + faction = "gnat" + maxHealth = 5 + health = 5 + movement_cooldown = 0 + hovering = TRUE + + response_help = "baps the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + melee_damage_lower = 2 + melee_damage_upper = 3 //they do very little damage but attack fairly fast, like organic viscerators + base_attack_cooldown = 10 // Bitey bitey! + attack_sharp = TRUE + attack_sound = 'sound/weapons/bite.ogg' + attacktext = list("nibbled") + + organ_names = /decl/mob_organ_names/fish + + meat_amount = 1 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/gnat + + ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/jellyfish + mob_bump_flag = 0 + + organ_names = /decl/mob_organ_names/space_gnat + +/decl/mob_organ_names/space_gnat + hit_zones = list("cephalothorax", "stubby winglets", "flailing tail") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/ray.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/ray.dm new file mode 100644 index 0000000000..18eace68b5 --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/ray.dm @@ -0,0 +1,78 @@ +// Space carp show up as a random event to wreck hapless people in space or near windows. +// They generally fit the archetype of 'fast but fragile'. +// This is compensated by being in groups (usually). + +/datum/category_item/catalogue/fauna/ray + name = "Voidborne Fauna - Space Ray" + desc = "Believed to be a distant relative of the more numerous 'space carp' \ + the 'space ray' is a somewhat horrifying-looking creature with a maw of sharp fangs \ + and several vicious-looking bony protrusions.\ +

\ + In truth, however, they are largely harmless creatures, being content to drift \ + upon the solar winds. They seem to feed off a mix of interstellar gases, solar radiation, \ + space dust, and occasionally other detritus. There are no known cases of unprovoked attacks. \ + More baffling is their ability to fly within gravity fields, as they do not seem to move about \ + in the same way that carp do, instead seeming to drift on invisible field currents. \ +

\ + Scientists have found several shared genetic markers between both the 'ray' and 'carp', \ + but at this time have little direct evidence of any relationship between these species. \ + There are many competing theories, and few of them can agree on anything but the broadest \ + strokes. Oh, and that their tissues contain considerable amounts of soporifics. That too. \ +

\ + What scientists can agree on, however, is that whilst the 'space ray' may look nasty \ + they're generally little threat. Astroxenobiologists have noted that the two species do \ + seem to get along quite poorly, and that the rays are quite capable of dispatching their \ + supposed cousins, even when outnumbered." + value = CATALOGUER_REWARD_EASY + +/mob/living/simple_mob/animal/space/ray + name = "space ray" + desc = "A horrifying-looking but ultimately misunderstood creature that poses little actual threat." + catalogue_data = list(/datum/category_item/catalogue/fauna/ray) + icon = 'icons/mob/mobs_monsters/animal.dmi' + icon_state = "ray" + icon_living = "ray" + icon_dead = "ray_dead" + icon_rest = "ray_rest" + icon_gib = "ray_gib" + + faction = "ray" + maxHealth = 125 + health = 125 + movement_cooldown = 0 // Carp go fast + hovering = TRUE + + response_help = "strokes the" + response_disarm = "gently pushes aside the" + response_harm = "hits the" + + melee_damage_lower = 5 + melee_damage_upper = 10 //minor damage variance, since they should only be fighting carp + base_attack_cooldown = 18 // A bit slower than carp + attack_sharp = TRUE + attack_sound = 'sound/weapons/bite.ogg' + attacktext = list("lanced","bitten","impaled","gored") + + organ_names = /decl/mob_organ_names/fish + + meat_amount = 5 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/ray + + ai_holder_type = /datum/ai_holder/simple_mob/retaliate/chill + mob_bump_flag = 0 + + say_list_type = /datum/say_list/space_ray + + var/knockdown_chance = 66 + +/mob/living/simple_mob/animal/space/ray/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(knockdown_chance)) + L.Weaken(4) + L.visible_message(span("danger", "\The [src] buffets \the [L]!")) + src.ai_holder.remove_target() + L.visible_message(span("notice", "\The [src] seems to lose interest in \the [L]...")) + +/datum/say_list/space_ray + emote_see = list("swoops","dives","drifts on a solar current","glides elegantly through the void","briefly tumbles") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/shark.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/shark.dm new file mode 100644 index 0000000000..466df2905d --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/shark.dm @@ -0,0 +1,56 @@ +// Space carp show up as a random event to wreck hapless people in space or near windows. +// They generally fit the archetype of 'fast but fragile'. +// This is compensated by being in groups (usually). + +/datum/category_item/catalogue/fauna/shark + name = "Voidborne Fauna - Space Shark" + desc = "The space carp's bigger, highly territorial kin, space sharks are bigger, meaner, \ + and generally bad news to be around for extended periods. If you see one, hope that it's \ + the only one around, because if it isn't then that means it's probably a parent with their pups. " + value = CATALOGUER_REWARD_HARD + +/mob/living/simple_mob/animal/space/shark + name = "space shark" + desc = "A regal and imposing interstellar creature, and one that poses a serious threat to the ill-prepared." + catalogue_data = list(/datum/category_item/catalogue/fauna/shark) + icon = 'icons/mob/mobs_monsters/animal.dmi' + icon_state = "shark" + icon_living = "shark" + icon_dead = "shark_dead" + icon_rest = "shark_rest" + + faction = "spaceshark" + maxHealth = 125 + health = 125 + movement_cooldown = 0 + hovering = TRUE + + response_help = "strokes the" + response_disarm = "casually rotates the" + response_harm = "hits the" + + melee_damage_lower = 15 + melee_damage_upper = 30 //don't mess with these critters! + base_attack_cooldown = 22 // Quite slow, given their power + attack_sharp = TRUE + attack_sound = 'sound/weapons/bite.ogg' + attacktext = list("lanced","bitten","impaled","gored") + + organ_names = /decl/mob_organ_names/fish + + meat_amount = 10 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/shark + + ai_holder_type = /datum/ai_holder/simple_mob/melee + + var/knockdown_chance = 10 //slightly reduced their knockdown prob compared to carp given their greater power + +/mob/living/simple_mob/animal/space/shark/apply_melee_effects(var/atom/A) + if(isliving(A)) + var/mob/living/L = A + if(prob(knockdown_chance)) + L.Weaken(3) + L.visible_message(span("danger", "\The [src] knocks down \the [L]!")) + +/mob/living/simple_mob/animal/space/shark/event + ai_holder_type = /datum/ai_holder/simple_mob/event \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm index 6c315dca4a..c7e3e71fca 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm @@ -245,6 +245,36 @@ max_n2 = 0 minbodytemp = 0 +/mob/living/simple_mob/vore/aggressive/rat/pet + name = "pet rat" + ai_holder_type = /datum/ai_holder/simple_mob/retaliate + +/mob/living/simple_mob/vore/aggressive/rat/pet/Initialize() + .=..() + + var/chance = rand(1,101) + switch(chance) + if(1 to 50) + name = "Ratthew" + desc = "When this oversized rodent and its sibling were officially adopted by Nanotrasen, a poll for a name was held. \ + When said poll elected the name of one of station's altevian crewmembers twice in a row, ethics commitee stepped in. \ + Then the name of ethics officer was elected. Ultimately, after a dozen or so names involving people with ratlike qualities, \ + mental or physical, were removed from options as names, he was named Ratthew. Even though some still remember him as mouse number one." + if(51 to 100) + name = ";help maint" + desc = "While the other of the two trash rat siblings was named based on the poll, this one had misfortune of having official announcement \ + of her poll results be interrupted by someone yelling on radio over an encounter with this rodent, earning her the name. Perhaps if not for \ + this cruel twist of fate, she really would be named Julius Cheesar, after the name Jeremy was eliminated from the poll, considering nine hundred \ + and eighty four rodent pets were named that already." + if(101) + name = "Brick" + desc = "Despite some conspiracy theories, this rat is not younger sibling of the other two rats commonly found in local trashpits, nor is it a \ + younger sibling of any ratlike crew. Truth be told, it's just some random rat that barely ever shows up, yet people demanded it be given a name as well." + maxHealth = 1750 + health = 1750 + melee_damage_lower = 1 + melee_damage_upper = 2 + /datum/say_list/rat speak = list("Squeek!","SQUEEK!","Squeek?") emote_hear = list("squeeks","squeaks","squiks") diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 8b236f3926..9c04c08717 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -616,6 +616,12 @@ var/datum/language/keylang = GLOB.all_languages[client.prefs.language_custom_keys[key]] if(keylang) new_character.language_keys[key] = keylang + // VOREStation Add: Preferred Language Setting; + if(client.prefs.preferred_language) // Do we have a preferred language? + var/datum/language/def_lang = GLOB.all_languages[client.prefs.preferred_language] + if(def_lang) + new_character.default_language = def_lang + // VOREStation Add End // And uncomment this, too. //new_character.dna.UpdateSE() diff --git a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm index a0c5181598..15141bc6b1 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear_vr.dm @@ -908,4 +908,12 @@ icon = 'icons/mob/vore/ears_vr.dmi' icon_state = "single-side-horn" do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/zaprat + name = "zaprat ears (dual-color)" + icon = 'icons/mob/vore/ears_32x64.dmi' + icon_state = "zaprat" + extra_overlay = "zaprat-tips" + do_colouration = 1 color_blend_mode = ICON_MULTIPLY \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm index ab2f41cef4..e5d0ee2a38 100644 --- a/code/modules/mob/new_player/sprite_accessories_extra_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_extra_vr.dm @@ -901,4 +901,55 @@ icon = 'icons/mob/human_races/markings_vr.dmi' icon_state = "unathi_blocky_head_eyes" color_blend_mode = ICON_MULTIPLY - body_parts = list(BP_HEAD) \ No newline at end of file + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/vr_manedwolf1 + name = "Maned Wolf Primary Markings" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "manedwolf1" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD,BP_TORSO,BP_R_ARM,BP_L_ARM,BP_R_HAND,BP_L_HAND,BP_R_LEG,BP_L_LEG,BP_R_FOOT,BP_L_FOOT) + +/datum/sprite_accessory/marking/vr_manedwolf2 + name = "Maned Wolf Secondary Markings" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "manedwolf2" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD,BP_TORSO,BP_GROIN) + +/datum/sprite_accessory/marking/vr_head_paint_front + name = "Head Paint Front" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "paintfront" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/vr_head_paint_back + name = "Head Paint" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "paint" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/vr_sect_drone + name = "Sect Drone Bodytype" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "sectdrone" + color_blend_mode = ICON_MULTIPLY + hide_body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD) + body_parts = list(BP_L_FOOT,BP_R_FOOT,BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_L_HAND,BP_R_HAND,BP_GROIN,BP_TORSO,BP_HEAD) + organ_override = TRUE + +/datum/sprite_accessory/marking/vr_sect_drone_eyes + name = "Sect Drone Eyes" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "sectdrone_eyes" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) + +/datum/sprite_accessory/marking/vr_zaprat_cheeks + name = "Cheek Marks" + icon = 'icons/mob/human_races/markings_vr.dmi' + icon_state = "zaprat_cheeks" + color_blend_mode = ICON_MULTIPLY + body_parts = list(BP_HEAD) diff --git a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm index 33dab91447..3c42a16a65 100644 --- a/code/modules/mob/new_player/sprite_accessories_tail_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_tail_vr.dm @@ -12,6 +12,7 @@ species_allowed = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_TESHARI, SPECIES_NEVREAN, SPECIES_AKULA, SPECIES_SERGAL, SPECIES_FENNEC, SPECIES_ZORREN_HIGH, SPECIES_VULPKANIN, SPECIES_XENOCHIMERA, SPECIES_XENOHYBRID, SPECIES_VASILISSAN, SPECIES_RAPALA, SPECIES_PROTEAN, SPECIES_ALRAUNE, SPECIES_WEREBEAST, SPECIES_SHADEKIN, SPECIES_SHADEKIN_CREW, SPECIES_ALTEVIAN) //This lets all races use var/list/lower_layer_dirs = list(SOUTH) + var/icon_loaf = null /datum/sprite_accessory/tail/New() . = ..() @@ -1328,6 +1329,14 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/tail/sectdrone_tail + name = "Sect Drone Tail (To use with bodytype-marking)" + icon = 'icons/mob/vore/tails_vr.dmi' + icon_state = "sectdrone_tail" + extra_overlay = "sectdrone_tail_mark" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + //LONG TAILS ARE NOT TAUR BUTTS >:O /datum/sprite_accessory/tail/longtail name = "You should not see this..." @@ -1346,3 +1355,16 @@ /datum/sprite_accessory/tail/longtail/shadekin_tail/shadekin_tail_long name = "Shadekin Long Tail" icon_state = "shadekin_long_s" + +/datum/sprite_accessory/tail/longtail/zaprat + name = "bolt-shaped tail, dual color" + icon = 'icons/mob/vore/taurs_vr.dmi' + icon_state = "zaprat_s" + extra_overlay = "zaprat_markings" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/tail/longtail/zaprat/heart + name = "heart-bolt-shaped tail, dual color" + icon_state = "zaprat_heart_s" + extra_overlay = "zaprat_heart_markings" diff --git a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm index e014345a9a..2a290f488d 100644 --- a/code/modules/mob/new_player/sprite_accessories_taur_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_taur_vr.dm @@ -56,11 +56,15 @@ under_sprites = 'icons/mob/taursuits_wolf_vr.dmi' suit_sprites = 'icons/mob/taursuits_wolf_vr.dmi' icon_sprite_tag = "wolf" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 4 /datum/sprite_accessory/tail/taur/wolf/fatwolf name = "Fat Wolf (Taur)" icon_state = "fatwolf_s" //icon_sprite_tag = "wolf" //This could be modified later. + loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/wolf_wag name = "Wolf (Taur, Fat vwag)" @@ -76,19 +80,22 @@ /datum/sprite_accessory/tail/taur/wolf/fatwolf_2c name = "Fat Wolf 3-color (Taur)" + icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit icon_state = "fatwolf_s" extra_overlay = "fatwolf_markings" - extra_overlay2 = "wolf_markings_2" + extra_overlay2 = "fatwolf_markings_2" //CHOMPEdit //icon_sprite_tag = "fatwolf2c" + loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/wolf_2c_wag name = "Wolf 3-color (Taur, Fat vwag)" + icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit icon_state = "wolf_s" extra_overlay = "wolf_markings" extra_overlay2 = "wolf_markings_2" ani_state = "fatwolf_s" extra_overlay_w = "fatwolf_markings" - extra_overlay2_w = "wolf_markings_2" + extra_overlay2_w = "fatwolf_markings_2" //CHOMPEdit /datum/sprite_accessory/tail/taur/wolf/synthwolf name = "SynthWolf dual-color (Taur)" @@ -96,12 +103,14 @@ extra_overlay = "synthwolf_markings" extra_overlay2 = "synthwolf_glow" //icon_sprite_tag = "synthwolf" + loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/fatsynthwolf name = "Fat SynthWolf dual-color (Taur)" icon_state = "fatsynthwolf_s" extra_overlay = "fatsynthwolf_markings" extra_overlay2 = "fatsynthwolf_glow" + loaf_offset = 3 /datum/sprite_accessory/tail/taur/wolf/fatsynthwolf_wag name = "SynthWolf dual-color (Taur, Fat vwag)" @@ -118,6 +127,9 @@ extra_overlay = "skunk_markings" extra_overlay2 = "skunk_markings_2" icon_sprite_tag = "skunk" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/naga name = "Naga (Taur)" @@ -165,12 +177,36 @@ extra_overlay = "altnaga_markings" //icon_sprite_tag = "altnaga2c" +/datum/sprite_accessory/tail/taur/naga/alt_3c + name = "Naga alt style tri-color (Taur)" + suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' + icon_state = "altnaga_s" + extra_overlay = "altnaga_markings" + extra_overlay2 = "altnaga_stripes" + +/datum/sprite_accessory/tail/taur/naga/alt_3c_rattler + name = "Naga alt style tri-color, rattler (Taur)" + suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' + icon_state = "altnaga_s" + extra_overlay = "altnaga_markings" + extra_overlay2 = "altnaga_rattler" + +/datum/sprite_accessory/tail/taur/naga/alt_3c_tailmaw + name = "Naga alt style tri-color, tailmaw (Taur)" + suit_sprites = 'icons/mob/taursuits_naga_alt_vr.dmi' + icon_state = "altnagatailmaw_s" + extra_overlay = "altnagatailmaw_markings" + extra_overlay2 = "altnagatailmaw_eyes" + /datum/sprite_accessory/tail/taur/horse name = "Horse (Taur)" icon_state = "horse_s" under_sprites = 'icons/mob/taursuits_horse_vr.dmi' suit_sprites = 'icons/mob/taursuits_horse_vr.dmi' icon_sprite_tag = "horse" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 4 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!" @@ -193,12 +229,18 @@ extra_overlay = "synthhorse_markings" extra_overlay2 = "synthhorse_glow" //icon_sprite_tag = "synthhorse" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/cow name = "Cow (Taur)" icon_state = "cow_s" suit_sprites = 'icons/mob/taursuits_cow_vr.dmi' icon_sprite_tag = "cow" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 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!" @@ -221,6 +263,9 @@ extra_overlay = "deer_markings" suit_sprites = 'icons/mob/taursuits_deer_vr.dmi' icon_sprite_tag = "deer" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 6 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!" @@ -240,12 +285,19 @@ /datum/sprite_accessory/tail/taur/lizard name = "Lizard (Taur)" icon_state = "lizard_s" - suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi' +// suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi' ///Chomp edit + suit_sprites = 'icons/mob/taursuits_lizard_ch.dmi' icon_sprite_tag = "lizard" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 5 /datum/sprite_accessory/tail/taur/lizard/fatlizard name = "Fat Lizard (Taur)" icon_state = "fatlizard_s" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/lizard/lizard_wag name = "Lizard (Taur, Fat vwag)" @@ -257,11 +309,17 @@ icon_state = "lizard_s" extra_overlay = "lizard_markings" //icon_sprite_tag = "lizard2c" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 5 /datum/sprite_accessory/tail/taur/lizard/fatlizard_2c name = "Fat Lizard (Taur, dual-color)" icon_state = "fatlizard_s" extra_overlay = "fatlizard_markings" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/lizard/lizard_2c_wag name = "Fat Lizard (Taur, dual-color, Fat vwag)" @@ -276,12 +334,18 @@ extra_overlay = "synthlizard_markings" extra_overlay2 = "synthlizard_glow" //icon_sprite_tag = "synthlizard" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/lizard/fatsynthlizard name = "Fat SynthLizard dual-color (Taur)" icon_state = "fatsynthlizard_s" extra_overlay = "fatsynthlizard_markings" extra_overlay2 = "fatsynthlizard_glow" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/lizard/synthlizard_wag name = "SynthLizard dual-color (Taur, Fat vwag)" @@ -345,16 +409,25 @@ icon_state = "feline_s" suit_sprites = 'icons/mob/taursuits_feline_vr.dmi' icon_sprite_tag = "feline" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 5 /datum/sprite_accessory/tail/taur/fatfeline name = "Fat Feline (Taur)" icon_state = "fatfeline_s" //icon_sprite_tag = "fatfeline" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/fatfeline_wag name = "Fat Feline (Taur, Fat vwag)" icon_state = "fatfeline_s" ani_state = "fatfeline_w" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/feline_2c name = "Feline 3-color (Taur)" @@ -362,22 +435,30 @@ extra_overlay = "feline_markings" extra_overlay2 = "feline_markings_2" //icon_sprite_tag = "feline2c" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' /datum/sprite_accessory/tail/taur/feline/fatfeline_2c name = "Fat Feline 3-color (Taur)" + icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit icon_state = "fatfeline_s" extra_overlay = "fatfeline_markings" - extra_overlay2 = "feline_markings_2" + extra_overlay2 = "fatfeline_markings_2" //CHOMPEdit //icon_sprite_tag = "fatfeline2c" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/feline_2c_wag name = "Feline 3-color (Taur, Fat vwag)" + icon = 'icons/mob/vore/taurs_ch.dmi' //CHOMPEdit icon_state = "feline_s" extra_overlay = "feline_markings" extra_overlay2 = "feline_markings_2" ani_state = "fatfeline_s" extra_overlay_w = "fatfeline_markings" - extra_overlay2_w = "feline_markings_2" + extra_overlay2_w = "fatfeline_markings_2" //CHOMPEdit + loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/synthfeline name = "SynthFeline dual-color (Taur)" @@ -385,12 +466,18 @@ extra_overlay = "synthfeline_markings" extra_overlay2 = "synthfeline_glow" //icon_sprite_tag = "synthfeline" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/fatsynthfeline name = "Fat SynthFeline dual-color (Taur)" icon_state = "fatsynthfeline_s" extra_overlay = "fatsynthfeline_markings" extra_overlay2 = "fatsynthfeline_glow" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 3 /datum/sprite_accessory/tail/taur/feline/synthfeline_wag name = "SynthFeline dual-color (Taur, Fat vwag)" @@ -470,16 +557,20 @@ name = "Drake (Taur)" icon_state = "drake_s" extra_overlay = "drake_markings" - suit_sprites = 'icons/mob/taursuits_drake_vr.dmi' +/// suit_sprites = 'icons/mob/taursuits_drake_vr.dmi' ///Chomp edit + suit_sprites = 'icons/mob/taursuits_drake_ch.dmi' icon_sprite_tag = "drake" - can_loaf = TRUE // VOREStation Edit: Taur Loafing - loaf_offset = 6 // VOREStation Edit: Taur Loafing + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 6 /datum/sprite_accessory/tail/taur/drake/fat name = "Fat Drake (Taur)" icon_state = "fatdrake_s" extra_overlay = "fatdrake_markings" - can_loaf = FALSE + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 6 /datum/sprite_accessory/tail/taur/drake/drake_vwag name = "Drake (Taur, Fat vwag)" @@ -487,8 +578,7 @@ extra_overlay = "drake_markings" ani_state = "fatdrake_s" extra_overlay_w = "fatdrake_markings" - can_loaf = FALSE - + can_loaf = TRUE /datum/sprite_accessory/tail/taur/otie name = "Otie (Taur)" @@ -497,6 +587,9 @@ extra_overlay2 = "otie_markings_2" suit_sprites = 'icons/mob/taursuits_otie_vr.dmi' icon_sprite_tag = "otie" + can_loaf = TRUE + icon_loaf = 'icons/mob/vore/taurs_vr_loaf.dmi' + loaf_offset = 5 /datum/sprite_accessory/tail/taur/alraune/alraune_2c name = "Alraune (dual color)" @@ -603,12 +696,14 @@ name = "Feline (wickedtemp) (Taur)" icon_state = "tempest_s" ckeys_allowed = list("wickedtemp") + can_loaf = FALSE //silencedmp5a5: Serdykov Antoz /datum/sprite_accessory/tail/taur/wolf/serdy name = "CyberSerdy (silencedmp5a5) (Taur)" icon_state = "serdy_s" ckeys_allowed = list("silencedmp5a5") + can_loaf = FALSE //liquidfirefly: Ariana Scol /datum/sprite_accessory/tail/taur/centipede @@ -679,7 +774,7 @@ suit_sprites = 'icons/mob/taursuits_noodle_vr.dmi' clip_mask_state = "taur_clip_mask_noodle" icon_sprite_tag = "noodle" - +/* CHOMPEdit - removed as a sprite accessory of the same name already exists for us, and having this here stops it from registering as a sprite accessory. /datum/sprite_accessory/tail/taur/sect_drone name = "Sect Drone (Taur)" icon_state = "sect_drone" @@ -700,11 +795,12 @@ 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/sect_drone/fat name = "Fat Sect Drone (Taur)" icon_state = "fat_sect_drone" extra_overlay = "fat_sect_drone_markings" + icon_sprite_tag = "sect_drone" //CHOMPEdit addition /datum/sprite_accessory/tail/taur/sect_drone/drone_wag name = "Sect Drone (Taur, Fat vwag)" @@ -712,6 +808,7 @@ extra_overlay = "sect_drone_markings" ani_state = "fat_sect_drone" extra_overlay_w = "fat_sect_drone_markings" + icon_sprite_tag = "sect_drone" //CHOMPEdit addition /datum/sprite_accessory/tail/taur/giantspider_colorable//these are honestly better fit for vass icontypes whoops name = "Giant Spider dual-color (Taur)" @@ -838,3 +935,30 @@ 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/ant + name = "Ant (dual color)" + icon_state = "ant_s" + extra_overlay = "ant_markings" + clip_mask_state = "taur_clip_mask_wasp" + icon_sprite_tag = "wasp" + + 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!" + msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor!" + + 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/naga/fat + name = "Naga (Taur, Fat, dual color)" + icon_state = "fatnaga_s" + extra_overlay = "fatnaga_markings" diff --git a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm index 35753bf2ed..aba84d495b 100644 --- a/code/modules/mob/new_player/sprite_accessories_wing_vr.dm +++ b/code/modules/mob/new_player/sprite_accessories_wing_vr.dm @@ -311,3 +311,11 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY extra_overlay = "snail_shell_markings" + +/datum/sprite_accessory/wing/sectdrone_wing //We should some day make a variable to make some wings not be able to fly + name = "Sect drone wings (To use with bodytype marking)" + desc = "" + icon = 'icons/mob/vore/wings_vr.dmi' + icon_state = "sectdrone_wing" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm index 4fb71ff02f..d3da39a343 100644 --- a/code/modules/overmap/sectors.dm +++ b/code/modules/overmap/sectors.dm @@ -16,6 +16,11 @@ var/real_desc /// Icon_state prior to being scanned if !known var/unknown_state = "field" + //Set to null. Exists only for admins/GMs when spawning overmap objects. + //We need these as normal functionality relies on initial() which do not work at all with GM shenanigans. + var/real_icon //Holds the .dmi file for icon_state to pick from. Leave null if using standard overmap.dmi + var/real_icon_state //actual icon name to be used. Find examples inside 'icons/obj/overmap.dmi' + var/real_color var/list/map_z = list() var/list/extra_z_levels //if you need to manually insist that these z-levels are part of this sector, for things like edge-of-map step trigger transitions rather than multi-z complexes @@ -84,6 +89,19 @@ //at the moment only used for the OM location renamer. Initializing here in case we want shuttles incl as well in future. Also proc definition convenience. visitable_overmap_object_instances |= src +//To be used by GMs and calling through var edits for the overmap object +//It causes the overmap object to "reinitialize" its real_appearance for known = FALSE objects +//Includes an argument that allows GMs/Admins to set a previously known sector to unknown. Set to any value except 0/False/Null to activate +/obj/effect/overmap/visitable/proc/gmtools_update_omobject_vars(var/setToHidden) + real_appearance = image(real_icon, src, real_icon_state) + real_appearance.override = TRUE + if(setToHidden && known) // + name = unknown_name + icon = 'icons/obj/overmap.dmi' + icon_state = unknown_state + color = null + desc = "Scan this to find out more information." + known = FALSE // You generally shouldn't destroy these. @@ -141,8 +159,16 @@ name = real_name else name = initial(name) - icon_state = initial(icon_state) - color = initial(color) + if(real_icon_state) //Only true when GMs/Admins play with the object + if(real_icon) //Only true if GMs/Admins want a non-standard icon from outside 'icons/obj/overmap.dmi' + icon = real_icon + icon_state = real_icon_state + else + icon_state = initial(icon_state) + if(real_color) + color = real_color + else + color = initial(color) if(real_desc) desc = real_desc else diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 58f8ee0275..55a7d4d2b9 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -9,7 +9,10 @@ density = FALSE unacidable = TRUE use_power = USE_POWER_OFF - light_range = 4 + light_on = TRUE + light_range = 2 + light_power = 0.5 + light_color = "#5BA8FF" var/obj/machinery/field_generator/FG1 = null var/obj/machinery/field_generator/FG2 = null var/list/shockdirs diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index ec29e08efa..8d892b2756 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -36,6 +36,10 @@ field_generator power level display var/gen_power_draw = 5500 //power needed per generator var/field_power_draw = 2000 //power needed per field object + var/light_range_on = 3 + var/light_power_on = 1 + light_color = "#5BA8FF" + /obj/machinery/field_generator/update_icon() cut_overlays() @@ -177,6 +181,7 @@ field_generator power level display active = 0 spawn(1) src.cleanup() + set_light(0) update_icon() /obj/machinery/field_generator/proc/turn_on() @@ -189,6 +194,7 @@ field_generator power level display update_icon() if(warming_up >= 3) start_fields() + set_light(light_range_on, light_power_on) update_icon() diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 45d2d5aad5..393122d4e4 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -273,7 +273,7 @@ /obj/item/ammo_casing/a12g name = "shotgun slug" - desc = "A 12 gauge slug." + desc = "A 12 gauge slug shell." icon_state = "slshell" caliber = "12g" projectile_type = /obj/item/projectile/bullet/shotgun @@ -281,9 +281,9 @@ /obj/item/ammo_casing/a12g/pellet name = "shotgun shell" - desc = "A 12 gauge shell." + desc = "A 12 gauge buckshot shell." icon_state = "gshell" - projectile_type = /obj/item/projectile/bullet/pellet/shotgun + projectile_type = /obj/item/projectile/scatter/shotgun //formerly /obj/item/projectile/bullet/pellet/shotgun /obj/item/ammo_casing/a12g/blank name = "shotgun shell" @@ -301,7 +301,7 @@ /obj/item/ammo_casing/a12g/beanbag name = "beanbag shell" - desc = "A beanbag shell." + desc = "A 12 gauge beanbag shell." icon_state = "bshell" projectile_type = /obj/item/projectile/bullet/shotgun/beanbag matter = list(MAT_STEEL = 180) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 9597deb00d..40be78330b 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -51,20 +51,48 @@ tracer_type = /obj/effect/projectile/tracer/laser_blue impact_type = /obj/effect/projectile/impact/laser_blue +/obj/item/projectile/beam/weaklaser/ion + damage_type = ELECTROMAG + light_color = "#00CCFF" + muzzle_type = /obj/effect/projectile/muzzle/laser_em + tracer_type = /obj/effect/projectile/tracer/laser_em + impact_type = /obj/effect/projectile/impact/laser_em + /obj/item/projectile/beam/smalllaser damage = 25 hud_state = "laser" +/obj/item/projectile/beam/smalllaser/ion + damage_type = ELECTROMAG + light_color = "#00CCFF" + muzzle_type = /obj/effect/projectile/muzzle/laser_em + tracer_type = /obj/effect/projectile/tracer/laser_em + impact_type = /obj/effect/projectile/impact/laser_em + /obj/item/projectile/beam/burstlaser damage = 30 armor_penetration = 10 hud_state = "laser" +/obj/item/projectile/beam/burstlaser/ion + damage_type = ELECTROMAG + light_color = "#00CCFF" + muzzle_type = /obj/effect/projectile/muzzle/laser_em + tracer_type = /obj/effect/projectile/tracer/laser_em + impact_type = /obj/effect/projectile/impact/laser_em + /obj/item/projectile/beam/midlaser damage = 40 armor_penetration = 10 hud_state = "laser" +/obj/item/projectile/beam/midlaser/ion + damage_type = ELECTROMAG + light_color = "#00CCFF" + muzzle_type = /obj/effect/projectile/muzzle/laser_em + tracer_type = /obj/effect/projectile/tracer/laser_em + impact_type = /obj/effect/projectile/impact/laser_em + /obj/item/projectile/beam/mininglaser name = "pulsating laser" damage = 10 @@ -104,6 +132,13 @@ tracer_type = /obj/effect/projectile/tracer/emitter impact_type = /obj/effect/projectile/impact/emitter +/obj/item/projectile/beam/heavylaser/ion + damage_type = ELECTROMAG + light_color = "#00CCFF" + muzzle_type = /obj/effect/projectile/muzzle/laser_em + tracer_type = /obj/effect/projectile/tracer/laser_em + impact_type = /obj/effect/projectile/impact/laser_em + /obj/item/projectile/beam/heavylaser/cannon damage = 80 armor_penetration = 50 diff --git a/code/modules/projectiles/projectile/scatter.dm b/code/modules/projectiles/projectile/scatter.dm index b3900f8429..259cd82da4 100644 --- a/code/modules/projectiles/projectile/scatter.dm +++ b/code/modules/projectiles/projectile/scatter.dm @@ -86,6 +86,21 @@ * Ballistic */ +/obj/item/projectile/scatter/shotgun + name = "Shotgun scatter projectile" + hud_state = "shotgun_buckshot" + spread_submunition_damage = FALSE + submunition_spread_max = 60 + submunition_spread_min = 50 + submunitions = list( + /obj/item/projectile/bullet/shotgun/scatterprojectile = 6 + ) + +/obj/item/projectile/bullet/shotgun/scatterprojectile + name = "pellet" + fire_sound = 'sound/weapons/Gunshot_shotgun.ogg' + damage = 12 + armor_penetration = 0 /obj/item/projectile/scatter/flechette damage = 60 diff --git a/code/modules/reagents/reactions/instant/instant_vr.dm b/code/modules/reagents/reactions/instant/instant_vr.dm index 879dba565f..8092e25767 100644 --- a/code/modules/reagents/reactions/instant/instant_vr.dm +++ b/code/modules/reagents/reactions/instant/instant_vr.dm @@ -163,6 +163,20 @@ required_reagents = list("carbon" = 3, "iron" = 1, "nitrogen" = 3) result_amount = 7 +/decl/chemical_reaction/instant/lipozilase + name = "Lipozilase" + id = "Lipozilase" + result = "lipozilase" + required_reagents = list("lipozine" = 1, "diethylamine" = 1) + result_amount = 2 + +/decl/chemical_reaction/instant/lipostipo + name = "Lipostipo" + id = "Lipostipo" + result = "lipostipo" + required_reagents = list("lipozine" = 1, "nutriment" = 1, "fluorine" = 1) + result_amount = 3 + /////////////////////////////////////////////////////////////////////////////////// /// Reagent colonies. /decl/chemical_reaction/instant/meatcolony diff --git a/code/modules/reagents/reagents/food_drinks.dm b/code/modules/reagents/reagents/food_drinks.dm index c530dbc1e4..a5486708a5 100644 --- a/code/modules/reagents/reagents/food_drinks.dm +++ b/code/modules/reagents/reagents/food_drinks.dm @@ -435,6 +435,7 @@ reagent_state = SOLID nutriment_factor = 5 color = "#302000" + allergen_type = ALLERGEN_CHOCOLATE /datum/reagent/nutriment/chocolate name = "Chocolate" @@ -444,6 +445,7 @@ color = "#582815" nutriment_factor = 5 taste_mult = 1.3 + allergen_type = ALLERGEN_CHOCOLATE /datum/reagent/nutriment/instantjuice name = "Juice Powder" @@ -691,6 +693,7 @@ description = "A dry mix for making delicious brownies." reagent_state = SOLID color = "#441a03" + allergen_type = ALLERGEN_CHOCOLATE /datum/reagent/cakebatter name = "Cake Batter" @@ -1220,6 +1223,7 @@ glass_name = "chocolate milk" glass_desc = "Deliciously fattening!" + allergen_type = ALLERGEN_CHOCOLATE /datum/reagent/drink/milk/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() @@ -1660,6 +1664,7 @@ cup_icon_state = "cup_coco" cup_name = "cup of hot chocolate" cup_desc = "Made with love! And cocoa beans." + allergen_type = ALLERGEN_CHOCOLATE /datum/reagent/drink/soda/sodawater name = "Soda Water" @@ -1834,7 +1839,7 @@ glass_name = "Chocolate Milkshake" glass_desc = "A refreshing chocolate milkshake, just like mom used to make." - allergen_type = ALLERGEN_DAIRY //Made with dairy products + allergen_type = ALLERGEN_DAIRY|ALLERGEN_CHOCOLATE //Made with dairy products /datum/reagent/drink/milkshake/berryshake name = "Berry Milkshake" @@ -4517,10 +4522,11 @@ /datum/reagent/ethanol/deathbell/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() - if(dose * strength >= strength) // Early warning - M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects. - if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional. - M.slurring = max(M.slurring, 30) + if(M.species.robo_ethanol_drunk || !(M.isSynthetic())) + if(dose * strength >= strength) // Early warning + M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects. + if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional. + M.slurring = max(M.slurring, 30) /datum/reagent/nutriment/magicdust name = "Magic Dust" diff --git a/code/modules/reagents/reagents/medicine_vr.dm b/code/modules/reagents/reagents/medicine_vr.dm index eb7adb6337..3809d02121 100644 --- a/code/modules/reagents/reagents/medicine_vr.dm +++ b/code/modules/reagents/reagents/medicine_vr.dm @@ -110,4 +110,32 @@ if(alien == IS_DIONA) return if(prob(10)) //Miniscule chance of removing some toxins. - M.adjustToxLoss(-10 * removed) \ No newline at end of file + M.adjustToxLoss(-10 * removed) + +/datum/reagent/lipozilase // The anti-nutriment that rapidly removes weight. + name = "Lipozilase" + id = "lipozilase" + description = "A chemical compound that causes a dangerously powerful fat-burning reaction." + taste_description = "blandness" + reagent_state = LIQUID + color = "#47AD6D" + overdose = REAGENTS_OVERDOSE + +/datum/reagent/lipozilase/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.adjust_nutrition(-20 * removed) + if(M.weight > 50) + M.weight -= 0.3 + +/datum/reagent/lipostipo // The drug that rapidly increases weight. + name = "Lipostipo" + id = "lipostipo" + description = "A chemical compound that causes a dangerously powerful fat-adding reaction." + taste_description = "blubber" + reagent_state = LIQUID + color = "#61731C" + overdose = REAGENTS_OVERDOSE + +/datum/reagent/lipostipo/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.adjust_nutrition(-20 * removed) + if(M.weight < 500) + M.weight += 0.3 diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 1996a71358..76ff255292 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -207,6 +207,7 @@ var/position = 0 // 0 off, -1 reverse, 1 forward var/last_pos = -1 // last direction setting var/operated = 1 // true if just operated + var/oneway = 0 // Voreadd: One way levels mid-round! var/id = "" // must match conveyor IDs to control them @@ -265,7 +266,7 @@ return if(position == 0) - if(last_pos < 0) + if(last_pos < 0 || oneway == 1) position = 1 last_pos = 0 else @@ -315,22 +316,23 @@ conveyors += C return + if(istype(I, /obj/item/weapon/tool/wrench)) + if(panel_open) + if(oneway == 1) + to_chat(user, "You set the switch to two way operation.") + oneway = 0 + playsound(src, I.usesound, 50, 1) + return + else + to_chat(user, "You set the switch to one way operation.") + oneway = 1 + playsound(src, I.usesound, 50, 1) + return + /obj/machinery/conveyor_switch/oneway - var/convdir = 1 //Set to 1 or -1 depending on which way you want the convayor to go. (In other words keep at 1 and set the proper dir on the belts.) - desc = "A conveyor control switch. It appears to only go in one direction." + oneway = 1 -// attack with hand, switch position -/obj/machinery/conveyor_switch/oneway/attack_hand(mob/user) - if(position == 0) - position = convdir - else - position = 0 - - operated = 1 - update() - - // find any switches with same id as this one, and set their positions to match us - for(var/obj/machinery/conveyor_switch/S in machines) - if(S.id == src.id) - S.position = position - S.update() +/obj/machinery/conveyor_switch/examine() + .=..() + if(oneway == 1) + . += " It appears to only go in one direction." diff --git a/code/modules/resleeving/autoresleever.dm b/code/modules/resleeving/autoresleever.dm index 15516e35b8..1afd785a65 100644 --- a/code/modules/resleeving/autoresleever.dm +++ b/code/modules/resleeving/autoresleever.dm @@ -172,6 +172,12 @@ var/datum/language/keylang = GLOB.all_languages[ghost_client.prefs.language_custom_keys[key]] if(keylang) new_character.language_keys[key] = keylang + // VOREStation Add: Preferred Language Setting; + if(ghost_client.prefs.preferred_language) // Do we have a preferred language? + var/datum/language/def_lang = GLOB.all_languages[ghost_client.prefs.preferred_language] + if(def_lang) + new_character.default_language = def_lang + // VOREStation Add End //If desired, apply equipment. if(equip_body) diff --git a/code/modules/tension/tension.dm b/code/modules/tension/tension.dm index aa95662849..1bef202597 100644 --- a/code/modules/tension/tension.dm +++ b/code/modules/tension/tension.dm @@ -28,7 +28,7 @@ potential_damage = (melee_damage_lower + melee_damage_upper) / 2 // Treat potential_damage as estimated DPS. If the enemy attacks twice as fast as usual, it will double the number. - potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay) + potential_damage *= 1 SECOND / (base_attack_cooldown + melee_attack_delay + injury_level) // VOREStation Add: Injury level should affect potential damage, thereby increasing the threat level else var/obj/item/projectile/P = new projectiletype(src) if(P.nodamage || P.taser_effect) // Tasers are somewhat less scary. @@ -41,7 +41,7 @@ potential_damage += P.agony / 2 qdel(P) - potential_damage *= 1 SECOND / (base_attack_cooldown + ranged_attack_delay) + potential_damage *= 1 SECOND / (base_attack_cooldown + ranged_attack_delay + injury_level) // VOREStation Add: Injury level should affect potential damage, thereby increasing the threat level // Special attacks are ultra-specific to the mob so a generic threat assessment isn't really possible. diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index effd283c13..0acc4626b1 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -69,7 +69,7 @@ var/list/ventcrawl_machinery = list( return 1 if(isanimal(src)) var/mob/living/simple_mob/S = src - if(carried_item == S.mobcard) //VOREStation Edit + if(carried_item == S.myid) //VOREStation Edit return 1 //VOREStation Edit //Try to find it in our allowed list (istype includes subtypes) var/listed = FALSE diff --git a/code/modules/vore/eating/inbelly_spawn.dm b/code/modules/vore/eating/inbelly_spawn.dm index 207f3ca4e0..50c2c3168b 100644 --- a/code/modules/vore/eating/inbelly_spawn.dm +++ b/code/modules/vore/eating/inbelly_spawn.dm @@ -166,6 +166,12 @@ Please do not abuse this ability. var/datum/language/keylang = GLOB.all_languages[prey.prefs.language_custom_keys[key]] if(keylang) new_character.language_keys[key] = keylang + // VOREStation Add: Preferred Language Setting; + if(prey.prefs.preferred_language) // Do we have a preferred language? + var/datum/language/def_lang = GLOB.all_languages[prey.prefs.preferred_language] + if(def_lang) + new_character.default_language = def_lang + // VOREStation Add End new_character.regenerate_icons() @@ -179,4 +185,4 @@ Please do not abuse this ability. log_admin("[prey] (as [new_character.real_name] has spawned inside one of [pred]'s bellies.") // Log it. Avoid abuse. message_admins("[prey] (as [new_character.real_name] has spawned inside one of [pred]'s bellies.", 1) - return new_character // incase its ever needed \ No newline at end of file + return new_character // incase its ever needed diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm index f398021b74..af64cb097e 100644 --- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm @@ -2563,3 +2563,75 @@ Departamental Swimsuits, for general use icon_override = 'icons/vore/custom_onmob_vr.dmi' item_state = "perrinrobes_s" body_parts_covered = UPPER_TORSO|LOWER_TORSO + +//Fuackwit422: Zera Livanne +/obj/item/clothing/suit/storage/toggle/labcoat/fluff/zera + name = "Zera's Labcloak" + desc = "Zera's custom-designed lab-coat and cloak hybrid. Designed to perfectly align with OSHA and NT's Health and Safety regulations, while also allowing her to completely ignore all that if she really wanted." + + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "zera_labcloak" + + icon_override = 'icons/vore/custom_clothes_vr.dmi' + item_state = "zera_labcloak" + +/obj/item/clothing/suit/storage/toggle/labcoat/fluff/zera/toggle() + set name = "Toggle Coat Buttons" + set category = "Object" + set src in usr + if(!usr.canmove || usr.stat || usr.restrained()) + return 0 + + if(open == 1) //Will check whether icon state is currently set to the "open" or "closed" state and switch it around with a message to the user + open = 0 + icon_state = initial(icon_state) + item_state = initial(item_state) + flags_inv = HIDETIE|HIDEHOLSTER + to_chat(usr, "You button up the coat.") + else if(open == 0) + open = 1 + icon_state = "[icon_state]_open" + item_state = "[item_state]_open" + flags_inv = HIDEHOLSTER + to_chat(usr, "You unbutton the coat.") + else //in case some goofy admin switches icon states around without switching the icon_open or icon_closed + to_chat(usr, "You attempt to button-up the velcro on your [src], before promptly realising how silly you are.") + return + update_clothing_icon() //so our overlays update + +/obj/item/clothing/head/welding/fluff/zera + name = "White Welding Mask" + desc = "It's a white welding mask. Zera likes it because it matches her labcoat." + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + icon = 'icons/vore/custom_clothes_vr.dmi' + icon_override = 'icons/vore/custom_clothes_vr.dmi' + icon_state = "zera_weld" + item_state = "zera_weld_onmob" + flags_inv = (HIDEEYES) + body_parts_covered = HEAD|EYES + +/obj/item/clothing/head/welding/fluff/zera/toggle() //overriding this 'cause it only conceals the eyes - it's a hat, not a mask + set category = "Object" + set src in usr + + if(usr.canmove && !usr.stat && !usr.restrained()) + if(up) + up = !up + body_parts_covered |= (EYES) + flags_inv |= (HIDEEYES) + icon_state = "zera_weld" + item_state = "zera_weld_onmob" + to_chat(usr, "You flip the helmet down to protect your eyes.") + else + up = !up + body_parts_covered &= ~(EYES) + flags_inv &= ~(HIDEEYES) + icon_state = "zera_weld_up" + item_state = "zera_weld_up_onmob" + + to_chat(usr, "You push the helmet up out of your face.") + update_clothing_icon() //so our mob-overlays + if (ismob(loc)) //should allow masks to update when it is opened/closed + var/mob/M = loc + M.update_inv_wear_mask() + usr.update_action_buttons() diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index ffa557ef5d..2347fd3864 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1566,3 +1566,12 @@ /obj/item/weapon/dice/loaded/ceph/New() icon_state = "ceph_d6[rand(1,sides)]" + + +//abc123: Mira Nesyne +/obj/item/clothing/accessory/medal/silver/fluff/abc314 + name = "Health Service Achievement medal" + desc = "A small silver medal with the inscription \"For going above and beyond in the field.\" on it, along with the name Mira Nesyne." + + icon = 'icons/inventory/accessory/item.dmi' + icon_state = "silver" diff --git a/icons/_nanomaps/tether_nanomap_z1.png b/icons/_nanomaps/tether_nanomap_z1.png index cc281d1432..f6188b7881 100644 Binary files a/icons/_nanomaps/tether_nanomap_z1.png and b/icons/_nanomaps/tether_nanomap_z1.png differ diff --git a/icons/_nanomaps/tether_nanomap_z2.png b/icons/_nanomaps/tether_nanomap_z2.png index 5f1eacdb19..53492f77ee 100644 Binary files a/icons/_nanomaps/tether_nanomap_z2.png and b/icons/_nanomaps/tether_nanomap_z2.png differ diff --git a/icons/_nanomaps/tether_nanomap_z3.png b/icons/_nanomaps/tether_nanomap_z3.png index 09b99241f4..45438a40d9 100644 Binary files a/icons/_nanomaps/tether_nanomap_z3.png and b/icons/_nanomaps/tether_nanomap_z3.png differ diff --git a/icons/_nanomaps/tether_nanomap_z4.png b/icons/_nanomaps/tether_nanomap_z4.png index c2623219ee..510d22b3d6 100644 Binary files a/icons/_nanomaps/tether_nanomap_z4.png and b/icons/_nanomaps/tether_nanomap_z4.png differ diff --git a/icons/inventory/accessory/item.dmi b/icons/inventory/accessory/item.dmi index ddda9fff64..b17ed5c1e2 100644 Binary files a/icons/inventory/accessory/item.dmi and b/icons/inventory/accessory/item.dmi differ diff --git a/icons/inventory/accessory/mob.dmi b/icons/inventory/accessory/mob.dmi index 04030363ce..8858b2f580 100644 Binary files a/icons/inventory/accessory/mob.dmi and b/icons/inventory/accessory/mob.dmi differ diff --git a/icons/inventory/back/mob.dmi b/icons/inventory/back/mob.dmi index fac62128ec..2b311c0a24 100644 Binary files a/icons/inventory/back/mob.dmi and b/icons/inventory/back/mob.dmi differ diff --git a/icons/inventory/face/item_vr.dmi b/icons/inventory/face/item_vr.dmi index e8fe737655..cfa0381377 100644 Binary files a/icons/inventory/face/item_vr.dmi and b/icons/inventory/face/item_vr.dmi differ diff --git a/icons/inventory/face/mob_vr.dmi b/icons/inventory/face/mob_vr.dmi index 5181307aa3..6270461d76 100644 Binary files a/icons/inventory/face/mob_vr.dmi and b/icons/inventory/face/mob_vr.dmi differ diff --git a/icons/inventory/suit/mob_vox.dmi b/icons/inventory/suit/mob_vox.dmi index afb8a2a200..b2e41a9422 100644 Binary files a/icons/inventory/suit/mob_vox.dmi and b/icons/inventory/suit/mob_vox.dmi differ diff --git a/icons/mob/hud_jobs_vr.dmi b/icons/mob/hud_jobs_vr.dmi index 4a52481088..ca0df7de06 100644 Binary files a/icons/mob/hud_jobs_vr.dmi and b/icons/mob/hud_jobs_vr.dmi differ diff --git a/icons/mob/human_races/markings_vr.dmi b/icons/mob/human_races/markings_vr.dmi index 29442bf908..80f2d51020 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/items/lefthand_melee.dmi b/icons/mob/items/lefthand_melee.dmi index e965d64b43..da3401cced 100644 Binary files a/icons/mob/items/lefthand_melee.dmi and b/icons/mob/items/lefthand_melee.dmi differ diff --git a/icons/mob/items/righthand_melee.dmi b/icons/mob/items/righthand_melee.dmi index 3fee6cb6bd..fc8851a610 100644 Binary files a/icons/mob/items/righthand_melee.dmi and b/icons/mob/items/righthand_melee.dmi differ diff --git a/icons/mob/mobs_monsters/animal.dmi b/icons/mob/mobs_monsters/animal.dmi new file mode 100644 index 0000000000..38469f718f Binary files /dev/null and b/icons/mob/mobs_monsters/animal.dmi differ diff --git a/icons/mob/pai_vr.dmi b/icons/mob/pai_vr.dmi index 82f5faffe8..f6c153ff45 100644 Binary files a/icons/mob/pai_vr.dmi and b/icons/mob/pai_vr.dmi differ diff --git a/icons/mob/taursuits_drake_ch.dmi b/icons/mob/taursuits_drake_ch.dmi new file mode 100644 index 0000000000..e427140571 Binary files /dev/null and b/icons/mob/taursuits_drake_ch.dmi differ diff --git a/icons/mob/taursuits_lizard_ch.dmi b/icons/mob/taursuits_lizard_ch.dmi new file mode 100644 index 0000000000..f4385ef113 Binary files /dev/null and b/icons/mob/taursuits_lizard_ch.dmi differ diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi index bfec658879..1fca915bff 100644 Binary files a/icons/mob/taursuits_naga_vr.dmi and b/icons/mob/taursuits_naga_vr.dmi differ diff --git a/icons/mob/taursuits_wolf_vr.dmi b/icons/mob/taursuits_wolf_vr.dmi index 140e6de426..68495a9e4b 100644 Binary files a/icons/mob/taursuits_wolf_vr.dmi and b/icons/mob/taursuits_wolf_vr.dmi differ diff --git a/icons/mob/vore/ears_32x64.dmi b/icons/mob/vore/ears_32x64.dmi index df92e62a42..5c6e3b6598 100644 Binary files a/icons/mob/vore/ears_32x64.dmi and b/icons/mob/vore/ears_32x64.dmi differ diff --git a/icons/mob/vore/tails_vr.dmi b/icons/mob/vore/tails_vr.dmi index c9b2915651..d55293ae14 100644 Binary files a/icons/mob/vore/tails_vr.dmi and b/icons/mob/vore/tails_vr.dmi differ diff --git a/icons/mob/vore/taurs_ch.dmi b/icons/mob/vore/taurs_ch.dmi new file mode 100644 index 0000000000..9320c96d40 Binary files /dev/null and b/icons/mob/vore/taurs_ch.dmi differ diff --git a/icons/mob/vore/taurs_ch_loaf.dmi b/icons/mob/vore/taurs_ch_loaf.dmi new file mode 100644 index 0000000000..2b4c0acbdc Binary files /dev/null and b/icons/mob/vore/taurs_ch_loaf.dmi differ diff --git a/icons/mob/vore/taurs_vr.dmi b/icons/mob/vore/taurs_vr.dmi index 4498dc2629..99c6e7debe 100644 Binary files a/icons/mob/vore/taurs_vr.dmi and b/icons/mob/vore/taurs_vr.dmi differ diff --git a/icons/mob/vore/taurs_vr_loaf.dmi b/icons/mob/vore/taurs_vr_loaf.dmi new file mode 100644 index 0000000000..835225049d Binary files /dev/null and b/icons/mob/vore/taurs_vr_loaf.dmi differ diff --git a/icons/mob/vore/wings_vr.dmi b/icons/mob/vore/wings_vr.dmi index 5edced1ac9..cdcac1d4cd 100644 Binary files a/icons/mob/vore/wings_vr.dmi and b/icons/mob/vore/wings_vr.dmi differ diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi index 66b84f4bed..a6efd92db6 100644 Binary files a/icons/obj/projectiles_impact.dmi and b/icons/obj/projectiles_impact.dmi differ diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi index 71e587f73d..234a2e428a 100644 Binary files a/icons/obj/projectiles_muzzle.dmi and b/icons/obj/projectiles_muzzle.dmi differ diff --git a/icons/obj/projectiles_tracer.dmi b/icons/obj/projectiles_tracer.dmi index 9703c51ab7..7404a5867b 100644 Binary files a/icons/obj/projectiles_tracer.dmi and b/icons/obj/projectiles_tracer.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index cb504aa551..783441c51c 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi index 7c03befdfa..545515dbb2 100644 Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ diff --git a/maps/groundbase/gb-z1.dmm b/maps/groundbase/gb-z1.dmm index fb77f6f0cb..ed5284b76d 100644 --- a/maps/groundbase/gb-z1.dmm +++ b/maps/groundbase/gb-z1.dmm @@ -437,12 +437,24 @@ /turf/simulated/floor/tiled/dark, /area/groundbase/security/lobby) "aZ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 }, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/lobby) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + name = "Men's Restroom" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/outdoors/sidewalk/side, +/area/groundbase/civilian/mensrestroom) "ba" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled/dark, @@ -992,24 +1004,17 @@ }, /area/maintenance/groundbase/level1/nwtunnel) "cp" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/vending/wallmed1/public{ - pixel_y = 28 +/obj/structure/sink/kitchen{ + dir = 4; + pixel_x = 12 }, -/turf/simulated/floor/tiled/asteroid_steel, +/obj/effect/floor_decal/corner/paleblue/full{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "cq" = ( /obj/structure/table/standard, @@ -2163,11 +2168,11 @@ /turf/simulated/floor/tiled, /area/groundbase/engineering/eva) "eI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/disposalpipe/junction{ + dir = 8 }, -/turf/simulated/floor/tiled/dark, -/area/groundbase/medical/resleeving) +/turf/simulated/wall, +/area/groundbase/medical/autoresleeving) "eJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/alarm{ @@ -2946,14 +2951,19 @@ /turf/simulated/floor/outdoors/sidewalk/slab, /area/groundbase/level1/northspur) "gu" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/button/remote/airlock{ + id = "z1stall4"; + specialfunctions = 4; + pixel_y = 26 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/toilet{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, -/area/groundbase/medical/lhallway) +/area/groundbase/civilian/mensrestroom) "gv" = ( /turf/simulated/wall/r_wall, /area/groundbase/security/hos) @@ -4452,11 +4462,10 @@ /turf/simulated/floor/tiled, /area/groundbase/civilian/apparel) "jT" = ( -/obj/structure/disposaloutlet, /obj/machinery/light{ dir = 1 }, -/obj/structure/disposalpipe/trunk, +/obj/machinery/washing_machine, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "jU" = ( @@ -4754,10 +4763,10 @@ /turf/simulated/floor/tiled/steel_ridged, /area/groundbase/medical/morgue) "kB" = ( -/obj/random/vendorall, /obj/machinery/alarm{ dir = 8 }, +/obj/machinery/vending/bepis, /turf/simulated/floor/tiled, /area/groundbase/civilian/apparel) "kC" = ( @@ -4792,7 +4801,6 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "kF" = ( @@ -4994,10 +5002,10 @@ /turf/simulated/floor/tiled/white, /area/groundbase/civilian/bar) "kX" = ( -/obj/random/vendorall, /obj/machinery/firealarm{ dir = 4 }, +/obj/machinery/vending/cigarette, /turf/simulated/floor/tiled, /area/groundbase/civilian/apparel) "kY" = ( @@ -6283,6 +6291,10 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, /turf/simulated/floor/outdoors/sidewalk/slab, /area/groundbase/level1/centsquare) "nO" = ( @@ -6345,6 +6357,13 @@ }, /turf/simulated/floor/carpet/sblucarpet, /area/groundbase/security/iaa1) +"nW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "nX" = ( /obj/machinery/atmospherics/unary/freezer{ dir = 8 @@ -6431,6 +6450,10 @@ /obj/structure/barricade/cutout/clown, /turf/simulated/floor/carpet/gaycarpet, /area/groundbase/civilian/clown) +"oi" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/dark, +/area/groundbase/security/lobby) "oj" = ( /obj/machinery/suit_cycler/engineering, /turf/simulated/floor/tiled, @@ -6504,6 +6527,13 @@ /obj/machinery/light, /turf/simulated/floor/tiled/white, /area/groundbase/medical/morgue) +"oq" = ( +/obj/machinery/door/airlock{ + id_tag = "z1stall4"; + name = "Men's Restroom Stall" + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "or" = ( /obj/structure/stairs/spawner/west, /obj/structure/railing/grey{ @@ -6669,6 +6699,14 @@ outdoors = 0 }, /area/maintenance/groundbase/level1/nwtunnel) +"oK" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "oL" = ( /obj/machinery/door/airlock{ id_tag = "z1stall1"; @@ -6849,10 +6887,6 @@ dir = 4 }, /obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) @@ -7040,6 +7074,13 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/techstorage) +"pI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/black{ + dir = 4 + }, +/turf/simulated/floor/outdoors/sidewalk, +/area/groundbase/level1/centsquare) "pJ" = ( /obj/machinery/light{ dir = 4 @@ -7458,6 +7499,7 @@ dir = 1; pixel_y = -22 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) "qP" = ( @@ -7480,6 +7522,11 @@ }, /turf/simulated/floor, /area/maintenance/groundbase/substation/medcargo) +"qT" = ( +/obj/machinery/power/apc, +/obj/structure/cable/yellow, +/turf/simulated/floor/tiled/dark, +/area/security/range) "qU" = ( /obj/effect/floor_decal/industrial/danger{ dir = 1 @@ -7655,6 +7702,12 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/techstorage) +"rk" = ( +/obj/machinery/alarm{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "rl" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment{ @@ -7761,6 +7814,9 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/equipment) "ry" = ( @@ -8051,30 +8107,16 @@ /turf/simulated/floor, /area/groundbase/engineering/storage) "sk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 +/obj/effect/floor_decal/corner/paleblue{ + dir = 5 }, -/obj/structure/mirror{ - icon_state = "mirror_broke"; - pixel_y = 37 - }, -/obj/structure/sink/kitchen{ - pixel_y = 16 - }, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/firealarm{ - dir = 1 - }, -/turf/simulated/floor/tiled/asteroid_steel, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "sl" = ( /obj/machinery/camera/network/engineering{ dir = 4 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled/techmaint, /area/groundbase/engineering/atmos) "sm" = ( @@ -8343,6 +8385,15 @@ }, /turf/simulated/floor/outdoors/grass/seasonal/notrees_nomobs_lowsnow, /area/groundbase/level1/southwestspur) +"sU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/outdoors/sidewalk, +/area/groundbase/level1/centsquare) "sV" = ( /turf/simulated/floor/outdoors/newdirt{ outdoors = 0 @@ -8617,6 +8668,17 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/storage) +"tA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/steel, +/obj/item/weapon/gun/energy/laser/practice, +/obj/machinery/alarm{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "tB" = ( /obj/structure/bed/chair/sofa/bench/left{ dir = 1 @@ -8789,6 +8851,19 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/lobby) +"tZ" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "ua" = ( /turf/simulated/wall, /area/groundbase/level1/se) @@ -8812,10 +8887,6 @@ /turf/simulated/floor/tiled/dark, /area/groundbase/security/detective) "ue" = ( -/obj/machinery/door/airlock{ - name = "Men's Restroom" - }, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, @@ -8825,7 +8896,15 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/turf/simulated/floor/bmarble, +/obj/structure/disposalpipe/tagger{ + dir = 4; + name = "package tagger - Resleeving"; + sort_tag = "Resleeving" + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "uf" = ( /obj/structure/table/standard, @@ -9168,10 +9247,6 @@ /obj/machinery/alarm{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, /obj/machinery/atmospherics/unary/vent_pump/siphon/on/atmos{ external_pressure_bound = 101.3; external_pressure_bound_default = 101.3; @@ -9239,6 +9314,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/bluegrid, /area/groundbase/command/ai/foyer) "vf" = ( @@ -9270,6 +9346,7 @@ /obj/machinery/camera/network/medbay{ dir = 4 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) "vi" = ( @@ -9286,19 +9363,13 @@ /turf/simulated/floor/tiled/dark, /area/groundbase/civilian/bar) "vl" = ( -/obj/machinery/light/small, -/obj/structure/toilet/prison{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/obj/machinery/button/remote/airlock{ - dir = 4; - id = "z1stall4"; - pixel_x = -27; - specialfunctions = 4 +/obj/effect/floor_decal/corner/paleblue{ + dir = 10 }, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/asteroid_steel, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "vm" = ( /obj/machinery/smartfridge/drinks, @@ -9438,6 +9509,10 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/halls) +"vC" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/techmaint, +/area/groundbase/engineering/atmos) "vD" = ( /obj/machinery/button/remote/blast_door{ desc = "A remote control-switch for the AI core maintenance door."; @@ -9475,25 +9550,23 @@ /turf/simulated/floor/tiled/steel_ridged, /area/groundbase/security/halls) "vI" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ - icon_state = "4-8" + icon_state = "2-8" }, -/obj/machinery/alarm{ - pixel_y = 28 +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" }, -/obj/machinery/light_switch{ - pixel_x = 15; - pixel_y = 30 +/obj/effect/floor_decal/corner/paleblue{ + dir = 4 }, -/turf/simulated/floor/tiled/asteroid_steel, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "vK" = ( /obj/structure/table/bench/padded, @@ -10101,19 +10174,15 @@ /turf/simulated/floor/bluegrid, /area/groundbase/command/ai/storage) "xe" = ( -/obj/machinery/light/small, -/obj/structure/toilet/prison{ - dir = 8 - }, -/obj/machinery/button/remote/airlock{ +/obj/structure/sink/kitchen{ dir = 4; - id = "z1stall5"; - pixel_x = -27; - specialfunctions = 4 + pixel_x = 12 }, -/obj/effect/floor_decal/rust, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/asteroid_steel, +/obj/machinery/light/small, +/obj/effect/floor_decal/corner/paleblue/full{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "xf" = ( /obj/machinery/power/breakerbox/activated{ @@ -10495,6 +10564,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, /area/groundbase/civilian/gameroom) +"xY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "xZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/techfloor/grid, @@ -10607,6 +10685,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/structure/closet/radiation, /turf/simulated/floor/tiled, /area/groundbase/engineering/eva) "yn" = ( @@ -10635,7 +10714,6 @@ /obj/machinery/firealarm{ dir = 8 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "ys" = ( @@ -10700,6 +10778,19 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/groundbase/medical/or2) +"yy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/table/bench/steel, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "yz" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled, @@ -10718,12 +10809,14 @@ /obj/effect/floor_decal/corner/pink{ dir = 6 }, -/obj/machinery/disposal/wall/cleaner{ - dir = 8 - }, /obj/structure/disposalpipe/trunk{ dir = 1 }, +/obj/machinery/disposal/wall/cleaner{ + desc = "Automatically cleans and transports items to the local auto-resleeving facilities."; + dir = 8; + name = "auto-resleeving equipment deposit" + }, /turf/simulated/floor/tiled/white, /area/groundbase/civilian/womensrestroom) "yD" = ( @@ -11210,8 +11303,12 @@ pressure_checks = 1; pressure_checks_default = 1 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor, /area/maintenance/groundbase/trashpit) +"zP" = ( +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "zQ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -11307,10 +11404,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/hologram/holopad, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "Ab" = ( @@ -11517,10 +11610,6 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "AC" = ( @@ -11612,6 +11701,18 @@ "AN" = ( /turf/simulated/floor/tiled/dark, /area/groundbase/security/briefing) +"AO" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "AP" = ( /obj/machinery/firealarm{ dir = 8 @@ -11639,6 +11740,15 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) +"AU" = ( +/obj/machinery/alarm{ + dir = 4 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "AV" = ( /obj/machinery/light{ dir = 4 @@ -11749,13 +11859,14 @@ }, /area/groundbase/level1/se) "Bj" = ( -/obj/machinery/door/airlock{ - id_tag = "z1stall5"; - name = "Men's Restroom Stall" +/obj/structure/sink/kitchen{ + dir = 4; + pixel_x = 12 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_ridged, +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "Bk" = ( /turf/simulated/floor/outdoors/newdirt_nograss{ @@ -12213,6 +12324,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/black, /turf/simulated/floor/tiled, /area/groundbase/engineering/lobby) "Cn" = ( @@ -12273,6 +12385,15 @@ /obj/machinery/atmospherics/pipe/manifold/visible/cyan, /turf/simulated/floor/tiled/techmaint, /area/groundbase/engineering/atmos) +"Cu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "Cv" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -12687,7 +12808,8 @@ dir = 4 }, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 2; + icon_state = "pipe-c" }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) @@ -12711,13 +12833,13 @@ /turf/simulated/floor/outdoors/sidewalk/side, /area/groundbase/level1/northspur) "DB" = ( -/obj/machinery/door/airlock{ - id_tag = "z1stall4"; - name = "Men's Restroom Stall" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/floor_decal/rust, -/turf/simulated/floor/tiled/steel_ridged, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled/white, /area/groundbase/civilian/mensrestroom) "DC" = ( /obj/structure/bookcase, @@ -12733,6 +12855,13 @@ /obj/machinery/light, /turf/simulated/floor/tiled/dark, /area/groundbase/security/hos) +"DD" = ( +/obj/machinery/door/airlock{ + id_tag = "z1stall5"; + name = "Men's Restroom Stall" + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "DE" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -12749,6 +12878,12 @@ }, /turf/simulated/floor, /area/maintenance/groundbase/substation/medcargo) +"DF" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "DG" = ( /obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 6 @@ -13188,6 +13323,17 @@ outdoors = 0 }, /area/maintenance/groundbase/level1/nwtunnel) +"EL" = ( +/obj/item/device/radio/intercom/department/security{ + dir = 1; + pixel_y = 24 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "EM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/hologram/holopad, @@ -13358,13 +13504,13 @@ /turf/simulated/floor, /area/groundbase/unexplored/outdoors) "Fg" = ( -/obj/random/vendorall, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 }, /obj/machinery/camera/network/civilian{ dir = 8 }, +/obj/machinery/vending/snack, /turf/simulated/floor/tiled, /area/groundbase/civilian/apparel) "Fh" = ( @@ -13502,6 +13648,16 @@ }, /turf/simulated/wall/r_wall, /area/maintenance/groundbase/substation/aiciv) +"FA" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/steel, +/obj/item/weapon/gun/energy/laser/practice, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/glasses/goggles, +/turf/simulated/floor/tiled/dark, +/area/security/range) "FB" = ( /obj/item/weapon/stool/baystool/padded{ dir = 1 @@ -13565,13 +13721,18 @@ }, /turf/simulated/floor/tiled, /area/groundbase/civilian/gateway) -"FJ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/black{ - dir = 4 +"FI" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 }, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/lobby) +/turf/simulated/floor/tiled/dark, +/area/security/range) +"FJ" = ( +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "FK" = ( /obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled, @@ -13633,6 +13794,20 @@ /obj/structure/window/reinforced/polarized/full, /turf/simulated/floor, /area/groundbase/engineering/ce) +"FT" = ( +/obj/machinery/button/remote/airlock{ + id = "z1stall5"; + specialfunctions = 4; + pixel_y = 26 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/toilet{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "FU" = ( /obj/machinery/light{ dir = 8 @@ -13675,6 +13850,16 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/armory) +"FZ" = ( +/obj/structure/flora/pottedplant/unusual, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/floor_decal/corner/paleblue/full{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "Ga" = ( /obj/item/device/radio/intercom{ dir = 4; @@ -14171,7 +14356,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/structure/sign/painting/library_secure{ pixel_x = -30 @@ -14464,6 +14648,16 @@ /obj/effect/landmark/start/medical, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) +"HT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/equipment) "HU" = ( /obj/structure/dispenser{ phorontanks = 0 @@ -14583,6 +14777,10 @@ }, /turf/simulated/floor/tiled, /area/groundbase/engineering/storage) +"Ig" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/dark, +/area/groundbase/security/halle) "Ih" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -14762,6 +14960,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/machinery/power/thermoregulator, /turf/simulated/floor/tiled, /area/groundbase/engineering/storage) "IE" = ( @@ -14820,7 +15019,7 @@ frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; - sensors = list("dist_main_meter" = "Surface - Distribution Loop", "scrub_main_meter" = "Surface - Scrubbers Loop", "mair_main_meter" = "Surface - Mixed Air Tank", "dist_aux_meter" = "Station - Distribution Loop", "scrub_aux_meter" = "Station - Scrubbers Loop", "mair_aux_meter" = "Station - Mixed Air Tank", "mair_mining_meter" = "Mining Outpost - Mixed Air Tank") + sensors = list("dist_main_meter"="Surface - Distribution Loop","scrub_main_meter"="Surface - Scrubbers Loop","mair_main_meter"="Surface - Mixed Air Tank","dist_aux_meter"="Station - Distribution Loop","scrub_aux_meter"="Station - Scrubbers Loop","mair_aux_meter"="Station - Mixed Air Tank","mair_mining_meter"="Mining Outpost - Mixed Air Tank") }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -14857,14 +15056,15 @@ /turf/simulated/floor/tiled/techfloor, /area/groundbase/civilian/arrivals) "IP" = ( -/obj/machinery/door/firedoor, -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 4 +/obj/machinery/vending/wallmed1/public{ + dir = 4; + pixel_x = -28 }, -/turf/simulated/floor, -/area/groundbase/engineering/lobby) +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "IQ" = ( /obj/structure/bed/chair/comfy/orange{ dir = 8 @@ -15203,20 +15403,26 @@ /area/groundbase/command/ai/chamber) "JJ" = ( /obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/medical{ id_tag = "Resleeving"; name = "Resleeving Lab"; req_access = list(5); req_one_access = null }, +/turf/simulated/floor/tiled/steel_ridged, +/area/groundbase/medical/resleeving) +"JL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/tiled/steel_ridged, -/area/groundbase/medical/resleeving) +/obj/structure/table/bench/steel, +/turf/simulated/floor/tiled/dark, +/area/security/range) "JM" = ( /turf/simulated/wall/r_wall, /area/groundbase/engineering/storage) @@ -16570,6 +16776,10 @@ icon_state = "0-4" }, /obj/item/device/ticket_printer, +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = -24 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/equipment) "MS" = ( @@ -16618,6 +16828,19 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/iaa1) +"MY" = ( +/obj/machinery/power/apc{ + dir = 8 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/flora/pottedplant/unusual, +/obj/machinery/light/small, +/obj/effect/floor_decal/corner/paleblue/full, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "MZ" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -16685,6 +16908,11 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/bluegrid, /area/groundbase/command/ai/robot) +"Nf" = ( +/obj/structure/target_stake, +/obj/item/target/alien, +/turf/simulated/floor/tiled/dark, +/area/security/range) "Ng" = ( /obj/structure/table/marble, /obj/item/device/retail_scanner/civilian, @@ -16807,6 +17035,16 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/briefing) +"Nx" = ( +/obj/machinery/door/window/westright, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "Ny" = ( /obj/structure/table/rack, /obj/item/clothing/suit/space/void/mining, @@ -17508,6 +17746,21 @@ }, /turf/simulated/floor/tiled/techmaint, /area/groundbase/engineering/atmos) +"Pk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/disposal/wall/cleaner{ + desc = "Automatically cleans and transports items to the local auto-resleeving facilities."; + dir = 8; + name = "auto-resleeving equipment deposit" + }, +/obj/structure/disposalpipe/trunk, +/obj/effect/floor_decal/corner/paleblue{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "Pl" = ( /turf/simulated/floor/tiled/dark, /area/groundbase/security/warden) @@ -17653,6 +17906,19 @@ outdoors = 0 }, /area/maintenance/groundbase/level1/swtunnel) +"PD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -30 + }, +/obj/effect/floor_decal/corner/paleblue{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "PE" = ( /obj/machinery/door/firedoor, /obj/structure/table/reinforced, @@ -17925,6 +18191,9 @@ "Qq" = ( /turf/simulated/wall/r_wall, /area/maintenance/groundbase/level1/swtunnel) +"Qr" = ( +/turf/simulated/floor/tiled/dark, +/area/security/range) "Qt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -17966,6 +18235,13 @@ outdoors = 0 }, /area/groundbase/security/lobby) +"Qw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/black{ + dir = 10 + }, +/turf/simulated/floor/outdoors/sidewalk, +/area/groundbase/level1/centsquare) "Qx" = ( /obj/machinery/conveyor{ dir = 4; @@ -18155,8 +18431,15 @@ /turf/simulated/floor/carpet/turcarpet, /area/groundbase/civilian/gameroom) "QY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/equipment) "QZ" = ( @@ -18364,6 +18647,7 @@ name = "Station Intercom (General)"; pixel_y = 24 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled, /area/groundbase/engineering/engine) "Rx" = ( @@ -18747,6 +19031,7 @@ /area/groundbase/engineering/atmos) "Sq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/closet/radiation, /turf/simulated/floor/tiled, /area/groundbase/engineering/eva) "Sr" = ( @@ -19700,10 +19985,6 @@ /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/machinery/hologram/holopad, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lhallway) "UC" = ( @@ -19724,11 +20005,11 @@ }, /area/maintenance/groundbase/level1/netunnel) "UF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/black{ - dir = 4 +/obj/effect/floor_decal/corner/paleblue{ + dir = 10 }, -/turf/simulated/floor/tiled, -/area/groundbase/engineering/lobby) +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "UG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, @@ -19833,6 +20114,10 @@ /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /turf/simulated/floor/tiled/dark, /area/groundbase/security/equipment) +"UW" = ( +/obj/machinery/light, +/turf/simulated/floor/tiled/dark, +/area/security/range) "UX" = ( /turf/simulated/floor/outdoors/grass/seasonal/dark/lowsnow, /area/groundbase/level1/northspur) @@ -19949,6 +20234,21 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/holodeck_control) +"Vn" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Firing Range" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/security/equipment) "Vo" = ( /obj/machinery/computer/security{ dir = 1 @@ -20354,6 +20654,18 @@ }, /turf/simulated/floor/outdoors/sidewalk/side, /area/groundbase/level1/southwestspur) +"Wn" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 25; + pixel_y = -2 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/table/bench/steel, +/turf/simulated/floor/tiled/dark, +/area/security/range) "Wo" = ( /obj/machinery/light/floortube{ dir = 8; @@ -20361,6 +20673,15 @@ }, /turf/simulated/floor/tiled/techmaint, /area/groundbase/engineering/atmos) +"Wp" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/simulated/floor{ + edge_blending_priority = -1 + }, +/area/groundbase/level1/centsquare) "Wq" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -20377,7 +20698,6 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/groundbase/medical/resleeving) "Ws" = ( @@ -20430,6 +20750,9 @@ outdoors = 0 }, /area/groundbase/level1/nw) +"Wy" = ( +/turf/simulated/wall/r_wall, +/area/security/range) "Wz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -20510,9 +20833,8 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/obj/structure/disposalpipe/junction/yjunction{ + dir = 8 }, /turf/simulated/floor/outdoors/sidewalk/slab, /area/groundbase/level1/centsquare) @@ -20831,6 +21153,21 @@ /obj/random/tech_supply/component/nofail, /turf/simulated/floor/tiled, /area/groundbase/engineering/techstorage) +"Xq" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/steel, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 20 + }, +/obj/machinery/recharger/wallcharger{ + pixel_x = 4; + pixel_y = 30 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "Xr" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell C" @@ -20948,6 +21285,7 @@ name = "Engineering" }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/black, /turf/simulated/floor/bmarble, /area/groundbase/engineering/lobby) "XE" = ( @@ -21311,6 +21649,12 @@ "YC" = ( /turf/simulated/floor/outdoors/newdirt, /area/groundbase/level1/centsquare) +"YD" = ( +/obj/effect/floor_decal/corner/paleblue/full{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/civilian/mensrestroom) "YE" = ( /obj/machinery/door/firedoor, /obj/machinery/door/window/brigdoor/southleft{ @@ -21529,6 +21873,12 @@ outdoors = 0 }, /area/maintenance/groundbase/level1/nwtunnel) +"Zb" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/dark, +/area/security/range) "Zc" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -21792,9 +22142,14 @@ /turf/simulated/floor/bluegrid, /area/groundbase/command/ai/chamber) "ZN" = ( -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24 +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 }, /turf/simulated/floor/tiled/dark, /area/groundbase/security/equipment) @@ -21847,7 +22202,6 @@ /area/groundbase/engineering/storage) "ZV" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/door/airlock/medical{ id_tag = "Resleeving Shower"; @@ -21856,6 +22210,10 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/groundbase/medical/resleeving) +"ZW" = ( +/obj/machinery/door/window/westright, +/turf/simulated/floor/tiled/dark, +/area/security/range) "ZX" = ( /obj/machinery/mineral/unloading_machine, /turf/simulated/floor/tiled, @@ -22419,8 +22777,8 @@ ce ce ce ce -ce -ce +Bk +Bk ce Bk Bk @@ -22562,7 +22920,7 @@ ce ce ce ce -ce +Bk Bk Bk ce @@ -22680,25 +23038,25 @@ ce ce ce ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce -ce +Bk +Bk ce ce Bk +Bk +Bk +ce +Bk +Bk +Bk +Bk +ce +ce +ce +ce +ce +ce +ce ce ce ce @@ -22821,30 +23179,30 @@ ce ce ce ce -ce -ce -ce -ce -ce -Bk -ce -ce -ce -ce -ce -Bk -Bk -ce -Bk -Bk -ce -ce Bk Bk Bk -ce -ce -ce +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk Bk Bk Bk @@ -22963,30 +23321,30 @@ ce ce ce ce -ce -ce -ce -Bk -Bk -Bk -ce -ce -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk -Bk Bk Bk +tk +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +sz +ei Bk Bk Bk @@ -23106,9 +23464,8 @@ ce ce ce ce -ce -ce -Bk +Bk +PC Bk Bk Bk @@ -23129,6 +23486,7 @@ Bk Bk Bk Bk +PC Bk Bk Bk @@ -23248,29 +23606,29 @@ Bk ce ce ce -ce -tk -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -sz -ei +Bk +PC +Bk +Wy +Wy +Wy +Wy +Wy +Wy +Wy +Wy +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +Bk +PC ce Bk Bk @@ -23393,14 +23751,14 @@ ce Bk PC Bk -Bk -Bk -Bk -ce -Bk -ce -Bk -Bk +Wy +Wy +Wy +Wy +Wy +Wy +Wy +Wy Bk Bk ce @@ -23535,14 +23893,14 @@ sz sz hZ Bk -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Zb +Nf +Qr +Qr +Nf +UW +Wy ce ce ce @@ -23677,14 +24035,14 @@ dM Bk Bk Bk -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Qr +Qr +Qr +Qr +Qr +Qr +Wy ce ce ce @@ -23819,14 +24177,14 @@ dM Bk Bk Bk -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Qr +DF +Qr +Qr +Qr +rk +Wy ce ce ce @@ -23961,14 +24319,14 @@ dM Bk Bk Bk -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Qr +xY +FI +Qr +Qr +Qr +Wy ce ce ce @@ -24103,14 +24461,14 @@ dM Bk ce ce -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Zb +Cu +Qr +Qr +Qr +UW +Wy ce ce ce @@ -24245,14 +24603,14 @@ dM Bk ce ce -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Qr +Cu +Qr +Qr +Qr +Qr +Wy ce ce ce @@ -24387,14 +24745,14 @@ dM ce ce ce -ce -ce -ce -ce -ce -ce -ce -ce +Wy +Xq +Nx +FA +FA +ZW +tA +Wy ce ce ce @@ -24529,14 +24887,14 @@ dM ce ce ce -ce -ce -ce -ce -ce -ce -ce -ce +Wy +EL +nW +FI +Qr +Qr +UW +Wy ce ce ce @@ -24671,14 +25029,14 @@ dM ce ce ce -ce -ce -ce -ce -ce -ce -ce -ce +Wy +oK +AO +Wn +yy +JL +qT +Wy ce ce ce @@ -24815,7 +25173,7 @@ AZ hC hC hC -hC +Vn hC hC hC @@ -27653,7 +28011,7 @@ yc EG fm wl -nx +oi nT nx mM @@ -29218,7 +29576,7 @@ Hc id gv pn -vd +Ig ma rT rT @@ -32310,8 +32668,8 @@ yd Vh eR eR -eR -eR +pc +pc eR eR eR @@ -32452,8 +32810,8 @@ Eb Vh eR eR -eR -eR +pc +pc pc eR eR @@ -32858,7 +33216,7 @@ jn in Nz HN -Dz +eI Is Ko Mu @@ -32993,14 +33351,14 @@ jn jn pP wB -eI +wB wB Ap jn IY Dy qO -nb +Dz ZG pK hM @@ -33023,8 +33381,8 @@ eR pc pc pc -eR -eR +pc +pc eR eR eR @@ -33139,7 +33497,7 @@ Aa Wr kE JJ -gu +Fc UA WS ZO @@ -33588,7 +33946,7 @@ Eb Vh eR eR -eR +pc pc pc pc @@ -33596,9 +33954,9 @@ eR eR eR nN -Bv -Bv -Bv +sU +sU +sU WH Ku Gx @@ -33730,16 +34088,16 @@ Eb Vh eR eR -eR +pc pc pc pc pc eR +Yt +Qy Eb -TK -Eb -Eb +Yt aD GQ Mj @@ -33872,17 +34230,17 @@ Eb Vh eR eR -eR -eR -eR -eR -eR -eR -Yt -TK -Lt -Lt -ua +pc +pc +tj +tj +tj +tj +tj +aZ +tj +tj +tj IS IS bg @@ -34016,14 +34374,14 @@ eR eR eR eR -eR -eR -eR -eR tj +FZ +IP +AU +PD ue -tj -tj +tZ +MY tj ua ua @@ -34137,7 +34495,7 @@ wA EU jg DQ -Ay +HT QC GD QC @@ -34158,11 +34516,11 @@ eR eR eR eR -eR -eR -eR -eR tj +YD +FJ +FJ +Pk vI DB vl @@ -34300,14 +34658,14 @@ Eb Eb Eb Eb -Eb -Eb -Eb -Eb +tj +oq +tj +DD tj sk -tj -tj +zP +UF tj Lt Lt @@ -34442,10 +34800,10 @@ Eb Eb Eb Eb -Eb -FE -lZ -lZ +tj +gu +tj +FT tj cp Bj @@ -34586,8 +34944,8 @@ Eb FE Wl Wl -IP -IP +Wl +Wl Wl Wl Wl @@ -34724,12 +35082,12 @@ Bv wx YC Eb -Eb -AL +lZ +Wp Qc Tx -UF -UF +BW +BW ld Hw Xw @@ -34866,12 +35224,12 @@ YC wv lT lT -lT -lT +Qw +pI XD Cm -aZ -FJ +Eu +Eu Eu Eu yK @@ -37157,7 +37515,7 @@ hA LQ cL zx -RW +vC sl AJ rJ diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index f4d74d72a3..55007f41db 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -185,6 +185,7 @@ /obj/machinery/camera/network/medbay{ dir = 1 }, +/obj/machinery/iv_drip, /turf/simulated/floor/tiled/white, /area/groundbase/medical/triage) "au" = ( @@ -335,17 +336,6 @@ "aQ" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -356,6 +346,16 @@ name = "Pen 5 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "aR" = ( @@ -463,11 +463,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced, /turf/simulated/floor/reinforced, @@ -532,11 +531,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced, /turf/simulated/floor/reinforced, @@ -803,6 +801,7 @@ name = "Privacy Shutter Control"; pixel_y = 30 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled, /area/groundbase/science/rnd) "ca" = ( @@ -935,11 +934,9 @@ dir = 8; icon_state = "pipe-c" }, -/obj/structure/table/standard, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/retail_scanner/cargo, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "cs" = ( @@ -1286,6 +1283,10 @@ }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/triage) +"du" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled, +/area/groundbase/science/circuits) "dv" = ( /obj/structure/table/standard, /obj/item/weapon/storage/belt/utility, @@ -1469,6 +1470,24 @@ }, /turf/simulated/floor/tiled, /area/groundbase/command/hop) +"ed" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 28 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/dorms) "ee" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1 @@ -1789,7 +1808,18 @@ /turf/simulated/floor/wood, /area/groundbase/dorms/room1) "eV" = ( -/obj/machinery/light, +/obj/machinery/computer/supplycomp/control{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + dir = 4; + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "eX" = ( @@ -2205,14 +2235,16 @@ /area/groundbase/science/xenobot) "gf" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled, /area/groundbase/science/xenohall) "gk" = ( -/obj/structure/table/standard, -/obj/item/weapon/clipboard, -/obj/item/weapon/stamp/qm, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/effect/landmark/start/cargo, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "gm" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -2282,7 +2314,7 @@ name = "box of measuring cups"; pixel_x = 2; pixel_y = 3; - starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup = 7) + starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/measuring_cup=7) }, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -2467,12 +2499,13 @@ /turf/simulated/floor/wood, /area/groundbase/dorms/room7) "gX" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced/polarized/full{ - id = "qm_office" +/obj/structure/table/standard, +/obj/item/weapon/clipboard, +/obj/item/weapon/stamp/qm, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor, +/turf/simulated/floor/wood, /area/groundbase/cargo/qm) "gY" = ( /obj/structure/bed/chair/sofa/corner/black, @@ -2518,12 +2551,6 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/science/hall) -"he" = ( -/obj/structure/bed/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) "hh" = ( /obj/structure/table/steel, /obj/machinery/recharger, @@ -2560,11 +2587,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1 @@ -2663,6 +2689,7 @@ /obj/machinery/light{ dir = 8 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled/dark, /area/groundbase/civilian/chapel) "hz" = ( @@ -2740,8 +2767,15 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/injector_maker{ - pixel_x = -29 +/obj/structure/sink/kitchen{ + dir = 8; + pixel_x = -11; + pixel_y = 14 + }, +/obj/machinery/button/remote/blast_door{ + dir = 4; + pixel_x = -25; + id = "chem_room" }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/Chemistry) @@ -2823,17 +2857,6 @@ "hX" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -2844,6 +2867,16 @@ name = "Pen 2 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "hY" = ( @@ -3194,6 +3227,9 @@ pixel_x = -30; pixel_y = 16 }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "iW" = ( @@ -3640,6 +3676,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor, +/obj/machinery/door/blast/regular{ + id = "chem_room"; + name = "Chemistry Shutters" + }, /turf/simulated/floor, /area/groundbase/medical/Chemistry) "kj" = ( @@ -3729,6 +3769,11 @@ }, /turf/simulated/floor/tiled, /area/groundbase/science/server) +"kv" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/item/weapon/storage/backpack/dufflebag, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "ky" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -3747,11 +3792,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced, /turf/simulated/floor/reinforced, @@ -3794,6 +3838,7 @@ pixel_x = -32; pixel_y = -1 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled/white, /area/medical/virology) "kL" = ( @@ -3841,6 +3886,7 @@ /obj/machinery/camera/network/medbay{ dir = 8 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled/white, /area/groundbase/medical/Chemistry) "kQ" = ( @@ -4076,6 +4122,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/wood, /area/groundbase/dorms/room2) +"ly" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/power/apc{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "lz" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 8 @@ -4097,6 +4156,10 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/civilian/chapel) +"lB" = ( +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/office) "lC" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4238,14 +4301,15 @@ /turf/simulated/wall, /area/groundbase/medical/triage) "lU" = ( -/obj/structure/table/standard, -/obj/item/weapon/folder/yellow, -/obj/item/weapon/pen/red{ - pixel_x = 2; - pixel_y = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) +/obj/machinery/alarm{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "lV" = ( /turf/simulated/wall/r_wall, /area/groundbase/science/xenobot) @@ -4330,14 +4394,11 @@ /turf/simulated/floor/tiled/dark, /area/groundbase/command/bridge) "mj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/light_switch{ + pixel_y = 30 }, -/turf/simulated/floor, -/area/groundbase/cargo/office) +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "mk" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -4769,8 +4830,7 @@ /area/groundbase/dorms/room8) "nD" = ( /obj/machinery/disposal/wall{ - dir = 8; - name = "auto-resleeving equipment deposit" + dir = 8 }, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -4825,6 +4885,16 @@ }, /turf/simulated/floor/tiled, /area/groundbase/science/hall) +"nL" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/tagger{ + dir = 8; + name = "package tagger - Resleeving"; + sort_tag = "Resleeving" + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/dorms) "nM" = ( /obj/structure/bed/chair/office/dark, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -5015,12 +5085,9 @@ /turf/simulated/floor/tiled, /area/groundbase/science/xenobot) "ot" = ( -/obj/structure/table/standard, -/obj/item/weapon/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/item/device/megaphone, /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; @@ -5029,6 +5096,13 @@ }, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) +"ou" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/office) "ov" = ( /obj/structure/table/standard, /obj/machinery/cell_charger, @@ -5141,11 +5215,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1 @@ -5164,6 +5237,18 @@ "oO" = ( /turf/simulated/floor/wood, /area/groundbase/command/captain) +"oR" = ( +/obj/structure/table/standard, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen/red{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "oS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -5332,17 +5417,6 @@ "pq" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -5353,6 +5427,16 @@ name = "Pen 7 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "pr" = ( @@ -5882,9 +5966,17 @@ /turf/simulated/floor/outdoors/newdirt, /area/groundbase/command/hop) "qN" = ( -/obj/structure/table/standard, -/turf/simulated/floor/tiled, -/area/groundbase/cargo/office) +/obj/machinery/status_display/supply_display{ + pixel_y = 32 + }, +/obj/machinery/button/windowtint{ + id = "qm_office"; + layer = 3.3; + pixel_x = -24; + pixel_y = 27 + }, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "qP" = ( /obj/machinery/alarm{ dir = 4 @@ -6138,6 +6230,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/wall, /area/groundbase/cargo/office) +"rw" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/open, +/area/groundbase/medical/triage) "rx" = ( /obj/structure/table/standard, /obj/machinery/microwave, @@ -6519,6 +6617,10 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/command/meeting) +"sE" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/lobby) "sF" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/outdoors/sidewalk, @@ -6624,12 +6726,10 @@ /turf/simulated/floor/outdoors/sidewalk/slab, /area/groundbase/level2/eastspur) "sS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/polarized/full{ - id = "qm_office" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/door/firedoor, -/turf/simulated/floor, +/turf/simulated/floor/wood, /area/groundbase/cargo/qm) "sT" = ( /obj/machinery/seed_storage/xenobotany, @@ -6796,6 +6896,9 @@ dir = 4; pixel_x = -32 }, +/obj/structure/bed/chair{ + dir = 4 + }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/lobby) "tA" = ( @@ -6816,11 +6919,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1 @@ -6845,6 +6947,11 @@ /obj/machinery/door/firedoor, /turf/simulated/floor, /area/groundbase/civilian/kitchen) +"tE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/office) "tF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -7163,6 +7270,10 @@ /obj/structure/bookcase, /turf/simulated/floor/wood, /area/groundbase/civilian/library) +"uA" = ( +/obj/structure/closet/secure_closet/cargotech, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "uC" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7297,10 +7408,10 @@ dir = 8 }, /obj/structure/table/standard, -/obj/item/weapon/packageWrap, -/obj/item/weapon/packageWrap, -/obj/item/weapon/packageWrap, -/obj/item/weapon/packageWrap, +/obj/machinery/photocopier/faxmachine{ + department = "Cargo"; + pixel_y = 6 + }, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "uT" = ( @@ -7330,6 +7441,10 @@ /obj/random/donkpocketbox, /turf/simulated/floor/tiled/eris/cafe, /area/groundbase/civilian/kitchen) +"uV" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled, +/area/groundbase/science/hall) "uX" = ( /obj/structure/fence, /turf/simulated/floor/outdoors/grass/seasonal/dark/lowsnow, @@ -7338,6 +7453,10 @@ /obj/machinery/light, /turf/simulated/floor/tiled, /area/rnd/xenobiology) +"uZ" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/dark, +/area/groundbase/dorms) "vb" = ( /obj/machinery/light/bigfloorlamp, /turf/simulated/floor/outdoors/grass/seasonal/notrees_nomobs_lowsnow, @@ -7346,6 +7465,14 @@ /obj/structure/sign/department/chem, /turf/simulated/wall, /area/groundbase/medical/Chemistry) +"ve" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/office) "vh" = ( /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, @@ -7486,6 +7613,16 @@ }, /turf/simulated/floor/tiled, /area/groundbase/science/hall) +"vE" = ( +/obj/structure/table/standard, +/obj/machinery/photocopier/faxmachine{ + department = "Quartermaster-Office" + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "vF" = ( /obj/structure/table/standard, /obj/item/weapon/storage/toolbox/mechanical{ @@ -7635,6 +7772,17 @@ outdoors = 0 }, /area/groundbase/level2/nw) +"vU" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor, +/obj/machinery/door/blast/regular{ + id = "chem_room"; + name = "Chemistry Shutters"; + dir = 4 + }, +/turf/simulated/floor, +/area/groundbase/medical/Chemistry) "vV" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/weapon/reagent_containers/glass/bucket, @@ -7644,16 +7792,14 @@ /turf/simulated/floor/tiled, /area/groundbase/civilian/hydroponics) "vW" = ( -/obj/structure/bed/chair/office/dark, -/obj/effect/landmark/start/qm, -/obj/machinery/button/windowtint{ - id = "qm_office"; - layer = 3.3; - pixel_x = 16; - pixel_y = -27 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) +/obj/machinery/firealarm{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "vY" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7677,9 +7823,6 @@ dir = 1 }, /obj/machinery/disposal, -/obj/structure/window/reinforced{ - dir = 1 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -7728,6 +7871,10 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/command/meeting) +"wi" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/wood, +/area/groundbase/civilian/library) "wj" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -7999,9 +8146,13 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/light{ - dir = 8 - }, +/obj/structure/closet/walllocker_double/cargo/west, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, +/obj/item/weapon/packageWrap, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "xd" = ( @@ -8365,6 +8516,12 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/dorms) +"yd" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "ye" = ( /obj/structure/table/bench/padded, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -8556,11 +8713,10 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/cable/yellow{ + icon_state = "1-8" }, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) @@ -8713,6 +8869,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/item/device/retail_scanner/cargo, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "zg" = ( @@ -8793,17 +8950,6 @@ "zB" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -8814,6 +8960,16 @@ name = "Pen 4 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "zC" = ( @@ -8969,6 +9125,7 @@ /area/rnd/xenobiology) "zW" = ( /obj/machinery/light, +/obj/machinery/iv_drip, /turf/simulated/floor/tiled/white, /area/groundbase/medical/triage) "zX" = ( @@ -9018,6 +9175,10 @@ }, /turf/simulated/floor/outdoors/sidewalk/side, /area/groundbase/level2/nw) +"Ae" = ( +/obj/machinery/vending/wardrobe/cargodrobe, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "Af" = ( /obj/machinery/photocopier, /obj/machinery/light{ @@ -9124,6 +9285,7 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled, /area/groundbase/science/hall) "Aw" = ( @@ -9454,6 +9616,9 @@ }, /turf/simulated/floor/wood, /area/groundbase/dorms/room7) +"Bk" = ( +/turf/simulated/wall, +/area/groundbase/cargo/storage) "Bl" = ( /turf/simulated/wall/r_wall, /area/groundbase/science/picnic) @@ -9971,17 +10136,6 @@ "CS" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -9992,6 +10146,16 @@ name = "Pen 6 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "CT" = ( @@ -10415,8 +10579,7 @@ req_access = list(20) }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /obj/item/clothing/head/helmet/space/void/captain, /obj/item/clothing/suit/space/void/captain, @@ -10439,7 +10602,6 @@ "DX" = ( /obj/structure/disposalpipe/trunk, /obj/machinery/disposal, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 4 }, @@ -10719,8 +10881,16 @@ /turf/simulated/floor/outdoors/grass/seasonal/notrees_nomobs_lowsnow, /area/groundbase/level2/ne) "EQ" = ( -/obj/structure/filingcabinet, -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/closet/walllocker_double/cargo/north, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/weapon/cartridge/quartermaster, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "ET" = ( @@ -10754,15 +10924,6 @@ /obj/structure/bed/chair/sofa/right/black, /turf/simulated/floor/carpet/geo, /area/groundbase/civilian/kitchen/backroom) -"EX" = ( -/obj/structure/closet/secure_closet/quartermaster, -/obj/item/weapon/storage/backpack/dufflebag, -/obj/machinery/light_switch{ - dir = 1; - pixel_y = -30 - }, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) "EY" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -10985,6 +11146,14 @@ }, /turf/simulated/wall, /area/groundbase/cargo/office) +"FE" = ( +/obj/machinery/light/small, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -30 + }, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "FF" = ( /turf/simulated/wall, /area/groundbase/civilian/bar) @@ -10996,17 +11165,17 @@ /area/groundbase/cargo/bay) "FJ" = ( /obj/structure/table/standard, -/obj/item/weapon/cartridge/quartermaster{ - pixel_x = -4; - pixel_y = 7 +/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft, +/obj/item/weapon/stamp{ + pixel_x = -3; + pixel_y = 3 }, -/obj/item/weapon/cartridge/quartermaster{ - pixel_x = 6; - pixel_y = 5 +/obj/machinery/light/small{ + dir = 1 }, -/obj/item/weapon/cartridge/quartermaster, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "FL" = ( /obj/machinery/light{ dir = 8 @@ -11026,12 +11195,14 @@ "FO" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, /obj/structure/window/reinforced{ dir = 4 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 1 }, /turf/simulated/floor, /area/rnd/xenobiology) @@ -11328,16 +11499,12 @@ /turf/simulated/floor/tiled, /area/groundbase/command/hop) "GD" = ( -/obj/machinery/computer/supplycomp/control{ - dir = 8 +/obj/structure/grille, +/obj/structure/window/reinforced/polarized/full{ + id = "qm_office" }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/status_display/supply_display{ - pixel_x = 32 - }, -/turf/simulated/floor/wood, +/obj/machinery/door/firedoor, +/turf/simulated/floor, /area/groundbase/cargo/qm) "GE" = ( /obj/machinery/door/firedoor, @@ -11355,19 +11522,6 @@ /obj/machinery/microwave, /turf/simulated/floor/wood, /area/groundbase/dorms/room7) -"GH" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced, -/turf/simulated/floor, -/area/rnd/xenobiology) "GI" = ( /obj/effect/landmark{ name = "lightsout" @@ -11413,6 +11567,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/light, /turf/simulated/floor/tiled/white, /area/groundbase/medical/triage) "GO" = ( @@ -11913,6 +12068,15 @@ /obj/random/vendorall, /turf/simulated/floor/tiled/dark, /area/groundbase/dorms) +"If" = ( +/obj/structure/bed/chair/office/dark{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "Ig" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 @@ -12462,6 +12626,20 @@ }, /turf/simulated/floor/wood, /area/groundbase/civilian/library) +"JG" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/glass_mining{ + id_tag = "cargodoor"; + name = "Storage"; + req_access = list(31); + req_one_access = null + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "JH" = ( /obj/effect/landmark{ name = "morphspawn" @@ -12593,9 +12771,14 @@ /area/groundbase/medical/triage) "JW" = ( /obj/structure/table/standard, -/obj/machinery/photocopier/faxmachine{ - department = "Quartermaster-Office" +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/device/megaphone, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "JX" = ( @@ -12657,22 +12840,14 @@ /obj/machinery/light{ dir = 8 }, +/obj/machinery/injector_maker{ + pixel_x = -29 + }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/Chemistry) "Kg" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -12683,6 +12858,16 @@ name = "Pen 8 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "Kh" = ( @@ -12715,13 +12900,6 @@ /turf/simulated/floor/tiled, /area/groundbase/civilian/hydroponics) "Ki" = ( -/obj/structure/table/standard, -/obj/item/clothing/head/soft, -/obj/item/clothing/head/soft, -/obj/item/weapon/stamp{ - pixel_x = -3; - pixel_y = 3 - }, /obj/machinery/atmospherics/unary/vent_pump/on, /obj/machinery/camera/network/cargo, /turf/simulated/floor/tiled, @@ -12845,7 +13023,11 @@ /turf/simulated/floor/outdoors/sidewalk/side, /area/groundbase/level2/ne) "KB" = ( -/obj/structure/flora/pottedplant/minitree, +/obj/structure/bed/chair/office/dark, +/obj/effect/landmark/start/qm, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "KC" = ( @@ -12952,13 +13134,10 @@ /turf/simulated/floor, /area/maintenance/groundbase/substation/command) "KS" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/structure/flora/pottedplant/minitree, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "KU" = ( @@ -13441,15 +13620,16 @@ /turf/simulated/floor/tiled, /area/groundbase/science/rnd) "Mk" = ( -/obj/structure/table/standard, -/obj/item/clothing/head/soft, -/obj/item/clothing/head/soft, -/obj/item/weapon/stamp{ - pixel_x = -3; - pixel_y = 3 +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/power/apc{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" }, /turf/simulated/floor/tiled, -/area/groundbase/cargo/office) +/area/groundbase/cargo/storage) "Ml" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/power/apc{ @@ -13497,10 +13677,9 @@ /turf/simulated/floor/tiled/white, /area/groundbase/medical/lobby) "Mq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled/dark, /area/groundbase/dorms) "Mr" = ( @@ -13532,6 +13711,13 @@ /obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/white, /area/groundbase/medical/triage) +"Mv" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/closet/secure_closet/cargotech, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "Mw" = ( /obj/machinery/autolathe{ hacked = 1 @@ -13626,6 +13812,12 @@ }, /turf/simulated/floor/outdoors/grass/seasonal/notrees_nomobs_lowsnow, /area/groundbase/cargo/bay) +"MI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/tiled/dark, +/area/groundbase/civilian/bar) "MJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -13713,11 +13905,16 @@ /turf/simulated/floor/tiled, /area/rnd/xenobiology) "MW" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/polarized/full{ + id = "qm_office" + }, /obj/structure/disposalpipe/segment{ dir = 2; icon_state = "pipe-c" }, -/turf/simulated/wall, +/turf/simulated/floor, /area/groundbase/cargo/qm) "MX" = ( /obj/structure/closet/firecloset, @@ -13876,12 +14073,12 @@ }, /area/groundbase/level2/se) "Ns" = ( -/obj/machinery/alarm, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 }, -/turf/simulated/floor/wood, -/area/groundbase/cargo/qm) +/obj/structure/closet/secure_closet/cargotech, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/storage) "Nv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -13906,18 +14103,6 @@ /area/groundbase/civilian/chapel) "NA" = ( /obj/machinery/door/firedoor, -/obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -13928,6 +14113,17 @@ name = "Pen 3 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "NC" = ( @@ -14166,15 +14362,7 @@ /turf/simulated/floor/carpet/geo, /area/groundbase/civilian/kitchen/backroom) "Ok" = ( -/obj/machinery/power/apc{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, +/obj/structure/filingcabinet, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "Ol" = ( @@ -14307,6 +14495,10 @@ "OD" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/weapon/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; + name = "Chemistry Cleaner" + }, /turf/simulated/floor/tiled/white, /area/groundbase/medical/Chemistry) "OE" = ( @@ -14477,11 +14669,6 @@ name = "Trash"; sortType = "Trash" }, -/obj/structure/table/standard, -/obj/machinery/photocopier/faxmachine{ - department = "Cargo"; - pixel_y = 6 - }, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "Pc" = ( @@ -14732,6 +14919,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/tiled, /area/rnd/xenobiology) "PR" = ( @@ -14939,11 +15127,11 @@ /turf/simulated/floor/outdoors/grass/seasonal/dark/lowsnow, /area/groundbase/unexplored/outdoors) "Qv" = ( -/obj/machinery/vending/wardrobe/cargodrobe, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/machinery/light{ dir = 1 }, +/obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "Qw" = ( @@ -15038,6 +15226,9 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "QI" = ( @@ -15538,17 +15729,17 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/obj/structure/cable/yellow{ + icon_state = "2-8" }, /turf/simulated/wall, -/area/groundbase/cargo/office) +/area/groundbase/cargo/qm) "RY" = ( /obj/structure/noticeboard{ pixel_x = -32 @@ -15616,17 +15807,6 @@ "Sj" = ( /obj/machinery/door/firedoor, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/structure/grille, /obj/structure/disposalpipe/segment, /obj/machinery/door/blast/regular{ @@ -15637,6 +15817,16 @@ name = "Pen 1 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) "Sl" = ( @@ -15896,8 +16086,7 @@ /area/groundbase/science/xenohall) "SQ" = ( /obj/machinery/disposal/wall{ - dir = 1; - name = "Auto-Resleeving Item Deposit" + dir = 1 }, /obj/structure/disposalpipe/trunk{ dir = 4 @@ -15921,6 +16110,11 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/tiled, /area/rnd/xenobiology) +"SS" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/floor_decal/industrial/outline/yellow, +/turf/simulated/floor/tiled, +/area/groundbase/cargo/office) "ST" = ( /obj/machinery/camera/network/research/xenobio, /turf/simulated/floor/reinforced, @@ -16085,11 +16279,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced, /turf/simulated/floor/reinforced, @@ -16197,6 +16390,12 @@ /obj/effect/landmark/start/cargo, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) +"TR" = ( +/obj/machinery/firealarm{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/groundbase/cargo/qm) "TS" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/glass{ @@ -16503,11 +16702,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced{ dir = 1 @@ -16634,14 +16832,12 @@ /turf/simulated/wall/r_wall, /area/groundbase/science/picnic) "Vi" = ( -/obj/machinery/firealarm, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/polarized/full{ + id = "qm_office" }, -/obj/machinery/light{ - dir = 1 - }, -/turf/simulated/floor/wood, +/turf/simulated/floor, /area/groundbase/cargo/qm) "Vj" = ( /obj/structure/table/standard, @@ -16879,6 +17075,12 @@ /obj/machinery/light, /turf/simulated/floor/tiled/white, /area/groundbase/dorms/room4) +"VU" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/groundbase/medical/lobby) "VV" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -17053,6 +17255,10 @@ }, /turf/simulated/floor/outdoors/newdirt, /area/groundbase/level2/nw) +"Ws" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/wall/r_wall, +/area/groundbase/science/rnd) "Wu" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -17609,6 +17815,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, +/obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/groundbase/cargo/office) "Yd" = ( @@ -17999,6 +18206,20 @@ }, /turf/simulated/floor/tiled/dark, /area/groundbase/command/meeting) +"Zq" = ( +/obj/machinery/disposal/wall/cleaner{ + desc = "Automatically cleans and transports items to the local auto-resleeving facilities."; + dir = 8; + name = "auto-resleeving equipment deposit" + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/floor_decal/industrial/loading{ + dir = 4 + }, +/turf/simulated/floor/tiled/dark, +/area/groundbase/dorms) "Zr" = ( /obj/structure/closet/secure_closet/hydroponics{ req_access = list(77) @@ -18013,6 +18234,9 @@ /turf/simulated/floor/carpet/blue, /area/groundbase/medical/psych) "Zt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "Zv" = ( @@ -18081,9 +18305,6 @@ }, /area/groundbase/dorms/room6) "ZD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, /turf/simulated/floor/wood, /area/groundbase/cargo/qm) "ZE" = ( @@ -18130,16 +18351,13 @@ "ZK" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 8 + }, /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, +/obj/structure/window/reinforced, /turf/simulated/floor, /area/rnd/xenobiology) "ZL" = ( @@ -19636,7 +19854,7 @@ ST jA jA oM -GH +ZK ls iK ls @@ -20204,7 +20422,7 @@ ST jA jA UQ -GH +ZK ls iK ls @@ -20772,7 +20990,7 @@ ST jA jA tB -GH +ZK ls kN ls @@ -21340,11 +21558,11 @@ ST jA jA hl -GH +ZK ls iK ls -ZK +FO bb jA jA @@ -23384,7 +23602,7 @@ iE fW WY MY -MY +wi rP xE xE @@ -23464,7 +23682,7 @@ Tl UB Tl Ty -Tl +du Rh Fk AZ @@ -24104,7 +24322,7 @@ iB LV wd YR -YR +MI OC sH Uy @@ -24468,7 +24686,7 @@ Vr Vr sz Vr -Vr +uV XX xv Fx @@ -24491,8 +24709,8 @@ LN Xb BY eC -Mm -Yp +ed +uZ Ie aF Mm @@ -24871,7 +25089,7 @@ eN eN jG OY -OY +Ws gm rh dN @@ -24925,7 +25143,7 @@ Wu RP XK As -Mq +bE IX yc jW @@ -25067,7 +25285,7 @@ jr iP Dw Dw -Yp +Mq Sy Cu bN @@ -25209,7 +25427,7 @@ hZ iA aA iA -iA +nL Ca sk bN @@ -25351,7 +25569,7 @@ pK Yp Ct Ai -Yp +Zq eM Sq jM @@ -28909,11 +29127,11 @@ uP uP cK cK -cK -cK -cK -uP -to +Cz +Cz +GD +Vi +Cz RX It rv @@ -29051,12 +29269,12 @@ uP uP cK cK -cK -uP -uP -uP -to -mj +Cz +eV +JW +vE +kv +Ly up ea Ln @@ -29193,18 +29411,18 @@ to to iw to -to -to -to -to -to +Cz mj +KB +oR +If +Ly FR Lc Oi xK uS -qN +Lc FR FR Lc @@ -29336,10 +29554,10 @@ to to to Cz -Cz +qN sS gX -Cz +TR Ly Ef yb @@ -29365,9 +29583,9 @@ tw Ia yJ HU -Du +VU ty -Ud +sE fy ll br @@ -29479,9 +29697,9 @@ to OM Cz EQ -ZD +sS Zt -EX +ZD MW Wg gB @@ -29622,7 +29840,7 @@ to Cz Ok KS -QH +ly QH Jp Ug @@ -29762,16 +29980,16 @@ ks ks ks Cz -Vi -FJ -JW -eV +Cz +Cz +Cz +Cz Cz Ki za -za +SS Vu -Lc +lB rj dA XU @@ -29903,15 +30121,15 @@ ks ks ks ks -Cz -Ns +Bk +Ae vW lU -he -gX Mk -Lc -Lc +JG +ve +ve +ve yH gL Lc @@ -30045,19 +30263,19 @@ ks ks ks ks -Cz -GD +Bk +yd ot gk -KB -Cz +FE +Bk Qv -zp +tE zp Yc eL Lc -FR +ou Ta dv Wj @@ -30187,12 +30405,12 @@ UH ks ks ks -Cz -Cz -Cz -Cz -Cz -Cz +Bk +FJ +Ns +Mv +uA +Bk zX zX Lc @@ -30240,12 +30458,12 @@ oH oH oH oH -oH -oH -oH -oH -oH -oH +QD +QD +QD +QD +QD +QD Bo Bo Bo @@ -30329,12 +30547,12 @@ UH ks ks ks -ks -ks -ks -ks -ks -Wj +Bk +Bk +Bk +Bk +Bk +Bk dE dE Lc @@ -30382,10 +30600,10 @@ oH oH oH oH -oH -oH -oH -oH +QD +QD +QD +QD QD Bo Bo @@ -30476,7 +30694,7 @@ ks ks ks ks -Wj +Bk Wj oa oa @@ -30524,10 +30742,10 @@ oH oH oH oH -oH -oH -oH -oH +QD +QD +QD +QD QD Bo Bo @@ -30666,10 +30884,10 @@ oH oH oH oH -oH -oH -oH -oH +QD +QD +QD +QD Bo Bo Bo @@ -30808,10 +31026,10 @@ oH oH oH oH -oH +QD Bo -oH -oH +QD +QD Bo Bo Bo @@ -30921,7 +31139,7 @@ NC to to to -ki +vU nS Ur Yu @@ -31063,7 +31281,7 @@ NC to to to -ki +vU xo UV Yu @@ -31631,7 +31849,7 @@ NC to to to -ki +vU tt bx Yu @@ -31773,7 +31991,7 @@ NC to to to -ki +vU ua Ur Yu @@ -31923,7 +32141,7 @@ OD HR sW dr -dr +rw SH Fy fF diff --git a/maps/groundbase/gb-z3.dmm b/maps/groundbase/gb-z3.dmm index d63d4f6013..2e6f973701 100644 --- a/maps/groundbase/gb-z3.dmm +++ b/maps/groundbase/gb-z3.dmm @@ -906,13 +906,6 @@ outdoors = 0 }, /area/groundbase/level3/escapepad) -"oF" = ( -/turf/unsimulated/wall/planetary/normal{ - desc = "It's quite impassable"; - icon_state = "rock-dark"; - name = "impassable rock" - }, -/area/groundbase/level3/sw) "oI" = ( /obj/machinery/light{ dir = 1 @@ -3526,7 +3519,7 @@ Bg Bg Bg Bg -oF +Bg zh hO "} @@ -14061,11 +14054,11 @@ IS IS IS IS -IS -IS -IS -IS -IS +vs +vs +vs +sP +sP oK iT iT @@ -14203,11 +14196,11 @@ IS IS IS IS -IS -IS -IS -IS -IS +vs +vs +vs +sP +sP oK iT iT @@ -14345,11 +14338,11 @@ IS IS IS IS -IS -IS -IS -IS -IS +vs +vs +vs +sP +sP oK Px xs diff --git a/maps/groundbase/groundbase_areas.dm b/maps/groundbase/groundbase_areas.dm index f814f39053..8711fd73e7 100644 --- a/maps/groundbase/groundbase_areas.dm +++ b/maps/groundbase/groundbase_areas.dm @@ -337,6 +337,9 @@ /area/groundbase/cargo/office name = "Cargo Office" lightswitch = 1 +/area/groundbase/cargo/storage + name = "Cargo Storage" + lightswitch = 0 /area/groundbase/cargo/bay name = "Cargo Bay" lightswitch = 1 diff --git a/maps/groundbase/groundbase_events.dm b/maps/groundbase/groundbase_events.dm index 265e1faad3..e6d43a25fd 100644 --- a/maps/groundbase/groundbase_events.dm +++ b/maps/groundbase/groundbase_events.dm @@ -41,7 +41,7 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 50, list(ASSIGNMENT_JANITOR = 25), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Passing Wildlife", /datum/event/roaming_wildlife, 40, list(ASSIGNMENT_SECURITY = 20), min_jobs = list(ASSIGNMENT_SECURITY = 1)) + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Passing Wildlife", /datum/event/roaming_wildlife, 40, list(ASSIGNMENT_SECURITY = 20), min_jobs = list(ASSIGNMENT_SECURITY = 1)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), @@ -49,6 +49,9 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Shark", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Mob", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), )) /datum/event_container/moderate/New() @@ -67,7 +70,7 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Roaming Wildlife", /datum/event/roaming_wildlife, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)) + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Roaming Wildlife", /datum/event/roaming_wildlife, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), @@ -81,6 +84,9 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Stray Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), )) /datum/event_container/major/New() @@ -89,7 +95,7 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Amassing Wildlife", /datum/event/roaming_wildlife, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)) + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Amassing Wildlife", /datum/event/roaming_wildlife, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), @@ -98,6 +104,9 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Stray Rays", /datum/event/ray_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)), )) #undef ASSIGNMENT_ANY diff --git a/maps/stellar_delight/stellar_delight_events.dm b/maps/stellar_delight/stellar_delight_events.dm index d1a4de83b4..2f95fb5d12 100644 --- a/maps/stellar_delight/stellar_delight_events.dm +++ b/maps/stellar_delight/stellar_delight_events.dm @@ -37,6 +37,8 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), 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, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), @@ -84,6 +86,9 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), @@ -102,6 +107,9 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), diff --git a/maps/submaps/engine_submaps_vr/tether/engine_rust.dmm b/maps/submaps/engine_submaps_vr/tether/engine_rust.dmm index 5a10696352..e6b8ed1c95 100644 --- a/maps/submaps/engine_submaps_vr/tether/engine_rust.dmm +++ b/maps/submaps/engine_submaps_vr/tether/engine_rust.dmm @@ -12,11 +12,9 @@ "ad" = ( /obj/machinery/computer/general_air_control/supermatter_core{ dir = 1; - frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; - pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core"); throwpass = 1 }, @@ -35,7 +33,6 @@ desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; - pixel_x = 0; pixel_y = -3; req_access = list(10) }, @@ -83,10 +80,8 @@ "al" = ( /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineVent"; - name = "Reactor Vent"; - p_open = 0 + name = "Reactor Vent" }, /turf/simulated/floor/reinforced, /area/engineering/engine_room) @@ -94,9 +89,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) @@ -179,7 +172,6 @@ /area/engineering/engine_room) "aB" = ( /obj/machinery/light{ - icon_state = "tube1"; dir = 8 }, /turf/simulated/floor, @@ -256,8 +248,7 @@ "aM" = ( /obj/machinery/alarm{ dir = 8; - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /turf/simulated/floor, /area/engineering/engine_room) @@ -284,7 +275,6 @@ /area/engineering/engine_room) "aR" = ( /obj/machinery/atmospherics/unary/outlet_injector{ - unacidable = 1; use_power = 1 }, /turf/simulated/floor/reinforced, @@ -498,28 +488,24 @@ icon_state = "1-2" }, /obj/machinery/light{ - dir = 4; - icon_state = "tube1" + dir = 4 }, /turf/simulated/floor, /area/engineering/engine_room) "bv" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 5 }, /turf/simulated/floor, /area/engineering/engine_room) "bw" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /turf/simulated/floor, /area/engineering/engine_room) "bx" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 10 }, /turf/simulated/floor, @@ -570,7 +556,6 @@ id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = -25; - pixel_y = 0; req_access = list(10) }, /turf/simulated/floor, @@ -648,10 +633,6 @@ "bM" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -663,6 +644,9 @@ /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/engineering/engine_room) "bN" = ( @@ -709,9 +693,7 @@ /area/engineering/engine_room) "bT" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ - dir = 10; - icon_state = "intact"; - + dir = 10 }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor, @@ -723,9 +705,7 @@ "bV" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/pipe/manifold/visible/red{ - dir = 8; - icon_state = "map"; - + dir = 8 }, /turf/simulated/floor, /area/engineering/engine_room) @@ -767,10 +747,6 @@ "bZ" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -782,6 +758,9 @@ /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/engineering/engine_room) "ca" = ( @@ -806,7 +785,6 @@ "cd" = ( /obj/machinery/atmospherics/pipe/simple/visible/green, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /turf/simulated/floor, @@ -863,10 +841,6 @@ "ck" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -875,6 +849,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/engineering/engine_room) "cl" = ( @@ -1023,7 +1000,6 @@ /area/engineering/engine_room) "cB" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ - icon_state = "intact"; dir = 5 }, /obj/effect/floor_decal/industrial/warning/corner, @@ -1031,7 +1007,6 @@ /area/engineering/engine_room) "cC" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 6 }, /obj/effect/floor_decal/industrial/warning, @@ -1039,7 +1014,6 @@ /area/engineering/engine_room) "cD" = ( /obj/machinery/atmospherics/pipe/manifold/visible/red{ - icon_state = "map"; dir = 4 }, /obj/machinery/meter, @@ -1078,7 +1052,6 @@ desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; - pixel_x = 0; pixel_y = -25; req_access = null; req_one_access = list(11,24) @@ -1104,7 +1077,6 @@ /area/engineering/engine_room) "cM" = ( /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /turf/simulated/floor, @@ -1119,7 +1091,6 @@ id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_x = 22; - pixel_y = 0; req_access = list(10) }, /turf/simulated/floor, @@ -1127,7 +1098,6 @@ "cO" = ( /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineEmitterPortWest"; layer = 3.3; name = "Engine Gas Storage" @@ -1193,7 +1163,6 @@ desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; - pixel_x = 0; pixel_y = 25; req_access = null; req_one_access = list(11,24) @@ -1206,8 +1175,7 @@ /obj/structure/extinguisher_cabinet{ dir = 1; icon_state = "extinguisher_closed"; - pixel_y = 32; - + pixel_y = 32 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -1219,7 +1187,6 @@ /obj/machinery/button/remote/blast_door{ id = "EngineVent"; name = "Reactor Ventillatory Control"; - pixel_x = 0; pixel_y = -25; req_access = list(10) }, @@ -1245,7 +1212,6 @@ /area/engineering/engine_room) "dc" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 4 }, /obj/machinery/alarm{ @@ -1257,14 +1223,12 @@ /area/engineering/engine_room) "dd" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ - icon_state = "intact"; dir = 9 }, /turf/simulated/floor, /area/engineering/engine_room) "de" = ( /obj/item/device/radio/intercom{ - dir = 2; pixel_y = -24 }, /turf/simulated/floor, @@ -1294,13 +1258,11 @@ /obj/effect/floor_decal/industrial/outline/yellow, /obj/machinery/portable_atmospherics/canister/carbon_dioxide, /obj/machinery/light/small{ - dir = 4; - pixel_y = 0 + dir = 4 }, /obj/machinery/alarm{ dir = 8; - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -1308,8 +1270,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 + name = "HIGH VOLTAGE" }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) @@ -1317,8 +1278,7 @@ /obj/effect/floor_decal/industrial/outline/blue, /obj/machinery/portable_atmospherics/canister/phoron, /obj/machinery/light/small{ - dir = 8; - pixel_x = 0 + dir = 8 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -1393,7 +1353,6 @@ id = "EngineEmitterPortWest2"; name = "Engine Room Blast Doors"; pixel_x = 25; - pixel_y = 0; req_access = null; req_one_access = list(11,24) }, @@ -1403,9 +1362,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/template_noop) @@ -1413,7 +1370,6 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineEmitterPortWest2"; layer = 3.3; name = "Engine Gas Storage" @@ -1431,7 +1387,6 @@ }, /obj/machinery/door/blast/regular{ dir = 4; - icon_state = "pdoor1"; id = "EngineEmitterPortWest2"; layer = 3.3; name = "Engine Gas Storage" @@ -1480,7 +1435,6 @@ dir = 1 }, /obj/effect/floor_decal/industrial/warning{ - icon_state = "warning"; dir = 4 }, /turf/simulated/floor, diff --git a/maps/submaps/engine_submaps_vr/tether/engine_singulo.dmm b/maps/submaps/engine_submaps_vr/tether/engine_singulo.dmm index 805e0d6396..fa74a3912b 100644 --- a/maps/submaps/engine_submaps_vr/tether/engine_singulo.dmm +++ b/maps/submaps/engine_submaps_vr/tether/engine_singulo.dmm @@ -33,9 +33,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10; - icon_state = "intact"; - + dir = 10 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -86,10 +84,8 @@ "ao" = ( /obj/structure/closet/emcloset, /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1379; id_tag = "eng_north_airlock"; pixel_x = 24; - pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_north_pump"; tag_chamber_sensor = "eng_north_sensor"; @@ -101,9 +97,7 @@ "ap" = ( /obj/machinery/portable_atmospherics/canister/phoron, /obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 4; - icon_state = "map"; - + dir = 4 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -165,9 +159,7 @@ }, /obj/machinery/light/small, /obj/machinery/airlock_sensor{ - frequency = 1379; id_tag = "eng_north_sensor"; - pixel_x = 0; pixel_y = -25 }, /obj/structure/cable/cyan{ @@ -215,13 +207,10 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10; - icon_state = "intact"; - + dir = 10 }, /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -256,7 +245,6 @@ /area/engineering/engine_room) "ay" = ( /obj/structure/cable/cyan{ - d1 = 0; d2 = 4; icon_state = "0-4" }, @@ -300,20 +288,16 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) "aD" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; dir = 1 }, /obj/effect/floor_decal/industrial/warning/corner{ - icon_state = "warningcorner"; dir = 8 }, /turf/simulated/floor/tiled, @@ -347,8 +331,7 @@ /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor, /area/engineering/engine_room) @@ -434,10 +417,7 @@ }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/floor_decal/borderfloor{ - dir = 1; - icon_state = "borderfloor"; - pixel_y = 0; - + dir = 1 }, /obj/effect/floor_decal/corner/yellow/border{ dir = 1 @@ -539,9 +519,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5; - icon_state = "intact"; - + dir = 5 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -579,7 +557,6 @@ icon_state = "4-8" }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -611,9 +588,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 4; - icon_state = "map"; - + dir = 4 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -734,11 +709,10 @@ /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 1 }, /obj/structure/window/reinforced{ - dir = 1 + dir = 8 }, /turf/simulated/floor, /area/submap/pa_room) @@ -759,9 +733,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/submap/pa_room) @@ -798,9 +770,7 @@ icon_state = "1-2" }, /obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 + dir = 4 }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -822,10 +792,6 @@ "bn" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -834,6 +800,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "bo" = ( @@ -910,7 +879,6 @@ /area/template_noop) "bw" = ( /obj/effect/floor_decal/techfloor/orange/corner{ - icon_state = "techfloororange_corners"; dir = 4 }, /turf/simulated/floor/tiled/techfloor/grid, @@ -1090,22 +1058,18 @@ req_access = list(10) }, /obj/machinery/button/remote/blast_door{ - name = "Engine Monitoring Room Blast Doors"; desc = "A remote control-switch for the engine control room blast doors."; + id = "EngineBlast"; + name = "Engine Monitoring Room Blast Doors"; pixel_x = 5; pixel_y = 7; - req_access = list(10); - id = "EngineBlast" + req_access = list(10) }, /turf/template_noop, /area/template_noop) "bP" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -1115,6 +1079,9 @@ }, /obj/machinery/door/firedoor/glass, /obj/effect/floor_decal/techfloor/orange/corner, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "bQ" = ( @@ -1139,7 +1106,6 @@ /area/submap/pa_room) "bU" = ( /obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; dir = 6 }, /turf/simulated/floor/tiled/techfloor, @@ -1152,7 +1118,6 @@ /area/submap/pa_room) "bW" = ( /obj/effect/floor_decal/techfloor/orange{ - icon_state = "techfloororange_edges"; dir = 6 }, /turf/simulated/floor/tiled/techfloor/grid, @@ -1173,8 +1138,7 @@ "bY" = ( /obj/machinery/alarm{ dir = 8; - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /obj/effect/floor_decal/steeldecal/steel_decals8, /turf/simulated/floor/tiled, @@ -1183,11 +1147,10 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "ca" = ( @@ -1201,9 +1164,7 @@ icon_state = "1-2" }, /obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 + dir = 4 }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -1315,7 +1276,6 @@ icon_state = "4-8" }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - icon_state = "steel_decals_central5"; dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -1336,16 +1296,13 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact"; - + dir = 9 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -1486,9 +1443,7 @@ id_tag = "eng_south_pump" }, /obj/machinery/airlock_sensor{ - frequency = 1379; id_tag = "eng_south_sensor"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/cyan{ @@ -1539,13 +1494,10 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact"; - + dir = 9 }, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/yellow/border, @@ -1603,10 +1555,8 @@ "cB" = ( /obj/structure/closet/emcloset, /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1379; id_tag = "eng_south_airlock"; pixel_x = 24; - pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_south_pump"; tag_chamber_sensor = "eng_south_sensor"; diff --git a/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm b/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm index 9aa7ed41fe..0b831f3f23 100644 --- a/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm +++ b/maps/submaps/engine_submaps_vr/tether/engine_sme.dmm @@ -832,10 +832,6 @@ "bP" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -847,6 +843,9 @@ /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/engineering/engine_room) "bQ" = ( @@ -954,10 +953,6 @@ "ce" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -969,6 +964,9 @@ /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/engineering/engine_room) "cf" = ( @@ -1049,10 +1047,6 @@ "cp" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -1061,6 +1055,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/engineering/engine_room) "cq" = ( diff --git a/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm b/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm index c4b683b221..d77345121a 100644 --- a/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm +++ b/maps/submaps/engine_submaps_vr/tether/engine_tesla.dmm @@ -35,8 +35,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10; - icon_state = "intact" + dir = 10 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -87,10 +86,8 @@ "ao" = ( /obj/structure/closet/emcloset, /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1379; id_tag = "eng_north_airlock"; pixel_x = 24; - pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_north_pump"; tag_chamber_sensor = "eng_north_sensor"; @@ -101,8 +98,7 @@ /area/engineering/engine_room) "ap" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 4; - icon_state = "map" + dir = 4 }, /turf/simulated/floor, /area/engineering/engine_gas) @@ -168,9 +164,7 @@ }, /obj/machinery/light/small, /obj/machinery/airlock_sensor{ - frequency = 1379; id_tag = "eng_north_sensor"; - pixel_x = 0; pixel_y = -25 }, /obj/structure/cable/cyan{ @@ -218,12 +212,10 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 10; - icon_state = "intact" + dir = 10 }, /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -258,7 +250,6 @@ /area/engineering/engine_room) "ay" = ( /obj/structure/cable/cyan{ - d1 = 0; d2 = 4; icon_state = "0-4" }, @@ -305,17 +296,14 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/engineering/engine_room) "aD" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/effect/floor_decal/industrial/warning/corner{ - dir = 1; - icon_state = "warningcorner" + dir = 1 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -422,9 +410,7 @@ }, /obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/effect/floor_decal/borderfloor{ - dir = 1; - icon_state = "borderfloor"; - pixel_y = 0 + dir = 1 }, /obj/effect/floor_decal/corner/yellow/border{ dir = 1 @@ -497,8 +483,7 @@ /area/space) "aQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 5; - icon_state = "intact" + dir = 5 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -532,8 +517,7 @@ /area/engineering/engine_room) "aU" = ( /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - dir = 8; - icon_state = "steel_decals_central5" + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -559,8 +543,7 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/manifold/hidden{ - dir = 4; - icon_state = "map" + dir = 4 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -593,10 +576,6 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 1 }, @@ -607,6 +586,9 @@ name = "Engine Radiator Viewport Shutter"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "aZ" = ( @@ -650,10 +632,6 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced, /obj/machinery/door/blast/regular{ density = 0; @@ -662,6 +640,9 @@ name = "Engine Radiator Viewport Shutter"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "be" = ( @@ -688,9 +669,7 @@ /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 + name = "RADIOACTIVE AREA" }, /turf/simulated/wall/r_wall, /area/submap/pa_room) @@ -704,7 +683,6 @@ icon_state = "0-4" }, /obj/structure/cable/yellow{ - d1 = 0; d2 = 8; icon_state = "0-8" }, @@ -731,9 +709,7 @@ icon_state = "1-2" }, /obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 + dir = 4 }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -755,10 +731,6 @@ "bn" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -767,6 +739,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "bo" = ( @@ -848,8 +823,7 @@ /area/template_noop) "bw" = ( /obj/effect/floor_decal/techfloor/orange/corner{ - dir = 4; - icon_state = "techfloororange_corners" + dir = 4 }, /turf/simulated/floor/tiled/techfloor/grid, /area/submap/pa_room) @@ -918,10 +892,6 @@ "bF" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/blast/regular{ density = 0; icon_state = "pdoor0"; @@ -935,6 +905,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor, /area/submap/pa_room) "bG" = ( @@ -1088,8 +1061,7 @@ /area/submap/pa_room) "bU" = ( /obj/effect/floor_decal/techfloor/orange{ - dir = 6; - icon_state = "techfloororange_edges" + dir = 6 }, /turf/simulated/floor/tiled/techfloor, /area/submap/pa_room) @@ -1110,8 +1082,7 @@ /area/submap/pa_room) "bX" = ( /obj/effect/floor_decal/techfloor/orange{ - dir = 6; - icon_state = "techfloororange_edges" + dir = 6 }, /obj/structure/cable/yellow{ d1 = 1; @@ -1123,8 +1094,7 @@ "bY" = ( /obj/machinery/alarm{ dir = 8; - pixel_x = 25; - pixel_y = 0 + pixel_x = 25 }, /obj/effect/floor_decal/steeldecal/steel_decals8, /obj/structure/table/standard, @@ -1159,9 +1129,7 @@ icon_state = "1-2" }, /obj/machinery/light{ - dir = 4; - icon_state = "tube1"; - pixel_x = 0 + dir = 4 }, /obj/effect/floor_decal/borderfloor{ dir = 4 @@ -1246,8 +1214,7 @@ "ci" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/effect/floor_decal/industrial/warning/corner{ - dir = 8; - icon_state = "warningcorner" + dir = 8 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -1258,8 +1225,7 @@ icon_state = "4-8" }, /obj/effect/floor_decal/steeldecal/steel_decals_central5{ - dir = 8; - icon_state = "steel_decals_central5" + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 @@ -1279,15 +1245,13 @@ icon_state = "1-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9; - pixel_y = 0 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact" + dir = 9 }, /turf/simulated/floor/tiled, /area/engineering/engine_room) @@ -1422,9 +1386,7 @@ id_tag = "eng_south_pump" }, /obj/machinery/airlock_sensor{ - frequency = 1379; id_tag = "eng_south_sensor"; - pixel_x = 0; pixel_y = 25 }, /obj/structure/cable/cyan{ @@ -1475,12 +1437,10 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/hidden{ - dir = 9; - icon_state = "intact" + dir = 9 }, /obj/effect/floor_decal/borderfloor, /obj/effect/floor_decal/corner/yellow/border, @@ -1538,10 +1498,8 @@ "cB" = ( /obj/structure/closet/emcloset, /obj/machinery/embedded_controller/radio/airlock/airlock_controller{ - frequency = 1379; id_tag = "eng_south_airlock"; pixel_x = 24; - pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_south_pump"; tag_chamber_sensor = "eng_south_sensor"; @@ -1565,7 +1523,6 @@ dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; - layer = 2.7; name = "Reactor Blast Door"; opacity = 0 }, @@ -1573,8 +1530,7 @@ /obj/structure/grille, /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor, /area/engineering/engine_room) diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index d369285498..be6b4515a9 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -4098,9 +4098,7 @@ name = "north bump"; pixel_y = 28 }, -/mob/living/simple_mob/vore/aggressive/rat{ - ai_holder_type = /datum/ai_holder/simple_mob/retaliate - }, +/mob/living/simple_mob/vore/aggressive/rat/pet, /turf/simulated/floor/plating, /area/maintenance/lower/trash_pit) "agR" = ( diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index f2cff1bcb7..d2fb9d4635 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -121,10 +121,6 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /turf/simulated/floor/plating, /area/tether/surfacebase/medical/centralhall) "aak" = ( @@ -20230,10 +20226,6 @@ /obj/machinery/door/firedoor, /obj/structure/grille, /obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -29994,10 +29986,6 @@ /area/rnd/outpost/xenobiology/outpost_slimepens) "bel" = ( /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -30014,6 +30002,9 @@ name = "Pen 1 Blast Doors"; opacity = 0 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bem" = ( @@ -30260,10 +30251,6 @@ /area/rnd/outpost/xenobiology/outpost_slimepens) "bfl" = ( /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -30283,6 +30270,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bfm" = ( @@ -30509,10 +30499,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -30520,19 +30506,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/reinforced, -/area/rnd/outpost/xenobiology/outpost_slimepens) -"bgm" = ( -/obj/machinery/disposal, -/obj/structure/window/reinforced, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/simulated/floor/tiled/dark, +/turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bgn" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -30580,10 +30557,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -30591,6 +30564,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bgs" = ( @@ -30841,11 +30817,10 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bhL" = ( @@ -30884,11 +30859,10 @@ dir = 1 }, /obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_slimepens) "bhQ" = ( @@ -31132,10 +31106,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -31143,6 +31113,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "biN" = ( @@ -31168,10 +31141,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -31179,6 +31148,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "biR" = ( @@ -31380,12 +31352,11 @@ /obj/structure/window/reinforced{ dir = 1 }, +/obj/structure/grille, +/obj/structure/grille, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, -/obj/structure/grille, -/obj/structure/grille, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bjH" = ( @@ -31612,10 +31583,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -31623,18 +31590,20 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bkv" = ( /obj/machinery/disposal, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced, /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_slimepens) "bkw" = ( @@ -31651,10 +31620,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -31779,11 +31744,10 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bkQ" = ( @@ -32215,10 +32179,6 @@ "bmc" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -32233,6 +32193,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bmd" = ( @@ -32270,10 +32233,6 @@ }, /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -32281,6 +32240,9 @@ dir = 1 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/reinforced, /area/rnd/outpost/xenobiology/outpost_slimepens) "bmi" = ( @@ -32314,10 +32276,6 @@ "bml" = ( /obj/structure/window/reinforced/full, /obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -32330,6 +32288,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_slimepens) "bmm" = ( @@ -32359,10 +32320,6 @@ "bmp" = ( /obj/structure/window/reinforced/full, /obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -32375,6 +32332,9 @@ opacity = 0 }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/tiled/dark, /area/rnd/outpost/xenobiology/outpost_slimepens) "bmq" = ( @@ -40721,11 +40681,11 @@ bem beI bfm bfK -bgm +bkv bgY bhL bin -bgm +bkv bjm bhL bjV diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index dc4620fa0a..653eccfe25 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -27,8 +27,7 @@ open_layer = 1 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor/plating, /area/tether/surfacebase/medical/uppernorthstairwell{ @@ -223,11 +222,10 @@ open_layer = 1 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /turf/simulated/floor/plating, /area/tether/surfacebase/medical/uppernorthstairwell{ @@ -974,10 +972,6 @@ req_access = list(); req_one_access = list(5,24) }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /turf/simulated/floor/tiled/white, /area/tether/surfacebase/medical/triage) "aby" = ( @@ -1513,8 +1507,7 @@ dir = 4 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor/tiled, /area/rnd/xenobiology/xenoflora_storage) @@ -3402,8 +3395,7 @@ open_layer = 1 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor/plating, /area/tether/surfacebase/medical/triage) @@ -3888,11 +3880,10 @@ open_layer = 1 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 4 }, /obj/structure/window/reinforced{ - dir = 4 + dir = 8 }, /turf/simulated/floor/plating, /area/tether/surfacebase/medical/triage) @@ -7657,11 +7648,10 @@ "alH" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/door/firedoor/glass, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/plating, /area/rnd/outpost/xenobiology/outpost_hallway) "alI" = ( @@ -19454,10 +19444,6 @@ /obj/structure/window/reinforced/full, /obj/structure/grille, /obj/machinery/door/firedoor/glass, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/structure/window/reinforced{ dir = 4 }, @@ -30870,12 +30856,11 @@ name = "Colony Director's Storage"; req_access = list(20) }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/item/clothing/head/helmet/space/void/captain, /obj/item/clothing/suit/space/void/captain, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/wood, /area/crew_quarters/captain) "bag" = ( @@ -42027,8 +42012,7 @@ open_layer = 1 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor/plating, /area/tether/surfacebase/medical/storage) @@ -44588,6 +44572,24 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_three_hall) +"xan" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/grille, +/obj/structure/window/reinforced/full, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/rnd/xenobiology/xenoflora_storage) "xaU" = ( /obj/machinery/power/apc{ dir = 4; @@ -61307,7 +61309,7 @@ aaq afS ack aeF -ack +xan afS afS afS diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 44acb0ecdb..0105eaff52 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -7695,11 +7695,10 @@ /obj/effect/floor_decal/corner_techfloor_grid, /obj/effect/floor_decal/techfloor/corner, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 1 }, /obj/structure/window/reinforced{ - dir = 1 + dir = 8 }, /turf/simulated/floor/tiled/techmaint, /area/engineering/gravity_gen) @@ -10521,16 +10520,6 @@ "aAW" = ( /turf/simulated/wall, /area/crew_quarters/sleep/engi_wash) -"aBa" = ( -/obj/effect/floor_decal/techfloor{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, -/turf/simulated/floor/tiled/techmaint, -/area/engineering/gravity_gen) "aBe" = ( /turf/simulated/wall, /area/quartermaster/warehouse) @@ -13264,7 +13253,7 @@ frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; - sensors = list("dist_main_meter" = "Surface - Distribution Loop", "scrub_main_meter" = "Surface - Scrubbers Loop", "mair_main_meter" = "Surface - Mixed Air Tank", "dist_aux_meter" = "Station - Distribution Loop", "scrub_aux_meter" = "Station - Scrubbers Loop", "mair_aux_meter" = "Station - Mixed Air Tank", "mair_mining_meter" = "Mining Outpost - Mixed Air Tank") + sensors = list("dist_main_meter"="Surface - Distribution Loop","scrub_main_meter"="Surface - Scrubbers Loop","mair_main_meter"="Surface - Mixed Air Tank","dist_aux_meter"="Station - Distribution Loop","scrub_aux_meter"="Station - Scrubbers Loop","mair_aux_meter"="Station - Mixed Air Tank","mair_mining_meter"="Mining Outpost - Mixed Air Tank") }, /turf/simulated/floor/tiled, /area/engineering/engineering_monitoring) @@ -13593,11 +13582,10 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 - }, /obj/machinery/atmospherics/unary/vent_pump/on, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/simulated/floor/tiled/techmaint, /area/engineering/gravity_gen) "aYF" = ( @@ -14336,6 +14324,7 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 }, +/obj/item/device/multitool/station_buffered, /turf/simulated/floor/tiled, /area/ai_monitored/storage/eva) "bkU" = ( @@ -14916,6 +14905,37 @@ dir = 1; pixel_y = -24 }, +/obj/structure/table/rack/shelf, +/obj/item/device/radio/headset/explorer{ + pixel_x = -5; + pixel_y = -5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_y = 5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_x = 11; + pixel_y = 5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_x = 11; + pixel_y = -5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/device/radio/headset/explorer{ + pixel_y = -5 + }, /turf/simulated/floor/tiled, /area/gateway/prep_room) "bHV" = ( @@ -19332,14 +19352,14 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/gear) "gbR" = ( -/obj/machinery/atmospherics/portables_connector{ - dir = 1 - }, /obj/machinery/portable_atmospherics/canister/phoron, /obj/effect/floor_decal/fancy_shuttle{ fancy_shuttle_tag = "secbus"; name = "secbus" }, +/obj/machinery/atmospherics/portables_connector/fuel{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/shuttle/securiship/engines) "gcc" = ( @@ -24201,7 +24221,7 @@ /area/gateway/prep_room) "kHf" = ( /obj/machinery/conveyor_switch/oneway{ - convdir = -1; + //convdir = -1; //Incompatable with new behavior -Reo id = "QMLoad2" }, /obj/machinery/light{ @@ -24779,6 +24799,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/item/device/radio/headset/explorer, /turf/simulated/floor, /area/tether/exploration/pilot_office) "lfI" = ( @@ -25819,6 +25840,7 @@ /obj/machinery/alarm{ pixel_y = 22 }, +/obj/item/device/radio/headset/explorer, /turf/simulated/floor, /area/tether/exploration/pilot_office) "mdh" = ( @@ -42718,11 +42740,11 @@ aac ank aox arc -aBa -aBa aHe -aBa -aBa +aHe +aHe +aHe +aHe aYA bqT akA diff --git a/maps/tether/tether-07-solars.dmm b/maps/tether/tether-07-solars.dmm index e2f98cd044..74d262bf7c 100644 --- a/maps/tether/tether-07-solars.dmm +++ b/maps/tether/tether-07-solars.dmm @@ -6950,8 +6950,7 @@ pixel_x = 1 }, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor/tiled, /area/rnd/outpost/anomaly_lab) @@ -7109,8 +7108,7 @@ "nj" = ( /obj/structure/filingcabinet/chestdrawer, /obj/structure/window/reinforced{ - dir = 8; - health = 1e+006 + dir = 8 }, /turf/simulated/floor/tiled, /area/rnd/outpost/anomaly_lab) diff --git a/maps/tether/tether_events.dm b/maps/tether/tether_events.dm index b6dc85c1e0..32971312b1 100644 --- a/maps/tether/tether_events.dm +++ b/maps/tether/tether_events.dm @@ -37,6 +37,8 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), 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, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), @@ -84,6 +86,9 @@ new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), ) add_disabled_events(list( new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), @@ -102,6 +107,9 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), ) add_disabled_events(list( diff --git a/sound/voice/FerretDook.ogg b/sound/voice/FerretDook.ogg new file mode 100644 index 0000000000..629bed2f1a Binary files /dev/null and b/sound/voice/FerretDook.ogg differ diff --git a/sound/voice/roarbark.ogg b/sound/voice/roarbark.ogg new file mode 100644 index 0000000000..adb3b23639 Binary files /dev/null and b/sound/voice/roarbark.ogg differ diff --git a/vorestation.dme b/vorestation.dme index e9eac15dc6..45a8dd11b4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1447,6 +1447,7 @@ #include "code\game\objects\items\weapons\melee\energy_vr.dm" #include "code\game\objects\items\weapons\melee\misc.dm" #include "code\game\objects\items\weapons\melee\misc_vr.dm" +#include "code\game\objects\items\weapons\melee\shock_maul.dm" #include "code\game\objects\items\weapons\storage\backpack.dm" #include "code\game\objects\items\weapons\storage\backpack_vr.dm" #include "code\game\objects\items\weapons\storage\bags.dm" @@ -1562,7 +1563,6 @@ #include "code\game\objects\structures\window.dm" #include "code\game\objects\structures\window_spawner.dm" #include "code\game\objects\structures\window_vr.dm" -#include "code\game\objects\structures\alien\alien egg.dm" #include "code\game\objects\structures\alien\alien.dm" #include "code\game\objects\structures\alien\resin structures.dm" #include "code\game\objects\structures\crates_lockers\__closets.dm" @@ -1612,6 +1612,7 @@ #include "code\game\objects\structures\flora\grass.dm" #include "code\game\objects\structures\flora\moretrees_vr.dm" #include "code\game\objects\structures\flora\trees.dm" +#include "code\game\objects\structures\ghost_pods\antagonist.dm" #include "code\game\objects\structures\ghost_pods\event_vr.dm" #include "code\game\objects\structures\ghost_pods\ghost_pods.dm" #include "code\game\objects\structures\ghost_pods\ghost_pods_vr.dm" @@ -2301,6 +2302,7 @@ #include "code\modules\events\event_container.dm" #include "code\modules\events\event_dynamic.dm" #include "code\modules\events\event_manager.dm" +#include "code\modules\events\gnat_migration.dm" #include "code\modules\events\gravity.dm" #include "code\modules\events\grid_check.dm" #include "code\modules\events\grubinfestation_vr.dm" @@ -2318,8 +2320,10 @@ #include "code\modules\events\prison_break.dm" #include "code\modules\events\radiation_storm.dm" #include "code\modules\events\random_antagonist.dm" +#include "code\modules\events\ray_migration.dm" #include "code\modules\events\roaming_wildlife.dm" #include "code\modules\events\rogue_drones.dm" +#include "code\modules\events\shark_migration.dm" #include "code\modules\events\shipping_error.dm" #include "code\modules\events\solar_storm.dm" #include "code\modules\events\space_ninja.dm" @@ -3176,8 +3180,11 @@ #include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\gaslamp_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\gnat.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose_vr.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\ray.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\shark.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\snake_vr.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\space\space_vr.dm" @@ -4324,6 +4331,7 @@ #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" +#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\engine_submaps\engine.dm"