More item randomization options

This commit is contained in:
infinitefusion
2022-09-23 23:15:38 -04:00
parent 77c3220d10
commit efd97dc9fe
14 changed files with 505 additions and 278 deletions

View File

@@ -25,6 +25,10 @@ Frogman
The story and dialogues were based off Pokémon Red and Blue, as well as The story and dialogues were based off Pokémon Red and Blue, as well as
Pokémon Gold and Silver. Both games are made by Game Freak. Pokémon Gold and Silver. Both games are made by Game Freak.
#################################
Modern Mode by Tomate & Blaquaza
########################################################### ###########################################################
### Fusion Sprites ### ### Fusion Sprites ###
########################################################## ##########################################################
@@ -149,7 +153,6 @@ kakakiamekerasakia#3792, ItsThatSimple#6320, Gelos#9875, GalaxyDJx#0001, Fullmet
Evil Mailman#0604, elpano2#9588, Cenna#6226, Catdesu#0845, CaseyAether#2205, carni#0124, Buttlu#7240 Evil Mailman#0604, elpano2#9588, Cenna#6226, Catdesu#0845, CaseyAether#2205, carni#0124, Buttlu#7240
Triple fusion sprites Triple fusion sprites
######################## ########################
Legendary birds fusion sprite by Universez Legendary birds fusion sprite by Universez

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -786,7 +786,8 @@ end
# Picking up an item found on the ground # Picking up an item found on the ground
#=============================================================================== #===============================================================================
def pbItemBall(item, quantity = 1, item_name = "", canRandom = true) def pbItemBall(item, quantity = 1, item_name = "", canRandom = true)
if canRandom canRandom = false if !$game_switches[SWITCH_RANDOM_ITEMS_GENERAL]
if canRandom && ($game_switches[SWITCH_RANDOM_FOUND_ITEMS] || $game_switches[SWITCH_RANDOM_FOUND_TMS])
item = pbGetRandomItem(item) if canRandom #fait rien si pas activé item = pbGetRandomItem(item) if canRandom #fait rien si pas activé
else else
item = GameData::Item.get(item) item = GameData::Item.get(item)
@@ -833,9 +834,23 @@ end
#=============================================================================== #===============================================================================
def pbReceiveItem(item, quantity = 1, item_name = "", music = nil) def pbReceiveItem(item, quantity = 1, item_name = "", music = nil, canRandom=true)
#item_name -> pour donner un autre nom à l'item. Pas encore réimplémenté et surtout là pour éviter que ça plante quand des events essaient de le faire #item_name -> pour donner un autre nom à l'item. Pas encore réimplémenté et surtout là pour éviter que ça plante quand des events essaient de le faire
canRandom = false if !$game_switches[SWITCH_RANDOM_ITEMS_GENERAL]
if canRandom && ($game_switches[SWITCH_RANDOM_GIVEN_ITEMS] || $game_switches[SWITCH_RANDOM_GIVEN_TMS])
item = pbGetRandomItem(item) if canRandom #fait rien si pas activé
else
item = GameData::Item.get(item) item = GameData::Item.get(item)
end
# item = GameData::Item.get(item)
# if $game_switches[SWITCH_RANDOM_ITEMS] && $game_switches[SWITCH_RANDOM_GIVEN_ITEMS]
# item = pbGetRandomItem(item.id)
# end
#
# if $game_switches[SWITCH_RANDOM_ITEMS] && $game_switches[SWITCH_RANDOM_GIVEN_TMS]
# item = getRandomGivenTM(item)
# end
return false if !item || quantity < 1 return false if !item || quantity < 1
itemname = (quantity > 1) ? item.name_plural : item.name itemname = (quantity > 1) ? item.name_plural : item.name
pocket = item.pocket pocket = item.pocket

View File

@@ -648,10 +648,30 @@ class PokemonMartScreen
end end
end end
def replaceShopStockWithRandomized(stock)
if $PokemonGlobal.randomItemsHash != nil
newStock = []
for item in stock
newItem =$PokemonGlobal.randomItemsHash[item]
if newItem != nil && GameData::Item.get(newItem).price >0
newStock << newItem
else
newStock << item
end
end
return newStock
end
return stock
end
#=============================================================================== #===============================================================================
# #
#=============================================================================== #===============================================================================
def pbPokemonMart(stock,speech=nil,cantsell=false) def pbPokemonMart(stock,speech=nil,cantsell=false)
if $game_switches[SWITCH_RANDOM_ITEMS] && $game_switches[SWITCH_RANDOM_SHOP_ITEMS]
stock = replaceShopStockWithRandomized(stock)
end
for i in 0...stock.length for i in 0...stock.length
stock[i] = GameData::Item.get(stock[i]).id stock[i] = GameData::Item.get(stock[i]).id
stock[i] = nil if GameData::Item.get(stock[i]).is_important? && $PokemonBag.pbHasItem?(stock[i]) stock[i] = nil if GameData::Item.get(stock[i]).is_important? && $PokemonBag.pbHasItem?(stock[i])

View File

@@ -9,6 +9,8 @@ class RandomizerOptionsScene < PokemonOption_Scene
@openTrainerOptions = false @openTrainerOptions = false
@openWildOptions = false @openWildOptions = false
@openGymOptions = false @openGymOptions = false
@openItemOptions = false
end end
def getDefaultDescription def getDefaultDescription
@@ -26,14 +28,19 @@ class RandomizerOptionsScene < PokemonOption_Scene
def pbGetOptions(inloadscreen = false) def pbGetOptions(inloadscreen = false)
options = [ options = [
EnumOption.new(_INTL("Starters"), [_INTL("On"), _INTL("Off")], EnumOption.new(_INTL("Pokémon"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_STARTERS] ? 0 : 1 }, proc {
$game_switches[SWITCH_RANDOM_WILD] ? 0 : 1
},
proc { |value| proc { |value|
$game_switches[SWITCH_RANDOM_STARTERS] = value == 0 if !$game_switches[SWITCH_RANDOM_WILD] && value == 0
}, "Randomize the selection of starters to choose from at the start of the game" @openWildOptions = true
openWildPokemonOptionsMenu()
end
$game_switches[SWITCH_RANDOM_WILD] = value == 0
}, "Select the randomizer options for Pokémon"
), ),
EnumOption.new(_INTL("NPC Trainers"), [_INTL("On"), _INTL("Off")],
EnumOption.new(_INTL("Trainers"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_TRAINERS] ? 0 : 1 }, proc { $game_switches[SWITCH_RANDOM_TRAINERS] ? 0 : 1 },
proc { |value| proc { |value|
if !$game_switches[SWITCH_RANDOM_TRAINERS] && value == 0 if !$game_switches[SWITCH_RANDOM_TRAINERS] && value == 0
@@ -41,7 +48,7 @@ class RandomizerOptionsScene < PokemonOption_Scene
openTrainerOptionsMenu() openTrainerOptionsMenu()
end end
$game_switches[SWITCH_RANDOM_TRAINERS] = value == 0 $game_switches[SWITCH_RANDOM_TRAINERS] = value == 0
}, "Select the randomizer options for regular trainers" }, "Select the randomizer options for trainers"
), ),
EnumOption.new(_INTL("Gym trainers"), [_INTL("On"), _INTL("Off")], EnumOption.new(_INTL("Gym trainers"), [_INTL("On"), _INTL("Off")],
@@ -55,30 +62,17 @@ class RandomizerOptionsScene < PokemonOption_Scene
}, "Limit gym trainers to a single type" }, "Limit gym trainers to a single type"
), ),
EnumOption.new(_INTL("Wild Pokémon"), [_INTL("On"), _INTL("Off")],
proc {
$game_switches[SWITCH_RANDOM_WILD] ? 0 : 1
},
proc { |value|
if !$game_switches[SWITCH_RANDOM_WILD] && value == 0
@openWildOptions = true
openWildPokemonOptionsMenu()
end
$game_switches[SWITCH_RANDOM_WILD] = value == 0
}, "Select the randomizer options for wild Pokémon"
),
EnumOption.new(_INTL("Items"), [_INTL("On"), _INTL("Off")], EnumOption.new(_INTL("Items"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_ITEMS] ? 0 : 1 }, proc { $game_switches[SWITCH_RANDOM_ITEMS_GENERAL] ? 0 : 1 },
proc { |value| proc { |value|
$game_switches[SWITCH_RANDOM_ITEMS] = value == 0 if !$game_switches[SWITCH_RANDOM_ITEMS_GENERAL] && value == 0
}, "Randomize the items picked up on the ground" @openItemOptions = true
), openItemOptionsMenu()
EnumOption.new(_INTL("TMs"), [_INTL("On"), _INTL("Off")], end
proc { $game_switches[SWITCH_RANDOM_TMS] ? 0 : 1 }, $game_switches[SWITCH_RANDOM_ITEMS_GENERAL] = value == 0
proc { |value| }, "Select the randomizer options for items"
$game_switches[SWITCH_RANDOM_TMS] = value == 0
}, "Randomize the TMs picked up on the ground"
), ),
] ]
return options return options
end end
@@ -93,6 +87,16 @@ class RandomizerOptionsScene < PokemonOption_Scene
@openGymOptions = false @openGymOptions = false
end end
def openItemOptionsMenu()
return if !@openItemOptions
pbFadeOutIn {
scene = RandomizerItemOptionsScene.new
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
}
@openItemOptions = false
end
def openTrainerOptionsMenu() def openTrainerOptionsMenu()
return if !@openTrainerOptions return if !@openTrainerOptions
pbFadeOutIn { pbFadeOutIn {
@@ -117,7 +121,6 @@ end
class RandomizerTrainerOptionsScene < PokemonOption_Scene class RandomizerTrainerOptionsScene < PokemonOption_Scene
RANDOM_TEAMS_CUSTOM_SPRITES = 600 RANDOM_TEAMS_CUSTOM_SPRITES = 600
RANDOM_HELD_ITEMS = 843
RANDOM_GYM_TYPES = 921 RANDOM_GYM_TYPES = 921
def initialize def initialize
@@ -152,12 +155,6 @@ class RandomizerTrainerOptionsScene < PokemonOption_Scene
$game_switches[RANDOM_TEAMS_CUSTOM_SPRITES] = value == 0 $game_switches[RANDOM_TEAMS_CUSTOM_SPRITES] = value == 0
}, },
"Use only Pokémon that have custom sprites in trainer teams" "Use only Pokémon that have custom sprites in trainer teams"
),
EnumOption.new(_INTL("Trainer Held items"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[RANDOM_HELD_ITEMS] ? 0 : 1 },
proc { |value|
$game_switches[RANDOM_HELD_ITEMS] = value == 0
}, "Give random held items to all trainers"
) )
] ]
return options return options
@@ -219,6 +216,12 @@ class RandomizerWildPokemonOptionsScene < PokemonOption_Scene
"Randomizes the encounters in each route individually" "Randomizes the encounters in each route individually"
] ]
), ),
EnumOption.new(_INTL("Starters"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_STARTERS] ? 0 : 1 },
proc { |value|
$game_switches[SWITCH_RANDOM_STARTERS] = value == 0
}, "Randomize the selection of starters to choose from at the start of the game"
),
EnumOption.new(_INTL("Static encounters"), [_INTL("On"), _INTL("Off")], EnumOption.new(_INTL("Static encounters"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[RANDOM_STATIC] ? 0 : 1 }, proc { $game_switches[RANDOM_STATIC] ? 0 : 1 },
proc { |value| proc { |value|
@@ -303,3 +306,105 @@ class RandomizerGymOptionsScene < PokemonOption_Scene
return options return options
end end
end end
class RandomizerItemOptionsScene < PokemonOption_Scene
RANDOM_HELD_ITEMS = 843
def initialize
@changedColor = false
end
def pbStartScene(inloadscreen = false)
super
@sprites["option"].nameBaseColor = Color.new(35, 130, 200)
@sprites["option"].nameShadowColor = Color.new(20, 75, 115)
@changedColor = true
for i in 0...@PokemonOptions.length
@sprites["option"][i] = (@PokemonOptions[i].get || 0)
end
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
_INTL("Randomizer settings: Items"), 0, 0, Graphics.width, 64, @viewport)
@sprites["textbox"].text = _INTL("Set the randomizer settings for items")
pbFadeInAndShow(@sprites) { pbUpdate }
end
def pbFadeInAndShow(sprites, visiblesprites = nil)
return if !@changedColor
super
end
def pbGetOptions(inloadscreen = false)
options = [
EnumOption.new(_INTL("Type"), [_INTL("Mapped"), _INTL("Dynamic")],
proc {
if $game_switches[SWITCH_RANDOM_ITEMS_DYNAMIC]
1
else
0
end
},
proc { |value|
if value == 0
$game_switches[SWITCH_RANDOM_ITEMS_MAPPED] = true
$game_switches[SWITCH_RANDOM_ITEMS_DYNAMIC] = false
else
value == 1
$game_switches[SWITCH_RANDOM_ITEMS_MAPPED] = false
$game_switches[SWITCH_RANDOM_ITEMS_DYNAMIC] = true
end
},
# proc { $game_switches[SWITCH_RANDOM_ITEMS_FULL] ? 0 : 1 },
# proc { |value|
# $game_switches[SWITCH_RANDOM_ITEMS_MAPPED] = value == 0
# $game_switches[SWITCH_RANDOM_ITEMS_FULL] = value == 1
# }, ["Random items are decided at the start of the game", "Random items are decided as you obtain them"]
),
EnumOption.new(_INTL("Found items"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_FOUND_ITEMS] ? 0 : 1 },
proc { |value|
$game_switches[SWITCH_RANDOM_FOUND_ITEMS] = value == 0
$game_switches[SWITCH_RANDOM_ITEMS] = $game_switches[SWITCH_RANDOM_FOUND_ITEMS] || $game_switches[SWITCH_RANDOM_GIVEN_ITEMS]
}, "Randomize the items picked up on the ground"
),
EnumOption.new(_INTL("Found TMs"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_FOUND_TMS] ? 0 : 1 },
proc { |value|
$game_switches[SWITCH_RANDOM_FOUND_TMS] = value == 0
$game_switches[SWITCH_RANDOM_TMS] = $game_switches[SWITCH_RANDOM_FOUND_TMS] || $game_switches[SWITCH_RANDOM_GIVEN_TMS]
}, "Randomize the TMs picked up on the ground"
),
EnumOption.new(_INTL("Given items"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_GIVEN_ITEMS] ? 0 : 1 },
proc { |value|
$game_switches[SWITCH_RANDOM_GIVEN_ITEMS] = value == 0
$game_switches[SWITCH_RANDOM_ITEMS] = $game_switches[SWITCH_RANDOM_FOUND_ITEMS] || $game_switches[SWITCH_RANDOM_GIVEN_ITEMS]
}, "Randomize the items given by NPCs (might make some quests impossible to complete)"
),
EnumOption.new(_INTL("Given TMs"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_GIVEN_TMS] ? 0 : 1 },
proc { |value|
$game_switches[SWITCH_RANDOM_GIVEN_TMS] = value == 0
$game_switches[SWITCH_RANDOM_TMS] = $game_switches[SWITCH_RANDOM_FOUND_TMS] || $game_switches[SWITCH_RANDOM_GIVEN_TMS]
}, "Randomize the TMs given by NPCs"
),
EnumOption.new(_INTL("Shops items"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[SWITCH_RANDOM_SHOP_ITEMS] ? 0 : 1 },
proc { |value|
$game_switches[SWITCH_RANDOM_SHOP_ITEMS] = value == 0
}, "Randomizes the items available in shops (always mapped)"
),
EnumOption.new(_INTL("Trainer Held items"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[RANDOM_HELD_ITEMS] ? 0 : 1 },
proc { |value|
$game_switches[RANDOM_HELD_ITEMS] = value == 0
}, "Give random held items to all trainers"
)
]
return options
end
end

View File

@@ -20,11 +20,40 @@ HELD_ITEMS = [:AIRBALLOON, :BRIGHTPOWDER, :EVIOLITE, :FLOATSTONE, :DESTINYKNOT,
:PETAYABERRY, :APICOTBERRY, :LANSATBERRY, :STARFBERRY, :ENIGMABERRY, :MICLEBERRY, :CUSTAPBERRY, :PETAYABERRY, :APICOTBERRY, :LANSATBERRY, :STARFBERRY, :ENIGMABERRY, :MICLEBERRY, :CUSTAPBERRY,
:JABOCABERRY, :ROWAPBERRY, :FAIRYGEM] :JABOCABERRY, :ROWAPBERRY, :FAIRYGEM]
ITEM_EXCEPTIONS= [:COVERFOSSIL, :PLUMEFOSSIL, :ACCURACYUP,:DAMAGEUP,:ANCIENTSTONE,:ODDKEYSTONE_FULL,:TM00 ] INVALID_ITEMS = [:COVERFOSSIL, :PLUMEFOSSIL, :ACCURACYUP, :DAMAGEUP, :ANCIENTSTONE, :ODDKEYSTONE_FULL, :TM00]
RANDOM_ITEM_EXCEPTIONS = [:DNASPLICERS, :POKEBALL]
def pbGetRandomItem(item_id) def getRandomGivenTM(item)
return nil if item_id == nil return item if item == nil
item = GameData::Item.get(item_id) if $game_switches[SWITCH_RANDOM_ITEMS_MAPPED]
newItem = $PokemonGlobal.randomTMsHash[item.id]
return GameData::Item.get(newItem) if newItem != nil
end
if $game_switches[SWITCH_RANDOM_ITEMS_DYNAMIC]
return pbGetRandomTM
end
return item
end
def getMappedRandomItem(item)
if (item.is_TM?)
return item if !$game_switches[SWITCH_RANDOM_TMS]
if $game_switches[SWITCH_RANDOM_TMS]
newItem = $PokemonGlobal.randomTMsHash[item.id]
return GameData::Item.get(newItem) if newItem != nil
end
return item
else
return item if !$game_switches[SWITCH_RANDOM_ITEMS]
if $game_switches[SWITCH_RANDOM_ITEMS]
newItem = $PokemonGlobal.randomItemsHash[item.id]
return GameData::Item.get(newItem) if newItem != nil
return item
end
end
end
def getDynamicRandomItem(item)
#keyItem ou HM -> on randomize pas #keyItem ou HM -> on randomize pas
return item if item.is_key_item? return item if item.is_key_item?
return item if item.is_HM? return item if item.is_HM?
@@ -35,7 +64,8 @@ def pbGetRandomItem(item_id)
return $game_switches[SWITCH_RANDOM_TMS] ? pbGetRandomTM() : item return $game_switches[SWITCH_RANDOM_TMS] ? pbGetRandomTM() : item
end end
#item normal #item normal
return item if !$game_switches[SWITCH_RANDOM_ITEMS] return item if !$game_switches[SWITCH_RANDOM_ITEMS_DYNAMIC] || !$game_switches[SWITCH_RANDOM_ITEMS]
#berries #berries
return pbGetRandomBerry() if item.is_berry? return pbGetRandomBerry() if item.is_berry?
@@ -43,13 +73,25 @@ def pbGetRandomItem(item_id)
items_list = GameData::Item.list_all items_list = GameData::Item.list_all
newItem_id = items_list.keys.sample newItem_id = items_list.keys.sample
newItem = GameData::Item.get(newItem_id) newItem = GameData::Item.get(newItem_id)
while (newItem.is_machine? || newItem.is_key_item? || ITEM_EXCEPTIONS.include?(newItem)) while (newItem.is_machine? || newItem.is_key_item? || INVALID_ITEMS.include?(newItem))
newItem_id = items_list.keys.sample newItem_id = items_list.keys.sample
newItem = GameData::Item.get(newItem_id) newItem = GameData::Item.get(newItem_id)
end end
return newItem return newItem
end end
def pbGetRandomItem(item_id)
return nil if item_id == nil
item = GameData::Item.get(item_id)
return item if !($game_switches[SWITCH_RANDOM_ITEMS] || $game_switches[SWITCH_RANDOM_TMS])
if $game_switches[SWITCH_RANDOM_ITEMS_MAPPED]
return getMappedRandomItem(item)
elsif $game_switches[SWITCH_RANDOM_ITEMS_DYNAMIC]
return getDynamicRandomItem(item)
end
return item
end
def pbGetRandomHeldItem() def pbGetRandomHeldItem()
newItem_id = HELD_ITEMS.sample newItem_id = HELD_ITEMS.sample
newItem = GameData::Item.get(newItem_id) newItem = GameData::Item.get(newItem_id)

View File

@@ -27,14 +27,11 @@
############################################################### ###############################################################
# #
#GYM_TYPES_ARRAY = [0,5,11,13,12,3,14,10,4,1,0,6,2,16,7,15,1,8,15,1,7,16,18,17,7,16] #GYM_TYPES_ARRAY = [0,5,11,13,12,3,14,10,4,1,0,6,2,16,7,15,1,8,15,1,7,16,18,17,7,16]
GYM_TYPES_CLASSIC = [:NORMAL, :ROCK, :WATER, :ELECTRIC, :GRASS, :POISON, :PSYCHIC, :FIRE, :GROUND, :FIGHTING, :NORMAL, :BUG, :FLYING, :DRAGON, :GHOST, :ICE, :FIGHTING, :STEEL, :ICE, :FIGHTING, :GHOST, :DRAGON, :FAIRY, :DARK, :GHOST, :DRAGON] GYM_TYPES_CLASSIC = [:NORMAL, :ROCK, :WATER, :ELECTRIC, :GRASS, :POISON, :PSYCHIC, :FIRE, :GROUND, :FIGHTING, :NORMAL, :BUG, :FLYING, :DRAGON, :GHOST, :ICE, :FIGHTING, :STEEL, :ICE, :FIGHTING, :GHOST, :DRAGON, :FAIRY, :DARK, :GHOST, :DRAGON]
GYM_TYPES_MODERN = [:NORMAL, :STEEL, :ICE, :FIGHTING, :BUG, :DARK, :FAIRY, :PSYCHIC, :NORMAL, :FIGHTING, :FAIRY, :GRASS, :BUG, :DRAGON, :FIRE, :GHOST, :GROUND, :ELECTRIC, :WATER, :ROCK, :POISON, :FLYING, :FAIRY, :DARK, :GHOST, :DRAGON] GYM_TYPES_MODERN = [:NORMAL, :STEEL, :ICE, :FIGHTING, :BUG, :DARK, :FAIRY, :PSYCHIC, :NORMAL, :FIGHTING, :FAIRY, :GRASS, :BUG, :DRAGON, :FIRE, :GHOST, :GROUND, :ELECTRIC, :WATER, :ROCK, :POISON, :FLYING, :FAIRY, :DARK, :GHOST, :DRAGON]
GYM_TYPES_ARRAY = ($game_switches && $game_switches[SWITCH_MODERN_MODE]) ? GYM_TYPES_MODERN : GYM_TYPES_CLASSIC GYM_TYPES_ARRAY = ($game_switches && $game_switches[SWITCH_MODERN_MODE]) ? GYM_TYPES_MODERN : GYM_TYPES_CLASSIC
#$randomTrainersArray = [] #$randomTrainersArray = []
#[fighting dojo est 9eme (1), 0 au debut pour pasavoir a faire -1] #[fighting dojo est 9eme (1), 0 au debut pour pasavoir a faire -1]
@@ -44,7 +41,6 @@ def Kernel.initRandomTypeArray()
$game_variables[VAR_GYM_TYPES_ARRAY] = $game_switches[SWITCH_RANDOMIZED_GYM_TYPES] ? typesArray : GYM_TYPES_ARRAY $game_variables[VAR_GYM_TYPES_ARRAY] = $game_switches[SWITCH_RANDOMIZED_GYM_TYPES] ? typesArray : GYM_TYPES_ARRAY
end end
def setRivalStarter(starter1, starter2, starter3, choice) def setRivalStarter(starter1, starter2, starter3, choice)
starters = [starter1, starter2, starter3] starters = [starter1, starter2, starter3]
starters.delete_at(choice) starters.delete_at(choice)
@@ -62,7 +58,6 @@ def setRivalStarterSpecific(rivalStarter)
$game_switches[SWITCH_DEFINED_RIVAL_STARTER] = true $game_switches[SWITCH_DEFINED_RIVAL_STARTER] = true
end end
class PokeBattle_Battle class PokeBattle_Battle
CONST_BST_RANGE = 25 #unused. $game_variables[197] a la place CONST_BST_RANGE = 25 #unused. $game_variables[197] a la place
def randomize_opponent_party(party) def randomize_opponent_party(party)
@@ -91,9 +86,12 @@ def randomizedRivalFirstBattle(party)
for m in party for m in party
next if !m next if !m
case playerChoice case playerChoice
when 0 then newspecies = starter2*NB_POKEMON+starter3 when 0 then
when 1 then newspecies = starter1*NB_POKEMON+starter3 newspecies = starter2 * NB_POKEMON + starter3
when 2 then newspecies = starter1*NB_POKEMON+starter2 when 1 then
newspecies = starter1 * NB_POKEMON + starter3
when 2 then
newspecies = starter1 * NB_POKEMON + starter2
else else
end end
m.species = newspecies m.species = newspecies
@@ -104,11 +102,11 @@ def randomizedRivalFirstBattle(party)
return party return party
end end
end end
####### #######
# end of class # end of class
###### ######
####methodes utilitaires ####methodes utilitaires
# def getBaseStats(species) # def getBaseStats(species)
@@ -150,9 +148,6 @@ def getLeaderType()
return typeIndex return typeIndex
end end
##Version alternatives de fonctions pour fonctionner avec numero de species ##Version alternatives de fonctions pour fonctionner avec numero de species
def SpeciesHasType?(type, species) def SpeciesHasType?(type, species)
if type.is_a?(String) || type.is_a?(Symbol) if type.is_a?(String) || type.is_a?(Symbol)
@@ -172,12 +167,8 @@ end
return $pkmn_dex[species][4] return $pkmn_dex[species][4]
end end
############ ############
#summarize random options #summarize random options
def Kernel.sumRandomOptions() def Kernel.sumRandomOptions()
answer = $game_switches[954] ? "On" : "Off" answer = $game_switches[954] ? "On" : "Off"
@@ -206,11 +197,9 @@ def Kernel.sumRandomOptions()
answer = $game_switches[959] ? "On" : "Off" answer = $game_switches[959] ? "On" : "Off"
stringOptions << "\nTMs: " << answer stringOptions << "\nTMs: " << answer
return stringOptions return stringOptions
end end
def countVisitedMaps def countVisitedMaps
count = 0 count = 0
for i in 0..$PokemonGlobal.visitedMaps.length for i in 0..$PokemonGlobal.visitedMaps.length
@@ -222,16 +211,12 @@ end
def Kernel.sumGameStats() def Kernel.sumGameStats()
stringStats = "" stringStats = ""
stringStats << "Seen " << $Trainer.pokedexSeen.to_s << " Pokémon" stringStats << "Seen " << $Trainer.pokedexSeen.to_s << " Pokémon"
stringStats << "\nCaught " << $Trainer.pokedexOwned.to_s << " Pokémon" stringStats << "\nCaught " << $Trainer.pokedexOwned.to_s << " Pokémon"
stringStats << "\nBeaten the Elite Four " << $game_variables[174].to_s << " times" stringStats << "\nBeaten the Elite Four " << $game_variables[174].to_s << " times"
stringStats << "\nFused " << $game_variables[126].to_s << " Pokémon" stringStats << "\nFused " << $game_variables[126].to_s << " Pokémon"
stringStats << "\nRematched " << $game_variables[162].to_s << " Gym Leaders" stringStats << "\nRematched " << $game_variables[162].to_s << " Gym Leaders"
stringStats << "\nTook " << $PokemonGlobal.stepcount.to_s << " steps" stringStats << "\nTook " << $PokemonGlobal.stepcount.to_s << " steps"
stringStats << "\nVisited " << countVisitedMaps.to_s << " different areas" stringStats << "\nVisited " << countVisitedMaps.to_s << " different areas"
@@ -249,8 +234,6 @@ def Kernel.sumGameStats()
end end
stringStats << "\nSpent $" << $game_variables[225].to_s << " at hotels" stringStats << "\nSpent $" << $game_variables[225].to_s << " at hotels"
stringStats << "\nAccepted " << $game_variables[96].to_s << " quests" stringStats << "\nAccepted " << $game_variables[96].to_s << " quests"
stringStats << "\nCompleted " << $game_variables[98].to_s << " quests" stringStats << "\nCompleted " << $game_variables[98].to_s << " quests"
stringStats << "\nDiscovered " << $game_variables[193].to_s << " secrets" stringStats << "\nDiscovered " << $game_variables[193].to_s << " secrets"
@@ -264,7 +247,6 @@ def Kernel.sumGameStats()
return stringStats return stringStats
end end
def Kernel.pbRandomizeTM() def Kernel.pbRandomizeTM()
tmList = [] tmList = []
for item in $itemData for item in $itemData
@@ -292,7 +274,6 @@ def getNewSpecies(oldSpecies,bst_range=50, ignoreRivalPlaceholder = false, maxDe
return newspecies_dex return newspecies_dex
end end
def getNewCustomSpecies(oldSpecies, customSpeciesList, bst_range = 50, ignoreRivalPlaceholder = false) def getNewCustomSpecies(oldSpecies, customSpeciesList, bst_range = 50, ignoreRivalPlaceholder = false)
oldSpecies_dex = dexNum(oldSpecies) oldSpecies_dex = dexNum(oldSpecies)
return oldSpecies_dex if (oldSpecies_dex == Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES && !ignoreRivalPlaceholder) return oldSpecies_dex if (oldSpecies_dex == Settings::RIVAL_STARTER_PLACEHOLDER_SPECIES && !ignoreRivalPlaceholder)
@@ -311,7 +292,6 @@ def getNewCustomSpecies(oldSpecies,customSpeciesList,bst_range=50, ignoreRivalPl
return newspecies_dex return newspecies_dex
end end
def playShuffleSE(i) def playShuffleSE(i)
if i % 40 == 0 || i == 0 if i % 40 == 0 || i == 0
pbSEPlay("Charm", 60) pbSEPlay("Charm", 60)
@@ -326,7 +306,6 @@ def getTrainersDataMode
return mode return mode
end end
def Kernel.pbShuffleTrainers(bst_range = 50, customsOnly = false, customsList = nil) def Kernel.pbShuffleTrainers(bst_range = 50, customsOnly = false, customsList = nil)
bst_range = pbGet(VAR_RANDOMIZER_TRAINER_BST) bst_range = pbGet(VAR_RANDOMIZER_TRAINER_BST)
@@ -382,7 +361,7 @@ def Kernel.pbShuffleTrainersCustom(bst_range = 50)
Kernel.pbMessage(_INTL("Parsing custom sprites folder")) Kernel.pbMessage(_INTL("Parsing custom sprites folder"))
customsList = getCustomSpeciesList() customsList = getCustomSpeciesList()
Kernel.pbMessage(_INTL("{1} Pokémon found",customsList.length.to_s)) Kernel.pbMessage(_INTL("{1} sprites found", customsList.length.to_s))
if customsList.length == 0 if customsList.length == 0
Kernel.pbMessage(_INTL("To use custom sprites, please place correctly named sprites in the /CustomBattlers folder. See readMe.txt for more information")) Kernel.pbMessage(_INTL("To use custom sprites, please place correctly named sprites in the /CustomBattlers folder. See readMe.txt for more information"))
@@ -417,8 +396,6 @@ end
# end # end
# $PokemonGlobal.randomTrainersHash = randomTrainersHash # $PokemonGlobal.randomTrainersHash = randomTrainersHash
#def getRandomCustomSprite() #def getRandomCustomSprite()
# filesList = Dir["./Graphics/CustomBattlers/*"] # filesList = Dir["./Graphics/CustomBattlers/*"]
# i = rand(filesList.length-1) # i = rand(filesList.length-1)
@@ -430,7 +407,6 @@ end
# return (body*NB_POKEMON)+head # return (body*NB_POKEMON)+head
#end #end
def getCustomSpeciesList() def getCustomSpeciesList()
filesList = Dir["./Graphics/CustomBattlers/*"] filesList = Dir["./Graphics/CustomBattlers/*"]
speciesList = [] speciesList = []
@@ -452,7 +428,6 @@ def getCustomSpeciesList()
return speciesList return speciesList
end end
def Kernel.getBaseStats(species) def Kernel.getBaseStats(species)
if $pkmn_dex[species] == nil if $pkmn_dex[species] == nil
print species print species
@@ -467,7 +442,6 @@ def Kernel.getBaseStats(species)
return basestatsum return basestatsum
end end
def Kernel.gymLeaderRematchHint() def Kernel.gymLeaderRematchHint()
hints = [ hints = [
"I heard that Brock has a huge interest in Pokémon fossils. He donated a lot of fossils he excavated to the Pewter City Museum.", "I heard that Brock has a huge interest in Pokémon fossils. He donated a lot of fossils he excavated to the Pewter City Museum.",
@@ -524,7 +498,6 @@ def inverseFusion(pokemon)
return pokemon return pokemon
end end
def addRandomHeldItems(trainerParty) def addRandomHeldItems(trainerParty)
for poke in trainerParty for poke in trainerParty
if poke.item == nil if poke.item == nil
@@ -533,7 +506,6 @@ def addRandomHeldItems(trainerParty)
end end
end end
def addHealingItem(items) def addHealingItem(items)
if $Trainer.numbadges < 1 if $Trainer.numbadges < 1
items << PBItems::ORANBERRY items << PBItems::ORANBERRY
@@ -667,7 +639,6 @@ def getRematchId(trainername, trainerid)
return trainername + trainerid.to_s return trainername + trainerid.to_s
end end
def replaceRivalStarterIfNecessary(species) def replaceRivalStarterIfNecessary(species)
if species == RIVAL_STARTER_PLACEHOLDER_SPECIES if species == RIVAL_STARTER_PLACEHOLDER_SPECIES
if !$game_switches[840] || pbGet(250) == 0 #not DEFINED_RIVAL_STARTER if !$game_switches[840] || pbGet(250) == 0 #not DEFINED_RIVAL_STARTER

View File

@@ -3,6 +3,9 @@ class PokemonGlobalMetadata
attr_accessor :psuedoBSTHash attr_accessor :psuedoBSTHash
attr_accessor :randomTrainersHash attr_accessor :randomTrainersHash
attr_accessor :randomGymTrainersHash attr_accessor :randomGymTrainersHash
attr_accessor :randomItemsHash
attr_accessor :randomTMsHash
alias random_init initialize alias random_init initialize
@@ -11,6 +14,9 @@ class PokemonGlobalMetadata
@randomGymTrainersHash = nil @randomGymTrainersHash = nil
@psuedoHash = nil @psuedoHash = nil
@psuedoBSTHash = nil @psuedoBSTHash = nil
@randomItemsHash = nil
@randomTMsHash = nil
end end
end end
@@ -82,7 +88,60 @@ def Kernel.pbShuffleDex(range = 50, type = 0)
$PokemonGlobal.psuedoBSTHash = get_randomized_bst_hash(pokemon_list,range,should_include_fusions) $PokemonGlobal.psuedoBSTHash = get_randomized_bst_hash(pokemon_list,range,should_include_fusions)
end end
def itemCanBeRandomized(item)
return false if item.is_machine?
return false if item.is_key_item?
return false if INVALID_ITEMS.include?(item.id)
#return false if RANDOM_ITEM_EXCEPTIONS.include?(item.id)
return true
end
def pbShuffleItems()
$game_switches[SWITCH_RANDOMIZED_AT_LEAST_ONCE] = true
randomItemsHash = Hash.new
available_items = []
for itemElement in GameData::Item.list_all
item=itemElement[1]
if itemCanBeRandomized(item)
if !available_items.include?(item.id)
available_items << item.id
end
end
end
remaining_items = available_items.clone
for itemId in available_items
if itemCanBeRandomized(GameData::Item.get(itemId))
chosenItem = remaining_items.sample
randomItemsHash[itemId] = chosenItem
remaining_items.delete(chosenItem)
end
end
$PokemonGlobal.randomItemsHash = randomItemsHash
end
def pbShuffleTMs()
$game_switches[SWITCH_RANDOMIZED_AT_LEAST_ONCE] = true
randomItemsHash = Hash.new
available_items = []
for itemElement in GameData::Item.list_all
item=itemElement[1]
if item.is_TM?
if !available_items.include?(item.id)
available_items << item.id
end
end
end
remaining_items = available_items.clone
for itemId in available_items
if GameData::Item.get(itemId).is_TM?
chosenItem = remaining_items.sample
randomItemsHash[itemId] = chosenItem
remaining_items.delete(chosenItem)
end
end
$PokemonGlobal.randomTMsHash = randomItemsHash
end
# #

View File

@@ -50,8 +50,20 @@ SWITCH_RANDOM_WILD_AREA = 777
SWITCH_RANDOM_TRAINERS = 987 SWITCH_RANDOM_TRAINERS = 987
SWITCH_RANDOM_STARTERS = 954 SWITCH_RANDOM_STARTERS = 954
SWITCH_RANDOM_ITEMS = 958
SWITCH_RANDOM_TMS = 959 SWITCH_RANDOM_ITEMS_GENERAL=759
SWITCH_RANDOM_ITEMS=751
SWITCH_RANDOM_FOUND_ITEMS=755
SWITCH_RANDOM_ITEMS_DYNAMIC = 958
SWITCH_RANDOM_ITEMS_MAPPED = 752
SWITCH_RANDOM_TMS = 758
SWITCH_RANDOM_GIVEN_ITEMS = 756
SWITCH_RANDOM_GIVEN_TMS = 757
SWITCH_RANDOM_SHOP_ITEMS = 754
SWITCH_RANDOM_FOUND_TMS = 959
SWITCH_WILD_RANDOM_GLOBAL=956 SWITCH_WILD_RANDOM_GLOBAL=956
SWITCH_RANDOM_STATIC_ENCOUNTERS=955 SWITCH_RANDOM_STATIC_ENCOUNTERS=955
SWITCH_RANDOM_WILD_ONLY_CUSTOMS=664 SWITCH_RANDOM_WILD_ONLY_CUSTOMS=664

Binary file not shown.