From 0aea66649ed6bafaf8054ccb7b12d6ce77b83e08 Mon Sep 17 00:00:00 2001 From: Armhulen Date: Tue, 26 Sep 2017 22:45:26 -0700 Subject: [PATCH 01/69] whoops we'll get right on that (#31020) --- code/modules/mob/living/simple_animal/hostile/giant_spider.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 7e8bd6d2c8..6ae5fe0622 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -117,6 +117,7 @@ move_to_delay = 4 poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? speed = 1 + gold_core_spawnable = 0 //tarantulas are really tanky, regenerating (maybe), hulky monster but are also extremely slow, so. /mob/living/simple_animal/hostile/poison/giant_spider/tarantula @@ -134,6 +135,7 @@ speed = 7 status_flags = NONE mob_size = MOB_SIZE_LARGE + gold_core_spawnable = 0 /mob/living/simple_animal/hostile/poison/giant_spider/tarantula/movement_delay() var/turf/T = get_turf(src) @@ -153,6 +155,7 @@ maxHealth = 40 health = 40 var/datum/action/innate/spider/comm/letmetalkpls + gold_core_spawnable = 0 /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife/Initialize() . = ..() From 59541efffb2c9e7d673e3099b85b8346a5e338c4 Mon Sep 17 00:00:00 2001 From: Michiyamenotehifunana <31995558+Michiyamenotehifunana@users.noreply.github.com> Date: Wed, 27 Sep 2017 23:08:36 +0800 Subject: [PATCH 03/69] Wave 3 of guns Reskinnable stetchkins, magrifle, flechette gun, Hyper-burst rifle, and 10mm soporific bullets. --- code/citadel/cit_guns.dm | 440 ++++++++++++++++++++++++- code/modules/uplink/uplink_item_cit.dm | 129 +++++++- icons/obj/guns/cit_guns.dmi | Bin 11194 -> 32918 bytes sound/weapons/magburst.ogg | Bin 0 -> 16302 bytes sound/weapons/magrifle.ogg | Bin 0 -> 18877 bytes 5 files changed, 560 insertions(+), 9 deletions(-) create mode 100644 sound/weapons/magburst.ogg create mode 100644 sound/weapons/magrifle.ogg diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index efab785d12..e62884ecbc 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -172,6 +172,27 @@ spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable recoil = 1 +///toy memes/// + +/obj/item/ammo_box/magazine/toy/x9 + name = "foam force X9 magazine" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "toy9magazine" + max_ammo = 30 + multiple_sprites = 2 + +/obj/item/gun/ballistic/automatic/x9/toy + name = "donksoft X9" + desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "toy9" + can_suppress = 0 + needs_permit = 0 + mag_type = /obj/item/ammo_box/magazine/toy/x9 + casing_ejector = 0 + spread = 45 //MAXIMUM XCOM MEMES (actually that'd be 90 spread) + + ////////XCOM2 Magpistol///////// //////projectiles////// @@ -213,7 +234,7 @@ //////magazines///// -/obj/item/ammo_box/magazine/mmags +/obj/item/ammo_box/magazine/mmag/small name = "magpistol magazine (non-lethal disabler)" icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "nlmagmag" @@ -223,7 +244,7 @@ max_ammo = 7 multiple_sprites = 2 -/obj/item/ammo_box/magazine/mmags/lethal +/obj/item/ammo_box/magazine/mmag/small/lethal name = "magpistol magazine (lethal)" icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "smallmagmag" @@ -239,7 +260,7 @@ icon_state = "magpistol" force = 10 fire_sound = 'sound/weapons/magpistol.ogg' - mag_type = /obj/item/ammo_box/magazine/mmags + mag_type = /obj/item/ammo_box/magazine/mmag/small can_suppress = 0 casing_ejector = 0 fire_delay = 5 @@ -276,7 +297,7 @@ req_tech = list("combat" = 5, "magnets" = 6, "materials" = 5, "syndicate" = 3) build_type = PROTOLATHE materials = list(MAT_METAL = 4000, MAT_SILVER = 500) - build_path = /obj/item/ammo_box/magazine/mmags/lethal + build_path = /obj/item/ammo_box/magazine/mmag/small/lethal category = list("Ammo") /datum/design/mag_magpistol/nl @@ -285,7 +306,7 @@ id = "mag_magpistol_nl" req_tech = list("combat" = 5, "magnets" = 6, "materials" = 5) materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250) - build_path = /obj/item/ammo_box/magazine/mmags + build_path = /obj/item/ammo_box/magazine/mmag/small //////toy memes///// @@ -339,3 +360,412 @@ materials = list(MAT_METAL = 7500, MAT_GLASS = 1000) build_path = /obj/item/gun/ballistic/shotgun/toy/mag category = list("hacked", "Misc") + +//////Magrifle////// + +///projectiles/// + +/obj/item/projectile/bullet/magrifle + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-large" + damage = 30 + armour_penetration = 25 + light_range = 3 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/nlmagrifle //non-lethal boolets + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile-large-nl" + damage = 5 + knockdown = 30 + stamina = 75 + armour_penetration = 0 + light_range = 3 + light_color = LIGHT_COLOR_BLUE + +///ammo casings/// + +/obj/item/ammo_casing/caseless/amagm + desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon." + caliber = "magm" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/magrifle + +/obj/item/ammo_casing/caseless/anlmagm + desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload." + caliber = "magm" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mag-casing-live" + projectile_type = /obj/item/projectile/bullet/nlmagrifle + +///magazines/// + +/obj/item/ammo_box/magazine/mmag/ + name = "magrifle magazine (non-lethal disabler)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + origin_tech = "magnets=6" + ammo_type = /obj/item/ammo_casing/caseless/anlmagm + caliber = "magm" + max_ammo = 15 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/mmag/lethal + name = "magrifle magazine (lethal)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "mediummagmag" + origin_tech = "combat=6" + ammo_type = /obj/item/ammo_casing/caseless/amagm + +///the gun itself/// + +/obj/item/gun/ballistic/automatic/magrifle + name = "\improper Magnetic Rifle" + desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magrifle" + item_state = "arg" + slot_flags = 0 + origin_tech = "combat=6;engineering=6;magnets=6" + mag_type = /obj/item/ammo_box/magazine/mmag + fire_sound = 'sound/weapons/magrifle.ogg' + can_suppress = 0 + burst_size = 3 + fire_delay = 2 + spread = 15 + recoil = 1 + casing_ejector = 0 + +///research/// + +/obj/item/gun/ballistic/automatic/magrifle/nopin + pin = null + +/datum/design/magrifle + name = "Magrifle" + desc = "An upscaled Magpistol in rifle form." + id = "magrifle" + req_tech = list("combat" = 7, "magnets" = 7, "powerstorage" = 7) + build_type = PROTOLATHE + materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000) + build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin + category = list("Weapons") + +/datum/design/mag_magrifle + name = "Magrifle Magazine (Lethal)" + desc = "A 15 round magazine for the Magrifle." + id = "mag_magrifle" + req_tech = list("combat" = 7, "magnets" = 7, "materials" = 5, "syndicate" = 4) + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_SILVER = 1000) + build_path = /obj/item/ammo_box/magazine/mmag/lethal + category = list("Ammo") + +/datum/design/mag_magrifle/nl + name = "Magrifle Magazine (Non-Lethal)" + desc = "A 15 round non-lethal magazine for the Magrifle." + id = "mag_magrifle_nl" + req_tech = list("combat" = 7, "magnets" = 7, "materials" = 5) + materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500) + build_path = /obj/item/ammo_box/magazine/mmag + +//////Hyper-Burst Rifle////// + +///projectiles/// + +/obj/item/projectile/bullet/mags/hyper + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "magjectile" + damage = 10 + armour_penetration = 10 + stamina = 10 + forcedodge = TRUE + range = 6 + light_range = 1 + light_color = LIGHT_COLOR_RED + +/obj/item/projectile/bullet/mags/hyper/inferno + icon_state = "magjectile-large" + stamina = 0 + forcedodge = FALSE + range = 25 + light_range = 4 + +/obj/item/projectile/bullet/mags/hyper/inferno/on_hit(atom/target, blocked = FALSE) + ..() + explosion(target, -1, 1, 2, 4, 5) + return 1 + +///ammo casings/// + +/obj/item/ammo_casing/caseless/ahyper + desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle." + caliber = "hypermag" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "hyper-casing-live" + projectile_type = /obj/item/projectile/bullet/mags/hyper + pellets = 12 + variance = 40 + +/obj/item/ammo_casing/caseless/ahyper/inferno + projectile_type = /obj/item/projectile/bullet/mags/hyper/inferno + pellets = 1 + variance = 0 + +///magazines/// + +/obj/item/ammo_box/magazine/mhyper + name = "hyper-burst rifle magazine" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "hypermag-4" + ammo_type = /obj/item/ammo_casing/caseless/ahyper + caliber = "hypermag" + desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that fragments into 12 smaller shards which can absolutely puncture anything, but has rather short effective range." + max_ammo = 4 + +/obj/item/ammo_box/magazine/mhyper/update_icon() + ..() + icon_state = "hypermag-[ammo_count() ? "4" : "0"]" + +/obj/item/ammo_box/magazine/mhyper/inferno + name = "hyper-burst rifle magazine (inferno)" + ammo_type = /obj/item/ammo_casing/caseless/ahyper/inferno + desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that violently reacts with whatever surface it strikes, generating a massive amount of heat and light." + +///gun itself/// + +/obj/item/gun/ballistic/automatic/hyperburst + name = "\improper Hyper-Burst Rifle" + desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "hyperburst" + item_state = "arg" + slot_flags = 0 + origin_tech = "combat=6;engineering=6;magnets=6;syndicate=6" + mag_type = /obj/item/ammo_box/magazine/mhyper + fire_sound = 'sound/weapons/magburst.ogg' + can_suppress = 0 + burst_size = 1 + fire_delay = 40 + recoil = 2 + casing_ejector = 0 + weapon_weight = WEAPON_HEAVY + +/obj/item/gun/ballistic/automatic/hyperburst/update_icon() + ..() + icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]" + +/* made redundant by reskinnable stetchkins +//////Stealth Pistol////// + +/obj/item/gun/ballistic/automatic/pistol/stealth + name = "stealth pistol" + desc = "A unique bullpup pistol with a compact frame. Has an integrated surpressor." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "stealthpistol" + w_class = WEIGHT_CLASS_SMALL + origin_tech = "combat=3;materials=3;syndicate=4" + mag_type = /obj/item/ammo_box/magazine/m10mm + can_suppress = 0 + fire_sound = 'sound/weapons/gunshot_silenced.ogg' + suppressed = 1 + burst_size = 1 + +/obj/item/gun/ballistic/automatic/pistol/stealth/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("stealthpistol-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +*/ + +//////10mm soporific bullets////// + +obj/item/projectile/bullet/c10mm/soporific + name ="10mm soporific bullet" + armour_penetration = 0 + nodamage = TRUE + dismemberment = 0 + knockdown = 0 + +/obj/item/projectile/bullet/c10mm/soporific/on_hit(atom/target, blocked = FALSE) + if((blocked != 100) && isliving(target)) + var/mob/living/L = target + L.blur_eyes(6) + if(L.staminaloss >= 40) + L.Sleeping(250) + else + L.adjustStaminaLoss(58) + return 1 + +/obj/item/ammo_casing/c10mm/soporific + name = ".10mm soporific bullet casing" + desc = "A 10mm soporific bullet casing." + projectile_type = /obj/item/projectile/bullet/c10mm/soporific + +/obj/item/ammo_box/magazine/m10mm/soporific + name = "pistol magazine (10mm soporific)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "9x19pS" + desc = "A gun magazine. Loaded with rounds which inject the target with a variety of illegal substances to induce sleep in the target." + ammo_type = /obj/item/ammo_casing/c10mm/soporific + +/obj/item/ammo_box/c10mm/soporific + name = "ammo box (10mm soporific)" + ammo_type = /obj/item/ammo_casing/c10mm/soporific + max_ammo = 24 + +//////Flechette Launcher////// + +///projectiles/// + +/obj/item/projectile/bullet/cflechetteap //shreds armor + name = "flechette (armor piercing)" + damage = 8 + armour_penetration = 80 + +/obj/item/projectile/bullet/cflechettes //shreds flesh and forces bleeding + name = "flechette (serrated)" + damage = 8 + dismemberment = 10 + armour_penetration = -80 + +/obj/item/projectile/bullet/cflechettes/on_hit(atom/target, blocked = FALSE) + if((blocked != 100) && iscarbon(target)) + var/mob/living/carbon/C = target + C.bleed(10) + return ..() + +///ammo casings (CASELESS AMMO CASINGS WOOOOOOOO)/// + +/obj/item/ammo_casing/caseless/flechetteap + name = "flechette (armor piercing)" + desc = "A flechette made with a tungsten alloy." + projectile_type = /obj/item/projectile/bullet/cflechetteap + caliber = "flechette" + throwforce = 1 + throw_speed = 3 + +/obj/item/ammo_casing/caseless/flechettes + name = "flechette (serrated)" + desc = "A serrated flechette made of a special alloy intended to deform drastically upon penetration of human flesh." + projectile_type = /obj/item/projectile/bullet/cflechettes + caliber = "flechette" + throwforce = 2 + throw_speed = 3 + embed_chance = 75 + +///magazine/// + +/obj/item/ammo_box/magazine/flechette + name = "flechette magazine (armor piercing)" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "flechettemag" + origin_tech = "combat=5;syndicate=1" + ammo_type = /obj/item/ammo_casing/caseless/flechetteap + caliber = "flechette" + max_ammo = 40 + multiple_sprites = 2 + +/obj/item/ammo_box/magazine/flechette/s + name = "flechette magazine (serrated)" + ammo_type = /obj/item/ammo_casing/caseless/flechettes + +///the gun itself/// + +/obj/item/gun/ballistic/automatic/flechette + name = "\improper CX Flechette Launcher" + desc = "A flechette launching machine pistol with an unconventional bullpup frame." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "flechettegun" + item_state = "gun" + w_class = WEIGHT_CLASS_NORMAL + slot_flags = 0 + /obj/item/device/firing_pin/implant/pindicate + origin_tech = "combat=6;materials=2;syndicate=5" + mag_type = /obj/item/ammo_box/magazine/flechette/ + fire_sound = 'sound/weapons/gunshot_smg.ogg' + can_suppress = 0 + burst_size = 5 + fire_delay = 1 + casing_ejector = 0 + spread = 20 + +/obj/item/gun/ballistic/automatic/flechette/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("flechettegun-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +///unique variant/// + +/obj/item/projectile/bullet/cflechetteshredder + name = "flechette (shredder)" + damage = 5 + dismemberment = 40 + +/obj/item/ammo_casing/caseless/flechetteshredder + name = "flechette (shredder)" + desc = "A serrated flechette made of a special alloy that forms a monofilament edge." + projectile_type = /obj/item/projectile/bullet/cflechettes + +/obj/item/ammo_box/magazine/flechette/shredder + name = "flechette magazine (shredder)" + icon_state = "shreddermag" + ammo_type = /obj/item/ammo_casing/caseless/flechetteshredder + +/obj/item/gun/ballistic/automatic/flechette/shredder + name = "\improper CX Shredder" + desc = "A flechette launching machine pistol made of ultra-light CFRP optimized for firing serrated monofillament flechettes." + w_class = WEIGHT_CLASS_SMALL + mag_type = /obj/item/ammo_box/magazine/flechette/shredder + spread = 30 + +/obj/item/gun/ballistic/automatic/flechette/shredder/update_icon() + ..() + if(magazine) + cut_overlays() + add_overlay("shreddergun-magazine") + else + cut_overlays() + icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" + +//////modular pistol////// (reskinnable stetchkins) + +/obj/item/gun/ballistic/automatic/pistol/modular + name = "modular pistol" + desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "cde" + can_unsuppress = TRUE + unique_rename = TRUE + unique_reskin = list("Default" = "cde", + "NT-99" = "n99", + "Stealth" = "stealthpistol", + "HKVP-78" = "vp78", + "Luger" = "p08b", + "Mk.58" = "secguncomp", + "PX4 Storm" = "px4" + ) + +/obj/item/gun/ballistic/automatic/pistol/modular/update_icon() + ..() + if(current_skin) + icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" + else + icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]" + if(magazine && suppressed) + cut_overlays() + add_overlay("[unique_reskin[current_skin]]-magazine-sup") //Yes, this means the default iconstate can't have a magazine overlay + else if (magazine) + cut_overlays() + add_overlay("[unique_reskin[current_skin]]-magazine") + else + cut_overlays() \ No newline at end of file diff --git a/code/modules/uplink/uplink_item_cit.dm b/code/modules/uplink/uplink_item_cit.dm index c9bb091303..3aa1fd8bb1 100644 --- a/code/modules/uplink/uplink_item_cit.dm +++ b/code/modules/uplink/uplink_item_cit.dm @@ -31,12 +31,133 @@ /datum/uplink_item/dangerous/antitank name = "Anti Tank Pistol" - desc = "Essentially amounting to a sniper rifle with no stock and barrel (or indeed, any rifling at all),\ - this extremely dubious pistol is guaranteed to dislocate your wrists and hit the broad side of a barn!\ - Uses sniper ammo.\ + desc = "Essentially amounting to a sniper rifle with no stock and barrel (or indeed, any rifling at all), \ + this extremely dubious pistol is guaranteed to dislocate your wrists and hit the broad side of a barn! \ + Uses sniper ammo. \ Bullets tend to veer off-course. We are not responsible for any unintentional damage or injury resulting from inaacuracy." item = /obj/item/gun/ballistic/automatic/pistol/antitank/syndicate - refundable = TRUE cost = 14 surplus = 25 include_modes = list(/datum/game_mode/nuclear) + +/* Commented out due to introduction of reskinnable stetchkins. May still have a niche if people decide it somehow has value. +/datum/uplink_item/dangerous/stealthpistol + name = "Stealth Pistol" + desc = "A compact, easily concealable bullpup pistol that fires 10mm auto rounds in 8 round magazines. \ + Has an integrated suppressor." + item = /obj/item/gun/ballistic/automatic/pistol/stealth + cost = 10 + surplus = 30 +*/ + +///Soporific 10mm mags/// + +/datum/uplink_item/ammo/pistolzzz + name = "10mm Soporific Magazine" + desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. Loaded with soporific rounds that put the target to sleep. \ + NOTE: Soporific is not instant acting due to the constraints of the round's scale. Will usually require two shots to take effect." + item = /obj/item/ammo_box/magazine/m10mm/soporific + cost = 2 + +///flechette memes/// + +/datum/uplink_item/dangerous/flechettegun + name = "Flechette Launcher" + desc = "A compact bullpup that fires micro-flechettes.\ + Flechettes have very poor performance idividually, but can be very deadly in numbers. \ + Pre-loaded with armor piercing flechettes that are capable of puncturing most kinds of armor." + item = /obj/item/gun/ballistic/automatic/flechette + cost = 12 + surplus = 30 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/flechetteap + name = "Armor Piercing Flechette Magazine" + desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \ + Loaded with armor piercing flechettes that very nearly ignore armor, but are not very effective agaisnt flesh." + item = /obj/item/ammo_box/magazine/flechette + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/flechettes + name = "Serrated Flechette Magazine" + desc = "An additional 40-round flechette magazine; compatible with the Flechette Launcer. \ + Loaded with serrated flechettes that shreds flesh, but is stopped dead in its tracks by armor. \ + These flechettes are highly likely to sever arteries, and even limbs." + item = /obj/item/ammo_box/magazine/flechette/s + cost = 2 + include_modes = list(/datum/game_mode/nuclear) + +///shredder/// + +/datum/uplink_item/nukeoffer/shredder + name = "Shredder bundle" + desc = "A truly horrific weapon designed simply to maim its victim, the CX Shredder is banned by several intergalactic treaties. \ + You'll get two of them with this. And spare ammo to boot. And we'll throw in an extra elite hardsuit and chest rig to hold them all!" + item = /obj/item/storage/backpack/duffelbag/syndie/shredderbundle + cost = 30 // normally 41 + +///Modular Pistols/// + +/datum/uplink_item/bundle/modular + name="Modular Pistol Kit" + desc="A heavy briefcase containing one modular pistol (chambered in 10mm), one supressor, and spare ammunition, including a box of soporific ammo. \ + Includes a suit jacket that is padded with a robust liner." + item = /obj/item/storage/briefcase/modularbundle + cost = 12 + +//////Bundle stuff////// + +///bundle category/// + +/datum/uplink_item/bundle + category = "Bundles" + surplus = 0 + cant_discount = TRUE + +///place bundle storage items here I guess/// + +/obj/item/storage/briefcase/modularbundle + name = "briefcase" + desc = "It's label reads genuine hardened Captain leather, but suspiciously has no other tags or branding." + icon_state = "briefcase" + flags_1 = CONDUCT_1 + force = 10 + hitsound = "swing_hit" + throw_speed = 2 + throw_range = 4 + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 21 + attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked") + resistance_flags = FLAMMABLE + max_integrity = 150 + +/obj/item/storage/briefcase/modularbundle/PopulateContents() + new /obj/item/gun/ballistic/automatic/pistol/modular(src) + new /obj/item/suppressor(src) + new /obj/item/ammo_box/magazine/m10mm(src) + new /obj/item/ammo_box/magazine/m10mm/soporific(src) + new /obj/item/ammo_box/c10mm/soporific(src) + new /obj/item/clothing/under/lawyer/blacksuit(src) + new /obj/item/clothing/accessory/waistcoat(src) + new /obj/item/clothing/suit/toggle/lawyer/black/syndie(src) + +/obj/item/clothing/suit/toggle/lawyer/black/syndie + desc = "A snappy dress jacket. Suspiciously has no tags or branding." + armor = list(melee = 10, bullet = 10, laser = 10, energy = 10, bomb = 10) + +/obj/item/storage/backpack/duffelbag/syndie/shredderbundle + desc = "A large duffel bag containing two CX Shredders, some magazines, an elite hardsuit, and a chest rig." + +/obj/item/storage/backpack/duffelbag/syndie/shredderbundle/PopulateContents() + new /obj/item/ammo_box/magazine/flechette/shredder(src) + new /obj/item/ammo_box/magazine/flechette/shredder(src) + new /obj/item/ammo_box/magazine/flechette/shredder(src) + new /obj/item/ammo_box/magazine/flechette/shredder(src) + new /obj/item/gun/ballistic/automatic/flechette/shredder(src) + new /obj/item/gun/ballistic/automatic/flechette/shredder(src) + new /obj/item/storage/belt/military(src) + new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src) + +///End of Bundle stuff/// \ No newline at end of file diff --git a/icons/obj/guns/cit_guns.dmi b/icons/obj/guns/cit_guns.dmi index 2db84677d2ed3c067a2768f462592125a7624a24..c6b2ffe49f96ecf708714d7d7ac85a93647baf41 100644 GIT binary patch literal 32918 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 literal 11194 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 diff --git a/sound/weapons/magburst.ogg b/sound/weapons/magburst.ogg new file mode 100644 index 0000000000000000000000000000000000000000..33068de0ea92c537078c1785fb21fa68ef3a7b4d GIT binary patch literal 16302 zcmeIZcUV(T*C@IZ0)!AT^iU1G1tc^9QA6k*LJL(&LPw>lU{n z^rj*TihwBgE@z{^_dW0Z?)RK?pXWUHzcUP*DQjl!S!HIeH5&_WZ)*Sw{FB1`{uZ9h zi-$pkA>pTkJ$ys18BSnN=!%J}=8~zciqjn3t6}fcB*02LJWIsF1k<00vN{ zSyIbi8u?9Vc%!9KgG)4g&DEfdSuzz{E#J5#amNC&*Og1%p%lT^0tQg3AO9(z%RUxJFw9 z$EU&dTYw|7Z@TudFk`wYthc#xJuL4rd;;(A2!p_D)JL5Rvwh!&U)LUkWxnT~%nJ@_vs?6VyJ@HoMNAi)P9HHh*v!K(Hl#}-1&7C=($ zQ{;c0qW;JWxDb)6UO9eLxN@5NAF@!vY0;%{9pqn3AV5OtI;LQ<;KR5ETfvKxTCT#G zoCmq_4PhslDMHMh9HQesx2RQoNPzw`Yg7PYQL6FnNwz!8bdh5ol#T)@&da?zV{ zmi@N>Dn59SZ|;le!K=}ji>XW=Tq0E>nZlu0*fL9S!!i}ZDXIF#wK0}NKB>yk=szpR z000g3M~eUT_#?`HrMMy^Np?i~#+cG5cK^}PH=()R+=tRZ;y@|Js)ACS(*CkIq)Efj zzp{PaQLZwJXe?9tSEE3tV#sOQOniToBrY#_M5Y?livMKXuJ}WCp{f7K58nw|aY%r9 zN=e>Y`IxPZt$lc)LvGlko3Sp7VNVw>K3zyT$s6}y1?%6M1At0H`=gUt9(3GLQH(i( zRG9nS#!Hgafi+DP^{HlW>hINwv@SW z%2Ef#>E=a;j(-&9ui89a2>TDs*;f%!jnp;64A}qFoD%8O=jy3qMj7G`8ItF7yb}v* z^NTlY%MkxXb9|Dj^OC9)k~R`jr4w^}6AS8Yl?9A6ZQuUi=6`FBL9jTOLCw(%7XJ^; z>Bb4_fZEiGHT&>)jmM@yf`;nx{wD(fpgRp|@@F5hBFfJZRp*HEwl>H9*BS%%&Z(Hq zsDOmc1^_+)Sg)v>jbP*ONYhBv_JJGq3l2DIZWfh0)8o^`^o@2ztjAEW_Pj}>SgzUU zj($QRHpwZCWJ7KFjzOZxiyCHd+k*q8d;r@JM9_>u(1Zchy!~V}1DJ6^#yR&74={C4 zso*(};W_pGR{zhQAR-kj7?}T=21GPv1DR6!2N#H?TUigU0-hxQ=jp$}Wu*$S_zzro z6*Ihz+5b7F|2xC~rNIA|0-%UP*uY;NLaB%xl&TH^;@9vQ7^7Vks;9%Q);WGt&Q%hR z*1-binSW^qc)-3_IVY@ju!<#3##iRBp%t0O}cJ2hhGS%%DI3D#f9g82~aU z=Y{|KY5u>r{uhK0sx$z^myvkR2#!KiJst2FSXMU&z>MJ>Kb{M+4-DOZI{_659%gA3 zvIKx)1Xj;*jZUjrt*hr$`j!m`VNGUq(mAv3z9?kx?W&!?+exK_tpB0#qS&@RtOSjcb4b??G$NGs|O4V?&%^jC)xW z!XZ+L2F;sVF3)`%Co2O7+R5g|5Awh^sY)^kSCmQA1l!m^gCi6KsmLM{UKNFa_QzEa z1OnjyQadTYT#>`(54pL4?$v#E6-$BSHp-|vUn~XMt$rC5e_IN)9{xl9^Tq$rIM@Z` z#y+7WM)!GCTUUnwYcn9BV)yOcy1MP&j(z$sgt=;~UEg02XHe zK(^UEjFwr}(hVMT(Ean0hJ(w1HW!mf1&UxO6Pxz`6n_X6979F@OHuf(%5jE%VobPZ{V z>>S6WMnVD(URg2g7=Yt>sKH!Xk>!{q)A1Z+5ZDGT#nG8nq%zAfS-t~Z7$5?2%^z&@ zR5or0+rXvxV~uZtZ7l<6{}esxLZ|&+|3+1r7a=AsbB>-3?ULp6jQzHT_Ic4PqS7Fj zHCQU3DGq)?dp6)U95Xq3zY1H+gTVfvEQpa)Y6l%b!C|4$Q{?BeLM9ji{4sR^FM-yU z;${5^AhA4pXa|iN@*Fy z5pcwQ2Z&Cha`x{C>3vJsxc1*2m04NDKV#v4Ok~g%-M3UZK-tYAg5zRA9Di+RkRS*U z$Da;k&}HQ!u>9@F$^hXi|LFh`f%E^<0U`pY`8xtE?3>`(`>^|kKhN6z5?KBF{M%6p zA_5!#HtizML_HPy3ei`<6KQUSPeskp}EvNyPk}3X=&Vn8qin*n2-m#t@ zJYrj4AcR}xC_AWa5EgayXK_+1yEK8K5^I|+JctJX zgn?CX`&t4-Ma%NnUhRGbSlIbQWN;eV?0>qC0$%~ZkVs8P@Oi1OsdXGr(A76IHZ`{d zw>QY2lMoL;;PAf==YAay{~PG&-j7{?X+O}he=N4*%a!?0y0}sHV)q>ORQC+`%)q~t zJ*Pe6J^MX^IP|QcPQ7l%`sHxhPuh>@(MIRh_afh~e|YP$vFK3%s5dnUU(8O{GnOyt z?W!8#YMHLGd}GWWtMKbt$@Pmv?Kxa7)_iw&FZf^ky=N(d=w`~T$8G<9HRjqe8XPJB zkd;QAQjkdJm4LZx;0qu5ad5J(_2o$^6Cg+8%(ushKUa2s-DmGlsrD_tV-b2Q!%xVh z+*&9wVc0q_lD+;zM+48D32SXd{s)dVYde|iAZO2*Z1iM*}+YeXkSE+JO zjBjxu@2nj5wvfJw7?+=r0=`}_{Cwr*g_b@3YsH!uyiBjSs%AMBXS;rszIdu7P5Ftm zTF7GV6QS$c4O=IN8Xa;Lx3`X#pPN!QA9j}?UGt3m@>3G{&LV`mcUPFXZC60llcUf! ziq!))a(MNa#oGFhFPVp{&L0^c-+ncDxO`FOdWiiu%j)>;d2s7(?eH2m)gfMb39@*? z`0Q|XPQ#BG_4D~scQQYHyRKY)jbHNcY0?!lm4Yw47Q7q3!Xq69a(7y$V8=#45h9+lon2PbM-r73Qtcj4S@kYRT^QoJQvaRk zBstkg`nb%alUS%^w-CGOgOfmBJ&vA@N#ZuRNig~-D{BU^;b#}2(Gm$1dd#P>OsUA7 zDPU&C%FN{~7gLz=ILSKy; z91HuBqpini1-W-rud+X!vB$&g#jvV>SBRC%N4l-MtbW&+`0+cMoAZ2wdCJ?08ok^L zyKK`E;ULM=hKo!kosVctPTcN!mtX(Gf9m0r@rR8cg){jBpS-)Ob|Uob6NVJ$M(h{L zkMXxHk0J}-F76bF6pX%3k@#3@p6+z`aLGAyb7hMOakE2lx4a$RmUVxz^JrCmEB9*3 zxHEH@W59u?$HrGp*kM~9B6J;o{Nt>!a&;b&hDnd=vuUmEI!VFTh)TDzeo-fLQt9(& zavV6CDP$HFA4X}IjBZJSVmOnPc%|hLu4PmvAcxYpe=5i%D!*dV4|Q-0RF0=9A$llJG^-r*KXL!|_Kp7fgkb9o#{B z&mzn5owTFJcd12h36XZLQujB{w4mwXX4xY%VP^=YxgIi!)}U3YjtlsBDrl{W@};{_x<|{CG2GC z)<#@ko6`F`gHPTNX$EGZ2y&zh;vnL@yYKutnOklTkxaDQrks(^*TnYA4#yLuV;SR2 z6NlH)L>A>`t{Ro%bv;IigN$4Y##|J7GM?WVuGC{Zkkf_^U|*XPF-rgdOoqJNppv>0 zhX|FnQ^G~&`1Hn_VU%hYC6Irw-OKqWBIVoqM-8;QC7k%6F4ROF84D4^095r4T6~5x ze0uctvDgxwRsBcbgdIC={VX`It_vblWEoeJNDU;c+8I7zMIhGNSeBs=q46`wu1#G` z7`{VE9%2x?b=~)7&+D4APA8dVEIp<4v2Q>zoSC|-d2MB$Ir)PUdd6BHUhWk9)ks0A=-s)@1-{syP7e1(T9yj%| z+~gBRl+`waiSjg3l;mC}jWaxK?2;z(0p`{yJDZNyok(9ivU~nu{@W)Eg%W&Uw4!*U zs+C5v>(TX0^U;r<$n8eM9odkqzrFMsTT{q|h%+!XHrjJIYcrN^31fms8v^KOXrS9L zpf_7Zlre%a?a9s@X)&0p>%-G6uh}QsDFxwfe3nc-%NC}h&9&AliU6crDJ+lyF)!y_z>mj%wVdAq46K(^{bJ7uIh%v=^R%nBsW%#b zIU98TSiV+37f`<+@cVAoRQvc3>EwF_l&a7dJ0}`emXwz#-UyxuxN||Y^jhRgL+y6k z(b>0p*8O6A@aJ zvc6a$lhK(4kx#%TjLzXy)&}Jp(alg=_w;SUC>Am`41&rb0Sj|X=?(YZx4Wr|XiH~e za$*rEC<@gU07N)%S_Uh;pA}`OQ0z^Og%Fma*p-riey&aqK$``r3&lW70DUSuA0#J6 zcgZR}_Dop%<{1XgTLA-5P=eu=T$Ye^4|5A~izq}hge4~}ps3o<# z&gI(5b&HzFUO9%(qu^4IIa-TLgFU2qn}ntuZx<}T(;9liXu!AUxU zN#RnVgBnp!uGK0xKMz#o)&aGpo5yY!!NU(Q+z5N~j)(bsT>E*_>xGq>(8pNqgj-uW z<~`qU33NQD3Eew%(G$CJJcMOv!N&Hz-si2;u*Aq5h7)@ON*?bR&ee)o^?eNe zNH6DjkwwrjDqt6d;mdTfQ*U4A-pP4ZoND)F=A~L#MZN@~(LVS1NB&Hy{Ma8>IV@*wN^|)cBlk?b=pytY-)^w8wI{^(P4lCWNJkM*r90~#m zln$evWJ!Ox_QUM_zAc3WrtXxXJ_ObMVq90n19a=lw~+6bYPP~`+qzH0 z&x%=M{b!>G?0L)xQat5a;<`Nd5{qY{ckQ*dV-hb+Oj*7C-qDzOJGBS_I%0XL8*5ju z`mVj&IJi@9Q2t)(!)cZ`h41Vl>yisS(=T*&ICZ&y;#anZdAB|swhl`iKHcnb{nLvd zxZL;OzG-aNyH!8t>sYUl+ty(jJY(KdKKbmmHSwzf5oub(EbClM=`uY< zq6e>=XuvHtW(jQui~NwQ(&q!uN>%lwkg^?pc;;sP?TKsL%G)DQdJhvEslL_lIt&L* zBa1r?XGug?w$7@jPzMkI=9ZnvJ3KF>8R@}qQ!qeeWOwR;N4c{vuDbSgC<0`Sjsup4 zhCvc)0GT2Iz=v1>E?ByvY%Ud_MuEYMBv2IxY7JR{3QSP-QBl`OMYueK%6o~Q>Gd5P z1`q>aZhKfc69D+kf&N9!;JIAV4Xr~zsS{<=mD1$m*7au)-WI>=KZsCtabrH!iMU{T zjW_q@3*s+y-|yLbmm38eua0JDvU#e1%lX-dYjjbHrW zLn)hH!Yt!mhTR#&$l?3VWL$43O;N@s5-W!fJ%x!2A^p>(Hs#JwfK+q1njI^Or zE}bMNy)k`XcAJ}4=7caZ^1;euRjHKmN$?(&YOo^VaWjMHYG2YagXcmprQN})uYJ^{ z;Tfn8ZH{Xj%gpI!jRe6IQ#lG?%_VxXLcx{#v`Nu{A|=&x=(}iE08)zyJeMmziU7K) zjPaJ&)E*v+Z*A^Qr^G{n;{q>|EbR0>9C;R_epEs;r|W{ARhpXL`&f0jt>dmx7+Q$U zuW`ikHh4_YXp#oXM|6|RX^n${m(5|Cy#H>7F^GD?i7-D zib*%@KduhQ)*bSnz0-jmo4x*{aW<;iCY|RnJNHFR7>}N^;gi%k8X$LWQ}5C%5B9}G zd;L*OWvdKjNvG%;VjNe{Ih$UiX{+JY?#2le63#DBnnQjht>Qk`rL!D-fxe`Frm3At z`%XXKK{8SpJ|#;>kaL@qlIgaS31vgsKxm;I1>c8nx_jxFMe%5)=4I*8@ zRI4)=8r&mf&B;!*ysi z=)~o(!Ki?%D>9ALptBg*i;(XW z9_-H@oB50#@6^4qB=h=&|Du;~QK`vQO;5AqW$m;79Ey zYi86W-T=nm-)#nG*Bc?cXq{c|%7Qv}pIk`sQ|aCZ=kKc#?$U8pAITuHR}0E-qvT^r!oUIu#=tSI zF!$~GoYgixai4`Oaxx=Ljw_laha1@-6hWs5bgMPA_6R*%bdQGwBJr`YLKOrjm)NLf za%sZKxqgp@QfXa&HV7>JQ4~YgcLL8HDKZN6tXHWtC012UrT)r!&$PreavxI?8NLWD zNoa8d(h}Ia0EmcaLQU-zD7R=_Qj~Np3}c*dW`-TbjgSggKzbbN(!9L%{Yy61&2Cy( z;Zn|{ zQ=x#{0Yen%0~TkW+;k~-IdzdC#n0<&-?_=7w5c!8FU^Ji-abKc%K7z@3sJYJT#dlkCiXD8te4VhD93zoPxGVC&jRq)+$77?sVxJwRaFG;tzh9#>C-I13MA0VKl;N#DHjEJ1s7`QscXSDis@;Ok%p;nz@;G#* z8IiK#k~Kg&Ai=}>odXsV0EkwyiMG zQA=V1Fs;}%3|lYYkmDfx8(~}R$abvTQhvSjq@1*B8w&};+O@;B8}i8iVH~qUNJsgl z*`YjJiEvaQ$PqsOY4yCTAt4cc$2W7^wa5;-?@nf$JKapVm^}V#aN|w<#b4Pe{*Q(d zAIK-OPb-p5icR9GLv;_gw;ntHjXO6o7sHq~0lD^c>Jc5*Y7?)?c(aEjXhXQoPe?H7 zJQI-BpW4!mNN<$ItR12_E-FtoG)rc;kd11!&3uE{#aQ6%DF?QVJ>!WrOtGFVv>Z#H zC3xD4wzXojRE4V7b$Aknc&J_*s0f5%ht<|X9aHSZ;1ct;!vMeXAYbO+7YHYSqzT9pY8wzTX}W{fZFcr2>`_f>vy!-en&|bwg}j4 zi_;;`nL{l(HwHe34t&CIctk(Gc`3DnU8pe#ywkz^ofJ^rXf<1=J&oA#xPJM)nBAVy z&e`AZzljiU%8xcbz5n@?*UUX^(`}2BCnDOG=N=2Lh$+Xkj0|^9XJ`~U&z~1RdX#&M7N+c!Ni>cmvD_=i0hP5R@sEqDG3o176+}M3#XXk3l1hht>2$WZ46eEKWYHU%Z zCW>dKSy82foKuB!?AGCe-~~+pwQy2z=>h#-7IqkrmZIA479ZW&%-+DBeL%|{p}5!) zD3+KRGb;G~fM;qzn{B$oxWOb0bS%2#?g$66J(-mh7T$Yar>5Z$`sv%?-ktKV zOGEu5fwH93J9`cS%~kgnew=;zT7UVr-o}e1_If9>-21C$+^=Ff;zjHAV9gI6`v$#* zFeh}1@?{4NavT;l*(5zS9yFDXcx8PvAmHLy7CCrQEy`r-xO|<5C#t+ZHj4e+Rq5Gf zAp6bZiOtPgmj35P$OKeO_H|3eWM#e~d4pWm2$vGx{s!YR4zoo0RBhYEd!}2pN$k`& zO=OQ`lJ>6JU7y{FQaVW$v}d=H6|vW= zBrus&<{25K8K)&mmK&dArW$X6BV3%6EFW0#(JJDrr} z_Zxe@|FK(<+(k~Em=mL2G_2U(^EZ1NLH%P+Pj9Gie~whXf7#n2rR)CFudnW^72h4h z-VghEE@F);8EjZ~^oH~NAI;<1WaUaqCSb8=fVlYyb2~*C6!U#4y=5fGrSF_JK zr1MfCP3k^|hi9(OEU{oqD1)vT)}yioRa z=o#&IO=AW~-6JY}8Ap#C>D_r}uZZVRvg#c^+FJhoT$cnzdvMrCw)%NVnfXD$$fm3$ ze&ouh`KpF-0mUQ0=IH8J-6Q(aBWDF}R{`W=4{P(L^V{%|ZgnRQ{ta%r3r-Fh zxA~uGmHCR`9V)e-&skaB|MWsw*sCMeMTNgx-(5JlclrmX>u2s4{kJ`uemXdL>zoet zI>f20%xapcJHH-Fk@ujzaB{!qxA-lc^id;--deOQa>yrr`GCD)ucMfCN0sqel^%UI z-6_R%=Ac_!VJ6zDbmdz)*uE!I=~DSuT{#|+w-MC|lgTu+wjvDLR$|o+ZB;r(Klcu9 z_?G(RO%ua9d%5&`O|5>RljpV#=nmya&wa;o?_4baz1(iI=h@`t-~N|EF5c%){P6Ut zj)leBi@7N?hl;|+d4!SmXVurP7>rdPe=K~bFy@;2o`*!d+Ni0CXyo*EUm{cVa8{iD z%q_3+^c@sMtF4DWkwan>X{;n#{<;)C$-5D)&uwtto}sN(dDCBFw8FO2YE>^T_GZJ~ zyuPeRmz%BW(;1n{pZ%Da*wf^Wx#FekR$cpJu%}q!hvCd{)G1mnH|nHdojx_q4l7=2 z(e!(c(SS)#1$7j`BEjIcW&;OuFTg|yG`h>hwyxp_LQpX1~!S_x?1hh3_H~iE$f4-qa2z*ib z&_{>|nP_JvvJTk0pv^ZmvnlCB;i1*vTr0V|GP|G?ylu ze0%A6ZZ1FK4!;1iPn~MaBP$n%kwl}q6};L*1m|RZM-}y!(!|jo#D&kWOo?ZjV9Pm=E&mkrH}Pn>TI>yRRd}P z1#o}6n#4SrG%Wbu9@1Qw;P2qBhXWc!0KC13p_{g!og9FQ;s$(h;8(YdDJ>A*4n2`r zcY$&%WPRWzk*8!r!x>dJA#90aO*Vgbojb+N5<qe?xY?iZxHA>|Li=>#D8Gqm=n;+8;sue1^;rP)ozh6{+N;aDe%so<>R z`$-iA%RHNhXAZkYdbCZezMvJLl+6rY*;SU-OBVY&qPUW6c(?fDk37Br_YKmy4j1FW z`PU}QcF=0*>CLYPf@z)N16A>ir8b8wpEI0Iw0#;Oh+9-s%5m2Vu{zPhaFaq#eiMS4 zLZBg7stK$Ef`I{N2q@{t@PqFwdUTioK9a7#mMcJaV@zhWbI7rK;6~%wy{8R8Ab>c4 z!m`PmbSbr4UUYPUrM2^uKq1B?+w}v#YsEvc*FzwzrnOelRibMLxeu<&m!I4wP6V&q zgr>8}JY0A;%4ZQupO62_#*BMshx0g#1oE|j5Z9ike3aes#nh)Q$A=0M z>26Tm!$)F5mN!Nlvy9_34XiZya%1Z9MB;n#Zgub-RsgPnA=dP+HL_N4oo~pbx9m5C@4_k z;7&L56!3M3MP0y_bTOTFwl{A6?%7D@oHdD&6b>fhV2`7M;D${e9*}q=9$VkIpTB z@4>epu79D(cs>2CV;z_7wD);-o$XHiL{Pjp^NB8QyN*Wj^_k|d5Qmr>Nj6!h4Q6I$ z-3`5V0(piC((_h2EGvUUlMV|l!H&s`iHXin^Sn+^p*x`E;R5VbcmOL&>r7U@P(f{s z5)}Fxmcy;3r29$@dIg&}>2|amozI2hK{p##ih4u3@3;BJNyjbQLfmMTqLY+-CrUI` zk(Gs2QIMe^n*>mADj1~nW}qZ{Sjcd^DN-1E4ZEP)a`Y3_M*M~rVO!V0;tHQmOUD+JO}JR+h? z)%x?dfG6Kpb#$(h~#J2pp~O z_9a3$$=bpA%Gx}}=zywI04C(zaE=D82f&i`>HqM7T z)JtLn--Ogg%P2zR$fjqDw$;*C0g?>vi;GQdR}7B) zlzQDzx#p&MA~n)(=*+C^rHyAtB=>&Pm#WtUy^lZt`TK?Sm0zJVr(InZgr1}83a73T ztg*0A?QoeWlK5T2QRBf&?PP^cK};FEUR(Q+;*4m1N&9HPv~G`u0#;Vqq(>N!)!qPiG2lnoeHm}Kwh$<{d57mWDu+uhS!Ej zRC0qNhCPuyqXe)Tl75(KO}@9x9=&VhAF{L#{S!oiRnqnq_HPgc+zJ8S4}<(%drDx) z!~hJSxPrkGV=#DPzK6f0A#Od&&1u=g<|E6|pOb#DnHnGYzzoM#^!ezWJ1&+d^!3b% z8hmXUILF(jrXXHZ`t3d+ig*g=yJJJ~2ezNA7yKMLw8Ca4dHhz4-0#4agwMt2t)%S3 zzNoF_UHCz?c~|G^_sQrAAVd$pB6^tCy2*2_%!V}>FfY2f%aM%rw-G^P>RH{Mbg|Sg zwGr3tXQYjE>v|y`)Ns|%kW9z4p^zOrUlflc2_W>5I@+4tnsc;VgLLKP#5%P>!>t#V z<*3-vS2I|qnn2R^^sVA!cl7F3tLJ`>9yf+rY9%Cq&g>(M*3+MRbb<^7rk`b*Wi_M^ z9fkDbNlNNGz@&N|T9cQe8vvsQa9!@Phbduz*Uwz!CVMM*72O=<<;u+!47F!4g;MMe zUw;JH7OUHYj)t+7FdxO|8gjH@j_*#!RM(Hq46K%EmS1-ZMH)OW=b5)l@sgy2bWaWD zb}2k|JUKA$^TEhZoa2Lg?e}Na40taVp76PH;`*J5I^Mv}*G+r$`zx*L%iem*g+cCbsjos>&Kdkam)ZYFRgTu>B&i;fk zgfud(J4v3Z9V0P-Q=1?rW)-V2-!PF!BQZ=w!57AIbYyGuE)-L$KBF|<%xK5q06=3z zxBxX;Xs5k#b+g>Tj1-3MC<&@9Rj-7DCH-)U@!1xFVN|m`5}nCrEXown3Z2HVgH|M< zyJ<)QDwJWs(F6T@plsobU`h_i8!aq=we^?X3zZm#MQ#y0!KYBi6q|>BkYPi8U?qQh z;=@sOKPd29eSJJDPzYng9bEQM)YDVx{N%0aq|CJ+&V-1WcU3dTe|}Uevzt*2W65m; zKOfxv5_YY*STl0)zIkQJOVYK-#xk`x?_POdwJI7<-}@TBcVy;%*YWK_@{NR_GLLu- zWcgah@*1N%+X%Qae|Jsk*&L4zRSKGxHxXdGR@2dC;t&3^6og6nNGN>1s%(kg0|x ziQ}~XUyvbyC!;&PMMxt_f@K48N!@1A=CGdFrg1faP0L7kUC^B^A~#;tS+E#(d&jfm z(yZp}vhf2ukXs*is#~#hLG|XDQ!Bfd?@xRg`tAPY@ROz8*PkE#UZ1&kaaJq%o6pqY zUtg>>Ex!9)j4xcXoG+GC4Ow_i;3@AXsDwEl>Y`_9NceD{_ccmk%O-v*zTqC>dq5Ud zi50e`^6;Z2%X`AD5|N9+TtrJNy>-)4_hWSpNcU3CGq_6Irg@DwgidiJwyW;ZT=ge3 zSs&X*BKeGE2(M*SDaQ%>iMBfB=eet_Ff*T10lG}rgIP!MjF!enk_9`O$wi&>!xaaN zqOoTT1>Na(O*fx<9<&@+b2O+BCgbZ_4LZ*}o-a|!im@Hx=F(te!X()hkwr|sBmwfx zHJW*UQG(r8S=NMKlJtY6n6;F^FDOH8&j*aF;fg>XYXOP6PSPhXHz?r48&HLK&~X&j z5P#zAS`Lw0AIsEXYlvd$bi3Ufz`wBhU69c94O#EtKVL`h0IAA0Tk-a@{AbT2duJyL zo%QV(_PTP1Sdz#0B&YN)JWk$Tri}k4f2ljX75J&x;79nOlSh7xxiHP#%RNrD@J|OK z0_}~;{KLeIJEJz=)pggAX7SUaG;~TAx6KaJGuPSPXUOlBA0;pNsxVEIN5>>RE62R< z%$Kt0e%9)*ToYcHx5PNr3V>7?*V7IL(wp5WrqP3(UNOUsCT!@&RrAN@WxOmR^4%R3 z0T94u6X7Wa&Oz=!c<_jqeHIfg}LQ9&XBG*}yb>_Ug!8Oa@4^dxq;X0W2_P-QiowIEAF{1Ty^E=hO zy?MSHN5%&Cc7Gf}g-<=%`e{}DrM^ISuq*GDCWHR4F&;-95oFbTaw^Z5CdMvPLPL}Z zbS<;ius?C-b+kJ4iFmkcOID7i?>@l;)4Z#SOC_0jSRz1sjw=TDtnI zk2^ZAL6y*+tCox=8cB(OF?}UhzsTX8Rcb()!8f1I>k~8Y*k=@f1xQr~yVd7A+GK%; zH|prSR)?Vz%ikW}JpFsQh%MrW_4d+7C+j0e0>X|gow+0uRL^oNb1L)!<@MQV2kEzy zNCaAtXp@8^BRjOQTb_pXC>k51n7wtrwy$=7((@Ho+W@oDlGEiK=uFsrG6L`ZnqWmp ztrxS9&uPJz%=L6;e!9yXLot)8M}E{o#AvtZtFok3$Qr)9u#+yxjCsCgytFJM*;E8Y z-~JxmC*RhPU-@kOR|Ky~D+@JqayA;Lk7C7(h_XpX5%??XIsI4tRrTy>%mh^ z)7{)Vz4^8psI^ftcN5=u5DX9j${YEKVg!cix) z_4BV3fb@Hu{5F?zDe$+ivHy?pl!&f3?;q7HznuH(cyevz<5u^><&C#jP625x_;50dS-GuAPB71cqgU{$ zL(lk>xHLF)QJnpT>YHp>DDY_b3p7h`X|=&>B`bEaqCiHPBg#BtC1RX=bN0!ldI!lK zU{x%!BBv^Ab}B=fhmdYXw6un1-ettIdZ5=u0A@@qT5FYpC8hNeZCQ@(K4ZdRsStk&8ZXffR!;$o~wN(*M8r<5?bLJXj?8S&ZFUP z9Bg53Pi8XOnxoX`a#1--jki6Ag*iI`rZR3mRFGE;3u}XmbrNTbdQv$WkJF8NV%`re z5q+L@;Oeo-*P1t*AaSX^cEq&MgRx3nJ}%CQ-SETa#kN42Enh5~2c(=-l6Lnv$Iqr_VB63h(leVN(+01zS$lrjLPv^Y-jDI zJO0-E;H#d*86nqmul-)5L!SyfAN=YBG`9ks{BoGRMt@J$pS{t!;`>YO%9W0#kqK@6 z>YKuDpMG;P!{24BUY}S zs|fyBA}Vb=OB-Fw9m_@Qt5rVM=;KU^l48Yid+tk+bdb>-1{ zzm%_;eau1n^gQpE`J1=iA2NudRORG5db#aBbio}k`%F%msJl^T-yR#wg2@N|2Zw8| AV*mgE literal 0 HcmV?d00001 diff --git a/sound/weapons/magrifle.ogg b/sound/weapons/magrifle.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2ec2e72af6339aae2db927bf4f51faad2d61de82 GIT binary patch literal 18877 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 z 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

1&>Y!`v`^6%o#tr zj=g?A^zz%w);jNN8s85$_?&!=q_vp}?ssjnXPm#4&Im8IXvpRm%N>-|d6`N#I4CsN za+>A4Qb`eW>i6=3=uihc_u~M&&BCjzGlKBCC|O@dM`=WsAzCx8BuX7CF$^}9R?p=2Au3=KJ zW|C9lH$g7Vtddys2fg&2 zk=ZBt*^O22WkT2A#`OHmj-If59bA!b<$dl-gXDE-7m*Y!$IDffq-=f79V2@~d4cDsA%aHSm>Z){;uufPamCZS)n~5@a4>VvT7#+Z60hhr+Yj0=aTi0qa zdS=*9M%UI{QP*~scOaarH^o212K*mHI7@pc3tx6EFdqTe?Hkeob{5oe5&t7`0FM7y zTXO-TC<4o7?ibf>HjoAfVPM*T9E37}23ao4a$c5DmShw~>+|Q&pP|cgPNa)S0c1H# zVGybyEz5EgN3kqOkRuBqD?t`e0G6M9c001BXsh7r>gvh^j5EmPD>r+YnKlXlnE;?T LvIOvzc^xMJ+jfs_ literal 0 HcmV?d00001 From f71c3d6614777d7eab2563a2a65f8590599975ca Mon Sep 17 00:00:00 2001 From: Robustin Date: Wed, 27 Sep 2017 16:27:41 -0400 Subject: [PATCH 04/69] Revheads are now stealthier/harder to metagame (#30957) * stealthier revs * Stealthiest Revheads * Update revolution.dm --- code/game/gamemodes/revolution/revolution.dm | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 8384892044..4ada75bb05 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -154,8 +154,7 @@ var/obj/item/device/assembly/flash/T = new(mob) - var/obj/item/toy/crayon/spraycan/R = new(mob) - var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob) + var/obj/item/organ/cyberimp/eyes/hud/security/S = new(mob) var/list/slots = list ( "backpack" = slot_in_backpack, @@ -163,13 +162,8 @@ "right pocket" = slot_r_store ) var/where = mob.equip_in_one_of_slots(T, slots) - var/where2 = mob.equip_in_one_of_slots(C, slots) - mob.equip_in_one_of_slots(R,slots) - - if (!where2) - to_chat(mob, "The Syndicate were unfortunately unable to get you a chameleon security HUD.") - else - to_chat(mob, "The chameleon security HUD in your [where2] will help you keep track of who is mindshield-implanted, and unable to be recruited.") + S.Insert(mob, special = FALSE, drop_if_replaced = FALSE) + to_chat(mob, "Your eyes have been implanted with a cybernetic security HUD which will help you keep track of who is mindshield-implanted, and therefore unable to be recruited.") if (!where) to_chat(mob, "The Syndicate were unfortunately unable to get you a flash.") From fa92394e4e829156fcd69caabe592f874870a027 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Tue, 26 Sep 2017 15:43:01 -0400 Subject: [PATCH 06/69] DisplayTimeText for round time on login --- code/modules/mob/dead/new_player/login.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/dead/new_player/login.dm b/code/modules/mob/dead/new_player/login.dm index 4de3b1d4dd..1e3561c8a0 100644 --- a/code/modules/mob/dead/new_player/login.dm +++ b/code/modules/mob/dead/new_player/login.dm @@ -32,10 +32,10 @@ new_player_panel() client.playtitlemusic() if(SSticker.current_state < GAME_STATE_SETTING_UP) - var/tl = round(SSticker.GetTimeLeft(), 1)/10 + var/tl = SSticker.GetTimeLeft() var/postfix - if(tl >= 0) - postfix = "in about [tl] seconds" + if(tl > 0) + postfix = "in about [DisplayTimeText(tl)]" else postfix = "soon" to_chat(src, "Please set up your character and select \"Ready\". The game will start [postfix].") From 9b2f07335ac6b95a50fd60f9a1d9f10595c726d8 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Tue, 26 Sep 2017 14:34:39 -0400 Subject: [PATCH 08/69] Makes the mining vendor give more verbose feedback --- code/modules/mining/machine_vending.dm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index b48f5faf0a..8ae3632d34 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -8,6 +8,7 @@ density = TRUE anchored = TRUE circuit = /obj/item/circuitboard/machine/mining_equipment_vendor + var/icon_deny = "mining-deny" var/obj/item/card/id/inserted_id var/list/prize_list = list( //if you add something to this, please, for the love of god, use tabs and not spaces. new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 10), @@ -108,6 +109,7 @@ if(href_list["choice"]) if(istype(inserted_id)) if(href_list["choice"] == "eject") + to_chat(usr, "You eject the ID from [src]'s card slot.") inserted_id.loc = loc inserted_id.verb_pickup() inserted_id = null @@ -118,20 +120,31 @@ return I.loc = src inserted_id = I - else to_chat(usr, "No valid ID.") + to_chat(usr, "You insert the ID into [src]'s card slot.") + else + to_chat(usr, "Error: No valid ID!") + flick(icon_deny, src) if(href_list["purchase"]) if(istype(inserted_id)) var/datum/data/mining_equipment/prize = locate(href_list["purchase"]) if (!prize || !(prize in prize_list)) + to_chat(usr, "Error: Invalid choice!") + flick(icon_deny, src) return if(prize.cost > inserted_id.mining_points) + to_chat(usr, "Error: Insufficent points for [prize.equipment_name]!") + flick(icon_deny, src) else inserted_id.mining_points -= prize.cost + to_chat(usr, "[src] clanks to life briefly before vending [prize.equipment_name]!") new prize.equipment_path(src.loc) SSblackbox.add_details("mining_equipment_bought", "[src.type]|[prize.equipment_path]") // Add src.type to keep track of free golem purchases // separately. + else + to_chat(usr, "Error: Please insert a valid ID!") + flick(icon_deny, src) updateUsrDialog() return @@ -146,6 +159,7 @@ return C.loc = src inserted_id = C + to_chat(usr, "You insert the ID into [src]'s card slot.") interact(user) return if(default_deconstruction_screwdriver(user, "mining-open", "mining", I)) From ab28e2facbcf0cc8b4fb1dea7f9162cf969c71ef Mon Sep 17 00:00:00 2001 From: RandomMarine Date: Mon, 25 Sep 2017 19:25:06 -0700 Subject: [PATCH 10/69] Air tanks get their own sprite, plus reset fix. --- code/game/objects/items/tanks/tank_types.dm | 186 ++++++++++++++++++++ code/game/objects/items/tanks/tanks.dm | 2 +- icons/obj/tank.dmi | Bin 9167 -> 9054 bytes 3 files changed, 187 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 71a2c51dca..58133568ba 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /* Types of tanks! * Contains: * Oxygen @@ -181,3 +182,188 @@ name = "double emergency oxygen tank" icon_state = "emergency_engi" volume = 10 +======= +/* Types of tanks! + * Contains: + * Oxygen + * Anesthetic + * Air + * Plasma + * Emergency Oxygen + */ + +/* + * Oxygen + */ +/obj/item/tank/internals/oxygen + name = "oxygen tank" + desc = "A tank of oxygen." + icon_state = "oxygen" + distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE + force = 10 + dog_fashion = /datum/dog_fashion/back + + +/obj/item/tank/internals/oxygen/New() + ..() + air_contents.assert_gas("o2") + air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + + +/obj/item/tank/internals/oxygen/yellow + desc = "A tank of oxygen, this one is yellow." + icon_state = "oxygen_f" + dog_fashion = null + +/obj/item/tank/internals/oxygen/red + desc = "A tank of oxygen, this one is red." + icon_state = "oxygen_fr" + dog_fashion = null + + +/* + * Anesthetic + */ +/obj/item/tank/internals/anesthetic + name = "anesthetic tank" + desc = "A tank with an N2O/O2 gas mix." + icon_state = "anesthetic" + item_state = "an_tank" + force = 10 + +/obj/item/tank/internals/anesthetic/New() + ..() + air_contents.assert_gases("o2", "n2o") + air_contents.gases["o2"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD + air_contents.gases["n2o"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD + return + +/* + * Air + */ +/obj/item/tank/internals/air + name = "air tank" + desc = "Mixed anyone?" + icon_state = "air" + force = 10 + dog_fashion = /datum/dog_fashion/back + +/obj/item/tank/internals/air/New() + ..() + air_contents.assert_gases("o2","n2") + air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD + air_contents.gases["n2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD + return + + +/* + * Plasma + */ +/obj/item/tank/internals/plasma + name = "plasma tank" + desc = "Contains dangerous plasma. Do not inhale. Warning: extremely flammable." + icon_state = "plasma" + flags_1 = CONDUCT_1 + slot_flags = null //they have no straps! + force = 8 + + +/obj/item/tank/internals/plasma/New() + ..() + air_contents.assert_gas("plasma") + air_contents.gases["plasma"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + +/obj/item/tank/internals/plasma/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/flamethrower)) + var/obj/item/flamethrower/F = W + if ((!F.status)||(F.ptank)) + return + if(!user.transferItemToLoc(src, F)) + return + src.master = F + F.ptank = src + F.update_icon() + else + return ..() + +/obj/item/tank/internals/plasma/full/New() + ..() + air_contents.assert_gas("plasma") + air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + + +/* + * Plasmaman Plasma Tank + */ + +/obj/item/tank/internals/plasmaman + name = "plasma internals tank" + desc = "A tank of plasma gas designed specifically for use as internals, particularly for plasma-based lifeforms. If you're not a Plasmaman, you probably shouldn't use this." + icon_state = "plasmaman_tank" + item_state = "plasmaman_tank" + force = 10 + distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE + +/obj/item/tank/internals/plasmaman/New() + ..() + air_contents.assert_gas("plasma") + air_contents.gases["plasma"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + +/obj/item/tank/internals/plasmaman/full/New() + ..() + air_contents.assert_gas("plasma") + air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + + +/obj/item/tank/internals/plasmaman/belt + icon_state = "plasmaman_tank_belt" + item_state = "plasmaman_tank_belt" + slot_flags = SLOT_BELT + force = 5 + volume = 6 + w_class = WEIGHT_CLASS_SMALL //thanks i forgot this + +/obj/item/tank/internals/plasmaman/belt/full/New() + ..() + air_contents.assert_gas("plasma") + air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + + + +/* + * Emergency Oxygen + */ +/obj/item/tank/internals/emergency_oxygen + name = "emergency oxygen tank" + desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it." + icon_state = "emergency" + flags_1 = CONDUCT_1 + slot_flags = SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + force = 4 + distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE + volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) + + +/obj/item/tank/internals/emergency_oxygen/New() + ..() + air_contents.assert_gas("o2") + air_contents.gases["o2"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + return + +/obj/item/tank/internals/emergency_oxygen/engi + name = "extended-capacity emergency oxygen tank" + icon_state = "emergency_engi" + volume = 6 + +/obj/item/tank/internals/emergency_oxygen/double + name = "double emergency oxygen tank" + icon_state = "emergency_engi" + volume = 10 +>>>>>>> 98ed3d0... Air tanks get their own sprite + reset fix diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index dd2ea47dc4..7628617923 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -177,7 +177,7 @@ if("pressure") var/pressure = params["pressure"] if(pressure == "reset") - pressure = TANK_DEFAULT_RELEASE_PRESSURE + pressure = initial(distribute_pressure) . = TRUE else if(pressure == "min") pressure = TANK_MIN_RELEASE_PRESSURE diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index 8e41c003a4376de09ff19f8fcd9f6010ddd59e51..f5ce551e7f39dbf37acfe4af0ab1c1bfaf1df6d7 100644 GIT binary patch literal 9054 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

EyBQA>0q4EqKg<0Pjw!*v(CP zO4NCvyHUn>X)Q;~DUQua7Rlh)09lN)JNB|V0W}>fD&y>h^?mciikh)dSzS#{C$FI3 z3zU96g0A$WYjao2G1PF}4t)y5bO!%z2;r+)A5sG4N3IM6SqI}Vc-Yf?B4?7kF1-coqXsK@px#Q?KS*DKP)!TrCi{rCERLJZ za8q0Sf}e{5u)Tnd&cv4m@luel_pzWptO^xtwi-L(|wc47zxXQMUNGe`T zo0&6XSHOUX<7?rZ^ux~d2ltXL`iw;vI9DX`p~Pgj9}7}8&}kupKRv*kpq*#|f-4lC z3PMQhz1A2HNBn#bJFiC?{g5qSM&TWgPOz+sKO0&u`CLuT%WF4f3{Vso>kgS^w{*Vc zO*0PZ_typ>UwoDIDI0zBa>Lfv)_QHgoMssHBOoCQftuj3cna2bDR!^c{y2auftu|k zvR)FLyiorb)N|iw@yB9DV;OC;swKYx3BYkiG-G7BJyAK2VyCCq3o`A*o#~#mhbCbT z^2e?m6Co#l8S2=t_Z9FYo;z}ME5c}sRHv&!I{2=3=cgeM1?%sG0sFQQz;1Vn*I{X{ z{{6SL5>$lnUzqg_FI-xAx=Whim^gQY`ZndI^7qyK&bOt%)0Xp)t)0@cG3gdFX}?n6 z%`Iebc2WC=mRmXdC^~U&bT`A=T_c{aTc)5WBO)T^h1#jyuvo zY*3ZD9=xotgMn3v@D0jQk-XO)jN@!Pe`V*dd{^GZf`x+Ke>OBA0vi1SmXMcNSnk>t z+OAa;kz~OfX6jYC;vJQ;T8Ug+<;s-d{w9K}A4t1o{$&{sa4wf=w~ln}&L&PYv;BGS z;Naljn#uYVqQ+ahGx4o{h+;&>uM{Tu<$*w%g5>+2L+5M(ADUarU1Qf&j^jUDV+$%B z>1G%Y(RCzvMV8U33*7s$x;5AMK3NCK=4}9|=%~z($sI_C109-b0)2+O}2k;oifJFKi-HUT3AP5Bxq^3pl-PuB3j0wFM-FhdJ-klKPf+G)J;It5|j zkkS$gf59AH&%ni{X?qlbt3A_ItmifpNGQy{!q+4PCb)e!upM@~Nx1L>pt3aov RMmRSEs4HtJl_^+;{Vzv9zmNa` literal 9167 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 Date: Wed, 27 Sep 2017 23:45:15 -0500 Subject: [PATCH 11/69] Alphabetize hair and facial hair in char creation :cl: Reordered hair in a semi-alphabetized list for easier use in character creation. Alphabetized facial hair for easier use in character creation. /:cl: No names or content changed other then order in list. --- .../mob/dead/new_player/sprite_accessories.dm | 849 ++++++++++-------- 1 file changed, 451 insertions(+), 398 deletions(-) diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 1eb1379dce..03b7fd53ec 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -67,30 +67,317 @@ /datum/sprite_accessory/hair icon = 'icons/mob/human_face.dmi' // default icon for all hairs -/datum/sprite_accessory/hair/short - name = "Short Hair" // try to capatilize the names please~ // try to spell - icon_state = "hair_a" // you do not need to define _s or _l sub-states, game automatically does this for you +//Place in order by major style E.G "Afro, Bun, Ponytail" +//Place different versions under the same style E.G "Bun > Large Bun, Ponytail > Long Ponytail" +//A -/datum/sprite_accessory/hair/shorthair2 - name = "Short Hair 2" - icon_state = "hair_shorthair2" +/datum/sprite_accessory/hair/afro + name = "Afro" // try to capatilize the names please~ // try to spell + icon_state = "hair_afro" // you do not need to define _s or _l sub-states, game automatically does this for you -/datum/sprite_accessory/hair/shorthair3 - name = "Short Hair 3" - icon_state = "hair_shorthair3" +/datum/sprite_accessory/hair/afro2 + name = "Afro 2" + icon_state = "hair_afro2" + +/datum/sprite_accessory/hair/afro_large + name = "Big Afro" + icon_state = "hair_bigafro" + +/datum/sprite_accessory/hair/antenna + name = "Ahoge" + icon_state = "hair_antenna" +//B + +/datum/sprite_accessory/hair/bald + name = "Bald" + icon_state = null + +/datum/sprite_accessory/hair/balding + name = "Balding Hair" + icon_state = "hair_e" + +/datum/sprite_accessory/hair/longbangs + name = "Long Bangs" + icon_state = "hair_lbangs" + +/datum/sprite_accessory/hair/bedhead + name = "Bedhead" + icon_state = "hair_bedhead" + +/datum/sprite_accessory/hair/bedhead2 + name = "Bedhead 2" + icon_state = "hair_bedheadv2" + +/datum/sprite_accessory/hair/bedhead3 + name = "Bedhead 3" + icon_state = "hair_bedheadv3" + +/datum/sprite_accessory/hair/beehive + name = "Beehive" + icon_state = "hair_beehive" + +/datum/sprite_accessory/hair/beehive2 + name = "Beehive 2" + icon_state = "hair_beehivev2" + +/datum/sprite_accessory/hair/bob + name = "Bob" + icon_state = "hair_bobcut" + +/datum/sprite_accessory/hair/bobcurl + name = "Bobcurl" + icon_state = "hair_bobcurl" + +/datum/sprite_accessory/hair/bob + name = "Bob Hair" + icon_state = "hair_bob" + +/datum/sprite_accessory/hair/bob2 + name = "Bob Hair 2" + icon_state = "hair_bob2" + +/datum/sprite_accessory/hair/boddicker + name = "Boddicker" + icon_state = "hair_boddicker" + +/datum/sprite_accessory/hair/bowl + name = "Bowl" + icon_state = "hair_bowlcut" + +/datum/sprite_accessory/hair/braided + name = "Braided" + icon_state = "hair_braided" + +/datum/sprite_accessory/hair/front_braid + name = "Braided front" + icon_state = "hair_braidfront" + +/datum/sprite_accessory/hair/braidtail + name = "Braided Tail" + icon_state = "hair_braidtail" + +/datum/sprite_accessory/hair/lowbraid + name = "Low Braid" + icon_state = "hair_hbraid" + +/datum/sprite_accessory/hair/not_floorlength_braid + name = "High Braid" + icon_state = "hair_braid2" + +/datum/sprite_accessory/hair/shortbraid + name = "Short Braid" + icon_state = "hair_shortbraid" + +/datum/sprite_accessory/hair/braid + name = "Floorlength Braid" + icon_state = "hair_braid" + +/datum/sprite_accessory/hair/business + name = "Business Hair" + icon_state = "hair_business" + +/datum/sprite_accessory/hair/business2 + name = "Business Hair 2" + icon_state = "hair_business2" + +/datum/sprite_accessory/hair/business3 + name = "Business Hair 3" + icon_state = "hair_business3" + +/datum/sprite_accessory/hair/business4 + name = "Business Hair 4" + icon_state = "hair_business4" + +/datum/sprite_accessory/hair/bun + name = "Bun Head" + icon_state = "hair_bun" + +/datum/sprite_accessory/hair/bun2 + name = "Bun Head 2" + icon_state = "hair_bunhead2" + +/datum/sprite_accessory/hair/largebun + name = "Large Bun" + icon_state = "hair_largebun" + +/datum/sprite_accessory/hair/buzz + name = "Buzzcut" + icon_state = "hair_buzzcut" + +//C + +/datum/sprite_accessory/hair/crew + name = "Crewcut" + icon_state = "hair_crewcut" + +/datum/sprite_accessory/hair/combover + name = "Combover" + icon_state = "hair_combover" + +/datum/sprite_accessory/hair/curls + name = "Curls" + icon_state = "hair_curls" + +//D + +/datum/sprite_accessory/hair/devillock + name = "Devil Lock" + icon_state = "hair_devilock" + +/datum/sprite_accessory/hair/dreadlocks + name = "Dreadlocks" + icon_state = "hair_dreads" + +/datum/sprite_accessory/hair/drillhair + name = "Drill Hair" + icon_state = "hair_drillhair" + +//E + +/datum/sprite_accessory/hair/emo + name = "Emo" + icon_state = "hair_emo" + +/datum/sprite_accessory/hair/longemo + name = "Long Emo" + icon_state = "hair_longemo" + +//F + +/datum/sprite_accessory/hair/feather + name = "Feather" + icon_state = "hair_feather" + +/datum/sprite_accessory/hair/sargeant + name = "Flat Top" + icon_state = "hair_sargeant" + +/datum/sprite_accessory/hair/bigflattop + name = "Big Flat Top" + icon_state = "hair_bigflattop" + +/datum/sprite_accessory/hair/fag + name = "Flow Hair" + icon_state = "hair_f" + +/datum/sprite_accessory/hair/longfringe + name = "Long Fringe" + icon_state = "hair_longfringe" + +/datum/sprite_accessory/hair/longestalt + name = "Longer Fringe" + icon_state = "hair_vlongfringe" + +//G + +/datum/sprite_accessory/hair/gelled + name = "Gelled Back" + icon_state = "hair_gelled" + +/datum/sprite_accessory/hair/gentle + name = "Gentle" + icon_state = "hair_gentle" + +//H /datum/sprite_accessory/hair/cut name = "Cut Hair" icon_state = "hair_c" -/datum/sprite_accessory/hair/long - name = "Shoulder-length Hair" - icon_state = "hair_b" +/datum/sprite_accessory/hair/halfbang + name = "Half-banged Hair" + icon_state = "hair_halfbang" + +/datum/sprite_accessory/hair/halfbang2 + name = "Half-banged Hair 2" + icon_state = "hair_halfbang2" + +/datum/sprite_accessory/hair/hedgehog + name = "Hedgehog Hair" + icon_state = "hair_hedgehog" + +/datum/sprite_accessory/hair/hitop + name = "Hitop" + icon_state = "hair_hitop" + +/datum/sprite_accessory/hair/himecut + name = "Hime Cut" + icon_state = "hair_himecut" + +/datum/sprite_accessory/hair/himecut2 + name = "Hime Cut 2" + icon_state = "hair_himecut2" + +/datum/sprite_accessory/hair/himeup + name = "Hime Updo" + icon_state = "hair_himeup" + +//I + +//J + +/datum/sprite_accessory/hair/jensen + name = "Jensen Hair" + icon_state = "hair_jensen" + +//K + +/datum/sprite_accessory/hair/keanu + name = "Keanu Hair" + icon_state = "hair_keanu" + +/datum/sprite_accessory/hair/kusangi + name = "Kusanagi Hair" + icon_state = "hair_kusanagi" + +//L /datum/sprite_accessory/hair/longer name = "Long Hair" icon_state = "hair_vlong" +/datum/sprite_accessory/hair/long + name = "Long Hair 1" + icon_state = "hair_long" + +/datum/sprite_accessory/hair/long2 + name = "Long Hair 2" + icon_state = "hair_long2" + +/datum/sprite_accessory/hair/longest + name = "Very Long Hair" + icon_state = "hair_longest" + +//M + +/datum/sprite_accessory/hair/megaeyebrows + name = "Mega Eyebrows" + icon_state = "hair_megaeyebrows" + +/datum/sprite_accessory/hair/messy + name = "Messy" + icon_state = "hair_messy" + +/datum/sprite_accessory/hair/mohawk + name = "Mohawk" + icon_state = "hair_d" + +/datum/sprite_accessory/hair/reversemohawk + name = "Reverse Mohawk" + icon_state = "hair_reversemohawk" + +//N + +//O + +/datum/sprite_accessory/hair/odango + name = "Odango" + icon_state = "hair_odango" + +/datum/sprite_accessory/hair/ombre + name = "Ombre" + icon_state = "hair_ombre" + /datum/sprite_accessory/hair/over_eye name = "Over Eye" icon_state = "hair_shortovereye" @@ -103,29 +390,39 @@ name = "Very Long Over Eye" icon_state = "hair_longest2" -/datum/sprite_accessory/hair/longest - name = "Very Long Hair" - icon_state = "hair_longest" +//P -/datum/sprite_accessory/hair/longfringe - name = "Long Fringe" - icon_state = "hair_longfringe" +/datum/sprite_accessory/hair/parted + name = "Parted" + icon_state = "hair_parted" -/datum/sprite_accessory/hair/longestalt - name = "Longer Fringe" - icon_state = "hair_vlongfringe" +/datum/sprite_accessory/hair/sidepartlongalt + name = "Long Side Part" + icon_state = "hair_longsidepart" -/datum/sprite_accessory/hair/gentle - name = "Gentle" - icon_state = "hair_gentle" +/datum/sprite_accessory/hair/kagami + name = "Pigtails" + icon_state = "hair_kagami" -/datum/sprite_accessory/hair/halfbang - name = "Half-banged Hair" - icon_state = "hair_halfbang" +/datum/sprite_accessory/hair/pigtail + name = "Pigtails 2" + icon_state = "hair_pigtails" -/datum/sprite_accessory/hair/halfbang2 - name = "Half-banged Hair 2" - icon_state = "hair_halfbang2" +/datum/sprite_accessory/hair/pigtail + name = "Pigtails 3" + icon_state = "hair_pigtails2" + +/datum/sprite_accessory/hair/pixie + name = "Pixie Cut" + icon_state = "hair_pixie" + +/datum/sprite_accessory/hair/pompadour + name = "Pompadour" + icon_state = "hair_pompadour" + +/datum/sprite_accessory/hair/bigpompadour + name = "Big Pompadour" + icon_state = "hair_bigpompadour" /datum/sprite_accessory/hair/ponytail1 name = "Ponytail" @@ -147,6 +444,36 @@ name = "Ponytail 5" icon_state = "hair_ponytail5" +/datum/sprite_accessory/hair/highponytail + name = "High Ponytail" + icon_state = "hair_highponytail" + +/datum/sprite_accessory/hair/longponytail + name = "Long Ponytail" + icon_state = "hair_longstraightponytail" + +//Q + +/datum/sprite_accessory/hair/quiff + name = "Quiff" + icon_state = "hair_quiff" + + +//R + +//S + +/datum/sprite_accessory/hair/oneshoulder + name = "One Shoulder" + icon_state = "hair_oneshoulder" + +/datum/sprite_accessory/hair/tressshoulder + name = "Tress Shoulder" + icon_state = "hair_tressshoulder" + +/datum/sprite_accessory/hair/sidecut + name = "Sidecut" + icon_state = "hair_sidecut" /datum/sprite_accessory/hair/sidetail name = "Side Pony" @@ -164,141 +491,33 @@ name = "Side Pony 4" icon_state = "hair_sidetail4" -/datum/sprite_accessory/hair/oneshoulder - name = "One Shoulder" - icon_state = "hair_oneshoulder" +/datum/sprite_accessory/hair/short + name = "Short Hair" + icon_state = "hair_a" -/datum/sprite_accessory/hair/tressshoulder - name = "Tress Shoulder" - icon_state = "hair_tressshoulder" +/datum/sprite_accessory/hair/shorthair2 + name = "Short Hair 2" + icon_state = "hair_shorthair2" + +/datum/sprite_accessory/hair/shorthair3 + name = "Short Hair 3" + icon_state = "hair_shorthair3" + +/datum/sprite_accessory/hair/long + name = "Shoulder-length Hair" + icon_state = "hair_b" /datum/sprite_accessory/hair/parted - name = "Parted" - icon_state = "hair_parted" + name = "Side Part" + icon_state = "hair_part" -/datum/sprite_accessory/hair/pompadour - name = "Pompadour" - icon_state = "hair_pompadour" +/datum/sprite_accessory/hair/skinhead + name = "Skinhead" + icon_state = "hair_skinhead" -/datum/sprite_accessory/hair/bigpompadour - name = "Big Pompadour" - icon_state = "hair_bigpompadour" - -/datum/sprite_accessory/hair/quiff - name = "Quiff" - icon_state = "hair_quiff" - -/datum/sprite_accessory/hair/bedhead - name = "Bedhead" - icon_state = "hair_bedhead" - -/datum/sprite_accessory/hair/bedhead2 - name = "Bedhead 2" - icon_state = "hair_bedheadv2" - -/datum/sprite_accessory/hair/bedhead3 - name = "Bedhead 3" - icon_state = "hair_bedheadv3" - -/datum/sprite_accessory/hair/messy - name = "Messy" - icon_state = "hair_messy" - -/datum/sprite_accessory/hair/beehive - name = "Beehive" - icon_state = "hair_beehive" - -/datum/sprite_accessory/hair/beehive2 - name = "Beehive 2" - icon_state = "hair_beehivev2" - -/datum/sprite_accessory/hair/bobcurl - name = "Bobcurl" - icon_state = "hair_bobcurl" - -/datum/sprite_accessory/hair/bob - name = "Bob" - icon_state = "hair_bobcut" - -/datum/sprite_accessory/hair/bowl - name = "Bowl" - icon_state = "hair_bowlcut" - -/datum/sprite_accessory/hair/buzz - name = "Buzzcut" - icon_state = "hair_buzzcut" - -/datum/sprite_accessory/hair/crew - name = "Crewcut" - icon_state = "hair_crewcut" - -/datum/sprite_accessory/hair/combover - name = "Combover" - icon_state = "hair_combover" - -/datum/sprite_accessory/hair/devillock - name = "Devil Lock" - icon_state = "hair_devilock" - -/datum/sprite_accessory/hair/dreadlocks - name = "Dreadlocks" - icon_state = "hair_dreads" - -/datum/sprite_accessory/hair/curls - name = "Curls" - icon_state = "hair_curls" - -/datum/sprite_accessory/hair/afro - name = "Afro" - icon_state = "hair_afro" - -/datum/sprite_accessory/hair/afro2 - name = "Afro 2" - icon_state = "hair_afro2" - -/datum/sprite_accessory/hair/afro_large - name = "Big Afro" - icon_state = "hair_bigafro" - -/datum/sprite_accessory/hair/sargeant - name = "Flat Top" - icon_state = "hair_sargeant" - -/datum/sprite_accessory/hair/emo - name = "Emo" - icon_state = "hair_emo" - -/datum/sprite_accessory/hair/longemo - name = "Long Emo" - icon_state = "hair_longemo" - -/datum/sprite_accessory/hair/fag - name = "Flow Hair" - icon_state = "hair_f" - -/datum/sprite_accessory/hair/feather - name = "Feather" - icon_state = "hair_feather" - -/datum/sprite_accessory/hair/hitop - name = "Hitop" - icon_state = "hair_hitop" - -/datum/sprite_accessory/hair/mohawk - name = "Mohawk" - icon_state = "hair_d" - -/datum/sprite_accessory/hair/reversemohawk - name = "Reverse Mohawk" - icon_state = "hair_reversemohawk" - -/datum/sprite_accessory/hair/jensen - name = "Jensen Hair" - icon_state = "hair_jensen" - -/datum/sprite_accessory/hair/gelled - name = "Gelled Back" - icon_state = "hair_gelled" +/datum/sprite_accessory/hair/protagonist + name = "Slightly Long" + icon_state = "hair_protagonist" /datum/sprite_accessory/hair/spiky name = "Spiky" @@ -312,122 +531,6 @@ name = "Spiky 3" icon_state = "hair_spiky2" -/datum/sprite_accessory/hair/protagonist - name = "Slightly Long" - icon_state = "hair_protagonist" - -/datum/sprite_accessory/hair/kusangi - name = "Kusanagi Hair" - icon_state = "hair_kusanagi" - -/datum/sprite_accessory/hair/kagami - name = "Pigtails" - icon_state = "hair_kagami" - -/datum/sprite_accessory/hair/pigtail - name = "Pigtails 2" - icon_state = "hair_pigtails" - -/datum/sprite_accessory/hair/pigtail - name = "Pigtails 3" - icon_state = "hair_pigtails2" - -/datum/sprite_accessory/hair/himecut - name = "Hime Cut" - icon_state = "hair_himecut" - -/datum/sprite_accessory/hair/himecut2 - name = "Hime Cut 2" - icon_state = "hair_himecut2" - -/datum/sprite_accessory/hair/himeup - name = "Hime Updo" - icon_state = "hair_himeup" - -/datum/sprite_accessory/hair/antenna - name = "Ahoge" - icon_state = "hair_antenna" - -/datum/sprite_accessory/hair/front_braid - name = "Braided front" - icon_state = "hair_braidfront" - -/datum/sprite_accessory/hair/lowbraid - name = "Low Braid" - icon_state = "hair_hbraid" - -/datum/sprite_accessory/hair/not_floorlength_braid - name = "High Braid" - icon_state = "hair_braid2" - -/datum/sprite_accessory/hair/shortbraid - name = "Short Braid" - icon_state = "hair_shortbraid" - -/datum/sprite_accessory/hair/braid - name = "Floorlength Braid" - icon_state = "hair_braid" - -/datum/sprite_accessory/hair/odango - name = "Odango" - icon_state = "hair_odango" - -/datum/sprite_accessory/hair/ombre - name = "Ombre" - icon_state = "hair_ombre" - -/datum/sprite_accessory/hair/updo - name = "Updo" - icon_state = "hair_updo" - -/datum/sprite_accessory/hair/skinhead - name = "Skinhead" - icon_state = "hair_skinhead" - -/datum/sprite_accessory/hair/longbangs - name = "Long Bangs" - icon_state = "hair_lbangs" - -/datum/sprite_accessory/hair/balding - name = "Balding Hair" - icon_state = "hair_e" - -/datum/sprite_accessory/hair/bald - name = "Bald" - icon_state = null - -/datum/sprite_accessory/hair/parted - name = "Side Part" - icon_state = "hair_part" - -/datum/sprite_accessory/hair/braided - name = "Braided" - icon_state = "hair_braided" - -/datum/sprite_accessory/hair/bun - name = "Bun Head" - icon_state = "hair_bun" - -/datum/sprite_accessory/hair/bun2 - name = "Bun Head 2" - icon_state = "hair_bunhead2" - -/datum/sprite_accessory/hair/braidtail - name = "Braided Tail" - icon_state = "hair_braidtail" - -/datum/sprite_accessory/hair/bigflattop - name = "Big Flat Top" - icon_state = "hair_bigflattop" - -/datum/sprite_accessory/hair/drillhair - name = "Drill Hair" - icon_state = "hair_drillhair" - -/datum/sprite_accessory/hair/keanu - name = "Keanu Hair" - icon_state = "hair_keanu" - /datum/sprite_accessory/hair/swept name = "Swept Back Hair" icon_state = "hair_swept" @@ -436,73 +539,24 @@ name = "Swept Back Hair 2" icon_state = "hair_swept2" -/datum/sprite_accessory/hair/business - name = "Business Hair" - icon_state = "hair_business" +//T -/datum/sprite_accessory/hair/business2 - name = "Business Hair 2" - icon_state = "hair_business2" +//U -/datum/sprite_accessory/hair/business3 - name = "Business Hair 3" - icon_state = "hair_business3" +/datum/sprite_accessory/hair/updo + name = "Updo" + icon_state = "hair_updo" -/datum/sprite_accessory/hair/business4 - name = "Business Hair 4" - icon_state = "hair_business4" +//V -/datum/sprite_accessory/hair/hedgehog - name = "Hedgehog Hair" - icon_state = "hair_hedgehog" +//W -/datum/sprite_accessory/hair/bob - name = "Bob Hair" - icon_state = "hair_bob" +//X -/datum/sprite_accessory/hair/bob2 - name = "Bob Hair 2" - icon_state = "hair_bob2" +//Y -/datum/sprite_accessory/hair/boddicker - name = "Boddicker" - icon_state = "hair_boddicker" +//Z -/datum/sprite_accessory/hair/long - name = "Long Hair 1" - icon_state = "hair_long" - -/datum/sprite_accessory/hair/long2 - name = "Long Hair 2" - icon_state = "hair_long2" - -/datum/sprite_accessory/hair/pixie - name = "Pixie Cut" - icon_state = "hair_pixie" - -/datum/sprite_accessory/hair/megaeyebrows - name = "Mega Eyebrows" - icon_state = "hair_megaeyebrows" - -/datum/sprite_accessory/hair/highponytail - name = "High Ponytail" - icon_state = "hair_highponytail" - -/datum/sprite_accessory/hair/longponytail - name = "Long Ponytail" - icon_state = "hair_longstraightponytail" - -/datum/sprite_accessory/hair/sidepartlongalt - name = "Long Side Part" - icon_state = "hair_longsidepart" - -/datum/sprite_accessory/hair/sidecut - name = "Sidecut" - icon_state = "hair_sidecut" - -/datum/sprite_accessory/hair/largebun - name = "Large Bun" - icon_state = "hair_largebun" ///////////////////////////// // Facial Hair Definitions // @@ -516,82 +570,81 @@ icon_state = null gender = NEUTER -/datum/sprite_accessory/facial_hair/watson - name = "Watson Mustache" - icon_state = "facial_watson" - -/datum/sprite_accessory/facial_hair/hogan - name = "Hulk Hogan Mustache" - icon_state = "facial_hogan" //-Neek - -/datum/sprite_accessory/facial_hair/vandyke - name = "Van Dyke Mustache" - icon_state = "facial_vandyke" - -/datum/sprite_accessory/facial_hair/chaplin - name = "Square Mustache" - icon_state = "facial_chaplin" - -/datum/sprite_accessory/facial_hair/selleck - name = "Selleck Mustache" - icon_state = "facial_selleck" - -/datum/sprite_accessory/facial_hair/neckbeard - name = "Neckbeard" - icon_state = "facial_neckbeard" - -/datum/sprite_accessory/facial_hair/fullbeard - name = "Full Beard" - icon_state = "facial_fullbeard" - -/datum/sprite_accessory/facial_hair/longbeard - name = "Long Beard" - icon_state = "facial_longbeard" - -/datum/sprite_accessory/facial_hair/vlongbeard - name = "Very Long Beard" - icon_state = "facial_wise" - -/datum/sprite_accessory/facial_hair/elvis - name = "Elvis Sideburns" - icon_state = "facial_elvis" - /datum/sprite_accessory/facial_hair/abe name = "Abraham Lincoln Beard" icon_state = "facial_abe" - + +/datum/sprite_accessory/facial_hair/brokenman + name = "Broken Man" + icon_state = "facial_brokenman" + /datum/sprite_accessory/facial_hair/chinstrap name = "Chinstrap" icon_state = "facial_chin" - + +/datum/sprite_accessory/facial_hair/dwarf + name = "Dwarf Beard" + icon_state = "facial_dwarf" + +/datum/sprite_accessory/facial_hair/elvis + name = "Elvis Sideburns" + icon_state = "facial_elvis" + +/datum/sprite_accessory/facial_hair/fiveoclock + name = "Five o Clock Shadow" + icon_state = "facial_fiveoclock" + +/datum/sprite_accessory/facial_hair/fullbeard + name = "Full Beard" + icon_state = "facial_fullbeard" + +/datum/sprite_accessory/facial_hair/fu + name = "Fu Manchu" + icon_state = "facial_fumanchu" + +/datum/sprite_accessory/facial_hair/gt + name = "Goatee" + icon_state = "facial_gt" + /datum/sprite_accessory/facial_hair/hip name = "Hipster Beard" icon_state = "facial_hip" -/datum/sprite_accessory/facial_hair/gt - name = "Goatee" - icon_state = "facial_gt" - +/datum/sprite_accessory/facial_hair/hogan + name = "Hulk Hogan Mustache" + icon_state = "facial_hogan" //-Neek + /datum/sprite_accessory/facial_hair/jensen name = "Jensen Beard" icon_state = "facial_jensen" - -/datum/sprite_accessory/facial_hair/dwarf - name = "Dwarf Beard" - icon_state = "facial_dwarf" - -/datum/sprite_accessory/facial_hair/fiveoclock - name = "Five o Clock Shadow" - icon_state = "facial_fiveoclock" - -/datum/sprite_accessory/facial_hair/fu - name = "Fu Manchu" - icon_state = "facial_fumanchu" - -/datum/sprite_accessory/facial_hair/brokenman - name = "Broken Man" - icon_state = "facial_brokenman" - + +/datum/sprite_accessory/facial_hair/longbeard + name = "Long Beard" + icon_state = "facial_longbeard" + +/datum/sprite_accessory/facial_hair/neckbeard + name = "Neckbeard" + icon_state = "facial_neckbeard" + +/datum/sprite_accessory/facial_hair/selleck + name = "Selleck Mustache" + icon_state = "facial_selleck" + +/datum/sprite_accessory/facial_hair/chaplin + name = "Square Mustache" + icon_state = "facial_chaplin" + +/datum/sprite_accessory/facial_hair/vandyke + name = "Van Dyke Mustache" + icon_state = "facial_vandyke" + +/datum/sprite_accessory/facial_hair/vlongbeard + name = "Very Long Beard" + icon_state = "facial_wise" + +/datum/sprite_accessory/facial_hair/watson + name = "Watson Mustache" + icon_state = "facial_watson" /////////////////////////// // Underwear Definitions // From 97b8a6ed3b5dc218087058771d60f7664cb01f2e Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 26 Sep 2017 16:27:23 -0400 Subject: [PATCH 12/69] Removes some spawns --- .../hostile/megafauna/megafauna.dm | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 5f45d47494..a80340c28a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -144,44 +144,42 @@ return TRUE /proc/UnlockMedal(medal,client/player) - + set waitfor = FALSE if(!player || !medal) return if(global.medal_hub && global.medal_pass && global.medals_enabled) - spawn() - var/result = world.SetMedal(medal, player, global.medal_hub, global.medal_pass) - if(isnull(result)) - global.medals_enabled = FALSE - log_game("MEDAL ERROR: Could not contact hub to award medal:[medal] player:[player.ckey]") - message_admins("Error! Failed to contact hub to award [medal] medal to [player.ckey]!") - else if (result) - to_chat(player, "Achievement unlocked: [medal]!") + var/result = world.SetMedal(medal, player, global.medal_hub, global.medal_pass) + if(isnull(result)) + global.medals_enabled = FALSE + log_game("MEDAL ERROR: Could not contact hub to award medal:[medal] player:[player.ckey]") + message_admins("Error! Failed to contact hub to award [medal] medal to [player.ckey]!") + else if (result) + to_chat(player, "Achievement unlocked: [medal]!") /proc/SetScore(score,client/player,increment,force) - + set waitfor = FALSE if(!score || !player) return if(global.medal_hub && global.medal_pass && global.medals_enabled) - spawn() - var/list/oldscore = GetScore(score,player,1) + var/list/oldscore = GetScore(score,player,1) - if(increment) - if(!oldscore[score]) - oldscore[score] = 1 - else - oldscore[score] = (text2num(oldscore[score]) + 1) + if(increment) + if(!oldscore[score]) + oldscore[score] = 1 else - oldscore[score] = force + oldscore[score] = (text2num(oldscore[score]) + 1) + else + oldscore[score] = force - var/newscoreparam = list2params(oldscore) + var/newscoreparam = list2params(oldscore) - var/result = world.SetScores(player.ckey, newscoreparam, global.medal_hub, global.medal_pass) + var/result = world.SetScores(player.ckey, newscoreparam, global.medal_hub, global.medal_pass) - if(isnull(result)) - global.medals_enabled = FALSE - log_game("SCORE ERROR: Could not contact hub to set score. Score:[score] player:[player.ckey]") - message_admins("Error! Failed to contact hub to set [score] score for [player.ckey]!") + if(isnull(result)) + global.medals_enabled = FALSE + log_game("SCORE ERROR: Could not contact hub to set score. Score:[score] player:[player.ckey]") + message_admins("Error! Failed to contact hub to set [score] score for [player.ckey]!") /proc/GetScore(score,client/player,returnlist) From 659c92a0d6dc0a7e9b41bab40eb925f44f9b1077 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Tue, 26 Sep 2017 16:53:47 -0400 Subject: [PATCH 14/69] Fixes SSqueak not returning ..() --- code/controllers/subsystem/squeak.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/controllers/subsystem/squeak.dm b/code/controllers/subsystem/squeak.dm index 16b722c71b..964d970e2b 100644 --- a/code/controllers/subsystem/squeak.dm +++ b/code/controllers/subsystem/squeak.dm @@ -11,6 +11,7 @@ SUBSYSTEM_DEF(squeak) /datum/controller/subsystem/squeak/Initialize(timeofday) trigger_migration(config.mice_roundstart) + return ..() /datum/controller/subsystem/squeak/proc/trigger_migration(num_mice=10) if(!num_mice) From 91c1a78af9bdf9f00e68f402eb50eb1ada727b03 Mon Sep 17 00:00:00 2001 From: AutomaticFrenzy <31360629+AutomaticFrenzy@users.noreply.github.com> Date: Thu, 28 Sep 2017 11:24:12 -0400 Subject: [PATCH 16/69] Fixed duplicate definition (#31048) --- code/game/objects/items/stacks/sheets/sheet_types.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f1bb4c3772..6303da132c 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -390,7 +390,6 @@ GLOBAL_LIST_INIT(plastic_recipes, list( singular_name = "plastic sheet" icon_state = "sheet-plastic" throwforce = 7 - origin_tech = "materials=1" origin_tech = "materials=1;biotech=1" merge_type = /obj/item/stack/sheet/plastic From 602e1e6bbfef0471956ed90460714f9435b3b4a9 Mon Sep 17 00:00:00 2001 From: Y0SH1M4S73R Date: Thu, 28 Sep 2017 07:03:34 -0400 Subject: [PATCH 18/69] AFK players count as dead for the assassinate objective (#31046) --- code/game/gamemodes/objective.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 75ed90d712..c00328243a 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -121,7 +121,7 @@ return target /datum/objective/assassinate/check_completion() - return !target || !considered_alive(target) + return !considered_alive(target) || considered_afk(target) /datum/objective/assassinate/update_explanation_text() ..() From 6fca708b33abd009393ec8671e84b4c72f9fb36f Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 28 Sep 2017 05:24:34 -0500 Subject: [PATCH 20/69] Advanced camera consoles use a list for z lock rather than a single z level (#30661) * Refactor Abductor Console * Station lock --- .../miniantags/abduction/machinery/camera.dm | 2 +- code/game/machinery/computer/camera_advanced.dm | 12 +++++++++--- code/modules/shuttle/navigation_computer.dm | 5 ++--- code/modules/shuttle/syndicate.dm | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm index eb4e4f8211..fd9ca0a658 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm @@ -9,7 +9,7 @@ var/datum/action/innate/vest_disguise_swap/vest_disguise_action = new var/datum/action/innate/set_droppoint/set_droppoint_action = new var/obj/machinery/abductor/console/console - z_lock = ZLEVEL_STATION_PRIMARY + station_lock_override = TRUE icon = 'icons/obj/abductor.dmi' icon_state = "camera" diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 3d5b8f026b..711ed6e55b 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -3,7 +3,8 @@ desc = "Used to access the various cameras on the station." icon_screen = "cameras" icon_keyboard = "security_key" - var/z_lock = null // Lock use to this zlevel + var/list/z_lock = list() // Lock use to these z levels + var/station_lock_override = FALSE var/mob/camera/aiEye/remote/eyeobj var/mob/living/current_user = null var/list/networks = list("SS13") @@ -13,6 +14,11 @@ light_color = LIGHT_COLOR_RED +/obj/machinery/computer/camera_advanced/Initialize() + . = ..() + if(station_lock_override) + z_lock = GLOB.station_z_levels.Copy() + /obj/machinery/computer/camera_advanced/syndie icon_keyboard = "syndie_key" @@ -76,7 +82,7 @@ if(!eyeobj.eye_initialized) var/camera_location for(var/obj/machinery/camera/C in GLOB.cameranet.cameras) - if(!C.can_use() || z_lock && C.z != z_lock) + if(!C.can_use() || z_lock.len && !(C.z in z_lock)) continue if(C.network & networks) camera_location = get_turf(C) @@ -201,7 +207,7 @@ var/list/L = list() for (var/obj/machinery/camera/cam in GLOB.cameranet.cameras) - if(origin.z_lock && cam.z != origin.z_lock) + if(origin.z_lock.len && !(cam.z in origin.z_lock)) continue L.Add(cam) diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 9199e5eb14..65669d8251 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -1,7 +1,6 @@ /obj/machinery/computer/camera_advanced/shuttle_docker name = "navigation computer" desc = "Used to designate a precise transit location for a spacecraft." - z_lock = ZLEVEL_STATION_PRIMARY jump_action = null var/datum/action/innate/shuttledocker_rotate/rotate_action = new var/datum/action/innate/shuttledocker_place/place_action = new @@ -133,7 +132,7 @@ if(!V) continue var/obj/docking_port/stationary/S = V - if(z_lock && (S.z != z_lock)) + if(z_lock.len && !(S.z in z_lock)) continue if((S.id == shuttlePortId) || jumpto_ports[S.id]) continue @@ -222,7 +221,7 @@ if(!V) continue var/obj/docking_port/stationary/S = V - if(console.z_lock && (S.z != console.z_lock)) + if(console.z_lock.len && !(S.z in console.z_lock)) continue if(console.jumpto_ports[S.id]) L[S.name] = S diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 1c3d416fd0..ac1339d33e 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -47,8 +47,8 @@ desc = "Used to designate a precise transit location for the syndicate shuttle." icon_screen = "syndishuttle" icon_keyboard = "syndie_key" - z_lock = ZLEVEL_STATION_PRIMARY shuttleId = "syndicate" + station_lock_override = TRUE shuttlePortId = "syndicate_custom" shuttlePortName = "custom location" jumpto_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1) From 16f1ceedd1fe0f08b674ba27d48f16c543d5937f Mon Sep 17 00:00:00 2001 From: Emmett Gaines Date: Wed, 27 Sep 2017 21:30:48 -0400 Subject: [PATCH 22/69] GetAllContents performance increase (#31027) --- code/__HELPERS/unsorted.dm | 28 ++++++---------------------- code/game/turfs/turf.dm | 2 +- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index a20cad1cf2..c2398982c2 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -502,28 +502,12 @@ Turf and target are separate in case you want to teleport some distance from a t var/y=arcsin(x/sqrt(1+x*x)) return y -/atom/proc/GetAllContents(list/ignore_typecache) - var/list/processing_list = list(src) - var/list/assembled = list() - if(ignore_typecache) //If there's a typecache, use it. - while(processing_list.len) - var/atom/A = processing_list[1] - processing_list -= A - if(ignore_typecache[A.type]) - continue - processing_list |= (A.contents - assembled) - assembled |= A - - else //If there's none, only make this check once for performance. - while(processing_list.len) - var/atom/A = processing_list[1] - processing_list -= A - - processing_list |= (A.contents - assembled) - - assembled |= A - - return assembled +/atom/proc/GetAllContents(list/output=list()) + . = output + output += src + for(var/i in 1 to contents.len) + var/atom/thing = contents[i] + thing.GetAllContents(output) //Step-towards method of determining whether one atom can see another. Similar to viewers() /proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 0b8fbb3844..5bb90f618b 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -444,7 +444,7 @@ /turf/proc/empty(turf_type=/turf/open/space, baseturf_type, list/ignore_typecache, forceop = FALSE) // Remove all atoms except observers, landmarks, docking ports var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object)) - var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(ignore_typecache), ignored_atoms) + var/list/allowed_contents = typecache_filter_list_reverse(GetAllContents(), ignored_atoms | ignore_typecache) allowed_contents -= src for(var/i in 1 to allowed_contents.len) var/thing = allowed_contents[i] From a3c7a3fe11f0c57ba8d82afc111efd4e3d015737 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Thu, 28 Sep 2017 12:07:23 -0400 Subject: [PATCH 24/69] Self replacement fix (#30834) --- code/game/objects/items/eightball.dm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index d8be420a08..15c6bcd4b1 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -38,10 +38,14 @@ /obj/item/toy/eightball/Initialize(mapload) . = ..() - if(prob(1)) - new /obj/item/toy/eightball/haunted(get_turf(src)) + if(MakeHaunted()) return INITIALIZE_HINT_QDEL +/obj/item/toy/eightball/proc/MakeHaunted() + . = prob(1) + if(.) + new /obj/item/toy/eightball/haunted(loc) + /obj/item/toy/eightball/attack_self(mob/user) if(shaking) return @@ -105,6 +109,9 @@ GLOB.poi_list -= src . = ..() +/obj/item/toy/eightball/haunted/MakeHaunted() + return FALSE + /obj/item/toy/eightball/haunted/attack_ghost(mob/user) if(!shaking) to_chat(user, "[src] is not currently being shaken.") From 7dfa8d998c693bc4e9b46c15b71b80557a172633 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 28 Sep 2017 11:21:54 -0500 Subject: [PATCH 26/69] Automatic changelog generation for PR #2960 [ci skip] --- html/changelogs/AutoChangeLog-pr-2960.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2960.yml diff --git a/html/changelogs/AutoChangeLog-pr-2960.yml b/html/changelogs/AutoChangeLog-pr-2960.yml new file mode 100644 index 0000000000..905ec4764f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2960.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - tweak: "Revheads no longer spawn with chameleon glasses or a spraycan, instead they will start with a cybernetic security HUD implanted into their eyes." From 553daf4a0ca29adfcf31b4d60c8e82464a1cc378 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 28 Sep 2017 11:22:12 -0500 Subject: [PATCH 27/69] Automatic changelog generation for PR #2963 [ci skip] --- html/changelogs/AutoChangeLog-pr-2963.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2963.yml diff --git a/html/changelogs/AutoChangeLog-pr-2963.yml b/html/changelogs/AutoChangeLog-pr-2963.yml new file mode 100644 index 0000000000..056e7a17fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2963.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - tweak: "The mining vendor will now provide more verbose feedback about your interactions." From d0d785fa79610f5512ef7f108cc95176edfe03d0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 28 Sep 2017 11:29:13 -0500 Subject: [PATCH 28/69] Automatic changelog generation for PR #2968 [ci skip] --- html/changelogs/AutoChangeLog-pr-2968.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2968.yml diff --git a/html/changelogs/AutoChangeLog-pr-2968.yml b/html/changelogs/AutoChangeLog-pr-2968.yml new file mode 100644 index 0000000000..8ece28e6e9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2968.yml @@ -0,0 +1,5 @@ +author: "Augustfox" +delete-after: True +changes: + - tweak: "Reordered hair in a semi-alphabetized list for easier use in character creation." + - tweak: "Alphabetized facial hair for easier use in character creation." From 3fe37eb41b6e8c83716007617aedf058d6a5f0a4 Mon Sep 17 00:00:00 2001 From: Robustin Date: Thu, 28 Sep 2017 22:40:13 -0400 Subject: [PATCH 29/69] Secure containers give more hints, no RNG, for hacking (#30864) * Automatic changelog generation for PR #30056 [ci skip] * Delete AutoChangeLog-pr-30056.yml * Removes bad RNG * More instructions * gud grammer * Right parenthesis * Update secure.dm * Update secure.dm * Update secure.dm * less explicit --- code/game/objects/items/storage/secure.dm | 28 +++++++++++------------ 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 6620ec5265..ef65f2dac3 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -28,31 +28,29 @@ /obj/item/storage/secure/examine(mob/user) ..() - to_chat(user, text("The service panel is [src.open ? "open" : "closed"].")) + to_chat(user, text("The service panel is currently [open ? "unscrewed" : "screwed shut"].")) /obj/item/storage/secure/attackby(obj/item/W, mob/user, params) if(locked) if (istype(W, /obj/item/screwdriver)) - if (do_after(user, 20*W.toolspeed, target = src)) - src.open =! src.open - user.show_message("You [open ? "open" : "close"] the service panel.", 1) + if (do_after(user, 20*W.toolspeed, target = user)) + open =! open + to_chat(user, "You [open ? "open" : "close"] the service panel.") return - if ((istype(W, /obj/item/device/multitool)) && (src.open == 1)&& (!src.l_hacking)) - user.show_message("Now attempting to reset internal memory, please hold.", 1) - src.l_hacking = 1 - if (do_after(usr, 100*W.toolspeed, target = src)) - if (prob(33)) - src.l_setshort = 1 + if (istype(W, /obj/item/wirecutters) || istype(W, /obj/item/card/emag)) + to_chat(user, "[src] is protected from this sort of tampering, yet it appears the internal memory wires can still be pulsed.") + if ((istype(W, /obj/item/device/multitool)) && (!l_hacking)) + if(src.open == 1) + to_chat(user, "Now attempting to reset internal memory, please hold.") + src.l_hacking = 1 + if (do_after(usr, 400*W.toolspeed, target = user)) + to_chat(user, "Internal memory reset - lock has been disengaged.") src.l_set = 0 - user.show_message("Internal memory reset. Please give it a few seconds to reinitialize.", 1) - sleep(80) - src.l_setshort = 0 src.l_hacking = 0 else - user.show_message("Unable to reset internal memory.", 1) src.l_hacking = 0 else - src.l_hacking = 0 + to_chat(user, "You must unscrew the service panel before you can pulse the wiring.") return //At this point you have exhausted all the special things to do when locked // ... but it's still locked. From 367fcc9974595427fe4a51fb0bc9d3dc704d1225 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:41:34 +1300 Subject: [PATCH 31/69] Merge pull request #30985 from tgstation/Cyberboss-patch-5 Fixes frozen PDAs in the game logs --- code/game/objects/items/devices/PDA/PDA.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index eb521d8510..59299fb9d6 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -538,7 +538,7 @@ GLOBAL_LIST_EMPTY(PDAs) P.show_recieved_message(msg,src) if(!multiple) show_to_ghosts(user,msg) - log_talk(user,"[key_name(user)] (PDA: [name]) sent \"[message]\" to [key_name(P,null,TRUE)]",LOGPDA) + log_talk(user,"[key_name(user)] (PDA: [initial(name)]) sent \"[message]\" to [key_name(P,null,TRUE)]",LOGPDA) else if(!multiple) to_chat(user, "ERROR: Server isn't responding.") @@ -548,7 +548,7 @@ GLOBAL_LIST_EMPTY(PDAs) if(multiple) show_to_sender(last_sucessful_msg,1) show_to_ghosts(user,last_sucessful_msg,1) - log_talk(user,"[user] (PDA: [name]) sent \"[message]\" to Everyone",LOGPDA) + log_talk(user,"[user] (PDA: [initial(name)]) sent \"[message]\" to Everyone",LOGPDA) /obj/item/device/pda/proc/show_to_sender(datum/data_pda_msg/msg,multiple = 0) tnote += "→ To [multiple ? "Everyone" : msg.recipient]:
[msg.message][msg.get_photo_ref()]
" From c6c6f67d03cbc8bb57d1fa1b850f9fe69b4762e4 Mon Sep 17 00:00:00 2001 From: Tungsten Date: Thu, 28 Sep 2017 22:43:22 -0400 Subject: [PATCH 33/69] Applying PDA overhaul Upstream (#30613) * Applying PDA overhaul Upstream Yeet? * Used lordpidey's change Like this? * The build failed so I'm changing it back * Update PDA.dm * Update PDA.dm * Make the settings visible only on the main screen mode 0 is the hub, and the hub is the main menu. I think it'd be a lot more convenient for players to always have these options on the main menu if they need them. Makes it really easy to swap colors and fonts at the beginning of the round. I can put it in a settings menu if everyone really thinks it's necessary, but then someone would have to help me actually make the damn icons show up. * Update PDA.dm * Update PDA.dm * Wait, I'm an idiot. I was editing the wrong thing. * Here's your switch statements boi * Declare font_index at the "Toggle_Font" code I declared it exactly where it's relevant, but I think this looks unclean. I also redefined it which I actually needed to do. * Replaced it where it was cuz the build broke * Make the color changer a picker instead of a field An attempt * Made these defines @optimumtact @Cyberboss Like this? --- code/game/objects/items/devices/PDA/PDA.dm | 35 ++++++++++++++++++++- icons/pda_icons/pda_atmos.png | Bin 224 -> 2851 bytes icons/pda_icons/pda_back.png | Bin 219 -> 2846 bytes icons/pda_icons/pda_bell.png | Bin 226 -> 2857 bytes icons/pda_icons/pda_blank.png | Bin 189 -> 106 bytes icons/pda_icons/pda_boom.png | Bin 241 -> 2895 bytes icons/pda_icons/pda_bucket.png | Bin 220 -> 2844 bytes icons/pda_icons/pda_chatroom.png | Bin 223 -> 2855 bytes icons/pda_icons/pda_cleanbot.png | Bin 183 -> 2880 bytes icons/pda_icons/pda_color.png | Bin 0 -> 198 bytes icons/pda_icons/pda_crate.png | Bin 234 -> 2859 bytes icons/pda_icons/pda_cuffs.png | Bin 225 -> 2852 bytes icons/pda_icons/pda_dronephone.png | Bin 244 -> 2864 bytes icons/pda_icons/pda_eject.png | Bin 226 -> 133 bytes icons/pda_icons/pda_exit.png | Bin 241 -> 2861 bytes icons/pda_icons/pda_flashlight.png | Bin 221 -> 2850 bytes icons/pda_icons/pda_floorbot.png | Bin 214 -> 2887 bytes icons/pda_icons/pda_font.png | Bin 0 -> 232 bytes icons/pda_icons/pda_honk.png | Bin 219 -> 2845 bytes icons/pda_icons/pda_locked.PNG | Bin 215 -> 2850 bytes icons/pda_icons/pda_mail.png | Bin 216 -> 2851 bytes icons/pda_icons/pda_medbot.png | Bin 219 -> 2899 bytes icons/pda_icons/pda_medical.png | Bin 203 -> 2823 bytes icons/pda_icons/pda_menu.png | Bin 229 -> 2852 bytes icons/pda_icons/pda_mule.png | Bin 230 -> 2856 bytes icons/pda_icons/pda_notes.png | Bin 218 -> 2845 bytes icons/pda_icons/pda_power.png | Bin 215 -> 2840 bytes icons/pda_icons/pda_rdoor.png | Bin 212 -> 2839 bytes icons/pda_icons/pda_reagent.png | Bin 219 -> 2855 bytes icons/pda_icons/pda_refresh.png | Bin 234 -> 2857 bytes icons/pda_icons/pda_scanner.png | Bin 241 -> 2864 bytes icons/pda_icons/pda_signaler.png | Bin 238 -> 2865 bytes icons/pda_icons/pda_status.png | Bin 230 -> 2866 bytes 33 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 icons/pda_icons/pda_color.png create mode 100644 icons/pda_icons/pda_font.png diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index eb521d8510..eb5d8d4a5d 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -26,6 +26,14 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/cartridge/cartridge = null //current cartridge var/mode = 0 //Controls what menu the PDA will display. 0 is hub; the rest are either built in or based on cartridge. var/icon_alert = "pda-r" //Icon to be overlayed for message alerts. Taken from the pda icon file. + var/font_index = 0 //This int tells DM which font is currently selected and lets DM know when the last font has been selected so that it can cycle back to the first font when "toggle font" is pressed again. + var/font_mode = "font-family:\"VT323\", monospace;letter-spacing:1px;" //The currently selected font. + var/background_color = "#808000" //The currently selected background color. + + #define FONT_VT 0 + #define FONT_SHARE 1 + #define FONT_ORBITRON 2 + #define FONT_MONO 3 //Secondary variables var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner. @@ -121,7 +129,8 @@ GLOBAL_LIST_EMPTY(PDAs) hidden_uplink.interact(user) return - var/dat = "Personal Data Assistant" + var/dat = "Personal Data Assistant" + dat += " Refresh" @@ -130,6 +139,12 @@ GLOBAL_LIST_EMPTY(PDAs) if (mode) dat += " | Return" + if (mode == 0) + dat += "

" + dat += "
Toggle Font" + dat += " | Change Color" + dat += "
" + dat += "
" if (!owner) @@ -307,6 +322,24 @@ GLOBAL_LIST_EMPTY(PDAs) //BASIC FUNCTIONS=================================== if("Refresh")//Refresh, goes to the end of the proc. + + if ("Toggle_Font") + //CODE REVISION 2 + font_index = (font_index + 1) % 4 + + switch(font_index) + if (FONT_VT) + font_mode = "font-family:\"VT323\", monospace;letter-spacing:1px;" + if (FONT_SHARE) + font_mode = "font-family:\"Share Tech Mono\", monospace;letter-spacing:0px;" + if (FONT_ORBITRON) + font_mode = "font-family:\"Orbitron\", monospace;letter-spacing:0px; font-size:15px" + if (FONT_MONO) + font_mode = "font-family:monospace;" + if ("Change_Color") + var/new_color = input("Please enter a color name or hex value (Default is \'#808000\').")as color + background_color = new_color + if("Return")//Return if(mode<=9) mode = 0 diff --git a/icons/pda_icons/pda_atmos.png b/icons/pda_icons/pda_atmos.png index 89a55a0a6cbd71c6875ef8e78b7224546b6396dd..4485e39799e17f455c09193390d6124cd2318eab 100644 GIT binary patch literal 2851 zcmV+;3*7XHP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000^Nkl_u009600{~Bd{i1l3bFlyb002ovPDHLkV1ny- BM0)@L delta 207 zcmZ21_JDDMWIYoD1H*)g8D>C=y~NYkmHifn442~Uba4!+n3L?0pulWmBG7%oRKSG8l_{7tY~sX)jFuNXHZXRx x#e8hI%x1H(+j!YWRrW`@2PC~zG88x&7z$r6Wc1kL?hG`C!PC{xWt~$(69Dj|J^KIv diff --git a/icons/pda_icons/pda_back.png b/icons/pda_icons/pda_back.png index 4708824853f6f219a331be7c8f3be6a9575b6bef..d12effb55e5c5322d38e150421f6c4ef89e0c6f1 100644 GIT binary patch literal 2846 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 Hu0mjf;eJO( delta 209 zcmZ1}_K0zUWIYoD1H*)g8D>C=y~NYkmHifnjDR@z?VTqQfkNUXt`Q}{`DrEPiAAXl z?mjL7e(nlosYMFLdM1UfOCAE1aFi7IxdUa4fouk^22FV&#ggvm>&U>cv7h@-A}f&3 zmgMd3!tfsi7wla=87N}w>EaktF(=t8L4n!CM4-DM>wtcrt4Ocm2B`_I1t*gXrB}DU zkowS~KWnZ?#sOvy7nyYuOB&f0DfMk&o5a9y_R12*;?S$yK$93eUHx3vIVCg!02>TJ ABme*a diff --git a/icons/pda_icons/pda_blank.png b/icons/pda_icons/pda_blank.png index 665861d3c74c88ad4bf4007a3142b29e85136abf..14c58ad5d7ab9a13843fb6601d27d11342b78e42 100644 GIT binary patch delta 88 zcmdnXm^DEnh>@9rfkD+aR|!b51^9%x9yo9S$ke{Ra2b$dED7=pW^j0RBMrzA@^ojfnmbL3^O3bUgGKN%6^MOhEGC`-;He{P)NMQHKHUqKdq!Zu_%?n z-Nz-s&t0J`wMfBO&!n(*$wQzLj*!LpeYZeSkfJR9T^xl_H+M9WCils zlDyqr82*Fcg1yTp14Se}T^vIy=BOnnC@`Ct2z0xd_GC$9@TxE}Oj~k<@uJ3yX+T8` Mp00i_>zopr020bCIsgCw diff --git a/icons/pda_icons/pda_boom.png b/icons/pda_icons/pda_boom.png index 70e473c3c4c9026bb4b32f134e2441ebb9632172..508798c451a49cc7a8a16eed788ae3a52cd2c5a5 100644 GIT binary patch literal 2895 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 delta 224 zcmX>v_K|UdWIYoD1H*)g8D>C=y~NYkmHifnjDP^w5M4ba4!+n3EitpulWmBG4URqVW32;bV&!r)M3KGKlSVWtO}8 z!z7`Ua~GSY&?Q<{0_0OJYrnUHb*IB8)N*2BvZNFlRdm^R2UhSKW$@_@llHb P8qDD7>gTe~DWM4f9rQ(7 diff --git a/icons/pda_icons/pda_bucket.png b/icons/pda_icons/pda_bucket.png index ee030e3a37d84220f18c2123a5aeff5e1af56ca8..039b23b292e2245590ffa81c5cf5415571ccb780 100644 GIT binary patch literal 2844 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 diff --git a/icons/pda_icons/pda_chatroom.png b/icons/pda_icons/pda_chatroom.png index a00221c4e0de70ac4aa3c9c4d2c00eaec38e0918..2f253bdcf4e75a8410d5d62385f07f5b5ec5a7c6 100644 GIT binary patch literal 2855 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 diff --git a/icons/pda_icons/pda_cleanbot.png b/icons/pda_icons/pda_cleanbot.png index cecbcf407730b0487db5bdf314c02fa87a3f0cba..f3b976d6a2c2ae0cfec42b826bfa233f9f56abd3 100644 GIT binary patch delta 2865 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 P00000NkvXXu0mjftbJYG delta 146 zcmV;D0B!%k7PkSA83+OZ005AYXf}}{7k>Z;bV*G`2i^%75Gf}1Fmspy0034=L_t(2 z&z+LN3IHGoL)Y-b{qzojNTq2z1dY9z642BDpju6m z`Ggq_7tPHiapjqBy#Yk^Sjl;l-M`cZq~88h6V`+sB!W5*5dZ)H07*qoM6N<$f_JYu A*8l(j diff --git a/icons/pda_icons/pda_color.png b/icons/pda_icons/pda_color.png new file mode 100644 index 0000000000000000000000000000000000000000..8e8bcfe6272b5c7a6c857baaf4a2ee5559baca98 GIT binary patch literal 198 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 I&MBb@02F>iPXGV_ diff --git a/icons/pda_icons/pda_cuffs.png b/icons/pda_icons/pda_cuffs.png index 71958c8abc42196c0425591662dc08f0cf4c5023..ff7e0cf3fe685a2438b889bc183ef30546331edd 100644 GIT binary patch literal 2852 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 diff --git a/icons/pda_icons/pda_dronephone.png b/icons/pda_icons/pda_dronephone.png index 7cf392eb9778a19a70675d9b410f08ca996da4db..cd7a1e22ecbd97dc82ecd146b90f7d4cc34bf895 100644 GIT binary patch delta 2849 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 delta 208 zcmV;>05AWr7W4s-85jZp005AYXf^-<00d`2O+f$vv5yPZ;bV*G`2igc6 z4j3j6Mh2k(000+FoUX6&b zoWQ1Kwztwiq#{gx!z~DhFjd?Lp6vND3KnM0000< KMNUMnLSTZ;xJ;-3 diff --git a/icons/pda_icons/pda_eject.png b/icons/pda_icons/pda_eject.png index 4168be03f6afcaa21defa54782daf26ee0823ae9..a9323f8f9f78de8aa002c0ff82ea893dfe7dda58 100644 GIT binary patch delta 116 zcmaFF*vdFTBA1bwfq_BQHdhHqu?6^qxE?rg0Law7zHk|kVk`;r3ubV5b|VeQ(e-q3 z4B?oW{Nw-pg^d#z{#A7DR&svrByjWp#6%|b!(XQJ1e-`M%Tn@C`1N0&VQQ8@yq|2) QB%nqHPgg&ebxsLQ08~~d9RL6T delta 210 zcmZo=e8f0GqMn0^fq`Md#0)ba#a`m+>&kwMLqyn2+B^)IMe(pdSV<4Nst3gv9NU@|l`Z_W&Z0zU$lgJ9> zvn6@EyDzEdb&7CPEcSrF%jtAkZ~YircCiq%p0u-kFIQMOjxnt z!$%hJO;RPi5xwdQ7_%h=E;O8;vM`02kynM0;nVRh#{AX6`9PBxJYD@<);T3K0RZk) BLS+B| diff --git a/icons/pda_icons/pda_exit.png b/icons/pda_icons/pda_exit.png index cd983a4a9abc6fd283e1c623fb60df216ab0069f..b440e2cda8e0163fc338f8f2c10cf076a4e9266d 100644 GIT binary patch literal 2861 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 LNkvXXu0mjf(qB#e delta 224 zcmZ20_K|UdWIYoD1H*)g8D>C=y~NYkmHifnjDR9@Ox;B_ppbZpYeY$Kep*R+Vo@rC zyN^qNpSwa?YLSAmo=IWrl7~Pg93=&Q?m!u1Ae+IfK~o+`v7|ftIx;Y9?C1WI$O`1M zC3(BMF#HF>1$&oI28#H2x;TbZ%t?++P+&GO5$G0>`taH%xb4WHW$lc?lFL}auD*~e z@JiM?kfmbBU1%w_T*Ot%qgW_&-m!F*v<;7nOwM&2UMiJ-NkRAHL>7jEXDy5i)WTK) P4QB9k^>bP0l+XkK!Wu_t diff --git a/icons/pda_icons/pda_flashlight.png b/icons/pda_icons/pda_flashlight.png index 3476727930b959f963014a77a5b2e79810ff0ccb..dafbec2c18b90b45ca50800e89d3e8f529c0f31f 100644 GIT binary patch literal 2850 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 A;s5{u delta 204 zcmZ1^c9(I2WIYoD1H*)g8D>C=y~NYkmHifn44)qN;nvd&fkNUXt`Q}{`DrEPiAAXl z?mjL7e(nlosYMFLdM1UfOCAE1aFi7IxdUa4fouk^22FV&#ggvm>&U>cv7h@-A}f&3 zmgMd3!tfsi7wla=87N}m>EaktF(=tIL4n!CM4+2(DqDw9jnsr%j__us7E^-@J}&0W t{GE4IgmM&a@`rFNJt%)UL(viFS{b_qjPgPCyg)-3JYD@<);T3K0RR}bIu-x` diff --git a/icons/pda_icons/pda_floorbot.png b/icons/pda_icons/pda_floorbot.png index 999e45aed250617b70a645c34031dbc67da3accc..1572a02f03fed04dd8ded17addbcbdf2bfd98eb0 100644 GIT binary patch delta 2880 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 VCp=;b4GaJP002ovPDHLkV1jt@LPh`p diff --git a/icons/pda_icons/pda_font.png b/icons/pda_icons/pda_font.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae56bfc49a8c4a2e4adfa977468dbec79befc72 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7>wyCYfJ_z^1`ZAec6J6f zHU?f^22M@}W@ZK^CI(hk21Z5(E-nT^K?VT<27Z19K0XF+ZU)hJclv?a7)yfuf*Bm1 z-ADs+5tIHNF<|=<|pP#Jl ZVQ0={;upUBJQHXagQu&X%Q~loCICs?J^lay literal 0 HcmV?d00001 diff --git a/icons/pda_icons/pda_honk.png b/icons/pda_icons/pda_honk.png index 55632bf40bcd6cf5dd6aa68fae2a92be68ac16ad..49c2b5c0daee0c5e7cab8be5e303820ebfd4d3af 100644 GIT binary patch literal 2845 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 delta 202 zcmbO$cAIg6WIYoD1H*)g8D>C=y~NYkmHifn44;*X+b_knKq2uG*NBqf{Irtt#G+IN zcORDkKX-+))FK6AJ(I%LB@cm0I7$lq+<`L2KsJL{gQh%?Vo7)Ob!1@J*w6hZkrl{i zOY(MiVfYV%3-&Ib3=}c*ba4!+n3L?BpulWmBGAp&&$h!zgm=dtmhi4cjR_M3E;L*X sHQCI#TmD0ZRJsQ5+8J)w9fTMda(+)|ls~Ib2Q-4g)78&qol`;+0L+a&CjbBd diff --git a/icons/pda_icons/pda_locked.PNG b/icons/pda_icons/pda_locked.PNG index 79fe5829162168f1c062c6be4b694dd751a83b1b..ca1e641732591315d28505f40cbf117ff21781bb 100644 GIT binary patch literal 2850 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 diff --git a/icons/pda_icons/pda_mail.png b/icons/pda_icons/pda_mail.png index 6bfb1e8cd7bb3f8000903aa1b697bfc2211e2674..d41d8dd1ae61d599b2f0a10f7d724b617a411051 100644 GIT binary patch literal 2851 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 BMl=8b delta 199 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 diff --git a/icons/pda_icons/pda_notes.png b/icons/pda_icons/pda_notes.png index eb076d3ca33db3e3ff265fb052993d3f019a5e56..2fe05ee351e54bdf2128ebc2019d4e46b9229155 100644 GIT binary patch literal 2845 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 delta 201 zcmbO$c8hU>WIYoD1H*)g8D>C=y~NYkmHifn44!LpeYZeSkfJR9T^xl_H+M9WCils zlDyqr82*Fcg1yTp14T?dT^vIy<|I2MC@`Ct2y}1AK9H;=#vAeV@fC)2<=MT#%zEbq qE;PLS6)3H7wSil}!@EMjl7Zn+b3bF!FP(Ux2@IaDelF{r5}E+}n>;W8 diff --git a/icons/pda_icons/pda_power.png b/icons/pda_icons/pda_power.png index 04175e7c8355b6cb9abf5c8d29cafcc8316a7e2c..86909ea7305573c464084759f6784c7a18013de2 100644 GIT binary patch literal 2840 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 diff --git a/icons/pda_icons/pda_rdoor.png b/icons/pda_icons/pda_rdoor.png index 6eab5a8817dd4c92aabcc4f37781dbb809acd997..95c0dfd0750671865dd08e5f90a57a784ac2566e 100644 GIT binary patch literal 2839 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 delta 195 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 FV1kzINC^M{ delta 202 zcmZ23cAIg6WIYoD1H*)g8D>C=y~NYkmHifnjG%-SkL|w2Kq2uG*NBqf{Irtt#G+IN zcORDkKX-+))FK6AJ(I%LB@cm0I7$lq+<`L2KsJL{gQh%?Vo7)Ob!1@J*w6hZkrl{i zOY(MiVfYV%3-&Ib3=}c*ba4!+n3L?BpulWmBG9dIq2ah0n@{SDq8)d7TKliEF-cuG sBR9z`flW0u_W;+5i6$PG9fTMdo}HV@7!xGv4K#wm)78&qol`;+0KSktI{*Lx diff --git a/icons/pda_icons/pda_refresh.png b/icons/pda_icons/pda_refresh.png index 08439c6bca3e988739e23d13bda39581563ccae9..c5e2d24f1734be60a9901349aa2ac4f0eddee52c 100644 GIT binary patch literal 2857 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 Hu0mjfur5t} delta 217 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 PG?>BD)z4*}Q$iB}@^(jz diff --git a/icons/pda_icons/pda_signaler.png b/icons/pda_icons/pda_signaler.png index f71398f70d26803ec455ef0eb86aff99a7193846..43a69798bc57c1f89ea89b461f11af4cf93a6afd 100644 GIT binary patch literal 2865 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 L)z4*}Q$iB}nFd0_ diff --git a/icons/pda_icons/pda_status.png b/icons/pda_icons/pda_status.png index fe955e66a6168d9b2cc86af6005b199ed5421123..dec0ec88df897b1cfb7a76e331f035ae1f83d376 100644 GIT binary patch literal 2866 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 E0D9CzdH?_b From 3c769e323e7c2ef51a9662abbafe636394c9a562 Mon Sep 17 00:00:00 2001 From: pubby Date: Wed, 27 Sep 2017 21:13:00 -0500 Subject: [PATCH 35/69] Remove unused ninja team var --- code/datums/antagonists/ninja.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/datums/antagonists/ninja.dm b/code/datums/antagonists/ninja.dm index 230a4d64e4..b08ad16665 100644 --- a/code/datums/antagonists/ninja.dm +++ b/code/datums/antagonists/ninja.dm @@ -1,6 +1,5 @@ /datum/antagonist/ninja name = "Ninja" - var/team var/helping_station = 0 var/give_objectives = TRUE From 724fa8ce547a5fa08795ebbece48196b5ef892ca Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Thu, 28 Sep 2017 19:46:10 -0700 Subject: [PATCH 37/69] [READY]Refactors timestops to use fields (#30858) * kek * fixes * Fixes * fixes * throw freeze * woops * double woops --- code/controllers/subsystem/throwing.dm | 11 +- code/game/objects/effects/proximity.dm | 2 +- code/modules/fields/fields.dm | 11 +- code/modules/fields/peaceborg_dampener.dm | 3 +- code/modules/fields/timestop.dm | 131 ++++++++++++++++++ .../research/xenobiology/xenobiology.dm | 78 ----------- tgstation.dme | 1 + 7 files changed, 150 insertions(+), 87 deletions(-) create mode 100644 code/modules/fields/timestop.dm diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index f245b0766c..97d84a0d3b 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -57,6 +57,9 @@ SUBSYSTEM_DEF(throwing) var/pure_diagonal var/diagonal_error var/datum/callback/callback + var/paused = FALSE + var/delayed_time = 0 + var/last_move = 0 /datum/thrownthing/proc/tick() var/atom/movable/AM = thrownthing @@ -64,14 +67,20 @@ SUBSYSTEM_DEF(throwing) finalize() return + if(paused) + delayed_time += world.time - last_move + return + if (dist_travelled && hitcheck()) //to catch sneaky things moving on our tile while we slept finalize() return var/atom/step + last_move = world.time + //calculate how many tiles to move, making up for any missed ticks. - var/tilestomove = Ceiling(min(((((world.time+world.tick_lag) - start_time) * speed) - (dist_travelled ? dist_travelled : -1)), speed*MAX_TICKS_TO_MAKE_UP) * (world.tick_lag * SSthrowing.wait)) + var/tilestomove = Ceiling(min(((((world.time+world.tick_lag) - start_time + delayed_time) * speed) - (dist_travelled ? dist_travelled : -1)), speed*MAX_TICKS_TO_MAKE_UP) * (world.tick_lag * SSthrowing.wait)) while (tilestomove-- > 0) if ((dist_travelled >= maxrange || AM.loc == target_turf) && AM.has_gravity(AM.loc)) finalize() diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm index 62471505d0..70128be7ee 100644 --- a/code/game/objects/effects/proximity.dm +++ b/code/game/objects/effects/proximity.dm @@ -33,7 +33,7 @@ if(!force_rebuild && range == current_range) return FALSE . = TRUE - + current_range = range var/list/checkers_local = checkers diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm index 0e15d24e03..218c19ff22 100644 --- a/code/modules/fields/fields.dm +++ b/code/modules/fields/fields.dm @@ -30,6 +30,7 @@ //Processing var/process_inner_turfs = FALSE //Don't do this unless it's absolutely necessary var/process_edge_turfs = FALSE //Don't do this either unless it's absolutely necessary, you can just track what things are inside manually or on the initial setup. + var/requires_processing = FALSE var/setup_edge_turfs = FALSE //Setup edge turfs/all field turfs. Set either or both to ON when you need it, it's defaulting to off unless you do to save CPU. var/setup_field_turfs = FALSE var/use_host_turf = FALSE //For fields from items carried on mobs to check turf instead of loc... @@ -41,6 +42,7 @@ /datum/proximity_monitor/advanced/Destroy() full_cleanup() + STOP_PROCESSING(SSfields, src) return ..() /datum/proximity_monitor/advanced/proc/assume_params(list/field_params) @@ -76,6 +78,10 @@ /datum/proximity_monitor/advanced/proc/process_edge_turf(turf/T) +/datum/proximity_monitor/advanced/New() + if(requires_processing) + START_PROCESSING(SSfields, src) + /datum/proximity_monitor/advanced/proc/Initialize() setup_field() post_setup_field() @@ -250,11 +256,6 @@ setup_field_turfs = TRUE setup_edge_turfs = TRUE -/datum/proximity_monitor/advanced/debug/recalculate_field() - ..() - -/datum/proximity_monitor/advanced/debug/post_setup_field() - ..() /datum/proximity_monitor/advanced/debug/setup_edge_turf(turf/T) T.color = set_edgeturf_color diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/modules/fields/peaceborg_dampener.dm index a480459f38..5e0fbdfb2b 100644 --- a/code/modules/fields/peaceborg_dampener.dm +++ b/code/modules/fields/peaceborg_dampener.dm @@ -5,6 +5,7 @@ name = "\improper Hyperkinetic Dampener Field" setup_edge_turfs = TRUE setup_field_turfs = TRUE + requires_processing = TRUE field_shape = FIELD_SHAPE_RADIUS_SQUARE var/static/image/edgeturf_south = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south") var/static/image/edgeturf_north = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north") @@ -21,13 +22,11 @@ use_host_turf = TRUE /datum/proximity_monitor/advanced/peaceborg_dampener/New() - START_PROCESSING(SSfields, src) tracked = list() staging = list() ..() /datum/proximity_monitor/advanced/peaceborg_dampener/Destroy() - STOP_PROCESSING(SSfields, src) return ..() /datum/proximity_monitor/advanced/peaceborg_dampener/process() diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm new file mode 100644 index 0000000000..2fe1f775b4 --- /dev/null +++ b/code/modules/fields/timestop.dm @@ -0,0 +1,131 @@ + +/obj/effect/timestop + anchored = TRUE + name = "chronofield" + desc = "ZA WARUDO" + icon = 'icons/effects/160x160.dmi' + icon_state = "time" + layer = FLY_LAYER + pixel_x = -64 + pixel_y = -64 + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + var/list/immune = list() // the one who creates the timestop is immune + var/turf/target + var/freezerange = 2 + var/duration = 140 + var/datum/proximity_monitor/advanced/timestop/chronofield + alpha = 125 + +/obj/effect/timestop/Initialize(mapload, radius, time, list/immune_atoms, start = TRUE) //Immune atoms assoc list atom = TRUE + . = ..() + if(immune_atoms) + immune = immune_atoms.Copy() + if(!isnull(time)) + duration = time + if(!isnull(radius)) + freezerange = radius + for(var/mob/living/L in GLOB.player_list) + if(locate(/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop) in L.mind.spell_list) //People who can stop time are immune to its effects + immune[L] = TRUE + if(start) + timestop() + +/obj/effect/timestop/Destroy() + qdel(chronofield) + playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, frequency = -1) //reverse! + return ..() + +/obj/effect/timestop/proc/timestop() + target = get_turf(src) + playsound(src, 'sound/magic/timeparadox2.ogg', 75, 1, -1) + chronofield = make_field(/datum/proximity_monitor/advanced/timestop, list("current_range" = freezerange, "host" = src, "immune" = immune)) + QDEL_IN(src, duration) + +/obj/effect/timestop/wizard + duration = 100 + +/datum/proximity_monitor/advanced/timestop + name = "chronofield" + setup_field_turfs = TRUE + field_shape = FIELD_SHAPE_RADIUS_SQUARE + requires_processing = TRUE + var/list/immune = list() + var/list/mob/living/frozen_mobs = list() + var/list/obj/item/projectile/frozen_projectiles = list() + var/list/atom/movable/frozen_throws = list() + +/datum/proximity_monitor/advanced/timestop/Destroy() + unfreeze_all() + return ..() + +/datum/proximity_monitor/advanced/timestop/field_turf_crossed(atom/movable/AM) + freeze_atom(AM) + +/datum/proximity_monitor/advanced/timestop/proc/freeze_atom(atom/movable/A) + if(immune[A] || !istype(A)) + return FALSE + if(A.throwing) + freeze_throwing(A) + if(isliving(A)) + freeze_mob(A) + else if(istype(A, /obj/item/projectile)) + freeze_projectile(A) + else + return FALSE + return TRUE + +/datum/proximity_monitor/advanced/timestop/proc/unfreeze_all() + for(var/i in frozen_projectiles) + unfreeze_projectile(i) + for(var/i in frozen_mobs) + unfreeze_mob(i) + for(var/i in frozen_throws) + unfreeze_throw(i) + +/datum/proximity_monitor/advanced/timestop/proc/freeze_throwing(atom/movable/AM) + var/datum/thrownthing/T = AM.throwing + T.paused = TRUE + frozen_throws[AM] = T + +/datum/proximity_monitor/advanced/timestop/proc/unfreeze_throw(atom/movable/AM) + var/datum/thrownthing/T = frozen_throws[AM] + T.paused = FALSE + frozen_throws -= AM + +/datum/proximity_monitor/advanced/timestop/process() + for(var/i in frozen_mobs) + var/mob/living/m = i + if(get_dist(get_turf(m), get_turf(host)) > current_range) + unfreeze_mob(m) + else + m.Stun(20, 1, 1) + +/datum/proximity_monitor/advanced/timestop/setup_field_turf(turf/T) + for(var/i in T.contents) + freeze_atom(i) + return ..() + +/datum/proximity_monitor/advanced/timestop/proc/unfreeze_projectile(obj/item/projectile/P) + frozen_projectiles -= P + P.paused = FALSE + +/datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/item/projectile/P) + frozen_projectiles[P] = TRUE + P.paused = TRUE + +/datum/proximity_monitor/advanced/timestop/proc/freeze_mob(mob/living/L) + L.Stun(20, 1, 1) + frozen_mobs[L] = L.anchored + L.anchored = TRUE + if(ishostile(L)) + var/mob/living/simple_animal/hostile/H = L + H.AIStatus = AI_OFF + H.LoseTarget() + +/datum/proximity_monitor/advanced/timestop/proc/unfreeze_mob(mob/living/L) + L.AdjustStun(-20, 1, 1) + L.anchored = frozen_mobs[L] + frozen_mobs -= L + if(ishostile(L)) + var/mob/living/simple_animal/hostile/H = L + H.AIStatus = initial(H.AIStatus) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 0b3c930962..6eedd257d0 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -542,84 +542,6 @@ log_admin("[key_name(G)] was made a golem by [key_name(user)].") qdel(src) - - - -/obj/effect/timestop - anchored = TRUE - name = "chronofield" - desc = "ZA WARUDO" - icon = 'icons/effects/160x160.dmi' - icon_state = "time" - layer = FLY_LAYER - pixel_x = -64 - pixel_y = -64 - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/mob/living/immune = list() // the one who creates the timestop is immune - var/list/stopped_atoms = list() - var/freezerange = 2 - var/duration = 140 - alpha = 125 - -/obj/effect/timestop/Initialize() - . = ..() - for(var/mob/living/L in GLOB.player_list) - if(locate(/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop) in L.mind.spell_list) //People who can stop time are immune to its effects - immune += L - timestop() - - -/obj/effect/timestop/proc/timestop() - set waitfor = FALSE - playsound(src, 'sound/magic/timeparadox2.ogg', 75, 1, -1) - for(var/i in 1 to duration-1) - for(var/atom/A in orange (freezerange, src.loc)) - if(isliving(A)) - var/mob/living/M = A - if(M in immune) - continue - M.Stun(200, 1, 1) - M.anchored = TRUE - if(ishostile(M)) - var/mob/living/simple_animal/hostile/H = M - H.AIStatus = AI_OFF - H.LoseTarget() - stopped_atoms |= M - else if(istype(A, /obj/item/projectile)) - var/obj/item/projectile/P = A - P.paused = TRUE - stopped_atoms |= P - - for(var/mob/living/M in stopped_atoms) - if(get_dist(get_turf(M),get_turf(src)) > freezerange) //If they lagged/ran past the timestop somehow, just ignore them - unfreeze_mob(M) - stopped_atoms -= M - stoplag() - - //End - playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, frequency = -1) //reverse! - for(var/mob/living/M in stopped_atoms) - unfreeze_mob(M) - - for(var/obj/item/projectile/P in stopped_atoms) - P.paused = FALSE - qdel(src) - return - - - -/obj/effect/timestop/proc/unfreeze_mob(mob/living/M) - M.AdjustStun(-200, 1, 1) - M.anchored = FALSE - if(ishostile(M)) - var/mob/living/simple_animal/hostile/H = M - H.AIStatus = initial(H.AIStatus) - - -/obj/effect/timestop/wizard - duration = 100 - - /obj/item/stack/tile/bluespace name = "bluespace floor tile" singular_name = "floor tile" diff --git a/tgstation.dme b/tgstation.dme index 525e30ca66..986a748818 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1360,6 +1360,7 @@ #include "code\modules\events\wizard\summons.dm" #include "code\modules\fields\fields.dm" #include "code\modules\fields\peaceborg_dampener.dm" +#include "code\modules\fields\timestop.dm" #include "code\modules\fields\turf_objects.dm" #include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" From a780d6f79e573661fe2c844a38a6a48d45969390 Mon Sep 17 00:00:00 2001 From: YPOQ <30683121+YPOQ@users.noreply.github.com> Date: Thu, 28 Sep 2017 20:46:02 -0600 Subject: [PATCH 39/69] Fixes larva evolving while restrained (#31060) --- code/modules/mob/living/carbon/alien/larva/powers.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index 36191203ad..906ba71c96 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -34,6 +34,7 @@ if(L.handcuffed || L.legcuffed) // Cuffing larvas ? Eh ? to_chat(user, "You cannot evolve when you are cuffed.") + return if(L.amount_grown >= L.max_grown) //TODO ~Carn to_chat(L, "You are growing into a beautiful alien! It is time to choose a caste.") From 08dcd65a63fb1da9abe7e8f89e9248f0c2ee9f94 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Thu, 28 Sep 2017 22:45:42 -0400 Subject: [PATCH 41/69] Fixes omega air injector (#31059) --- _maps/map_files/OmegaStation/OmegaStation.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 12d1d8abe7..14282b7ebf 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -38904,7 +38904,7 @@ volume_rate = 200 }, /turf/open/space/basic, -/area/space) +/area/engine/engineering) "bxd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 From dd7fd8b4a86fdf183a2568035c0daa34dd6137d9 Mon Sep 17 00:00:00 2001 From: RandomMarine Date: Thu, 28 Sep 2017 19:45:17 -0700 Subject: [PATCH 43/69] You can now light cigars on burning people (#31081) * adds lighting cigs on burning mobs * backslash the * src --- code/game/objects/items/cigs_lighters.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 15a7c1ab0b..f04f8d4441 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -234,6 +234,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/attack(mob/living/carbon/M, mob/living/carbon/user) if(!istype(M)) return ..() + if(M.on_fire && !lit) + light("[user] lights [src] with [M]'s burning body. What a cold-blooded badass.") + return var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) From 1a9d36b3f1c435243da5220cc204811466989f94 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:47:47 +1300 Subject: [PATCH 45/69] Merge pull request #31078 from pubby/opspawn Cleanup operative landmarks --- _maps/map_files/BoxStation/BoxStation.dmm | 11 +-- _maps/map_files/MetaStation/MetaStation.dmm | 11 +-- _maps/map_files/generic/CentCom.dmm | 77 ++++++++++++++++----- code/_globalvars/lists/mapping.dm | 2 + code/game/gamemodes/nuclear/nuclear.dm | 76 ++++++++------------ code/game/objects/effects/landmarks.dm | 35 +++++----- 6 files changed, 109 insertions(+), 103 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 656507316d..07642f1d08 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -7441,14 +7441,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/crew_quarters/fitness) -"aqt" = ( -/obj/effect/landmark/syndicate_breach_area, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness) "aqu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -14777,7 +14769,6 @@ /turf/open/floor/plating, /area/chapel/main) "aHr" = ( -/obj/effect/landmark/marauder_entry, /turf/open/space, /area/space) "aHs" = ( @@ -100719,7 +100710,7 @@ aaa aaa aaa aaa -aqt +aqs aro aro aro diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 67107bf501..21180a53bd 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -178,7 +178,6 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/port/fore) "aav" = ( -/obj/effect/landmark/marauder_entry, /turf/open/space, /area/space) "aaw" = ( @@ -2225,14 +2224,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"aeD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/landmark/syndicate_breach_area, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness/recreation) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -129060,7 +129051,7 @@ aaa aaa bii aaa -aeD +aeC afD afD afD diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 05f0897465..72a05373eb 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5751,6 +5751,10 @@ /obj/structure/mirror{ pixel_x = 28 }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, /turf/open/floor/plasteel/freezer{ dir = 2 }, @@ -6101,7 +6105,7 @@ /area/syndicate_mothership/control) "qp" = ( /obj/structure/chair/stool, -/obj/effect/landmark/syndicate_spawn, +/obj/effect/landmark/start/nukeop, /turf/open/floor/plasteel/bar{ dir = 2 }, @@ -6506,6 +6510,7 @@ /area/syndicate_mothership/control) "rj" = ( /obj/structure/closet/cardboard, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "rk" = ( @@ -7623,7 +7628,7 @@ /turf/open/floor/wood, /area/syndicate_mothership/control) "tT" = ( -/obj/effect/landmark/syndicate_spawn, +/obj/effect/landmark/start/nukeop_leader, /turf/open/floor/wood, /area/syndicate_mothership/control) "tU" = ( @@ -8025,6 +8030,9 @@ /area/syndicate_mothership/control) "vb" = ( /obj/structure/closet/cardboard/metal, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "vc" = ( @@ -9731,7 +9739,6 @@ /area/wizard_station) "zj" = ( /obj/structure/table/wood, -/obj/effect/landmark/teleport_scroll, /obj/item/dice/d20, /obj/item/dice, /turf/open/floor/carpet, @@ -13652,6 +13659,44 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/school) +"QT" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QU" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QV" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QX" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) (1,1,1) = {" aa @@ -34895,7 +34940,7 @@ lG hm aa kl -qs +QT rk rl rm @@ -34903,7 +34948,7 @@ tl rm ux vc -qs +QY kl aa aa @@ -36180,7 +36225,7 @@ hq hm aa kl -qt +QU ro rm sd @@ -36437,7 +36482,7 @@ hq hm aa kl -qs +QV rp ro rm @@ -36445,7 +36490,7 @@ tl rm uy ve -qs +QZ kl aa aa @@ -36695,13 +36740,13 @@ hm aa kl qs -qs +QW se se se se se -qs +QX qs kl aa @@ -76391,9 +76436,9 @@ dM QJ QL fg -QO -QQ -QR +QL +QK +QL dM fN fQ @@ -76903,11 +76948,11 @@ dM QI dM QK -QM +QL QN -QP +QL fr -QS +QL dM fN ab diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index a2d30b1528..d031c01223 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -33,6 +33,8 @@ GLOBAL_LIST_EMPTY(department_security_spawns) //list of all department security GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events GLOBAL_LIST_EMPTY(wizardstart) +GLOBAL_LIST_EMPTY(nukeop_start) +GLOBAL_LIST_EMPTY(nukeop_leader_start) GLOBAL_LIST_EMPTY(newplayer_start) GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 4c21f9688b..acf55e4036 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -22,27 +22,17 @@ var/nukes_left = 1 // Call 3714-PRAY right now and order more nukes! Limited offer! var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station var/syndies_didnt_escape = 0 //Used for tracking if the syndies got the shuttle off of the z-level + var/list/pre_nukeops = list() /datum/game_mode/nuclear/pre_setup() - var/n_players = num_players() - var/n_agents = min(round(n_players / 10, 1), agents_possible) - - if(antag_candidates.len < n_agents) //In the case of having less candidates than the selected number of agents - n_agents = antag_candidates.len - - while(n_agents > 0) - var/datum/mind/new_syndicate = pick(antag_candidates) - syndicates += new_syndicate - antag_candidates -= new_syndicate //So it doesn't pick the same guy each time. - n_agents-- - - for(var/datum/mind/synd_mind in syndicates) - synd_mind.assigned_role = "Syndicate" - synd_mind.special_role = "Syndicate"//So they actually have a special role/N - log_game("[synd_mind.key] (ckey) has been selected as a nuclear operative") - - return 1 - + var/n_agents = min(round(num_players() / 10), antag_candidates.len, agents_possible) + for(var/i = 0, i < n_agents, ++i) + var/datum/mind/new_op = pick_n_take(antag_candidates) + pre_nukeops += new_op + new_op.assigned_role = "Nuclear Operative" + new_op.special_role = "Nuclear Operative" + log_game("[new_op.key] (ckey) has been selected as a nuclear operative") + return TRUE //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// @@ -60,48 +50,36 @@ //////////////////////////////////////////////////////////////////////////////////////// /datum/game_mode/nuclear/post_setup() - - var/list/turf/synd_spawn = list() - - for(var/obj/effect/landmark/A in GLOB.landmarks_list) - if(A.name == "Syndicate-Spawn") - synd_spawn += get_turf(A) - continue - var/nuke_code = random_nukecode() - var/leader_selected = 0 var/agent_number = 1 - var/spawnpos = 1 + var/datum/mind/leader = pick(pre_nukeops) + syndicates += pre_nukeops + for(var/i = 1 to pre_nukeops.len) + var/datum/mind/op = pre_nukeops[i] - for(var/datum/mind/synd_mind in syndicates) - if(spawnpos > synd_spawn.len) - spawnpos = 2 - synd_mind.current.loc = synd_spawn[spawnpos] - - forge_syndicate_objectives(synd_mind) - greet_syndicate(synd_mind) - equip_syndicate(synd_mind.current) + forge_syndicate_objectives(op) + greet_syndicate(op) + equip_syndicate(op.current) if(nuke_code) - synd_mind.store_memory("Syndicate Nuclear Bomb Code: [nuke_code]", 0, 0) - to_chat(synd_mind.current, "The nuclear authorization code is: [nuke_code]") + op.store_memory("Syndicate Nuclear Bomb Code: [nuke_code]", 0, 0) + to_chat(op.current, "The nuclear authorization code is: [nuke_code]") - if(!leader_selected) - prepare_syndicate_leader(synd_mind, nuke_code) - leader_selected = 1 + if(op == leader) + op.current.forceMove(pick(GLOB.nukeop_leader_start)) + prepare_syndicate_leader(op, nuke_code) else - synd_mind.current.real_name = "[syndicate_name()] Operative #[agent_number]" - agent_number++ - spawnpos++ - update_synd_icons_added(synd_mind) - synd_mind.current.playsound_local(get_turf(synd_mind.current), 'sound/ambience/antag/ops.ogg',100,0) - var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list + op.current.forceMove(GLOB.nukeop_start[((i - 1) % GLOB.nukeop_start.len) + 1]) + op.current.real_name = "[syndicate_name()] Operative #[agent_number++]" + update_synd_icons_added(op) + op.current.playsound_local(get_turf(op.current), 'sound/ambience/antag/ops.ogg',100,0) + + var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list if(nuke) nuke.r_code = nuke_code return ..() - /datum/game_mode/proc/prepare_syndicate_leader(datum/mind/synd_mind, nuke_code) var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") spawn(1) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 7401797a47..68a1cb773c 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -157,11 +157,27 @@ /obj/effect/landmark/start/wizard name = "wizard" -/obj/effect/landmark/start/wizard/Initialize(mapload) +/obj/effect/landmark/start/wizard/Initialize() ..() GLOB.wizardstart += loc return INITIALIZE_HINT_QDEL +/obj/effect/landmark/start/nukeop + name = "nukeop" + +/obj/effect/landmark/start/nukeop/Initialize() + ..() + GLOB.nukeop_start += loc + return INITIALIZE_HINT_QDEL + +/obj/effect/landmark/start/nukeop_leader + name = "nukeop leader" + +/obj/effect/landmark/start/nukeop_leader/Initialize() + ..() + GLOB.nukeop_leader_start += loc + return INITIALIZE_HINT_QDEL + /obj/effect/landmark/start/new_player name = "New Player" @@ -205,23 +221,6 @@ /obj/effect/landmark/tripai name = "tripai" -// marauder entry (XXX WTF IS MAURADER ENTRY???) - -/obj/effect/landmark/marauder_entry - name = "Marauder Entry" - -// syndicate breach area (XXX I DON'T KNOW WHAT THIS IS EITHER) - -/obj/effect/landmark/syndicate_breach_area - name = "Syndicate Breach Area" - -// teleport scroll landmark, XXX DOES THIS DO ANYTHING? -/obj/effect/landmark/teleport_scroll - name = "Teleport-Scroll" - -/obj/effect/landmark/syndicate_spawn - name = "Syndicate-Spawn" - // xenos. /obj/effect/landmark/xeno_spawn name = "xeno_spawn" From bdae94f60c249aabd648db3d61b4ecbe69408ad8 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 28 Sep 2017 21:46:59 -0500 Subject: [PATCH 47/69] Shooting walls can create bullet holes/dents (#30714) * Bullet holes in walls * Code standards, new sprite --- code/__DEFINES/layers.dm | 1 + code/game/turfs/closed.dm | 13 +++++++++++++ icons/effects/effects.dmi | Bin 888145 -> 888237 bytes 3 files changed, 14 insertions(+) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 830a25fb0a..2e0b359fac 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -12,6 +12,7 @@ #define HIGH_TURF_LAYER 2.03 #define ABOVE_OPEN_TURF_LAYER 2.04 #define CLOSED_TURF_LAYER 2.05 +#define BULLET_HOLE_LAYER 2.06 #define ABOVE_NORMAL_TURF_LAYER 2.08 #define LATTICE_LAYER 2.2 #define DISPOSAL_PIPE_LAYER 2.3 diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index 68e5e31e84..3140e73400 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -138,3 +138,16 @@ desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern." icon = 'icons/turf/walls/hierophant_wall.dmi' icon_state = "wall" + +/turf/closed/bullet_act(obj/item/projectile/Proj) + ..() + if(!Proj.nodamage && (Proj.damage_type == BRUTE || Proj.damage_type == BURN)) + var/mutable_appearance/bullet_hole = mutable_appearance('icons/effects/effects.dmi', "bullet_hole", BULLET_HOLE_LAYER) + + var/random_x = rand(-13, 13) + bullet_hole.pixel_x += random_x + + var/random_y = rand(-13, 13) + bullet_hole.pixel_y += random_y + + add_overlay(bullet_hole, TRUE) \ No newline at end of file diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 971eb849f67f35c636d0b482751f8f24778aaa6d..fd53873c183655a7110c3f91e6966fe3ab9c1c7c 100644 GIT binary patch delta 30069 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 delta 29977 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 From 977163ae54603d3cf667f1c74dc8d9984101a956 Mon Sep 17 00:00:00 2001 From: kingofkosmos Date: Fri, 29 Sep 2017 05:46:34 +0300 Subject: [PATCH 49/69] Fixes MMI buckled-warning (#31061) * Fixes MMI having a buckled-warning when trying to move. * Comment added. --- code/modules/mob/living/brain/MMI.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 65a3fd253e..83dd63cc74 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -199,6 +199,8 @@ else to_chat(user, "The MMI indicates the brain is active.") +/obj/item/device/mmi/relaymove() + return //so that the MMI won't get a warning about not being able to move if it tries to move /obj/item/device/mmi/syndie name = "Syndicate Man-Machine Interface" From 2309a729c7e7f8a03522d22aad41212f7f93b296 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:48:08 +1300 Subject: [PATCH 51/69] Merge pull request #31076 from AutomaticFrenzy/elseif Fix dangling #elseif in list helpers --- code/__HELPERS/_lists.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 540ec9fb63..e5478adff4 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -474,7 +474,7 @@ #error Remie said that lummox was adding a way to get a lists #error contents via list.values, if that is true remove this #error otherwise, update the version and bug lummox -#elseif +#endif //Flattens a keyed list into a list of it's contents /proc/flatten_list(list/key_list) if(!islist(key_list)) From a01540e39b63c8429bd1dcd6e670069df868580d Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:52:40 +1300 Subject: [PATCH 53/69] Merge pull request #31074 from pubby/ninjaoutfit Ninja outfit code cleanup --- code/datums/antagonists/ninja.dm | 32 ++----------------------------- code/datums/outfit.dm | 4 ++-- code/modules/ninja/ninja_event.dm | 4 ---- code/modules/ninja/outfit.dm | 25 ++++++++++++++++++++++++ tgstation.dme | 1 + 5 files changed, 30 insertions(+), 36 deletions(-) create mode 100644 code/modules/ninja/outfit.dm diff --git a/code/datums/antagonists/ninja.dm b/code/datums/antagonists/ninja.dm index 230a4d64e4..00dc953e90 100644 --- a/code/datums/antagonists/ninja.dm +++ b/code/datums/antagonists/ninja.dm @@ -19,36 +19,8 @@ ..(new_owner) helping_station = rand(0,1) -/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current, safety=0)//Safety in case you need to unequip stuff for existing characters. - if(safety) - qdel(H.w_uniform) - qdel(H.wear_suit) - qdel(H.wear_mask) - qdel(H.head) - qdel(H.shoes) - qdel(H.gloves) - - var/obj/item/clothing/suit/space/space_ninja/theSuit = new(H) - var/obj/item/dash/energy_katana/EK = new(H) - theSuit.energyKatana = EK - - H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears) - H.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/space_ninja(H), slot_shoes) - H.equip_to_slot_or_del(theSuit, slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/space_ninja(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/space_ninja(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/space_ninja(H), slot_wear_mask) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(H), slot_glasses) - H.equip_to_slot_or_del(EK, slot_belt) - H.equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/tank/internals/emergency_oxygen(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/tank/jetpack/carbondioxide(H), slot_back) - theSuit.randomize_param() - - var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H) - E.implant(H) - return 1 +/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current) + return H.equipOutfit(/datum/outfit/ninja) /datum/antagonist/ninja/proc/addMemories() owner.store_memory("I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 8d4413171d..3c3ab905ea 100755 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -102,10 +102,10 @@ if(implants) for(var/implant_type in implants) var/obj/item/implant/I = new implant_type(H) - I.implant(H, null, silent=TRUE) + I.implant(H, null, TRUE) H.update_body() - return 1 + return TRUE /datum/outfit/proc/apply_fingerprints(mob/living/carbon/human/H) if(!istype(H)) diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 8ff3652367..a3184cbb20 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -71,13 +71,9 @@ Contents: var/datum/antagonist/ninja/ninjadatum = add_ninja(Ninja) ninjadatum.equip_space_ninja() - Ninja.internal = Ninja.s_store - Ninja.update_internals_hud_icon(1) - if(Ninja.mind != Mind) //something has gone wrong! throw EXCEPTION("Ninja created with incorrect mind") - SSticker.mode.update_ninja_icons_added(Ninja) spawned_mobs += Ninja message_admins("[key_name_admin(Ninja)] has been made into a ninja by an event.") diff --git a/code/modules/ninja/outfit.dm b/code/modules/ninja/outfit.dm new file mode 100644 index 0000000000..4ec9cde23c --- /dev/null +++ b/code/modules/ninja/outfit.dm @@ -0,0 +1,25 @@ +/datum/outfit/ninja + name = "Space Ninja" + uniform = /obj/item/clothing/under/color/black + suit = /obj/item/clothing/suit/space/space_ninja + glasses = /obj/item/clothing/glasses/night + mask = /obj/item/clothing/mask/gas/space_ninja + head = /obj/item/clothing/head/helmet/space/space_ninja + ears = /obj/item/device/radio/headset + shoes = /obj/item/clothing/shoes/space_ninja + gloves = /obj/item/clothing/gloves/space_ninja + back = /obj/item/tank/jetpack/carbondioxide + l_pocket = /obj/item/grenade/plastic/x4 + r_pocket = /obj/item/tank/internals/emergency_oxygen + internals_slot = slot_r_store + belt = /obj/item/dash/energy_katana + implants = list(/obj/item/implant/explosive) + + +/datum/outfit/ninja/post_equip(mob/living/carbon/human/H) + if(istype(H.wear_suit, suit)) + var/obj/item/clothing/suit/space/space_ninja/S = H.wear_suit + if(istype(H.belt, belt)) + S.energyKatana = H.belt + S.randomize_param() + diff --git a/tgstation.dme b/tgstation.dme index 525e30ca66..5e990d33b5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1904,6 +1904,7 @@ #include "code\modules\ninja\energy_katana.dm" #include "code\modules\ninja\ninja_event.dm" #include "code\modules\ninja\Ninja_Readme.dm" +#include "code\modules\ninja\outfit.dm" #include "code\modules\ninja\suit\gloves.dm" #include "code\modules\ninja\suit\head.dm" #include "code\modules\ninja\suit\mask.dm" From eb27276765d20387938e01dbb4a8695778c1061c Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Wed, 27 Sep 2017 15:31:57 -0400 Subject: [PATCH 55/69] Profile access is granted when holder is created --- code/modules/admin/admin_ranks.dm | 2 -- code/modules/admin/holder2.dm | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 828fbb2e91..67d0b4dbf7 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -214,8 +214,6 @@ GLOBAL_PROTECT(admin_ranks) var/datum/admins/D = new(rank_names[rank], ckey) //create the admin datum and store it for later use if(!D) continue //will occur if an invalid rank is provided - if(D.rank.rights & R_DEBUG) //grant profile access - world.SetConfig("APP/admin", ckey, "role=admin") D.associate(GLOB.directory[ckey]) //find the client for a ckey if they are connected and associate them with the new admin datum else if(!SSdbcore.Connect()) diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 238512c8b7..04d03dbf4f 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -34,6 +34,8 @@ GLOBAL_PROTECT(href_token) admin_signature = "Nanotrasen Officer #[rand(0,9)][rand(0,9)][rand(0,9)]" href_token = GenerateToken() GLOB.admin_datums[ckey] = src + if(R.rights & R_DEBUG) //grant profile access + world.SetConfig("APP/admin", ckey, "role=admin") /proc/GenerateToken() . = "" From ae604eb341b754e6a56aa9c48742180a72e2f24d Mon Sep 17 00:00:00 2001 From: oranges Date: Wed, 27 Sep 2017 22:35:39 +0000 Subject: [PATCH 57/69] Add a fingerprint to pipes when interacted with by a wrench --- code/game/machinery/pipe/construction.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 3fb3447f61..34d2edc56c 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -213,6 +213,8 @@ GLOBAL_LIST_INIT(pipeID2State, list( return ..() if (!isturf(src.loc)) return 1 + + add_fingerprint(user) fixdir() if(pipe_type in list(PIPE_GAS_MIXER, PIPE_GAS_FILTER)) From f508d248be9805e43156f7ff6efebead35d59493 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:55:27 +1300 Subject: [PATCH 59/69] Merge pull request #31091 from tgstation/Cyberboss-patch-1 Gives 1 GBP for Grammar and formatting --- tools/WebhookProcessor/github_webhook_processor.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php index 4e20a7e902..a8b32c7a92 100644 --- a/tools/WebhookProcessor/github_webhook_processor.php +++ b/tools/WebhookProcessor/github_webhook_processor.php @@ -456,6 +456,7 @@ function get_pr_code_friendliness($payload, $oldbalance = null){ 'Fix' => 2, 'Refactor' => 2, 'Code Improvement' => 1, + 'Grammar and Formatting' => 1, 'Priority: High' => 4, 'Priority: CRITICAL' => 5, 'Atmospherics' => 4, From baf72b8412a870c1d7cea79d39ee51827ef43636 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:55:02 +1300 Subject: [PATCH 61/69] Merge pull request #31064 from YPOQ/silverfriedfoods Silver slime extracts create proper fried foods --- .../food_and_drinks/food/snacks_bread.dm | 31 +++++++++++++++++++ .../kitchen_machinery/deep_fryer.dm | 31 +------------------ .../chemistry/recipes/slime_extracts.dm | 7 +++++ 3 files changed, 39 insertions(+), 30 deletions(-) diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index a07375a5b1..cf51c9867f 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -185,6 +185,37 @@ icon_state = "" bitesize = 2 +/obj/item/reagent_containers/food/snacks/deepfryholder/proc/fry(obj/item/frying, datum/reagents/reagents, cook_time = 30) + if(istype(frying, /obj/item/reagent_containers/)) + var/obj/item/reagent_containers/food = frying + food.reagents.trans_to(src, food.reagents.total_volume) + icon = frying.icon + overlays = frying.overlays + icon_state = frying.icon_state + desc = frying.desc + w_class = frying.w_class + reagents.trans_to(src, 2*(cook_time/15)) + switch(cook_time) + if(0 to 15) + add_atom_colour(rgb(166,103,54), FIXED_COLOUR_PRIORITY) + name = "lightly-fried [frying.name]" + if(16 to 49) + add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) + name = "fried [frying.name]" + if(50 to 59) + add_atom_colour(rgb(63,23,4), FIXED_COLOUR_PRIORITY) + name = "deep-fried [frying.name]" + if(60 to INFINITY) + add_atom_colour(rgb(33,19,9), FIXED_COLOUR_PRIORITY) + name = "the physical manifestation of the very concept of fried foods" + desc = "A heavily fried...something. Who can tell anymore?" + filling_color = color + foodtype |= FRIED + if(istype(frying, /obj/item/reagent_containers/food/snacks/)) + qdel(frying) + else + frying.forceMove(src) + /obj/item/reagent_containers/food/snacks/butteredtoast name = "buttered toast" desc = "Butter lightly spread over a piece of toast." diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 179f944500..0f27265b4b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -82,36 +82,7 @@ insert ascii eagle on american flag background here if(frying.loc == src) to_chat(user, "You eject [frying] from [src].") var/obj/item/reagent_containers/food/snacks/deepfryholder/S = new(get_turf(src)) - if(istype(frying, /obj/item/reagent_containers/)) - var/obj/item/reagent_containers/food = frying - food.reagents.trans_to(S, food.reagents.total_volume) - S.icon = frying.icon - S.overlays = frying.overlays - S.icon_state = frying.icon_state - S.desc = frying.desc - S.w_class = frying.w_class - reagents.trans_to(S, 2*(cook_time/15)) - switch(cook_time) - if(0 to 15) - S.add_atom_colour(rgb(166,103,54), FIXED_COLOUR_PRIORITY) - S.name = "lightly-fried [frying.name]" - if(16 to 49) - S.add_atom_colour(rgb(103,63,24), FIXED_COLOUR_PRIORITY) - S.name = "fried [frying.name]" - if(50 to 59) - S.add_atom_colour(rgb(63,23,4), FIXED_COLOUR_PRIORITY) - S.name = "deep-fried [frying.name]" - if(60 to INFINITY) - S.add_atom_colour(rgb(33,19,9), FIXED_COLOUR_PRIORITY) - S.name = "the physical manifestation of the very concept of fried foods" - S.desc = "A heavily fried...something. Who can tell anymore?" - S.filling_color = S.color - S.foodtype |= FRIED - if(istype(frying, /obj/item/reagent_containers/food/snacks/)) - qdel(frying) - else - frying.forceMove(S) - + S.fry(frying, reagents, cook_time) icon_state = "fryer_off" user.put_in_hands(S) frying = null diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 7e08a11b49..62e5fd723d 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -151,6 +151,12 @@ for(var/i in 1 to 4 + rand(1,2)) var/chosen = pick(borks) var/obj/B = new chosen(T) + if(prob(5))//Fry it! + var/obj/item/reagent_containers/food/snacks/deepfryholder/D = new(T) + var/datum/reagents/reagents = new(25) + reagents.add_reagent("nutriment", 25) + D.fry(B, reagents) + B = D if(prob(50)) for(var/j in 1 to rand(1, 3)) step(B, pick(NORTH,SOUTH,EAST,WEST)) @@ -173,6 +179,7 @@ /obj/item/reagent_containers/food/snacks/soup, /obj/item/reagent_containers/food/snacks/grown, /obj/item/reagent_containers/food/snacks/grown/mushroom, + /obj/item/reagent_containers/food/snacks/deepfryholder ) blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable) From 9da41c35961179b493105bb8c0983eaf4e5c3279 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Thu, 28 Sep 2017 22:59:57 -0400 Subject: [PATCH 63/69] Stops revheads from being metagamed with healthscanners & medical HUDs. (#31110) * Stops revheads metagaming * Added comment. --- code/game/gamemodes/revolution/revolution.dm | 2 +- code/game/objects/items/devices/scanners.dm | 2 +- code/modules/mob/living/carbon/human/examine.dm | 2 +- code/modules/surgery/organs/augments_eyes.dm | 5 +++++ code/modules/surgery/organs/augments_internal.dm | 1 + 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 4ada75bb05..d538c7f75e 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -154,7 +154,7 @@ var/obj/item/device/assembly/flash/T = new(mob) - var/obj/item/organ/cyberimp/eyes/hud/security/S = new(mob) + var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = new(mob) var/list/slots = list ( "backpack" = slot_in_backpack, diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 7d3eabfdc6..e9a622365a 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -214,7 +214,7 @@ MASS SPECTROMETER var/cyberimp_detect for(var/obj/item/organ/cyberimp/CI in C.internal_organs) - if(CI.status == ORGAN_ROBOTIC) + if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant) cyberimp_detect += "[C.name] is modified with a [CI.name].
" if(cyberimp_detect) to_chat(user, "Detected cybernetic modifications:") diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index d48d8608bc..74ccdab19c 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -311,7 +311,7 @@ if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH, /obj/item/organ/cyberimp/eyes/hud/medical)) var/cyberimp_detect for(var/obj/item/organ/cyberimp/CI in internal_organs) - if(CI.status == ORGAN_ROBOTIC) + if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant) cyberimp_detect += "[name] is modified with a [CI.name].
" if(cyberimp_detect) msg += "Detected cybernetic modifications:
" diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index 75014626be..eda6e34677 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -39,3 +39,8 @@ desc = "These cybernetic eye implants will display a security HUD over everything you see." origin_tech = "materials=4;programming=4;biotech=3;combat=3" HUD_type = DATA_HUD_SECURITY_ADVANCED + +/obj/item/organ/cyberimp/eyes/hud/security/syndicate + name = "Contraband Security HUD Implant" + desc = "A Cybersun Industries brand Security HUD Implant. These illicit cybernetic eye implants will display a security HUD over everything you see." + syndicate_implant = TRUE diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 4e478d3420..1eec609fc0 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -6,6 +6,7 @@ status = ORGAN_ROBOTIC var/implant_color = "#FFFFFF" var/implant_overlay + var/syndicate_implant = FALSE //Makes the implant invisible to health analyzers and medical HUDs. /obj/item/organ/cyberimp/New(var/mob/M = null) if(iscarbon(M)) From 183c158d14188ace3e562920a7cbcc7bb9ef65e8 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 16:27:01 +1300 Subject: [PATCH 65/69] Merge pull request #31106 from DaxDupont/puttheclownupsidedown Removes references to gangs from tips.txt --- strings/tips.txt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/strings/tips.txt b/strings/tips.txt index 51e1210e03..e76b88c625 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -76,7 +76,6 @@ As a Security Officer, communicate and coordinate with your fellow officers usin As a Security Officer, your sechuds or HUDsunglasses can not only see crewmates' job assignments and criminal status, but also if they are mindshield implanted. Use this to your advantage in a revolution to definitively tell who is on your side! As a Security Officer, mindshield implants can only prevent someone from being turned into a cultist: unlike revolutionaries, it will not de-cult them if they have already been converted. As a Security Officer, examining someone while wearing sechuds or HUDsunglasses will let you set their arrest level, which will cause Beepsky and other security bots to chase after them. -As a Security Officer, implanting a gang member the first time will deconvert them, but destroy the implant. You must implant them a second time to protect them from further conversion attempts. Keep in mind that gang members have ways to destroy implants in people! As the Detective, people leave fingerprints everywhere and on everything. With the exception of white latex, gloves will hide them. All is not lost, however, as gloves leave fibers specific to their kind such as black or nitrile, pointing to a general department. As the Detective, you can use your forensics scanner from a distance. As the Lawyer, try to negotiate with the Warden if sentences seem too high for the crime. @@ -181,10 +180,6 @@ As a Wizard, the fireball spell performs very poorly at close range, as it can e As a Wizard, summoning guns will turn a large portion of the crew against themselves, but will also give everyone anything from a pea shooter to a BFG 9000. Use at your own risk! As a Wizard, the staff of chaos can fire any type of bolts from the magical wands. This can range from bolts of instant death to healing or reviving someone. As a Wizard, most spells become unusable if you are not wearing your robe, hat, and sandals. -As a Gangster, you can destroy mindshield implants with an implant breaker, letting you reconvert that person. -As a Gangster, your influence is based on how many areas you have tagged and how many people are wearing your gang's outfit; more areas and more people wearing the outfit will give you more influence. -As a Gangster, your gang outfits are very robust, giving moderate resistances to most direct damage at the cost of stealth. -As a Gang Boss, don't wait too long to promote lieutenants! If you get caught by security or enemy gangsters, hopefully you have a backup. As an Abductor, you can select where your victims will be sent on the ship control console. As an Abductor Agent, the combat mode vest has much higher resistance to every kind of weapon, and your helmet prevents the AI from tracking you. As an Abductor, the baton can cycle between four modes: stun, sleep, cuff and probe. From 2d1d0b7fd8b0250c06805cb808e1b450e8d40ed7 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 29 Sep 2017 00:48:01 -0500 Subject: [PATCH 67/69] Update tank_types.dm --- code/game/objects/items/tanks/tank_types.dm | 187 +------------------- 1 file changed, 1 insertion(+), 186 deletions(-) diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 58133568ba..f1251370f8 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -1,188 +1,3 @@ -<<<<<<< HEAD -/* Types of tanks! - * Contains: - * Oxygen - * Anesthetic - * Air - * Plasma - * Emergency Oxygen - */ - -/* - * Oxygen - */ -/obj/item/tank/internals/oxygen - name = "oxygen tank" - desc = "A tank of oxygen." - icon_state = "oxygen" - distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE - force = 10 - dog_fashion = /datum/dog_fashion/back - - -/obj/item/tank/internals/oxygen/New() - ..() - air_contents.assert_gas("o2") - air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - - -/obj/item/tank/internals/oxygen/yellow - desc = "A tank of oxygen, this one is yellow." - icon_state = "oxygen_f" - dog_fashion = null - -/obj/item/tank/internals/oxygen/red - desc = "A tank of oxygen, this one is red." - icon_state = "oxygen_fr" - dog_fashion = null - - -/* - * Anesthetic - */ -/obj/item/tank/internals/anesthetic - name = "anesthetic tank" - desc = "A tank with an N2O/O2 gas mix." - icon_state = "anesthetic" - item_state = "an_tank" - force = 10 - -/obj/item/tank/internals/anesthetic/New() - ..() - air_contents.assert_gases("o2", "n2o") - air_contents.gases["o2"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD - air_contents.gases["n2o"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD - return - -/* - * Air - */ -/obj/item/tank/internals/air - name = "air tank" - desc = "Mixed anyone?" - icon_state = "oxygen" - force = 10 - dog_fashion = /datum/dog_fashion/back - -/obj/item/tank/internals/air/New() - ..() - air_contents.assert_gases("o2","n2") - air_contents.gases["o2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD - air_contents.gases["n2"][MOLES] = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD - return - - -/* - * Plasma - */ -/obj/item/tank/internals/plasma - name = "plasma tank" - desc = "Contains dangerous plasma. Do not inhale. Warning: extremely flammable." - icon_state = "plasma" - flags_1 = CONDUCT_1 - slot_flags = null //they have no straps! - force = 8 - - -/obj/item/tank/internals/plasma/New() - ..() - air_contents.assert_gas("plasma") - air_contents.gases["plasma"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - -/obj/item/tank/internals/plasma/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/flamethrower)) - var/obj/item/flamethrower/F = W - if ((!F.status)||(F.ptank)) - return - if(!user.transferItemToLoc(src, F)) - return - src.master = F - F.ptank = src - F.update_icon() - else - return ..() - -/obj/item/tank/internals/plasma/full/New() - ..() - air_contents.assert_gas("plasma") - air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - - -/* - * Plasmaman Plasma Tank - */ - -/obj/item/tank/internals/plasmaman - name = "plasma internals tank" - desc = "A tank of plasma gas designed specifically for use as internals, particularly for plasma-based lifeforms. If you're not a Plasmaman, you probably shouldn't use this." - icon_state = "plasmaman_tank" - item_state = "plasmaman_tank" - force = 10 - distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE - -/obj/item/tank/internals/plasmaman/New() - ..() - air_contents.assert_gas("plasma") - air_contents.gases["plasma"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - -/obj/item/tank/internals/plasmaman/full/New() - ..() - air_contents.assert_gas("plasma") - air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - - -/obj/item/tank/internals/plasmaman/belt - icon_state = "plasmaman_tank_belt" - item_state = "plasmaman_tank_belt" - slot_flags = SLOT_BELT - force = 5 - volume = 6 - w_class = WEIGHT_CLASS_SMALL //thanks i forgot this - -/obj/item/tank/internals/plasmaman/belt/full/New() - ..() - air_contents.assert_gas("plasma") - air_contents.gases["plasma"][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - - - -/* - * Emergency Oxygen - */ -/obj/item/tank/internals/emergency_oxygen - name = "emergency oxygen tank" - desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it." - icon_state = "emergency" - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - force = 4 - distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE - volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) - - -/obj/item/tank/internals/emergency_oxygen/New() - ..() - air_contents.assert_gas("o2") - air_contents.gases["o2"][MOLES] = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - return - -/obj/item/tank/internals/emergency_oxygen/engi - name = "extended-capacity emergency oxygen tank" - icon_state = "emergency_engi" - volume = 6 - -/obj/item/tank/internals/emergency_oxygen/double - name = "double emergency oxygen tank" - icon_state = "emergency_engi" - volume = 10 -======= /* Types of tanks! * Contains: * Oxygen @@ -366,4 +181,4 @@ name = "double emergency oxygen tank" icon_state = "emergency_engi" volume = 10 ->>>>>>> 98ed3d0... Air tanks get their own sprite + reset fix + From cb034e006957a4572de6753774d9b2637897af4f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 29 Sep 2017 11:19:29 -0500 Subject: [PATCH 68/69] Automatic changelog generation for PR #2966 [ci skip] --- html/changelogs/AutoChangeLog-pr-2966.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2966.yml diff --git a/html/changelogs/AutoChangeLog-pr-2966.yml b/html/changelogs/AutoChangeLog-pr-2966.yml new file mode 100644 index 0000000000..3570d4a852 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2966.yml @@ -0,0 +1,4 @@ +author: "RandomMarine" +delete-after: True +changes: + - imageadd: "Air tanks (o2+n2) now have a different appearance from oxygen tanks." From 7d31aa75382bf2a63b6ce0b550336c1111b4ad84 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 29 Sep 2017 11:45:54 -0500 Subject: [PATCH 69/69] Automatic changelog generation for PR #2958 [ci skip] --- html/changelogs/AutoChangeLog-pr-2958.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2958.yml diff --git a/html/changelogs/AutoChangeLog-pr-2958.yml b/html/changelogs/AutoChangeLog-pr-2958.yml new file mode 100644 index 0000000000..c02b758502 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2958.yml @@ -0,0 +1,15 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "Adds Magrifles, RnD" + - rscadd: "Adds Modular Pistols, reskinnable stetchkins available only in a bundle" + - rscadd: "Adds Bundle category for regular traitor uplink" + - rscadd: "Adds Flechette Launcher, nukeop exclusive, unique variant available in bundle" + - rscadd: "Adds 10mm Soporific rounds" + - rscadd: "adds Foam X9 assault rifle, adminspawn" + - bugfix: "Anti Tank Pistol no longer refundable" + - wip: "Adds Hyper-Burst Rifle, adminspawn only weapon, intended for nukeops" + - soundadd: "added Magrifle sounds" + - soundadd: "added Hyper-Burst Rifle sounds" + - imageadd: "added 6 alternative sprites for 10mm pistols, includes suppressed sprites" + - spellcheck: "Anti Tank Pistol description fixed"