implement classes tests and fix package

This commit is contained in:
Sky Johnson 2025-08-01 16:42:31 -05:00
parent f4ace393d3
commit 249bb4f3c1
5 changed files with 1783 additions and 69 deletions

File diff suppressed because it is too large Load Diff

View File

@ -3,94 +3,94 @@ package classes
// Adventure class ID constants converted from C++ classes.h // Adventure class ID constants converted from C++ classes.h
const ( const (
// Base classes // Base classes
ClassCommoner = 0 ClassCommoner = int8(0)
ClassFighter = 1 ClassFighter = int8(1)
ClassPriest = 11 ClassPriest = int8(11)
ClassMage = 21 ClassMage = int8(21)
ClassScout = 31 ClassScout = int8(31)
// Fighter subclasses // Fighter subclasses
ClassWarrior = 2 ClassWarrior = int8(2)
ClassGuardian = 3 ClassGuardian = int8(3)
ClassBerserker = 4 ClassBerserker = int8(4)
ClassBrawler = 5 ClassBrawler = int8(5)
ClassMonk = 6 ClassMonk = int8(6)
ClassBruiser = 7 ClassBruiser = int8(7)
ClassCrusader = 8 ClassCrusader = int8(8)
ClassShadowknight = 9 ClassShadowknight = int8(9)
ClassPaladin = 10 ClassPaladin = int8(10)
// Priest subclasses // Priest subclasses
ClassCleric = 12 ClassCleric = int8(12)
ClassTemplar = 13 ClassTemplar = int8(13)
ClassInquisitor = 14 ClassInquisitor = int8(14)
ClassDruid = 15 ClassDruid = int8(15)
ClassWarden = 16 ClassWarden = int8(16)
ClassFury = 17 ClassFury = int8(17)
ClassShaman = 18 ClassShaman = int8(18)
ClassMystic = 19 ClassMystic = int8(19)
ClassDefiler = 20 ClassDefiler = int8(20)
// Mage subclasses // Mage subclasses
ClassSorcerer = 22 ClassSorcerer = int8(22)
ClassWizard = 23 ClassWizard = int8(23)
ClassWarlock = 24 ClassWarlock = int8(24)
ClassEnchanter = 25 ClassEnchanter = int8(25)
ClassIllusionist = 26 ClassIllusionist = int8(26)
ClassCoercer = 27 ClassCoercer = int8(27)
ClassSummoner = 28 ClassSummoner = int8(28)
ClassConjuror = 29 ClassConjuror = int8(29)
ClassNecromancer = 30 ClassNecromancer = int8(30)
// Scout subclasses // Scout subclasses
ClassRogue = 32 ClassRogue = int8(32)
ClassSwashbuckler = 33 ClassSwashbuckler = int8(33)
ClassBrigand = 34 ClassBrigand = int8(34)
ClassBard = 35 ClassBard = int8(35)
ClassTroubador = 36 ClassTroubador = int8(36)
ClassDirge = 37 ClassDirge = int8(37)
ClassPredator = 38 ClassPredator = int8(38)
ClassRanger = 39 ClassRanger = int8(39)
ClassAssassin = 40 ClassAssassin = int8(40)
ClassAnimalist = 41 ClassAnimalist = int8(41)
ClassBeastlord = 42 ClassBeastlord = int8(42)
// Special classes // Special classes
ClassShaper = 43 ClassShaper = int8(43)
ClassChanneler = 44 ClassChanneler = int8(44)
) )
// Tradeskill class ID constants // Tradeskill class ID constants
const ( const (
// Base tradeskill classes // Base tradeskill classes
ClassArtisan = 45 ClassArtisan = int8(45)
ClassCraftsman = 46 ClassCraftsman = int8(46)
ClassOutfitter = 50 ClassOutfitter = int8(50)
ClassScholar = 54 ClassScholar = int8(54)
// Craftsman subclasses // Craftsman subclasses
ClassProvisioner = 47 ClassProvisioner = int8(47)
ClassWoodworker = 48 ClassWoodworker = int8(48)
ClassCarpenter = 49 ClassCarpenter = int8(49)
// Outfitter subclasses // Outfitter subclasses
ClassArmorer = 51 ClassArmorer = int8(51)
ClassWeaponsmith = 52 ClassWeaponsmith = int8(52)
ClassTailor = 53 ClassTailor = int8(53)
// Scholar subclasses // Scholar subclasses
ClassJeweler = 55 ClassJeweler = int8(55)
ClassSage = 56 ClassSage = int8(56)
ClassAlchemist = 57 ClassAlchemist = int8(57)
) )
// Class validation constants // Class validation constants
const ( const (
MaxClassID = 57 MaxClassID = int8(57)
MinClassID = 0 MinClassID = int8(0)
DefaultClassID = ClassCommoner DefaultClassID = ClassCommoner
ClassicMaxAdventureClass = 40 // Classic adventure classes (0-40) ClassicMaxAdventureClass = int8(40) // Classic adventure classes (0-40)
ClassicMaxTradeskillClass = 13 // Classic tradeskill progression (0-13) ClassicMaxTradeskillClass = int8(13) // Classic tradeskill progression (0-13)
MaxClasses = 58 // Total number of classes MaxClasses = 58 // Total number of classes
) )

View File

@ -108,8 +108,8 @@ func (ci *ClassIntegration) CheckClassCompatibility(entity1, entity2 ClassAware)
} }
// Check if they share the same base class (good for grouping) // Check if they share the same base class (good for grouping)
base1 := ci.classes.GetBaseClass(class1) // base1 := ci.classes.GetBaseClass(class1)
base2 := ci.classes.GetBaseClass(class2) // base2 := ci.classes.GetBaseClass(class2)
// Different base classes can group together (provides diversity) // Different base classes can group together (provides diversity)
// Same base class provides synergy // Same base class provides synergy

View File

@ -172,7 +172,7 @@ func (cm *ClassManager) handleInfoCommand(args []string) (string, error) {
return fmt.Sprintf("Invalid class ID: %d", classID), nil return fmt.Sprintf("Invalid class ID: %d", classID), nil
} }
result := fmt.Sprintf("Class Information:\n") result := "Class Information:\n"
result += fmt.Sprintf("ID: %d\n", classID) result += fmt.Sprintf("ID: %d\n", classID)
result += fmt.Sprintf("Name: %s\n", classInfo["display_name"]) result += fmt.Sprintf("Name: %s\n", classInfo["display_name"])
result += fmt.Sprintf("Type: %s\n", classInfo["type"]) result += fmt.Sprintf("Type: %s\n", classInfo["type"])
@ -390,7 +390,7 @@ func (cm *ClassManager) GetClassRecommendations(preferences map[string]interface
// Check for base class preference // Check for base class preference
if baseClass, exists := preferences["base_class"]; exists { if baseClass, exists := preferences["base_class"]; exists {
if baseClassID, ok := baseClass.(int8); ok { if baseClassID, ok := baseClass.(int8); ok {
subClasses := cm.utils.GetClassesByBaseClass(baseClassID) subClasses := cm.utils.GetClassesForBaseClass(baseClassID)
recommendations = append(recommendations, subClasses...) recommendations = append(recommendations, subClasses...)
} }
} }

View File

@ -259,8 +259,8 @@ func (cu *ClassUtils) GetClassProgression(classID int8) []int8 {
return progression return progression
} }
// GetClasssByBaseClass returns all classes that belong to a base class // GetClassesForBaseClass returns all classes that belong to a base class
func (cu *ClassUtils) GetClasssByBaseClass(baseClassID int8) []int8 { func (cu *ClassUtils) GetClassesForBaseClass(baseClassID int8) []int8 {
result := make([]int8, 0) result := make([]int8, 0)
allClasses := cu.classes.GetAllClasses() allClasses := cu.classes.GetAllClasses()