Advertisement
mikb89

[VX] Lancio energia v1.0 per Lusianl

May 17th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.09 KB | None | 0 0
  1. # Lancio energia 1.0 by mikb89 per Lusianl
  2.  
  3. # Info:
  4. #  Molte delle impostazioni a seguire potranno essere superflue, ho voluto
  5. #   metterne il più possibile per darti un maggiore adattamento. Quindi non
  6. #   aver paura se a prima vista ti sembrano troppe!
  7. #  A nemico colpito verrà attivato uno switch locale. Se vuoi farlo morire
  8. #   con più colpi, ti basterà mettere questa pagina in processo parallelo,
  9. #   quando si attiva aumentare una variabile e poi controllare: se raggiunge
  10. #   un certo numero, attivi lo switch locale che indica il decesso, altrimenti
  11. #   metti lo switch locale OFF, in modo da farlo tornare nemico.
  12. #  Per il resto hai diverse opzioni di animazione e anche sonore!
  13. #  Per qualsiasi cosa sai dove contattarmi.
  14. #  Ah, se nel tuo progetto usi uno script per le 8 direzioni, questo script va
  15. #   messo SOTTO. Importante! In questo caso anche l'energia verrà sparata nelle
  16. #   eventuali direzioni oblique ^^
  17.  
  18. module NRG
  19.   # Configurazioni:
  20.     # Grafica energia da visualizzare:
  21.       NOME_FILE = "!Flame"
  22.       INDICE_CHARA = 4 # 0-7
  23.       ANIMAZIONE_INIZIALE = 1 # 0, 1 o 2
  24.       ANIMAZIONE_PASSI = true
  25.     # Effetti grafici:
  26.       TIPO_BLENDING = 0
  27.       OPACITA = 255
  28.     # Movimento energia:
  29.       VELOCITA_MOVIMENTI = 10
  30.       FREQUENZA_MOVIMENTI = 5
  31.     # Opzioni interazione:
  32.       TASTO_PER_ENERGIA = Input::X # Input::QUALCOSA
  33.       BLOCCA_AL_LANCIO = false # Blocca il movimento durante l'animazione di lancio?
  34.       SWITCH_PER_ENERGIA = 500 # Switch che deve essere ON per consentire il tutto
  35.       VARIABILE_MAX_ENERGIA = 500 # Var. che contiene il n° max di energie lanciabili
  36.     # Interazione nemici:
  37.       COMMENTO_NEMICO = "ENEMY" # Cosa deve contenere il commento?
  38.       SWITCH_LOCALE_NEMICO_COLPITO = 'A' # Switch Loc. ON appena colpito
  39.     # Grafica giocatore al lancio energia:
  40.       CHARA_LANCIO = "Actor1"
  41.       INDICE_CHARA_LANCIO = 1 # 0-7
  42.       ANIMA_PER_FRAME = 12 # Durata dell'animazione
  43.     # Parte sonora:
  44.       # Suono al lancio dell'energia:
  45.       NOME_SUONO_AL_LANCIO = "Absorb2" # Lasciare "" per disattivare
  46.       VOLUME_SUONO_AL_LANCIO = 80 # 0-100, ma puoi anche overclockare
  47.       PITCH_SUONO_AL_LANCIO = 150 # 50-150, ma puoi anche overclockare
  48.      
  49.       # Suono a nemico colpito:
  50.       NOME_SUONO_A_SEGNO = "Blow5" # Lasciare "" per disattivare
  51.       VOLUME_SUONO_A_SEGNO = 80 # 0-100, ma puoi anche overclockare
  52.       PITCH_SUONO_A_SEGNO = 50 # 50-150, ma puoi anche overclockare
  53.      
  54.       # Suono quando energia colpisce qualcosa:
  55.       NOME_SUONO_BLOCCATO = "Battle2" # Lasciare "" per disattivare
  56.       VOLUME_SUONO_BLOCCATO = 80 # 0-100, ma puoi anche overclockare
  57.       PITCH_SUONO_BLOCCATO = 100 # 50-150, ma puoi anche overclockare
  58. end
  59.  
  60.   # Codice:
  61. class Game_Energy < Game_Character
  62.   attr_reader :to_destroy
  63.   def initialize(dir)
  64.     @to_destroy = false
  65.     super()
  66.     @character_name = NRG::NOME_FILE
  67.     @character_index = NRG::INDICE_CHARA
  68.     @opacity = NRG::OPACITA
  69.     @blend_type = NRG::TIPO_BLENDING
  70.     @direction = dir
  71.     @pattern = NRG::ANIMAZIONE_INIZIALE
  72.     @original_direction = dir
  73.     @original_pattern = NRG::ANIMAZIONE_INIZIALE
  74.     @move_speed = NRG::VELOCITA_MOVIMENTI
  75.     @move_frequency = NRG::FREQUENZA_MOVIMENTI
  76.     @walk_anime = NRG::ANIMAZIONE_PASSI
  77.     @direction_fix = true
  78.     moveto($game_player.x, $game_player.y)
  79.   end
  80.   def update_self_movement
  81.     if @stop_count > 30 * (5 - @move_frequency)
  82.       move_forward
  83.     end
  84.   end
  85.   def passable?(x, y)
  86.     result = super
  87.     unless result
  88.       destroy
  89.       RPG::SE.new(NRG::NOME_SUONO_BLOCCATO,
  90.                   NRG::VOLUME_SUONO_BLOCCATO,
  91.                   NRG::PITCH_SUONO_BLOCCATO).play if NRG::NOME_SUONO_BLOCCATO != ""
  92.     end
  93.     result
  94.   end
  95.   def map_passable?(x, y)
  96.     return super || $game_map.ship_passable?(x, y)
  97.   end
  98.   def check_event_trigger_touch(x, y)
  99.     return false if $game_map.interpreter.running?
  100.     result = false
  101.     for event in $game_map.events_xy(x, y)
  102.       if event.priority_type == 1
  103.         for code in event.list
  104.           if [108, 408].include?(code.code) && code.parameters.include?(NRG::COMMENTO_NEMICO)
  105.             key = [$game_map.map_id, event.id, NRG::SWITCH_LOCALE_NEMICO_COLPITO]
  106.             $game_self_switches[key] = true
  107.             $game_map.need_refresh = true
  108.             result = true
  109.           end
  110.         end
  111.       end
  112.     end
  113.     if result
  114.       destroy
  115.       RPG::SE.new(NRG::NOME_SUONO_A_SEGNO,
  116.                   NRG::VOLUME_SUONO_A_SEGNO,
  117.                   NRG::PITCH_SUONO_A_SEGNO).play if NRG::NOME_SUONO_A_SEGNO != ""
  118.     end
  119.     result
  120.   end
  121.   def destroy
  122.     @to_destroy = true
  123.   end
  124. end
  125.  
  126. class Game_Map
  127.   unless method_defined?(:update_events_b4_energy)
  128.     alias_method :update_events_b4_energy, :update_events
  129.   end
  130.   def update_events
  131.     update_events_b4_energy
  132.     return if @nrgs.nil?
  133.     for nrg in 0...@nrgs.size
  134.       next if @nrgs[nrg].nil?
  135.       @nrgs[nrg].update
  136.       if @nrgs[nrg].to_destroy
  137.         @nrgs.delete_at(nrg)
  138.         $scene.spriteset.destroy_nrg(nrg)
  139.       end
  140.     end
  141.   end
  142.   def can_add_nrg?
  143.     return true if @nrgs.nil?
  144.     if $game_switches[NRG::SWITCH_PER_ENERGIA]
  145.       if @nrgs.compact.size < $game_variables[NRG::VARIABILE_MAX_ENERGIA] ||
  146.          $game_variables[NRG::VARIABILE_MAX_ENERGIA] <= 0
  147.         return true
  148.       end
  149.     end
  150.   end
  151.   def add_nrg(nrg)
  152.     (@nrgs ||= [])[$scene.spriteset.add_nrg(nrg)] = nrg
  153.   end
  154. end
  155.  
  156. class Game_Player
  157.   unless method_defined?(:move_by_input_b4_energy)
  158.     alias_method :move_by_input_b4_energy, :move_by_input
  159.   end
  160.   def move_by_input
  161.     unless @anims.nil?
  162.       if @anims == 0
  163.         @character_name = @ex_ch_nm
  164.         @character_index = @ex_ch_ix
  165.         @step_anime = false
  166.       else
  167.         @anims -= 1
  168.       end
  169.     end
  170.     move_by_input_b4_energy if (NRG::BLOCCA_AL_LANCIO && (@anims || 0) == 0) ||
  171.                                !NRG::BLOCCA_AL_LANCIO
  172.     if Input.trigger?(NRG::TASTO_PER_ENERGIA) && $game_map.can_add_nrg?
  173.       unless @step_anime
  174.         @ex_ch_nm = @character_name
  175.         @ex_ch_ix = @character_index
  176.       end
  177.       @character_name = NRG::CHARA_LANCIO
  178.       @character_index = NRG::INDICE_CHARA_LANCIO
  179.       @step_anime = true
  180.       RPG::SE.new(NRG::NOME_SUONO_AL_LANCIO,
  181.                   NRG::VOLUME_SUONO_AL_LANCIO,
  182.                   NRG::PITCH_SUONO_AL_LANCIO).play if NRG::NOME_SUONO_AL_LANCIO != ""
  183.       @anims = NRG::ANIMA_PER_FRAME
  184.       nrg = Game_Energy.new(@direction)
  185.       $game_map.add_nrg(nrg)
  186.     end
  187.   end
  188. end
  189.  
  190. class Spriteset_Map
  191.   unless method_defined?(:create_characters_b4_nrg)
  192.     alias_method :create_characters_b4_nrg, :create_characters
  193.   end
  194.   def create_characters
  195.     create_characters_b4_nrg
  196.     @chnum = @character_sprites.size
  197.   end
  198.   def add_nrg(nrg)
  199.     @character_sprites.push(Sprite_Character.new(@viewport1, nrg))
  200.     @character_sprites.size - 1 - @chnum
  201.   end
  202.   def destroy_nrg(nrg)
  203.     nrg += @chnum
  204.     @character_sprites[nrg].dispose
  205.     @character_sprites.delete_at(nrg)
  206.     $game_map.need_refresh = true
  207.   end
  208. end
  209.  
  210. class Scene_Map
  211.   attr_accessor :spriteset
  212. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement