mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-13 16:13:49 +01:00
Merge branch 'master' into upstream-merge-8298
This commit is contained in:
@@ -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"
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user