Files
CHOMPStation2/code/modules/mob/living/carbon/human/species/lleill/hanner.dm
2025-04-27 20:53:07 +02:00

138 lines
5.8 KiB
Plaintext

/datum/species/shapeshifter/hanner
name = SPECIES_HANNER
name_plural = "Hanner"
blurb = "Hanner are a sub-species of almost any other sapient species, \
they are the offspring of one Lleill and any other non-lleill species. They are natural born fleshy \
shapeshifters, able to take the appearance of almost any humanoid form. Hanner also have some limited \
transmutation and energy sharing abilities not unlike they lleill, but considerably more limited. Unlike \
other shapeshifter species, such as proteans or prometheans, Hanner have a typical humanoid set of organs and can not regenerate."
color_mult = 1
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | HAS_UNDERWEAR | HAS_LIPS
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE
health_hud_intensity = 2
num_alternate_languages = 3
language = LANGUAGE_LLEILL
species_language = LANGUAGE_LLEILL
secondary_langs = list(LANGUAGE_LLEILL, LANGUAGE_SOL_COMMON) // For some reason, having this as their species language does not allow it to be chosen.
min_age = 18
max_age = 200
digi_allowed = TRUE
//Specific abilities
burn_mod = 0.8 //Slightly resistant to fire
pain_mod = 0.8 //Whilst not resistant to brute or stunning, they are slightly resistant to pain.
hazard_high_pressure = HAZARD_HIGH_PRESSURE + 700 // Dangerously high pressure.
warning_high_pressure = WARNING_HIGH_PRESSURE + 700 // High pressure warning.
warning_low_pressure = 100 // Low pressure warning.
hazard_low_pressure = 50 // Dangerously low pressure.
minimum_breath_pressure = 0 //Doesn't gasp and lungs shouldn't pop
cold_level_1 = 150 //Adapt well to temperature changes
cold_level_2 = 100
cold_level_3 = 50
heat_level_1 = 500 //quite resiliant to heat
heat_level_2 = 600
heat_level_3 = 700
chem_strength_alcohol = 0.8 //Handle alcohol slightly better
metabolic_rate = 0.4 //Major downside of the Hanner, they metabolise drugs much slower, meaning that they are difficult to treat with medicine alone.
bloodloss_rate = 1.2 //They bleed out faster too
lleill_energy = 100
lleill_energy_max = 100
genders = list(MALE, FEMALE, NEUTER, PLURAL)
has_organ = list(
O_HEART = /obj/item/organ/internal/heart,
O_LUNGS = /obj/item/organ/internal/lungs,
O_VOICE = /obj/item/organ/internal/voicebox,
O_LIVER = /obj/item/organ/internal/liver,
O_KIDNEYS = /obj/item/organ/internal/kidneys,
O_BRAIN = /obj/item/organ/internal/brain,
O_APPENDIX = /obj/item/organ/internal/appendix,
O_SPLEEN = /obj/item/organ/internal/spleen,
O_EYES = /obj/item/organ/internal/eyes,
O_STOMACH = /obj/item/organ/internal/stomach,
O_INTESTINE = /obj/item/organ/internal/intestine
)
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
BP_GROIN = list("path" = /obj/item/organ/external/groin),
BP_HEAD = list("path" = /obj/item/organ/external/head),
BP_L_ARM = list("path" = /obj/item/organ/external/arm),
BP_R_ARM = list("path" = /obj/item/organ/external/arm/right),
BP_L_LEG = list("path" = /obj/item/organ/external/leg),
BP_R_LEG = list("path" = /obj/item/organ/external/leg/right),
BP_L_HAND = list("path" = /obj/item/organ/external/hand),
BP_R_HAND = list("path" = /obj/item/organ/external/hand/right),
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
inherent_verbs = list(
/mob/living/carbon/human/proc/shapeshifter_select_shape,
/mob/living/carbon/human/proc/shapeshifter_select_colour,
/mob/living/carbon/human/proc/shapeshifter_select_hair,
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
/mob/living/carbon/human/proc/shapeshifter_select_gender,
/mob/living/carbon/human/proc/shapeshifter_select_wings,
/mob/living/carbon/human/proc/shapeshifter_select_tail,
/mob/living/carbon/human/proc/shapeshifter_select_ears,
/mob/living/carbon/human/proc/shapeshifter_select_secondary_ears,
/mob/living/carbon/human/proc/shapeshifter_select_eye_colour,
/mob/living/proc/set_size,
/mob/living/carbon/human/proc/shapeshifter_copy_body,
/mob/living/carbon/human/proc/shapeshifter_regenerate,
// /mob/living/carbon/human/proc/lleill_contact,
// /mob/living/carbon/human/proc/lleill_alchemy,
// /mob/living/carbon/human/proc/hanner_beast_form
)
valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJARAN, SPECIES_SKRELL, SPECIES_ALTEVIAN, SPECIES_TESHARI, SPECIES_MONKEY, SPECIES_LLEILL, SPECIES_VULPKANIN, SPECIES_ZORREN_HIGH, SPECIES_RAPALA, SPECIES_NEVREAN, SPECIES_VASILISSAN, SPECIES_AKULA)
var/list/lleill_abilities = list(/datum/power/lleill/contact,
/datum/power/lleill/alchemy,
/datum/power/lleill/beastform_hanner)
var/list/lleill_ability_datums = list()
/datum/species/shapeshifter/hanner/New()
..()
for(var/power in lleill_abilities)
var/datum/power/lleill/LP = new power(src)
lleill_ability_datums.Add(LP)
/datum/species/shapeshifter/hanner/proc/add_lleill_abilities(var/mob/living/carbon/human/H)
if(!H.ability_master || !istype(H.ability_master, /obj/screen/movable/ability_master/lleill))
H.ability_master = null
H.ability_master = new /obj/screen/movable/ability_master/lleill(H)
for(var/datum/power/lleill/P in lleill_ability_datums)
if(!(P.verbpath in H.verbs))
add_verb(H, P.verbpath)
H.ability_master.add_lleill_ability(
object_given = H,
verb_given = P.verbpath,
name_given = P.name,
ability_icon_given = P.ability_icon_state,
arguments = list()
)
spawn (50)
if(H.lleill_display)
H.lleill_display.invisibility = INVISIBILITY_NONE
H.lleill_display.icon_state = "lleill-4"
/datum/species/shapeshifter/hanner/add_inherent_verbs(var/mob/living/carbon/human/H)
..()
add_lleill_abilities(H)