Advertisement
KenzoMe92

KZM - Limit

Jun 21st, 2015
623
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.24 KB | None | 0 0
  1. #==============================================================#
  2. # KZM - Limit                                                  #
  3. #==============================================================#
  4. # Quest'opera è stata rilasciata con licenza Creative Commons  #
  5. # Attribuzione - Condividi allo stesso modo 3.0 Italia. Per    #
  6. # leggere una copia della licenza visita il sito web           #
  7. # http://creativecommons.org/licenses/by-sa/3.0/it/            #
  8. # o spedisci una lettera a                                     #
  9. # Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. #
  10. #==============================================================#
  11. # Versione: 1.0                                                #
  12. # Autore: KenzoMe92                                            #
  13. #==============================================================#
  14. # Storia                                                       #
  15. # 18/05/2015 Script iniziato e finito                          #
  16. #==============================================================#
  17. # Descrizione                                                  #
  18. # Questo script aggiunge la barra del limit e le               #
  19. # abilità usate con questa barra in stile FFVII                #
  20. #==============================================================#
  21. # Istruzioni                                                   #
  22. # Installare sotto "▼ Materials" e sopra "▼ Main",             #
  23. # dopodiché nel database creare un nuovo tipo di               #
  24. # tecniche, chiamato limit e per ogni tecnica                  #
  25. # inserita in quel tipo, mettere il seguente tag:              #
  26. # <limit>                                                      #
  27. # per farla riconoscere dallo script e permetterne             #
  28. # l'uso solo a barra completamente carica.                     #
  29. #==============================================================#
  30. class RPG::Skill
  31.   #------------------------------------------#
  32.   # Restituisce true se l'abilità è un limit #
  33.   #------------------------------------------#
  34.   def use_with_limit?
  35.     self.note.split(/[\r\n]+/).each { |line|
  36.     case line
  37.     when /<limit>/
  38.       return true
  39.     end
  40.     }
  41.     return false
  42.   end
  43. end
  44. class Game_BattlerBase
  45.   #------------------------#
  46.   # Alias delle condizioni #
  47.   #------------------------#
  48.   alias normal_condition_met skill_conditions_met?
  49.   def skill_conditions_met?(skill)
  50.     return false if limit_not_allowed(skill)
  51.     return normal_condition_met(skill)
  52.   end
  53.   #--------------------------------------------------------------------------#
  54.   # Reastituisce true se la skill è un limit e il limit accumulato non è max #
  55.   #--------------------------------------------------------------------------#
  56.   def limit_not_allowed(skill)
  57.     return true if skill.use_with_limit? && self.limit < limit_max
  58.     return false
  59.   end
  60. end
  61. class Game_Battler
  62.   #------------------------------#
  63.   # Alias per resettare il limit #
  64.   #------------------------------#
  65.   alias normal_cons_item use_item
  66.   def use_item(item)
  67.     @limit = 0 if item.is_a?(RPG::Skill) && item.use_with_limit?
  68.     normal_cons_item(item)
  69.   end
  70. end
  71. class Game_Actor < Game_Battler
  72.   attr_reader :limit #parametro limit, solo in lettura per sicurezza
  73.   #------------------------------------------------------#
  74.   # Aggiungo l'inizializzazione del limit dei personaggi #
  75.   #------------------------------------------------------#
  76.   alias limit_setup setup
  77.   def setup(actor_id)
  78.     limit_setup(actor_id)
  79.     @limit = 0
  80.   end
  81.   #---------------------------------------------#
  82.   # Metodo che assegna un nuovo valore al limit #
  83.   #---------------------------------------------#
  84.   def limit=(valore)
  85.     @limit = [[0, valore].max, limit_max].min
  86.   end
  87.   #--------------------------------------------------#
  88.   # Metodo che restituisce il valore del limit pieno #
  89.   #--------------------------------------------------#
  90.   def limit_max
  91.     return 100
  92.   end
  93.   #---------------------------#
  94.   # Metodo di reset del limit #
  95.   #---------------------------#
  96.   def reset_limit
  97.     @limit = 0
  98.   end
  99.   #---------------------------------------#
  100.   # Metodo che aumenta la barra del limit #
  101.   #---------------------------------------#
  102.   alias limit_damage execute_damage
  103.   def execute_damage(user)
  104.     limit_damage(user)
  105.     self.limit += 5 if result.hp_damage > 0
  106.   end
  107. end
  108. class Window_BattleStatus < Window_Selectable
  109.   #------------------#
  110.   # Disegno la barra #
  111.   #------------------#
  112.   alias draw_basic_area_lt draw_basic_area
  113.   def draw_basic_area(rect, actor)
  114.     draw_limit_bar(rect, actor)
  115.     draw_basic_area_lt(rect, actor)
  116.   end
  117.   def draw_limit_bar(rect, actor)
  118.     #la posizione x della barra è quella all'inizio
  119.     x = rect.x
  120.     #la posizione y è sul fondo del rettangolo
  121.     y = rect.y
  122.     #la larghezza della barra è quanto quella del rettangolo
  123.     width = rect.width
  124.     #questa è la proporzione tra limit accumulato e massimo
  125.     rate = actor.limit.to_f/actor.limit_max
  126.     #i colori della bara sono il colore 2 e 10 del testo
  127.     #(quelli nella windowskin) partendo da 0
  128.     color1 = text_color(10)
  129.     color2 = text_color(2)
  130.     #chiamo il metodo draw_gauge(vedi dichiarazione)
  131.     draw_gauge(x, y, width, rate, color1, color2)
  132.   end
  133. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement