Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #==============================================================================
- # ■ Enemy Battle Effects
- # @version 0.32 10/03/19
- # @author sabakan
- # @license: MIT License
- #------------------------------------------------------------------------------
- # A script that changes enemy battle effects.
- # You can change the following.
- #
- # ■ When the enemy is damaged
- # Default: blink
- # ↓
- # This script: random shake
- #
- # ■ When an enemy attacks
- # Default: white flash
- # ↓
- # This script: move down (+ white flash)
- #
- # ■ When an enemy appears (0 turn only)
- # Default: increasingly opaque
- # ↓
- # This script :: move up and down + + down
- #
- #==============================================================================
- module Saba
- module BattleEffect
- # Set to true if you want the effect to appear when enemy appears.
- APPEAR_ENABLED = true
- # Speed at the time of appearance.
- APPEAR_SPEED = 1.9
- # Set to true if you want the sound to play when the enemy appears.
- APPEAR_SE_ENABLED = true
- # An integer from 0 to 16 The larger the sound, the faster it sounds.
- APPEAR_SE_TIMING = 5
- # Stting for the sound effect.
- APPEAR_SE = "Audio/SE/Battle2"
- APPEAR_SE_VOLUME = 100
- APPEAR_SE_PITCH = 95
- # Set to true to enable shake when damage is done to the enemy.
- SHAKE_ENABLED = true
- # Time of the shake.
- SHAKE_DURATION = 8
- # Intensity of the shake.
- SHAKE_POWER = 8
- # Speed of the shake.
- SHAKE_SPEED = 10
- # Set to true if you also shake the picture at the same time.
- SHAKE_PICTURE = false
- # Set to true to enable movement when the enemy attacks.
- MOVE_ENABLED = true
- # Set to true if you also want to enable white flash when the enemy attacks.
- WHITE_FLASH_ENABLED = true
- # If you press the button to fast forward, it will be halved automatically.
- MOVE_DURATION = 80
- # Distance of movement.
- MOVE_DISTANCE = 20
- end
- end
- class Game_Temp
- attr_accessor :appear_se_play
- end
- class Spriteset_Battle
- #--------------------------------------------------------------------------
- # ● Create enemy characters sprite
- #--------------------------------------------------------------------------
- alias saba_battle_effect_create_enemies create_enemies
- def create_enemies
- saba_battle_effect_create_enemies
- for sprite in @enemy_sprites
- sprite.picture_viewport = @viewport2
- end
- end
- end
- class Game_Battler
- attr_accessor :shake
- attr_accessor :move
- def blink=(value)
- @blink = value
- if Saba::BattleEffect::SHAKE_ENABLED
- @shake = value if value
- end
- end
- def white_flash=(value)
- @white_flash = value
- if Saba::BattleEffect::MOVE_ENABLED && (! escape_action?)
- @move = value if value
- end
- end
- def escape_action?
- return (action.kind == 0 and action.basic == 2)
- end
- end
- class Sprite_Battler
- SHAKE = 10 # shake
- MOVE = 11 # move
- attr_writer :picture_viewport
- alias saba_battle_effect_initialize initialize
- def initialize(viewport, battler = nil)
- saba_battle_effect_initialize(viewport, battler)
- @shake = 0
- @shake_power = Saba::BattleEffect::SHAKE_POWER
- @shake_speed = Saba::BattleEffect::SHAKE_SPEED
- @shake_direction = 1
- $game_temp.appear_se_play = false
- end
- alias saba_battle_effect_update update
- def update
- duration = @effect_duration
- saba_battle_effect_update
- if @battler != nil && duration > 0 && @effect_duration == 0
- @use_sprite = @battler.use_sprite?
- if @use_sprite && @picture_viewport && Saba::BattleEffect::SHAKE_PICTURE
- @picture_viewport.ox = 0
- @picture_viewport.oy = 0
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● New effect settings
- #--------------------------------------------------------------------------
- alias saba_battle_effect_setup_new_effect setup_new_effect
- def setup_new_effect
- white_flash = @battler.white_flash
- saba_battle_effect_setup_new_effect
- if @battler.shake
- @effect_type = SHAKE
- @effect_duration = Saba::BattleEffect::SHAKE_DURATION
- @battler.shake = false
- end
- if @battler.move && white_flash
- @effect_type = MOVE
- @effect_duration = Saba::BattleEffect::MOVE_DURATION
- @battler.move = false
- end
- end
- #--------------------------------------------------------------------------
- # ● Effect updates
- #--------------------------------------------------------------------------
- alias saba_battle_effect_update_effect update_effect
- def update_effect
- if @effect_duration > 0
- case @effect_type
- when SHAKE
- update_shake
- @effect_duration -= 1
- return
- when MOVE
- update_move
- @effect_duration -= 1
- @effect_duration -= 1 if $scene.show_fast?
- return
- end
- end
- saba_battle_effect_update_effect
- end
- #--------------------------------------------------------------------------
- # ● Movement effect update
- #--------------------------------------------------------------------------
- def update_move
- duration = Saba::BattleEffect::MOVE_DURATION
- if Saba::BattleEffect::WHITE_FLASH_ENABLED
- temp = @effect_duration
- @effect_duration = 16 - (duration - @effect_duration)
- update_whiten
- @effect_duration = temp
- end
- @distance = 0
- if @effect_duration <= 1
- @distance = 0
- else
- distance = Saba::BattleEffect::MOVE_DISTANCE
- if @effect_duration > duration / 2
- @distance = distance * (duration - @effect_duration) * 2 / duration
- else
- @distance = distance * @effect_duration * 2 / duration
- end
- end
- if @use_sprite && (! @battler.actor?)
- self.y = @battler.screen_y + @distance.to_i
- end
- end
- #--------------------------------------------------------------------------
- # ● Shake effect updates
- #--------------------------------------------------------------------------
- def update_shake
- self.blend_type = 0
- self.color.set(0, 0, 0, 0)
- self.opacity = 255
- delta = (@shake_power * @shake_speed * @shake_direction) / 10.0
- if @effect_duration <= 1 and @shake * (@shake + delta) < 0
- @shake = 0
- else
- @shake += delta
- end
- if @shake > @shake_power * 2
- @shake_direction = -1
- end
- if @shake < - @shake_power * 2
- @shake_direction = 1
- end
- if @use_sprite && (! @battler.actor?)
- x_value = rand(@shake) * random_direction
- self.x = @battler.screen_x + x_value
- y_value = rand(@shake) * random_direction
- self.y = @battler.screen_y + y_value
- self.z = @battler.screen_z
- if @picture_viewport && Saba::BattleEffect::SHAKE_PICTURE
- @picture_viewport.ox = x_value
- @picture_viewport.oy = y_value
- end
- end
- end
- def random_direction
- if rand(2) == 0
- return 1
- else
- return -1
- end
- end
- #--------------------------------------------------------------------------
- # ● Update appearance effects
- #--------------------------------------------------------------------------
- alias saba_battle_effect_update_appear update_appear
- def update_appear
- timing = Saba::BattleEffect::APPEAR_SE_TIMING
- if @effect_duration == timing && $game_troop.turn_count == 0
- if Saba::BattleEffect::APPEAR_SE_ENABLED && $game_temp.appear_se_play != true
- se = Saba::BattleEffect::APPEAR_SE
- volume = Saba::BattleEffect::APPEAR_SE_VOLUME
- pitch = Saba::BattleEffect::APPEAR_SE_PITCH
- Audio.se_play(se, volume, pitch)
- $game_temp.appear_se_play = true
- end
- end
- saba_battle_effect_update_appear
- return unless Saba::BattleEffect::APPEAR_ENABLED
- if @use_sprite && (! @battler.actor?) && $game_troop.turn_count == 0
- speed = Saba::BattleEffect::APPEAR_SPEED
- self.y = @battler.screen_y - (@effect_duration * Saba::BattleEffect::APPEAR_SPEED).to_i
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement