spriter fight in gallery

This commit is contained in:
infinitefusion
2023-06-17 12:58:57 -04:00
parent 45fe666a35
commit a82a58df33
17 changed files with 173 additions and 41 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -10098,11 +10098,10 @@
166.334,Lora-mun#5661
166.338,Pokeapache#7582
166.342,Retrogamer#9934
166.346,
166.352,Xenophacilus#7867
166.354,Moonabloom#2081
166.356,gupaulino#2624
166.36,NPC-ARTS#8564
166.36,NPC-ARTS#8564S
166.369,Moon_Tah#2688
166.37,Ashbright#6398
166.375,Lord Ca_Club#9654
@@ -13353,7 +13352,6 @@
188.131,Zergla#9945
188.133,CarbonGames75#9231
188.14,Koroblin#4006
188.142,
188.142a,BHP Obrut#0341
188.147,Milchik#6233
188.148,Milchik#6233
@@ -14895,7 +14893,6 @@
197.334,mammuth use ursaluna#3114
197.336,thornsoflight
197.336a,TysonTurnpike#9909
197.336b,
197.337,MetalXLemmy#7970
197.339,AkumaDelta#2364
197.34,Dynte#0539
@@ -19524,7 +19521,6 @@
229.244a,Aiytee#2046
229.249,JezusOfJordanTTV#1796
229.25,Tooby_Two#2536
229.253a,
229.256,mammuth use ursaluna#3114
229.26,Lunar#0258
229.262a,Quote.lass#3684
@@ -26122,7 +26118,6 @@
275.282,mud#4550
275.284,theeastgamer0#4466
275.287,mammuth use ursaluna#3114
275.287a,
275.287b,Head Empty#7054
275.287c,mud#4550
275.287f,YourSupraSugarDaddy#7825
@@ -27020,7 +27015,6 @@
282.218,Shayzisᴼᶻᵃᵏᶦ ¯\_(ツ)_/¯#0270
282.22,Jaters#2779
282.220,Knuckles3&Knuckles#7559
282.222,
282.223,kiwikelly
282.224,MJxPimouss#7015
282.23,Jaters#2779
@@ -32961,7 +32955,6 @@
327.9,IridescentMirage#2413
327.92,DanonZer#6110
327.94,Skyboy#9244
327.99,
328.100,Maelmc#9965
328.101,Maelmc#9965
328.102,Spagalapof#5624
@@ -35779,8 +35772,6 @@
346.23,Sonic11110#6073
346.234,camiska#5369
346.234a,camiska#5369
346.234b,
346.234c,
346.235,Hypest Avid#2240
346.239,AussieJo#6727
346.25,Count Scabula#9527
@@ -45506,7 +45497,6 @@
406.100,TeeOhEss#4617
406.101,War#0084
406.101a,War#0084
406.102a,
406.103,Elitay#5331
406.104,Charred Lizard#8595
406.105,DaTorre#4703
@@ -45856,7 +45846,6 @@
407.278,jojo97#3521
407.279,Fish Games#4056
407.28,xigzagoon#9354
407.280,
407.281,Fish Games#4056
407.292,Sensei Farm#6760
407.294,ClawsHDi#9101
@@ -47121,7 +47110,6 @@
418.160,Holgast#1562
418.17,Retrogamer#9934
418.177,Riviera#0906
418.17a,
418.194,ZeroCipher#2416
418.198,Quote.lass#3684
418.220,Mr. Person (Prinplup enjoyer)#2491
@@ -54696,7 +54684,6 @@
94.335a,PinkPoffin#6403
94.337,Baltes#3911
94.338a,Blackboots#7369
mammuth use ursaluna#3114
94.339,Sunset Sailor Fox#8957
94.34b,Universez#0767
94.34,mammuth use ursaluna#3114

View File

@@ -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,6 +729,7 @@ def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = ni
param = controls[i][1]
case control
when "f"
if param.to_i > 0
isFusion = param.to_i > NB_POKEMON
head = getBasePokemonID(param.to_i, false)
body = getBasePokemonID(param.to_i, true)
@@ -739,6 +739,7 @@ def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = ni
pbPositionNearMsgWindow(facewindow, msgwindow, :left)
facewindow.viewport = msgwindow.viewport
facewindow.z = msgwindow.z
end
when "ff"
facewindow.dispose if facewindow
facewindow = FaceWindowVX.new(param)
@@ -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

View File

@@ -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

View File

@@ -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
#===============================================================================

View File

@@ -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

View File

@@ -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, [

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View 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

View File

@@ -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

Binary file not shown.