mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 18:02:57 +00:00
58 lines
1.7 KiB
Plaintext
58 lines
1.7 KiB
Plaintext
/**
|
|
* Sets an ability property
|
|
*/
|
|
/mob/proc/set_ability_property(ability, property, value)
|
|
LAZYINITLIST(ability_properties)
|
|
LAZYINITLIST(ability_properties[ability])
|
|
ability_properties[ability][property] = value
|
|
|
|
/**
|
|
* Gets an ability property
|
|
*/
|
|
/mob/proc/get_ability_property(ability, property)
|
|
return ability_properties && ability_properties[ability] && ability_properties[ability][property]
|
|
|
|
GLOBAL_LIST_INIT(innate_ability_typepaths, all_innate_ability_typepaths())
|
|
|
|
/proc/all_innate_ability_typepaths()
|
|
return list(
|
|
INNATE_ABILITY_HUMANOID_CUSTOMIZATION = /datum/action/innate/ability/humanoid_customization,
|
|
INNATE_ABILITY_SLIME_BLOBFORM = /datum/action/innate/ability/slime_blobform,
|
|
INNATE_ABILITY_LIMB_REGROWTH = /datum/action/innate/ability/limb_regrowth
|
|
)
|
|
|
|
/**
|
|
* Grants an ability from a source
|
|
*/
|
|
/mob/proc/grant_ability_from_source(list/abilities, source)
|
|
if(!islist(abilities))
|
|
abilities = list(abilities)
|
|
LAZYINITLIST(ability_actions)
|
|
LAZYINITLIST(innate_abilities)
|
|
for(var/ability in abilities)
|
|
LAZYINITLIST(innate_abilities[ability])
|
|
innate_abilities[ability] |= source
|
|
if(ability_actions[ability])
|
|
continue
|
|
var/path = GLOB.innate_ability_typepaths[ability]
|
|
var/datum/action/innate/ability/A = new path
|
|
ability_actions[ability] = A
|
|
A.Grant(src)
|
|
|
|
/**
|
|
* Removes an ability from a source
|
|
*/
|
|
/mob/proc/remove_ability_from_source(list/abilities, source)
|
|
if(!islist(abilities))
|
|
abilities = list(abilities)
|
|
if(!length(innate_abilities))
|
|
return
|
|
for(var/ability in abilities)
|
|
if(!length(innate_abilities[ability]))
|
|
continue
|
|
innate_abilities[ability] -= source
|
|
if(!length(innate_abilities[ability]))
|
|
innate_abilities -= ability
|
|
qdel(ability_actions[ability])
|
|
ability_actions -= ability
|