molegato

Cut actions by element

Feb 6th, 2012
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.27 KB | None | 0 0
  1. #==============================================================================
  2. # CUT ACTIONS BY ELEMENT
  3. # Author Molegato
  4. # Version 1.0
  5. #------------------------------------------------------------------------------
  6. # If an enemy gets a hit from a determined element, and didnt attack yet,
  7. # his turn gets invalidated.
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported['Molegato-cut actions by element'] = true
  12.  
  13. #==============================================================================
  14. # CONFIGURATION, YOU CAN TOUCH THIS
  15. #==============================================================================
  16. module MOLEGATO_ACTION_CUT
  17.   STUN_TEXT = ' has been knocked down!'
  18.   PLAY_SOUND = true
  19.   STUN_SOUND = 'Evasion2'
  20. end
  21. #==============================================================================
  22. # END OF CONFIGURATION. EVERYTHING UNDER HERE IS A HELLISH MESS OF DEFICIENT
  23. # AMATEUR SCRIPTING. BE AWARE THAT MESSING WITH IT CAN RESULT IN DISASTER
  24. #==============================================================================
  25.  
  26.  
  27.  
  28. module BattleManager
  29.  
  30.   def self.action_battlers
  31.     return @action_battlers
  32.   end
  33.  
  34.   def self.delete_battler_from_turn(battler)
  35.     @action_battlers.delete(battler)
  36.   end
  37. end
  38.  
  39. class Scene_Battle < Scene_Base
  40.   alias action_cutter_apply_item_effects apply_item_effects
  41.   def apply_item_effects(target, item)
  42.    
  43.     if target.actor?
  44.       data_target=target.actor
  45.     else
  46.       data_target=target.enemy
  47.     end
  48.    
  49.     if item.damage.element_id==-1
  50.       elements = @subject.atk_elements
  51.     else
  52.       elements = [item.damage.element_id]
  53.     end
  54.    
  55.     if data_target.has_tag?("action_cutted")==true
  56.       cutters=data_target.tag_check_multiple_multivalues("action_cutted")
  57.       cutters.each do |current_cutter|
  58.         p item.damage.element_id
  59.         if elements.any? {|i| i==current_cutter[0].to_i()} and rand(100)<=current_cutter[1].to_i()
  60.           if BattleManager.action_battlers.count(target)>0
  61.             BattleManager.delete_battler_from_turn(target)
  62.             if MOLEGATO_ACTION_CUT::PLAY_SOUND
  63.               RPG:: SE.new( MOLEGATO_ACTION_CUT::STUN_SOUND ).play
  64.             end
  65.             @log_window.add_text(target.name + MOLEGATO_ACTION_CUT::STUN_TEXT)
  66.           end
  67.         end        
  68.       end
  69.     end
  70.    
  71.     action_cutter_apply_item_effects(target,item)
  72.   end
  73.  
  74. end
  75.  
  76. #==============================================================================
  77. # MOLEGATO TAG METHODS
  78. # Author Molegato
  79. # Version 1.0
  80. #------------------------------------------------------------------------------
  81. # Several methods for using tags. Needed by some of my scripts.
  82. #------------------------------------------------------------------------------
  83. # Included in some of my scripts.
  84. #==============================================================================
  85.  
  86. $imported = {} if $imported.nil?
  87. $imported['Molegato-Sudden death'] = true
  88.  
  89. class RPG::BaseItem
  90.  
  91.   def has_tag?(tag)
  92.     if self.note[/<#{tag}>/mi]
  93.       return true
  94.     else
  95.       return false
  96.     end
  97.   end
  98.  
  99.   def tag_check_value(tag)
  100.     if self.note[/<#{tag}: (.*?)>/mi]
  101.       return $1
  102.     else
  103.       return false
  104.     end
  105.   end
  106.  
  107.   def tag_check_multivalues(tag)
  108.     if self.note[/<#{tag}: (.*?)>/mi]
  109.       return $1.split(',')
  110.     else
  111.       return false
  112.     end
  113.   end
  114.    
  115.   def tag_check_multivalues(string, tag)
  116.     if string[/<#{tag}: (.*?)>/mi]
  117.       return $1.split(',')
  118.     else
  119.       return false
  120.     end
  121.   end
  122.  
  123.   def tag_get_block(tag)
  124.     if self.note[/<#{tag}>(.*?)<\\#{tag}>/mi]
  125.       return $1
  126.     else
  127.       return false
  128.     end
  129.   end
  130.  
  131.   def tag_multiple(tag)
  132.     if tag_get_block(tag)
  133.       var=tag_get_block(tag)
  134.       return var.split(';')
  135.     else
  136.       return false
  137.     end
  138.   end
  139.  
  140.   def tag_check_multiple_multivalues(tag)
  141.       if tag_multiple(tag)
  142.         array=[]
  143.         tag_multiple(tag).each do |each|
  144.           array.push(tag_check_multivalues(each,tag))
  145.         end
  146.         return array
  147.       else
  148.         return false
  149.       end
  150.   end
  151.  
  152.   end
  153.  
  154.  
  155. class RPG::Map
  156.  
  157.   def has_tag?(tag)
  158.     if self.note[/<#{tag}>/mi]
  159.       return true
  160.     else
  161.       return false
  162.     end
  163.   end
  164.  
  165.   def tag_check_value(tag)
  166.     if self.note[/<#{tag}: (.*?)>/mi]
  167.       return $1
  168.     else
  169.       return false
  170.     end
  171.   end
  172.  
  173.   def tag_check_multivalues(tag)
  174.     if self.note[/<#{tag}: (.*?)>/mi]
  175.       return $1.split(',')
  176.     else
  177.       return false
  178.     end
  179.   end
  180.    
  181.   def tag_check_multivalues(string, tag)
  182.     if string[/<#{tag}: (.*?)>/mi]
  183.       return $1.split(',')
  184.     else
  185.       return false
  186.     end
  187.   end
  188.  
  189.   def tag_get_block(tag)
  190.     if self.note[/<#{tag}>(.*?)<\\#{tag}>/mi]
  191.       return $1
  192.     else
  193.       return false
  194.     end
  195.   end
  196.  
  197.   def tag_multiple(tag)
  198.     if tag_get_block(tag)
  199.       var=tag_get_block(tag)
  200.       return var.split(';')
  201.     else
  202.       return false
  203.     end
  204.   end
  205.  
  206.   def tag_check_multiple_multivalues(tag)
  207.       if tag_multiple(tag)
  208.         array=[]
  209.         tag_multiple(tag).each do |each|
  210.           array.push(tag_check_multivalues(each,tag))
  211.         end
  212.         return array
  213.       else
  214.         return false
  215.       end
  216.   end
  217.  
  218. end
Advertisement
Add Comment
Please, Sign In to add comment