- 428
- Posts
- 5
- Years
- Zekko
- Seen Nov 21, 2023
If a weather condition like Sun or Hail is active, all moves have a small chance to cause crashes inconsistently. The error messages claim * is undefined. Sometimes moves work and, if weather effects are active, sometimes they crash. If it was a specific move I'd know what move to look at, but I think my Weather code is the problem.
Code:
# Weather
case @battle.pbWeather
when :Sun, :HarshSun
if type == :FIRE
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
elsif type == :GRASS
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
elsif type == :WATER
multipliers[:final_damage_multiplier] /= 2 if !target.hasUtilityUmbrella?
end
if target.pbHasType?(:FIRE)
multipliers[:defense_multiplier] *= 2
multipliers[:special_defense_multiplier] *= 2
end
if target.pbHasType?(:GRASS)
multipliers[:defense_multiplier] *= 2
multipliers[:special_defense_multiplier] *= 2
end
when :Hail
if type == :FIRE
multipliers[:final_damage_multiplier] /= 2 if !target.hasUtilityUmbrella?
elsif type == :ICE
multipliers[:final_damage_multiplier] *= 2.5 if !target.hasUtilityUmbrella?
end
if target.pbHasType?(:ICE)
multipliers[:defense_multiplier] *= 2.5
multipliers[:special_defense_multiplier] *= 2.5
end
when :Rain, :HeavyRain
if type == :FIRE
multipliers[:final_damage_multiplier] /= 2 if !target.hasUtilityUmbrella?
elsif type == :ELECTRIC
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
elsif type == :GRASS
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
elsif type == :WATER
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
end
if target.pbHasType?(:WATER)
multipliers[:defense_multiplier] *= 2
multipliers[:special_defense_multiplier] *= 2
end
if target.pbHasType?(:ELECTRIC)
multipliers[:defense_multiplier] *= 2
multipliers[:special_defense_multiplier] *= 2
end
if target.pbHasType?(:GRASS)
multipliers[:defense_multiplier] *= 2
multipliers[:special_defense_multiplier] *= 2
end
when :Sandstorm
if type == :GROUND
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
elsif type == :ROCK
multipliers[:final_damage_multiplier] *= 2 if !target.hasUtilityUmbrella?
elsif type == :STEEL
multipliers[:final_damage_multiplier] *= 1.5 if !target.hasUtilityUmbrella?
end
if target.pbHasType?(:ROCK)
multipliers[:defense_multiplier] *= 2
if target.pbHasType?(:GROUND)
multipliers[:defense_multiplier] *= 2
if target.pbHasType?(:STEEL)
multipliers[:defense_multiplier] *= 1.5
end
end
end
end