161 lines
4.1 KiB
Markdown
161 lines
4.1 KiB
Markdown
# 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.
|