package classes

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

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

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

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

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

	// Special classes
	ClassShaper    = 43
	ClassChanneler = 44
)

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

	// Craftsman subclasses
	ClassProvisioner = 47
	ClassWoodworker  = 48
	ClassCarpenter   = 49

	// Outfitter subclasses
	ClassArmorer     = 51
	ClassWeaponsmith = 52
	ClassTailor      = 53

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

// Class validation constants
const (
	MaxClassID                = 57
	MinClassID                = 0
	DefaultClassID            = ClassCommoner
	ClassicMaxAdventureClass  = 40 // Classic adventure classes (0-40)
	ClassicMaxTradeskillClass = 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"
)
