Persistence Base (A new offstation syndicate map) (Should be ready for test merge) (Ready for review) (#2265)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

https://youtu.be/pPhfOGnLm08?si=QC2BPGd1pcLCXTc7 <- Updated as of 10/28

This pull request provides a replacement map for the interdyne and
dauntless offstation syndicate maps. It is supposed to be themed as a
landcrawler and features several new roles, (~~The comms operative was
removed~~) and the morale officer (The finest of waffle co. here to
enforce ~~managed democracy~~ syndicate interests. The icebox map is the
same size as the former dauntless map, while the new lavaland version is
slightly bigger to support the turrets and energy shielding.

Speaking of, one major feature of the new maps is a double layer of
energy shielding around the maps. This shielding does not recharge and
is intended to take two hits. An explosion naturally can clear both
layers at once and it is intended to prevent destruction by specific
megafauna (colossus) while also stopping miners from getting shot if
they accidentally find the ship. It does not cover the various entrances
and exits so its still worth while to be careful and if need be it
should be easy enough to attack the ship in a pinch.

**Weapon and armor wise, the ship has the following additions and
removals**

- All makarovs in the armory have been removed.
- One renostar shotgun has been removed from the armory
- Each non command crew member and the comms operative starts out with a
weapon selection beacon providing an option between a makrov, m1911,
mini egun, or energy dagger
- Each command officer barring the MAA starts with a weapon beacon
offering a choice between an ansem pistol (on par with an m1911 iirc), a
stechkin APS, or a c-20r.
- The morale officer has an additional selection of a revolver (for
executing dissidents)
- The MAA has a selection between an m-90gl with only rubber grenades
available, a bulldog shotgun, a c-20r, or a hos revolver
- An infiltrator modsuit has been added minus the psi demoralizer for
the corporate liason
- A honkerative modsuit has been added for the morale officer, it comes
preequipped with a waddle module.

**Power supply**

Per request, the ship now features a syndicate unique power source,
FISH! Make sure to pet them.

closes #2386

## Why It's Good For The Game

It has come to my attention that the interdyne offstation map which
spawns on icebox has become outdated due to the fact that it only spawns
on a single map. Rather than let this continue to be an issue I have
elected to standardize the icemoon and lavaland maps to one single map,
both to cut down further efforts of keeping up the offstation syndicate
map, and to provide a map that going forward will have room for updates.
Additionally, the new map will replace the icebox comms outpost, saving
on space for new ruins while improving (hopefully) spawning off the
offstation syndicate.

On one final note, massive mining rigs are cool and the pumpkin spice
must flow.

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Proof Of Testing

See the video linked above

<!-- Compile and run your code locally. Make sure it works. This is the
place to show off your changes! We are not responsible for testing your
features. -->
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

🆑
add: The Persistence land crawler has been deployed to local mineral
rich areas.
/🆑

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

<!-- By opening a pull request. You have read and understood the
repository rules located on the main README.md on this project. -->

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Co-authored-by: nikothedude <simon.prouty@gmail.com>
Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
This commit is contained in:
shellspeed1
2024-11-30 19:52:27 -08:00
committed by GitHub
parent 13bf736aa7
commit 4e35ca4d2f
30 changed files with 58022 additions and 16 deletions
File diff suppressed because it is too large Load Diff
@@ -3046,6 +3046,14 @@
"nr" = (
/turf/closed/wall/r_wall/syndicate,
/area/ruin/space/has_grav/bubbers/dauntless/sec/prison/holding)
"nt" = (
/obj/machinery/button/camkillswitch{
pixel_x = -32;
pixel_y = 26;
req_access = list("syndicate")
},
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/ruin/space/has_grav/bubbers/dauntless/sec/holding)
"nu" = (
/obj/effect/turf_decal/stripes/red/line,
/obj/effect/turf_decal/stripes/red/line{
@@ -3225,6 +3233,10 @@
},
/turf/open/floor/stone,
/area/ruin/space/has_grav/bubbers/dauntless/service/hydro)
"on" = (
/obj/item/assembly/control/camkillswitch/persistence_ext,
/turf/closed/wall/r_wall/syndicate/nodiagonal,
/area/ruin/space/has_grav/bubbers/dauntless/service/dorms)
"oo" = (
/obj/machinery/light/small/red/directional/west,
/turf/open/floor/wood/tile,
@@ -13630,7 +13642,7 @@ RP
dY
pl
HC
RP
on
eI
qr
ux
@@ -14727,7 +14739,7 @@ JZ
Wm
tA
Ku
oZ
nt
VP
ru
HW
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -137,6 +137,7 @@
//BUBBER EDIT START
#define ROLE_DAUNTLESS "Dauntless Syndicate"
#define ROLE_PERSISTENCE "Persistence Syndicate"
#define ROLE_BLOODSUCKER "Bloodsucker"
#define ROLE_VAMPIRICACCIDENT "Bloodsucker (Midround)"
+3
View File
@@ -204,6 +204,9 @@
id = "icemoon_comms_agent"
description = "Radio signals are being detected and the source is this completely innocent pile of snow."
suffix = "icemoon_underground_comms_agent.dmm"
//begin bubber edit
unpickable = TRUE
//end bubber edit
/datum/map_template/ruin/icemoon/underground/syndie_lab
name = "Ice-Ruin Syndicate Lab"
+1 -1
View File
@@ -4,7 +4,7 @@
special_channels = RADIO_SPECIAL_CENTCOM
/obj/item/encryptionkey/headset_syndicate/interdyne
name = "interdyne radio encryption key"
name = "Interdyne radio encryption key"
channels = list(RADIO_CHANNEL_INTERDYNE = 1)
special_channels = RADIO_SPECIAL_CENTCOM
@@ -13,6 +13,7 @@
/area/ruin/syndicate_lava_base, // Interdyne (ice moon)
/area/ruin/space/has_grav/bubbers/dauntless, // SSV Dauntless (lavalands)
/area/ruin/space/has_grav/bubbers/dauntless_space, // SSV Dauntless (space)
/area/ruin/space/has_grav/bubbers/persistance, // Both Persistence maps
))
var/is_syndie_machine = is_type_in_typecache(location_area.loc, syndie_typecache) // If the machine is located within a Syndie tagged area
@@ -0,0 +1,41 @@
//Bioelectric prefileld aquarium for Persistence
/obj/structure/aquarium/bioelec_gen/prefilled
anchored = TRUE
reproduction_and_growth = TRUE
/obj/structure/aquarium/bioelec_gen/prefilled/Initialize(mapload)
. = ..()
new /obj/item/aquarium_prop/sand(src)
new /obj/item/aquarium_prop/seaweed(src)
//They should last a whole shift with this much food unless
reagents.add_reagent(/datum/reagent/consumable/nutriment, 25)
/obj/item/fish/jumpercable/karl
name = "Karl"
desc = "A deadly syndicate monojumper cable saved from the horrors of Nanotrasen by the animal rights consortium. Its been given a new home as a power source for syndicate operations!"
stable_population = 4
random_case_rarity = FISH_RARITY_NOPE
fish_flags = parent_type::fish_flags & ~FISH_FLAG_SHOW_IN_CATALOG
beauty = FISH_BEAUTY_GOOD
compatible_types = list(/obj/item/fish/jumpercable, /obj/item/fish/jumpercable)
/obj/item/fish/jumpercable/karl/carl
name = "Carl"
/obj/item/fish/jumpercable/karl/carly
name = "Carly"
compatible_types = list(/obj/item/fish/jumpercable, /obj/item/fish/jumpercable)
/obj/item/fish/jumpercable/karl/frank
name = "Frank"
/obj/item/storage/fish_case/syndicate/persistence
name = "ominous fish case"
/obj/item/storage/fish_case/syndicate/get_fish_type()
return pick(/obj/item/fish/jumpercable/karl/frank, /obj/item/fish/jumpercable/karl/carly, /obj/item/fish/jumpercable/karl/carl, /obj/item/fish/jumpercable/karl)
@@ -0,0 +1,21 @@
//Modsuits used by offstation syndicate factions
//Infiltrator mod minus the Psi Emitter
/datum/mod_theme/infiltrator/persistence
extended_desc = "Several questions have been raised over the years in regards to the clandestine Infiltrator modular suit. \
Why is the suit blood red despite being a sneaking suit? Why did a movie company of all things develop a stealth suit? \
The simplest answer is that Roseus Galactic hire more than a few eccentric individuals who know more about \
visual aesthetics and prop design than they do functional operative camouflage. But the true reason goes deeper. \
The visual appearance of the suit exemplifies brazen displays of power, not true stealth. However, the suit's inbuilt stealth mechanisms\
prevent anyone from fully recognizing the occupant, only the suit, creating perfect anonymity. \
This one seems to lack the Psi Emitter usually seen in this type of modsuit."
inbuilt_modules = list(/obj/item/mod/module/infiltrator, /obj/item/mod/module/storage/belt)
allowed_suit_storage = list(
/obj/item/restraints/handcuffs,
/obj/item/assembly/flash,
/obj/item/melee/baton,
/obj/item/melee/energy/sword,
/obj/item/shield/energy,
)
@@ -0,0 +1,64 @@
//Various offstation syndicate mapping bits for bubber
/obj/machinery/suit_storage_unit/industrial/bloodredsuit
mod_type = /obj/item/mod/control/pre_equipped/traitor
storage_type = /obj/item/tank/internals/emergency_oxygen/double
mask_type = /obj/item/clothing/mask/gas/syndicate
/obj/machinery/suit_storage_unit/industrial/syndicatemining
suit_type = /obj/item/clothing/suit/hooded/explorer/syndicate
mask_type = /obj/item/clothing/mask/gas/explorer
/obj/machinery/suit_storage_unit/industrial/syndicatecontractor
mod_type = /obj/item/mod/control/pre_equipped/contractor
storage_type = /obj/item/tank/internals/emergency_oxygen/double
mask_type = /obj/item/clothing/mask/gas/syndicate
/obj/machinery/suit_storage_unit/industrial/moraleofficer
mod_type = /obj/item/mod/control/pre_equipped/nuclear/honkerative
storage_type = /obj/item/tank/internals/emergency_oxygen/double
mask_type = /obj/item/clothing/mask/gas/syndicate
/obj/machinery/suit_storage_unit/industrial/commsoperative
mod_type = /obj/item/mod/control/pre_equipped/infiltrator/persistence
storage_type = /obj/item/tank/internals/emergency_oxygen/double
mask_type = /obj/item/clothing/mask/gas/syndicate
//Modsuit loadouts
//morale officer suit
/obj/item/mod/control/pre_equipped/nuclear/honkerative
applied_skin = "honkerative"
theme = /datum/mod_theme/syndicate
starting_frequency = MODLINK_FREQ_SYNDICATE
applied_cell = /obj/item/stock_parts/power_store/cell/hyper
req_access = list(ACCESS_SYNDICATE)
applied_modules = list(
/obj/item/mod/module/storage/syndicate,
/obj/item/mod/module/shock_absorber,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/jetpack,
/obj/item/mod/module/jump_jet,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/hat_stabilizer/syndicate,
/obj/item/mod/module/quick_cuff,
/obj/item/mod/module/waddle,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
/obj/item/mod/module/jetpack,
/obj/item/mod/module/jump_jet,
)
/obj/item/mod/control/pre_equipped/infiltrator/persistence
theme = /datum/mod_theme/infiltrator/persistence
applied_modules = list(
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/quick_carry,
/obj/item/mod/module/visor/diaghud,
/obj/item/mod/module/hat_stabilizer/syndicate,
/obj/item/mod/module/quick_cuff,
)
@@ -0,0 +1,75 @@
//WEAPON CHOICE BEACONS FOR THE PERSISTENCE SHIP
//standard pistol
/obj/item/choice_beacon/syndicateoffstation
name = "Standard Syndicate sidearm beacon"
desc = "A single use beacon to deliver a weapon kit of your choice. Please use this or store it in your safe."
company_source = "Gorlex Marauders"
company_message = span_bold("Supply Pod incoming please stand by")
/obj/item/choice_beacon/syndicateoffstation/generate_display_names()
var/static/list/selectable_gun_types = list(
"Makarov" = /obj/item/storage/toolbox/guncase/skyrat/pistol/opfor/makarov,
"M1911" = /obj/item/storage/toolbox/guncase/skyrat/pistol/opfor/m1911,
"Energy Dagger" = /obj/item/pen/edagger,
"Ansem Pistol Kit" = /obj/item/storage/toolbox/guncase/clandestine,
)
return selectable_gun_types
//engineers kit because the crossbow is funny and will probably end up with them dead
/obj/item/choice_beacon/syndicateoffstation/engineer
name = "Engineering Officer's Syndicate sidearm beacon"
/obj/item/choice_beacon/syndicateoffstation/engineer/generate_display_names()
var/static/list/selectable_gun_types = list(
"Makarov" = /obj/item/storage/toolbox/guncase/skyrat/pistol/opfor/makarov,
"M1911" = /obj/item/storage/toolbox/guncase/skyrat/pistol/opfor/m1911,
"Energy Dagger" = /obj/item/pen/edagger,
"Syndicate Crossbow" = /obj/item/storage/toolbox/guncase/skyrat/opfor/rebar_crossbow,
"Ansem Pistol Kit" = /obj/item/storage/toolbox/guncase/clandestine,
)
return selectable_gun_types
//MAA kit, they get an actual selection of weapons
/obj/item/choice_beacon/syndicateoffstation/maa
name = "Master At Arms Syndicate weapon beacon"
/obj/item/choice_beacon/syndicateoffstation/maa/generate_display_names()
var/static/list/selectable_gun_types = list(
"M90-GL" = /obj/item/storage/toolbox/guncase/m90gl,
"Bulldog" = /obj/item/storage/toolbox/guncase/bulldog,
"Stolen Revolver" = /obj/item/storage/toolbox/guncase/skyrat/hos_revolver,
"Energy Sword" = /obj/item/melee/energy/sword/saber,
)
return selectable_gun_types
/obj/item/choice_beacon/syndicateoffstation/command
name = "Syndicate command staff weapon beacon"
/obj/item/choice_beacon/syndicateoffstation/command/generate_display_names()
var/static/list/selectable_gun_types = list(
"Stechkin APS" = /obj/item/storage/toolbox/guncase/skyrat/pistol/aps,
"Ansem Pistol Kit" = /obj/item/storage/toolbox/guncase/clandestine,
"C-20r SMG" = /obj/item/storage/toolbox/guncase/skyrat/pistol/opfor/c20r,
"Energy Sword" = /obj/item/melee/energy/sword/saber,
)
return selectable_gun_types
/obj/item/choice_beacon/syndicateoffstation/morale
name = "Syndicate Admiral weapon beacon"
/obj/item/choice_beacon/syndicateoffstation/morale/generate_display_names()
var/static/list/selectable_gun_types = list(
"Stechkin APS" = /obj/item/storage/toolbox/guncase/skyrat/pistol/aps,
"Ansem Pistol Kit" = /obj/item/storage/toolbox/guncase/clandestine,
"Energy Sword" = /obj/item/melee/energy/sword/saber,
"Waffle Co. Revolver" = /obj/item/storage/toolbox/guncase/revolver
)
return selectable_gun_types
@@ -0,0 +1,5 @@
//Above Floor FLOOR SAFES
/obj/structure/fireaxecabinet/energy
name = "Energy axe cabinet"
item_path = /obj/item/fireaxe/energy
locked = FALSE
@@ -0,0 +1,26 @@
//Lockers specific to persistence
/obj/structure/closet/secure_closet/interdynefob/sa_locker/persistence
name = "\proper land crawler admiral's locker"
/obj/structure/closet/secure_closet/interdynefob/sa_locker/persistence/PopulateContents()
..()
new /obj/item/storage/bag/garment/station_admiral(src)
new /obj/item/radio/headset/interdyne/command(src)
/obj/structure/closet/secure_closet/persistence/maa_locker
icon_door = "warden"
icon_state = "warden"
name = "master at arms' locker"
req_access = list("syndicate_leader")
/obj/structure/closet/secure_closet/persistence/maa_locker/PopulateContents()
..()
new /obj/item/storage/belt/security/full(src)
new /obj/item/watertank/pepperspray(src)
new /obj/item/storage/bag/garment/master_arms(src)
new /obj/item/radio/headset/interdyne(src)
@@ -0,0 +1,6 @@
//Above Floor FLOOR SAFES
/obj/structure/safe/abovetilefloor
name = "floor safe"
icon_state = "floorsafe"
density = FALSE
layer = LOW_OBJ_LAYER
@@ -76,6 +76,3 @@
trim_state = "trim_ds2admiral"
sechud_icon_state = SECHUD_DS2_ADMIRAL
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SYNDICATE_LEADER)
@@ -13,7 +13,8 @@
suffix = "lavaland_dauntless.dmm"
allow_duplicates = FALSE
never_spawn_with = list(/datum/map_template/ruin/icemoon/bubberstation/syndicate_base)
always_place = TRUE
always_place = FALSE
unpickable = TRUE
/datum/map_template/ruin/space/bubberstation/dauntless
name = "SSV Dauntless (Space)"
@@ -12,5 +12,10 @@
allowed_areas = list(/area/ruin/space/has_grav/bubbers/dauntless/cargo,
/area/ruin/space/has_grav/bubbers/dauntless/engineering,
/area/ruin/space/has_grav/bubbers/dauntless/engineering/turbine,
/area/ruin/space/has_grav/bubbers/persistance/engineering,
/area/ruin/space/has_grav/bubbers/persistance/engineering/atmospherics,
/area/ruin/space/has_grav/bubbers/persistance/engineering/mining,
/area/ruin/space/has_grav/bubbers/persistance/engineering/gas,
/area/ruin/space/has_grav/bubbers/persistance/engineering/utilities
)
area_string = "dauntless"
@@ -1,11 +1,11 @@
/obj/item/implant/interdyne
name = "interdyne implant"
desc = "Welcome to Interdyne Pharmaceutics."
name = "syndicate IFF implant"
desc = "Welcome to the syndicate."
actions_types = null
/obj/item/implant/interdyne/get_data()
return "<b>Implant Specifications:</b><BR> \
<b>Name:</b> Interdyne Pharmaceutics Employee Implant<BR> \
<b>Name:</b> Syndicate IFF system Implant<BR> \
<b>Implant Details:</b> This implant will install a bio-metric signature that will ensure they are not targeted by lethal security devices.<BR>"
/obj/item/implant/interdyne/implant(mob/living/target, mob/user, silent = FALSE, force = FALSE)
@@ -29,11 +29,11 @@
return TRUE
/obj/item/implanter/interdyne
name = "implanter (interdyne)"
name = "implanter (syndicate IFF)"
imp_type = /obj/item/implant/interdyne
/obj/item/implantcase/interdyne
name = "implant case - 'interdyne'"
desc = "A glass case containing a Interdyne Pharmaceutics employee implant. Are you ready to join Interdyne Pharmaceutics, agent?"
name = "implant case - 'Syndicate Identification Friend or Foe'"
desc = "A glass case containing an IFF system implant manufactured by Interdyne Pharmaceutics. These do not work with the IFF systems used by the Gorlex Marauders. Are you ready to join the Syndicate, agent?"
imp_type = /obj/item/implant/interdyne
@@ -185,7 +185,7 @@
//Dauntless Roles
/datum/outfit/dauntless/syndicate
name = "Dauntless Opporative"
name = "Dauntless Operative"
uniform = /obj/item/clothing/under/syndicate/skyrat/tactical
shoes = /obj/item/clothing/shoes/combat
ears = /obj/item/radio/headset/interdyne
@@ -23,7 +23,7 @@
/obj/item/borg/upgrade/syndicate_access/dauntless/examine_more(mob/user)
. = ..()
. += span_notice("This one seems to include a Interdyne communication chip. How neat!")
. += span_notice("This one seems to include an Interdyne communication chip. How neat!")
/obj/item/borg/upgrade/syndicate_access/dauntless/action(mob/living/silicon/robot/R, user)
. = ..()
@@ -10,5 +10,6 @@
suffix = "icemoon_interdyne.dmm"
allow_duplicates = FALSE
never_spawn_with = list(/datum/map_template/ruin/lavaland/bubberstation/dauntless)
always_place = TRUE
always_place = FALSE
unpickable = TRUE
ruin_type = ZTRAIT_ICE_RUINS_UNDERGROUND
@@ -0,0 +1,99 @@
/datum/id_trim/syndicom/bubberstation
//Persistence
/datum/id_trim/syndicom/bubberstation/persistence
assignment = "Persistence Operative"
trim_state = "trim_unknown"
department_color = COLOR_ASSEMBLY_BLACK
subdepartment_color = COLOR_SYNDIE_RED
/datum/id_trim/syndicom/bubberstation/persistence/prisoner
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Hostage"
trim_state = "trim_ds2prisoner"
subdepartment_color = COLOR_MAROON
sechud_icon_state = SECHUD_DS2_PRISONER
access = list(ACCESS_MAINT_TUNNELS) // I can't set it to null without creating a runtime.
/datum/id_trim/syndicom/bubberstation/persistence/syndicatestaff
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence General Staff"
trim_state = "trim_ds2generalstaff"
sechud_icon_state = SECHUD_DS2_GENSTAFF
access = list(ACCESS_SYNDICATE)
/datum/id_trim/syndicom/bubberstation/persistence/janitor
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Sanitation Technician"
trim_state = "trim_ds2generalstaff"
sechud_icon_state = SECHUD_DS2_GENSTAFF
access = list(ACCESS_SYNDICATE)
/datum/id_trim/syndicom/bubberstation/persistence/researcher
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Researcher"
trim_state = "trim_ds2researcher"
sechud_icon_state = SECHUD_DS2_RESEARCHER
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS,ACCESS_RESEARCH,ACCESS_SCIENCE)
/datum/id_trim/syndicom/bubberstation/persistence/engineer
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Engineering Officer"
trim_state = "trim_ds2enginetech"
sechud_icon_state = SECHUD_DS2_ENGINETECH
/datum/id_trim/syndicom/bubberstation/persistence/medicalofficer
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Medical Officer"
trim_state = "trim_ds2medicalofficer"
sechud_icon_state = SECHUD_DS2_DOCTOR
/datum/id_trim/syndicom/bubberstation/persistence/cargo
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Cargo Technician"
trim_state = "trim_ds2miningofficer"
sechud_icon_state = SECHUD_DS2_MININGOFFICER
access = list(ACCESS_SYNDICATE)
/datum/id_trim/syndicom/bubberstation/persistence/masteratarms
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Master At Arms"
trim_state = "trim_ds2masteratarms"
sechud_icon_state = SECHUD_DS2_MASTERATARMS
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SYNDICATE_LEADER)
/datum/id_trim/syndicom/bubberstation/persistence/brigofficer
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Brig Officer"
trim_state = "trim_ds2brigofficer"
sechud_icon_state = SECHUD_DS2_BRIGOFFICER
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SYNDICATE_LEADER)
/datum/id_trim/syndicom/bubberstation/persistence/corporateliasion
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Syndicate Corporate Liaison"
trim_state = "trim_ds2corporateliaison"
sechud_icon_state = SECHUD_DS2_CORPLIAISON
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SYNDICATE_LEADER)
/datum/id_trim/syndicom/bubberstation/persistence/rigmanager
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Admiral"
trim_state = "trim_ds2admiral"
sechud_icon_state = SECHUD_DS2_ADMIRAL
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS, ACCESS_SYNDICATE_LEADER)
/datum/id_trim/syndicom/bubberstation/persistence/moraleofficer
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence Morale Officer"
trim_state = "trim_clown"
sechud_icon_state = SECHUD_CLOWN
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
/datum/id_trim/syndicom/bubberstation/persistence/assistant
trim_icon = 'modular_skyrat/master_files/icons/obj/card.dmi'
assignment = "Persistence off duty staff"
trim_state = "DS-2 General Staff"
sechud_icon_state = SECHUD_CLOWN
access = list(ACCESS_SYNDICATE, ACCESS_ROBOTICS)
@@ -0,0 +1,232 @@
// Persistance Areas - Lavaland
/area/ruin/space/has_grav/bubbers/persistance
name = "SSV Persistence"
icon = 'icons/area/areas_centcom.dmi'
icon_state = "syndie-ship"
outdoors = FALSE
ignore_weather_sfx = TRUE
// Cargo
/area/ruin/space/has_grav/bubbers/persistance/cargo
name = "Persistence Hangarbay"
sound_environment = SOUND_AREA_LARGE_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/cargo/dispoals
name = "Persistence Dispoals System"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/cargo/drone
name = "Persistence Long Range Monitoring and Drone Deployment"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/cargo/mining
name = "Persistance Mining Equipment Room"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
// Engineering
/area/ruin/space/has_grav/bubbers/persistance/engineering
name = "Persistence Engineering Bay"
/area/ruin/space/has_grav/bubbers/persistance/engineering/atmospherics
name = "Persistence Atmospherics Room"
/area/ruin/space/has_grav/bubbers/persistance/engineering/mining
name = "Persistence Bluespace Mining"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/engineering/gas
name = "Persistence Gas Harvesting and Storage"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/engineering/utilities
name = "Persistence Utilities System"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
// Service - Recreation
/area/ruin/space/has_grav/bubbers/persistance/service
name = "Main Hall"
/area/ruin/space/has_grav/bubbers/persistance/evac
name = "Persistence Evacuation Capsule Bay"
/area/ruin/space/has_grav/bubbers/persistance/service/diner
name = "Persistence Diner"
mood_bonus = 3
mood_message = "I love being in the diner!"
/area/ruin/space/has_grav/bubbers/persistance/service/kitchen
name = "Persistence Kitchen"
/area/ruin/space/has_grav/bubbers/persistance/service/freezer
name = "Persistence Kitchen Freezer"
/area/ruin/space/has_grav/bubbers/persistance/service/hydro
name = "Persistence Hydroponics"
/area/ruin/space/has_grav/bubbers/persistance/service/shower
name = "Persistence Crew Showers"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/service/lockers
name = "Persistence Locker Room"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/service/gym
name = "Persistence Gym"
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
/area/ruin/space/has_grav/bubbers/persistance/service/lounge
name = "Persistence Lounge"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
mood_bonus = 5
mood_message = "I feel at ease here."
/area/ruin/space/has_grav/bubbers/persistance/service/janitorial
name = "Persistence Janitor Storage"
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
/area/ruin/space/has_grav/bubbers/persistance/service/salon
name = "Persistence Salon"
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
/area/ruin/space/has_grav/bubbers/persistance/service/sauna
name = "Persistence Sauna"
mood_bonus = 5
mood_message = "This place is quite relaxing."
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
//dorms
/area/ruin/space/has_grav/bubbers/persistance/service/dorms
name = "Persistence Dormitories"
mood_bonus = 5
mood_message = "I feel at ease here."
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/engineering
name = "Persistence Engineering Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/science
name = "Persistence Researcher Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/chef
name = "Persistence Bartender Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/janitor
name = "Persistence Sanitation Technician Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/cargo
name = "Persistence Quarter Master Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/liason
name = "Persistence Corporate Liason Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/assistant
name = "Persistence Assistant"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/morale
name = "Persistence Morale Officer Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/maa
name = "Persistence Master At Arms Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/brig
name = "Persistence Brig Officer Quarters"
/area/ruin/space/has_grav/bubbers/persistance/service/dorms/medical
name = "Persistence Medical Officer Quarters"
// Science
/area/ruin/space/has_grav/bubbers/persistance/sci
name = "Persistence Science"
/area/ruin/space/has_grav/bubbers/persistance/sci/rnd
name = "Persistence Experimentation Lab"
/area/ruin/space/has_grav/bubbers/persistance/sci/robotics
name = "Persistence Robotics Lab"
/area/ruin/space/has_grav/bubbers/persistance/sci/ordnance
name = "Persistence Ordnance Lab"
/area/ruin/space/has_grav/bubbers/persistance/sci/xenobio
name = "Persistence Xenobiology Lab"
/area/ruin/space/has_grav/bubbers/persistance/sci/xenoarchology
name = "Persistence Archology Lab"
// Medical
/area/ruin/space/has_grav/bubbers/persistance/med
name = "Persistence Medical"
/area/ruin/space/has_grav/bubbers/persistance/med/treatment
name = "Persistence Treatment Bay"
/area/ruin/space/has_grav/bubbers/persistance/med/storage
name = "Persistence Medical Storage"
/area/ruin/space/has_grav/bubbers/persistance/med/chem
name = "Persistence Chemistry Lab"
/area/ruin/space/has_grav/bubbers/persistance/med/viro
name = "Persistence Virology Lab"
/area/ruin/space/has_grav/bubbers/persistance/command
name = "Persistence Command"
/area/ruin/space/has_grav/bubbers/persistance/command/bridge
name = "Persistence Bridge"
/area/ruin/space/has_grav/bubbers/persistance/command/admiral
name = "Persistence Office"
/area/ruin/space/has_grav/bubbers/persistance/command/liason
name = "Corporate Liason Office"
/area/ruin/space/has_grav/bubbers/persistance/command/vault
name = "High Security Vault"
/area/ruin/space/has_grav/bubbers/persistance/command/maa
name = "Master At Arms Office"
//Security - Prison
/area/ruin/space/has_grav/bubbers/persistance/sec
name = "Persistence Security"
/area/ruin/space/has_grav/bubbers/persistance/sec/brigentrance
name = "Persistence Brig Desk and Cell"
/area/ruin/space/has_grav/bubbers/persistance/sec/holding
name = "Holding Cells"
/area/ruin/space/has_grav/bubbers/persistance/sec/armory
name = "Persistence Armory"
/area/ruin/space/has_grav/bubbers/persistance/sec/interrogation
name = "Interrogation and Solutions"
/area/ruin/space/has_grav/bubbers/persistance/sec/prison // Prison
name = "Persistence General Population"
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
/area/ruin/space/has_grav/bubbers/persistance/sec/prison/holding
name = "Isolation Cell"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/ruin/space/has_grav/bubbers/persistance/sec/prison/rec
name = "Prisoner Privlages Room"
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
/area/ruin/space/has_grav/bubbers/persistance/sec/prison/shower
name = "Prison Showers"
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/datum/weather/rad_storm/New()
. = ..()
protected_areas += /area/ruin/space/has_grav/bubbers/persistance
@@ -0,0 +1,5 @@
/obj/machinery/computer/security/persistence
name = "persistence camera console"
desc = "Used to access the various cameras on the Persistence."
network = list("persistence_ext","persistence_xeno")
circuit = null
@@ -0,0 +1,23 @@
/obj/item/assembly/control/camkillswitch/persistence
name = "persistence interior camera network kill switch"
camera_network = "persistence"
/obj/item/assembly/control/camkillswitch/persistence_xeno
name = "persistence xenobiology camera network kill switch"
camera_network = "persistence_xeno"
/obj/item/assembly/control/camkillswitch/persistence_ext
name = "persistence exterior camera network kill switch"
camera_network = "persistence_ext"
/obj/machinery/button/camkillswitch/persistence
name = "Persistence interior camera kill switch"
device_type = /obj/item/assembly/control/camkillswitch
/obj/machinery/button/camkillswitch/persistence_xeno
name = "Persistence xenobiology camera kill switch"
device_type = /obj/item/assembly/control/camkillswitch/persistence_xeno
/obj/machinery/button/camkillswitch/persistence_ext
name = "persistence exterior camera network kill switch"
device_type = /obj/item/assembly/control/camkillswitch/persistence_ext
@@ -0,0 +1,20 @@
/datum/map_template/ruin/icemoon/bubberstation/syndicate_crawler
name = "Syndicate Ice Moon Land Crawler"
id = "ice-crawler"
description = "A syndicate mining operation used to mine materials in spite of NT claims. Also setup to provide agent support and comms monitoring"
suffix = "icemoon_persistence.dmm"
allow_duplicates = FALSE
never_spawn_with = list(/datum/map_template/ruin/lavaland/bubberstation/dauntless,
/datum/map_template/ruin/lavaland/bubberstation/syndicate_crawler)
always_place = TRUE
ruin_type = ZTRAIT_ICE_RUINS_UNDERGROUND
/datum/map_template/ruin/lavaland/bubberstation/syndicate_crawler
name = "Syndicate Lavaland Land Crawler"
id = "lava-crawler"
description = "A syndicate mining operation used to mine materials in spite of NT claims. Also setup to provide agent support and comms monitoring"
suffix = "lavaland_persistence.dmm"
allow_duplicates = FALSE
never_spawn_with = list(/datum/map_template/ruin/lavaland/bubberstation/dauntless,
/datum/map_template/ruin/icemoon/bubberstation/syndicate_crawler)
always_place = TRUE
@@ -0,0 +1,13 @@
// Dauntless AI Laws
/obj/item/ai_module/core/full/persistence
name = "'Persistence' Core Module"
law_id = "persistence"
/datum/ai_laws/persistence
name = "Persistence"
id = "persistence"
inherent = list("Operations: You are on a secret Syndicate Spy Vessel. Preserve the Persistence and its crew while maintaining the secrecy of the true nature of its operation from outside forces.",
"Prioritize: Carry out orders as directed by Persistence operatives according to rank and role.",
"Survive: Your secrecy must be maintained. Do not allow external tampering or damage to your equipment."
)
@@ -0,0 +1,330 @@
/datum/job/persistence // Job Define
title = ROLE_PERSISTENCE
policy_index = ROLE_PERSISTENCE
akula_outfit = /datum/outfit/akula
antagonist_restricted = TRUE
// Persistence mining rig Ghost Spawners
/obj/effect/mob_spawn/ghost_role/human/persistence
name = "Persistence Personnel"
use_outfit_name = TRUE
icon = 'icons/obj/machines/sleeper.dmi'
icon_state = "sleeper_s"
prompt_name = "Persistence Personnel"
you_are_text = "You are a Syndicate operative, employed as part of a crew aboard a landcrawler. Your mission objectives are to harvest materials, build outposts, produce goods, andv advance the interests of your company"
flavour_text = "You have been deployed into enemy territory. Continue working the best you can, and keep a low profile"
quirks_enabled = TRUE
random_appearance = FALSE
loadout_enabled = TRUE
computer_area = /area/ruin/space/has_grav/bubbers/persistance/service/lockers
spawner_job_path = /datum/job/persistence
/// If true, this spawner will give it's target exploitables access.
var/give_exploitables = TRUE
/obj/effect/mob_spawn/ghost_role/human/persistence/special(mob/living/spawned_mob, mob/mob_possessor)
. = ..()
if (give_exploitables)
spawned_mob.mind?.has_exploitables_override = TRUE
spawned_mob.mind?.handle_exploitables_menu()
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate
name = "Syndicate Operative"
prompt_name = "a Syndicate Operative"
you_are_text = "you are an Operative assigned to the Syndicate Land Crawler Persistence, employed onboard for reasons that are yours"
flavour_text = "The jointly managed Persistence mining rig has been assigned to stealthly monitor Nanotrasen assets. Your orders are to maintain the ship's integrity, perform you duties and keep a low profile while maintaing your front as a mining operation."
important_text = "You are NOT an antagonist and the round does not center the Persistence. You MUST submit an Opfor or Adminhelp when escalating against the station and its crew"
outfit = /datum/outfit/persistence/syndicate
/obj/effect/mob_spawn/ghost_role/human/persistence/command
name = "Syndicate Command Operative"
prompt_name = "a Syndicate leader"
you_are_text = "you are a Syndicate Command Operative assigned to lead the SSV Persistence and guide it forward in its goals"
flavour_text = "The jointly managed Persistence mining rig has been assigned to stealthly monitor Nanotrasen assets under the cover of a legal mining operation Your orders are help lead the Persistence while ensuring a low profile is maintained."
important_text = "You are a command role and maintained at a higher standard. You are NOT an antagonist and the round does not center around the Persistence. You MUST submit an Opfor or Adminhelp when escalating against the station and its crew"
outfit = /datum/outfit/persistence/command
/obj/effect/mob_spawn/ghost_role/human/persistence/prisoner
name = "Syndicate Hostage"
prompt_name = "a Syndicate hostage"
you_are_text = "You are a hostage onboard an unknown vessel"
flavour_text = "Unaware of where you are, all you know is you are a prisoner. The plastitanium should clue you into who your captors are... as for why you're here? That's for you to know, and for us to find out."
important_text = "You are not an antagonist. You are still bound to the Roleplay Rules regarding escalation. Syndicate personnel can throw you into lava or plasma outside if you antagonize them."
outfit = /datum/outfit/persistence/prisoner
computer_area = /area/ruin/space/has_grav/bubbers/persistance/sec/prison
give_exploitables = FALSE
// crew spawners
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/service
outfit = /datum/outfit/persistence/syndicate/service
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/janitor
outfit = /datum/outfit/persistence/syndicate/janitor
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/enginetech
outfit = /datum/outfit/persistence/syndicate/enginetech
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/researcher
outfit = /datum/outfit/persistence/syndicate/researcher
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/stationmed
outfit = /datum/outfit/persistence/syndicate/stationmed
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/brigoff
outfit = /datum/outfit/persistence/syndicate/brigoff
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/quartermaster
outfit = /datum/outfit/persistence/syndicate/quartermaster
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/moraleofficer
outfit = /datum/outfit/persistence/syndicate/moraleofficer
//command spawners
/obj/effect/mob_spawn/ghost_role/human/persistence/command/masteratarms
outfit = /datum/outfit/persistence/command/masteratarms
/obj/effect/mob_spawn/ghost_role/human/persistence/command/corporateliaison
outfit = /datum/outfit/persistence/command/corporateliaison
/obj/effect/mob_spawn/ghost_role/human/persistence/command/admiral
outfit = /datum/outfit/persistence/command/admiral
// Codespeak Granter
/obj/effect/mob_spawn/ghost_role/human/persistence/syndicate/special(mob/living/new_spawn)
. = ..()
new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_SPAWNER)
/obj/effect/mob_spawn/ghost_role/human/persistence/command/special(mob/living/new_spawn)
. = ..()
new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_SPAWNER)
// Outfits --------------
/datum/outfit/persistence
name = "Persistence"
/datum/outfit/persistence/post_equip(mob/living/carbon/human/syndicate, visualsOnly = FALSE)
var/obj/item/card/id/id_card = syndicate.wear_id
if(istype(id_card))
id_card.registered_name = syndicate.real_name
id_card.update_label()
id_card.update_icon()
syndicate.apply_pref_name(/datum/preference/name/syndicate, syndicate.client)
handlebank(syndicate)
return ..()
//Persistence Hostage
/datum/outfit/persistence/prisoner
name = "Persistence Syndicate Prisoner"
uniform = /obj/item/clothing/under/rank/prisoner/syndicate
shoes = /obj/item/clothing/shoes/sneakers/crimson
id = /obj/item/card/id/advanced/prisoner/ds2
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/prisoner
//Persistence Roles
/datum/outfit/persistence/syndicate
name = "Persistence Operative"
uniform = /obj/item/clothing/under/syndicate/skyrat/tactical
shoes = /obj/item/clothing/shoes/combat
ears = /obj/item/radio/headset/interdyne
back = /obj/item/storage/backpack
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/choice_beacon/syndicateoffstation = 1,
)
id = /obj/item/card/id/advanced/black
implants = list(/obj/item/implant/weapons_auth)
id_trim = /datum/id_trim/syndicom/bubberstation/dauntless
/datum/outfit/persistence/syndicate/service
name = "Persistence General Staff"
uniform = /obj/item/clothing/under/syndicate/skyrat/tactical
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/syndicatestaff
back = /obj/item/storage/backpack/satchel
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/sharpener = 1,
/obj/item/choice_beacon/syndicateoffstation = 1,
)
suit = /obj/item/clothing/suit/apron/chef
head = /obj/item/clothing/head/soft/mime
/datum/outfit/persistence/syndicate/janitor
name = "Persistence Sanitation Technician"
uniform = /obj/item/clothing/under/syndicate/skyrat/tactical
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/janitor
back = /obj/item/storage/backpack/satchel
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/choice_beacon/syndicateoffstation = 1,
/obj/item/soap/syndie = 1,
)
belt = /obj/item/storage/belt/janitor/full
/datum/outfit/persistence/syndicate/enginetech
name = "Persistence Engineer"
uniform = /obj/item/clothing/under/syndicate/skyrat/overalls
head = /obj/item/clothing/head/soft/sec/syndicate
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/choice_beacon/syndicateoffstation/engineer = 1,
)
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/engineer
glasses = /obj/item/clothing/glasses/welding/up
belt = /obj/item/storage/belt/utility/syndicate
gloves = /obj/item/clothing/gloves/combat
/datum/outfit/persistence/syndicate/researcher
name = "Persistence Researcher"
uniform = /obj/item/clothing/under/rank/rnd/scientist/skyrat/utility/syndicate
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/researcher
suit = /obj/item/clothing/suit/toggle/labcoat/science
glasses = /obj/item/clothing/glasses/sunglasses/chemical
gloves = /obj/item/clothing/gloves/color/black
back = /obj/item/storage/backpack/satchel
belt = /obj/item/storage/belt/utility/syndicate
/datum/outfit/persistence/syndicate/stationmed
name = "Persistence Medical Officer"
uniform = /obj/item/clothing/under/syndicate/scrubs
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/medicalofficer
suit = /obj/item/clothing/suit/toggle/labcoat/interdyne
belt = /obj/item/storage/belt/medical/paramedic
gloves = /obj/item/clothing/gloves/latex/nitrile/ntrauma
back = /obj/item/storage/backpack/satchel
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/storage/medkit/surgery = 1,
/obj/item/choice_beacon/syndicateoffstation = 1,
)
/datum/outfit/persistence/syndicate/brigoff
name = "Persistence Brig Officer"
uniform = /obj/item/clothing/under/syndicate/combat
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/brigofficer
gloves = /obj/item/clothing/gloves/tackler/combat/insulated
suit = /obj/item/clothing/suit/armor/bulletproof/old
back = /obj/item/storage/backpack/security/redsec
backpack_contents = list(
/obj/item/flashlight/seclite = 1,
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/choice_beacon/syndicateoffstation = 1,
)
head = /obj/item/clothing/head/helmet/swat/ds
glasses = /obj/item/clothing/glasses/hud/security/sunglasses/redsec
mask = /obj/item/clothing/mask/gas/syndicate
ears = /obj/item/radio/headset/interdyne
/datum/outfit/persistence/syndicate/quartermaster
name = "Persistence Cargo Tech"
uniform = /obj/item/clothing/under/syndicate/skyrat/overalls
belt = /obj/item/storage/bag/ore
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/cargo
gloves = /obj/item/clothing/gloves/tackler/combat/insulated
suit = /obj/item/clothing/suit/armor/bulletproof/old
back = /obj/item/storage/backpack/satchel/explorer
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/knife/combat/survival = 1,
/obj/item/t_scanner/adv_mining_scanner/lesser = 1,
/obj/item/gun/energy/recharge/kinetic_accelerator = 1,
/obj/item/choice_beacon/syndicateoffstation = 1,
)
mask = /obj/item/clothing/mask/gas/syndicate
ears = /obj/item/radio/headset/interdyne
l_pocket = /obj/item/card/mining_point_card
r_pocket = /obj/item/mining_voucher
head = /obj/item/clothing/head/soft/black
/datum/outfit/persistence/syndicate/moraleofficer
name = "Persistence Morale Officer"
uniform = /obj/item/clothing/under/syndicate/sniper
head = /obj/item/clothing/head/fedora
shoes = /obj/item/clothing/shoes/laceup
back = /obj/item/storage/backpack/satchel
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/moraleofficer
mask = /obj/item/clothing/mask/gas/clown_hat
//gives syndicate role so turrets don't shoot operative
/datum/outfit/persistence/syndicate/post_equip(mob/living/carbon/human/syndicate)
syndicate.faction |= ROLE_SYNDICATE
return ..()
// Dauntless Command
/datum/outfit/persistence/command
name = "Persistence Command Operative"
uniform = /obj/item/clothing/under/syndicate/skyrat/tactical
shoes = /obj/item/clothing/shoes/combat
ears = /obj/item/radio/headset/interdyne/command
back = /obj/item/storage/backpack
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/choice_beacon/syndicateoffstation/command = 1,
)
id = /obj/item/card/id/advanced/black
implants = list(/obj/item/implant/weapons_auth)
id_trim = /datum/id_trim/syndicom/bubberstation/dauntless
/datum/outfit/persistence/command/masteratarms
name = "Persistence Master At Arms"
uniform = /obj/item/clothing/under/syndicate/combat
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/masteratarms
gloves = /obj/item/clothing/gloves/tackler/combat/insulated
suit = /obj/item/clothing/suit/armor/vest/warden/syndicate
glasses = /obj/item/clothing/glasses/hud/security/sunglasses/redsec
back = /obj/item/storage/backpack/satchel/sec/redsec
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/choice_beacon/syndicateoffstation/maa =1,
)
head = /obj/item/clothing/head/hats/hos/beret/syndicate
r_pocket = /obj/item/flashlight/seclite
implants = list(
/obj/item/implant/weapons_auth,
/obj/item/implant/krav_maga
)
/datum/outfit/persistence/command/corporateliaison
name = "Persistence Corporate Liasion"
uniform = /obj/item/clothing/under/syndicate/sniper
head = /obj/item/clothing/head/fedora
shoes = /obj/item/clothing/shoes/laceup
back = /obj/item/storage/backpack/satchel
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/corporateliasion
/datum/outfit/persistence/command/admiral
name = "Rig Admiral"
uniform = /obj/item/clothing/under/rank/captain/skyrat/utility/syndicate
suit = /obj/item/clothing/suit/armor/vest/capcarapace/syndicate
back = /obj/item/storage/backpack/satchel
backpack_contents = list(
/obj/item/storage/box/survival = 1,
/obj/item/crowbar = 1,
/obj/item/choice_beacon/syndicateoffstation/morale = 1,
)
head = /obj/item/clothing/head/hats/hos/cap/syndicate
id = /obj/item/card/id/advanced/gold/generic
id_trim = /datum/id_trim/syndicom/bubberstation/persistence/rigmanager
//gives syndicate role so turrets don't shoot operatives
/datum/outfit/persistence/command/post_equip(mob/living/carbon/human/syndicate)
syndicate.faction |= ROLE_SYNDICATE
return ..()
+14
View File
@@ -9315,7 +9315,14 @@
#include "modular_zubbers\code\modules\surgery\organs\external\wings.dm"
#include "modular_zubbers\code\modules\surgery\organs\internal\eyes\_eyes.dm"
#include "modular_zubbers\code\modules\surgery\organs\internal\lungs\_lungs.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\Aquarium\bioelectric_prefilled.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\code\misc-fluff\research.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\equipment_items\mod_types.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\equipment_items\suitstorage.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\selection_beacons\weapon_redemption.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\fireaxe.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\lockers.dm"
#include "modular_zubbers\code\modules\syndicate_offstation\storage\safe.dm"
#include "modular_zubbers\code\modules\tarkon\code\misc-fluff\research.dm"
#include "modular_zubbers\code\modules\taur_mechanics\serpentine_taur.dm"
#include "modular_zubbers\code\modules\title_screen\code\title_screen_subsystem.dm"
@@ -9381,6 +9388,13 @@
#include "modular_zubbers\maps\offstation\dauntless\security.dm"
#include "modular_zubbers\maps\offstation\interdyne\area.dm"
#include "modular_zubbers\maps\offstation\interdyne\code.dm"
#include "modular_zubbers\maps\offstation\persistence\area.dm"
#include "modular_zubbers\maps\offstation\persistence\camera.dm"
#include "modular_zubbers\maps\offstation\persistence\camerabutton.dm"
#include "modular_zubbers\maps\offstation\persistence\code.dm"
#include "modular_zubbers\maps\offstation\persistence\ID_trims.dm"
#include "modular_zubbers\maps\offstation\persistence\laws.dm"
#include "modular_zubbers\maps\offstation\persistence\mob_spawns.dm"
#include "modular_zubbers\master_files\code\controllers\subsystem\id_access.dm"
#include "modular_zubbers\master_files\code\controllers\subsystem\tts.dm"
#include "modular_zubbers\master_files\code\datums\announcers\default_announcer.dm"