package classes

// Adventure class ID constants converted from C++ classes.h
const (
	// Base classes
	ClassCommoner = int8(0)
	ClassFighter  = int8(1)
	ClassPriest   = int8(11)
	ClassMage     = int8(21)
	ClassScout    = int8(31)

	// Fighter subclasses
	ClassWarrior      = int8(2)
	ClassGuardian     = int8(3)
	ClassBerserker    = int8(4)
	ClassBrawler      = int8(5)
	ClassMonk         = int8(6)
	ClassBruiser      = int8(7)
	ClassCrusader     = int8(8)
	ClassShadowknight = int8(9)
	ClassPaladin      = int8(10)

	// Priest subclasses
	ClassCleric     = int8(12)
	ClassTemplar    = int8(13)
	ClassInquisitor = int8(14)
	ClassDruid      = int8(15)
	ClassWarden     = int8(16)
	ClassFury       = int8(17)
	ClassShaman     = int8(18)
	ClassMystic     = int8(19)
	ClassDefiler    = int8(20)

	// Mage subclasses
	ClassSorcerer    = int8(22)
	ClassWizard      = int8(23)
	ClassWarlock     = int8(24)
	ClassEnchanter   = int8(25)
	ClassIllusionist = int8(26)
	ClassCoercer     = int8(27)
	ClassSummoner    = int8(28)
	ClassConjuror    = int8(29)
	ClassNecromancer = int8(30)

	// Scout subclasses
	ClassRogue        = int8(32)
	ClassSwashbuckler = int8(33)
	ClassBrigand      = int8(34)
	ClassBard         = int8(35)
	ClassTroubador    = int8(36)
	ClassDirge        = int8(37)
	ClassPredator     = int8(38)
	ClassRanger       = int8(39)
	ClassAssassin     = int8(40)
	ClassAnimalist    = int8(41)
	ClassBeastlord    = int8(42)

	// Special classes
	ClassShaper    = int8(43)
	ClassChanneler = int8(44)
)

// Tradeskill class ID constants
const (
	// Base tradeskill classes
	ClassArtisan   = int8(45)
	ClassCraftsman = int8(46)
	ClassOutfitter = int8(50)
	ClassScholar   = int8(54)

	// Craftsman subclasses
	ClassProvisioner = int8(47)
	ClassWoodworker  = int8(48)
	ClassCarpenter   = int8(49)

	// Outfitter subclasses
	ClassArmorer     = int8(51)
	ClassWeaponsmith = int8(52)
	ClassTailor      = int8(53)

	// Scholar subclasses
	ClassJeweler   = int8(55)
	ClassSage      = int8(56)
	ClassAlchemist = int8(57)
)

// Class validation constants
const (
	MaxClassID                = int8(57)
	MinClassID                = int8(0)
	DefaultClassID            = ClassCommoner
	ClassicMaxAdventureClass  = int8(40) // Classic adventure classes (0-40)
	ClassicMaxTradeskillClass = int8(13) // Classic tradeskill progression (0-13)
	MaxClasses                = 58       // Total number of classes
)

// Class type categories
const (
	ClassTypeAdventure  = "adventure"
	ClassTypeTradeskill = "tradeskill"
	ClassTypeSpecial    = "special"
)

// Class name constants for lookup (uppercase keys from C++)
const (
	ClassNameCommoner     = "COMMONER"
	ClassNameFighter      = "FIGHTER"
	ClassNameWarrior      = "WARRIOR"
	ClassNameGuardian     = "GUARDIAN"
	ClassNameBerserker    = "BERSERKER"
	ClassNameBrawler      = "BRAWLER"
	ClassNameMonk         = "MONK"
	ClassNameBruiser      = "BRUISER"
	ClassNameCrusader     = "CRUSADER"
	ClassNameShadowknight = "SHADOWKNIGHT"
	ClassNamePaladin      = "PALADIN"
	ClassNamePriest       = "PRIEST"
	ClassNameCleric       = "CLERIC"
	ClassNameTemplar      = "TEMPLAR"
	ClassNameInquisitor   = "INQUISITOR"
	ClassNameDruid        = "DRUID"
	ClassNameWarden       = "WARDEN"
	ClassNameFury         = "FURY"
	ClassNameShaman       = "SHAMAN"
	ClassNameMystic       = "MYSTIC"
	ClassNameDefiler      = "DEFILER"
	ClassNameMage         = "MAGE"
	ClassNameSorcerer     = "SORCERER"
	ClassNameWizard       = "WIZARD"
	ClassNameWarlock      = "WARLOCK"
	ClassNameEnchanter    = "ENCHANTER"
	ClassNameIllusionist  = "ILLUSIONIST"
	ClassNameCoercer      = "COERCER"
	ClassNameSummoner     = "SUMMONER"
	ClassNameConjuror     = "CONJUROR"
	ClassNameNecromancer  = "NECROMANCER"
	ClassNameScout        = "SCOUT"
	ClassNameRogue        = "ROGUE"
	ClassNameSwashbuckler = "SWASHBUCKLER"
	ClassNameBrigand      = "BRIGAND"
	ClassNameBard         = "BARD"
	ClassNameTroubador    = "TROUBADOR"
	ClassNameDirge        = "DIRGE"
	ClassNamePredator     = "PREDATOR"
	ClassNameRanger       = "RANGER"
	ClassNameAssassin     = "ASSASSIN"
	ClassNameAnimalist    = "ANIMALIST"
	ClassNameBeastlord    = "BEASTLORD"
	ClassNameShaper       = "SHAPER"
	ClassNameChanneler    = "CHANNELER"
	ClassNameArtisan      = "ARTISAN"
	ClassNameCraftsman    = "CRAFTSMAN"
	ClassNameProvisioner  = "PROVISIONER"
	ClassNameWoodworker   = "WOODWORKER"
	ClassNameCarpenter    = "CARPENTER"
	ClassNameOutfitter    = "OUTFITTER"
	ClassNameArmorer      = "ARMORER"
	ClassNameWeaponsmith  = "WEAPONSMITH"
	ClassNameTailor       = "TAILOR"
	ClassNameScholar      = "SCHOLAR"
	ClassNameJeweler      = "JEWELER"
	ClassNameSage         = "SAGE"
	ClassNameAlchemist    = "ALCHEMIST"
)

// Class display names (proper case)
const (
	DisplayNameCommoner     = "Commoner"
	DisplayNameFighter      = "Fighter"
	DisplayNameWarrior      = "Warrior"
	DisplayNameGuardian     = "Guardian"
	DisplayNameBerserker    = "Berserker"
	DisplayNameBrawler      = "Brawler"
	DisplayNameMonk         = "Monk"
	DisplayNameBruiser      = "Bruiser"
	DisplayNameCrusader     = "Crusader"
	DisplayNameShadowknight = "Shadowknight"
	DisplayNamePaladin      = "Paladin"
	DisplayNamePriest       = "Priest"
	DisplayNameCleric       = "Cleric"
	DisplayNameTemplar      = "Templar"
	DisplayNameInquisitor   = "Inquisitor"
	DisplayNameDruid        = "Druid"
	DisplayNameWarden       = "Warden"
	DisplayNameFury         = "Fury"
	DisplayNameShaman       = "Shaman"
	DisplayNameMystic       = "Mystic"
	DisplayNameDefiler      = "Defiler"
	DisplayNameMage         = "Mage"
	DisplayNameSorcerer     = "Sorcerer"
	DisplayNameWizard       = "Wizard"
	DisplayNameWarlock      = "Warlock"
	DisplayNameEnchanter    = "Enchanter"
	DisplayNameIllusionist  = "Illusionist"
	DisplayNameCoercer      = "Coercer"
	DisplayNameSummoner     = "Summoner"
	DisplayNameConjuror     = "Conjuror"
	DisplayNameNecromancer  = "Necromancer"
	DisplayNameScout        = "Scout"
	DisplayNameRogue        = "Rogue"
	DisplayNameSwashbuckler = "Swashbuckler"
	DisplayNameBrigand      = "Brigand"
	DisplayNameBard         = "Bard"
	DisplayNameTroubador    = "Troubador"
	DisplayNameDirge        = "Dirge"
	DisplayNamePredator     = "Predator"
	DisplayNameRanger       = "Ranger"
	DisplayNameAssassin     = "Assassin"
	DisplayNameAnimalist    = "Animalist"
	DisplayNameBeastlord    = "Beastlord"
	DisplayNameShaper       = "Shaper"
	DisplayNameChanneler    = "Channeler"
	DisplayNameArtisan      = "Artisan"
	DisplayNameCraftsman    = "Craftsman"
	DisplayNameProvisioner  = "Provisioner"
	DisplayNameWoodworker   = "Woodworker"
	DisplayNameCarpenter    = "Carpenter"
	DisplayNameOutfitter    = "Outfitter"
	DisplayNameArmorer      = "Armorer"
	DisplayNameWeaponsmith  = "Weaponsmith"
	DisplayNameTailor       = "Tailor"
	DisplayNameScholar      = "Scholar"
	DisplayNameJeweler      = "Jeweler"
	DisplayNameSage         = "Sage"
	DisplayNameAlchemist    = "Alchemist"
)
