mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-01-22 14:26:01 +00:00
Made various changes to effects, added some Gen 8 mechanics
This commit is contained in:
@@ -84,7 +84,7 @@ class PokeBattle_Battler
|
||||
end
|
||||
# Assault Vest (prevents choosing status moves but doesn't prevent
|
||||
# executing them)
|
||||
if hasActiveItem?(:ASSAULTVEST) && move.statusMove? && commandPhase
|
||||
if hasActiveItem?(:ASSAULTVEST) && move.statusMove? && move.id != :MEFIRST && commandPhase
|
||||
if showMessages
|
||||
msg = _INTL("The effects of the {1} prevent status moves from being used!",
|
||||
itemName)
|
||||
@@ -345,7 +345,7 @@ class PokeBattle_Battler
|
||||
@battle.successStates[user.index].protected = true
|
||||
if move.pbContactMove?(user) && user.affectedByContactEffect?
|
||||
if user.pbCanLowerStatStage?(:ATTACK)
|
||||
user.pbLowerStatStage(:ATTACK,2,nil)
|
||||
user.pbLowerStatStage(:ATTACK, (Settings::MECHANICS_GENERATION >= 8) ? 1 : 2, nil)
|
||||
end
|
||||
end
|
||||
return false
|
||||
|
||||
@@ -48,6 +48,7 @@ begin
|
||||
Ingrain = 42
|
||||
Instruct = 43
|
||||
Instructed = 44
|
||||
JawLock = 994
|
||||
KingsShield = 45
|
||||
LaserFocus = 46
|
||||
LeechSeed = 47
|
||||
|
||||
@@ -644,6 +644,7 @@ BattleHandlers::MoveImmunityTargetAbility.add(:SAPSIPPER,
|
||||
BattleHandlers::MoveImmunityTargetAbility.add(:SOUNDPROOF,
|
||||
proc { |ability,user,target,move,type,battle|
|
||||
next false if !move.soundMove?
|
||||
next false if Settings::MECHANICS_GENERATION >= 8 && user.index == target.index
|
||||
battle.pbShowAbilitySplash(target)
|
||||
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
|
||||
battle.pbDisplay(_INTL("It doesn't affect {1}...",target.pbThis(true)))
|
||||
@@ -1158,7 +1159,7 @@ BattleHandlers::DamageCalcTargetAbility.add(:FLOWERGIFT,
|
||||
BattleHandlers::DamageCalcTargetAbility.add(:FLUFFY,
|
||||
proc { |ability,user,target,move,mults,baseDmg,type|
|
||||
mults[:final_damage_multiplier] *= 2 if move.calcType == :FIRE
|
||||
mults[:final_damage_multiplier] /= 2 if move.contactMove?
|
||||
mults[:final_damage_multiplier] /= 2 if move.pbContactMove?
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1940,9 +1941,16 @@ BattleHandlers::EOREffectAbility.add(:MOODY,
|
||||
proc { |ability,battler,battle|
|
||||
randomUp = []
|
||||
randomDown = []
|
||||
GameData::Stat.each_battle do |s|
|
||||
randomUp.push(s.id) if battler.pbCanRaiseStatStage?(s.id, battler)
|
||||
randomDown.push(s.id) if battler.pbCanLowerStatStage?(s.id, battler)
|
||||
if Settings::MECHANICS_GENERATION >= 8
|
||||
GameData::Stat.each_main_battle do |s|
|
||||
randomUp.push(s.id) if battler.pbCanRaiseStatStage?(s.id, battler)
|
||||
randomDown.push(s.id) if battler.pbCanLowerStatStage?(s.id, battler)
|
||||
end
|
||||
else
|
||||
GameData::Stat.each_battle do |s|
|
||||
randomUp.push(s.id) if battler.pbCanRaiseStatStage?(s.id, battler)
|
||||
randomDown.push(s.id) if battler.pbCanLowerStatStage?(s.id, battler)
|
||||
end
|
||||
end
|
||||
next if randomUp.length==0 && randomDown.length==0
|
||||
battle.pbShowAbilitySplash(battler)
|
||||
@@ -1964,7 +1972,8 @@ BattleHandlers::EOREffectAbility.add(:SPEEDBOOST,
|
||||
proc { |ability,battler,battle|
|
||||
# A Pokémon's turnCount is 0 if it became active after the beginning of a
|
||||
# round
|
||||
if battler.turnCount>0 && battler.pbCanRaiseStatStage?(:SPEED,battler)
|
||||
if battler.turnCount > 0 && battle.choices[battler.index][0] != :Run &&
|
||||
battler.pbCanRaiseStatStage?(:SPEED, battler)
|
||||
battler.pbRaiseStatStageByAbility(:SPEED,1,battler)
|
||||
end
|
||||
}
|
||||
@@ -2270,8 +2279,14 @@ BattleHandlers::AbilityOnSwitchIn.add(:INTIMIDATE,
|
||||
battle.pbShowAbilitySplash(battler)
|
||||
battle.eachOtherSideBattler(battler.index) do |b|
|
||||
next if !b.near?(battler)
|
||||
check_item = true
|
||||
if b.hasActiveAbility?(:CONTRARY)
|
||||
check_item = false if b.statStageAtMax?(:ATTACK)
|
||||
else
|
||||
check_item = false if b.statStageAtMin?(:ATTACK)
|
||||
end
|
||||
b.pbLowerAttackStatStageIntimidate(battler)
|
||||
b.pbItemOnIntimidatedCheck
|
||||
b.pbItemOnIntimidatedCheck if check_item
|
||||
end
|
||||
battle.pbHideAbilitySplash(battler)
|
||||
}
|
||||
@@ -2371,6 +2386,40 @@ BattleHandlers::AbilityOnSwitchIn.add(:UNNERVE,
|
||||
# AbilityOnSwitchOut handlers
|
||||
#===============================================================================
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.add(:IMMUNITY,
|
||||
proc { |ability, battler, endOfBattle|
|
||||
next if battler.status != :POISON
|
||||
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
|
||||
battler.status = :NONE
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.add(:INSOMNIA,
|
||||
proc { |ability, battler, endOfBattle|
|
||||
next if battler.status != :SLEEP
|
||||
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
|
||||
battler.status = :NONE
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.copy(:INSOMNIA, :VITALSPIRIT)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.add(:LIMBER,
|
||||
proc { |ability, battler, endOfBattle|
|
||||
next if battler.status != :PARALYSIS
|
||||
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
|
||||
battler.status = :NONE
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.add(:MAGMAARMOR,
|
||||
proc { |ability, battler, endOfBattle|
|
||||
next if battler.status != :FROZEN
|
||||
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
|
||||
battler.status = :NONE
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.add(:NATURALCURE,
|
||||
proc { |ability,battler,endOfBattle|
|
||||
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
|
||||
@@ -2386,6 +2435,16 @@ BattleHandlers::AbilityOnSwitchOut.add(:REGENERATOR,
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.add(:WATERVEIL,
|
||||
proc { |ability, battler, endOfBattle|
|
||||
next if battler.status != :BURN
|
||||
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
|
||||
battler.status = :NONE
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::AbilityOnSwitchOut.copy(:WATERVEIL, :WATERBUBBLE)
|
||||
|
||||
#===============================================================================
|
||||
# AbilityChangeOnBattlerFainting handlers
|
||||
#===============================================================================
|
||||
|
||||
@@ -30,19 +30,19 @@ class PokeBattle_AI
|
||||
# Item categories
|
||||
hpItems = {
|
||||
:POTION => 20,
|
||||
:SUPERPOTION => 50,
|
||||
:HYPERPOTION => 200,
|
||||
:SUPERPOTION => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 60 : 50,
|
||||
:HYPERPOTION => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 120 : 200,
|
||||
:MAXPOTION => 999,
|
||||
:BERRYJUICE => 20,
|
||||
:SWEETHEART => 20,
|
||||
:FRESHWATER => 50,
|
||||
:SODAPOP => 60,
|
||||
:LEMONADE => 80,
|
||||
:FRESHWATER => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 30 : 50,
|
||||
:SODAPOP => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 50 : 60,
|
||||
:LEMONADE => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 70 : 80,
|
||||
:MOOMOOMILK => 100,
|
||||
:ORANBERRY => 10,
|
||||
:SITRUSBERRY => battler.totalhp/4,
|
||||
:ENERGYPOWDER => 50,
|
||||
:ENERGYROOT => 200
|
||||
:ENERGYPOWDER => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 60 : 50,
|
||||
:ENERGYROOT => (Settings::REBALANCED_HEALING_ITEM_AMOUNTS) ? 120 : 200
|
||||
}
|
||||
hpItems[:RAGECANDYBAR] = 20 if !Settings::RAGE_CANDY_BAR_CURES_STATUS_PROBLEMS
|
||||
fullRestoreItems = [
|
||||
|
||||
@@ -1356,37 +1356,37 @@ BattleHandlers::EVGainModifierItem.add(:MACHOBRACE,
|
||||
|
||||
BattleHandlers::EVGainModifierItem.add(:POWERANKLET,
|
||||
proc { |item,battler,evYield|
|
||||
evYield[:SPEED] += 4
|
||||
evYield[:SPEED] += (Settings::MORE_EVS_FROM_POWER_ITEMS) ? 8 : 4
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::EVGainModifierItem.add(:POWERBAND,
|
||||
proc { |item,battler,evYield|
|
||||
evYield[:SPECIAL_DEFENSE] += 4
|
||||
evYield[:SPECIAL_DEFENSE] += (Settings::MORE_EVS_FROM_POWER_ITEMS) ? 8 : 4
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::EVGainModifierItem.add(:POWERBELT,
|
||||
proc { |item,battler,evYield|
|
||||
evYield[:DEFENSE] += 4
|
||||
evYield[:DEFENSE] += (Settings::MORE_EVS_FROM_POWER_ITEMS) ? 8 : 4
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::EVGainModifierItem.add(:POWERBRACER,
|
||||
proc { |item,battler,evYield|
|
||||
evYield[:ATTACK] += 4
|
||||
evYield[:ATTACK] += (Settings::MORE_EVS_FROM_POWER_ITEMS) ? 8 : 4
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::EVGainModifierItem.add(:POWERLENS,
|
||||
proc { |item,battler,evYield|
|
||||
evYield[:SPECIAL_ATTACK] += 4
|
||||
evYield[:SPECIAL_ATTACK] += (Settings::MORE_EVS_FROM_POWER_ITEMS) ? 8 : 4
|
||||
}
|
||||
)
|
||||
|
||||
BattleHandlers::EVGainModifierItem.add(:POWERWEIGHT,
|
||||
proc { |item,battler,evYield|
|
||||
evYield[:HP] += 4
|
||||
evYield[:HP] += (Settings::MORE_EVS_FROM_POWER_ITEMS) ? 8 : 4
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ BallHandlers::ModifyCatchRate.add(:LUREBALL,proc { |ball,catchRate,battle,battle
|
||||
|
||||
BallHandlers::ModifyCatchRate.add(:HEAVYBALL,proc { |ball,catchRate,battle,battler,ultraBeast|
|
||||
next 0 if catchRate==0
|
||||
weight = battler.pbWeight
|
||||
weight = battler.pokemon.species_data.base_stats[:SPEED]
|
||||
if Settings::NEW_POKE_BALL_CATCH_RATES
|
||||
if weight>=3000; catchRate += 30
|
||||
elsif weight>=2000; catchRate += 20
|
||||
@@ -164,7 +164,7 @@ BallHandlers::ModifyCatchRate.add(:SPORTBALL,proc { |ball,catchRate,battle,battl
|
||||
})
|
||||
|
||||
BallHandlers::ModifyCatchRate.add(:DREAMBALL,proc { |ball,catchRate,battle,battler,ultraBeast|
|
||||
catchRate *= 4 if battler.status == :SLEEP
|
||||
catchRate *= 4 if battler.asleep?
|
||||
next catchRate
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user