TheoAllen

Theo - In Map Slip Damage v1.1

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