import { ICharacter , IPlayer } from './IPlayer' ; import { ItemSlot , IItem } from './IItem' ; import { Stat } from './Stat' ; import { RestrictedNumber } from 'restricted-number' ; import { IAffinity , IAttribute } from './IProfession' ; import { PermanentUpgrade } from './IPremium' ; export enum PetUpgrade { GoldStorage = 'goldStorage' , BattleJoinPercent = 'battleJoinPercent' , GatherTime = 'gatherTime' , ItemFindQualityBoost = 'itemFindQualityBoost' , ItemFindLevelBoost = 'itemFindLevelBoost' , ItemFindLevelPercent = 'itemFindLevelPercent' , ILPGatherQuantity = 'ilpGatherQuantity' , StrongerSoul = 'strongerSoul' , SoulShare = 'soulShare' } export enum PetAffinity { None = 'None' , Attacker = 'Attacker' , Buffer = 'Buffer' , Caster = 'Caster' , Defender = 'Defender' , Healer = 'Healer' , Hunter = 'Hunter' } export enum PetAttribute { Alchemist = 'Alchemist' , Blessed = 'Blessed' , Cursed = 'Cursed' , Golden = 'Golden' , Fateful = 'Fateful' , Ferocious = 'Ferocious' , Surging = 'Surging' , Trueseer = 'Trueseer' } export enum PetUpgradeMaterial { CrystalGreen = 'CrystalGreen' , CrystalYellow = 'CrystalYellow' , CrystalRed = 'CrystalRed' , CrystalBlue = 'CrystalBlue' , CrystalPurple = 'CrystalPurple' , CrystalOrange = 'CrystalOrange' , CrystalAstral = 'CrystalAstral' } export interface IPet extends ICharacter { $$player : IPlayer ; affinity : PetAffinity ; $affinity : IAffinity ; attribute : PetAttribute ; $attribute : IAttribute ; rating : number ; name : string ; typeName : string ; gatherTick : number ; upgradeLevels : { [ key in PetUpgrade ] ? : number ; } ; gold : RestrictedNumber ; $currentUpgrade : { [ key in PetUpgrade ] ? : { a ? : number ; v : number ; c : number ; } ; } ; $nextUpgrade : { [ key in PetUpgrade ] ? : { a ? : number ; v : number ; c : number ; } ; } ; $ascMaterials : any ; permanentUpgrades : { [ key in PermanentUpgrade ] ? : number ; } ; equipment : { [ key in ItemSlot ] ? : IItem [ ] ; } ; currentAdventureId : string ; loop ( ) : void ; tryEquipAnItemAndReplaceSlotsIfPossible ( item ) : boolean ; toSaveObject ( ) : any ; } export interface IPetProto { affinity : PetAffinity ; attribute : PetAttribute ; rating : number ; typeName : string ; cost : number ; equipmentSlots : { [ key in ItemSlot ] ? : number ; } ; soulStats : { [ key in Stat ] ? : number ; } ; requirements : { statistics : { [ key ] : number ; } ; achievements ? : Array < { name : string ; tier : number ; } > ; collectibles ? : string [ ] ; bosses ? : string [ ] ; } ; maxLevelPerAscension : Array < number > ; ascensionMaterials : Array < { [ key in PetUpgradeMaterial ] ? : number ; } > ; upgrades : { [ key in PetUpgrade ] : Array < { v : number ; c : number ; a ? : number ; } > ; } ; permanentUpgrades : { [ key in PermanentUpgrade ] ? : number ; } ; }