conflict resolution
@@ -47,7 +47,7 @@ jobs:
|
||||
~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1
|
||||
|
||||
- name: Annotate Linter
|
||||
uses: yogstation13/DreamAnnotate@v1
|
||||
uses: yogstation13/DreamAnnotate@v2
|
||||
if: always()
|
||||
with:
|
||||
outputFile: output-annotations.txt
|
||||
|
||||
@@ -313,6 +313,8 @@ var/global/list/##LIST_NAME = list();\
|
||||
|
||||
#define send_link(target, url) target << link(url)
|
||||
|
||||
#define SPAN_ITALIC(X) "<span class='italic'>[X]</span>"
|
||||
|
||||
#define SPAN_NOTICE(X) "<span class='notice'>[X]</span>"
|
||||
|
||||
#define SPAN_WARNING(X) "<span class='warning'>[X]</span>"
|
||||
|
||||
@@ -452,3 +452,14 @@
|
||||
|
||||
/// Used by human/get_visible_gender(user, force) to return the mob's biological gender
|
||||
#define VISIBLE_GENDER_FORCE_BIOLOGICAL 3
|
||||
|
||||
|
||||
// Dexterity levels for mob/proc/check_dexterity
|
||||
#define MOB_DEXTERITY_NONE 0
|
||||
#define MOB_DEXTERITY_SIMPLE_MACHINES 10
|
||||
#define MOB_DEXTERITY_KEYBOARDS 20
|
||||
#define MOB_DEXTERITY_TOUCHSCREENS 30
|
||||
#define MOB_DEXTERITY_GRIP 40
|
||||
#define MOB_DEXTERITY_WEAPONS 50
|
||||
#define MOB_DEXTERITY_COMPLEX_TOOLS 60
|
||||
#define MOB_DEXTERITY_FULL 70
|
||||
|
||||
@@ -349,21 +349,22 @@
|
||||
last_found = found + delim_len
|
||||
while (found)
|
||||
|
||||
|
||||
/proc/type2parent(child)
|
||||
var/string_type = "[child]"
|
||||
var/last_slash = findlasttext(string_type, "/")
|
||||
if(last_slash == 1)
|
||||
switch(child)
|
||||
if(/datum)
|
||||
return null
|
||||
if(/obj || /mob)
|
||||
return /atom/movable
|
||||
if(/area || /turf)
|
||||
return /atom
|
||||
else
|
||||
return /datum
|
||||
if (last_slash != 1)
|
||||
return text2path(copytext(string_type, 1, last_slash))
|
||||
switch (child)
|
||||
if (/datum)
|
||||
return null
|
||||
if (/obj, /mob)
|
||||
return /atom/movable
|
||||
if (/area, /turf)
|
||||
return /atom
|
||||
else
|
||||
return /datum
|
||||
|
||||
return text2path(copytext(string_type, 1, last_slash))
|
||||
|
||||
//checks if a file exists and contains text
|
||||
//returns text as a string if these conditions are met
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#define CHAT_RUNE_EMOTE 0x1
|
||||
#define CHAT_RUNE_RADIO 0x2
|
||||
|
||||
#define CHAT_MESSAGE_DEFAULT_ACTION "<span style='font-size: 1.5em'>👁</span>"
|
||||
|
||||
/**
|
||||
* # Chat Message Overlay
|
||||
*
|
||||
|
||||
@@ -77,9 +77,9 @@
|
||||
name = OUTFIT_COSTUME("Firefighter")
|
||||
uniform = /obj/item/clothing/under/pants
|
||||
shoes = /obj/item/clothing/shoes/boots/workboots
|
||||
head = /obj/item/clothing/head/hardhat/red
|
||||
head = /obj/item/clothing/head/hardhat/red/firefighter
|
||||
gloves = /obj/item/clothing/gloves/black
|
||||
suit = /obj/item/clothing/suit/fire/firefighter
|
||||
suit = /obj/item/clothing/suit/fire
|
||||
mask = /obj/item/clothing/mask/gas
|
||||
|
||||
/decl/hierarchy/outfit/costume/highlander
|
||||
@@ -127,4 +127,4 @@
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/marine
|
||||
suit = /obj/item/clothing/suit/marine
|
||||
r_hand = /obj/item/gun/projectile/revolver/toy/sawnoff
|
||||
r_hand = /obj/item/gun/projectile/revolver/toy/sawnoff
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
name = "Pistol Magazine (.45)"
|
||||
path = /obj/item/ammo_magazine/m45
|
||||
|
||||
/datum/uplink_item/item/ammo/c45mcompact
|
||||
name = "Pistol Magazine (.45 Compact)"
|
||||
path = /obj/item/ammo_magazine/m45/compact
|
||||
|
||||
/datum/uplink_item/item/ammo/c45map
|
||||
name = "Pistol Magazine (.45 AP)"
|
||||
path = /obj/item/ammo_magazine/m45/ap
|
||||
@@ -130,4 +134,4 @@
|
||||
|
||||
/datum/uplink_item/item/ammo/cell
|
||||
name = "weapon cell"
|
||||
path = /obj/item/cell/device/weapon
|
||||
path = /obj/item/cell/device/weapon
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
name = "Combat Shotgun"
|
||||
item_cost = 75
|
||||
path = /obj/item/gun/projectile/shotgun/pump/combat
|
||||
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/semishotgun
|
||||
name = "Semi-Automatic Shotgun"
|
||||
item_cost = 100
|
||||
@@ -154,6 +154,11 @@
|
||||
item_cost = 30
|
||||
path = /obj/item/gun/energy/gun/compact
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/compact_45
|
||||
name = "Compact .45 pistol"
|
||||
item_cost = 40
|
||||
path = /obj/item/gun/projectile/compact_45
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/lasercannon
|
||||
name = "Laser Cannon"
|
||||
item_cost = 60
|
||||
|
||||
@@ -498,7 +498,7 @@ var/global/list/pre_init_created_atoms // atom creation ordering means some stuf
|
||||
// Use for objects performing visible actions
|
||||
// message is output to anyone who can see, e.g. "The [src] does something!"
|
||||
// blind_message (optional) is what blind people will hear e.g. "You hear something!"
|
||||
/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs, var/range = world.view, var/runemessage = "<span style='font-size: 1.5em'>👁</span>")
|
||||
/atom/proc/visible_message(var/message, var/blind_message, var/list/exclude_mobs, var/range = world.view, var/runemessage = CHAT_MESSAGE_DEFAULT_ACTION)
|
||||
|
||||
var/list/see = get_mobs_and_objs_in_view_fast(get_turf(src), range, remote_ghosts = FALSE)
|
||||
|
||||
|
||||
@@ -10,9 +10,10 @@
|
||||
use_power = USE_POWER_IDLE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
/obj/machinery/button/attack_ai(mob/user as mob)
|
||||
/obj/machinery/button/attack_ai(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/button/attackby(obj/item/W, mob/user as mob)
|
||||
return attack_hand(user)
|
||||
/obj/machinery/button/attackby(obj/item/item, mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -228,6 +228,8 @@
|
||||
anchored = 1
|
||||
power_channel = ENVIRON
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
var/master_tag
|
||||
var/frequency = 1449
|
||||
var/command = "cycle"
|
||||
|
||||
@@ -35,10 +35,12 @@
|
||||
dir = EAST
|
||||
var/width = 1
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
// turf animation
|
||||
var/atom/movable/overlay/c_animation = null
|
||||
|
||||
/obj/machinery/door/attack_generic(var/mob/user, var/damage)
|
||||
/obj/machinery/door/attack_generic(mob/user, damage)
|
||||
if(isanimal(user))
|
||||
var/mob/living/simple_mob/S = user
|
||||
if(S.a_intent == I_HURT && damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD)
|
||||
@@ -46,10 +48,13 @@
|
||||
playsound(src, S.attack_sound, 75, 1)
|
||||
take_damage(damage)
|
||||
else if(user.a_intent == I_HELP)
|
||||
if (S.scratch_sound)
|
||||
playsound(src, S.scratch_sound, 75, TRUE)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] scratches at the bottom of \the [src]."))
|
||||
else
|
||||
visible_message(SPAN_NOTICE("\The [user] bonks \the [src] harmlessly."))
|
||||
user.do_attack_animation(src)
|
||||
user.setClickCooldown(user.get_attack_speed())
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
autoclose = 0
|
||||
var/locked = 0
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_NONE
|
||||
|
||||
/obj/machinery/door/unpowered/Bumped(atom/AM)
|
||||
if(src.locked)
|
||||
return
|
||||
|
||||
@@ -13,6 +13,8 @@ var/global/list/floor_light_cache = list()
|
||||
power_channel = LIGHT
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 2500, "glass" = 2750)
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
var/on
|
||||
var/damaged
|
||||
var/default_light_range = 4
|
||||
|
||||
@@ -114,6 +114,9 @@ Class Procs:
|
||||
|
||||
var/speed_process = FALSE //If false, SSmachines. If true, SSfastprocess.
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_TOUCHSCREENS
|
||||
|
||||
|
||||
/obj/machinery/Initialize(var/ml, d=0)
|
||||
. = ..()
|
||||
if(d)
|
||||
@@ -233,14 +236,14 @@ Class Procs:
|
||||
else
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/attack_hand(mob/user as mob)
|
||||
|
||||
if(inoperable(MAINT))
|
||||
return 1
|
||||
if(user.lying || user.stat)
|
||||
return 1
|
||||
if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon)))
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
if (!user.check_dexterity(required_dexterity, src))
|
||||
return 1
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
use_power = USE_POWER_OFF
|
||||
anchored = 1
|
||||
density = 1
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
var/charges = 1
|
||||
var/insisting = 0
|
||||
|
||||
@@ -66,4 +67,4 @@
|
||||
show_objectives(user.mind)
|
||||
to_chat(user, "You have a very bad feeling about this.")
|
||||
|
||||
return
|
||||
return
|
||||
|
||||
@@ -419,7 +419,7 @@
|
||||
return 1
|
||||
|
||||
//This proc is called when you want to place an item into the storage item.
|
||||
/obj/item/storage/attackby(obj/item/W as obj, mob/user as mob)
|
||||
/obj/item/storage/attackby(obj/item/W as obj, mob/user as mob, silent)
|
||||
..()
|
||||
|
||||
if(isrobot(user))
|
||||
@@ -437,7 +437,8 @@
|
||||
remove_from_storage(L, T)
|
||||
qdel(L)
|
||||
if(amt_inserted)
|
||||
to_chat(user, "You inserted [amt_inserted] light\s into \the [LP.name]. You have [LP.uses] light\s remaining.")
|
||||
if (!silent)
|
||||
to_chat(user, "You inserted [amt_inserted] light\s into \the [LP.name]. You have [LP.uses] light\s remaining.")
|
||||
return
|
||||
|
||||
if(!can_be_inserted(W))
|
||||
@@ -447,17 +448,19 @@
|
||||
var/obj/item/tray/T = W
|
||||
if(T.calc_carry() > 0)
|
||||
if(prob(85))
|
||||
to_chat(user, "<span class='warning'>The tray won't fit in [src].</span>")
|
||||
if (!silent)
|
||||
to_chat(user, "<span class='warning'>The tray won't fit in [src].</span>")
|
||||
return
|
||||
else
|
||||
W.forceMove(get_turf(user))
|
||||
if ((user.client && user.s_active != src))
|
||||
user.client.screen -= W
|
||||
W.dropped(user)
|
||||
to_chat(user, "<span class='warning'>God damn it!</span>")
|
||||
if (!silent)
|
||||
to_chat(user, "<span class='warning'>God damn it!</span>")
|
||||
|
||||
W.add_fingerprint(user)
|
||||
return handle_item_insertion(W)
|
||||
return handle_item_insertion(W, silent)
|
||||
|
||||
/obj/item/storage/dropped(mob/user as mob)
|
||||
return
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
|
||||
var/show_examine = TRUE // Does this pop up on a mob when the mob is examined?
|
||||
|
||||
/// One of MOB_DEXTERITY_* - the dexterity level required to use this object, if any.
|
||||
var/required_dexterity = MOB_DEXTERITY_NONE
|
||||
|
||||
|
||||
/obj/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
@@ -26,11 +26,14 @@
|
||||
prob(2);/obj/item/gun/energy/ionrifle,
|
||||
prob(2);/obj/item/gun/energy/ionrifle/pistol,
|
||||
prob(3);/obj/item/gun/energy/toxgun,
|
||||
prob(3);/obj/item/gun/energy/taser,
|
||||
prob(1);/obj/item/gun/energy/taser,
|
||||
prob(1);/obj/item/gun/energy/taser/disabler,
|
||||
prob(2);/obj/item/gun/energy/crossbow/largecrossbow,
|
||||
prob(3);/obj/item/gun/energy/stunrevolver,
|
||||
prob(2);/obj/item/gun/energy/stunrevolver/vintage,
|
||||
prob(3);/obj/item/gun/energy/gun/compact)
|
||||
prob(3);/obj/item/gun/energy/gun/compact,
|
||||
prob(2);/obj/item/gun/energy/gun/pocket
|
||||
)
|
||||
|
||||
/obj/random/energy/highend
|
||||
name = "Random Energy Weapon"
|
||||
@@ -48,7 +51,10 @@
|
||||
prob(3);/obj/item/gun/energy/xray,
|
||||
prob(1);/obj/item/gun/energy/sniperrifle,
|
||||
prob(2);/obj/item/gun/energy/crossbow/largecrossbow,
|
||||
prob(3);/obj/item/gun/energy/gun/compact)
|
||||
prob(3);/obj/item/gun/energy/gun/compact,
|
||||
prob(2);/obj/item/gun/energy/gun/pocket,
|
||||
prob(1);/obj/item/gun/energy/monorifle,
|
||||
prob(1);/obj/item/gun/energy/lasershotgun)
|
||||
|
||||
/obj/random/energy/sec
|
||||
name = "Random Security Energy Weapon"
|
||||
@@ -72,6 +78,8 @@
|
||||
prob(2);/obj/item/gun/projectile/automatic/sts35,
|
||||
prob(2);/obj/item/gun/projectile/automatic/z8,
|
||||
prob(2);/obj/item/gun/projectile/automatic/combatsmg,
|
||||
prob(2);/obj/item/gun/projectile/automatic/pearlshield,
|
||||
prob(2);/obj/item/gun/projectile/automatic/p90,
|
||||
prob(4);/obj/item/gun/projectile/colt,
|
||||
prob(2);/obj/item/gun/projectile/deagle,
|
||||
prob(1);/obj/item/gun/projectile/deagle/camo,
|
||||
@@ -84,7 +92,8 @@
|
||||
prob(3);/obj/item/gun/projectile/sec/wood,
|
||||
prob(4);/obj/item/gun/projectile/p92x,
|
||||
prob(3);/obj/item/gun/projectile/p92x/brown,
|
||||
prob(4);/obj/item/gun/projectile/pistol,
|
||||
prob(2);/obj/item/gun/projectile/pistol,
|
||||
prob(2);/obj/item/gun/projectile/pistol/alt,
|
||||
prob(5);/obj/item/gun/projectile/pirate,
|
||||
prob(2);/obj/item/gun/projectile/revolver,
|
||||
prob(4);/obj/item/gun/projectile/revolver/deckard,
|
||||
@@ -92,12 +101,16 @@
|
||||
prob(2);/obj/item/gun/projectile/revolver/judge,
|
||||
prob(3);/obj/item/gun/projectile/revolver/lemat,
|
||||
prob(2);/obj/item/gun/projectile/revolver/mateba,
|
||||
prob(2);/obj/item/gun/projectile/revolver/webley,
|
||||
prob(2);/obj/item/gun/projectile/revolver/webley/large,
|
||||
prob(4);/obj/item/gun/projectile/shotgun/doublebarrel,
|
||||
prob(3);/obj/item/gun/projectile/shotgun/doublebarrel/sawn,
|
||||
prob(3);/obj/item/gun/projectile/shotgun/pump,
|
||||
prob(2);/obj/item/gun/projectile/shotgun/pump/combat,
|
||||
prob(4);/obj/item/gun/projectile/shotgun/pump/rifle,
|
||||
prob(1);/obj/item/gun/projectile/shotgun/pump/rifle/antique,
|
||||
prob(3);/obj/item/gun/projectile/shotgun/pump/rifle/lever,
|
||||
prob(3);/obj/item/gun/projectile/shotgun/pump/rifle/lever/brushgun,
|
||||
prob(2);/obj/item/gun/projectile/shotgun/semi,
|
||||
prob(2);/obj/item/gun/projectile/silenced)
|
||||
|
||||
@@ -123,10 +136,19 @@
|
||||
prob(1);/obj/item/gun/projectile/shotgun/pump/combat,
|
||||
prob(1);/obj/item/gun/projectile/shotgun/semi)
|
||||
|
||||
/obj/random/sidearm
|
||||
name = "Random Sidearm"
|
||||
desc = "This is a random one-handed sidearm of any type."
|
||||
icon_state = "gun"
|
||||
|
||||
/obj/random/sidearm/item_to_spawn()
|
||||
return pick(prob(5);/obj/random/handgun,
|
||||
prob(5);/obj/random/revolver,
|
||||
prob(5);/obj/random/energy_pistol)
|
||||
|
||||
/obj/random/handgun
|
||||
name = "Random Handgun"
|
||||
desc = "This is a random sidearm."
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
name = "Random Pistol"
|
||||
desc = "This is a random semi-auto sidearm."
|
||||
icon_state = "gun"
|
||||
|
||||
/obj/random/handgun/item_to_spawn()
|
||||
@@ -136,10 +158,38 @@
|
||||
prob(3);/obj/item/gun/projectile/p92x/brown,
|
||||
prob(3);/obj/item/gun/projectile/colt,
|
||||
prob(2);/obj/item/gun/projectile/luger,
|
||||
prob(2);/obj/item/gun/energy/gun,
|
||||
prob(2);/obj/item/gun/projectile/pistol,
|
||||
prob(2);/obj/item/gun/projectile/pistol/alt,
|
||||
prob(2);/obj/item/gun/projectile/luger/brown,
|
||||
prob(1);/obj/item/gun/projectile/compact_45)
|
||||
|
||||
/obj/random/energy_pistol
|
||||
name = "Random Energy Pistol"
|
||||
desc = "This is a random energy sidearm."
|
||||
icon_state = "gun_energy"
|
||||
/obj/random/energy_pistol/item_to_spawn()
|
||||
return pick(prob(2);/obj/item/gun/energy/gun,
|
||||
prob(1);/obj/item/gun/energy/retro,
|
||||
prob(1);/obj/item/gun/projectile/luger/brown)
|
||||
prob(1);/obj/item/gun/energy/gun/compact,
|
||||
prob(1);/obj/item/gun/energy/gun/pocket)
|
||||
|
||||
/obj/random/revolver
|
||||
name = "Random Revolver"
|
||||
desc = "This is a random revolver."
|
||||
icon_state = "gun"
|
||||
|
||||
/obj/random/revolver/item_to_spawn()
|
||||
return pick(prob(4);/obj/item/gun/projectile/revolver,
|
||||
prob(4);/obj/item/gun/projectile/revolver/mateba,
|
||||
prob(3);/obj/item/gun/projectile/revolver/detective,
|
||||
prob(3);/obj/item/gun/projectile/revolver/detective45,
|
||||
prob(3);/obj/item/gun/projectile/revolver/deckard,
|
||||
prob(2);/obj/item/gun/projectile/revolver/judge,
|
||||
prob(2);/obj/item/gun/projectile/revolver/lemat,
|
||||
prob(2);/obj/item/gun/projectile/revolver/webley,
|
||||
prob(1);/obj/item/gun/projectile/revolver/webley/auto,
|
||||
prob(1);/obj/item/gun/projectile/revolver/webley/magnetic,
|
||||
prob(1);/obj/item/gun/projectile/revolver/webley/large)
|
||||
|
||||
/obj/random/handgun/sec
|
||||
name = "Random Security Handgun"
|
||||
@@ -239,7 +289,6 @@
|
||||
/obj/random/projectile/random
|
||||
name = "Random Projectile Weapon"
|
||||
desc = "This is a random projectile weapon."
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "gun_2"
|
||||
|
||||
/obj/random/projectile/random/item_to_spawn()
|
||||
@@ -283,6 +332,11 @@
|
||||
/obj/item/gun/projectile/automatic/combatsmg,
|
||||
/obj/item/ammo_magazine/m9mmt,
|
||||
/obj/item/ammo_magazine/m9mmt
|
||||
),
|
||||
prob(2);list(
|
||||
/obj/item/gun/projectile/automatic/pearlshield,
|
||||
/obj/item/ammo_magazine/m9mmt,
|
||||
/obj/item/ammo_magazine/m9mmt
|
||||
)
|
||||
)
|
||||
|
||||
@@ -291,8 +345,6 @@
|
||||
desc = "Loot for PoIs."
|
||||
icon_state = "gun_rifle"
|
||||
|
||||
//Concerns about the bullpup, but currently seems to be only a slightly stronger z8. But we shall see.
|
||||
|
||||
/obj/random/multiple/gun/projectile/rifle/item_to_spawn()
|
||||
return pick(
|
||||
prob(2);list(
|
||||
@@ -365,9 +417,9 @@
|
||||
/obj/item/ammo_magazine/m44
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/gun/projectile/deagle/camo,
|
||||
/obj/item/ammo_magazine/m44,
|
||||
/obj/item/ammo_magazine/m44
|
||||
/obj/item/gun/projectile/compact_45,
|
||||
/obj/item/ammo_magazine/m45/compact,
|
||||
/obj/item/ammo_magazine/m45/compact
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/gun/projectile/deagle/gold,
|
||||
@@ -465,6 +517,11 @@
|
||||
/obj/item/gun/projectile/revolver/webley/auto,
|
||||
/obj/item/ammo_magazine/s44,
|
||||
/obj/item/ammo_magazine/s44
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/gun/projectile/revolver/webley/magnetic,
|
||||
/obj/item/ammo_magazine/s44,
|
||||
/obj/item/ammo_magazine/s44
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
/obj/item/radio/headset/headset_cargo/alt,
|
||||
/obj/item/clothing/gloves/black,
|
||||
/obj/item/clothing/gloves/fingerless,
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/tank/emergency/oxygen,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/glasses/meson,
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
/obj/item/radio/headset/heads/ce/alt,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/clothing/suit/storage/hazardvest,
|
||||
/obj/item/clothing/head/hardhat/firefighter/chief,
|
||||
/obj/item/clothing/suit/fire/atmos,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/multitool,
|
||||
/obj/item/storage/belt/utility/chief/full,
|
||||
@@ -100,8 +102,8 @@
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/accessory/storage/brown_vest,
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/head/hardhat/red,
|
||||
/obj/item/clothing/suit/fire/atmos,
|
||||
/obj/item/clothing/head/hardhat/firefighter,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/clamp,
|
||||
|
||||
@@ -62,29 +62,29 @@
|
||||
closet_appearance = /decl/closet_appearance/oxygen/fire
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/tank/oxygen/red,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/clothing/head/hardhat/red)
|
||||
/obj/item/clothing/head/hardhat/firefighter)
|
||||
|
||||
/obj/structure/closet/firecloset/full
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/tank/oxygen/red,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/clothing/head/hardhat/red)
|
||||
/obj/item/clothing/head/hardhat/firefighter)
|
||||
|
||||
/obj/structure/closet/firecloset/full/double
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter = 2,
|
||||
/obj/item/clothing/suit/fire = 2,
|
||||
/obj/item/clothing/mask/gas = 2,
|
||||
/obj/item/flashlight = 2,
|
||||
/obj/item/tank/oxygen/red = 2,
|
||||
/obj/item/extinguisher = 2,
|
||||
/obj/item/clothing/head/hardhat/red = 2)
|
||||
/obj/item/clothing/head/hardhat/firefighter = 2)
|
||||
|
||||
/*
|
||||
* Tool Closet
|
||||
@@ -189,12 +189,12 @@
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/tank/oxygen/red,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/clothing/head/hardhat/red)
|
||||
/obj/item/clothing/head/hardhat/firefighter)
|
||||
|
||||
/*
|
||||
* First Aid
|
||||
|
||||
@@ -140,12 +140,12 @@
|
||||
density = 0
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/tank/oxygen/red,
|
||||
/obj/item/extinguisher,
|
||||
/obj/item/clothing/head/hardhat/red)
|
||||
/obj/item/clothing/head/hardhat/firefighter)
|
||||
|
||||
/obj/structure/closet/walllocker_double/hydrant/north
|
||||
pixel_y = 32
|
||||
@@ -161,4 +161,4 @@
|
||||
|
||||
/obj/structure/closet/walllocker_double/hydrant/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
dir = EAST
|
||||
|
||||
@@ -78,3 +78,18 @@
|
||||
/obj/structure/shuttle/engine/router
|
||||
name = "router"
|
||||
icon_state = "router"
|
||||
|
||||
/obj/structure/shuttle/falsewall_no_join //For faking the appearance of joinable walls when joinable walls won't behave correctly on specific shuttle tiles.
|
||||
name = "shuttle wall"
|
||||
icon = 'icons/turf/shuttle_white.dmi'
|
||||
icon_state = "light" //Should be switched out as needed
|
||||
layer = TURF_LAYER
|
||||
density = 1
|
||||
anchored = 1
|
||||
can_atmos_pass = ATMOS_PASS_NO
|
||||
|
||||
/obj/structure/shuttle/falsewall_no_join/window
|
||||
name = "shuttle window"
|
||||
icon = 'icons/obj/podwindows.dmi'
|
||||
icon_state = "0_0"
|
||||
opacity = 0
|
||||
|
||||
@@ -166,6 +166,7 @@
|
||||
/datum/gear/accessory/webbing_simple
|
||||
display_name = "webbing, simple"
|
||||
path = /obj/item/clothing/accessory/storage/webbing
|
||||
cost = 2
|
||||
|
||||
/datum/gear/accessory/drop_pouches
|
||||
display_name = "drop pouches selection (Engineering, Security, Medical)"
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
/datum/gear/suit/bomber
|
||||
display_name = "jacket, bomber selection"
|
||||
description = "A selection of jackets styled on early aviation gear."
|
||||
path = /obj/item/clothing/suit/storage/toggle/bomber
|
||||
cost = 2
|
||||
|
||||
@@ -47,6 +48,7 @@
|
||||
|
||||
/datum/gear/suit/leather_jacket
|
||||
display_name = "jacket, leather selection"
|
||||
description = "A selection of leather jackets in various styles."
|
||||
path = /obj/item/clothing/suit/storage/toggle/leather_jacket
|
||||
|
||||
/datum/gear/suit/leather_jacket/New()
|
||||
@@ -61,6 +63,7 @@
|
||||
|
||||
/datum/gear/suit/leather_vest
|
||||
display_name = "jacket, leather vest selection"
|
||||
description = "A selection of sleeveless leather jackets in various styles."
|
||||
path = /obj/item/clothing/suit/storage/toggle/leather_jacket/sleeveless
|
||||
|
||||
/datum/gear/suit/leather_vest/New()
|
||||
@@ -74,6 +77,7 @@
|
||||
|
||||
/datum/gear/suit/mil
|
||||
display_name = "military jacket selection"
|
||||
description = "A selection of jackets resembling vintage military gear."
|
||||
path = /obj/item/clothing/suit/storage/miljacket
|
||||
|
||||
/datum/gear/suit/mil/New()
|
||||
@@ -90,6 +94,7 @@
|
||||
|
||||
/datum/gear/suit/trenchcoat
|
||||
display_name = "trenchcoat selection"
|
||||
description = "A selection of long raincoats."
|
||||
path = /obj/item/clothing/suit/storage/trench
|
||||
|
||||
/datum/gear/suit/trenchcoat/New()
|
||||
@@ -121,6 +126,7 @@
|
||||
|
||||
/datum/gear/suit/hoodie
|
||||
display_name = "hoodie selection"
|
||||
description = "A selection of hooded sweatshirts."
|
||||
path = /obj/item/clothing/suit/storage/toggle/hoodie
|
||||
cost = 2
|
||||
|
||||
@@ -134,6 +140,7 @@
|
||||
|
||||
/datum/gear/suit/labcoat
|
||||
display_name = "labcoat, colored selection"
|
||||
description = "A selection of labcoats in standard, and non-standard colours."
|
||||
path = /obj/item/clothing/suit/storage/toggle/labcoat
|
||||
cost = 2
|
||||
|
||||
@@ -177,6 +184,7 @@
|
||||
|
||||
/datum/gear/suit/poncho
|
||||
display_name = "poncho selection"
|
||||
description = "A selection of ponchos in basic and departmental colours."
|
||||
path = /obj/item/clothing/accessory/poncho
|
||||
|
||||
/datum/gear/suit/poncho/New()
|
||||
@@ -187,11 +195,12 @@
|
||||
ponchos[initial(poncho.name)] = poncho
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ponchos))
|
||||
|
||||
/datum/gear/suit/cloak
|
||||
/datum/gear/suit/cloak_department
|
||||
display_name = "cloak, departmental selection"
|
||||
description = "A selection of cloaks in departmental colours."
|
||||
path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo
|
||||
|
||||
/datum/gear/suit/cloak/New()
|
||||
/datum/gear/suit/cloak_department/New()
|
||||
..()
|
||||
var/list/cloaks = list()
|
||||
for(var/cloak_style in (typesof(/obj/item/clothing/accessory/poncho/roles/cloak)))
|
||||
@@ -203,7 +212,7 @@
|
||||
display_name = "cloak (colorable)"
|
||||
path = /obj/item/clothing/accessory/poncho/roles/cloak/custom
|
||||
|
||||
/datum/gear/suit/roles/poncho/cloak/custom/New()
|
||||
/datum/gear/suit/cloak_custom/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
@@ -212,7 +221,8 @@
|
||||
path = /obj/item/clothing/suit/unathi/robe
|
||||
|
||||
/datum/gear/suit/suit_jackets
|
||||
display_name = "suit jacket selection"
|
||||
display_name = "jacket, suit selection"
|
||||
description = "A selection of stylish suit jackets."
|
||||
path = /obj/item/clothing/suit/storage/toggle/internalaffairs
|
||||
|
||||
/datum/gear/suit/suit_jackets/New()
|
||||
@@ -229,6 +239,7 @@
|
||||
|
||||
/datum/gear/suit/forensics
|
||||
display_name = "jacket, forensics selection (Detective)"
|
||||
description = "A selection of windbreakers in security colours."
|
||||
path = /obj/item/clothing/suit/storage/forensics/red/long
|
||||
allowed_roles = list("Detective")
|
||||
|
||||
@@ -243,6 +254,7 @@
|
||||
|
||||
/datum/gear/suit/wintercoat
|
||||
display_name = "winter coat selection"
|
||||
description = "A selection of heavy winter coats to keep you toasty in extreme weather."
|
||||
path = /obj/item/clothing/suit/storage/hooded/wintercoat
|
||||
cost = 2
|
||||
|
||||
@@ -256,6 +268,7 @@
|
||||
|
||||
/datum/gear/suit/varsity
|
||||
display_name = "jacket, varsity selection"
|
||||
description = "A selection of two-tone cotton jackets."
|
||||
path = /obj/item/clothing/suit/varsity
|
||||
|
||||
/datum/gear/suit/varsity/New()
|
||||
@@ -268,6 +281,7 @@
|
||||
|
||||
/datum/gear/suit/track
|
||||
display_name = "jacket, track selection"
|
||||
description = "A selection of lightweight sports jackets."
|
||||
path = /obj/item/clothing/suit/storage/toggle/track
|
||||
|
||||
/datum/gear/suit/track/New()
|
||||
@@ -280,6 +294,7 @@
|
||||
|
||||
/datum/gear/suit/flannel
|
||||
display_name = "flannel selection"
|
||||
description = "A selection of comfortable plaid shirts."
|
||||
path = /obj/item/clothing/suit/storage/flannel
|
||||
|
||||
/datum/gear/suit/flannel/New()
|
||||
@@ -292,6 +307,7 @@
|
||||
|
||||
/datum/gear/suit/denim_jacket
|
||||
display_name = "jacket, denim selection"
|
||||
description = "A selection of denim jackets in a variety of styles."
|
||||
path = /obj/item/clothing/suit/storage/toggle/denim_jacket
|
||||
|
||||
/datum/gear/suit/denim_jacket/New()
|
||||
@@ -312,6 +328,7 @@
|
||||
|
||||
/datum/gear/suit/dep_jacket
|
||||
display_name = "jacket, departmental selection"
|
||||
description = "A selection of light jackets in departmental colours."
|
||||
path = /obj/item/clothing/suit/storage/toggle/sec_dep_jacket
|
||||
|
||||
/datum/gear/suit/dep_jacket/New()
|
||||
@@ -326,6 +343,7 @@
|
||||
|
||||
/datum/gear/suit/light_jacket
|
||||
display_name = "jacket, light selection"
|
||||
description = "A selection of lightweight outdoor jackets."
|
||||
path = /obj/item/clothing/suit/storage/toggle/light_jacket
|
||||
|
||||
/datum/gear/suit/light_jacket/New()
|
||||
@@ -350,6 +368,7 @@
|
||||
|
||||
/datum/gear/suit/insulated
|
||||
display_name = "jacket, insulated selection"
|
||||
description = "A selection of jackets made to keep you nice and toasty on cold winter days. Or at least alive."
|
||||
path = /obj/item/clothing/suit/storage/insulated
|
||||
cost = 2
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
/datum/gear/uniform/cheongsam
|
||||
description = "Various color variations of an old earth dress style. They are pretty close fitting around the waist."
|
||||
display_name = "cheongsam selection"
|
||||
path = /obj/item/clothing/under/cheongsam
|
||||
|
||||
/datum/gear/uniform/cheongsam/New()
|
||||
..()
|
||||
@@ -24,6 +25,7 @@
|
||||
/datum/gear/uniform/croptop
|
||||
description = "Light shirts which shows the midsection of the wearer."
|
||||
display_name = "croptop selection"
|
||||
path = /obj/item/clothing/under/croptop
|
||||
|
||||
/datum/gear/uniform/croptop/New()
|
||||
..()
|
||||
@@ -42,15 +44,20 @@
|
||||
path = /obj/item/clothing/under/kilt
|
||||
|
||||
/datum/gear/uniform/cuttop
|
||||
display_name = "cut top, grey"
|
||||
display_name = "cut top selection"
|
||||
description = "Loose, low-cut shirts with matching shorts."
|
||||
path = /obj/item/clothing/under/cuttop
|
||||
|
||||
/datum/gear/uniform/cuttop/red
|
||||
display_name = "cut top, red"
|
||||
path = /obj/item/clothing/under/cuttop/red
|
||||
/datum/gear/uniform/cuttop/New()
|
||||
..()
|
||||
var/cuttoptype = list()
|
||||
cuttoptype["cut top, grey"] = /obj/item/clothing/under/cuttop
|
||||
cuttoptype["cut top, red"] = /obj/item/clothing/under/cuttop/red
|
||||
gear_tweaks += new/datum/gear_tweak/path(cuttoptype)
|
||||
|
||||
/datum/gear/uniform/jumpsuit
|
||||
display_name = "jumpclothes selection"
|
||||
description = "Basic solid-colour durable jumpsuits."
|
||||
path = /obj/item/clothing/under/color/grey
|
||||
|
||||
/datum/gear/uniform/jumpsuit/New()
|
||||
@@ -63,6 +70,7 @@
|
||||
|
||||
/datum/gear/uniform/colorable_jumpsuit
|
||||
display_name = "jumpsuit, colorable"
|
||||
description = "A durable jumpsuit, in any colour."
|
||||
path = /obj/item/clothing/under/colorable
|
||||
|
||||
/datum/gear/uniform/colorable_jumpsuit/New()
|
||||
@@ -87,6 +95,7 @@
|
||||
|
||||
/datum/gear/uniform/skirt
|
||||
display_name = "skirt, selection"
|
||||
description = "Skirts to cover your lower body, in various styles."
|
||||
path = /obj/item/clothing/under/skirt
|
||||
|
||||
/datum/gear/uniform/skirt/New()
|
||||
@@ -99,6 +108,7 @@
|
||||
|
||||
/datum/gear/uniform/pants
|
||||
display_name = "pants, selection"
|
||||
description = "A variety of pants, jeans, chaps, and other long-legged lower body apparel."
|
||||
path = /obj/item/clothing/under/pants/white
|
||||
|
||||
/datum/gear/uniform/pants/New()
|
||||
@@ -111,6 +121,7 @@
|
||||
|
||||
/datum/gear/uniform/shorts
|
||||
display_name = "shorts, selection"
|
||||
description = "A variety of shorts, jorts, and other short-legged lower body apparel."
|
||||
path = /obj/item/clothing/under/shorts/jeans
|
||||
|
||||
/datum/gear/uniform/shorts/New()
|
||||
@@ -144,6 +155,7 @@
|
||||
|
||||
/datum/gear/uniform/job_turtle
|
||||
display_name = "turtleneck, departmental selection"
|
||||
description = "High-necked sweaters in a variety of departmental colours."
|
||||
path = /obj/item/clothing/under/rank/scientist/turtleneck
|
||||
|
||||
/datum/gear/uniform/job_turtle/New()
|
||||
@@ -177,6 +189,7 @@
|
||||
|
||||
/datum/gear/uniform/suit_lawyer
|
||||
display_name = "suit, one-piece selection"
|
||||
description = "A selection of suits without removable jackets."
|
||||
path = /obj/item/clothing/under/lawyer
|
||||
|
||||
/datum/gear/uniform/suit_lawyer/New()
|
||||
@@ -189,6 +202,7 @@
|
||||
|
||||
/datum/gear/uniform/suit_jacket
|
||||
display_name = "suit, modular selection"
|
||||
description = "A selection of suits with removable jackets, waistcoats, etc."
|
||||
path = /obj/item/clothing/under/suit_jacket
|
||||
|
||||
/datum/gear/uniform/suit_jacket/New()
|
||||
@@ -221,6 +235,7 @@
|
||||
|
||||
/datum/gear/uniform/scrub
|
||||
display_name = "scrubs selection"
|
||||
description = "Medical gear made of a special fiber that provides minor protection against biohazards."
|
||||
path = /obj/item/clothing/under/rank/medical/scrubs
|
||||
|
||||
/datum/gear/uniform/scrub/New()
|
||||
@@ -262,6 +277,7 @@
|
||||
|
||||
/datum/gear/uniform/uniform_security
|
||||
display_name = "uniform, security selection"
|
||||
description = "A selection of standard uniforms for security officers and detectives."
|
||||
path = /obj/item/clothing/under/rank/security/corp
|
||||
allowed_roles = list("Security Officer","Head of Security","Warden", "Detective")
|
||||
|
||||
@@ -277,6 +293,7 @@
|
||||
|
||||
/datum/gear/uniform/uniform_warden
|
||||
display_name = "uniform, warden selection"
|
||||
description = "A selection of standard uniforms for security wardens."
|
||||
path = /obj/item/clothing/under/rank/warden/corp
|
||||
allowed_roles = list("Head of Security","Warden")
|
||||
|
||||
@@ -290,6 +307,7 @@
|
||||
|
||||
/datum/gear/uniform/uniform_hos
|
||||
display_name = "uniform, head of security selection"
|
||||
description = "A selection of standard uniforms for heads of security."
|
||||
path = /obj/item/clothing/under/rank/security/corp
|
||||
allowed_roles = list("Head of Security")
|
||||
|
||||
@@ -303,6 +321,7 @@
|
||||
|
||||
/datum/gear/uniform/uniform_hop
|
||||
display_name = "uniform, head of personnel selection"
|
||||
description = "A selection of formal uniforms for the Head of Personnel."
|
||||
path = /obj/item/clothing/under/rank/security/corp
|
||||
allowed_roles = list("Head of Personnel")
|
||||
|
||||
@@ -355,6 +374,7 @@
|
||||
|
||||
/datum/gear/uniform/dresses/maid
|
||||
display_name = "uniform, maid selection"
|
||||
description = "A variety of maid uniform styles."
|
||||
path = /obj/item/clothing/under/dress/maid
|
||||
|
||||
/datum/gear/uniform/dresses/maid/New()
|
||||
@@ -367,6 +387,7 @@
|
||||
|
||||
/datum/gear/uniform/utility
|
||||
display_name = "jumpsuit, utility selection"
|
||||
description = "A selection of especially hard-wearing jumpclothes for heavy duties."
|
||||
path = /obj/item/clothing/under/utility
|
||||
|
||||
/datum/gear/uniform/utility/New()
|
||||
@@ -392,12 +413,13 @@
|
||||
|
||||
/datum/gear/uniform/brandsuit
|
||||
display_name = "jumpsuit/uniform, corporate selection"
|
||||
description = "Liveried durable jumpclothes and other Trans-Stellar corporate uniforms."
|
||||
path = /obj/item/clothing/under/corp/aether
|
||||
|
||||
/datum/gear/uniform/brandsuit/New()
|
||||
..()
|
||||
var/list/brandsuits = list()
|
||||
for(var/brandsuit in typesof(/obj/item/clothing/under/corp, /obj/item/clothing/under/hedbergtech))
|
||||
for(var/brandsuit in typesof(/obj/item/clothing/under/corp, /obj/item/clothing/under/hedbergtech) - /obj/item/clothing/under/corp)
|
||||
var/obj/item/clothing/under/corp/brandsuit_type = brandsuit
|
||||
brandsuits[initial(brandsuit_type.name)] = brandsuit_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(brandsuits))
|
||||
@@ -462,11 +484,11 @@
|
||||
path = /obj/item/clothing/under/dress/sari/green
|
||||
|
||||
/datum/gear/uniform/wrappedcoat
|
||||
display_name = "modern wrapped coat"
|
||||
display_name = "outfit, modern wrapped coat"
|
||||
path = /obj/item/clothing/under/moderncoat
|
||||
|
||||
/datum/gear/uniform/ascetic
|
||||
display_name = "plain ascetic garb"
|
||||
display_name = "outfit, plain ascetic garb"
|
||||
path = /obj/item/clothing/under/ascetic
|
||||
|
||||
/datum/gear/uniform/pleated
|
||||
@@ -518,7 +540,7 @@
|
||||
path =/obj/item/clothing/under/dress/goldwrap
|
||||
|
||||
/datum/gear/uniform/pinktutu
|
||||
display_name = "pink tutu"
|
||||
display_name = "skirt, pink tutu"
|
||||
path = /obj/item/clothing/under/dress/pinktutu
|
||||
|
||||
/datum/gear/uniform/festivedress
|
||||
@@ -562,7 +584,7 @@
|
||||
path = /obj/item/clothing/under/cyberpunkharness
|
||||
|
||||
/datum/gear/uniform/cyberpunkpants
|
||||
display_name = "cyberpunk split-side ensemble"
|
||||
display_name = "outfit, cyberpunk split-side ensemble"
|
||||
path = /obj/item/clothing/under/cyberpunkpants
|
||||
|
||||
/datum/gear/uniform/whitegown
|
||||
|
||||
@@ -37,3 +37,39 @@
|
||||
/obj/item/clothing/head/hardhat/dblue
|
||||
name = "blue hard hat"
|
||||
icon_state = "hardhat0_dblue"
|
||||
|
||||
/obj/item/clothing/head/hardhat/red/firefighter
|
||||
name = "atmospheric firefighter helmet"
|
||||
desc = "An atmospheric firefighter's helmet, able to keep the user protected from heat and fire in normal atmospheric conditions."
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 15000
|
||||
min_pressure_protection = 0.5 * ONE_ATMOSPHERE
|
||||
max_pressure_protection = 20 * ONE_ATMOSPHERE
|
||||
icon_state = "atmos_fire"
|
||||
sprite_sheets = list(
|
||||
SPECIES_TAJARAN = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/hardhat/firefighter
|
||||
name = "firefighter helmet"
|
||||
desc = "A complete, face covering helmet specially designed for firefighting. It is airtight and has a port for internals."
|
||||
icon_state = "helmet_firefighter"
|
||||
item_flags = THICKMATERIAL | AIRTIGHT
|
||||
permeability_coefficient = 0
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 15000
|
||||
min_pressure_protection = 0.5 * ONE_ATMOSPHERE
|
||||
max_pressure_protection = 20 * ONE_ATMOSPHERE
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
flash_protection = FLASH_PROTECTION_MODERATE
|
||||
sprite_sheets = list(
|
||||
SPECIES_TAJARAN = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
SPECIES_UNATHI = 'icons/mob/species/unathi/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/hardhat/firefighter/chief
|
||||
name = "chief firefighter helmet"
|
||||
desc = "A complete, face covering helmet specially designed for firefighting. This one is in the colors of the Chief Engineer. It is airtight and has a port for internals."
|
||||
icon_state = "helmet_firefighter_ce"
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
icon_state = "rig0-atmos"
|
||||
item_state_slots = list(slot_r_hand_str = "atmos_helm", slot_l_hand_str = "atmos_helm")
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50)
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 10000
|
||||
light_overlay = "helmet_light_dual"
|
||||
min_pressure_protection = 0 * ONE_ATMOSPHERE
|
||||
max_pressure_protection = 20* ONE_ATMOSPHERE
|
||||
@@ -340,7 +340,7 @@
|
||||
icon_state = "rig-atmos"
|
||||
item_state_slots = list(slot_r_hand_str = "atmos_voidsuit", slot_l_hand_str = "atmos_voidsuit")
|
||||
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 35, bio = 100, rad = 50)
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + 10000
|
||||
min_pressure_protection = 0 * ONE_ATMOSPHERE
|
||||
max_pressure_protection = 20* ONE_ATMOSPHERE
|
||||
breach_threshold = 16 //Extra Thicc
|
||||
@@ -442,4 +442,4 @@
|
||||
/obj/item/clothing/suit/space/void/pilot/alt
|
||||
desc = "An atmos resistant voidsuit for space."
|
||||
icon_state = "rig-pilot2"
|
||||
item_state = "rig-pilot2"
|
||||
item_state = "rig-pilot2"
|
||||
|
||||
@@ -313,7 +313,7 @@
|
||||
|
||||
/obj/item/clothing/suit/storage/greyjacket
|
||||
name = "grey jacket"
|
||||
desc = "A fancy twead grey jacket."
|
||||
desc = "A fancy tweed grey jacket."
|
||||
icon_state = "gentlecoat"
|
||||
item_state_slots = list(slot_r_hand_str = "leather_jacket", slot_l_hand_str = "leather_jacket")
|
||||
flags_inv = HIDEHOLSTER
|
||||
@@ -776,7 +776,7 @@
|
||||
//Flannels
|
||||
|
||||
/obj/item/clothing/suit/storage/flannel
|
||||
name = "Flannel shirt"
|
||||
name = "grey flannel shirt"
|
||||
desc = "A comfy, grey flannel shirt. Unleash your inner hipster."
|
||||
icon_state = "flannel"
|
||||
item_state_slots = list(slot_r_hand_str = "black_labcoat", slot_l_hand_str = "black_labcoat")
|
||||
@@ -848,16 +848,19 @@
|
||||
update_clothing_icon()
|
||||
|
||||
/obj/item/clothing/suit/storage/flannel/red
|
||||
name = "red flannel shirt"
|
||||
desc = "A comfy, red flannel shirt. Unleash your inner hipster."
|
||||
icon_state = "flannel_red"
|
||||
item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/flannel/aqua
|
||||
name = "aqua flannel shirt"
|
||||
desc = "A comfy, aqua flannel shirt. Unleash your inner hipster."
|
||||
icon_state = "flannel_aqua"
|
||||
item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/flannel/brown
|
||||
name = "brown flannel shirt"
|
||||
desc = "A comfy, brown flannel shirt. Unleash your inner hipster."
|
||||
icon_state = "flannel_brown"
|
||||
item_state_slots = list(slot_r_hand_str = "johnny", slot_l_hand_str = "johnny")
|
||||
|
||||
@@ -12,13 +12,14 @@
|
||||
/obj/item/clothing/suit/fire
|
||||
name = "firesuit"
|
||||
desc = "A suit that protects against fire and heat."
|
||||
icon_state = "fire"
|
||||
icon_state = "firesuit"
|
||||
w_class = ITEMSIZE_LARGE//bulky item
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.50
|
||||
siemens_coefficient = 0.5
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/emergency/oxygen,/obj/item/extinguisher)
|
||||
slowdown = 1.0
|
||||
slowdown = 0.8 //Slightly better than a voidsuit
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
|
||||
item_flags = 0
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
@@ -27,17 +28,13 @@
|
||||
min_pressure_protection = 0.2 * ONE_ATMOSPHERE
|
||||
max_pressure_protection = 20 * ONE_ATMOSPHERE
|
||||
|
||||
|
||||
/obj/item/clothing/suit/fire/firefighter
|
||||
icon_state = "firesuit"
|
||||
|
||||
/obj/item/clothing/suit/fire/heavy //Is this even used?? -S2-
|
||||
name = "firesuit"
|
||||
desc = "A suit that protects against extreme fire and heat."
|
||||
//icon_state = "thermal"
|
||||
item_state_slots = list(slot_r_hand_str = "black_suit", slot_l_hand_str = "black_suit")
|
||||
w_class = ITEMSIZE_LARGE//bulky item
|
||||
slowdown = 1.5
|
||||
/obj/item/clothing/suit/fire/atmos
|
||||
name = "atmospheric technician firesuit"
|
||||
desc = "A suit that protects against fire and heat, this one is designed for atmospheric technicians."
|
||||
siemens_coefficient = 0.35
|
||||
max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE + 15000
|
||||
icon_state = "atmos_firesuit"
|
||||
item_state = "atmos_firesuit"
|
||||
|
||||
/*
|
||||
* Bomb protection
|
||||
@@ -114,4 +111,4 @@
|
||||
icon = 'icons/obj/clothing/species/teshari/hats.dmi'
|
||||
icon_override = 'icons/mob/species/teshari/head.dmi'
|
||||
icon_state = "rad_fitted"
|
||||
species_restricted = list(SPECIES_TESHARI)
|
||||
species_restricted = list(SPECIES_TESHARI)
|
||||
|
||||
@@ -191,7 +191,7 @@ GLOBAL_LIST_INIT(generic_fishing_chance_list, list(FISHING_RARE = 5, FISHING_UNC
|
||||
/obj/random/tool/powermaint = 5,
|
||||
/obj/random/unidentified_medicine/combat_medicine = 1,
|
||||
/obj/random/tool/alien = 1,
|
||||
/obj/random/handgun = 1,
|
||||
/obj/random/sidearm = 1,
|
||||
/mob/living/simple_mob/animal/sif/hooligan_crab = 1
|
||||
))
|
||||
|
||||
|
||||
@@ -415,6 +415,8 @@
|
||||
active_power_usage = 6
|
||||
power_channel = ENVIRON
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
/obj/machinery/readybutton/attack_ai(mob/user as mob)
|
||||
to_chat(user, "The station AI is not to interact with these devices!")
|
||||
return
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
desc = "A tool used to take samples from plants."
|
||||
|
||||
/obj/item/tool/wirecutters/clippers/trimmers
|
||||
name = "hedgetrimmers"
|
||||
desc = "An old pair of trimmers with a pretty dull blade. You would probably have a hard time cutting anything but plants with it."
|
||||
icon_state = "hedget"
|
||||
item_state = "hedget"
|
||||
force = 7 //One point extra than standard wire cutters.
|
||||
name = "hedgetrimmers"
|
||||
desc = "An old pair of trimmers with a pretty dull blade. You would probably have a hard time cutting anything but plants with it."
|
||||
icon_state = "hedget"
|
||||
item_state = "hedget"
|
||||
random_color = FALSE
|
||||
force = 7 //One point extra than standard wire cutters.
|
||||
|
||||
/obj/item/analyzer/plant_analyzer
|
||||
name = "plant analyzer"
|
||||
|
||||
@@ -232,7 +232,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
response = alert(src, "Are you -sure- you want to ghost?\n(You are alive, or otherwise have the potential to become alive. If you ghost, you won't be able to play this round until you respawn as a new character! You can't change your mind so choose wisely!)", "Are you sure you want to ghost?", "Ghost", "Stay in body")
|
||||
if(response != "Ghost")
|
||||
return
|
||||
resting = 1
|
||||
if(!resting)
|
||||
lay_down()
|
||||
var/turf/location = get_turf(src)
|
||||
var/special_role = check_special_role()
|
||||
if(!istype(loc,/obj/machinery/cryopod))
|
||||
|
||||
@@ -1117,6 +1117,8 @@
|
||||
|
||||
//icon_state = lowertext(species.name) //Necessary?
|
||||
|
||||
dexterity = species.dexterity
|
||||
|
||||
species.create_organs(src)
|
||||
|
||||
species.handle_post_spawn(src)
|
||||
|
||||
@@ -154,3 +154,5 @@
|
||||
|
||||
// Custom Species Name
|
||||
var/custom_species
|
||||
|
||||
dexterity = MOB_DEXTERITY_FULL
|
||||
|
||||
@@ -274,6 +274,9 @@
|
||||
var/icon_height = 32
|
||||
var/agility = 20 //prob() to do agile things
|
||||
|
||||
/// One of MOB_DEXTERITY_* - the dexterity level of this species for using objects.
|
||||
var/dexterity = MOB_DEXTERITY_FULL
|
||||
|
||||
/datum/species/proc/update_attack_types()
|
||||
unarmed_attacks = list()
|
||||
for(var/u_type in unarmed_types)
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
|
||||
)
|
||||
|
||||
dexterity = MOB_DEXTERITY_KEYBOARDS
|
||||
|
||||
/datum/species/monkey/handle_npc(var/mob/living/carbon/human/H)
|
||||
if(H.stat != CONSCIOUS)
|
||||
return
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right/unseverable/xeno)
|
||||
)
|
||||
|
||||
dexterity = MOB_DEXTERITY_NONE
|
||||
|
||||
|
||||
/datum/species/xenos/get_bodytype()
|
||||
return SPECIES_XENO
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
|
||||
var/hudmode = null
|
||||
|
||||
dexterity = MOB_DEXTERITY_FULL
|
||||
|
||||
/mob/living/silicon/Initialize()
|
||||
silicon_mob_list |= src
|
||||
. = ..()
|
||||
@@ -419,4 +421,4 @@
|
||||
return 0 //NOT REAL EYES
|
||||
|
||||
/mob/living/silicon/can_feed()
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
var/list/attacktext = list("attacked") // "You are [attacktext] by the mob!"
|
||||
var/list/friendly = list("nuzzles") // "The mob [friendly] the person."
|
||||
var/attack_sound = null // Sound to play when I attack
|
||||
var/scratch_sound //! Sound to play when I scratch at a door
|
||||
var/melee_miss_chance = 0 // percent chance to miss a melee attack.
|
||||
var/attack_armor_type = "melee" // What armor does this check?
|
||||
var/attack_armor_pen = 0 // How much armor pen this attack has.
|
||||
|
||||
@@ -37,47 +37,48 @@
|
||||
QDEL_NULL(attached_radio)
|
||||
QDEL_NULL(attached_gps)
|
||||
QDEL_NULL(attached_plate)
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/item/storage/internal/animal_harness/attackby(obj/item/W, mob/user)
|
||||
|
||||
// Sanity check for some stuff below.
|
||||
if(!istype(loc, /mob/living/simple_mob/animal/sif/grafadreka/trained))
|
||||
/obj/item/storage/internal/animal_harness/attackby(obj/item/W, mob/user, silent)
|
||||
if (user == loc) // Drakes can't attach stuff to themselves, only shove it in their storage.
|
||||
return ..()
|
||||
|
||||
// Attach a tracker.
|
||||
if(istype(W, /obj/item/gps))
|
||||
if(attached_gps)
|
||||
to_chat(user, SPAN_WARNING("There is already \a [attached_gps] attached to \the [loc]'s harness."))
|
||||
else if(user.unEquip(W))
|
||||
if (!istype(loc, /mob/living/simple_mob/animal/sif/grafadreka/trained)) // Only allow attaching behaviors when worn by an appropriate subject.
|
||||
return ..()
|
||||
if (istype(W, /obj/item/gps)) // Attach a tracker.
|
||||
if (attached_gps)
|
||||
if (!silent)
|
||||
to_chat(user, SPAN_WARNING("There is already \a [attached_gps] attached to \the [loc]'s harness."))
|
||||
else if (user.unEquip(W))
|
||||
W.forceMove(loc)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] attaches \the [W] to \the [loc]'s harness."))
|
||||
if (!silent)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] attaches \the [W] to \the [loc]'s harness."))
|
||||
attached_gps = W
|
||||
return TRUE
|
||||
|
||||
// Attach a radio.
|
||||
if(istype(W, /obj/item/radio))
|
||||
if(attached_radio)
|
||||
to_chat(user, SPAN_WARNING("There is already \a [attached_radio] attached to \the [loc]'s harness."))
|
||||
else if(user.unEquip(W))
|
||||
if (istype(W, /obj/item/radio)) // Attach a radio.
|
||||
if (attached_radio)
|
||||
if (!silent)
|
||||
to_chat(user, SPAN_WARNING("There is already \a [attached_radio] attached to \the [loc]'s harness."))
|
||||
else if (user.unEquip(W))
|
||||
W.forceMove(loc)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] attaches \the [W] to \the [loc]'s harness."))
|
||||
if (!silent)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] attaches \the [W] to \the [loc]'s harness."))
|
||||
attached_radio = W
|
||||
return TRUE
|
||||
|
||||
// Attach an armor plate.
|
||||
if(istype(W, /obj/item/clothing/accessory/armor) || istype(W, /obj/item/clothing/accessory/material/makeshift))
|
||||
if(attached_plate)
|
||||
to_chat(user, SPAN_WARNING("There is already \a [attached_plate] inside \the [loc]'s harness."))
|
||||
else if(user.unEquip(W))
|
||||
if (istype(W, /obj/item/clothing/accessory/armor) || istype(W, /obj/item/clothing/accessory/material/makeshift)) // Attach an armor plate.
|
||||
if (attached_plate)
|
||||
if (!silent)
|
||||
to_chat(user, SPAN_WARNING("There is already \a [attached_plate] inside \the [loc]'s harness."))
|
||||
else if (user.unEquip(W))
|
||||
W.forceMove(loc)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] secures \the [W] inside \the [loc]'s harness."))
|
||||
if (!silent)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] secures \the [W] inside \the [loc]'s harness."))
|
||||
attached_plate = W
|
||||
var/mob/living/simple_mob/animal/sif/grafadreka/trained/drake = loc
|
||||
drake.recalculate_armor()
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/recalculate_armor()
|
||||
armor = list()
|
||||
|
||||
@@ -2,117 +2,297 @@
|
||||
desc = "A large, sleek snow drake with heavy claws, powerful jaws and many pale spines along its body. This one is wearing some kind of harness; maybe it belongs to someone."
|
||||
player_msg = "You are a large Sivian pack predator in symbiosis with the local bioluminescent bacteria. You can eat glowing \
|
||||
tree fruit to fuel your <b>ranged spitting attack</b> and <b>poisonous bite</b> (on <span class = 'danger'>harm intent</span>), as well as <b>healing saliva</b> \
|
||||
(on <b><font color = '#009900'>help intent</font></b>).<br>Unlike your wild kin, you are <b>trained</b> and work happily with your two-legged packmates."
|
||||
(on <b><font color = '#009900'>help intent</font></b>).<br>Using <font color='#e0a000'>grab intent</font> you can pick up and drop items on by clicking them or yourself, \
|
||||
and can interact with some simple machines like buttons and levers.<br>Unlike your wild kin, you are <b>trained</b> and work happily with your two-legged packmates."
|
||||
faction = "station"
|
||||
ai_holder_type = null // These guys should not exist without players.
|
||||
gender = PLURAL // Will take gender from prefs = set to non-NEUTER here to avoid randomizing in Initialize().
|
||||
movement_cooldown = 1.5 // ~Red~ trained ones go faster.
|
||||
dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
/// If a valid harness path, the harness this drake will be wearing on Initialize.
|
||||
var/obj/item/storage/internal/animal_harness/harness = /obj/item/storage/internal/animal_harness
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/Initialize()
|
||||
if(ispath(harness))
|
||||
harness = new harness(src)
|
||||
harness.attached_radio = new /obj/item/radio(src)
|
||||
regenerate_harness_verbs()
|
||||
. = ..()
|
||||
/// On clicking with an item, stuff that should use behaviors instead of being placed in storage.
|
||||
var/static/list/allow_type_to_pass = list(
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/reagent_containers/syringe
|
||||
)
|
||||
|
||||
/// A type path -> proc path mapping for objects that drakes can use.
|
||||
var/static/list/interactable_objects = list(
|
||||
/obj/machinery/button = /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractButtonBasic,
|
||||
/obj/machinery/access_button = /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractButtonAccess,
|
||||
/obj/machinery/firealarm = /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractFireAlarm,
|
||||
/obj/machinery/conveyor_switch = /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractConveyorSwitch
|
||||
)
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/Destroy()
|
||||
if(istype(harness))
|
||||
if (istype(harness))
|
||||
QDEL_NULL(harness)
|
||||
return ..()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/Initialize()
|
||||
. = ..()
|
||||
if (ispath(harness, /obj/item/storage/internal/animal_harness))
|
||||
harness = new harness(src)
|
||||
harness.attached_radio = new /obj/item/radio(src)
|
||||
regenerate_harness_verbs()
|
||||
else
|
||||
if (harness)
|
||||
log_error("[type] initialized with an invalid harness [harness]")
|
||||
harness = null
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/examine(mob/living/user)
|
||||
. = ..()
|
||||
if(harness)
|
||||
if (harness)
|
||||
. += "\The [src] is wearing \a [harness]."
|
||||
for(var/obj/item/thing in list(harness.attached_gps, harness.attached_plate, harness.attached_radio))
|
||||
for (var/obj/item/thing in list(harness.attached_gps, harness.attached_plate, harness.attached_radio))
|
||||
. += "There is \a [thing] attached."
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/add_glow()
|
||||
. = ..()
|
||||
if(. && harness)
|
||||
if (. && harness)
|
||||
var/image/I = .
|
||||
I.icon_state = "[I.icon_state]-pannier"
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/Logout()
|
||||
..()
|
||||
if(stat != DEAD)
|
||||
if (stat != DEAD)
|
||||
lying = TRUE
|
||||
resting = TRUE
|
||||
sitting = FALSE
|
||||
Sleeping(2)
|
||||
update_icon()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/Login()
|
||||
..()
|
||||
SetSleeping(0)
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/attack_hand(mob/living/L)
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/attack_hand(mob/living/user)
|
||||
// Permit headpats/smacks
|
||||
if(!harness || L.a_intent == I_HURT || (L.a_intent == I_HELP && L.zone_sel?.selecting == BP_HEAD))
|
||||
if (!harness || user.a_intent == I_HURT || (user.a_intent == I_HELP && user.zone_sel?.selecting == BP_HEAD))
|
||||
return ..()
|
||||
return harness.handle_attack_hand(L)
|
||||
return harness.handle_attack_hand(user)
|
||||
|
||||
|
||||
// universal_understand is buggy and produces double lines, so we'll just do this hack instead.
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/say_understands(var/mob/other, var/datum/language/speaking = null)
|
||||
if(!speaking || speaking.name == LANGUAGE_GALCOM)
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/say_understands(mob/other, datum/language/speaking)
|
||||
if (!speaking || speaking.name == LANGUAGE_GALCOM)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/update_icon()
|
||||
. = ..()
|
||||
if(harness)
|
||||
if (harness)
|
||||
var/image/I = image(icon, "[current_icon_state]-pannier")
|
||||
I.color = harness.color
|
||||
I.appearance_flags |= (RESET_COLOR|PIXEL_SCALE|KEEP_APART)
|
||||
if(offset_compiled_icon)
|
||||
if (offset_compiled_icon)
|
||||
I.pixel_x = offset_compiled_icon
|
||||
add_overlay(I)
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/attackby(obj/item/O, mob/user)
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/attackby(obj/item/item, mob/user)
|
||||
// bonk
|
||||
if(user.a_intent == I_HURT)
|
||||
if (user.a_intent == I_HURT)
|
||||
return ..()
|
||||
|
||||
// Pass some items down to heal or run injection etc.
|
||||
var/static/list/allow_type_to_pass = list(
|
||||
/obj/item/healthanalyzer,
|
||||
/obj/item/stack/medical,
|
||||
/obj/item/reagent_containers/syringe
|
||||
)
|
||||
if(user.a_intent == I_HELP)
|
||||
for(var/pass_type in allow_type_to_pass)
|
||||
if(istype(O, pass_type))
|
||||
if (user.a_intent == I_HELP)
|
||||
for (var/pass_type in allow_type_to_pass)
|
||||
if (istype(item, pass_type))
|
||||
return ..()
|
||||
|
||||
// Open our storage, if we have it.
|
||||
if(harness?.attackby(O, user))
|
||||
if (harness?.attackby(item, user))
|
||||
regenerate_harness_verbs()
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/regenerate_harness_verbs()
|
||||
if(!harness)
|
||||
if (!harness)
|
||||
verbs -= list(
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_gps,
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_plate,
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_radio
|
||||
)
|
||||
return
|
||||
|
||||
if(harness.attached_gps)
|
||||
if (harness.attached_gps)
|
||||
verbs |= /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_gps
|
||||
else
|
||||
verbs -= /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_gps
|
||||
|
||||
if(harness.attached_plate)
|
||||
if (harness.attached_plate)
|
||||
verbs |= /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_plate
|
||||
else
|
||||
verbs -= /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_plate
|
||||
|
||||
if(harness.attached_radio)
|
||||
if (harness.attached_radio)
|
||||
verbs |= /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_radio
|
||||
else
|
||||
verbs -= /mob/living/simple_mob/animal/sif/grafadreka/trained/proc/remove_attached_radio
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/attack_target(atom/atom)
|
||||
if (a_intent == I_GRAB)
|
||||
if (atom == src)
|
||||
return DropItem()
|
||||
if (isobj(atom))
|
||||
var/interact_outcome = AttemptInteract(atom)
|
||||
if (!isnull(interact_outcome))
|
||||
return interact_outcome
|
||||
if (isitem(atom))
|
||||
return CollectItem(atom)
|
||||
return ..()
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/DropItem()
|
||||
if (!length(harness?.contents))
|
||||
to_chat(src, SPAN_WARNING("You have nothing to drop."))
|
||||
return ATTACK_FAILED
|
||||
var/list/attached = list(harness.attached_gps, harness.attached_radio, harness.attached_plate)
|
||||
var/obj/item/response = input(src, "Select an item to drop:") as null | anything in attached + harness.contents
|
||||
if (!response)
|
||||
return ATTACK_FAILED
|
||||
var/datum/gender/gender = gender_datums[get_visible_gender()]
|
||||
var/is_special = (response in attached)
|
||||
if (is_special)
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] begins tugging at \the [response] on [gender.his] harness."),
|
||||
SPAN_ITALIC("You begin tugging \the [response] off your harness."),
|
||||
SPAN_ITALIC("You hear something rustling."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
else
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] begins rooting around in the pouch on [gender.his] harness."),
|
||||
SPAN_ITALIC("You begin working \the [response] out of your harness pouch."),
|
||||
SPAN_ITALIC("You hear something rustling."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
if (!do_after(src, 5 SECONDS, ignore_movement = TRUE))
|
||||
return ATTACK_FAILED
|
||||
if (is_special)
|
||||
if (!(response in src))
|
||||
to_chat(src, SPAN_WARNING("\The [response] is already gone!"))
|
||||
return ATTACK_FAILED
|
||||
if (response == harness.attached_gps)
|
||||
harness.attached_gps = null
|
||||
else if (response == harness.attached_radio)
|
||||
harness.attached_radio = null
|
||||
else if (response == harness.attached_plate)
|
||||
harness.attached_plate = null
|
||||
response.dropInto(loc)
|
||||
regenerate_harness_verbs()
|
||||
else
|
||||
harness.remove_from_storage(response, loc)
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] pulls \a [response] from [gender.his] harness and drops it."),
|
||||
SPAN_NOTICE("You pull \the [response] from your harness and drop it."),
|
||||
SPAN_WARNING("Clank!"),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
return ATTACK_SUCCESSFUL
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/CollectItem(obj/item/item)
|
||||
if (!item.simulated || item.abstract || !item.Adjacent(src))
|
||||
return ATTACK_FAILED
|
||||
if (!harness)
|
||||
to_chat(src, SPAN_WARNING("Your harness is missing; you cannot store \the [item]."))
|
||||
return ATTACK_FAILED
|
||||
if (item.anchored)
|
||||
to_chat(src, SPAN_WARNING("\The [item] is securely anchored; you can't take it."))
|
||||
return ATTACK_FAILED
|
||||
face_atom(item)
|
||||
if (!do_after(src, 5 SECONDS, item))
|
||||
return ATTACK_FAILED
|
||||
var/datum/gender/gender = gender_datums[get_visible_gender()]
|
||||
if (harness?.attackby(item, src, TRUE))
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] grabs \a [item] in [gender.his] teeth and noses it into [gender.his] harness pouch."),
|
||||
SPAN_NOTICE("You grab \the [item] in your teeth and push it into your harness pouch."),
|
||||
SPAN_ITALIC("You hear something rustling."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
return ATTACK_SUCCESSFUL
|
||||
to_chat(src, SPAN_WARNING("There's not enough space in your harness pouch for \the [item] to fit!"))
|
||||
return ATTACK_FAILED
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/AttemptInteract(obj/obj)
|
||||
if (!obj.Adjacent(src))
|
||||
return
|
||||
var/handler
|
||||
for (var/type in interactable_objects)
|
||||
if (ispath(obj.type, type))
|
||||
handler = interactable_objects[type]
|
||||
break
|
||||
if (!handler)
|
||||
return
|
||||
return call(src, handler)(obj)
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractButtonBasic(obj/machinery/button/button)
|
||||
var/datum/gender/gender = gender_datums[get_visible_gender()]
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] stands up awkwardly on [gender.his] hind legs and paws at \a [button]."),
|
||||
SPAN_ITALIC("You rear up, attempting to push \the [button] with your foreclaws."),
|
||||
SPAN_WARNING("You hear something scratching and scrabbling."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
if (!do_after(src, 5 SECONDS, button))
|
||||
return ATTACK_FAILED
|
||||
to_chat(src, SPAN_NOTICE("After some effort, you manage to push \the [button]."))
|
||||
button.attack_hand(src)
|
||||
return ATTACK_SUCCESSFUL
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractButtonAccess(obj/machinery/access_button/button)
|
||||
var/datum/gender/gender = gender_datums[get_visible_gender()]
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] stands up awkwardly on [gender.his] hind legs and paws at \a [button]."),
|
||||
SPAN_ITALIC("You rear up, attempting to push \the [button] with your foreclaws."),
|
||||
SPAN_WARNING("You hear something scratching and scrabbling."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
if (!do_after(src, 5 SECONDS, button))
|
||||
return ATTACK_FAILED
|
||||
to_chat(src, SPAN_NOTICE("After some effort, you manage to push \the [button]."))
|
||||
button.attack_hand(src)
|
||||
return ATTACK_SUCCESSFUL
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractFireAlarm(obj/machinery/firealarm/alarm)
|
||||
var/datum/gender/gender = gender_datums[get_visible_gender()]
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] stands up awkwardly on [gender.his] hind legs and paws at \a [alarm]."),
|
||||
SPAN_ITALIC("You rear up, attempting to push \the [alarm] with your foreclaws."),
|
||||
SPAN_WARNING("You hear something scratching and scrabbling."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
if (!do_after(src, 5 SECONDS, alarm))
|
||||
return ATTACK_FAILED
|
||||
to_chat(src, SPAN_NOTICE("After some effort, you manage to push \the [alarm]."))
|
||||
alarm.attack_hand(src)
|
||||
return ATTACK_SUCCESSFUL
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/grafadreka/trained/proc/InteractConveyorSwitch(obj/machinery/conveyor_switch/lever)
|
||||
visible_message(
|
||||
SPAN_ITALIC("\The [src] pushes bodily against \a [lever]."),
|
||||
SPAN_ITALIC("You press your shoulder into \the [lever], trying to change its direction."),
|
||||
runemessage = CHAT_MESSAGE_DEFAULT_ACTION
|
||||
)
|
||||
if (!do_after(src, 2 SECONDS, lever))
|
||||
return ATTACK_FAILED
|
||||
to_chat(src, SPAN_NOTICE("After some effort, you manage to push \the [lever]."))
|
||||
lever.attack_hand(src)
|
||||
return ATTACK_SUCCESSFUL
|
||||
|
||||
@@ -83,7 +83,9 @@
|
||||
exclude_mobs |= src
|
||||
else
|
||||
exclude_mobs = list(src)
|
||||
src.show_message(self_message, 1, blind_message, 2)
|
||||
show_message(self_message, 1, blind_message, 2)
|
||||
if (runemessage)
|
||||
create_chat_message(src, "[runemessage]", FALSE, list("emote"), audible = FALSE)
|
||||
// Transfer messages about what we are doing to upstairs
|
||||
if(shadow)
|
||||
shadow.visible_message(message, self_message, blind_message, exclude_mobs, range)
|
||||
@@ -1194,4 +1196,13 @@
|
||||
/mob/proc/handle_reagent_transfer(var/datum/reagents/holder, var/amount = 1, var/chem_type = CHEM_BLOOD, var/multiplier = 1, var/copy = 0)
|
||||
var/datum/reagents/R = new /datum/reagents(amount)
|
||||
. = holder.trans_to_holder(R, amount, multiplier, copy)
|
||||
R.touch_mob(src)
|
||||
R.touch_mob(src)
|
||||
|
||||
|
||||
/// Check the mob's dexterity var against a required level from MOB_DEXTERITY_*, optionally sending a message with optional target specificity.
|
||||
/mob/proc/check_dexterity(required_level, atom/target, silent)
|
||||
if (dexterity < required_level)
|
||||
if (!silent)
|
||||
to_chat(src, SPAN_WARNING("You aren't dextrous enough to [target ? "use \the [target]" : "do that"]."))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -223,4 +223,7 @@
|
||||
var/registered_z
|
||||
|
||||
var/in_enclosed_vehicle = 0 //For mechs and fighters ambiance. Can be used in other cases.
|
||||
var/datum/focus //What receives our keyboard inputs. src by default
|
||||
var/datum/focus //What receives our keyboard inputs. src by default
|
||||
|
||||
/// One of MOB_DEXTERITY_*, permitting various levels of machine and item interaction.
|
||||
var/dexterity = MOB_DEXTERITY_NONE
|
||||
|
||||
@@ -135,6 +135,11 @@
|
||||
name = "magazine (.45 BB)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/bb
|
||||
|
||||
/obj/item/ammo_magazine/m45/compact
|
||||
name = "compact pistol magazine (.45)"
|
||||
matter = list(MAT_STEEL = 375) //metal costs are very roughly based around 1 .45 casing = 75 metal
|
||||
max_ammo = 5
|
||||
|
||||
/obj/item/ammo_magazine/m45uzi
|
||||
name = "stick magazine (.45)"
|
||||
icon_state = "uzi45"
|
||||
@@ -857,4 +862,4 @@
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
matter = list(MAT_STEEL = 600)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
multiple_sprites = 1
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
flux in a nuclear reactor core. This incredible technology may help YOU achieve high excitation rates with small laser volumes!"
|
||||
icon_state = "lasercannon"
|
||||
item_state = null
|
||||
wielded_item_state = "mhdhowitzer-wielded" //Placeholder
|
||||
wielded_item_state = "laser" //Placeholder
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
|
||||
slot_flags = SLOT_BELT|SLOT_BACK
|
||||
projectile_type = /obj/item/projectile/beam/heavylaser/cannon
|
||||
@@ -240,7 +240,6 @@
|
||||
name = "antique mono-rifle"
|
||||
desc = "An old laser rifle. This one can only fire once before requiring recharging."
|
||||
description_fluff = "Modeled after ancient hunting rifles, this rifle was dubbed the 'Rainy Day Special' by some, due to its use as some barmens' fight-stopper of choice. One shot is all it takes, or so they say."
|
||||
icon = 'icons/obj/energygun.dmi'
|
||||
icon_state = "mono"
|
||||
item_state = "shotgun"
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_POWER = 3)
|
||||
@@ -317,9 +316,8 @@
|
||||
/obj/item/gun/energy/lasershotgun
|
||||
name = "laser scattergun"
|
||||
icon = 'icons/obj/energygun.dmi'
|
||||
item_state = "laser"
|
||||
icon_state = "scatter"
|
||||
item_state = null
|
||||
desc = "A strange Almachi weapon, utilizing a refracting prism to turn a single laser blast into a diverging cluster."
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 1, TECH_MATERIAL = 4)
|
||||
|
||||
projectile_type = /obj/item/projectile/scatter/laser
|
||||
projectile_type = /obj/item/projectile/scatter/laser
|
||||
|
||||
@@ -21,12 +21,11 @@
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
|
||||
|
||||
/obj/item/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
|
||||
icon_state = "riflestun100"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
charge_cost = 100
|
||||
force = 8
|
||||
@@ -35,16 +34,16 @@
|
||||
|
||||
projectile_type = /obj/item/projectile/beam/stun/weak
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
|
||||
modifystate = "fm-2tstun"
|
||||
modifystate = "riflestun"
|
||||
|
||||
// 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"),
|
||||
list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="riflestun", 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="riflestun"),
|
||||
list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="riflekill", 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="riflekill"),
|
||||
)
|
||||
|
||||
/obj/item/gun/energy/gun/nuclear
|
||||
@@ -83,4 +82,19 @@
|
||||
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),
|
||||
)
|
||||
)
|
||||
|
||||
//What if we went smaller?
|
||||
/obj/item/gun/energy/gun/pocket
|
||||
name = "subcompact energy gun"
|
||||
desc = "The LAEP90-S Perunika is a subcompact variant of the versatile Perun energy sidearm, for use by plainclothes security personnel with a desire for concealability."
|
||||
description_fluff = "Lawson Arms is Hephaestus Industries’ main personal-energy-weapon branding, often sold alongside MarsTech projectile weapons to security and law enforcement agencies."
|
||||
w_class = ITEMSIZE_SMALL
|
||||
icon_state = "egunstun100"
|
||||
item_state = "energystun"
|
||||
|
||||
modifystate = "egunstun"
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="egunstun", charge_cost = 240),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="egunkill", charge_cost = 480),
|
||||
)
|
||||
|
||||
@@ -23,6 +23,13 @@
|
||||
charge_cost = 400
|
||||
recharge_time = 7 //Time it takes for shots to recharge (in ticks)
|
||||
|
||||
/obj/item/gun/energy/taser/disabler
|
||||
name = "disabler"
|
||||
desc = "The RayZar S500 Disabler is a high-powered derivative of the same Mk30 taser design used by NanoTrasen security, and is capable of overloading prosthetic energy cells. It's use is heavily regulated due to potential for long-term effects on the body."
|
||||
icon_state = "disabler"
|
||||
projectile_type = /obj/item/projectile/beam/stun/disabler
|
||||
charge_cost = 480
|
||||
|
||||
/obj/item/gun/energy/taser/mounted/cyborg/swarm
|
||||
name = "disabler"
|
||||
desc = "An archaic device which attacks the target's nervous-system or control circuits."
|
||||
@@ -110,4 +117,4 @@
|
||||
icon_state = "snubstunrevolver"
|
||||
item_state = "stunrevolver"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/gun/projectile/automatic //This should never be spawned in, it is just here because of code necessities.
|
||||
name = "daka SMG"
|
||||
desc = "A small SMG. You really shouldn't be able to get this gun. Uses 9mm rounds."
|
||||
icon_state = "c05r" //Used because it's not used anywhere else
|
||||
icon_state = "smg" //Used because it's not used anywhere else
|
||||
load_method = SPEEDLOADER
|
||||
ammo_type = /obj/item/ammo_casing/a9mm
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
@@ -370,6 +370,27 @@
|
||||
/obj/item/gun/projectile/automatic/p90/update_icon()
|
||||
icon_state = "p90smg-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 6) : "empty"]"
|
||||
|
||||
/obj/item/gun/projectile/automatic/pearlshield
|
||||
name = "\improper Tajaran PDW"
|
||||
desc = "A century old Rhemazar military weapon adapted to use human-standard cartridges, the PCA-A9 Karik has been the standard submachine gun of the Pearlshield military since 2549. Uses 9mm rounds."
|
||||
description_fluff = "Pearlshield Consolidated Armories are far from the most cutting edge firearm manufacturer, but the Tajaran’s long tradition of war is rivaled only by humanity, \
|
||||
and the introduction of human technology to the Tajaran arms market has resulted in something of a revolution in finding new ways to kill each other at long distances with bullets. \
|
||||
Usually made with mass-production in mind, PCA weapons combine an eye for design with a great desire to make people dead."
|
||||
icon_state = "pdw"
|
||||
item_state = "c20r"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
caliber = "9mm"
|
||||
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
|
||||
slot_flags = SLOT_BELT
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/m9mmt
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mmt)
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0),
|
||||
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-15,-30), dispersion=list(0.0, 0.6, 0.6))
|
||||
)
|
||||
|
||||
/obj/item/gun/projectile/automatic/tommygun
|
||||
name = "\improper Tommy Gun"
|
||||
desc = "This weapon was made famous by gangsters in the 20th century. Cybersun Industries is currently reproducing these for a target market of historic gun collectors and classy criminals. Uses .45 rounds."
|
||||
@@ -452,4 +473,4 @@
|
||||
if(ammo_magazine)
|
||||
icon_state = "combatsmg"
|
||||
else
|
||||
icon_state = "combatsmg-empty"
|
||||
icon_state = "combatsmg-empty"
|
||||
|
||||
@@ -17,6 +17,17 @@
|
||||
action_sound = 'sound/weapons/riflebolt.ogg'
|
||||
pump_animation = "boltaction-cycling"
|
||||
|
||||
//////Antique Variant//////
|
||||
/obj/item/gun/projectile/shotgun/pump/rifle/antique
|
||||
name = "antique bolt-action rifle"
|
||||
desc = "A cheaply produced rifle dating from at least the late 21st century, if not before. Hand loaded. Uses 7.62mm rounds."
|
||||
description_fluff = "These faux-wood plastic unbranded bolt-action rifles were mass produced in the millions to equip early Icarus Front supporters during staged revolutions in the 2090s,\
|
||||
though the design had circulated on the internet for at least fifty years prior. Surviving examples are relatively common, but generally unreliable as weapons due to their advanced age."
|
||||
icon_state = "surplus"
|
||||
item_state = "boltaction_c"
|
||||
load_method = SINGLE_CASING
|
||||
max_shells = 7
|
||||
|
||||
////////Practice Rifle////////
|
||||
/obj/item/gun/projectile/shotgun/pump/rifle/practice // For target practice
|
||||
name = "practice bolt-action rifle"
|
||||
@@ -76,6 +87,22 @@
|
||||
/obj/item/gun/projectile/shotgun/pump/rifle/lever/vintage
|
||||
name = "vintage repeater"
|
||||
desc = "An iconic manually operated lever action rifle, offering adequate stopping power due to it's still powerful cartridge while at the same time having a rather respectable firing rate due to it's mechanism. It is very probable this is a replica instead of a museum piece, but rifles of this pattern still see usage as colonist guns in some far off regions. Uses 7.62mm rounds."
|
||||
description_fluff = null
|
||||
item_state = "levercarbine"
|
||||
icon_state = "levercarbine"
|
||||
pump_animation = "levercarbine-cycling"
|
||||
|
||||
/obj/item/gun/projectile/shotgun/pump/rifle/lever/brushgun
|
||||
name = "brush gun"
|
||||
desc = "The Hedberg-Hammarstrom Myrkvidhr is a high-caliber lever-action hunting rifle designed specifically for tackling the hardy and often armoured wildlife of Sif."
|
||||
icon_state = "brushgun"
|
||||
pump_animation = "brushgun-cycling"
|
||||
max_shells = 8
|
||||
ammo_type = /obj/item/ammo_casing/a44/rifle
|
||||
caliber = ".44"
|
||||
|
||||
/obj/item/gun/projectile/shotgun/pump/rifle/lever/brushgun/Initialize()
|
||||
if(prob(50))
|
||||
icon_state = "trailgun"
|
||||
pump_animation = "trailgun_cycling"
|
||||
. = ..()
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
options["NT Mk. 58"] = "secguncomp"
|
||||
options["NT Mk. 58 Custom"] = "secgundark"
|
||||
options["MarsTech P11 Spur"] = "colt"
|
||||
options["MarsTech P59 Massif"] = "fnseven"
|
||||
options["MarsTech P59 Massif"] = "civil"
|
||||
options["ProTek YC9"] = "usp"
|
||||
options["ProTek Minx"] = "VP78"
|
||||
options["Jindal T15 Chooha"] = "p08"
|
||||
@@ -232,9 +232,22 @@
|
||||
/obj/item/gun/projectile/pistol/update_icon()
|
||||
..()
|
||||
if(silenced)
|
||||
icon_state = "pistol-silencer"
|
||||
if(ammo_magazine)
|
||||
icon_state = "[initial(icon_state)]-silencer"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-silencer-e"
|
||||
else
|
||||
icon_state = "pistol"
|
||||
if(ammo_magazine)
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/obj/item/gun/projectile/pistol/alt
|
||||
name = "compact government pistol"
|
||||
desc = "The Jindal PF. A compact, easily concealable gun, though it's only compatible with compact magazines. Uses 9mm rounds."
|
||||
description_fluff = "The Jindal Arms PF was the company's first entry into the compact pistols market, and has served as the standard issue firearm \
|
||||
of Tau Ceti government security forces since their consolidation in 2332."
|
||||
icon_state = "compact"
|
||||
|
||||
/obj/item/silencer
|
||||
name = "silencer"
|
||||
@@ -246,7 +259,7 @@
|
||||
/obj/item/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
|
||||
@@ -339,4 +352,28 @@
|
||||
icon_state = "p92x-brown"
|
||||
|
||||
/obj/item/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/gun/projectile/compact_45
|
||||
name = "compact .45 pistol"
|
||||
desc = "A compact and easily concealable gun with surprising firepower, though it's only compatible with compact magazines. Uses .45 rounds."
|
||||
description_fluff = "The MarsTech Ecureuil is the company's most popular compact .45 model. Perhaps best known as the official service pistol of the Free Relan Federation, despite a notoriously low magazine capacity."
|
||||
icon_state = "ecureuil"
|
||||
item_state = null
|
||||
w_class = ITEMSIZE_SMALL
|
||||
magazine_type = /obj/item/ammo_magazine/m45/compact
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m45/compact)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
caliber = ".45"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
|
||||
load_method = MAGAZINE
|
||||
|
||||
/obj/item/gun/projectile/compact_45/update_icon()
|
||||
..()
|
||||
if(ammo_magazine)
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/obj/item/gun/projectile/compact_45/tactical
|
||||
icon_state = "tac_ecureuil"
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
name = "mateba"
|
||||
desc = "This unique looking handgun is named after an Italian company famous for the original manufacture of these revolvers, and pasta kneading machines. Uses .357 rounds." // Yes I'm serious. -Spades
|
||||
icon_state = "mateba"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
|
||||
|
||||
/obj/item/gun/projectile/revolver/detective
|
||||
name = "revolver"
|
||||
@@ -71,6 +71,14 @@
|
||||
to_chat(M, "You name the gun [input]. Say hello to your new friend.")
|
||||
return 1
|
||||
|
||||
/obj/item/gun/projectile/revolver/gold
|
||||
name = "trophy revolver"
|
||||
desc = "A prestigious engraved version of the MarsTech R1 Snubnose, mass-produced for presentation to long-serving law enforcement personnel upon retirement. Uses .38-Special rounds."
|
||||
icon_state = "detective_gold"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 4)
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38
|
||||
|
||||
/obj/item/gun/projectile/revolver/detective45
|
||||
name = ".45 revolver"
|
||||
desc = "A basic revolver, popular among some law enforcement agencies for its simple, long-lasting construction, modified for .45 rounds and a seven-shot cylinder."
|
||||
@@ -80,7 +88,6 @@
|
||||
ammo_type = /obj/item/ammo_casing/a45/rubber
|
||||
max_shells = 7
|
||||
|
||||
|
||||
/obj/item/gun/projectile/revolver/detective45/verb/rename_gun()
|
||||
set name = "Name Gun"
|
||||
set category = "Object"
|
||||
@@ -108,12 +115,14 @@
|
||||
var/mob/M = usr
|
||||
var/list/options = list()
|
||||
options["MarsTech R1 Snubnose"] = "detective"
|
||||
options["ProTek Cowboy"] = "GP100"
|
||||
options["MarsTech Frontiersman Classic"] = "detective_peacemaker"
|
||||
options["MarsTech Frontiersman Shadow"] = "detective_peacemaker_dark"
|
||||
options["MarsTech Panther"] = "detective_panther"
|
||||
options["Jindal Duke"] = "lemat_old"
|
||||
options["ProTek Cowboy"] = "GP100"
|
||||
options["Jindal Duke"] = "lombardi_police"
|
||||
options["Jindal Viscount Snub"] = "detective_black"
|
||||
options["H-H Sindri"] = "webley"
|
||||
options["H-H Brokkr"] = "nagant"
|
||||
options["Lombardi Buzzard"] = "detective_buzzard"
|
||||
options["Lombardi Constable Deluxe 2502"] = "detective_constable"
|
||||
var/choice = input(M,"Choose your sprite!","Resprite Gun") in options
|
||||
@@ -151,8 +160,8 @@
|
||||
/obj/item/gun/projectile/revolver/capgun
|
||||
name = "cap gun"
|
||||
desc = "Looks almost like the real thing! Ages 8 and up."
|
||||
icon_state = "revolver"
|
||||
item_state = "revolver"
|
||||
icon_state = "detective_fitz"
|
||||
item_state = "detective_fitz"
|
||||
caliber = "caps"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
handle_casings = CYCLE_CASINGS
|
||||
@@ -176,7 +185,7 @@
|
||||
// ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it.
|
||||
|
||||
/obj/item/gun/projectile/revolver/lemat
|
||||
name = "Mako Revolver"
|
||||
name = "Mako revolver"
|
||||
desc = "The Bishamonten P100 Mako is a 9 shot revolver with a secondary firing barrel loading shotgun shells. For when you really need something dead. A rare yet deadly collector's item. Uses .38-Special and 12g rounds depending on the barrel."
|
||||
description_fluff = "The Bishamonten Company operated from roughly 2150-2280 - the height of the first extrasolar colonisation boom - before filing for bankruptcy and selling off its assets to various companies that would go on to become today’s TSCs. \
|
||||
Focused on sleek ‘futurist’ designs which have largely fallen out of fashion but remain popular with collectors and people hoping to make some quick thalers from replica weapons. \
|
||||
@@ -269,8 +278,6 @@
|
||||
else
|
||||
. += "It has a secondary barrel that is empty."
|
||||
|
||||
|
||||
//Ported from Bay
|
||||
/obj/item/gun/projectile/revolver/webley
|
||||
name = "patrol revolver"
|
||||
desc = "A rugged top break revolver commonly issued to members of the SifGuard. Uses .44 magnum rounds."
|
||||
@@ -288,6 +295,31 @@
|
||||
name = "autorevolver"
|
||||
icon_state = "mosley"
|
||||
desc = "A shiny Fosbery Autococker automatic revolver, with black accents. Marketed as the 'Revolver for the Modern Era'. Uses .44 magnum rounds."
|
||||
description_fluff = null
|
||||
fire_delay = 5.7 //Autorevolver. Also synced with the animation
|
||||
fire_anim = "mosley_fire"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
|
||||
/obj/item/gun/projectile/revolver/webley/large
|
||||
name = "heavy revolver"
|
||||
desc = "A high-capacity magnum revolver, polished to a mirror shine. Uses .44 magnum rounds."
|
||||
description_fluff = "The Hedberg-Hammarstrom Wyrm was designed as a SifGuard sidearm, but the prototype was rejected in favour of the lighter Althing. \
|
||||
Introduced to the consumer market by popular demand a few years later, the Wyrm has been a hit with collectors ever since."
|
||||
icon_state = "revolver_stainless"
|
||||
max_shells = 8
|
||||
|
||||
/obj/item/gun/projectile/revolver/webley/magnetic
|
||||
name = "Auditor revolver"
|
||||
desc = "A high-powered revolver with a electromagnetically assisted firing mechanism for enhanced armor-piercing capability using standard ammunition. Uses .44 magnum rounds."
|
||||
description_fluff = "The Lawson Arms LAM-2 Auditor is an experimental hybrid design using an electronic firing mechanism to propel standard ballistic ammunition at absurd velocities. \
|
||||
Though prohibitively expensive to both obtain and maintain, the Auditor is a favourite with those particular gunmen with near unlimited budgets."
|
||||
icon_state = "inspector"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong/ap
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_MAGNET = 2)
|
||||
|
||||
/obj/item/gun/projectile/revolver/webley/magnetic/update_icon()
|
||||
cut_overlays()
|
||||
if(loaded.len==0)
|
||||
add_overlay("inspector_off")
|
||||
else
|
||||
add_overlay("inspector_on")
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
/obj/item/gun/projectile/shotgun/doublebarrel
|
||||
name = "double-barreled shotgun"
|
||||
desc = "A truely classic weapon. No need to change what works. Uses 12g rounds."
|
||||
desc = "A truly classic weapon. No need to change what works. Uses 12g rounds."
|
||||
icon_state = "dshotgun"
|
||||
item_state = "dshotgun"
|
||||
//SPEEDLOADER because rapid unloading.
|
||||
@@ -104,6 +104,7 @@
|
||||
caliber = "12g"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1)
|
||||
ammo_type = /obj/item/ammo_casing/a12g/beanbag
|
||||
var/sawn_off = FALSE
|
||||
|
||||
burst_delay = 0
|
||||
firemodes = list(
|
||||
@@ -117,6 +118,7 @@
|
||||
/obj/item/gun/projectile/shotgun/doublebarrel/flare
|
||||
name = "signal shotgun"
|
||||
desc = "A double-barreled shotgun meant to fire signal flash shells. Uses 12g rounds."
|
||||
icon_state = "dshotgun_g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flash
|
||||
|
||||
/obj/item/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump)
|
||||
@@ -135,7 +137,9 @@
|
||||
burst = burstsetting
|
||||
return
|
||||
if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY
|
||||
icon_state = "sawnshotgun"
|
||||
if(sawn_off)
|
||||
return
|
||||
icon_state = "[initial(icon_state)]-sawn"
|
||||
item_state = "sawnshotgun"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
force = 5
|
||||
@@ -144,18 +148,20 @@
|
||||
name = "sawn-off shotgun"
|
||||
desc = "Omar's coming!"
|
||||
to_chat(user, "<span class='warning'>You shorten the barrel of \the [src]!</span>")
|
||||
sawn_off = TRUE
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/gun/projectile/shotgun/doublebarrel/sawn
|
||||
name = "sawn-off shotgun"
|
||||
desc = "Omar's coming!" // I'm not gonna add "Uses 12g rounds." to this one. I'll just let this reference go undisturbed.
|
||||
icon_state = "sawnshotgun"
|
||||
icon_state = "dshotgun-sawn"
|
||||
item_state = "sawnshotgun"
|
||||
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
||||
ammo_type = /obj/item/ammo_casing/a12g/pellet
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
force = 5
|
||||
sawn_off = TRUE
|
||||
|
||||
//Sjorgen Inertial Shotgun
|
||||
/obj/item/gun/projectile/shotgun/semi
|
||||
@@ -171,4 +177,3 @@
|
||||
load_method = SINGLE_CASING
|
||||
max_shells = 5
|
||||
ammo_type = /obj/item/ammo_casing/a12g/beanbag
|
||||
|
||||
@@ -131,6 +131,9 @@
|
||||
damage = 60
|
||||
hud_state = "pistol_heavy"
|
||||
|
||||
/obj/item/projectile/bullet/pistol/strong/ap
|
||||
armor_penetration = 15
|
||||
|
||||
/obj/item/projectile/bullet/pistol/rubber/strong // "Rubber" bullets for high power pistols.
|
||||
fire_sound = 'sound/weapons/gunshot3.ogg' // Rubber shots have less powder, but these still have more punch than normal rubber shot.
|
||||
damage = 10
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
//Dispensers
|
||||
/obj/structure/reagent_dispensers/watertank
|
||||
name = "watertank"
|
||||
name = "water tank"
|
||||
desc = "A watertank."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "watertank"
|
||||
@@ -403,7 +403,7 @@
|
||||
/obj/structure/reagent_dispensers/acid/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("sacid", 1000)
|
||||
|
||||
|
||||
//Cooking oil refill tank
|
||||
/obj/structure/reagent_dispensers/cookingoil
|
||||
name = "cooking oil tank"
|
||||
@@ -437,4 +437,4 @@
|
||||
|
||||
/obj/structure/reagent_dispenser/he3/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("helium3",1000)
|
||||
reagents.add_reagent("helium3",1000)
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
anchored = 1
|
||||
var/speed_active = FALSE // are the linked conveyors on SSfastprocess?
|
||||
|
||||
required_dexterity = MOB_DEXTERITY_SIMPLE_MACHINES
|
||||
|
||||
|
||||
/obj/machinery/conveyor_switch/Initialize()
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
name = "xeno taser gun"
|
||||
desc = "Straight out of NT's testing laboratories, this small gun is used to subdue non-humanoid xeno life forms. \
|
||||
While marketed towards handling slimes, it may be useful for other creatures."
|
||||
icon_state = "taserold"
|
||||
icon_state = "taserblueold"
|
||||
fire_sound = 'sound/weapons/taser2.ogg'
|
||||
charge_cost = 120 // Twice as many shots.
|
||||
projectile_type = /obj/item/projectile/beam/stun/xeno
|
||||
|
||||
@@ -79,6 +79,7 @@ h1.alert, h2.alert {color: #000000;}
|
||||
.critical {color: #ff0000; font-weight: bold; font-size: 150%;}
|
||||
.danger {color: #ff0000; font-weight: bold;}
|
||||
.warning {color: #ff0000; font-style: italic;}
|
||||
.italic {font-style: italic;}
|
||||
.rose {color: #ff5050;}
|
||||
.info {color: #0000CC;}
|
||||
.notice {color: #000099;}
|
||||
|
||||
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 259 KiB |
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 356 KiB After Width: | Height: | Size: 351 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 626 B |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
@@ -968,6 +968,14 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/centcom/specops)
|
||||
"bcL" = (
|
||||
/obj/structure/shuttle/falsewall_no_join,
|
||||
/obj/structure/shuttle/falsewall_no_join{
|
||||
icon = 'icons/turf/wall_masks_tgmc.dmi';
|
||||
icon_state = "white1"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/shuttle/escape/centcom)
|
||||
"bcT" = (
|
||||
/obj/machinery/sleep_console,
|
||||
/turf/unsimulated/floor{
|
||||
@@ -1157,7 +1165,11 @@
|
||||
/turf/simulated/shuttle/floor/white,
|
||||
/area/skipjack_station/start)
|
||||
"boo" = (
|
||||
/turf/simulated/wall/tgmc/whitewall,
|
||||
/obj/structure/shuttle/falsewall_no_join{
|
||||
icon = 'icons/turf/wall_masks_tgmc.dmi';
|
||||
icon_state = "white2"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/shuttle/escape/centcom)
|
||||
"bos" = (
|
||||
/obj/effect/floor_decal/techfloor{
|
||||
@@ -1793,10 +1805,18 @@
|
||||
/turf/simulated/floor/holofloor/bmarble,
|
||||
/area/holodeck/source_chess)
|
||||
"caf" = (
|
||||
/turf/simulated/wall/tgmc/window/white,
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_window2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"cbu" = (
|
||||
/turf/simulated/wall/tgmc/window/white/reinf,
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_rwindow2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"cbv" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
@@ -2774,6 +2794,13 @@
|
||||
icon_state = "steel"
|
||||
},
|
||||
/area/shuttle/trade)
|
||||
"dmu" = (
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_window1"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"dmM" = (
|
||||
/obj/structure/table/rack,
|
||||
/obj/item/clothing/under/color/green,
|
||||
@@ -5006,6 +5033,13 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/centcom/main_hall)
|
||||
"fJP" = (
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_rwindow1"
|
||||
},
|
||||
/turf/simulated/wall/tgmc/window/white/reinf,
|
||||
/area/shuttle/escape/centcom)
|
||||
"fKy" = (
|
||||
/obj/effect/floor_decal/industrial/warning{
|
||||
dir = 1
|
||||
@@ -7873,6 +7907,13 @@
|
||||
/obj/random/energy,
|
||||
/turf/simulated/shuttle/plating,
|
||||
/area/skipjack_station/start)
|
||||
"iQX" = (
|
||||
/obj/structure/shuttle/falsewall_no_join{
|
||||
icon = 'icons/turf/wall_masks_tgmc.dmi';
|
||||
icon_state = "white1"
|
||||
},
|
||||
/turf/simulated/wall/tgmc/whitewall,
|
||||
/area/shuttle/escape/centcom)
|
||||
"iRf" = (
|
||||
/obj/machinery/floodlight,
|
||||
/turf/simulated/shuttle/plating,
|
||||
@@ -8167,6 +8208,13 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/wizard_station)
|
||||
"jfW" = (
|
||||
/obj/structure/shuttle/falsewall_no_join{
|
||||
icon = 'icons/turf/wall_masks_tgmc.dmi';
|
||||
icon_state = "white1"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"jgo" = (
|
||||
/obj/item/ore,
|
||||
/turf/unsimulated/floor{
|
||||
@@ -11019,7 +11067,11 @@
|
||||
},
|
||||
/area/centcom/main_hall)
|
||||
"mhh" = (
|
||||
/turf/simulated/wall/tgmc/window/white/reinf,
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_rwindow2"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/shuttle/escape/centcom)
|
||||
"mhv" = (
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
@@ -11613,6 +11665,13 @@
|
||||
/obj/structure/window/reinforced/full,
|
||||
/turf/simulated/shuttle/plating,
|
||||
/area/shuttle/merchant/home)
|
||||
"mPt" = (
|
||||
/obj/structure/shuttle/falsewall_no_join{
|
||||
icon = 'icons/turf/wall_masks_tgmc.dmi';
|
||||
icon_state = "white2"
|
||||
},
|
||||
/turf/simulated/wall/tgmc/whitewall,
|
||||
/area/shuttle/escape/centcom)
|
||||
"mQd" = (
|
||||
/obj/structure/table/marble,
|
||||
/obj/effect/floor_decal/corner/white/diagonal,
|
||||
@@ -13596,7 +13655,11 @@
|
||||
},
|
||||
/area/centcom/main_hall)
|
||||
"pia" = (
|
||||
/turf/simulated/wall/tgmc/whitewall,
|
||||
/obj/structure/shuttle/falsewall_no_join{
|
||||
icon = 'icons/turf/wall_masks_tgmc.dmi';
|
||||
icon_state = "white2"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"piF" = (
|
||||
/turf/unsimulated/floor{
|
||||
@@ -16635,6 +16698,13 @@
|
||||
name = "plating"
|
||||
},
|
||||
/area/wizard_station)
|
||||
"seQ" = (
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_rwindow1"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"sfb" = (
|
||||
/obj/item/reagent_containers/food/drinks/cans/cola,
|
||||
/obj/item/reagent_containers/food/drinks/cans/cola,
|
||||
@@ -18181,6 +18251,13 @@
|
||||
/obj/effect/floor_decal/sign/small_f,
|
||||
/turf/simulated/floor/holofloor/wood,
|
||||
/area/holodeck/source_chess)
|
||||
"tPd" = (
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_rwindow2"
|
||||
},
|
||||
/turf/simulated/wall/tgmc/window/white/reinf,
|
||||
/area/shuttle/escape/centcom)
|
||||
"tPB" = (
|
||||
/obj/effect/floor_decal/industrial/warning/corner{
|
||||
dir = 4
|
||||
@@ -19018,6 +19095,19 @@
|
||||
},
|
||||
/turf/simulated/shuttle/plating,
|
||||
/area/skipjack_station/start)
|
||||
"uGT" = (
|
||||
/obj/structure/bed/chair/shuttle{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "JoinLate"
|
||||
},
|
||||
/obj/structure/closet/walllocker/emerglocker{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/effect/floor_decal/milspec/color/white,
|
||||
/turf/simulated/floor/tiled/milspec/sterile,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"uHS" = (
|
||||
/obj/structure/bed/chair/comfy/red{
|
||||
dir = 4
|
||||
@@ -20196,6 +20286,13 @@
|
||||
icon_state = "dark"
|
||||
},
|
||||
/area/centcom/specops)
|
||||
"vXp" = (
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_rwindow1"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/shuttle/escape/centcom)
|
||||
"vYZ" = (
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
dir = 8
|
||||
@@ -21413,6 +21510,13 @@
|
||||
/obj/structure/window/reinforced,
|
||||
/turf/simulated/shuttle/floor/white,
|
||||
/area/centcom/evac)
|
||||
"xib" = (
|
||||
/obj/structure/shuttle/falsewall_no_join/window{
|
||||
icon = 'icons/turf/wall_masks_tgmc_win.dmi';
|
||||
icon_state = "white_window3"
|
||||
},
|
||||
/turf/simulated/floor/tiled/milspec/dark,
|
||||
/area/shuttle/arrival/pre_game)
|
||||
"xid" = (
|
||||
/obj/machinery/dna_scannernew,
|
||||
/obj/effect/floor_decal/borderfloorwhite{
|
||||
@@ -29971,8 +30075,8 @@ lqf
|
||||
lqf
|
||||
pia
|
||||
cbu
|
||||
cbu
|
||||
pia
|
||||
seQ
|
||||
jfW
|
||||
lqf
|
||||
lqf
|
||||
tQa
|
||||
@@ -30229,7 +30333,7 @@ cSk
|
||||
rBk
|
||||
bAY
|
||||
bAY
|
||||
rBk
|
||||
uGT
|
||||
cSk
|
||||
cSk
|
||||
thM
|
||||
@@ -30998,9 +31102,9 @@ tgY
|
||||
pNX
|
||||
dZT
|
||||
caf
|
||||
caf
|
||||
caf
|
||||
caf
|
||||
xib
|
||||
xib
|
||||
dmu
|
||||
nol
|
||||
pNU
|
||||
jbe
|
||||
@@ -32027,8 +32131,8 @@ qzL
|
||||
qzL
|
||||
pia
|
||||
cbu
|
||||
cbu
|
||||
pia
|
||||
seQ
|
||||
jfW
|
||||
qzL
|
||||
qzL
|
||||
tQa
|
||||
@@ -36306,8 +36410,8 @@ gOt
|
||||
gOt
|
||||
boo
|
||||
mhh
|
||||
mhh
|
||||
boo
|
||||
vXp
|
||||
bcL
|
||||
gnm
|
||||
gnm
|
||||
eVJ
|
||||
@@ -38874,10 +38978,10 @@ eVJ
|
||||
eVJ
|
||||
kuN
|
||||
nmf
|
||||
boo
|
||||
mhh
|
||||
mhh
|
||||
boo
|
||||
mPt
|
||||
tPd
|
||||
fJP
|
||||
iQX
|
||||
kuN
|
||||
kuN
|
||||
eVJ
|
||||
|
||||
@@ -202,6 +202,7 @@ var/global/const/access_explorer = 43
|
||||
continue
|
||||
chosen_template.load(T, centered = TRUE)
|
||||
admin_notice("Crash survivor placed \"[chosen_template.name]\" at ([T.x], [T.y], [T.z])\n", R_DEBUG)
|
||||
break
|
||||
|
||||
// Rebuild the spawn point list now that one has been spawned.
|
||||
existing_points = get_existing_spawn_points()
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
/datum/gear/suit/bomber_pilot
|
||||
display_name = "bomber jacket, pilot"
|
||||
path = /obj/item/clothing/suit/storage/toggle/bomber/pilot
|
||||
/datum/gear/suit/bomber // Override version of bomber jacket selection incorporating map-specific jacket.
|
||||
display_name = "jacket, bomber selection"
|
||||
description = "A selection of jackets styled after early aviation gear."
|
||||
path = /obj/item/clothing/suit/storage/toggle/bomber
|
||||
cost = 2
|
||||
|
||||
/datum/gear/suit/bomber/New()
|
||||
..()
|
||||
var/bombertype = list()
|
||||
bombertype["bomber jacket"] = /obj/item/clothing/suit/storage/toggle/bomber
|
||||
bombertype["bomber jacket, alternate"] = /obj/item/clothing/suit/storage/bomber/alt
|
||||
bombertype["bomber jacket, retro"] = /obj/item/clothing/suit/storage/toggle/bomber/retro
|
||||
bombertype["bomber jacket, pilot blue"] = /obj/item/clothing/suit/storage/toggle/bomber/pilot
|
||||
gear_tweaks += new/datum/gear_tweak/path(bombertype)
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
"ajF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/carpet,/area/library)
|
||||
"ajG" = (/obj/structure/bed/chair/comfy/green{dir = 8},/turf/simulated/floor/carpet,/area/library)
|
||||
"ajH" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/storage/emergency_storage/emergency4)
|
||||
"ajI" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency4)
|
||||
"ajI" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/firefighter,/obj/item/clothing/glasses/meson,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency4)
|
||||
"ajJ" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/tank/oxygen,/obj/item/tank/oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/flashlight,/obj/item/flashlight,/obj/item/storage/box/lights/mixed,/obj/item/extinguisher,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency4)
|
||||
"ajK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
|
||||
"ajL" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/secondary/civilian_hallway_fore)
|
||||
@@ -6142,7 +6142,7 @@
|
||||
"cof" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/cell_charger,/turf/simulated/floor/tiled,/area/storage/primary)
|
||||
"cog" = (/obj/machinery/vending/tool,/turf/simulated/floor/tiled,/area/storage/primary)
|
||||
"coh" = (/obj/machinery/floodlight,/turf/simulated/floor,/area/storage/emergency_storage/emergency6)
|
||||
"coi" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency6)
|
||||
"coi" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/firefighter,/obj/item/clothing/glasses/meson,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency6)
|
||||
"coj" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency6)
|
||||
"cok" = (/obj/structure/closet/wardrobe/grey,/obj/item/storage/backpack,/obj/item/storage/backpack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/cargo)
|
||||
"col" = (/obj/structure/table/rack,/obj/item/bodybag/cryobag,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/item/storage/toolbox/emergency,/obj/item/storage/firstaid/regular,/obj/random/medical/lite,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station)
|
||||
@@ -8037,7 +8037,7 @@
|
||||
"cYC" = (/obj/machinery/portable_atmospherics/canister/air/airlock,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating,/area/maintenance/arrivals)
|
||||
"cYD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/maintenance/arrivals)
|
||||
"cYE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/entry/starboard)
|
||||
"cYF" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency5)
|
||||
"cYF" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/firefighter,/obj/item/clothing/glasses/meson,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency5)
|
||||
"cYG" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/storage/emergency_storage/emergency5)
|
||||
"cYH" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue/diagonal,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dining)
|
||||
"cYI" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white{dir = 8},/obj/effect/floor_decal/corner/blue,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dining)
|
||||
@@ -8473,7 +8473,7 @@
|
||||
"dgW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/engineering/engine_eva)
|
||||
"dgX" = (/obj/machinery/door/airlock/glass_engineeringatmos{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_eva)
|
||||
"dgY" = (/obj/machinery/door/airlock/glass_engineeringatmos{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/engineering/engine_eva)
|
||||
"dgZ" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/engineering)
|
||||
"dgZ" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/firefighter,/obj/item/clothing/glasses/meson,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/engineering)
|
||||
"dha" = (/turf/simulated/floor/plating,/area/maintenance/engineering)
|
||||
"dhb" = (/obj/item/t_scanner,/obj/structure/table/steel,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/engineering)
|
||||
"dhc" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor,/area/hallway/secondary/escape/dock_escape_pod_hallway_port)
|
||||
@@ -9196,7 +9196,7 @@
|
||||
"duR" = (/obj/machinery/atmospherics/portables_connector,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duS" = (/obj/machinery/computer/shuttle_control/engineering{name = "engineering elevator control console"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duU" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duU" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire,/obj/item/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/extinguisher,/obj/item/clothing/head/hardhat/firefighter,/obj/item/clothing/glasses/meson,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duV" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duW" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
"duX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
|
||||
|
||||
@@ -44149,7 +44149,7 @@
|
||||
/obj/structure/table/rack{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/tank/oxygen,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/extinguisher,
|
||||
@@ -58448,7 +58448,7 @@
|
||||
/obj/structure/table/rack{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/tank/oxygen,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/extinguisher,
|
||||
@@ -65655,7 +65655,7 @@
|
||||
/obj/structure/table/rack{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/tank/oxygen,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/extinguisher,
|
||||
@@ -70188,7 +70188,7 @@
|
||||
/obj/structure/table/rack{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/tank/oxygen,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/extinguisher,
|
||||
@@ -93813,7 +93813,7 @@
|
||||
/obj/structure/table/rack{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire,
|
||||
/obj/item/tank/oxygen,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/extinguisher,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"a" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/fire/firefighter,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
|
||||
"a" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/mask/gas,/obj/item/clothing/suit/fire/atmos,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
|
||||
"b" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
|
||||
"c" = (/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel,/obj/effect/decal/cleanable/molten_item,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
|
||||
"d" = (/obj/item/flamethrower,/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"d" = (
|
||||
/obj/effect/alien/weeds,
|
||||
/obj/structure/bed/nest,
|
||||
/obj/random/handgun,
|
||||
/obj/random/sidearm,
|
||||
/turf/simulated/mineral/floor/ignore_mapgen,
|
||||
/area/submap/cave/vault5)
|
||||
"e" = (
|
||||
|
||||