Advertisement
Guest User

Untitled

a guest
Apr 26th, 2011
756
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 6.93 KB | None | 0 0
  1. #===============================================================================
  2. #
  3. # Shanghai Simple Script - Equipment Break
  4. # Last Date Updated: 2010.06.14
  5. # Level: Normal
  6. #
  7. # This allows for enemies to temporarily break pieces of equipment in battle
  8. # and render actors vulnerable. After battle, equipment is restored.
  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. # <break equip: x>
  16. # <break equip: x, x, x>
  17. # Put these tags into the notebox of the skill you want to have equipment break.
  18. # Replace x with the slot ID of the piece of equipment you want to break. By
  19. # default, they are:
  20. # 0 - Weapon
  21. # 1 - Shield
  22. # 2 - Helmet
  23. # 3 - Armor
  24. # 4 - Accessory
  25. #
  26. # <repair equip: x>
  27. # <repair equip: x, x, x>
  28. # Put these tags into the notebox of the skill you want to repair broken slots.
  29. # Replace x with the slot ID of the piece of equipment you want to break. By
  30. # default, they are:
  31. # 0 - Weapon
  32. # 1 - Shield
  33. # 2 - Helmet
  34. # 3 - Armor
  35. # 4 - Accessory
  36. #===============================================================================
  37.  
  38. $imported = {} if $imported == nil
  39. $imported["EquipmentBreak"] = true
  40.  
  41. #==============================================================================
  42. # RPG::Skill
  43. #==============================================================================
  44.  
  45. class RPG::Skill < RPG::UsableItem
  46.   #--------------------------------------------------------------------------
  47.   # # Equipment Break
  48.   #--------------------------------------------------------------------------
  49.   def equipment_break
  50.     return @equipment_break if @equipment_break != nil
  51.     @equipment_break = []
  52.     self.note.split(/[\r\n]+/).each { |line|
  53.       case line
  54.       when /<(?:BREAK EQUIP|break equips):[ ](\d+(?:\s*,\s*\d+)*)>/i
  55.         $1.scan(/\d+/).each { |num| @equipment_break.push(num.to_i) }
  56.       end
  57.     }
  58.     return @equipment_break
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # # Equipment Repair
  62.   #--------------------------------------------------------------------------
  63.   def equipment_repair
  64.     return @equipment_repair if @equipment_repair != nil
  65.     @equipment_repair = []
  66.     self.note.split(/[\r\n]+/).each { |line|
  67.       case line
  68.       when /<(?:REPAIR EQUIP|repair equips):[ ](\d+(?:\s*,\s*\d+)*)>/i
  69.         $1.scan(/\d+/).each { |num| @equipment_repair.push(num.to_i) }
  70.       end
  71.     }
  72.     return @equipment_repair
  73.   end
  74. end
  75.  
  76. #==============================================================================
  77. # ** Game_Battler
  78. #==============================================================================
  79.  
  80. class Game_Battler
  81.   #--------------------------------------------------------------------------
  82.   # * Apply Skill Effects
  83.   #--------------------------------------------------------------------------
  84.   alias skill_effect_sss_equipment_break skill_effect unless $@
  85.   def skill_effect(user, skill)
  86.     skill_effect_sss_equipment_break(user, skill)
  87.     break_equipment(skill) unless @skipped or @missed or @evaded
  88.     repair_equipment(skill) unless @skipped or @missed or @evaded
  89.   end
  90.   #--------------------------------------------------------------------------
  91.   # * Break Equipment
  92.   #--------------------------------------------------------------------------
  93.   def break_equipment(skill)
  94.     return unless $game_temp.in_battle
  95.     return unless actor?
  96.     return if skill.equipment_break.empty?
  97.     @broken_equipment = [] if @broken_equipment.nil?
  98.     @broken_equipment += skill.equipment_break
  99.     clear_battle_cache if $imported["BattleEngineMelody"]
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # * Repair Equipment
  103.   #--------------------------------------------------------------------------
  104.   def repair_equipment(skill)
  105.     return unless $game_temp.in_battle
  106.     return unless actor?
  107.     return if skill.equipment_break.empty?
  108.     @broken_equipment = [] if @broken_equipment.nil?
  109.     @broken_equipment -= skill.equipment_repair
  110.     clear_battle_cache if $imported["BattleEngineMelody"]
  111.   end
  112. end
  113.  
  114. #==============================================================================
  115. # ** Game_Actor
  116. #==============================================================================
  117.  
  118. class Game_Actor < Game_Battler
  119.   #--------------------------------------------------------------------------
  120.   # * Get Weapon Object Array
  121.   #--------------------------------------------------------------------------
  122.   alias weapons_sss_equipment_break weapons unless $@
  123.   def weapons
  124.     result = weapons_sss_equipment_break
  125.     @broken_equipment = [] if @broken_equipment.nil?
  126.     result[0] = nil if @broken_equipment.include?(0)
  127.     result[1] = nil if two_swords_style and @broken_equipment.include?(1)
  128.     return result
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # * Get Armor Object Array
  132.   #--------------------------------------------------------------------------
  133.   alias armors_sss_equipment_break armors unless $@
  134.   def armors
  135.     result = armors_sss_equipment_break
  136.     @broken_equipment = [] if @broken_equipment.nil?
  137.     for i in @broken_equipment
  138.       next if i == 0
  139.       result[i-1] = nil
  140.     end
  141.     return result
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # * Clear Broken Equipment
  145.   #--------------------------------------------------------------------------
  146.   def clear_broken_equipment
  147.     @broken_equipment = []
  148.     clear_battle_cache if $imported["BattleEngineMelody"]
  149.   end
  150. end
  151.  
  152. #==============================================================================
  153. # ** Scene_Battle
  154. #==============================================================================
  155.  
  156. class Scene_Battle < Scene_Base
  157.   #--------------------------------------------------------------------------
  158.   # * Start processing
  159.   #--------------------------------------------------------------------------
  160.   alias start_sss_equipment_break start unless $@
  161.   def start
  162.     for member in $game_party.members do member.clear_broken_equipment end
  163.     start_sss_equipment_break
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # * End Battle
  167.   #--------------------------------------------------------------------------
  168.   alias battle_end_sss_equipment_break battle_end unless $@
  169.   def battle_end(result)
  170.     for member in $game_party.members do member.clear_broken_equipment end
  171.     battle_end_sss_equipment_break(result)
  172.   end
  173. end
  174.  
  175. #===============================================================================
  176. #
  177. # END OF FILE
  178. #
  179. #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement