--- 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 ---