Holy87

Escape VX

Jul 12th, 2013
106
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $imported = {} if $imported == nil
  2. $imported["H87_Escape"] = true
  3. #===============================================================================
  4. # ** Probabilità di fuga **
  5. # Versione: 1.0 (15/04/2013)
  6. # Difficoltà utente: ★★
  7. #===============================================================================
  8. # DESCRIZIONE:
  9. # Questo script permette di modificare le probabilità di fuga grazie ad
  10. # equipaggiamenti e stati alterati.
  11. #===============================================================================
  12. # UTILIZZO:
  13. # Installare lo script sotto Materials e prima del Main.
  14. # Inserire, nel riquadro delle note dello stato o dell'equipaggiamento, la
  15. # seguente etichetta:
  16. # <fuga: x> dove x è il valore (valori positivi aumentano le probabilità, valori
  17. # negativi le diminuiscono) (max 100: probabilità sicura).
  18. # I bonus sono cumulativi.
  19. # Se vuoi far fuggire il gruppo, basta che scrivi in un chiama script:
  20. # force_escape
  21. # puoi creare abilità che chiamano un evento comune con questa skill. La fuga
  22. # non funzionerà contro i boss.
  23. # force_escape(true) fa fuggire gli eroi dall'incontro anche se si tratta di un
  24. # boss.
  25. #===============================================================================
  26. # COMPATIBILITA':
  27. # Compatibile con quasi tutti gli script.
  28. #===============================================================================
  29. module H87_Escape
  30.   # IMPOSTAZIONI
  31.  
  32.   #Cambia il valore di questa costante per aggiustare il valore base delle
  33.   #probabilità di fuga:
  34.   Adjuster = 15
  35.  
  36. #===============================================================================
  37. # ** FINE CONFIGURAZIONE **
  38. # Attenzione: Non modificare ciò che c'è oltre, a meno che tu non sappia ciò che
  39. # fai!
  40. #===============================================================================
  41.  
  42.   EB = /<(?:FUGA|fuga):[ ]*(\d+)>/i
  43. end
  44.  
  45. #===============================================================================
  46. # ** Game_Actor
  47. #===============================================================================
  48. class Game_Actor < Game_Battler
  49.   def get_escape_bonus
  50.     bonus = 0
  51.     weapons.each{|weapon|
  52.       next if weapon == nil
  53.       bonus += weapon.escape_bonus
  54.     }
  55.     armors.each{|armor|
  56.       next if armor == nil
  57.       bonus += armor.escape_bonus
  58.     }
  59.     states.each{|state|
  60.       next if state == nil
  61.       bonus += state.escape_bonus
  62.     }
  63.     return bonus
  64.   end
  65. end # game_actor
  66.  
  67. #===============================================================================
  68. # ** Classe Armi
  69. #===============================================================================
  70. class RPG::Weapon
  71.   attr_reader :escape_bonus
  72.  
  73.   def escape_bonus
  74.     return @escape_bonus
  75.   end
  76.  
  77.   def carica_cache_personale_esc
  78.       return if @cache_caricatae
  79.       @cache_caricatae=true
  80.       @escape_bonus = 0
  81.       self.note.split(/[\r\n]+/).each { |riga|
  82.       case riga
  83.       when H87_Escape::EB
  84.         @escape_bonus += $1.to_i
  85.       end
  86.     }
  87.   end
  88.  
  89. end
  90.  
  91. #===============================================================================
  92. # ** Classe Armature
  93. #===============================================================================
  94. class RPG::Armor
  95.   attr_reader :escape_bonus
  96.  
  97.   def escape_bonus
  98.     return @escape_bonus
  99.   end
  100.  
  101.   def carica_cache_personale_esc
  102.       return if @cache_caricatae
  103.       @cache_caricatae=true
  104.       @escape_bonus = 0
  105.       self.note.split(/[\r\n]+/).each { |riga|
  106.       case riga
  107.       when H87_Escape::EB
  108.         @escape_bonus += $1.to_i
  109.       end
  110.     }
  111.   end
  112. end
  113.  
  114. #===============================================================================
  115. # ** Classe Status
  116. #===============================================================================
  117. class RPG::State
  118.   attr_reader :escape_bonus
  119.  
  120.   def escape_bonus
  121.     return @escape_bonus
  122.   end
  123.  
  124.   def carica_cache_personale_esc
  125.       return if @cache_caricatae
  126.       @cache_caricatae=true
  127.       @escape_bonus = 0
  128.       self.note.split(/[\r\n]+/).each { |riga|
  129.       case riga
  130.       when H87_Escape::EB
  131.         @escape_bonus += $1.to_i
  132.       end
  133.     }
  134.   end
  135. end
  136.  
  137. #==============================================================================
  138. # ** Scene_Title
  139. #==============================================================================
  140. class Scene_Title < Scene_Base
  141.  
  142.   #-----------------------------------------------------------------------------
  143.   # *Alias metodo load_bt_database
  144.   #-----------------------------------------------------------------------------
  145.   alias l_bt_de load_bt_database unless $@
  146.   def load_bt_database
  147.     l_bt_de
  148.     setup_escape_states
  149.     setup_escape_armors
  150.     setup_escape_weapons
  151.   end
  152.  
  153.   #-----------------------------------------------------------------------------
  154.   # *Alias metodo load_database
  155.   #-----------------------------------------------------------------------------
  156.   alias ld_de load_database unless $@
  157.   def load_database
  158.     ld_de
  159.     setup_escape_states
  160.     setup_escape_armors
  161.     setup_escape_weapons
  162.   end
  163.  
  164.   #-----------------------------------------------------------------------------
  165.   # *Inizializza nel caricamento
  166.   #-----------------------------------------------------------------------------
  167.   def setup_escape_states
  168.     for state in $data_states
  169.       next if state == nil
  170.       state.carica_cache_personale_esc
  171.     end
  172.   end
  173.  
  174.   #-----------------------------------------------------------------------------
  175.   # *setup_escape_armors
  176.   #-----------------------------------------------------------------------------
  177.   def setup_escape_armors
  178.     for armor in $data_armors
  179.       next if armor == nil
  180.       armor.carica_cache_personale_esc
  181.     end
  182.   end
  183.  
  184.   #-----------------------------------------------------------------------------
  185.   # *setup_escape_weapons
  186.   #-----------------------------------------------------------------------------
  187.   def setup_escape_weapons
  188.     for weapon in $data_weapons
  189.       next if weapon == nil
  190.       weapon.carica_cache_personale_esc
  191.     end
  192.   end
  193.  
  194. end # scene_title
  195.  
  196. #==============================================================================
  197. # ** Scene_Battle
  198. #==============================================================================
  199. class Scene_Battle < Scene_Base
  200.  
  201.   #-----------------------------------------------------------------------------
  202.   # *Alias metodo start
  203.   #-----------------------------------------------------------------------------
  204.   alias re_start start unless $@
  205.   def start
  206.     re_start
  207.     @sure_escape = false
  208.   end
  209.  
  210.   #-----------------------------------------------------------------------------
  211.   # * cambia le prob. di fuga
  212.   #-----------------------------------------------------------------------------
  213.   alias remake_escape make_escape_ratio unless $@
  214.   def make_escape_ratio
  215.     remake_escape
  216.     @escape_ratio += H87_Escape::Adjuster
  217.     @escape_ratio += actors_escape_bonus
  218.   end
  219.  
  220.   #-----------------------------------------------------------------------------
  221.   # * controlla il bonus di fuga degli eroi
  222.   #-----------------------------------------------------------------------------
  223.   def actors_escape_bonus
  224.     bonus = 0
  225.     for member in $game_party.members
  226.       bonus += member.get_escape_bonus
  227.     end
  228.     bonus += 999999 if @sure_escape
  229.     return bonus
  230.   end
  231.  
  232.   #-----------------------------------------------------------------------------
  233.   # * viene eseguito quando la fuga è obbligata da eventi.
  234.   #-----------------------------------------------------------------------------
  235.   def ensure_escape
  236.     @sure_escape = true
  237.     make_escape_ratio
  238.     process_escape
  239.   end
  240. end # scene_battle
  241.  
  242. #==============================================================================
  243. # ** Game_Interpreter
  244. #==============================================================================
  245. class Game_Interpreter
  246.   def force_escape(boss_also = false)
  247.     if $scene.is_a?(Scene_Battle)
  248.       $scene.ensure_escape if boss_also or $game_troop.can_escape
  249.     end
  250.   end
  251. end #game_interpreter
RAW Paste Data