mirror of
https://github.com/Yawn-Wider/YWPolarisVore.git
synced 2026-08-28 07:26:42 +01:00
Merge branch 'release' of https://github.com/VOREStation/VOREStation into izac
This commit is contained in:
@@ -112,10 +112,11 @@ SUBSYSTEM_DEF(transcore)
|
||||
if(since_backup < overdue_time)
|
||||
curr_MR.dead_state = MR_NORMAL
|
||||
else
|
||||
if(curr_MR.dead_state != MR_DEAD) //First time switching to dead
|
||||
/* if(curr_MR.dead_state != MR_DEAD) //First time switching to dead //Remove auto notification! Ghosts have a button to notify, so no more false flags.
|
||||
if(curr_MR.do_notify)
|
||||
db.notify(curr_MR)
|
||||
curr_MR.last_notification = world.time
|
||||
*/
|
||||
curr_MR.dead_state = MR_DEAD
|
||||
|
||||
if(MC_TICK_CHECK)
|
||||
|
||||
@@ -60,10 +60,8 @@
|
||||
/datum/crafting_recipe/scopedrifle
|
||||
name = "Bolt scope to bolt-action (cannot be removed)"
|
||||
result = /obj/item/weapon/gun/projectile/shotgun/pump/rifle/scoped
|
||||
reqs = list(
|
||||
/obj/item/device/binoculars/scope = 1,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 1
|
||||
)
|
||||
reqs = list(list(/obj/item/device/binoculars/scope = 1),
|
||||
list(/obj/item/weapon/gun/projectile/shotgun/pump/rifle = 1))
|
||||
time = 180
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
@@ -228,6 +228,9 @@
|
||||
if(!temp)
|
||||
to_chat(user, "<span class='notice'>You try to use your hand, but realize it is no longer attached!</span>")
|
||||
return
|
||||
if(istype(src, /obj/item/weapon/holder))
|
||||
var/obj/item/weapon/holder/D = src
|
||||
if(D.held_mob == user) return // No picking your own micro self up
|
||||
|
||||
var/old_loc = src.loc
|
||||
if (istype(src.loc, /obj/item/weapon/storage))
|
||||
|
||||
@@ -298,7 +298,8 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
|
||||
/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels)
|
||||
/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels, var/states) //VOREStation Edit
|
||||
|
||||
if(!GLOB.autospeaker)
|
||||
return
|
||||
var/datum/radio_frequency/connection = null
|
||||
@@ -314,12 +315,15 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
|
||||
if(!LAZYLEN(zlevels))
|
||||
zlevels = list(0)
|
||||
|
||||
//VOREStation Edit Start
|
||||
if(!states)
|
||||
states = "states"
|
||||
//VOREStation Edit End
|
||||
GLOB.autospeaker.SetName(from)
|
||||
Broadcast_Message(connection, GLOB.autospeaker,
|
||||
0, "*garbled automated announcement*", src,
|
||||
message_to_multilingual(message), from, "Automated Announcement", from, "synthesized voice",
|
||||
DATA_FAKE, 0, zlevels, connection.frequency, "states")
|
||||
DATA_FAKE, 0, zlevels, connection.frequency, states) //VOREStation Edit
|
||||
|
||||
// Interprets the message mode when talking into a radio, possibly returning a connection datum
|
||||
/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, list/message_pieces, message_mode)
|
||||
|
||||
@@ -33,6 +33,27 @@
|
||||
options["Stun Revolver"] = list(/obj/item/weapon/gun/energy/stunrevolver/detective, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon)
|
||||
options["Taser"] = list(/obj/item/weapon/gun/energy/taser, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon)
|
||||
var/choice = tgui_input_list(user,"Please, select an option.", "Stun Gun!", options)
|
||||
if(src && choice)
|
||||
var/list/things_to_spawn = options[choice]
|
||||
for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo.
|
||||
var/atom/movable/AM = new new_type(get_turf(src))
|
||||
if(istype(AM, /obj/item/weapon/gun))
|
||||
to_chat(user, "You have chosen \the [AM]. Say hello to your new friend.")
|
||||
qdel(src)
|
||||
|
||||
/*
|
||||
* CentCom Pistol
|
||||
*/
|
||||
/obj/item/gunbox/centcom
|
||||
name = "centcom sidearm box"
|
||||
desc = "A secure box containing a lethal sidearm used by Central Command."
|
||||
w_class = ITEMSIZE_HUGE
|
||||
/obj/item/gunbox/centcom/attack_self(mob/living/user)
|
||||
var/list/options = list()
|
||||
options["Écureuil (10mm)"] = list(/obj/item/weapon/gun/projectile/ecureuil, /obj/item/ammo_magazine/m10mm/pistol, /obj/item/ammo_magazine/m10mm/pistol)
|
||||
options["Écureuil Olive (10mm)"] = list(/obj/item/weapon/gun/projectile/ecureuil/tac, /obj/item/ammo_magazine/m10mm/pistol, /obj/item/ammo_magazine/m10mm/pistol)
|
||||
options["Écureuil Tan (10mm)"] = list(/obj/item/weapon/gun/projectile/ecureuil/tac2, /obj/item/ammo_magazine/m10mm/pistol, /obj/item/ammo_magazine/m10mm/pistol)
|
||||
var/choice = tgui_input_list(user,"Please, select an option.", "Gun!", options)
|
||||
if(src && choice)
|
||||
var/list/things_to_spawn = options[choice]
|
||||
for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo.
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
var/max_w_class = ITEMSIZE_SMALL //Max size of objects that this object can store (in effect only if can_hold isn't set)
|
||||
var/max_storage_space = ITEMSIZE_COST_SMALL * 4 //The sum of the storage costs of all the items in this storage item.
|
||||
var/storage_slots = null //The number of storage slots in this container. If null, it uses the volume-based storage instead.
|
||||
|
||||
|
||||
/// Boxes screen object for fixed-size storage (belts, etc)
|
||||
var/obj/screen/storage/boxes = null
|
||||
/// List of 'click catchers' for boxes for fixed-size storage
|
||||
@@ -37,8 +37,8 @@
|
||||
var/obj/screen/storage/storage_continue = null
|
||||
/// For dynamic storage, the rightmost pixel column for the whole storage display. Decorative.
|
||||
var/obj/screen/storage/storage_end = null
|
||||
|
||||
/// The "X" button at the far right of the storage
|
||||
|
||||
/// The "X" button at the far right of the storage
|
||||
var/obj/screen/close/closer = null
|
||||
|
||||
var/use_to_pickup //Set this to make it possible to use this item in an inverse way, so you can have the item in your hand and click items on the floor to pick them up.
|
||||
@@ -189,12 +189,12 @@
|
||||
return
|
||||
if(user.s_active)
|
||||
user.s_active.hide_from(user)
|
||||
|
||||
|
||||
var/client/C = user.client
|
||||
if(!C)
|
||||
return
|
||||
|
||||
if(storage_slots)
|
||||
if(storage_slots)
|
||||
C.screen += src.boxes
|
||||
create_slot_catchers()
|
||||
C.screen += src.box_catchers
|
||||
@@ -202,7 +202,7 @@
|
||||
C.screen += src.storage_start
|
||||
C.screen += src.storage_continue
|
||||
C.screen += src.storage_end
|
||||
|
||||
|
||||
C.screen += src.closer
|
||||
C.screen += src.contents
|
||||
|
||||
@@ -212,12 +212,12 @@
|
||||
/obj/item/weapon/storage/proc/hide_from(mob/user as mob)
|
||||
var/client/C = user.client
|
||||
LAZYREMOVE(is_seeing,user)
|
||||
|
||||
|
||||
if(!C)
|
||||
if(!LAZYLEN(is_seeing))
|
||||
clear_slot_catchers()
|
||||
return
|
||||
|
||||
|
||||
if(storage_slots)
|
||||
C.screen -= src.boxes
|
||||
C.screen -= src.box_catchers
|
||||
@@ -225,13 +225,13 @@
|
||||
C.screen -= src.storage_start
|
||||
C.screen -= src.storage_continue
|
||||
C.screen -= src.storage_end
|
||||
|
||||
|
||||
C.screen -= src.closer
|
||||
C.screen -= src.contents
|
||||
|
||||
|
||||
if(user.s_active == src)
|
||||
user.s_active = null
|
||||
|
||||
|
||||
if(!LAZYLEN(is_seeing))
|
||||
clear_slot_catchers()
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
|
||||
/obj/item/weapon/storage/proc/space_orient_objs(var/list/obj/item/display_contents)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
|
||||
|
||||
/// A prototype for drawing the leftmost border behind each item in storage
|
||||
var/static/mutable_appearance/stored_start
|
||||
/// A prototype for drawing the wide backing space behind each item in storage
|
||||
@@ -856,7 +856,7 @@
|
||||
ASSERT(held_item)
|
||||
name += held_item.name
|
||||
src.held_item = weakref(held_item)
|
||||
|
||||
|
||||
/atom/movable/storage_slot/Destroy()
|
||||
held_item = null
|
||||
|
||||
@@ -869,4 +869,33 @@
|
||||
var/obj/item/I = held_item?.resolve()
|
||||
if(I)
|
||||
usr.ClickOn(I)
|
||||
return 1
|
||||
return 1
|
||||
|
||||
// Allows micros to drag themselves into storage items
|
||||
/obj/item/weapon/storage/MouseDrop_T(mob/living/target, mob/living/user)
|
||||
if(!istype(user)) return // If the user passed in isn't a living mob, exit
|
||||
if(target != user) return // If the user didn't drag themselves, exit
|
||||
if(user.incapacitated() || user.buckled) return // If user is incapacitated or buckled, exit
|
||||
if(get_holder_of_type(src, /mob/living/carbon/human) == user) return // No jumping into your own equipment
|
||||
if(ishuman(user) && user.get_effective_size() > 0.25) return // Only micro characters
|
||||
if(ismouse(user) && user.get_effective_size() > 1) return // Only normal sized mice or less
|
||||
|
||||
// Create a dummy holder with user's size to test insertion
|
||||
var/obj/item/weapon/holder/D = new/obj/item/weapon/holder
|
||||
if(ismouse(user))
|
||||
D.w_class = ITEMSIZE_TINY // Mouse smol
|
||||
else if(ishuman(user))
|
||||
D.w_class = ITEMSIZE_SMALL // Players small
|
||||
else // Other creatures not accepted at this time
|
||||
qdel(D) // If there's a better way to check the size of a
|
||||
return // mob's holder and if it fits, replace this slab
|
||||
if(!src.can_be_inserted(D, 1)) // If the dummy item doesn't fit, exit
|
||||
qdel(D)
|
||||
return
|
||||
qdel(D)
|
||||
|
||||
// Scoop and insert target into storage
|
||||
var/obj/item/weapon/holder/H = new user.holder_type(get_turf(user), user)
|
||||
src.handle_item_insertion(H, 1)
|
||||
to_chat(user, "<span class='notice'>You climb into \the [src].</span>")
|
||||
return ..()
|
||||
|
||||
@@ -379,8 +379,8 @@
|
||||
),
|
||||
prob(5);list(
|
||||
/obj/item/weapon/gun/projectile/luger,
|
||||
/obj/item/ammo_magazine/m9mm/compact,
|
||||
/obj/item/ammo_magazine/m9mm/compact
|
||||
/obj/item/ammo_magazine/m9mm/luger,
|
||||
/obj/item/ammo_magazine/m9mm/luger
|
||||
),
|
||||
prob(4);list(
|
||||
/obj/item/weapon/gun/projectile/luger/brown,
|
||||
|
||||
@@ -29,11 +29,9 @@
|
||||
/obj/item/device/radio/headset/heads/hop,
|
||||
/obj/item/device/radio/headset/heads/hop/alt,
|
||||
/obj/item/weapon/storage/box/ids = 2,
|
||||
///obj/item/weapon/gun/energy/gun, //YW Edit,
|
||||
/obj/item/weapon/gun/energy/gun/martin, //VOREStation Add,
|
||||
/obj/item/weapon/storage/box/commandkeys, //VOREStation Add,
|
||||
/obj/item/weapon/storage/box/servicekeys, //VOREStation Add,
|
||||
///obj/item/weapon/gun/projectile/sec/flash, //VOREStation Removal,
|
||||
/obj/item/weapon/gun/energy/gun/compact,
|
||||
/obj/item/weapon/storage/box/commandkeys,
|
||||
/obj/item/weapon/storage/box/servicekeys,
|
||||
/obj/item/device/flash)
|
||||
|
||||
/obj/structure/closet/secure_closet/hop2
|
||||
|
||||
@@ -138,6 +138,8 @@
|
||||
|
||||
if(M.slip("the [floor_type] floor", slip_stun))
|
||||
for(var/i = 1 to slip_dist)
|
||||
if(isbelly(M.loc)) //VOREEdit, Stop the slip if we're in a belly. Inspired by a chompedit, cleaned it up with isbelly instead of a variable since the var was resetting too fast.
|
||||
return
|
||||
step(M, M.dir)
|
||||
sleep(1)
|
||||
else
|
||||
|
||||
@@ -714,10 +714,16 @@ var/datum/announcement/minor/admin_min_announcer = new
|
||||
if(sender) //They put a sender
|
||||
sender = sanitize(sender, 75, extra = 0)
|
||||
var/message = input(usr, "Message content (max 500):", "Contents", "This is a test of the announcement system.") as null|message
|
||||
|
||||
var/msgverb = input(usr, "Name of verb (Such as 'states', 'says', 'asks', etc):", "Verb", "says") as null|text //VOREStation Addition
|
||||
if(message) //They put a message
|
||||
message = sanitize(message, 500, extra = 0)
|
||||
global_announcer.autosay("[message]", "[sender]", "[channel == "Common" ? null : channel]") //Common is a weird case, as it's not a "channel", it's just talking into a radio without a channel set.
|
||||
//VOREStation Edit Start
|
||||
if(msgverb)
|
||||
msgverb = sanitize(msgverb, 50, extra = 0)
|
||||
else
|
||||
msgverb = "states"
|
||||
global_announcer.autosay("[message]", "[sender]", "[channel == "Common" ? null : channel]", states = msgverb) //Common is a weird case, as it's not a "channel", it's just talking into a radio without a channel set.
|
||||
//VOREStation Edit End
|
||||
log_admin("Intercom: [key_name(usr)] : [sender]:[message]")
|
||||
|
||||
feedback_add_details("admin_verb","IN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -802,7 +808,7 @@ var/datum/announcement/minor/admin_min_announcer = new
|
||||
var/this_sender = decomposed[i]
|
||||
var/this_message = decomposed[++i]
|
||||
var/this_wait = decomposed[++i]
|
||||
global_announcer.autosay("[this_message]", "[this_sender]", "[channel == "Common" ? null : channel]") //Common is a weird case, as it's not a "channel", it's just talking into a radio without a channel set.
|
||||
global_announcer.autosay("[this_message]", "[this_sender]", "[channel == "Common" ? null : channel]", "says") //Common is a weird case, as it's not a "channel", it's just talking into a radio without a channel set. //VOREStation Edit
|
||||
sleep(this_wait SECONDS)
|
||||
|
||||
/datum/admins/proc/toggleooc()
|
||||
|
||||
@@ -159,7 +159,8 @@ var/list/admin_verbs_fun = list(
|
||||
/client/proc/smite_vr, //VOREStation Add,
|
||||
/client/proc/admin_lightning_strike,
|
||||
/client/proc/resize, //VOREStation Add,
|
||||
/client/proc/cmd_admin_droppod_deploy
|
||||
/client/proc/cmd_admin_droppod_deploy,
|
||||
/client/proc/adminorbit //VOREStation Add,
|
||||
)
|
||||
|
||||
var/list/admin_verbs_spawn = list(
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/client/proc/adminorbit()
|
||||
set category = "Fun"
|
||||
set name = "Orbit Things"
|
||||
set desc = "Makes something orbit around something else."
|
||||
set popup_menu = FALSE
|
||||
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
|
||||
var/center
|
||||
var/atom/movable/orbiter
|
||||
var/input
|
||||
|
||||
if(holder.marked_datum)
|
||||
input = tgui_alert(usr, "You have \n[holder.marked_datum] marked, should this be the center of the orbit, or the orbiter?", "Orbit", list("Center", "Orbiter", "Neither"))
|
||||
switch(input)
|
||||
if("Center")
|
||||
center = holder.marked_datum
|
||||
if("Orbiter")
|
||||
orbiter = holder.marked_datum
|
||||
var/list/possible_things = list()
|
||||
for(var/T as mob in view(view)) //Let's do mobs before objects
|
||||
if(ismob(T))
|
||||
possible_things |= T
|
||||
for(var/T as obj in view(view))
|
||||
if(isobj(T))
|
||||
possible_things |= T
|
||||
if(!center)
|
||||
center = input(usr, "What should act as the center of the orbit?", "Center") as anything in possible_things
|
||||
possible_things -= center
|
||||
if(!orbiter)
|
||||
orbiter = input(usr, "What should act as the orbiter of the orbit?", "Orbiter") as anything in possible_things
|
||||
if(!center || !orbiter)
|
||||
to_chat(usr, "<span class = 'warning'>A center of orbit and an orbiter must be configured. You can also do this by marking a target.</span>")
|
||||
return
|
||||
if(center == orbiter)
|
||||
to_chat(usr, "<span class = 'warning'>The center of the orbit cannot also be the orbiter.</span>")
|
||||
return
|
||||
if(isturf(orbiter))
|
||||
to_chat(usr, "<span class = 'warning'>The orbiter cannot be a turf. It can only be used as a center.</span>")
|
||||
return
|
||||
var/distance = input(usr, "How large will their orbit radius be? (In pixels. 32 is 'near around a character)", "Orbit Radius", 32) as num|null
|
||||
var/speed = input(usr, "How fast will they orbit (negative numbers spin clockwise)", "Orbit Speed", 20) as num|null
|
||||
var/segments = input(usr, "How many segments will they have in their orbit? (3 is a triangle, 36 is a circle, etc)", "Orbit Segments", 36) as num|null
|
||||
var/clock = FALSE
|
||||
if(!distance)
|
||||
distance = 32
|
||||
if(!speed)
|
||||
speed = 20
|
||||
else if (speed < 0)
|
||||
clock = TRUE
|
||||
speed *= -1
|
||||
if(!segments)
|
||||
segments = 36
|
||||
if(tgui_alert(usr, "\The [orbiter] will orbit around [center]. Is this okay?", "Confirm Orbit", list("Yes", "No")) == "Yes")
|
||||
orbiter.orbit(center, distance, clock, speed, segments)
|
||||
@@ -10,18 +10,18 @@
|
||||
set category = "Admin"
|
||||
if(!check_rights(R_ADMIN|R_MOD|R_DEBUG|R_EVENT))
|
||||
return
|
||||
|
||||
|
||||
if(!config.allow_admin_jump)
|
||||
tgui_alert_async(usr, "Admin jumping disabled")
|
||||
return
|
||||
|
||||
var/area/A
|
||||
|
||||
|
||||
if(areaname)
|
||||
A = return_sorted_areas()[areaname]
|
||||
else
|
||||
A = tgui_input_list(usr, "Pick an area:", "Jump to Area", return_sorted_areas())
|
||||
|
||||
|
||||
if(!A)
|
||||
return
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if(!config.allow_admin_jump)
|
||||
tgui_alert_async(usr, "Admin jumping disabled")
|
||||
return
|
||||
|
||||
|
||||
if(!M)
|
||||
M = tgui_input_list(usr, "Pick a mob:", "Jump to Mob", mob_list)
|
||||
if(!M)
|
||||
@@ -78,7 +78,7 @@
|
||||
feedback_add_details("admin_verb","JM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
else
|
||||
to_chat(A, "<span class='filter_adminlog'>This mob is not located in the game world.</span>")
|
||||
|
||||
|
||||
/client/proc/jumptocoord(tx as num, ty as num, tz as num)
|
||||
set category = "Admin"
|
||||
set name = "Jump to Coordinate"
|
||||
@@ -94,7 +94,7 @@
|
||||
if(!T)
|
||||
to_chat(usr, "<span class='warning'>Those coordinates are outside the boundaries of the map.</span>")
|
||||
return
|
||||
A.forceMove(T)
|
||||
A.forceMove(T)
|
||||
feedback_add_details("admin_verb","JC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
message_admins("[key_name_admin(usr)] jumped to coordinates [tx], [ty], [tz]")
|
||||
|
||||
@@ -124,15 +124,17 @@
|
||||
else
|
||||
tgui_alert_async(usr, "Admin jumping disabled")
|
||||
|
||||
/client/proc/Getmob()
|
||||
/client/proc/Getmob(mob/living/M as null|anything in mob_list) //VOREStation Edit
|
||||
set category = "Admin"
|
||||
set name = "Get Mob"
|
||||
set desc = "Mob to teleport"
|
||||
set popup_menu = TRUE //VOREStation Edit
|
||||
|
||||
if(!check_rights(R_ADMIN|R_MOD|R_DEBUG|R_EVENT))
|
||||
return
|
||||
if(config.allow_admin_jump)
|
||||
var/mob/M = tgui_input_list(usr, "Pick a mob:", "Get Mob", mob_list)
|
||||
if(!M) //VOREStation Edit
|
||||
M = tgui_input_list(usr, "Pick a mob:", "Get Mob", mob_list) //VOREStation Edit
|
||||
if(!M)
|
||||
return
|
||||
log_admin("[key_name(usr)] jumped [key_name(M)] to them")
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
return
|
||||
|
||||
for(var/obj/item/W in M)
|
||||
if(istype(W, /obj/item/weapon/implant/backup) || istype(W, /obj/item/device/nif)) //VOREStation Edit - There's basically no reason to remove either of these
|
||||
continue //VOREStation Edit
|
||||
M.drop_from_inventory(W)
|
||||
|
||||
log_admin("[key_name(usr)] made [key_name(M)] drop everything!")
|
||||
|
||||
@@ -105,6 +105,16 @@
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/handle_special_strategical()
|
||||
discipline_decay()
|
||||
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/request_help()
|
||||
if(target)
|
||||
if(istype(target, /mob/living/simple_mob/slime/xenobio)) //Don't call reinforcements for internal disputes
|
||||
return
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(istype(H.species, /datum/species/monkey)) //Or for food
|
||||
return
|
||||
..()
|
||||
|
||||
// Handles decay of discipline.
|
||||
/datum/ai_holder/simple_mob/xenobio_slime/proc/discipline_decay()
|
||||
if(discipline > 0 && last_discipline_decay + discipline_decay_time < world.time)
|
||||
|
||||
@@ -68,8 +68,14 @@
|
||||
var/datum/transcore_db/db = SStranscore.db_by_mind_name(mind.name)
|
||||
if(db)
|
||||
var/datum/transhuman/mind_record/record = db.backed_up[src.mind.name]
|
||||
if(!(record.dead_state == MR_DEAD))
|
||||
to_chat(src, "<span class='warning'>Your backup is not past-due yet.</span>")
|
||||
if(!(record.dead_state == MR_DEAD))
|
||||
if((world.time - timeofdeath ) > 5 MINUTES) //Allows notify transcore to be used if you have an entry but for some reason weren't marked as dead
|
||||
record.dead_state = MR_DEAD //Such as if you got scanned but didn't take an implant. It's a little funky, but I mean, you got scanned
|
||||
db.notify(record) //So you probably will want to let someone know if you die.
|
||||
record.last_notification = world.time
|
||||
to_chat(src, "<span class='notice'>New notification has been sent.</span>")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your backup is not past-due yet.</span>")
|
||||
else if((world.time - record.last_notification) < 5 MINUTES)
|
||||
to_chat(src, "<span class='warning'>Too little time has passed since your last notification.</span>")
|
||||
else
|
||||
@@ -78,7 +84,7 @@
|
||||
to_chat(src, "<span class='notice'>New notification has been sent.</span>")
|
||||
else
|
||||
to_chat(src,"<span class='warning'>No backup record could be found, sorry.</span>")
|
||||
|
||||
/*
|
||||
/mob/observer/dead/verb/backup_delay()
|
||||
set category = "Ghost"
|
||||
set name = "Cancel Transcore Notification"
|
||||
@@ -97,7 +103,7 @@
|
||||
to_chat(src, "<span class='notice'>Overdue mind backup notification delayed successfully.</span>")
|
||||
else
|
||||
to_chat(src,"<span class='warning'>No backup record could be found, sorry.</span>")
|
||||
|
||||
*/
|
||||
/mob/observer/dead/verb/findghostpod() //Moves the ghost instead of just changing the ghosts's eye -Nodrak
|
||||
set category = "Ghost"
|
||||
set name = "Find Ghost Pod"
|
||||
@@ -123,4 +129,32 @@
|
||||
forceMove(T)
|
||||
stop_following()
|
||||
else
|
||||
to_chat(src, "This ghost pod is not located in the game world.")
|
||||
to_chat(src, "This ghost pod is not located in the game world.")
|
||||
|
||||
/mob/observer/dead/verb/findautoresleever()
|
||||
set category = "Ghost"
|
||||
set name = "Find Auto Resleever"
|
||||
set desc = "Find a Auto Resleever"
|
||||
set popup_menu = FALSE
|
||||
|
||||
if(!istype(usr, /mob/observer/dead)) //Make sure they're an observer!
|
||||
return
|
||||
|
||||
var/list/ar = list()
|
||||
for(var/obj/machinery/transhuman/autoresleever/A in world)
|
||||
if(A.spawntype)
|
||||
continue
|
||||
else
|
||||
ar |= A
|
||||
|
||||
var/obj/machinery/transhuman/autoresleever/thisone = pick(ar)
|
||||
|
||||
if(!thisone)
|
||||
to_chat(src, "<span class='warning'>There appears to be no auto-resleevers available.</span>")
|
||||
return
|
||||
var/L = get_turf(thisone)
|
||||
if(!L)
|
||||
to_chat(src, "<span class='warning'>There appears to be something wrong with this auto-resleever, try again.</span>")
|
||||
return
|
||||
|
||||
forceMove(L)
|
||||
|
||||
@@ -383,6 +383,7 @@
|
||||
blob.Weaken(2)
|
||||
blob.transforming = TRUE
|
||||
blob.ckey = ckey
|
||||
blob.ooc_notes = ooc_notes
|
||||
blob.transforming = FALSE
|
||||
blob.name = name
|
||||
blob.nutrition = nutrition
|
||||
@@ -454,6 +455,7 @@
|
||||
playsound(src.loc, "sound/effects/slime_squish.ogg", 15)
|
||||
transforming = TRUE
|
||||
ckey = blob.ckey
|
||||
ooc_notes = blob.ooc_notes // Updating notes incase they change them in blob form.
|
||||
transforming = FALSE
|
||||
blob.name = "Promethean Blob"
|
||||
var/obj/item/hat = blob.hat
|
||||
|
||||
@@ -378,6 +378,7 @@ var/global/list/disallowed_protean_accessories = list(
|
||||
|
||||
//Put our owner in it (don't transfer var/mind)
|
||||
blob.ckey = ckey
|
||||
blob.ooc_notes = ooc_notes
|
||||
temporary_form = blob
|
||||
|
||||
//Mail them to nullspace
|
||||
@@ -459,6 +460,7 @@ var/global/list/disallowed_protean_accessories = list(
|
||||
|
||||
//Put our owner in it (don't transfer var/mind)
|
||||
ckey = blob.ckey
|
||||
ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form.
|
||||
temporary_form = null
|
||||
|
||||
//Transfer vore organs
|
||||
|
||||
@@ -171,9 +171,10 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
|
||||
SC.brainmobs = list()
|
||||
stat = NIF_PREINSTALL
|
||||
vis_update()
|
||||
H.verbs -= /mob/living/carbon/human/proc/set_nif_examine
|
||||
if(H)
|
||||
H.verbs -= /mob/living/carbon/human/proc/set_nif_examine
|
||||
H.nif = null
|
||||
qdel_null(menu)
|
||||
H.nif = null
|
||||
human = null
|
||||
install_done = null
|
||||
update_icon()
|
||||
|
||||
@@ -85,7 +85,7 @@ var/global/datum/unarmed_attack/hardclaws/unarmed_hardclaws = new()
|
||||
|
||||
var/mob/living/carbon/human/H = nif.human
|
||||
H.adjustHalLoss(30)
|
||||
var/obj/item/weapon/gun/energy/gun/martin/dazzle/dgun = new(get_turf(H))
|
||||
var/obj/item/weapon/gun/energy/gun/compact/dazzle/dgun = new(get_turf(H))
|
||||
H.put_in_hands(dgun)
|
||||
nif.notify("Weapon deployed!",TRUE)
|
||||
used = TRUE
|
||||
@@ -93,10 +93,6 @@ var/global/datum/unarmed_attack/hardclaws/unarmed_hardclaws = new()
|
||||
uninstall()
|
||||
|
||||
//The gun to go with this implant
|
||||
/obj/item/weapon/gun/energy/gun/martin/dazzle
|
||||
/obj/item/weapon/gun/energy/gun/compact/dazzle
|
||||
name = "Microlaser"
|
||||
desc = "A tiny nanofabricated laser."
|
||||
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "PDW"
|
||||
item_state = "gun"
|
||||
|
||||
@@ -485,9 +485,10 @@ This function completely restores a damaged organ to perfect condition.
|
||||
|
||||
// remove embedded objects and drop them on the floor
|
||||
for(var/obj/implanted_object in implants)
|
||||
if(!istype(implanted_object,/obj/item/weapon/implant) && !istype(implanted_object,/obj/item/device/nif)) // We don't want to remove REAL implants. Just shrapnel etc. //VOREStation Edit - NIFs pls
|
||||
implanted_object.loc = get_turf(src)
|
||||
implants -= implanted_object
|
||||
if(istype(implanted_object,/obj/item/weapon/implant) || istype(implanted_object,/obj/item/device/nif)) // We don't want to remove REAL implants. Just shrapnel etc. //VOREStation Edit - NIFs pls
|
||||
continue
|
||||
implanted_object.loc = get_turf(src)
|
||||
implants -= implanted_object
|
||||
if(!owner.has_embedded_objects())
|
||||
owner.clear_alert("embeddedobject")
|
||||
|
||||
|
||||
@@ -108,6 +108,38 @@
|
||||
name = "speedloader (.38 haywire)"
|
||||
ammo_type = /obj/item/ammo_casing/a38/emp
|
||||
|
||||
// Makarov
|
||||
/obj/item/ammo_magazine/m38/makarov
|
||||
name = "makarov magazine (.38)"
|
||||
icon_state = "45"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 480)
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m38/makarov/rubber
|
||||
name = "makarov magazine (.38 rubber)"
|
||||
ammo_type = /obj/item/ammo_casing/a38/rubber
|
||||
|
||||
// Giskard
|
||||
/obj/item/ammo_magazine/m38/giskard
|
||||
name = "magazine (.38)"
|
||||
icon_state = "m91"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 540)
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m38/giskard/rubber
|
||||
name = "makarov magazine (.38 rubber)"
|
||||
ammo_type = /obj/item/ammo_casing/a38/rubber
|
||||
|
||||
///////// .45 /////////
|
||||
|
||||
/obj/item/ammo_magazine/m45
|
||||
@@ -345,6 +377,25 @@
|
||||
name = "compact magazine (9mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/practice
|
||||
|
||||
// Luger
|
||||
/obj/item/ammo_magazine/m9mm/luger
|
||||
name = "\improper \"Mäuse\" magazine (9mm)"
|
||||
icon_state = "9x19p"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 480)
|
||||
caliber = "9mm"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/luger/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/luger/rubber
|
||||
name = "\improper \"Mäuse\" magazine (9mm rubber)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/rubber
|
||||
|
||||
// SMG
|
||||
/obj/item/ammo_magazine/m9mmt
|
||||
name = "top mounted magazine (9mm)"
|
||||
@@ -431,7 +482,7 @@
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/ap
|
||||
matter = list(MAT_STEEL = 2000)
|
||||
|
||||
/obj/item/ammo_magazine/m9mmR/saber/empty
|
||||
/obj/item/ammo_magazine/m9mmAdvanced/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// 10mm /////////
|
||||
@@ -450,6 +501,45 @@
|
||||
/obj/item/ammo_magazine/m10mm/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/practice
|
||||
name = "magazine (10mm practice)"
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/practice
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/rubber
|
||||
name = "magazine (10mm rubber)"
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/rubber
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/emp
|
||||
name = "magazine (10mm haywire)"
|
||||
matter = list(MAT_STEEL = 1500, MAT_URANIUM = 2000)
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||
|
||||
// Pistol
|
||||
/obj/item/ammo_magazine/m10mm/pistol
|
||||
icon_state = "m91"
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
max_ammo = 12
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/pistol/practice
|
||||
name = "magazine (10mm practice)"
|
||||
matter = list(MAT_STEEL = 800)
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/practice
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/pistol/rubber
|
||||
name = "magazine (10mm rubber)"
|
||||
matter = list(MAT_STEEL = 800)
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/rubber
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/pistol/emp
|
||||
name = "magazine (10mm haywire)"
|
||||
matter = list(MAT_STEEL = 1000, MAT_URANIUM = 1500)
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||
|
||||
/obj/item/ammo_magazine/m10mm/pistol/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// 5.45mm /////////
|
||||
|
||||
/obj/item/ammo_magazine/m545
|
||||
|
||||
@@ -80,21 +80,7 @@
|
||||
//////////////////// Energy Weapons ////////////////////
|
||||
|
||||
// ------------ Energy Luger ------------
|
||||
/obj/item/weapon/gun/energy/gun/eluger
|
||||
name = "energy Luger"
|
||||
desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill."
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "elugerstun100"
|
||||
item_state = "gun"
|
||||
fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine.
|
||||
battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) // Illegal tech cuz Space Nazis
|
||||
modifystate = "elugerstun"
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
firemodes = list(
|
||||
list(mode_name="stun", charge_cost=120,projectile_type=/obj/item/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", charge_cost=240,projectile_type=/obj/item/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'),
|
||||
)
|
||||
//MOVED TO nuclear.dm
|
||||
|
||||
//////////////////// Eris Ported Guns ////////////////////
|
||||
//HoP gun
|
||||
|
||||
@@ -1,52 +1,120 @@
|
||||
/*
|
||||
* Energy Gun
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun
|
||||
name = "energy gun"
|
||||
desc = "Another bestseller of Lawson Arms, the LAEP90 Perun is a versatile energy based sidearm, capable of switching between low and high capacity projectile settings. In other words: Stun or Kill."
|
||||
desc = "Another bestseller of Lawson Arms, the LAEP80 Thor is a versatile energy based pistol, capable of switching between low and high capacity projectile settings. In other words: Stun or Kill."
|
||||
description_fluff = "Lawson Arms is Hephaestus Industries’ main personal-energy-weapon branding, often sold alongside MarsTech projectile weapons to security and law enforcement agencies."
|
||||
icon_state = "energystun100"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
fire_delay = 10 // Handguns should be inferior to two-handed weapons.
|
||||
icon_state = "egunstun"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
fire_delay = 8
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun/med
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
modifystate = "egunstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="egunstun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 240),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="egunkill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 480),
|
||||
)
|
||||
|
||||
/*
|
||||
* Energy Rifle
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun/rifle
|
||||
name = "energy rifle"
|
||||
desc = "Another bestseller of Lawson Arms, the LAEP100 Svarog is a versatile energy rifle, capable of switching between low and high capacity projectile settings. In other words: Stun or Kill."
|
||||
icon_state = "riflestun"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
wielded_item_state = "riflestun-wielded"
|
||||
force = 8
|
||||
w_class = ITEMSIZE_LARGE
|
||||
fire_delay = 6
|
||||
one_handed_penalty = 30
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
||||
modifystate = "riflestun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="riflestun", fire_sound='sound/weapons/Taser.ogg', wielded_item_state="riflestun-wielded", charge_cost = 120),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="riflekill", fire_sound='sound/weapons/Laser.ogg', wielded_item_state="riflekill-wielded", charge_cost = 240),
|
||||
)
|
||||
|
||||
/*
|
||||
* Energy Carbine (Burst Laser)
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun/burst
|
||||
name = "energy carbine"
|
||||
desc = "The Lawson Arms FM-2t is a versatile energy based carbine made from modifying the original LAEP100 design. It is capable of switching between stun or kill with a three round burst option for both settings."
|
||||
icon_state = "energystun"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
force = 8
|
||||
w_class = ITEMSIZE_LARGE
|
||||
fire_delay = 6
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun/weak
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
|
||||
modifystate = "energystun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="energystun", charge_cost = 240),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="energykill", charge_cost = 480),
|
||||
list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="energystun", charge_cost = 100),
|
||||
list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="energystun"),
|
||||
list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="energykill", charge_cost = 200),
|
||||
list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="energykill"),
|
||||
)
|
||||
|
||||
/*
|
||||
* Energy PDW (Martin)
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun/compact
|
||||
name = "personal energy weapon"
|
||||
desc = "The RayZar EW20 \"Martin\" personal energy weapon - or PEW - is Ward-Takahasi's entry into the variable capacity energy gun market. New users are advised to 'set RayZars to stun'."
|
||||
description_fluff = "RayZar is Ward-Takahashi’s main consumer weapons brand, known for producing and licensing a wide variety of specialist energy weapons of various types and quality primarily for the civilian market."
|
||||
|
||||
icon_state = "PDWstun"
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
w_class = ITEMSIZE_SMALL
|
||||
projectile_type = /obj/item/projectile/beam/stun/med
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 3)
|
||||
modifystate = "PDWstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="PDWstun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 240),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="PDWkill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 480),
|
||||
)
|
||||
|
||||
/*
|
||||
* Energy Luger
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun/eluger
|
||||
name = "energy Luger"
|
||||
desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill."
|
||||
icon_state = "ep08stun"
|
||||
item_state = "gun"
|
||||
fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine.
|
||||
battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun/med
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) // Illegal tech cuz Space Nazis
|
||||
modifystate = "ep08stun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="ep08stun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 120),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam/eluger, modifystate="ep08kill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 240),
|
||||
)
|
||||
|
||||
/*
|
||||
* Mounted Energy Gun
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun/mounted
|
||||
name = "mounted energy gun"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/burst
|
||||
name = "burst laser"
|
||||
desc = "The Lawson Arms FM-2t is a versatile energy based weapon, capable of switching between stun or kill with a three round burst option for both settings."
|
||||
description_fluff = "Lawson Arms is Hephaestus Industries’ main personal-energy-weapon branding, often sold alongside MarsTech projectile weapons to security and law enforcement agencies."
|
||||
icon_state = "fm-2tstun100" //May resprite this to be more rifley
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
charge_cost = 100
|
||||
force = 8
|
||||
w_class = ITEMSIZE_LARGE //Probably gonna make it a rifle sooner or later
|
||||
fire_delay = 6
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun/weak
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
|
||||
modifystate = "fm-2tstun"
|
||||
|
||||
// requires_two_hands = 1
|
||||
// one_handed_penalty = 30
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="fm-2tstun", charge_cost = 100),
|
||||
list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="fm-2tstun"),
|
||||
list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="fm-2tkill", charge_cost = 200),
|
||||
list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="fm-2tkill"),
|
||||
)
|
||||
|
||||
/*
|
||||
* Nuclear Energy Gun
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/gun/nuclear
|
||||
name = "advanced energy gun"
|
||||
desc = "An energy gun with an experimental miniaturized reactor, based on a Lawson Arms platform."
|
||||
@@ -61,26 +129,7 @@
|
||||
battery_lock = 1
|
||||
modifystate = null
|
||||
|
||||
// requires_two_hands = 1
|
||||
// one_handed_penalty = 15 // It's rather bulky, so holding it in one hand is a little harder than with two, however it's not 'required'.
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, modifystate="nucgunstun", charge_cost = 240),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="nucgunkill", charge_cost = 480),
|
||||
)
|
||||
|
||||
//Functionally a Perun, but flavoured.
|
||||
/obj/item/weapon/gun/energy/gun/compact
|
||||
name = "personal energy weapon"
|
||||
desc = "The RayZar EW20 Cygnus personal energy weapon - or PEW - is Ward-Takahasi's entry into the variable capacity energy gun market. New users are advised to 'set RayZars to stun'."
|
||||
description_fluff = "RayZar is Ward-Takahashi’s main consumer weapons brand, known for producing and licensing a wide variety of specialist energy weapons of various types and quality primarily for the civilian market."
|
||||
icon_state = "PDWstun100"
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun/med
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 3)
|
||||
modifystate = "PDWstun"
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="PDWstun", charge_cost = 240),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="PDWkill", charge_cost = 480),
|
||||
)
|
||||
@@ -1,14 +0,0 @@
|
||||
/*
|
||||
// Virgo's very own file for overriding Polaris' eguns! Should include: Regular egun, Advanced egun, burst egun, mounted egun
|
||||
//
|
||||
// NOTICE: All the eguns are child objects of the base thing. If you modify the base egun, all the other eguns will inherit it unless they explicitly override it.
|
||||
*/
|
||||
|
||||
/obj/item/weapon/gun/energy/gun
|
||||
icon = 'icons/obj/eguns_vr.dmi' //makes the egun look for icons here instead. ALL of the eguns.
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/burst
|
||||
icon = 'icons/obj/gun.dmi' //Points it back at the default file so eguns_vr.dmi doesn't need to mirror all the sprites
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/nuclear
|
||||
icon = 'icons/obj/gun.dmi' //Points it back at the default file so eguns_vr.dmi doesn't need to mirror all the sprites
|
||||
@@ -1,10 +1,18 @@
|
||||
/*
|
||||
* Gram
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/contender
|
||||
name = "H-H Gram"
|
||||
desc = "Hedberg-Hammarstrom's flagship one-shot hand-cannon. For when you really want to make a hole. This one has been modified to work almost like a bolt-action. Uses .357 rounds."
|
||||
description_fluff = "Sif’s largest home-grown firearms manufacturer, the Hedberg-Hammarstrom company offers a range of high-quality, high-cost hunting rifles and shotguns designed with the Sivian wilderness - and its wildlife - in mind. \
|
||||
The company operates just one production plant in Kalmar, but their weapons have found popularity on garden worlds as far afield as the Tajaran homeworld due to their excellent build quality, precision, and stopping power."
|
||||
name = "\improper \"Gram\" Contender"
|
||||
desc = "Hedberg-Hammarstrom's flagship one-shot hand-cannon. For when you \
|
||||
really want to make a hole. This one has been modified to work almost like \
|
||||
a bolt-action. Uses .357 rounds."
|
||||
description_fluff = "The Hedberg-Hammarstrom company offers a range of high-quality, \
|
||||
high-cost hunting rifles and shotguns designed with the Sivian wilderness - and its \
|
||||
wildlife - in mind. The company operates just one production plant in Kalmar, but \
|
||||
their weapons have found popularity on garden worlds as far afield as the Tajaran \
|
||||
homeworld due to their excellent build quality, precision, and stopping power."
|
||||
icon_state = "pockrifle"
|
||||
var/icon_retracted = "pockrifle-empty"
|
||||
var/icon_retracted = "pockrifle-e"
|
||||
item_state = "revolver"
|
||||
caliber = ".357"
|
||||
handle_casings = HOLD_CASINGS
|
||||
@@ -39,8 +47,13 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/*
|
||||
* Balmung
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/contender/tacticool
|
||||
name = "H-H Balmung"
|
||||
desc = "A later model of the Hedberg-Hammarstrom Gram, reinvented with a tactical look. For when you really want to make a hole. This one has been modified to work almost like a bolt-action. Uses .357 rounds."
|
||||
name = "\improper \"Balmung\" Contender"
|
||||
desc = "A later model of the Hedberg-Hammarstrom \"Gram\", reinvented with a \
|
||||
tactical look. For when you really want to make a hole. This one has been \
|
||||
modified to work almost like a bolt-action. Uses .357 rounds."
|
||||
icon_state = "pockrifle_b"
|
||||
icon_retracted = "pockrifle_b-empty"
|
||||
icon_retracted = "pockrifle_b-e"
|
||||
@@ -72,14 +72,6 @@
|
||||
to_chat(M, "Your gun is now sprited as [choice]. Say hello to your new friend.")
|
||||
return 1
|
||||
|
||||
/*//apart of reskins that have two sprites, touching may result in frustration and breaks
|
||||
/obj/item/weapon/gun/projectile/colt/detective/attack_hand(var/mob/living/user)
|
||||
if(!unique_reskin && loc == user)
|
||||
reskin_gun(user)
|
||||
return
|
||||
..()
|
||||
*/
|
||||
|
||||
/*
|
||||
* Security Sidearm
|
||||
*/
|
||||
@@ -104,12 +96,11 @@
|
||||
icon_state = "secgun-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/flash
|
||||
name = ".45 signal pistol"
|
||||
magazine_type = /obj/item/ammo_magazine/m45/flash
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/wood
|
||||
name = "custom .45 pistol"
|
||||
desc = "The MT Mk58 is a cheap, ubiquitous sidearm, produced by MarsTech. This one has a sweet wooden grip. Uses .45 rounds."
|
||||
name = "custom .45 Pistol"
|
||||
icon_state = "secgunb"
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/wood/update_icon()
|
||||
@@ -140,6 +131,13 @@
|
||||
/obj/item/weapon/gun/projectile/silenced/empty
|
||||
magazine_type = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/silenced/update_icon()
|
||||
..()
|
||||
if(ammo_magazine)
|
||||
icon_state = "silenced_pistol"
|
||||
else
|
||||
icon_state = "silenced_pistol-e"
|
||||
|
||||
/*
|
||||
* Deagle
|
||||
*/
|
||||
@@ -178,7 +176,7 @@
|
||||
/*
|
||||
* Gyro Pistol (Admin Abuse in gun form)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/gyropistol // Does this even appear anywhere outside of admin abuse?
|
||||
/obj/item/weapon/gun/projectile/gyropistol
|
||||
name = "gyrojet pistol"
|
||||
desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you."
|
||||
icon_state = "gyropistol"
|
||||
@@ -200,12 +198,22 @@
|
||||
else
|
||||
icon_state = "gyropistol"
|
||||
|
||||
/*
|
||||
* Silencer
|
||||
*/
|
||||
/obj/item/weapon/silencer
|
||||
name = "silencer"
|
||||
desc = "a silencer"
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "silencer"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/*
|
||||
* Compact Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pistol
|
||||
name = "compact pistol"
|
||||
desc = "The Lumoco Arms P3 Whisper. A compact, easily concealable gun, though it's only compatible with compact magazines. Uses 9mm rounds."
|
||||
desc = "The Lumoco Arms P3 \"Whisper\". A compact, easily concealable gun, though it's only compatible with compact magazines. Uses 9mm rounds."
|
||||
icon_state = "pistol"
|
||||
item_state = null
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -218,7 +226,6 @@
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/flash
|
||||
name = "compact signal pistol"
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/compact/flash
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/attack_hand(mob/living/user as mob)
|
||||
@@ -250,21 +257,70 @@
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/update_icon()
|
||||
..()
|
||||
if(silenced)
|
||||
icon_state = "pistol-silencer"
|
||||
if(ammo_magazine)
|
||||
if(silenced)
|
||||
icon_state = "pistol-s"
|
||||
else
|
||||
icon_state = "pistol"
|
||||
else
|
||||
icon_state = "pistol"
|
||||
if(silenced)
|
||||
icon_state = "pistol-s-e"
|
||||
else
|
||||
icon_state = "pistol-e"
|
||||
|
||||
/*
|
||||
* Silencer
|
||||
* Pistol
|
||||
*/
|
||||
/obj/item/weapon/silencer
|
||||
name = "silencer"
|
||||
desc = "a silencer"
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "silencer"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
/obj/item/weapon/gun/projectile/aps
|
||||
name = "pistol"
|
||||
desc = "The Lumoco Arms P6 \"Rustle\". A standard self-defense pistol that takes standard magazines. Uses 9mm rounds."
|
||||
icon_state = "aps"
|
||||
item_state = null
|
||||
caliber = "9mm"
|
||||
silenced = 0
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2)
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
|
||||
/obj/item/weapon/gun/projectile/aps/attack_hand(mob/living/user as mob)
|
||||
if(user.get_inactive_hand() == src)
|
||||
if(silenced)
|
||||
if(!user.item_is_in_hands(src))
|
||||
..()
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You unscrew [silenced] from [src].</span>")
|
||||
user.put_in_hands(silenced)
|
||||
silenced = 0
|
||||
update_icon()
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/aps/attackby(obj/item/I as obj, mob/living/user as mob)
|
||||
if(istype(I, /obj/item/weapon/silencer))
|
||||
if(!user.item_is_in_hands(src)) //if we're not in his hands
|
||||
to_chat(user, "<span class='notice'>You'll need [src] in your hands to do that.</span>")
|
||||
return
|
||||
user.drop_item()
|
||||
to_chat(user, "<span class='notice'>You screw [I] onto [src].</span>")
|
||||
silenced = I //dodgy?
|
||||
I.loc = src //put the silencer into the gun
|
||||
update_icon()
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/aps/update_icon()
|
||||
if(ammo_magazine)
|
||||
if(silenced)
|
||||
icon_state = "aps-s"
|
||||
else
|
||||
icon_state = "aps"
|
||||
else
|
||||
if(silenced)
|
||||
icon_state = "aps-s-e"
|
||||
else
|
||||
icon_state = "aps-e"
|
||||
|
||||
/*
|
||||
* Zip Gun (yar har)
|
||||
@@ -272,7 +328,7 @@
|
||||
/obj/item/weapon/gun/projectile/pirate
|
||||
name = "zip gun"
|
||||
desc = "Little more than a barrel, handle, and firing mechanism, cheap makeshift firearms like this one are not uncommon in frontier systems."
|
||||
icon_state = "sawnshotgun"
|
||||
icon_state = "zipgun"
|
||||
item_state = "sawnshotgun"
|
||||
handle_casings = CYCLE_CASINGS //player has to take the old casing out manually before reloading
|
||||
load_method = SINGLE_CASING
|
||||
@@ -323,18 +379,20 @@
|
||||
* Luger
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/luger
|
||||
name = "\improper Jindal T15 Chooha"
|
||||
desc = "Almost seventy percent guaranteed not to be a cheap rimworld knockoff! Accuracy, easy handling, and its distinctive appearance make it popular among gun collectors. Uses 9mm rounds."
|
||||
name = "\improper Jindal T15 \"Mäuse\""
|
||||
desc = "Almost seventy percent guaranteed not to be a cheap rimworld knockoff! Accuracy, easy handling, and its distinctive appearance \
|
||||
make it popular among gun collectors. Uses 9mm rounds."
|
||||
description_fluff = "While Jindal’s rugged, affordable weapons intended for the colonial sector are a major export of Tau Ceti, \
|
||||
the Jindal Arms company is perhaps best known for its liberal sale of production licenses to just about any fledgling rimworld venture who asks, and has cash to spare. \
|
||||
While Jindal’s 'authentic' Binma-built weapons are renowned for their reliability, the same cannot be said for the hundreds of low-grade (But technically legal) \
|
||||
copies circulating the squalid habitats and smoke-filled junk ships of the frontier."
|
||||
icon_state = "p08"
|
||||
the Jindal Arms company is perhaps best known for its liberal sale of production licenses to just about any fledgling rimworld \
|
||||
venture who asks, and has cash to spare. While Jindal’s 'authentic' Binma-built weapons are renowned for their reliability, the \
|
||||
same cannot be said for the hundreds of low-grade (But technically legal) copies circulating the squalid habitats and smoke-filled \
|
||||
junk ships of the frontier."
|
||||
icon_state = "p08a"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
caliber = "9mm"
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/compact
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m9mm/compact)
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/luger
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m9mm/luger)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
|
||||
/obj/item/weapon/gun/projectile/luger/update_icon()
|
||||
@@ -345,9 +403,10 @@
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/luger/brown
|
||||
name = "\improper Jindal KP-45W"
|
||||
name = "\improper Jindal T15b \"Mäuse\""
|
||||
description_fluff = "While wholly owned by Hephaestus Industries, the Jindal Arms brand does not appear prominently in most company catalogues \
|
||||
(Perhaps owing to its less than prestigious image), instead being sold almost exclusively through retailers and advertising platforms targeting the 'independent roughneck' demographic."
|
||||
(Perhaps owing to its less than prestigious image), instead being sold almost exclusively through retailers and advertising platforms targeting \
|
||||
the 'independent roughneck' demographic."
|
||||
icon_state = "p08b"
|
||||
|
||||
/*
|
||||
@@ -377,4 +436,173 @@
|
||||
icon_state = "p92xb"
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/large
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large // Spawns with illegal magazines.
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large // Spawns with illegal magazines.
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/large/preban
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban // Spawns with big magazines that are legal.
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/large/preban/hp
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban/hp // Spawns with legal hollow-point mag
|
||||
|
||||
/*
|
||||
* Giskard (Eris Port)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/giskard
|
||||
name = "\improper \"Giskard\" holdout pistol"
|
||||
desc = "The FS HG .38 \"Giskard\" can even fit into the pocket! Uses .38 rounds."
|
||||
icon_state = "giskardcivil"
|
||||
item_state = "giskardcivil"
|
||||
caliber = ".38"
|
||||
magazine_type = /obj/item/ammo_magazine/m38
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m38)
|
||||
load_method = MAGAZINE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3)
|
||||
|
||||
/obj/item/weapon/gun/projectile/giskard/update_icon()
|
||||
..()
|
||||
if(ammo_magazine && ammo_magazine.stored_ammo.len)
|
||||
icon_state = "giskardcivil"
|
||||
else
|
||||
icon_state = "giskardcivil_empty"
|
||||
|
||||
/obj/item/weapon/gun/projectile/giskard/olivaw
|
||||
name = "\improper \"Olivaw\" holdout burst-pistol"
|
||||
desc = "The FS HG .38 \"Olivaw\" is a more advanced version of the \"Giskard\". \
|
||||
This one seems to have a two-round burst-fire mode. Uses .38 rounds."
|
||||
icon_state = "olivawcivil"
|
||||
item_state = "giskardcivil"
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/projectile/giskard/olivaw/update_icon()
|
||||
..()
|
||||
if(ammo_magazine && ammo_magazine.stored_ammo.len)
|
||||
icon_state = "olivawcivil"
|
||||
else
|
||||
icon_state = "olivawcivil-e"
|
||||
|
||||
/*
|
||||
* Makarov
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/makarov
|
||||
name = "makarov"
|
||||
desc = "A small, rugged pistol from a bygone era. Uses .38 rounds."
|
||||
icon_state = "makarov"
|
||||
item_state = "gun"
|
||||
caliber = ".38"
|
||||
magazine_type = /obj/item/ammo_magazine/m38
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m38)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
load_method = MAGAZINE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/obj/item/weapon/gun/projectile/makarov/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = "Makarov"
|
||||
else
|
||||
icon_state = "Makarov-e"
|
||||
|
||||
/*
|
||||
* N99 (Fallout)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/n99
|
||||
name = "promotional pistol"
|
||||
desc = "A very robust looking pistol that was made to promote 'Radius: Legend of the Demon Core', a popular \
|
||||
post-apocolyptic TV series. It's rare to come across as marketing swiftly switched to a toy version as \
|
||||
opposed to a live weapon due to safety concerns. Uses 10mm rounds."
|
||||
icon_state = "n99"
|
||||
item_state = "gun"
|
||||
caliber = "10mm"
|
||||
magazine_type = /obj/item/ammo_magazine/m10mm/pistol
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m10mm/pistol)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
load_method = MAGAZINE
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/obj/item/weapon/gun/projectile/n99/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = "n99"
|
||||
else
|
||||
icon_state = "n99-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/n80
|
||||
icon_state = "n80"
|
||||
|
||||
/obj/item/weapon/gun/projectile/n80/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = "n80"
|
||||
else
|
||||
icon_state = "n80-e"
|
||||
|
||||
/*
|
||||
* Écureuil 10mm Pistol (Skyrat Port)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/ecureuil
|
||||
name = "\improper \"Écureuil\" 10mm pistol"
|
||||
desc = "The 10mm MarsTech sidearm \"Écureuil\" is a well known military grade pistol. \
|
||||
It's mostly used by ranking members of NanoTrasen as a means of self defense. Uses 10mm rounds."
|
||||
icon_state = "ecureuil"
|
||||
item_state = "gun"
|
||||
caliber = "10mm"
|
||||
magazine_type = /obj/item/ammo_magazine/m10mm/pistol
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m10mm/pistol)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
load_method = MAGAZINE
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/obj/item/weapon/gun/projectile/ecureuil/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = "ecureuil"
|
||||
else
|
||||
icon_state = "ecureuil-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/ecureuil/tac
|
||||
name = "\improper Tactical \"Écureuil\" 10mm pistol"
|
||||
icon_state = "tac_ecureuil"
|
||||
|
||||
/obj/item/weapon/gun/projectile/ecureuil/tac/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = "tac_ecureuil"
|
||||
else
|
||||
icon_state = "tac_ecureuil-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/ecureuil/tac2
|
||||
name = "\improper Tactical \"Écureuil\" 10mm pistol"
|
||||
icon_state = "tac_ecureuil"
|
||||
|
||||
/obj/item/weapon/gun/projectile/ecureuil/tac2/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = "tac2_ecureuil"
|
||||
else
|
||||
icon_state = "tac2_ecureuil-e"
|
||||
|
||||
/*
|
||||
* Lamia (Eris Port)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/lamia
|
||||
name = "\improper FS HG .44 \"Lamia\""
|
||||
desc = "The FS HG .44 \"Lamia\" is the epitome of power in a handheld device. Uses .44 rounds."
|
||||
icon_state = "lamia"
|
||||
item_state = "revolver"
|
||||
caliber = ".44"
|
||||
magazine_type = /obj/item/ammo_magazine/m44/rubber
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber)
|
||||
load_method = MAGAZINE
|
||||
auto_eject = 1
|
||||
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4)
|
||||
|
||||
/obj/item/weapon/gun/projectile/lamia/update_icon()
|
||||
cut_overlays()
|
||||
if(!ammo_magazine)
|
||||
return
|
||||
var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo
|
||||
ratio = round(ratio, 33)
|
||||
add_overlay("lamia_[ratio]")
|
||||
@@ -1,77 +0,0 @@
|
||||
/obj/item/weapon/gun/projectile/sec/flash
|
||||
name = ".45 pistol"
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/sec
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/rubber
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/large/preban
|
||||
icon_state = "p92x-brown"
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban // Spawns with big magazines that are legal.
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/large/preban/hp
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban/hp // Spawns with legal hollow-point mag
|
||||
|
||||
//////////////////// Eris Ported Guns ////////////////////
|
||||
//HoS Gun
|
||||
/obj/item/weapon/gun/projectile/lamia
|
||||
name = "FS HG .44 \"Lamia\""
|
||||
desc = "Uses .44 rounds."
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "Headdeagle"
|
||||
item_state = "revolver"
|
||||
caliber = ".44"
|
||||
magazine_type = /obj/item/ammo_magazine/m44/rubber
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber)
|
||||
load_method = MAGAZINE
|
||||
auto_eject = 1
|
||||
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4)
|
||||
|
||||
/obj/item/weapon/gun/projectile/lamia/update_icon()
|
||||
cut_overlays()
|
||||
if(!ammo_magazine)
|
||||
return
|
||||
var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo
|
||||
ratio = round(ratio, 33)
|
||||
add_overlay("deagle_[ratio]")
|
||||
|
||||
//Civilian gun
|
||||
/obj/item/weapon/gun/projectile/giskard
|
||||
name = "\improper \"Giskard\" holdout pistol"
|
||||
desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds."
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_override = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "giskardcivil"
|
||||
item_state = "giskardcivil"
|
||||
caliber = ".380"
|
||||
magazine_type = /obj/item/ammo_magazine/m380
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m380)
|
||||
load_method = MAGAZINE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3)
|
||||
|
||||
/obj/item/weapon/gun/projectile/giskard/update_icon()
|
||||
..()
|
||||
if(ammo_magazine && ammo_magazine.stored_ammo.len)
|
||||
icon_state = "giskardcivil"
|
||||
else
|
||||
icon_state = "giskardcivil_empty"
|
||||
|
||||
//Not so civilian gun
|
||||
/obj/item/weapon/gun/projectile/giskard/olivaw
|
||||
name = "\improper \"Olivaw\" holdout burst-pistol"
|
||||
desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds."
|
||||
icon_state = "olivawcivil"
|
||||
item_state = "olivawcivil"
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/projectile/giskard/olivaw/update_icon()
|
||||
..()
|
||||
if(ammo_magazine && ammo_magazine.stored_ammo.len)
|
||||
icon_state = "olivawcivil"
|
||||
else
|
||||
icon_state = "olivawcivil_empty"
|
||||
@@ -52,7 +52,6 @@
|
||||
damage = 30
|
||||
armor_penetration = 10
|
||||
|
||||
|
||||
/obj/item/projectile/beam/midlaser
|
||||
damage = 40
|
||||
armor_penetration = 10
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
limit_x = 3
|
||||
limit_y = 3
|
||||
preserve_map = 0
|
||||
max_attempts = 1
|
||||
|
||||
wall_type = /turf/simulated/wall/titanium
|
||||
floor_type = /turf/simulated/floor/reinforced
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
/obj/machinery/transhuman/autoresleever
|
||||
name = "automatic resleever"
|
||||
desc = "Uses advanced technology to detect when someone needs to be resleeved, and automatically prints and sleeves them into a new body. It even generates its own biomass!"
|
||||
icon = 'icons/obj/machines/autoresleever.dmi'
|
||||
icon_state = "autoresleever"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/equip_body = FALSE //If true, this will spawn the person with equipment
|
||||
var/default_job = USELESS_JOB //The job that will be assigned if equip_body is true and the ghost doesn't have a job
|
||||
var/ghost_spawns = FALSE //If true, allows ghosts who haven't been spawned yet to spawn
|
||||
var/vore_respawn = 15 MINUTES //The time to wait if you died from vore
|
||||
var/respawn = 30 MINUTES //The time to wait if you didn't die from vore
|
||||
var/spawn_slots = -1 //How many people can be spawned from this? If -1 it's unlimited
|
||||
var/spawntype //The kind of mob that will be spawned, if set.
|
||||
|
||||
/obj/machinery/transhuman/autoresleever/update_icon()
|
||||
. = ..()
|
||||
if(stat)
|
||||
icon_state = "autoresleever-o"
|
||||
else
|
||||
icon_state = "autoresleever"
|
||||
|
||||
/obj/machinery/transhuman/autoresleever/power_change()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/transhuman/autoresleever/attack_ghost(mob/observer/dead/user as mob)
|
||||
update_icon()
|
||||
if(spawn_slots == 0)
|
||||
to_chat(user, "<span class='warning'>There are no more respawn slots.</span>")
|
||||
return
|
||||
if(user.mind)
|
||||
if(user.mind.vore_death)
|
||||
if(vore_respawn <= world.time - user.timeofdeath)
|
||||
autoresleeve(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You must wait [((vore_respawn - (world.time - user.timeofdeath)) * 0.1) / 60] minutes to use \the [src].</span>")
|
||||
return
|
||||
else if(respawn <= world.time - user.timeofdeath)
|
||||
autoresleeve(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You must wait [((respawn - (world.time - user.timeofdeath)) * 0.1) /60] minutes to use \the [src].</span>")
|
||||
return
|
||||
else if(spawntype)
|
||||
if(tgui_alert(user, "This [src] spawns something special, would you like to play as it?", "Creachur", list("No","Yes")) == "Yes")
|
||||
autoresleeve(user)
|
||||
else if(ghost_spawns)
|
||||
if(tgui_alert(user, "Would you like to be spawned here as your presently loaded character?", "Spawn here", list("No","Yes")) == "Yes")
|
||||
autoresleeve(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to have been spawned in order to respawn here.</span>")
|
||||
|
||||
/obj/machinery/transhuman/autoresleever/attackby(var/mob/user) //Let's not let people mess with this.
|
||||
update_icon()
|
||||
if(istype(user,/mob/observer/dead))
|
||||
attack_ghost(user)
|
||||
else
|
||||
return
|
||||
|
||||
/obj/machinery/transhuman/autoresleever/proc/autoresleeve(var/mob/observer/dead/ghost)
|
||||
if(stat)
|
||||
to_chat(ghost, "<span class='warning'>This machine is not functioning...</span>")
|
||||
return
|
||||
if(!istype(ghost,/mob/observer/dead))
|
||||
return
|
||||
|
||||
if(ghost.mind && ghost.mind.current && ghost.mind.current.stat != DEAD)
|
||||
if(istype(ghost.mind.current.loc, /obj/item/device/mmi))
|
||||
if(tgui_alert(ghost, "Your brain is still alive, using the auto-resleever will delete that brain. Are you sure?", "Delete Brain", list("No","Yes")) != "Yes")
|
||||
return
|
||||
if(istype(ghost.mind.current.loc, /obj/item/device/mmi))
|
||||
qdel(ghost.mind.current.loc)
|
||||
else
|
||||
to_chat(ghost, "<span class='warning'>Your body is still alive, you cannot be resleeved.</span>")
|
||||
return
|
||||
|
||||
var/client/ghost_client = ghost.client
|
||||
|
||||
//Name matching is ugly but mind doesn't persist to look at.
|
||||
var/charjob
|
||||
var/datum/data/record/record_found
|
||||
record_found = find_general_record("name",ghost_client.prefs.real_name)
|
||||
|
||||
//Found their record, they were spawned previously
|
||||
if(record_found)
|
||||
charjob = record_found.fields["real_rank"]
|
||||
else if(equip_body || ghost_spawns)
|
||||
charjob = default_job
|
||||
else
|
||||
to_chat(ghost, "<span class='warning'>It appears as though your loaded character has not been spawned this round, or has quit the round. If you died as a different character, please load them, and try again.</span>")
|
||||
return
|
||||
|
||||
//For logging later
|
||||
var/player_key = ghost_client.key
|
||||
var/picked_ckey = ghost_client.ckey
|
||||
var/picked_slot = ghost_client.prefs.default_slot
|
||||
|
||||
var/spawnloc = get_turf(src)
|
||||
//Did we actually get a loc to spawn them?
|
||||
if(!spawnloc)
|
||||
to_chat(ghost, "<span class='warning'>Could not find a valid location to spawn your character.</span>")
|
||||
return
|
||||
|
||||
if(spawntype)
|
||||
var/spawnthing = new spawntype(spawnloc)
|
||||
if(isliving(spawnthing))
|
||||
var/mob/living/L = spawnthing
|
||||
L.key = player_key
|
||||
L.ckey = picked_ckey
|
||||
log_admin("[L.ckey]'s has been spawned as [L] via \the [src].")
|
||||
message_admins("[L.ckey]'s has been spawned as [L] via \the [src].")
|
||||
else
|
||||
to_chat(ghost, "<span class='warning'>You can't play as a [spawnthing]...</span>")
|
||||
return
|
||||
if(spawn_slots == -1)
|
||||
return
|
||||
else if(spawn_slots == 0)
|
||||
return
|
||||
else
|
||||
spawn_slots --
|
||||
return
|
||||
|
||||
if(tgui_alert(ghost, "Would you like to be resleeved?", "Resleeve", list("No","Yes")) == "No")
|
||||
return
|
||||
var/mob/living/carbon/human/new_character
|
||||
new_character = new(spawnloc)
|
||||
|
||||
//We were able to spawn them, right?
|
||||
if(!new_character)
|
||||
to_chat(ghost, "Something went wrong and spawning failed.")
|
||||
return
|
||||
|
||||
//Write the appearance and whatnot out to the character
|
||||
ghost_client.prefs.copy_to(new_character)
|
||||
if(new_character.dna)
|
||||
new_character.dna.ResetUIFrom(new_character)
|
||||
new_character.sync_organ_dna()
|
||||
|
||||
new_character.key = player_key
|
||||
|
||||
//Were they any particular special role? If so, copy.
|
||||
if(new_character.mind)
|
||||
new_character.mind.loaded_from_ckey = picked_ckey
|
||||
new_character.mind.loaded_from_slot = picked_slot
|
||||
|
||||
var/datum/antagonist/antag_data = get_antag_data(new_character.mind.special_role)
|
||||
if(antag_data)
|
||||
antag_data.add_antagonist(new_character.mind)
|
||||
antag_data.place_mob(new_character)
|
||||
|
||||
for(var/lang in ghost_client.prefs.alternate_languages)
|
||||
var/datum/language/chosen_language = GLOB.all_languages[lang]
|
||||
if(chosen_language)
|
||||
if(is_lang_whitelisted(src,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs)))
|
||||
new_character.add_language(lang)
|
||||
|
||||
//If desired, apply equipment.
|
||||
if(equip_body)
|
||||
if(charjob)
|
||||
job_master.EquipRank(new_character, charjob, 1)
|
||||
new_character.mind.assigned_role = charjob
|
||||
new_character.mind.role_alt_title = job_master.GetPlayerAltTitle(new_character, charjob)
|
||||
|
||||
//A redraw for good measure
|
||||
new_character.regenerate_icons()
|
||||
|
||||
new_character.update_transform()
|
||||
|
||||
log_admin("[new_character.ckey]'s character [new_character.real_name] has been auto-resleeved.")
|
||||
message_admins("[new_character.ckey]'s character [new_character.real_name] has been auto-resleeved.")
|
||||
|
||||
var/obj/item/weapon/implant/backup/imp = new(src)
|
||||
|
||||
if(imp.handle_implant(new_character,new_character.zone_sel.selecting))
|
||||
imp.post_implant(new_character)
|
||||
|
||||
var/datum/transcore_db/db = SStranscore.db_by_mind_name(new_character.mind.name)
|
||||
if(db)
|
||||
var/datum/transhuman/mind_record/record = db.backed_up[new_character.mind.name]
|
||||
if((world.time - record.last_notification) < 30 MINUTES)
|
||||
global_announcer.autosay("[new_character.name] has been resleeved by the automatic resleeving system.", "TransCore Oversight", new_character.isSynthetic() ? "Science" : "Medical")
|
||||
spawn(0) //Wait a second for nif to do its thing if there is one
|
||||
if(record.nif_path)
|
||||
var/obj/item/device/nif/nif
|
||||
if(new_character.nif)
|
||||
nif = new_character.nif
|
||||
else
|
||||
nif = new record.nif_path(new_character,null,record.nif_savedata)
|
||||
spawn(0) //Wait another second in case we just gave them a new nif
|
||||
if(nif) //Now restore the software
|
||||
for(var/path in record.nif_software)
|
||||
new path(nif)
|
||||
nif.durability = record.nif_durability
|
||||
|
||||
if(spawn_slots == -1)
|
||||
return
|
||||
else if(spawn_slots == 0)
|
||||
return
|
||||
else
|
||||
spawn_slots --
|
||||
return
|
||||
@@ -366,9 +366,11 @@
|
||||
H.held_mob.muffled = FALSE
|
||||
H.held_mob.forced_psay = FALSE
|
||||
|
||||
if(isliving(M))
|
||||
var/mob/living/slip = M
|
||||
slip.slip_protect = world.time + 25 // This is to prevent slipping back into your pred if they stand on soap or something.
|
||||
//Place them into our drop_location
|
||||
M.forceMove(drop_location())
|
||||
|
||||
items_preserved -= M
|
||||
|
||||
//Special treatment for absorbed prey
|
||||
@@ -774,7 +776,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
/obj/belly/proc/handle_absorb_langs()
|
||||
owner.absorb_langs()
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
@@ -504,9 +504,15 @@
|
||||
to_chat(user, "<span class='notice'>They aren't able to be devoured.</span>")
|
||||
log_and_message_admins("[key_name_admin(src)] attempted to devour [key_name_admin(prey)] against their prefs ([prey ? ADMIN_JMP(prey) : "null"])")
|
||||
return FALSE
|
||||
|
||||
// Slipnoms from chompstation downstream, credit to cadyn for the original PR.
|
||||
// Prepare messages
|
||||
if(user == pred) //Feeding someone to yourself
|
||||
if(prey.is_slipping)
|
||||
attempt_msg = "<span class='warning'>It seems like [prey] is about to slide into [pred]'s [lowertext(belly.name)]!</span>"
|
||||
success_msg = "<span class='warning'>[prey] suddenly slides into [pred]'s [lowertext(belly.name)]!</span>"
|
||||
else if(pred.is_slipping)
|
||||
attempt_msg = "<span class='warning'>It seems like [prey] is gonna end up inside [pred]'s [lowertext(belly.name)] as [pred] comes sliding over!</span>"
|
||||
success_msg = "<span class='warning'>[prey] suddenly slips inside of [pred]'s [lowertext(belly.name)] as [pred] slides into them!</span>"
|
||||
else if(user == pred) //Feeding someone to yourself
|
||||
attempt_msg = "<span class='warning'>[pred] is attempting to [lowertext(belly.vore_verb)] [prey] into their [lowertext(belly.name)]!</span>"
|
||||
success_msg = "<span class='warning'>[pred] manages to [lowertext(belly.vore_verb)] [prey] into their [lowertext(belly.name)]!</span>"
|
||||
else //Feeding someone to another person
|
||||
@@ -566,7 +572,7 @@
|
||||
var/air_type = /datum/gas_mixture/belly_air
|
||||
if(istype(lifeform)) // If this doesn't succeed, then 'lifeform' is actually a bag or capture crystal with someone inside
|
||||
air_type = lifeform.get_perfect_belly_air_type() // Without any overrides/changes, its gonna be /datum/gas_mixture/belly_air
|
||||
|
||||
|
||||
var/air = new air_type(1000)
|
||||
return air
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
// Slipnoms from chompstation downstream, credit to cadyn for the original PR.
|
||||
|
||||
/mob/living
|
||||
var/is_slipping = FALSE
|
||||
var/slip_vore_in_progress = FALSE
|
||||
var/slip_protect = 1
|
||||
|
||||
/mob/living/proc/can_slip_vore(var/mob/living/target)
|
||||
if(!target.is_slipping) //Obviously they have to be slipping to get slip vored
|
||||
return FALSE
|
||||
if(world.time <= target.slip_protect)
|
||||
return FALSE
|
||||
if(!(src.can_be_drop_pred && target.devourable && target.can_be_drop_prey)) //Make sure both of their prefs align with what we're gonna do.
|
||||
return FALSE
|
||||
if(!is_vore_predator(src)) //Check their bellies and stuff
|
||||
return FALSE
|
||||
if(!src.vore_selected) //Gotta have one selected as well.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/can_be_slip_vored_by(var/mob/living/target)
|
||||
if(!target.is_slipping) //Obviously they have to be slipping to get slip vored
|
||||
return FALSE
|
||||
if(world.time <= target.slip_protect)
|
||||
return FALSE
|
||||
if(!(target.can_be_drop_pred && src.devourable && src.can_be_drop_prey)) //Make sure both of their prefs align with what we're gonna do.
|
||||
return FALSE
|
||||
if(!is_vore_predator(target)) //Check their bellies and stuff
|
||||
return FALSE
|
||||
if(!target.vore_selected) //Gotta have one selected as well.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/mob/living/Crossed(var/atom/movable/AM)
|
||||
..()
|
||||
var/mob/living/target = AM
|
||||
if(istype(target) && !target.incorporeal_move && !src.incorporeal_move) //The slip vore begins
|
||||
if(can_slip_vore(target) && !src.slip_vore_in_progress && !target.slip_vore_in_progress) //If we can vore them go for it
|
||||
perform_the_nom(src,target,src,src.vore_selected,1)
|
||||
target.slip_vore_in_progress = FALSE
|
||||
target.is_slipping = FALSE
|
||||
return
|
||||
else if(can_be_slip_vored_by(target) && !src.slip_vore_in_progress && !target.slip_vore_in_progress) //Otherwise, if they can vore us, make it happen.
|
||||
perform_the_nom(target,src,target,target.vore_selected,1)
|
||||
slip_vore_in_progress = FALSE
|
||||
is_slipping = FALSE
|
||||
return
|
||||
|
||||
|
||||
/mob/living/carbon/slip(var/slipped_on,stun_duration=8)
|
||||
. = ..()
|
||||
if(.)
|
||||
is_slipping = TRUE
|
||||
return .
|
||||
|
||||
/mob/living/update_canmove()
|
||||
. = ..()
|
||||
if(is_slipping && !lying)
|
||||
is_slipping = FALSE
|
||||
return .
|
||||
@@ -981,6 +981,7 @@
|
||||
return FALSE
|
||||
var/new_new_damage = CLAMP(new_damage, 0, 12)
|
||||
host.vore_selected.digest_oxy = new_new_damage
|
||||
. = TRUE
|
||||
if("b_emoteactive")
|
||||
host.vore_selected.emote_active = !host.vore_selected.emote_active
|
||||
. = TRUE
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 108 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
@@ -2075,6 +2075,10 @@
|
||||
/obj/machinery/computer/transhuman/resleeving{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/device/radio/intercom{
|
||||
dir = 4;
|
||||
pixel_x = 24
|
||||
},
|
||||
/turf/simulated/floor/tiled/eris/white/bluecorner,
|
||||
/area/stellardelight/deck1/resleeving)
|
||||
"ew" = (
|
||||
@@ -6726,7 +6730,7 @@
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/button/remote/airlock{
|
||||
desc = "A remote control switch for the medbay foyer.";
|
||||
desc = "A remote control switch for the cleaning room exit.";
|
||||
dir = 4;
|
||||
id = "resleeveexit";
|
||||
name = "Door Control";
|
||||
@@ -7381,6 +7385,14 @@
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/button/remote/airlock{
|
||||
desc = "A remote control switch for the cleaning room.";
|
||||
dir = 4;
|
||||
id = "resleeveclean";
|
||||
name = "Door Control";
|
||||
pixel_x = -27;
|
||||
pixel_y = -27
|
||||
},
|
||||
/turf/simulated/floor/tiled/eris/white/bluecorner,
|
||||
/area/stellardelight/deck1/resleeving)
|
||||
"pC" = (
|
||||
@@ -7970,7 +7982,7 @@
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/chapel/main)
|
||||
"qR" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/machinery/transhuman/autoresleever,
|
||||
/turf/simulated/floor/tiled/dark,
|
||||
/area/stellardelight/deck1/resleeving)
|
||||
"qS" = (
|
||||
@@ -16013,16 +16025,6 @@
|
||||
/obj/effect/floor_decal/milspec/color/black,
|
||||
/turf/simulated/floor/tiled/dark,
|
||||
/area/security/armoury)
|
||||
"Ij" = (
|
||||
/obj/structure/bed/chair{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/device/radio/intercom{
|
||||
dir = 8;
|
||||
pixel_x = -24
|
||||
},
|
||||
/turf/simulated/floor/tiled/eris/white/bluecorner,
|
||||
/area/stellardelight/deck1/resleeving)
|
||||
"Ik" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -20510,8 +20512,9 @@
|
||||
/obj/machinery/door/airlock/angled_bay/standard/color{
|
||||
dir = 8;
|
||||
door_color = "#ffffff";
|
||||
id_tag = "resleeveclean";
|
||||
name = "Cleaning Room";
|
||||
req_access = null;
|
||||
req_access = list(5);
|
||||
stripe_color = "#5a96bb"
|
||||
},
|
||||
/turf/simulated/floor/tiled/steel_ridged,
|
||||
@@ -33859,7 +33862,7 @@ dH
|
||||
oW
|
||||
vb
|
||||
pA
|
||||
Ij
|
||||
hv
|
||||
CG
|
||||
ZB
|
||||
hg
|
||||
|
||||
@@ -2264,6 +2264,11 @@
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 5
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/lowerhall)
|
||||
"adS" = (
|
||||
@@ -2288,6 +2293,11 @@
|
||||
name = "Mental Health";
|
||||
req_one_access = list()
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/lowerhall)
|
||||
"adV" = (
|
||||
@@ -2358,6 +2368,11 @@
|
||||
pixel_x = -26;
|
||||
pixel_y = -26
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 2;
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/lowerhall)
|
||||
"adY" = (
|
||||
@@ -2379,6 +2394,11 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/cable/green{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/lowerhall)
|
||||
"adZ" = (
|
||||
@@ -2552,11 +2572,11 @@
|
||||
/turf/simulated/floor/carpet/blue,
|
||||
/area/tether/surfacebase/medical/mentalhealth)
|
||||
"aem" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 10
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 10
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/surfacebase/lowernorthhall)
|
||||
@@ -2824,6 +2844,13 @@
|
||||
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
|
||||
dir = 5
|
||||
},
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/disposal/wall{
|
||||
dir = 8;
|
||||
name = "auto-resleeving equipment deposit"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/surfacebase/lowernorthhall)
|
||||
"aeE" = (
|
||||
@@ -3295,6 +3322,17 @@
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals4{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/surfacebase/lowernorthhall)
|
||||
"afp" = (
|
||||
@@ -3345,6 +3383,17 @@
|
||||
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/surfacebase/lowernorthhall)
|
||||
"aft" = (
|
||||
@@ -3381,6 +3430,7 @@
|
||||
dir = 4;
|
||||
pixel_x = 24
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"afz" = (
|
||||
@@ -8206,12 +8256,6 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/random/junk,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"anG" = (
|
||||
@@ -11278,11 +11322,13 @@
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 8;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 5
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"asU" = (
|
||||
@@ -13876,6 +13922,11 @@
|
||||
/obj/machinery/door/firedoor/glass/hidden/steel{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/lowerhall)
|
||||
"awZ" = (
|
||||
@@ -15870,12 +15921,12 @@
|
||||
d2 = 8;
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"azU" = (
|
||||
@@ -30423,13 +30474,19 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/lower/first_west)
|
||||
"bbI" = (
|
||||
/obj/item/weapon/tool/wrench{
|
||||
desc = "The lower jaw seems to keep jiggling...";
|
||||
name = "loose wrench";
|
||||
toolspeed = 3
|
||||
/obj/machinery/vending/loadout/uniform,
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 9
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"bbJ" = (
|
||||
/obj/structure/cable/green,
|
||||
/obj/structure/cable/green{
|
||||
@@ -30470,9 +30527,15 @@
|
||||
/turf/simulated/floor,
|
||||
/area/maintenance/substation/SurfMedsubstation)
|
||||
"bbM" = (
|
||||
/obj/random/cigarettes,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/machinery/transhuman/autoresleever,
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"bbN" = (
|
||||
/obj/structure/cable/green{
|
||||
d1 = 4;
|
||||
@@ -30628,9 +30691,18 @@
|
||||
/turf/simulated/floor,
|
||||
/area/maintenance/substation/SurfMedsubstation)
|
||||
"bbZ" = (
|
||||
/obj/random/junk,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/structure/disposalpipe/trunk{
|
||||
dir = 2
|
||||
},
|
||||
/obj/structure/disposaloutlet,
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"bca" = (
|
||||
/obj/effect/floor_decal/borderfloor,
|
||||
/obj/effect/floor_decal/corner/brown/border,
|
||||
@@ -31706,12 +31778,6 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lower/trash_pit)
|
||||
"bTE" = (
|
||||
/obj/structure/railing{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"bWg" = (
|
||||
/obj/machinery/vending/loadout/costume{
|
||||
dir = 4
|
||||
@@ -31803,12 +31869,11 @@
|
||||
/turf/simulated/floor/tiled/monotile,
|
||||
/area/crew_quarters/locker/laundry_arrival)
|
||||
"cqg" = (
|
||||
/obj/structure/railing{
|
||||
dir = 1
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/turf/simulated/wall,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"cqZ" = (
|
||||
/obj/effect/floor_decal/borderfloor{
|
||||
dir = 8
|
||||
@@ -32326,6 +32391,10 @@
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"dUK" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/simulated/wall,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"dYd" = (
|
||||
/obj/machinery/firealarm{
|
||||
layer = 3.3;
|
||||
@@ -32773,10 +32842,24 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/tether/surfacebase/funny/clownoffice)
|
||||
"fKm" = (
|
||||
/obj/random/junk,
|
||||
/obj/random/maintenance/cargo,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/machinery/firealarm{
|
||||
dir = 8;
|
||||
pixel_x = -24
|
||||
},
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"fLB" = (
|
||||
/obj/effect/floor_decal/steeldecal/steel_decals6{
|
||||
dir = 5
|
||||
@@ -33806,13 +33889,23 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/rnd/hallway)
|
||||
"idk" = (
|
||||
/obj/item/weapon/tool/wirecutters{
|
||||
desc = "It gets jammed a lot.";
|
||||
name = "janky wirecutters";
|
||||
toolspeed = 2
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/alarm{
|
||||
alarm_id = "pen_nine";
|
||||
breach_detection = 0;
|
||||
dir = 1;
|
||||
pixel_y = -22
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"iee" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
@@ -33895,6 +33988,25 @@
|
||||
/obj/item/device/radio/beacon,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/surfacebase/surface_one_hall)
|
||||
"itj" = (
|
||||
/obj/structure/cable/green{
|
||||
d2 = 8;
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/power/apc{
|
||||
dir = 4;
|
||||
name = "east bump";
|
||||
nightshift_setting = 2;
|
||||
pixel_x = 24
|
||||
},
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 6
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 6
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"iue" = (
|
||||
/turf/simulated/floor/looking_glass{
|
||||
dir = 1
|
||||
@@ -34049,9 +34161,6 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 5
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"jhN" = (
|
||||
@@ -34822,9 +34931,13 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/crew_quarters/visitor_laundry)
|
||||
"lbd" = (
|
||||
/obj/random/maintenance/cargo,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/effect/floor_decal/borderfloorwhite/corner,
|
||||
/obj/effect/floor_decal/corner/paleblue/bordercorner,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"lbu" = (
|
||||
/obj/effect/floor_decal/borderfloorwhite,
|
||||
/obj/effect/floor_decal/corner/paleblue/border,
|
||||
@@ -35003,6 +35116,25 @@
|
||||
/obj/machinery/holoposter,
|
||||
/turf/simulated/wall,
|
||||
/area/hallway/lower/first_west)
|
||||
"lBv" = (
|
||||
/obj/machinery/door/airlock/maintenance/medical{
|
||||
id_tag = "autor";
|
||||
name = "Auto-Resleeving";
|
||||
req_access = list(5)
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"lBO" = (
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -35148,9 +35280,32 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/tether/surfacebase/surface_one_hall)
|
||||
"lPQ" = (
|
||||
/obj/item/stack/cable_coil/random_belt,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/machinery/button/remote/airlock{
|
||||
desc = "A remote control door switch.";
|
||||
id = "autor";
|
||||
name = "Exit Button";
|
||||
pixel_x = -26;
|
||||
pixel_y = -26
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 10
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 10
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 9
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"lQu" = (
|
||||
/obj/item/weapon/reagent_containers/glass/bucket,
|
||||
/obj/structure/table/steel,
|
||||
@@ -35873,6 +36028,14 @@
|
||||
/obj/effect/floor_decal/industrial/warning,
|
||||
/turf/simulated/floor/tiled/dark,
|
||||
/area/tether/surfacebase/security/weaponsrange)
|
||||
"nzU" = (
|
||||
/obj/machinery/door/airlock/medical{
|
||||
id_tag = null;
|
||||
name = "Auto Resleeving";
|
||||
req_access = list(5)
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"nAK" = (
|
||||
/turf/simulated/wall/r_wall,
|
||||
/area/maintenance/engineering/atmos/airlock/gas)
|
||||
@@ -36375,9 +36538,22 @@
|
||||
/turf/simulated/floor/carpet/gaycarpet,
|
||||
/area/tether/surfacebase/funny/clownoffice)
|
||||
"oPH" = (
|
||||
/obj/random/pizzabox,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/machinery/light{
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/device/radio/intercom{
|
||||
dir = 1;
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 5
|
||||
},
|
||||
/obj/effect/floor_decal/corner/paleblue/border{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"oQm" = (
|
||||
/obj/effect/floor_decal/borderfloor/corner,
|
||||
/obj/structure/cable{
|
||||
@@ -36818,6 +36994,15 @@
|
||||
"qwV" = (
|
||||
/turf/simulated/wall,
|
||||
/area/tether/surfacebase/security/brig)
|
||||
"qBa" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"qBb" = (
|
||||
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
|
||||
dir = 1
|
||||
@@ -37024,12 +37209,12 @@
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"qVi" = (
|
||||
/obj/structure/railing{
|
||||
dir = 1
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 8;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/turf/simulated/wall,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"qWk" = (
|
||||
/obj/machinery/light,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -37649,6 +37834,10 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/engineering/atmos)
|
||||
"sOx" = (
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
"sQc" = (
|
||||
/obj/structure/sign/securearea{
|
||||
desc = "A warning sign which reads 'HIGH VOLTAGE'";
|
||||
@@ -38176,10 +38365,17 @@
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/maintenance/lower/xenoflora)
|
||||
"utQ" = (
|
||||
/obj/fiftyspawner/steel,
|
||||
/obj/random/junk,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/effect/floor_decal/borderfloorwhite,
|
||||
/obj/effect/floor_decal/corner/paleblue/border,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/shower{
|
||||
dir = 1
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"uuu" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
@@ -38318,6 +38514,9 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/tether/surfacebase/medical/lowerhall)
|
||||
"uIU" = (
|
||||
/turf/simulated/wall,
|
||||
/area/tether/surfacebase/medical/autoresleeving)
|
||||
"uKS" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
@@ -38465,11 +38664,8 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
dir = 4
|
||||
dir = 5
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lowmedbaymaint)
|
||||
@@ -53037,11 +53233,11 @@ aan
|
||||
atP
|
||||
awE
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aeU
|
||||
aef
|
||||
aef
|
||||
uIU
|
||||
uIU
|
||||
uIU
|
||||
lBv
|
||||
cqg
|
||||
afE
|
||||
aef
|
||||
aef
|
||||
@@ -53179,11 +53375,11 @@ aan
|
||||
uHS
|
||||
awC
|
||||
aeU
|
||||
aeU
|
||||
uIU
|
||||
bbI
|
||||
fKm
|
||||
lPQ
|
||||
bTE
|
||||
cqg
|
||||
akA
|
||||
aAG
|
||||
tdg
|
||||
@@ -53321,10 +53517,10 @@ afb
|
||||
atO
|
||||
awC
|
||||
aeU
|
||||
aeU
|
||||
uIU
|
||||
bbM
|
||||
lbd
|
||||
aAI
|
||||
itj
|
||||
cqg
|
||||
jcT
|
||||
ksK
|
||||
@@ -53463,10 +53659,10 @@ afb
|
||||
atO
|
||||
awp
|
||||
axO
|
||||
aeU
|
||||
uIU
|
||||
bbZ
|
||||
utQ
|
||||
lbd
|
||||
dUK
|
||||
qVi
|
||||
anF
|
||||
ksK
|
||||
@@ -53605,11 +53801,11 @@ afb
|
||||
atO
|
||||
awG
|
||||
aed
|
||||
aeU
|
||||
uIU
|
||||
oPH
|
||||
idk
|
||||
bbZ
|
||||
bTE
|
||||
uIU
|
||||
sOx
|
||||
vuO
|
||||
ksK
|
||||
tdg
|
||||
@@ -53747,12 +53943,12 @@ afb
|
||||
atO
|
||||
awz
|
||||
aeU
|
||||
aeU
|
||||
uIU
|
||||
uIU
|
||||
nzU
|
||||
uIU
|
||||
axP
|
||||
axP
|
||||
axP
|
||||
axP
|
||||
vuO
|
||||
qBa
|
||||
ksK
|
||||
oKn
|
||||
oKn
|
||||
|
||||
@@ -39409,7 +39409,9 @@
|
||||
alarms_hidden = 1;
|
||||
dir = 1;
|
||||
name = "north bump";
|
||||
pixel_y = 28
|
||||
pixel_y = 28;
|
||||
req_access = null;
|
||||
req_one_access = list(11,67)
|
||||
},
|
||||
/obj/structure/cable/green{
|
||||
icon_state = "0-4"
|
||||
|
||||
@@ -440,6 +440,8 @@
|
||||
name = "\improper Medical Central Hall"
|
||||
/area/tether/surfacebase/medical/lowerhall
|
||||
name = "\improper Medical Lower Hall"
|
||||
/area/tether/surfacebase/medical/autoresleeving
|
||||
name = "\improper Medical Auto Resleeving"
|
||||
//North SurfMed3-2 Stairwell
|
||||
/area/tether/surfacebase/medical/uppernorthstairwell
|
||||
name = "\improper Medical Stairwell"
|
||||
|
||||
+4
-3
@@ -1692,6 +1692,7 @@
|
||||
#include "code\modules\admin\admin_tools.dm"
|
||||
#include "code\modules\admin\admin_verb_lists_vr.dm"
|
||||
#include "code\modules\admin\admin_verbs.dm"
|
||||
#include "code\modules\admin\admin_verbs_vr.dm"
|
||||
#include "code\modules\admin\admin_vr.dm"
|
||||
#include "code\modules\admin\banjob.dm"
|
||||
#include "code\modules\admin\ckey_vr.dm"
|
||||
@@ -3619,7 +3620,6 @@
|
||||
#include "code\modules\projectiles\guns\energy\netgun_vr.dm"
|
||||
#include "code\modules\projectiles\guns\energy\netgun_yw.dm"
|
||||
#include "code\modules\projectiles\guns\energy\nuclear.dm"
|
||||
#include "code\modules\projectiles\guns\energy\nuclear_vr.dm"
|
||||
#include "code\modules\projectiles\guns\energy\nuclear_yw.dm"
|
||||
#include "code\modules\projectiles\guns\energy\particle.dm"
|
||||
#include "code\modules\projectiles\guns\energy\phase.dm"
|
||||
@@ -3662,7 +3662,6 @@
|
||||
#include "code\modules\projectiles\guns\projectile\dartgun_vr.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\leveraction.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\pistol.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\pistol_vr.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\pistol_yw.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\revolver.dm"
|
||||
#include "code\modules\projectiles\guns\projectile\revolver_vr.dm"
|
||||
@@ -3836,6 +3835,7 @@
|
||||
#include "code\modules\research\designs\circuits\circuits_vr.dm"
|
||||
#include "code\modules\research\designs\circuits\circuits_yw.dm"
|
||||
#include "code\modules\research\designs\circuits\disks.dm"
|
||||
#include "code\modules\resleeving\autoresleever.dm"
|
||||
#include "code\modules\resleeving\circuitboards.dm"
|
||||
#include "code\modules\resleeving\computers.dm"
|
||||
#include "code\modules\resleeving\designer.dm"
|
||||
@@ -4076,6 +4076,7 @@
|
||||
#include "code\modules\vore\eating\living_vr.dm"
|
||||
#include "code\modules\vore\eating\silicon_vr.dm"
|
||||
#include "code\modules\vore\eating\simple_animal_vr.dm"
|
||||
#include "code\modules\vore\eating\slipvore_vr.dm"
|
||||
#include "code\modules\vore\eating\transforming_vr.dm"
|
||||
#include "code\modules\vore\eating\vore_vr.dm"
|
||||
#include "code\modules\vore\eating\vorehooks_vr.dm"
|
||||
@@ -4252,4 +4253,4 @@
|
||||
#include "maps\yw\structures\closets\research.dm"
|
||||
#include "maps\yw\structures\closets\security.dm"
|
||||
#include "maps\~map_system\maps.dm"
|
||||
// END_INCLUDE
|
||||
// END_INCLUDE
|
||||
|
||||
Reference in New Issue
Block a user