Pascal's Wager Wiki

Arcade mode is the score-attack mode of the Dance of the Throne add-on. You pick a hero, a difficulty and either a full run or a single stage, then fight through a shortened version of each chapter against faster, harder and more heavily scored enemies. Every stage ends with a result screen that grades you from C to S and sends your score to an online ranking. The hero is a fixed preset (level 30, no equipment), so the mode tests execution rather than your save game. The add-on's centrepiece is the playable hero Elena, and the mode is where her seven achievement talents are earned.

Overview#

  • Entry: the lobby's Arcade entry needs the add-on flag (IapData.GetEnterArcade); how the gate works is in Dance of the Throne#How the game gates it.
  • Modes of play:
    • Playthrough (score key 10080): the full run, eight stages in a fixed order, one life bar, one set of talents.
    • Stage select: replay one stage on its own. Elena starts it with every arcade talent you have already earned.
    • Total High Score (key 9999): a ranking tab only. After each stage-select result the game adds up, for stages 1001 to 1008 and 2001 to 2004, the best record of any hero at that difficulty and stores the sum (CheckTotalRecord).
  • Save slots: the mode keeps its own autosave slot. A restart bumps the story loop counter (ArcadeRestart) and sends you back to the start of the run.
  • Immundus stones are time: picking up a stone gives you no stone. It cuts 30, 60, 90 or 120 seconds (Chipped, plain, Crystal, Diamond) from the stage clock, and a surplus carries back into the times of earlier stages. Nothing is cut during cutscenes or the relax time. For Elena in a full run the swap is conditional on IsTalentStoneEnough (not traced, unverified). See Immundus#hm-in-dance-of-the-throne-arcade-stones-turn.
  • Start kit: every arcade run puts a Broken Bronze Whistle (item 90001, the mode's teleport item) in quick slot 1 if you do not have one. The whistle is the only item that is guaranteed.
  • Time out of combat: after a stage boss dies the game enters a "relax time" (inferred: the stage clock stops there), and the next stage is loaded from a carriage point. The final fight ends the run and returns you to the title screen with the result screen first.

Heroes#

HeroLevelStrDexVigIntVitEndHiddenTotalTrophiesTalents
Terrence3028921813221101noneall at maximum level
Viola30934181110201102noneall at maximum level
Benita301415202012201101noneall at maximum level
Norwood303082261518199noneall at maximum level
Jerold301414201213271100noneall at maximum level
Elena301414201213271100noneplaythrough: no preset talents (see below); stage select: every talent outside her fourth row at maximum level, plus the earned fourth-row ones

Attributes are in slot order 1 to 6 with the slot labels used in Attributes (those labels are inferred), then the hidden attribute. The "Total" column excludes the hidden one. These are the exact same attribute numbers as the preset heroes of Obsession Challenge Standard Mode (ES_ArcadeHero against ES_StoryChallengeHero), but without the six preset trophies, so arcade heroes are weaker on paper.

  • Setup is FS_UserData.InitArcadeHero: it clears the item bag and trophies, then ResetToChallenge sets the attributes and sets every hero's level to 30. For every hero except Elena it also maxes every talent. For Elena, ArcadeNewGame (full playthrough) maxes nothing, while ArcadeStageSelect calls AddTalentToMaxWithOutSan, which maxes every talent except those in the fourth row (TalentPos 400 to 499, the row of the seven achievement talents).
  • Elena's preset (14/14/20/12/13/27) replaces her own base attributes, which are higher (sum 110 in ES_HeroData, see Attributes); the preset total is 100.
  • The hero list in the menu is Elena, Terrence, Viola, Benita, Norwood, Jerold. Jerold can be picked even though his campaign is in the Tides of Oblivion add-on; no flag check for him was found in the arcade menu.

Elena's talents in the mode#

In a full playthrough Elena is not given her talent tree: the code never maxes her talents, so she has only the nine default-open nodes (DefaultOpen 1; inferred that these start at level 1) and gains seven special talents by killing the seven Obsessed Ones from the Nightmare, one per stage. In stage select she instead starts with all 31 talents of rows 1 to 3 at maximum level, and the seven special talents (row 4, 38 nodes in total) come only from the achievements you already hold. Each special talent is also an achievement.

StageNightmare opponent (hero id)Talent givenAchievementEffect per codeValue
1 HeggemTerrence (10001)17401 (Shadow Moon)Shadow Moon (60005)Max Health+30%
2 AdaminaViola (10002)17402 (Path of Suffering)Path of Suffering (60006)Max Health+30%
3 ExiliumBenita (10003)17403 (Fleeting)Fleeting (60007)Stamina cost of long combos-15% (see below)
4 KatibJerold (10005)17404 (Eternal War)Eternal War (60008)Stamina cost of long combos-15% (see below)
5 EdithFrollo (20028)17405 (Demiurge's Wish)Demiurge's Wish (60009)Stamina cost of long combos-20% (see below)
6 BlessedlandElena the nun (20039)17406 (Finale)Finale (60010)Max Stamina+20%
7 Karst CaveNorwood (10004)17407 (Path of Truth)Path of Truth (60011)Max Stamina+30%

The talent names are the Chinese internal names; the English names above are taken from the matching achievement titles, which line up one to one with the talent ids and positions (inferred). The nodes sit in the fourth row of Elena's tree, the row that holds Sanity talents for every other hero (Elena talent tree).

How they are granted:

  • ControllerStoryMode:AddTalent runs when such a monster dies. It does nothing unless the controlled hero is Elena (10007). It sets the talent to level 1, refreshes stats, and credits the matching achievement.
  • In stage select, InitArcadeHeroTalent hands Elena every one of these talents whose achievement you have already finished, at the start of the stage.
  • In a full playthrough that call is not made, so the talents come only from kills inside the run (inferred: whether talents already stored on Elena's hero from an earlier run carry over was not traced). Killing all seven is required for 60001 (Legacy).
  • Because the stats are PropertyAdd (value 300 = +30% of base, via base * value / 1000) and the talents are summed, the two Health talents together give +60% max Health and the two Stamina talents +50% max Stamina.

Difficulty#

CasualNormalExpert
Menu textFor new playersFor players used to action games and the base gameDifficulty is raised across the board
Monster layout (pattern)Normal (2)Normal (2)Expert (3)
Enemy stat table (ArcadeMonsterProperty.Level)2 (Casual is mapped to 2)23
Player damage takenx0.65x1x1
Bonus to the hero+130 Toughness, +20% base Staminanonenone
Score tableNormalNormalExpert
Locked untilneverneveryou clear Normal with Elena
  • The Casual bonuses are the general Casual values (CasualDamageRatio 0.65, CasualToughnessAdd 130, CasualEnergyRatio 0.2) applied to the controlled hero; see Difficulty#What each level changes. The achievements and the Difficulty article call Expert "Hard".
  • Casual runs are scored with the Normal stage table but are stored in their own record slot (records are keyed by the difficulty you selected), so Casual, Normal and Expert have separate best scores and leaderboards.
  • Stage select unlocks when IsGamePassed is true for any difficulty, and that check only looks at Elena's record (hero 10007) for the full playthrough key 10080. A full clear with another hero does not unlock Expert or stage select.

Stages#

Order of a full run (ControllerStoryMode:FinishArcade): Heggem, Adamina, Exilium, Katib, Edith, Blessedland, Karst Cave, then the finale. Katib is deliberately fourth and Edith fifth (the code jumps 1003 to 1005 to 1004 to 1006). The finale is story id 8 (menu id 1008), the chapter that holds The First Messenger.

OrderStory idStageBossStandard timeMonsters (Normal / Expert)Kill-score pool (Normal / Expert)S rank needs (Normal / Expert)
11001HeggemMaddened Ascetic200s28 / 35440 / 55014180 / 14000
21002AdaminaHoly Father280s39 / 41770 / 83016540 / 12304
31003ExiliumJenny of Exilium320s48 / 481210 / 128017670 / 14161
41005KatibFused Sprenger600s56 / 571080 / 115518740 / 15586
51004EdithEdith520s46 / 461110 / 115017850 / 15480
61006BlessedlandProxy Higgins550s87 / 922120 / 232018210 / 14708
71007Karst CaveUsurper540s55 / 611605 / 165013860 / 13620
88 (menu id 1008)Colossus GraveThe First Messenger400s1 / 110000 / 1000021960 / 21960

"Standard time" is the par time used by the time score. The kill-score pool is the sum of the Score of every scoring enemy in the stage. "S rank needs" is TotalScore2 / TotalScore3 of the stage row. Note that for every one of the seven chapter stages, the Expert S threshold is lower than the Normal one (for example Adamina 16,540 on Normal against 12,304 on Expert). The data does not say why; on paper Expert asks for less score for the same grade.

Extra boss stages (stage select only)#

Stage select also lists four single-boss stages with story ids 2001 to 2004: Terror Obsession (2001), Guderian the Guardian (2002), Treasure Thieves (2003) and The First Fallen: Handel (2004). Each is a one-monster stage with par time 240 s and a kill-score pool of 10,000, so the whole kill score comes from the boss. The menu blocks the start with a message when the matching add-on is missing: stage 2001 needs the Dark Mist add-on (Deep into the Dark Mist) and stages 2002 to 2004 need Tides of Oblivion.

The monster table lists all three Tides bosses under story 2002 in the story-monster data (2002068, 2002070, 2002078), so the way 2003 and 2004 load their boss is not visible in that table (unresolved).

Scoring#

One stage#

time score  = min(20000, floor(20000 / (time / standardTime + 1)))
kill score  = sum over kills of floor(10000 * Score / killPool)
stage score = time score + floor(kill score * rank multiplier)
  • time is the stage time in seconds (inferred: cutscene time is tracked separately and not counted). The time score is exactly 10,000 at par, 13,333 at half par, 6,666 at twice par and approaches 0 slowly: speed matters, but the curve is gentle. The ceiling is 20,000.
  • Score is the per-enemy value in ArcadeMonsterProperty (see below) and killPool is the stage's TotalKillScore. A fully cleared stage therefore yields about 10,000 kill score.
  • Rank multiplier: the fraction of the stage's scoring monsters you have killed (dead / MonsterCount) decides it: below 40% it is x0.8 ("white"), 40% to under 70% it is x1.0 ("yellow"), and 70% or more it is x1.2 ("red"). The colour is also the colour of the score digits on the result screen. In stage select the boss counts as one extra kill. Enemies that respawn (the ArcadeRefreshMonsterList ids) and enemies that were summoned by another monster are not scored, and respawning ones and NPCs are not counted either.
  • Grade: score / TotalScore of the stage (Casual uses the Normal column): 100% or more is S, 80% or more A, 50% or more B, otherwise C.

Whole run#

For a full playthrough the run score is the sum of the eight stage scores, each computed with its own time and kill data. The overall grade averages the stage grades with S = 4, A = 3, B = 2, C = 1 points: an average of 4 or more is S (so every stage must be S), 3 or more is A, 2 or more is B, below that C. The result is stored under key 10080 for the run, plus a separate record for the last stage.

What gets rejected#

MainmenuCtrl.CheckIsValidData throws away a result (no record, no ranking) when the stage score is 32,000 or more, or when the hero's physical damage stat is above 242. 32,000 is exactly the theoretical maximum (20,000 time score at 0 seconds plus 10,000 x 1.2), so a perfect-in-theory run is not accepted.

Records and rankings#

Records are stored per (difficulty, hero, story id) and keep the highest total score, using the shorter time as the tiebreak. Each result is uploaded for the online ranking; the module defines a 15-second request cooldown for rank lists. The result screen can show how many "Couriers" you beat.

Enemy scaling#

ArcadeMonsterProperty has 156 rows: one per (monster hero id, difficulty table 2 or 3, grade/phase). Unlike Obsession Challenge, almost every row is a level override and a score rather than a stat patch: MonsterLevel replaces the monster's level for the whole mode (level = propertyData.MonsterLevel), and Score is its kill-score weight. Only 19 of the 156 rows carry flat stat changes, in the same format as the challenge table (5 of them on bosses, listed in the table above).

  • Ordinary enemies: 43 of the 74 monster ids are ordinary enemies (the rest are 5 hero opponents, 15 bosses and 11 helpers); 39 of those use level 10 on Normal/Casual and level 15 on Expert. Their Score is 0 to 35: 14 are worth 0, most of the others 5 to 25, and one knight type is worth 35 on Normal and 50 on Expert.
  • Bosses and mini-bosses:
OpponentNormal levelExpert levelKill score weightOther
Maddened Ascetic1020200
Holy Father818400
Rosen Cavalier Patrick815350Normal only: physical damage -100
Jenny of Exilium1222350
Edith1222350
Frollo818250
Fused Sprenger1222600
Elena (nun, 20039)510100
Proxy Higgins8161000 (phase 1 only)phase 4 spawn: level 1 / 2, HP -800 / -500, physical damage +50 / +80
Usurper1222800
The First Messenger102510000final fight
Terror Obsession83010000Weakness -40 on both; Expert physical damage -130
The First Fallen: Handel61010000
Guderian the Guardian81510000
Treasure Thieves61010000
  • Player heroes as enemies: the Nightmare opponents (Terrence level 18/24, Viola 12/20, Benita 15/20, Norwood 20/24, Jerold 20/24) have score 50 in this table. The table also contains 11 helper ids in the 90001 range (a base, eggs, eyes, tentacles, a crow, a frog, the pope figure, a light point and the carriage driver, by their Chinese names) with score 0; the tentacles and the eye have 1 level and HP cuts of -100 to -500 so they die quickly.
  • Phase rows: Proxy Higgins has four grades; grade 4 is a weak level 1 or 2 entity (probably a spawned copy). The two nobles (male and female) get +50 Toughness in their second phase on Normal.
  • Elite stat patches: the poison impostor gets +1,000 HP (Normal) or +1,500 (Expert).

Names for ordinary enemies exist only in Chinese in the data, so they are not listed here; see Enemies.

Hidden mechanics#

  • Elena's talents differ between the two ways to play. Stage select hands her all 31 talents of rows 1 to 3 at maximum (everything except the seven achievement talents), so she is far stronger there than in a full run, where the code gives her no preset talents at all (AddTalentToMaxWithOutSan is called only from ArcadeStageSelect).
  • Only Elena's full clear counts for unlocks. Expert and stage select check hero 10007 specifically.
  • Expert is easier to S than Normal on all seven chapter stages (S thresholds are lower), although its enemies are 5 levels higher.
  • Elena's stamina-cost talents do nothing. Fleeting, Eternal War and Demiurge's Wish (17403 to 17405) are type 103 with the condition string "1". The only place the game reads that talent type (Hero10007_Value:GetSkillEnergy) asks for the value with parameters 0 and 0, and MS_HeroTalentCondition:IsConditionPermit rejects any non-skill talent that has a condition when the first parameter is not above 0. The identical effect on Jerold (talent 15210) has an empty condition and works. The code settles it: the total is always 0 (structdata/ms_herotalentcondition.lua:41-67, fs_herodata.lua:401-433, hero10007_value.lua:49-58).
  • The Health and Stamina talents have misleading labels. Path of Suffering is described as a greater Health bonus than Shadow Moon, yet both are +30%. The two cost talents Fleeting and Eternal War are described as "slightly reduces" and "reduces" but both are 150.
  • The combo-stamina talent only works after the third consecutive attack (TalentComboAttackNum is 3), like Jerold's.
  • Score cap and the damage cap are anti-cheat. A stage score of 32,000 or more, or a physical damage stat above 242, is silently not recorded. This also means heavily damage-boosted hero builds are not possible anyway, since the hero is a fixed preset.
  • Rank multiplier counts monster deaths, not points. Killing the many weak enemies matters for x1.2 as much as killing a boss, and respawning enemies are excluded so they cannot be farmed.
  • Casual is a damage cut, not an enemy cut. Enemies are the same as on Normal; the hero's bonuses are in Difficulty#Casual in detail.
  • Sanity barely matters. Outside boss fights sanity gains and losses are ignored (Sanity in special areas#Arcade mode).
  • Altars in the mode. The altar text for the mode says resting restores health and Health Potions "or obtains new Talents". Only the Nightmare kills were found to grant talents in code.

Achievements#

The 15 achievements of the mode and their goals are listed in Achievements#Dance of the Throne; the seven talent unlocks are in Achievements#Elena talent unlocks. What the code checks:

  • Legacy (60001): counts the kills of the seven ids 1001054, 1002088, 1003088, 1004065, 10050137, 10060135 and 1007095.
  • Demiurge Dancer (60002): granted by AddArcadeHeroAllTalent.
  • First Awakening (60003): any run record under key 10080. Endless Nightmare (60004): an Expert (level 3) record of hero 10007.
  • Shadow Moon to Path of Truth (60005 to 60011): one per Nightmare opponent; each also grants its talent.
  • Empress of the Eternal Night (60012): overall grade S while the pattern is Expert.
  • Return to Sender (60013): ParryTimesInTime. Deadly Elegance (60014): MissEnemyHitThreeTimes. Lost in a Dream (60015): a story item in Blessedland.

Sources#

  • luascript/structdata/fs_arcade.lua:1-35, 101-175, 590-730 (keys, records, score, grade, achievements); fs_savestory.lua:12-32, 1122-1250 (ArcadeNewGame1122,ArcadeStageSelect1180-1232), 2049-2083 (rank multiplier), 1333-1372, 2016-2110; fs_userdata.lua:91-122; fs_herolist.lua:158-169; fs_herodata.lua:307-345, 401-434.
  • luascript/controller/controllerstorymode.lua:1500-1512, 1722-1739, 1752-1778, 2915-2930, 3018-3030, 3490-3515, 3590-3612; luascript/ui/controller/mainmenuctrl.lua:8895-9091, 9102-9184; luascript/ui/controller/arcadectrl.lua:104-120, 266-310, 393-495; controller/controllerstorymode.lua:5558-5562 and logic/item/itemscene.lua:33-42 (stone pickups become time), structdata/fs_savestory.lua:3813-3842 (SubGameTime).
  • luascript/structdata/ms_arcademonsterproperty.lua:20-35; ms_herotalentcondition.lua:41-72; logic/playervalue/hero10007_value.lua:52-61; logic/playervalue/animalbase_value.lua:209-215, 3135-3160; gamedata/playerdefine/animalbase_value_define.lua:22-24, hero10007_define.lua:59; luascript/sdk/iapdata.lua:4-7, 445-480.
  • Tables: ES_ArcadeHero rows 1 to 6; ES_ItemData 50001-50004 (Param1 72001-72004) and 72001-72004 (type 712, Param1 30 / 60 / 90 / 120); ES_ArcadeMonsterProperty rows 1 to 156; ES_StoryData rows 51 to 62 and 8; ES_HeroTalent ids 17401 to 17407, 15210; ES_StoryMonster rows with TalentAdd; ES_Achievement ids 60001 to 60015; GameText UI_ARCADE_*.
Categories:Game modes