mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
Stowaway Job (#3494)
## About The Pull Request Adds a stowaway job (not really a job) You as a stowaway are a non-crew inhabitant of the station. ## Why It's Good For The Game Requested by players. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 add: Stowaway job (anti-job) added. /🆑 --------- Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
This commit is contained in:
co-authored by
lessthanthree
Arturlang
Roxy
parent
1b7725c7fe
commit
9da4166fba
@@ -341,6 +341,13 @@
|
||||
"Spawn Positions" = 5
|
||||
"Total Positions" = 5
|
||||
|
||||
[STOWAWAY]
|
||||
"Playtime Requirements" = 2400
|
||||
"Required Account Age" = 7
|
||||
"# Required Character Age" = 0
|
||||
"Spawn Positions" = 20
|
||||
"Total Positions" = 20
|
||||
|
||||
[VANGUARD_OPERATIVE]
|
||||
"Playtime Requirements" = 400
|
||||
"Required Account Age" = 40
|
||||
|
||||
@@ -266,7 +266,7 @@ SUBSYSTEM_DEF(area_spawn)
|
||||
/// See code/__DEFINES/~skyrat_defines/automapper.dm
|
||||
var/mode = AREA_SPAWN_MODE_OPEN
|
||||
/// Map blacklist, this is used to determine what maps we should not spawn on.
|
||||
var/list/blacklisted_stations = list("Void Raptor", "Runtime Station", "MultiZ Debug", "Gateway Test", "Blueshift", "Biodome")
|
||||
var/list/blacklisted_stations = list("Void Raptor", "Runtime Station", "MultiZ Debug", "Gateway Test", "Blueshift", "Biodome", "Moon Station", "Box Station")
|
||||
/// If failing to find a suitable area is OK, then this should be TRUE or CI will fail.
|
||||
/// Should probably be true if the target_areas are random, such as ruins.
|
||||
var/optional = FALSE
|
||||
@@ -323,7 +323,7 @@ SUBSYSTEM_DEF(area_spawn)
|
||||
/// The atom type that we want to spawn
|
||||
var/desired_atom
|
||||
/// Map blacklist, this is used to determine what maps we should not spawn on.
|
||||
var/list/blacklisted_stations = list("Void Raptor", "Runtime Station", "MultiZ Debug", "Gateway Test")
|
||||
var/list/blacklisted_stations = list("Void Raptor", "Runtime Station", "MultiZ Debug", "Gateway Test", "Moon Station", "Box Station")
|
||||
|
||||
/**
|
||||
* Spawn the atoms.
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
/datum/area_spawn/New()
|
||||
blacklisted_stations |= list("Lima Station", "Moon Station", "Box Station")
|
||||
. = ..()
|
||||
|
||||
/datum/area_spawn_over/New()
|
||||
blacklisted_stations |= list("Lima Station", "Moon Station", "Box Station")
|
||||
. = ..()
|
||||
|
||||
/datum/area_spawn_over/big_bertha
|
||||
target_areas = list(
|
||||
/area/station/ai_monitored/security/armory,
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/datum/job/assistant/stowaway
|
||||
title = "Stowaway"
|
||||
description = "Be a stowaway aboard a hazardous research station that is infamous for many reasons."
|
||||
faction = FACTION_NONE
|
||||
supervisors = "yourself"
|
||||
minimal_player_age = 7
|
||||
total_positions = 20
|
||||
spawn_positions = 20
|
||||
exp_requirements = 2400
|
||||
exp_required_type = EXP_TYPE_CREW
|
||||
exp_granted_type = EXP_TYPE_SPECIAL
|
||||
config_tag = "STOWAWAY"
|
||||
|
||||
liver_traits = list(TRAIT_MAINTENANCE_METABOLISM)
|
||||
|
||||
|
||||
job_flags = JOB_NEW_PLAYER_JOINABLE|JOB_REOPEN_ON_ROUNDSTART_LOSS|JOB_ASSIGN_QUIRKS|JOB_CANNOT_OPEN_SLOTS
|
||||
|
||||
/datum/job/assistant/stowaway/after_spawn(mob/living/spawned, client/player_client)
|
||||
. = ..()
|
||||
for(var/obj/item/card/id/to_del in spawned.contents)
|
||||
spawned.dropItemToGround(to_del, force = TRUE)
|
||||
qdel(to_del)
|
||||
for(var/obj/item/modular_computer/pda/to_del in spawned.contents)
|
||||
spawned.dropItemToGround(to_del, force = TRUE)
|
||||
qdel(to_del)
|
||||
|
||||
var/mob/living/carbon/human/human_holder = spawned
|
||||
var/datum/bank_account/account = SSeconomy.bank_accounts_by_id["[human_holder.account_id]"]
|
||||
account?.Destroy()
|
||||
var/turf/T = find_maintenance_spawn(atmos_sensitive = TRUE, require_darkness = FALSE)
|
||||
if(!T) // no safe spots... find another method.
|
||||
for(var/i in 1 to 16)
|
||||
var/turf/picked_safe = get_safe_random_station_turf_equal_weight()
|
||||
T = picked_safe
|
||||
break
|
||||
spawned.forceMove(T)
|
||||
spawned.put_in_hands(new /obj/item/storage/toolbox/mechanical)
|
||||
spawned.equip_to_slot(new /obj/item/card/cardboard, ITEM_SLOT_ID)
|
||||
|
||||
// Fixes for station traits...
|
||||
/datum/station_trait/wallets/on_job_after_spawn(datum/source, datum/job/job, mob/living/living_mob, mob/M, joined_late)
|
||||
if(!(job.job_flags & JOB_EQUIP_RANK))
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/effect/landmark/start/stowaway
|
||||
name = "Stowaway"
|
||||
icon_state = "Assistant"
|
||||
|
||||
// This is purely to satisfy unit tests, stowaway spawn locations are handled in after_spawn()
|
||||
/datum/area_spawn/stowaway_landmark
|
||||
blacklisted_stations = list("Runtime Station", "MultiZ Debug", "Gateway Test")
|
||||
amount_to_spawn = 5
|
||||
desired_atom = /obj/effect/landmark/start/stowaway
|
||||
|
||||
/datum/area_spawn/stowaway_landmark/New()
|
||||
. = ..()
|
||||
target_areas = shuffle(typesof(/area/station/maintenance/fore) | typesof(/area/station/maintenance/aft) | typesof(/area/station/maintenance/port) | typesof(/area/station/maintenance/starboard))
|
||||
@@ -9339,6 +9339,7 @@
|
||||
#include "modular_zubbers\code\modules\job_interns\config.dm"
|
||||
#include "modular_zubbers\code\modules\job_interns\job_interns.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\_job.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\stowaway.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\job_types\blacksmith.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\job_types\cargo_technician.dm"
|
||||
#include "modular_zubbers\code\modules\jobs\job_types\chaplain.dm"
|
||||
|
||||
Reference in New Issue
Block a user