Pascal's Wager Wiki

Skins are alternate character models. Pascal's Wager ships four optional outfits, one each for Terrence, Viola, Benita and Elena. They change only how the hero looks: the game always reads stats, talents and moves from the base hero, and no outfit has any gameplay data of its own. The outfits are sold as separate Steam add-ons, none of them can be earned in the game.

All skins#

Skin idHero (model id)In-game titleTypeUnlocked by defaultDescription (summary)
1000Terrence (10001)Terrence (Default)Default lookYesNone
1001Terrence (11001)Herald OutfitOutfitNoTerrence after giving up everything, with the thought that the night journey would turn into a long nightmare
2000Viola (10002)Viola (Default)Default lookYesNone
2001Viola (11002)Initiation RiteOutfitNoA coming-of-age ceremony under silver moonlight that exists only in one of Viola's deep dreams
3000Benita (10003)Benita (Default)Default lookYesNone
3001Benita (11003)Sleeping BeautyOutfitNoA reference to the bewitching flower that bloomed in a dark corner of Blessedland, still remembered in tales
4000Norwood (10004)Norwood (Default)Default lookYesNone
5000Jerold (10005)Jerold (Default)Default lookYesNone (title is still Chinese in the English text)
7000Elena (10007)Elena (Default)Default lookYesNone
7001Elena (11007)EnigmaOutfitNoElena's costume of absolute devotion to Demiurge philosophy; "Enigma" is a title given to very few Demiurges who explore taboos
9301Elena as enemy (21039)Irina outfit (Chinese text only)Enemy-only lookYes (flag)None

Skin 9301 is a special case; see Hidden mechanics.

Unlocking and wearing#

  • Default looks have Enable = 1 in the skin table and are always available. The four outfits have Enable = 0. The column ShowQuestId is empty for every skin, so no quest or achievement unlocks a skin.
  • The outfits are tied to Steam add-on products. In the Steam product table of the game (IapData.STEAM) the product ids are 1460740 (hero11001, Herald Outfit), 1460741 (hero11002, Initiation Rite), 1460742 (hero11003, Sleeping Beauty) and 1460745 (hero11007, Enigma), each priced at 6 CNY in the data. The same table also holds the content add-ons: 1460743 dlcmaze1 (price 6, the Dark Mist maze, see Deep into the Dark Mist), 1460744 dlcstory1 (price 18, the Tides of Oblivion story with Jerold) and 1460746 dlcarcade (price 12, Arcade mode).
  • A skin counts as available when its id matches an entry hero<model id> in the add-on list (CheckValid in the wardrobe and the character select) or when it is a default look. Locked outfits show a message asking the player to unlock the outfit first.
  • Wardrobe (WearCtrl): lists only skins whose id is below 5000, so it shows Terrence, Viola, Benita and Norwood. Elena's outfit and Jerold appear in the character-select costume list instead (ChooseHeroCtrl), which lists every skin of the chosen hero.
  • In the Player Info screen the outfit toggle flips between default (index 0) and outfit (index 1) of the current hero. It is only active if the hero has an outfit at all (GetSkinMax).
  • The choice is saved per hero in the story save (heroSelectSkinList), so every save can use different outfits.

Hidden mechanics#

Model id arithmetic. A hero's outfit is a different model whose id is built from the base hero: 10000 + base index + skin index x 1000. Terrence's outfit is 11001, Viola's 11002, Benita's 11003 and Elena's 11007. ConvertHeroIdWithoutSkin reverses this (anything above 11000 is reduced by modulo 1000) so that all stat lookups use the base hero. This is why outfits can never change numbers.

Where the outfit really appears. UpdateSkin is only run in the story battle type, so the outfit is a model swap during the story. In ordinary story areas the game swaps in an outfit for Viola, Benita and Elena only when that outfit's model is in the list of loaded party members; Terrence's outfit is applied without that check. In the maze, the carriage, the Obsession Challenge and Arcade mode the outfit is applied directly without the party check.

Enemy Elena has her own look swap. In Arcade mode the code turns enemy model 20039 (Elena as a boss, stage 1006) into model 21039 whenever the player's Elena is wearing the default outfit. When the player wears Enigma, the enemy stays 20039. The skin table records this variant as skin 9301 with the Chinese title "Irina outfit"; it is never shown in menus because the wardrobe only lists ids below 5000 and the enemy has no skin selection. The purpose appears to be keeping the player and the boss visually distinct (inferred).

Flag always on in this build. In this Lua build the add-on records are created with valid = true, and the only assignments to valid anywhere in the SDK helper set it to true as well. So the Lua check can never reject an outfit once the product table has been loaded; actual ownership must be enforced by native Steam code that is not part of the scripts (inferred). Do not assume the outfits are locked by script alone.

No unlock path for Norwood and Jerold. Both have only their default look: GetSkinMax is 0 for them, so the outfit button never appears.

Trivia#

  • The English description of Elena's Enigma outfit is the only skin text that mentions her philosophy; the other three are short mood lines.
  • The Jerold default skin is the only one left with a Chinese name in the English text file.

Sources#

  • reference/lua_src/luascript/structdata/ms_storyskin.lua:1-110 (skin index, lists, GetSkinList below 5000, GetDefaultOpen)
  • logic/battle/battledata.lua:371-435 (ConvertHeroIdWithoutSkin, ConvertHeroIdWithSkin, 20039 to 21039 rule)
  • logic/player/animalbase.lua:1059-1125 (UpdateSkin, InitSkin)
  • structdata/fs_savestory.lua:2826-2840 (InitSelectSkin, GetSelectSkin)
  • ui/controller/wearctrl.lua:50-75, 129-200, 244-260; ui/controller/chooseheroctrl.lua:408-500; ui/controller/playerinfoctrl.lua:2987-3050
  • sdk/iapdata.lua:328-410 (Steam products 1460740 to 1460746); sdk/sdkhelper.lua:470-560, 640-660 (valid flag)
  • Tables: es_storyskin.lua rows 1-11 (SkinId, HeroId, Enable, ShowQuestId); English text: kit text/StorySkin.jsonl; hero names: kit text/HeroData.jsonl (20039 is Elena)