mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-08 12:59:44 +01:00
bc37c6cce2
<!-- 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 - Adds Auril castes (Praesidus and Incanus) - They have their own statchanges, but nothing too special - Makes flight an ability icon for non-custom species. Adds item-based slowdown to flight (stuff Hardy reduces) - Adds an Auril 'advanced' flight. It ignores slowdown. - Adds a species flight mod that speeds up how fast you ascend z-levels. Aurils get it reduced, Praesidus even more. - Adds Toggle Agility ability, gives it to everyone that had it - It works as a timed toggle, similar to Chimera thermal sight. **- Teshari no longer have innate agility** - not really stuck with the change, they just had the agility flag turned on by default, while also having the toggle. I chose to just give them the toggle and turn it off by default like everyone else with the ability.  <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game god I love the icons bro <!-- 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. --> ## 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 it's 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. --> <!-- 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. -->
91 lines
3.4 KiB
Plaintext
91 lines
3.4 KiB
Plaintext
/datum/lore
|
|
/// abstract type
|
|
abstract_type = /datum/lore
|
|
|
|
/datum/lore/character_background
|
|
abstract_type = /datum/lore/character_background
|
|
|
|
/// name
|
|
var/name = "Unknown"
|
|
/// id - **must be unique on subtypes**, use CamelCase
|
|
var/id
|
|
/// category
|
|
var/category = "Misc"
|
|
/// description/what the player sees
|
|
var/desc = "What is this?"
|
|
/// subspecies are counted as the master species
|
|
var/subspecies_included = TRUE
|
|
/// allowed species ids - if is list, only these species can have them; these are character species uids, not normal species ids, subspecies do count; typepaths are allowed
|
|
var/list/allow_species
|
|
/// forbidden species ids - overridden by allowed; typepaths are allowed, will be converted to uids
|
|
var/list/forbid_species
|
|
/// languages that someone gets by picking this; typepaths are allowed, will be converted to uids
|
|
var/list/innate_languages
|
|
/// modify max custom language amount
|
|
var/language_amount_mod = 0
|
|
/// economic background modifier for starting pay
|
|
var/economy_payscale = 1
|
|
|
|
/datum/lore/character_background/New()
|
|
// resolve typepaths
|
|
if(allow_species && !islist(allow_species))
|
|
CRASH("innate languages not a list; fix your shit.")
|
|
for(var/thing in allow_species)
|
|
if(ispath(thing))
|
|
var/resolved
|
|
if(ispath(thing, /datum/species))
|
|
var/datum/species/access = thing
|
|
resolved = initial(access.uid)
|
|
else if(ispath(thing, /datum/character_species))
|
|
var/datum/character_species/access = thing
|
|
resolved = initial(access.uid)
|
|
allow_species -= thing
|
|
allow_species += resolved
|
|
else if(istext(thing))
|
|
ASSERT(!!SScharacters.resolve_character_species(thing))
|
|
else
|
|
CRASH("you didn't put a valid path or text; fix your shit.")
|
|
if(forbid_species && !islist(forbid_species))
|
|
CRASH("innate languages not a list; fix your shit.")
|
|
for(var/thing in forbid_species)
|
|
if(ispath(thing))
|
|
var/resolved
|
|
if(ispath(thing, /datum/species))
|
|
var/datum/species/access = thing
|
|
resolved = initial(access.uid)
|
|
else if(ispath(thing, /datum/character_species))
|
|
var/datum/character_species/access = thing
|
|
resolved = initial(access.uid)
|
|
allow_species -= thing
|
|
allow_species += resolved
|
|
else if(istext(thing))
|
|
ASSERT(!!SScharacters.resolve_character_species(thing))
|
|
else
|
|
CRASH("you didn't put a valid path or text; fix your shit.")
|
|
if(innate_languages && !islist(innate_languages))
|
|
CRASH("innate languages not a list; fix your shit.")
|
|
for(var/thing in innate_languages)
|
|
if(ispath(thing))
|
|
innate_languages += SScharacters.resolve_language_path(thing).id
|
|
innate_languages -= thing
|
|
else if(istext(thing))
|
|
ASSERT(!!SScharacters.resolve_language_id(thing))
|
|
else
|
|
CRASH("you didn't put a valid path or text; fix your shit.")
|
|
|
|
/**
|
|
* id passed in is for a /datum/character_species, NOT a /datum/speices!
|
|
*/
|
|
/datum/lore/character_background/proc/check_species_id(id)
|
|
return check_character_species(SScharacters.resolve_character_species(id))
|
|
|
|
/datum/lore/character_background/proc/check_character_species(datum/character_species/S)
|
|
if(allow_species)
|
|
return (S.uid in allow_species) || (subspecies_included && S.is_subspecies && (S.superspecies_id in allow_species))
|
|
else if(forbid_species)
|
|
return !((S.uid in forbid_species) || (subspecies_included && S.is_subspecies && (S.superspecies_id in forbid_species)))
|
|
return TRUE
|
|
|
|
/datum/lore/character_background/proc/get_default_language_ids()
|
|
return innate_languages.Copy()
|