From 1c6c733a5233db5980f58138fb4f6f567b2144df Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 8 Sep 2015 19:38:30 -0400 Subject: [PATCH] Nuke Ops and Traitor Update+Balance --- _maps/map_files/cyberiad/z2.dmm | 3 +- code/datums/uplink_item.dm | 86 ++++++++++---- code/game/objects/items/devices/camera_bug.dm | 110 +++--------------- .../objects/items/weapons/storage/backpack.dm | 54 ++++++++- .../objects/items/weapons/storage/storage.dm | 3 + .../objects/items/weapons/storage/toolbox.dm | 3 +- .../items/weapons/storage/uplink_kits.dm | 16 ++- .../crates_lockers/closets/syndicate.dm | 3 +- code/modules/clothing/spacesuits/rig.dm | 4 +- .../projectiles/ammunition/magazines.dm | 8 +- .../reagents/reagent_containers/syringes.dm | 13 ++- icons/obj/storage.dmi | Bin 71679 -> 70993 bytes 12 files changed, 172 insertions(+), 131 deletions(-) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index fdee2b259c3..8ffe65bf82c 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -1539,7 +1539,7 @@ "DE" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/rig/wizard{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/helmet/space/rig/syndi,/obj/item/clothing/head/helmet/space/santahat{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DF" = (/obj/structure/rack,/obj/item/clothing/head/welding/fluff/alice_mccrea_1{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/welding/fluff/norah_briggs_1,/obj/item/clothing/head/welding/fluff/yuki_matsuda_1{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DG" = (/obj/structure/rack,/obj/item/clothing/head/soft/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/soft/blue,/obj/item/clothing/head/soft/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) -"DH" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding,/obj/item/weapon/storage/backpack/duffel/clown,/obj/item/weapon/storage/backpack/duffel/captain,/obj/item/weapon/storage/backpack/duffel/science,/obj/item/weapon/storage/backpack/duffel/syndiammo,/obj/item/weapon/storage/backpack/duffel/syndimed,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) +"DH" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/holding,/obj/item/weapon/storage/backpack/duffel/clown,/obj/item/weapon/storage/backpack/duffel/captain,/obj/item/weapon/storage/backpack/duffel/science,/obj/item/weapon/storage/backpack/duffel/syndie/ammo,/obj/item/weapon/storage/backpack/duffel/syndie/med,/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DI" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/turf/unsimulated/wall{desc = "This window appears to be reinforced, it looks nearly impossible to break."; dir = 8; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; name = "window"; opacity = 0; tag = "icon-window5_end (WEST)"},/area/admin) "DJ" = (/obj/structure/rack,/obj/item/clothing/under/shorts/black{pixel_x = -3; pixel_y = 3},/obj/item/clothing/under/shorts/blue,/obj/item/clothing/under/shorts/red{pixel_x = 3; pixel_y = -3},/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) "DK" = (/turf/unsimulated/floor{tag = "icon-floor"; icon_state = "floor"},/area/admin) @@ -2071,3 +2071,4 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN "} + diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index ac914c9d3f6..f6101b6dcd2 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -165,7 +165,7 @@ var/list/uplink_items = list() desc = "A radiation laser concealed inside of a Health Analyser. After a moderate delay, causes temporary collapse and radiation. Has adjustable controls, but will not function as a regular health analyser, only appears like one. May not function correctly on radiation resistant humanoids!" reference = "RL" item = /obj/item/device/rad_laser - cost = 6 + cost = 5 job = list( "Chief Medical Officer", "Medical Doctor", @@ -327,6 +327,14 @@ var/list/uplink_items = list() gamemodes = list("nuclear emergency") surplus = 35 +/datum/uplink_item/ammo/bioterror + name = "Box of Bioterror Syringes" + desc = "A box full of preloaded syringes, containing various chemicals that seize up the victim's motor and broca system , making it impossible for them to move or speak while in their system." + reference = "BTS" + item = /obj/item/weapon/storage/box/syndie_kit/bioterror + cost = 6 + gamemodes = list("nuclear emergency") + /datum/uplink_item/dangerous/tabungrenades name = "Tabun Gas Grenades" desc = "A box of four (4) grenades filled with Tabun, a deadly neurotoxin. Use extreme caution when handling and be sure to vacate the premise after using; ensure communication is maintained with team to avoid accidental gassings." @@ -412,11 +420,27 @@ var/list/uplink_items = list() cost = 2 gamemodes = list("nuclear emergency") +/datum/uplink_item/ammo/ammobag + name = "Ammo Duffelbag - Shotgun Ammo Grab Bag" + desc = "A duffelbag filled with Bulldog ammo to kit out an entire team, at a discounted price." + reference = "SAGL" + item = /obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded + cost = 10 //bulk buyer's discount. Very useful if you're buying a mech and dont have TC left to buy people non-shotgun guns + gamemodes = list("nuclear emergency") + +/datum/uplink_item/ammo/bullslug + name = "Drum Magazine - 12g Slugs" + desc = "An additional 8-round slug magazine for use in the Bulldog shotgun. Now 8 times less likely to shoot your pals." + reference = "12BSG" + item = /obj/item/ammo_box/magazine/m12g + cost = 2 + gamemodes = list("nuclear emergency") + /datum/uplink_item/ammo/bullbuck name = "Drum Magazine - 12g buckshot" desc = "An additional 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy." reference = "12BS" - item = /obj/item/ammo_box/magazine/m12g + item = /obj/item/ammo_box/magazine/m12g/buckshot cost = 2 gamemodes = list("nuclear emergency") @@ -433,7 +457,7 @@ var/list/uplink_items = list() desc = "An alternative 8-round dragon's breath magazine for use in the Bulldog shotgun. I'm a fire starter, twisted fire starter!" reference = "12DB" item = /obj/item/ammo_box/magazine/m12g/dragon - cost = 3 + cost = 2 gamemodes = list("nuclear emergency") /datum/uplink_item/ammo/car @@ -509,7 +533,7 @@ var/list/uplink_items = list() desc = "A pizza box with a bomb taped inside of it. The timer needs to be set by opening the box; afterwards, opening the box again will trigger the detonation." reference = "PB" item = /obj/item/device/pizza_bomb - cost = 4 + cost = 5 surplus = 8 /datum/uplink_item/stealthy_weapons/dehy_carp @@ -529,7 +553,7 @@ var/list/uplink_items = list() desc = "A jumpsuit used to imitate the uniforms of Nanotrasen crewmembers." reference = "CJ" item = /obj/item/clothing/under/chameleon - cost = 4 + cost = 2 /datum/uplink_item/stealthy_tools/chameleon_stamp name = "Chameleon Stamp" @@ -540,26 +564,34 @@ var/list/uplink_items = list() cost = 1 surplus = 35 -/datum/uplink_item/stealthy_tools/syndigolashes +/datum/uplink_item/stealthy_tools/syndigaloshes name = "No-Slip Syndicate Shoes" desc = "These allow you to run on wet floors. They do not work on lubricated surfaces." reference = "NSSS" item = /obj/item/clothing/shoes/syndigaloshes - cost = 4 + cost = 2 + excludefrom = list("nuclear emergency") + +/datum/uplink_item/stealthy_tools/syndigaloshes/nuke + name = "Tactical No-Slip Brown Shoes" + desc = "These allow you to run on wet floors. They do not work on lubricated surfaces, and the maker swears they're better than normal ones, somehow." + reference = "NNSSS" + cost = 4 //but they aren't + gamemodes = list("nuclear emergency") /datum/uplink_item/stealthy_tools/agent_card name = "Agent ID Card" desc = "Agent cards prevent artificial intelligences from tracking the wearer, and can copy access from other identification cards. The access is cumulative, so scanning one card does not erase the access gained from another." reference = "AIDC" item = /obj/item/weapon/card/id/syndicate - cost = 3 + cost = 2 /datum/uplink_item/stealthy_tools/voice_changer name = "Voice Changer" desc = "A conspicuous gas mask that mimics the voice named on your identification card. When no identification is worn, the mask will render your voice unrecognisable." reference = "VC" item = /obj/item/clothing/mask/gas/voice - cost = 5 + cost = 3 /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon-Projector" @@ -570,10 +602,10 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_tools/camera_bug name = "Camera Bug" - desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions." + desc = "Enables you to view all cameras on the network and track a target. Bugging cameras allows you to disable them remotely." reference = "CB" item = /obj/item/device/camera_bug - cost = 2 + cost = 1 surplus = 90 /datum/uplink_item/stealthy_tools/dnascrambler @@ -611,6 +643,20 @@ var/list/uplink_items = list() item = /obj/item/weapon/storage/toolbox/syndicate cost = 1 +/datum/uplink_item/device_tools/surgerybag + name = "Syndicate Surgery Dufflebag" + desc = "The Syndicate surgery dufflebag is a toolkit containing all surgery tools, a straitjacket, and a muzzle." + reference = "SSDB" + item = /obj/item/weapon/storage/backpack/duffel/syndie/surgery + cost = 4 + +/datum/uplink_item/device_tools/military_belt + name = "Military Belt" + desc = "A robust seven-slot red belt made for carrying a broad variety of weapons, ammunition and explosives" + reference = "SBM" + item = /obj/item/weapon/storage/belt/military + cost = 3 + excludefrom = list("nuclear emergency") /datum/uplink_item/device_tools/medkit name = "Syndicate Combat Medic Kit" @@ -621,19 +667,12 @@ var/list/uplink_items = list() cost = 9 gamemodes = list("nuclear emergency") -/datum/uplink_item/badass/syndiecigs - name = "Syndicate Smokes" - desc = "Strong flavor, dense smoke, infused with omnizine." - reference = "SYSM" - item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate - cost = 4 - /datum/uplink_item/device_tools/space_suit name = "Space Suit" desc = "The red and black syndicate space suit is less encumbering than Nanotrasen variants, fits inside bags, and has a weapon slot. Nanotrasen crewmembers are trained to report red space suit sightings." reference = "SS" item = /obj/item/weapon/storage/box/syndie_kit/space - cost = 5 + cost = 4 /datum/uplink_item/device_tools/hardsuit name = "Blood-red Hardsuit" @@ -680,7 +719,7 @@ var/list/uplink_items = list() These reverse-engineered knockoffs of Nanotrasen's 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." reference = "BRMB" item = /obj/item/clothing/shoes/magboots/syndie - cost = 5 + cost = 3 gamemodes = list("nuclear emergency") /datum/uplink_item/device_tools/plastic_explosives @@ -807,6 +846,13 @@ var/list/uplink_items = list() category = "(Pointless) Badassery" surplus = 0 +/datum/uplink_item/badass/syndiecigs + name = "Syndicate Smokes" + desc = "Strong flavor, dense smoke, infused with omnizine." + reference = "SYSM" + item = /obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate + cost = 2 + /datum/uplink_item/badass/bundle name = "Syndicate Bundle" desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 20 telecrystals, but you do not know which specialisation you will receive." diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 69adcfb3ae9..3535048659d 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -1,10 +1,3 @@ -#define VANILLA_BUG 0 -#define UNIVERSAL_BUG 1 -#define NETWORK_BUG 2 -#define SABOTAGE_BUG 3 -#define ADVANCED_BUG 4 -#define ADMIN_BUG 5 - #define BUGMODE_LIST 0 #define BUGMODE_MONITOR 1 #define BUGMODE_TRACK 2 @@ -23,13 +16,9 @@ throw_range = 20 var/obj/machinery/camera/current = null - var/obj/item/expansion = null - var/bugtype = VANILLA_BUG var/last_net_update = 0 - var/last_bugtype = VANILLA_BUG var/list/bugged_cameras = list() - var/skip_bugcheck = 0 var/track_mode = BUGMODE_LIST var/last_tracked = 0 @@ -46,11 +35,6 @@ processing_objects += src /obj/item/device/camera_bug/Destroy() - if(expansion) - qdel(expansion) - expansion = null - return ..() -/* Easier to just call del() than this nonsense get_cameras() for(var/cam_tag in bugged_cameras) var/obj/machinery/camera/camera = bugged_cameras[cam_tag] @@ -59,8 +43,7 @@ bugged_cameras = list() if(tracking) tracking = null - ..() -*/ + return ..() /obj/item/device/camera_bug/interact(var/mob/user = usr) var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) @@ -78,7 +61,7 @@ return null var/turf/T = get_turf(user.loc) - if(T.z != current.z || (!skip_bugcheck && current.bug != src) || !current.can_use()) + if(T.z != current.z || !current.can_use()) user << "[src] has lost the signal." current = null user.reset_view(null) @@ -88,26 +71,18 @@ return 1 /obj/item/device/camera_bug/proc/get_cameras() - if(bugtype != last_bugtype || ( (bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG)) && world.time > (last_net_update + 100))) + if( world.time > (last_net_update + 100)) bugged_cameras = list() - last_bugtype = bugtype for(var/obj/machinery/camera/camera in cameranet.cameras) if(camera.stat || !camera.can_use()) continue - switch(bugtype) - if(VANILLA_BUG,SABOTAGE_BUG,ADVANCED_BUG) - if(camera.bug == src) - bugged_cameras[camera.c_tag] = camera - if(UNIVERSAL_BUG) - if(camera.bug) - bugged_cameras[camera.c_tag] = camera - if(NETWORK_BUG,ADMIN_BUG) - if(length(list("SS13","MINE")&camera.network)) - bugged_cameras[camera.c_tag] = camera + if(length(list("SS13","MINE")&camera.network)) + bugged_cameras[camera.c_tag] = camera sortList(bugged_cameras) return bugged_cameras + /obj/item/device/camera_bug/proc/menu(var/list/cameras) if(!cameras || !cameras.len) return "No bugged cameras found." @@ -119,16 +94,10 @@ for(var/entry in cameras) var/obj/machinery/camera/C = cameras[entry] var/functions = "" - switch(bugtype) - if(SABOTAGE_BUG) - functions = " - \[Disable\]" - if(ADVANCED_BUG) - functions = " - \[Monitor\]" - if(ADMIN_BUG) - if(C.bug == src) - functions = " - \[Monitor\] \[Disable\]" - else - functions = " - \[Monitor\]" + if(C.bug == src) + functions = " - \[Monitor\] \[Disable\]" + else + functions = " - \[Monitor\]" html += "[entry][functions]" if(BUGMODE_MONITOR) @@ -157,6 +126,9 @@ var/s = (time_diff - 4*m) * 15 if(!s) s = "00" html += "Last seen near [outstring] ([m]:[s] minute\s ago)
" + if( C && (C.bug == src)) //Checks to see if the camera has a bug + html += "\[Disable\]" + else html += "Not yet seen." else @@ -309,62 +281,6 @@ break src.updateSelfDialog() -/obj/item/device/camera_bug/attackby(var/obj/item/W as obj,var/mob/living/user as mob, params) - if(istype(W,/obj/item/weapon/screwdriver) && expansion) - expansion.loc = get_turf(loc) - user << "You unscrew [expansion]." - user.put_in_inactive_hand(expansion) - expansion = null - bugtype = VANILLA_BUG - skip_bugcheck = 0 - track_mode = BUGMODE_LIST - tracking = null - return - - if(expansion || !W) - return ..(W,user) - - // I am not sure that this list is or should be final - // really I do not know what to do here. - var/static/list/expandables = list( - /obj/item/weapon/research = ADMIN_BUG, // could have been anything spawn-only - - // these are all so hackish I am sorry - - /obj/item/device/analyzer = UNIVERSAL_BUG, - /obj/item/weapon/stock_parts/subspace/analyzer = UNIVERSAL_BUG, - - /obj/item/device/assembly/igniter = SABOTAGE_BUG, - /obj/item/device/assembly/infra = SABOTAGE_BUG, // ir blaster to disable camera - /obj/item/weapon/stock_parts/subspace/amplifier = SABOTAGE_BUG, - - /obj/item/device/radio = NETWORK_BUG, - /obj/item/device/assembly/signaler = NETWORK_BUG, - /obj/item/weapon/stock_parts/subspace/transmitter = NETWORK_BUG, - - /obj/item/device/detective_scanner = ADVANCED_BUG, - /obj/item/device/paicard = ADVANCED_BUG, - /obj/item/weapon/stock_parts/scanning_module = ADVANCED_BUG - ) - - for(var/entry in expandables) - if(istype(W,entry)) - bugtype = expandables[entry] - user.drop_item() - W.loc = src - expansion = W - user << "You add [W] to [src]." - get_cameras() // the tracking code will want to know the new camera list - if(bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG)) - skip_bugcheck = 1 - return - -#undef VANILLA_BUG -#undef UNIVERSAL_BUG -#undef NETWORK_BUG -#undef SABOTAGE_BUG -#undef ADVANCED_BUG -#undef ADMIN_BUG #undef BUGMODE_LIST #undef BUGMODE_MONITOR diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 4a57227afa0..0bf771709b5 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -231,19 +231,65 @@ max_combined_w_class = 27 slowdown = 1 -/obj/item/weapon/storage/backpack/duffel/syndimed +/obj/item/weapon/storage/backpack/duffel/syndie + name = "suspicious looking dufflebag" + desc = "A large dufflebag for holding extra tactical supplies." + icon_state = "duffel-syndi" + item_state = "duffel-syndimed" + origin_tech = "syndicate=1" + silent = 1 + slowdown = 0 + +/obj/item/weapon/storage/backpack/duffel/syndie/med name = "suspicious duffelbag" desc = "A black and red duffelbag with a red and white cross sewn onto it." icon_state = "duffel-syndimed" item_state = "duffel-syndimed" - slowdown = 0 -/obj/item/weapon/storage/backpack/duffel/syndiammo +/obj/item/weapon/storage/backpack/duffel/syndie/ammo name = "suspicious duffelbag" desc = "A black and red duffelbag with a patch depicting shotgun shells sewn onto it." icon_state = "duffel-syndiammo" item_state = "duffel-syndiammo" - slowdown = 0 + +/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded + desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo." + + New() + ..() + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g(src) + new /obj/item/ammo_box/magazine/m12g/buckshot(src) + new /obj/item/ammo_box/magazine/m12g/stun(src) + new /obj/item/ammo_box/magazine/m12g/dragon(src) + return + +/obj/item/weapon/storage/backpack/duffel/syndie/surgery + name = "surgery dufflebag" + desc = "A suspicious looking dufflebag for holding surgery tools." + icon_state = "duffel-syndimed" + item_state = "duffle-syndimed" + storage_slots = 12 + + New() + ..() + new /obj/item/weapon/scalpel(src) + new /obj/item/weapon/hemostat(src) + new /obj/item/weapon/retractor(src) + new /obj/item/weapon/circular_saw(src) + new /obj/item/weapon/surgicaldrill(src) + new /obj/item/weapon/cautery(src) + new /obj/item/weapon/bonegel(src) + new /obj/item/weapon/bonesetter(src) + new /obj/item/weapon/FixOVein(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/mask/muzzle(src) +// new /obj/item/device/mmi/syndie(src) + return /obj/item/weapon/storage/backpack/duffel/captain name = "captain's duffelbag" diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index a8551e96fd6..65bf38cd961 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -9,6 +9,7 @@ name = "storage" icon = 'icons/obj/storage.dmi' w_class = 3.0 + var/silent = 0 // No message on putting items in var/list/can_hold = new/list() //List of objects which this item can store (if set, it can't store anything else) var/list/cant_hold = new/list() //List of objects which this item can't store (in effect only if can_hold isn't set) var/max_w_class = 2 //Max size of objects that this object can store (in effect only if can_hold isn't set) @@ -292,6 +293,8 @@ if(!usr.unEquip(W)) return 0 usr.update_icons() //update our overlays + if(silent) + prevent_warning = 1 W.loc = src W.on_enter_storage(src) if(usr) diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index de1e1522a6b..51adfcd5a4c 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -77,6 +77,7 @@ icon_state = "syndicate" item_state = "toolbox_syndi" origin_tech = "combat=1;syndicate=1" + silent = 1 force = 15.0 throwforce = 18.0 @@ -88,4 +89,4 @@ new /obj/item/weapon/crowbar(src) new /obj/item/weapon/wirecutters(src) new /obj/item/device/multitool(src) - new /obj/item/clothing/gloves/color/red/insulated(src) \ No newline at end of file + new /obj/item/clothing/gloves/combat(src) \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 09fa9b17db8..d676b3ba967 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -207,4 +207,18 @@ new /obj/item/weapon/grenade/chem_grenade/tabungas(src) new /obj/item/weapon/grenade/chem_grenade/tabungas(src) new /obj/item/weapon/grenade/chem_grenade/tabungas(src) - new /obj/item/weapon/grenade/chem_grenade/tabungas(src) \ No newline at end of file + new /obj/item/weapon/grenade/chem_grenade/tabungas(src) + +/obj/item/weapon/storage/box/syndie_kit/bioterror + name = "bioterror syringe box" + + New() + ..() + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index f62f03b175a..5f21f2d0c84 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -43,8 +43,7 @@ new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/weapon/storage/box/teargas(src) new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/backpack/duffel/syndimed(src) - new /obj/item/weapon/storage/backpack/duffel/syndiammo(src) + new /obj/item/weapon/storage/backpack/duffel/syndie/med(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) new /obj/item/weapon/gun/projectile/automatic/bulldog(src) diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 49181471fe8..6b53a473cd1 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -353,7 +353,7 @@ user << "You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight." name = "blood-red hardsuit helmet (combat)" desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." - flags = BLOCKHAIR + flags = BLOCKHAIR | THICKMATERIAL flags_inv = HIDEEARS cold_protection = null set_light(0) @@ -393,7 +393,7 @@ name = "blood-red hardsuit helmet (combat)" desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." slowdown = 0 - flags = BLOCKHAIR + flags = THICKMATERIAL flags_inv = null cold_protection = null diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index be084ebca0e..7fa2224cbcd 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -188,9 +188,9 @@ icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]" /obj/item/ammo_box/magazine/m12g - name = "shotgun magazine (12g buckshot)" + name = "shotgun magazine (12g slugs)" icon_state = "m12gb" - ammo_type = "/obj/item/ammo_casing/shotgun/buckshot" + ammo_type = "/obj/item/ammo_casing/shotgun" origin_tech = "combat=3;syndicate=1" caliber = "shotgun" max_ammo = 8 @@ -199,6 +199,10 @@ ..() icon_state = "[initial(icon_state)]-[Ceiling(ammo_count(0)/8)*8]" +/obj/item/ammo_box/magazine/m12g/buckshot + name = "shotgun magazine (12g buckshot slugs)" + icon_state = "m12gb" + ammo_type = "/obj/item/ammo_casing/shotgun/buckshot" /obj/item/ammo_box/magazine/m12g/stun name = "shotgun magazine (12g taser slugs)" diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 408076341ee..9fc5fc5f0a2 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -168,7 +168,7 @@ if(target.reagents.total_volume >= target.reagents.maximum_volume) user << "\red [target] is full." return - + var/mob/living/carbon/human/H = target if(istype(H)) var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) @@ -528,3 +528,14 @@ reagents.add_reagent("insulin", 15) mode = SYRINGE_INJECT update_icon() + +/obj/item/weapon/reagent_containers/syringe/bioterror + name = "bioterror syringe" + desc = "Contains several paralyzing reagents." + New() + ..() + reagents.add_reagent("neurotoxin", 5) + reagents.add_reagent("capulettium_plus", 5) + reagents.add_reagent("sodium_thiopental", 5) + mode = SYRINGE_INJECT + update_icon() \ No newline at end of file diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 4a3c4172c7f991f0cc8d0f4b8b67ce9c23bdbe74..f85a316758267b48ee9bab14d92c4c2c7af80f48 100644 GIT binary patch delta 11184 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