package transmute // TransmutingTier represents a level range and associated material IDs for transmutation type TransmutingTier struct { MinLevel int32 // Minimum item level for this tier MaxLevel int32 // Maximum item level for this tier FragmentID int32 // Item ID for fragments (lowest tier materials) PowderID int32 // Item ID for powder (mid tier materials) InfusionID int32 // Item ID for infusions (high tier materials) ManaID int32 // Item ID for mana (highest tier materials) } // TransmuteRequest represents an active transmutation request type TransmuteRequest struct { RequestID int32 // Unique request identifier ClientID int32 // Client making the request ItemID int32 // Item being transmuted (if in confirmation phase) Phase TransmutePhase } // TransmutePhase represents the current phase of transmutation type TransmutePhase int const ( PhaseItemSelection TransmutePhase = iota // Player selecting item to transmute PhaseConfirmation // Player confirming transmutation PhaseProcessing // Transmutation in progress PhaseComplete // Transmutation completed ) // TransmuteResult represents the outcome of a transmutation type TransmuteResult struct { Success bool // Whether transmutation was successful CommonMaterial Item // Common material received (if any) RareMaterial Item // Rare material received (if any) ErrorMessage string // Error message if unsuccessful SkillIncrease bool // Whether player received skill increase } // Item represents the minimal item interface needed for transmutation type Item interface { GetID() int32 GetUniqueID() int32 GetName() string GetAdventureDefaultLevel() int32 GetItemFlags() int32 GetItemFlags2() int32 GetTier() int32 GetStackCount() int32 CreateItemLink(version int32, detailed bool) string SetCount(count int32) } // Player represents the minimal player interface needed for transmutation type Player interface { GetItemList() map[int32]Item GetItemFromUniqueID(uniqueID int32) Item GetSkillByName(skillName string) Skill GetStat(statType int32) int32 GetName() string GetZone() Zone RemoveItem(item Item, deleteItem bool) bool AddItem(item Item) (bool, error) IncreaseSkill(skillName string, amount int32) error } // Client represents the minimal client interface needed for transmutation type Client interface { GetVersion() int32 GetTransmuteID() int32 SetTransmuteID(id int32) QueuePacket(packet []byte) SimpleMessage(channel int32, message string) Message(channel int32, format string, args ...any) AddItem(item Item, itemDeleted *bool) error } // Skill represents a player skill type Skill interface { GetCurrentValue() int32 GetMaxValue() int32 } // Zone represents a game zone type Zone interface { ProcessSpell(spell Spell, caster Player) error } // Spell represents a spell that can be cast type Spell interface { GetID() int32 GetName() string } // Database represents the database interface for transmutation type Database interface { LoadTransmutingTiers() ([]*TransmutingTier, error) } // PacketBuilder represents the interface for building packets type PacketBuilder interface { BuildItemRequestPacket(requestID int32, items []int32, version int32) ([]byte, error) BuildConfirmationPacket(requestID int32, item Item, version int32) ([]byte, error) BuildRewardPacket(items []Item, version int32) ([]byte, error) } // ItemMaster represents the master item list interface type ItemMaster interface { GetItem(itemID int32) Item CreateItem(itemID int32) Item }