Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- #
- # Shanghai Simple Script - Fancy Deaths
- # Last Date Updated: 2010.05.09
- # Level: Normal
- #
- # This makes certain enemies die a fancy way if they have the fancy death tags
- # inside of their notebox. These were made for the default animations. If you
- # are using different animations, you can change the IDs these fancy deaths use.
- # Works for default battle system, Battle Engine Melody, and Tankentai.
- #===============================================================================
- # Instructions
- # -----------------------------------------------------------------------------
- # To install this script, open up your script editor and copy/paste this script
- # to an open slot below ▼ Materials but above ▼ Main. Remember to save.
- #
- # <fancy death: string>
- # Replace string with one of the ones below:
- # fire - Makes the enemy die in a fancy fiery death.
- # ice - Makes the enemy freeze and die.
- # elec - Makes the enemy spark and die.
- # water - Makes the enemy melt and die.
- # stone - Makes the enemy change to stone.
- # wind - Makes the enemy vanish with the wind.
- # holy - Makes the enemy disappear into light.
- # dark - Makes the enemy disappear into darkness.
- #===============================================================================
- $imported = {} if $imported == nil
- $imported["FancyDeaths"] = true
- module SSS
- # Fiery death animation IDs.
- FIERY_DEATH_ANI1 = 2
- FIERY_DEATH_ANI2 = 79
- # Icy death animation IDs.
- ICY_DEATH_ANI1 = 62
- ICY_DEATH_ANI2 = 3
- # Electric death animation IDs.
- ELECTRIC_DEATH_ANI1 = 18
- ELECTRIC_DEATH_ANI2 = 4
- # Watery death animation ID.
- WATERY_DEATH_ANI = 69
- # Stone death animation ID.
- STONE_DEATH_ANI = 40
- # Wind death animation ID.
- WINDY_DEATH_ANI1 = 73
- WINDY_DEATH_ANI2 = 31
- # Holy death animation ID.
- HOLY_DEATH_ANI1 = 42
- HOLY_DEATH_ANI2 = 75
- # Dark death animation ID.
- DARK_DEATH_ANI1 = 77
- DARK_DEATH_ANI2 = 51
- end
- #==============================================================================
- # RPG::Enemy
- #==============================================================================
- class RPG::Enemy
- #--------------------------------------------------------------------------
- # fancy death
- #--------------------------------------------------------------------------
- def fancy_death
- return @fancy_death if @fancy_death != nil
- @fancy_death = 0
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:FANCY_DEATH|fancy death):[ ](.*)>/i
- case $1.upcase
- when "FIRE"
- @fancy_death = 1
- when "ICE"
- @fancy_death = 2
- when "ELEC"
- @fancy_death = 3
- when "WATER"
- @fancy_death = 4
- when "STONE"
- @fancy_death = 5
- when "WIND"
- @fancy_death = 6
- when "HOLY"
- @fancy_death = 7
- when "DARK"
- @fancy_death = 8
- end
- end
- }
- return @fancy_death
- end
- end
- #==============================================================================
- # ** Sprite_Battler
- #==============================================================================
- class Sprite_Battler < Sprite_Base
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_accessor :effect_duration
- #--------------------------------------------------------------------------
- # * Set New Effect
- #--------------------------------------------------------------------------
- alias setup_new_effect_sss_fancy_deaths setup_new_effect unless $@
- def setup_new_effect
- if @battler.collapse and @battler.is_a?(Game_Enemy)
- if @battler.enemy.fancy_death > 0
- @battler.collapse = false
- @battler_visible = false
- case @battler.enemy.fancy_death
- when 1 # Fiery Death
- @effect_type = 574897410001
- @effect_duration = 169
- return
- when 2 # Icy Death
- @effect_type = 574897410002
- @effect_duration = 125
- return
- when 3 # Electric Death
- @effect_type = 574897410003
- @effect_duration = 97
- return
- when 4 # Watery Death
- @effect_type = 574897410004
- @effect_duration = 101
- return
- when 5 # Stone Death
- @effect_type = 574897410005
- @effect_duration = 81
- return
- when 6 # Windy Death
- @effect_type = 574897410006
- @effect_duration = 91
- return
- when 7 # Holy Death
- @effect_type = 574897410007
- @effect_duration = 106
- return
- when 8 # Dark Death
- @effect_type = 574897410008
- @effect_duration = 91
- return
- end
- end
- end
- setup_new_effect_sss_fancy_deaths
- end
- #--------------------------------------------------------------------------
- # * Update Effect
- #--------------------------------------------------------------------------
- alias update_effect_sss_fancy_deaths update_effect unless $@
- def update_effect
- if @effect_duration > 0
- case @effect_type
- when 574897410001
- update_fiery_death
- return
- when 574897410002
- update_icy_death
- return
- when 574897410003
- update_electric_death
- return
- when 574897410004
- update_watery_death
- return
- when 574897410005
- update_stone_death
- return
- when 574897410006
- update_windy_death
- return
- when 574897410007
- update_holy_death
- return
- when 574897410008
- update_dark_death
- return
- end
- end
- update_effect_sss_fancy_deaths
- end
- #--------------------------------------------------------------------------
- # * Start Death Animation
- #--------------------------------------------------------------------------
- def start_death_animation(animation, mirror)
- if $imported["BattleEngineMelody"]
- start_sub_animation(animation, mirror)
- else
- start_animation(animation, mirror)
- end
- end
- #--------------------------------------------------------------------------
- # * Update Fiery Death
- #--------------------------------------------------------------------------
- def update_fiery_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 168, 138, 108, 78
- self.color.set(255, 128, 128, 128)
- start_death_animation($data_animations[SSS::FIERY_DEATH_ANI1], false)
- when 48
- start_death_animation($data_animations[SSS::FIERY_DEATH_ANI2], false)
- when 0..47
- self.opacity = 256 - (48 - @effect_duration) * 6
- end
- end
- #--------------------------------------------------------------------------
- # * Update Icy Death
- #--------------------------------------------------------------------------
- def update_icy_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 124
- self.color.set(128, 128, 255, 128)
- start_death_animation($data_animations[SSS::ICY_DEATH_ANI1], false)
- when 48
- start_death_animation($data_animations[SSS::ICY_DEATH_ANI2], false)
- when 0..47
- self.opacity = 256 - (48 - @effect_duration) * 6
- end
- end
- #--------------------------------------------------------------------------
- # * Update Electric Death
- #--------------------------------------------------------------------------
- def update_electric_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 96
- self.color.set(255, 255, 128, 128)
- start_death_animation($data_animations[SSS::ELECTRIC_DEATH_ANI1], false)
- when 48
- start_death_animation($data_animations[SSS::ELECTRIC_DEATH_ANI2], false)
- when 0..47
- self.opacity = 256 - (48 - @effect_duration) * 6
- end
- end
- #--------------------------------------------------------------------------
- # * Update Watery Death
- #--------------------------------------------------------------------------
- def update_watery_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 100
- self.color.set(64, 64, 255, 128)
- self.wave_amp = 10
- self.wave_speed = 3600
- when 61..99
- self.wave_speed += 100
- when 60
- start_death_animation($data_animations[SSS::WATERY_DEATH_ANI], false)
- when 0..47
- self.opacity = 256 - (48 - @effect_duration) * 6
- end
- end
- #--------------------------------------------------------------------------
- # * Update Stone Death
- #--------------------------------------------------------------------------
- def update_stone_death
- @effect_duration -= 1
- case @effect_duration
- when 80
- start_death_animation($data_animations[SSS::STONE_DEATH_ANI], false)
- when 0..79
- opacity = [(80 - @effect_duration) * 4, 200].min
- self.color.set(200, 200, 200, opacity)
- end
- end
- #--------------------------------------------------------------------------
- # * Update Windy Death
- #--------------------------------------------------------------------------
- def update_windy_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 90
- self.color.set(128, 255, 128, 128)
- start_death_animation($data_animations[SSS::WINDY_DEATH_ANI1], false)
- when 45
- start_death_animation($data_animations[SSS::WINDY_DEATH_ANI2], false)
- self.visible = false
- when 0
- self.opacity = 0
- self.visible = true
- end
- end
- #--------------------------------------------------------------------------
- # * Update Holy Death
- #--------------------------------------------------------------------------
- def update_holy_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 105
- self.color.set(255, 255, 255, 128)
- start_death_animation($data_animations[SSS::HOLY_DEATH_ANI1], false)
- when 45
- start_death_animation($data_animations[SSS::HOLY_DEATH_ANI2], false)
- when 0..44
- self.opacity = 256 - (48 - @effect_duration) * 6
- end
- end
- #--------------------------------------------------------------------------
- # * Update Dark Death
- #--------------------------------------------------------------------------
- def update_dark_death
- @effect_duration -= 1
- self.blend_type = 1
- case @effect_duration
- when 90
- self.color.set(0, 0, 0, 128)
- start_death_animation($data_animations[SSS::DARK_DEATH_ANI1], false)
- when 60
- self.visible = false
- when 45
- start_death_animation($data_animations[SSS::DARK_DEATH_ANI2], false)
- when 0
- self.opacity = 0
- self.visible = true
- end
- end
- end
- #==============================================================================
- # ** Spriteset_Battle
- #==============================================================================
- class Spriteset_Battle
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_accessor :enemy_sprites
- end
- #==============================================================================
- # ** Scene_Battle
- #==============================================================================
- class Scene_Battle < Scene_Base
- #--------------------------------------------------------------------------
- # * wait_for_deaths
- #--------------------------------------------------------------------------
- def wait_for_deaths
- update_basic
- loop do
- amount = 0
- for sprite in @spriteset.enemy_sprites
- amount += 1 if sprite.effect_duration <= 0
- end
- break if amount >= @spriteset.enemy_sprites.size
- update_basic
- end
- end
- #--------------------------------------------------------------------------
- # * Process Victory
- #--------------------------------------------------------------------------
- alias process_victory_sss_fancy_deaths process_victory unless $@
- def process_victory
- if $imported["BattleEngineMelody"]
- @judge_win_loss = true
- pause_atb(true, true)
- @enemy_gauge_window.dispose if @enemy_gauge_window != nil
- @hide_battlecursor = true
- @party_input_flag = true
- @message_window.visible = true
- end
- wait_for_deaths
- process_victory_sss_fancy_deaths
- end
- end
- #===============================================================================
- #
- # END OF FILE
- #
- #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement