Merge branch 'master' into upstream-merge-8298

This commit is contained in:
Novacat
2022-03-22 08:53:45 -04:00
committed by GitHub
218 changed files with 4106 additions and 853 deletions
@@ -18,4 +18,9 @@
name = "spyglass"
desc = "It's a hand-held telescope, useful for star-gazing, peeping, and recon."
icon_state = "spyglass"
slot_flags = SLOT_BELT
slot_flags = SLOT_BELT
/obj/item/device/binoculars/scope
name = "rifle scope"
desc = "It's a rifle scope. Would be better if it were actually attached to a rifle."
icon_state = "rifle_scope"
+28 -5
View File
@@ -1,15 +1,38 @@
/*
* Sidearm Lethal
*/
/obj/item/gunbox
name = "detective's gun box"
desc = "A secure box containing a Detective's sidearm."
name = "sidearm box"
desc = "A secure box containing a lethal sidearm."
icon = 'icons/obj/storage.dmi'
icon_state = "gunbox"
w_class = ITEMSIZE_HUGE
/obj/item/gunbox/attack_self(mob/living/user)
var/list/options = list()
options[".45 Pistol"] = list(/obj/item/weapon/gun/projectile/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
options[".45 Revolver"] = list(/obj/item/weapon/gun/projectile/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber)
options["M1911 (.45)"] = list(/obj/item/weapon/gun/projectile/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
options["MT Mk58 (.45)"] = list(/obj/item/weapon/gun/projectile/sec, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
options["MarsTech R1 (.45)"] = list(/obj/item/weapon/gun/projectile/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber)
options["MarsTech P92X (9mm)"] = list(/obj/item/weapon/gun/projectile/p92x/rubber, /obj/item/ammo_magazine/m9mm/rubber, /obj/item/ammo_magazine/m9mm/rubber)
var/choice = tgui_input_list(user,"Would you prefer a pistol or a revolver?", "Gun!", options)
if(src && choice)
var/list/things_to_spawn = options[choice]
for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo.
var/atom/movable/AM = new new_type(get_turf(src))
if(istype(AM, /obj/item/weapon/gun))
to_chat(user, "You have chosen \the [AM]. Say hello to your new friend.")
qdel(src)
/*
* Sidearm Stun
*/
/obj/item/gunbox/stun
name = "non-lethal sidearm box"
desc = "A secure box containing a non-lethal sidearm."
/obj/item/gunbox/stun/attack_self(mob/living/user)
var/list/options = list()
options["Stun Revolver"] = list(/obj/item/weapon/gun/energy/stunrevolver/detective, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon)
options["Taser"] = list(/obj/item/weapon/gun/energy/taser, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon)
var/choice = tgui_input_list(user,"Please, select an option.", "Stun Gun!", options)
if(src && choice)
var/list/things_to_spawn = options[choice]
for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo.
+14 -11
View File
@@ -1,18 +1,21 @@
/obj/item/gunbox
name = "security sidearm box"
desc = "A secure box containing a security sidearm."
/*
* Shotgun Box
*/
/obj/item/gunbox/warden
name = "warden's shotgun case"
desc = "A secure guncase containing the warden's beloved shotgun."
icon = 'icons/obj/storage_vr.dmi'
icon_state = "gunboxw"
/obj/item/gunbox/attack_self(mob/living/user)
/obj/item/gunbox/warden/attack_self(mob/living/user)
var/list/options = list()
options["M1911 (.45)"] = list(/obj/item/weapon/gun/projectile/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
options["NT Mk58 (.45)"] = list(/obj/item/weapon/gun/projectile/sec, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
options["SW 625 Revolver (.45)"] = list(/obj/item/weapon/gun/projectile/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber)
options["P92X (9mm)"] = list(/obj/item/weapon/gun/projectile/p92x/sec, /obj/item/ammo_magazine/m9mm/rubber, /obj/item/ammo_magazine/m9mm/rubber)
var/choice = tgui_input_list(user,"Would you prefer a pistol or a revolver?", "Gun!", options)
options["Warden's combat shotgun"] = list(/obj/item/weapon/gun/projectile/shotgun/pump/combat/warden, /obj/item/ammo_magazine/ammo_box/b12g/beanbag)
options["Warden's compact shotgun"] = list(/obj/item/weapon/gun/projectile/shotgun/compact/warden, /obj/item/ammo_magazine/ammo_box/b12g/beanbag)
var/choice = tgui_input_list(user,"Choose your boomstick!", "Shotgun!", options)
if(src && choice)
var/list/things_to_spawn = options[choice]
for(var/new_type in things_to_spawn) // Spawn all the things, the gun and the ammo.
var/atom/movable/AM = new new_type(get_turf(src))
if(istype(AM, /obj/item/weapon/gun))
to_chat(user, "You have chosen \the [AM]. Say hello to your new friend.")
qdel(src)
to_chat(user, "You have chosen \the [AM]. Say hello to your new best friend.")
qdel(src)
@@ -155,7 +155,7 @@
/obj/item/borg/upgrade/advhealth
name = "advanced health analyzer module"
desc = "A carbon dioxide jetpack suitable for low-gravity operations."
desc = "An Advanced Health Analyzer, optimized for borg mounting."
icon_state = "cyborg_upgrade3"
item_state = "cyborg_upgrade"
require_module = 1
@@ -214,4 +214,4 @@
R.add_language(LANGUAGE_TERMINUS, 1)
R.add_language(LANGUAGE_ZADDAT, 1)
return 1
return 1
@@ -66,3 +66,93 @@
to_chat(usr, "Internal capacity doubled.")
T.upgraded_capacity = TRUE
return 1
//Advanced RPED
/obj/item/borg/upgrade/advrped
name = "Advanced Rapid Part Exchange Device"
desc = "An ARPED, now in borg size!"
icon_state = "cyborg_upgrade3"
item_state = "cyborg_upgrade"
module_flags = BORG_MODULE_SCIENCE
require_module = 1
/obj/item/borg/upgrade/advrped/action(var/mob/living/silicon/robot/R)
if(..()) return 0
var/obj/item/weapon/storage/part_replacer/adv/T = locate() in R.module
if(!R.module || !(type in R.module.supported_upgrades))
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module!")
return 0
if(!T)
T = locate() in R.module.contents
if(!T)
T = locate() in R.module.modules
if(!T)
R.module.modules += new/obj/item/weapon/storage/part_replacer/adv(R.module)
return 1
if(T)
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module!")
return 0
//Diamond Drill
/obj/item/borg/upgrade/diamonddrill
name = "Mounted Diamond Drill"
desc = "An advanced drill, optimized for borg use."
icon_state = "cyborg_upgrade3"
item_state = "cyborg_upgrade"
module_flags = BORG_MODULE_MINER
require_module = 1
/obj/item/borg/upgrade/diamonddrill/action(var/mob/living/silicon/robot/R)
if(..()) return 0
var/obj/item/weapon/pickaxe/diamonddrill/T = locate() in R.module
if(!R.module || !(type in R.module.supported_upgrades))
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module!")
return 0
if(!T)
T = locate() in R.module.contents
if(!T)
T = locate() in R.module.modules
if(!T)
R.module.modules += new/obj/item/weapon/pickaxe/diamonddrill(R.module)
return 1
if(T)
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module!")
return 0
//PKA
/obj/item/borg/upgrade/pka
name = "Protokenetic Accelerator Upgrade"
desc = "A borg mounted PKA Rifle for use in mining and wildlife defense."
icon_state = "cyborg_upgrade3"
item_state = "cyborg_upgrade"
module_flags = BORG_MODULE_MINER
require_module = 1
/obj/item/borg/upgrade/pka/action(var/mob/living/silicon/robot/R)
if(..()) return 0
var/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/T = locate() in R.module
if(!R.module || !(type in R.module.supported_upgrades))
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module!")
return 0
if(!T)
T = locate() in R.module.contents
if(!T)
T = locate() in R.module.modules
if(!T)
R.module.modules += new/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg(R.module)
return 1
if(T)
to_chat(R, "Upgrade mounting error! No suitable hardpoint detected!")
to_chat(usr, "There's no mounting point for the module!")
return 0
@@ -47,7 +47,7 @@
force = 3.0
max_water = 600
spray_particles = 3
sprite_name = "atmo_extinguisher"
sprite_name = "atmos_extinguisher"
rand_overlays = 0
/obj/item/weapon/extinguisher/Initialize()
@@ -72,7 +72,8 @@
/obj/item/device/integrated_electronics/wirer,
/obj/item/device/integrated_electronics/debugger, //Vorestation edit adding debugger to toolbelt can hold list
/obj/item/weapon/shovel/spade, //VOREStation edit. If it can hold minihoes and hatchers, why not the gardening spade?
/obj/item/stack/nanopaste //VOREStation edit. Think of it as a tube of superglue. Belts hold that all the time.
/obj/item/stack/nanopaste, //VOREStation edit. Think of it as a tube of superglue. Belts hold that all the time.
/obj/item/device/geiger //VOREStation edit. Engineers work with rad-slinging stuff sometimes too
)
/obj/item/weapon/storage/belt/utility/full
@@ -102,7 +103,9 @@
/obj/item/weapon/tool/wrench,
/obj/item/weapon/weldingtool,
/obj/item/weapon/tool/crowbar,
/obj/item/weapon/tool/wirecutters
/obj/item/weapon/tool/wirecutters,
/obj/item/device/analyzer, //Vorestation edit. Gives atmos techs a few extra tools fitting their job from the start
/obj/item/weapon/extinguisher/mini //Vorestation edit. As above, the mini's much more handy to have rather than lugging a big one around
)
/obj/item/weapon/storage/belt/utility/chief
@@ -538,4 +541,4 @@
storage_slots = 8
can_hold = list(
/obj/item/ammo_casing/afoam_dart
)
)
@@ -7,4 +7,5 @@
max_storage_space = ITEMSIZE_COST_SMALL * 6
/obj/item/weapon/storage/toolbox/lunchbox/survival/zaddat
starts_with = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 6)
name = "zaddat survival lunchbox"
starts_with = list(/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose = 6)
+2 -2
View File
@@ -12,7 +12,7 @@
/obj/item/weapon/tape_roll/proc/can_place(var/mob/living/carbon/human/H, var/mob/user)
if(istype(user, /mob/living/silicon/robot) || user == H)
return TRUE
for (var/obj/item/weapon/grab/G in H.grabbed_by)
if (G.loc == user && G.state >= GRAB_AGGRESSIVE)
return TRUE
@@ -36,7 +36,7 @@
to_chat(user, "<span class='warning'>\The [H] doesn't have any eyes.</span>")
return
if(H.glasses)
to_chat(user, "<span class='warning'>\The [H] is already wearing somethign on their eyes.</span>")
to_chat(user, "<span class='warning'>\The [H] is already wearing something on their eyes.</span>")
return
if(H.head && (H.head.body_parts_covered & FACE))
to_chat(user, "<span class='warning'>Remove their [H.head] first.</span>")
+3 -3
View File
@@ -460,9 +460,9 @@
/obj/item/ammo_magazine/s44
),
prob(1);list(
/obj/item/weapon/gun/projectile/revolver/webley/auto,
/obj/item/ammo_magazine/s44,
/obj/item/ammo_magazine/s44
/obj/item/weapon/gun/projectile/revolver/consul,
/obj/item/ammo_magazine/s44/rubber,
/obj/item/ammo_magazine/s44/rubber
)
)
+39 -2
View File
@@ -848,7 +848,7 @@
/obj/item/weapon/reagent_containers/food/snacks/donut/plain,
/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack)
/obj/item/weapon/reagent_containers/food/snacks/cookie)
/obj/random/mre/dessert/vegan
name = "random vegan MRE dessert"
@@ -984,4 +984,41 @@
prob(6);/obj/item/device/flashlight/color/orange,
prob(6);/obj/item/device/flashlight/color/yellow,
prob(2);/obj/item/device/flashlight/maglight
)
)
/obj/random/mug
name = "Random Mug"
desc = "This is a random coffee mug."
icon = 'icons/obj/drinks_mugs.dmi'
icon_state = "coffeecup_spawner"
/obj/random/mug/item_to_spawn()
return pick(/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/sol,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fleet,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/fivearrows,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/psc,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/alma,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/almp,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/nt,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal/wulf,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/gilthari,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/zeng,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/wt,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/aether,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/bishop,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/oculum,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/one,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/puni,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/heart,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/pawn,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/diona,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/britcup,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/flame,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/blue,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/black,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/green/dark,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/rainbow,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/metal,
/obj/item/weapon/reagent_containers/food/drinks/glass2/coffeemug/talon)
@@ -111,14 +111,14 @@
///obj/item/clamp, //VOREStation Removal: without leaks those are pointless,
/obj/item/device/radio/headset/headset_eng,
/obj/item/device/radio/headset/headset_eng/alt,
/obj/item/clothing/suit/storage/hazardvest,
/obj/item/clothing/suit/storage/hazardvest/atmos, //VOREStation edit. Eng locker gets regular haz-vest, atmos gets the themed one of their own
/obj/item/clothing/mask/gas,
/obj/item/weapon/cartridge/atmos,
/obj/item/taperoll/atmos,
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering/atmos,
/obj/item/clothing/shoes/boots/winter/atmos,
/obj/item/weapon/tank/emergency/oxygen/engi,
/obj/item/weapon/storage/belt/utility) //VOREStation Add
/obj/item/weapon/storage/belt/utility/atmostech) //VOREStation edit. They don't get a toolbox to fill it from, so why not give a spare one that's full already?
/obj/structure/closet/secure_closet/atmos_personal/Initialize()
if(prob(50))
@@ -236,7 +236,7 @@
/obj/item/clothing/accessory/badge/holo/detective,
/obj/item/clothing/gloves/black,
///obj/item/gunbox, // VOREStation Removal
/obj/item/weapon/gun/energy/stunrevolver/vintage,
/obj/item/gunbox/stun,
/obj/item/weapon/storage/belt/detective,
/obj/item/weapon/storage/box/evidence,
/obj/item/device/radio/headset/headset_sec,