import { RestrictedNumber } from 'restricted-number' ; import { IItem } from './IItem' ; import { IChoice } from './IChoice' ; import { ServerEventName } from './ServerEvent' ; import { IProfession } from './IProfession' ; import { IBuff } from './IBuff' ; import { IParty } from './IParty' ; import { Stat } from './Stat' ; import { ModeratorTier } from './Moderation' ; export enum Direction { Southwest = 1 , South = 2 , Southeast = 3 , West = 4 , Nowhere = 5 , East = 6 , Northwest = 7 , North = 8 , Northeast = 9 } export enum MovementType { Ascend = 'ascend' , Descend = 'descend' , Fall = 'fall' , Teleport = 'teleport' } export enum Profession { Archer = 'Archer' , Barbarian = 'Barbarian' , Bard = 'Bard' , Bitomancer = 'Bitomancer' , Cleric = 'Cleric' , Fighter = 'Fighter' , Generalist = 'Generalist' , Jester = 'Jester' , Mage = 'Mage' , MagicalMonster = 'MagicalMonster' , Monster = 'Monster' , Necromancer = 'Necromancer' , Pirate = 'Pirate' , Rogue = 'Rogue' , SandwichArtist = 'SandwichArtist' } export interface ICharacter { name : string ; level : RestrictedNumber ; gender : string ; currentStats : { [ key in Stat ] : number ; } ; init ( ) : void ; recalculateStats ( ) : void ; getStat ( stat ) : number ; equip ( item ) : void ; unequip ( item ) : void ; } export interface IPlayer extends ICharacter { _id : string ; userId : string ; sessionId : string ; authId : string ; authType : string ; authSyncedTo : string ; modTier : ModeratorTier ; discordTag : string ; il3CharName : string ; createdAt : number ; profession : Profession ; stamina : RestrictedNumber ; xp : RestrictedNumber ; gold : number ; x : number ; y : number ; map : string ; loggedIn : boolean ; ascensionLevel : number ; cooldowns : { [ key ] : number ; } ; eventSteps : number ; availableGenders : string [ ] ; availableTitles : string [ ] ; $profession : any ; $professionData : any ; $statistics : any ; $statisticsData : any ; $inventory : any ; $inventoryData : any ; $choices : any ; $choicesData : any ; $achievements : any ; $achievementsData : any ; $personalities : any ; $personalitiesData : any ; $collectibles : any ; $collectiblesData : any ; $pets : any ; $petsData : any ; $premium : any ; $premiumData : any ; $quests : any ; $questsData : any ; lastDir : Direction ; lastLoc : { map : string ; x : number ; y : number ; } ; divineDirection ? : { x : number ; y : number ; steps : number ; } ; buffWatches : { [ key in Stat ] ? : IBuff [ ] ; } ; $party ? : IParty ; guildName ? : string ; loop ( tick ) : Promise < void > ; toSaveObject ( ) : IPlayer ; canLevelUp ( ) : boolean ; gainXP ( num , addMyXP ) : number ; resetMaxXP ( ) : void ; gainGold ( num , addMyGold ) : number ; spendGold ( num ) : number ; alwaysTryAddToInventory ( item ) : void ; sellItem ( item ) : number ; salvageItem ( item ) : { wood : number ; clay : number ; stone : number ; astralium : number ; } ; changeProfessionWithRef ( profession ) : void ; changeProfession ( profession ) : void ; doChoice ( choice , decisionIndex ) : void ; emit ( evt , data ) : void ; getDefaultChoice ( str ) : string ; hasPersonality ( pers ) : boolean ; hasAchievement ( achievement ) : boolean ; hasCollectible ( collectible ) : boolean ; tryFindCollectible ( { name , rarity , description , storyline } ) : void ; increaseStatistic ( stat , val ) : void ; forceUnequip ( item ) : void ; addBuff ( buff ) : void ; grantBuff ( buff , canShare ) : void ; gainILP ( ilp ) : void ; setDivineDirection ( x , y ) : void ; setPos ( x , y , map , region ) : void ; changeGender ( newGender ) : void ; changeTitle ( newTitle ) : void ; tryToDoNewCharacter ( ) : void ; oocAction ( ) : { success : boolean ; message : string ; } ; petOOCAction ( ) : { success : boolean ; message : string ; } ; injuryCount ( ) : number ; cureInjury ( ) : void ; }