Menu

Blessing, Potential & Stellar Memory System Guide

Guide March 30, 2026 By Boring877

The Stellar Memory system is one of Star Savior's most complex mechanics. It combines three overlapping concepts -- Base Stats, Potentials (passive abilities), and Blessings (inherited stat bonuses) -- into a single UI that many players find confusing. This guide breaks down each system, how they interact, and what actually happens when you start a Journey.

Three Different Things (That Look the Same)

When you open a Stellar Memory detail page, you see tabs for Stats, Potential, and Blessing. These are three distinct systems that share the same data type internally (NKCSePoten class) but serve different purposes:

Tab What It Is Filter Condition Source
Stats Base ATK/HP/DEF/SPD from the memory's grade Always shown Journey grade + templet base stats
Potential Leveled-up passive abilities (battle effects) level > 0 Upgraded with Potential Points (PP)
Blessing Stat bonuses inherited from parent/ancestor units value > 0 Server assigns from parent data
NKCStellarMemoryPreview -- Tab filtering logic (NKC.decompiled.cs:235770)
// Tab 0: Stats -- base stats from grade
OBF_31681() -> statBundle calculation

// Tab 1: Potential -- SE passives the player has leveled up
OBF_6179() -> filter by OBF_33437 > 0  (has level)

// Tab 2: Blessing -- stat bonuses from ancestors
OBF_27095() -> filter by OBF_4421 > 0  (has value)

The key difference in plain terms: Potentials (like 25% Damage Up, 15% Crit Rate) are the powerful battle buffs that you actively upgrade using Potential Points (PP). Blessings are small flat stat bonuses (+10 to +50 ATK/HP/DEF) that are automatically assigned by the server when a parent's blessing is inherited during a journey succession event. Both are active at the same time during battle, but only Potentials require your PP investment.

Starting a Journey: Selecting Stellar Memories

Before starting a Journey (Stellar Memory scenario), you must select 2 Stellar Memories from your collection. These become the "ancestors" (parents) for that journey run. For the full journey structure and turn-by-turn breakdown, see the Journey System Guide.

  • The selection screen (NKCSubPageStellarMemorySelector) has exactly 2 slots
  • An auto-fill button picks the highest-power stellar memories, grouped by unit, sorted descending by power
  • A "Gene" button opens a popup showing parent/ancestor blessing info
  • The 2 selected memories determine which units and blessings are available during the journey
NKCSubPageStellarMemorySelector (NKC.decompiled.cs:159879-160096)
[RequiredListLength(2)]
public OBF_0495[] OBF_15501_stellarMemories;  // exactly 2 slots

// Auto-fill: highest power, grouped by unit, descending
// JourneyStartCondition builds leader list from:
//   1. Default player unit
//   2. Leader unit
//   3. The 2 selected stellar memory units (reversed)

The 4-Slot Battle Deck

During a Journey, you fight battles using a 4-slot deck. The server populates these slots at the start of each journey. Some slots may be locked initially and become unlocked through blessing succession events.

JourneyPlay state -- deck initialization (NKC.decompiled.cs:272334)
private readonly List<OBF_25083> OBF_24840 = new(4);  // 4 deck slots

// Server sends 4 slots at journey start:
OBF_24840.Clear();
OBF_24840.AddRange(OBF_14524.OBF_20430);  // from server response

// Filtered view (only non-empty slots):
public IEnumerable<OBF_33715> OBF_2917 => OBF_4055.Where(e => e.OBF_11444 != null);

The BlessJoin popup (NKCPopupBlessJoin) handles the unlock animation: it clears the joining unit's current slot, plays an unlock effect, then places the unit into that slot. Locked slots get a lock visual overlay.

Blessing Succession (Inheritance)

Throughout a Journey, parent blessings can "join" your battle deck. This is the succession system -- it is configured per-turn in the journey templet data.

Succession Types

Each journey turn has a BlessSuccessionType that determines what happens:

Type Enum Value What Happens
BST_NONE 0 No succession this turn
BST_START 1 A parent's blessing joins at journey start (plays BlessSuccessionCutscene, then transitions to Succession scene)
BST_JOIN_1 2 First parent's blessing joins mid-journey (plays BlessJoinCutscene, unlocks deck slot)
BST_JOIN_2 3 Second parent's blessing joins mid-journey (same as JOIN_1 but for second parent)
BlessSuccessionType enum (NKM.Templets.decompiled.cs:31869)
public enum OBF_26539 {
    BST_NONE,     // No succession
    BST_START,    // Succession at journey start
    BST_JOIN_1,   // First ancestor joins mid-journey
    BST_JOIN_2    // Second ancestor joins mid-journey
}

Battle Score Override

When a parent joins via BST_JOIN_1 or BST_JOIN_2, the battle score is overridden with that parent's score. This means the journey's difficulty/power rating adjusts based on which ancestor joins.

Battle score override (NKC.decompiled.cs:271268)
public OBF_22341 OBF_33079() {
    if (OBF_21025.OBF_27998 == null) return default;
    var ancestors = OBF_29632.OBF_3723.OBF_1860;
    switch (OBF_21025.OBF_27998.OBF_1887) {
    case BST_JOIN_1:
        // Override with ancestor 1's battle score
        return OBF_22341.OBF_13265(ancestors[0].unitId);
    case BST_JOIN_2:
        // Override with ancestor 2's battle score
        return OBF_22341.OBF_13265(ancestors[1].unitId);
    }
}

SE Potential System

Potentials are passive abilities that trigger during battle. Each stellar memory can have multiple potentials, which you upgrade using Potential Points (PP).

Potential Categories

Category Count ID Range Description
PTC_UNIQUE 6 11011 - 13002 Character-specific passives tied to 6 specific characters via CharacterCategoryNum
PTC_BASIC 26 20001 - 22010 Stat passives available to all units. Tier 1 (200xx), Tier 2 (210xx), Tier 3 (220xx)
PTC_SPECIAL 145 23001 - 41004 Special passives: stat combos, role-specific, scenario-specific, infinite buffs

Role Types

Some potentials are locked to specific roles:

Role Type Access Examples
PLR_PUBLIC All units (147 potentials) Basic stat passives, generic combos
PLR_UNIT Specific character only (6) PTC_UNIQUE character passives
PLR_DEFENDER Defenders only 30001 - 30006
PLR_STRIKER Strikers only 31001 - 31003
PLR_RANGER Rangers only 32001 - 32005
PLR_CASTER Casters only 33001 - 33003
PLR_ASSASSIN Assassins only 34001 - 34004
PLR_SUPPORTER Supporters only 35001 - 35003

PP Costs by Tier

Tier Levels PP Cost Typical Effect per Level
UNIQUE 1 200 PP Character-specific SE trigger
BASIC Tier 1 5 100 - 300 PP +1% to +5% rate stat
BASIC Tier 2 1 200 PP +2% to +4% rate stat, +2 SPD
BASIC Tier 3 1 300 PP +3% to +6% rate stat, +3 SPD, +1.5% cross/revenge
SPECIAL (stat-only) 1 200 PP Various stat combos (ATK+SPD, HP+SPD, etc.)
SPECIAL (SE-triggered) 1 200 PP Conditional battle effects
SPECIAL (infinite) 3 200 PP each Battle-start permanent buffs

How Battle Power Calculates with Potentials

The PotenBattlePowerCheck flag on each potential level determines whether upgrading it increases your battle power score. Battle power is calculated as:

totalPotenPoint = sum of all potential levels
battlePowerMultiplier = 1.0 + totalPotenPoint * scaleFactor

Higher battle power affects journey difficulty scaling and succession eligibility.

Battle Buffs from Potentials (BI_POTEN_PASSIVE)

When potentials trigger in battle, they apply buffs defined in the CLIENT_BUFF_TEMPLET.json table. The BI_POTEN_PASSIVE buffs (24 total, BuffID 9001-9024) share common traits:

  • TurnInfinite -- lasts the entire battle (permanent)
  • CanNotDispel -- cannot be removed by enemy abilities
  • IsPositive -- always a beneficial effect
  • Most can stack via IsLevel + BuffLevelMax

Complete BI_POTEN_PASSIVE Reference

Buff ID Buff Name Stat Value Max Stacks
9001BI_POTEN_PASSIVE_24001DEF%1%5
9002BI_POTEN_PASSIVE_30002DEF%3%5
9003BI_POTEN_PASSIVE_31003Crit Rate15%1
9004BI_POTEN_PASSIVE_31001ATK%3%5
9005BI_POTEN_PASSIVE_31002Effect RES%3%5
9006BI_POTEN_PASSIVE_32001Skill ATK%15%1
9007BI_POTEN_PASSIVE_33001Crit DMG10%3
9008BI_POTEN_PASSIVE_34001Crit Rate5%3
9009BI_POTEN_PASSIVE_34002SPD (flat)+103
9010BI_POTEN_PASSIVE_35002Heal%3%5
9011BI_POTEN_PASSIVE_35003SPD (flat)+35
9012BI_POTEN_PASSIVE_110111Revenge ATK100%1*
9013BI_POTEN_PASSIVE_110112(marker)----
9014BI_POTEN_PASSIVE_25002Special Skill%5%5
9015BI_POTEN_PASSIVE_32003SPD (flat)+53
9016BI_POTEN_PASSIVE_32004Crit Rate5%5
9017BI_POTEN_PASSIVE_34003ATK%5%3
9018BI_POTEN_PASSIVE_25003Effect RES%5%6
9019BI_POTEN_PASSIVE_400011ATK%8%5
9020BI_POTEN_PASSIVE_402011DEF%10%5
9021BI_POTEN_PASSIVE_404011(unused)----
9022BI_POTEN_PASSIVE_405011Damage Up%25%1
9023BI_POTEN_PASSIVE_407011AddDamageproc1
9024BI_POTEN_PASSIVE_32005Crit Rate3%5

* Buff 9012 (Revenge ATK 100%) has a DispelCondition: DC_ATTACK -- it is removed when the unit is attacked.

SE Trigger Mechanics

Potential effects are defined in CLIENT_SE_TEMPLET_POTEN.json. Each entry specifies when and how the buff activates:

Activation Conditions

Condition Trigger Timing
NSEAT_BATTLE_STARTAt the start of battle (before any turns)
NSEAT_TURN_STARTAt the beginning of the unit's turn
NSEAT_TURN_ENDAt the end of the unit's turn
NSEAT_SKILL_STARTWhen the unit uses a skill
NSEAT_SKILL_ENDAfter the unit's skill resolves
NSEAT_DAMAGE_STARTWhen dealing damage
NSEAT_DAMAGE_ENDAfter dealing damage
NSEAT_HITWhen hitting a target

Notable Patterns

  • Pair buffs: Some potentials come in pairs where one applies a buff and another removes it. For example, buff 3100301 grants a bonus at skill start, and 3100302 removes it at turn end -- creating a conditional effect.
  • Crit counters: Some potentials trigger after a specific number of critical hits (e.g., ranger potential 3200501 triggers after 5 crits).
  • Infinite buffs: Special potentials use _INFINITE buff names that last the entire battle. These come in 3 intensity levels (200 PP each).
  • Debuff removal: Some potentials use DeleteSpecificBuffStrId to remove specific buffs when they expire.

Stat Blessings (Inheritance)

Separate from SE Potentials, the Stat Blessing system (CLIENT_STAT_POTENTIAL_TEMPLET.json) handles flat stat inheritance. There are 45 entries covering 5 stats across 3 difficulty tiers and 3 levels each:

Tier Stat Values (Level 1/2/3) CanSuccessionRatio (Lv1/Lv2/Lv3)
Easy10 / 15 / 20 flat30% / 18% / 12%
Normal25 / 30 / 35 flat30% / 18% / 12%
Hard40 / 45 / 50 flat12% / 8% / 4%

The CanSuccessionRatio is in basis points (divide by 100 for percentage). It determines the probability that a stat blessing is inherited from a parent stellar memory. Hard tier blessings are much less likely to pass down (4-12%) compared to Easy/Normal (12-30%).

The inheritance formula is:

InheritedStat = BaseStat + floor(RawValue * ParentStatBlessApplyRatio)

Blessing Rarity Groups

The server categorizes blessings into 4 rarity groups, defined in two templet tables:

Group ID Poten-to-Bless Name Succession Name
LOW2LOW_SE_PotenRarityLOW_BlessRarity
HIGH3HIGH_SE_PotenRarityHIGH_BlessRarity
MID4MID_SE_PotenRarityMID_BlessRarity
ZERO5ZERO_SE_PotenRarityZERO_BlessRarity

Each group covers PotenLv 1-5 with JourneyScoreWeight: 10000. All groups contribute equally to journey scoring. The actual assignment of which PotenId belongs to which group is server-side only -- the client never has this mapping.

Important limitation: The exact algorithm the server uses to select which rarity group a blessing falls into, and which specific blessing you receive, is not present in any client-side code. The client only receives the result and renders cutscenes/popups. This is the one part of the system we cannot verify from decompiled code alone.

Full Journey Blessing Flow (End to End)

Here is the complete flow from journey start to battle:

  1. Select 2 Stellar Memories at the journey start screen
  2. Server assigns blessings, succession events, and deck slots via OBF_20694 response packet
  3. BST_START succession (if applicable): Plays BlessSuccessionCutscene, transitions to Succession scene. One parent's blessing joins the deck at journey start.
  4. Player progresses through journey turns (training, battles, trading, resting)
  5. BST_JOIN_1/JOIN_2 succession (if configured for this turn): Plays BlessJoinCutscene, shows BlessJoin popup with unlock animation. Parent's blessing is added to the 4-slot deck.
  6. Battle score overrides to the joining parent's score when BST_JOIN triggers
  7. Potentials activate in battle based on their SE trigger conditions (battle start, turn start/end, skill use, damage dealt, etc.)
  8. BI_POTEN_PASSIVE buffs are applied as permanent (TurnInfinite), undispellable stat bonuses

Practical Tips

  • Prioritize PTC_SPECIAL potentials for your main DPS units -- they offer the strongest battle effects (25% Damage Up, 15% Skill ATK, etc.). Browse character attributes in the Arcana Database to find your main DPS units
  • Stack Crit Rate potentials if you have multiple Crit Rate buffs (3%, 5%, 15% available) -- they stack via BuffLevelMax
  • Speed is king -- flat SPD potentials (+3, +5, +10) are rare and extremely valuable since SPD is not reduced by PvP scaling
  • Hard tier stat blessings have much lower inheritance rates (4-12%) -- don't rely on them passing down
  • Battle Power matters -- potentials flagged with PotenBattlePowerCheck: true increase your score, which affects journey difficulty and succession eligibility
  • Role-locked potentials (Defender, Striker, etc.) can only appear on units of that role -- factor this into your stellar memory selection. See Character Builds for role information
  • The "Gene" button at journey start shows parent blessing info -- use it to plan which ancestors to bring for specific blessing types

Source Code References

  • Star.Templets.decompiled.cs -- NKCJourneyTurnTemplet (line 18736-18739), NKMStatPotenTemplet (line 21912-21934)
  • NKM.Templets.decompiled.cs -- BlessSuccessionType enum (line 31869-31875)
  • NKC.decompiled.cs -- NKCSubPageStellarMemorySelector (line 159879), BlessJoin popup (line 141564), cutscene player (line 99902), battle score override (line 271268), deck initialization (line 272334)
  • CLIENT_SE_POTENTIAL_TEMPLET.json -- 177 potential definitions
  • CLIENT_SE_TEMPLET_POTEN.json -- SE battle trigger definitions
  • CLIENT_POTENTIAL_LEVEL_GROUP_TEMPLET.json -- Level scaling data (209 groups)
  • CLIENT_BUFF_TEMPLET.json -- 24 BI_POTEN_PASSIVE buff definitions (BuffID 9001-9024)
  • CLIENT_STAT_POTENTIAL_TEMPLET.json -- 45 stat blessing entries with CanSuccessionRatio
  • CLIENT_POTEN_TO_BLESS_TEMPLET.json -- Rarity group mappings (20 entries)
  • CLIENT_BLESS_SUCCESSION_TEMPLET.json -- Succession group mappings (20 entries)

Full decompiled and deobfuscated source: github.com/boring877/star-savior-decompiled

Tags
advancedjourneystellar-memoryblessingpotentialsuccessiontheorycraft