Sanity Factors

Sanity Factors

December 2, 2024

One of the most overlooked aspect of an identities’ kit is their sanity factors, since they are often the same with only a few units having slight differences. Today, let us discuss the units in the game with different sanity factors.

Before that, we need to first define the “standard” list of sanity factors.

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy whose level was higher than or equal to this unit's
  • + Increase by 5 after an ally defeats an enemy whose level was higher than or equal to the unit's

Negative Factor

  • - If the level of the defeated ally was higher than or equal to the unit's, decrease based on the level difference (Base Value is 10, raised by 10 per level)

Note that all the playable identities share the same panic type, unlike the enemies. (This may also be due to the specific way our sinners undergo E.G.O corrosion, they only go into panic if there isn’t a corrodable E.G.O equipped.)

Of note, you only gain SP on defeating enemies if you don’t outlevel your enemies, which makes it such that over-levelling your identities can be a detriment. This is partially offset by the offense level increase, which in turns makes clashes easier. Unfortunately, there is no way of un-levelling your identities.

Another common misconception is that losing clashes decrease your SP. This is not the case with this standard sanity factor suite.

Almost all identities share the sanity factors above. We will now be looking at the remaining 7 identities (at time of writing) which don’t. (Did you expect 7? Before I wrote this article, I didn’t manage to enumerate all of them.)

⟨Meursault⟩ Blade Lineage - Mentor 10508

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy whose level was higher than or equal to this unit's
  • + Increase by 5 after an ally defeats an enemy whose level was higher than or equal to the unit's

Negative Factors

  • - If the level of the defeated ally was higher than or equal to the unit's, decrease based on the level difference (Base Value is 10, raised by 10 per level)
  • - If a Blade Lineage ally is defeated, lose 10 regardless of the ally's level

It brings me great enjoyment when games utilise in-game mechanics to convey storytelling elements. A recent example is occurs with the bloodfiends’ passive giving themselves the debuff “Withered” at the start of battle. Naturally, this can just compensated by increasing the default stats, but it ties in narratively to the situation in-game.

Here, we have the Blade Lineage mentor showing emotion to their clan members (a rare trait in The City), rightfully earning the trust of his followers. That being said, he does benefit from dead clan members, gaining more poise (from his first passive), perhaps enacting vengence for letting down his team, akin to the time when Bamboo-hatted Kim let down his protectee.

⟨Heathcliff⟩ Lobotomy E.G.O::Sunshower 10705

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy whose level was higher than or equal to this unit's
  • + Increase by 5 after an ally defeats an enemy whose level was higher than or equal to the unit's

Negative Factors

  • - Decreases after losing a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • - If the level of the defeated ally was higher than or equal to the unit's, decrease based on the level difference (Base Value is 10, raised by 10 per level)

Here’s the original unit with different sanity conditions. With all his coins being Minus coins, it can be said that negative SP benefits Heathcliff. However, in practice, losing a tempo to set-up lower SP via losing clashes can be slow, adding difficulty to an already awkward kit. We’re far more likely to lose SP via his passive rather than the clash lose condition. This could be viewed as a weak “catch-up” mechanism, where being behind (with high SP and a tendancy to lose clashes), one can lose SP quicker.

⟨Heathcliff⟩ Wild Hunt 10710

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy regardless of their level
  • + Increase by 5 after an ally defeats an enemy regardless of their level

Negative Factor

  • - Decreases after losing a Clash based on the Clash count (Base Value is 5, raised by 10% per Clash count after 1)

What a change.

  1. Rather than losing SP when your allies die, Wild Hunt Heathcliff chooses to benefit from them. (3 or more allies dying would yield Coffin from his first passive.) Heathcliff mechanically would revive allies, making them continue fighting until his goals have been achievd.
  2. Regardless of the enemy’s level, so long they are defeated, he gains SP. My interpretation is that this is a mechanical realisation of the rage that consumes him.
  3. Heathcliff also has the lose SP on clash lose condition. As we’re going to discuss, this identity both needs high and low SP at times.

All of Heathcliff’s standard skills are plus coins, of which you would want SP for. Indeed, with high SP, you get to use Lament, Mourn and Despair (LMD) as a counter. You would gain SP from defeating enemies, as well as on clash win for Skill 3.

There are cases where you would want low SP, namely because LMD is a Minus coin skill. One paradigm to approach Heathcliff is that your goal is to use LMD as much as you can for damage. The requirements are either to use Skill 3 with Dullahan or Counter with Dullahan and 15+ SP. Thus, one could try to time the Dullahan state (which also boost Skill 2), which leads to the following stages we observe.

  1. Buildup Stage - We try to bring our SP up, as staying in Dullahan decreases our SP by 10-15 each turn. (Using Skill 2 in Dullahan further decrease it by another 10).
  2. Mounted Stage - Using a counter, we mount Dullahan, and try to burst as much damage as you can, using Counter and Skill 3 for LMD. Each turn while mounted increases our Dullahan stacks, and lose more SP, in turn making our LMD more powerful. However, this makes recover later harder.
  3. Recovery Stage - When your SP falls below -25 or use LMD, you unmount Dullahan, and now you recover via winning clashes, any kills or E.G.O corrosion (or passives and support passives).

So, Heathcliff to me is a very interesting unit, very much about timing LMD. Doing so well rewards you with coffin stacks, boosting your power and reviving your allies (albeit temporarily). All in all, a fun unit where understanding the sanity suite increases the depth of the unit.

⟨Ishmael⟩ The Pequod - Captain 10808

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy regardless of their level
  • + Increase by 15 after this unit defeats an enemy whose level was higher than or equal to this unit's
  • + If an ally is defeated, increase by 10 regardless of the ally's level

Negative Factor

  • - Decrease by 5 after an ally defeats an enemy whose level was higher than or equal to this unit's. Does not decrease when the enemy was defeated by an Assist Attack.

Project Moon enjoys the capstone identities with great mechanical and thematic synergy. The madness of the pursuit consumes Ishmael, and demands the obedience from her subordinates teammates. She needs to be in control, where enemies and allies only perish under her watch. She also serves a calming purpose, similar to Ahab for the Pequod, with both her second passive and defensives increasing her allies’ SP.

No matter friend or foe, Ishmael gains SP. However, only when Ishmael lands the killing blow does she gain SP on defeating enemies. This does lead to her being fairly awkward to gain SP, with the only other way of gaining SP in her kit is by having low SP to begin with and healing via Skill 3. She does indeed benefit from the SP gain with all her coins being plus coins.

Not only does she find it difficult to gain SP, when her allies defeat enemies unless ordered to via Assist Attack, she loses 5 SP. In conclusion, a very flavourful character and her sanity suite actively hinders her, further adding to the message that the blind obsession is self-destrucive.

⟨Sinclair⟩ Dawn Office - Fixer 11009

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 15, raised by 20% per Clash count after 1)
  • + Increase by 15 after this unit defeats an enemy regardless of their level
  • + Increase by 10 after this unit defeats an enemy whose level was higher than or equal to this unit's
  • + Increase by 10 after an ally defeats an enemy whose level was higher than or equal to the unit's

Negative Factor

  • - If the level of the defeated ally was higher than or equal to the unit's, decrease based on the level difference (Base Value is 15, raised by 15 per level)

Here, we have an identity whose sanity suite in my view serves a more gameplay function than a thematic one. The main mechanic of Sinclair revolves around the Volatile E.G.O::Waxen Pinion state. Basically, you enter it with 20-25 SP by either having 40+ SP at turn start or losing 2+ allies in a single turn. (The latter represents the manifestation of E.G.O by extreme emotion after witnessing the loss their allies).

In the Waxen Pinion state, your abilites are boosted but you burn up quickly, as Ikarus flew too close to the sun, Sinclair loses SP rapidly from their skills, until you exit it at 0- SP. This unit fluctuates greatly between his highs and his lows, building up SP and then spending it rapidly. The sanity suite serves to complement to quick build-up of SP. Sinclair gains more on clash win and gains SP when enemies are defeated regardless of their level, allowing the aforementioned big sanity swings.

⟨Outis⟩ Wuthering Heights - Chief Butler 11108

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy whose level was higher than or equal to this unit's
  • + Increase by 5 after an ally defeats an enemy whose level was higher than or equal to the unit's
  • + Increases by 8 after winning a Clash against an enemy with SP lower than this unit's

Negative Factors

  • - If the level of the defeated ally was higher than or equal to the unit's, decrease based on the level difference (Base Value is 10, raised by 10 per level)
  • - Decreases by 4 after losing a Clash against an enemy with SP lower than this unit's

Project Moon’s English translations often have tiny irregularities, and here we have “Increases by” and “Decreases by” rather than “Increase by” and “Decrease by”. (Another one is seen above, with Captain Ishmael’s negative sanity factor having with a full stop.)

The passive “The Mistress’s Voice…!” serves as a secondary way of gaining SP on 3x Gloom resonance. As the unit has SP gain on winning a clash against a unit with lower SP (abnormalities count as 0 SP for this), Butler Outis easily gains a lot of SP. This is useful as she readily recovers her SP, allowing her to use E.G.Os more often as well as dealing with situations where our SP is reset or heavily taxed.

⟨Outis⟩ The Barber - of La Manchaland 11111

Panic Type: Panic (9999)
Panic: Does not act for this turn.

Positive Factors

  • + Increases after winning a Clash based on the Clash count (Base Value is 10, raised by 20% per Clash count after 1)
  • + Increase by 10 after this unit defeats an enemy regardless of their level
  • + Increase by 5 after an ally defeats an enemy regardless of their level

Negative Factor

  • - Decreases after losing a Clash based on the Clash count (Base Value is 5, raised by 10% per Clash count after 1)

Fulfilling the quota of the first Outis identity each season having unique sanity mechanics, we have the (current) final addition of the list. Instead of gaining SP if the killed enemy out-levels her, she gains SP regardless. One should have no fear of over-levelling her, but otherwise unremarkable.

Appendix

Finding the units with different sanity factors is fairly easy. First, we check that sanity factors are indeed independent of uptie levels.

using ObiterDicta

for id in ObiterDicta.getMasterList(ObiterDicta.Personality)
    PositiveFactors = [ObiterDicta.getPositiveSanityFactors(id, j) for j in 1:4]
    NegativeFactors = [ObiterDicta.getNegativeSanityFactors(id, j) for j in 1:4]
    
    allequal(PositiveFactors) && allequal(NegativeFactors) && continue
    Name = ObiterDicta.getFullTitle(id)
    println(Name)
end

One should also verify that all the panic types are indeed “Panic” 9999.

for id in ObiterDicta.getMasterList(ObiterDicta.Personality)
    PanicType = ObiterDicta.getPanicType(id)
    PanicType == 9999 && continue
    Name = ObiterDicta.getFullTitle(id)
    println(Name)
end

Then, we arbitrarily assign the Base Yi Sang as the “standard unit”. It is the first in the list.

StdUnit = ObiterDicta.getMasterList(ObiterDicta.Personality)[1]
StdPositiveFactors = ObiterDicta.getPositiveSanityFactors(StdUnit, 1)
StdNegativeFactors = ObiterDicta.getNegativeSanityFactors(StdUnit, 1)

for id in ObiterDicta.getMasterList(ObiterDicta.Personality)
    PositiveFactors = ObiterDicta.getPositiveSanityFactors(id, 1)
    NegativeFactors = ObiterDicta.getNegativeSanityFactors(id, 1)

    PositiveFactors == StdPositiveFactors && NegativeFactors == StdNegativeFactors && continue
    Name = ObiterDicta.getFullTitle(id)
    println(Name)
end