v0.55.0 - The Specialist
NPC Class Specialization System
This update adds a dual specialization system for NPC teammates, letting players assign combat roles like Healer, Tank, DPS, Utility, or Debuff to their team members. Each of the 12 base classes gets 2 specializations (24 total), changing how the NPC behaves in combat and what stats they gain on future level-ups.
Specializations:
| Class | Spec 1 (Offensive) | Spec 2 (Defensive/Support) |
|---|---|---|
| Warrior | Arms (DPS) | Protection (Tank) |
| Paladin | Retribution (DPS) | Holy (Healer) |
| Ranger | Marksmanship (DPS) | Survival (Utility) |
| Assassin | Subtlety (DPS) | Toxicology (Debuff) |
| Barbarian | Berserker (DPS) | Juggernaut (Tank) |
| Cleric | Smite (DPS) | Restoration (Healer) |
| Magician | Destruction (DPS) | Arcane (Utility) |
| Sage | Elementalist (DPS) | Mystic (Healer) |
| Bard | Virtuoso (DPS) | Minstrel (Healer) |
| Alchemist | Demolition (DPS) | Apothecary (Healer) |
| Jester | Chaos (DPS) | Trickster (Debuff) |
| Mystic Shaman | Elemental (DPS) | Spiritwalker (Healer) |
How it works:
- NPC teammates only -- does not affect the player character or companions (Aldric, Vex, Lyris, Mira, Melodia)
- Free to swap anytime from Team Corner via
[X] Specialize - Additive stat growth -- specs add bonus stats on future level-ups (not retroactive). A Holy Paladin gains +2 WIS, +1 CON, +4 Mana, +3 HP per level on top of base Paladin growth
- No new abilities -- specs filter and prioritize existing class abilities. A Minstrel Bard uses the same Bard abilities but prioritizes heals/buffs (75% chance) over attacks
- Combat AI changes:
- Healer specs (Holy, Restoration, Mystic, Minstrel, Apothecary, Spiritwalker) heal allies aggressively at 75-80% HP instead of the default 50-70%
- DPS Cleric (Smite) becomes emergency-only healer at 30% HP
- Tank specs (Protection, Juggernaut) prioritize taunts and defensive abilities
- Ability use chance varies by spec (55-70% instead of flat 50%)
- Restricted ability types: e.g., Restoration Cleric deprioritizes attack abilities, Minstrel Bard deprioritizes attacks
Noneis valid -- unspecialized NPCs work exactly as before. All combat code falls through to existing behavior when spec is None- Spec badges -- team member listings show
[Arms],[Holy], etc. next to class name - Examine member -- detail screen shows current specialization and role
- Data-driven -- all 24 specs defined in a single
SpecializationData.csfile with no per-spec switch statements in combat code - Save compatible -- missing field defaults to
None(0), so existing saves load without issues - Persists in online mode -- spec survives save/load and world state synchronization
New healers available: Holy Paladin, Mystic Sage, Minstrel Bard, Apothecary Alchemist, Spiritwalker Shaman -- all heal allies at 75-80% HP, dramatically improving party healing options beyond Cleric.
New tanks available: Protection Warrior and Juggernaut Barbarian both prioritize taunt abilities and gain massive HP/DEF bonuses per level.
Files Changed
Scripts/Core/GameConfig.cs-- Version 0.55.0 "The Specialist"Scripts/Core/Character.cs--ClassSpecializationenum (24 values +None = 0)Scripts/Core/NPC.cs--Specializationproperty (ClassSpecialization.Nonedefault)Scripts/Data/SpecializationData.cs-- NEW --SpecDefinitionclass andSpecializationDatastatic data with all 24 spec definitions;SpecRoleenum (DPS/Tank/Healer/Utility/Debuff); helper methodsGetSpec(),GetSpecsForClass(),IsValidSpecForClass(),IsHealerSpec(),IsTankSpec()Scripts/Systems/SaveDataStructures.cs--NPCData.SpecializationfieldScripts/Systems/SaveSystem.cs-- Specialization serialization inSerializeNPCs()Scripts/Core/GameEngine.cs-- Specialization restore inRestoreNPCs()Scripts/Systems/WorldSimService.cs-- Specialization restore inRestoreNPCsFromData()Scripts/Systems/OnlineStateManager.cs-- Specialization in shared NPC state serializationScripts/Locations/LevelMasterLocation.cs-- Spec stat growth bonuses applied inApplyClassStatIncreases()after base class switch (additive, NPC teammates only)Scripts/Systems/CombatEngine.cs-- Spec-aware healing inTryTeammateHealAction()(overrideisHealerClassandhealThresholdfrom spec); spec-based ability filtering inTryTeammateClassAbility()(restricted types, disabled IDs, 75% preferred type weighting); spec-based tank detection (Protection/Juggernaut) for taunt priority; spec-based ability use chance override;IsHealerClass()updated to check spec roleScripts/Locations/TeamCornerLocation.cs--[X] Specializemenu option (visual + SR menus);SpecializeMember()method with numbered NPC selection and current spec display;ShowSpecOptions()with stat growth comparison, role description, heal threshold info; spec badges inShowTeamMembers()detailed and simple views; spec display inExamineMember()detail screen;SaveAllSharedState()after spec changes in online modeLocalization/en.json-- ~45 new keys (spec UI prompts, 24 spec descriptions)Localization/es.json-- Spanish translations for all spec keysLocalization/fr.json-- French translations for all spec keysLocalization/hu.json-- Hungarian translations for all spec keysLocalization/it.json-- Italian translations for all spec keys