Skip to content

Fera rework #489

Open
FalloutFalcon wants to merge 293 commits intoDarkPack13:masterfrom
FalloutFalcon:fera-rework
Open

Fera rework #489
FalloutFalcon wants to merge 293 commits intoDarkPack13:masterfrom
FalloutFalcon:fera-rework

Conversation

@FalloutFalcon
Copy link
Member

@FalloutFalcon FalloutFalcon commented Jan 7, 2026

About The Pull Request

Part 1 of the fera rework: Most garou content minus 1-5 gifts
Requires #407, #657
Continuation of #122
Should fix #484
Fixes bloodpool part of #513

Playerfacing: Implements garou based upon the following document: https://docs.google.com/document/d/1ZhMsB3mToUq5Q7dk86YdyvcRfaPpq2sOxYeZKwCNEQU/edit?tab=t.0#heading=h.axkr5oqixflc
Codewise: Aims to overhaul fera onto the new splat framework and future proof the handling of splats to prevent stuff like corax just being a secret tribe of the garou and other extremely jank code.

Why It's Good For The Game

Better code c:

Alteast on Apoc, we already have plans for the bear and fox fera very soon, we need good bones for that.

Changelog

🆑
add: Readds garou
add: Moon phase is calculated mostly accurately based on in-game day
add: Rage gained from looking at the moon is now based on phase
add: Howl emote that can be used by dogs, dogs (garou), or dogs (gangrel)
add: Re-implements 1 gift for each auspice
fix: Blood-pool icon is properly updated when its added to you
admin: Adjustments to stats and important prefs can be properly viewed in the log viewers
balance: Makes generic helpers to represent "Heal this amount of "dots" of damage". Gives this to garou at 1 dot every "turn" (5 seconds at the time of writing)
balance: Punching basic mobs and humans now calculate damage based on strength
balance: W20 silver bullet handling. No agg damage in breed form. 5 bullets are a guaranteed loss of gnosis.
/:cl:

@XeonMations
Copy link
Collaborator

On another note, please keep your random changes to their perspective PRs. You shouldn't be changing v20 to V20 in this PR, as an example.

@github-actions github-actions bot requested a review from XeonMations February 8, 2026 15:22
@FalloutFalcon
Copy link
Member Author

On another note, please keep your random changes to their perspective PRs. You shouldn't be changing v20 to V20 in this PR, as an example.

v20 and V20 was used in many parts of the code. It was a nothing burger comment syntax change not worth making its own PR for but was loosely relevant to mine as i was adding alot of new V20 and W20 references comments

Copy link
Contributor

@chazzyjazzy chazzyjazzy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok - im gonna need to review this like, two more times, maybe one. i gave it a read through and understood most of what was going on, but im getting the feeling that i missed something and i was exhausted enough to just hit accept but that wont happen

Comment on lines 25 to 34
// DARKPACK EDIT CHANGE START - STORYTELLER_STATS
// ROLL TO HIT // DARKPACK TODO
// var/successes = SSroll.storyteller_roll(user.st_get_stat(STAT_DEXTERITY) + user.st_get_stat(STAT_BRAWL), 6, list(user), user)
// ROLL TO DAMAGE
var/damage_output
if(HAS_TRAIT(user, TRAIT_PERFECT_ATTACKER))
damage_output = user.st_get_stat(STAT_STRENGTH)
else
damage_output = SSroll.storyteller_roll(user.st_get_stat(STAT_STRENGTH), 6, list(user), user, TRUE)
var/damage = (basic_mob_flags & IMMUNE_TO_FISTS) ? 0 : damage_output TTRPG_DAMAGE // DARKPACK EDIT CHANGE - STORYTELLER_STATS
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disclaimer I am drunk but shouldnt it be dexterity to see if they hit?

Like, the agility or speed or whatever if they miss

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should be! It soft requires #633 so i can make the handling a bit cleaner and make sure this doesn't spam your chat.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#633 has been merged


/datum/species
/// Used in get_generic_name to replace gender
var/visable_gender_override
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo, visible

@@ -0,0 +1,46 @@
/datum/splat/werewolf/proc/examine_other_human(mob/living/carbon/examined)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

perhaps some wyrmtaint stuff here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wyrmtaint still isn't really possible to get because we dont have da quirk.

Comment on lines +25 to +37
/**
* Gives the human a tribe, applying
* on_gain effects and post_gain effects if the
* parameter is true. Can also remove tribes
* with or without a replacement, and apply
* on_lose effects. Will have no effect the human
* is being given the tribe it already has.
*
* Arguments:
* * setting_tribe - Typepath or tribe singleton to give to the human
* * joining_round - If this tribe is being given at roundstart and should call on_join_round
*/
/mob/living/carbon/human/proc/set_fera_tribe(setting_tribe, joining_round)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this on human? can't it be on living?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

parody with clans. no strong reason atm for either type..

/datum/splat/werewolf/proc/auspice_rank_check()
return auspice.rank_requirments(renown)

// Pretty iffy on this. This could likely just be moved onto the splat itself so corax and other breeds can override it.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that is probably for the best but please do it another pr because this one is already so long

Comment on lines +8 to +11
// DARKPACK TODO - WEREWOLF - (len lore)
/datum/splat/werewolf/kinfolk/get_splat_description()
return "Lorem Ipsum"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably get this and the other three filled out esp while waiting for reviews (since i dont think i should be the only review on this its so long), TFN has lore people who can help like Icey or Justice who have always helped me, or u can ask atla who made the doc

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the "len" mentioned in the comment is atlamillia.

Comment on lines 69 to 75
/datum/splat/werewolf/shifter/proc/get_breed_form_species()
return breed_form?.breed_species
/*
if(!owner?.dna)
return
return GLOB.breed_forms_list[owner.dna.features[FEATURE_FERA_BREED]]
*/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can probably delete that comment since get_breed_form_species seems like its doing its job, the early return if dna doesnt exist may be helpful tho

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep! this used to be how xeon's code handled breeds but i ditched that.

/**
* If the character is any kind of fera or kinfolk creature, named after the game line
*/
/proc/iswerewolfsplat(mob/character)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldnt all these args in this file be mob/living since splats can only exist on mob/living

Copy link
Member Author

@FalloutFalcon FalloutFalcon Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

get_splat notibly exists on /mob/ atm...

parody with /proc/isvampiresplat(mob/character) which likely only exists because of its previous form as a define.
It would mean reworking all of those as well for sanity.

FalloutFalcon and others added 3 commits February 13, 2026 09:53
…s/tribes/garou.dm

Co-authored-by: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Basic mobs speaking causes runtimes

5 participants