Advertisement
Talonos

Shanghai's Field Effects

Apr 25th, 2011
1,566
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.54 KB | None | 0 0
  1. #===============================================================================
  2. #
  3. # Shanghai Simple Script - Field Effects
  4. # Last Date Updated: 2010.06.19
  5. # Level: Normal
  6. #
  7. # This script allows some skills to place status effects that affect the entire
  8. # enemy party and ally party. Only one field effect can exist at a time.
  9. #===============================================================================
  10. # Instructions
  11. # -----------------------------------------------------------------------------
  12. # To install this script, open up your script editor and copy/paste this script
  13. # to an open slot below ▼ Materials but above ▼ Main. Remember to save.
  14. #
  15. # <field effect: x>
  16. # Place this in a skill or item's notebox to make it replace the current field
  17. # effect with state x.
  18. #
  19. # <remove field effect>
  20. # Place this in a skill or item's notebox to make it clear the field effect.
  21. #===============================================================================
  22.  
  23. $imported = {} if $imported == nil
  24. $imported["FieldEffects"] = true
  25.  
  26. module SSS
  27.   # This places where the field effect icon appears on the screen. This is the
  28.   # center of the field effect icon, which is 48x48 in size.
  29.   FIELD_EFFECT_X = 400
  30.   FIELD_EFFECT_Y = 140
  31.   # This adjusts the field effect base opacity and the vanish rate.
  32.   FIELD_EFFECT_OPACITY = 255
  33.   FIELD_EFFECT_VANISH  = 8
  34. end
  35.  
  36. #==============================================================================
  37. # RPG::UsableItem
  38. #==============================================================================
  39.  
  40. class RPG::UsableItem < RPG::BaseItem
  41.   #--------------------------------------------------------------------------
  42.   # * Field Effect
  43.   #--------------------------------------------------------------------------
  44.   def field_effect
  45.     return @field_effect if @field_effect != nil
  46.     @field_effect = 0
  47.     self.note.split(/[\r\n]+/).each { |line|
  48.       case line
  49.       when /<(?:FIELD_EFFECT|field effect):[ ](\d+)>/i
  50.         @field_effect = $data_states[$1.to_i]
  51.         @remove_field_effect = false
  52.       end
  53.     }
  54.     return @field_effect
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # * Remove Field Effect
  58.   #--------------------------------------------------------------------------
  59.   def remove_field_effect
  60.     return @remove_field_effect if @remove_field_effect != nil
  61.     @remove_field_effect = false
  62.     self.note.split(/[\r\n]+/).each { |line|
  63.       case line
  64.       when /<(?:REMOVE_FIELD_EFFECT|remove field effect)>/i
  65.         @remove_field_effect = true
  66.         @field_effect = 0
  67.       end
  68.     }
  69.     return @remove_field_effect
  70.   end
  71. end
  72.  
  73. #==============================================================================
  74. # ** Game_Temp
  75. #==============================================================================
  76.  
  77. class Game_Temp
  78.   #--------------------------------------------------------------------------
  79.   # * Public Instance Variables
  80.   #--------------------------------------------------------------------------
  81.   attr_accessor :field_effect
  82. end
  83.  
  84. #==============================================================================
  85. # ** Game_Battler
  86. #==============================================================================
  87.  
  88. class Game_Battler
  89.   #--------------------------------------------------------------------------
  90.   # * Get Current States as an Object Array
  91.   #--------------------------------------------------------------------------
  92.   alias states_sss_field_effects states unless $@
  93.   def states
  94.     result = states_sss_field_effects
  95.     result.push($game_temp.field_effect) unless $game_temp.field_effect.nil?
  96.     return result
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # * Apply Skill Effects
  100.   #--------------------------------------------------------------------------
  101.   alias skill_effect_sss_field_effects skill_effect unless $@
  102.   def skill_effect(user, skill)
  103.     skill_effect_sss_field_effects(user, skill)
  104.     return unless $scene.is_a?(Scene_Battle)
  105.     $game_temp.field_effect = skill.field_effect unless skill.field_effect == 0
  106.     $game_temp.field_effect = nil if skill.remove_field_effect
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # * Apply Item Effects
  110.   #--------------------------------------------------------------------------
  111.   alias item_effect_sss_field_effects item_effect unless $@
  112.   def item_effect(user, item)
  113.     item_effect_sss_field_effects(user, item)
  114.     return unless $scene.is_a?(Scene_Battle)
  115.     $game_temp.field_effect = item.field_effect unless item.field_effect == 0
  116.     $game_temp.field_effect = nil if item.remove_field_effect
  117.   end
  118. end
  119.  
  120. #==============================================================================
  121. # ** Spriteset_Battle
  122. #==============================================================================
  123.  
  124. class Spriteset_Battle
  125.   #--------------------------------------------------------------------------
  126.   # * Object Initialization
  127.   #--------------------------------------------------------------------------
  128.   alias initialize_sss_field_effects initialize unless $@
  129.   def initialize
  130.     $game_temp.field_effect = nil
  131.     @field_effect = nil
  132.     initialize_sss_field_effects
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # * Dispose
  136.   #--------------------------------------------------------------------------
  137.   alias dispose_sss_field_effects dispose unless $@
  138.   def dispose
  139.     dispose_sss_field_effects
  140.     dispose_field_effect
  141.     $game_temp.field_effect = nil
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # * Frame Update
  145.   #--------------------------------------------------------------------------
  146.   alias update_sss_field_effects update unless $@
  147.   def update
  148.     update_sss_field_effects
  149.     update_field_effects
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # * Update Field Effects
  153.   #--------------------------------------------------------------------------
  154.   def update_field_effects
  155.     create_field_effect if @field_effect != $game_temp.field_effect
  156.     dispose_field_effect if @field_effect.nil?
  157.     pulse_field_effect unless @field_effect.nil?
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # * Battle Engine Melody Update States
  161.   #--------------------------------------------------------------------------
  162.   def battle_engine_melody_update_states
  163.     return unless $imported["BattleEngineMelody"]
  164.     for member in $game_party.members + $game_troop.members
  165.       member.clear_battle_cache
  166.       member.update_maxhp = true
  167.       member.update_maxmp = true
  168.       member.update_states = true
  169.       member.update_commands = true
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # * Create Field Effect
  174.   #--------------------------------------------------------------------------
  175.   def create_field_effect
  176.     dispose_field_effect
  177.     battle_engine_melody_update_states
  178.     @field_effect = $game_temp.field_effect
  179.     @field_effect_sprite = Sprite_Base.new(@viewport3)
  180.     @field_effect_sprite.bitmap = Bitmap.new(24,24)
  181.     bitmap = Cache.system("Iconset")
  182.     icon_index = $game_temp.field_effect.icon_index
  183.     rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  184.     opacity = SSS::FIELD_EFFECT_OPACITY
  185.     @field_effect_sprite.bitmap.blt(0, 0, bitmap, rect, opacity)
  186.     @field_effect_sprite.ox = 12
  187.     @field_effect_sprite.oy = 12
  188.     @field_effect_sprite.x = SSS::FIELD_EFFECT_X
  189.     @field_effect_sprite.y = SSS::FIELD_EFFECT_Y
  190.     @field_effect_sprite.zoom_x = 2.0
  191.     @field_effect_sprite.zoom_y = 2.0
  192.     @pulse_effect_sprite = Sprite_Base.new(@viewport3)
  193.     @pulse_effect_sprite.bitmap = Bitmap.new(24,24)
  194.     @pulse_effect_sprite.bitmap.blt(0, 0, bitmap, rect, opacity)
  195.     @pulse_effect_sprite.ox = 12
  196.     @pulse_effect_sprite.oy = 12
  197.     @pulse_effect_sprite.x = SSS::FIELD_EFFECT_X
  198.     @pulse_effect_sprite.y = SSS::FIELD_EFFECT_Y
  199.     @pulse_effect_sprite.z = @field_effect_sprite.z + 1
  200.     @pulse_effect_sprite.zoom_x = 2.0
  201.     @pulse_effect_sprite.zoom_y = 2.0
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # * Dispose Field Effect
  205.   #--------------------------------------------------------------------------
  206.   def dispose_field_effect
  207.     return if @field_effect_sprite.nil?
  208.     @field_effect = $game_temp.field_effect
  209.     battle_engine_melody_update_states
  210.     @field_effect_sprite.dispose
  211.     @field_effect_sprite = nil
  212.     @pulse_effect_sprite.dispose
  213.     @pulse_effect_sprite = nil
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # * Pulse Field Effect
  217.   #--------------------------------------------------------------------------
  218.   def pulse_field_effect
  219.     @pulse_effect_sprite.zoom_x += 0.1
  220.     @pulse_effect_sprite.zoom_y += 0.1
  221.     @pulse_effect_sprite.opacity -= SSS::FIELD_EFFECT_VANISH
  222.     opacity = SSS::FIELD_EFFECT_OPACITY
  223.     @pulse_effect_sprite.opacity = opacity if @pulse_effect_sprite.zoom_x > 8.0
  224.     @pulse_effect_sprite.zoom_x = 2.0 if @pulse_effect_sprite.zoom_x > 8.0
  225.     @pulse_effect_sprite.zoom_y = 2.0 if @pulse_effect_sprite.zoom_y > 8.0
  226.     @field_effect_sprite.update
  227.     @pulse_effect_sprite.update
  228.   end
  229. end
  230.  
  231. #===============================================================================
  232. #
  233. # END OF FILE
  234. #
  235. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement