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 += "