How-to: Waffen-Modifikation erstellen
Schritte
- In
WeaponDefinitionFactory.CreateModifications()(Shared/Weapons/WeaponDefinitionFactory.cs) eineWeaponModificationDefinitionergänzen. - Stabile ID
mod.<name>, Display/Description, genau einenWeaponModificationSlot, kompatible WeaponIds und/oder Categories, RequiredUnlockId, Tags, Enabled und WeaponBalanceVersion setzen. WeaponStatModifierverwenden: Add addiert, Multiply multipliziert, Override setzt. Reihenfolge ist pro Stat Add → Multiply → Override; Werte innerhalb einer Operation werden deterministisch sortiert. Ergebnis wird gerundet/geklammert.- Komplexes Verhalten nur als stabile
GameplayEffectId(zum Beispieleffect.chain_lightning) deklarieren und in einer deterministischen Effekt-Fabrik implementieren. Diese Fabrik existiert noch nicht; ohne sie ist der Effekt nur Daten. - Unlock in
UnlockService.CreateDefaultUnlocksmit identischer ID ergänzen. - Loadout ordnet ModId dem deklarierten Slot zu. Validator prüft Slot, Kompatibilität, Unlock, Allow/Deny und Maximum. Ein Dictionary kann keinen Slot doppelt halten; serverseitig serialisierte Payload trotzdem validieren.
- UI-Text/Icon-System ist nicht implementiert;
WeaponModificationPanelist leer. Bei Integration Loading/Error/Locked/Compatibility anzeigen. - Bei Balanceauswirkung WeaponBalanceVersion erhöhen und LoadoutHash-/Stat-Tests anpassen.
Abgrenzung
- Modifikation: persistente Loadoutwahl, Slot/Unlock/Compatibility.
- Mastery-Perk: level- und tiergebundene persistente Auswahl, durch RunPolicy aktiv.
- Power-up: temporärer In-Run-Modifier in Player/WeaponRuntime.
- Kosmetik: nur Darstellung; darf Stats/Hash nur beeinflussen, wenn Contract dies ausdrücklich versioniert.
ReplicatedPlayerWeaponStatehat CosmeticModificationIds separat.
Tests
Catalog Unknown Weapon/missing compatibility, falscher Slot, inkompatible Waffe, locked, Allow/Deny, MaxMods, Add/Multiply/Override, Rundung und Hashsensitivität in WeaponsLoadoutsMasteryTests.cs.
Verwandt: Waffe, Mastery, Systemseite.