Files
Citadel-Station-13-RP/code/modules/lore_hardcoded/_hardcoded.dm
T
FreeStylaLT bc37c6cce2 Adds Auril cultures and abilities, tweaks flight and toggle agility (#5459)
<!-- 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.

![image](https://user-images.githubusercontent.com/11361525/235394933-710507b8-297c-41a8-9975-9bc3aee9dcba.png)

<!-- 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. -->
2023-05-04 16:02:51 -07:00

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()