effect: "Abunakkashii and his Offspring gain a bonus of +2 Strength.",
requires: ["abunakkashii"],
unique: true },
+ { name: "The start of a legend.",
+ effect: "Abunakkashii and his Offspring gain a bonus of +1 Strength.",
+ requires: ["abunakkashii"],
+ unique: true },
{ name: "Technological prowess.",
effect: "Traps gain a bonus of +1 Strength.",
requires: ["traps"] },
effect: "Psi monsters gain a bonus of +1 Strength.", },
{ name: "A cry in the night.",
action: "An adventurer of your choice loses 1 Mana." },
+ { name: "Vague psi.",
+ action: "Lose all your Mana tokens." },
{ name: "It's an ambush!",
action: "Place a Tenacity token on each monster that does not have one." },
{ name: "The alarm is sounded.",
unique: true },
{ name: "Red herring.",
action: "Shuffle the remaining corridors together and redistribute the cards as if you were setting up the game." },
+ { name: "The torch has gone out.",
+ action: "The next dungeon card is placed face-down.", },
+ { name: "Anti-psi zone.",
+ effect: "You do not gain Mana tokens for the next three creatures you defeat, even if they have a Mana icon.",
+ unique: true },
+
+ { name: "Necromancy.",
+ action: "Return a random defeated dungeon card to the lowest corridor and shuffle it." },
+ { name: "Reanimation.",
+ action: "Return a random defeated dungeon card to the highest corridor and shuffle it." },
+
+ { name: "Malediction.",
+ action: "Discard a quest or a magic item." },
+
+ { name: "False brethren.",
+ effect: "All Demons gain Immunity 5 and Immunity 7.",
+ requires: ["demons"],
+ unique: true },
+
+ { name: "Psi assault.",
+ effect: "You cannot use ultimate powers.",
+ unique: true },
+/* TODO: Figure out how to implement this well.
+ { name: "Entering an anti-magic zone.",
+ effect: "You cannot use ultimate powers.",
+ unique: true,
+ duration: 3,
+ later: { name: "Leaving the anti-magic zone.",
+ effect: "You may use ultimate powers again." }
+ },
+*/
// Events from Sean Allen's random scenario generator.
// http://boardgamegeek.com/filepage/57107/random-scenario-generator
{ name: "Fire from above.",
effect: "Dragons gain a bonus of +1 Strength.",
requires: ["dragons", "noncanonical"],
unique: true },
- { name: "Bad dreams.",
+ { name: "Overwhelming fear.",
action: "Lose 1 extra Courage token. (The dungeon does not gain another Fear token.)",
requires: ["noncanonical"],
unique: true },
effect: "Any monster with a Tenacity token is also <strong>Fierce</strong>.",
requires: ["noncanonical"],
unique: true },
- { name: "Surrounded.",
+ { name: "The tide has turned.",
effect: "All monsters have <strong>Supremacy</strong>.",
requires: ["noncanonical"],
unique: true },
- { name: "The torch has gone out.",
- action: "The next dungeon card is placed face-down.", },
-
- // Events from Stephane Renard's scenario.
- // http://docfox.free.fr/spip.php?article129
- { name: "Malediction.",
- action: "Discard all quests.",
- requires: ["noncanonical"],
- unique: true },
- { name: "Reanimation.",
- action: "Return a random spent dungeon card to the smallest corridor and shuffle it. (If you haven't spent any cards, nothing happens.)",
+ { name: "Lost.",
+ action: "Shuffle the remaining corridors together and redistribute the cards as if you were setting up the game.",
requires: ["noncanonical"] },
- { name: "Zone of silence.",
- effect: "Temporary and Ultimate Powers cannot be used until you reveal a new card.",
+ { name: "Into the darkness.",
+ effect: "Choose one corridor. Its cards are now always placed face-down.",
requires: ["noncanonical"] },
-
+
// Events of my own devising.
{ name: "Unwanted attention.",
effect: "Unique monsters gain a bonus of +1 Strength.",
effect: "Greenskins have 1d8 Strength.",
requires: ["noncanonical"],
unique: true },
- { name: "Lost in the fog.",
+ { name: "Twisty passages.",
effect: "After defeating a card, roll a die. On an odd number its replacement is placed face-down.",
requires: ["noncanonical"],
unique: true },
effect: "Bubbleyes have <strong>Veil of Shadow</strong>.",
requires: ["noncanonical", "bubbleyes"],
unique: true },
+ { name: "Leeched power.",
+ action: "A random adventurer loses a Mana token.",
+ requires: ["noncanonical"] },
];
-var NOTHING = { name: "Nothing happens." };
+var NOP = [
+ { name: "Nothing happens." },
+ { name: "A draft blows down the hallway.",
+ requires: ["noncanonical"] },
+ { name: "You sneeze.",
+ requires: ["noncanonical"] },
+ { name: "There's a skittering in the distance.",
+ requires: ["noncanonical"] },
+];
+
+var HELPFUL = [
+ { name: "It cuts both ways.",
+ action: "Next time you roll a 1, put a Tenacity token on all face-up monsters and roll again.",
+ requires: ["helpful"] },
+ { name: "Breached their defense.",
+ action: "Gain 2 Courage tokens and the dungeon gains 1 Fear token and the Fate Chart advances; <em>or</em> gain 1 Mana token.",
+ requires: ["helpful"], unique: true },
+ { name: "Mana ritual.",
+ action: "Discard up to 2 Mana tokens. For each one discarded, gain 1 Courage token.",
+ requires: ["helpful"] }
+];
+
var LOSE = { name: "Your adventuring party is defeated!" };
function randrange (a, b) {
for (i = 0; i < events; ++i)
chosen.push(choice(EVENTS.filter(canStillHappen)));
- for (i = 0; i < nop; ++i)
- chosen.splice(randrange(0, chosen.length), 0, NOTHING);
+
+ for (i = 0; i < nop / 2; ++i) {
+ var helpful = HELPFUL.filter(canStillHappen);
+ var neutral = NOP.filter(canStillHappen);
+ chosen.splice(
+ randrange(0, chosen.length), 0,
+ choice(helpful.length ? helpful : neutral));
+
+ }
+ for (;i < nop; ++i) {
+ var neutral = NOP.filter(canStillHappen);
+ chosen.splice(randrange(0, chosen.length), 0, choice(neutral));
+
+ }
chosen.push(LOSE);
return chosen;