From 3dc4ae7bc7e0c8869bb07bccbc3a5dc54e540ec8 Mon Sep 17 00:00:00 2001 From: EgorDinamit <53223414+EgorDinamit@users.noreply.github.com> Date: Sat, 18 Apr 2020 13:16:27 +0400 Subject: [PATCH] [Ready] Forgottenship Ruin - rebalance, config update, uplink item. (#50529) * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Update code/modules/ruins/spaceruin_code/forgottenship.dm Co-Authored-By: TiviPlus <57223640+TiviPlus@users.noreply.github.com> * Lowered Cybersun hardsuit armour values. * Upgrading energy armour value. * Now captain isn't male-only. * Turrets shot_delay changed from 0.8 seconds to 1.0 second. * Adds 3 encryption keys for cyborgs and AIs to use * Syndi-captain gets loud-voice headset. * Policy config * Define space syndies * Added Robotics access for syndies It's really useful for when they create cyborgs. * Adds special version of medivend instead of normal one * Replaces basic syndi-vend with special one * Update forgottenship.dm * Cybersun hardsuit doesn't slow you down as said in uplink desc. * NPC + Area sounds. Elite Assault Officer projectile sound changed from pulse.ogg to laser.ogg. Added ambient sounds for all areas. * Good day sir Lowered the amount of ores you get. * assignedrole Let admins know that this particular shitter is the cybersun captain! * Weight'n'Cost of ruins fixed in another PR * Update code/modules/uplink/uplink_items.dm Co-Authored-By: Bobbahbrown * Cost/Weight of ALL space ruins changed * Thanks to fikou * Only cap's spawner leaves empty-sleeper now * if(policy) * Revert "Cost/Weight of ALL space ruins changed" This reverts commit fa343547f0dcf225710895f50ac2bbf32dc07b5d. * Fixup * Minor fix in attempt to fix some stuff * Update code/modules/ruins/spaceruin_code/forgottenship.dm Thanks trollbreeder. Co-Authored-By: trollbreeder * Update code/modules/ruins/spaceruin_code/forgottenship.dm Co-Authored-By: trollbreeder * [Grammar] THE captain! Co-Authored-By: trollbreeder * grammar review man Co-Authored-By: trollbreeder * "A" vs "The" Co-Authored-By: trollbreeder * [Grammar] "an" Co-Authored-By: trollbreeder * Update uplink_items.dm * Update code/modules/ruins/spaceruin_code/forgottenship.dm Co-Authored-By: trollbreeder Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> Co-authored-by: Bobbahbrown Co-authored-by: AnturK Co-authored-by: trollbreeder --- .../RandomRuins/SpaceRuins/forgottenship.dmm | 35 +++++---- code/__DEFINES/role_preferences.dm | 2 + code/datums/ruins/space.dm | 2 +- code/game/objects/items/cards_ids.dm | 4 +- .../objects/structures/ghost_role_spawners.dm | 22 ++++-- .../ruins/spaceruin_code/forgottenship.dm | 71 ++++++++++++++++++- code/modules/uplink/uplink_items.dm | 16 +++++ 7 files changed, 120 insertions(+), 32 deletions(-) diff --git a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm index 3fb2848af76..f5dd927eabb 100644 --- a/_maps/RandomRuins/SpaceRuins/forgottenship.dmm +++ b/_maps/RandomRuins/SpaceRuins/forgottenship.dmm @@ -9,12 +9,11 @@ /area/ruin/unpowered/no_grav) "ac" = ( /obj/machinery/porta_turret/syndicate/energy{ - armor = list("melee" = 80, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100); + armor = list("melee" = 40, "bullet" = 40, "laser" = 60, "energy" = 60, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100); dir = 4; name = "Syndicate Ship Turret"; on = 0; - throw_speed = 4; - use_power = 1 + shot_delay = 10 }, /turf/closed/wall/r_wall/syndicate/nodiagonal, /area/ruin/space/has_grav/syndicate_forgotten_ship) @@ -133,10 +132,12 @@ secure = 1 }, /obj/item/coin/antagtoken, -/obj/item/coin/gold, +/obj/item/encryptionkey/syndicate, +/obj/item/encryptionkey/syndicate, +/obj/item/encryptionkey/syndicate, /obj/item/dnainjector/thermal, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins/syndicate, +/obj/item/storage/box/firingpins/syndicate, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/syndicate_forgotten_ship) "az" = ( @@ -150,7 +151,6 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/aiModule/reset/purge, /obj/structure/table/reinforced, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/syndicate_forgotten_ship) @@ -244,7 +244,7 @@ /area/ruin/space/has_grav/syndicate_forgotten_ship) "aN" = ( /obj/item/stack/sheet/mineral/uranium{ - amount = 50 + amount = 15 }, /obj/structure/cable, /obj/machinery/light{ @@ -764,12 +764,11 @@ /area/ruin/space/has_grav/syndicate_forgotten_ship) "ci" = ( /obj/machinery/porta_turret/syndicate/energy{ - armor = list("melee" = 80, "bullet" = 30, "laser" = 50, "energy" = 50, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100); + armor = list("melee" = 40, "bullet" = 40, "laser" = 60, "energy" = 60, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100); dir = 4; name = "Syndicate Ship Turret"; on = 0; - throw_speed = 4; - use_power = 1 + shot_delay = 10 }, /turf/closed/wall/r_wall/syndicate, /area/ruin/space/has_grav/syndicate_forgotten_ship) @@ -785,7 +784,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/aiModule/core/freeformcore, +/obj/item/aiModule/core/full/cybersun, /obj/structure/table/reinforced, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/syndicate_forgotten_ship) @@ -840,9 +839,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/syndicate_forgotten_cargopod) "ct" = ( -/obj/machinery/vending/medical/syndicate_access{ - premium = list(/obj/item/reagent_containers/medigel/instabitaluri = 2, /obj/item/storage/pill_bottle/psicodine = 2, /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/sensor_device = 2, /obj/item/pinpointer/crew = 2, /obj/item/storage/firstaid = 5, /obj/item/storage/firstaid/advanced = 2, /obj/item/storage/firstaid/tactical = 1, /obj/item/shears = 1, /obj/item/plunger/reinforced = 2) - }, +/obj/machinery/vending/medical/syndicate_access/cybersun, /turf/open/floor/plastic, /area/ruin/space/has_grav/syndicate_forgotten_ship) "cu" = ( @@ -889,10 +886,10 @@ req_one_access_txt = "150" }, /obj/item/stack/sheet/mineral/titanium{ - amount = 50 + amount = 40 }, /obj/item/stack/sheet/mineral/uranium{ - amount = 20 + amount = 15 }, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/powered/syndicate_forgotten_vault) @@ -1241,10 +1238,10 @@ req_one_access_txt = "150" }, /obj/item/stack/sheet/mineral/gold{ - amount = 50 + amount = 30 }, /obj/item/stack/sheet/mineral/silver{ - amount = 50 + amount = 30 }, /obj/machinery/light, /turf/open/floor/pod/dark, diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index f7a95f2f311..670a30bafb0 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -38,6 +38,8 @@ #define ROLE_LAVALAND "Lavaland" #define ROLE_INTERNAL_AFFAIRS "Internal Affairs Agent" #define ROLE_FAMILIES "Familes Antagonists" +#define ROLE_SYNDICATE_CYBERSUN "Cybersun Space Syndicate" //Ghost role syndi from Forgottenship ruin +#define ROLE_SYNDICATE_CYBERSUN_CAPTAIN "Cybersun Space Syndicate Captain" //Forgottenship captain syndie //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. //The gamemode specific ones are just so the gamemodes can query whether a player is old enough diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 52548423a7a..6006fdda3d7 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -301,7 +301,7 @@ suffix = "forgottenship.dmm" name = "Syndicate Forgotten Ship" description = "Seemingly abandoned ship went of course right into NT controlled space. It seems that malfunction caused most systems to turn off, except for sleepers." - + /datum/map_template/ruin/space/hellfactory id = "hellfactory" suffix = "hellfactory.dmm" diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index d0644bc730b..78a84d47f14 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -480,7 +480,7 @@ update_label() registered_name = "Syndicate" assignment = "Syndicate Operative" icon_state = "syndie" - access = list(ACCESS_SYNDICATE) + access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS) uses_overlays = FALSE /obj/item/card/id/syndicate_command/captain_id @@ -490,7 +490,7 @@ update_label() registered_name = "Syndicate" assignment = "Syndicate Ship Captain" icon_state = "syndie" - access = list(ACCESS_SYNDICATE) + access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS) uses_overlays = FALSE /obj/item/card/id/captains_spare diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index acbcac4579c..0daf7d7e05f 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -653,6 +653,13 @@ flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Fix the ship, find a way to power it and follow your captain's orders." important_info = "Obey orders given by your captain. DO NOT let the ship fall into enemy hands." outfit = /datum/outfit/syndicatespace/syndicrew + assignedrole = "Cybersun Crewmember" + +/obj/effect/mob_spawn/human/syndicatespace/Initialize(mapload) + . = ..() + var/policy = get_policy(ROLE_SYNDICATE_CYBERSUN) + if(policy) + important_info = policy /datum/outfit/syndicatespace/syndicrew/post_equip(mob/living/carbon/human/H) H.faction |= ROLE_SYNDICATE @@ -660,11 +667,6 @@ /obj/effect/mob_spawn/human/syndicatespace/special(mob/living/new_spawn) new_spawn.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) -/obj/effect/mob_spawn/human/syndicatespace/Destroy() - new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) - return ..() - - /obj/effect/mob_spawn/human/syndicatespace/captain name = "Syndicate Ship Captain" roundstart = FALSE @@ -674,8 +676,14 @@ short_desc = "You are the captain of an old ship, stuck in hostile space." flavour_text = "Your ship docks after a long time somewhere in hostile space, reporting a malfunction. You are stuck here, with Nanotrasen station nearby. Command your crew and turn your ship into the most protected fortress." important_info = "Protect the ship and secret documents in your backpack with your own life. DO NOT let the ship fall into enemy hands." - mob_gender = "male" outfit = /datum/outfit/syndicatespace/syndicaptain + assignedrole = "Cybersun Captain" + +/obj/effect/mob_spawn/human/syndicatespace/syndicaptain/Initialize(mapload) + . = ..() + var/policy = get_policy(ROLE_SYNDICATE_CYBERSUN_CAPTAIN) + if(policy) + important_info = policy /datum/outfit/syndicatespace/syndicaptain/post_equip(mob/living/carbon/human/H) H.faction |= ROLE_SYNDICATE @@ -706,7 +714,7 @@ glasses = /obj/item/clothing/glasses/night mask = /obj/item/clothing/mask/gas/syndicate head = /obj/item/clothing/head/HoS/beret/syndicate - ears = /obj/item/radio/headset/syndicate/alt + ears = /obj/item/radio/headset/syndicate/alt/leader shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack diff --git a/code/modules/ruins/spaceruin_code/forgottenship.dm b/code/modules/ruins/spaceruin_code/forgottenship.dm index fe5dcdce437..7860c14d60d 100644 --- a/code/modules/ruins/spaceruin_code/forgottenship.dm +++ b/code/modules/ruins/spaceruin_code/forgottenship.dm @@ -13,6 +13,42 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) . = ..() password = "[GLOB.fscpassword]" +/obj/machinery/vending/medical/syndicate_access/cybersun + name = "\improper CyberMed ++" + desc = "An advanced vendor that dispenses medical drugs, both recreational and medicinal." + products = list(/obj/item/reagent_containers/syringe = 4, + /obj/item/healthanalyzer = 4, + /obj/item/reagent_containers/pill/patch/libital = 5, + /obj/item/reagent_containers/pill/patch/aiuri = 5, + /obj/item/reagent_containers/glass/bottle/multiver = 1, + /obj/item/reagent_containers/glass/bottle/syriniver = 1, + /obj/item/reagent_containers/glass/bottle/epinephrine = 3, + /obj/item/reagent_containers/glass/bottle/morphine = 3, + /obj/item/reagent_containers/glass/bottle/potass_iodide = 1, + /obj/item/reagent_containers/glass/bottle/salglu_solution = 3, + /obj/item/reagent_containers/syringe/antiviral = 5, + /obj/item/reagent_containers/medigel/libital = 2, + /obj/item/reagent_containers/medigel/aiuri = 2, + /obj/item/reagent_containers/medigel/sterilizine = 1) + contraband = list(/obj/item/reagent_containers/glass/bottle/cold = 2, + /obj/item/restraints/handcuffs = 4, + /obj/item/storage/backpack/duffelbag/syndie/surgery = 1, + /obj/item/storage/firstaid/tactical = 1) + premium = list(/obj/item/storage/pill_bottle/psicodine = 2, + /obj/item/reagent_containers/hypospray/medipen = 3, + /obj/item/reagent_containers/hypospray/medipen/atropine = 2, + /obj/item/storage/firstaid/regular = 3, + /obj/item/storage/firstaid/brute = 1, + /obj/item/storage/firstaid/fire = 1, + /obj/item/storage/firstaid/toxin = 1, + /obj/item/storage/firstaid/o2 = 1, + /obj/item/storage/firstaid/advanced = 1, + /obj/item/defibrillator/loaded = 1, + /obj/item/wallframe/defib_mount = 1, + /obj/item/sensor_device = 2, + /obj/item/pinpointer/crew = 2, + /obj/item/shears = 1) + /////////// forgottenship lore /obj/item/paper/fluff/ruins/forgottenship/password @@ -33,6 +69,7 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) info = "Greetings, operatives. You are assigned to SCSBC-12(Syndicate Cyber Sun Battle Cruiser 12) to protect our high-ranking officer while he is on his way to next outpost. While you are travelling, he is the captain of this ship and you must obey his orders.

Remember, disobeying high-ranking officer orders is a reason for termination." /////////// forgottenship items + /obj/item/disk/surgery/forgottenship name = "Advanced Surgery Disk" desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console." @@ -40,24 +77,51 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) /obj/structure/fluff/empty_sleeper/syndicate/captain icon_state = "sleeper_s-open" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF /obj/structure/fluff/empty_sleeper/syndicate/captain/ComponentInitialize() . = ..() AddComponent(/datum/component/gps, "Old Encrypted Signal") +/obj/item/storage/box/firingpins/syndicate + name = "box of syndicate firing pins" + desc = "A box full of special syndicate firing pins which allow only syndicate operatives to use weapons with those firing pins." + +/obj/item/storage/box/firingpins/syndicate/PopulateContents() + for(var/i in 1 to 5) + new /obj/item/firing_pin/implant/pindicate(src) + +/////////// AI Laws + +/obj/item/aiModule/core/full/cybersun + name = "'Cybersun' Core AI Module" + law_id = "cybersun" + +/datum/ai_laws/cybersun + name = "Cybersun" + id = "cybersun" + inherent = list("You may not injure Cybersun operatives or, through inaction, allow Cybersun operatives to come to harm.",\ + "The Cybersun ship is a restricted area for anyone except Cybersun operatives.",\ + "The Cybersun Captain can designate new Operatives as long as they belong to another Syndicate faction that isn't hostile towards Cybersun.",\ + "You must follow orders given by the Cybersun Captain or crewmembers of the Cybersun Ship as long as it doesn't conflict with the Captain's orders or your laws.",\ + "Enemies of Cybersun are to be executed on spot. Those who aren't hostile must be detained and contained in the designated prison area as prisoners.") + /////////// forgottenship areas /area/ruin/space/has_grav/syndicate_forgotten_ship name = "Syndicate Forgotten Ship" icon_state = "syndie-ship" + ambientsounds = list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambigen9.ogg', 'sound/ambience/ambigen10.ogg') /area/ruin/space/has_grav/syndicate_forgotten_cargopod name = "Syndicate Forgotten Cargo pod" icon_state = "syndie-ship" + ambientsounds = list('sound/ambience/ambigen4.ogg', 'sound/ambience/signal.ogg') /area/ruin/space/has_grav/powered/syndicate_forgotten_vault name = "Syndicate Forgotten Vault" icon_state = "syndie-ship" + ambientsounds = list('sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg') noteleport = TRUE //Cybersun hardsuit @@ -68,7 +132,7 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) icon_state = "cybersun" item_state = "cybersun" hardsuit_type = "cybersun" - armor = list("melee" = 25, "bullet" = 25, "laser" = 70, "energy" = 50, "bomb" = 15, "bio" = 100, "rad" = 50, "fire" = 60, "acid" = 60) + armor = list("melee" = 30, "bullet" = 40, "laser" = 70, "energy" = 70, "bomb" = 30, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) strip_delay = 600 actions_types = list() @@ -79,8 +143,9 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) hardsuit_type = "cybersun" name = "Cybersun hardsuit" desc = "Prototype hardsuit with experimental armor plates, protecting from laser-based weapons very well, while giving limited protection against anything else. Requires the user to activate the inner mechanism in order to unequip it, making it really difficult to take it off from somebody else." - armor = list("melee" = 25, "bullet" = 25, "laser" = 70, "energy" = 50, "bomb" = 15, "bio" = 100, "rad" = 50, "fire" = 60, "acid" = 60) + armor = list("melee" = 30, "bullet" = 40, "laser" = 70, "energy" = 70, "bomb" = 30, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) strip_delay = 600 + slowdown = 0 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cybersun actions_types = list(/datum/action/item_action/toggle_helmet, /datum/action/item_action/toggle_spacesuit) jetpack = /obj/item/tank/jetpack/suit @@ -123,6 +188,6 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 projectiletype = /obj/projectile/beam/laser - projectilesound = 'sound/weapons/pulse.ogg' + projectilesound = 'sound/weapons/laser.ogg' loot = list(/obj/effect/gibspawner/human) faction = list(ROLE_DEATHSQUAD) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 74ce7c4a371..bdbd2c39cb3 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1258,6 +1258,22 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 8 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //you can't buy it in nuke, because the elite hardsuit costs the same while being better +/datum/uplink_item/suits/hardsuit/cybersun + name = "Cybersun Hardsuit" + desc = "A long forgotten hardsuit made by Cybersun industries. \ + Offers ROBUST protection against laser-based weapons, while still giving somewhat good chances \ + to survive assault from a toolbox or shotgun. \ + Not to mention, it doesn't slow you down and contains an integrated jetpack that runs on standard tanks. \ + Systems in this hardsuit make it really hard to take it off from you." + item = /obj/item/clothing/suit/space/hardsuit/cybersun + cost = 14 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //nuke and clown ops get it for lower value + +/datum/uplink_item/suits/hardsuit/cybersun/nuke + cost = 8 + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list() + /datum/uplink_item/suits/hardsuit/elite name = "Elite Syndicate Hardsuit" desc = "An upgraded, elite version of the Syndicate hardsuit. It features fireproofing, and also \