mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-09 14:14:59 +00:00
new game plus
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -6,7 +6,7 @@
|
||||
module Settings
|
||||
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
|
||||
GAME_VERSION = '5.0.0'
|
||||
GAME_VERSION_NUMBER = "5.0.16 - beta"
|
||||
GAME_VERSION_NUMBER = "5.0.17 - beta"
|
||||
|
||||
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
|
||||
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
module Game
|
||||
# Initializes various global variables and loads the game data.
|
||||
def self.initialize
|
||||
$PokemonTemp = PokemonTemp.new
|
||||
$game_temp = Game_Temp.new
|
||||
$game_system = Game_System.new
|
||||
$data_animations = load_data('Data/Animations.rxdata')
|
||||
$data_tilesets = load_data('Data/Tilesets.rxdata')
|
||||
$PokemonTemp = PokemonTemp.new
|
||||
$game_temp = Game_Temp.new
|
||||
$game_system = Game_System.new
|
||||
$data_animations = load_data('Data/Animations.rxdata')
|
||||
$data_tilesets = load_data('Data/Tilesets.rxdata')
|
||||
$data_common_events = load_data('Data/CommonEvents.rxdata')
|
||||
$data_system = load_data('Data/System.rxdata')
|
||||
$data_system = load_data('Data/System.rxdata')
|
||||
pbLoadBattleAnimations
|
||||
GameData.load_all
|
||||
map_file = format('Data/Map%03d.rxdata', $data_system.start_map_id)
|
||||
@@ -36,9 +36,50 @@ module Game
|
||||
end
|
||||
end
|
||||
|
||||
#For new game plus - resets everything in boxes/party to level 5 and 1st stage
|
||||
def self.ngp_clean_pc_data(old_storage, old_party)
|
||||
new_storage = old_storage
|
||||
for pokemon in old_party
|
||||
new_storage.pbStoreCaught(pokemon)
|
||||
end
|
||||
|
||||
for box in new_storage.boxes
|
||||
for pokemon in box.pokemon
|
||||
if pokemon != nil
|
||||
if !pokemon.egg?
|
||||
pokemon.level = 5
|
||||
pokemon.species = GameData::Species.get(pokemon.species).get_baby_species(false)
|
||||
pokemon.reset_moves
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return new_storage
|
||||
end
|
||||
|
||||
#For new game plus - removes key items
|
||||
def self.ngp_clean_item_data(old_bag)
|
||||
new_storage = old_bag
|
||||
new_storage.clear
|
||||
|
||||
for pocket in old_bag.pockets
|
||||
for bagElement in pocket
|
||||
item_id = bagElement[0]
|
||||
item_qt = bagElement[1]
|
||||
item = GameData::Item.get(item_id)
|
||||
p item
|
||||
if !item.is_key_item? && !item.is_HM?
|
||||
new_storage.pbStoreItem(item, 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
return new_storage
|
||||
end
|
||||
|
||||
# Called when starting a new game. Initializes global variables
|
||||
# and transfers the player into the map scene.
|
||||
def self.start_new
|
||||
def self.start_new(ngp_bag = nil, ngp_storage = nil, ngp_trainer = nil)
|
||||
|
||||
if $game_map && $game_map.events
|
||||
$game_map.events.each_value { |event| event.clear_starting }
|
||||
end
|
||||
@@ -53,6 +94,13 @@ module Game
|
||||
$PokemonEncounters.setup($game_map.map_id)
|
||||
$game_map.autoplay
|
||||
$game_map.update
|
||||
#
|
||||
# if ngp_bag != nil
|
||||
# $PokemonBag = ngp_clean_item_data(ngp_bag)
|
||||
# end
|
||||
if ngp_storage != nil
|
||||
$PokemonStorage = ngp_clean_pc_data(ngp_storage, ngp_trainer.party)
|
||||
end
|
||||
end
|
||||
|
||||
# Loads the game from the given save data and starts the map scene.
|
||||
|
||||
@@ -110,8 +110,46 @@ module GameData
|
||||
end
|
||||
end
|
||||
|
||||
# Creates a battle-ready version of a trainer's data.
|
||||
# @return [Array] all information about a trainer in a usable form
|
||||
|
||||
def replaceSingleSpeciesModeIfApplicable(species)
|
||||
if $game_switches[SINGLE_POKEMON_MODE_SWITCH]
|
||||
if $game_switches[SINGLE_POKEMON_MODE_HEAD_SWITCH]
|
||||
return replaceFusionsHeadWithSpecies(species)
|
||||
elsif $game_switches[SINGLE_POKEMON_MODE_BODY_SWITCH]
|
||||
return replaceFusionsBodyWithSpecies(species)
|
||||
elsif $game_switches[SINGLE_POKEMON_MODE_RANDOM_SWITCH]
|
||||
if(rand(2) == 0)
|
||||
return replaceFusionsHeadWithSpecies(species)
|
||||
else
|
||||
return replaceFusionsBodyWithSpecies(species)
|
||||
end
|
||||
end
|
||||
end
|
||||
return species
|
||||
end
|
||||
|
||||
def replaceFusionsHeadWithSpecies(species)
|
||||
speciesId = getDexNumberForSpecies(species)
|
||||
if speciesId > NB_POKEMON
|
||||
bodyPoke = getBodyID(speciesId)
|
||||
headPoke = pbGet(SINGLE_POKEMON_MODE_VAR)
|
||||
newSpecies = bodyPoke*NB_POKEMON+headPoke
|
||||
return getPokemon(newSpecies)
|
||||
end
|
||||
return species
|
||||
end
|
||||
|
||||
def replaceFusionsBodyWithSpecies(species)
|
||||
speciesId = getDexNumberForSpecies(species)
|
||||
if speciesId > NB_POKEMON
|
||||
bodyPoke = pbGet(SINGLE_POKEMON_MODE_VAR)
|
||||
headPoke = getHeadID(species)
|
||||
newSpecies = bodyPoke*NB_POKEMON+headPoke
|
||||
return getPokemon(newSpecies)
|
||||
end
|
||||
return species
|
||||
end
|
||||
|
||||
def to_trainer
|
||||
placeholder_species = [Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES,
|
||||
Settings::VAR_1_PLACEHOLDER_SPECIES,
|
||||
@@ -140,12 +178,13 @@ module GameData
|
||||
if placeholder_species.include?(species)
|
||||
species = replace_species_with_placeholder(species)
|
||||
end
|
||||
species = replaceSingleSpeciesModeIfApplicable(species)
|
||||
if $game_switches[REVERSED_MODE]
|
||||
species = reverseFusionSpecies(species)
|
||||
end
|
||||
level = pkmn_data[:level]
|
||||
if $game_switches[GAME_DIFFICULTY_HARD]
|
||||
level = (level*Settings::HARD_MODE_LEVEL_MODIFIER).ceil
|
||||
level = (level * Settings::HARD_MODE_LEVEL_MODIFIER).ceil
|
||||
if level > Settings::MAXIMUM_LEVEL
|
||||
level = Settings::MAXIMUM_LEVEL
|
||||
end
|
||||
@@ -159,6 +198,7 @@ module GameData
|
||||
end
|
||||
####
|
||||
|
||||
|
||||
#trainer rematch infinite fusion edit
|
||||
if isRematch
|
||||
nbRematch = getNumberRematch(rematchId)
|
||||
|
||||
@@ -53,6 +53,7 @@ class PokeBattle_Battler
|
||||
end
|
||||
return if @fainted # Has already fainted properly
|
||||
@battle.pbDisplayBrief(_INTL("{1} fainted!",pbThis)) if showMessage
|
||||
updateSpirits()
|
||||
PBDebug.log("[Pokémon fainted] #{pbThis} (#{@index})") if !showMessage
|
||||
@battle.scene.pbFaintBattler(self)
|
||||
pbInitEffects(false)
|
||||
@@ -80,6 +81,15 @@ class PokeBattle_Battler
|
||||
@battle.pbEndPrimordialWeather
|
||||
end
|
||||
|
||||
def updateSpirits()
|
||||
if $PokemonBag.pbQuantity(:ODDKEYSTONE)>=1 && @pokemon.hasType?(:GHOST)
|
||||
nbSpirits = pbGet(ODDKEYSTONE_NB_VARIABLE)
|
||||
if nbSpirits < 108
|
||||
pbSet(ODDKEYSTONE_NB_VARIABLE,nbSpirits+1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
#=============================================================================
|
||||
# Move PP
|
||||
#=============================================================================
|
||||
|
||||
@@ -305,7 +305,7 @@ def pbDive
|
||||
move = :DIVE
|
||||
movefinder = $Trainer.get_pokemon_with_move(move)
|
||||
if !pbCheckHiddenMoveBadge(Settings::BADGE_FOR_DIVE, false) || (!$DEBUG && !movefinder)
|
||||
if $PokemonBag.pbQuantity(:SCUBAGEAR)>0
|
||||
if $PokemonBag.pbQuantity(:SCUBAGEAR)<=0
|
||||
pbMessage(_INTL("The sea is deep here. A Pokémon may be able to go underwater."))
|
||||
return false
|
||||
end
|
||||
@@ -343,10 +343,10 @@ def pbSurfacing
|
||||
return if !surface_map_id
|
||||
move = :DIVE
|
||||
movefinder = $Trainer.get_pokemon_with_move(move)
|
||||
if !pbCheckHiddenMoveBadge(Settings::BADGE_FOR_DIVE, false) || (!$DEBUG && !movefinder)
|
||||
pbMessage(_INTL("Light is filtering down from above. A Pokémon may be able to surface here."))
|
||||
return false
|
||||
end
|
||||
# if !pbCheckHiddenMoveBadge(Settings::BADGE_FOR_DIVE, false) || (!$DEBUG && !movefinder)
|
||||
# pbMessage(_INTL("Light is filtering down from above. A Pokémon may be able to surface here."))
|
||||
# return false
|
||||
# end
|
||||
if pbConfirmMessage(_INTL("Light is filtering down from above. Would you like to use Dive?"))
|
||||
speciesname = (movefinder) ? movefinder.name : $Trainer.name
|
||||
pbMessage(_INTL("{1} used {2}!", speciesname, GameData::Move.get(move).name))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class PokemonBox
|
||||
attr_reader :pokemon
|
||||
attr_accessor :pokemon
|
||||
attr_accessor :name
|
||||
attr_accessor :background
|
||||
|
||||
|
||||
@@ -30,7 +30,9 @@ class Player < Trainer
|
||||
attr_accessor :mystery_gift_unlocked
|
||||
# @return [Array<Array>] downloaded Mystery Gift data
|
||||
attr_accessor :mystery_gifts
|
||||
|
||||
attr_accessor :beat_league
|
||||
attr_accessor :new_game_plus_unlocked
|
||||
attr_accessor :new_game_plus
|
||||
def trainer_type
|
||||
if @trainer_type.is_a?(Integer)
|
||||
@trainer_type = GameData::Metadata.get_player(@character_ID || 0)[0]
|
||||
@@ -52,6 +54,13 @@ class Player < Trainer
|
||||
@coins = value.clamp(0, Settings::MAX_COINS)
|
||||
end
|
||||
|
||||
|
||||
def beat_league=(value)
|
||||
@beat_league = value
|
||||
end
|
||||
def new_game_plus_unlocked=(value)
|
||||
@new_game_plus_unlocked = value
|
||||
end
|
||||
# Sets the player's Battle Points amount. It can not exceed
|
||||
# {Settings::MAX_BATTLE_POINTS}.
|
||||
# @param value [Integer] new Battle Points value
|
||||
@@ -72,6 +81,10 @@ class Player < Trainer
|
||||
return @badges.count { |badge| badge == true }
|
||||
end
|
||||
|
||||
|
||||
def new_game_plus=(value)
|
||||
@new_game_plus = value
|
||||
end
|
||||
#=============================================================================
|
||||
|
||||
# (see Pokedex#seen?)
|
||||
@@ -104,5 +117,8 @@ class Player < Trainer
|
||||
@seen_storage_creator = false
|
||||
@mystery_gift_unlocked = false
|
||||
@mystery_gifts = []
|
||||
@beat_league = false
|
||||
@new_game_plus_unlocked = false
|
||||
@new_game_plus = false
|
||||
end
|
||||
end
|
||||
|
||||
@@ -284,6 +284,7 @@ class PokemonLoadScreen
|
||||
cmd_debug = -1
|
||||
cmd_quit = -1
|
||||
show_continue = !@save_data.empty?
|
||||
new_game_plus = @save_data[:player].new_game_plus_unlocked
|
||||
if show_continue
|
||||
commands[cmd_continue = commands.length] = _INTL('Continue')
|
||||
if @save_data[:player].mystery_gift_unlocked
|
||||
@@ -291,6 +292,9 @@ class PokemonLoadScreen
|
||||
end
|
||||
end
|
||||
commands[cmd_new_game = commands.length] = _INTL('New Game')
|
||||
if new_game_plus
|
||||
commands[cmd_new_game_plus = commands.length] = _INTL('New Game +')
|
||||
end
|
||||
commands[cmd_options = commands.length] = _INTL('Options')
|
||||
commands[cmd_language = commands.length] = _INTL('Language') if Settings::LANGUAGES.length >= 2
|
||||
commands[cmd_debug = commands.length] = _INTL('Debug') if $DEBUG
|
||||
@@ -312,6 +316,11 @@ class PokemonLoadScreen
|
||||
@scene.pbEndScene
|
||||
Game.start_new
|
||||
return
|
||||
when cmd_new_game_plus
|
||||
@scene.pbEndScene
|
||||
Game.start_new(@save_data[:bag],@save_data[:storage_system],@save_data[:player])
|
||||
@save_data[:player].new_game_plus_unlocked=true
|
||||
return
|
||||
when cmd_mystery_gift
|
||||
pbFadeOutIn { pbDownloadMysteryGift(@save_data[:player]) }
|
||||
when cmd_options
|
||||
|
||||
@@ -128,6 +128,16 @@ def pbChooseSpeciesList(default = nil)
|
||||
return GameData::Species.get(dexNum)
|
||||
end
|
||||
|
||||
def pbChooseSpeciesTextList(default = nil)
|
||||
commands = []
|
||||
for i in 1..NB_POKEMON
|
||||
species = GameData::Species.get(i)
|
||||
commands.push([species.id_number, species.real_name, species.id])
|
||||
end
|
||||
return pbChooseList(commands, default, nil, -1)
|
||||
end
|
||||
|
||||
|
||||
def pbChooseSpeciesFormList(default = nil)
|
||||
commands = []
|
||||
GameData::Species.each do |s|
|
||||
|
||||
@@ -734,7 +734,7 @@ module Compiler
|
||||
end
|
||||
|
||||
def main
|
||||
#return
|
||||
return
|
||||
return if !$DEBUG
|
||||
begin
|
||||
dataFiles = [
|
||||
|
||||
@@ -48,4 +48,11 @@ DIRECTION_DOWN = 2
|
||||
DIRECTION_UP = 8
|
||||
|
||||
RACE_BIKE = 984
|
||||
IS_REMATCH_SWITCH=200
|
||||
IS_REMATCH_SWITCH=200
|
||||
SINGLE_POKEMON_MODE_SWITCH=790
|
||||
SINGLE_POKEMON_MODE_VAR=251
|
||||
SINGLE_POKEMON_MODE_HEAD_SWITCH=791
|
||||
SINGLE_POKEMON_MODE_BODY_SWITCH=792
|
||||
SINGLE_POKEMON_MODE_RANDOM_SWITCH=793
|
||||
|
||||
ODDKEYSTONE_NB_VARIABLE=252
|
||||
@@ -373,6 +373,29 @@ ItemHandlers::UseFromBag.add(:DEBUGGER, proc { |item|
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
ItemHandlers::UseFromBag.add(:ODDKEYSTONE, proc { |item|
|
||||
TOTAL_SPIRITS_NEEDED = 108
|
||||
nbSpirits = pbGet(ODDKEYSTONE_NB_VARIABLE)
|
||||
if nbSpirits == 107
|
||||
Kernel.pbMessage(_INTL("The Odd Keystone appears to be moving on its own."))
|
||||
Kernel.pbMessage(_INTL("Voices can be heard whispering from it..."))
|
||||
Kernel.pbMessage(_INTL("Just... one... more..."))
|
||||
elsif nbSpirits < TOTAL_SPIRITS_NEEDED
|
||||
nbNeeded = TOTAL_SPIRITS_NEEDED-nbSpirits
|
||||
Kernel.pbMessage(_INTL("Voices can be heard whispering from the Odd Keystone..."))
|
||||
Kernel.pbMessage(_INTL("Bring... us... {1}... spirits",nbNeeded.to_s))
|
||||
else
|
||||
Kernel.pbMessage(_INTL("The Odd Keystone appears to be moving on its own."))
|
||||
Kernel.pbMessage(_INTL("It seems as if some poweful energy is trying to escape from it."))
|
||||
if (Kernel.pbMessage("Let it out?", ["No","Yes"], 0)) == 1
|
||||
pbWildBattle(:SPIRITOMB,27)
|
||||
pbSet(ODDKEYSTONE_NB_VARIABLE,0)
|
||||
end
|
||||
next 1
|
||||
end
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.add(:MAGICBOOTS, proc { |item|
|
||||
if $DEBUG
|
||||
if Kernel.pbConfirmMessageSerious(_INTL("Take off the Magic Boots?"))
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Data/items.dat
BIN
Data/items.dat
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user