Rearranged some script files

This commit is contained in:
Maruno17
2020-09-05 22:34:32 +01:00
parent 5d3189174c
commit 5073f86190
188 changed files with 250 additions and 239 deletions

View File

@@ -0,0 +1,271 @@
class PokeBattle_Trainer
attr_accessor(:name)
attr_accessor(:id)
attr_accessor(:metaID)
attr_accessor(:trainertype)
attr_accessor(:outfit)
attr_accessor(:badges)
attr_accessor(: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_accessor(: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
@outfit=0 if !@outfit
return @outfit
end
def language
@language=pbGetLanguage() if !@language
return @language
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

View File

@@ -0,0 +1,300 @@
TPSPECIES = 0
TPLEVEL = 1
TPITEM = 2
TPMOVES = 3
TPABILITY = 4
TPGENDER = 5
TPFORM = 6
TPSHINY = 7
TPNATURE = 8
TPIV = 9
TPHAPPINESS = 10
TPNAME = 11
TPSHADOW = 12
TPBALL = 13
TPEV = 14
TPLOSETEXT = 15
def pbLoadTrainer(trainerid,trainername,partyid=0)
if trainerid.is_a?(String) || trainerid.is_a?(Symbol)
if !hasConst?(PBTrainers,trainerid)
raise _INTL("Trainer type does not exist ({1}, {2}, ID {3})",trainerid,trainername,partyid)
end
trainerid = getID(PBTrainers,trainerid)
end
success = false
items = []
party = []
opponent = nil
trainers = pbLoadTrainersData
for trainer in trainers
thistrainerid = trainer[0]
name = trainer[1]
thispartyid = trainer[4]
next if thistrainerid!=trainerid || name!=trainername || thispartyid!=partyid
# Found the trainer we want, load it up
items = trainer[2].clone
name = pbGetMessageFromHash(MessageTypes::TrainerNames,name)
for i in RIVAL_NAMES
next if !isConst?(trainerid,PBTrainers,i[0]) || !$game_variables[i[1]].is_a?(String)
name = $game_variables[i[1]]
break
end
loseText = pbGetMessageFromHash(MessageTypes::TrainerLoseText,trainer[5])
opponent = PokeBattle_Trainer.new(name,thistrainerid)
opponent.setForeignID($Trainer)
# Load up each Pokémon in the trainer's party
for poke in trainer[3]
species = pbGetSpeciesFromFSpecies(poke[TPSPECIES])[0]
level = poke[TPLEVEL]
pokemon = pbNewPkmn(species,level,opponent,false)
if poke[TPFORM]
pokemon.forcedForm = poke[TPFORM] if MultipleForms.hasFunction?(pokemon.species,"getForm")
pokemon.formSimple = poke[TPFORM]
end
pokemon.setItem(poke[TPITEM]) if poke[TPITEM]
if poke[TPMOVES] && poke[TPMOVES].length>0
for move in poke[TPMOVES]
pokemon.pbLearnMove(move)
end
else
pokemon.resetMoves
end
pokemon.setAbility(poke[TPABILITY] || 0)
g = (poke[TPGENDER]) ? poke[TPGENDER] : (opponent.female?) ? 1 : 0
pokemon.setGender(g)
(poke[TPSHINY]) ? pokemon.makeShiny : pokemon.makeNotShiny
n = (poke[TPNATURE]) ? poke[TPNATURE] : (pokemon.species+opponent.trainertype)%(PBNatures.maxValue+1)
pokemon.setNature(n)
for i in 0...6
if poke[TPIV] && poke[TPIV].length>0
pokemon.iv[i] = (i<poke[TPIV].length) ? poke[TPIV][i] : poke[TPIV][0]
else
pokemon.iv[i] = [level/2,PokeBattle_Pokemon::IV_STAT_LIMIT].min
end
if poke[TPEV] && poke[TPEV].length>0
pokemon.ev[i] = (i<poke[TPEV].length) ? poke[TPEV][i] : poke[TPEV][0]
else
pokemon.ev[i] = [level*3/2,PokeBattle_Pokemon::EV_LIMIT/6].min
end
end
pokemon.happiness = poke[TPHAPPINESS] if poke[TPHAPPINESS]
pokemon.name = poke[TPNAME] if poke[TPNAME] && poke[TPNAME]!=""
if poke[TPSHADOW] # if this is a Shadow Pokémon
pokemon.makeShadow rescue nil
pokemon.pbUpdateShadowMoves(true) rescue nil
pokemon.makeNotShiny
end
pokemon.ballused = poke[TPBALL] if poke[TPBALL]
pokemon.calcStats
party.push(pokemon)
end
success = true
break
end
return success ? [opponent,items,party,loseText] : nil
end
def pbConvertTrainerData
data = pbLoadTrainerTypesData
trainertypes = []
for i in 0...data.length
record = data[i]
trainertypes[record[0]] = record[2] if record
end
MessageTypes.setMessages(MessageTypes::TrainerTypes,trainertypes)
pbSaveTrainerTypes
pbSaveTrainerBattles
end
def pbNewTrainer(trainerid,trainername,trainerparty,savechanges=true)
pokemon = []
for i in 0...6
if i==0
pbMessage(_INTL("Please enter the first Pokémon.",i))
else
break if !pbConfirmMessage(_INTL("Add another Pokémon?"))
end
loop do
species = pbChooseSpeciesList
if species<=0
break if i>0
pbMessage(_INTL("This trainer must have at least 1 Pokémon!"))
else
params = ChooseNumberParams.new
params.setRange(1,PBExperience.maxLevel)
params.setDefaultValue(10)
level = pbMessageChooseNumber(_INTL("Set the level for {1} (max. #{PBExperience.maxLevel}).",
PBSpecies.getName(species)),params)
tempPoke = pbNewPkmn(species,level)
pokemon.push([species,level])
break
end
end
end
trainer = [trainerid,trainername,[],pokemon,trainerparty]
if savechanges
data = pbLoadTrainersData
data.push(trainer)
data = save_data(data,"Data/trainers.dat")
$PokemonTemp.trainersData = nil
pbConvertTrainerData
pbMessage(_INTL("The Trainer's data was added to the list of battles and in PBS/trainers.txt."))
end
return trainer
end
def pbTrainerTypeCheck(symbol)
return true if !$DEBUG
ret = false
if hasConst?(PBTrainers,symbol)
trtype = PBTrainers.const_get(symbol)
data = pbGetTrainerTypeData(trtype)
ret = true if data
end
if !ret
if pbConfirmMessage(_INTL("Add new trainer type {1}?",symbol))
pbTrainerTypeEditorNew(symbol.to_s)
end
pbMapInterpreter.command_end if pbMapInterpreter
end
return ret
end
def pbGetFreeTrainerParty(trainerid,trainername)
if trainerid.is_a?(String) || trainerid.is_a?(Symbol)
if !hasConst?(PBTrainers,trainerid)
raise _INTL("Trainer type does not exist ({1}, {2}, ID {3})",trainerid,trainername,partyid)
end
trainerid = getID(PBTrainers,trainerid)
end
ret = -1
trainers = pbLoadTrainersData
usedparties = []
for trainer in trainers
thistrainerid = trainer[0]
name = trainer[1]
next if thistrainerid!=trainerid || name!=trainername
usedparties.push(trainer[4])
end
ret = -1
for i in 0...256
next if usedparties.include?(i)
ret = i
break
end
return ret
end
def pbTrainerCheck(trainerid,trainername,maxbattles,startBattleId=0)
return true if !$DEBUG
if trainerid.is_a?(String) || trainerid.is_a?(Symbol)
pbTrainerTypeCheck(trainerid)
return false if !hasConst?(PBTrainers,trainerid)
trainerid = PBTrainers.const_get(trainerid)
end
for i in 0...maxbattles
trainer = pbLoadTrainer(trainerid,trainername,i+startBattleId)
next if trainer
traineridstring = "#{trainerid}"
traineridstring = getConstantName(PBTrainers,trainerid) rescue "-"
if pbConfirmMessage(_INTL("Add new battle {1} (of {2}) for ({3}, {4})?",
i+1,maxbattles,traineridstring,trainername))
pbNewTrainer(trainerid,trainername,i)
end
end
return true
end
def pbMissingTrainer(trainerid, trainername, trainerparty)
if trainerid.is_a?(String) || trainerid.is_a?(Symbol)
if !hasConst?(PBTrainers,trainerid)
raise _INTL("Trainer type does not exist ({1}, {2}, ID {3})",trainerid,trainername,partyid)
end
trainerid = getID(PBTrainers,trainerid)
end
traineridstring = "#{trainerid}"
traineridstring = getConstantName(PBTrainers,trainerid) rescue "-"
if !$DEBUG
raise _INTL("Can't find trainer ({1}, {2}, ID {3})",traineridstring,trainername,trainerparty)
end
message = ""
if trainerparty!=0
message = (_INTL("Add new trainer ({1}, {2}, ID {3})?",traineridstring,trainername,trainerparty))
else
message = (_INTL("Add new trainer ({1}, {2})?",traineridstring,trainername))
end
cmd = pbMessage(message,[_INTL("Yes"),_INTL("No")],2)
if cmd==0
pbNewTrainer(trainerid,trainername,trainerparty)
end
return cmd
end
#===============================================================================
# Walking charset, for use in text entry screens and load game screen
#===============================================================================
class TrainerWalkingCharSprite < SpriteWrapper
def initialize(charset,viewport=nil)
super(viewport)
@animbitmap = nil
self.charset = charset
@animframe = 0 # Current pattern
@frame = 0 # Frame counter
self.animspeed = 5 # Animation speed (frames per pattern)
end
def charset=(value)
@animbitmap.dispose if @animbitmap
@animbitmap = nil
bitmapFileName = sprintf("Graphics/Characters/%s",value)
@charset = pbResolveBitmap(bitmapFileName)
if @charset
@animbitmap = AnimatedBitmap.new(@charset)
self.bitmap = @animbitmap.bitmap
self.src_rect.set(0,0,self.bitmap.width/4,self.bitmap.height/4)
else
self.bitmap = nil
end
end
def altcharset=(value) # Used for box icon in the naming screen
@animbitmap.dispose if @animbitmap
@animbitmap = nil
@charset = pbResolveBitmap(value)
if @charset
@animbitmap = AnimatedBitmap.new(@charset)
self.bitmap = @animbitmap.bitmap
self.src_rect.set(0,0,self.bitmap.width/4,self.bitmap.height)
else
self.bitmap = nil
end
end
def animspeed=(value)
@frameskip = value*Graphics.frame_rate/40
end
def dispose
@animbitmap.dispose if @animbitmap
super
end
def update
@updating = true
super
if @animbitmap
@animbitmap.update
self.bitmap = @animbitmap.bitmap
end
@frame += 1
if @frame>=@frameskip
@animframe = (@animframe+1)%4
self.src_rect.x = @animframe*@animbitmap.bitmap.width/4
@frame -= @frameskip
end
@updating = false
end
end