Class: Battle::Effects::Ability::DesolateLand

Inherits:
Battle::Effects::Ability show all
Defined in:
scripts/01600 Alpha 25 Battle Engine/04000 Effects/00700 Ability Effects/00100 Desolate Land - Primordial Sea.rb

Direct Known Subclasses

PrimordialSea

Constant Summary collapse

WEATHERS =

Liste des temps qui peuvent changer

%i[hardsun hardrain wind]

Instance Attribute Summary

Attributes inherited from Battle::Effects::Ability

#affect_allies, #db_symbol, #target

Instance Method Summary collapse

Methods inherited from Battle::Effects::Ability

#initialize, new, register

Methods inherited from EffectBase

#base_power_multiplier, #can_attack_hit_out_of_reach?, #chance_of_hit_multiplier, #counter=, #dead?, #effect_chance_modifier, #force_next_move?, #initialize, #kill, #mod1_multiplier, #mod2_multiplier, #mod3_multiplier, #name, #on_delete, #on_end_turn_event, #on_fterrain_prevention, #on_held_item_use_prevention, #on_move_ability_immunity, #on_move_disabled_check, #on_move_prevention_target, #on_move_prevention_user, #on_move_priority_change, #on_move_type_change, #on_post_accuracy_check, #on_post_action_event, #on_post_damage, #on_post_damage_death, #on_post_fterrain_change, #on_post_item_change, #on_post_status_change, #on_post_weather_change, #on_pre_item_change, #on_single_type_multiplier_overwrite, #on_stat_change, #on_stat_change_post, #on_stat_decrease_prevention, #on_stat_increase_prevention, #on_status_prevention, #on_switch_passthrough, #on_switch_prevention, #on_transform_event, #on_two_turn_shortcut, #out_of_reach?, #rapid_spin_affected?, #sp_atk_multiplier, #sp_def_multiplier, #spd_modifier, #targetted?, #update_counter

Constructor Details

This class inherits a constructor from Battle::Effects::Ability

Instance Method Details

#on_damage_prevention(handler, hp, target, launcher, skill) ⇒ :prevent, ...

Function called when a damage_prevention is checked

Parameters:

Returns:

  • (:prevent, Integer, nil)

    :prevent if the damage cannot be applied, Integer if the hp variable should be updated



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'scripts/01600 Alpha 25 Battle Engine/04000 Effects/00700 Ability Effects/00100 Desolate Land - Primordial Sea.rb', line 32

def on_damage_prevention(handler, hp, target, launcher, skill)
  return if target != @target

  if %i[rain_dance sunny_day hail sandstorm].include?(skill&.db_symbol)
    return handler.prevent_change do
      handler.scene.visual.show_ability(target)
      handler.scene.display_message_and_wait(parse_text_with_pokemon(18, temps, target))
    end
  end
  return unless typeskill(skill) && env?
  return unless launcher&.can_be_lowered_or_canceled?

  return handler.prevent_change do
    handler.scene.visual.show_ability(target)
    handler.scene.display_message_and_wait(parse_text_with_pokemon(18, prevent, target))
  end
end

#on_switch_event(handler, who, with)

Function called when a Pokemon has actually switched with another one

Parameters:



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'scripts/01600 Alpha 25 Battle Engine/04000 Effects/00700 Ability Effects/00100 Desolate Land - Primordial Sea.rb', line 11

def on_switch_event(handler, who, with)
  if with == @target
    weather_handler = handler.logic.weather_change_handler
    return unless weather_handler.weather_appliable?(env)

    handler.scene.visual.show_ability(with)
    weather_handler.weather_change(env, nil)
    handler.scene.visual.show_rmxp_animation(with, anim)
  elsif who == @target
    handler.logic.weather_change_handler.weather_change(:none, 0)
    handler.scene.display_message_and_wait(parse_text_with_pokemon(18, msg, who))
  end
end

#on_weather_prevention(handler, weather_type, last_weather) ⇒ :prevent?

Function called when a weather_prevention is checked

Parameters:

  • handler (Battle::Logic::WeatherChangeHandler)
  • weather_type (Symbol)

    :none, :rain, :sunny, :sandstorm, :hail, :fog, :hardsun, :hardrain

  • last_weather (Symbol)

    :none, :rain, :sunny, :sandstorm, :hail, :fog, :hardsun, :hardrain

Returns:

  • (:prevent, nil)

    :prevent if the status cannot be applied



55
56
57
58
59
60
61
62
# File 'scripts/01600 Alpha 25 Battle Engine/04000 Effects/00700 Ability Effects/00100 Desolate Land - Primordial Sea.rb', line 55

def on_weather_prevention(handler, weather_type, last_weather)
  return if WEATHERS.include?(weather_type)

  return handler.prevent_change do
    handler.scene.visual.show_ability(@target)
    handler.scene.display_message_and_wait(parse_text_with_pokemon(18, temps, target))
  end
end