Viola is the second playable hero of Pascal's Wager. She fights with a musket called Firelock that doubles as a bayonet and a club, and she is the only hero whose damage comes mostly from a magazine. She carries three kinds of ammunition (white, red and blue), a 6-round magazine for each, and a small shared reserve of the coloured rounds. This page gives her numbers from the game's own tables: starting stats, how her attributes grow, every move with its damage, costs and range falloff, the bullet and ammo rules the game never explains, and the changes of her Abnormal state.
Overview#
The game introduces Viola as a mysterious young woman whom Terrence rescued. She says she was once a courier who was driven out by the Church. The chapter 1 quest text already has the two travelling together, but as a playable hero she joins the party in the second story chapter, right after the execution scene (quest 25042; Chapters#Adamina (chapter 2)), and she leaves it again at several later points. Completing her own story unlocks the achievement "Blood Ties" (see Achievements#Pascal's Wager).
Mechanically she is the fragile glass cannon of the early roster:
- The lowest starting Defence (39) and Health (724) of any hero, and two Health Potion slots (Terrence has three; every other hero also has two).
- The highest Dexterity: Dexterity feeds her Attack (rate 700), her crit rate (1000) and, above all, her crit damage (1300). Her starting crit rate (64) and crit damage (307) are the highest of the cast.
- A gun kit built around ammunition. White bullets are free and unlimited; red and blue bullets are limited but hit much harder (see Viola#Bullets and ammunition).
- Melee is not an afterthought but her Rage engine: each hit of her three-hit Light chain gives 12 Rage, four times Terrence's 3 per hit.
Base stats#
Viola starts with these attribute points (HeroData row 10002). The hidden seventh attribute feeds the fixed stats (Sanity, Rage, Power).
| Strength | Dexterity | Vigor | Intellect | Vitality | Endurance |
|---|---|---|---|---|---|
| 9 | 15 | 13 | 11 | 10 | 14 |
Feeding those points through her rate table (the formula is on Attributes#The formula) gives:
| Stat | Start | Notes |
|---|---|---|
| Health | 724 | |
| Stamina | 398 | Regenerates 40% of the bar per second; the highest Stamina of the cast |
| Attack (Physical) | 56 | Her only attack stat |
| Crit rate / Crit damage | 64 / 307 | per mille: a real chance of 65/1001, about 6.5%, and +30.7% damage (see Critical hits#The stats) |
| Defence (Physical) | 39 | The lowest of any hero |
| Fire / Poison / Arcane / Shadow resistance | 54 each | One shared value |
| Pierce resistance | 252 | |
| Trophy shield / Skill shield | 724 / 724 | See Shields and protection#Shields |
| Sanity | 100 | Fixed |
| Rage | 100 | Fixed maximum |
| Power | 100 | Not used by her moves |
| Poise | 0 | See Poise and stagger#How a hit is resolved |
| Resilience | 10000 | Fixed internal value; see Weakness and execution#The Resilience gauge |
What each attribute feeds#
| Stat | Strength | Dexterity | Vigor | Intellect | Vitality | Endurance |
|---|---|---|---|---|---|---|
| Attack | 200 | 700 | ||||
| Crit damage | 100 | 1300 | ||||
| Crit rate | 1000 | |||||
| Health | 800 | |||||
| Trophy shield, Skill shield | 800 | |||||
| Defence | 250 | 50 | 50 | 450 | ||
| Fire/Poison/Arcane/Shadow res. | 150 | 100 | 100 | 600 | 50 | |
| Pierce resistance | 2500 | 2500 | ||||
| Stamina | 850 |
Compared with Terrence, Viola trades Strength and Vigor for Dexterity: her Attack rate comes mostly from Dexterity (700 against 50), her Health and shield rates are lower (800 against 900), her Defence leans on Vitality (450 against 600) and her Stamina rate is higher (850 against 700). The curve tables that turn attribute points into stat values are the same for every hero (checked for all six attributes), so the growth samples on Attributes#The curves apply to her too; only the rates above differ. See Attributes#The formula and Character stats#How the number in battle is built.
What the very top of each attribute is worth, compared with her starting values (only that attribute raised to 99):
| Attribute at 99 | Gains |
|---|---|
| Strength | Attack +31, Crit damage +19, Defence +41, resistances +24 |
| Dexterity | Crit damage +234, Crit rate +84, Attack +92, Defence +7, resistances +14 |
| Vigor | Health +772, Trophy and Skill shield +876 each, Defence +7, resistances +15 |
| Intellect | Resistances +94, Pierce resistance +393 |
| Vitality | Defence +73, Pierce resistance +405, resistances +8 |
| Endurance | Stamina +316 |
If every attribute were raised to the same value:
| All six attributes at | 20 | 30 | 40 | 50 | 75 | 99 |
|---|---|---|---|---|---|---|
| Attack | 83 | 130 | 153 | 164 | 176 | 180 |
| Crit rate / Crit damage | 69 / 320 | 79 / 348 | 89 / 387 | 99 / 442 | 124 / 513 | 148 / 560 |
| Health | 948 | 1219 | 1344 | 1420 | 1475 | 1496 |
| Defence | 78 | 121 | 143 | 153 | 164 | 168 |
| Stamina | 487 | 584 | 637 | 674 | 702 | 714 |
At full investment she has the same 180 Attack as Terrence, but with more crit damage (560 against 380) and less Health (1496 against 1683). Dexterity alone from 15 to 99 raises her Attack from 56 to 148.
Weapons and style#
Viola has one weapon, the musket Firelock (the code calls it WeaponGun). The hero info screen describes her buttons as follows (summary of the Chinese original; the English version swaps the first two, see below):
| Button | Original text (summary) | What it really does |
|---|---|---|
| Light | Swing the musket | Three-hit melee chain (move 5); chains into the Light Combo art |
| Heavy | Quick shots; hold to aim | Heavy shots, Dodge shot, Snipe; reloads when the magazine is empty |
| Special | Press to load a full chamber, release to fire everything | Reload (tap), Rapid-Fire (hold), and the window for her Counter Attack |
| Dodge | Dodge, dash | Two dodges in a row (moves 102 combo 1 and 2) |
| Bullet switch | Tap to change bullets | Cycles white, red, blue (move 16) |
The English version of the Light and Heavy descriptions is swapped relative to the Chinese text and to the code. The English UIHeroInfo says Light is a "quick shot" and Heavy is a weapon swing, but the Chinese original says Light swings the gun and Heavy fires fast, and the move tables agree: the Light chain (move 5) is melee with no ammo cost, the Heavy chain (moves 3 and 4) fires bullets. The hero summary line (UISkillDescription) reads "tap to change bullets, hold to aim".
The in-game skill names for her arts (UISkillInfo) are Impaling, Swinging, Bloody Shot (full Rage), Concussive Shot (full Rage) and Swinging Kick. By their Rage labels and effects, "Bloody Shot" is the full-Rage Snipe with a red bullet (it applies Bleed) and "Concussive Shot" the Snipe with a blue bullet (the only version that deals poise and Resilience damage); the other three are the Light Combo, Powerful Shooting and Spin Kick (inferred from the names and effects).
Bullets and ammunition#
Viola's special rule is that every bullet-firing move uses the bullet colour currently selected. The same move is stored three times in the data (move index, index + 1000 for red, index + 2000 for blue), so each colour has its own damage, range and side effect.
| White | Red | Blue | |
|---|---|---|---|
| Magazine | 6 | 6 | 6 |
| Reserve | Unlimited | Shared with blue: 12 at the start | Shared with red: 12 at the start |
| Raw damage of a Heavy shot | 64.4% of Attack | 76 to 83 + 86% of Attack | 114 to 121 + 100% of Attack |
| Full-damage range | 3 m, falling to 0 at 15 m | 4 m, falling to 0 at 20 m | 1 m, falling to 0 at 8 m |
| Side effect | None | Bleed build-up on every hit | Extra Poise and Resilience damage |
Hidden constants (Hero10002_Define): magazine size BulletReloadMax 6, special reserve BulletColorMax 12, bullet speed 50 and maximum shooting range 30 m.
How ammunition works:
- Switching. The bullet-switch button cycles white, then red, then blue, then white again (colour ids 1, 2, 3). It does not skip a colour that is empty.
- Reloading. Tapping Special reloads the current colour up to 6. For white the refill is free. For red or blue the rounds come out of the shared reserve, so red and blue draw from one pool. Reloading red from 2 rounds to 6 removes 4 from the pool that blue also uses.
- Empty magazine. With no rounds left, Special or Heavy reloads automatically (moves 25 and 26). If the reserve is also empty, the same buttons instead switch her back to white bullets (moves 27 and 28).
- Totals. At the start she can hold 6 red and 6 blue in the magazines plus 12 in reserve: 24 coloured rounds. The talent Improved Magazine adds +2 / +4 / +6 to the reserve cap, for a maximum of 30.
- Ammo drops. When Viola is the hero you control, every enemy that dies has a chance to drop an "Ammo" item. The base chance is 10% (rolled out of 1001) for 1 round. Bullets Recycling raises it to 20% / 30% and the drop to 2 / 3 rounds. The pick-up only works while the reserve is below its cap, and only while Viola is alive and in the party.
- Refill. When Viola is reborn (after dying, and presumably when you rest at a lamp, inferred) all three magazines refill to 6 and the reserve returns to its cap.
- Saving. The magazine contents and reserve are stored in the save file as hero special properties 101 to 106 (White now/max, Blue now/max, Red now/max).
Moveset#
Button names: Light, Heavy, Special, Dodge, Interact. Moves marked "talent" need the talent of that name (see Viola talent tree); "starts unlocked" moves are free.
Inputs and unlocks#
| Move | How to perform | Unlock |
|---|---|---|
| Light chain (3 hits) | Light, Light, Light | Always |
| Heavy shots (3 shots) | Heavy, Heavy, Heavy (needs rounds of the chosen colour) | Always |
| Light Combo | After the Light chain, press Heavy. 30 Rage | Starts unlocked (talent Light Combo) |
| Light Combo: Weakening | Same input; the follow-up shot hits Resilience harder | Light Combo: Weakening |
| Powerful Shooting | After the Heavy shots, press Light. 30 Rage | Starts unlocked (talent Powerful Shooting) |
| Powerful Shooting: Knockback | Same input; the shot knocks enemies down and back | Powerful Shooting: Knockback |
| Spin Kick | Dodge, then Light | Spin Kick |
| Dodge shot | Dodge, then Heavy | Always |
| Snipe | Hold Heavy (aim), release to fire. 100 Rage | Snipe |
| Rapid-Fire | Hold Special to load rounds, release to fire them all | Starts unlocked (talent Rapid-Fire) |
| Rapid-Fire (Timing) | Same, but shorter preparation | Rapid-Fire: Timing |
| Reload | Tap Special | Always |
| Counter Attack | Tap Special at the right moment of an enemy attack | Starts unlocked (talent Counter Attack) |
| Backstab | Interact behind an enemy | Starts unlocked (talent Backstab) |
| Execution | Interact on a Weakened enemy | Starts unlocked (talent Execution) |
| Jump chop (drop attack) | Attack while falling | Always |
| Dodge, second dodge | Dodge, Dodge | Always |
| Throwing, drinking | Throw items (high or low); drink and quick drink | Always (quick drink: Speed Drinking) |
Gun damage by bullet colour#
"Raw attack" enters the Damage formula: Attack stat x rate + flat power, before the target's Defence, crits and range falloff. Each row lists one entry per shot of the chain.
| Move | Bullet | Flat power | Rate | Raw attack at 56 Attack | Raw attack at 180 Attack | Poise dmg | Resilience dmg | Status on hit | Full-damage range |
|---|---|---|---|---|---|---|---|---|---|
| Heavy shots (3-shot chain) | White | 0 / 0 / 1 | 64.4% | 36 / 36 / 37 | 116 / 116 / 117 | 4 / 4 / 4 | 0 / 0 / 0 | - | 3-15 m |
| Red | 76 / 80 / 83 | 86% | 124 / 128 / 131 | 231 / 235 / 238 | 4 / 4 / 4 | 0 / 0 / 0 | Bleed 10034 | 4-20 m | |
| Blue | 114 / 118 / 121 | 100% | 170 / 174 / 177 | 294 / 298 / 301 | 12 / 12 / 14 | 10 / 10 / 12 | - | 1-8 m | |
| Heavy shots after a dodge (move 4) | White | 0 / 0 / 1 | 64.4% | 36 / 36 / 37 | 116 / 116 / 117 | 4 / 4 / 4 | 0 / 0 / 0 | - | 3-15 m |
| Red | 76 / 80 / 83 | 86% | 124 / 128 / 131 | 231 / 235 / 238 | 4 / 4 / 4 | 0 / 0 / 0 | Bleed 10034 | 4-20 m | |
| Blue | 114 / 118 / 121 | 100% | 170 / 174 / 177 | 294 / 298 / 301 | 12 / 12 / 14 | 10 / 10 / 12 | - | 1-8 m | |
| Dodge shot (Dodge, Heavy) | White | 0 | 56% | 31 | 101 | 0 | 0 | - | 3-15 m |
| Red | 76 | 80% | 121 | 220 | 0 | 0 | Bleed 10034 | 4-20 m | |
| Blue | 105 | 100% | 161 | 285 | 12 | 10 | - | 1-8 m | |
| Snipe (aimed shot) | White | 220 | 140% | 298 | 472 | 0 | 0 | - | 3-15 m |
| Red | 220 | 140% | 298 | 472 | 0 | 0 | Bleed 10001 | 80-100 m | |
| Blue | 261 | 175% | 359 | 576 | 60 | 50 | - | 1-8 m | |
| Rapid-Fire (per bullet) | White | 0 | 55.2% | 31 | 99 | 6 | 0 | - | 3-15 m |
| Red | 63 | 68% | 101 | 185 | 6 | 0 | Bleed 10034 | 4-20 m | |
| Blue | 91 | 80% | 136 | 235 | 6 | 5 | - | 1-8 m | |
| Light Combo, shot part | White | 69 | 160% | 159 | 357 | 0 | 0 | - | 3-15 m |
| Red | 150 | 145% | 231 | 411 | 0 | 0 | Bleed 10034 | 4-20 m | |
| Blue | 200 | 160% | 290 | 488 | 12 | 10 | - | 1-8 m | |
| Powerful Shooting, shot part | White | 78 | 110% | 140 | 276 | 0 | 0 | - | 3-15 m |
| Red | 138 | 110% | 200 | 336 | 15 | 15 | Bleed 10034 | 4-20 m | |
| Blue | 161 | 110% | 223 | 359 | 19 | 19 | - | 1-8 m | |
| Light Combo: Weakening, shot part | White | 138 | 120% | 205 | 354 | 0 | 30 | - | 3-15 m |
| Red | 150 | 145% | 231 | 411 | 0 | 30 | Bleed 10034 | 4-20 m | |
| Blue | 200 | 135% | 276 | 443 | 12 | 34 | - | 1-8 m | |
| Powerful Shooting: Knockback, shot part | White | 78 | 110% | 140 | 276 | 15 | 15 | - | 3-15 m |
| Red | 138 | 110% | 200 | 336 | 15 | 15 | Bleed 10034 | 4-6 m | |
| Blue | 161 | 110% | 223 | 359 | 19 | 34 | - | 1-8 m | |
| Counter Attack shot | White | 78 | 56% | 109 | 179 | 5 | 5 | - | 8-15 m |
| Red | 49 | 160% | 139 | 337 | 5 | 5 | - | 6-20 m | |
| Blue | 49 | 176% | 148 | 366 | 5 | 5 | - | 3-12 m |
Points worth knowing from the table:
- White Heavy shots are weak. At the starting 56 Attack, one white Heavy shot has only 36 raw attack, a third of a Light chain hit (113). White only becomes decent through the rate at high Attack (116 at 180). Snipe, Light Combo and Powerful Shooting carry a large flat component and stay strong at any Attack stat.
- Colour changes the multiplier and the flat power. Red adds 76 to 83 flat power to a Heavy shot and raises the rate from 64% to 86%; blue adds 114 to 121 and raises the rate to 100%.
- Snipe is the same in white and red. Only the status (red adds an instant bleed) and the range differ. Blue's Snipe is the strongest (359 raw at 56 Attack) but only has 8 m of range, and it is the only one that adds Poise (60) and Resilience (50) damage.
- The red Snipe has no falloff in practice (80 to 100 m), while the white Snipe loses damage beyond 3 m. See Viola#Range falloff.
- Counter Attack shots. White deals 109 raw, red 139 and blue 148 at 56 Attack, but at 180 Attack red and blue reach 337 and 366: the coloured counters have a 160% / 176% rate against the white 56%.
Range falloff#
Every gun row has DamageDisMin and DamageDisMax. The distance the bullet has flown is compared with them: up to the minimum the shot does full damage; between minimum and maximum damage, Rage, Power, Sanity, Poise and Resilience gained are multiplied by sqrt(1 - x^2) with x = (distance - min) / (max - min); beyond the maximum the multiplier is 0. Enemies have their own distance scale (HitDisRate): it is 1 for nearly all, but 0.556 for a few enemy models (ids 20002, 20019, 20031, 20057 and the crow 90007) and 0.278 for model 20009, so shots against those fall off more slowly.
| Distance | 1 m | 3 m | 5 m | 8 m | 10 m | 12 m | 15 m | 20 m |
|---|---|---|---|---|---|---|---|---|
| White (3-15 m) | 100% | 100% | 99% | 91% | 81% | 66% | 0% | 0% |
| Red (4-20 m) | 100% | 100% | 100% | 97% | 93% | 87% | 73% | 0% |
| Blue (1-8 m) | 100% | 96% | 82% | 0% | 0% | 0% | 0% | 0% |
A white shot past 15 m does nothing; the game leaves the shooter only 1 Rage and 1 Power in that case. The blue shot is a shotgun in practice: half-damage by about 7 m and nothing past 8 m.
Melee and reaction moves#
| Move | Flat power | Rate | Raw attack at 56 Attack | Raw attack at 180 Attack | Rage gained | Stamina | Poise dmg | Resilience dmg | Guard Break (rear x) |
|---|---|---|---|---|---|---|---|---|---|
| Light combo (3 hits) | 68 / 71 / 80 | 80% | 113 / 116 / 125 | 212 / 215 / 224 | 12 / 12 / 12 | 90 / 90 / 90 | 15 / 15 / 15 | 15 / 15 / 15 | 40 (x1.25) |
| Spin Kick (after Dodge) | 68 | 80% | 113 | 212 | 12 | 90 | 15 | 15 | 40 (x1.25) |
| Light Combo: bayonet part | 68 | 80% | 113 | 212 | 0 | 140 | 30 | 15 | 75 (x1.25) |
| Powerful Shooting: swing part | 80 | 80% | 125 | 224 | 0 | 140 | 15 | 15 | 75 (x1.25) |
| Backstab | 100 | 89.6% | 150 | 261 | 10 | 0 | 4 | 4 | 999 (x2) |
| Execution | 100 | 160% | 190 | 388 | 10 | 0 | 15 | 15 | 999 (x1.25) |
| Jump chop (drop attack) | 100 / 150 | 80% / 160% | 145 / 240 | 244 / 438 | 5 / 5 | 0 | 20 / 20 | 20 / 20 | 999 (x2) |
The swing parts are also stored per colour: the blue Light Combo bayonet hit has 19 Resilience damage (white and red 15), and the blue Powerful Shooting swing has 12 Poise and 10 Resilience damage (white and red 15 / 15). Their damage numbers are the same in all colours.
All of these deal Physical damage. Backstab and Execution apply the Break Out crit buff (status 10038) when the Break Out talent is taken. The 12 Rage per Light hit (see Rage#Gaining Rage) is the key number: a full Light chain gives 36 Rage, enough for a Light Combo or Powerful Shooting (30) plus a little extra; nine Light hits (108 Rage) reach the 100 Rage a Snipe needs.
Costs and side effects#
White versions, per row:
| Move | Rage needed / spent | Stamina | Armour (Toughness) | Guard Break | Breakable damage |
|---|---|---|---|---|---|
| Heavy shot (each) | - | 50 | 0 | 20 | 40 |
| Dodge shot | - | 50 | 0 | 20 | 40 |
| Snipe (shot row) | 100 / 100 | 80 | 0 | 150 | 100 |
| Rapid-Fire (volley) | - | 170 | 64 | 20 | 40 |
| Light Combo (bayonet part) | 30 / 30 | 140 | 0 | 75 | 100 |
| Powerful Shooting (swing part) | 30 / 30 | 140 | 0 | 75 | 100 |
| Light combo hit | - | 90 | 0 | 40 | 40 |
| Spin Kick | - | 90 | 0 | 40 | 40 |
| Dodge | - | 65 | 0 | 0 | 0 |
- Rage needed / spent: needed to start and taken when it triggers. Heavy shots, Dodge shot and Rapid-Fire cost no Rage.
- Stamina: Rapid-Fire costs 170 for the whole volley, regardless of how many bullets leave the barrel.
- Armour is the super-armour pool opened during a part of the animation. Only Rapid-Fire has any (64, during the firing phase). Light attacks have none.
- Guard Break is the move's strength against enemy blocks. 999 means it cannot be blocked (Backstab, Execution, Jump chop); the number in brackets in the melee table is the multiplier for a hit on the enemy's back.
Damage per stamina#
Raw attack per stamina spent, for one Heavy shot, a full 6-bullet Rapid-Fire volley and a Snipe:
| Attack | Bullet | Raw at 56 Attack | Raw at 180 Attack | Stamina | Raw per stamina (56) | Raw per stamina (180) |
|---|---|---|---|---|---|---|
| Heavy shot | White | 36 | 116 | 50 | 0.72 | 2.32 |
| Heavy shot | Red | 124 | 231 | 50 | 2.48 | 4.62 |
| Heavy shot | Blue | 170 | 294 | 50 | 3.4 | 5.88 |
| Rapid-Fire, 6 bullets | White | 185 | 596 | 170 | 1.09 | 3.51 |
| Rapid-Fire, 6 bullets | Red | 606 | 1112 | 170 | 3.57 | 6.54 |
| Rapid-Fire, 6 bullets | Blue | 815 | 1410 | 170 | 4.79 | 8.29 |
| Snipe | White | 298 | 472 | 80 | 3.73 | 5.9 |
| Snipe | Red | 298 | 472 | 80 | 3.73 | 5.9 |
| Snipe | Blue | 359 | 576 | 80 | 4.49 | 7.2 |
| Light combo hit | melee | 113 | 212 | 90 | 1.25 | 2.36 |
At the starting Attack the white Heavy shot is the worst deal in her kit (0.72 per stamina), well below the Light chain (1.25). The best are coloured Rapid-Fire volleys and the Snipe. At 180 Attack the white shots catch up (2.3 per stamina for a Heavy shot, 3.5 for a white volley).
Combo flow#
| After this | You can continue with |
|---|---|
| Heavy shots (any, from the first shot on) | Powerful Shooting (press Light) |
| Light chain (any hit) | Light Combo (press Heavy); a dodge |
| Spin Kick | The first shot of the second Heavy chain (move 4), the Light chain, Rapid-Fire |
| Dodge shot | The second shot of the second Heavy chain (move 4), the Light chain, Rapid-Fire |
| Rapid-Fire (preparation) | Dodge |
| Powerful Shooting (second part) | Dodge |
The Light Combo, Snipe and Counter Attack chain into nothing; Powerful Shooting and Rapid-Fire can only be followed by a dodge.
Talents that change moves#
| Talent | Effect on the moveset |
|---|---|
| Light Combo: Enhanced | +10% / +20% damage on the follow-up shot of Light Combo (all colours) |
| Light Combo: Weakening | Replaces the follow-up shot with a version that deals Resilience damage 30 (white, red) and 34 (blue) instead of 0 to 10, with a lower rate and a bigger flat power (white and blue) |
| Powerful Shooting: Enhanced | +10% / +20% damage on its shot |
| Powerful Shooting: Knockback | Gives the shot Poise and Resilience damage (15 white) and more knockback |
| Snipe | Opens the aimed shot and the "reload then aim" starts for an empty magazine |
| Rapid-Fire: Timing | Swaps in the same volley with shorter preparation (the damage data is identical, only the animation differs) |
| Special Bullet - Burst | Blue bullets deal more damage (+10% / +20%) |
| Lucky Shooter | 20% chance that a Heavy shot or Dodge shot uses no round |
| Improved Magazine | +2 / +4 / +6 to the red and blue reserve cap |
| Bullets Recycling | Ammo drops on kills: 20% / 30% chance for 2 / 3 rounds |
| Bloody | Crit rate x1.2 against bleeding targets (not +20 points) |
| Condemn | Bleed from red bullets lasts 15 s / 20 s instead of 10 s |
| Break Out | Crit rate +15% / +20% of its base for 12 s after a Backstab or Execution |
The full tree, with every cost, is on Viola talent tree.
Abnormal state#
Every hero has a side effect that switches on when Sanity runs low (Abnormal state#Effects by hero compares them). Viola's, as the game words it: she bleeds when attacked, after bleeding she cannot recover stamina immediately when it runs out, and her critical hits add 10% more damage. It starts at 70% Sanity and stays on in the Lunatic state below 50%.
| Effect | Value | Where it comes from |
|---|---|---|
| Wounded status | Every direct hit she takes (not damage over time) adds the "Wounded (gunner)" status (id 10004): 5 s, about 1% of her max Health per second | SanHitStatusId 10004; see Bleed |
| Exhaustion lock-out | When Stamina hits 0 while Wounded, recovery waits 5 s instead of 0 s | SanHitEnergyRecoveryDelayRate 500 |
| Crit damage | +10% of the base value (307 becomes about 337, so crits do x1.337 instead of x1.307) | SanCritDamageAddRate 100 |
| Healing -30% | Not in the in-game text and not used by the code | see Unused healing penalty |
| Everything else | Unchanged |
The lock-out is computed from her "recovery time" stat (100 in the normal state): the delay is (100 - recovery time) / 10 seconds. Only the Wounded status (10004, which exists only while she is in the Abnormal state) halves the stat, which gives 5 s; the Abnormal state alone does not. Talents change it (rules in Abnormal state#How talents reshape these effects):
- Adapt to Abnormality: Stamina makes the halving weaker by 25% / 50%, giving 3.75 s and 2.5 s.
- Adapt to Abnormality: Critical Strike multiplies the 10% bonus. By the code the bonus becomes +20% at rank 1 and +30% at rank 2 (value 1000 per rank), even though the talent text promises 20% and 40% (the data contradicts the label).
- Brutality (one level) gives each critical hit in the Abnormal state a 20% chance to apply instant bleed (status 10001).
- Lucky Madness adds drop weight, not a percentage, to Raw Stone and the Blackwater materials (item types 801 and 803; the talent text calls them "Raw Stone and Blackwater Stone") at any sanity; see Talents#hm-lucky-madness-does-not-use-percent-it-adds.
Hidden mechanics#
- Rage engine. Her Light chain gives 12 Rage per hit (Terrence 3), the Counter Attack, Backstab and Execution 10 each and the Jump chop 5. Bullets give none. Rage per stamina on the Light chain is 0.13, about three times Terrence's.
- Arts and counters do not use ammo. The Light Combo shot, Powerful Shooting shot and Counter Attack shot are fired by the code without taking a round (ammo is subtracted only for the Heavy shots and the Dodge shot), yet they use the selected colour's damage row. A blue Counter Attack deals 148 raw at 56 Attack for free.
- Snipe costs Rage, not a round. The aimed shot spends 100 Rage and 80 stamina but takes no round from the magazine; it only needs at least one round loaded to start (or the talent's reload-then-aim variants).
- Light Combo's shot is conditional. The bayonet hit goes into the follow-up shot only if the target's Poise is empty after the hit (the normal version deals 30 Poise damage; the white Weakening version only 15). Against an enemy that still has Poise the string ends there.
- Rapid-Fire loads min(6, rounds in magazine). One round per animation trigger while Special is held, with a firing phase that spends one round per trigger. The rounds are only removed when they are fired, so cancelling the wind-up with a dodge costs nothing (inferred from
AddBulletSPNumandSubBulletSPNum). Lucky Shooter does not apply to Rapid-Fire. - Counter window comes from the reload. Her Counter Attack triggers from moves whose counter level is higher than the enemy's: the Special-button reload (move 1) and the Rapid-Fire preparation (moves 6 to 11) have level 2, while normal attacks have 1. The empty-magazine reload (moves 25 and 26) is level 1, so with an empty magazine of the current colour there is no counter window (inferred from the data and the condition code).
- Lucky Shooter is only for Heavy shots. It is rolled in the function that subtracts a single round (Heavy shots and Dodge shot), with a (200 + 1) / 1001 chance; Rapid-Fire uses a different function with no roll.
- Ammo drop maths. A kill gives add = 1 + the Bullets Recycling value (0 / 1 / 2), the chance is add x 100 per mille, so 10.1% / 20.1% / 30.1% (a number from 0 to 1000 is rolled and must be at most the chance), and the drop contains add rounds.
- Hold-Heavy starts belong to the Snipe talent. The hold-Heavy entries (move 3 row 1, moves 29, 30 and 31) all need 100 Rage and carry the talent flag, and the Snipe talent opens exactly moves 2, 3, 29, 30, 31 and 32 (
HeroTalentTalentPos 110). Without that talent, holding Heavy gives no aimed shot (inferred). - Coloured Knockback range. In the data, the red Powerful Shooting: Knockback shot has a falloff range of 4 to 6 m, far smaller than every other red shot (4 to 20 m). It looks like a data quirk (inferred).
- Poise is not part of her kit. Her base Poise is 0 and her Poise Regen is 240 per mille, so regeneration does nothing (240 per mille of 0). See Poise and stagger#Hidden mechanics.
- Unused healing penalty. A constant for 30% less healing sits in her define file (
SanItemValueSubRate300), but the Abnormal-state text never mentions it and no code reads it (only Benita's 50% version is used, see Abnormal state#Hidden mechanics). Her potions heal normally in the Abnormal state. - Health Potions. She has capacity 2 (
HpAddNum), like every hero except Terrence (3); see Characters#hm-only-terrence-has-3-potions-the-extra-slot.MpAddNumis 4 for every hero; what that second pool is was not traced (unverified).
Trivia#
- Her talent texts call the weapon "Firelock" and describe it as a musket with a bayonet; the code only knows it as
WeaponGun. - Viola's DLC outfit "Initiation Rite" is changed by talking to Glenn's Owl in the carriage; its description is about a coming-of-age ceremony that exists only in one of her deep dreams. See Skins#All skins.
- The game contains an AI script for Viola (
attack10002.lua) and a death hook: a summoned Viola copy that dies notifies the First Messenger boss, like the other hero copies. - The Abnormal-state status is named "Wounded (gunner)" in the data and "Bleeding" in the stamina talent's description.
- Her talent "Rapid-Fire" description says she "winds the spring" of the Firelock before unleashing a hail of bullets.
Sources#
- Data:
es_herodata.luaHeroId 10002 (Attribute_1-7, HpAddNum 2, MpAddNum 4, GuardEnergyRatio 0.35, UIRageMin 30, texts);es_heropropertydata.luaPropertyId 1-42 for HeroId 10002;es_heroattributedata.luaAttributeId 1-6, points 1-99;es_skilldata.luaHeroId 10002, move indices 1-32, 102-113, 1002-1030, 1105, 2002-2030, 2105 (all move numbers);es_skillchaindata.luaHeroId 10002 (21 rows);es_statusdata.luaStatusId 10001, 10004, 10034, 10038;es_itemdata.luaItemId 20009 (Ammo);es_achievement.luaAchievementId 10013; text sections HeroData 10002, UIHeroInfo, UISkillInfo, StorySkin 2000-2001. - Talents:
reports/talent_trees.md, Viola section;es_herotalent.luarows 12203, 12408, 12409. - Code:
logic/player/hero10002.lua33-44 (Light Combo follow-up), 109-230 (which moves fire bullets and subtract ammo), 232-255 (magazines and caps), 257-310 (save and load), 312-354 (skill conditions per ammo state), 356-558 (pick-up, subtract, reload, switch);gamedata/playerdefine/hero10002_define.lua(all constants);controller/controllerstorymode.lua3448-3450, 5276-5303 (ammo drops), 5553-5557, 4869-4880 (pick-up conditions);logic/playervalue/animalbase_value.lua410-436 (lunatic stat changes), 505-552 (Add/SubSanPropertyDiffRate), 1560-1570 (exhaustion delay), 2166-2200 (range falloff), 2470-2485 (Brutality), 2740-2772 (Rage gain);logic/player/animalbase.lua7595-7612 (Wounded on hit), 17401-17415 (counter levels);common/gamecollider.lua427, 518 (flight distance);structdata/ms_herodata.lua63-70 (special properties);common/mathhelper.lua193-217. - Brutality (heroes_a pass):
HeroTalentTalentPos 409 hasStoneLevel4 (one Diamond level),Value200,SanCritStatusRate; theValueAddof 100 is never reached.logic/playervalue/animalbase_value.lua2476-2484 checksIsHeroSanNotNormal(10002), so Brutality works in both abnormal stages. - Move columns (re-checked in the heroes_a pass):
SkillDataHeroId 10002 move 5 (Light chain,RageAdd12,Attack68/71/80, noDamageDisMin, so it is a melee swing) and rows 253, 256-259 (Counter shot, Backstab, Execution, Jump chop: only the counter shot can crit).HeroTalent12205 (Burst: blue copies, move index + 2000), 12403 (Lucky Madness: types 801;803), 12410 (Brutality:StoneLevel4, one level).ItemDatatypes 801 Raw Stone and 803 Blackwater Debris / Rubble / Crystal / Fusion Stone. - Reports:
reports/README.md(savestate table: Viola joins in story 2, quest 25042),reports/batch5b_investigation.md(departures). - Tables for this page were computed by
build/wiki/scripts/viola/from the extracted data kit (kit/tables/SkillData.jsonl).