mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 05:34:58 +00:00
Added class GameStats, added Pokédex records for eggs seen and expanded seen_forms to include shinies
This commit is contained in:
@@ -133,3 +133,11 @@ SaveData.register(:game_version) do
|
|||||||
load_value { |value| $save_game_version = value }
|
load_value { |value| $save_game_version = value }
|
||||||
new_game_value { Settings::GAME_VERSION }
|
new_game_value { Settings::GAME_VERSION }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SaveData.register(:stats) do
|
||||||
|
load_in_bootup
|
||||||
|
ensure_class :GameStats
|
||||||
|
save_value { $stats }
|
||||||
|
load_value { |value| $stats = value }
|
||||||
|
new_game_value { GameStats.new }
|
||||||
|
end
|
||||||
|
|||||||
@@ -225,3 +225,31 @@ SaveData.register_conversion(:v20_refactor_day_care_variables) do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SaveData.register_conversion(:v20_add_stats) do
|
||||||
|
essentials_version 20
|
||||||
|
display_title 'Adding stats to save data'
|
||||||
|
to_all do |save_data|
|
||||||
|
unless save_data.has_key?(:stats)
|
||||||
|
save_data[:stats] = GameStats.new
|
||||||
|
save_data[:stats].play_time = save_data[:frame_count].to_f / Graphics.frame_rate
|
||||||
|
save_data[:stats].play_sessions = 1
|
||||||
|
save_data[:stats].time_last_saved = save_data[:stats].play_time
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SaveData.register_conversion(:v20_adding_pokedex_records) do
|
||||||
|
essentials_version 20
|
||||||
|
display_title 'Adding more Pokédex records'
|
||||||
|
to_value :player do |player|
|
||||||
|
player.pokedex.instance_eval do
|
||||||
|
@seen_eggs = {} if @seen_eggs.nil?
|
||||||
|
@seen_forms.each_value do |sp|
|
||||||
|
next if !sp || sp[0][0].is_a?(Array) # Already converted to include shininess
|
||||||
|
sp[0] = [sp[0], []]
|
||||||
|
sp[1] = [sp[1], []]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ module Game
|
|||||||
$game_temp.begun_new_game = true
|
$game_temp.begun_new_game = true
|
||||||
$scene = Scene_Map.new
|
$scene = Scene_Map.new
|
||||||
SaveData.load_new_game_values
|
SaveData.load_new_game_values
|
||||||
|
$stats.play_sessions += 1
|
||||||
$map_factory = PokemonMapFactory.new($data_system.start_map_id)
|
$map_factory = PokemonMapFactory.new($data_system.start_map_id)
|
||||||
$game_player.moveto($data_system.start_x, $data_system.start_y)
|
$game_player.moveto($data_system.start_x, $data_system.start_y)
|
||||||
$game_player.refresh
|
$game_player.refresh
|
||||||
@@ -60,6 +61,7 @@ module Game
|
|||||||
def self.load(save_data)
|
def self.load(save_data)
|
||||||
validate save_data => Hash
|
validate save_data => Hash
|
||||||
SaveData.load_all_values(save_data)
|
SaveData.load_all_values(save_data)
|
||||||
|
$stats.play_sessions += 1
|
||||||
self.load_map
|
self.load_map
|
||||||
pbAutoplayOnSave
|
pbAutoplayOnSave
|
||||||
$game_map.update
|
$game_map.update
|
||||||
@@ -110,6 +112,7 @@ module Game
|
|||||||
$PokemonGlobal.safesave = safe
|
$PokemonGlobal.safesave = safe
|
||||||
$game_system.save_count += 1
|
$game_system.save_count += 1
|
||||||
$game_system.magic_number = $data_system.magic_number
|
$game_system.magic_number = $data_system.magic_number
|
||||||
|
$stats.set_time_last_saved
|
||||||
begin
|
begin
|
||||||
SaveData.save_to_file(save_file)
|
SaveData.save_to_file(save_file)
|
||||||
Graphics.frame_reset
|
Graphics.frame_reset
|
||||||
|
|||||||
@@ -378,6 +378,7 @@ class Interpreter
|
|||||||
# Apply strict version of passable, which treats tiles that are passable
|
# Apply strict version of passable, which treats tiles that are passable
|
||||||
# only from certain directions as fully impassible
|
# only from certain directions as fully impassible
|
||||||
return if !event.can_move_in_direction?($game_player.direction, true)
|
return if !event.can_move_in_direction?($game_player.direction, true)
|
||||||
|
$stats.strength_push_count += 1
|
||||||
case $game_player.direction
|
case $game_player.direction
|
||||||
when 2 then event.move_down
|
when 2 then event.move_down
|
||||||
when 4 then event.move_left
|
when 4 then event.move_left
|
||||||
|
|||||||
@@ -112,6 +112,14 @@ class Game_Player < Game_Character
|
|||||||
if !$game_temp.encounter_triggered
|
if !$game_temp.encounter_triggered
|
||||||
@x += x_offset
|
@x += x_offset
|
||||||
@y += y_offset
|
@y += y_offset
|
||||||
|
if $PokemonGlobal&.diving || $PokemonGlobal&.surfing
|
||||||
|
$stats.distance_surfed += 1
|
||||||
|
elsif $PokemonGlobal&.bicycle
|
||||||
|
$stats.distance_cycled += 1
|
||||||
|
else
|
||||||
|
$stats.distance_walked += 1
|
||||||
|
end
|
||||||
|
$stats.distance_slid_on_ice += 1 if $PokemonGlobal.sliding
|
||||||
increase_steps
|
increase_steps
|
||||||
end
|
end
|
||||||
elsif !check_event_trigger_touch(dir)
|
elsif !check_event_trigger_touch(dir)
|
||||||
@@ -130,6 +138,39 @@ class Game_Player < Game_Character
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def jump(x_plus, y_plus)
|
||||||
|
if x_plus != 0 || y_plus != 0
|
||||||
|
if x_plus.abs > y_plus.abs
|
||||||
|
(x_plus < 0) ? turn_left : turn_right
|
||||||
|
else
|
||||||
|
(y_plus < 0) ? turn_up : turn_down
|
||||||
|
end
|
||||||
|
each_occupied_tile { |i, j| return if !passable?(i + x_plus, j + y_plus, 0) }
|
||||||
|
end
|
||||||
|
@x = @x + x_plus
|
||||||
|
@y = @y + y_plus
|
||||||
|
real_distance = Math::sqrt(x_plus * x_plus + y_plus * y_plus)
|
||||||
|
distance = [1, real_distance].max
|
||||||
|
@jump_peak = distance * Game_Map::TILE_HEIGHT * 3 / 8 # 3/4 of tile for ledge jumping
|
||||||
|
@jump_distance = [x_plus.abs * Game_Map::REAL_RES_X, y_plus.abs * Game_Map::REAL_RES_Y].max
|
||||||
|
@jump_distance_left = 1 # Just needs to be non-zero
|
||||||
|
if real_distance > 0 # Jumping to somewhere else
|
||||||
|
if $PokemonGlobal&.diving || $PokemonGlobal&.surfing
|
||||||
|
$stats.distance_surfed += x_plus.abs + y_pos.abs
|
||||||
|
elsif $PokemonGlobal&.bicycle
|
||||||
|
$stats.distance_cycled += x_plus.abs + y_pos.abs
|
||||||
|
else
|
||||||
|
$stats.distance_walked += x_plus.abs + y_pos.abs
|
||||||
|
end
|
||||||
|
@jump_count = 0
|
||||||
|
else # Jumping on the spot
|
||||||
|
@jump_speed_real = nil # Reset jump speed
|
||||||
|
@jump_count = Game_Map::REAL_RES_X / jump_speed_real # Number of frames to jump one tile
|
||||||
|
end
|
||||||
|
@stop_count = 0
|
||||||
|
triggerLeaveTile
|
||||||
|
end
|
||||||
|
|
||||||
def pbTriggeredTrainerEvents(triggers,checkIfRunning=true)
|
def pbTriggeredTrainerEvents(triggers,checkIfRunning=true)
|
||||||
result = []
|
result = []
|
||||||
# If event is running
|
# If event is running
|
||||||
@@ -551,6 +592,7 @@ end
|
|||||||
def pbMountBike
|
def pbMountBike
|
||||||
return if $PokemonGlobal.bicycle
|
return if $PokemonGlobal.bicycle
|
||||||
$PokemonGlobal.bicycle = true
|
$PokemonGlobal.bicycle = true
|
||||||
|
$stats.cycle_count += 1
|
||||||
pbUpdateVehicle
|
pbUpdateVehicle
|
||||||
bike_bgm = GameData::Metadata.get.bicycle_BGM
|
bike_bgm = GameData::Metadata.get.bicycle_BGM
|
||||||
pbCueBGM(bike_bgm, 0.5) if bike_bgm
|
pbCueBGM(bike_bgm, 0.5) if bike_bgm
|
||||||
|
|||||||
196
Data/Scripts/004_Game classes/013_Game_Stats.rb
Normal file
196
Data/Scripts/004_Game classes/013_Game_Stats.rb
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
#===============================================================================
|
||||||
|
# Stored in $stats
|
||||||
|
#===============================================================================
|
||||||
|
class GameStats
|
||||||
|
# Travel
|
||||||
|
attr_accessor :distance_walked, :distance_cycled, :distance_surfed # surfed includes diving
|
||||||
|
attr_accessor :distance_slid_on_ice # Also counted in distance_walked
|
||||||
|
attr_accessor :cycle_count, :surf_count, :dive_count
|
||||||
|
# Field actions
|
||||||
|
attr_accessor :fly_count, :cut_count, :flash_count
|
||||||
|
attr_accessor :rock_smash_count, :rock_smash_battles
|
||||||
|
attr_accessor :headbutt_count, :headbutt_battles
|
||||||
|
attr_accessor :strength_push_count # Number of shoves, not the times Strength was used
|
||||||
|
attr_accessor :waterfall_count, :waterfalls_descended
|
||||||
|
# Items
|
||||||
|
attr_accessor :repel_count
|
||||||
|
attr_accessor :itemfinder_count
|
||||||
|
attr_accessor :fishing_count, :fishing_battles
|
||||||
|
attr_accessor :poke_radar_count, :poke_radar_longest_chain
|
||||||
|
attr_accessor :berry_plants_picked, :max_yield_berry_plants
|
||||||
|
attr_accessor :berries_planted
|
||||||
|
# NPCs
|
||||||
|
attr_accessor :poke_center_count
|
||||||
|
attr_accessor :revived_fossil_count
|
||||||
|
attr_accessor :lottery_prize_count # Times won any prize at all
|
||||||
|
# Pokémon
|
||||||
|
attr_accessor :eggs_hatched
|
||||||
|
attr_accessor :evolution_count # Doesn't count cancelled evolutions
|
||||||
|
attr_accessor :trade_count
|
||||||
|
attr_accessor :moves_taught_by_item, :moves_taught_by_tutor, :moves_taught_by_reminder
|
||||||
|
attr_accessor :day_care_deposits, :day_care_levels_gained
|
||||||
|
attr_accessor :pokerus_infections
|
||||||
|
attr_accessor :shadow_pokemon_purified
|
||||||
|
# Battles
|
||||||
|
attr_accessor :wild_battles_won, :wild_battles_lost # Lost includes fled from
|
||||||
|
attr_accessor :trainer_battles_won, :trainer_battles_lost
|
||||||
|
attr_accessor :total_exp_gained
|
||||||
|
attr_accessor :battle_money_gained, :battle_money_lost
|
||||||
|
attr_accessor :blacked_out_count
|
||||||
|
attr_accessor :mega_evolution_count
|
||||||
|
attr_accessor :failed_poke_ball_count
|
||||||
|
# Currency
|
||||||
|
attr_accessor :money_spent_at_marts
|
||||||
|
attr_accessor :money_earned_at_marts
|
||||||
|
attr_accessor :mart_items_bought, :premier_balls_earned
|
||||||
|
attr_accessor :drinks_bought, :drinks_won # From vending machines
|
||||||
|
attr_accessor :coins_won, :coins_lost # Not bought, not spent
|
||||||
|
attr_accessor :battle_points_won, :battle_points_spent # Currently unused
|
||||||
|
attr_accessor :soot_collected
|
||||||
|
# Special stats
|
||||||
|
attr_accessor :times_to_get_badges # An array of times in seconds
|
||||||
|
attr_accessor :elite_four_attempts
|
||||||
|
attr_accessor :hall_of_fame_entry_count # See also Game Variable 13
|
||||||
|
attr_accessor :time_to_enter_hall_of_fame # In seconds
|
||||||
|
attr_accessor :safari_pokemon_caught, :most_captures_per_safari_game
|
||||||
|
attr_accessor :bug_contest_count, :bug_contest_wins
|
||||||
|
# Play
|
||||||
|
attr_accessor :play_time # In seconds
|
||||||
|
attr_accessor :play_sessions
|
||||||
|
attr_accessor :time_last_saved # In seconds
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
# Travel
|
||||||
|
@distance_walked = 0
|
||||||
|
@distance_cycled = 0
|
||||||
|
@distance_surfed = 0
|
||||||
|
@distance_slid_on_ice = 0
|
||||||
|
@cycle_count = 0
|
||||||
|
@surf_count = 0
|
||||||
|
@dive_count = 0
|
||||||
|
# Field actions
|
||||||
|
@fly_count = 0
|
||||||
|
@cut_count = 0
|
||||||
|
@flash_count = 0
|
||||||
|
@rock_smash_count = 0
|
||||||
|
@rock_smash_battles = 0
|
||||||
|
@headbutt_count = 0
|
||||||
|
@headbutt_battles = 0
|
||||||
|
@strength_push_count = 0
|
||||||
|
@waterfall_count = 0
|
||||||
|
@waterfalls_descended = 0
|
||||||
|
# Items
|
||||||
|
@repel_count = 0
|
||||||
|
@itemfinder_count = 0
|
||||||
|
@fishing_count = 0
|
||||||
|
@fishing_battles = 0
|
||||||
|
@poke_radar_count = 0
|
||||||
|
@poke_radar_longest_chain = 0
|
||||||
|
@berry_plants_picked = 0
|
||||||
|
@max_yield_berry_plants = 0
|
||||||
|
@berries_planted = 0
|
||||||
|
# NPCs
|
||||||
|
@poke_center_count = 0 # Incremented in Poké Center nurse events
|
||||||
|
@revived_fossil_count = 0 # Incremented in fossil reviver events
|
||||||
|
@lottery_prize_count = 0 # Incremented in lottery NPC events
|
||||||
|
# Pokémon
|
||||||
|
@eggs_hatched = 0
|
||||||
|
@evolution_count = 0
|
||||||
|
@trade_count = 0
|
||||||
|
@moves_taught_by_item = 0
|
||||||
|
@moves_taught_by_tutor = 0
|
||||||
|
@moves_taught_by_reminder = 0
|
||||||
|
@day_care_deposits = 0
|
||||||
|
@day_care_levels_gained = 0
|
||||||
|
@pokerus_infections = 0
|
||||||
|
@shadow_pokemon_purified = 0
|
||||||
|
# Battles
|
||||||
|
@wild_battles_won = 0
|
||||||
|
@wild_battles_lost = 0
|
||||||
|
@trainer_battles_won = 0
|
||||||
|
@trainer_battles_lost = 0
|
||||||
|
@total_exp_gained = 0
|
||||||
|
@battle_money_gained = 0
|
||||||
|
@battle_money_lost = 0
|
||||||
|
@blacked_out_count = 0
|
||||||
|
@mega_evolution_count = 0
|
||||||
|
@failed_poke_ball_count = 0
|
||||||
|
# Currency
|
||||||
|
@money_spent_at_marts = 0
|
||||||
|
@money_earned_at_marts = 0
|
||||||
|
@mart_items_bought = 0
|
||||||
|
@premier_balls_earned = 0
|
||||||
|
@drinks_bought = 0 # Incremented in vending machine events
|
||||||
|
@drinks_won = 0 # Incremented in vending machine events
|
||||||
|
@coins_won = 0
|
||||||
|
@coins_lost = 0
|
||||||
|
@battle_points_won = 0
|
||||||
|
@battle_points_spent = 0
|
||||||
|
@soot_collected = 0
|
||||||
|
# Special stats
|
||||||
|
@gym_leader_attempts = [] # Incremented in Gym Leader events
|
||||||
|
@times_to_get_badges = [] # Set with set_time_to_badge(number) in Gym Leader events
|
||||||
|
@elite_four_attempts = 0 # Incremented in door event leading to the first E4 member
|
||||||
|
@hall_of_fame_entry_count = 0 # Incremented in Hall of Fame event
|
||||||
|
@time_to_enter_hall_of_fame = 0 # Set with set_time_to_hall_of_fame in Hall of Fame event
|
||||||
|
@safari_pokemon_caught = 0
|
||||||
|
@most_captures_per_safari_game = 0
|
||||||
|
@bug_contest_count = 0
|
||||||
|
@bug_contest_wins = 0
|
||||||
|
# Play
|
||||||
|
@play_time = 0
|
||||||
|
@play_sessions = 0
|
||||||
|
@time_last_saved = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def distance_moved
|
||||||
|
return @distance_walked + @distance_cycled + @distance_surfed
|
||||||
|
end
|
||||||
|
|
||||||
|
def caught_pokemon_count
|
||||||
|
return 0 if !$player
|
||||||
|
ret = 0
|
||||||
|
GameData::Species.each_species { |sp| ret += $player.pokedex.caught_count(sp) }
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
def save_count
|
||||||
|
return $game_system&.save_count || 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_time_to_badge(number)
|
||||||
|
@times_to_get_badges[number] = @play_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_time_to_hall_of_fame
|
||||||
|
@time_to_enter_hall_of_fame = @play_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def play_time_per_session
|
||||||
|
return @play_time / @play_sessions
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_time_last_saved
|
||||||
|
@time_last_saved = @play_time
|
||||||
|
end
|
||||||
|
|
||||||
|
def time_since_last_save
|
||||||
|
return @play_time - @time_last_saved
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#===============================================================================
|
||||||
|
#
|
||||||
|
#===============================================================================
|
||||||
|
module Graphics
|
||||||
|
unless defined?(update_stats_play_time)
|
||||||
|
class << Graphics
|
||||||
|
alias update_stats_play_time update
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.update
|
||||||
|
update_stats_play_time
|
||||||
|
$stats.play_time += self.delta_s if $stats && $PokemonEncounters
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -652,7 +652,8 @@ class PokeBattle_Battle
|
|||||||
def pbSetSeen(battler)
|
def pbSetSeen(battler)
|
||||||
return if !battler || !@internalBattle
|
return if !battler || !@internalBattle
|
||||||
if battler.is_a?(PokeBattle_Battler)
|
if battler.is_a?(PokeBattle_Battler)
|
||||||
pbPlayer.pokedex.register(battler.displaySpecies,battler.displayGender,battler.displayForm)
|
pbPlayer.pokedex.register(battler.displaySpecies, battler.displayGender,
|
||||||
|
battler.displayForm, battler.shiny?)
|
||||||
else
|
else
|
||||||
pbPlayer.pokedex.register(battler)
|
pbPlayer.pokedex.register(battler)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -349,6 +349,7 @@ class PokeBattle_Battle
|
|||||||
pbPlayer.money += tMoney
|
pbPlayer.money += tMoney
|
||||||
moneyGained = pbPlayer.money-oldMoney
|
moneyGained = pbPlayer.money-oldMoney
|
||||||
if moneyGained>0
|
if moneyGained>0
|
||||||
|
$stats.battle_money_gained += moneyGained
|
||||||
pbDisplayPaused(_INTL("You got ${1} for winning!",moneyGained.to_s_formatted))
|
pbDisplayPaused(_INTL("You got ${1} for winning!",moneyGained.to_s_formatted))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -360,6 +361,7 @@ class PokeBattle_Battle
|
|||||||
pbPlayer.money += @field.effects[PBEffects::PayDay]
|
pbPlayer.money += @field.effects[PBEffects::PayDay]
|
||||||
moneyGained = pbPlayer.money-oldMoney
|
moneyGained = pbPlayer.money-oldMoney
|
||||||
if moneyGained>0
|
if moneyGained>0
|
||||||
|
$stats.battle_money_gained += moneyGained
|
||||||
pbDisplayPaused(_INTL("You picked up ${1}!",moneyGained.to_s_formatted))
|
pbDisplayPaused(_INTL("You picked up ${1}!",moneyGained.to_s_formatted))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -377,6 +379,7 @@ class PokeBattle_Battle
|
|||||||
pbPlayer.money -= tMoney
|
pbPlayer.money -= tMoney
|
||||||
moneyLost = oldMoney-pbPlayer.money
|
moneyLost = oldMoney-pbPlayer.money
|
||||||
if moneyLost>0
|
if moneyLost>0
|
||||||
|
$stats.battle_money_lost += moneyLost
|
||||||
if trainerBattle?
|
if trainerBattle?
|
||||||
pbDisplayPaused(_INTL("You gave ${1} to the winner...",moneyLost.to_s_formatted))
|
pbDisplayPaused(_INTL("You gave ${1} to the winner...",moneyLost.to_s_formatted))
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -178,6 +178,7 @@ class PokeBattle_Battle
|
|||||||
pkmn.name,debugInfo))
|
pkmn.name,debugInfo))
|
||||||
end
|
end
|
||||||
# Give Exp
|
# Give Exp
|
||||||
|
$stats.total_exp_gained += expGained
|
||||||
if pkmn.shadowPokemon?
|
if pkmn.shadowPokemon?
|
||||||
pkmn.exp += expGained
|
pkmn.exp += expGained
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ class PokeBattle_Battle
|
|||||||
battler = @battlers[idxBattler]
|
battler = @battlers[idxBattler]
|
||||||
return if !battler || !battler.pokemon
|
return if !battler || !battler.pokemon
|
||||||
return if !battler.hasMega? || battler.mega?
|
return if !battler.hasMega? || battler.mega?
|
||||||
|
$stats.mega_evolution_count += 1 if battler.pbOwnedByPlayer?
|
||||||
trainerName = pbGetOwnerName(idxBattler)
|
trainerName = pbGetOwnerName(idxBattler)
|
||||||
old_ability = battler.ability_id
|
old_ability = battler.ability_id
|
||||||
# Break Illusion
|
# Break Illusion
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ module BallHandlers
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.onFailCatch(ball,battle,battler)
|
def self.onFailCatch(ball,battle,battler)
|
||||||
|
$stats.failed_poke_ball_count += 1
|
||||||
OnFailCatch.trigger(ball,battle,battler)
|
OnFailCatch.trigger(ball,battle,battler)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -358,7 +358,8 @@ class PokeBattle_SafariZone
|
|||||||
def pbSetSeen(battler)
|
def pbSetSeen(battler)
|
||||||
return if !battler || !@internalBattle
|
return if !battler || !@internalBattle
|
||||||
if battler.is_a?(PokeBattle_Battler)
|
if battler.is_a?(PokeBattle_Battler)
|
||||||
pbPlayer.pokedex.register(battler.displaySpecies,battler.displayGender,battler.displayForm)
|
pbPlayer.pokedex.register(battler.displaySpecies, battler.displayGender,
|
||||||
|
battler.displayForm, battler.shiny?)
|
||||||
else
|
else
|
||||||
pbPlayer.pokedex.register(battler)
|
pbPlayer.pokedex.register(battler)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ def pbStartOver(gameover=false)
|
|||||||
pbBugContestStartOver
|
pbBugContestStartOver
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
$stats.blacked_out_count += 1
|
||||||
$player.heal_party
|
$player.heal_party
|
||||||
if $PokemonGlobal.pokecenterMapId && $PokemonGlobal.pokecenterMapId>=0
|
if $PokemonGlobal.pokecenterMapId && $PokemonGlobal.pokecenterMapId>=0
|
||||||
if gameover
|
if gameover
|
||||||
|
|||||||
@@ -135,7 +135,11 @@ Events.onStepTakenFieldMovement += proc { |_sender,e|
|
|||||||
tile_id = map.data[thistile[1],thistile[2],i]
|
tile_id = map.data[thistile[1],thistile[2],i]
|
||||||
next if tile_id == nil
|
next if tile_id == nil
|
||||||
next if GameData::TerrainTag.try_get(map.terrain_tags[tile_id]).id != :SootGrass
|
next if GameData::TerrainTag.try_get(map.terrain_tags[tile_id]).id != :SootGrass
|
||||||
$player.soot += 1 if event == $game_player && $bag.has?(:SOOTSACK)
|
if event == $game_player && $bag.has?(:SOOTSACK)
|
||||||
|
old_soot = $player.soot
|
||||||
|
$player.soot += 1
|
||||||
|
$stats.soot_collected += $player.soot - old_soot if $player.soot > old_soot
|
||||||
|
end
|
||||||
map.erase_tile(thistile[1], thistile[2], i)
|
map.erase_tile(thistile[1], thistile[2], i)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -295,6 +295,12 @@ def pbWildBattleCore(*args)
|
|||||||
# 3 - Player or wild Pokémon ran from battle, or player forfeited the match
|
# 3 - Player or wild Pokémon ran from battle, or player forfeited the match
|
||||||
# 4 - Wild Pokémon was caught
|
# 4 - Wild Pokémon was caught
|
||||||
# 5 - Draw
|
# 5 - Draw
|
||||||
|
case outcome
|
||||||
|
when 1, 4 # Won, caught
|
||||||
|
$stats.wild_battles_won += 1
|
||||||
|
when 2, 3, 5 # Lost, fled, draw
|
||||||
|
$stats.wild_battles_lost += 1
|
||||||
|
end
|
||||||
pbSet(outcomeVar,decision)
|
pbSet(outcomeVar,decision)
|
||||||
return decision
|
return decision
|
||||||
end
|
end
|
||||||
@@ -439,6 +445,12 @@ def pbTrainerBattleCore(*args)
|
|||||||
pbAfterBattle(decision,canLose)
|
pbAfterBattle(decision,canLose)
|
||||||
}
|
}
|
||||||
Input.update
|
Input.update
|
||||||
|
case outcome
|
||||||
|
when 1 # Won
|
||||||
|
$stats.trainer_battles_won += 1
|
||||||
|
when 2, 3, 5 # Lost, fled, draw
|
||||||
|
$stats.trainer_battles_lost += 1
|
||||||
|
end
|
||||||
# Save the result of the battle in a Game Variable (1 by default)
|
# Save the result of the battle in a Game Variable (1 by default)
|
||||||
# 0 - Undecided or aborted
|
# 0 - Undecided or aborted
|
||||||
# 1 - Player won
|
# 1 - Player won
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ def pbCut
|
|||||||
end
|
end
|
||||||
pbMessage(_INTL("This tree looks like it can be cut down!\1"))
|
pbMessage(_INTL("This tree looks like it can be cut down!\1"))
|
||||||
if pbConfirmMessage(_INTL("Would you like to cut it?"))
|
if pbConfirmMessage(_INTL("Would you like to cut it?"))
|
||||||
|
$stats.cut_count += 1
|
||||||
speciesname = (movefinder) ? movefinder.name : $player.name
|
speciesname = (movefinder) ? movefinder.name : $player.name
|
||||||
pbMessage(_INTL("{1} used {2}!",speciesname,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",speciesname,GameData::Move.get(move).name))
|
||||||
pbHiddenMoveAnimation(movefinder)
|
pbHiddenMoveAnimation(movefinder)
|
||||||
@@ -216,6 +217,7 @@ HiddenMoveHandlers::UseMove.add(:CUT,proc { |move,pokemon|
|
|||||||
if !pbHiddenMoveAnimation(pokemon)
|
if !pbHiddenMoveAnimation(pokemon)
|
||||||
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
||||||
end
|
end
|
||||||
|
$stats.cut_count += 1
|
||||||
facingEvent = $game_player.pbFacingEvent
|
facingEvent = $game_player.pbFacingEvent
|
||||||
if facingEvent
|
if facingEvent
|
||||||
pbSmashEvent(facingEvent)
|
pbSmashEvent(facingEvent)
|
||||||
@@ -316,6 +318,7 @@ def pbDive
|
|||||||
$game_temp.player_new_direction = $game_player.direction
|
$game_temp.player_new_direction = $game_player.direction
|
||||||
$PokemonGlobal.surfing = false
|
$PokemonGlobal.surfing = false
|
||||||
$PokemonGlobal.diving = true
|
$PokemonGlobal.diving = true
|
||||||
|
$stats.dive_count += 1
|
||||||
pbUpdateVehicle
|
pbUpdateVehicle
|
||||||
$scene.transfer_player(false)
|
$scene.transfer_player(false)
|
||||||
$game_map.autoplay
|
$game_map.autoplay
|
||||||
@@ -476,6 +479,7 @@ HiddenMoveHandlers::UseMove.add(:FLASH,proc { |move,pokemon|
|
|||||||
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
||||||
end
|
end
|
||||||
$PokemonGlobal.flashUsed = true
|
$PokemonGlobal.flashUsed = true
|
||||||
|
$stats.flash_count += 1
|
||||||
radiusDiff = 8*20/Graphics.frame_rate
|
radiusDiff = 8*20/Graphics.frame_rate
|
||||||
while darkness.radius<darkness.radiusMax
|
while darkness.radius<darkness.radiusMax
|
||||||
Graphics.update
|
Graphics.update
|
||||||
@@ -518,6 +522,7 @@ def pbFlyToNewLocation(pkmn = nil, move = :FLY)
|
|||||||
name = pkmn&.name || $player.name
|
name = pkmn&.name || $player.name
|
||||||
pbMessage(_INTL("{1} used {2}!", name, GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!", name, GameData::Move.get(move).name))
|
||||||
end
|
end
|
||||||
|
$stats.fly_count += 1
|
||||||
pbFadeOutIn {
|
pbFadeOutIn {
|
||||||
pbSEPlay("Fly")
|
pbSEPlay("Fly")
|
||||||
$game_temp.player_new_map_id = $game_temp.fly_destination[0]
|
$game_temp.player_new_map_id = $game_temp.fly_destination[0]
|
||||||
@@ -570,7 +575,9 @@ def pbHeadbuttEffect(event=nil)
|
|||||||
pbMessage(_INTL("Nope. Nothing..."))
|
pbMessage(_INTL("Nope. Nothing..."))
|
||||||
else
|
else
|
||||||
enctype = (chance==1) ? :HeadbuttLow : :HeadbuttHigh
|
enctype = (chance==1) ? :HeadbuttLow : :HeadbuttHigh
|
||||||
if !pbEncounter(enctype)
|
if pbEncounter(enctype)
|
||||||
|
$stats.headbutt_battles += 1
|
||||||
|
else
|
||||||
pbMessage(_INTL("Nope. Nothing..."))
|
pbMessage(_INTL("Nope. Nothing..."))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -584,6 +591,7 @@ def pbHeadbutt(event=nil)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if pbConfirmMessage(_INTL("A Pokémon could be in this tree. Would you like to use Headbutt?"))
|
if pbConfirmMessage(_INTL("A Pokémon could be in this tree. Would you like to use Headbutt?"))
|
||||||
|
$stats.headbutt_count += 1
|
||||||
speciesname = (movefinder) ? movefinder.name : $player.name
|
speciesname = (movefinder) ? movefinder.name : $player.name
|
||||||
pbMessage(_INTL("{1} used {2}!",speciesname,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",speciesname,GameData::Move.get(move).name))
|
||||||
pbHiddenMoveAnimation(movefinder)
|
pbHiddenMoveAnimation(movefinder)
|
||||||
@@ -606,6 +614,7 @@ HiddenMoveHandlers::UseMove.add(:HEADBUTT,proc { |move,pokemon|
|
|||||||
if !pbHiddenMoveAnimation(pokemon)
|
if !pbHiddenMoveAnimation(pokemon)
|
||||||
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
||||||
end
|
end
|
||||||
|
$stats.headbutt_count += 1
|
||||||
facingEvent = $game_player.pbFacingEvent
|
facingEvent = $game_player.pbFacingEvent
|
||||||
pbHeadbuttEffect(facingEvent)
|
pbHeadbuttEffect(facingEvent)
|
||||||
})
|
})
|
||||||
@@ -617,6 +626,7 @@ HiddenMoveHandlers::UseMove.add(:HEADBUTT,proc { |move,pokemon|
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbRockSmashRandomEncounter
|
def pbRockSmashRandomEncounter
|
||||||
if $PokemonEncounters.encounter_triggered?(:RockSmash, false, false)
|
if $PokemonEncounters.encounter_triggered?(:RockSmash, false, false)
|
||||||
|
$stats.rock_smash_battles += 1
|
||||||
pbEncounter(:RockSmash)
|
pbEncounter(:RockSmash)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -629,6 +639,7 @@ def pbRockSmash
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if pbConfirmMessage(_INTL("This rock appears to be breakable. Would you like to use Rock Smash?"))
|
if pbConfirmMessage(_INTL("This rock appears to be breakable. Would you like to use Rock Smash?"))
|
||||||
|
$stats.rock_smash_count += 1
|
||||||
speciesname = (movefinder) ? movefinder.name : $player.name
|
speciesname = (movefinder) ? movefinder.name : $player.name
|
||||||
pbMessage(_INTL("{1} used {2}!",speciesname,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",speciesname,GameData::Move.get(move).name))
|
||||||
pbHiddenMoveAnimation(movefinder)
|
pbHiddenMoveAnimation(movefinder)
|
||||||
@@ -651,6 +662,7 @@ HiddenMoveHandlers::UseMove.add(:ROCKSMASH,proc { |move,pokemon|
|
|||||||
if !pbHiddenMoveAnimation(pokemon)
|
if !pbHiddenMoveAnimation(pokemon)
|
||||||
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
|
||||||
end
|
end
|
||||||
|
$stats.rock_smash_count += 1
|
||||||
facingEvent = $game_player.pbFacingEvent
|
facingEvent = $game_player.pbFacingEvent
|
||||||
if facingEvent
|
if facingEvent
|
||||||
pbSmashEvent(facingEvent)
|
pbSmashEvent(facingEvent)
|
||||||
@@ -740,6 +752,7 @@ def pbStartSurfing
|
|||||||
pbCancelVehicles
|
pbCancelVehicles
|
||||||
$PokemonEncounters.reset_step_count
|
$PokemonEncounters.reset_step_count
|
||||||
$PokemonGlobal.surfing = true
|
$PokemonGlobal.surfing = true
|
||||||
|
$stats.surf_count += 1
|
||||||
pbUpdateVehicle
|
pbUpdateVehicle
|
||||||
$game_temp.surf_base_coords = $map_factory.getFacingCoords($game_player.x, $game_player.y, $game_player.direction)
|
$game_temp.surf_base_coords = $map_factory.getFacingCoords($game_player.x, $game_player.y, $game_player.direction)
|
||||||
pbJumpToward
|
pbJumpToward
|
||||||
@@ -933,6 +946,7 @@ def pbAscendWaterfall
|
|||||||
return if $game_player.direction != 8 # Can't ascend if not facing up
|
return if $game_player.direction != 8 # Can't ascend if not facing up
|
||||||
terrain = $game_player.pbFacingTerrainTag
|
terrain = $game_player.pbFacingTerrainTag
|
||||||
return if !terrain.waterfall && !terrain.waterfall_crest
|
return if !terrain.waterfall && !terrain.waterfall_crest
|
||||||
|
$stats.waterfall_count += 1
|
||||||
oldthrough = $game_player.through
|
oldthrough = $game_player.through
|
||||||
oldmovespeed = $game_player.move_speed
|
oldmovespeed = $game_player.move_speed
|
||||||
$game_player.through = true
|
$game_player.through = true
|
||||||
@@ -950,6 +964,7 @@ def pbDescendWaterfall
|
|||||||
return if $game_player.direction != 2 # Can't descend if not facing down
|
return if $game_player.direction != 2 # Can't descend if not facing down
|
||||||
terrain = $game_player.pbFacingTerrainTag
|
terrain = $game_player.pbFacingTerrainTag
|
||||||
return if !terrain.waterfall && !terrain.waterfall_crest
|
return if !terrain.waterfall && !terrain.waterfall_crest
|
||||||
|
$stats.waterfalls_descended += 1
|
||||||
oldthrough = $game_player.through
|
oldthrough = $game_player.through
|
||||||
oldmovespeed = $game_player.move_speed
|
oldmovespeed = $game_player.move_speed
|
||||||
$game_player.through = true
|
$game_player.through = true
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ def pbFishingEnd
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pbFishing(hasEncounter,rodType=1)
|
def pbFishing(hasEncounter,rodType=1)
|
||||||
|
$stats.fishing_count += 1
|
||||||
speedup = ($player.first_pokemon && [:STICKYHOLD, :SUCTIONCUPS].include?($player.first_pokemon.ability_id))
|
speedup = ($player.first_pokemon && [:STICKYHOLD, :SUCTIONCUPS].include?($player.first_pokemon.ability_id))
|
||||||
biteChance = 20+(25*rodType) # 45, 70, 95
|
biteChance = 20+(25*rodType) # 45, 70, 95
|
||||||
biteChance *= 1.5 if speedup # 67.5, 100, 100
|
biteChance *= 1.5 if speedup # 67.5, 100, 100
|
||||||
|
|||||||
@@ -412,6 +412,7 @@ def pbBerryPlant
|
|||||||
berry = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_berry? })
|
berry = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_berry? })
|
||||||
}
|
}
|
||||||
if berry
|
if berry
|
||||||
|
$stats.berries_planted += 1
|
||||||
berry_plant.plant(berry)
|
berry_plant.plant(berry)
|
||||||
$bag.remove(berry)
|
$bag.remove(berry)
|
||||||
if Settings::NEW_BERRY_PLANTS
|
if Settings::NEW_BERRY_PLANTS
|
||||||
@@ -441,6 +442,10 @@ def pbPickBerry(berry, qty = 1)
|
|||||||
pbMessage(_INTL("Too bad...\nThe Bag is full..."))
|
pbMessage(_INTL("Too bad...\nThe Bag is full..."))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
$stats.berry_plants_picked += 1
|
||||||
|
if qty >= GameData::BerryPlant.get(@berry_id).maximum_yield
|
||||||
|
$stats.max_yield_berry_plants += 1
|
||||||
|
end
|
||||||
$bag.add(berry, qty)
|
$bag.add(berry, qty)
|
||||||
if qty > 1
|
if qty > 1
|
||||||
pbMessage(_INTL("You picked the {1} \\c[1]{2}\\c[0].\\wtnp[30]", qty, berry_name))
|
pbMessage(_INTL("You picked the {1} \\c[1]{2}\\c[0].\\wtnp[30]", qty, berry_name))
|
||||||
|
|||||||
@@ -389,6 +389,7 @@ class DayCare
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.deposit(party_index)
|
def self.deposit(party_index)
|
||||||
|
$stats.day_care_deposits += 1
|
||||||
day_care = $PokemonGlobal.day_care
|
day_care = $PokemonGlobal.day_care
|
||||||
pkmn = $player.party[party_index]
|
pkmn = $player.party[party_index]
|
||||||
raise _INTL("No Pokémon at index {1} in party.", party_index) if pkmn.nil?
|
raise _INTL("No Pokémon at index {1} in party.", party_index) if pkmn.nil?
|
||||||
@@ -410,6 +411,7 @@ class DayCare
|
|||||||
elsif $player.party_full?
|
elsif $player.party_full?
|
||||||
raise _INTL("No room in party for Pokémon.")
|
raise _INTL("No room in party for Pokémon.")
|
||||||
end
|
end
|
||||||
|
$stats.day_care_levels_gained += slot.level_gain
|
||||||
$player.party.push(slot.pokemon)
|
$player.party.push(slot.pokemon)
|
||||||
slot.reset
|
slot.reset
|
||||||
day_care.reset_egg_counters
|
day_care.reset_egg_counters
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ def pbRepel(item,steps)
|
|||||||
pbMessage(_INTL("But a repellent's effect still lingers from earlier."))
|
pbMessage(_INTL("But a repellent's effect still lingers from earlier."))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
$stats.repel_count += 1
|
||||||
pbUseItemMessage(item)
|
pbUseItemMessage(item)
|
||||||
$PokemonGlobal.repel = steps
|
$PokemonGlobal.repel = steps
|
||||||
return true
|
return true
|
||||||
@@ -243,6 +244,7 @@ ItemHandlers::UseInField.add(:OLDROD,proc { |item|
|
|||||||
end
|
end
|
||||||
encounter = $PokemonEncounters.has_encounter_type?(:OldRod)
|
encounter = $PokemonEncounters.has_encounter_type?(:OldRod)
|
||||||
if pbFishing(encounter,1)
|
if pbFishing(encounter,1)
|
||||||
|
$stats.fishing_battles += 1
|
||||||
pbEncounter(:OldRod)
|
pbEncounter(:OldRod)
|
||||||
end
|
end
|
||||||
next true
|
next true
|
||||||
@@ -256,6 +258,7 @@ ItemHandlers::UseInField.add(:GOODROD,proc { |item|
|
|||||||
end
|
end
|
||||||
encounter = $PokemonEncounters.has_encounter_type?(:GoodRod)
|
encounter = $PokemonEncounters.has_encounter_type?(:GoodRod)
|
||||||
if pbFishing(encounter,2)
|
if pbFishing(encounter,2)
|
||||||
|
$stats.fishing_battles += 1
|
||||||
pbEncounter(:GoodRod)
|
pbEncounter(:GoodRod)
|
||||||
end
|
end
|
||||||
next true
|
next true
|
||||||
@@ -269,12 +272,14 @@ ItemHandlers::UseInField.add(:SUPERROD,proc { |item|
|
|||||||
end
|
end
|
||||||
encounter = $PokemonEncounters.has_encounter_type?(:SuperRod)
|
encounter = $PokemonEncounters.has_encounter_type?(:SuperRod)
|
||||||
if pbFishing(encounter,3)
|
if pbFishing(encounter,3)
|
||||||
|
$stats.fishing_battles += 1
|
||||||
pbEncounter(:SuperRod)
|
pbEncounter(:SuperRod)
|
||||||
end
|
end
|
||||||
next true
|
next true
|
||||||
})
|
})
|
||||||
|
|
||||||
ItemHandlers::UseInField.add(:ITEMFINDER,proc { |item|
|
ItemHandlers::UseInField.add(:ITEMFINDER,proc { |item|
|
||||||
|
$stats.itemfinder_count += 1
|
||||||
event = pbClosestHiddenItem
|
event = pbClosestHiddenItem
|
||||||
if !event
|
if !event
|
||||||
pbMessage(_INTL("... \\wt[10]... \\wt[10]... \\wt[10]...\\wt[10]Nope! There's no response."))
|
pbMessage(_INTL("... \\wt[10]... \\wt[10]... \\wt[10]...\\wt[10]Nope! There's no response."))
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ end
|
|||||||
|
|
||||||
def pbUsePokeRadar
|
def pbUsePokeRadar
|
||||||
return false if !pbCanUsePokeRadar?
|
return false if !pbCanUsePokeRadar?
|
||||||
|
$stats.poke_radar_count += 1
|
||||||
$game_temp.poke_radar_data = [0, 0, 0, [], false] if !$game_temp.poke_radar_data
|
$game_temp.poke_radar_data = [0, 0, 0, [], false] if !$game_temp.poke_radar_data
|
||||||
$game_temp.poke_radar_data[4] = false
|
$game_temp.poke_radar_data[4] = false
|
||||||
$PokemonGlobal.pokeradarBattery = 50
|
$PokemonGlobal.pokeradarBattery = 50
|
||||||
@@ -80,7 +81,7 @@ def pbPokeRadarHighlightGrass(showmessage=true)
|
|||||||
# Choose a rarity for the grass (0=normal, 1=rare, 2=shiny)
|
# Choose a rarity for the grass (0=normal, 1=rare, 2=shiny)
|
||||||
s = (rand(100) < 25) ? 1 : 0
|
s = (rand(100) < 25) ? 1 : 0
|
||||||
if $game_temp.poke_radar_data && $game_temp.poke_radar_data[2] > 0
|
if $game_temp.poke_radar_data && $game_temp.poke_radar_data[2] > 0
|
||||||
v = [(65536 / Settings::SHINY_POKEMON_CHANCE) - $game_temp.poke_radar_data[2] * 200, 200].max
|
v = [(65536 / Settings::SHINY_POKEMON_CHANCE) - [$game_temp.poke_radar_data[2], 40].min * 200, 200].max
|
||||||
v = (65536 / v.to_f).ceil
|
v = (65536 / v.to_f).ceil
|
||||||
s = 2 if rand(65536) < v
|
s = 2 if rand(65536) < v
|
||||||
end
|
end
|
||||||
@@ -163,7 +164,7 @@ EncounterModifier.register(proc { |encounter|
|
|||||||
$game_temp.poke_radar_data[3].each { |g| rarity = g[3] if g[2] == ring }
|
$game_temp.poke_radar_data[3].each { |g| rarity = g[3] if g[2] == ring }
|
||||||
if $game_temp.poke_radar_data[2] > 0 # Chain count, i.e. is chaining
|
if $game_temp.poke_radar_data[2] > 0 # Chain count, i.e. is chaining
|
||||||
if rarity == 2 ||
|
if rarity == 2 ||
|
||||||
rand(100) < 58 + ring * 10 + ($game_temp.poke_radar_data[2] / 4) + ($game_temp.poke_radar_data[4] ? 10 : 0)
|
rand(100) < 58 + ring * 10 + ([$game_temp.poke_radar_data[2], 40].min / 4) + ($game_temp.poke_radar_data[4] ? 10 : 0)
|
||||||
# Continue the chain
|
# Continue the chain
|
||||||
encounter = [$game_temp.poke_radar_data[0], $game_temp.poke_radar_data[1]]
|
encounter = [$game_temp.poke_radar_data[0], $game_temp.poke_radar_data[1]]
|
||||||
$game_temp.force_single_battle = true
|
$game_temp.force_single_battle = true
|
||||||
@@ -210,7 +211,8 @@ Events.onWildBattleEnd += proc { |_sender,e|
|
|||||||
if $game_temp.poke_radar_data && (decision==1 || decision==4) # Defeated/caught
|
if $game_temp.poke_radar_data && (decision==1 || decision==4) # Defeated/caught
|
||||||
$game_temp.poke_radar_data[0] = species
|
$game_temp.poke_radar_data[0] = species
|
||||||
$game_temp.poke_radar_data[1] = level
|
$game_temp.poke_radar_data[1] = level
|
||||||
$game_temp.poke_radar_data[2] = [$game_temp.poke_radar_data[2] + 1, 40].min
|
$game_temp.poke_radar_data[2] += 1
|
||||||
|
$stats.poke_radar_longest_chain = [$game_temp.poke_radar_data[2], $stats.poke_radar_longest_chain].max
|
||||||
# Catching makes the next Radar encounter more likely to continue the chain
|
# Catching makes the next Radar encounter more likely to continue the chain
|
||||||
$game_temp.poke_radar_data[4] = (decision == 4)
|
$game_temp.poke_radar_data[4] = (decision == 4)
|
||||||
pbPokeRadarHighlightGrass(false)
|
pbPokeRadarHighlightGrass(false)
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ critical hit.
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbPurify(pkmn, scene)
|
def pbPurify(pkmn, scene)
|
||||||
return if !pkmn.shadowPokemon? || pkmn.heart_gauge != 0
|
return if !pkmn.shadowPokemon? || pkmn.heart_gauge != 0
|
||||||
|
$stats.shadow_pokemon_purified += 1
|
||||||
pkmn.shadow = false
|
pkmn.shadow = false
|
||||||
pkmn.giveRibbon(:NATIONAL)
|
pkmn.giveRibbon(:NATIONAL)
|
||||||
scene.pbDisplay(_INTL("{1} opened the door to its heart!", pkmn.name))
|
scene.pbDisplay(_INTL("{1} opened the door to its heart!", pkmn.name))
|
||||||
|
|||||||
@@ -797,6 +797,7 @@ class Pokemon
|
|||||||
# @param strain [Integer] Pokérus strain to give
|
# @param strain [Integer] Pokérus strain to give
|
||||||
def givePokerus(strain = 0)
|
def givePokerus(strain = 0)
|
||||||
return if self.pokerusStage == 2 # Can't re-infect a cured Pokémon
|
return if self.pokerusStage == 2 # Can't re-infect a cured Pokémon
|
||||||
|
$stats.pokerus_infections += 1
|
||||||
strain = rand(1..16) if strain <= 0 || strain >= 16
|
strain = rand(1..16) if strain <= 0 || strain >= 16
|
||||||
time = 1 + (strain % 4)
|
time = 1 + (strain % 4)
|
||||||
@pokerus = time
|
@pokerus = time
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ class Player < Trainer
|
|||||||
def clear
|
def clear
|
||||||
@seen = {}
|
@seen = {}
|
||||||
@owned = {}
|
@owned = {}
|
||||||
@seen_forms = {}
|
@seen_forms = {} # Gender (0 or 1), shiny (0 or 1), form number
|
||||||
|
@seen_shiny_forms = {}
|
||||||
|
@seen_eggs = {}
|
||||||
@last_seen_forms = {}
|
@last_seen_forms = {}
|
||||||
@owned_shadow = {}
|
@owned_shadow = {}
|
||||||
@caught_counts = {}
|
@caught_counts = {}
|
||||||
@@ -55,12 +57,33 @@ class Player < Trainer
|
|||||||
# @param species [Symbol, GameData::Species] species to check
|
# @param species [Symbol, GameData::Species] species to check
|
||||||
# @param gender [Integer] gender to check
|
# @param gender [Integer] gender to check
|
||||||
# @param form [Integer] form to check
|
# @param form [Integer] form to check
|
||||||
# @return [Boolean] whether the species of the given gender and form is seen
|
# @param shiny [Boolean, nil] shininess to check (checks both if nil)
|
||||||
def seen_form?(species, gender, form)
|
# @return [Boolean] whether the species of the given gender/form/shininess is seen
|
||||||
|
def seen_form?(species, gender, form, shiny = nil)
|
||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return false if species_id.nil?
|
return false if species_id.nil?
|
||||||
@seen_forms[species_id] ||= [[], []]
|
@seen_forms[species_id] ||= [[[], []], [[], []]]
|
||||||
return @seen_forms[species_id][gender][form] == true
|
if shiny.nil?
|
||||||
|
return @seen_forms[species_id][gender][0][form] || @seen_forms[species_id][gender][1][form]
|
||||||
|
end
|
||||||
|
shin = (shiny) ? 1 : 0
|
||||||
|
return @seen_forms[species_id][gender][shin][form] == true
|
||||||
|
end
|
||||||
|
|
||||||
|
# Sets the egg for the given species as seen.
|
||||||
|
# @param species [Symbol, GameData::Species] species to set as seen
|
||||||
|
def set_seen_egg(species)
|
||||||
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
|
return if species_id.nil?
|
||||||
|
@seen_eggs[species_id] = true
|
||||||
|
end
|
||||||
|
|
||||||
|
# @param species [Symbol, GameData::Species] species to check
|
||||||
|
# @return [Boolean] whether the egg for the given species is seen
|
||||||
|
def seen_egg?(species)
|
||||||
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
|
return false if species_id.nil?
|
||||||
|
return @seen_eggs[species_id] == true
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the amount of seen Pokémon.
|
# Returns the amount of seen Pokémon.
|
||||||
@@ -94,10 +117,11 @@ class Player < Trainer
|
|||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return 0 if species_id.nil?
|
return 0 if species_id.nil?
|
||||||
ret = 0
|
ret = 0
|
||||||
@seen_forms[species_id] ||= [[], []]
|
@seen_forms[species_id] ||= [[[], []], [[], []]]
|
||||||
array = @seen_forms[species_id]
|
array = @seen_forms[species_id]
|
||||||
for i in 0...[array[0].length, array[1].length].max
|
for i in 0...[array[0].length, array[1].length].max
|
||||||
ret += 1 if array[0][i] || array[1][i]
|
ret += 1 if array[0][0][i] || array[0][1][i] || # male or genderless shiny/non-shiny
|
||||||
|
array[1][0][i] || array[1][1][i] # female shiny/non-shiny
|
||||||
end
|
end
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
@@ -166,16 +190,20 @@ class Player < Trainer
|
|||||||
# @param species [Pokemon, Symbol, GameData::Species] Pokemon to register as seen
|
# @param species [Pokemon, Symbol, GameData::Species] Pokemon to register as seen
|
||||||
# @param gender [Integer] gender to register (0=male, 1=female, 2=genderless)
|
# @param gender [Integer] gender to register (0=male, 1=female, 2=genderless)
|
||||||
# @param form [Integer] form to register
|
# @param form [Integer] form to register
|
||||||
def register(species, gender = 0, form = 0, should_refresh_dexes = true)
|
# @param shiny [Boolean] shininess to register
|
||||||
|
# @param should_refresh_dexes [Boolean] whether to recalculate accessible Dex lists
|
||||||
|
def register(species, gender = 0, form = 0, shiny = false, should_refresh_dexes = true)
|
||||||
if species.is_a?(Pokemon)
|
if species.is_a?(Pokemon)
|
||||||
species_data = species.species_data
|
species_data = species.species_data
|
||||||
gender = species.gender
|
gender = species.gender
|
||||||
|
shiny = species.shiny?
|
||||||
else
|
else
|
||||||
species_data = GameData::Species.get_species_form(species, form)
|
species_data = GameData::Species.get_species_form(species, form)
|
||||||
end
|
end
|
||||||
species = species_data.species
|
species = species_data.species
|
||||||
gender = 0 if gender >= 2
|
gender = 0 if gender >= 2
|
||||||
form = species_data.form
|
form = species_data.form
|
||||||
|
shin = (shiny) ? 1 : 0
|
||||||
if form != species_data.pokedex_form
|
if form != species_data.pokedex_form
|
||||||
species_data = GameData::Species.get_species_form(species, species_data.pokedex_form)
|
species_data = GameData::Species.get_species_form(species, species_data.pokedex_form)
|
||||||
form = species_data.form
|
form = species_data.form
|
||||||
@@ -183,8 +211,8 @@ class Player < Trainer
|
|||||||
form = 0 if species_data.form_name.nil? || species_data.form_name.empty?
|
form = 0 if species_data.form_name.nil? || species_data.form_name.empty?
|
||||||
# Register as seen
|
# Register as seen
|
||||||
@seen[species] = true
|
@seen[species] = true
|
||||||
@seen_forms[species] ||= [[], []]
|
@seen_forms[species] ||= [[[], []], [[], []]]
|
||||||
@seen_forms[species][gender][form] = true
|
@seen_forms[species][gender][shin][form] = true
|
||||||
@last_seen_forms[species] ||= []
|
@last_seen_forms[species] ||= []
|
||||||
@last_seen_forms[species] = [gender, form] if @last_seen_forms[species] == []
|
@last_seen_forms[species] = [gender, form] if @last_seen_forms[species] == []
|
||||||
self.refresh_accessible_dexes if should_refresh_dexes
|
self.refresh_accessible_dexes if should_refresh_dexes
|
||||||
@@ -207,7 +235,7 @@ class Player < Trainer
|
|||||||
def caught_count(species)
|
def caught_count(species)
|
||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return 0 if species_id.nil?
|
return 0 if species_id.nil?
|
||||||
return @caught_counts[species] || 0
|
return @caught_counts[species_id] || 0
|
||||||
end
|
end
|
||||||
|
|
||||||
# @param species [Symbol, GameData::Species] species to check
|
# @param species [Symbol, GameData::Species] species to check
|
||||||
@@ -216,7 +244,7 @@ class Player < Trainer
|
|||||||
def defeated_count(species)
|
def defeated_count(species)
|
||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return 0 if species_id.nil?
|
return 0 if species_id.nil?
|
||||||
return @defeated_counts[species] || 0
|
return @defeated_counts[species_id] || 0
|
||||||
end
|
end
|
||||||
|
|
||||||
# @param species [Symbol, GameData::Species] species to check
|
# @param species [Symbol, GameData::Species] species to check
|
||||||
@@ -225,23 +253,23 @@ class Player < Trainer
|
|||||||
def battled_count(species)
|
def battled_count(species)
|
||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return 0 if species_id.nil?
|
return 0 if species_id.nil?
|
||||||
return (@defeated_counts[species] || 0) + (@caught_counts[species] || 0)
|
return (@defeated_counts[species_id] || 0) + (@caught_counts[species_id] || 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
# @param species [Symbol, GameData::Species] species to count as caught
|
# @param species [Symbol, GameData::Species] species to count as caught
|
||||||
def register_caught(species)
|
def register_caught(species)
|
||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return if species_id.nil?
|
return if species_id.nil?
|
||||||
@caught_counts[species] = 0 if @caught_counts[species].nil?
|
@caught_counts[species_id] = 0 if @caught_counts[species_id].nil?
|
||||||
@caught_counts[species] += 1
|
@caught_counts[species_id] += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
# @param species [Symbol, GameData::Species] species to count as defeated
|
# @param species [Symbol, GameData::Species] species to count as defeated
|
||||||
def register_defeated(species)
|
def register_defeated(species)
|
||||||
species_id = GameData::Species.try_get(species)&.species
|
species_id = GameData::Species.try_get(species)&.species
|
||||||
return if species_id.nil?
|
return if species_id.nil?
|
||||||
@defeated_counts[species] = 0 if @defeated_counts[species].nil?
|
@defeated_counts[species_id] = 0 if @defeated_counts[species_id].nil?
|
||||||
@defeated_counts[species] += 1
|
@defeated_counts[species_id] += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
#===========================================================================
|
#===========================================================================
|
||||||
|
|||||||
@@ -189,6 +189,7 @@ def pbHatchAnimation(pokemon)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pbHatch(pokemon)
|
def pbHatch(pokemon)
|
||||||
|
$stats.eggs_hatched += 1
|
||||||
speciesname = pokemon.speciesName
|
speciesname = pokemon.speciesName
|
||||||
pokemon.name = nil
|
pokemon.name = nil
|
||||||
pokemon.owner = Pokemon::Owner.new_from_trainer($player)
|
pokemon.owner = Pokemon::Owner.new_from_trainer($player)
|
||||||
@@ -198,6 +199,7 @@ def pbHatch(pokemon)
|
|||||||
pokemon.hatched_map = $game_map.map_id
|
pokemon.hatched_map = $game_map.map_id
|
||||||
$player.pokedex.register(pokemon)
|
$player.pokedex.register(pokemon)
|
||||||
$player.pokedex.set_owned(pokemon.species)
|
$player.pokedex.set_owned(pokemon.species)
|
||||||
|
$player.pokedex.set_seen_egg(pokemon.species)
|
||||||
pokemon.record_first_moves
|
pokemon.record_first_moves
|
||||||
if !pbHatchAnimation(pokemon)
|
if !pbHatchAnimation(pokemon)
|
||||||
pbMessage(_INTL("Huh?\1"))
|
pbMessage(_INTL("Huh?\1"))
|
||||||
|
|||||||
@@ -566,6 +566,7 @@ class PokemonEvolutionScene
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pbEvolutionSuccess
|
def pbEvolutionSuccess
|
||||||
|
$stats.evolution_count += 1
|
||||||
# Play cry of evolved species
|
# Play cry of evolved species
|
||||||
frames = GameData::Species.cry_length(@newspecies, @pokemon.form)
|
frames = GameData::Species.cry_length(@newspecies, @pokemon.form)
|
||||||
pbBGMStop
|
pbBGMStop
|
||||||
|
|||||||
@@ -198,6 +198,7 @@ end
|
|||||||
#
|
#
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
def pbStartTrade(pokemonIndex,newpoke,nickname,trainerName,trainerGender=0)
|
def pbStartTrade(pokemonIndex,newpoke,nickname,trainerName,trainerGender=0)
|
||||||
|
$stats.trade_count += 1
|
||||||
myPokemon = $player.party[pokemonIndex]
|
myPokemon = $player.party[pokemonIndex]
|
||||||
opponent = NPCTrainer.new(trainerName,trainerGender)
|
opponent = NPCTrainer.new(trainerName,trainerGender)
|
||||||
opponent.id = $player.make_foreign_ID
|
opponent.id = $player.make_foreign_ID
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ class PokemonTrainerCard_Scene
|
|||||||
overlay.clear
|
overlay.clear
|
||||||
baseColor = Color.new(72,72,72)
|
baseColor = Color.new(72,72,72)
|
||||||
shadowColor = Color.new(160,160,160)
|
shadowColor = Color.new(160,160,160)
|
||||||
totalsec = Graphics.frame_count / Graphics.frame_rate
|
totalsec = $stats.play_time.to_i
|
||||||
hour = totalsec / 60 / 60
|
hour = totalsec / 60 / 60
|
||||||
min = totalsec / 60 % 60
|
min = totalsec / 60 % 60
|
||||||
time = (hour>0) ? _INTL("{1}h {2}m",hour,min) : _INTL("{1}m",min)
|
time = (hour>0) ? _INTL("{1}h {2}m",hour,min) : _INTL("{1}m",min)
|
||||||
|
|||||||
@@ -11,13 +11,13 @@ class PokemonLoadPanel < SpriteWrapper
|
|||||||
FEMALETEXTCOLOR = Color.new(240,72,88)
|
FEMALETEXTCOLOR = Color.new(240,72,88)
|
||||||
FEMALETEXTSHADOWCOLOR = Color.new(160,64,64)
|
FEMALETEXTSHADOWCOLOR = Color.new(160,64,64)
|
||||||
|
|
||||||
def initialize(index,title,isContinue,trainer,framecount,mapid,viewport=nil)
|
def initialize(index, title, isContinue, trainer, framecount, stats, mapid, viewport = nil)
|
||||||
super(viewport)
|
super(viewport)
|
||||||
@index = index
|
@index = index
|
||||||
@title = title
|
@title = title
|
||||||
@isContinue = isContinue
|
@isContinue = isContinue
|
||||||
@trainer = trainer
|
@trainer = trainer
|
||||||
@totalsec = (framecount || 0) / Graphics.frame_rate
|
@totalsec = (stats) ? stats.play_time.to_i : ((framecount || 0) / Graphics.frame_rate)
|
||||||
@mapid = mapid
|
@mapid = mapid
|
||||||
@selected = (index==0)
|
@selected = (index==0)
|
||||||
@bgbitmap = AnimatedBitmap.new("Graphics/Pictures/loadPanels")
|
@bgbitmap = AnimatedBitmap.new("Graphics/Pictures/loadPanels")
|
||||||
@@ -98,7 +98,7 @@ end
|
|||||||
#
|
#
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
class PokemonLoad_Scene
|
class PokemonLoad_Scene
|
||||||
def pbStartScene(commands, show_continue, trainer, frame_count, map_id)
|
def pbStartScene(commands, show_continue, trainer, frame_count, stats, map_id)
|
||||||
@commands = commands
|
@commands = commands
|
||||||
@sprites = {}
|
@sprites = {}
|
||||||
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
|
||||||
@@ -107,7 +107,7 @@ class PokemonLoad_Scene
|
|||||||
y = 16*2
|
y = 16*2
|
||||||
for i in 0...commands.length
|
for i in 0...commands.length
|
||||||
@sprites["panel#{i}"] = PokemonLoadPanel.new(i, commands[i],
|
@sprites["panel#{i}"] = PokemonLoadPanel.new(i, commands[i],
|
||||||
(show_continue) ? (i==0) : false,trainer,frame_count,map_id,@viewport)
|
(show_continue) ? (i == 0) : false, trainer, frame_count, stats, map_id, @viewport)
|
||||||
@sprites["panel#{i}"].x = 24*2
|
@sprites["panel#{i}"].x = 24*2
|
||||||
@sprites["panel#{i}"].y = y
|
@sprites["panel#{i}"].y = y
|
||||||
@sprites["panel#{i}"].pbRefresh
|
@sprites["panel#{i}"].pbRefresh
|
||||||
@@ -297,7 +297,7 @@ class PokemonLoadScreen
|
|||||||
commands[cmd_quit = commands.length] = _INTL('Quit Game')
|
commands[cmd_quit = commands.length] = _INTL('Quit Game')
|
||||||
map_id = show_continue ? @save_data[:map_factory].map.map_id : 0
|
map_id = show_continue ? @save_data[:map_factory].map.map_id : 0
|
||||||
@scene.pbStartScene(commands, show_continue, @save_data[:player],
|
@scene.pbStartScene(commands, show_continue, @save_data[:player],
|
||||||
@save_data[:frame_count] || 0, map_id)
|
@save_data[:frame_count] || 0, @save_data[:stats], map_id)
|
||||||
@scene.pbSetParty(@save_data[:player]) if show_continue
|
@scene.pbSetParty(@save_data[:player]) if show_continue
|
||||||
@scene.pbStartScene2
|
@scene.pbStartScene2
|
||||||
loop do
|
loop do
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class PokemonSave_Scene
|
|||||||
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
|
@viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
|
||||||
@viewport.z=99999
|
@viewport.z=99999
|
||||||
@sprites={}
|
@sprites={}
|
||||||
totalsec = Graphics.frame_count / Graphics.frame_rate
|
totalsec = $stats.play_time.to_i
|
||||||
hour = totalsec / 60 / 60
|
hour = totalsec / 60 / 60
|
||||||
min = totalsec / 60 % 60
|
min = totalsec / 60 % 60
|
||||||
mapname=$game_map.name
|
mapname=$game_map.name
|
||||||
|
|||||||
@@ -587,6 +587,8 @@ class PokemonMartScreen
|
|||||||
end
|
end
|
||||||
pbDisplayPaused(_INTL("You have no more room in the Bag."))
|
pbDisplayPaused(_INTL("You have no more room in the Bag."))
|
||||||
else
|
else
|
||||||
|
$stats.money_spent_at_marts += price
|
||||||
|
$stats.mart_items_bought += quantity
|
||||||
@adapter.setMoney(@adapter.getMoney-price)
|
@adapter.setMoney(@adapter.getMoney-price)
|
||||||
@stock.delete_if { |item| GameData::Item.get(item).is_important? && $bag.has?(item) }
|
@stock.delete_if { |item| GameData::Item.get(item).is_important? && $bag.has?(item) }
|
||||||
pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") }
|
pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") }
|
||||||
@@ -597,6 +599,7 @@ class PokemonMartScreen
|
|||||||
break if !@adapter.addItem(:PREMIERBALL)
|
break if !@adapter.addItem(:PREMIERBALL)
|
||||||
premier_balls_added += 1
|
premier_balls_added += 1
|
||||||
end
|
end
|
||||||
|
$stats.premier_balls_earned += premier_balls_added
|
||||||
if premier_balls_added > 1
|
if premier_balls_added > 1
|
||||||
pbDisplayPaused(_INTL("I'll throw in some {1}, too.", GameData::Item.get(:PREMIERBALL).name_plural))
|
pbDisplayPaused(_INTL("I'll throw in some {1}, too.", GameData::Item.get(:PREMIERBALL).name_plural))
|
||||||
elsif premier_balls_added > 0
|
elsif premier_balls_added > 0
|
||||||
@@ -604,6 +607,7 @@ class PokemonMartScreen
|
|||||||
end
|
end
|
||||||
elsif !Settings::MORE_BONUS_PREMIER_BALLS && GameData::Item.get(item) == :POKEBALL
|
elsif !Settings::MORE_BONUS_PREMIER_BALLS && GameData::Item.get(item) == :POKEBALL
|
||||||
if @adapter.addItem(GameData::Item.get(:PREMIERBALL))
|
if @adapter.addItem(GameData::Item.get(:PREMIERBALL))
|
||||||
|
$stats.premier_balls_earned += 1
|
||||||
pbDisplayPaused(_INTL("I'll throw in a Premier Ball, too."))
|
pbDisplayPaused(_INTL("I'll throw in a Premier Ball, too."))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -638,7 +642,9 @@ class PokemonMartScreen
|
|||||||
price/=2
|
price/=2
|
||||||
price*=qty
|
price*=qty
|
||||||
if pbConfirm(_INTL("I can pay ${1}. Would that be OK?",price.to_s_formatted))
|
if pbConfirm(_INTL("I can pay ${1}. Would that be OK?",price.to_s_formatted))
|
||||||
|
old_money = @adapter.getMoney
|
||||||
@adapter.setMoney(@adapter.getMoney+price)
|
@adapter.setMoney(@adapter.getMoney+price)
|
||||||
|
$stats.money_earned_at_marts += @adapter.getMoney - old_money
|
||||||
qty.times do
|
qty.times do
|
||||||
@adapter.removeItem(item)
|
@adapter.removeItem(item)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ class MoveRelearnerScreen
|
|||||||
if move
|
if move
|
||||||
if @scene.pbConfirm(_INTL("Teach {1}?", GameData::Move.get(move).name))
|
if @scene.pbConfirm(_INTL("Teach {1}?", GameData::Move.get(move).name))
|
||||||
if pbLearnMove(pkmn, move)
|
if pbLearnMove(pkmn, move)
|
||||||
|
$stats.moves_taught_by_reminder += 1
|
||||||
@scene.pbEndScene
|
@scene.pbEndScene
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -361,7 +361,13 @@ class SlotMachineScene
|
|||||||
end
|
end
|
||||||
frame = (frame+1)%(Graphics.frame_rate*4)
|
frame = (frame+1)%(Graphics.frame_rate*4)
|
||||||
end
|
end
|
||||||
|
old_coins = $player.coins
|
||||||
$player.coins = @sprites["credit"].score
|
$player.coins = @sprites["credit"].score
|
||||||
|
if $player.coins > old_coins
|
||||||
|
$stats.coins_won += $player.coins - old_coins
|
||||||
|
elsif $player.coins < old_coins
|
||||||
|
$stats.coins_lost += old_coins - $player.coins
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def pbEndScene
|
def pbEndScene
|
||||||
|
|||||||
@@ -370,7 +370,9 @@ class VoltorbFlip
|
|||||||
# Update level text
|
# Update level text
|
||||||
@sprites["level"].bitmap.clear
|
@sprites["level"].bitmap.clear
|
||||||
pbDrawShadowText(@sprites["level"].bitmap,8,150,118,28,_INTL("Level {1}",@level.to_s),Color.new(60,60,60),Color.new(150,190,170),1)
|
pbDrawShadowText(@sprites["level"].bitmap,8,150,118,28,_INTL("Level {1}",@level.to_s),Color.new(60,60,60),Color.new(150,190,170),1)
|
||||||
|
old_coins = $player.coins
|
||||||
$player.coins+=@points
|
$player.coins+=@points
|
||||||
|
$stats.coins_won += $player.coins - old_coins if $player.coins > old_coins
|
||||||
@points=0
|
@points=0
|
||||||
pbUpdateCoins
|
pbUpdateCoins
|
||||||
@sprites["curtain"].opacity=0
|
@sprites["curtain"].opacity=0
|
||||||
@@ -414,7 +416,9 @@ class VoltorbFlip
|
|||||||
end
|
end
|
||||||
elsif pbConfirmMessage(_INTL("If you quit now, you will recieve {1} Coin(s). Will you quit?",@points.to_s_formatted))
|
elsif pbConfirmMessage(_INTL("If you quit now, you will recieve {1} Coin(s). Will you quit?",@points.to_s_formatted))
|
||||||
pbMessage(_INTL("{1} received {2} Coin(s)!",$player.name,@points.to_s_formatted))
|
pbMessage(_INTL("{1} received {2} Coin(s)!",$player.name,@points.to_s_formatted))
|
||||||
|
old_coins = $player.coins
|
||||||
$player.coins+=@points
|
$player.coins+=@points
|
||||||
|
$stats.coins_won += $player.coins - old_coins if $player.coins > old_coins
|
||||||
@points=0
|
@points=0
|
||||||
pbUpdateCoins
|
pbUpdateCoins
|
||||||
@sprites["curtain"].opacity=0
|
@sprites["curtain"].opacity=0
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
class SafariState
|
class SafariState
|
||||||
attr_accessor :ballcount
|
attr_accessor :ballcount
|
||||||
|
attr_accessor :captures
|
||||||
attr_accessor :decision
|
attr_accessor :decision
|
||||||
attr_accessor :steps
|
attr_accessor :steps
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@start = nil
|
@start = nil
|
||||||
@ballcount = 0
|
@ballcount = 0
|
||||||
|
@captures = 0
|
||||||
@inProgress = false
|
@inProgress = false
|
||||||
@steps = 0
|
@steps = 0
|
||||||
@decision = 0
|
@decision = 0
|
||||||
@@ -43,6 +45,7 @@ class SafariState
|
|||||||
def pbEnd
|
def pbEnd
|
||||||
@start = nil
|
@start = nil
|
||||||
@ballcount = 0
|
@ballcount = 0
|
||||||
|
@captures = 0
|
||||||
@inProgress = false
|
@inProgress = false
|
||||||
@steps = 0
|
@steps = 0
|
||||||
@decision = 0
|
@decision = 0
|
||||||
@@ -130,6 +133,11 @@ def pbSafariBattle(species,level)
|
|||||||
# 2 - Player ran out of Safari Balls
|
# 2 - Player ran out of Safari Balls
|
||||||
# 3 - Player or wild Pokémon ran from battle, or player forfeited the match
|
# 3 - Player or wild Pokémon ran from battle, or player forfeited the match
|
||||||
# 4 - Wild Pokémon was caught
|
# 4 - Wild Pokémon was caught
|
||||||
|
if decision == 4
|
||||||
|
$stats.safari_pokemon_caught += 1
|
||||||
|
pbSafariState.captures += 1
|
||||||
|
$stats.most_captures_per_safari_game = [$stats.most_captures_per_safari_game, pbSafariState.captures].max
|
||||||
|
end
|
||||||
pbSet(1,decision)
|
pbSet(1,decision)
|
||||||
# Used by the Poké Radar to update/break the chain
|
# Used by the Poké Radar to update/break the chain
|
||||||
Events.onWildBattleEnd.trigger(nil,species,level,decision)
|
Events.onWildBattleEnd.trigger(nil,species,level,decision)
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ class BugContestState
|
|||||||
$player.party=[chosenpkmn]
|
$player.party=[chosenpkmn]
|
||||||
@decision=0
|
@decision=0
|
||||||
@ended=false
|
@ended=false
|
||||||
|
$stats.bug_contest_count += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
def place
|
def place
|
||||||
@@ -210,6 +211,7 @@ class BugContestState
|
|||||||
else
|
else
|
||||||
@ended=false
|
@ended=false
|
||||||
end
|
end
|
||||||
|
$stats.bug_contest_wins += 1 if place == 0
|
||||||
@lastPokemon=nil
|
@lastPokemon=nil
|
||||||
@otherparty=[]
|
@otherparty=[]
|
||||||
@reception=[]
|
@reception=[]
|
||||||
|
|||||||
@@ -452,6 +452,8 @@ def pbMoveTutorChoose(move,movelist=nil,bymachine=false,oneusemachine=false)
|
|||||||
pbMessage(_INTL("{1} can't learn {2}.",pokemon.name,movename)) { screen.pbUpdate }
|
pbMessage(_INTL("{1} can't learn {2}.",pokemon.name,movename)) { screen.pbUpdate }
|
||||||
else
|
else
|
||||||
if pbLearnMove(pokemon,move,false,bymachine) { screen.pbUpdate }
|
if pbLearnMove(pokemon,move,false,bymachine) { screen.pbUpdate }
|
||||||
|
$stats.moves_taught_by_item += 1 if bymachine
|
||||||
|
$stats.moves_taught_by_tutor += 1 if !bymachine
|
||||||
pokemon.add_first_move(move) if oneusemachine
|
pokemon.add_first_move(move) if oneusemachine
|
||||||
ret = true
|
ret = true
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -632,15 +632,19 @@ DebugMenuCommands.register("fillboxes", {
|
|||||||
if f == 0
|
if f == 0
|
||||||
if species_data.single_gendered?
|
if species_data.single_gendered?
|
||||||
g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
|
g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
|
||||||
$player.pokedex.register(sp, g, f, false)
|
$player.pokedex.register(sp, g, f, 0, false)
|
||||||
|
$player.pokedex.register(sp, g, f, 1, false)
|
||||||
else # Both male and female
|
else # Both male and female
|
||||||
$player.pokedex.register(sp, 0, f, false)
|
$player.pokedex.register(sp, 0, f, 0, false)
|
||||||
$player.pokedex.register(sp, 1, f, false)
|
$player.pokedex.register(sp, 0, f, 1, false)
|
||||||
|
$player.pokedex.register(sp, 1, f, 0, false)
|
||||||
|
$player.pokedex.register(sp, 1, f, 1, false)
|
||||||
end
|
end
|
||||||
$player.pokedex.set_owned(sp, false)
|
$player.pokedex.set_owned(sp, false)
|
||||||
elsif species_data.real_form_name && !species_data.real_form_name.empty?
|
elsif species_data.real_form_name && !species_data.real_form_name.empty?
|
||||||
g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
|
g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
|
||||||
$player.pokedex.register(sp, g, f, false)
|
$player.pokedex.register(sp, g, f, 0, false)
|
||||||
|
$player.pokedex.register(sp, g, f, 1, false)
|
||||||
end
|
end
|
||||||
# Add Pokémon (if form 0, i.e. one of each species)
|
# Add Pokémon (if form 0, i.e. one of each species)
|
||||||
next if f != 0
|
next if f != 0
|
||||||
|
|||||||
@@ -888,6 +888,7 @@ PokemonDebugMenuCommands.register("setshininess", {
|
|||||||
pkmn.shiny = nil
|
pkmn.shiny = nil
|
||||||
pkmn.super_shiny = nil
|
pkmn.super_shiny = nil
|
||||||
end
|
end
|
||||||
|
$player.pokedex.register(pkmn) if !settingUpBattle
|
||||||
screen.pbRefreshSingle(pkmnid)
|
screen.pbRefreshSingle(pkmnid)
|
||||||
end
|
end
|
||||||
next false
|
next false
|
||||||
|
|||||||
Reference in New Issue
Block a user