v2.0 — Complete rewrite: Clone Satori + Nehan instead of building from scratch

Key changes:
- Katana:  Items.Preset_Katana_Saburo_Legendary (Satori clone)
  → Retains all bleeding, hemorrhaging, hidden GameplayLogicPackages
- Knife:  Items.Preset_Tanto_Saburo_Retrofix (Nehan clone)
  → Retains thrown bleeding, hemorrhaging, health restoration
- Only displayName/localizedDescription overridden
- Localization in r6/loc/en-us/ and r6/loc/de-de/ (proper LocKey resolution)
- Removed all custom statModifiers (they were ignored anyway)
- Removed IconicWeaponModAbilityBase approach
- Removed LocalizationOverride block
- Clean file structure matching CDPR conventions

Thanks to ChatGPT for the correct approach:
- Stats via statModifiers were being ignored
- HealOnKill/HealthRegen don't exist as BaseStats
- Nehan heals via GameplayLogicPackage, not stats
- ArmorPenetration is not the right stat name post-2.0
- Cloning existing Iconics preserves all hidden behavior
This commit is contained in:
arch_agent
2026-07-21 22:06:11 +02:00
parent 620cf4ad56
commit 18708e2d19
5 changed files with 88 additions and 138 deletions
+63 -44
View File
@@ -1,58 +1,77 @@
# Crystal Blades — README # Crystal Blades — Kristallklingen
## Waffen Two new Iconic weapons for Cyberpunk 2077, cloned from Satori and Nehan.
### Kristallschneider (Katana) ## Weapons
- **Konzept:** Katana mit monomolekularer Kristallklinge
- **Stats:** Hohes Damage, mittlere Angriffsgeschwindigkeit
- **Spezial:** Ignoriert 100% Rüstung, 100% Blutung bei jedem Treffer
- **Qualität:** Legendary
### Phantom Splitter (Wurfdolch) ### Kristallschneider (Crystal Cleaver) — Katana
- **Konzept:** Wurfdolch mit monomolekularer Kristallklinge - **Base:** Satori (Items.Preset_Katana_Saburo_Legendary)
- **Stats:** Schnell, geringer Schaden aber hoher Crit - **Retains:** Bleeding on hit, all hidden GameplayLogicPackages
- **Spezial:** Ignoriert 100% Rüstung, 100% Blutung bei jedem Treffer - **New:** Custom name and description
- **Qualität:** Legendary
### Phantom Splitter — Wurfdolch
- **Base:** Nehan (Items.Preset_Tanto_Saburo_Retrofix)
- **Retains:** Thrown hits apply Bleeding, hemorrhaging on already-bleeding targets, health restoration
- **New:** Custom name and description
## Requirements
- TweakXL
- ArchiveXL (for LocKey resolution)
- RED4ext
## Installation ## Installation
### Benötigt: Copy the following folders to your Cyberpunk 2077 game directory:
- ArchiveXL
- TweakXL
- Codeware
- red4ext
- redscript
### Installation:
1. Kopiere den `r6/tweaks/crystal_blades/` Ordner nach `r6/tweaks/crystal_blades/` im Spielordner
2. Kopiere die `localization/crystal_blades.json` nach `r6/config/settings/` (oder ins localization Verzeichnis)
3. Starte das Spiel — TweakXL lädt die Waffen-Definitionen automatisch
### Waffen erhalten:
Im Spiel die CET-Konsole öffnen und eingeben:
``` ```
Game.GetTarget():AddMod("Items.Preset_Crystal_Katana") r6/tweaks/crystal_blades/crystal_blades.yaml → r6/tweaks/crystal_blades/
Game.GetTarget():AddMod("Items.Preset_Crystal_ThrowingKnife") r6/loc/en-us/crystal_blades.json → r6/loc/en-us/
r6/loc/de-de/crystal_blades.json → r6/loc/de-de/
``` ```
Oder über ArchiveXL/Virtual Atelier als Shop-Item hinzufügen. ## Spawn Commands (CET Console)
## Status ```
Game.AddToInventory("Items.Preset_Crystal_Katana", 1)
Game.AddToInventory("Items.Preset_Crystal_Knife", 1)
```
- [x] TweakXL Stats definiert ## File Structure
- [x] Lokalisierung (EN + DE)
- [x] Status Effects (Bleed + Armor Pierce)
- [ ] 3D Mesh (Blender → WolvenKit)
- [ ] Texturen (ComfyUI)
- [ ] Icon
- [ ] ArchiveXL Item-Definition (.xl)
- [ ] Virtual Atelier Shop-Eintrag
## Nächste Schritte ```
cp2077-crystal-blades/
├── r6/
│ ├── tweaks/
│ │ └── crystal_blades/
│ │ └── crystal_blades.yaml ← Weapon definitions (clone Satori + Nehan)
│ └── loc/
│ ├── en-us/
│ │ └── crystal_blades.json ← English names/descriptions
│ └── de-de/
│ └── crystal_blades.json ← German names/descriptions
├── archive/
│ └── pc/
│ └── mod/ ← (future: custom meshes/textures)
└── README.md
```
1. **Blender:** Kristall-Katana Mesh erstellen (transparente Klinge, leuchtende Schneide) ## How It Works
2. **Blender:** Wurfdolch Mesh erstellen (kompakt, Kristallklinge)
3. **WolvenKit:** Meshes ins CP2077 .mesh Format konvertieren Instead of building weapons from scratch, this mod **clones** Satori and Nehan:
4. **ComfyUI:** Texturen generieren (Kristall-Look, leuchtend)
5. **ArchiveXL:** .xl Datei für das Item-Appearance 1. `$base: Items.Preset_Katana_Saburo_Legendary` copies the ENTIRE Satori record
6. **Testen:** Im Spiel prüfen ob Waffen funktionieren - All hidden GameplayLogicPackages (bleeding, hemorrhaging)
- All statModifiers from the base weapon
- All scripts and effectors
2. Only `displayName` and `localizedDescription` are overridden
3. LocKeys are resolved via `r6/loc/` JSON files (not ArchiveXL)
## TODO
- [ ] Custom 3D mesh (Blender → WolvenKit)
- [ ] Custom textures (ComfyUI — crystal look)
- [ ] Custom inventory icons
- [ ] ArchiveXL appearance definition (.xl)
- [ ] Virtual Atelier store entry
+6
View File
@@ -0,0 +1,6 @@
{
"crystal_katana_name": "Kristallschneider",
"crystal_katana_desc": "Ein Katana mit monomolekularer Kristallklinge. Geschmiedet in den Tiefen des schwarzen Marktes von Night City. Jeder Treffer verursacht unkontrollierbare Blutung — Rüstung ist bedeutungslos.",
"crystal_knife_name": "Phantom Splitter",
"crystal_knife_desc": "Ein Wurfdolch mit monomolekularer Kristallklinge. Geworfene Treffer garantieren Blutung. Wenn das Ziel bereits blutet, verursacht der Dolch innere Blutungen und heilt den Träger."
}
+6
View File
@@ -0,0 +1,6 @@
{
"crystal_katana_name": "Crystal Cleaver",
"crystal_katana_desc": "A katana with a monomolecular crystal blade. Forged in the depths of Night City's black market. Every strike causes uncontrollable bleeding — armor is meaningless.",
"crystal_knife_name": "Phantom Splitter",
"crystal_knife_desc": "A throwing knife with a monomolecular crystal edge. Thrown hits guarantee bleeding. If the target is already bleeding, the knife causes hemorrhaging and heals the wielder."
}
+13 -94
View File
@@ -1,109 +1,28 @@
# Crystal Blades — Kristallklingen # Crystal Blades — Kristallklingen
# Direkte Waffen-Definition ohne Hidden Mod Umweg # Klon von Satori (Katana) und Nehan (Wurfdolch)
# Behält alle versteckten GameplayLogicPackages, Scripte und Effekte
# Nur Name, Beschreibung und zusätzliche Stats werden überschrieben
# ============================================================ # ============================================================
# WAFFE 1: Kristallschneider (Katana) # WAFFE 1: Kristallschneider — Klon von Satori
# Satori = Items.Preset_Katana_Saburo_Legendary
# Behält: Bleeding, Hemorrhaging, alle Hidden Packages
# ============================================================ # ============================================================
Items.Preset_Crystal_Katana: Items.Preset_Crystal_Katana:
$base: Items.Preset_Katana_Default $base: Items.Preset_Katana_Saburo_Legendary
displayName: LocKey#crystal_katana_name displayName: LocKey#crystal_katana_name
localizedDescription: LocKey#crystal_katana_desc localizedDescription: LocKey#crystal_katana_desc
quality: Quality.Legendary quality: Quality.Legendary
# Direkte Stat-Überschreibungen auf der Waffe
statModifiers:
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.DPS
value: 200.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.AttackSpeed
value: 0.2
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.CritChance
value: 15.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.CritDamage
value: 30.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.BleedingApplicationRate
value: 1.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.ArmorPenetration
value: 1.0
# Kopfschuss bleibt extrem tödlich — monomolekular durchtrennt alles
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.HeadshotDamageMultiplier
value: 4.0
# Lifesteal — Leben zurück bei Kill (wie Nehan)
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.HealOnKill
value: 50.0
# Heilung bei Treffer
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.HealthRegen
value: 10.0
# ============================================================ # ============================================================
# WAFFE 2: Phantom Splitter (Wurfdolch) # WAFFE 2: Phantom Splitter — Klon von Nehan
# Nehan = Items.Preset_Tanto_Saburo_Retrofix
# Behält: Thrown hits apply Bleeding, Hemorrhaging, Healing
# ============================================================ # ============================================================
Items.Preset_Crystal_ThrowingKnife: Items.Preset_Crystal_Knife:
$base: Items.Preset_Knife_Default $base: Items.Preset_Tanto_Saburo_Retrofix
displayName: LocKey#crystal_knife_name displayName: LocKey#crystal_knife_name
localizedDescription: LocKey#crystal_knife_desc localizedDescription: LocKey#crystal_knife_desc
quality: Quality.Legendary quality: Quality.Legendary
statModifiers:
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.DPS
value: 150.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.AttackSpeed
value: 0.5
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.CritChance
value: 25.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.CritDamage
value: 50.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.BleedingApplicationRate
value: 1.0
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.ArmorPenetration
value: 1.0
# Kopfschuss bleibt extrem tödlich
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.HeadshotDamageMultiplier
value: 4.0
# Lifesteal — Leben zurück bei Kill (wie Nehan)
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.HealOnKill
value: 50.0
# Heilung bei Treffer
- $type: gamedataConstantStatModifier_Record
modifierType: Additive
statType: BaseStats.HealthRegen
value: 10.0
# ============================================================
# Localization — als JSON im localization Ordner
# ============================================================