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 \