class PokeBattle_Trainer attr_accessor :name attr_accessor :id attr_writer :metaID attr_accessor :trainertype attr_writer :outfit attr_accessor :badges attr_reader :money attr_accessor :seen attr_accessor :owned attr_accessor :formseen attr_accessor :formlastseen attr_accessor :shadowcaught attr_accessor :party attr_accessor :pokedex # Whether the Pokédex was obtained attr_accessor :pokegear # Whether the Pokégear was obtained attr_writer :language def trainerTypeName # Name of this trainer type (localized) return PBTrainers.getName(@trainertype) rescue _INTL("PkMn Trainer") end def fullname return _INTL("{1} {2}",self.trainerTypeName,@name) end def publicID(id=nil) # Portion of the ID which is visible on the Trainer Card return id ? id&0xFFFF : @id&0xFFFF end def secretID(id=nil) # Other portion of the ID return id ? id>>16 : @id>>16 end def getForeignID # Random ID other than this Trainer's ID fid=0 loop do fid=rand(256) fid|=rand(256)<<8 fid|=rand(256)<<16 fid|=rand(256)<<24 break if fid!=@id end return fid end def setForeignID(other) @id=other.getForeignID end def metaID @metaID=$PokemonGlobal.playerID if !@metaID @metaID=0 if !@metaID return @metaID end def outfit return @outfit || 0 end def language return @language || pbGetLanguage end def money=(value) @money=[[value,MAX_MONEY].min,0].max end def moneyEarned # Money won when trainer is defeated data = pbGetTrainerTypeData(@trainertype) return data[3] if data && data[3] return 30 end def skill # Skill level (for AI) data = pbGetTrainerTypeData(@trainertype) return data[8] if data && data[8] return 30 end def skillCode data = pbGetTrainerTypeData(@trainertype) return data[9] if data && data[9] return "" end def hasSkillCode(code) c = skillCode return true if c && c!="" && c[/#{code}/] return false end def numbadges # Number of badges ret = 0 @badges.each { |b| ret += 1 if b } return ret end def gender data = pbGetTrainerTypeData(@trainertype) return data[7] if data && data[7] return 2 # Gender unknown end def male?; return self.gender==0; end alias isMale? male? def female?; return self.gender==1; end alias isFemale? female? def pokemonParty return @party.find_all { |p| p && !p.egg? } end def ablePokemonParty return @party.find_all { |p| p && !p.egg? && !p.fainted? } end def partyCount return @party.length end def pokemonCount ret = 0 @party.each { |p| ret += 1 if p && !p.egg? } return ret end def ablePokemonCount ret = 0 @party.each { |p| ret += 1 if p && !p.egg? && !p.fainted? } return ret end def firstParty return nil if @party.length==0 return @party[0] end def firstPokemon p=self.pokemonParty return nil if p.length==0 return p[0] end def firstAblePokemon p=self.ablePokemonParty return nil if p.length==0 return p[0] end def lastParty return nil if @party.length==0 return @party[@party.length-1] end def lastPokemon p=self.pokemonParty return nil if p.length==0 return p[p.length-1] end def lastAblePokemon p=self.ablePokemonParty return nil if p.length==0 return p[p.length-1] end def pokedexSeen(region=-1) # Number of Pokémon seen ret=0 if region==-1 for i in 0..PBSpecies.maxValue ret+=1 if @seen[i] end else regionlist=pbAllRegionalSpecies(region) for i in regionlist ret+=1 if @seen[i] end end return ret end def pokedexOwned(region=-1) # Number of Pokémon owned ret=0 if region==-1 for i in 0..PBSpecies.maxValue ret+=1 if @owned[i] end else regionlist=pbAllRegionalSpecies(region) for i in regionlist ret+=1 if @owned[i] end end return ret end def numFormsSeen(species) species=getID(PBSpecies,species) return 0 if species<=0 ret=0 array=@formseen[species] for i in 0...[array[0].length,array[1].length].max ret+=1 if array[0][i] || array[1][i] end return ret end def seen?(species) species=getID(PBSpecies,species) return species>0 ? @seen[species] : false end alias hasSeen? seen? def owned?(species) species=getID(PBSpecies,species) return species>0 ? @owned[species] : false end alias hasOwned? owned? def setSeen(species) species=getID(PBSpecies,species) @seen[species]=true if species>0 end def setOwned(species) species=getID(PBSpecies,species) @owned[species]=true if species>0 end def clearPokedex @seen = [] @owned = [] @formseen = [] @formlastseen = [] for i in 1..PBSpecies.maxValue @seen[i] = false @owned[i] = false @formlastseen[i] = [] @formseen[i] = [[],[]] end end def initialize(name,trainertype) @name = name @language = pbGetLanguage @trainertype = trainertype @id = rand(256) @id |= rand(256)<<8 @id |= rand(256)<<16 @id |= rand(256)<<24 @metaID = 0 @outfit = 0 @pokegear = false @pokedex = false clearPokedex @shadowcaught = [] for i in 1..PBSpecies.maxValue @shadowcaught[i] = false end @badges = [] for i in 0...8 @badges[i] = false end @money = INITIAL_MONEY @party = [] end end