mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-18 13:04:45 +00:00
## About The Pull Request
Adds a new 7 point positive quirk, "Spacer Born". Totally not inspired
by The Expanse, don't look at the branch name.
You were born in space, rather than on a planet, so your physiology has
adapted differently.
You are more comfortable in space, and way less comfortable on a planet.
Benefits:
- You are slightly taller. (No mechanical effect)
- You take 20% less damage from pressure damage.
- You take 20% less damage from cold environments.
- You move 10% faster while floating (NOT drifting, this is zero gravity
movement while beside a wall).
- You drift 20% faster (Drifting through zero gravity, untethered to
anything)
- While in space (z-level-wise, not turf wise), you lose some disgust
overtime.
- While experiencing no-gravity for an extended period of time, you will
start regenerating stamina and reduce stuns at a very low rate.
- If you are assigned to shaft miner (or the map is Icebox), you are
awarded with a 25% wage bonus (hazard pay).
Downsides:
- While on a planet (Yes, this includes Icebox and planetary maps), you
gain gravity sickness:
- Passive accrue disgust (slightly lessened on Icebox) (Capped at low
levels)
- Choking, after extended periods (disabled on Icebox)
- Slower movement
- Weaker stamina (disabled on Icebox)
- Suffocation from extended periods (disabled on Icebox) (Lungs aren't
adapted)
- Mood debuff
(Effects not final)
## Why It's Good For The Game
I'd figure I throw my hat in with the Positive Quirk Curse.
This is a quirk that improves your ability in a niche circumstance (low
gravity / dangerous pressure), with some downsides that are only
generally in effect if you play a few roles (or it's Icebox).
Because of this I think it'll provide an interesting niche, where Spacer
Born engineers are slightly better than their counterparts due to their
origin (moving faster in space without a jetpack, withstanding
pressure). However, at the same time, if the mining outpost sustains
damage and needs repairs... suddenly your buff over your cohorts
disappears, and you have to brave somewhere hostile to your body.
Ultimately, the goal of the quirk is to encourage people to approach
situations a bit differently.
Or take it as a challenge and play shaft miner.
## Changelog
🆑 Melbert
add: Adds a new 7 point positive quirk, "Spacer Born". You were born in
space, and as a result your body's adapted to life in artificial
gravity, making you much more effective and comfortable in lower
gravity. However, travelling planet-side is quite a chore, especially if
you're assigned to work there.
add: Adds a chemical: Ondansetron, created by Oil + Nitrogen + Oxygen +
Ethanol catalyst. A powerful Antiemetic (lowers disgust).
/🆑
61 lines
2.1 KiB
Plaintext
61 lines
2.1 KiB
Plaintext
/**
|
|
* - is_valid_z_level
|
|
*
|
|
* Checks if source_loc and checking_loc is both on the station, or on the same z level.
|
|
* This is because the station's several levels aren't considered the same z, so multi-z stations need this special case.
|
|
*
|
|
* Args:
|
|
* source_loc - turf of the source we're comparing.
|
|
* checking_loc - turf we are comparing to source_loc.
|
|
*
|
|
* returns TRUE if connection is valid, FALSE otherwise.
|
|
*/
|
|
/proc/is_valid_z_level(turf/source_loc, turf/checking_loc)
|
|
// if we're both on "station", regardless of multi-z, we'll pass by.
|
|
if(is_station_level(source_loc.z) && is_station_level(checking_loc.z))
|
|
return TRUE
|
|
if(source_loc.z == checking_loc.z)
|
|
return TRUE
|
|
return FALSE
|
|
|
|
/**
|
|
* Checks if the passed non-area atom is on a "planet".
|
|
*
|
|
* A planet is defined as anything with planetary atmos that has gravity, with some hardcoded exceptions.
|
|
*
|
|
* * Nullspace counts as "not a planet", so you may want to check that separately.
|
|
* * The mining z-level (Lavaland) is always considered a planet.
|
|
* * The station z-level is considered a planet if the map config says so.
|
|
* * Central Command is always not a planet.
|
|
* * Syndicate recon outpost is always on a planet.
|
|
*
|
|
* Returns TRUE if we are on a planet.
|
|
* Returns FALSE if we are not in a planet, or otherwise, "in space".
|
|
*/
|
|
/proc/is_on_a_planet(atom/what)
|
|
ASSERT(!isarea(what))
|
|
|
|
var/turf/open/what_turf = get_turf(what)
|
|
if(isnull(what_turf))
|
|
// Nullspace is, well, not a planet?
|
|
return FALSE
|
|
|
|
if(is_mining_level(what_turf.z))
|
|
// Always assume Lavaland / mining level is a planet. (Astroid mining crying right now)
|
|
return TRUE
|
|
|
|
if(is_station_level(what_turf.z))
|
|
// Station levels rely on the map config, I.E. Icebox is planetary but Meta is not
|
|
return SSmapping.is_planetary()
|
|
|
|
if(is_centcom_level(what_turf.z))
|
|
// Central Command is definitely in space
|
|
return FALSE
|
|
|
|
if(what.onSyndieBase())
|
|
// Syndicate recon outpost is on some moon or something
|
|
return TRUE
|
|
|
|
// Finally, more specific checks are ran for edge cases, such as lazyily loaded map templates or away missions. Not perfect.
|
|
return istype(what_turf) && what_turf.planetary_atmos && what_turf.has_gravity()
|