mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 15:17:01 +01:00
+37






![tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>](/assets/img/avatar_default.png)


Alexis
GitHub
tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com>
ArcaneMusic
MrMelbert
Rhials
rageguy505
LemonInTheDark
John Willard
Aliceee2ch
Time-Green
Tsar-Salat
SmArtKar
Maxipat
SyncIt21
deltanedas
SimplyLogan
loganuk
Leland Kemble
FalloutFalcon
Roxy
Lucy
siliconOpossum
Isratosh
TheRyeGuyWhoWillNowDie
Neocloudy
Alexander V.
ElGitificador
Twaticus
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bloop
Cameron Lennox
Tim
Iamgoofball
Layzu666
Arturlang
_0Steven
mrmanlikesbt
Ben10Omintrix
John F. Kennedy
Cursor
Josh
Josh Powell
Yobrocharlie
Hardly3D
shayoki
LT3
21b4095dfd
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
442 lines
18 KiB
Plaintext
442 lines
18 KiB
Plaintext
#define PARTY_COOLDOWN_LENGTH_MIN (6 MINUTES)
|
|
#define PARTY_COOLDOWN_LENGTH_MAX (12 MINUTES)
|
|
|
|
/datum/station_trait/lucky_winner
|
|
name = "Lucky winner"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 1
|
|
show_in_report = TRUE
|
|
report_message = "Your station has won the grand prize of the annual station charity event. Free snacks will be delivered to the bar every now and then."
|
|
trait_processes = TRUE
|
|
COOLDOWN_DECLARE(party_cooldown)
|
|
|
|
/datum/station_trait/lucky_winner/on_round_start()
|
|
. = ..()
|
|
COOLDOWN_START(src, party_cooldown, rand(PARTY_COOLDOWN_LENGTH_MIN, PARTY_COOLDOWN_LENGTH_MAX))
|
|
|
|
/datum/station_trait/lucky_winner/process(seconds_per_tick)
|
|
if(!COOLDOWN_FINISHED(src, party_cooldown))
|
|
return
|
|
|
|
COOLDOWN_START(src, party_cooldown, rand(PARTY_COOLDOWN_LENGTH_MIN, PARTY_COOLDOWN_LENGTH_MAX))
|
|
|
|
var/pizza_type_to_spawn = pick(list(
|
|
/obj/item/pizzabox/margherita,
|
|
/obj/item/pizzabox/mushroom,
|
|
/obj/item/pizzabox/meat,
|
|
/obj/item/pizzabox/vegetable,
|
|
/obj/item/pizzabox/pineapple
|
|
))
|
|
|
|
var/area/bar_area = pick(GLOB.bar_areas)
|
|
podspawn(list(
|
|
"target" = pick(bar_area.contents),
|
|
"path" = /obj/structure/closet/supplypod/centcompod,
|
|
"spawn" = list(
|
|
pizza_type_to_spawn,
|
|
/obj/item/reagent_containers/cup/glass/bottle/beer = 6
|
|
)
|
|
))
|
|
|
|
#undef PARTY_COOLDOWN_LENGTH_MIN
|
|
#undef PARTY_COOLDOWN_LENGTH_MAX
|
|
|
|
/datum/station_trait/galactic_grant
|
|
name = "Galactic grant"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
show_in_report = TRUE
|
|
report_message = "Your station has been selected for a special grant. Some extra funds has been made available to your cargo department."
|
|
|
|
/datum/station_trait/galactic_grant/on_round_start()
|
|
var/datum/bank_account/cargo_bank = SSeconomy.get_dep_account(ACCOUNT_CAR)
|
|
cargo_bank.adjust_money(rand(2000, 5000))
|
|
|
|
/datum/station_trait/premium_internals_box
|
|
name = "Premium internals boxes"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
show_in_report = TRUE
|
|
report_message = "The internals boxes for your crew have been upsized and filled with bonus equipment."
|
|
trait_to_give = STATION_TRAIT_PREMIUM_INTERNALS
|
|
|
|
/datum/station_trait/bountiful_bounties
|
|
name = "Bountiful bounties"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
cost = STATION_TRAIT_COST_LOW
|
|
show_in_report = TRUE
|
|
report_message = "It seems collectors in this system are extra keen to on bounties, and will pay more to see their completion."
|
|
|
|
/datum/station_trait/bountiful_bounties/on_round_start()
|
|
SSeconomy.bounty_modifier *= 1.2
|
|
|
|
///A positive station trait that scatters a bunch of lit glowsticks throughout maintenance
|
|
/datum/station_trait/glowsticks
|
|
name = "Glowsticks party"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 2
|
|
show_in_report = TRUE
|
|
report_message = "We've glowsticks upon glowsticks to spare, so we scattered some around maintenance (plus a couple floor lights)."
|
|
|
|
/datum/station_trait/glowsticks/New()
|
|
..()
|
|
RegisterSignal(SSticker, COMSIG_TICKER_ENTER_PREGAME, PROC_REF(on_pregame))
|
|
|
|
/datum/station_trait/glowsticks/proc/on_pregame(datum/source)
|
|
SIGNAL_HANDLER
|
|
INVOKE_ASYNC(src, PROC_REF(light_up_the_night))
|
|
|
|
/datum/station_trait/glowsticks/proc/light_up_the_night()
|
|
var/list/glowsticks = list(
|
|
/obj/item/flashlight/glowstick,
|
|
/obj/item/flashlight/glowstick/red,
|
|
/obj/item/flashlight/glowstick/blue,
|
|
/obj/item/flashlight/glowstick/cyan,
|
|
/obj/item/flashlight/glowstick/orange,
|
|
/obj/item/flashlight/glowstick/yellow,
|
|
/obj/item/flashlight/glowstick/pink,
|
|
)
|
|
for(var/area/station/maintenance/maint in GLOB.areas)
|
|
var/list/turfs = get_area_turfs(maint)
|
|
for(var/i in 1 to round(length(turfs) * 0.115))
|
|
CHECK_TICK
|
|
var/turf/open/chosen = pick_n_take(turfs)
|
|
if(!istype(chosen))
|
|
continue
|
|
var/skip_this = FALSE
|
|
for(var/atom/movable/mov as anything in chosen) //stop glowing sticks from spawning on windows
|
|
if(mov.density && !(mov.pass_flags_self & LETPASSTHROW))
|
|
skip_this = TRUE
|
|
break
|
|
if(skip_this)
|
|
continue
|
|
if(prob(3.4)) ///Rare, but this is something that can survive past the lifespawn of glowsticks.
|
|
new /obj/machinery/light/floor(chosen)
|
|
continue
|
|
var/stick_type = pick(glowsticks)
|
|
var/obj/item/flashlight/glowstick/stick = new stick_type(chosen, rand(10, 45))
|
|
///we want a wider range, otherwise they'd all burn out in about 20 minutes.
|
|
stick.turn_on()
|
|
|
|
/datum/station_trait/strong_supply_lines
|
|
name = "Strong supply lines"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
show_in_report = TRUE
|
|
report_message = "Prices are low in this system, BUY BUY BUY!"
|
|
blacklist = list(/datum/station_trait/distant_supply_lines)
|
|
|
|
/datum/station_trait/strong_supply_lines/on_round_start()
|
|
SSeconomy.pack_price_modifier *= 0.8
|
|
|
|
/datum/station_trait/filled_maint
|
|
name = "Filled up maintenance"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
cost = STATION_TRAIT_COST_LOW
|
|
show_in_report = TRUE
|
|
report_message = "Our workers accidentally forgot more of their personal belongings in the maintenance areas."
|
|
blacklist = list(/datum/station_trait/empty_maint)
|
|
trait_to_give = STATION_TRAIT_FILLED_MAINT
|
|
|
|
// This station trait is checked when loot drops initialize, so it's too late
|
|
can_revert = FALSE
|
|
|
|
/datum/station_trait/quick_shuttle
|
|
name = "Quick Shuttle"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
show_in_report = TRUE
|
|
report_message = "Due to proximity to our supply station, the cargo shuttle will have a quicker flight time to your cargo department."
|
|
blacklist = list(/datum/station_trait/slow_shuttle)
|
|
|
|
/datum/station_trait/quick_shuttle/on_round_start()
|
|
. = ..()
|
|
SSshuttle.supply.callTime *= 0.5
|
|
|
|
/datum/station_trait/deathrattle_department
|
|
name = "deathrattled department"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
show_in_report = TRUE
|
|
abstract_type = /datum/station_trait/deathrattle_department
|
|
blacklist = list(/datum/station_trait/deathrattle_all)
|
|
|
|
var/department_to_apply_to
|
|
var/department_name = "department"
|
|
var/datum/deathrattle_group/deathrattle_group
|
|
|
|
/datum/station_trait/deathrattle_department/New()
|
|
. = ..()
|
|
deathrattle_group = new("[department_name] group")
|
|
blacklist += subtypesof(/datum/station_trait/deathrattle_department) - type //All but ourselves
|
|
report_message = "All members of [department_name] have received an implant to notify each other if one of them dies. This should help improve job-safety!"
|
|
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn))
|
|
|
|
|
|
/datum/station_trait/deathrattle_department/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
|
|
SIGNAL_HANDLER
|
|
|
|
if(!(job.departments_bitflags & department_to_apply_to))
|
|
return
|
|
|
|
var/obj/item/implant/deathrattle/implant_to_give = new()
|
|
deathrattle_group.register(implant_to_give)
|
|
implant_to_give.implant(spawned, spawned, TRUE, TRUE)
|
|
|
|
|
|
/datum/station_trait/deathrattle_department/service
|
|
name = "Deathrattled Service"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_SERVICE
|
|
department_name = "Service"
|
|
|
|
/datum/station_trait/deathrattle_department/cargo
|
|
name = "Deathrattled Cargo"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_CARGO
|
|
department_name = "Cargo"
|
|
|
|
/datum/station_trait/deathrattle_department/engineering
|
|
name = "Deathrattled Engineering"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_ENGINEERING
|
|
department_name = "Engineering"
|
|
|
|
/datum/station_trait/deathrattle_department/command
|
|
name = "Deathrattled Command"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_COMMAND
|
|
department_name = "Command"
|
|
|
|
/datum/station_trait/deathrattle_department/science
|
|
name = "Deathrattled Science"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_SCIENCE
|
|
department_name = "Science"
|
|
|
|
/datum/station_trait/deathrattle_department/security
|
|
name = "Deathrattled Security"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_SECURITY
|
|
department_name = "Security"
|
|
|
|
/datum/station_trait/deathrattle_department/medical
|
|
name = "Deathrattled Medical"
|
|
weight = 1
|
|
department_to_apply_to = DEPARTMENT_BITFLAG_MEDICAL
|
|
department_name = "Medical"
|
|
|
|
/datum/station_trait/deathrattle_all
|
|
name = "Deathrattled Station"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
show_in_report = TRUE
|
|
weight = 1
|
|
report_message = "All members of the station have received an implant to notify each other if one of them dies. This should help improve job-safety!"
|
|
var/datum/deathrattle_group/deathrattle_group
|
|
|
|
/datum/station_trait/deathrattle_all/New()
|
|
. = ..()
|
|
deathrattle_group = new("station group")
|
|
blacklist = subtypesof(/datum/station_trait/deathrattle_department)
|
|
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn))
|
|
|
|
/datum/station_trait/deathrattle_all/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
|
|
SIGNAL_HANDLER
|
|
|
|
var/obj/item/implant/deathrattle/implant_to_give = new()
|
|
deathrattle_group.register(implant_to_give)
|
|
implant_to_give.implant(spawned, spawned, TRUE, TRUE)
|
|
|
|
/datum/station_trait/cybernetic_revolution
|
|
name = "Cybernetic Revolution"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
show_in_report = TRUE
|
|
weight = 1
|
|
report_message = "The new trends in cybernetics have come to the station! Everyone has some form of cybernetic implant."
|
|
trait_to_give = STATION_TRAIT_CYBERNETIC_REVOLUTION
|
|
/// List of all job types with the cybernetics they should receive.
|
|
var/static/list/job_to_cybernetic = list(
|
|
/datum/job/assistant = /obj/item/organ/heart/cybernetic, //real cardiac
|
|
/datum/job/atmospheric_technician = /obj/item/organ/cyberimp/mouth/breathing_tube,
|
|
/datum/job/bartender = /obj/item/organ/liver/cybernetic/tier3,
|
|
/datum/job/bitrunner = /obj/item/organ/eyes/robotic/thermals,
|
|
/datum/job/botanist = /obj/item/organ/cyberimp/chest/nutriment,
|
|
/datum/job/captain = /obj/item/organ/heart/cybernetic/tier3,
|
|
/datum/job/cargo_technician = /obj/item/organ/stomach/cybernetic/tier2,
|
|
/datum/job/chaplain = /obj/item/organ/cyberimp/brain/anti_drop,
|
|
/datum/job/chemist = /obj/item/organ/liver/cybernetic/tier2,
|
|
/datum/job/chief_engineer = /obj/item/organ/cyberimp/chest/thrusters,
|
|
/datum/job/chief_medical_officer = /obj/item/organ/cyberimp/chest/reviver,
|
|
/datum/job/clown = /obj/item/organ/cyberimp/brain/anti_stun, //HONK!
|
|
/datum/job/cook = /obj/item/organ/cyberimp/chest/nutriment/plus,
|
|
/datum/job/coroner = /obj/item/organ/tongue/bone, //hes got a bone to pick with you
|
|
/datum/job/curator = /obj/item/organ/cyberimp/brain/connector,
|
|
/datum/job/detective = /obj/item/organ/lungs/cybernetic/tier3,
|
|
/datum/job/doctor = /obj/item/organ/cyberimp/arm/toolkit/surgery,
|
|
/datum/job/geneticist = /obj/item/organ/fly, //we don't care about implants, we have cancer.
|
|
/datum/job/head_of_personnel = /obj/item/organ/eyes/robotic,
|
|
/datum/job/head_of_security = /obj/item/organ/eyes/robotic/thermals,
|
|
/datum/job/human_ai = /obj/item/organ/brain/cybernetic,
|
|
/datum/job/janitor = /obj/item/organ/eyes/robotic/xray,
|
|
/datum/job/lawyer = /obj/item/organ/heart/cybernetic/tier2,
|
|
/datum/job/mime = /obj/item/organ/tongue/robot, //...
|
|
/datum/job/paramedic = /obj/item/organ/cyberimp/eyes/hud/medical,
|
|
/datum/job/prisoner = /obj/item/organ/eyes/robotic/shield,
|
|
/datum/job/psychologist = /obj/item/organ/ears/cybernetic/whisper,
|
|
/datum/job/pun_pun = /obj/item/organ/cyberimp/arm/strongarm,
|
|
/datum/job/quartermaster = /obj/item/organ/stomach/cybernetic/tier3,
|
|
/datum/job/research_director = /obj/item/organ/cyberimp/bci,
|
|
/datum/job/roboticist = /obj/item/organ/cyberimp/eyes/hud/diagnostic,
|
|
/datum/job/scientist = /obj/item/organ/ears/cybernetic,
|
|
/datum/job/security_officer = /obj/item/organ/cyberimp/arm/toolkit/flash,
|
|
/datum/job/shaft_miner = /obj/item/organ/monster_core/rush_gland,
|
|
/datum/job/station_engineer = /obj/item/organ/cyberimp/arm/toolkit/toolset,
|
|
/datum/job/warden = /obj/item/organ/cyberimp/eyes/hud/security,
|
|
// BUBBER EDIT ADDITION START - MODULAR JOBS
|
|
/datum/job/blueshield = /obj/item/organ/cyberimp/brain/anti_stun,
|
|
/datum/job/nanotrasen_consultant = /obj/item/organ/heart/cybernetic/tier3,
|
|
/datum/job/barber = /obj/item/organ/ears/cybernetic/whisper,
|
|
/datum/job/corrections_officer = /obj/item/organ/cyberimp/arm/toolkit/flash,
|
|
/datum/job/orderly = /obj/item/organ/cyberimp/brain/anti_drop,
|
|
/datum/job/science_guard = /obj/item/organ/cyberimp/arm/toolkit/flash,
|
|
/datum/job/customs_agent = /obj/item/organ/cyberimp/eyes/hud/security,
|
|
/datum/job/bouncer = /obj/item/organ/cyberimp/arm/strongarm,
|
|
/datum/job/engineering_guard = /obj/item/organ/cyberimp/arm/toolkit/flash,
|
|
/datum/job/telecomms_specialist = /obj/item/organ/ears/cybernetic/xray,
|
|
// BUBBER EDIT END
|
|
)
|
|
|
|
/datum/station_trait/cybernetic_revolution/New()
|
|
. = ..()
|
|
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn))
|
|
|
|
/datum/station_trait/cybernetic_revolution/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
|
|
SIGNAL_HANDLER
|
|
|
|
var/datum/quirk/body_purist/body_purist = /datum/quirk/body_purist
|
|
if(initial(body_purist.name) in player_client.prefs.all_quirks)
|
|
return
|
|
var/cybernetic_type = job_to_cybernetic[job.type]
|
|
if(!cybernetic_type)
|
|
if(isAI(spawned))
|
|
var/mob/living/silicon/ai/ai = spawned
|
|
ai.eyeobj.relay_speech = TRUE //surveillance upgrade. the ai gets cybernetics too.
|
|
return
|
|
var/obj/item/organ/cybernetic = new cybernetic_type()
|
|
cybernetic.Insert(spawned, special = TRUE, movement_flags = DELETE_IF_REPLACED)
|
|
|
|
/datum/station_trait/luxury_escape_pods
|
|
name = "Luxury Escape Pods"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
show_in_report = TRUE
|
|
report_message = "Due to good performance, we've provided your station with luxury escape pods."
|
|
trait_to_give = STATION_TRAIT_BIGGER_PODS
|
|
blacklist = list(/datum/station_trait/cramped_escape_pods)
|
|
|
|
/datum/station_trait/medbot_mania
|
|
name = "Advanced Medbots"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
cost = STATION_TRAIT_COST_LOW
|
|
show_in_report = TRUE
|
|
report_message = "Your station's medibots have received a hardware upgrade, enabling expanded healing capabilities."
|
|
trait_to_give = STATION_TRAIT_MEDBOT_MANIA
|
|
|
|
/datum/station_trait/random_event_weight_modifier/shuttle_loans
|
|
name = "Loaner Shuttle"
|
|
report_message = "Due to an uptick in pirate attacks around your sector, there are few supply vessels in nearby space willing to assist with special requests. Expect to receive more shuttle loan opportunities, with slightly higher payouts."
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 4
|
|
event_control_path = /datum/round_event_control/shuttle_loan
|
|
weight_multiplier = 2.5
|
|
max_occurrences_modifier = 5 //All but one loan event will occur over the course of a round.
|
|
trait_to_give = STATION_TRAIT_LOANER_SHUTTLE
|
|
|
|
/datum/station_trait/random_event_weight_modifier/wise_cows
|
|
name = "Wise Cow Invasion"
|
|
report_message = "Bluespace harmonic readings show unusual interpolative signals between your sector and agricultural sector MMF-D-02. Expect an increase in cow encounters. Encownters, if you will."
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 1
|
|
event_control_path = /datum/round_event_control/wisdomcow
|
|
weight_multiplier = 3
|
|
max_occurrences_modifier = 10 //lotta cows
|
|
|
|
/datum/station_trait/random_event_weight_modifier/wise_cows/get_pulsar_message()
|
|
var/advisory_string = "Advisory Level: <b>Cow Planet</b></center><BR>" //We're gonna go fast and we're gonna go far.
|
|
advisory_string += "Your sector's advisory level is Cow Planet. We don't really know what this one means -- the model we use to create these threat reports hasn't produced this result before. Watch out for cows, I guess? Good luck!"
|
|
return advisory_string
|
|
|
|
/datum/station_trait/bright_day
|
|
name = "Bright Day"
|
|
report_message = "The stars shine bright and the clouds are scarcer than usual. It's a bright day here on the Ice Moon's surface."
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
show_in_report = TRUE
|
|
trait_flags = STATION_TRAIT_PLANETARY
|
|
trait_to_give = STATION_TRAIT_BRIGHT_DAY
|
|
|
|
/datum/station_trait/shuttle_sale
|
|
name = "Shuttle Firesale"
|
|
report_message = "The Nanotrasen Emergency Dispatch team is celebrating a record number of shuttle calls in the recent quarter. Some of your emergency shuttle options have been discounted!"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 4
|
|
trait_to_give = STATION_TRAIT_SHUTTLE_SALE
|
|
show_in_report = TRUE
|
|
|
|
/datum/station_trait/missing_wallet
|
|
name = "Misplaced Wallet"
|
|
report_message = "A repair technician left their wallet in a locker somewhere. They would greatly appreciate if you could locate and return it to them when the shift has ended."
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 5
|
|
cost = STATION_TRAIT_COST_LOW
|
|
show_in_report = TRUE
|
|
|
|
/datum/station_trait/missing_wallet/on_round_start()
|
|
. = ..()
|
|
|
|
var/obj/structure/closet/locker_to_fill = pick(GLOB.roundstart_station_closets)
|
|
|
|
var/obj/item/storage/wallet/new_wallet = new(locker_to_fill)
|
|
|
|
new /obj/item/stack/spacecash/c500(new_wallet)
|
|
if(prob(25)) //Jackpot!
|
|
new /obj/item/stack/spacecash/c1000(new_wallet)
|
|
|
|
new /obj/item/card/id/advanced/technician_id(new_wallet)
|
|
new_wallet.refreshID()
|
|
|
|
if(prob(35))
|
|
report_message += " The technician reports they last remember having their wallet around [get_area_name(new_wallet)]."
|
|
|
|
message_admins("A missing wallet has been placed in the [locker_to_fill] locker, in the [get_area_name(locker_to_fill)] area.")
|
|
|
|
/obj/item/card/id/advanced/technician_id
|
|
name = "Repair Technician ID"
|
|
desc = "Repair Technician? We don't have those in this sector, just a bunch of lazy engineers! This must have been from the between-shift crew..."
|
|
registered_name = "Pluoxium LXVII"
|
|
registered_age = 67
|
|
trim = /datum/id_trim/technician_id
|
|
|
|
/datum/id_trim/technician_id
|
|
access = list(ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MAINT_TUNNELS)
|
|
assignment = "Repair Technician"
|
|
trim_state = "trim_stationengineer"
|
|
department_color = COLOR_ASSISTANT_GRAY
|
|
|
|
/// Spawns assistants with some gear, either gimmicky or functional. Maybe, one day, it will inspire an assistant to do something productive or fun
|
|
/datum/station_trait/assistant_gimmicks
|
|
name = "Geared Assistants Pilot"
|
|
report_message = "The Nanotrassen Assistant Affairs division is performing a pilot to see if different assistant equipment helps improve productivity!"
|
|
trait_type = STATION_TRAIT_POSITIVE
|
|
weight = 3
|
|
trait_to_give = STATION_TRAIT_ASSISTANT_GIMMICKS
|
|
show_in_report = TRUE
|
|
blacklist = list(/datum/station_trait/colored_assistants)
|
|
|
|
/datum/station_trait/random_event_weight_modifier/assistant_gimmicks/get_pulsar_message()
|
|
var/advisory_string = "Advisory Level: <b>Grey Sky</b></center><BR>"
|
|
advisory_string += "Your sector's advisory level is Grey Sky. Our sensors detect abnormal activity among the assistants assigned to your station. We advise you to closely monitor the Tool Storage, Bridge, Tech Storage, and Brig for gathering crowds or petty thievery."
|
|
return advisory_string
|