Skip to content

Add Freaky Forester random event#1065

Closed
HarleyGilpin wants to merge 3 commits into
GregHib:mainfrom
HarleyGilpin:random-events/freaky-forester
Closed

Add Freaky Forester random event#1065
HarleyGilpin wants to merge 3 commits into
GregHib:mainfrom
HarleyGilpin:random-events/freaky-forester

Conversation

@HarleyGilpin

@HarleyGilpin HarleyGilpin commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Overview

Freaky Forester random event

Implements the random event trigger, kidnap teleport and mysterious old
man framework, plus the Maze random event where players navigate to a
central shrine before time runs out.

Tutorial Island is tagged no_random_events so events don't fire there.

Ref GregHib/void-private#223
Extend the random event system beyond the kidnap-to-instance pattern so
in-place nagging events (Certer, Sandwich Lady, Evil Twin) can be built:

- RandomEvents.noteAndTeleport: ignore penalty that notes the player's
  inventory then exiles them, so an event can't be macroed through.
- InPlaceRandomEvent + startInPlaceEvent/endInPlaceEvent: spawn an event
  NPC beside the player that follows and nags on a timer, applying the
  ignore penalty when its lifetime runs out.
- Decouple entry from the old man: the trigger now calls RandomEvents.start
  directly and each launcher owns its intro. Kidnap events call the new
  mysteriousOldMan() helper; in-place events spawn their own NPC. Maze's
  launcher allocates its instance before the intro so a resumed timer
  doesn't fail the event mid-intro.
- rewardCostumeOrCoins: shared collect-the-set reward (camo, lederhosen).

Ref GregHib/void-private#223
The player is teleported to the forester's clearing and told to kill a
pheasant with a specific number of tails. Only the assigned pheasant
drops the correct raw pheasant; wrong ones drop an incorrect one that the
forester rejects. Handing in the correct pheasant rewards the first
missing lederhosen piece, or 500 coins if the set is complete.

- Conditional pheasant drops keyed to the killer's assigned task
- Blocks attacking further pheasants once one is killed
- Static pheasant spawns in the clearing; forester dialogue drives the task
- Removes the unconditional pheasant drop table (drops are now per-task)

Ref GregHib/void-private#255
@HarleyGilpin

Copy link
Copy Markdown
Contributor Author

Folded into the main random events PR #1064, which now accumulates the framework and all 18 events. See the checklist there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant