RimWorld

RimWorld

MIM - WH40k Core
Viser 31-40 af 523 forekomster
< 1  2  3  4  5  6 ... 53 >
Opdatering: 6. aug. kl. 10:23

1.6: Fixed minior logic issue related to Asuryani path.

Opdatering: 5. aug. kl. 10:02

1.6: Refactored Aeldari path related codes - save compatible.

Opdatering: 4. aug. kl. 10:28

# 🛠 August 4th Update – *Asuryani Path System v0.8*

### 💬 Developer-Focused Changelog & Commentary

---

## 🌌 Overview

This update marks a major iteration in the **Asuryani Path System**, expanding it into a fully modular, lore-aligned specialization engine for Aeldari pawns.
The core of the update introduces a **Shadow & White Seer expansion**, a fully-featured **Pathless damnation fallback**, major adjustments to **path transition eligibility**, and the **Slaneesh corruption engine** via `HediffComp_SlaaneshWhispers`.

---

## 🧱 Architectural Refactors

### 1. **TransitionEntry Decoupling (for Starting Paths)**

We've removed all dependency on `AsuryaniPathTransitionEntry` for starting path selection.
Instead, path assignment now directly pulls from:

```csharp
DefDatabase<AsuryaniPathDef>.AllDefs
.Where(def =>
def.isStartingPath &&
(!def.isFemaleOnly || pawn.gender == Gender.Female) &&
(!def.isMaleOnly || pawn.gender == Gender.Male)
)
.ToList();
```

➡️ This eliminates unnecessary overhead and simplifies extension via patching.
➡️ Use `Utility_AsuryaniPath.FindRandomStartingPath(pawn)` to assign an initial discipline.

---

### 2. **Pathless Lockout State (`isPathless`)**

When a pawn becomes "pathless" (e.g. via failed exit from `Consumed` or `Novice` state), they now enter a hard-coded **discipline lockout**:

* `GetGizmos()` is fully disabled
* `TickInterval()` aborts all processing
* No further path transitions are offered
* Pawn cannot re-enter a Path via fallback

```csharp
if (isPathless)
{
yield break; // in GetGizmos
}
```

This state is **intended to be semi-permanent** and dramatically raises the stakes for poor Path management.

---

### 3. **Slaanesh Corruption: `HediffComp_SlaaneshWhispers`**

A new `HediffComp` attached to `Hediff_AsuryaniPath` triggers **chaos-themed degeneration** once a pawn has lost their discipline:

* Daily 5% chance to trigger
* Effects include:

* Random `ThoughtDef` ("She Who Thirsts"-themed despair)
* Forced mental breaks
* Application of chaos-aligned `HediffDef`
* Mutation via `GeneDef`

All are configured via `HediffCompProperties_SlaaneshWhispers`:

```xml
<dailyTriggerChance>0.05</dailyTriggerChance>
<causedThoughts>
<li>EMAE_SlaaneshWhispered</li>
</causedThoughts>
...
```

➡️ Designed to be extended with modded thoughts, mental states, mutations, etc.

---

## 🧠 Behavior + Systems

### 1. **New Immersion Falloff Logic (`TryHandleEarlyExitFallback`)**

Refactored to allow variable resolution when pawns prematurely leave a Path:

| From | Fallback | Chance |
| ---------- | -------------- | ------------------------------ |
| `Consumed` | Damnation Path | `props.damnationChance + 0.5f` |
| 〃 | Outcast Path | `props.outcastChance - 0.5f` |
| 〃 | Fully Pathless | `5%` fixed |
| `Novice` | Outcast Path | `props.outcastChance` |
| 〃 | Damnation Path | `props.damnationChance` |
| 〃 | Fully Pathless | `5%` fixed |

This creates a **rare but meaningful possibility of absolute breakdown**, triggering the Slaanesh corruption path.

---

### 2. **Score-Based Path Transition Selection**

Introduced `TryMatchAndScore()` inside `AsuryaniPathTransitionEntry`:

```csharp
public bool TryMatchAndScore(Pawn pawn, out int score)
{
score = 1;
score += requiredSkills.Sum(skill => pawn.skills?.GetSkill(skill.skill)?.Level ?? 0);
score += requiredTraits.Count * 10;
}
```

* Traits give heavier weight (10 pts each)
* Skills are additive
* `MeetsRequirements()` is evaluated before scoring
* This is used in:

* `OfferNextPathChoice(pawn)`
* Could be used in future UI preview

➡️ You can mod your own transitions with implicit bias by manipulating traits/skills.

---

## 💀 Psychological Degeneration: `ThoughtDef` – “She Who Thirsts”

### New thought for Slaanesh corruption:

```xml
<ThoughtDef Name="EMAE_SlaaneshWhispered">
<label>the whisper</label>
<description>
It doesn't whisper.
It unfolds — inside my thoughts, behind my eyes.
She Who Thirsts has found a place to drink.
And I no longer know what is mine.
</description>
</ThoughtDef>
```

* This is a permanent memory
* Designed for madness mood debuffs
* Can be triggered by comp or scripted event

➡️ You can add more `ThoughtDef`s and plug into `causedThoughts` in the comp XML.

---

## 📘 Lore Consistency Improvements

### 🔮 White Seer, Shadow Seer, and Way Seer added

All three now have fully designed:

* Base descriptions
* Immersion progression titles
* Fallback/Exarch/Farseer logic
* Entry-level trait recommendations
* Path-defining background text

➡️ These are **non-Warrior psychic disciplines** with distinct utility and personality.

---

## ⚖️ Balance Notes

* All full Path loss cases (`MarkPathAsLost`) are now capped to **5% chance**, to reduce over-punishment
* `FallbackPath` is still `"EMAE_PathOfTheOutcast_Ranger"` and is only triggered if *no valid starting paths* are found
* Trait/Skill requirements for transitions now default to OR logic, not AND, to increase build flexibility
* DisallowedTraits/DisallowedSkills only checked if requiredTraits/Skills are not met

---

## 📦 Extensibility

### New `HediffComp_SlaaneshWhispers` can be reused in:

* Generic chaos corruption systems
* Mental instability frameworks
* Post-mortem resurrection mechanics
* Psychic overload mechanics for non-Aeldari

Can be easily patched into other Hediffs.
Supports full XML configuration without needing C# edits.

---

## 🧪 Debug Features

* All logs now respect `debugMode` flag on paths and comps
* You can force `MarkPathAsLost()` to test Pathless state
* Supports `Log.Message` tracing during transition/assignment

---

## ⏭️ Coming Soon

* UI for choosing fallback paths interactively
* Pathless mental breakdown chain events
* Damnation alignment trees (Khaine / Slaanesh split)
* Tied-in Harlequin disciplines (Shadowseer fully implemented, still gated)

---

## 🧾 Patch Note Footer

If you're a modder and want to extend this system:

* Add your own `AsuryaniPathDef` with `isStartingPath = true`
* You don't need a TransitionEntry for starting paths anymore
* Add `HediffComp_SlaaneshWhispers` to any path-loss state
* Use `entryConditions` to gate paths behind Ideology, Traits, etc.

Want more modularity? Ask for hooks — the architecture is growing cleanly.

Opdatering: 3. aug. kl. 10:19

1.6: New code set - Asuryani Path related code sets added.
1.6: Code updated - Spirit stone now stores Asuryani path as a part of information stored.

Opdatering: 2. aug. kl. 0:14

Fixed Royal title related tags to work properly for all royal titles.

Opdatering: 1. aug. kl. 21:44

1.6: Refactored namespaces for sub libraries. Now Necron, GenestealerCult, Orks, as well as Aeldari (to be added) uses their own, independent namespaces.

Opdatering: 1. aug. kl. 6:37

1.5 / 1.6: All servitor chip now nullifying any terror related thoughts, if Ideology is enabled.

Opdatering: 31. juli kl. 8:23

1.6: Fixed Psycast Living Lighting cases error loop.

Opdatering: 28. juli kl. 9:59

1.4/1.5/1.6: NameDB / Rulepack updated for Aeldari

Opdatering: 25. juli kl. 6:32

1.6: Apparel abstracts updated to properly applying mod extensions.