mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
spriter fight in gallery
This commit is contained in:
@@ -424,10 +424,9 @@ def pbDisplayBattleFactoryPointsWindow(msgwindow)
|
||||
pbDisplayVariableWindow(msgwindow, "Tokens", VAR_BATTLE_FACTORY_TOKENS)
|
||||
end
|
||||
|
||||
|
||||
def pbDisplayVariableWindow(msgwindow,name,variable_id)
|
||||
def pbDisplayVariableWindow(msgwindow, name, variable_id)
|
||||
pointsString = $game_variables[variable_id].to_s
|
||||
pointswindow = Window_AdvancedTextPokemon.new(_INTL("{1}:\n<ar>{2}</ar>",name, pointsString))
|
||||
pointswindow = Window_AdvancedTextPokemon.new(_INTL("{1}:\n<ar>{2}</ar>", name, pointsString))
|
||||
pointswindow.setSkin("Graphics/Windowskins/goldskin")
|
||||
pointswindow.resizeToFit(pointswindow.text, Graphics.width)
|
||||
pointswindow.width = 160 if pointswindow.width <= 160
|
||||
@@ -441,11 +440,11 @@ def pbDisplayVariableWindow(msgwindow,name,variable_id)
|
||||
return pointswindow
|
||||
end
|
||||
|
||||
def pbDisplayTwoVariableWindow(msgwindow,name1,variable1_id,name2, variable2_id)
|
||||
def pbDisplayTwoVariableWindow(msgwindow, name1, variable1_id, name2, variable2_id)
|
||||
pointsString1 = $game_variables[variable1_id].to_s
|
||||
pointsString2 = $game_variables[variable2_id].to_s
|
||||
|
||||
pointswindow = Window_AdvancedTextPokemon.new(_INTL("{1}:<ar>{2}</ar>\n{3}:<ar>{4}</ar>",name1, pointsString1,name2,pointsString2))
|
||||
pointswindow = Window_AdvancedTextPokemon.new(_INTL("{1}:<ar>{2}</ar>\n{3}:<ar>{4}</ar>", name1, pointsString1, name2, pointsString2))
|
||||
pointswindow.setSkin("Graphics/Windowskins/goldskin")
|
||||
pointswindow.resizeToFit(pointswindow.text, Graphics.width)
|
||||
pointswindow.width = 160 if pointswindow.width <= 160
|
||||
@@ -551,10 +550,10 @@ end
|
||||
# Main message-displaying function
|
||||
#===============================================================================
|
||||
def pbMessageDisplayNoSound(msgwindow, message, letterbyletter = true, commandProc = nil)
|
||||
pbMessageDisplay(msgwindow,message,letterbyletter,commandProc,false)
|
||||
pbMessageDisplay(msgwindow, message, letterbyletter, commandProc, false)
|
||||
end
|
||||
|
||||
def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = nil,withSound=true)
|
||||
def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = nil, withSound = true)
|
||||
return if !msgwindow
|
||||
oldletterbyletter = msgwindow.letterbyletter
|
||||
msgwindow.letterbyletter = (letterbyletter) ? true : false
|
||||
@@ -730,15 +729,17 @@ def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = ni
|
||||
param = controls[i][1]
|
||||
case control
|
||||
when "f"
|
||||
isFusion = param.to_i > NB_POKEMON
|
||||
head = getBasePokemonID(param.to_i, false)
|
||||
body = getBasePokemonID(param.to_i, true)
|
||||
facewindow.dispose if facewindow
|
||||
path = obtainPokemonSpritePath(body, head, $game_variables[VAR_CUSTOM_SPRITES_ENABLED] == 0)
|
||||
facewindow = isFusion ? PictureWindow.new(path) : PictureWindow.new("Graphics/Battlers/#{head}/#{head}.png")
|
||||
pbPositionNearMsgWindow(facewindow, msgwindow, :left)
|
||||
facewindow.viewport = msgwindow.viewport
|
||||
facewindow.z = msgwindow.z
|
||||
if param.to_i > 0
|
||||
isFusion = param.to_i > NB_POKEMON
|
||||
head = getBasePokemonID(param.to_i, false)
|
||||
body = getBasePokemonID(param.to_i, true)
|
||||
facewindow.dispose if facewindow
|
||||
path = obtainPokemonSpritePath(body, head, $game_variables[VAR_CUSTOM_SPRITES_ENABLED] == 0)
|
||||
facewindow = isFusion ? PictureWindow.new(path) : PictureWindow.new("Graphics/Battlers/#{head}/#{head}.png")
|
||||
pbPositionNearMsgWindow(facewindow, msgwindow, :left)
|
||||
facewindow.viewport = msgwindow.viewport
|
||||
facewindow.z = msgwindow.z
|
||||
end
|
||||
when "ff"
|
||||
facewindow.dispose if facewindow
|
||||
facewindow = FaceWindowVX.new(param)
|
||||
@@ -876,9 +877,9 @@ def pbMessageNoSound(message, commands = nil, cmdIfCancel = 0, skin = nil, defau
|
||||
msgwindow = pbCreateMessageWindow(nil, skin)
|
||||
if commands
|
||||
ret = pbMessageDisplayNoSound(msgwindow, message, true,
|
||||
proc { |msgwindow|
|
||||
next Kernel.pbShowCommands(msgwindow, commands, cmdIfCancel, defaultCmd, &block)
|
||||
}, &block)
|
||||
proc { |msgwindow|
|
||||
next Kernel.pbShowCommands(msgwindow, commands, cmdIfCancel, defaultCmd, &block)
|
||||
}, &block)
|
||||
else
|
||||
pbMessageDisplay(msgwindow, message, &block)
|
||||
end
|
||||
@@ -887,7 +888,6 @@ def pbMessageNoSound(message, commands = nil, cmdIfCancel = 0, skin = nil, defau
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
def pbConfirmMessage(message, &block)
|
||||
return (pbMessage(message, [_INTL("Yes"), _INTL("No")], 2, &block) == 0)
|
||||
end
|
||||
|
||||
@@ -74,7 +74,7 @@ class PokeBattle_Scene
|
||||
# Opposing trainer(s) sprites
|
||||
if @battle.trainerBattle?
|
||||
@battle.opponent.each_with_index do |p,i|
|
||||
pbCreateTrainerFrontSprite(i,p.trainer_type,@battle.opponent.length)
|
||||
pbCreateTrainerFrontSprite(i,p.trainer_type,@battle.opponent.length,p.sprite_override)
|
||||
end
|
||||
end
|
||||
# Data boxes and Pokémon sprites
|
||||
@@ -181,8 +181,10 @@ class PokeBattle_Scene
|
||||
trainer.oy = trainer.bitmap.height
|
||||
end
|
||||
|
||||
def pbCreateTrainerFrontSprite(idxTrainer,trainerType,numTrainers=1)
|
||||
def pbCreateTrainerFrontSprite(idxTrainer,trainerType,numTrainers=1,sprite_override=nil)
|
||||
trainerFile = GameData::TrainerType.front_sprite_filename(trainerType)
|
||||
trainerFile = sprite_override if sprite_override
|
||||
|
||||
spriteX, spriteY = PokeBattle_SceneConstants.pbTrainerPosition(1,idxTrainer,numTrainers)
|
||||
trainer = pbAddSprite("trainer_#{idxTrainer+1}",spriteX,spriteY,trainerFile,@viewport)
|
||||
return if !trainer.bitmap
|
||||
|
||||
@@ -515,6 +515,53 @@ def pbTrainerBattleCore(*args)
|
||||
return decision
|
||||
end
|
||||
|
||||
def convert_pokemon_to_pokemon_hash(pokemon)
|
||||
pokemon_hash = Hash.new
|
||||
pokemon_hash[:species] = pokemon.species
|
||||
pokemon_hash[:level] = pokemon.level
|
||||
return pokemon_hash
|
||||
end
|
||||
|
||||
|
||||
|
||||
#party: array of pokemon team
|
||||
# [[:SPECIES,level], ... ]
|
||||
#
|
||||
def customTrainerBattle(trainerName, trainerType, party_array, default_level=50, endSpeech="", sprite_override=nil)
|
||||
|
||||
|
||||
# trainerID= "customTrainer"
|
||||
#
|
||||
# trainer_info_hash = {}
|
||||
# trainer_info_hash[:id] = trainerID
|
||||
# trainer_info_hash[:id_number] = 0
|
||||
# trainer_info_hash[:name] = trainerName
|
||||
# trainer_info_hash[:version] = 0
|
||||
# trainer_info_hash[:items] = []
|
||||
# trainer_info_hash[:lose_text] = endSpeech
|
||||
# trainer_info_hash[:pokemon] = party
|
||||
|
||||
#trainer = GameData::Trainer.new(trainer_info_hash)
|
||||
trainer = NPCTrainer.new(trainerName,trainerType,sprite_override)
|
||||
trainer.lose_text=endSpeech
|
||||
party = []
|
||||
party_array.each { |pokemon|
|
||||
if pokemon.is_a?(Pokemon)
|
||||
party << pokemon
|
||||
elsif pokemon.is_a?(Symbol)
|
||||
party << Pokemon.new(pokemon,default_level,trainer)
|
||||
end
|
||||
}
|
||||
trainer.party=party
|
||||
Events.onTrainerPartyLoad.trigger(nil,trainer)
|
||||
|
||||
|
||||
|
||||
decision = pbTrainerBattleCore(trainer)
|
||||
# Return true if the player won the battle, and false if any other result
|
||||
return (decision==1)
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# Standard methods that start a trainer battle of various sizes
|
||||
#===============================================================================
|
||||
|
||||
@@ -8,6 +8,7 @@ class Trainer
|
||||
attr_accessor :language
|
||||
attr_accessor :party
|
||||
attr_accessor :quests
|
||||
attr_accessor :sprite_override
|
||||
|
||||
def inspect
|
||||
str = super.chop
|
||||
@@ -204,12 +205,13 @@ class Trainer
|
||||
|
||||
#=============================================================================
|
||||
|
||||
def initialize(name, trainer_type)
|
||||
def initialize(name, trainer_type, sprite_override=nil)
|
||||
@trainer_type = GameData::TrainerType.get(trainer_type).id
|
||||
@name = name
|
||||
@id = rand(2 ** 16) | rand(2 ** 16) << 16
|
||||
@language = pbGetLanguage
|
||||
@party = []
|
||||
@sprite_override = sprite_override
|
||||
end
|
||||
end
|
||||
|
||||
@@ -220,7 +222,7 @@ class NPCTrainer < Trainer
|
||||
attr_accessor :items
|
||||
attr_accessor :lose_text
|
||||
|
||||
def initialize(name, trainer_type)
|
||||
def initialize(name, trainer_type, sprite_override=nil)
|
||||
super
|
||||
@items = []
|
||||
@lose_text = nil
|
||||
|
||||
@@ -1155,7 +1155,7 @@ class PokemonPartyScreen
|
||||
def pbPokemonRename(pkmn, pkmnid)
|
||||
cmd = 0
|
||||
loop do
|
||||
speciesname = PBSpecies.getName(pkmn.species)
|
||||
speciesname = pkmn.speciesName
|
||||
msg = [_INTL("{1} has the nickname {2}.", speciesname, pkmn.name),
|
||||
_INTL("{1} has no nickname.", speciesname)][pkmn.name == speciesname ? 1 : 0]
|
||||
cmd = @scene.pbShowCommands(msg, [
|
||||
|
||||
@@ -145,6 +145,7 @@ end
|
||||
#param2 = true pour body, false pour head
|
||||
#return int du pokemon de base
|
||||
def getBasePokemonID(pokemon, body = true)
|
||||
return nil if pokemon <= 0
|
||||
if pokemon.is_a?(Symbol)
|
||||
dex_number = GameData::Species.get(pokemon).id_number
|
||||
pokemon = dex_number
|
||||
|
||||
@@ -60,7 +60,7 @@ def addNewTripleFusion(pokemon1,pokemon2,pokemon3,level = 1)
|
||||
end
|
||||
|
||||
pokemon = TripleFusion.new(pokemon1,pokemon2,pokemon3,level)
|
||||
|
||||
pokemon.calc_stats
|
||||
pbMessage(_INTL("{1} obtained {2}!\\me[Pkmn get]\\wtnp[80]\1", $Trainer.name, pokemon.name))
|
||||
pbNicknameAndStore(pokemon)
|
||||
#$Trainer.pokedex.register(pokemon)
|
||||
|
||||
@@ -125,11 +125,42 @@ def list_all_spriters()
|
||||
return names_list
|
||||
end
|
||||
|
||||
def generateCurrentGalleryBattle(level = nil, number_of_pokemon = 3)
|
||||
spriter_name = pbGet(259)
|
||||
#set highest level in party if nil
|
||||
if !level
|
||||
level = $Trainer.highest_level_pokemon_in_party
|
||||
end
|
||||
possible_battlers = []
|
||||
for i in 0..5
|
||||
sprite = pbGet(VAR_GALLERY_FEATURED_SPRITES)[i]
|
||||
species = getPokemonSpeciesFromSprite(sprite)
|
||||
possible_battlers << species if species
|
||||
end
|
||||
|
||||
selected_battlers_idx = possible_battlers.sample(number_of_pokemon)
|
||||
party = []
|
||||
selected_battlers_idx.each { |species|
|
||||
party << Pokemon.new(species, level)
|
||||
}
|
||||
customTrainerBattle(spriter_name,
|
||||
:PAINTER,
|
||||
party,
|
||||
level,
|
||||
pick_spriter_losing_dialog(spriter_name),
|
||||
pick_trainer_sprite(spriter_name)
|
||||
)
|
||||
|
||||
end
|
||||
|
||||
def generateArtGallery(nbSpritesDisplayed = 6, saveArtistNameInVariable = 1, saveSpritesInVariable = 2, saveAllArtistSpritesInVariable = 3, artistName = nil)
|
||||
artistName = nil if artistName == 0
|
||||
creditsMap = map_sprites_by_artist
|
||||
featuredArtist = artistName ? artistName : getRandomSpriteArtist(creditsMap, nbSpritesDisplayed)
|
||||
if featuredArtist
|
||||
if !creditsMap[featuredArtist] #try again if issue
|
||||
return generateArtGallery(nbSpritesDisplayed,saveSpritesInVariable,saveSpritesInVariable,saveSpritesInVariable,artistName)
|
||||
end
|
||||
featuredSprites = creditsMap[featuredArtist].shuffle.take(nbSpritesDisplayed)
|
||||
pbSet(saveArtistNameInVariable, File.basename(featuredArtist, '#*'))
|
||||
pbSet(saveSpritesInVariable, featuredSprites)
|
||||
@@ -143,7 +174,7 @@ def format_artist_name(full_name)
|
||||
return File.basename(full_name, '#*')
|
||||
end
|
||||
|
||||
def getRandomSpriteArtist(creditsMap = nil, minimumNumberOfSprites = 1, giveUpAfterX = 50)
|
||||
def getRandomSpriteArtist(creditsMap = nil, minimumNumberOfSprites = 10, giveUpAfterX = 50)
|
||||
creditsMap = map_sprites_by_artist if !creditsMap
|
||||
i = 0
|
||||
while i < giveUpAfterX
|
||||
|
||||
36
Data/Scripts/050_AddOns/TrainerGeneratorUtils.rb
Normal file
36
Data/Scripts/050_AddOns/TrainerGeneratorUtils.rb
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
def pick_trainer_sprite(spriter_name)
|
||||
possible_types = "abcd"
|
||||
trainer_type_index = select_number_from_seed(spriter_name,0,3)
|
||||
path = _INTL("Graphics/Trainers/trainer116{1}",possible_types[trainer_type_index].to_s)
|
||||
return path
|
||||
end
|
||||
|
||||
def select_number_from_seed(seed, min_value, max_value)
|
||||
hash = 137
|
||||
seed.each_byte do |byte|
|
||||
hash = ((hash << 5) + hash) + byte
|
||||
end
|
||||
srand(hash)
|
||||
selected_number = rand(min_value..max_value)
|
||||
selected_number
|
||||
end
|
||||
|
||||
def pick_spriter_losing_dialog(spriter_name)
|
||||
possible_dialogs = [
|
||||
"Oh... I lost...",
|
||||
"I did my best!",
|
||||
"You're too strong!",
|
||||
"You win!",
|
||||
"What a fight!",
|
||||
"That was fun!",
|
||||
"Ohh, that's too bad",
|
||||
"I should've sprited some stronger Pokémon!",
|
||||
"So much for that!",
|
||||
"Should've seen that coming!",
|
||||
"I can't believe it!",
|
||||
"What a surprise!"
|
||||
]
|
||||
index = select_number_from_seed(spriter_name,0,possible_dialogs.size-1)
|
||||
return possible_dialogs[index]
|
||||
end
|
||||
@@ -17,6 +17,12 @@ class TripleFusion < Pokemon
|
||||
super(:ZAPMOLTICUNO,level,owner,withMoves,recheck_form)
|
||||
end
|
||||
|
||||
|
||||
|
||||
def types
|
||||
return [@species1_data.type1, @species2_data.type1,@species3_data.type1]
|
||||
end
|
||||
|
||||
def baseStats
|
||||
ret = {}
|
||||
GameData::Stat.each_main do |s|
|
||||
@@ -33,6 +39,9 @@ class TripleFusion < Pokemon
|
||||
return (nicknamed?) ? @name : @species_name
|
||||
end
|
||||
|
||||
def speciesName
|
||||
return @species_name
|
||||
end
|
||||
|
||||
def generate_triple_fusion_name()
|
||||
part1 = split_string_with_syllables(@species1_data.name)[0]
|
||||
@@ -58,6 +67,23 @@ class TripleFusion < Pokemon
|
||||
|
||||
end
|
||||
|
||||
def ability_id
|
||||
if !@ability
|
||||
abil_index = ability_index
|
||||
if !@ability # Natural ability or no hidden ability defined
|
||||
chosen_poke_for_ability= rand(1..3)
|
||||
if chosen_poke_for_ability == 1
|
||||
@ability = @species1_data.abilities[abil_index] || @species1_data.abilities[0]
|
||||
elsif chosen_poke_for_ability == 2
|
||||
@ability = @species2_data.abilities[abil_index] || @species2_data.abilities[0]
|
||||
else
|
||||
@ability = @species3_data.abilities[abil_index] || @species3_data.abilities[0]
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
return @ability
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user