The Easter eggs in P&K Forever aren’t traditional video game secrets - they’re bridges between the digital and physical world. When Anastasia plays the game and discovers something, something real appears in the physical world.
This gamification of reality creates a unique experience where:
This is the authoritative machine-readable keyword list. It is parsed at
runtime by scripts/handoff/playtest.sh (presence check in rendered page
content) and by scripts/check-easter-eggs.sh (CI check that every keyword
appears in at least one v1-modern/src/scripts/*.narrat file).
Format: one keyword per line inside the fenced block below. Do not
reformat, add prose, or split the block — the parsers look for
```keywords as the block fence.
MANGO
TEA
CHOCOLATE
KITE
LOVE
FLY
TIGER
SNAKE
ZODIAC
FUTURE
NECKLACE
BROMPTON
JAFFA
JAPAN
PNK-n3zk7MAMBG-GIFT
When adding a new easter egg, append its keyword here and reference this list from any runtime or docs that would otherwise hard-code it.
All Easter eggs use IFTTT (If This Then That) webhooks to trigger real-world actions.
Base URL: https://maker.ifttt.com/trigger/{EVENT_NAME}/with/key/buN0S2VUtrVLjyoCLowl7X
Security Note: The webhook key is embedded in the game code. This is intentional for this specific use case (personal game for Anastasia), but should be reconsidered for any public version.
Trigger Location: Beach Sunset Conversation Topic: FOOD → MANGO Player Action: Selecting the MANGO dialogue option
In-Game:
{
option: "**MANGO**! 🥭",
line: "I like them so much, I eat them all the time",
prereqs: ["food"],
removeOnRead: true,
onSelected: () => {
fetch(
`https://maker.ifttt.com/trigger/pnk_mango/with/key/buN0S2VUtrVLjyoCLowl7X?value1=mango`
);
},
}
IFTTT Event: pnk_mango
Parameter: value1=mango
Real-World Effect: Potentially triggers delivery or appearance of fresh mangoes 🥭
Narrative Significance: Phoenix revealing her favorite fruit - a personal detail that becomes real
Trigger Location: Beach Sunset Conversation Topic: DRINK → TEA Player Action: Selecting the TEA dialogue option
In-Game:
{
option: "**TEA** 🫖",
line: "YES! I love to take my tea with herbs: Mint & Lemon verbena. no suger please",
removeOnRead: true,
prereqs: ["drink"],
onSelected: () => {
fetch(
`https://maker.ifttt.com/trigger/pnk_drink/with/key/buN0S2VUtrVLjyoCLowl7X?value1=tea`
);
},
}
IFTTT Event: pnk_drink
Parameter: value1=tea
Real-World Effect: Potentially triggers tea preparation or delivery (Mint & Lemon verbena, no sugar)
Narrative Significance: Specific preferences matter - the game remembers “no sugar”
Trigger Location: Beach Sunset Conversation Topic: SWEET → CHOCOLATE Player Action: Selecting the CHOCOLATE dialogue option
In-Game:
{
option: "**CHOCOLATE** 🍫",
prereqs: ["sweet"],
removeOnRead: true,
line: `I like many chocolates, I love them all. But many dark chocolate
**TIP** look for a drawer it number is four
`,
onSelected: () => {
fetch(
`https://maker.ifttt.com/trigger/pnk_chocolate/with/key/buN0S2VUtrVLjyoCLowl7X`
);
},
}
IFTTT Event: pnk_chocolate
No parameters
Real-World Effect: Triggers chocolate placement, likely in a specific location
Physical World Hint: “look for a drawer it number is four”
Narrative Significance: The game explicitly tells the player to look in the real world - breaking the fourth wall intentionally
Trigger Location: Jaffa Street Item: Kite Equipment Player Action: TAKE kite
In-Game:
{
name: ["Kite equipement", "Kite", "Kite Board"],
desc: `You found your Kite Board.`,
isTakeable: true,
onTake: () => {
println(`You took your Kite Board
Use this code in the future for a special discout: \`PNK-n3zk7MAMBG-GIFT\`
`);
fetch(
`https://maker.ifttt.com/trigger/pnk_kite/with/key/buN0S2VUtrVLjyoCLowl7X`
);
},
}
IFTTT Event: pnk_kite
No parameters
Discount Code: PNK-n3zk7MAMBG-GIFT
Real-World Effect:
Narrative Significance:
Item Appears: Only after using the bed in Jaffa Apartment (sleeping together unlocks it)
Trigger Location: Kitchen (Kyoto) OR Home (TLV) Conversation Topic: LOVE Player Action: Selecting “I LOVE you”
In-Game (Kitchen):
{
option: "I **LOVE** you 🧡",
line: `I love you too. 🖤`,
onSelected: () => {
isLove = true;
fetch(
`https://maker.ifttt.com/trigger/pnk_love/with/key/buN0S2VUtrVLjyoCLowl7X`
);
},
}
In-Game (Home):
{
option: "I Love you 🧡",
line: `I love you too. 🖤`,
onSelected: () => {
fetch(
`https://maker.ifttt.com/trigger/pnk_love/with/key/buN0S2VUtrVLjyoCLowl7X`
);
},
}
IFTTT Event: pnk_love
No parameters
Real-World Effect: Potentially the most significant trigger - could activate lights, music, message, or physical surprise
Narrative Significance:
isLove = trueAvailable: In the Kitchen after entering, and in the final Home location
Trigger Location: Kitchen (Kyoto) Item: Infinity Ouroboros Necklace Player Action: USE necklace
In-Game:
{
name: ["necklace", "Infinity Ouroboros double necklace"],
desc: "A gift from K. a unique design that symbolize our relationship",
onUse: () => {
println(
`You put the necklace sign on your neck. 🧡🖤🧡🖤`
);
println(`K. Says I think it's time to fly back to TLV
Let's got out of here together & fly`);
const kitchen = getRoom("kitchen");
const exit = getExit("south", kitchen.exits);
delete exit.block;
fetch(
`https://maker.ifttt.com/trigger/pnk_fly/with/key/buN0S2VUtrVLjyoCLowl7X`
);
},
}
IFTTT Event: pnk_fly
No parameters
Real-World Effect: The ultimate trigger - potentially the most significant physical surprise or reveal
Narrative Significance:
Symbolism:
Item Acquisition: Only given through K’s conversation after the FUTURE topic
Characteristics:
Characteristics:
Characteristics:
isFlyOn (boolean)
falsetrue when FLY command is unlockedisLove (boolean)
falsetrue when player first says “I LOVE you” in the kitchenk.agreedToTravel (boolean)
true when player selects JAPAN destinationThe FLY command isn’t available at game start - it’s added dynamically:
commands[2] = Object.assign(commands[2], { fly });
updateHelpCommand(`FLY TO [ROOM NAME] e.g. 'fly to room'`);
isFlyOn = true;
This teaches the player that the game world can change based on narrative progression.
The Easter eggs create a multi-layered experience:
Layer 1: Digital Discovery Player finds the trigger in the game (conversation, item)
Layer 2: Game Feedback Game acknowledges the discovery (dialogue, unlock, code reveal)
Layer 3: Real-World Effect IFTTT webhook triggers physical surprise
Layer 4: Physical Discovery Anastasia finds the real-world result (mangoes appear, tea is prepared, drawer #4 contains something, etc.)
Layer 5: Connection Realization Understanding that the game and reality are linked
Uses browser’s native fetch() API - no dependencies
Webhooks fire asynchronously - game doesn’t wait for response
No error handling on webhook calls - intentional for simplicity Failed webhooks fail silently (won’t break game experience)
Most Easter eggs can trigger multiple times if:
removeOnReadException: Most topics are removeOnRead: true, preventing repeated triggers in single playthrough
When modernizing, consider:
The brilliance of this system is that it makes the game a love letter that unfolds in both digital and physical space simultaneously.
Anastasia isn’t just playing a game about how they met - she’s experiencing new surprises in real-time, orchestrated through her progress in the story.
The game becomes:
This is what makes P&K Forever special. It’s not just a game you play - it’s a game that plays out in your life.