Merge pull request #1253 from Yawn-Wider/izac
Voreupdate [MDB IGNORE] [IDB IGNORE]
@@ -53,7 +53,7 @@ var/datum/category_collection/underwear/global_underwear = new()
|
||||
|
||||
//Backpacks
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Messenger Bag", "Sports Bag")
|
||||
var/global/list/pdachoicelist = list("Default", "Slim", "Old", "Rugged", "Holographic", "Wrist-Bound")
|
||||
var/global/list/pdachoicelist = list("Default", "Slim", "Old", "Rugged", "Holographic", "Wrist-Bound", "Slider")
|
||||
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
|
||||
|
||||
// Visual nets
|
||||
|
||||
@@ -453,6 +453,11 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
moblist.Add(M)
|
||||
for(var/mob/living/simple_mob/M in sortmob)
|
||||
moblist.Add(M)
|
||||
//VOREStation Addition Start
|
||||
for(var/mob/living/dominated_brain/M in sortmob)
|
||||
moblist.Add(M)
|
||||
//VOREStation Addition End
|
||||
|
||||
// for(var/mob/living/silicon/hivebot/M in sortmob)
|
||||
// mob_list.Add(M)
|
||||
// for(var/mob/living/silicon/hive_mainframe/M in sortmob)
|
||||
|
||||
@@ -411,12 +411,6 @@
|
||||
category = list("Arms and Ammunition")
|
||||
hidden = 1
|
||||
|
||||
/datum/category_item/autolathe/arms/pistol_clip_10mm
|
||||
name = "ammo clip (10mm)"
|
||||
path =/obj/item/ammo_magazine/clip/c10mm
|
||||
category = list("Arms and Ammunition")
|
||||
hidden = 1
|
||||
|
||||
/datum/category_item/autolathe/arms/pistol_clip_50
|
||||
name = "ammo clip (.44)"
|
||||
path =/obj/item/ammo_magazine/clip/c50
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/berrymuffin,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bunbun,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cherrypie,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/croissant,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/normal,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/jelly,
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/item/weapon/gun/projectile/sec/flash,
|
||||
/obj/item/ammo_magazine/m45/flash,
|
||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare,
|
||||
/obj/item/weapon/storage/box/flashshells
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/flash
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/secure/gear
|
||||
@@ -66,8 +66,8 @@
|
||||
/datum/supply_pack/munitions/shotgun
|
||||
name = "Weapons - Shotgun crate"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/shotgunammo,
|
||||
/obj/item/weapon/storage/box/shotgunshells,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/pellet,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/combat = 2
|
||||
)
|
||||
cost = 50
|
||||
@@ -198,8 +198,8 @@
|
||||
/datum/supply_pack/munitions/shotgunammo
|
||||
name = "Ammunition - Shotgun shells"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/box/shotgunammo = 2,
|
||||
/obj/item/weapon/storage/box/shotgunshells = 2
|
||||
/obj/item/ammo_magazine/ammo_box/b12g = 2,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/pellet = 2
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/secure/weapon
|
||||
@@ -208,7 +208,7 @@
|
||||
|
||||
/datum/supply_pack/munitions/beanbagammo
|
||||
name = "Ammunition - Beanbag shells"
|
||||
contains = list(/obj/item/weapon/storage/box/beanbags = 3)
|
||||
contains = list(/obj/item/ammo_magazine/ammo_box/b12g/beanbag = 3)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Ballistic ammunition crate"
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
/obj/item/weapon/shield/riot = 3,
|
||||
/obj/item/weapon/handcuffs = 3,
|
||||
/obj/item/weapon/storage/box/flashbangs,
|
||||
/obj/item/weapon/storage/box/beanbags,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/beanbag,
|
||||
/obj/item/weapon/storage/box/handcuffs
|
||||
)
|
||||
cost = 40
|
||||
|
||||
@@ -63,11 +63,11 @@
|
||||
|
||||
/datum/uplink_item/item/ammo/sniperammo
|
||||
name = "Anti-Materiel Rifle ammo box (14.5mm)"
|
||||
path = /obj/item/weapon/storage/box/sniperammo
|
||||
path = /obj/item/ammo_magazine/ammo_box/b145
|
||||
|
||||
/datum/uplink_item/item/ammo/sniperammo_highvel
|
||||
name = "Anti-Materiel Rifle ammo box (14.5mm sabot)"
|
||||
path = /obj/item/weapon/storage/box/sniperammo/highvel
|
||||
path = /obj/item/ammo_magazine/ammo_box/b145/highvel
|
||||
|
||||
/datum/uplink_item/item/ammo/c545
|
||||
name = "Rifle Magazine (5.45mm)"
|
||||
@@ -107,25 +107,25 @@
|
||||
|
||||
/datum/uplink_item/item/ammo/g12
|
||||
name = "12g Shotgun Ammo Box (Slug)"
|
||||
path = /obj/item/weapon/storage/box/shotgunammo
|
||||
path = /obj/item/ammo_magazine/ammo_box/b12g
|
||||
|
||||
/datum/uplink_item/item/ammo/g12/beanbag
|
||||
name = "12g Shotgun Ammo Box (Beanbag)"
|
||||
path = /obj/item/weapon/storage/box/beanbags
|
||||
path = /obj/item/ammo_magazine/ammo_box/b12g/beanbag
|
||||
item_cost = 10 // Discount due to it being LTL.
|
||||
|
||||
/datum/uplink_item/item/ammo/g12/pellet
|
||||
name = "12g Shotgun Ammo Box (Pellet)"
|
||||
path = /obj/item/weapon/storage/box/shotgunshells
|
||||
path =/obj/item/ammo_magazine/ammo_box/b12g/pellet
|
||||
|
||||
/datum/uplink_item/item/ammo/g12/stun
|
||||
name = "12g Shotgun Ammo Box (Stun)"
|
||||
path = /obj/item/weapon/storage/box/stunshells
|
||||
path = /obj/item/ammo_magazine/ammo_box/b12g/stunshell
|
||||
item_cost = 10 // Discount due to it being LTL.
|
||||
|
||||
/datum/uplink_item/item/ammo/g12/flash
|
||||
name = "12g Shotgun Ammo Box (Flash)"
|
||||
path = /obj/item/weapon/storage/box/flashshells
|
||||
path = /obj/item/ammo_magazine/ammo_box/b12g/flash
|
||||
item_cost = 10 // Discount due to it being LTL.
|
||||
|
||||
/datum/uplink_item/item/ammo/cell
|
||||
|
||||
@@ -9,8 +9,13 @@
|
||||
throw_range = 15
|
||||
throw_speed = 3
|
||||
|
||||
//matter = list(MAT_STEEL = 50,MAT_GLASS = 50)
|
||||
|
||||
//matter = list(MAT_STEEL = 50, MAT_GLASS = 50)
|
||||
|
||||
/obj/item/device/binoculars/attack_self(mob/user)
|
||||
zoom()
|
||||
|
||||
/obj/item/device/binoculars/spyglass
|
||||
name = "spyglass"
|
||||
desc = "It's a hand-held telescope, useful for star-gazing, peeping, and recon."
|
||||
icon_state = "spyglass"
|
||||
slot_flags = SLOT_BELT
|
||||
@@ -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
|
||||
)
|
||||
)
|
||||
|
||||
@@ -142,126 +142,6 @@
|
||||
/obj/item/weapon/dnainjector/m2h = 3
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/box/blanks
|
||||
name = "box of blank shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front."
|
||||
icon_state = "blankshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/blank = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/blanks/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/blank = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/beanbags
|
||||
name = "box of beanbag shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "beanshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/beanbag = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/beanbags/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/beanbag = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/shotgunammo
|
||||
name = "box of shotgun slugs"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "lethalshellshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/shotgunammo/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/shotgunshells
|
||||
name = "box of shotgun shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "lethalslug_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/pellet = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/shotgunshells/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/pellet = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/flashshells
|
||||
name = "box of illumination shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "illumshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/flash = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/flashshells/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/flash = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/stunshells
|
||||
name = "box of stun shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "stunshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/stunshell = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/stunshells/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/stunshell = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/practiceshells
|
||||
name = "box of practice shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "blankshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/practice = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/practiceshells/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/practice = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/empshells
|
||||
name = "box of emp shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front."
|
||||
icon_state = "empshot_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/emp = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/empshells/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/emp = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/flechetteshells
|
||||
name = "box of shotgun flechettes"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
icon_state = "lethalslug_box"
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/flechette = 8)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/flechetteshells/large
|
||||
starts_with = list(/obj/item/ammo_casing/a12g/flechette = 16)
|
||||
|
||||
/obj/item/weapon/storage/box/sniperammo
|
||||
name = "box of 14.5mm shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
starts_with = list(/obj/item/ammo_casing/a145 = 7)
|
||||
drop_sound = 'sound/items/drop/ammobox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/ammobox.ogg'
|
||||
|
||||
/obj/item/weapon/storage/box/sniperammo/highvel
|
||||
name = "box of 14.5mm sabot shells"
|
||||
desc = "It has a picture of a gun and several warning symbols on the front.<br>WARNING: Live ammunition. Misuse may result in serious injury or death."
|
||||
starts_with = list(/obj/item/ammo_casing/a145/highvel = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/flashbangs
|
||||
name = "box of flashbangs (WARNING)"
|
||||
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use.</B>"
|
||||
|
||||
@@ -154,10 +154,10 @@
|
||||
icon_state = "ammo"
|
||||
|
||||
/obj/random/ammo/item_to_spawn()
|
||||
return pick(prob(6);/obj/item/weapon/storage/box/beanbags,
|
||||
prob(2);/obj/item/weapon/storage/box/shotgunammo,
|
||||
prob(4);/obj/item/weapon/storage/box/shotgunshells,
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,
|
||||
return pick(prob(6);/obj/item/ammo_magazine/ammo_box/b12g/beanbag,
|
||||
prob(2);/obj/item/ammo_magazine/ammo_box/b12g,
|
||||
prob(4);/obj/item/ammo_magazine/ammo_box/b12g/pellet,
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/stunshell,
|
||||
prob(2);/obj/item/ammo_magazine/m45,
|
||||
prob(4);/obj/item/ammo_magazine/m45/rubber,
|
||||
prob(4);/obj/item/ammo_magazine/m45/flash,
|
||||
@@ -315,8 +315,8 @@
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/weapon/gun/projectile/garand,
|
||||
/obj/item/ammo_magazine/m762garand,
|
||||
/obj/item/ammo_magazine/m762garand
|
||||
/obj/item/ammo_magazine/m762enbloc,
|
||||
/obj/item/ammo_magazine/m762enbloc
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/weapon/gun/projectile/revolvingrifle,
|
||||
@@ -489,11 +489,11 @@
|
||||
),
|
||||
prob(3);list(
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/slug,
|
||||
/obj/item/weapon/storage/box/shotgunammo
|
||||
/obj/item/ammo_magazine/ammo_box/b12g
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
|
||||
/obj/item/weapon/storage/box/shotgunammo
|
||||
/obj/item/ammo_magazine/ammo_box/b12g
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -351,8 +351,8 @@
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/weapon/gun/projectile/garand,
|
||||
/obj/item/weapon/gun/projectile/garand,
|
||||
/obj/item/ammo_magazine/m762garand,
|
||||
/obj/item/ammo_magazine/m762garand,
|
||||
/obj/item/ammo_magazine/m762enbloc,
|
||||
/obj/item/ammo_magazine/m762enbloc,
|
||||
/obj/structure/closet/crate/plastic
|
||||
),
|
||||
prob(2);list(
|
||||
|
||||
@@ -854,7 +854,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"
|
||||
|
||||
@@ -96,8 +96,8 @@
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "666"
|
||||
/obj/random/ammo_all/item_to_spawn()
|
||||
return pick(prob(5);/obj/item/weapon/storage/box/shotgunammo,\
|
||||
prob(5);/obj/item/weapon/storage/box/shotgunshells,\
|
||||
return pick(prob(5);/obj/item/ammo_magazine/ammo_box/b12g,\
|
||||
prob(5);/obj/item/ammo_magazine/ammo_box/b12g/pellet,\
|
||||
prob(5);/obj/item/ammo_magazine/clip/c762,\
|
||||
prob(5);/obj/item/ammo_magazine/m380,\
|
||||
prob(5);/obj/item/ammo_magazine/m45,\
|
||||
@@ -111,24 +111,25 @@
|
||||
prob(4);/obj/item/ammo_magazine/m9mmp90,\
|
||||
prob(4);/obj/item/ammo_magazine/m10mm,\
|
||||
prob(4);/obj/item/ammo_magazine/m545/small,\
|
||||
prob(3);/obj/item/ammo_magazine/clip/c10mm,\
|
||||
prob(3);/obj/item/ammo_magazine/clip/c44,\
|
||||
prob(3);/obj/item/ammo_magazine/ammo_box/b10mm/emp,\
|
||||
prob(3);/obj/item/ammo_magazine/ammo_box/b10mm,\
|
||||
prob(3);/obj/item/ammo_magazine/s44,\
|
||||
prob(3);/obj/item/ammo_magazine/m762,\
|
||||
prob(3);/obj/item/ammo_magazine/m545,\
|
||||
prob(3);/obj/item/weapon/cell/device/weapon,\
|
||||
prob(2);/obj/item/ammo_magazine/m44,\
|
||||
prob(2);/obj/item/ammo_magazine/s357,\
|
||||
prob(2);/obj/item/ammo_magazine/m762m,\
|
||||
prob(2);/obj/item/ammo_magazine/m762/ext,\
|
||||
prob(2);/obj/item/ammo_magazine/clip/c12g,
|
||||
prob(2);/obj/item/ammo_magazine/clip/c12g/pellet,\
|
||||
prob(1);/obj/item/ammo_magazine/m45tommy,\
|
||||
/* prob(1);/obj/item/ammo_magazine/m95,\ */
|
||||
prob(1);/obj/item/ammo_casing/rocket,\
|
||||
prob(1);/obj/item/weapon/storage/box/sniperammo,\
|
||||
prob(1);/obj/item/weapon/storage/box/flashshells,\
|
||||
prob(1);/obj/item/weapon/storage/box/beanbags,\
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b145,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/flash,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/beanbag,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/stunshell,\
|
||||
prob(1);/obj/item/ammo_magazine/mtg,\
|
||||
prob(1);/obj/item/ammo_magazine/m12gdrum,\
|
||||
prob(1);/obj/item/ammo_magazine/m12gdrum/pellet,\
|
||||
|
||||
@@ -336,6 +336,7 @@
|
||||
var/persistence_id
|
||||
var/loaded = FALSE
|
||||
var/curator = "nobody! Report bug if you see this."
|
||||
var/static/list/art_appreciators = list()
|
||||
|
||||
//Presets for art gallery mapping, for paintings to be shared across stations
|
||||
/obj/structure/sign/painting/public
|
||||
@@ -406,11 +407,12 @@
|
||||
if(current_canvas)
|
||||
current_canvas.tgui_interact(user)
|
||||
. += "<span class='notice'>Use wirecutters to remove the painting.</span>"
|
||||
|
||||
. += "<span class='notice'>Paintings hung here are curated based on interest. The more often someone EXAMINEs the painting, the longer it will stay in rotation.</span>"
|
||||
// Painting loaded and persistent frame, give a hint about removal safety
|
||||
if(persistence_id)
|
||||
if(loaded)
|
||||
. += "<span class='notice'>Don't worry, the currently framed painting has already been entered into the archives and can be safely removed. It will still be used on future shifts.</span>"
|
||||
. += "<span class='warning'>Don't worry, the currently framed painting has already been entered into the archives and can be safely removed. It will still be used on future shifts.</span>"
|
||||
back_of_the_line(user)
|
||||
else
|
||||
. += "<span class='warning'>This painting has not been entered into the archives yet. Removing it will prevent that from happening.</span>"
|
||||
|
||||
@@ -554,6 +556,20 @@
|
||||
"ckey" = current_canvas.author_ckey
|
||||
))
|
||||
|
||||
/obj/structure/sign/painting/proc/back_of_the_line(mob/user)
|
||||
if(user.ckey in art_appreciators)
|
||||
return
|
||||
if(!persistence_id || !current_canvas || current_canvas.no_save)
|
||||
return
|
||||
var/data = current_canvas.get_data_string()
|
||||
var/md5 = md5(lowertext(data))
|
||||
for(var/list/entry in SSpersistence.all_paintings)
|
||||
if(entry["md5"] == md5 && entry["persistence_id"] == persistence_id)
|
||||
SSpersistence.all_paintings.Remove(list(entry))
|
||||
SSpersistence.all_paintings.Add(list(entry))
|
||||
art_appreciators += user.ckey
|
||||
to_chat(user, "<span class='notice'>Showing interest in this painting renews its position in the curator database.</span>")
|
||||
|
||||
/obj/structure/sign/painting/vv_get_dropdown()
|
||||
. = ..()
|
||||
VV_DROPDOWN_OPTION("removepainting", "Remove Persistent Painting")
|
||||
|
||||
@@ -112,14 +112,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))
|
||||
|
||||
@@ -300,8 +300,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
|
||||
uncommon_loot = list(
|
||||
/obj/item/weapon/storage/box/sinpockets,
|
||||
/obj/item/weapon/storage/box/practiceshells,
|
||||
/obj/item/weapon/storage/box/blanks,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/practice,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/blank,
|
||||
/obj/item/weapon/storage/box/smokes,
|
||||
/obj/item/weapon/storage/box/metalfoam,
|
||||
/obj/item/weapon/storage/box/handcuffs,
|
||||
@@ -311,8 +311,8 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
|
||||
rare_loot = list(
|
||||
/obj/item/weapon/storage/box/flashbangs,
|
||||
/obj/item/weapon/storage/box/empslite,
|
||||
/obj/item/weapon/storage/box/flashshells,
|
||||
/obj/item/weapon/storage/box/stunshells,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/flash,
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/stunshell,
|
||||
/obj/item/weapon/storage/box/teargas
|
||||
)
|
||||
|
||||
|
||||
@@ -554,7 +554,7 @@
|
||||
jobs += "</tr><tr align='center'>"
|
||||
counter = 0
|
||||
|
||||
jobs += "</tr></table>"
|
||||
jobs += "</tr></table>"
|
||||
|
||||
//VOREstation Edit End
|
||||
//Civilian (Grey)
|
||||
@@ -635,7 +635,7 @@
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=[entry];jobban4=\ref[M]'><font color=red>[entry]</font></a></td>"
|
||||
else
|
||||
jobs += "<td width='20%'><a href='?src=\ref[src];jobban3=[entry];jobban4=\ref[M]'>[entry]</a></td>"
|
||||
|
||||
|
||||
if(++counter >= 5) //So things dont get squiiiiished!
|
||||
jobs += "</tr><tr align='center'>"
|
||||
counter = 0
|
||||
@@ -1417,10 +1417,10 @@
|
||||
to_chat(usr, "<span class='filter_adminlog'>This can only be used on instances of type /mob/living/carbon/human</span>")
|
||||
return
|
||||
|
||||
H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookiesnack(H), slot_l_hand )
|
||||
if(!(istype(H.l_hand,/obj/item/weapon/reagent_containers/food/snacks/cookiesnack)))
|
||||
H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookiesnack(H), slot_r_hand )
|
||||
if(!(istype(H.r_hand,/obj/item/weapon/reagent_containers/food/snacks/cookiesnack)))
|
||||
H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_l_hand )
|
||||
if(!(istype(H.l_hand,/obj/item/weapon/reagent_containers/food/snacks/cookie)))
|
||||
H.equip_to_slot_or_del( new /obj/item/weapon/reagent_containers/food/snacks/cookie(H), slot_r_hand )
|
||||
if(!(istype(H.r_hand,/obj/item/weapon/reagent_containers/food/snacks/cookie)))
|
||||
log_admin("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].")
|
||||
message_admins("[key_name(H)] has their hands full, so they did not receive their cookie, spawned by [key_name(src.owner)].")
|
||||
return
|
||||
@@ -1558,7 +1558,7 @@
|
||||
var/mob/M = locate(href_list["jumpto"])
|
||||
if(!M)
|
||||
return
|
||||
|
||||
|
||||
var/turf/T = get_turf(M)
|
||||
if(isturf(T))
|
||||
usr.on_mob_jump()
|
||||
@@ -1597,16 +1597,16 @@
|
||||
var/mob/M = locate(href_list["sendmob"])
|
||||
if(!M)
|
||||
return
|
||||
|
||||
|
||||
var/list/areachoices = return_sorted_areas()
|
||||
var/choice = tgui_input_list(usr, "Pick an area:", "Send Mob", areachoices)
|
||||
if(!choice)
|
||||
return
|
||||
|
||||
|
||||
var/area/A = areachoices[choice]
|
||||
if(!A)
|
||||
return
|
||||
|
||||
|
||||
M.on_mob_jump()
|
||||
M.forceMove(pick(get_area_turfs(A)))
|
||||
var/msg = "[key_name_admin(usr)] teleported [ADMIN_LOOKUPFLW(M)]"
|
||||
|
||||
@@ -145,7 +145,6 @@
|
||||
prob(8);/obj/item/weapon/gun/projectile/automatic/c20r,\
|
||||
prob(8);/obj/item/weapon/gun/projectile/automatic/stg,\
|
||||
prob(8);/obj/item/weapon/melee/energy/sword,\
|
||||
/* prob(8);/obj/item/weapon/gun/projectile/automatic/m41a,\ */
|
||||
prob(7);/obj/item/weapon/gun/energy/captain,\
|
||||
prob(7);/obj/item/weapon/gun/energy/sniperrifle,\
|
||||
prob(7);/obj/item/weapon/gun/projectile/automatic/p90,\
|
||||
@@ -176,8 +175,8 @@
|
||||
new new_gun(C)
|
||||
if(prob(50))
|
||||
var/new_ammo = pick( // Copied from Random.dm
|
||||
prob(5);/obj/item/weapon/storage/box/shotgunammo,\
|
||||
prob(5);/obj/item/weapon/storage/box/shotgunshells,\
|
||||
prob(5);/obj/item/ammo_magazine/ammo_box/b12g,\
|
||||
prob(5);/obj/item/ammo_magazine/ammo_box/b12g/pellet,\
|
||||
prob(5);/obj/item/ammo_magazine/s357,\
|
||||
prob(5);/obj/item/ammo_magazine/clip/c762,\
|
||||
prob(5);/obj/item/ammo_magazine/m45,\
|
||||
@@ -197,12 +196,13 @@
|
||||
prob(4);/obj/item/ammo_magazine/m9mmt/rubber,\
|
||||
prob(4);/obj/item/ammo_magazine/m10mm,\
|
||||
prob(4);/obj/item/ammo_magazine/m9mmp90,\
|
||||
/* prob(4);/obj/item/ammo_magazine/m14,\
|
||||
prob(4);/obj/item/ammo_magazine/m14/large,\*/
|
||||
prob(4);/obj/item/ammo_magazine/m545/ext,
|
||||
prob(4);/obj/item/ammo_magazine/m762,\
|
||||
prob(4);/obj/item/ammo_magazine/ammo_box/b762/surplus/hunter,\
|
||||
prob(4);/obj/item/ammo_magazine/ammo_box/b762/surplus,\
|
||||
prob(4);/obj/item/ammo_magazine/m545/ext,\
|
||||
prob(3);/obj/item/ammo_magazine/clip/c10mm,\
|
||||
prob(3);/obj/item/ammo_magazine/ammo_box/b10mm/emp,\
|
||||
prob(3);/obj/item/ammo_magazine/ammo_box/b10mm,\
|
||||
prob(3);/obj/item/ammo_magazine/clip/c44,\
|
||||
prob(3);/obj/item/ammo_magazine/m545,\
|
||||
prob(2);/obj/item/ammo_magazine/m44,\
|
||||
@@ -210,12 +210,12 @@
|
||||
prob(1);/obj/item/weapon/storage/box/frags,\
|
||||
/* prob(1);/obj/item/ammo_magazine/m95,\ */
|
||||
prob(1);/obj/item/ammo_casing/rocket,\
|
||||
prob(1);/obj/item/weapon/storage/box/sniperammo,\
|
||||
prob(1);/obj/item/weapon/storage/box/flashshells,\
|
||||
prob(1);/obj/item/weapon/storage/box/beanbags,\
|
||||
prob(1);/obj/item/weapon/storage/box/practiceshells,\
|
||||
prob(1);/obj/item/weapon/storage/box/stunshells,\
|
||||
prob(1);/obj/item/weapon/storage/box/blanks,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b145,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/flash,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/beanbag,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/practice,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/stunshell,\
|
||||
prob(1);/obj/item/ammo_magazine/ammo_box/b12g/blank,\
|
||||
prob(1);/obj/item/ammo_magazine/mtg,\
|
||||
prob(1);/obj/item/ammo_magazine/m45tommydrum,\
|
||||
prob(1);/obj/item/ammo_magazine/m45tommy)
|
||||
@@ -267,7 +267,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/dry_ramen, \
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candiedapple, \
|
||||
/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/item/weapon/reagent_containers/food/snacks/meatball, \
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plump_pie, \
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood)
|
||||
@@ -286,7 +286,7 @@
|
||||
else if(prob(50))
|
||||
if(live_cargo) // Something else very much alive and angry.
|
||||
var/spawn_type = pick(/mob/living/simple_mob/animal/space/alien, /mob/living/simple_mob/animal/space/alien/drone, /mob/living/simple_mob/animal/space/alien/sentinel)
|
||||
new spawn_type(C)
|
||||
new spawn_type(C)
|
||||
else // Just a costume.
|
||||
new /obj/item/clothing/head/xenos(C)
|
||||
new /obj/item/clothing/suit/xenos(C)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
pref.backbag = 2 //Same as above
|
||||
character.backbag = pref.backbag
|
||||
|
||||
if(pref.pdachoice > 6 || pref.pdachoice < 1)
|
||||
if(pref.pdachoice > 7 || pref.pdachoice < 1)
|
||||
pref.pdachoice = 1
|
||||
character.pdachoice = pref.pdachoice
|
||||
|
||||
@@ -156,4 +156,4 @@
|
||||
return TOPIC_REFRESH //End of YW EDIT
|
||||
|
||||
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
display_name = "Glasses, hipster"
|
||||
path = /obj/item/clothing/glasses/regular/hipster
|
||||
|
||||
/datum/gear/eyes/glasses/threedglasses
|
||||
display_name = "Glasses, 3D"
|
||||
path = /obj/item/clothing/glasses/threedglasses
|
||||
|
||||
/datum/gear/eyes/glasses/monocle
|
||||
display_name = "monocle"
|
||||
path = /obj/item/clothing/glasses/monocle
|
||||
|
||||
@@ -13,6 +13,18 @@
|
||||
display_name = "tourist, green"
|
||||
path = /obj/item/clothing/shoes/tourist_2
|
||||
|
||||
/datum/gear/shoes/sneakerspurple
|
||||
display_name = "sneakers, purple"
|
||||
path = /obj/item/clothing/shoes/sneakerspurple
|
||||
|
||||
/datum/gear/shoes/sneakersblue
|
||||
display_name = "sneakers, blue"
|
||||
path = /obj/item/clothing/shoes/sneakersblue
|
||||
|
||||
/datum/gear/shoes/sneakersred
|
||||
display_name = "sneakers, red"
|
||||
path = /obj/item/clothing/shoes/sneakersred
|
||||
|
||||
/datum/gear/shoes/jackboots
|
||||
display_name = "jackboots"
|
||||
path = /obj/item/clothing/shoes/boots/jackboots
|
||||
|
||||
@@ -199,6 +199,18 @@
|
||||
path = /obj/item/clothing/suit/cyberpunk
|
||||
cost = 2
|
||||
|
||||
/datum/gear/suit/puffycoat/blue
|
||||
display_name = "puffy coat, blue"
|
||||
path = /obj/item/clothing/suit/storage/puffyblue
|
||||
|
||||
/datum/gear/suit/puffycoat/red
|
||||
display_name = "puffy coat, red"
|
||||
path = /obj/item/clothing/suit/storage/puffyred
|
||||
|
||||
/datum/gear/suit/puffycoat/purple
|
||||
display_name = "puffy coat, purple"
|
||||
path = /obj/item/clothing/suit/storage/puffypurple
|
||||
|
||||
/datum/gear/suit/poncho
|
||||
display_name = "poncho selection"
|
||||
path = /obj/item/clothing/accessory/poncho
|
||||
@@ -228,7 +240,6 @@
|
||||
)
|
||||
gear_tweaks += new/datum/gear_tweak/path(ponchos)
|
||||
|
||||
|
||||
/datum/gear/suit/roles/cloak
|
||||
display_name = "cloak selection, departments"
|
||||
path = /obj/item/clothing/accessory/poncho/roles/cloak/cargo
|
||||
|
||||
@@ -119,3 +119,8 @@ Talon winter coat
|
||||
display_name = "knight, Field Medic"
|
||||
path = /obj/item/clothing/suit/armor/combat/crusader_explo/FM
|
||||
allowed_roles = list ("Field Medic")
|
||||
|
||||
//Atmos-coloured hazard vest
|
||||
display_name = "hazard vest, atmospherics"
|
||||
path = /obj/item/clothing/suit/storage/hazardvest/atmos
|
||||
allowed_roles = list("Chief Engineer","Atmospheric Technician", "Engineer")
|
||||
|
||||
@@ -699,6 +699,26 @@
|
||||
display_name = "heavy utility, galactic survey"
|
||||
path = /obj/item/clothing/under/gsa_work
|
||||
|
||||
/*
|
||||
* 80s
|
||||
*/
|
||||
|
||||
/datum/gear/uniform/tropical_outfit/black
|
||||
display_name = "tropical outfit, animal style"
|
||||
path = /obj/item/clothing/under/tropical
|
||||
|
||||
/datum/gear/uniform/tropical_outfit/green
|
||||
display_name = "tropical outfit, tropico-puke"
|
||||
path = /obj/item/clothing/under/tropical/green
|
||||
|
||||
/datum/gear/uniform/tropical_outfit/pink
|
||||
display_name = "tropical outfit, 3005 vintage"
|
||||
path = /obj/item/clothing/under/tropical/pink
|
||||
|
||||
/datum/gear/uniform/tropical_outfit/blue
|
||||
display_name = "tropical outfit, miami vice"
|
||||
path = /obj/item/clothing/under/tropical/blue
|
||||
|
||||
/*
|
||||
* Branded Uniforms
|
||||
*/
|
||||
|
||||
@@ -237,3 +237,31 @@ Talon jumpsuit
|
||||
"red and white" = /obj/item/clothing/under/summerdress/red
|
||||
)
|
||||
gear_tweaks += new/datum/gear_tweak/path(dresses)
|
||||
|
||||
// undersuits
|
||||
/datum/gear/uniform/undersuit
|
||||
display_name = "undersuit selection"
|
||||
path = /obj/item/clothing/under/undersuit
|
||||
|
||||
/datum/gear/uniform/undersuit/New()
|
||||
..()
|
||||
var/list/suits = list()
|
||||
var/list/blacklisted_types = list(/obj/item/clothing/under/undersuit/sec, /obj/item/clothing/under/undersuit/sec/hos, /obj/item/clothing/under/undersuit/hazard, /obj/item/clothing/under/undersuit/command, /obj/item/clothing/under/undersuit/centcom)
|
||||
for(var/obj/item/clothing/under/undersuit/undersuit_type as anything in typesof(/obj/item/clothing/under/undersuit) - blacklisted_types)
|
||||
suits[initial(undersuit_type.name)] = undersuit_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(suits))
|
||||
|
||||
/datum/gear/uniform/undersuit_sec
|
||||
display_name = "undersuit, security (Security)"
|
||||
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer")
|
||||
path = /obj/item/clothing/under/undersuit/sec
|
||||
|
||||
/datum/gear/uniform/undersuit_hos
|
||||
display_name = "undersuit, security command (HoS)"
|
||||
allowed_roles = list("Head of Security")
|
||||
path = /obj/item/clothing/under/undersuit/sec/hos
|
||||
|
||||
/datum/gear/uniform/undersuit_com
|
||||
display_name = "undersuit, command (SM/HoP)"
|
||||
allowed_roles = list("Site Manager", "Head of Personnel")
|
||||
path = /obj/item/clothing/under/undersuit/command
|
||||
@@ -232,6 +232,8 @@
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/melee/cursedblade
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/circuitboard/mecha/imperion
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/paicard
|
||||
persist_storable = FALSE
|
||||
/obj/item/organ
|
||||
|
||||
@@ -233,4 +233,26 @@
|
||||
icon_state = "rag"
|
||||
force = 0
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
pickup_sound = 'sound/items/pickup/clothing.ogg'
|
||||
pickup_sound = 'sound/items/pickup/clothing.ogg'
|
||||
|
||||
/*
|
||||
* 80s
|
||||
*/
|
||||
|
||||
/obj/item/clothing/shoes/sneakerspurple
|
||||
name = "purple sneakers"
|
||||
desc = "A stylish, expensive pair of purple sneakers."
|
||||
icon_state = "sneakerspurple"
|
||||
item_state = "sneakerspurple"
|
||||
|
||||
/obj/item/clothing/shoes/sneakersblue
|
||||
name = "blue sneakers"
|
||||
desc = "A stylish, expensive pair of blue sneakers."
|
||||
icon_state = "sneakersblue"
|
||||
item_state = "sneakersblue"
|
||||
|
||||
/obj/item/clothing/shoes/sneakersred
|
||||
name = "red sneakers"
|
||||
desc = "A stylish, expensive pair of red sneakers."
|
||||
icon_state = "sneakersred"
|
||||
item_state = "sneakersred"
|
||||
@@ -173,7 +173,7 @@
|
||||
blood_overlay_type = "armor"
|
||||
allowed = list (/obj/item/device/analyzer, /obj/item/device/flashlight, /obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner,
|
||||
/obj/item/weapon/tool/crowbar, /obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/weapon/tank/emergency/oxygen,
|
||||
/obj/item/clothing/mask/gas, /obj/item/taperoll/engineering)
|
||||
/obj/item/clothing/mask/gas, /obj/item/taperoll/engineering, /obj/item/taperoll/atmos, /obj/item/device/analyzer, /obj/item/weapon/extinguisher/mini) //VOREStation edit. Few more tools that can be put on vests
|
||||
body_parts_covered = UPPER_TORSO
|
||||
|
||||
/obj/item/clothing/suit/storage/hazardvest/blue
|
||||
@@ -259,4 +259,4 @@
|
||||
|
||||
/obj/item/clothing/suit/suspenders/grey
|
||||
name = "grey suspenders"
|
||||
icon_state = "suspenders_grey"
|
||||
icon_state = "suspenders_grey"
|
||||
|
||||
@@ -15,4 +15,17 @@
|
||||
icon = 'icons/inventory/suit/item_vr.dmi'
|
||||
default_worn_icon = 'icons/inventory/suit/mob_vr.dmi'
|
||||
icon_state = "qm_coat"
|
||||
|
||||
|
||||
//Atmos-coloured hazard vest
|
||||
/obj/item/clothing/suit/storage/hazardvest/atmos
|
||||
name = "light blue hazard vest"
|
||||
desc = "A high-visibility vest used in work zones. This one is in the colors of atmospherics!"
|
||||
|
||||
icon = 'icons/inventory/suit/item_vr.dmi'
|
||||
default_worn_icon = 'icons/inventory/suit/mob_vr.dmi'
|
||||
icon_state = "hazard_a"
|
||||
item_state = "hazard_a"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_vr.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_vr.dmi',
|
||||
)
|
||||
|
||||
@@ -42,6 +42,46 @@
|
||||
desc = "Repilca rmor commonly worn by Dominion Of Mu'tu'bi soldiers from the hit series Spacer Trail. Modified for Laser Tag (Red Team)."
|
||||
icon_state = "redtag2"
|
||||
|
||||
/*
|
||||
* 80s
|
||||
*/
|
||||
|
||||
/obj/item/clothing/suit/storage/puffyblue
|
||||
name = "blue puffy coat"
|
||||
desc = "A stylish, shiny, very blue puffer coat."
|
||||
icon_state = "puffycoatblue"
|
||||
item_state = "puffycoatblue"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.7
|
||||
item_state_slots = list(slot_r_hand_str = "blue_labcoat", slot_l_hand_str = "blue_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/puffypurple
|
||||
name = "purple puffy coat"
|
||||
desc = "A stylish, shiny, very purple puffer coat."
|
||||
icon_state = "puffycoatpurple"
|
||||
item_state = "puffycoatpurple"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.7
|
||||
item_state_slots = list(slot_r_hand_str = "purple_labcoat", slot_l_hand_str = "purple_labcoat")
|
||||
|
||||
/obj/item/clothing/suit/storage/puffyred
|
||||
name = "crimson puffy coat"
|
||||
desc = "A stylish, shiny, very crimson puffer coat."
|
||||
icon_state = "puffycoatred"
|
||||
item_state = "puffycoatred"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
siemens_coefficient = 0.7
|
||||
item_state_slots = list(slot_r_hand_str = "red_labcoat", slot_l_hand_str = "red_labcoat")
|
||||
|
||||
/*
|
||||
* Costume
|
||||
*/
|
||||
|
||||
@@ -103,6 +103,44 @@
|
||||
prob(2);/obj/item/clothing/accessory/hawaiian/yellow
|
||||
)
|
||||
|
||||
/*
|
||||
* 80s
|
||||
*/
|
||||
|
||||
/obj/item/clothing/accessory/tropical
|
||||
name = "black tropical shirt"
|
||||
desc = "A classic themed neosilk tropical shirt. This one makes you feel like an animal."
|
||||
icon_state = "animalstyle"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
slot_flags = SLOT_OCLOTHING | SLOT_TIE
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
siemens_coefficient = 0.9
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
slot = ACCESSORY_SLOT_OVER
|
||||
|
||||
/obj/item/clothing/accessory/tropical/green
|
||||
name = "puke-green tropical shirt"
|
||||
desc = "A classic themed neosilk tropical shirt. This one makes you look like puke."
|
||||
icon_state = "tropicopuke"
|
||||
|
||||
/obj/item/clothing/accessory/tropical/pink
|
||||
name = "pink tropical shirt"
|
||||
desc = "A classic themed neosilk tropical shirt. This one makes you feel nostalgic."
|
||||
icon_state = "3005vintage"
|
||||
|
||||
/obj/item/clothing/accessory/tropical/blue
|
||||
name = "blue tropical shirt"
|
||||
desc = "A classic themed neosilk tropical shirt. This one makes you feel out of touch."
|
||||
icon_state = "miamivice"
|
||||
|
||||
/obj/item/clothing/accessory/tropical_random/New()
|
||||
return pick(
|
||||
prob(2);/obj/item/clothing/accessory/tropical,
|
||||
prob(2);/obj/item/clothing/accessory/tropical/green,
|
||||
prob(2);/obj/item/clothing/accessory/tropical/pink,
|
||||
prob(2);/obj/item/clothing/accessory/tropical/blue
|
||||
)
|
||||
|
||||
/*
|
||||
* Chaps
|
||||
*/
|
||||
|
||||
@@ -1270,6 +1270,38 @@
|
||||
icon_state = "curator"
|
||||
worn_state = "curator"
|
||||
|
||||
/*
|
||||
* 80s
|
||||
*/
|
||||
|
||||
/obj/item/clothing/under/tropical
|
||||
name = "black tropical oufit"
|
||||
desc = "A classic themed outfit. This one makes you feel like an animal."
|
||||
icon_state = "animalstyle"
|
||||
worn_state = "animalstyle"
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tropical)
|
||||
|
||||
/obj/item/clothing/under/tropical/green
|
||||
name = "puke-green tropical oufit"
|
||||
desc = "A classic themed outfit. This one makes you look like puke."
|
||||
icon_state = "tropicopuke"
|
||||
worn_state = "tropicopuke"
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tropical/green)
|
||||
|
||||
/obj/item/clothing/under/tropical/pink
|
||||
name = "pink tropical oufit"
|
||||
desc = "A classic themed outfit. This one makes you feel nostalgic."
|
||||
icon_state = "3005vintage"
|
||||
worn_state = "3005vintage"
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tropical/pink)
|
||||
|
||||
/obj/item/clothing/under/tropical/blue
|
||||
name = "pink tropical oufit"
|
||||
desc = "A classic themed outfit. This one makes you feel out of touch."
|
||||
icon_state = "miamivice"
|
||||
worn_state = "miamivice"
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tropical/blue)
|
||||
|
||||
/*
|
||||
* Modern
|
||||
*/
|
||||
|
||||
@@ -308,4 +308,72 @@
|
||||
item_state = "lewdcap"
|
||||
rolled_sleeves = -1
|
||||
rolled_down = -1
|
||||
body_parts_covered = UPPER_TORSO // frankly this thing's a fucking embarassment
|
||||
body_parts_covered = UPPER_TORSO // frankly this thing's a fucking embarassment
|
||||
|
||||
/obj/item/clothing/under/undersuit // undersuits! intended for wearing under hardsuits or for being too lazy to not wear anything other than it
|
||||
name = "undersuit"
|
||||
desc = "A nondescript undersuit, intended for wearing under a voidsuit or other EVA equipment. Breathable, yet sleek."
|
||||
icon = 'icons/inventory/uniform/item_vr.dmi'
|
||||
default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi'
|
||||
rolled_down_icon = 'icons/inventory/uniform/mob_vr_rolled_down.dmi'
|
||||
icon_state = "bodysuit"
|
||||
item_state = "bodysuit"
|
||||
rolled_sleeves = -1
|
||||
rolled_down_icon_override = FALSE
|
||||
|
||||
/obj/item/clothing/under/undersuit/eva
|
||||
name = "EVA undersuit"
|
||||
desc = "A nondescript undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for EVA usage, but differs little from the standard."
|
||||
icon_state = "bodysuit_eva"
|
||||
item_state = "bodysuit_eva"
|
||||
|
||||
/obj/item/clothing/under/undersuit/command
|
||||
name = "command undersuit"
|
||||
desc = "A fancy undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for those in Command, and comes with a swanky gold trim and navy blue inlay."
|
||||
icon_state = "bodysuit_com"
|
||||
item_state = "bodysuit_com"
|
||||
|
||||
/obj/item/clothing/under/undersuit/sec
|
||||
name = "security undersuit"
|
||||
desc = "A reinforced undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for those in Security, and has slight protective capabilities against simple melee attacks."
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
icon_state = "bodysuit_sec"
|
||||
item_state = "bodysuit_sec"
|
||||
|
||||
/obj/item/clothing/under/undersuit/sec/hos
|
||||
name = "security command undersuit"
|
||||
desc = "A reinforced undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for the Head of Security or equivalent, and has slight protective capabilities against simple melee attacks."
|
||||
icon_state = "bodysuit_seccom"
|
||||
item_state = "bodysuit_seccom"
|
||||
|
||||
/obj/item/clothing/under/undersuit/hazard
|
||||
name = "hazard undersuit"
|
||||
desc = "An undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for Engineering crew, and comes with slight radiation absorption capabilities. Not a lot, but it's there."
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
|
||||
icon_state = "bodysuit_haz"
|
||||
item_state = "bodysuit_haz"
|
||||
|
||||
/obj/item/clothing/under/undersuit/mining
|
||||
name = "mining undersuit"
|
||||
desc = "An undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for Mining crew, and comes with an interestingly colored trim."
|
||||
icon_state = "bodysuit_min"
|
||||
item_state = "bodysuit_min"
|
||||
|
||||
/obj/item/clothing/under/undersuit/emt
|
||||
name = "medical technician undersuit"
|
||||
desc = "An undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for Medical response crew, and comes with a distinctive coloring scheme."
|
||||
icon_state = "bodysuit_emt"
|
||||
item_state = "bodysuit_emt"
|
||||
|
||||
/obj/item/clothing/under/undersuit/explo
|
||||
name = "exploration undersuit"
|
||||
desc = "An undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for Exploration crew, for hazardous environments."
|
||||
icon_state = "bodysuit_exp"
|
||||
item_state = "bodysuit_exp"
|
||||
|
||||
/obj/item/clothing/under/undersuit/centcom
|
||||
name = "Central Command undersuit"
|
||||
desc = "A very descript undersuit, intended for wearing under a voidsuit or other EVA equipment. This one is specifically made for NanoTrasen Central Command officers, and comes with a swanky gold trim and other fancy markings."
|
||||
icon_state = "bodysuit_cent"
|
||||
item_state = "bodysuit_cent"
|
||||
@@ -615,7 +615,7 @@
|
||||
|
||||
// Cookies and Candies //
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
price_tag = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/peanutcake = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sliceable/brownies = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece = 20
|
||||
@@ -415,7 +415,10 @@
|
||||
/obj/item/clothing/shoes/boots/workboots/toeless = 5,
|
||||
/obj/item/clothing/shoes/boots/winter = 5,
|
||||
/obj/item/clothing/shoes/boots/workboots = 5,
|
||||
/obj/item/clothing/shoes/footwraps = 5)
|
||||
/obj/item/clothing/shoes/footwraps = 5,
|
||||
/obj/item/clothing/shoes/sneakerspurple = 5,
|
||||
/obj/item/clothing/shoes/sneakersblue = 5,
|
||||
/obj/item/clothing/shoes/sneakersred = 5)
|
||||
prices = list(/obj/item/clothing/gloves/evening = 50,
|
||||
/obj/item/clothing/gloves/fingerless = 50,
|
||||
/obj/item/clothing/gloves/black = 50,
|
||||
@@ -473,7 +476,10 @@
|
||||
/obj/item/clothing/shoes/boots/workboots/toeless = 50,
|
||||
/obj/item/clothing/shoes/boots/winter = 50,
|
||||
/obj/item/clothing/shoes/boots/workboots = 50,
|
||||
/obj/item/clothing/shoes/footwraps = 50)
|
||||
/obj/item/clothing/shoes/footwraps = 50,
|
||||
/obj/item/clothing/shoes/sneakerspurple = 50,
|
||||
/obj/item/clothing/shoes/sneakersblue = 50,
|
||||
/obj/item/clothing/shoes/sneakersred = 50)
|
||||
premium = list(/obj/item/clothing/gloves/rainbow = 1,
|
||||
/obj/item/clothing/shoes/rainbow = 1,)
|
||||
contraband = list(/obj/item/clothing/shoes/syndigaloshes = 1,
|
||||
@@ -539,6 +545,10 @@
|
||||
/obj/item/clothing/accessory/hawaiian/pink = 5,
|
||||
/obj/item/clothing/accessory/hawaiian/red = 5,
|
||||
/obj/item/clothing/accessory/hawaiian/yellow = 5,
|
||||
/obj/item/clothing/accessory/tropical = 5,
|
||||
/obj/item/clothing/accessory/tropical/green = 5,
|
||||
/obj/item/clothing/accessory/tropical/pink = 5,
|
||||
/obj/item/clothing/accessory/tropical/blue = 5,
|
||||
/obj/item/clothing/accessory/locket = 5,
|
||||
/obj/item/weapon/storage/backpack/purse = 1,
|
||||
/obj/item/clothing/accessory/sash = 5,
|
||||
@@ -652,6 +662,10 @@
|
||||
/obj/item/clothing/accessory/hawaiian/pink = 50,
|
||||
/obj/item/clothing/accessory/hawaiian/red = 50,
|
||||
/obj/item/clothing/accessory/hawaiian/yellow = 50,
|
||||
/obj/item/clothing/accessory/tropical = 50,
|
||||
/obj/item/clothing/accessory/tropical/green = 50,
|
||||
/obj/item/clothing/accessory/tropical/pink = 50,
|
||||
/obj/item/clothing/accessory/tropical/blue = 50,
|
||||
/obj/item/clothing/accessory/locket = 50,
|
||||
/obj/item/weapon/storage/backpack/purse = 50,
|
||||
/obj/item/clothing/accessory/sash = 50,
|
||||
@@ -918,7 +932,11 @@
|
||||
/obj/item/clothing/under/wedding/bride_white = 5,
|
||||
/obj/item/weapon/storage/backpack/ = 5,
|
||||
/obj/item/weapon/storage/backpack/messenger = 5,
|
||||
/obj/item/weapon/storage/backpack/satchel = 5)
|
||||
/obj/item/weapon/storage/backpack/satchel = 5,
|
||||
/obj/item/clothing/under/tropical = 5,
|
||||
/obj/item/clothing/under/tropical/green = 5,
|
||||
/obj/item/clothing/under/tropical/pink = 5,
|
||||
/obj/item/clothing/under/tropical/blue = 5)
|
||||
prices = list(/obj/item/clothing/under/bathrobe = 50,
|
||||
/obj/item/clothing/under/dress/black_corset = 50,
|
||||
/obj/item/clothing/under/blazer = 50,
|
||||
@@ -1089,7 +1107,11 @@
|
||||
/obj/item/clothing/under/wedding/bride_white = 50,
|
||||
/obj/item/weapon/storage/backpack/ = 50,
|
||||
/obj/item/weapon/storage/backpack/messenger = 50,
|
||||
/obj/item/weapon/storage/backpack/satchel = 50)
|
||||
/obj/item/weapon/storage/backpack/satchel = 50,
|
||||
/obj/item/clothing/under/tropical = 50,
|
||||
/obj/item/clothing/under/tropical/green = 50,
|
||||
/obj/item/clothing/under/tropical/pink = 50,
|
||||
/obj/item/clothing/under/tropical/blue = 50)
|
||||
premium = list(/obj/item/clothing/under/color/rainbow = 1)
|
||||
contraband = list(/obj/item/clothing/under/rank/clown = 1)
|
||||
|
||||
@@ -1217,7 +1239,10 @@
|
||||
/obj/item/clothing/suit/varsity/brown = 5,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat = 5,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/aformal = 5,
|
||||
/obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 5)
|
||||
/obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 5,
|
||||
/obj/item/clothing/suit/storage/puffyred = 5,
|
||||
/obj/item/clothing/suit/storage/puffypurple = 5,
|
||||
/obj/item/clothing/suit/storage/puffyblue = 5)
|
||||
prices = list(/obj/item/clothing/suit/storage/apron = 100,
|
||||
/obj/item/clothing/suit/storage/flannel/aqua = 100,
|
||||
/obj/item/clothing/suit/storage/toggle/bomber = 100,
|
||||
@@ -1306,7 +1331,10 @@
|
||||
/obj/item/clothing/suit/varsity/brown = 100,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat = 100,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/aformal = 100,
|
||||
/obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 100)
|
||||
/obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 100,
|
||||
/obj/item/clothing/suit/storage/puffyred = 100,
|
||||
/obj/item/clothing/suit/storage/puffypurple = 100,
|
||||
/obj/item/clothing/suit/storage/puffyblue = 100)
|
||||
premium = list(/obj/item/clothing/suit/imperium_monk = 3,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/cosmic = 1)
|
||||
contraband = list(/obj/item/toy/katana = 1)
|
||||
@@ -2516,6 +2544,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/clownstears = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/coldchili = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/corn_dog = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cosmicbrowniesslice = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cosmicbrowniesslice/filled = 10,
|
||||
@@ -3000,6 +3029,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/clownstears = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/coldchili = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookiesnack = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/corn_dog = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cosmicbrowniesslice = 10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cosmicbrowniesslice/filled = 10,
|
||||
|
||||
@@ -9,9 +9,10 @@
|
||||
var/one_shot = 0 // If true, then the event will not be re-added to the list of available events
|
||||
var/add_to_queue= 1 // If true, add back to the queue of events upon finishing.
|
||||
var/list/role_weights = list()
|
||||
var/list/min_job_count = list()
|
||||
var/datum/event/event_type
|
||||
|
||||
/datum/event_meta/New(var/event_severity, var/event_name, var/datum/event/type, var/event_weight, var/list/job_weights, var/is_one_shot = 0, var/min_event_weight = 0, var/max_event_weight = 0, var/add_to_queue = 1)
|
||||
/datum/event_meta/New(var/event_severity, var/event_name, var/datum/event/type, var/event_weight, var/list/job_weights, var/is_one_shot = 0, var/min_event_weight = 0, var/max_event_weight = 0, var/add_to_queue = 1, var/list/min_jobs)
|
||||
name = event_name
|
||||
severity = event_severity
|
||||
event_type = type
|
||||
@@ -22,6 +23,9 @@
|
||||
src.add_to_queue = add_to_queue
|
||||
if(job_weights)
|
||||
role_weights = job_weights
|
||||
if(min_jobs)
|
||||
min_job_count = min_jobs
|
||||
|
||||
|
||||
/datum/event_meta/proc/get_weight(var/list/active_with_role)
|
||||
if(!enabled)
|
||||
@@ -40,6 +44,16 @@
|
||||
|
||||
return total_weight
|
||||
|
||||
/datum/event_meta/proc/minimum_active(var/list/active_with_role)
|
||||
var/can_fire = TRUE
|
||||
for(var/role in min_job_count)
|
||||
if(role in active_with_role)
|
||||
if(active_with_role[role] < min_job_count[role])
|
||||
can_fire = FALSE
|
||||
break
|
||||
|
||||
return can_fire
|
||||
|
||||
/datum/event_meta/no_overmap/get_weight() //these events have overmap equivalents, and shouldn't fire randomly if overmap is used
|
||||
return global.using_map.use_overmap ? 0 : ..()
|
||||
|
||||
|
||||
@@ -78,6 +78,9 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
|
||||
if(!EM.enabled)
|
||||
return 0
|
||||
|
||||
if(!(EM.minimum_active(active_with_role)))
|
||||
return 0
|
||||
|
||||
var/weight = EM.get_weight(active_with_role)
|
||||
var/last_time = last_event_time[EM]
|
||||
if(last_time)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define ASSIGNMENT_AI "AI"
|
||||
#define ASSIGNMENT_CYBORG "Cyborg"
|
||||
#define ASSIGNMENT_ENGINEER "Engineer"
|
||||
#define ASSIGNMENT_GARDENER "Gardener"
|
||||
#define ASSIGNMENT_GARDENER "Botanist"
|
||||
#define ASSIGNMENT_JANITOR "Janitor"
|
||||
#define ASSIGNMENT_MEDICAL "Medical"
|
||||
#define ASSIGNMENT_SCIENTIST "Scientist"
|
||||
@@ -30,11 +30,11 @@
|
||||
// Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 400),
|
||||
// Bluescreens APCs, but they still work
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence, 0, list(ASSIGNMENT_ENGINEER = 10), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence, 0, list(ASSIGNMENT_ENGINEER = 10), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
|
||||
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Spiders", /datum/event/spider_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1), //YW EDIT
|
||||
@@ -65,26 +65,26 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Lost Spiders", /datum/event/spider_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1), //YW EDIT
|
||||
// Just disables comms for a short while.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 100, ASSIGNMENT_SECURITY = 50), 1),
|
||||
// Just blows out a few lights
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 70, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150), 1),
|
||||
// This one is just too fun.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60), 1),
|
||||
// Temporary power failure, but mitigatead by subgrids
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_ENGINEER = 25), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
// Pure RP fun, no mechanical effects.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5), min_jobs = list(ASSIGNMENT_AI = 1)),
|
||||
// Opens doors in brig. So just RP fun
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 10, list(ASSIGNMENT_SECURITY = 100), 1),
|
||||
// Radiation, but only in space.
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_ENGINEER = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_ENGINEER = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
//Evil grubs that drain station power slightly
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1, ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(ASSIGNMENT_SCIENTIST = 40), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), //YW EDIT, Readded
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 1), // YW EDIT single shot
|
||||
@@ -110,7 +110,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), //YW EDIT
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 7, ASSIGNMENT_GARDENER = 2), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Virus Outbreak", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 30), 2), //yw addition (Trial run)
|
||||
|
||||
@@ -186,7 +186,7 @@ var/list/event_last_fired = list()
|
||||
active_with_role["AI"] = 0
|
||||
active_with_role["Cyborg"] = 0
|
||||
active_with_role["Janitor"] = 0
|
||||
active_with_role["Gardener"] = 0
|
||||
active_with_role["Botanist"] = 0
|
||||
|
||||
for(var/mob/M in player_list)
|
||||
if(!M.mind || !M.client || M.client.is_afk(10 MINUTES)) // longer than 10 minutes AFK counts them as inactive
|
||||
@@ -227,7 +227,7 @@ var/list/event_last_fired = list()
|
||||
if(M.mind.assigned_role == "Janitor")
|
||||
active_with_role["Janitor"]++
|
||||
|
||||
if(M.mind.assigned_role == "Gardener")
|
||||
active_with_role["Gardener"]++
|
||||
if(M.mind.assigned_role == "Botanist")
|
||||
active_with_role["Botanist"]++
|
||||
|
||||
return active_with_role
|
||||
|
||||
@@ -6,10 +6,25 @@ var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/sna
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/pineappleslice/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bagelplain,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bagelsunflower,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bagelcheese,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bagelraisin,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/bagelpoppy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/croissant,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/corn_dog,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidvitamin,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rosesalad,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledegg,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/locust_cooked,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/spicedmeatbun,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/quicheslice/filled,
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/glucose)
|
||||
|
||||
var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snacks/donut/plain/jelly,
|
||||
@@ -39,19 +54,50 @@ var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snac
|
||||
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/applecake/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/keylimepieslice/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/browniesslice/filled,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mint/admints,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/roastedpeanuts,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/eggroll,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fruitsalad,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeybun,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/custardbun,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeytoast,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fruitbar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/semki,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/salo,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/weebonuts,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ricecake,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/packaged/lunacake,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/packaged/darklunacake,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/packaged/mochicake,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/packaged/spacetwinkie
|
||||
)
|
||||
|
||||
var/list/lunchables_drinks_ = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/decaf_cola,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb_diet,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/starkist,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/starkistdecaf,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/space_up,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_lime,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/iced_tea,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/grape_juice,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/tonic,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/root_beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/sarsaparilla,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/straw_cola,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/apple_cola,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/lemon_cola
|
||||
)
|
||||
|
||||
// This default list is a bit different, it contains items we don't want
|
||||
var/list/lunchables_drink_reagents_ = list(/datum/reagent/drink/nothing,
|
||||
|
||||
@@ -1594,16 +1594,6 @@
|
||||
nutriment_desc = list("noodles" = 2)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
|
||||
name = "Fortune cookie"
|
||||
desc = "A true prophecy in each cookie!"
|
||||
icon_state = "fortune_cookie"
|
||||
filling_color = "#E8E79E"
|
||||
center_of_mass = list("x"=15, "y"=14)
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list("fortune cookie" = 2)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/badrecipe
|
||||
name = "Burned mess"
|
||||
desc = "Someone should be demoted from chef for this."
|
||||
@@ -2163,14 +2153,6 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("slimejelly", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mint
|
||||
name = "mint"
|
||||
desc = "it is only wafer thin."
|
||||
icon_state = "mint"
|
||||
filling_color = "#F2F2F2"
|
||||
center_of_mass = list("x"=16, "y"=14)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit
|
||||
name = "plump helmet biscuit"
|
||||
desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour."
|
||||
@@ -4109,7 +4091,7 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein
|
||||
name = "\improper LiquidProtein Ration"
|
||||
desc = "A variant of the liquidfood ration, designed for obligate carnivore species. Only barely more appealing than regular liquidfood. Should this be crunchy?"
|
||||
desc = "A variant of the liquidfood ration, designed for more carnivorous species. Only barely more appealing than regular liquidfood. Should this be crunchy?"
|
||||
icon_state = "liquidprotein"
|
||||
trash = /obj/item/trash/liquidprotein
|
||||
filling_color = "#A8A8A8"
|
||||
@@ -4232,6 +4214,15 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("bean_protein", 6)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
name = "chocolate chip cookie"
|
||||
desc = "Just like your mother used to make."
|
||||
filling_color = "#DBC94F"
|
||||
icon_state = "cookie"
|
||||
nutriment_amt = 5
|
||||
nutriment_desc = list("sweetness" = 2, "cookie" = 1, "chocolate" = 2)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie
|
||||
name = "sugar cookie"
|
||||
desc = "Just like your little sister used to make."
|
||||
@@ -4241,6 +4232,16 @@
|
||||
nutriment_desc = list("sweetness" = 4, "cookie" = 1)
|
||||
bitesize = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
|
||||
name = "Fortune cookie"
|
||||
desc = "A true prophecy in each cookie!"
|
||||
icon_state = "fortune_cookie"
|
||||
filling_color = "#E8E79E"
|
||||
center_of_mass = list("x"=15, "y"=14)
|
||||
nutriment_amt = 3
|
||||
nutriment_desc = list("fortune cookie" = 2)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/berrymuffin
|
||||
name = "berry muffin"
|
||||
desc = "A delicious and spongy little cake, with berries."
|
||||
@@ -5888,32 +5889,6 @@
|
||||
//////////////////////////////Candy Vend Items//////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mint/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("mint", 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mint/admints
|
||||
desc = "Spearmint, peppermint's non-festive cousin."
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "admint"
|
||||
|
||||
/obj/item/weapon/storage/box/admints
|
||||
name = "Ad-mints"
|
||||
desc = "A pack of air fresheners for your mouth."
|
||||
description_fluff = "Ad-mints earned their name, and reputation when a Major Bill's senior executive attended a meeting at a large a marketing firm and was so astounded by the quality of their complimentary mints, that he immediately bought the company - the mints company, not the ad agency - and began providing 'Ad-mints' on every MBT flight."
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "admint_pack"
|
||||
item_state = "candy"
|
||||
slot_flags = SLOT_EARS
|
||||
w_class = 1
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/mint/admints = 6)
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/mint/admints)
|
||||
use_sound = 'sound/items/drop/paper.ogg'
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
max_storage_space = 6
|
||||
foldable = null
|
||||
trash = /obj/item/trash/admints
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/mint
|
||||
name = "mint"
|
||||
desc = "it is only wafer thin."
|
||||
@@ -5933,12 +5908,11 @@
|
||||
|
||||
/obj/item/weapon/storage/box/admints
|
||||
name = "Ad-mints"
|
||||
desc = "A pack of air fresheners for your mouth."
|
||||
description_fluff = "Ad-mints earned their name, and reputation when a Major Bill's senior executive attended a meeting at a large a marketing firm and was so astounded by the quality of their complimentary mints, that he immediately bought the company - the mints company, not the ad agency - and began providing 'Ad-mints' on every MBT flight."
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "admint_pack"
|
||||
item_state = "candy"
|
||||
desc = "A pack of air fresheners for your mouth."
|
||||
description_fluff = "Ad-mints earned their name, and reputation when a Major Bill's senior executive attended a meeting at a large a marketing firm and was so astounded by the quality of their complimentary mints, that he immediately bought the company - the mints company, not the ad agency - and began providing 'Ad-mints' on every MBT flight."
|
||||
trash = /obj/item/trash/admints
|
||||
slot_flags = SLOT_EARS
|
||||
w_class = 1
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/mint/admints = 6)
|
||||
@@ -5947,11 +5921,12 @@
|
||||
drop_sound = 'sound/items/drop/wrapper.ogg'
|
||||
max_storage_space = 6
|
||||
foldable = null
|
||||
trash = /obj/item/trash/admints
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy
|
||||
name = "\improper Grandma Ellen's Candy Bar"
|
||||
desc = "Now without nuts!"
|
||||
description_fluff = "Hard candies were banned from many early human colony ships due to the tendency for brittle, sticky chunks to find their way inside vital equipment in zero-G conditions. This only made them all the more popular to new arrivees, and the Grandma Ellen's brand was Tau Ceti's answer to that demand."
|
||||
description_fluff = "Hard candies were banned from many early human colony ships due to the tendency for brittle, sticky chunks to find their way inside vital equipment in zero-G conditions. This only made them all the more popular to new arrivees, and the Grandpa Elliot's brand was Tau Ceti's answer to that demand."
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "candy"
|
||||
trash = /obj/item/trash/candy
|
||||
@@ -5965,7 +5940,7 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("sugar", 3)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/namagashi //ADDITION 04/14/2021
|
||||
/obj/item/weapon/reagent_containers/food/snacks/namagashi
|
||||
name = "\improper Ryo-kucha Namagashi"
|
||||
desc = "Sweet Japanese gummy like candy that are just bursting with flavor!"
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
@@ -6035,7 +6010,7 @@
|
||||
nutriment_desc = list("apricot" = 2, "sugar" = 2, "dates" = 2, "cranberry" = 2, "apple" = 2)
|
||||
bitesize = 6
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/Initialize()
|
||||
/obj/item/weapon/reagent_containers/food/snacks/fruitbar/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("sugar", 4)
|
||||
|
||||
@@ -6459,7 +6434,7 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("doctorsdelight", 5)
|
||||
|
||||
////////////////////sol_vend (Mars Mart) (ADDED 04/11/2021)////////////////////////////////////////////////////
|
||||
////////////////////sol_vend (Mars Mart)////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/triton
|
||||
name = "\improper Tidal Gobs"
|
||||
@@ -6594,7 +6569,7 @@
|
||||
nutriment_amt = 4
|
||||
bitesize = 1
|
||||
|
||||
////////////////////weeb_vend (Nippon-tan!) (ADDED 04/11/2021)////////////////////////////////////////////////////
|
||||
////////////////////weeb_vend (Nippon-tan!)////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/ricecake
|
||||
name = "rice cake"
|
||||
@@ -6605,7 +6580,7 @@
|
||||
nutriment_amt = 5
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dorayaki //ADDITION 04/14/2021
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dorayaki
|
||||
name = "dorayaki"
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "dorayaki"
|
||||
@@ -6614,7 +6589,7 @@
|
||||
nutriment_amt = 6
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/daifuku //ADDITION 04/14/2021
|
||||
/obj/item/weapon/reagent_containers/food/snacks/daifuku
|
||||
name = "daifuku"
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "daifuku"
|
||||
@@ -6623,16 +6598,6 @@
|
||||
nutriment_amt = 6
|
||||
bitesize = 2
|
||||
|
||||
///obj/item/weapon/reagent_containers/food/snacks/pocky (Moved to chewables)
|
||||
// name = "pockys"
|
||||
// icon = 'icons/obj/food_snacks.dmi'
|
||||
// icon_state = "pockys"
|
||||
// desc = "A bundle of chocolate-coated bisquit sticks."
|
||||
// trash = /obj/item/trash/pocky
|
||||
// nutriment_desc = list("chocolate" = 4, "biscuit" = 1)
|
||||
// nutriment_amt = 5
|
||||
// bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/weebonuts
|
||||
name = "\improper Red Alert Nuts!"
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
@@ -6675,7 +6640,7 @@
|
||||
.=..()
|
||||
reagents.add_reagent("sprinkles", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/goma_dango //ADDITION 04/14/2021
|
||||
/obj/item/weapon/reagent_containers/food/snacks/goma_dango
|
||||
name = "\improper Goma dango"
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "goma_dango"
|
||||
@@ -6685,7 +6650,7 @@
|
||||
nutriment_amt = 5
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hanami_dango //ADDITION 04/14/2021
|
||||
/obj/item/weapon/reagent_containers/food/snacks/hanami_dango
|
||||
name = "\improper Hanami dango"
|
||||
icon = 'icons/obj/food_snacks.dmi'
|
||||
icon_state = "hanami_dango"
|
||||
@@ -6696,7 +6661,7 @@
|
||||
nutriment_amt = 5
|
||||
bitesize = 2
|
||||
|
||||
////////////////////ancient_vend (Hot Food - Old) (ADDED 04/11/2021)////////////////////////////////////////////////////
|
||||
////////////////////ancient_vend (Hot Food - Old)////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/old
|
||||
name = "master old-food"
|
||||
|
||||
@@ -631,11 +631,11 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grub_pink
|
||||
name = "pink candy grub"
|
||||
desc = "A thoroughly candied grub, it smells of raspberry."
|
||||
desc = "A thoroughly candied grub, it smells of cherry."
|
||||
icon = 'icons/obj/food_vr.dmi'
|
||||
icon_state = "grub_pink"
|
||||
nutriment_amt = 5
|
||||
nutriment_desc = list("raspberry" = 4, "goo" = 1)
|
||||
nutriment_desc = list("cherry" = 4, "goo" = 1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grub_pink/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
result = /obj/item/weapon/storage/box/wings/bucket
|
||||
|
||||
/datum/recipe/grub_pink
|
||||
fruit = list("cherry" = 1)
|
||||
fruit = list("cherries" = 1)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grub
|
||||
)
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
|
||||
)
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/cookiesnack
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
result_quantity = 4
|
||||
reagent_mix = RECIPE_REAGENT_REPLACE
|
||||
|
||||
@@ -319,7 +319,6 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel
|
||||
result_quantity = 2
|
||||
|
||||
|
||||
/datum/recipe/cracker
|
||||
appliance = OVEN
|
||||
reagents = list("sodiumchloride" = 1)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/mob/living/carbon/human/gib()
|
||||
|
||||
//Drop the NIF, they're expensive, why not recover them?
|
||||
release_vore_contents(silent = TRUE)
|
||||
if(nif)
|
||||
var/obj/item/device/nif/deadnif = nif //Unimplant removes the reference on the mob
|
||||
if(!deadnif.gib_nodrop)
|
||||
|
||||
@@ -335,11 +335,6 @@
|
||||
log_runtime(EXCEPTION("Warning: human/Topic was called with item [href_list["item"]], but the item Topic is deprecated!"))
|
||||
// handle_strip(href_list["item"],usr)
|
||||
|
||||
// VOREStation Start
|
||||
if(href_list["ooc_notes"])
|
||||
src.Examine_OOC()
|
||||
// VOREStation End
|
||||
|
||||
if (href_list["criminal"])
|
||||
if(hasHUD(usr,"security"))
|
||||
|
||||
|
||||
@@ -545,3 +545,23 @@ YW CHANGE STOP*/
|
||||
/datum/trait/neutral/thinner/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.update_transform()
|
||||
|
||||
/datum/trait/neutral/dominate_predator
|
||||
name = "Dominate Predator"
|
||||
desc = "Allows you to attempt to take control of a predator while inside of their belly."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
|
||||
/datum/trait/neutral/dominate_predator/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.verbs |= /mob/proc/dominate_predator
|
||||
|
||||
/datum/trait/neutral/dominate_prey
|
||||
name = "Dominate Prey"
|
||||
desc = "Connect to and dominate the brain of your prey."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
|
||||
/datum/trait/neutral/dominate_predator/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..(S,H)
|
||||
H.verbs |= /mob/living/proc/dominate_prey
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
melee_damage_upper = 5
|
||||
|
||||
meat_amount = 10
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/cookiesnack
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/cookie
|
||||
|
||||
say_list_type = /datum/say_list/cookiegirl
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive/cookiegirl
|
||||
|
||||
@@ -0,0 +1,538 @@
|
||||
///// A mob that gets used when prey dominate predators. Will automatically delete itself if it's not inside a mob.
|
||||
|
||||
/mob/living/dominated_brain
|
||||
name = "dominated brain"
|
||||
desc = "Someone who has taken a back seat within their own body."
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
icon_state = "brain1"
|
||||
var/mob/living/prey_body //The body of the person who dominated the brain
|
||||
var/prey_ckey //The ckey of the person who dominated the brain
|
||||
var/prey_name //In case the body is missing. ;3c
|
||||
var/list/prey_langs = list()
|
||||
var/mob/living/pred_body //The body of the person who was dominated
|
||||
var/pred_ckey //The ckey of the person who was dominated
|
||||
var/pred_ooc_notes
|
||||
var/prey_ooc_notes
|
||||
|
||||
/mob/living/dominated_brain/New(loc, var/mob/living/pred, preyname, var/mob/living/prey)
|
||||
. = ..()
|
||||
prey_name = preyname
|
||||
if(prey)
|
||||
prey_body = prey
|
||||
pred_body = pred
|
||||
|
||||
/mob/living/dominated_brain/Initialize()
|
||||
if(!isliving(loc))
|
||||
qdel(src)
|
||||
return
|
||||
. = ..()
|
||||
lets_register_our_signals()
|
||||
verbs |= /mob/living/dominated_brain/proc/resist_control
|
||||
|
||||
/mob/living/dominated_brain/Life()
|
||||
. = ..()
|
||||
if(!isliving(loc))
|
||||
qdel(src)
|
||||
if(!ckey)
|
||||
qdel(src)
|
||||
|
||||
/mob/living/dominated_brain/say_understands(var/mob/other, var/datum/language/speaking = null)
|
||||
if(pred_body.say_understands(other, speaking))
|
||||
return TRUE
|
||||
else return FALSE
|
||||
|
||||
/mob/living/dominated_brain/proc/lets_register_our_signals()
|
||||
if(prey_body)
|
||||
RegisterSignal(prey_body, COMSIG_PARENT_QDELETING, .proc/prey_was_deleted, TRUE)
|
||||
RegisterSignal(pred_body, COMSIG_PARENT_QDELETING, .proc/pred_was_deleted, TRUE)
|
||||
|
||||
/mob/living/dominated_brain/proc/lets_unregister_our_signals()
|
||||
prey_was_deleted()
|
||||
pred_was_deleted()
|
||||
|
||||
/mob/living/dominated_brain/proc/prey_was_deleted()
|
||||
if(prey_body)
|
||||
UnregisterSignal(prey_body, COMSIG_PARENT_QDELETING)
|
||||
prey_body = null
|
||||
|
||||
/mob/living/dominated_brain/proc/pred_was_deleted()
|
||||
if(pred_body)
|
||||
UnregisterSignal(pred_body, COMSIG_PARENT_QDELETING)
|
||||
pred_body = null
|
||||
|
||||
/mob/living/dominated_brain/Destroy()
|
||||
if(pred_body)
|
||||
var/P = FALSE
|
||||
for(var/I in pred_body)
|
||||
if(I == src)
|
||||
continue
|
||||
if(istype(I, /mob/living/dominated_brain))
|
||||
P = TRUE
|
||||
if(!P)
|
||||
pred_body.verbs -= /mob/proc/psay
|
||||
pred_body.verbs -= /mob/proc/pme
|
||||
|
||||
lets_unregister_our_signals()
|
||||
. = ..()
|
||||
|
||||
/mob/living/dominated_brain/say(var/message, var/datum/language/speaking = null, var/whispering = 0)
|
||||
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<font color='red'>You cannot speak in IC (muted).</font>")
|
||||
return
|
||||
|
||||
if(loc == pred_body)
|
||||
|
||||
message = sanitize(message)
|
||||
if (!message)
|
||||
return
|
||||
log_say(message,src)
|
||||
if (stat == 2)
|
||||
return say_dead(message)
|
||||
|
||||
to_chat(src, "<span class='changeling'>You think, \"[message]\"</span>")
|
||||
to_chat(pred_body, "<span class='changeling'>The captive mind of \the [src] thinks, \"[message]\"</span>")
|
||||
for(var/I in pred_body.contents)
|
||||
if(istype(I, /mob/living/dominated_brain) && I != src)
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, "<span class='changeling'>The captive mind of \the [src] thinks, \"[message]\"</span>")
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
to_chat(M, "The captive mind of [src] whispers, \"[message]\"")
|
||||
|
||||
/mob/living/dominated_brain/me_verb(message as text)
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='warning'>You cannot speak in IC (muted).</span>")
|
||||
return
|
||||
|
||||
if(loc == pred_body)
|
||||
|
||||
message = sanitize(message)
|
||||
if (!message)
|
||||
return
|
||||
log_emote(message,src)
|
||||
if (stat == 2)
|
||||
return say_dead(message)
|
||||
|
||||
to_chat(src, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
to_chat(pred_body, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
for(var/I in pred_body.contents)
|
||||
if(istype(I, /mob/living/dominated_brain) && I != src)
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
to_chat(M, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
return
|
||||
|
||||
/mob/living/dominated_brain/emote(var/message)
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='warning'>You cannot speak in IC (muted).</span>")
|
||||
return
|
||||
|
||||
if(loc == pred_body)
|
||||
|
||||
message = sanitize(message)
|
||||
if (!message)
|
||||
return
|
||||
log_emote(message,src)
|
||||
if (stat == 2)
|
||||
return say_dead(message)
|
||||
|
||||
to_chat(src, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
to_chat(pred_body, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
for(var/I in pred_body.contents)
|
||||
if(istype(I, /mob/living/dominated_brain) && I != src)
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
to_chat(M, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
return
|
||||
|
||||
/mob/living/dominated_brain/process_resist()
|
||||
//Resisting control by an alien mind.
|
||||
if(pred_body.ckey == pred_ckey)
|
||||
dominate_predator()
|
||||
return
|
||||
if(pred_ckey == ckey && pred_body.prey_controlled)
|
||||
if(tgui_alert(src, "Do you want to wrest control over your body back from \the [prey_name]?", "Regain Control",list("No","Yes")) != "Yes")
|
||||
return
|
||||
|
||||
to_chat(src, "<span class='danger'>You begin to resist \the [prey_name]'s control!!!</span>")
|
||||
to_chat(pred_body, "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>")
|
||||
|
||||
if(do_after(src, 10 SECONDS, exclusive = TRUE))
|
||||
restore_control()
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your attempt to regain control has been interrupted...</span>")
|
||||
to_chat(pred_body, "<span class='notice'>The dominant sensation fades away...</span>")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>\The [pred_body] is already dominated, and cannot be controlled at this time.</span>")
|
||||
..()
|
||||
|
||||
/mob/living/dominated_brain/proc/restore_control(ask = TRUE)
|
||||
|
||||
if(ask && disconnect_time || client && ((client.inactivity / 10) / 60 > 10))
|
||||
if(tgui_alert(src, "Your predator's mind does not seem to be active presently. Releasing control in this state may leave you stuck in whatever state you find yourself in. Are you sure?", "Release Control",list("No","Yes")) != "Yes")
|
||||
return
|
||||
var/mob/living/prey_goes_here
|
||||
|
||||
if(prey_body && prey_body.loc.loc == pred_body) //The prey body exists and is here, let's handle the prey!
|
||||
|
||||
prey_goes_here = prey_body
|
||||
|
||||
else if(prey_body) //It exists, but it's not here, let's spawn them a temporary home.
|
||||
var/mob/living/dominated_brain/ndb = new /mob/living/dominated_brain(pred_body, pred_body, prey_name, prey_body)
|
||||
ndb.name = prey_name
|
||||
ndb.prey_ckey = src.prey_ckey
|
||||
ndb.pred_ckey = src.pred_ckey
|
||||
ndb.pred_body.verbs |= /mob/proc/pme
|
||||
ndb.pred_body.verbs |= /mob/proc/psay
|
||||
|
||||
prey_goes_here = ndb
|
||||
prey_goes_here.real_name = src.prey_name
|
||||
src.languages -= src.temp_languages
|
||||
prey_goes_here.languages |= src.prey_langs
|
||||
prey_goes_here.ooc_notes = prey_ooc_notes
|
||||
prey_goes_here.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness
|
||||
|
||||
|
||||
else //The prey body does not exist, let's put them in the back seat instead!
|
||||
var/mob/living/dominated_brain/ndb = new /mob/living/dominated_brain(pred_body, pred_body, prey_name)
|
||||
ndb.name = prey_name
|
||||
ndb.prey_ckey = src.prey_ckey
|
||||
ndb.pred_ckey = src.pred_ckey
|
||||
ndb.pred_body.verbs |= /mob/proc/pme
|
||||
ndb.pred_body.verbs |= /mob/proc/psay
|
||||
|
||||
prey_goes_here = ndb
|
||||
src.languages -= src.temp_languages
|
||||
prey_goes_here.languages |= src.prey_langs
|
||||
prey_goes_here.real_name = src.prey_name
|
||||
prey_goes_here.ooc_notes = prey_ooc_notes
|
||||
|
||||
///////////////////
|
||||
|
||||
// Handle Pred
|
||||
pred_body.verbs -= /mob/proc/release_predator
|
||||
|
||||
//Now actually put the people in the mobs
|
||||
prey_goes_here.ckey = src.prey_ckey
|
||||
pred_body.ckey = src.pred_ckey
|
||||
pred_body.ooc_notes = pred_ooc_notes
|
||||
log_and_message_admins("[pred_body] is now controlled by [pred_body.ckey]. They were restored to control through prey domination, and had been controlled by [prey_ckey].")
|
||||
handle_langs(src)
|
||||
pred_body.prey_controlled = FALSE
|
||||
qdel(src)
|
||||
|
||||
/mob/living/dominated_brain/proc/handle_langs(var/mob/M)
|
||||
var/list/langlist = list()
|
||||
|
||||
pred_body.languages -= pred_body.temp_languages
|
||||
LAZYCLEARLIST(pred_body.temp_languages)
|
||||
pred_body.temp_languages = list()
|
||||
for(var/i in loc)
|
||||
if(i == M)
|
||||
continue
|
||||
if(istype(i,/mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = i
|
||||
langlist |= db.languages
|
||||
langlist |= db.prey_langs
|
||||
langlist -= pred_body.languages
|
||||
pred_body.temp_languages |= langlist
|
||||
pred_body.languages |= langlist
|
||||
|
||||
//Welcome to the adapted borer code.
|
||||
/mob/proc/dominate_predator()
|
||||
set category = "Abilities"
|
||||
set name = "Dominate Predator"
|
||||
set desc = "Connect to and dominate the brain of your predator."
|
||||
|
||||
var/mob/living/pred
|
||||
var/mob/living/prey = src
|
||||
if(isbelly(prey.loc))
|
||||
pred = loc.loc
|
||||
else if(isliving(prey.loc))
|
||||
pred = loc
|
||||
else
|
||||
to_chat(prey, "<span class='notice'>You are not inside anyone.</span>")
|
||||
return
|
||||
|
||||
if(prey.stat == DEAD)
|
||||
to_chat(prey, "<span class='warning'>You cannot do that in your current state.</span>")
|
||||
return
|
||||
|
||||
if(!pred.ckey)
|
||||
to_chat(prey, "<span class='notice'>\The [pred] isn't able to be dominated.</span>")
|
||||
return
|
||||
if(prey.prey_controlled)
|
||||
to_chat(prey, "<span class='warning'>You are already controlling someone, you can't control anyone else at this time.</span>")
|
||||
return
|
||||
if(pred.prey_controlled)
|
||||
to_chat(prey, "<span class='warning'>\The [pred] is already dominated, and cannot be controlled at this time.</span>")
|
||||
return
|
||||
if(ishuman(pred))
|
||||
var/mob/living/carbon/human/h = pred
|
||||
if(h.resleeve_lock && ckey != h.resleeve_lock)
|
||||
to_chat(src, "<span class='warning'>\The [h] cannot be impersonated!</span>")
|
||||
return
|
||||
if(tgui_alert(prey, "You are attempting to take over [pred], are you sure? Ensure that their preferences align with this kind of play.", "Take Over Predator",list("No","Yes")) != "Yes")
|
||||
return
|
||||
to_chat(prey, "<span class='notice'>You attempt to exert your control over \the [pred]...</span>")
|
||||
log_admin("[key_name_admin(prey)] attempted to take over [pred].")
|
||||
if(tgui_alert(pred, "\The [prey] has elected to attempt to take control of you. Is this something you will allow to happen?", "Allow Prey Domination",list("No","Yes")) != "Yes")
|
||||
to_chat(prey, "<span class='warning'>\The [pred] declined your request for control.</span>")
|
||||
return
|
||||
if(tgui_alert(pred, "Are you sure? If you should decide to revoke this, you will have the ability to do so in your 'Abilities' tab.", "Allow Prey Domination",list("No","Yes")) != "Yes")
|
||||
return
|
||||
to_chat(pred, "<span class='warning'>You can feel the will of another overwriting your own, control of your body being sapped away from you...</span>")
|
||||
to_chat(prey, "<span class='warning'>You can feel the will of your host diminishing as you exert your will over them!</span>")
|
||||
if(!do_after(prey, 10 SECONDS, exclusive = TRUE))
|
||||
to_chat(prey, "<span class='notice'>Your attempt to regain control has been interrupted...</span>")
|
||||
to_chat(pred, "<span class='notice'>The dominant sensation fades away...</span>")
|
||||
return
|
||||
|
||||
to_chat(prey, "<span class='danger'>You plunge your conciousness into \the [pred], assuming control over their very body, leaving your own behind within \the [pred]'s [loc].</span>")
|
||||
to_chat(pred, "<span class='danger'>You feel your body move on its own, as you are pushed to the background, and an alien consciousness displaces yours.</span>")
|
||||
var/mob/living/dominated_brain/pred_brain
|
||||
var/delete_source = FALSE
|
||||
if(istype(prey, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/punished_prey = prey
|
||||
if(punished_prey.prey_body)
|
||||
pred_brain = new /mob/living/dominated_brain(pred, pred, name, punished_prey.prey_body)
|
||||
else
|
||||
pred_brain = new /mob/living/dominated_brain(pred, pred, name) //We have to play musical chairs with 3 bodies, or everyone gets d/ced
|
||||
delete_source = TRUE
|
||||
else
|
||||
pred_brain = new /mob/living/dominated_brain(pred, pred, name, prey)
|
||||
|
||||
pred.verbs |= /mob/proc/pme
|
||||
pred.verbs |= /mob/proc/psay
|
||||
pred_brain.prey_ooc_notes = prey.ooc_notes
|
||||
pred_brain.pred_ooc_notes = pred.ooc_notes
|
||||
pred_brain.name = pred.name
|
||||
var/list/preylangs = list()
|
||||
preylangs |= prey.languages
|
||||
preylangs -= prey.temp_languages
|
||||
pred_brain.prey_langs |= preylangs
|
||||
pred_brain.prey_ckey = prey.ckey
|
||||
pred_brain.pred_ckey = pred.ckey
|
||||
pred_brain.handle_langs()
|
||||
pred.ooc_notes = pred_brain.prey_ooc_notes
|
||||
|
||||
pred.verbs |= /mob/proc/release_predator
|
||||
|
||||
//Now actually put the people in the mobs
|
||||
pred_brain.ckey = pred_brain.pred_ckey
|
||||
pred_brain.real_name = pred.real_name
|
||||
pred.ckey = pred_brain.prey_ckey
|
||||
pred.prey_controlled = TRUE
|
||||
log_and_message_admins("[pred] is now controlled by [pred.ckey], they were taken over via prey domination, and were originally controlled by [pred_brain.pred_ckey].")
|
||||
if(delete_source)
|
||||
qdel(prey)
|
||||
|
||||
/mob/proc/release_predator()
|
||||
set category = "Abilities"
|
||||
set name = "Restore Control"
|
||||
set desc = "Release control of your predator's body."
|
||||
|
||||
for(var/I in contents)
|
||||
if(istype(I, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = I
|
||||
if(db.ckey == db.pred_ckey)
|
||||
to_chat(src, "<span class='notice'>You ease off of your control, releasing \the [db].</span>")
|
||||
to_chat(db, "<span class='notice'>You feel the alien presence fade, and restore control of your body to you of their own will...</span>")
|
||||
db.restore_control()
|
||||
return
|
||||
else
|
||||
continue
|
||||
to_chat(src, "<span class='danger'>You haven't been taken over, and shouldn't have this verb. I'll clean that up for you. Report this on the github, it is a bug.</span>")
|
||||
verbs -= /mob/proc/release_predator
|
||||
|
||||
/mob/living/dominated_brain/proc/resist_control()
|
||||
set category = "Abilities"
|
||||
set name = "Resist Control"
|
||||
set desc = "Attempt to resist control."
|
||||
if(pred_body.ckey == pred_ckey)
|
||||
dominate_predator()
|
||||
return
|
||||
if(pred_ckey == ckey && pred_body.prey_controlled)
|
||||
to_chat(src, "<span class='danger'>You begin to resist \the [prey_name]'s control!!!</span>")
|
||||
to_chat(pred_body, "<span class='danger'>You feel the captive mind of [src] begin to resist your control.</span>")
|
||||
|
||||
if(do_after(src, 10 SECONDS, exclusive = TRUE))
|
||||
restore_control()
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Your attempt to regain control has been interrupted...</span>")
|
||||
to_chat(pred_body, "<span class='notice'>The dominant sensation fades away...</span>")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>\The [pred_body] is already dominated, and cannot be controlled at this time.</span>")
|
||||
|
||||
|
||||
/mob/proc/psay(message as text|null)
|
||||
set category = "Abilities"
|
||||
set name = "Prey Say (psay)"
|
||||
set desc = "Emote to a dominated predator/prey."
|
||||
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='warning'>You cannot speak in IC (muted).</span>")
|
||||
return
|
||||
message = sanitize(message)
|
||||
if (!message)
|
||||
message = input(usr, "Type a message to emote.","Emote to prey") as text|null
|
||||
if (!message)
|
||||
return
|
||||
|
||||
var/f = FALSE
|
||||
for(var/I in contents)
|
||||
if(istype(I, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, "<span class='changeling'>\The [src] thinks, \"[message]\"</span>")
|
||||
f = TRUE
|
||||
if(f)
|
||||
to_chat(src, "<span class='changeling'>You think \"[message]\"</span>")
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
to_chat(M, "<span class='changeling'>\The [src] thinks, \"[message]\"</span>")
|
||||
log_say(message,src)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>There is no one inside you to talk to...</span>")
|
||||
return
|
||||
|
||||
/mob/proc/pme(message as text|null)
|
||||
set category = "Abilities"
|
||||
set name = "Prey Emote (pme)"
|
||||
set desc = "Emote to a dominated predator/prey."
|
||||
|
||||
if (src.client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "<span class='warning'>You cannot speak in IC (muted).</span>")
|
||||
return
|
||||
message = sanitize(message)
|
||||
if (!message)
|
||||
message = input(usr, "Type a message to emote.","Emote to prey") as text|null
|
||||
if (!message)
|
||||
return
|
||||
var/f = FALSE
|
||||
for(var/I in contents)
|
||||
if(istype(I, /mob/living/dominated_brain))
|
||||
var/mob/living/dominated_brain/db = I
|
||||
to_chat(db, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
f = TRUE
|
||||
if(f)
|
||||
to_chat(src, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
else if(M.stat == DEAD && M.is_preference_enabled(/datum/client_preference/ghost_ears))
|
||||
to_chat(M, "<span class='changeling'><i>\The [src] [message]</i></span>")
|
||||
log_emote(message,src)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>There is no one inside you to talk to...</span>")
|
||||
return
|
||||
|
||||
/mob/living/proc/dominate_prey()
|
||||
set category = "Abilities"
|
||||
set name = "Dominate Prey"
|
||||
set desc = "Connect to and dominate the brain of your prey."
|
||||
|
||||
var/list/possible_mobs = list()
|
||||
for(var/obj/belly/B in src.vore_organs)
|
||||
for(var/mob/living/L in B)
|
||||
if(isliving(L) && L.ckey)
|
||||
possible_mobs += L
|
||||
else
|
||||
continue
|
||||
var/mob/living/M
|
||||
var/input = tgui_input_list(src, "Select a mob to dominate:", "Dominate Prey", possible_mobs)
|
||||
if(!input)
|
||||
to_chat(src, "<span class='warning'>There are no valid targets inside of you.</span>")
|
||||
return
|
||||
M = input
|
||||
if(!M)
|
||||
return
|
||||
if(tgui_alert(src, "You selected [M] to attempt to dominate. Are you sure?", "Dominate Prey",list("No","Yes")) != "Yes")
|
||||
return
|
||||
log_admin("[key_name_admin(src)] offered to use dominate prey on [M] ([M.ckey]).")
|
||||
to_chat(src, "<span class='warning'>Attempting to dominate and gather \the [M]'s mind...</span>")
|
||||
if(tgui_alert(M, "\The [src] has elected collect your mind into their own. Is this something you will allow to happen?", "Allow Dominate Prey",list("No","Yes")) != "Yes")
|
||||
return
|
||||
if(tgui_alert(M, "Are you sure? You can only undo this while your body is inside of [src]. (You can resist, or use the resist verb in the abilities tab)", "Allow Dominate Prey",list("No","Yes")) != "Yes")
|
||||
return
|
||||
to_chat(M, "<span class='warning'>You can feel the will of another pulling you away from your body...</span>")
|
||||
to_chat(src, "<span class='warning'>You can feel the will of your prey diminishing as you gather them!</span>")
|
||||
|
||||
if(!do_after(src, 10 SECONDS, exclusive = TRUE))
|
||||
to_chat(M, "<span class='notice'>The alien presence fades, and you are left along in your body...</span>")
|
||||
to_chat(src, "<span class='notice'>Your attempt to gather [M]'s mind has been interrupted.</span>")
|
||||
return
|
||||
if(!isbelly(M.loc))
|
||||
to_chat(M, "<span class='notice'>The alien presence fades, and you are left along in your body...</span>")
|
||||
to_chat(src, "<span class='notice'>Your attempt to gather [M]'s mind has been interrupted.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/dominated_brain/db = new /mob/living/dominated_brain(src, src, M.name, M)
|
||||
|
||||
|
||||
verbs |= /mob/proc/pme
|
||||
verbs |= /mob/proc/psay
|
||||
db.name = M.name
|
||||
db.prey_ckey = M.ckey
|
||||
db.pred_ckey = src.ckey
|
||||
|
||||
|
||||
db.real_name = M.real_name
|
||||
|
||||
M.languages -= M.temp_languages
|
||||
db.languages |= M.languages
|
||||
db.handle_langs()
|
||||
db.ooc_notes = M.ooc_notes
|
||||
db.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness
|
||||
|
||||
db.ckey = db.prey_ckey
|
||||
log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their body.")
|
||||
to_chat(src, "<span class='notice'>You feel your mind expanded as [M] is incorporated into you.</span>")
|
||||
to_chat(M, "<span class='warning'>Your mind is gathered into \the [src], becoming part of them...</span>")
|
||||
|
||||
/mob/living/dominated_brain/proc/cease_this_foolishness()
|
||||
set category = "Abilities"
|
||||
set name = "Return to Body"
|
||||
set desc = "If your body is inside of your predator still, attempts to re-insert yourself into it."
|
||||
|
||||
if(prey_body && prey_body.loc.loc == pred_body)
|
||||
to_chat(src, "<span class='notice'>You exert your will and attempt to return to yout body!!!</span>")
|
||||
to_chat(pred_body, "<span class='warning'>\The [src] resists your hold and attempts to return to their body!</span>")
|
||||
if(do_after(src, 10 SECONDS, exclusive = TRUE))
|
||||
if(prey_body && prey_body.loc.loc == pred_body)
|
||||
|
||||
prey_body.ckey = prey_ckey
|
||||
handle_langs(src)
|
||||
to_chat(src, "<span class='warning'>Your connection to [pred_body] fades, and you awaken back in your own body!</span>")
|
||||
to_chat(pred_body, "<span class='warning'>You feel as though a piece of yourself is missing, as \the [src] returns to their body.</span>")
|
||||
log_admin("[src] ([src.ckey]) has returned to their body, [prey_body].")
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your attempt to regain your body has been interrupted...</span>")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your attempt to regain your body has been interrupted...</span>")
|
||||
else if(prey_body)
|
||||
to_chat(src, "<span class='warning'>You can sense your body... but it is not contained within [pred_body]... You cannot return to it at this time.</span>")
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your body seems to no longer exist, so, you cannot return to it.</span>")
|
||||
verbs -= /mob/living/dominated_brain/proc/cease_this_foolishness
|
||||
@@ -264,8 +264,8 @@
|
||||
return
|
||||
var/list/possible_mobs = list()
|
||||
for(var/obj/belly/B in src.vore_organs)
|
||||
for(var/mob/living/carbon/human/H in B)
|
||||
if(ishuman(H) && H.ckey)
|
||||
for(var/mob/living/H in B)
|
||||
if( (ishuman(H) || isrobot(H)) && H.ckey )
|
||||
possible_mobs += H
|
||||
else
|
||||
continue
|
||||
@@ -276,9 +276,11 @@
|
||||
M = input
|
||||
if(!M)
|
||||
return
|
||||
if(M.resleeve_lock && ckey != M.resleeve_lock)
|
||||
to_chat(src, "<span class='warning'>\The [M] cannot be impersonated!</span>")
|
||||
return
|
||||
// Adding a ishuman check here, since silicon mobs don't have a resleeve_lock from what I can tell.
|
||||
if(ishuman(M))
|
||||
if(M.resleeve_lock && ckey != M.resleeve_lock)
|
||||
to_chat(src, "<span class='warning'>\The [M] cannot be impersonated!</span>")
|
||||
return
|
||||
if(tgui_alert(src, "You selected [M] to attempt to take over. Are you sure?", "Take Over Prey",list("No","Yes")) == "Yes")
|
||||
log_admin("[key_name_admin(src)] offered [M] to swap bodies as a morph.")
|
||||
if(tgui_alert(M, "\The [src] has elected to attempt to take over your body and control you. Is this something you will allow to happen?", "Allow Morph To Take Over",list("No","Yes")) == "Yes")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
backbag = rand(1,6)
|
||||
pdachoice = rand(1,5)
|
||||
pdachoice = rand(1,7)
|
||||
age = rand(current_species.min_age, current_species.max_age)
|
||||
b_type = RANDOM_BLOOD_TYPE
|
||||
if(H)
|
||||
|
||||
@@ -6,7 +6,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/obj/item/device/pda
|
||||
name = "\improper PDA"
|
||||
desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge."
|
||||
icon = 'icons/obj/pda.dmi'
|
||||
icon = 'icons/obj/pda_vr.dmi' //VOREStation edit
|
||||
icon_state = "pda"
|
||||
item_state = "electronic"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -127,7 +127,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
new /obj/item/weapon/pen(src)
|
||||
pdachoice = isnull(H) ? 1 : (ishuman(H) ? H.pdachoice : 1)
|
||||
switch(pdachoice)
|
||||
if(1) icon = 'icons/obj/pda.dmi'
|
||||
if(1) icon = 'icons/obj/pda_vr.dmi' //VOREStation edit
|
||||
if(2) icon = 'icons/obj/pda_slim.dmi'
|
||||
if(3) icon = 'icons/obj/pda_old.dmi'
|
||||
if(4) icon = 'icons/obj/pda_rugged.dmi'
|
||||
@@ -146,6 +146,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
SPECIES_TESHARI = 'icons/mob/species/teshari/pda_wrist.dmi',
|
||||
SPECIES_VR_TESHARI = 'icons/mob/species/teshari/pda_wrist.dmi',
|
||||
)
|
||||
if(7) icon = 'icons/obj/pda_clam.dmi' //VOREStation edit
|
||||
else
|
||||
icon = 'icons/obj/pda_old.dmi'
|
||||
log_debug("Invalid switch for PDA, defaulting to old PDA icons. [pdachoice] chosen.")
|
||||
@@ -277,6 +278,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
playsound(src, 'sound/machines/id_swipe.ogg', 100, 1)
|
||||
else
|
||||
id.loc = get_turf(src)
|
||||
cut_overlay("pda-id")
|
||||
id = null
|
||||
|
||||
/obj/item/device/pda/proc/remove_pen()
|
||||
@@ -287,6 +289,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(M.get_active_hand() == null)
|
||||
M.put_in_hands(O)
|
||||
to_chat(usr, "<span class='notice'>You remove \the [O] from \the [src].</span>")
|
||||
cut_overlay("pda-pen")
|
||||
return
|
||||
O.loc = get_turf(src)
|
||||
else
|
||||
@@ -420,6 +423,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(((src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) )
|
||||
if(id_check(user, 2))
|
||||
to_chat(user, "<span class='notice'>You put the ID into \the [src]'s slot.</span>")
|
||||
add_overlay("pda-id")
|
||||
updateSelfDialog()//Update self dialog on success.
|
||||
return //Return in case of failed check or when successful.
|
||||
updateSelfDialog()//For the non-input related code.
|
||||
@@ -437,6 +441,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
user.drop_item()
|
||||
C.loc = src
|
||||
to_chat(user, "<span class='notice'>You slot \the [C] into \the [src].</span>")
|
||||
add_overlay("pda-pen")
|
||||
return
|
||||
|
||||
/obj/item/device/pda/attack(mob/living/C as mob, mob/living/user as mob)
|
||||
@@ -473,7 +478,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/obj/item/weapon/storage/box/PDAs
|
||||
name = "box of spare PDAs"
|
||||
desc = "A box of spare PDA microcomputers."
|
||||
icon = 'icons/obj/pda.dmi'
|
||||
icon = 'icons/obj/pda_vr.dmi' //VOREStation edit
|
||||
icon_state = "pdabox"
|
||||
|
||||
/obj/item/weapon/storage/box/PDAs/New()
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
|
||||
/obj/item/device/pda/pathfinder
|
||||
default_cartridge = /obj/item/weapon/cartridge/explorer
|
||||
icon_state = "pda-lawyer-old"
|
||||
icon_state = "pda-transp" //Might as well let this sprite actually get seen, otherwise it's going to be hidden forever.
|
||||
|
||||
/obj/item/device/pda/explorer
|
||||
default_cartridge = /obj/item/weapon/cartridge/explorer
|
||||
icon_state = "pda-det"
|
||||
icon_state = "pda-lawyer-old" //Explorer's can get the PF's old style instead, rather than re-using the detective PDA
|
||||
|
||||
/obj/item/device/pda/sar
|
||||
default_cartridge = /obj/item/weapon/cartridge/sar
|
||||
icon_state = "pda-h"
|
||||
icon_state = "pda-gene" //Gives FM's a distinct PDA of their own, rather than sharing with the bridge-secretary & CCO's.
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
name = fon ? "Disable Flashlight" : "Enable Flashlight"
|
||||
pda.update_shortcuts()
|
||||
pda.set_light(fon ? f_lum : 0)
|
||||
if(fon)
|
||||
pda.add_overlay("light-o")
|
||||
else
|
||||
pda.cut_overlay("light-o")
|
||||
|
||||
/datum/data/pda/utility/honk
|
||||
name = "Honk Synthesizer"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/datum/persistent/paintings
|
||||
name = "paintings"
|
||||
entries_expire_at = 1000 // Basically forever
|
||||
//entries_expire_at = 1000 // Basically forever
|
||||
var/max_entries = 1000 //1000 paintings is a lot, and will take a long time to cycle through.
|
||||
|
||||
/datum/persistent/paintings/SetFilename()
|
||||
filename = "data/persistent/paintings.json"
|
||||
@@ -14,7 +15,7 @@
|
||||
token["age"]++ // Increment age!
|
||||
if(!CheckTokenSanity(token))
|
||||
tokens -= token
|
||||
|
||||
|
||||
SSpersistence.unpicked_paintings = SSpersistence.all_paintings.Copy()
|
||||
|
||||
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
|
||||
@@ -24,14 +25,29 @@
|
||||
var/png_filename = "data/paintings/[token["persistence_id"]]/[token["md5"]].png"
|
||||
if(!fexists(png_filename))
|
||||
return FALSE
|
||||
if(token["age"] > entries_expire_at)
|
||||
fdel(png_filename)
|
||||
return FALSE
|
||||
// if(token["age"] > entries_expire_at)
|
||||
// fdel(png_filename)
|
||||
// return FALSE
|
||||
|
||||
/datum/persistent/paintings/Shutdown()
|
||||
for(var/obj/structure/sign/painting/P in SSpersistence.painting_frames)
|
||||
P.save_persistent()
|
||||
|
||||
if(SSpersistence.all_paintings.len > max_entries)
|
||||
var/this_many = SSpersistence.all_paintings.len
|
||||
var/over = this_many - max_entries
|
||||
log_admin("There are [over] more painting(s) stored than the maximum allowed.")
|
||||
while(over > 0)
|
||||
var/list/d = SSpersistence.all_paintings[1]
|
||||
var/png_filename = "data/paintings/[d["persistence_id"]]/[d["md5"]].png"
|
||||
fdel(png_filename)
|
||||
if(SSpersistence.all_paintings.Remove(list(d)))
|
||||
log_admin("A painting was deleted")
|
||||
else
|
||||
log_and_message_admins("Attempted to delete a painting, but failed.")
|
||||
over --
|
||||
|
||||
|
||||
if(fexists(filename))
|
||||
fdel(filename)
|
||||
to_file(file(filename), json_encode(SSpersistence.all_paintings))
|
||||
to_file(file(filename), json_encode(SSpersistence.all_paintings))
|
||||
@@ -55,4 +55,500 @@
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
matter = list(MAT_STEEL = 2040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = null
|
||||
multiple_sprites = null
|
||||
|
||||
/*
|
||||
* .357
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b357
|
||||
name = "ammo box (.357)"
|
||||
desc = "A box of .357 rounds"
|
||||
icon_state = "magnum"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
matter = list(MAT_STEEL = 5040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b357/rubber
|
||||
name = "ammo box (.357 rubber)"
|
||||
desc = "A box of .357 rubber rounds"
|
||||
icon_state = "magnum_r"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357/rubber
|
||||
matter = list(MAT_STEEL = 5040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* .38
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b38
|
||||
name = "ammo box (.38)"
|
||||
desc = "A box of .38 rounds"
|
||||
icon_state = "pistol"
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b38/rubber
|
||||
name = "ammo box (.38 rubber)"
|
||||
desc = "A box of .38 rubber rounds"
|
||||
icon_state = "pistol_p"
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38/rubber
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 10mm
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm
|
||||
name = "ammo box (10mm)"
|
||||
desc = "A box of 10mm rounds"
|
||||
icon_state = "box10mm"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm
|
||||
matter = list(MAT_STEEL = 3000)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm/practice
|
||||
name = "ammo box (10mm practice)"
|
||||
desc = "A box of 10mm practice rounds"
|
||||
icon_state = "box10mm-practice"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/practice
|
||||
matter = list(MAT_STEEL = 2400)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm/rubber
|
||||
name = "ammo box (10mm rubber)"
|
||||
desc = "A box of 10mm rubber rounds"
|
||||
icon_state = "box10mm-rubber"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/rubber
|
||||
matter = list(MAT_STEEL = 2400)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm/emp
|
||||
name = "ammo box (10mm haywire)"
|
||||
desc = "A box of 10mm haywire rounds"
|
||||
icon_state = "box10mm-hw"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||
matter = list(MAT_STEEL = 5200, MAT_URANIUM = 4000)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* .44
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b44
|
||||
name = "ammo box (.44)"
|
||||
desc = "A box of .44 rounds"
|
||||
icon_state = "box44"
|
||||
caliber = ".44"
|
||||
ammo_type = /obj/item/ammo_casing/a44
|
||||
matter = list(MAT_STEEL = 5040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b44/rubber
|
||||
name = "ammo box (.44 rubber)"
|
||||
desc = "A box of .44 rubber rounds"
|
||||
icon_state = "box44-rubber"
|
||||
caliber = ".44"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* .45
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45
|
||||
name = "ammo box (.45)"
|
||||
desc = "A box of .45 rounds"
|
||||
icon_state = "pistol_s"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 1800)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/practice
|
||||
name = "ammo box (.45 practice)"
|
||||
desc = "A box of .45 practice rounds"
|
||||
icon_state = "pistol_p"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/practice
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/ap
|
||||
name = "ammo box (.45 AP)"
|
||||
desc = "A box of .45 armor-piercing rounds"
|
||||
icon_state = "pistol_ap"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/ap
|
||||
matter = list(MAT_STEEL = 1200, MAT_PLASTEEL = 600)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/hp
|
||||
name = "ammo box (.45 HP)"
|
||||
desc = "A box of .45 hollow-point rounds"
|
||||
icon_state = "pistol_hp"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/hp
|
||||
matter = list(MAT_STEEL = 1440, MAT_PLASTIC = 360)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/rubber
|
||||
name = "ammo box (.45 rubber)"
|
||||
desc = "A box of .45 rubber rounds"
|
||||
icon_state = "pistol_r"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/rubber
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/emp
|
||||
name = "ammo box (.45 haywire)"
|
||||
desc = "A box of .45 haywire rounds"
|
||||
icon_state = "pistol_hw"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/emp
|
||||
matter = list(MAT_STEEL = 3120, MAT_URANIUM = 2400)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 12g (aka shotgun ammo)
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g
|
||||
name = "ammo box (12 gauge slug)"
|
||||
desc = "A box of 12 gauge slug rounds"
|
||||
icon_state = "slug"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g
|
||||
matter = list(MAT_STEEL = 2880)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/pellet
|
||||
name = "ammo box (12 gauge buckshot)"
|
||||
desc = "A box of 12 gauge buckshot rounds"
|
||||
icon_state = "buckshot"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/pellet
|
||||
matter = list(MAT_STEEL = 2880)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/beanbag
|
||||
name = "ammo box (12 gauge beanbag)"
|
||||
desc = "A box of 12 gauge beanbag rounds"
|
||||
icon_state = "bean"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/beanbag
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/stunshell
|
||||
name = "ammo box (12 gauge stun)"
|
||||
desc = "A box of 12 gauge stun rounds"
|
||||
icon_state = "stunslug"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/stunshell
|
||||
matter = list(MAT_STEEL = 2880, MAT_GLASS = 5760)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/emp
|
||||
name = "ammo box (12 gauge EMP)"
|
||||
desc = "A box of 12 gauge EMP rounds"
|
||||
icon_state = "emp"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/emp
|
||||
matter = list(MAT_STEEL = 2880, MAT_URANIUM = 1920)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/flechette
|
||||
name = "ammo box (12 gauge flechette)"
|
||||
desc = "A box of 12 gauge flechette rounds"
|
||||
icon_state = "bean"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flechette
|
||||
matter = list(MAT_STEEL = 2880, MAT_PLASTEEL = 800)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/practice
|
||||
name = "ammo box (12 gauge practice)"
|
||||
desc = "A box of 12 gauge practice rounds"
|
||||
icon_state = "practice"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/practice
|
||||
matter = list(MAT_STEEL = 480)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/blank
|
||||
name = "ammo box (12 gauge blank)"
|
||||
desc = "A box of 12 gauge blank rounds"
|
||||
icon_state = "blank"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/blank
|
||||
matter = list(MAT_STEEL = 720)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/flash
|
||||
name = "ammo box (12 gauge flash)"
|
||||
desc = "A box of 12 gauge flash rounds"
|
||||
icon_state = "flash"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flash
|
||||
matter = list(MAT_STEEL = 720, MAT_GLASS = 720)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 14.5mm (anti-materiel rifle round)
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b145
|
||||
desc = "ammo box (14.5mm)"
|
||||
desc = "A box of 14.5mm rounds"
|
||||
icon_state = "sniper"
|
||||
caliber = "14.5mm"
|
||||
ammo_type = /obj/item/ammo_casing/a145
|
||||
matter = list(MAT_STEEL = 8750)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b145/highvel
|
||||
desc = "ammo box (14.5mm sabot)"
|
||||
desc = "A box of 14.5mm sabot rounds"
|
||||
icon_state = "sniper"
|
||||
caliber = "14.5mm"
|
||||
ammo_type = /obj/item/ammo_casing/a145
|
||||
matter = list(MAT_STEEL = 8750)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 7.62mm
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762
|
||||
name = "ammo box (7.62mm)"
|
||||
desc = "A box of 7.62mm rounds"
|
||||
icon_state = "rifle"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
matter = list(MAT_STEEL = 6000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/hp
|
||||
name = "ammo box (7.62mm HP)"
|
||||
desc = "A box of 7.62mm hollow-point rounds"
|
||||
icon_state = "rifle_hp"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hp
|
||||
matter = list(MAT_STEEL = 9000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/ap
|
||||
name = "ammo box (7.62mm AP)"
|
||||
desc = "A box of 7.62mm armor-piercing rounds"
|
||||
icon_state = "rifle_ap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
matter = list(MAT_STEEL = 9000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/practice
|
||||
name = "ammo box (7.62mm practice)"
|
||||
desc = "A box of 7.62mm practice rounds"
|
||||
icon_state = "rifle_p"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/practice
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/hunter
|
||||
name = "ammo box (7.62mm hunter)"
|
||||
desc = "A box of 7.62mm hunter rounds"
|
||||
icon_state = "rifle_hunter"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hunter
|
||||
matter = list(MAT_STEEL = 6000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/surplus
|
||||
name = "ammo wrap (7.62mm)"
|
||||
desc = "A paper wrap of 7.62mm rounds"
|
||||
icon_state = "paper_wrap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
matter = list(MAT_STEEL = 1600)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/surplus/blank
|
||||
name = "ammo wrap (7.62mm blank)"
|
||||
desc = "A paper wrap of 7.62mm blank rounds"
|
||||
icon_state = "paper_wrap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/blank
|
||||
matter = list(MAT_STEEL = 720)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/surplus/hunter
|
||||
name = "ammo wrap (7.62mm hunter)"
|
||||
desc = "A paper wrap of 7.62mm hunter rounds"
|
||||
icon_state = "paper_wrap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hunter
|
||||
matter = list(MAT_STEEL = 1600)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 5.45mm
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545
|
||||
name = "ammo box (5.45mm)"
|
||||
desc = "A box of 5.45mm rounds"
|
||||
icon_state = "hrifle"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545
|
||||
matter = list(MAT_STEEL = 5400)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/ap
|
||||
name = "ammo box (5.45mm AP)"
|
||||
desc = "A box of 5.45mm armor-piercing rounds"
|
||||
icon_state = "hrifle-ap"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
matter = list(MAT_STEEL = 8100)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/hp
|
||||
name = "ammo box (5.45mm HP)"
|
||||
desc = "A box of 5.45mm hollow-point rounds"
|
||||
icon_state = "hrifle-hp"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hp
|
||||
matter = list(MAT_STEEL = 5400)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/practice
|
||||
name = "ammo box (5.45mm practice)"
|
||||
desc = "A box of 5.45mm practice rounds"
|
||||
icon_state = "hrifle-practice"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/practice
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/hunter
|
||||
name = "ammo box (5.45mm hunter)"
|
||||
desc = "A box of 5.45mm hunter rounds"
|
||||
icon_state = "hrifle-hunter"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
matter = list(MAT_STEEL = 5400)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/blank
|
||||
name = "ammo box (5.45mm blank)"
|
||||
desc = "A box of 5.45mm blank rounds"
|
||||
icon_state = "hrifle-practice"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/blank
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large
|
||||
name = "ammo box (5.45mm)"
|
||||
desc = "A steel box of 5.45mm rounds"
|
||||
icon_state = "boxhrifle"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545
|
||||
matter = list(MAT_STEEL = 18000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/ap
|
||||
name = "ammo box (5.45mm AP)"
|
||||
desc = "A steel box of 5.45mm armor-piercing rounds"
|
||||
icon_state = "boxhrifle-ap"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
matter = list(MAT_STEEL = 27000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/hp
|
||||
name = "ammo box (5.45mm HP)"
|
||||
desc = "A steel box of 5.45mm hollow-point rounds"
|
||||
icon_state = "boxhrifle-hp"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hp
|
||||
matter = list(MAT_STEEL = 18000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/practice
|
||||
name = "ammo box (5.45mm practice)"
|
||||
desc = "A steel box of 5.45mm practice rounds"
|
||||
icon_state = "boxhrifle-practice"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/practice
|
||||
matter = list(MAT_STEEL = 9000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/hunter
|
||||
name = "ammo box (5.45mm hunter)"
|
||||
desc = "A steel box of 5.45mm hunter rounds"
|
||||
icon_state = "boxhrifle-hunter"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
matter = list(MAT_STEEL = 18000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
@@ -3,7 +3,7 @@
|
||||
# An explaination of the naming format for guns and ammo:
|
||||
#
|
||||
# a = Ammo, as in individual rounds of ammunition.
|
||||
# b = Box, intended to have ammo taken out one at a time by hand. Really obsolete. Don't use this.
|
||||
# b = Box, intended to have ammo taken out one at a time by hand.
|
||||
# c = Clips, intended to reload magazines or guns quickly.
|
||||
# m = Magazine, intended to hold rounds of ammo.
|
||||
# s = Speedloaders, intended to reload guns quickly.
|
||||
@@ -15,7 +15,7 @@
|
||||
# Likewise, when creating new rounds, the caliber variable should match whatever
|
||||
# the name says.
|
||||
#
|
||||
# This comment is copied in rounds.dm as well.
|
||||
# This comment is copied in rounds.dm and ammo_boxes.dm as well.
|
||||
#
|
||||
# Also, if a magazine is only meant for a specific gun, include the name
|
||||
# of the specific gun in the path. Example: m45uzi is only for the Uzi.
|
||||
@@ -35,12 +35,13 @@
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
|
||||
// SMG
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg
|
||||
name = "\improper Donk-Soft smg magazine"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
@@ -52,13 +53,13 @@
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
matter = list(MAT_PLASTIC = 1260, MAT_PLASTIC = 250)
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// .357 /////////
|
||||
|
||||
/obj/item/ammo_magazine/s357
|
||||
@@ -71,6 +72,21 @@
|
||||
max_ammo = 6
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/s357/stun
|
||||
name = "speedloader (.357 stun)"
|
||||
icon_state = "T38"
|
||||
ammo_type = /obj/item/ammo_casing/a357/stun
|
||||
|
||||
/obj/item/ammo_magazine/s357/rubber
|
||||
name = "speedloader (.357 rubber)"
|
||||
icon_state = "T38"
|
||||
ammo_type = /obj/item/ammo_casing/a357/rubber
|
||||
|
||||
/obj/item/ammo_magazine/s357/flash
|
||||
name = "speedloader (.357 flash)"
|
||||
icon_state = "S38"
|
||||
ammo_type = /obj/item/ammo_casing/a357/flash
|
||||
|
||||
///////// .38 /////////
|
||||
|
||||
/obj/item/ammo_magazine/s38
|
||||
@@ -131,6 +147,7 @@
|
||||
name = "ammunition box (.45 haywire)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/emp
|
||||
|
||||
// Uzi
|
||||
/obj/item/ammo_magazine/m45uzi
|
||||
name = "stick magazine (.45)"
|
||||
icon_state = "uzi45"
|
||||
@@ -144,14 +161,16 @@
|
||||
/obj/item/ammo_magazine/m45uzi/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Tommy Gun
|
||||
/obj/item/ammo_magazine/m45tommy
|
||||
name = "Tommy Gun magazine (.45)"
|
||||
icon_state = "tommy-mag"
|
||||
icon_state = "tomstick"
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 1500)
|
||||
caliber = ".45"
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m45tommy/ap
|
||||
name = "Tommy Gun magazine (.45 AP)"
|
||||
@@ -162,21 +181,23 @@
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum
|
||||
name = "Tommy Gun drum magazine (.45)"
|
||||
icon_state = "tommy-drum"
|
||||
icon_state = "tomdrum"
|
||||
w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets!
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 3750)
|
||||
caliber = ".45"
|
||||
max_ammo = 50
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum/ap
|
||||
name = "Tommy Gun drum magazine (.45 AP)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/ap
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c45
|
||||
name = "ammo clip (.45)"
|
||||
icon_state = "clip_pistol"
|
||||
@@ -199,13 +220,14 @@
|
||||
name = "ammo clip (.45 flash)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/flash
|
||||
|
||||
// Speedloader
|
||||
/obj/item/ammo_magazine/s45
|
||||
name = "speedloader (.45)"
|
||||
icon_state = "45s"
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
|
||||
caliber = ".45"
|
||||
max_ammo = 7
|
||||
max_ammo = 6
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/s45/empty
|
||||
@@ -238,6 +260,9 @@
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m5mmcaseless/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m5mmcaseless/stun
|
||||
icon_state = "caseless-mag-alt"
|
||||
ammo_type = /obj/item/ammo_casing/a5mmcaseless/stun
|
||||
@@ -246,7 +271,7 @@
|
||||
|
||||
/obj/item/ammo_magazine/m9mm
|
||||
name = "magazine (9mm)"
|
||||
icon_state = "9x19p_fullsize"
|
||||
icon_state = "m91"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 600)
|
||||
@@ -255,15 +280,6 @@
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large
|
||||
desc = "\"FOR LAW ENFORCEMENT/MILITARY USE ONLY\" is clearly etched on the magazine. This is probably illegal for you to have." // Remember, Security is not Law Enforcement, so it's illegal for Security to use as well.
|
||||
icon_state = "9x19p_highcap"
|
||||
max_ammo = 17
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1)
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/preban // Sold by traders.
|
||||
desc = "A large capacity magazine that was built before the SolGov Assault Weapons Ban, so it's legal to own."
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/empty
|
||||
initial_ammo = 0
|
||||
|
||||
@@ -279,10 +295,33 @@
|
||||
name = "magazine (9mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/practice
|
||||
|
||||
// Extended
|
||||
/obj/item/ammo_magazine/m9mm/large
|
||||
name = "extended magazine (9mm)"
|
||||
desc = "\"FOR LAW ENFORCEMENT/MILITARY USE ONLY\" is clearly etched on the magazine. This is probably illegal for you to have." // Remember, Security is not Law Enforcement, so it's illegal for Security to use as well.
|
||||
icon_state = "m93"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
caliber = "9mm"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm
|
||||
max_ammo = 17
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/preban // Sold by traders.
|
||||
desc = "A large capacity magazine that was built before the SolGov Assault Weapons Ban, so it's legal to own."
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/preban/hp // Hollow Point version
|
||||
name = "magazine (9mm hollow-point)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/hp
|
||||
|
||||
// Compact
|
||||
/obj/item/ammo_magazine/m9mm/compact
|
||||
name = "compact magazine (9mm)"
|
||||
icon_state = "9x19p"
|
||||
icon_state = "m92"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 480)
|
||||
@@ -337,6 +376,7 @@
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/ap
|
||||
matter = list(MAT_STEEL = 1000, MAT_PLASTEEL = 2000)
|
||||
|
||||
// P90
|
||||
/obj/item/ammo_magazine/m9mmp90
|
||||
name = "large capacity top mounted magazine (9mm armor-piercing)"
|
||||
icon_state = "p90"
|
||||
@@ -350,6 +390,7 @@
|
||||
/obj/item/ammo_magazine/m9mmp90/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c9mm
|
||||
name = "ammo clip (9mm)"
|
||||
icon_state = "clip_pistol"
|
||||
@@ -372,6 +413,7 @@
|
||||
name = "ammo clip (.45 flash)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/flash
|
||||
|
||||
// Advanced SMG
|
||||
/obj/item/ammo_magazine/m9mmAdvanced
|
||||
desc = "A very high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm bullets."
|
||||
icon_state = "S9mm"
|
||||
@@ -408,20 +450,6 @@
|
||||
/obj/item/ammo_magazine/m10mm/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/clip/c10mm
|
||||
name = "ammo clip (10mm)"
|
||||
icon_state = "clip_pistol"
|
||||
desc = "A stripper clip for reloading 5mm rounds into magazines."
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm
|
||||
matter = list(MAT_STEEL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/box/emp/b10
|
||||
name = "ammunition box (10mm haywire)"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||
|
||||
///////// 5.45mm /////////
|
||||
|
||||
/obj/item/ammo_magazine/m545
|
||||
@@ -435,41 +463,43 @@
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m545/ext
|
||||
name = "extended magazine (5.45mm)"
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545/ext/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545/practice
|
||||
name = "magazine (5.45mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/practice
|
||||
|
||||
/obj/item/ammo_magazine/m545/practice/ext
|
||||
name = "extended magazine (5.45mm practice)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/ap
|
||||
name = "magazine (5.45mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
|
||||
/obj/item/ammo_magazine/m545/ap/ext
|
||||
name = "extended magazine (5.45mm armor-piercing)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/hunter
|
||||
name = "magazine (5.45mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
|
||||
// Extended
|
||||
/obj/item/ammo_magazine/m545/ext
|
||||
name = "extended magazine (5.45mm)"
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/ext/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545/practice/ext
|
||||
name = "extended magazine (5.45mm practice)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/ap/ext
|
||||
name = "extended magazine (5.45mm armor-piercing)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/hunter/ext
|
||||
name = "extended magazine (5.45mm hunting)"
|
||||
max_ammo = 30
|
||||
|
||||
// Reduced
|
||||
/obj/item/ammo_magazine/m545/small
|
||||
name = "reduced magazine (5.45mm)"
|
||||
icon_state = "m545-small"
|
||||
@@ -491,6 +521,7 @@
|
||||
name = "magazine (5.45mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c545
|
||||
name = "ammo clip (5.45mm)"
|
||||
icon_state = "clip_rifle"
|
||||
@@ -512,6 +543,7 @@
|
||||
name = "rifle clip (5.45mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a545
|
||||
|
||||
// SAW
|
||||
/obj/item/ammo_magazine/m545saw
|
||||
name = "magazine box (5.45mm)"
|
||||
icon_state = "a545"
|
||||
@@ -524,6 +556,9 @@
|
||||
max_ammo = 50
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m545saw/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545saw/ap
|
||||
name = "magazine box (5.45mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
@@ -532,9 +567,6 @@
|
||||
name = "magazine box (5.45mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
|
||||
/obj/item/ammo_magazine/m545saw/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// .44 Magnum /////////
|
||||
|
||||
/obj/item/ammo_magazine/m44
|
||||
@@ -551,6 +583,7 @@
|
||||
/obj/item/ammo_magazine/m44/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c44
|
||||
name = "ammo clip (.44)"
|
||||
icon_state = "clip_pistol"
|
||||
@@ -561,6 +594,7 @@
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
// Speedloader
|
||||
/obj/item/ammo_magazine/s44
|
||||
name = "speedloader (.44)"
|
||||
icon_state = "44"
|
||||
@@ -595,33 +629,31 @@
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762/ap
|
||||
name = "magazine (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762/empty
|
||||
// Extended
|
||||
/obj/item/ammo_magazine/m762/ext
|
||||
name = "extended magazine (7.62mm)"
|
||||
icon_state = "m762"
|
||||
matter = list(MAT_STEEL = 4000)
|
||||
max_ammo = 20
|
||||
|
||||
/obj/item/ammo_magazine/m762/ext/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle.
|
||||
name = "magazine (7.62mm)"
|
||||
icon_state = "m762"
|
||||
mag_type = MAGAZINE
|
||||
caliber = "7.62mm"
|
||||
matter = list(MAT_STEEL = 4000)
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762m/ap
|
||||
/obj/item/ammo_magazine/m762/ext/ap
|
||||
name = "magazine (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762m/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762garand
|
||||
name = "garand clip (7.62mm)" // The clip goes into the magazine, hence the name. I'm very sure this is correct.
|
||||
icon_state = "gclip"
|
||||
// Enbloc
|
||||
/obj/item/ammo_magazine/m762enbloc
|
||||
name = "enbloc (7.62mm)"
|
||||
icon_state = "enbloc"
|
||||
mag_type = MAGAZINE
|
||||
caliber = "7.62mm"
|
||||
matter = list(MAT_STEEL = 1600)
|
||||
@@ -629,13 +661,14 @@
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762garand/ap
|
||||
/obj/item/ammo_magazine/m762enbloc/ap
|
||||
name = "garand clip (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762/empty
|
||||
/obj/item/ammo_magazine/m762enbloc/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c762
|
||||
name = "ammo clip (7.62mm)"
|
||||
icon_state = "clip_rifle"
|
||||
@@ -657,6 +690,7 @@
|
||||
name = "rifle clip (7.62mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hunter
|
||||
|
||||
// SVD
|
||||
/obj/item/ammo_magazine/m762svd
|
||||
name = "\improper SVD magazine (7.62mm)"
|
||||
icon_state = "SVD"
|
||||
@@ -667,13 +701,13 @@
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762svd/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762svd/ap
|
||||
name = "\improper SVD magazine (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762svd/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// 12g /////////
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum
|
||||
@@ -686,6 +720,9 @@
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum/beanbag
|
||||
name = "magazine (12 gauge beanbag)"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/beanbag
|
||||
@@ -698,9 +735,7 @@
|
||||
name = "magazine (12 gauge flash)"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flash
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Clip
|
||||
/obj/item/ammo_magazine/clip/c12g
|
||||
name = "ammo clip (12g slug)"
|
||||
icon_state = "12gclipslug" // Still a placeholder sprite. Feel free to make a better one.
|
||||
@@ -738,15 +773,3 @@
|
||||
|
||||
/obj/item/ammo_magazine/m75/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// Misc. /////////
|
||||
|
||||
/obj/item/ammo_magazine/caps
|
||||
name = "speedloader (caps)"
|
||||
icon_state = "T38"
|
||||
caliber = "caps"
|
||||
color = "#FF0000"
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
matter = list(MAT_STEEL = 600)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
@@ -1,9 +0,0 @@
|
||||
/obj/item/ammo_magazine/m9mm/large/preban/hp // Hollow Point Version
|
||||
name = "magazine (9mm hollow-point)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/hp
|
||||
|
||||
/obj/item/weapon/magnetic_ammo/pistol/khi
|
||||
name = "flechette magazine (small, khi)"
|
||||
desc = "A magazine containing smaller carbyne flechettes, intended for a pistol."
|
||||
icon_state = "caseless-mag-short-alt"
|
||||
remaining = 12
|
||||
@@ -17,3 +17,9 @@
|
||||
name = "flechette magazine (small)"
|
||||
desc = "A magazine containing smaller steel flechettes, intended for a pistol."
|
||||
icon_state = "caseless-mag-short"
|
||||
|
||||
/obj/item/weapon/magnetic_ammo/pistol/khi
|
||||
name = "flechette magazine (small, khi)"
|
||||
desc = "A magazine containing smaller carbyne flechettes, intended for a pistol."
|
||||
icon_state = "caseless-mag-short-alt"
|
||||
remaining = 12
|
||||
@@ -222,6 +222,18 @@
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
matter = list(MAT_STEEL = 75)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/practice
|
||||
desc = "A 10mm practice bullet casing."
|
||||
icon_state = "r-casing"
|
||||
projectile_type = /obj/item/projectile/bullet/practice
|
||||
matter = list(MAT_STEEL = 60)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/rubber
|
||||
desc = "A 10mm rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||
icon_state = "r-casing"
|
||||
matter = list(MAT_STEEL = 60)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/emp
|
||||
name = "10mm haywire round"
|
||||
desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
set src in range(0)
|
||||
|
||||
dropnoms_active = !dropnoms_active
|
||||
to_chat(user,"<span class = 'info'>You switch \the [src]'s spatial rearrangement [dropnoms_active ? "on" : "off"]. (Telenoms [dropnoms_active ? "enabled" : "dsiabled"])</span>")
|
||||
to_chat(user,"<span class = 'info'>You switch \the [src]'s spatial rearrangement [dropnoms_active ? "on" : "off"]. (Telenoms [dropnoms_active ? "enabled" : "disabled"])</span>")
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/update_icon()
|
||||
if(transforming)
|
||||
|
||||
@@ -127,35 +127,6 @@
|
||||
cut_overlays()
|
||||
update_mode()
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////////// Custom Ammo ////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
//---------------- Beams ----------------
|
||||
/obj/item/projectile/beam/eluger
|
||||
name = "laser beam"
|
||||
icon_state = "xray"
|
||||
light_color = "#00FF00"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/imperial
|
||||
name = "laser beam"
|
||||
fire_sound = 'sound/weapons/mandalorian.ogg'
|
||||
icon_state = "darkb"
|
||||
light_color = "#8837A3"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
|
||||
tracer_type = /obj/effect/projectile/tracer/darkmatter
|
||||
impact_type = /obj/effect/projectile/impact/darkmatter
|
||||
|
||||
/obj/item/projectile/beam/stun/kin21
|
||||
name = "kinh21 stun beam"
|
||||
icon_state = "omnilaser"
|
||||
light_color = "#0000FF"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
//Gun Locking Mechanism
|
||||
/obj/item/weapon/gun/energy/locked
|
||||
req_access = list(access_armory) //for toggling safety
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
slot_flags = SLOT_BACK
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/m762
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762/ext)
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a762
|
||||
|
||||
one_handed_penalty = 45
|
||||
@@ -429,7 +429,7 @@
|
||||
..()
|
||||
if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
|
||||
icon_state = "bullpup-small"
|
||||
else if(istype(ammo_magazine,/obj/item/ammo_magazine/m762m))
|
||||
else if(istype(ammo_magazine,/obj/item/ammo_magazine/m762/ext))
|
||||
icon_state = "bullpup"
|
||||
else
|
||||
item_state = "bullpup-empty"
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
caliber = ".45"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
ammo_type = /obj/item/ammo_casing/a45/rubber
|
||||
max_shells = 7
|
||||
max_shells = 6
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
slot_flags = SLOT_BACK
|
||||
//fire_sound = 'sound/weapons/rifleshot.ogg'
|
||||
load_method = MAGAZINE // ToDo: Make it so MAGAZINE, SPEEDLOADER and SINGLE_CASING can all be used on the same gun.
|
||||
magazine_type = /obj/item/ammo_magazine/m762garand
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762garand)
|
||||
magazine_type = /obj/item/ammo_magazine/m762enbloc
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762enbloc)
|
||||
auto_eject = 1
|
||||
auto_eject_sound = 'sound/weapons/garand_ping.ogg'
|
||||
|
||||
|
||||
@@ -37,6 +37,14 @@
|
||||
icon_state = "laser"
|
||||
damage = 15
|
||||
|
||||
/obj/item/projectile/beam/weaklaser/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/smalllaser
|
||||
damage = 25
|
||||
|
||||
@@ -44,7 +52,7 @@
|
||||
damage = 30
|
||||
armor_penetration = 10
|
||||
|
||||
|
||||
|
||||
/obj/item/projectile/beam/midlaser
|
||||
damage = 40
|
||||
armor_penetration = 10
|
||||
@@ -226,7 +234,7 @@
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 40
|
||||
agony = 35
|
||||
damage_type = HALLOSS
|
||||
light_color = "#FFFFFF"
|
||||
hitsound = 'sound/weapons/zapbang.ogg'
|
||||
@@ -264,6 +272,34 @@
|
||||
if(A.cell)
|
||||
A.cell.give(drainamt * 2)
|
||||
|
||||
/obj/item/projectile/beam/stun/kin21
|
||||
name = "kinh21 stun beam"
|
||||
icon_state = "omnilaser"
|
||||
light_color = "#0000FF"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/stun/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/disable
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 100 //One shot stuns for the time being until adjustments are fully made.
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CECE"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/shock
|
||||
name = "shock beam"
|
||||
icon_state = "lightning"
|
||||
@@ -282,11 +318,26 @@
|
||||
damage = 5
|
||||
agony = 10
|
||||
|
||||
/obj/item/projectile/beam/eluger
|
||||
name = "laser beam"
|
||||
icon_state = "xray"
|
||||
light_color = "#00FF00"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/imperial
|
||||
name = "laser beam"
|
||||
fire_sound = 'sound/weapons/mandalorian.ogg'
|
||||
icon_state = "darkb"
|
||||
light_color = "#8837A3"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
|
||||
tracer_type = /obj/effect/projectile/tracer/darkmatter
|
||||
impact_type = /obj/effect/projectile/impact/darkmatter
|
||||
|
||||
//
|
||||
// Projectile Beam Definitions
|
||||
//
|
||||
|
||||
/obj/item/projectile/beam/pointdefense
|
||||
name = "point defense salvo"
|
||||
icon_state = "laser"
|
||||
@@ -300,3 +351,63 @@
|
||||
muzzle_type = /obj/effect/projectile/muzzle/pointdefense
|
||||
tracer_type = /obj/effect/projectile/tracer/pointdefense
|
||||
impact_type = /obj/effect/projectile/impact/pointdefense
|
||||
|
||||
//
|
||||
// Energy Net
|
||||
//
|
||||
/obj/item/projectile/beam/energy_net
|
||||
name = "energy net projection"
|
||||
icon_state = "xray"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CC33"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/energy_net/on_hit(var/atom/netted)
|
||||
do_net(netted)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/beam/energy_net/proc/do_net(var/mob/M)
|
||||
var/obj/item/weapon/energy_net/net = new (get_turf(M))
|
||||
net.throw_impact(M)
|
||||
|
||||
//
|
||||
// Healing Beam
|
||||
//
|
||||
/obj/item/projectile/beam/medigun
|
||||
name = "healing beam"
|
||||
icon_state = "healbeam"
|
||||
damage = 0 //stops it damaging walls
|
||||
nodamage = TRUE
|
||||
no_attack_log = TRUE
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#80F5FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/medigun
|
||||
tracer_type = /obj/effect/projectile/tracer/medigun
|
||||
impact_type = /obj/effect/projectile/impact/medigun
|
||||
|
||||
/obj/item/projectile/beam/medigun/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if(M.health < M.maxHealth)
|
||||
var/obj/effect/overlay/pulse = new /obj/effect/overlay(get_turf(M))
|
||||
pulse.icon = 'icons/effects/effects.dmi'
|
||||
pulse.icon_state = "heal"
|
||||
pulse.name = "heal"
|
||||
pulse.anchored = TRUE
|
||||
spawn(20)
|
||||
qdel(pulse)
|
||||
to_chat(target, "<span class='notice'>As the beam strikes you, your injuries close up!</span>")
|
||||
M.adjustBruteLoss(-15)
|
||||
M.adjustFireLoss(-15)
|
||||
M.adjustToxLoss(-5)
|
||||
M.adjustOxyLoss(-5)
|
||||
return 1
|
||||
@@ -1,85 +0,0 @@
|
||||
/obj/item/projectile/beam/disable
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 100 //One shot stuns for the time being until adjustments are fully made.
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CECE"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/stun
|
||||
agony = 35
|
||||
|
||||
/obj/item/projectile/beam/energy_net
|
||||
name = "energy net projection"
|
||||
icon_state = "xray"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CC33"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/energy_net/on_hit(var/atom/netted)
|
||||
do_net(netted)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/beam/energy_net/proc/do_net(var/mob/M)
|
||||
var/obj/item/weapon/energy_net/net = new (get_turf(M))
|
||||
net.throw_impact(M)
|
||||
|
||||
/obj/item/projectile/beam/stun/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/weaklaser/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/medigun
|
||||
name = "healing beam"
|
||||
icon_state = "healbeam"
|
||||
damage = 0 //stops it damaging walls
|
||||
nodamage = TRUE
|
||||
no_attack_log = TRUE
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#80F5FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/medigun
|
||||
tracer_type = /obj/effect/projectile/tracer/medigun
|
||||
impact_type = /obj/effect/projectile/impact/medigun
|
||||
|
||||
/obj/item/projectile/beam/medigun/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if(M.health < M.maxHealth)
|
||||
var/obj/effect/overlay/pulse = new /obj/effect/overlay(get_turf(M))
|
||||
pulse.icon = 'icons/effects/effects.dmi'
|
||||
pulse.icon_state = "heal"
|
||||
pulse.name = "heal"
|
||||
pulse.anchored = TRUE
|
||||
spawn(20)
|
||||
qdel(pulse)
|
||||
to_chat(target, "<span class='notice'>As the beam strikes you, your injuries close up!</span>")
|
||||
M.adjustBruteLoss(-15)
|
||||
M.adjustFireLoss(-15)
|
||||
M.adjustToxLoss(-5)
|
||||
M.adjustOxyLoss(-5)
|
||||
return 1
|
||||
@@ -1,29 +0,0 @@
|
||||
/obj/item/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
|
||||
damage = 10
|
||||
agony = 60
|
||||
embed_chance = 0
|
||||
sharp = FALSE
|
||||
check_armour = "melee"
|
||||
|
||||
/obj/item/projectile/energy/flash/strong
|
||||
name = "chemical shell"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
|
||||
flash_strength = 15
|
||||
brightness = 15
|
||||
|
||||
/obj/item/projectile/energy/electrode/stunshot/strong
|
||||
name = "stunshot"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
taser_effect = 1
|
||||
agony = 100
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/flechette/small/khi
|
||||
name = "small carbyne flechette"
|
||||
icon_state = "flechette"
|
||||
fire_sound = 'sound/weapons/rapidslice.ogg'
|
||||
damage = 18
|
||||
armor_penetration = 100
|
||||
penetrating = 10
|
||||
@@ -87,6 +87,13 @@
|
||||
damage = 5
|
||||
agony = 80
|
||||
|
||||
/obj/item/projectile/energy/electrode/stunshot/strong
|
||||
name = "stunshot"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
taser_effect = 1
|
||||
agony = 100
|
||||
|
||||
/obj/item/projectile/energy/declone
|
||||
name = "declone"
|
||||
icon_state = "declone"
|
||||
@@ -136,6 +143,19 @@
|
||||
name = "largebolt"
|
||||
damage = 20
|
||||
|
||||
/obj/item/projectile/energy/bow
|
||||
name = "engergy bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 20
|
||||
|
||||
/obj/item/projectile/energy/bow/heavy
|
||||
damage = 30
|
||||
icon_state = "cbbolt"
|
||||
|
||||
/obj/item/projectile/energy/bow/stun
|
||||
name = "stun bolt"
|
||||
agony = 30
|
||||
|
||||
/obj/item/projectile/energy/acid //Slightly up-gunned (Read: The thing does agony and checks bio resist) variant of the simple alien mob's projectile, for queens and sentinels.
|
||||
name = "acidic spit"
|
||||
icon_state = "neurotoxin"
|
||||
@@ -260,3 +280,23 @@
|
||||
range = 10
|
||||
damage = 15
|
||||
SA_bonus_damage = 60 // 75 total on animals
|
||||
|
||||
/obj/item/projectile/energy/electrode/strong
|
||||
agony = 70
|
||||
|
||||
/obj/item/projectile/energy
|
||||
flash_strength = 10
|
||||
|
||||
/obj/item/projectile/energy/flash
|
||||
flash_range = 1
|
||||
|
||||
/obj/item/projectile/energy/flash/strong
|
||||
name = "chemical shell"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
|
||||
flash_strength = 15
|
||||
brightness = 15
|
||||
|
||||
/obj/item/projectile/energy/flash/flare
|
||||
flash_range = 2
|
||||
@@ -1,25 +0,0 @@
|
||||
/obj/item/projectile/energy/electrode/strong
|
||||
agony = 70
|
||||
|
||||
/obj/item/projectile/energy
|
||||
flash_strength = 10
|
||||
|
||||
/obj/item/projectile/energy/flash
|
||||
flash_range = 1
|
||||
|
||||
/obj/item/projectile/energy/flash/flare
|
||||
flash_range = 2
|
||||
|
||||
/obj/item/projectile/energy/bow
|
||||
name = "engergy bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 20
|
||||
|
||||
|
||||
/obj/item/projectile/energy/bow/heavy
|
||||
damage = 30
|
||||
icon_state = "cbbolt"
|
||||
|
||||
/obj/item/projectile/energy/bow/stun
|
||||
name = "stun bolt"
|
||||
agony = 30
|
||||
@@ -30,6 +30,14 @@
|
||||
damage = 12
|
||||
armor_penetration = 100
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/flechette/small/khi
|
||||
name = "small carbyne flechette"
|
||||
icon_state = "flechette"
|
||||
fire_sound = 'sound/weapons/rapidslice.ogg'
|
||||
damage = 18
|
||||
armor_penetration = 100
|
||||
penetrating = 10
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/flechette/hunting
|
||||
name = "shredder slug"
|
||||
armor_penetration = 30
|
||||
@@ -180,4 +188,4 @@
|
||||
explosion(A, -1, -1, 1, 3)
|
||||
return ..()
|
||||
else
|
||||
..()
|
||||
..()
|
||||
@@ -67,6 +67,7 @@
|
||||
id = "cookingoilpeanut"
|
||||
result = "cookingoil"
|
||||
required_reagents = list("peanutoil" = 10)
|
||||
inhibitors = list("sugar" = 1, "sodiumchloride" = 1)
|
||||
catalysts = list("enzyme" = 5)
|
||||
result_amount = 10
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
id = "stunshell"
|
||||
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
|
||||
materials = list(MAT_STEEL = 4000)
|
||||
build_path = /obj/item/weapon/storage/box/stunshells
|
||||
build_path = /obj/item/ammo_magazine/ammo_box/b12g/stunshell
|
||||
sort_string = "MABBB"
|
||||
|
||||
/datum/design/item/weapon/ballistic/ammo/empshell
|
||||
@@ -121,7 +121,7 @@
|
||||
id = "empshell"
|
||||
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
|
||||
materials = list(MAT_STEEL = 4000, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/weapon/storage/box/empshells
|
||||
build_path = /obj/item/ammo_magazine/ammo_box/b12g/emp
|
||||
sort_string = "MABBC"
|
||||
|
||||
// Phase weapons
|
||||
|
||||
@@ -161,7 +161,11 @@ GLOBAL_LIST_BOILERPLATE(papers_dockingcode, /obj/item/weapon/paper/dockingcodes)
|
||||
|
||||
/obj/item/weapon/paper/dockingcodes/proc/populate_info()
|
||||
var/dockingcodes = null
|
||||
var/z_to_check = codes_from_z ? codes_from_z : z
|
||||
var/turf/T = get_turf(src)
|
||||
var/our_z
|
||||
if(T)
|
||||
our_z = T.z
|
||||
var/z_to_check = codes_from_z ? codes_from_z : our_z
|
||||
if(using_map.use_overmap)
|
||||
var/obj/effect/overmap/visitable/location = get_overmap_sector(z_to_check)
|
||||
if(location && location.docking_codes)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
var/absorbed = FALSE // If a mob is absorbed into another
|
||||
var/list/temp_language_sources = list() //VOREStation Addition - Absorbs add languages to the pred
|
||||
var/list/temp_languages = list() //VOREStation Addition - Absorbs add languages to the pred
|
||||
var/prey_controlled = FALSE //VOREStation Addition
|
||||
var/weight = 137 // Weight for mobs for weightgain system
|
||||
var/weight_gain = 1 // How fast you gain weight
|
||||
var/weight_loss = 0.5 // How fast you lose weight
|
||||
@@ -895,12 +896,15 @@
|
||||
|
||||
/mob/living/examine(mob/user, infix, suffix)
|
||||
. = ..()
|
||||
if(showvoreprefs)
|
||||
. += "<span class='deptradio'><a href='?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>"
|
||||
if(ooc_notes)
|
||||
. += "<span class = 'deptradio'>OOC Notes:</span> <a href='?src=\ref[src];ooc_notes=1'>\[View\]</a>"
|
||||
. += "<span class='deptradio'><a href='?src=\ref[src];vore_prefs=1'>\[Mechanical Vore Preferences\]</a></span>"
|
||||
|
||||
/mob/living/Topic(href, href_list) //Can't find any instances of Topic() being overridden by /mob/living in polaris' base code, even though /mob/living/carbon/human's Topic() has a ..() call
|
||||
if(href_list["vore_prefs"])
|
||||
display_voreprefs(usr)
|
||||
if(href_list["ooc_notes"])
|
||||
src.Examine_OOC()
|
||||
return ..()
|
||||
|
||||
/mob/living/proc/display_voreprefs(mob/user) //Called by Topic() calls on instances of /mob/living (and subtypes) containing vore_prefs as an argument
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
//
|
||||
// Size Gun
|
||||
//
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun
|
||||
name = "size gun" //I have no idea why this was called shrink ray when this increased and decreased size.
|
||||
desc = "A highly advanced ray gun with a knob on the side to adjust the size you desire. Warning: Do not insert into mouth."
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_override = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "sizegun"
|
||||
item_state = "sizegun"
|
||||
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi')
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
charge_cost = 240
|
||||
projectile_type = /obj/item/projectile/beam/sizelaser
|
||||
@@ -82,20 +81,39 @@
|
||||
/obj/item/weapon/gun/energy/sizegun/admin
|
||||
name = "modified size gun"
|
||||
desc = "An older model sizegun, modified to be without limits on minimum/maximum size, and have an unlimited charge. Time to show 'em that size does matter."
|
||||
description_fluff = "A standard size gun that has been modified with \
|
||||
a distabilized bluespace element that has allowed the gun to break the \
|
||||
normal laws of physics and create a 'weapon' capable of sizing any \
|
||||
creature well beyond any conceivable size. Only a handfull of these \
|
||||
exist in the known universe and they are \
|
||||
exclusively owned by NanoTrasen for research purposes."
|
||||
icon_state = "sizegun_admin"
|
||||
item_state = "sizegun_admin"
|
||||
charge_cost = 0
|
||||
projectile_type = /obj/item/projectile/beam/sizelaser/admin
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun/abductor
|
||||
name = "alien size gun"
|
||||
icon_state = "sizegun-abductor"
|
||||
item_state = "laser"
|
||||
charge_cost = 0
|
||||
projectile_type = /obj/item/projectile/beam/sizelaser/admin
|
||||
/datum/category_item/catalogue/anomalous/precursor_a/alien_sizegun
|
||||
name = "Precursor Alpha Object - Matter Manipulation Ray"
|
||||
desc = "This appears to be some sort of weapon and if someone were to pull \
|
||||
the trigger lopcated at the handle of the device it would fire a strong \
|
||||
laser at whatever it is pointed towards. While the laser certainly looks \
|
||||
dangerous, it is not, instead it is a powerful size manipulation spectrum \
|
||||
that is not disimilar to the size guns used by NanoTrasen.\
|
||||
<br><br>\
|
||||
It is unknown why the precursors would need such a device, possibly for \
|
||||
making it easier to transport large specimines. It is hard to tell \
|
||||
exactly what purpose such a device served the precursors but researchers \
|
||||
have their theories as they continue to analyse the technology."
|
||||
value = CATALOGUER_REWARD_MEDIUM
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun/abductor/update_icon(ignore_inhands)
|
||||
item_state = initial(item_state)
|
||||
/obj/item/weapon/gun/energy/sizegun/admin/abductor
|
||||
name = "alien size gun"
|
||||
desc = "A strange looking ray gun weapon with an adjustor knob on the side. The design is alien, but it bares a striking resemblence to the older model size guns that NT uses for research."
|
||||
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_sizegun)
|
||||
icon_state = "sizegun-abductor"
|
||||
item_state = "sizegun-abductor"
|
||||
charge_cost = 0
|
||||
projectile_type = /obj/item/projectile/beam/sizelaser/admin/alien
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun/admin/select_size()
|
||||
set name = "Select Size"
|
||||
@@ -108,10 +126,14 @@
|
||||
size_set_to = clamp((size_select/100), 0, 1000) //eheh
|
||||
to_chat(usr, "<span class='notice'>You set the size to [size_select]%</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun/mounted
|
||||
name = "mounted size gun"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
//
|
||||
// Beams for size gun
|
||||
//
|
||||
|
||||
/obj/item/projectile/beam/sizelaser
|
||||
name = "size beam"
|
||||
icon_state = "xray"
|
||||
@@ -165,7 +187,10 @@
|
||||
/obj/item/projectile/beam/sizelaser/grow
|
||||
set_size = 2.0 //200% of current size
|
||||
|
||||
/obj/item/weapon/gun/energy/sizegun/mounted
|
||||
name = "mounted size gun"
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
/obj/item/projectile/beam/sizelaser/admin/alien
|
||||
name = "alien size beam"
|
||||
icon_state = "darkb"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
|
||||
tracer_type = /obj/effect/projectile/tracer/darkmatter
|
||||
impact_type = /obj/effect/projectile/impact/darkmatter
|
||||
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 210 KiB After Width: | Height: | Size: 211 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 624 KiB After Width: | Height: | Size: 624 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 498 KiB After Width: | Height: | Size: 500 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 62 KiB |