diff --git a/baystation12.dme b/baystation12.dme index f1a7f10e973..b9d3fd157d8 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -756,6 +756,7 @@ #include "code\game\objects\structures\simple_doors.dm" #include "code\game\objects\structures\tank_dispenser.dm" #include "code\game\objects\structures\target_stake.dm" +#include "code\game\objects\structures\tranqcabinet.dm" #include "code\game\objects\structures\transit_tubes.dm" #include "code\game\objects\structures\under_wardrobe.dm" #include "code\game\objects\structures\watercloset.dm" diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index cd609cff6ac..1d5f059c6e0 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -708,17 +708,28 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/weapons name = "Weapons crate" + contains = list(/obj/item/weapon/gun/energy/rifle, + /obj/item/weapon/gun/energy/rifle, + /obj/item/weapon/gun/projectile/sec, + /obj/item/weapon/gun/projectile/sec, + /obj/item/ammo_magazine/c45m, + /obj/item/ammo_magazine/c45m) + cost = 80 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Weapons crate" + access = access_security + group = "Security" + +/datum/supply_packs/nonlethals + name = "Nonlethal Weapons crate" contains = list(/obj/item/weapon/melee/baton, /obj/item/weapon/melee/baton, - /obj/item/weapon/gun/energy/gun, - /obj/item/weapon/gun/energy/gun, /obj/item/weapon/gun/energy/taser, /obj/item/weapon/gun/energy/taser, - /obj/item/weapon/gun/projectile/sec, - /obj/item/weapon/gun/projectile/sec, /obj/item/weapon/storage/box/flashbangs, - /obj/item/weapon/storage/box/flashbangs) - cost = 40 + /obj/item/weapon/storage/box/flashbangs, + /obj/item/ammo_magazine/tranq) + cost = 60 containertype = /obj/structure/closet/crate/secure/weapon containername = "Weapons crate" access = access_security diff --git a/code/game/antagonist/outsider/commando.dm b/code/game/antagonist/outsider/commando.dm index baa9c9d3c32..0105aa32e1c 100644 --- a/code/game/antagonist/outsider/commando.dm +++ b/code/game/antagonist/outsider/commando.dm @@ -36,7 +36,7 @@ var/datum/antagonist/deathsquad/mercenary/commandos player.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(player), slot_r_store) player.equip_to_slot_or_del(new /obj/item/weapon/rig/merc(player), slot_back) player.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/rifle/sts35(player), slot_l_hand) - + var/obj/item/weapon/storage/belt/military/syndie_belt = new(player) syndie_belt.contents += new /obj/item/ammo_magazine/c762 syndie_belt.contents += new /obj/item/ammo_magazine/c762 @@ -53,3 +53,4 @@ var/datum/antagonist/deathsquad/mercenary/commandos id.access |= get_all_accesses() id.icon_state = "centcom" create_radio(SYND_FREQ, player) + player.faction = "syndicate" \ No newline at end of file diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm index 74c61797e98..9ff5759bb69 100644 --- a/code/game/antagonist/outsider/mercenary.dm +++ b/code/game/antagonist/outsider/mercenary.dm @@ -56,6 +56,7 @@ var/datum/antagonist/mercenary/mercs player.put_in_hands(U) player.update_icons() + player.faction = "syndicate" create_id("Mercenary", player) create_radio(SYND_FREQ, player) diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index 8388d8949d1..c4631debe7c 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -93,9 +93,11 @@ var/datum/antagonist/raider/raiders /obj/item/weapon/gun/projectile/pistol, /obj/item/weapon/gun/projectile/revolver, /obj/item/weapon/gun/projectile/revolver/deckard, - /obj/item/weapon/gun/projectile/pirate + /obj/item/weapon/gun/projectile/pirate, + /obj/item/weapon/gun/projectile/tanto ) + var/list/raider_holster = list( /obj/item/clothing/accessory/holster/armpit, /obj/item/clothing/accessory/holster/waist, diff --git a/code/game/antagonist/station/renegade.dm b/code/game/antagonist/station/renegade.dm index f4eacfdfca5..3c141d309c4 100644 --- a/code/game/antagonist/station/renegade.dm +++ b/code/game/antagonist/station/renegade.dm @@ -31,7 +31,8 @@ var/datum/antagonist/renegade/renegades /obj/item/weapon/gun/projectile/automatic/c20r, /obj/item/weapon/gun/projectile/automatic/tommygun, /obj/item/weapon/gun/projectile/automatic/mini_uzi, - /obj/item/weapon/gun/energy/crossbow + /obj/item/weapon/gun/energy/crossbow, + /obj/item/weapon/gun/projectile/tanto ) /datum/antagonist/renegade/New() diff --git a/code/game/antagonist/station/traitor.dm b/code/game/antagonist/station/traitor.dm index 3b3f8214f8d..ee7877faccf 100644 --- a/code/game/antagonist/station/traitor.dm +++ b/code/game/antagonist/station/traitor.dm @@ -81,6 +81,7 @@ var/datum/antagonist/traitor/traitors if(!..()) return 0 + traitor_mob.faction = "syndicate" spawn_uplink(traitor_mob) // Tell them about people they might want to contact. var/mob/living/carbon/human/M = get_nt_opposed() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index c226d64f2cf..e0b1159928e 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -58,7 +58,8 @@ var/global/list/additional_antag_types = list() new/datum/uplink_item(/obj/item/weapon/storage/box/syndicate, 10, "Mercenary Bundle", "BU"), new/datum/uplink_item(/obj/item/weapon/gun/projectile/heavysniper, 12, "Anti-materiel Rifle", "AMR"), new/datum/uplink_item(/obj/item/clothing/gloves/force/syndicate, 4, "Force Gloves", "FG"), - new/datum/uplink_item(/obj/item/weapon/gun/projectile/automatic/tommygun, 7, "Tommy Gun", "TMG") + new/datum/uplink_item(/obj/item/weapon/gun/projectile/automatic/tommygun, 7, "Tommy Gun", "TMG"), + new/datum/uplink_item(/obj/item/weapon/grenade/spawnergrenade/manhacks, 2, "Manhack Delivery Grenade", "MH"), ), "Stealthy and Inconspicuous Weapons" = list( new/datum/uplink_item(/obj/item/weapon/soap/syndie, 1, "Subversive Soap", "SP"), diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 6adea8e2f51..7251dfbac7e 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -33,6 +33,7 @@ /obj/item/weapon/grenade/spawnergrenade/manhacks name = "manhack delivery grenade" + desc = "It is set to detonate in 5 seconds. It will unleash a swarm of deadly manhack robots that will attack everyone but you and your allies." spawner_type = /mob/living/simple_animal/hostile/viscerator deliveryamt = 5 origin_tech = "materials=3;magnets=4;syndicate=4" diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index c1f31e82c00..2fb22416f81 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -70,7 +70,7 @@ throw_range = 10 w_class = 5 flags = CONDUCT | NOSHIELD | NOBLOODY - origin_tech = "magnets=3;combat=4;syndicate=4" + origin_tech = "combat=6;phorontech=4;materials=7;syndicate=4" attack_verb = list("stabbed", "chopped", "sliced", "cleaved", "slashed", "cut") sharp = 1 edge = 1 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index fa462bca73a..30cb97ba573 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -123,6 +123,7 @@ new /obj/item/clothing/accessory/holster/waist(src) new /obj/item/weapon/melee/telebaton(src) new /obj/item/clothing/head/beret/sec/hos(src) + new /obj/item/ammo_magazine/tranq(src) return diff --git a/code/game/objects/structures/tranqcabinet.dm b/code/game/objects/structures/tranqcabinet.dm new file mode 100644 index 00000000000..81ce419e6a5 --- /dev/null +++ b/code/game/objects/structures/tranqcabinet.dm @@ -0,0 +1,62 @@ +/obj/structure/tranqcabinet + name = "tranquilizer rifle cabinet" + desc = "A wall mounted cabinet designed to hold a tranquilizer rifle." + icon = 'icons/obj/closet.dmi' + icon_state = "tranq_closed" + anchored = 1 + density = 0 + var/obj/item/weapon/gun/projectile/heavysniper/tranq/has_tranq + var/opened = 0 + +/obj/structure/tranqcabinet/New() + ..() + has_tranq = new/obj/item/weapon/gun/projectile/heavysniper/tranq(src) + +/obj/structure/tranqcabinet/attackby(obj/item/O, mob/user) + if(isrobot(user)) + return + if(istype(O, /obj/item/weapon/gun/projectile/heavysniper/tranq)) + if(!has_tranq && opened) + user.remove_from_mob(O) + contents += O + has_tranq = O + user << "You place [O] in [src]." + else + opened = !opened + else + opened = !opened + update_icon() + + +/obj/structure/tranqcabinet/attack_hand(mob/user) + if(isrobot(user)) + return + if (!user.can_use_hand()) + return + if(has_tranq) + user.put_in_hands(has_tranq) + user << "You take [has_tranq] from [src]." + has_tranq = null + opened = 1 + else + opened = !opened + update_icon() + +/obj/structure/tranqcabinet/attack_tk(mob/user) + if(has_tranq) + has_tranq.forceMove(loc) + user << "You telekinetically remove [has_tranq] from [src]." + has_tranq = null + opened = 1 + else + opened = !opened + update_icon() + +/obj/structure/tranqcabinet/update_icon() + if(!opened) + icon_state = "tranq_closed" + return + if(has_tranq) + icon_state = "tranq_full" + else + icon_state = "tranq_empty" \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3a57510f94b..3a182540088 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1274,6 +1274,10 @@ datum/preferences var/new_age = input(user, "Choose your character's age:\n([getMinAge()]-[getMaxAge()])", "Character Preference") as num|null if(new_age) age = max(min( round(text2num(new_age)), getMaxAge()),getMinAge()) + if(age > getMaxAge()) + age = getMaxAge() + if(age < getMinAge()) + age = getMinAge() if("species") user << browse(null, "window=species") @@ -1324,6 +1328,11 @@ datum/preferences s_tone = 0 + if(age > getMaxAge()) + age = getMaxAge() + if(age < getMinAge()) + age = getMinAge() + if("language") var/languages_available var/list/new_languages = list("None") diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 9093f005c88..4a675cbb82d 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -78,14 +78,14 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/head/beret/sec/alt cost = 1 slot = slot_head - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") /datum/gear/eng_beret display_name = "beret, engie-orange" path = /obj/item/clothing/head/beret/eng cost = 1 slot = slot_head -// allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer") + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/purp_beret display_name = "beret, purple" @@ -104,7 +104,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/head/beret/sec cost = 1 slot = slot_head - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") /datum/gear/bcap display_name = "cap, blue" @@ -129,7 +129,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/head/soft/sec/corp cost = 1 slot = slot_head - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") /datum/gear/gcap display_name = "cap, green" @@ -190,24 +190,28 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/head/hardhat/dblue cost = 2 slot = slot_head + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/ohardhat display_name = "hardhat, orange" path = /obj/item/clothing/head/hardhat/orange cost = 2 slot = slot_head + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/rhardhat display_name = "hardhat, red" path = /obj/item/clothing/head/hardhat/red cost = 2 slot = slot_head + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/yhardhat display_name = "hardhat, yellow" path = /obj/item/clothing/head/hardhat cost = 2 slot = slot_head + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/boater display_name = "hat, boatsman" @@ -246,8 +250,7 @@ var/global/list/gear_datums = list() cost = 1 slot = slot_head -// This was sprited and coded specifically for Zhan-Khazan characters. Before you -// decide that it's 'not even Taj themed' maybe you should read the wiki, gamer. ~ Z +//lol fuck bay ~LordFowl /datum/gear/zhan_scarf display_name = "Zhan headscarf" path = /obj/item/clothing/head/tajaran/scarf @@ -304,27 +307,28 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/glasses/hud/security cost = 1 slot = slot_glasses - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") /datum/gear/thugshades display_name = "Sunglasses, Fat" path = /obj/item/clothing/glasses/sunglasses/big cost = 1 slot = slot_glasses - allowed_roles = list("Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain") + allowed_roles = list("Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain","Security Cadet") /datum/gear/prescriptionsun display_name = "sunglasses, presciption" path = /obj/item/clothing/glasses/sunglasses/prescription cost = 2 slot = slot_glasses - allowed_roles = list("Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain") + allowed_roles = list("Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain","Security Cadet") /datum/gear/blindfold display_name = "vaurca blindfold" path = /obj/item/clothing/glasses/sunglasses/blinders cost = 2 slot = slot_glasses + whitelisted = "Vaurca" // Mask @@ -533,7 +537,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/under/rank/security/corp cost = 1 slot = slot_w_uniform - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") /datum/gear/uniform_hop display_name = "uniform, HoP's dress" @@ -554,7 +558,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/under/rank/security/navyblue cost = 1 slot = slot_w_uniform - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") //medical scrubs @@ -563,24 +567,28 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/under/rank/medical/blue slot = slot_w_uniform cost = 1 + allowed_roles = list("Scientist","Chief Medical Officer","Medical Doctor","Geneticist","Paramedic","Nursing Intern","Xenobiologist","Roboticist","Research Director","Detective",) /datum/gear/greenscrub display_name = "medical scrubs, green" path = /obj/item/clothing/under/rank/medical/green slot = slot_w_uniform cost = 1 + allowed_roles = list("Scientist","Chief Medical Officer","Medical Doctor","Geneticist","Paramedic","Nursing Intern","Xenobiologist","Roboticist","Research Director","Detective",) /datum/gear/purplescrub display_name = "medical scrubs, purple" path = /obj/item/clothing/under/rank/medical/purple slot = slot_w_uniform cost = 1 + allowed_roles = list("Scientist","Chief Medical Officer","Medical Doctor","Geneticist","Paramedic","Nursing Intern","Xenobiologist","Roboticist","Research Director","Detective",) /datum/gear/blackscrub display_name = "medical scrubs, black" path = /obj/item/clothing/under/rank/medical/black slot = slot_w_uniform cost = 1 + allowed_roles = list("Scientist","Chief Medical Officer","Medical Doctor","Geneticist","Paramedic","Nursing Intern","Xenobiologist","Roboticist","Research Director","Detective",) // Attachments @@ -589,30 +597,35 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/accessory/armband/cargo slot = slot_tie cost = 1 + allowed_roles = list("Cargo Technician","Quartermaster","Head of Personnel","Shaft Miner") /datum/gear/armband_emt display_name = "armband, EMT" path = /obj/item/clothing/accessory/armband/medgreen slot = slot_tie cost = 1 + allowed_roles = list("Paramedic","Chief Medical Officer") /datum/gear/armband_engineering display_name = "armband, engineering" path = /obj/item/clothing/accessory/armband/engine slot = slot_tie cost = 1 + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/armband_hydroponics display_name = "armband, hydroponics" path = /obj/item/clothing/accessory/armband/hydro slot = slot_tie cost = 1 + allowed_roles = list("Head of Personnel","Gardener") /datum/gear/armband_medical display_name = "armband, medical" path = /obj/item/clothing/accessory/armband/med slot = slot_tie cost = 1 + allowed_roles = list("Chief Medical Officer","Medical Doctor","Paramedic","Nursing Intern","Psychiatrist","Chemist",) /datum/gear/armband display_name = "armband, red" @@ -625,6 +638,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/accessory/armband/science slot = slot_tie cost = 1 + allowed_roles = list("Research Director","Scientist","Xenobiologist","Roboticist","Lab Assistant","Geneticist") /datum/gear/armband_movement display_name = "armband, synthetic intelligence movement" @@ -637,21 +651,21 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/accessory/holster/armpit slot = slot_tie cost = 1 - allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective") + allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective","Security Cadet") /datum/gear/hip display_name = "holster, hip" path = /obj/item/clothing/accessory/holster/hip slot = slot_tie cost = 1 - allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security", "Detective") + allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective","Security Cadet") /datum/gear/waist display_name = "holster, waist" path = /obj/item/clothing/accessory/holster/waist slot = slot_tie cost = 1 - allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security", "Detective") + allowed_roles = list("Captain", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective","Security Cadet") /datum/gear/tie_blue display_name = "tie, blue" @@ -676,14 +690,14 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/accessory/storage/brown_vest slot = slot_tie cost = 1 - allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer") + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/black_vest display_name = "webbing, security" path = /obj/item/clothing/accessory/storage/black_vest slot = slot_tie cost = 1 - allowed_roles = list("Security Officer","Head of Security","Warden") + allowed_roles = list("Security Officer","Head of Security","Warden","Security Cadet","Detective") /datum/gear/webbing display_name = "webbing, simple" @@ -734,6 +748,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/suit/storage/hazardvest cost = 2 slot = slot_wear_suit + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/hoodie display_name = "hoodie, grey" @@ -830,7 +845,7 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/suit/unathi/robe cost = 1 slot = slot_wear_suit -// whitelisted = "Unathi" // You don't have a monopoly on a robe! + whitelisted = "Unathi" /datum/gear/blue_lawyer_jacket display_name = "suit jacket, blue" @@ -857,11 +872,11 @@ var/global/list/gear_datums = list() slot = slot_wear_suit /datum/gear/zhan_furs - display_name = "Zhan-Khazan furs (Tajaran)" + display_name = "Zhan-Khazan furs" path = /obj/item/clothing/suit/tajaran/furs cost = 1 slot = slot_wear_suit - whitelisted = "Tajara" // You do have a monopoly on a fur suit tho + whitelisted = "Tajara" // Gloves @@ -1041,18 +1056,21 @@ var/global/list/gear_datums = list() path = /obj/item/clothing/shoes/jackboots cost = 1 slot = slot_shoes + allowed_roles = list("Security Cadet","Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain") /datum/gear/toeless_jackboots display_name = "toe-less jackboots" path = /obj/item/clothing/shoes/jackboots/unathi cost = 1 slot = slot_shoes + allowed_roles = list("Security Cadet","Security Officer","Head of Security","Warden","Detective","Internal Affairs Agent","Quartermaster","Head of Personnel","Captain") /datum/gear/workboots display_name = "workboots" path = /obj/item/clothing/shoes/workboots cost = 1 slot = slot_shoes + allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Engineering Apprentice") /datum/gear/sandal display_name = "sandals" diff --git a/code/modules/clothing/under/accessories/badges.dm b/code/modules/clothing/under/accessories/badges.dm index cc6a6f99656..ee0a5ef0a83 100644 --- a/code/modules/clothing/under/accessories/badges.dm +++ b/code/modules/clothing/under/accessories/badges.dm @@ -15,7 +15,7 @@ /obj/item/clothing/accessory/badge/old name = "faded badge" - desc = "A faded badge, backed with leather. It bears the emblem of the Forensic division." + desc = "A faded security badge, backed with leather." icon_state = "badge_round" /obj/item/clothing/accessory/badge/proc/set_name(var/new_name) diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index 7bd3ec275b6..e488439a760 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -148,7 +148,13 @@ new/obj/item/weapon/storage/belt/champion(src) new/obj/item/clothing/mask/luchador(src) if(100) - new/obj/item/clothing/head/bearpelt(src) + new/obj/item/weapon/gun/projectile/tanto(src) + new/obj/item/ammo_magazine/t40(src) + new/obj/item/ammo_magazine/t40(src) + new/obj/item/ammo_magazine/t40/rubber(src) + new/obj/item/clothing/under/rank/dispatch(src) + new/obj/item/clothing/accessory/badge/old(src) + new/obj/item/clothing/head/helmet/formalcaptain(src) /obj/structure/closet/crate/secure/loot/togglelock(mob/user as mob) if(!locked) @@ -177,7 +183,7 @@ /obj/structure/closet/crate/secure/loot/proc/check_input(var/input) if(length(input) != codelen) return 0 - + . = 1 lastattempt.Cut() for(var/i in 1 to codelen) @@ -197,7 +203,7 @@ if(lastattempt.len) var/bulls = 0 var/cows = 0 - + var/list/code_contents = code.Copy() for(var/i in 1 to codelen) if(lastattempt[i] == code[i]) diff --git a/code/modules/mob/living/silicon/robot/syndicate_robot.dm b/code/modules/mob/living/silicon/robot/syndicate_robot.dm index ce89ff64fbe..13e606601de 100644 --- a/code/modules/mob/living/silicon/robot/syndicate_robot.dm +++ b/code/modules/mob/living/silicon/robot/syndicate_robot.dm @@ -8,6 +8,7 @@ icon_state = "syndie_bloodhound" lawchannel = "State" req_access = list(access_syndicate) + faction = "syndicate" modtype = "syndicate" braintype = "Cyborg" @@ -20,8 +21,8 @@ radio.keyslot = new /obj/item/device/encryptionkey/syndicate(radio) radio.recalculateChannels() - playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) - + playsound(loc, 'sound/mecha/nominalsyndi.ogg', 75, 0) + /mob/living/silicon/robot/syndicate/New() if(!cell) cell = new /obj/item/weapon/cell(src) @@ -29,9 +30,9 @@ cell.charge = 25000 if(!jetpack) jetpack = new /obj/item/weapon/tank/jetpack/carbondioxide/synthetic(src) - + ..() - + /mob/living/silicon/robot/syndicate/updateicon() //because this was the only way I found out how to make their eyes and etc works overlays.Cut() if(stat == 0) diff --git a/code/modules/mob/living/simple_animal/bees.dm b/code/modules/mob/living/simple_animal/bees.dm index 50256d7ccb6..61ea0a26619 100644 --- a/code/modules/mob/living/simple_animal/bees.dm +++ b/code/modules/mob/living/simple_animal/bees.dm @@ -100,8 +100,9 @@ src.parent.owned_bee_swarms.Add(B) //make some noise - if(prob(5)) + if(prob(10)) src.visible_message("\blue [pick("Buzzzz.","Hmmmmm.","Bzzz.")]") + playsound(src.loc, pick('sound/effects/Buzz1.ogg','sound/effects/Buzz2.ogg'), 70, 1) //smoke, water and steam calms us down var/calming = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 66a8e473ef3..a7ce2464778 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -9,9 +9,9 @@ icon_living = "bear" icon_dead = "bear_dead" icon_gib = "bear_gib" - speak = list("RAWR!","Rawr!","GRR!","Growl!") + //speak = list("RAWR!","Rawr!","GRR!","Growl!") Bears don't talk. speak_emote = list("growls", "roars") - emote_hear = list("rawrs","grumbles","grawls") + emote_hear = list("grumbles","grawls") emote_see = list("stares ferociously", "stomps") speak_chance = 10 turns_per_move = 7 diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index fa742733a24..f86250fa17a 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -145,6 +145,7 @@ maxHealth = 15 melee_damage_lower = 15 melee_damage_upper = 15 + density = 0 attacktext = "cut" attack_sound = 'sound/weapons/bladeslice.ogg' faction = "syndicate" @@ -160,4 +161,9 @@ /mob/living/simple_animal/hostile/viscerator/death() ..(null,"is smashed into pieces!") + var/T = get_turf(src) + new /obj/effect/gibspawner/robot(T) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, T) + s.start() qdel(src) diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index e3a3f85af38..78c495fd981 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -48,6 +48,23 @@ name = "magazine (.45 flash)" ammo_type = "/obj/item/ammo_casing/c45f" +/obj/item/ammo_magazine/t40 + name = "magazine (10mm)" + icon_state = "5.56" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/t40 + matter = list(DEFAULT_WALL_MATERIAL = 475) //metal costs are very roughly based around 1 .45 casing = 75 metal + caliber = "10mm" + max_ammo = 12 + multiple_sprites = 1 + +/obj/item/ammo_magazine/t40/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/t40/rubber + name = "magazine (10mm rubber)" + ammo_type = /obj/item/ammo_casing/t40r + /obj/item/ammo_magazine/mc9mm name = "magazine (9mm)" icon_state = "9x19p" @@ -180,6 +197,18 @@ /obj/item/ammo_magazine/trodpack/empty initial_ammo = 0 +/obj/item/ammo_magazine/tranq + name = "tranquilizer darts (.50 cal PPS)" + icon_state = "incendiaryshot_box" + origin_tech = "combat=2" + mag_type = SINGLE_CASING + caliber = "PPS" + matter = list(DEFAULT_WALL_MATERIAL = 4500) + ammo_type = /obj/item/ammo_casing/tranq + max_ammo = 4 + +/obj/item/ammo_magazine/tranq/empty + initial_ammo = 0 /obj/item/ammo_magazine/a762 name = "magazine box (7.62mm)" diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 93d202f7667..f207ae769eb 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -70,6 +70,16 @@ caliber = ".45" projectile_type = /obj/item/projectile/energy/flash +/obj/item/ammo_casing/t40 + desc = "A 10mm bullet casing." + caliber = "10mm" + projectile_type = /obj/item/projectile/bullet/pistol + +/obj/item/ammo_casing/t40r + desc = "A 10mm rubber bullet casing." + caliber = "10mm" + projectile_type = /obj/item/projectile/bullet/pistol/rubber + /obj/item/ammo_casing/a12mm desc = "A 12mm bullet casing." caliber = "12mm" @@ -147,6 +157,14 @@ projectile_type = /obj/item/projectile/bullet/shotgun/incendiary matter = list(DEFAULT_WALL_MATERIAL = 450) +/obj/item/ammo_casing/tranq + name = "PPS shell" + desc = "A .50 cal PPS bullet casing." + icon_state = "ishell" + spent_icon = "ishell-spent" + caliber = "PPS" + projectile_type = /obj/item/projectile/bullet/rifle/tranq + /obj/item/ammo_casing/a762 desc = "A 7.62mm bullet casing." caliber = "a762" diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 969873ce852..5c371c988fe 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -118,6 +118,24 @@ obj/item/weapon/gun/energy/retro else usr << "You can't look through the scope without stabilizing the rifle!" +/obj/item/weapon/gun/energy/laser/shotgun + name = "quad-beam laser" + desc = "A modified laser weapon, designed to split a single beam four times." + icon_state = "oldenergykill" + item_state = "energykill" + fire_sound = 'sound/weapons/Laser.ogg' + slot_flags = SLOT_BELT|SLOT_BACK + w_class = 3 + force = 10 + matter = list(DEFAULT_WALL_MATERIAL = 2000) + origin_tech = "combat=4;magnets=2" + projectile_type = /obj/item/projectile/beam/shotgun + max_shots = 12 + + firemodes = list( + list(name="diffuse", burst=4, burst_delay = 0, move_delay = 0, fire_delay = 2, dispersion = list(1.0, -1.0, 2.0, -2.0)), + ) + ////////Laser Tag//////////////////// /obj/item/weapon/gun/energy/lasertag diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 57e4ceba537..d500cd6e320 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -96,8 +96,66 @@ fire_sound = 'sound/effects/stealthoff.ogg' w_class = 3.0 origin_tech = "combat=5;phorontech=4" + slot_flags = SLOT_HOLSTER | SLOT_BELT projectile_type = /obj/item/projectile/energy/phoron +/obj/item/weapon/gun/energy/beegun + name = "\improper NanoTrasen Portable Apiary" + desc = "An experimental firearm that converts energy into bees, for purely botanical purposes." + icon_state = "gyrorifle" + item_state = "arifle" + charge_meter = 0 + w_class = 4 + fire_sound = 'sound/effects/Buzz2.ogg' + force = 5 + projectile_type = /obj/item/projectile/energy/bee + slot_flags = SLOT_BACK + max_shots = 9 + + firemodes = list( + list(name="EXTERMINATE", burst=3, burst_delay = 1, move_delay = 0, fire_delay = 0, dispersion = list(0.0, 0.2, -0.2)), + ) + +/obj/item/weapon/gun/energy/mousegun + name = "\improper NT \"Arodentia\" Exterminator ray" + desc = "A highly sophisticated and certainly experimental raygun designed for rapid pest-control." + icon_state = "floramut100" + item_state = "floramut" + charge_meter = 0 + w_class = 3 + fire_sound = 'sound/weapons/taser2.ogg' + force = 5 + projectile_type = /obj/item/projectile/beam/mousegun + slot_flags = SLOT_HOLSTER | SLOT_BELT + max_shots = 6 + + firemodes = list( + list(name="EXTERMINATE", burst=3, burst_delay = 1, move_delay = 0, fire_delay = 3, dispersion = list(0.0, 6,0, -6.0)), + ) + + var/lightfail = 0 + +/obj/item/weapon/gun/energy/mousegun/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0, var/playemote = 1) + var/T = get_turf(user) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, T) + s.start() + failcheck() + ..() + +/obj/item/weapon/gun/energy/mousegun/proc/failcheck() + lightfail = 0 + if (prob(5)) + for (var/mob/living/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES + if (src in M.contents) + M << "[src]'s reactor overloads!" + M << "You feel a wave of heat wash over you." + M.apply_effect(300, IRRADIATE) + crit_fail = 1 //break the gun so it stops recharging + processing_objects.Remove(src) + update_icon() + return 0 + /* Vaurca Weapons */ /obj/item/weapon/gun/energy/vaurca @@ -122,12 +180,12 @@ ) /obj/item/weapon/gun/energy/vaurca/gatlinglaser - name = "Gatling Laser" + name = "gatling laser" desc = "A highly sophisticated rapid fire laser weapon." icon_state = "gatling" item_state = "gatling" fire_sound = 'sound/weapons/Laser.ogg' - origin_tech = "combat=5;materials=2" + origin_tech = "combat=6;phorontech=5;materials=6" charge_meter = 0 slot_flags = SLOT_BACK w_class = 4 @@ -140,17 +198,45 @@ list(name="spray", burst=20, burst_delay = 1, move_delay = 5, fire_delay = 30, dispersion = list(0.0, 1.25, 1.5, 1.75, 2.0, 2.25, 2.5, 2.75, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.0, 3.25)), ) + icon_action_button = "action_blank" + action_button_name = "Wield gatling laser" + +/obj/item/weapon/gun/energy/vaurca/gatlinglaser/can_wield() + return 1 + +/obj/item/weapon/gun/energy/vaurca/gatlinglaser/ui_action_click() + if(src in usr) + toggle_wield(usr) + +/obj/item/weapon/gun/energy/vaurca/gatlinglaser/verb/wield_rifle() + set name = "Wield gatling laser" + set category = "Object" + set src in usr + + toggle_wield(usr) + +/obj/item/weapon/gun/energy/vaurca/gatlinglaser/special_check(var/mob/user) + ..() + if(!wielded) + user << "You cannot fire this weapon with just one hand!" + return 0 + playsound(src, 'sound/weapons/chainsawhit.ogg', 90, 1) + user.visible_message("[user] begins spinning [src]'s barrels!") + sleep(30) + return 1 + /obj/item/weapon/gun/energy/vaurca/blaster name = "Zo'ra Blaster" desc = "An elegant weapon for a more civilized time." icon_state = "blaster" item_state = "blaster" + origin_tech = "combat=2;phorontech=4," fire_sound = 'sound/weapons/Laser.ogg' slot_flags = SLOT_BACK | SLOT_HOLSTER | SLOT_BELT w_class = 3 force = 10 projectile_type = /obj/item/projectile/energy/blaster - max_shots = 15 + max_shots = 6 firemodes = list( list(name="single shot", burst=1, burst_delay = 1, fire_delay = 0), diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index b354003b03c..64cc0d25d8c 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -291,14 +291,14 @@ icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty" /obj/item/weapon/gun/projectile/automatic/railgun - name = "Railgun" + name = "railgun" desc = "An advanced rifle that magnetically propels hyperdense rods at breakneck speeds to devastating effect." icon_state = "railgun" item_state = "arifle" w_class = 4 force = 10 caliber = "trod" - origin_tech = "combat=5;materials=2" + origin_tech = "combat=8;materials=7" slot_flags = SLOT_BELT|SLOT_BACK fire_sound = 'sound/effects/Explosion2.ogg' load_method = MAGAZINE diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index d6e7fe5153c..0b3c6deaec8 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -51,6 +51,29 @@ name = "\improper Custom NT Mk58" icon_state = "secgundark" +/obj/item/weapon/gun/projectile/tanto + desc = "A Necropolis Industries designed sidearm, designed to compete with the NT Mk58. Uses 10mm rounds." + name = "\improper Tanto .40" + icon_state = "c05r" + magazine_type = /obj/item/ammo_magazine/t40 + allowed_magazines = list(/obj/item/ammo_magazine/t40) + caliber = "10mm" + origin_tech = "combat=3;materials=2" + fire_sound = 'sound/weapons/Gunshot_light.ogg' + load_method = MAGAZINE + + firemodes = list( + list(name="semiauto", burst=1, fire_delay=0), + list(name="3-round bursts", burst=3, move_delay=4, accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.0, 0.6, 1.0)), + ) + +/obj/item/weapon/gun/projectile/tanto/update_icon() + ..() + if(ammo_magazine) + icon_state = "c05r" + else + icon_state = "c05r-e" + /obj/item/weapon/gun/projectile/silenced name = "silenced pistol" desc = "A small, quiet, easily concealable gun. Uses .45 rounds." diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index d21eb6cc245..f35e7e348cd 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -9,7 +9,6 @@ origin_tech = "combat=8;materials=2;syndicate=8" caliber = "14.5mm" recoil = 4 //extra kickback - //fire_sound = 'sound/weapons/sniper.ogg' handle_casings = HOLD_CASINGS load_method = SINGLE_CASING max_shells = 1 @@ -29,9 +28,7 @@ /obj/item/weapon/gun/projectile/heavysniper/can_wield() return 1 -/obj/item/weapon/gun/projectile/heavysniper/ui_action_click() - if(src in usr) - toggle_wield(usr) + /obj/item/weapon/gun/projectile/heavysniper/verb/wield_rifle() set name = "Wield rifle" @@ -67,6 +64,9 @@ if(bolt_open) user << "You can't fire [src] while the bolt is open!" return 0 + if(!wielded) + user << "You can't fire without stabilizing the rifle!" + return 0 return ..() /obj/item/weapon/gun/projectile/heavysniper/load_ammo(var/obj/item/A, mob/user) @@ -88,3 +88,36 @@ toggle_scope(2.0) else usr << "You can't look through the scope without stabilizing the rifle!" + +/obj/item/weapon/gun/projectile/heavysniper/tranq + name = "\improper PTR-7 tranquilizer rifle" + desc = "A nonlethal modification to the PTR-7 anti-materiel rifle meant for sedation and capture of large animals. Fires .50 cal PPS shells that deploy a torpor inducing drug payload." + icon_state = "tranqsniper" + item_state = "heavysniper" + w_class = 4 + force = 10 + slot_flags = SLOT_BACK + origin_tech = "combat=6;materials=2" + caliber = "PPS" + recoil = 1 + silenced = 1 + fire_sound = 'sound/weapons/Gunshot_light.ogg' + handle_casings = HOLD_CASINGS + load_method = SINGLE_CASING + magazine_type = null + allowed_magazines = list(/obj/item/ammo_magazine/tranq) + max_shells = 4 + ammo_type = null + accuracy = -3 + scoped_accuracy = 3 + bolt_open = 0 + muzzle_flash = 1 + + recoil_wielded = 1 + accuracy_wielded = 2 + +/obj/item/weapon/gun/projectile/heavysniper/tranq/update_icon() + if(bolt_open) + icon_state = "tranqsniper-open" + else + icon_state = "tranqsniper" diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 1d98548c7ad..cce7c759cbf 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -147,9 +147,54 @@ /obj/item/projectile/beam/gatlinglaser name = "heavy laser" icon_state = "heavylaser" - damage = 5 + damage = 10 muzzle_type = /obj/effect/projectile/laser_omni/muzzle tracer_type = /obj/effect/projectile/laser_omni/tracer impact_type = /obj/effect/projectile/laser_omni/impact +/obj/item/projectile/beam/mousegun + name = "diffuse electrical arc" + icon_state = "stun" + nodamage = 1 + damage_type = HALLOSS + + muzzle_type = /obj/effect/projectile/stun/muzzle + tracer_type = /obj/effect/projectile/stun/tracer + impact_type = /obj/effect/projectile/stun/impact + +/obj/item/projectile/beam/mousegun/on_impact(var/atom/A) + mousepulse(A, 1) + ..() + +/obj/item/projectile/beam/mousegun/proc/mousepulse(turf/epicenter, range, log=0) + if(!epicenter) return + + if(!istype(epicenter, /turf)) + epicenter = get_turf(epicenter.loc) + + for(var/atom/T in range(range, epicenter)) + var/distance = get_dist(epicenter, T) + if(distance < 0) + distance = 0 + if(distance <= range) + var/mob/living/M = T + if (M.mob_size <= 2 && (M.find_type() & TYPE_ORGANIC)) + M.visible_message("[M] bursts like a balloon!") + M.gib() + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, M) + s.start() + T << 'sound/effects/basscannon.ogg' + return 1 + +/obj/item/projectile/beam/shotgun + name = "diffuse laser" + icon_state = "laser" + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + damage = 15 + eyeblur = 4 + + muzzle_type = /obj/effect/projectile/laser/muzzle + tracer_type = /obj/effect/projectile/laser/tracer + impact_type = /obj/effect/projectile/laser/impact diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 6a2c38bd08d..8ae0b7c969f 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -161,6 +161,49 @@ penetrating = 5 hitscan = 1 //so the PTR isn't useless as a sniper weapon +/obj/item/projectile/bullet/rifle/tranq + name = "dart" + icon_state = "dart" + damage = 5 + stun = 0 + weaken = 0 + drowsy = 0 + eyeblur = 0 + damage_type = TOX + step_delay = 0.25 + +/obj/item/projectile/bullet/rifle/tranq/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) + var/mob/living/L = target + if(!(isanimal(target))) + if(!(isipc(target))) + if(!isrobot(target)) + L.apply_effect(5, DROWSY, 0) + if(def_zone == "torso") + if(blocked < 2 && !(blocked < 1)) + target.visible_message("[target] yawns.") + if(blocked < 1) + spawn(120) + L.apply_effect(10, PARALYZE, 0) + target.visible_message("[target] moans.") + if(def_zone == "head" && blocked < 2) + spawn(35) + L.apply_effect(20, PARALYZE, 0) + if(def_zone != "torso" && def_zone != "head") + if(blocked < 2 && !(blocked < 1)) + target.visible_message("[target] yawns.") + if(blocked < 1) + spawn(45) + L.apply_effect(15, PARALYZE, 0) + target.visible_message("[target] moans.") + if(isanimal(target)) + target.visible_message("[target] twitches, foaming at the mouth.") + L.apply_damage(35, TOX) //temporary until simple_mob paralysis actually works. + /* var/mob/living/simple_animal/M = target + spawn(60) + target.visible_message("[target] collapses.") + M.Sleeping(1200)*/ //commented out until simple_mob paralysis actually works. + ..() + /obj/item/projectile/bullet/rifle/a556 damage = 40 penetrating = 1 @@ -183,10 +226,9 @@ embed = 0 edge = 1 -/obj/item/projectile/bullet/gyro/on_hit(var/atom/target, var/blocked = 0) - if(isturf(target)) - explosion(target, -1, 0, 2) - ..() +/obj/item/projectile/bullet/burstbullet/on_impact(var/atom/A) + explosion(A, -1, 0, 2) + ..() /obj/item/projectile/bullet/blank invisibility = 101 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index c6d74e2e78c..ca679df2839 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -125,6 +125,31 @@ explosion(A, -1, 0, 2) ..() +/obj/item/projectile/energy/bee + name = "bees" + icon = 'icons/obj/apiary_bees_etc.dmi' + icon_state = "beegun" + check_armour = "bio" + damage = 0 + damage_type = BRUTE + pass_flags = PASSTABLE | PASSGRILLE + embed = 0 + weaken = 0 + +/obj/item/projectile/energy/bee/on_impact(var/atom/A) + playsound(src.loc, pick('sound/effects/Buzz1.ogg','sound/effects/Buzz2.ogg'), 70, 1) + for(var/i=1, i<=8, i++) + var/mob/living/simple_animal/bee/x = new /mob/living/simple_animal/bee + x.loc = A + x.feral = 25 + if(ismob(A)) + x.target_mob = A + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(x, pick(NORTH,SOUTH,EAST,WEST)) + + ..() + /obj/item/projectile/energy/blaster name = "blaster bolt" icon_state = "laser" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 085fff28b7b..0f96859356c 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1310,6 +1310,14 @@ datum/design/item/weapon/nuclear_gun build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 +datum/design/item/weapon/lasshotgun + id = "laser_shotgun" + req_tech = list("combat" = 3, "materials" = 5, "powerstorage" = 4) + materials = list("$metal" = 5000, "$glass" = 1500, "$uranium" = 500, "$diamond" = 500) + reliability_base = 76 + build_path = /obj/item/weapon/gun/energy/laser/shotgun + locked = 1 + datum/design/item/weapon/stunrevolver id = "stunrevolver" req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) @@ -1368,6 +1376,18 @@ datum/design/item/weapon/flora_gun materials = list("$metal" = 2000, "$glass" = 500, "$uranium" = 500) build_path = /obj/item/weapon/gun/energy/floragun +datum/design/item/weapon/mousegun + id = "mousegun" + req_tech = list("materials" = 1, "biotech" = 4, "powerstorage" = 3) + materials = list("$metal" = 2000, "$glass" = 1000, "$uranium" = 500) + build_path = /obj/item/weapon/gun/energy/mousegun + +datum/design/item/weapon/beegun + id = "beegun" + req_tech = list("materials" = 6, "biotech" = 4, "powerstorage" = 4, "combat" = 6, "magnets" = 4) + materials = list("$metal" = 2000, "$glass" = 2000, "$silver" = 500, "$diamond" = 3000) + build_path = /obj/item/weapon/gun/energy/beegun + datum/design/item/weapon/large_grenade id = "large_Grenade" req_tech = list("combat" = 3, "materials" = 2) diff --git a/code/setup.dm b/code/setup.dm index 87fbe578c61..1a5a872a239 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -441,7 +441,7 @@ #define STUN "stun" #define WEAKEN "weaken" -#define PARALYZE "paralize" +#define PARALYZE "paralyze" #define IRRADIATE "irradiate" #define AGONY "agony" // Added in PAIN! #define SLUR "slur" diff --git a/html/changelogs/LordFowl - MiscUpdate.yml b/html/changelogs/LordFowl - MiscUpdate.yml new file mode 100644 index 00000000000..ccd771d2d48 --- /dev/null +++ b/html/changelogs/LordFowl - MiscUpdate.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: LordFowl + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added three new energy-based weapons, one designed purely for pest-control." + - rscadd: "Added a new rare handpistol, based off of a proposed competitor to the NT Mk58." + - rscadd: "Added a new pet for the Head of Security - the PTR-7 Tranquilizer Rifle." + - rscadd: "Syndicate manhack delivery grenades are now available via the traitor uplink." + - rscadd: "Manhacks will no longer attack anyone belonging to the 'syndicate' faction, including Heist pirates." + - tweak: "Tweaked loadout customisation whitelists, generally making them more restrictive by role." + - bugfix: "It is no longer possible to be older or younger than your species ought to be." diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 997fbda702c..d55b7611013 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/obj/apiary_bees_etc.dmi b/icons/obj/apiary_bees_etc.dmi index 130120bb08f..2a7f604e074 100644 Binary files a/icons/obj/apiary_bees_etc.dmi and b/icons/obj/apiary_bees_etc.dmi differ diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi index 4503ad12941..f0e3ee940e7 100644 Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 8ebf39d9769..4bb55d22550 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm index 8fedc56a8d2..dbcb6c747fe 100644 --- a/maps/exodus-1.dmm +++ b/maps/exodus-1.dmm @@ -321,7 +321,7 @@ "agi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_port) "agj" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_port) "agk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/security_port) -"agl" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) +"agl" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/device/magnetic_lock/security,/obj/item/device/magnetic_lock/security,/obj/item/device/magnetic_lock/security,/obj/item/device/magnetic_lock/security,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "agm" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) "agn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/security/warden) "ago" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor{dir = 1; name = "Weapons locker"; req_access = list(2)},/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden) @@ -358,11 +358,11 @@ "agT" = (/obj/structure/closet/secure_closet/security,/obj/item/device/flashlight/flare,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/main) "agU" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/turf/simulated/floor{icon_state = "bluecorner"},/area/security/main) "agV" = (/obj/structure/disposalpipe/sortjunction{dir = 1; name = "HoS Office"; sortType = "HoS Office"},/turf/simulated/wall,/area/crew_quarters/heads/hos) -"agW" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"agW" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "agX" = (/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "agY" = (/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "agZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) -"aha" = (/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"aha" = (/obj/machinery/photocopier,/obj/machinery/light{dir = 1},/obj/machinery/keycard_auth{pixel_x = 30},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahb" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "ahc" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/security_port) "ahd" = (/obj/effect/decal/cleanable/generic,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -392,7 +392,7 @@ "ahB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/bed/chair,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "ahC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "ahD" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) -"ahE" = (/obj/structure/table/woodentable,/obj/machinery/keycard_auth{pixel_x = 30},/obj/machinery/photocopier/faxmachine{department = "Head of Security"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"ahE" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ahF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "ahG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/maintenance/research_starboard) "ahH" = (/turf/space,/area/skipjack_station/northeast_solars) @@ -426,7 +426,7 @@ "aij" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/stamp/hos,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "aik" = (/obj/structure/table/woodentable,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/computer/skills{pixel_y = 4},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/crew_quarters/heads/hos) "ail" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) -"aim" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"aim" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/tranqcabinet{pixel_x = 32},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ain" = (/obj/structure/table/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating,/area/maintenance/security_port) "aio" = (/obj/structure/closet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plating,/area/maintenance/security_port) "aip" = (/obj/item/device/t_scanner,/obj/structure/table/steel,/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -485,7 +485,7 @@ "ajq" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajr" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajs" = (/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) -"ajt" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) +"ajt" = (/obj/structure/filingcabinet,/obj/machinery/light_switch{pixel_y = -27},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "aju" = (/obj/structure/closet/secure_closet/hos,/obj/item/device/radio/intercom{pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos) "ajv" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/turf/simulated/floor/plating,/area/maintenance/security_port) "ajw" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/security_port) @@ -544,8 +544,8 @@ "akx" = (/obj/structure/noticeboard{pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "aky" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/camera/network/security{c_tag = "Security - Forensic Office Fore"; dir = 2},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akz" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"akA" = (/obj/machinery/alarm{pixel_y = 22},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) -"akB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/flora/pottedplant{tag = "icon-plant-21"; icon_state = "plant-21"},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"akA" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/weapon/rig/ce/equipped,/obj/item/device/magnetic_lock/engineering,/obj/item/device/magnetic_lock/engineering,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) +"akB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/flora/pottedplant{tag = "icon-plant-21"; icon_state = "plant-21"},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "akC" = (/turf/simulated/wall,/area/security/detectives_office) "akD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/security_starboard) "akE" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard) @@ -5586,7 +5586,7 @@ "cdv" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control) "cdw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control) "cdx" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/plating,/area/maintenance/atmos_control) -"cdy" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/weapon/rig/ce/equipped,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/crew_quarters/heads/chief) +"cdy" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/device/magnetic_lock/engineering,/obj/item/device/magnetic_lock/engineering,/turf/simulated/floor,/area/engineering/locker_room) "cdz" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cdA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) "cdB" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access = list(56)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief) @@ -6101,7 +6101,6 @@ "cnq" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/engineering/locker_room) "cnr" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/item/device/suit_cooling_unit,/turf/simulated/floor,/area/engineering/locker_room) "cns" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/camera/network/engineering{c_tag = "Engineering Locker Room"; dir = 1},/obj/item/device/suit_cooling_unit,/turf/simulated/floor,/area/engineering/locker_room) -"cnt" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/device/flashlight/heavy,/obj/item/device/flashlight/heavy,/obj/item/device/flashlight/heavy,/turf/simulated/floor,/area/engineering/locker_room) "cnu" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Engineering Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cnv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "cnw" = (/obj/machinery/door/airlock/maintenance{req_one_access = list(11,24)},/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) @@ -7500,7 +7499,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaeaaeaaeaaeaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHainaioaipabhaiqahKaheairaisaitaiuaivaiwagLahhahRaixaheaiyahUaizaiAahTahXaiBaiCahZaiDahZahZaiEaiFaidacSacSadfaiGaiHaiIagXagXaiJagXagXaiKagDaiLaFtakDakDakDakFabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahHahHahHahHaaaaaaahHahHahHahHahHahHahHahHahHaaaaaaahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCaiNaiNaiOabhaiNahKaheaiPaiQaiRaiSaiTahOagLaiUaiVaiWaheaiXaiYaiZajaajbajcajdajeajfaiaajgajhaeMajjajiajlajkajnajmajoajpajqajrajsajtagXajuagDalrabdabdabdabdadDabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaaJaaJaamaamaaaaaaaaaaaaaaaaaaaaaaaaahHahHahHahHaaaaaaahHahHahHahHahHahHahHahHahHaaaaaaahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhabhajvabhabhajwajxaheaheajyaheaheajzaheaheaheajAaheaheajBajCajDajEajFajGaheajHajIajJajKajLaheaheajMajOajNaheaheaheagxajPagxagxagxagxagxagDalrabdajQajRabdadDabdaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhagJagfajSagfajTajUajVajWajYajXajZakaakcakbakdakeakgakfakhakiakjakkakhaklakjakjakmaknaknakoakqakpakraksakuaktajMakvakwakxakyakzakAakBakCalsakEamaamMabdadDabdaaaaaaaaaaaaaaaaaaaaaaaaaaaakHakHakHakHakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaafakIaafaaJaaaaaaaaaaaaaaaaaaaaaaaaahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhagJagfajSagfajTajUajVajWajYajXajZakaakcakbakdakeakgakfakhakiakjakkakhaklakjakjakmaknaknakoakqakpakraksakuaktajMakvakwakxakyakzanrakBakCalsakEamaamMabdadDabdaaaaaaaaaaaaaaaaaaaaaaaaaaaakHakHakHakHakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaafakIaafaaJaaaaaaaaaaaaaaaaaaaaaaaaahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaamaamaaJaamaamaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhahKaheaheaheaheaheaheakJakKakLakMakNakOakPakQakRakSakTakUakVakWakNakXakNakNakYakZalaalbalcaldalealfalgalaalhalialjalkallalmalnaloalpakCamNabdamOanuabdanwabdaaaaafaaaaaaaaaaaaaaaaaaaaaakHakHakHakHakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaaJaaJaaJaaJaaaaaaaaaaltaaaaaaaaaaaJaaJaamaamaamaaaaaaahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhahKahealualvalwalxahealyalzahUalAalBahealCalDalCahealEalFalGahealHalJalIalKagLalLalMalNalOalPahealQalRalRalSahealTalUalValWalXalYalZakCadEambambamcambadDabdanxaafaaaaaaaaaaaaaaaaaaaaaakHakHakHakHakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqaaaaaaaafaafaafaaaaaaamdaafaafaaaaafaafaaaaaaaamaaaaaaahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaafameaafaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafabhahKamfamgamgamhamiamjamkamlahTammalBaheamnamoampamqamramsamtamuahTamvahTamwamxamyamyamzamAamBamCamDamEamFamGakCamHamIamJamKalValVamLakCadEambanyaogambadDabdanxaaaaaaaaaaafaaaaaaaaaaaaakHakHakHakHakHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaafamPamPamPamPamPaafamQaafamPamPamPamPamPaafaaJaaaaaaahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHahHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7574,14 +7573,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZmbWubWubWvbZnbZobZpbNVbZqbNVbZrbZsbZtbZrbZrbZubZvbZwbZxbZybZzbZAbZBbZCbZDbZEbZFbYabZGbZHbZIbZJbZKbZLbZMbZNbZObZPbWMbZQbOqbZRbZSbZTbZUbZUbZVbZWbZXbZYbUlbUlbZZcaabUlbUlcabcaccadcaecafcagcahcaicajcaicakcalcamcalcakcanbnFbNmbIPcaocapcaqcarcascatcaubNnbNnbwCbwCbwCbwCbwCcavcawcaxbwCbNubNubNubNubNubNubNubNubNubNubNubNucaycazaCFaqvaDTbUQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabKTbKTbSlbMtbMtbMtbMtbMtbMtbMtbMtbMtbMtbMtbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaamcaBaamaamaamaamaamaaaaaaaaaaaaaaaaaaaafaafaaacaCcaDcaDcaDcaEcaDcaDcaFcaGbZrcaHcaIbZrcaJcaKcaLcaMcaNcaOcaPcaQcaRcaScaTcaUcaVbYabZGcaWcaXbZJcaYbVibWMbWMbWMbWMbWMcaZbOqbDHcbacbbcbccbdcbecbfcbgcbhbUlcbicbjcbkcblcbmcbncbocbpcaecahcagcbqcaicbrcbscakcbtcbucbvcakcbwbnFbBjbIPcbxcbycbzcbxcbxbIPbIPbIPcbAcbBcbCcbDcbEbwCbwCcbFbwCbwCcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbScbTbUQbUQbUQbUQaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbKSbKTbUWbUUbUUbMtbMtbMtbMtbMtbMtbMtbMtbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcbUcbVcbWcbXcbYcbZccaccbcccbZrccdccebZrbZrccfccgcchcciccjcckcclbZBbZCbZDccmccnbYabYaccoccpbYaccqbViccrccsbWMcctbWMbUhccuccuccuccuccuccuccubUlccvccwbUlccxccycczccAcbmccBccCccDcaecahcagccEcaiccFccGcakccHccIccJcakccKbnFccLccMccNccOccPccQccNccRccSccTccUccVccWccXccUccYccZcdacdbcdccddcdecdfcdgcdhcdicdjcdhcdkcdlcdmcdncdocdpcdqcdrbUQbUQbUQbUQaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaaaaaabPlbKTbNBbKTbKTbMtbMtbMtbMtbMtbMtbMtbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcdscdscbWcdtcducbZcdvcdwcdxbZrcdycdzcdAcdBcdCcdDcdEcdFcdGcdHcdIcdJcdKcdLcdMcdNcdOcdPcdQcdRcdScdTcdUcdVcdWcdXcdYbWMbUhccucdZceacebceccedceecefcegcehceicejcekcelcemcbmcenceocepcaecahcagceqcaicercescakcetceucevcakcewbnFbnFcexccNceycezceAccNceBceCceDceEceEceFceGceEceHceIceJceKceHceLceMceNceOceLceLceLceLcePceNceOceLceLceQceRceSceTceUceVceWceXceYceYceYceYceYceYceYceYceYceYceYceYceYceYceYceYceZcfacfacfbbKTbKTbMtbMtcfcbMtbMtbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcdscdscbWcdtcducbZcdvcdwcdxbZrakAcdzcdAcdBcdCcdDcdEcdFcdGcdHcdIcdJcdKcdLcdMcdNcdOcdPcdQcdRcdScdTcdUcdVcdWcdXcdYbWMbUhccucdZceacebceccedceecefcegcehceicejcekcelcemcbmcenceocepcaecahcagceqcaicercescakcetceucevcakcewbnFbnFcexccNceycezceAccNceBceCceDceEceEceFceGceEceHceIceJceKceHceLceMceNceOceLceLceLceLcePceNceOceLceLceQceRceSceTceUceVceWceXceYceYceYceYceYceYceYceYceYceYceYceYceYceYceYceYceZcfacfacfbbKTbKTbMtbMtcfcbMtbMtbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfdcfdcfdcfdcfdcfdcfdcfecffbZrbZrbZrbZrbZrcfgcfhcficficficfjcfkbZBbZCbZDcflbZFcfpcfncfocMocfqcfrbVicfscftcfucftbWMbUhccucfvcfwcfwcfwcfxcfybUlcfzcfAbUlccxcczcfBccAcbmcfCcfDcfEcaecahcagcfFcaicfGcfHcakcakcakcakcakcfIcfJbnFcexccNcfKcfLccNccNceBcfMceDceEcfNcfOcfOcfPceHcfQcfRcfSceHcfTcfUcfUcfUcfVcfWcfXcfYcfZcgacgbcgcceLcgdcgecgfbUQbUQbUQbUQaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcggcghcgibNCbKSbKTbKTbMtbMubMtbKTbKTaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcfdcgjcgkcglcgmcgncfdcgocgpcgqcgrcgscgtcgucgucgvcgwcgwcgxcgycclbZBbZCbZDcgzcaVcgAcgBcgCcgDcgEcgFbVicftcftbWMcgGbWMbUhccucgHcgIcgIcgIcgJccucgKcgLcgMcgKcgNcgOcgPcgQcbmcgRcfDcgScaecgTcgUcgVcaicgWcgXcaicgYbLVbVJcgZchachbbnFchcchdchdchechfchfchfchfchgceEchhchichichjchkchlchmchnchochpchqchqchqchrchschschtchuchvchwchxceLchychzchAchyaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafchBbKQbKQbKRbKSbKSbKTbKTbKTbKTbKUaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafchCchCchCchCchCchCchCchCchCchCchCchCchCaaaaaachDchEchFchFchGchHcfdchIchJchKchLchMchNchOchPchQchRchSchTchUchVchWchXchYchZbVibVibVibVibVibVibVibViciacibbWMcicbWMbUhccuccucidciecifccuccucigcihciicgKcbmcbmcbmcbmcbmcaecijcikcaecilcimcilcaicinciocaicipceBbVJciqbVJcirbnFcisbnFbnFcitciuciuciucivbnFceEciwcixcixciycizciAciBciCciDciEciFciFciFciFciGciHciFciIciFciJciKceLciLciMciNchyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaachCciOciPciOchCciQciRciQchCciSciTciSchCaaaaaaciUchEchFchGchGciVcfdciWciXciYciZcjacjbcjccjdcjecjfcjfcjgcjfcclbZBcjhbZDcjicjjcjkcjlcjmcjlcjncjocjpcjpcjqcjqcjqcjqbUhcjrcjscjtcjtcjucjvcjwcjxcjycjzcjAcjBcjCcjDcjDcjEcjFcaecaecaecjGcjHcjIcaicaicaicaiceBceBbVJcjJbVJcjKbnFcisbnFaaaaaaaaaaaaaaaaaaaaaceEcjLcjMcjNcjOcjPcjQcjRcjScjTcjUcjVcjUcjUcjWcjXcjYchscjZchsckackbceLckcckdckechyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaachCciOckfciOchCciQckgciQchCciSckhciSchCaaaaaaciUchFchGchGchGckickjckkcklciYckmcknckockpckqckrckscktckuckvcclbZBckwchYckxckyckzckAckAckAckBckCckDckEckFckGckHcjqbUhcjrckIcjtckJckKckLckMckNckOckPckQckRckSckTcjDckUcjFckVckWckXckYckZclaclbclcclccldclcclebVJbVJbVJbVJbnFcisbnFaaaaaaaaaaaaaaaaaaaaaceEclfclgclhclicljceHclkceHcllclmclnclocloclpchschsclqclrcloclscltceLcluclvclwchyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaachCclxclyclzchCclAclBclCchCclDclEclFchCaaaaafciUclGchFchGchGchGcfdclHclIciYciYclJciYciYciYciYclKcjfclLclMcclclNclOclPclQclRclSclTclTclTclUclVclVclWcjqclXclYclZcmacjrcmbcjtcmccmdcmecmfcmgcmhcmicmjcmkcmlcmmcjDcmncjFcmocmpcmqcmrcmscmtcmqcmucmvcmwbnFcmxclcclcclcclcclccmybnFaaaaaaaaaaaaaaaaaaaaaceEcmzcmAcmBcmCceHcmDcmEcmFceLcmGcmHcmHcmHcmIcmJcmKcmLcmMcmHcmHcmNceLcmOcmPcmQcmRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafchCcmScmTcmUchCcmVcmTcmWchCcmVcmTcmWchCaaaaafcmXchFchFchGchGcmYcfdcmZcnacnbcnccndcnecnfcnfcngcnhcnfcnicnjcclcnkcnlcnmcnncjjcnocnocnpclVcnqcnscnrcntcjqcnucnvcnwcnxcjrcnycjtcnzcnAcnBcjrcnCcnDcnEcjFcnFcnGcnHcjDcnIcjFcnJcnKcmqcnLcnMcnLcmqaaaaaaaaabnFbnFbnFcnNcmvcmvcmwbnFbnFaaaaaaaaaaaaceHceHceHceHceHceHceHceHceHcnOcnPcnQceLceLcnRcnScnTceLceLceLceLcnUcnScnTceLceLcnVcnWcnVaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafchCcmScmTcmUchCcmVcmTcmWchCcmVcmTcmWchCaaaaafcmXchFchFchGchGcmYcfdcmZcnacnbcnccndcnecnfcnfcngcnhcnfcnicnjcclcnkcnlcnmcnncjjcnocnocnpclVcnqcnscnrcdycjqcnucnvcnwcnxcjrcnycjtcnzcnAcnBcjrcnCcnDcnEcjFcnFcnGcnHcjDcnIcjFcnJcnKcmqcnLcnMcnLcmqaaaaaaaaabnFbnFbnFcnNcmvcmvcmwbnFbnFaaaaaaaaaaaaceHceHceHceHceHceHceHceHceHcnOcnPcnQceLceLcnRcnScnTceLceLceLceLcnUcnScnTceLceLcnVcnWcnVaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaBaafaafaafaaaaafcnXaafcnXaafcnYaafcnZaafcnYaafcnZaafaafaaacfdcoacobchGchGcoccodcoecofcogcohcoicojcojcokcojcolcomconcolcoocopcoqcorcoscotcotcotcotcoucovcowcowcowcoxcoxcoxcoxcoycjrcozcoAcnzcoBcoCcjrcnCcnDcoDcjFcoEcoFcnHcoGcoHcjFcnJcnKcmqcoIcoJcoKcmqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaceHcoLcoMcoNcoOcoPcoQcoRcoScoTcoUcoVceHaaMaafaafaafaafaaaaaaaaacoWaaaaaaaaaaafcoXcoYcoXaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoZcpacpbcpccpdcpecpfcpccpgcphcpfcpicpjcpkcplcogcogcogcogcogcogcogcogcpmcpncpocppcpqcprcpscptcpucolcpvcpwcpxcolcpycpzcpAcotcpBcpCcpDcpEcpFcpGcpHcpIcpIcpJcpKcpKcpHcpLcjrcjrcpMcpNcjrcjrcjrcpOcnDcpPcjFcjFcjFcpQcpRcjFcjFcnJcpScmqcpTcpUcpTcmqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafceHcpVcpWcpVcpXcpYcpZcqacoScoScqbcoSceHceHaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacqcaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJaaaaaaaaaaafcqdcqecqfcqgcqhcqicqjcqkcqlcqmcqncqocqpcqqcqicqrcqscqtcqucqvcqwcqxcqycqzcqAcqBcqCcqDcqEcqFcqGcqHcqIcqJcqKcqLcqMcpycqNcqOcotcpFcpFcpFcpFcpFcqPcpHcqQcqQcqQcpKcpKcpHbUhcqRcjrcqScqTcqUcqVcjrcqWcnDcqXcjFcqYcqZcracrbcjFcrccnJcpScmqcrdcrecrfcmqaaaaaaaaaaaaaaaaaacrgcrhcricrjcrgaafaaaaaaaaaaaaceHcpVcpVcpVcrkcrlcrmcrncrocrpcrqcrrcrsceHaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacrtaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/sound/effects/Buzz1.ogg b/sound/effects/Buzz1.ogg new file mode 100644 index 00000000000..99c49e3835c Binary files /dev/null and b/sound/effects/Buzz1.ogg differ diff --git a/sound/effects/Buzz2.ogg b/sound/effects/Buzz2.ogg new file mode 100644 index 00000000000..e009ce06b8f Binary files /dev/null and b/sound/effects/Buzz2.ogg differ