---
tags: Design, Abstract
title: Feature Design Doc
---
# General Feature Design Document
[toc]
# Maintainer Design Flows
:::warning
This section describes design flows that are meant to be upheld in the PR process. **PRs that go against this section are subject to closing.** Please do not edit this section unless you are a maintainer. Comments via sidebar are welcomed.
:::
---
## Whitelisting vs Blacklisting (Cobby)
If your feature is supposed to be limited to a scope, it is expected that you generate a whitelist of fitting scope items rather than a blacklist of out-of-scope ones. This ensures that new features must be manually added to the scope, rather than generating issues because items unintentionally fell into that scope.
An example is I create a sect that can only convert people of certain races. On the code side, I should generate a list of people they CAN convert, rather than who they cannot. This ensures that if a new race was added, we would have to deliberately assign them the ability to be converted rather it be the assumed default.
## Upgrades and Linear Progression (Cobby)
Features with upgrade paths should be focused around providing trade-offs rather than being direct upgrades in a way that cannot be mitigatable (IE an upgrade that eats 10% more power but provides 20% more items should not be stackable with an item that reduces power by 10% but also decrease item output by 5%, resulting in a 0% power change 15% more item net benefit).
In general, if your option or combination of options is a no-brainer in a vast majority of situations, it needs to be designed differently. Features should promote situational efficacy bonuses rather than direct efficacy bonuses.
{%hackmd w9hpiZOaSOK34astrNldBA %}
---
# Non-Maintainer Design Flows
:::info
This section describes various design flows that are not yet incorporated into the maintainer-approved design. **Working towards these flows does not guarantee merge, nor does going against these flows guarantee close. Please resort to `##` and below for heading tags, and preferably `Title (Author)` for easy reference. Titles can be set with YAML metadata. Ping Cobby on Discord if you need assistance embedding/generating your note.**
:::
---
embed notes here
---