Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding basic wyrdling traits. #53

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion code/modules/mob/living/human/human_appearance_head.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,17 @@
// Eyes! TODO, make these a marking.
/mob/living/human/get_eye_colour()
// Force an evil red glow for undead mobs.
if(has_trait(/decl/trait/undead))
if(stat == CONSCIOUS && has_trait(/decl/trait/undead))
return COLOR_RED
return _eye_colour

/mob/living/human/death(gibbed)
. = ..()
if(!QDELETED(src) && has_trait(/decl/trait/undead))
var/obj/item/organ/external/head/head = get_organ(BP_HEAD)
head.glowing_eyes = initial(head.glowing_eyes)
update_eyes()

/mob/living/human/set_eye_colour(var/new_color, var/skip_update = FALSE)
if((. = ..()))
_eye_colour = new_color
Expand Down
6 changes: 6 additions & 0 deletions mods/pyrelight/_pyrelight.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
#ifndef MODPACK_PYRELIGHT
#define MODPACK_PYRELIGHT
#include "_pyrelight.dm"
#include "datum\traits\_wyrd.dm"
#include "datum\traits\_wyrd_categories.dm"
#include "datum\traits\wyrd_wild.dm"
#include "datum\wyrdling\ears.dm"
#include "datum\wyrdling\mask.dm"
#include "datum\wyrdling\tails.dm"
#include "datum\culture.dm"
#include "datum\factions.dm"
#include "datum\locations.dm"
Expand Down
5 changes: 5 additions & 0 deletions mods/pyrelight/datum/traits/_wyrd.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/decl/trait/wyrd
abstract_type = /decl/trait/wyrd
category = "Wyrd"
trait_cost = -1
available_at_chargen = TRUE
63 changes: 63 additions & 0 deletions mods/pyrelight/datum/traits/_wyrd_categories.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// TODO: actual effects
// TODO: integrate with wyrdling
/*
/decl/trait/wyrd/fire
name = "Burning Sign"
description = "Affinity for the New School of alchemical working (energy, force, fire, lightning). TODO."
incompatible_with = list(
/decl/trait/wyrd/deep,
/decl/trait/wyrd/sky,
/decl/trait/wyrd/wild,
/decl/trait/wyrd/flesh
)
uid = "trait_wyrd_flame"

/decl/trait/wyrd/sky
name = "Sky Sign"
description = "Affinity for the sun, moon and stars, cold, air, wind, light, sky. Associated with the magical traditions of the Steppe and Nine Mothers. TODO."
incompatible_with = list(
/decl/trait/wyrd/deep,
/decl/trait/wyrd/fire,
/decl/trait/wyrd/wild,
/decl/trait/wyrd/flesh
)
uid = "trait_wyrd_sky"

/decl/trait/wyrd/deep
name = "Hollow Sign"
description = "Affinity for stone, darkness, the depths, the earth. Associated with the magical traditions of kobaloi and dvergr. TODO."
incompatible_with = list(
/decl/trait/wyrd/sky,
/decl/trait/wyrd/fire,
/decl/trait/wyrd/wild,
/decl/trait/wyrd/flesh
)
uid = "trait_wyrd_hollow"

/decl/trait/wyrd/flesh
name = "Rose Sign"
description = "Affinity for blood, flesh, bone - healing, necromancy, blood alchemy, manipulation of living material. TODO."
incompatible_with = list(
/decl/trait/wyrd/sky,
/decl/trait/wyrd/fire,
/decl/trait/wyrd/wild,
/decl/trait/wyrd/deep
)
uid = "trait_wyrd_flesh"
*/
/decl/trait/wyrd/wild
name = "Wild Sign"
description = "A wyrdling is a human whose soul has been touched by the primeveal \
anima of the wilds, carried down through blood and manifesting in strange ways. The \
wyrdmarked are often treated with mistrust or fear by the general populace, leading \
many to cover their wyrdmarks and hide their nature."
permitted_species = list(SPECIES_HUMAN)
uid = "trait_wyrd_wild"
/*
incompatible_with = list(
/decl/trait/wyrd/fire,
/decl/trait/wyrd/sky,
/decl/trait/wyrd/deep,
/decl/trait/wyrd/flesh
)
*/
45 changes: 45 additions & 0 deletions mods/pyrelight/datum/traits/wyrd_wild.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/decl/trait/wyrd/wild/animal_form
abstract_type = /decl/trait/wyrd/wild/animal_form
name = "Animal Semblance"
description = "Some wyrdlings possess the ability to 'veer' into the form of an \
animal, known as the 'semblance'. Such wyrdlings use masks of bone or wood to focus \
and control the veering, making it difficult for them to conceal their abilities."
parent = /decl/trait/wyrd/wild
incompatible_with = null
var/mask_type

/decl/trait/wyrd/wild/animal_form/Initialize()
incompatible_with = subtypesof(/decl/trait/wyrd/wild/animal_form) - type
. = ..()

/decl/trait/wyrd/wild/animal_form/apply_trait(mob/living/holder)
. = ..()
if(mask_type)
var/obj/item/clothing/mask/ghost_caul/mask = new mask_type
if(!holder.equip_to_slot_if_possible(mask, slot_wear_mask_str))
holder.put_in_hands_or_store_or_drop(mask)

/decl/trait/wyrd/wild/animal_form/fox
name = "Fox Semblance"
mask_type = /obj/item/clothing/mask/ghost_caul/fox
uid = "trait_wyrd_wild_fox"

/decl/trait/wyrd/wild/animal_form/deer
name = "Deer Semblance"
mask_type = /obj/item/clothing/mask/ghost_caul/deer
uid = "trait_wyrd_wild_deer"

/decl/trait/wyrd/wild/animal_form/deer_antlers
name = "Crowned Deer Semblance"
mask_type = /obj/item/clothing/mask/ghost_caul/deer_antlers
uid = "trait_wyrd_wild_deer_antlers"

/decl/trait/wyrd/wild/animal_form/rabbit
name = "Rabbit Semblance"
mask_type = /obj/item/clothing/mask/ghost_caul/rabbit
uid = "trait_wyrd_wild_rabbit"

/decl/trait/wyrd/wild/animal_form/bear
name = "Bear Semblance"
mask_type = /obj/item/clothing/mask/ghost_caul/bear
uid = "trait_wyrd_wild_bear"
31 changes: 31 additions & 0 deletions mods/pyrelight/datum/wyrdling/ears.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/decl/sprite_accessory/ears/wyrdling
abstract_type = /decl/sprite_accessory/ears/wyrdling
icon = 'mods/pyrelight/icons/wyrdling/ears.dmi'
required_traits = list(/decl/trait/wyrd/wild)
accessory_metadata_types = list(SAM_COLOR, SAM_COLOR_INNER)

/decl/sprite_accessory/ears/wyrdling/animal
name = "Animal Ears"
icon_state = "ears_plain"
uid = "accessory_ears_animal"

/decl/sprite_accessory/ears/wyrdling/lupine
name = "Lupine Ears"
icon_state = "wolf"
uid = "accessory_ears_wolf"

/decl/sprite_accessory/ears/wyrdling/fennec
name = "Fennec Ears"
icon_state = "fennec"
uid = "accessory_ears_fennec"

/decl/sprite_accessory/ears/wyrdling/vulpine
name = "Vulpine Ears"
icon_state = "fox"
uid = "accessory_ears_fox"

/decl/sprite_accessory/ears/wyrdling/antlers
name = "Antlers"
icon_state = "antlers"
uid = "accessory_ears_antlers"
accessory_metadata_types = list(SAM_COLOR)
Loading
Loading