Initial sanctuary sources
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
# Hemp Effect System
|
||||
|
||||
## Goal
|
||||
|
||||
Each hemp variety applies:
|
||||
1. a main gameplay profile,
|
||||
2. a subtle visual profile during the normal trip,
|
||||
3. a possible bad trip with stronger visual disturbance.
|
||||
|
||||
Normal trip must stay readable and non-invasive.
|
||||
Bad trip is the only state allowed to become truly disturbing.
|
||||
|
||||
---
|
||||
|
||||
## Core rules
|
||||
|
||||
### Consumption flow
|
||||
|
||||
When the player consumes a hemp item:
|
||||
|
||||
1. Resolve the consumed variety from its `id`.
|
||||
2. Apply all `main_effects` immediately.
|
||||
3. Enable the `normal_visual_profile`.
|
||||
4. Roll one bad trip chance using `bad_trip_chance`.
|
||||
5. If the roll succeeds, schedule the bad trip after a random delay in `bad_trip_delay_sec`.
|
||||
6. When the delay expires, apply `bad_trip_effects` and enable `bad_trip_visual_profile`.
|
||||
7. When the main duration ends, clear normal visuals and gameplay effects.
|
||||
8. When the bad trip duration ends, clear bad trip visuals and gameplay effects.
|
||||
|
||||
---
|
||||
|
||||
## Design constraints
|
||||
|
||||
### Normal trip
|
||||
Normal trip should:
|
||||
- remain comfortable for 2 to 3 minutes,
|
||||
- never make HUD unreadable,
|
||||
- never make combat or building frustrating,
|
||||
- use only light visual treatment.
|
||||
|
||||
Allowed normal visual changes:
|
||||
- subtle tint,
|
||||
- mild saturation shift,
|
||||
- mild contrast shift,
|
||||
- very light vignette,
|
||||
- very light ghosting.
|
||||
|
||||
Forbidden during normal trip:
|
||||
- strong blur,
|
||||
- strong wobble,
|
||||
- aggressive FOV change,
|
||||
- strong double vision,
|
||||
- strong screen shake.
|
||||
|
||||
### Bad trip
|
||||
Bad trip should:
|
||||
- feel clearly worse,
|
||||
- remain shorter than the main trip,
|
||||
- include nausea and hunger,
|
||||
- be visually more unstable.
|
||||
|
||||
Allowed bad trip visual changes:
|
||||
- stronger tint,
|
||||
- stronger vignette,
|
||||
- stronger saturation shift,
|
||||
- light image wobble,
|
||||
- light afterimage,
|
||||
- light brightness pulsing.
|
||||
|
||||
---
|
||||
|
||||
## Stacking rules
|
||||
|
||||
Current stacking model:
|
||||
|
||||
- Consuming the same variety refreshes that variety's duration.
|
||||
- Consuming a different variety keeps the previous gameplay effects active and adds the new variety on top.
|
||||
- Main gameplay effects from several varieties can coexist at the same time.
|
||||
- A new manual consumption rerolls the bad trip entirely from the latest variety.
|
||||
- Passive resin aura refresh keeps extending the same variety without rerolling the bad trip every tick.
|
||||
- Only one normal hemp visual profile can be active at a time: the latest active variety drives visuals.
|
||||
- Only one bad trip state can be active at a time, and a reroll replaces the previous pending or active bad trip.
|
||||
|
||||
---
|
||||
|
||||
## Effect conventions
|
||||
|
||||
### Main effect duration
|
||||
Main trip duration should stay between 140 and 180 seconds.
|
||||
|
||||
### Bad trip duration
|
||||
Bad trip duration should stay between 25 and 40 seconds.
|
||||
|
||||
### Bad trip base gameplay package
|
||||
All bad trips contain at least:
|
||||
- Nausea
|
||||
- Hunger
|
||||
|
||||
Rare and very rare varieties may add:
|
||||
- Weakness
|
||||
- Slowness
|
||||
- short Blindness
|
||||
|
||||
Use these sparingly.
|
||||
|
||||
---
|
||||
|
||||
## Data format
|
||||
|
||||
Each variety entry contains:
|
||||
|
||||
- `id`: stable machine id
|
||||
- `name_fr`: display name
|
||||
- `rarity`: common, uncommon, rare, very_rare
|
||||
- `color_family`: readable color identity
|
||||
- `main_duration_sec`: main trip duration
|
||||
- `main_effects`: list of vanilla effects
|
||||
- `normal_visual_profile`: subtle visual profile
|
||||
- `bad_trip_chance`: float from 0.0 to 1.0
|
||||
- `bad_trip_delay_sec`: min/max delay before bad trip starts
|
||||
- `bad_trip_duration_sec`: bad trip duration
|
||||
- `bad_trip_effects`: gameplay penalty package
|
||||
- `bad_trip_visual_profile`: stronger visual profile
|
||||
|
||||
---
|
||||
|
||||
## Visual profile semantics
|
||||
|
||||
### Intensity scale
|
||||
Use a 0.0 to 1.0 scale:
|
||||
- 0.05 to 0.15 = subtle
|
||||
- 0.20 to 0.35 = noticeable
|
||||
- 0.40+ = invasive
|
||||
|
||||
Normal trip should usually stay in 0.08 to 0.14.
|
||||
Bad trip may go to 0.25 to 0.50 depending on rarity.
|
||||
|
||||
### Suggested shader parameters
|
||||
A visual profile can drive:
|
||||
- `tint_strength`
|
||||
- `saturation_delta`
|
||||
- `contrast_delta`
|
||||
- `vignette_strength`
|
||||
- `ghosting_strength`
|
||||
- `wobble_strength`
|
||||
- `pulse_strength`
|
||||
|
||||
Not every profile needs every parameter.
|
||||
|
||||
---
|
||||
|
||||
## Implementation note
|
||||
|
||||
The system should be data-driven:
|
||||
- all plant tuning lives in JSON,
|
||||
- gameplay code reads the JSON,
|
||||
- visuals are picked by profile name or inline values,
|
||||
- item classes should not hardcode effect logic.
|
||||
|
||||
This allows easy balancing without rewriting gameplay code.
|
||||
Reference in New Issue
Block a user