Added SKIP_TITLE_SCREEN Setting, added const for type icon size, fixed some battle bugs and inconsistencies

This commit is contained in:
Maruno17
2024-06-25 15:55:10 +01:00
parent ff2d8e5f55
commit 195c34a7c8
20 changed files with 101 additions and 243 deletions

View File

@@ -309,8 +309,8 @@ class Battle::Battler
return true
end
def pbSleep(msg = nil)
pbInflictStatus(:SLEEP, pbSleepDuration, msg)
def pbSleep(user = nil, msg = nil)
pbInflictStatus(:SLEEP, pbSleepDuration, msg, user)
end
def pbSleepSelf(msg = nil, duration = -1)
@@ -391,8 +391,8 @@ class Battle::Battler
return pbCanInflictStatus?(:FROZEN, user, showMessages, move)
end
def pbFreeze(msg = nil)
pbInflictStatus(:FROZEN, 0, msg)
def pbFreeze(user = nil, msg = nil)
pbInflictStatus(:FROZEN, 0, msg, user)
end
#=============================================================================

View File

@@ -449,6 +449,7 @@ class Battle::Battler
end
def pbMoveTypeWeakeningBerry(berry_type, move_type, mults)
return false if !canConsumeBerry?
return if move_type != berry_type
return if !Effectiveness.super_effective?(@damageState.typeMod) && move_type != :NORMAL
mults[:final_damage_multiplier] /= 2

View File

@@ -181,17 +181,17 @@ class Battle::Move
c = 0
# Ability effects that alter critical hit rate
if c >= 0 && user.abilityActive?
c = Battle::AbilityEffects.triggerCriticalCalcFromUser(user.ability, user, target, c)
c = Battle::AbilityEffects.triggerCriticalCalcFromUser(user.ability, user, target, self, c)
end
if c >= 0 && target.abilityActive? && !target.beingMoldBroken?
c = Battle::AbilityEffects.triggerCriticalCalcFromTarget(target.ability, user, target, c)
c = Battle::AbilityEffects.triggerCriticalCalcFromTarget(target.ability, user, target, self, c)
end
# Item effects that alter critical hit rate
if c >= 0 && user.itemActive?
c = Battle::ItemEffects.triggerCriticalCalcFromUser(user.item, user, target, c)
c = Battle::ItemEffects.triggerCriticalCalcFromUser(user.item, user, target, self, c)
end
if c >= 0 && target.itemActive?
c = Battle::ItemEffects.triggerCriticalCalcFromTarget(target.item, user, target, c)
c = Battle::ItemEffects.triggerCriticalCalcFromTarget(target.item, user, target, self, c)
end
return false if c < 0
# Move-specific "always/never a critical hit" effects

View File

@@ -11,12 +11,12 @@ class Battle::Move::SleepTarget < Battle::Move
def pbEffectAgainstTarget(user, target)
return if damagingMove?
target.pbSleep
target.pbSleep(user)
end
def pbAdditionalEffect(user, target)
return if target.damageState.substitute
target.pbSleep if target.pbCanSleep?(user, false, self)
target.pbSleep(user) if target.pbCanSleep?(user, false, self)
end
end
@@ -331,12 +331,12 @@ class Battle::Move::FreezeTarget < Battle::Move
def pbEffectAgainstTarget(user, target)
return if damagingMove?
target.pbFreeze
target.pbFreeze(user)
end
def pbAdditionalEffect(user, target)
return if target.damageState.substitute
target.pbFreeze if target.pbCanFreeze?(user, false, self)
target.pbFreeze(user) if target.pbCanFreeze?(user, false, self)
end
end
@@ -371,7 +371,7 @@ class Battle::Move::FreezeFlinchTarget < Battle::Move
chance = pbAdditionalEffectChance(user, target, 10)
return if chance == 0
if target.pbCanFreeze?(user, false, self) && @battle.pbRandom(100) < chance
target.pbFreeze
target.pbFreeze(user)
end
target.pbFlinch(user) if @battle.pbRandom(100) < chance
end
@@ -385,7 +385,7 @@ class Battle::Move::ParalyzeBurnOrFreezeTarget < Battle::Move
return if target.damageState.substitute
case @battle.pbRandom(3)
when 0 then target.pbBurn(user) if target.pbCanBurn?(user, false, self)
when 1 then target.pbFreeze if target.pbCanFreeze?(user, false, self)
when 1 then target.pbFreeze(user) if target.pbCanFreeze?(user, false, self)
when 2 then target.pbParalyze(user) if target.pbCanParalyze?(user, false, self)
end
end
@@ -400,7 +400,7 @@ class Battle::Move::PoisonParalyzeOrSleepTarget < Battle::Move
case @battle.pbRandom(3)
when 0 then target.pbPoison(user) if target.pbCanPoison?(user, false, self)
when 1 then target.pbParalyze(user) if target.pbCanParalyze?(user, false, self)
when 2 then target.pbSleep if target.pbCanSleep?(user, false, self)
when 2 then target.pbSleep(user) if target.pbCanSleep?(user, false, self)
end
end
end
@@ -429,7 +429,7 @@ class Battle::Move::GiveUserStatusToTarget < Battle::Move
msg = ""
case user.status
when :SLEEP
target.pbSleep
target.pbSleep(user)
msg = _INTL("{1} woke up.", user.pbThis)
when :POISON
target.pbPoison(user, nil, user.statusCount != 0)
@@ -441,7 +441,7 @@ class Battle::Move::GiveUserStatusToTarget < Battle::Move
target.pbParalyze(user)
msg = _INTL("{1} was cured of paralysis.", user.pbThis)
when :FROZEN
target.pbFreeze
target.pbFreeze(user)
msg = _INTL("{1} was thawed out.", user.pbThis)
end
if msg != ""

View File

@@ -278,13 +278,13 @@ class Battle::Move::EffectDependsOnEnvironment < Battle::Move
return if @battle.pbRandom(100) >= chance
case @secretPower
when 2
target.pbSleep if target.pbCanSleep?(user, false, self)
target.pbSleep(user) if target.pbCanSleep?(user, false, self)
when 10
target.pbBurn(user) if target.pbCanBurn?(user, false, self)
when 0, 1
target.pbParalyze(user) if target.pbCanParalyze?(user, false, self)
when 9
target.pbFreeze if target.pbCanFreeze?(user, false, self)
target.pbFreeze(user) if target.pbCanFreeze?(user, false, self)
when 5
if target.pbCanLowerStatStage?(:ATTACK, user, self)
target.pbLowerStatStage(:ATTACK, 1, user)

View File

@@ -242,11 +242,19 @@ class Battle::Scene
case useType
when 1 # Use on Pokémon
if @battle.pbTeamLengthFromBattlerIndex(idxBattler) == 1
break if yield item.id, useType, @battle.battlers[idxBattler].pokemonIndex, -1, itemScene
if yield item.id, useType, @battle.battlers[idxBattler].pokemonIndex, -1, itemScene
break
else
next
end
end
when 3 # Use on battler
if @battle.pbPlayerBattlerCount == 1
break if yield item.id, useType, @battle.battlers[idxBattler].pokemonIndex, -1, itemScene
if yield item.id, useType, @battle.battlers[idxBattler].pokemonIndex, -1, itemScene
break
else
next
end
end
end
# Fade out and hide Bag screen

View File

@@ -208,7 +208,7 @@ class Battle::Scene::FightMenu < Battle::Scene::MenuBase
# pbShowWindow to make the graphic appear while the command menu is being
# displayed.
USE_GRAPHICS = true
TYPE_ICON_HEIGHT = 28
TYPE_ICON_HEIGHT = GameData::Type::ICON_SIZE[1]
# Text colours of PP of selected move
PP_COLORS = [
Color.new(248, 72, 72), Color.new(136, 48, 48), # Red, zero PP

View File

@@ -503,23 +503,23 @@ class Battle::AI::AIMove
# Ability effects that alter critical hit rate
if user.ability_active?
crit_stage = Battle::AbilityEffects.triggerCriticalCalcFromUser(user_battler.ability,
user_battler, target_battler, crit_stage)
user_battler, target_battler, @move, crit_stage)
return -1 if crit_stage < 0
end
if target.ability_active? && !target.being_mold_broken?
crit_stage = Battle::AbilityEffects.triggerCriticalCalcFromTarget(target_battler.ability,
user_battler, target_battler, crit_stage)
user_battler, target_battler, @move, crit_stage)
return -1 if crit_stage < 0
end
# Item effects that alter critical hit rate
if user.item_active?
crit_stage = Battle::ItemEffects.triggerCriticalCalcFromUser(user_battler.item,
user_battler, target_battler, crit_stage)
user_battler, target_battler, @move, crit_stage)
return -1 if crit_stage < 0
end
if target.item_active?
crit_stage = Battle::ItemEffects.triggerCriticalCalcFromTarget(user_battler.item,
user_battler, target_battler, crit_stage)
user_battler, target_battler, @move, crit_stage)
return -1 if crit_stage < 0
end
# Other effects

View File

@@ -448,11 +448,11 @@ Battle::AI::Handlers::MoveEffectScore.add("EnsureNextCriticalHit",
crit_stage = -1 if user.battler.pbOwnSide.effects[PBEffects::LuckyChant] > 0
if crit_stage >= 0 && user.ability_active? && ![:MERCILESS].include?(user.ability_id)
crit_stage = Battle::AbilityEffects.triggerCriticalCalcFromUser(user.battler.ability,
user.battler, user.battler, crit_stage)
user.battler, user.battler, move.move, crit_stage)
end
if crit_stage >= 0 && user.item_active?
crit_stage = Battle::ItemEffects.triggerCriticalCalcFromUser(user.battler.item,
user.battler, user.battler, crit_stage)
user.battler, user.battler, move.move, crit_stage)
end
if crit_stage >= 0 && crit_stage < 50
crit_stage += user.effects[PBEffects::FocusEnergy]
@@ -487,12 +487,12 @@ Battle::AI::Handlers::MoveEffectScore.add("StartPreventCriticalHitsAgainstUserSi
crit_stage = 0
if b.ability_active?
crit_stage = Battle::AbilityEffects.triggerCriticalCalcFromTarget(b.battler.ability,
b.battler, b.battler, crit_stage)
b.battler, b.battler, move.move, crit_stage)
next if crit_stage < 0
end
if b.item_active?
crit_stage = Battle::ItemEffects.triggerCriticalCalcFromTarget(b.battler.item,
b.battler, b.battler, crit_stage)
b.battler, b.battler, move.move, crit_stage)
next if crit_stage < 0
end
user_side_immune = false
@@ -505,12 +505,12 @@ Battle::AI::Handlers::MoveEffectScore.add("StartPreventCriticalHitsAgainstUserSi
crit_stage = 0
if crit_stage >= 0 && b.ability_active?
crit_stage = Battle::AbilityEffects.triggerCriticalCalcFromUser(b.battler.ability,
b.battler, user.battler, crit_stage)
b.battler, user.battler, move.move, crit_stage)
next if crit_stage < 0
end
if crit_stage >= 0 && b.item_active?
crit_stage = Battle::ItemEffects.triggerCriticalCalcFromUser(b.battler.item,
b.battler, user.battler, crit_stage)
b.battler, user.battler, move.move, crit_stage)
next if crit_stage < 0
end
if crit_stage >= 0 && crit_stage < 50

View File

@@ -205,12 +205,12 @@ module Battle::AbilityEffects
DamageCalcFromTargetAlly.trigger(ability, user, target, move, mults, power, type)
end
def self.triggerCriticalCalcFromUser(ability, user, target, crit_stage)
return trigger(CriticalCalcFromUser, ability, user, target, crit_stage, ret: crit_stage)
def self.triggerCriticalCalcFromUser(ability, user, target, move, crit_stage)
return trigger(CriticalCalcFromUser, ability, user, target, move, crit_stage, ret: crit_stage)
end
def self.triggerCriticalCalcFromTarget(ability, user, target, crit_stage)
return trigger(CriticalCalcFromTarget, ability, user, target, crit_stage, ret: crit_stage)
def self.triggerCriticalCalcFromTarget(ability, user, target, move, crit_stage)
return trigger(CriticalCalcFromTarget, ability, user, target, move, crit_stage, ret: crit_stage)
end
#=============================================================================
@@ -1693,13 +1693,13 @@ Battle::AbilityEffects::DamageCalcFromTargetAlly.add(:FRIENDGUARD,
#===============================================================================
Battle::AbilityEffects::CriticalCalcFromUser.add(:MERCILESS,
proc { |ability, user, target, c|
proc { |ability, user, target, move, c|
next 99 if target.poisoned?
}
)
Battle::AbilityEffects::CriticalCalcFromUser.add(:SUPERLUCK,
proc { |ability, user, target, c|
proc { |ability, user, target, move, c|
next c + 1
}
)
@@ -1709,7 +1709,7 @@ Battle::AbilityEffects::CriticalCalcFromUser.add(:SUPERLUCK,
#===============================================================================
Battle::AbilityEffects::CriticalCalcFromTarget.add(:BATTLEARMOR,
proc { |ability, user, target, c|
proc { |ability, user, target, move, c|
next -1
}
)
@@ -1847,7 +1847,7 @@ Battle::AbilityEffects::OnBeingHit.add(:EFFECTSPORE,
msg = _INTL("{1}'s {2} made {3} fall asleep!", target.pbThis,
target.abilityName, user.pbThis(true))
end
user.pbSleep(msg)
user.pbSleep(target, msg)
end
when 1
if user.pbCanPoison?(target, Battle::Scene::USE_ABILITY_SPLASH)

View File

@@ -125,12 +125,12 @@ module Battle::ItemEffects
DamageCalcFromTarget.trigger(item, user, target, move, mults, power, type)
end
def self.triggerCriticalCalcFromUser(item, user, target, crit_stage)
return trigger(CriticalCalcFromUser, item, user, target, crit_stage, ret: crit_stage)
def self.triggerCriticalCalcFromUser(item, user, target, move, crit_stage)
return trigger(CriticalCalcFromUser, item, user, target, move, crit_stage, ret: crit_stage)
end
def self.triggerCriticalCalcFromTarget(item, user, target, crit_stage)
return trigger(CriticalCalcFromTarget, item, user, target, crit_stage, ret: crit_stage)
def self.triggerCriticalCalcFromTarget(item, user, target, move, crit_stage)
return trigger(CriticalCalcFromTarget, item, user, target, move, crit_stage, ret: crit_stage)
end
#=============================================================================
@@ -1280,13 +1280,13 @@ Battle::ItemEffects::DamageCalcFromTarget.add(:YACHEBERRY,
#===============================================================================
Battle::ItemEffects::CriticalCalcFromUser.add(:LUCKYPUNCH,
proc { |item, user, target, c|
proc { |item, user, target, move, c|
next c + 2 if user.isSpecies?(:CHANSEY)
}
)
Battle::ItemEffects::CriticalCalcFromUser.add(:RAZORCLAW,
proc { |item, user, target, c|
proc { |item, user, target, move, c|
next c + 1
}
)
@@ -1294,7 +1294,7 @@ Battle::ItemEffects::CriticalCalcFromUser.add(:RAZORCLAW,
Battle::ItemEffects::CriticalCalcFromUser.copy(:RAZORCLAW, :SCOPELENS)
Battle::ItemEffects::CriticalCalcFromUser.add(:LEEK,
proc { |item, user, target, c|
proc { |item, user, target, move, c|
next c + 2 if user.isSpecies?(:FARFETCHD) || user.isSpecies?(:SIRFETCHD)
}
)