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

View File

@@ -424,10 +424,9 @@ def pbDisplayBattleFactoryPointsWindow(msgwindow)
pbDisplayVariableWindow(msgwindow, "Tokens", VAR_BATTLE_FACTORY_TOKENS) pbDisplayVariableWindow(msgwindow, "Tokens", VAR_BATTLE_FACTORY_TOKENS)
end end
def pbDisplayVariableWindow(msgwindow, name, variable_id)
def pbDisplayVariableWindow(msgwindow,name,variable_id)
pointsString = $game_variables[variable_id].to_s 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.setSkin("Graphics/Windowskins/goldskin")
pointswindow.resizeToFit(pointswindow.text, Graphics.width) pointswindow.resizeToFit(pointswindow.text, Graphics.width)
pointswindow.width = 160 if pointswindow.width <= 160 pointswindow.width = 160 if pointswindow.width <= 160
@@ -441,11 +440,11 @@ def pbDisplayVariableWindow(msgwindow,name,variable_id)
return pointswindow return pointswindow
end 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 pointsString1 = $game_variables[variable1_id].to_s
pointsString2 = $game_variables[variable2_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.setSkin("Graphics/Windowskins/goldskin")
pointswindow.resizeToFit(pointswindow.text, Graphics.width) pointswindow.resizeToFit(pointswindow.text, Graphics.width)
pointswindow.width = 160 if pointswindow.width <= 160 pointswindow.width = 160 if pointswindow.width <= 160
@@ -551,10 +550,10 @@ end
# Main message-displaying function # Main message-displaying function
#=============================================================================== #===============================================================================
def pbMessageDisplayNoSound(msgwindow, message, letterbyletter = true, commandProc = nil) def pbMessageDisplayNoSound(msgwindow, message, letterbyletter = true, commandProc = nil)
pbMessageDisplay(msgwindow,message,letterbyletter,commandProc,false) pbMessageDisplay(msgwindow, message, letterbyletter, commandProc, false)
end end
def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = nil,withSound=true) def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = nil, withSound = true)
return if !msgwindow return if !msgwindow
oldletterbyletter = msgwindow.letterbyletter oldletterbyletter = msgwindow.letterbyletter
msgwindow.letterbyletter = (letterbyletter) ? true : false msgwindow.letterbyletter = (letterbyletter) ? true : false
@@ -730,15 +729,17 @@ def pbMessageDisplay(msgwindow, message, letterbyletter = true, commandProc = ni
param = controls[i][1] param = controls[i][1]
case control case control
when "f" when "f"
isFusion = param.to_i > NB_POKEMON if param.to_i > 0
head = getBasePokemonID(param.to_i, false) isFusion = param.to_i > NB_POKEMON
body = getBasePokemonID(param.to_i, true) head = getBasePokemonID(param.to_i, false)
facewindow.dispose if facewindow body = getBasePokemonID(param.to_i, true)
path = obtainPokemonSpritePath(body, head, $game_variables[VAR_CUSTOM_SPRITES_ENABLED] == 0) facewindow.dispose if facewindow
facewindow = isFusion ? PictureWindow.new(path) : PictureWindow.new("Graphics/Battlers/#{head}/#{head}.png") path = obtainPokemonSpritePath(body, head, $game_variables[VAR_CUSTOM_SPRITES_ENABLED] == 0)
pbPositionNearMsgWindow(facewindow, msgwindow, :left) facewindow = isFusion ? PictureWindow.new(path) : PictureWindow.new("Graphics/Battlers/#{head}/#{head}.png")
facewindow.viewport = msgwindow.viewport pbPositionNearMsgWindow(facewindow, msgwindow, :left)
facewindow.z = msgwindow.z facewindow.viewport = msgwindow.viewport
facewindow.z = msgwindow.z
end
when "ff" when "ff"
facewindow.dispose if facewindow facewindow.dispose if facewindow
facewindow = FaceWindowVX.new(param) facewindow = FaceWindowVX.new(param)
@@ -876,9 +877,9 @@ def pbMessageNoSound(message, commands = nil, cmdIfCancel = 0, skin = nil, defau
msgwindow = pbCreateMessageWindow(nil, skin) msgwindow = pbCreateMessageWindow(nil, skin)
if commands if commands
ret = pbMessageDisplayNoSound(msgwindow, message, true, ret = pbMessageDisplayNoSound(msgwindow, message, true,
proc { |msgwindow| proc { |msgwindow|
next Kernel.pbShowCommands(msgwindow, commands, cmdIfCancel, defaultCmd, &block) next Kernel.pbShowCommands(msgwindow, commands, cmdIfCancel, defaultCmd, &block)
}, &block) }, &block)
else else
pbMessageDisplay(msgwindow, message, &block) pbMessageDisplay(msgwindow, message, &block)
end end
@@ -887,7 +888,6 @@ def pbMessageNoSound(message, commands = nil, cmdIfCancel = 0, skin = nil, defau
return ret return ret
end end
def pbConfirmMessage(message, &block) def pbConfirmMessage(message, &block)
return (pbMessage(message, [_INTL("Yes"), _INTL("No")], 2, &block) == 0) return (pbMessage(message, [_INTL("Yes"), _INTL("No")], 2, &block) == 0)
end end

View File

@@ -74,7 +74,7 @@ class PokeBattle_Scene
# Opposing trainer(s) sprites # Opposing trainer(s) sprites
if @battle.trainerBattle? if @battle.trainerBattle?
@battle.opponent.each_with_index do |p,i| @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
end end
# Data boxes and Pokémon sprites # Data boxes and Pokémon sprites
@@ -181,8 +181,10 @@ class PokeBattle_Scene
trainer.oy = trainer.bitmap.height trainer.oy = trainer.bitmap.height
end end
def pbCreateTrainerFrontSprite(idxTrainer,trainerType,numTrainers=1) def pbCreateTrainerFrontSprite(idxTrainer,trainerType,numTrainers=1,sprite_override=nil)
trainerFile = GameData::TrainerType.front_sprite_filename(trainerType) trainerFile = GameData::TrainerType.front_sprite_filename(trainerType)
trainerFile = sprite_override if sprite_override
spriteX, spriteY = PokeBattle_SceneConstants.pbTrainerPosition(1,idxTrainer,numTrainers) spriteX, spriteY = PokeBattle_SceneConstants.pbTrainerPosition(1,idxTrainer,numTrainers)
trainer = pbAddSprite("trainer_#{idxTrainer+1}",spriteX,spriteY,trainerFile,@viewport) trainer = pbAddSprite("trainer_#{idxTrainer+1}",spriteX,spriteY,trainerFile,@viewport)
return if !trainer.bitmap return if !trainer.bitmap

View File

@@ -515,6 +515,53 @@ def pbTrainerBattleCore(*args)
return decision return decision
end 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 # Standard methods that start a trainer battle of various sizes
#=============================================================================== #===============================================================================

View File

@@ -8,6 +8,7 @@ class Trainer
attr_accessor :language attr_accessor :language
attr_accessor :party attr_accessor :party
attr_accessor :quests attr_accessor :quests
attr_accessor :sprite_override
def inspect def inspect
str = super.chop 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 @trainer_type = GameData::TrainerType.get(trainer_type).id
@name = name @name = name
@id = rand(2 ** 16) | rand(2 ** 16) << 16 @id = rand(2 ** 16) | rand(2 ** 16) << 16
@language = pbGetLanguage @language = pbGetLanguage
@party = [] @party = []
@sprite_override = sprite_override
end end
end end
@@ -220,7 +222,7 @@ class NPCTrainer < Trainer
attr_accessor :items attr_accessor :items
attr_accessor :lose_text attr_accessor :lose_text
def initialize(name, trainer_type) def initialize(name, trainer_type, sprite_override=nil)
super super
@items = [] @items = []
@lose_text = nil @lose_text = nil

View File

@@ -1155,7 +1155,7 @@ class PokemonPartyScreen
def pbPokemonRename(pkmn, pkmnid) def pbPokemonRename(pkmn, pkmnid)
cmd = 0 cmd = 0
loop do loop do
speciesname = PBSpecies.getName(pkmn.species) speciesname = pkmn.speciesName
msg = [_INTL("{1} has the nickname {2}.", speciesname, pkmn.name), msg = [_INTL("{1} has the nickname {2}.", speciesname, pkmn.name),
_INTL("{1} has no nickname.", speciesname)][pkmn.name == speciesname ? 1 : 0] _INTL("{1} has no nickname.", speciesname)][pkmn.name == speciesname ? 1 : 0]
cmd = @scene.pbShowCommands(msg, [ cmd = @scene.pbShowCommands(msg, [

View File

@@ -145,6 +145,7 @@ end
#param2 = true pour body, false pour head #param2 = true pour body, false pour head
#return int du pokemon de base #return int du pokemon de base
def getBasePokemonID(pokemon, body = true) def getBasePokemonID(pokemon, body = true)
return nil if pokemon <= 0
if pokemon.is_a?(Symbol) if pokemon.is_a?(Symbol)
dex_number = GameData::Species.get(pokemon).id_number dex_number = GameData::Species.get(pokemon).id_number
pokemon = dex_number pokemon = dex_number

View File

@@ -60,7 +60,7 @@ def addNewTripleFusion(pokemon1,pokemon2,pokemon3,level = 1)
end end
pokemon = TripleFusion.new(pokemon1,pokemon2,pokemon3,level) 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)) pbMessage(_INTL("{1} obtained {2}!\\me[Pkmn get]\\wtnp[80]\1", $Trainer.name, pokemon.name))
pbNicknameAndStore(pokemon) pbNicknameAndStore(pokemon)
#$Trainer.pokedex.register(pokemon) #$Trainer.pokedex.register(pokemon)

View File

@@ -125,11 +125,42 @@ def list_all_spriters()
return names_list return names_list
end 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) def generateArtGallery(nbSpritesDisplayed = 6, saveArtistNameInVariable = 1, saveSpritesInVariable = 2, saveAllArtistSpritesInVariable = 3, artistName = nil)
artistName = nil if artistName == 0 artistName = nil if artistName == 0
creditsMap = map_sprites_by_artist creditsMap = map_sprites_by_artist
featuredArtist = artistName ? artistName : getRandomSpriteArtist(creditsMap, nbSpritesDisplayed) featuredArtist = artistName ? artistName : getRandomSpriteArtist(creditsMap, nbSpritesDisplayed)
if featuredArtist if featuredArtist
if !creditsMap[featuredArtist] #try again if issue
return generateArtGallery(nbSpritesDisplayed,saveSpritesInVariable,saveSpritesInVariable,saveSpritesInVariable,artistName)
end
featuredSprites = creditsMap[featuredArtist].shuffle.take(nbSpritesDisplayed) featuredSprites = creditsMap[featuredArtist].shuffle.take(nbSpritesDisplayed)
pbSet(saveArtistNameInVariable, File.basename(featuredArtist, '#*')) pbSet(saveArtistNameInVariable, File.basename(featuredArtist, '#*'))
pbSet(saveSpritesInVariable, featuredSprites) pbSet(saveSpritesInVariable, featuredSprites)
@@ -143,7 +174,7 @@ def format_artist_name(full_name)
return File.basename(full_name, '#*') return File.basename(full_name, '#*')
end end
def getRandomSpriteArtist(creditsMap = nil, minimumNumberOfSprites = 1, giveUpAfterX = 50) def getRandomSpriteArtist(creditsMap = nil, minimumNumberOfSprites = 10, giveUpAfterX = 50)
creditsMap = map_sprites_by_artist if !creditsMap creditsMap = map_sprites_by_artist if !creditsMap
i = 0 i = 0
while i < giveUpAfterX 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) super(:ZAPMOLTICUNO,level,owner,withMoves,recheck_form)
end end
def types
return [@species1_data.type1, @species2_data.type1,@species3_data.type1]
end
def baseStats def baseStats
ret = {} ret = {}
GameData::Stat.each_main do |s| GameData::Stat.each_main do |s|
@@ -33,6 +39,9 @@ class TripleFusion < Pokemon
return (nicknamed?) ? @name : @species_name return (nicknamed?) ? @name : @species_name
end end
def speciesName
return @species_name
end
def generate_triple_fusion_name() def generate_triple_fusion_name()
part1 = split_string_with_syllables(@species1_data.name)[0] part1 = split_string_with_syllables(@species1_data.name)[0]
@@ -58,6 +67,23 @@ class TripleFusion < Pokemon
end 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 end

Binary file not shown.