mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Added Setting SHOW_MODIFIED_MOVE_PROPERTIES, other minor tweaks and fixes
This commit is contained in:
@@ -10,13 +10,10 @@ SaveData.register(:player) do
|
||||
end
|
||||
|
||||
SaveData.register(:game_system) do
|
||||
# TODO: Am I sure this doesn't need to be loaded in bootup?
|
||||
# load_in_bootup
|
||||
ensure_class :Game_System
|
||||
save_value { $game_system }
|
||||
load_value { |value| $game_system = value }
|
||||
new_game_value { Game_System.new }
|
||||
# reset_on_new_game
|
||||
end
|
||||
|
||||
SaveData.register(:pokemon_system) do
|
||||
|
||||
@@ -37,6 +37,13 @@ module Settings
|
||||
"Pt park", "Pt route", "Pt sea", "Pt town"]
|
||||
}
|
||||
|
||||
# Whether a move's power/type/category/etc. as shown in battle, the summary
|
||||
# screen and the Move Reminder screen will appear as their calculated values
|
||||
# (true) or their values from the PBS file moves.txt (false). For example, if
|
||||
# this is true, Judgment's displayed type will depend on the Plate being held
|
||||
# by the Pokémon that knows it.
|
||||
SHOW_MODIFIED_MOVE_PROPERTIES = false
|
||||
|
||||
# TODO: Allow renaming a Pokémon from the party screen/summary screen (not
|
||||
# sure which). Gen 9 feature.
|
||||
# TODO: Allow forgetting/remembering moves from the summary screen. Gen 9
|
||||
|
||||
@@ -102,135 +102,133 @@ module GameData
|
||||
return false
|
||||
end
|
||||
|
||||
# TODO: Make the below depend on a Setting rather than quoting it out.
|
||||
def display_type(pkmn, move = nil)
|
||||
=begin
|
||||
case @function_code
|
||||
when "TypeDependsOnUserIVs"
|
||||
return pbHiddenPower(pkmn)[0]
|
||||
when "TypeAndPowerDependOnUserBerry"
|
||||
item_data = pkmn.item
|
||||
if item_data
|
||||
item_data.flags.each do |flag|
|
||||
next if !flag[/^NaturalGift_(\w+)_(?:\d+)$/i]
|
||||
typ = $~[1].to_sym
|
||||
ret = typ if GameData::Type.exists?(typ)
|
||||
break
|
||||
if Settings::SHOW_MODIFIED_MOVE_PROPERTIES
|
||||
case @function_code
|
||||
when "TypeDependsOnUserIVs"
|
||||
return pbHiddenPower(pkmn)[0]
|
||||
when "TypeAndPowerDependOnUserBerry"
|
||||
item_data = pkmn.item
|
||||
if item_data
|
||||
item_data.flags.each do |flag|
|
||||
next if !flag[/^NaturalGift_(\w+)_(?:\d+)$/i]
|
||||
typ = $~[1].to_sym
|
||||
ret = typ if GameData::Type.exists?(typ)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
return :NORMAL
|
||||
when "TypeDependsOnUserPlate"
|
||||
item_types = {
|
||||
:FISTPLATE => :FIGHTING,
|
||||
:SKYPLATE => :FLYING,
|
||||
:TOXICPLATE => :POISON,
|
||||
:EARTHPLATE => :GROUND,
|
||||
:STONEPLATE => :ROCK,
|
||||
:INSECTPLATE => :BUG,
|
||||
:SPOOKYPLATE => :GHOST,
|
||||
:IRONPLATE => :STEEL,
|
||||
:FLAMEPLATE => :FIRE,
|
||||
:SPLASHPLATE => :WATER,
|
||||
:MEADOWPLATE => :GRASS,
|
||||
:ZAPPLATE => :ELECTRIC,
|
||||
:MINDPLATE => :PSYCHIC,
|
||||
:ICICLEPLATE => :ICE,
|
||||
:DRACOPLATE => :DRAGON,
|
||||
:DREADPLATE => :DARK,
|
||||
:PIXIEPLATE => :FAIRY
|
||||
}
|
||||
if pkmn.hasItem?
|
||||
item_types.each do |item, item_type|
|
||||
return item_type if pkmn.item_id == item && GameData::Type.exists?(item_type)
|
||||
return :NORMAL
|
||||
when "TypeDependsOnUserPlate"
|
||||
item_types = {
|
||||
:FISTPLATE => :FIGHTING,
|
||||
:SKYPLATE => :FLYING,
|
||||
:TOXICPLATE => :POISON,
|
||||
:EARTHPLATE => :GROUND,
|
||||
:STONEPLATE => :ROCK,
|
||||
:INSECTPLATE => :BUG,
|
||||
:SPOOKYPLATE => :GHOST,
|
||||
:IRONPLATE => :STEEL,
|
||||
:FLAMEPLATE => :FIRE,
|
||||
:SPLASHPLATE => :WATER,
|
||||
:MEADOWPLATE => :GRASS,
|
||||
:ZAPPLATE => :ELECTRIC,
|
||||
:MINDPLATE => :PSYCHIC,
|
||||
:ICICLEPLATE => :ICE,
|
||||
:DRACOPLATE => :DRAGON,
|
||||
:DREADPLATE => :DARK,
|
||||
:PIXIEPLATE => :FAIRY
|
||||
}
|
||||
if pkmn.hasItem?
|
||||
item_types.each do |item, item_type|
|
||||
return item_type if pkmn.item_id == item && GameData::Type.exists?(item_type)
|
||||
end
|
||||
end
|
||||
end
|
||||
when "TypeDependsOnUserMemory"
|
||||
item_types = {
|
||||
:FIGHTINGMEMORY => :FIGHTING,
|
||||
:FLYINGMEMORY => :FLYING,
|
||||
:POISONMEMORY => :POISON,
|
||||
:GROUNDMEMORY => :GROUND,
|
||||
:ROCKMEMORY => :ROCK,
|
||||
:BUGMEMORY => :BUG,
|
||||
:GHOSTMEMORY => :GHOST,
|
||||
:STEELMEMORY => :STEEL,
|
||||
:FIREMEMORY => :FIRE,
|
||||
:WATERMEMORY => :WATER,
|
||||
:GRASSMEMORY => :GRASS,
|
||||
:ELECTRICMEMORY => :ELECTRIC,
|
||||
:PSYCHICMEMORY => :PSYCHIC,
|
||||
:ICEMEMORY => :ICE,
|
||||
:DRAGONMEMORY => :DRAGON,
|
||||
:DARKMEMORY => :DARK,
|
||||
:FAIRYMEMORY => :FAIRY
|
||||
}
|
||||
if pkmn.hasItem?
|
||||
item_types.each do |item, item_type|
|
||||
return item_type if pkmn.item_id == item && GameData::Type.exists?(item_type)
|
||||
when "TypeDependsOnUserMemory"
|
||||
item_types = {
|
||||
:FIGHTINGMEMORY => :FIGHTING,
|
||||
:FLYINGMEMORY => :FLYING,
|
||||
:POISONMEMORY => :POISON,
|
||||
:GROUNDMEMORY => :GROUND,
|
||||
:ROCKMEMORY => :ROCK,
|
||||
:BUGMEMORY => :BUG,
|
||||
:GHOSTMEMORY => :GHOST,
|
||||
:STEELMEMORY => :STEEL,
|
||||
:FIREMEMORY => :FIRE,
|
||||
:WATERMEMORY => :WATER,
|
||||
:GRASSMEMORY => :GRASS,
|
||||
:ELECTRICMEMORY => :ELECTRIC,
|
||||
:PSYCHICMEMORY => :PSYCHIC,
|
||||
:ICEMEMORY => :ICE,
|
||||
:DRAGONMEMORY => :DRAGON,
|
||||
:DARKMEMORY => :DARK,
|
||||
:FAIRYMEMORY => :FAIRY
|
||||
}
|
||||
if pkmn.hasItem?
|
||||
item_types.each do |item, item_type|
|
||||
return item_type if pkmn.item_id == item && GameData::Type.exists?(item_type)
|
||||
end
|
||||
end
|
||||
end
|
||||
when "TypeDependsOnUserDrive"
|
||||
item_types = {
|
||||
:SHOCKDRIVE => :ELECTRIC,
|
||||
:BURNDRIVE => :FIRE,
|
||||
:CHILLDRIVE => :ICE,
|
||||
:DOUSEDRIVE => :WATER
|
||||
}
|
||||
if pkmn.hasItem?
|
||||
item_types.each do |item, item_type|
|
||||
return item_type if pkmn.item_id == item && GameData::Type.exists?(item_type)
|
||||
when "TypeDependsOnUserDrive"
|
||||
item_types = {
|
||||
:SHOCKDRIVE => :ELECTRIC,
|
||||
:BURNDRIVE => :FIRE,
|
||||
:CHILLDRIVE => :ICE,
|
||||
:DOUSEDRIVE => :WATER
|
||||
}
|
||||
if pkmn.hasItem?
|
||||
item_types.each do |item, item_type|
|
||||
return item_type if pkmn.item_id == item && GameData::Type.exists?(item_type)
|
||||
end
|
||||
end
|
||||
when "TypeIsUserFirstType"
|
||||
return pkmn.types[0]
|
||||
end
|
||||
when "TypeIsUserFirstType"
|
||||
return pkmn.types[0]
|
||||
end
|
||||
=end
|
||||
return @type
|
||||
end
|
||||
|
||||
# TODO: Make the below depend on a Setting rather than quoting it out.
|
||||
def display_damage(pkmn, move = nil)
|
||||
=begin
|
||||
case @function_code
|
||||
when "TypeDependsOnUserIVs"
|
||||
return pbHiddenPower(pkmn)[1]
|
||||
when "TypeAndPowerDependOnUserBerry"
|
||||
item_data = pkmn.item
|
||||
if item_data
|
||||
item_data.flags.each do |flag|
|
||||
return [$~[1].to_i, 10].max if flag[/^NaturalGift_(?:\w+)_(\d+)$/i]
|
||||
def display_power(pkmn, move = nil)
|
||||
if Settings::SHOW_MODIFIED_MOVE_PROPERTIES
|
||||
case @function_code
|
||||
when "TypeDependsOnUserIVs"
|
||||
return pbHiddenPower(pkmn)[1]
|
||||
when "TypeAndPowerDependOnUserBerry"
|
||||
item_data = pkmn.item
|
||||
if item_data
|
||||
item_data.flags.each do |flag|
|
||||
return [$~[1].to_i, 10].max if flag[/^NaturalGift_(?:\w+)_(\d+)$/i]
|
||||
end
|
||||
end
|
||||
end
|
||||
return 1
|
||||
when "ThrowUserItemAtTarget"
|
||||
item_data = pkmn.item
|
||||
if item_data
|
||||
item_data.flags.each do |flag|
|
||||
return [$~[1].to_i, 10].max if flag[/^Fling_(\d+)$/i]
|
||||
return 1
|
||||
when "ThrowUserItemAtTarget"
|
||||
item_data = pkmn.item
|
||||
if item_data
|
||||
item_data.flags.each do |flag|
|
||||
return [$~[1].to_i, 10].max if flag[/^Fling_(\d+)$/i]
|
||||
end
|
||||
return 10
|
||||
end
|
||||
return 10
|
||||
return 0
|
||||
when "PowerHigherWithUserHP"
|
||||
return [150 * pkmn.hp / pkmn.totalhp, 1].max
|
||||
when "PowerLowerWithUserHP"
|
||||
n = 48 * pkmn.hp / pkmn.totalhp
|
||||
return 200 if n < 2
|
||||
return 150 if n < 5
|
||||
return 100 if n < 10
|
||||
return 80 if n < 17
|
||||
return 40 if n < 33
|
||||
return 20
|
||||
when "PowerHigherWithUserHappiness"
|
||||
return [(pkmn.happiness * 2 / 5).floor, 1].max
|
||||
when "PowerLowerWithUserHappiness"
|
||||
return [((255 - pkmn.happiness) * 2 / 5).floor, 1].max
|
||||
when "PowerHigherWithLessPP"
|
||||
dmgs = [200, 80, 60, 50, 40]
|
||||
ppLeft = [[(move&.pp || @total_pp) - 1, 0].max, dmgs.length - 1].min
|
||||
return dmgs[ppLeft]
|
||||
end
|
||||
return 0
|
||||
when "PowerHigherWithUserHP"
|
||||
return [150 * pkmn.hp / pkmn.totalhp, 1].max
|
||||
when "PowerLowerWithUserHP"
|
||||
n = 48 * pkmn.hp / pkmn.totalhp
|
||||
return 200 if n < 2
|
||||
return 150 if n < 5
|
||||
return 100 if n < 10
|
||||
return 80 if n < 17
|
||||
return 40 if n < 33
|
||||
return 20
|
||||
when "PowerHigherWithUserHappiness"
|
||||
return [(pkmn.happiness * 2 / 5).floor, 1].max
|
||||
when "PowerLowerWithUserHappiness"
|
||||
return [((255 - pkmn.happiness) * 2 / 5).floor, 1].max
|
||||
when "PowerHigherWithLessPP"
|
||||
dmgs = [200, 80, 60, 50, 40]
|
||||
ppLeft = [[(move&.pp || @total_pp) - 1, 0].max, dmgs.length - 1].min
|
||||
return dmgs[ppLeft]
|
||||
end
|
||||
=end
|
||||
return @power
|
||||
end
|
||||
|
||||
|
||||
@@ -159,43 +159,38 @@ class Battle::Move
|
||||
if battler.isSpecies?(:MORPEKO) || battler.effects[PBEffects::TransformSpecies] == :MORPEKO
|
||||
return pbBaseType(battler)
|
||||
end
|
||||
# TODO: Make the below depend on a Setting rather than quoting it out.
|
||||
=begin
|
||||
when "TypeDependsOnUserPlate", "TypeDependsOnUserMemory",
|
||||
"TypeDependsOnUserDrive", "TypeAndPowerDependOnUserBerry",
|
||||
"TypeIsUserFirstType", "TypeAndPowerDependOnWeather",
|
||||
"TypeAndPowerDependOnTerrain"
|
||||
return pbBaseType(battler)
|
||||
=end
|
||||
return pbBaseType(battler) if Settings::SHOW_MODIFIED_MOVE_PROPERTIES
|
||||
end
|
||||
return @realMove.display_type(battler.pokemon)
|
||||
end
|
||||
|
||||
# TODO: Make the below depend on a Setting rather than quoting it out.
|
||||
def display_damage(battler)
|
||||
=begin
|
||||
case @function_code
|
||||
when "TypeAndPowerDependOnUserBerry"
|
||||
return pbNaturalGiftBaseDamage(battler.item_id)
|
||||
when "TypeAndPowerDependOnWeather", "TypeAndPowerDependOnTerrain",
|
||||
"PowerHigherWithUserHP", "PowerLowerWithUserHP",
|
||||
"PowerHigherWithUserHappiness", "PowerLowerWithUserHappiness",
|
||||
"PowerHigherWithUserPositiveStatStages", "PowerDependsOnUserStockpile"
|
||||
return pbBaseType(@power, battler, nil)
|
||||
def display_power(battler)
|
||||
if Settings::SHOW_MODIFIED_MOVE_PROPERTIES
|
||||
case @function_code
|
||||
when "TypeAndPowerDependOnUserBerry"
|
||||
return pbNaturalGiftBaseDamage(battler.item_id)
|
||||
when "TypeAndPowerDependOnWeather", "TypeAndPowerDependOnTerrain",
|
||||
"PowerHigherWithUserHP", "PowerLowerWithUserHP",
|
||||
"PowerHigherWithUserHappiness", "PowerLowerWithUserHappiness",
|
||||
"PowerHigherWithUserPositiveStatStages", "PowerDependsOnUserStockpile"
|
||||
return pbBaseType(@power, battler, nil)
|
||||
end
|
||||
end
|
||||
=end
|
||||
return @realMove.display_damage(battler.pokemon)
|
||||
return @realMove.display_power(battler.pokemon)
|
||||
end
|
||||
|
||||
# TODO: Make the below depend on a Setting rather than quoting it out.
|
||||
def display_category(battler)
|
||||
=begin
|
||||
case @function_code
|
||||
when "CategoryDependsOnHigherDamageIgnoreTargetAbility"
|
||||
pbOnStartUse(user, nil)
|
||||
return @calcCategory
|
||||
if Settings::SHOW_MODIFIED_MOVE_PROPERTIES
|
||||
case @function_code
|
||||
when "CategoryDependsOnHigherDamageIgnoreTargetAbility"
|
||||
pbOnStartUse(user, nil)
|
||||
return @calcCategory
|
||||
end
|
||||
end
|
||||
=end
|
||||
return @realMove.display_category(battler.pokemon)
|
||||
end
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ class Pokemon
|
||||
|
||||
def display_type(pkmn); return GameData::Move.get(@id).display_type(pkmn, self); end
|
||||
def display_category(pkmn); return GameData::Move.get(@id).display_category(pkmn, self); end
|
||||
def display_damage(pkmn); return GameData::Move.get(@id).display_damage(pkmn, self); end
|
||||
def display_power(pkmn); return GameData::Move.get(@id).display_power(pkmn, self); end
|
||||
def display_accuracy(pkmn); return GameData::Move.get(@id).display_accuracy(pkmn, self); end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -84,7 +84,7 @@ class MoveRelearner_Scene
|
||||
0, 78 + ((@sprites["commands"].index - @sprites["commands"].top_item) * 64),
|
||||
0, 0, 258, 72])
|
||||
selMoveData = GameData::Move.get(@moves[@sprites["commands"].index])
|
||||
power = selMoveData.display_damage(@pokemon)
|
||||
power = selMoveData.display_power(@pokemon)
|
||||
category = selMoveData.display_category(@pokemon)
|
||||
accuracy = selMoveData.display_accuracy(@pokemon)
|
||||
textpos.push([_INTL("CATEGORY"), 272, 120, :left, Color.new(248, 248, 248), Color.black])
|
||||
|
||||
@@ -588,7 +588,7 @@ module UI
|
||||
def choose_number_as_money_multiplier(help_text, money_per_unit, maximum, init_value = 1)
|
||||
@sprites[:speech_box].visible = true
|
||||
@sprites[:speech_box].text = help_text
|
||||
position_speech_box(text)
|
||||
position_speech_box(help_text)
|
||||
# Show the help text
|
||||
loop do
|
||||
Graphics.update
|
||||
|
||||
@@ -780,7 +780,7 @@ class UI::PokemonSummaryVisuals < UI::BaseVisuals
|
||||
selected_move = ((@move_index || 0) == Pokemon::MAX_MOVES) ? @new_move : @pokemon.moves[@move_index || 0]
|
||||
# Power
|
||||
draw_text(_INTL("POWER"), 20, 128)
|
||||
power_text = selected_move.display_damage(@pokemon)
|
||||
power_text = selected_move.display_power(@pokemon)
|
||||
power_text = "---" if power_text == 0 # Status move
|
||||
power_text = "???" if power_text == 1 # Variable power move
|
||||
draw_text(power_text, 222, 128, align: :right, theme: :black)
|
||||
|
||||
@@ -465,6 +465,7 @@ class UI::BagSellVisuals < UI::BagVisuals
|
||||
end
|
||||
|
||||
def refresh_on_index_changed(old_index)
|
||||
super
|
||||
refresh_unit_price_window
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user