TheoAllen

Theo - In Map Slip Damage

May 18th, 2013
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.59 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - In Map Slip Damage
  3. # Version : 1.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_SlipDamage] = true
  8. # =============================================================================
  9. # CHANGE LOGS:
  10. # -----------------------------------------------------------------------------
  11. # 2013.05.18 - Started and Finished script
  12. # =============================================================================
  13. =begin
  14.  
  15.   PERKENALAN :
  16.   Script ini ngebalikin fungsi yang ada di RMVX dimana state punya slip damage
  17.   atau heal waktu berjalan dalam tiap langkah dalam map.
  18.  
  19.   CARA PENGGUNAAN :
  20.   Pasang diatas main namun di bawah material. Tulis notetag seperti ini jika
  21.   diperlukan dalam note state
  22.  
  23.   UNTUK DAMAGE :
  24.   <slip hp: n>
  25.   <slip mp: n>
  26.   <slip mp: n%>
  27.   <slip hp: n%>
  28.  
  29.   UNTUK HEAL :
  30.   <heal hp: n>
  31.   <heal mp: n>
  32.   <heal hp: n%>
  33.   <heal mp: n%>
  34.  
  35.   Dimana n adalah angka konstan. Apabila kamu menggunakan %, maka nilainya akan
  36.   relatif terhadap nilai maksimal HP / MP. Misalnya kamu menuliskan
  37.  
  38.   <slip hp: 10%>
  39.  
  40.   Maka setiap satu langkah dalam map, HP actor akan berkurang 10%
  41.  
  42.   TERMS OF USE :
  43.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  44.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  45.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  46.  
  47. =end
  48. # =============================================================================
  49. # Konfigurasi :
  50. # =============================================================================
  51. module THEO
  52.   module STATE
  53.    
  54.     # =======================================================================
  55.     # FLASH COLOR SETTING
  56.     # -----------------------------------------------------------------------
  57.     # Berikut ini adalah settingan untuk flash color tiap tipe2 slip effect.
  58.     # Yang perlu kamu tulis adalah :
  59.     # => Color.new(red,green,blue,alpha)
  60.     #
  61.     # Masing2 nilai maksimalnya adalah 255. Alpha sama halnya seperti opacity.
  62.     # yaitu kekuatan warna. Semisal kamu tulis 255, maka warnanya akan jadi
  63.     # solid. Jika kamu tulis 30, maka warnanya lemah.
  64.     # =======================================================================
  65.     # HP SLIP COLOR SETTINGS
  66.     # =======================================================================
  67.       HP_DAMAGE_COLOR = Color.new(255,255,255,255)
  68.       HP_HEAL_COLOR   = Color.new(255,255,255,255)
  69.     # =======================================================================
  70.     # MP SLIP COLOR SETTINGS
  71.     # =======================================================================
  72.       MP_DAMAGE_COLOR = Color.new(255,255,255,255)
  73.       MP_HEAL_COLOR   = Color.new(255,255,255,255)
  74.     # =======================================================================
  75.    
  76.     # =======================================================================
  77.       FLASH_DURATION = 15
  78.     # -----------------------------------------------------------------------
  79.     # Durasi lamanya flash. Makin gede, makin lama. Satuannya adalah frame
  80.     # yang dimana 1 detik = 60 frame
  81.     # =======================================================================
  82.    
  83.   end
  84. end
  85. # =============================================================================
  86. # Akhir dari konfigurasi. Jangan diedit kecuali ente ngerti
  87. # =============================================================================
  88. module THEO
  89.   module STATE
  90.   module REGEXP
  91.    
  92.     # Damages
  93.     HP_SLIP_CON = /<(?:SLIP_HP|slip hp):[ ]*(\d+)>/i
  94.     MP_SLIP_CON = /<(?:SLIP_MP|slip mp):[ ]*(\d+)>/i
  95.     HP_SLIP_PER = /<(?:SLIP_HP|slip_hp):[ ]*(\d+)([%%])>/i
  96.     MP_SLIP_PER = /<(?:SLIP_MP|slip mp):[ ]*(\d+)([%%])>/i
  97.    
  98.     # Heals
  99.     HP_HEAL_CON = /<(?:HEAL_HP|heal hp):[ ]*(\d+)>/i
  100.     MP_HEAL_CON = /<(?:HEAL_MP|heal mp):[ ]*(\d+)>/i
  101.     HP_HEAL_PER = /<(?:HEAL_HP|heal hp):[ ]*(\d+)([%%])>/i
  102.     MP_HEAL_PER = /<(?:HEAL_MP|heal mp):[ ]*(\d+)([%%])>/i
  103.    
  104.   end
  105.   end
  106. end
  107.  
  108. module DataManager
  109.  
  110.   class << self
  111.     alias pre_in_map_states_db load_database
  112.   end
  113.  
  114.   def self.load_database
  115.     pre_in_map_states_db
  116.     load_in_map_states_db
  117.   end
  118.  
  119.   def self.load_in_map_states_db
  120.     $data_states.compact.each do |state|
  121.       state.load_slip_notetags
  122.     end
  123.   end
  124.  
  125. end
  126.  
  127. class RPG::State < RPG::BaseItem
  128.   attr_accessor :hp_slip_con
  129.   attr_accessor :hp_slip_per
  130.   attr_accessor :hp_heal_con
  131.   attr_accessor :hp_heal_per
  132.   attr_accessor :mp_slip_con
  133.   attr_accessor :mp_slip_per
  134.   attr_accessor :mp_heal_con
  135.   attr_accessor :mp_heal_per
  136.  
  137.   include THEO::STATE
  138.  
  139.   def load_slip_notetags
  140.     init_hp_slips
  141.     init_mp_slips
  142.     self.note.split(/[\r\n]+/).each do |line|
  143.       case line
  144.       when REGEXP::HP_SLIP_CON
  145.         @hp_slip_con = $1.to_i
  146.       when REGEXP::HP_SLIP_PER
  147.         @hp_slip_per = $1.to_i * 0.01
  148.       when REGEXP::HP_HEAL_CON
  149.         @hp_heal_con = $1.to_i
  150.       when REGEXP::HP_HEAL_PER
  151.         @hp_heal_per = $1.to_i * 0.01
  152.       when REGEXP::MP_SLIP_CON
  153.         @mp_slip_con = $1.to_i
  154.       when REGEXP::MP_SLIP_PER
  155.         @mp_slip_per = $1.to_i * 0.01
  156.       when REGEXP::MP_HEAL_CON
  157.         @mp_heal_con = $1.to_i
  158.       when REGEXP::MP_HEAL_PER
  159.         @mp_heal_per = $1.to_i * 0.01
  160.       end
  161.     end
  162.   end
  163.  
  164.   def init_hp_slips
  165.     @hp_slip_con = 0
  166.     @hp_slip_per = 0
  167.     @hp_heal_con = 0
  168.     @hp_heal_per = 0
  169.   end
  170.  
  171.   def init_mp_slips
  172.     @mp_slip_con = 0
  173.     @mp_slip_per = 0
  174.     @mp_heal_con = 0
  175.     @mp_heal_per = 0
  176.   end
  177.  
  178. end
  179.  
  180. class Game_Actor < Game_Battler
  181.  
  182.   include THEO::STATE
  183.  
  184.   alias pre_slip_states_update_steps update_state_steps
  185.   def update_state_steps(state)
  186.     pre_slip_states_update_steps(state)
  187.     perform_slip_effects(state)
  188.   end
  189.  
  190.   def perform_slip_effects(state)
  191.     perform_mp_damage(state)
  192.     perform_mp_heal(state)
  193.     perform_hp_damage(state)
  194.     perform_hp_heal(state)
  195.   end
  196.  
  197.   def slip_mp?(state)
  198.     state.mp_slip_con > 0 || state.mp_slip_per > 0
  199.   end
  200.  
  201.   def heal_mp?(state)
  202.     state.mp_heal_con > 0 || state.mp_heal_per > 0
  203.   end
  204.  
  205.   def slip_hp?(state)
  206.     state.hp_slip_con > 0 || state.hp_slip_per > 0
  207.   end
  208.  
  209.   def heal_hp?(state)
  210.     state.hp_heal_con > 0 || state.hp_heal_per > 0
  211.   end
  212.  
  213.   def perform_mp_damage(state)
  214.     return unless slip_mp?(state)
  215.     self.mp -= state.mp_slip_con
  216.     self.mp -= mmp * state.mp_slip_per
  217.     perform_flash_mp_damage
  218.   end
  219.  
  220.   def perform_mp_heal(state)
  221.     return unless heal_mp?(state)
  222.     self.mp += state.mp_heal_con
  223.     self.mp += mmp * state.mp_heal_per
  224.     perform_flash_mp_heal
  225.   end
  226.  
  227.   def perform_hp_damage(state)
  228.     return unless slip_hp?(state)
  229.     self.hp -= state.hp_slip_con
  230.     self.hp -= mhp * state.hp_slip_per
  231.     perform_flash_hp_damage
  232.   end
  233.  
  234.   def perform_hp_heal(state)
  235.     return unless heal_hp?(state)
  236.     self.hp += state.hp_heal_con
  237.     self.hp += mhp * state.hp_heal_per
  238.     perform_flash_hp_heal
  239.   end
  240.  
  241.   def perform_flash_mp_damage
  242.     $game_map.screen.start_flash(MP_DAMAGE_COLOR,FLASH_DURATION)
  243.   end
  244.  
  245.   def peform_flash_mp_heal
  246.     $game_map.screen.start_flash(MP_HEAL_COLOR,FLASH_DURATION)
  247.   end
  248.  
  249.   def perform_flash_hp_damage
  250.     $game_map.screen.start_flash(HP_DAMAGE_COLOR,FLASH_DURATION)
  251.   end
  252.  
  253.   def perform_flash_hp_heal
  254.     $game_map.screen.start_flash(HP_HEAL_COLOR,FLASH_DURATION)
  255.   end
  256.  
  257. end
Advertisement
Add Comment
Please, Sign In to add comment