implement classes tests and fix package
This commit is contained in:
parent
f4ace393d3
commit
249bb4f3c1
1714
internal/classes/classes_test.go
Normal file
1714
internal/classes/classes_test.go
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user