Jump to content
Rpg²S Forum

Bubble BS Ace


Retrolexip
 Share

Recommended Posts

Ho trovato un ABS realizzato da Shuuchan per VX, ed è beliissimo! È mooolto semplice da impostare e implementare, ma allo stesso tempo da grande libertà di personalizzazione per chi sa dove mettere le mani.

Così ho deciso di renderlo compatibile per Ace e... ce l'ho fatta! :D

Per le istruzioni su come funziona vi rimando al topic originale del progetto (dove trovate anche la FONDAMENTALE grafica da mettere nel progetto per farlo funzionare)

Se invece volete aiutarmi nel migliorarlo ancora di più potete andare al topic di supporto! (non ancora creato! :P)

 

 

#===============================================================================
# ** BUBBLE BS Ace
#-------------------------------------------------------------------------------
#    di Shuuchan
#    su suggerimento di Omivino
#    convertito da Retrolexip
#    versione B1.0
#    basata su versione 1.1 del 31-01-2009
#    16-01-2015
#    RGSS3 / RPG Maker VX Ace
#-------------------------------------------------------------------------------
#===============================================================================
# .--** ISTRUZIONI **--.
#-------------------------------------------------------------------------------
# 1) Copiare lo script sotto "Materials", o appena sopra "Main" nello Script
#    Editor.
# 2) Copiare/importare il file immagine PNG "Energy Ball" nella cartella
#    "Graphics/Characters" del proprio progetto.
# 3) Regolare le Impostazioni Generali.
#-------------------------------------------------------------------------------
# ** PER CREARE UN NEMICO **
#-------------------------------------------------------------------------------
# 1) Creare un Nuovo Evento.
# 2) Inserire la Grafica del character, e impostare le Opzioni Movimento
#    preferite (in un nemico "serio" di solito il movimento è "Vicino", ovvero
#    il nemico si muove in direzione dell'Eroe. Ma si possono creare anche
#    nemici con movimento personalizzato, o fissi, come delle Trappole).
# 3) Inserire nella casella "Nome:" (in alto a sinistra nell'editor dell'evento)
#    le opzioni per creare il nemico. Le opzioni sono le seguenti:
#
#    .enemy       --> l'evento viene considerato un nemico, e perciò può essere
#                     attaccato e distrutto dalle sfere sparate dall'Eroe.
#                     Un evento senza .enemy nel Nome sarà ignorato dal BS, e
#                     considerato solo un ostacolo.
#    da .01 a .99 --> indica il numero di sfere necessarie per uccidere il
#                     nemico. ATTENZIONE: il numero deve essere SEMPRE A DUE
#                     CIFRE. Per i numeri minori di 10 inserire uno 0 davanti
#                     (perciò 5 sarà da scrivere .05).
#    .noatt       --> il nemico può essere distrutto, ma NON attacca (opzione
#                     utile per creare oggetti da distruggere).
#
# ATTENZIONE: ricordarsi sempre di scrivere il . davanti all'opzione desiderata.
#
# Quindi, per esempio, un nemico da uccidere in 2 colpi, avrà nel Nome:
#
#     .enemy.02
#
# Oppure, un "nemico" che non attacca da uccidere in 12 colpi, per esempio una
# "porta" da sfondare con le sfere, avrà scritto nel Nome:
#
#     .enemy.12.noatt
#
#-------------------------------------------------------------------------------
# ** PER ATTACCARE CON UNA SFERA
#-------------------------------------------------------------------------------
# Premere il Tasto D sulla tastiera all'interno di una mappa. Dall'Eroe
# scaturirà una sfera.
# Attenzione: se lo Switch che attiva il BS è OFF (vedi Impostazioni Generali
# qui sotto), sia l'Eroe che i nemici NON spareranno sfere.
#-------------------------------------------------------------------------------
module Shuu_Bubble
#===============================================================================
# .--** IMPOSTAZIONI GENERALI **--.
#-------------------------------------------------------------------------------
  ID_SWITCH_BUBBLE_BS = 1          # Id dello switch che permette di attivare il
                                   # Bubble BS. Se lo switch è ON è possibile
                                   # utilizzare il BS, altrimenti è disattivato.
#-------------------------------------------------------------------------------
  SE_MORTE = "Audio/SE/Collapse1"  # Nome del file Audio utilizzato alla morte
                                   # di un nemico (SE, effetto sonoro).
#-------------------------------------------------------------------------------
  SE_SFERA = "Audio/SE/Wind7"      # Nome del file Audio usato quando viene
                                   # "sparata" una sfera.
#-------------------------------------------------------------------------------
  INDICE_SFERA_EROE = 0            # Da 0 a 7, indice della sfera sparata
                                   # dall'Eroe (da scegliere nel file PNG
                                   # "Energy Ball": 0 è il primo chara in alto
                                   # a sinistra, 1 è il chara immediatamente
                                   # alla sua destra, e così via fino al 7, che
                                   # è l'ultimo chara in basso a destra).
#-------------------------------------------------------------------------------
  INDICE_SFERA_NEMICI = 1          # Da 0 a 7, indice della sfera sparata
                                   # dai nemici (da scegliere anche questo nel
                                   # file PNG "Energy Ball").
#-------------------------------------------------------------------------------
  VELOCITA = 5                     # Da 2 a 7, velocità delle sfere sparate sia
                                   # dall'Eroe che dai nemici.
#-------------------------------------------------------------------------------
  DISTANZA = 7                     # Da 1 a 16 (consigliato: 7), distanza
                                   # massima a cui possono giungere le sfere
                                   # sparate da Eroe e nemici.
#-------------------------------------------------------------------------------
  MOLT_EXP = 2                     # Da 1 a 5 (consigliato: 2), indica la 
                                   # il "grado" di Punti Esperienza guadagnati
                                   # all'uccisione di un nemico: maggiore sarà
                                   # il numero, maggiori gli EXP ottenuti.
#-------------------------------------------------------------------------------
  ANIM_LEVEL_UP = 37               # Id dell'Animzaione usata quando l'Eroe
                                   # sale di Livello (da scegliere tra le
                                   # Animazioni in Database --> Animazioni).
#-------------------------------------------------------------------------------
  ANIM_SFERA = 14                  # Id dell'Animazione usata quando una sfera
                                   # colpisce un bersaglio (anche questa da
                                   # scegliere tra le Animazioni del Database).
#-------------------------------------------------------------------------------
  MOLT_DANNO_NEMICI = 20           # Da 1 a 100 (consigliato: 20), indica il
                                   # "grado" di danni ai PV subiti dall'Eroe
                                   # quando viene colpito da una sfera: maggiore
                                   # sarà il numero, maggiori i danni.
#-------------------------------------------------------------------------------
  TEMPO_ATTACCO_EROE = 30          # Indica il tempo di attacco (ovvero il tempo
                                   # minimo per il lancio di due sfere
                                   # consecutive) dell'Eroe. 60 = 1 secondo
#-------------------------------------------------------------------------------
  TEMPO_ATTACCO_NEMICI = 30       # Indica il tempo di attacco dei nemici.
#===============================================================================
# .--** FINE IMPOSTAZIONI **--.
#===============================================================================
end

class Game_Map
  attr_accessor :nemici
  
  alias shuu_bubble_initialize initialize
  alias shuu_bubble_setup_events setup_events

  def initialize
    shuu_bubble_initialize
    @nemici = []
  end
  
  def setup_events
    shuu_bubble_setup_events
    @nemici.clear
    for evento in @events.values
      next if evento == nil
      if evento.nome.include?(".enemy")
        @nemici.push(evento)
      end
    end
  end
    
end

class Game_Actor
  def change_exp(exp, show)
    @exp[@class_id] = [exp, 0].max
    last_level = @level
    last_skills = skills
    level_up while !max_level? && self.exp >= next_level_exp
    level_down while self.exp < current_level_exp
    #display_level_up(skills - last_skills) if show && @level > last_level
    if show and @level > last_level and SceneManager.scene_is?(Scene_Map)
      $game_player.animation_id = Shuu_Bubble::ANIM_LEVEL_UP
      $game_player.damage = "Level Up!"
    end
    refresh
  end
end

class Game_Character
  
  def move_type_toward_player
    sx = @x - $game_player.x
    sy = @y - $game_player.y
    if sx.abs + sy.abs >= 12 # modifica Move Approach by Shuuchan
      move_random
    elsif sx.abs + sy.abs <= 4
      move_toward_player
    else
      case rand(12)
      when 0..9;  move_toward_player
      when 10;     move_random
      when 11;    move_forward
      end
    end
  end
  
end

class Game_Player < Game_Character
  attr_accessor :tempo_attacco
  
  alias shuu_bubblebs_initialize initialize
  alias shuu_bubblebs_update update
  
  def initialize
    shuu_bubblebs_initialize
    @tempo_attacco = 0
  end
  
  def update
    shuu_bubblebs_update
    @actor = $game_party.members[0]
    SceneManager.goto(Scene_Gameover) if @actor.hp <= 0
    @tempo_attacco -= 1 if @tempo_attacco > 0
    if $game_switches[Shuu_Bubble::ID_SWITCH_BUBBLE_BS] == true
      if Input.trigger?(Input::Z) and @tempo_attacco <= 0
        @tempo_attacco = Shuu_Bubble::TEMPO_ATTACCO_EROE - @actor.level*2
        @tempo_attacco = 30 if @tempo_attacco < 30
        Audio.se_play(Shuu_Bubble::SE_SFERA)
        indice = Shuu_Bubble::INDICE_SFERA_EROE
        $distanza.push(Game_Distanza.new($game_player, indice))
      end
    end
  end
  
end

class Game_Event < Game_Character
  attr_accessor :per_morire
  attr_accessor :nome
  attr_accessor :morto
  attr_accessor :hp
  attr_accessor :esperienza
  attr_accessor :original_hp
  attr_accessor :tempo_attacco
  attr_accessor :wait_count
  
  alias shuu_bubble_initialize initialize
  alias shuu_bubble_update update
  
  def initialize(map_id, event)
    shuu_bubble_initialize(map_id, event)
    @nome = @event.name
    @morto = false
    @per_morire = 0
    @hp = 1
    @esperienza = 0
    @tempo_attacco = 0
    if @nome.include?(".enemy")
      for i in 1..99
        sbstr = "."
        sbstr += "0" if i < 10
        sbstr += i.to_s
        if @nome.include?(sbstr)
          hp_nemico = (sbstr.slice(1,2)).to_i
          break
        end
      end
      if hp_nemico.is_a?(Numeric)
        @original_hp = hp_nemico
        @hp = hp_nemico
        @tempo_attacco = Shuu_Bubble::TEMPO_ATTACCO_NEMICI
        @esperienza += @hp*(($game_party.members[0]).level)*Shuu_Bubble::MOLT_EXP
      end
    end
  end
  
  def attacca_pg
    Audio.se_play(Shuu_Bubble::SE_SFERA)
    indice = Shuu_Bubble::INDICE_SFERA_NEMICI
    $distanza.push(Game_Distanza.new(self, indice))
  end
  
  def update
    shuu_bubble_update
    if $game_switches[Shuu_Bubble::ID_SWITCH_BUBBLE_BS] == true
      if @hp <= 0 and not @morto
        Audio.se_play(Shuu_Bubble::SE_MORTE, 80)
        @morto = true
        ($game_party.members[0]).gain_exp(@esperienza)
        @per_morire = 255
        lock
      end
      if @per_morire != 0 and @morto
        @per_morire -= 4
        @per_morire = 0 if @per_morire < 0
        @opacity = @per_morire
      end
      if @per_morire == 0 and @morto
        erase
      end
      if not @morto
        if @nome.include?(".enemy") and not @nome.include?(".noatt")
          sx = @x - $game_player.x
          sy = @y - $game_player.y
          @tempo_attacco -= 1 if @tempo_attacco > 0 and (sx.abs + sy.abs <= 12) and @wait_count <= 0
          @wait_count -= 1 if @wait_count > 0
          if @tempo_attacco <= 0
            if sx.abs + sy.abs <= 12 and @wait_count <= 0
              @tempo_attacco = Shuu_Bubble::TEMPO_ATTACCO_NEMICI - @original_hp*4
              @tempo_attacco = 100 if @tempo_attacco < 100
              attacca_pg
            end
          end 
        end
      end
    end
  end

end

module DataManager
  class << self
    alias shuu_bubble_game_objects create_game_objects
    alias shuu_bubble_write make_save_contents
    alias shuu_bubble_read extract_save_contents
  end
  
  def self.create_game_objects
    shuu_bubble_game_objects
    $distanza = []
  end
  def self.make_save_contents
    contents = shuu_bubble_write
    contents[:distanza] = $distanza
    contents
  end
  def self.extract_save_contents(contents)
    shuu_bubble_read(contents)
    $distanza = contents[:distanza]
  end
  
end


class Game_Distanza < Game_Character
  attr_accessor :draw
  attr_accessor :destroy
  attr_accessor :character_name
  
  def initialize(parent,chara_index=0,speed=4,range=0)
    super()
    @parent = parent
    @character_name = "Energy Ball"
    @character_index = chara_index
    @move_speed = Shuu_Bubble::VELOCITA
    @range = Shuu_Bubble::DISTANZA
    @step = 0
    pd = @parent.direction
    moveto(@parent.x,@parent.y)
    set_direction(pd)
    @destroy = false
    @draw = false
  end
  
  def update
    super
    return @destroy = true if @step >= @range
    move_route
    check_event_trigger_touch(@x, @y)
  end
  
  def move_route
    return unless movable?
    d = @direction
    move_straight(d)
    @step += 1
  end
  
  def movable?
    return false if moving?
    return false if @move_route_forcing
    return true
  end
  
  def check_event_trigger_touch(x, y)
    return if @destroy
    if @parent.is_a?(Game_Player)
      for nemico in $game_map.nemici
        if nemico.x == x and nemico.y == y and not nemico.morto
          nemico.animation_id = Shuu_Bubble::ANIM_SFERA
          colpisci_nemico(nemico)
        end
      end
    else
      if $game_player.x == x and $game_player.y == y
        $game_player.animation_id = Shuu_Bubble::ANIM_SFERA
        colpisci_eroe(@parent)
      end
    end
  end
    
  def colpisci_nemico(bersaglio)
    @destroy = true
    bersaglio.jump(0,0)
    danno = 1
    bersaglio.hp -= danno
    bersaglio.wait_count = 60
  end
  
  def colpisci_eroe(source)
    @destroy = true
    $game_player.jump(0,0)
    colpo = rand(5 + ($game_party.members[0]).level) + (Shuu_Bubble::MOLT_DANNO_NEMICI*($game_party.members[0]).level)/3
    danno = ((source.original_hp)*Shuu_Bubble::MOLT_DANNO_NEMICI) - ((($game_party.members[0]).def)) + colpo
    danno = 1 if danno <= 0
    ($game_party.members[0]).hp -= danno
  end
  
end


class Spriteset_Map
  
  alias shuu_bubblebs_create_characters create_characters
  alias shuu_bubblebs_update_characters update_characters
  alias shuu_bubblebs_dispose dispose
  
  def create_characters
    @range_sprites = []
    for range in $distanza
      next if range == nil
      @range_sprites.push(Sprite_Character.new(@viewport1,range))
    end
    shuu_bubblebs_create_characters
  end
  
  def update_characters
    shuu_bubblebs_update_characters
    for range in @range_sprites
      next if range == nil
      range.update
    end
    for range in $distanza
      next if range == nil
      if range.draw == false
        @range_sprites.push(Sprite_Character.new(@viewport1,range))
        range.draw = true
      end
      if range.destroy == true
        $distanza.delete(range)
        range.character_name = ""
      end
    end
  end
  
  def dispose
    for range in @range_sprites
      next if range == nil
      range.dispose
    end
    shuu_bubblebs_dispose
  end
end


class Scene_Map < Scene_Base
  
  alias shuu_bubble_update update
  
  def update
    for range in $distanza
      next if range == nil
      range.update
    end
    shuu_bubble_update
  end
  
end

class Game_Character
  attr_accessor :damage
  attr_accessor :specialtext

  alias shuu_abs2_initialize initialize
  
  def initialize
    shuu_abs2_initialize
    @damage = nil
    @specialtext = nil
  end

end


class Sprite_Base 
#~   alias animation animation_set_sprites
#~   def animation_set_sprites(frame)
#~     cell_data = frame.cell_data
#~     for i in 0..15
#~       sprite = @animation_sprites[i]
#~       next if sprite == nil
#~       pattern = cell_data[i, 0]
#~       if pattern == nil or pattern == -1
#~         sprite.visible = false
#~         next
#~       end
#~       if pattern < 100
#~         sprite.bitmap = @animation_bitmap1
#~       else
#~         sprite.bitmap = @animation_bitmap2
#~       end
#~       sprite.visible = true
#~       sprite.src_rect.set(pattern % 5 * 192,
#~         pattern % 100 / 5 * 192, 192, 192)
#~       if @animation_mirror
#~         sprite.x = @animation_ox - cell_data[i, 1] / 2
#~         sprite.y = @animation_oy - cell_data[i, 2] / 2
#~         sprite.angle = (360 - cell_data[i, 4])
#~         sprite.mirror = (cell_data[i, 5] == 0)
#~       else
#~         sprite.x = @animation_ox + cell_data[i, 1] / 2
#~         sprite.y = @animation_oy + cell_data[i, 2] / 2
#~         sprite.angle = cell_data[i, 4]
#~         sprite.mirror = (cell_data[i, 5] == 1)
#~       end
#~       sprite.z = self.z + 300
#~       sprite.ox = 96
#~       sprite.oy = 96
#~       sprite.zoom_x = cell_data[i, 3] / 200.0
#~       sprite.zoom_y = cell_data[i, 3] / 200.0
#~       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
#~       sprite.blend_type = cell_data[i, 7]
#~     end
#~   end
end

class Sprite_Character < Sprite_Base
  
  alias shuu_abs2_sprch_update update
  alias shuu_abs2_sprch_dispose dispose
  
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @balloon_duration = 0
    @_damage_duration = 0
    @last_hp = 0
    @hpbar_duration = 0
    update
  end
  
  def update
    super
    if @hpbar_duration > 0
      @hpbar_duration -=1
      @hpbar_sprite.x = self.x if @hpbar_sprite != nil
      @hpbar_sprite.y = self.y - self.oy / 2 - 40 if @hpbar_sprite != nil
      if @hpbar_duration <= 0 or @_damage_duration > 0
        dispose_hpbar
      end
    end
    if @character != nil and @character.is_a?(Game_Player) and @last_hp > ($game_party.members[0]).hp
      hpbar
    end
    @last_hp = ($game_party.members[0]).hp
    if @_damage_duration > 0
      @_damage_duration -=1
      @_damage_sprite.x = self.x
      if @_damage_duration <= 0
        dispose_damage
      end
    end
    if @character != nil and @character.damage != nil
      damage(@character.damage)
      @character.damage = nil
    end
    shuu_abs2_sprch_update
  end
  
  def dispose
    shuu_abs2_sprch_dispose
    dispose_damage
    dispose_hpbar
  end
  
  def hpbar
    dispose_hpbar
    @hpbar_duration = 120
    bitmap = Bitmap.new(160, 48)
    gw = 30 * ($game_party.members[0]).hp / ($game_party.members[0]).mhp
    gc1 = Color.new(224,128,64)
    gc2 = Color.new(240,192,64)
    gbc = Color.new(32,32,64)
    bitmap.fill_rect(65, 34, 30, 4, gbc)
    bitmap.gradient_fill_rect(65, 34, gw, 4, gc1, gc2)
    @hpbar_sprite = ::Sprite.new(self.viewport)
    @hpbar_sprite.bitmap = bitmap
    @hpbar_sprite.ox = 80
    @hpbar_sprite.oy = 20
    @hpbar_sprite.x = self.x
    @hpbar_sprite.y = self.y - self.oy / 2 - 40
    @hpbar_sprite.z += 99990
  end
  
  def damage(value)
    dispose_damage
    if value.is_a?(Numeric)
      damage_string = value.abs.to_s
      @_damage_duration = 30
    else
      damage_string = value.to_s
      @_damage_duration = 60
    end
    bitmap = Bitmap.new(160, 48)
    bitmap.font.name = "Arial"
    bitmap.font.size = 20
    bitmap.font.bold = true
    if value.is_a?(Numeric) and value <= 0
      bitmap.font.color.set(255, 255, 128)
    else
      bitmap.font.color.set(255, 255, 255)
    end
    bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
    bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
    @_damage_sprite = ::Sprite.new(self.viewport)
    @_damage_sprite.bitmap = bitmap
    @_damage_sprite.ox = 80
    @_damage_sprite.oy = 20
    @_damage_sprite.x = self.x
    @_damage_sprite.y = self.y - self.oy / 2 - 40
    @_damage_sprite.z += 99999
  end

  def dispose_damage
    if @_damage_sprite != nil
      @_damage_sprite.dispose
      @_damage_sprite = nil
    end
  end
  
  def dispose_hpbar
    if @hpbar_sprite != nil
      @hpbar_sprite.dispose
      @hpbar_sprite = nil
    end
  end
  
end

 

 

~ Retrolexip

Edited by Retrolexip

~ Lex, l'amichevole omino pixelloso di quartiere!

Link to comment
Share on other sites

Shuuchan ;____ ;

 

 

Comunque ottimo per il porting, abbiamo quel semplice e nostrano BS anche per ACE ora.

^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

  • 1 month later...

Lo script che shu fece per meeeeeeeeeeee!

Era un caldo pomeriggio d'estate sul forum di legend e dissi a shu che mi sarebbe piaciuto che il personaggio sparasse energia ai nemici senza tanti fronzoli.Tempo un ora e mi aveva già fatto lo script! :wub:

Bravo retro, bravo bravo bravo :wub:

http://i19.servimg.com/u/f19/18/56/59/72/lohett10.png
Purapallex PurapallexPurapallex Purapallex!!! :cool:

ttioo10.jpg

Link to comment
Share on other sites

  • 3 months later...
è uno script divertente... sto provandolo ma noto una cosa: se faccio una mappa e imposto dei nemici non riesco a trovare un modo per attivare switch o eventi a scontro terminato. È una funzione che manca allo script o sono io? :) spero qualcuno possa delucidarmi :)
Link to comment
Share on other sites

è uno script divertente... sto provandolo ma noto una cosa: se faccio una mappa e imposto dei nemici non riesco a trovare un modo per attivare switch o eventi a scontro terminato. È una funzione che manca allo script o sono io? :) spero qualcuno possa delucidarmi :)

Purtroppo è una funzione che manca. Questo BS è molto molto grezzo e si limita a dare la possibilità di interagire con degli eventi nemici.

Edited by Retrolexip

~ Lex, l'amichevole omino pixelloso di quartiere!

Link to comment
Share on other sites

come mai c'è una parte di codice commentata e quindi impossibile da usare?

Nuovi progetti:

 


w43ztoqv1klp55a6g.jpg

11764.png

 

bpc40hzhbo2xzd76g.jpg

 

00oVI6.gif gifnatale1.pngSvsJAL.pngvgnoJt.png YT3YHP.png fcCbvW.png

Script:

 

 

KZM - MZ Engine (solo core e party per ora)
KZM - MV Core
KZM - Engine Ace


Tutorial

 


Spoiler da guardare se vi interessano

 



Progetti in corso

 

Avanzamento Le Cronache di Arshes - La Strana Sopravvivenza
|||||||||||||||||||| 10% Restart imminente

Avanzamento Undead
|||||||||||||||||||| 15%

Avanzamento Le Cronache di Arshes - La Storia Continua
|||||||||||||||||||| 20% Restart Imminente

ZQ68dC.png rescue-fantasy&size=160x160


Adozioni...

 


AdottinoJudgementDragon.png
(\__/)
( ^^ )
(< >)


Screen Contests

 

q9m.gif

 


MANIFESTO DEL MAKING ITALIANO

 


SALVIAMO IL MAKING ITALIANO!!
Dopo un test dei nostri esperti (Alato, Blake e havana24) abbiamo scoperto che ad interesse risponde interesse: cioè se voi dimostrate di essere interessati a ciò che creano gli altri, questi saranno stimolati a continuare a creare! E' un concetto semplice ma estremamente sottovalutato, basta vedere quanti topic di bei giochi sono caduti nel dimenticatoio e sono stati cagati solo da poche persone (prendiamo per esempio il fantastico gioco di Vech che vi invito a vedere nella sezione RM2k).
Perciò quello che dobbiamo fare è: leggere, leggere, leggere, postare,8 postare, postare! E questo non significa postare a caso, ma leggere per bene il progetto di qualcuno, le domande poste, le creazioni grafiche e musicali, e fare dei post in cui si propongano miglioramenti, si critichino le brutture, si esaltino le bellezze, si aiutino gli oppressi etc etc
BASTA AL MAKING ITALIANO CHE VA A ROTOLI! DIAMOCI UNA SVEGLIATA!!
Per dimostrarvi ciò che sto esponendo vi riporto che la volta in cui abbiamo provato (Alato, Blake e havana24) a fare una cosa di questo genere, c'è costata un pomeriggio ma il giorno dopo abbiamo ottenuto il numero massimo di utenti online mai raggiunto!!! Ma soprattutto ciò significa che l'interesse riguardo al making era stato, almeno momentaneamente, risvegliato!!
Voi pensate che eravamo solo in 3 a cercare tutti i topic e ravvivarli (con sincerità e senza i soliti falsi "Oh che bello.", ma anche con critiche per lavori incompleti o assurdi) e abbiamo ottenuto quel grande risultato: se lo facessimo tutti non sarebbe una cosa potentissima?!?
BASTA ALLE SOLITE BANALI DISCUSSIONI SULLA DECADENZA DEI GIOCHI!! FACCIAMOLI STI GIOCHI!!!
Chi è contrario a questa cosa, può pure continuare così ma è una persona che col making non ha nulla a che fare, ma chi crede nel making inizi ora, immediatamente a seguire questa linea di pensiero!

Ma chi è d'accordo, chi davvero ci tiene al making, incolli questo Manifesto nella propria firma!! Mettete anche voi questa firma!!


Come allegare immagini al forum Bottega Rise of The Hero
5545.png 869.png250d-79e61bdc7724a730c12102387964d19e04arol.gif1321.png

Link to comment
Share on other sites

Probabilmente col passaggio ad ACE non serviva quella parte, ti dà errori? ^ ^

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

come mai c'è una parte di codice commentata e quindi impossibile da usare?

Quella parte commentata, come funzionalità, è praticamente identica a quella dello script che c'è di default.

Solo che le variabili in ACE hanno nomi diversi, quindi quella parte di script l'ho commentata. (In realtà si poteva eliminare, però non si è mai troppo prudenti. :P)

~ Lex, l'amichevole omino pixelloso di quartiere!

Link to comment
Share on other sites

capito, probabilmente gli darò un occhio appena avrò un po' di tempo e vedrò se si può scommentare facendola funzionare.

Nuovi progetti:

 


w43ztoqv1klp55a6g.jpg

11764.png

 

bpc40hzhbo2xzd76g.jpg

 

00oVI6.gif gifnatale1.pngSvsJAL.pngvgnoJt.png YT3YHP.png fcCbvW.png

Script:

 

 

KZM - MZ Engine (solo core e party per ora)
KZM - MV Core
KZM - Engine Ace


Tutorial

 


Spoiler da guardare se vi interessano

 



Progetti in corso

 

Avanzamento Le Cronache di Arshes - La Strana Sopravvivenza
|||||||||||||||||||| 10% Restart imminente

Avanzamento Undead
|||||||||||||||||||| 15%

Avanzamento Le Cronache di Arshes - La Storia Continua
|||||||||||||||||||| 20% Restart Imminente

ZQ68dC.png rescue-fantasy&size=160x160


Adozioni...

 


AdottinoJudgementDragon.png
(\__/)
( ^^ )
(< >)


Screen Contests

 

q9m.gif

 


MANIFESTO DEL MAKING ITALIANO

 


SALVIAMO IL MAKING ITALIANO!!
Dopo un test dei nostri esperti (Alato, Blake e havana24) abbiamo scoperto che ad interesse risponde interesse: cioè se voi dimostrate di essere interessati a ciò che creano gli altri, questi saranno stimolati a continuare a creare! E' un concetto semplice ma estremamente sottovalutato, basta vedere quanti topic di bei giochi sono caduti nel dimenticatoio e sono stati cagati solo da poche persone (prendiamo per esempio il fantastico gioco di Vech che vi invito a vedere nella sezione RM2k).
Perciò quello che dobbiamo fare è: leggere, leggere, leggere, postare,8 postare, postare! E questo non significa postare a caso, ma leggere per bene il progetto di qualcuno, le domande poste, le creazioni grafiche e musicali, e fare dei post in cui si propongano miglioramenti, si critichino le brutture, si esaltino le bellezze, si aiutino gli oppressi etc etc
BASTA AL MAKING ITALIANO CHE VA A ROTOLI! DIAMOCI UNA SVEGLIATA!!
Per dimostrarvi ciò che sto esponendo vi riporto che la volta in cui abbiamo provato (Alato, Blake e havana24) a fare una cosa di questo genere, c'è costata un pomeriggio ma il giorno dopo abbiamo ottenuto il numero massimo di utenti online mai raggiunto!!! Ma soprattutto ciò significa che l'interesse riguardo al making era stato, almeno momentaneamente, risvegliato!!
Voi pensate che eravamo solo in 3 a cercare tutti i topic e ravvivarli (con sincerità e senza i soliti falsi "Oh che bello.", ma anche con critiche per lavori incompleti o assurdi) e abbiamo ottenuto quel grande risultato: se lo facessimo tutti non sarebbe una cosa potentissima?!?
BASTA ALLE SOLITE BANALI DISCUSSIONI SULLA DECADENZA DEI GIOCHI!! FACCIAMOLI STI GIOCHI!!!
Chi è contrario a questa cosa, può pure continuare così ma è una persona che col making non ha nulla a che fare, ma chi crede nel making inizi ora, immediatamente a seguire questa linea di pensiero!

Ma chi è d'accordo, chi davvero ci tiene al making, incolli questo Manifesto nella propria firma!! Mettete anche voi questa firma!!


Come allegare immagini al forum Bottega Rise of The Hero
5545.png 869.png250d-79e61bdc7724a730c12102387964d19e04arol.gif1321.png

Link to comment
Share on other sites

  • 3 weeks later...
Piccola richiesta: con questo script gli eventi 'nemici' quando vengono uccisi/distrutti hanno un tempo di sparizione di circa un secondo, durante il quale continuano ad ostacolare la passabilità per il player. Qualcuno saprebbe dirmi se è possibile annullare o velocizzare questo fadeout e, se si, a quale riga? Grazie :)
Link to comment
Share on other sites

Piccola richiesta: con questo script gli eventi 'nemici' quando vengono uccisi/distrutti hanno un tempo di sparizione di circa un secondo, durante il quale continuano ad ostacolare la passabilità per il player. Qualcuno saprebbe dirmi se è possibile annullare o velocizzare questo fadeout e, se si, a quale riga? Grazie :)

non ho provato, perchè non mi va Game.exe, per altri motivi (VC++), prova così:

 

 

#===============================================================================
# ** BUBBLE BS Ace
#-------------------------------------------------------------------------------
#    di Shuuchan
#    su suggerimento di Omivino
#    convertito da Retrolexip
#    versione B1.0
#    basata su versione 1.1 del 31-01-2009
#    16-01-2015
#    RGSS3 / RPG Maker VX Ace
#-------------------------------------------------------------------------------
#===============================================================================
# .--** ISTRUZIONI **--.
#-------------------------------------------------------------------------------
# 1) Copiare lo script sotto "Materials", o appena sopra "Main" nello Script
#    Editor.
# 2) Copiare/importare il file immagine PNG "Energy Ball" nella cartella
#    "Graphics/Characters" del proprio progetto.
# 3) Regolare le Impostazioni Generali.
#-------------------------------------------------------------------------------
# ** PER CREARE UN NEMICO **
#-------------------------------------------------------------------------------
# 1) Creare un Nuovo Evento.
# 2) Inserire la Grafica del character, e impostare le Opzioni Movimento
#    preferite (in un nemico "serio" di solito il movimento è "Vicino", ovvero
#    il nemico si muove in direzione dell'Eroe. Ma si possono creare anche
#    nemici con movimento personalizzato, o fissi, come delle Trappole).
# 3) Inserire nella casella "Nome:" (in alto a sinistra nell'editor dell'evento)
#    le opzioni per creare il nemico. Le opzioni sono le seguenti:
#
#    .enemy       --> l'evento viene considerato un nemico, e perciò può essere
#                     attaccato e distrutto dalle sfere sparate dall'Eroe.
#                     Un evento senza .enemy nel Nome sarà ignorato dal BS, e
#                     considerato solo un ostacolo.
#    da .01 a .99 --> indica il numero di sfere necessarie per uccidere il
#                     nemico. ATTENZIONE: il numero deve essere SEMPRE A DUE
#                     CIFRE. Per i numeri minori di 10 inserire uno 0 davanti
#                     (perciò 5 sarà da scrivere .05).
#    .noatt       --> il nemico può essere distrutto, ma NON attacca (opzione
#                     utile per creare oggetti da distruggere).
#
# ATTENZIONE: ricordarsi sempre di scrivere il . davanti all'opzione desiderata.
#
# Quindi, per esempio, un nemico da uccidere in 2 colpi, avrà nel Nome:
#
#     .enemy.02
#
# Oppure, un "nemico" che non attacca da uccidere in 12 colpi, per esempio una
# "porta" da sfondare con le sfere, avrà scritto nel Nome:
#
#     .enemy.12.noatt
#
#-------------------------------------------------------------------------------
# ** PER ATTACCARE CON UNA SFERA
#-------------------------------------------------------------------------------
# Premere il Tasto D sulla tastiera all'interno di una mappa. Dall'Eroe
# scaturirà una sfera.
# Attenzione: se lo Switch che attiva il BS è OFF (vedi Impostazioni Generali
# qui sotto), sia l'Eroe che i nemici NON spareranno sfere.
#-------------------------------------------------------------------------------
module Shuu_Bubble
#===============================================================================
# .--** IMPOSTAZIONI GENERALI **--.
#-------------------------------------------------------------------------------
  ID_SWITCH_BUBBLE_BS = 1          # Id dello switch che permette di attivare il
                                   # Bubble BS. Se lo switch è ON è possibile
                                   # utilizzare il BS, altrimenti è disattivato.
#-------------------------------------------------------------------------------
  SE_MORTE = "Audio/SE/Collapse1"  # Nome del file Audio utilizzato alla morte
                                   # di un nemico (SE, effetto sonoro).
#-------------------------------------------------------------------------------
  SE_SFERA = "Audio/SE/Wind7"      # Nome del file Audio usato quando viene
                                   # "sparata" una sfera.
#-------------------------------------------------------------------------------
  INDICE_SFERA_EROE = 0            # Da 0 a 7, indice della sfera sparata
                                   # dall'Eroe (da scegliere nel file PNG
                                   # "Energy Ball": 0 è il primo chara in alto
                                   # a sinistra, 1 è il chara immediatamente
                                   # alla sua destra, e così via fino al 7, che
                                   # è l'ultimo chara in basso a destra).
#-------------------------------------------------------------------------------
  INDICE_SFERA_NEMICI = 1          # Da 0 a 7, indice della sfera sparata
                                   # dai nemici (da scegliere anche questo nel
                                   # file PNG "Energy Ball").
#-------------------------------------------------------------------------------
  VELOCITA = 5                     # Da 2 a 7, velocità delle sfere sparate sia
                                   # dall'Eroe che dai nemici.
#-------------------------------------------------------------------------------
  DISTANZA = 7                     # Da 1 a 16 (consigliato: 7), distanza
                                   # massima a cui possono giungere le sfere
                                   # sparate da Eroe e nemici.
#-------------------------------------------------------------------------------
  MOLT_EXP = 2                     # Da 1 a 5 (consigliato: 2), indica la 
                                   # il "grado" di Punti Esperienza guadagnati
                                   # all'uccisione di un nemico: maggiore sarà
                                   # il numero, maggiori gli EXP ottenuti.
#-------------------------------------------------------------------------------
  ANIM_LEVEL_UP = 37               # Id dell'Animzaione usata quando l'Eroe
                                   # sale di Livello (da scegliere tra le
                                   # Animazioni in Database --> Animazioni).
#-------------------------------------------------------------------------------
  ANIM_SFERA = 14                  # Id dell'Animazione usata quando una sfera
                                   # colpisce un bersaglio (anche questa da
                                   # scegliere tra le Animazioni del Database).
#-------------------------------------------------------------------------------
  MOLT_DANNO_NEMICI = 20           # Da 1 a 100 (consigliato: 20), indica il
                                   # "grado" di danni ai PV subiti dall'Eroe
                                   # quando viene colpito da una sfera: maggiore
                                   # sarà il numero, maggiori i danni.
#-------------------------------------------------------------------------------
  TEMPO_ATTACCO_EROE = 30          # Indica il tempo di attacco (ovvero il tempo
                                   # minimo per il lancio di due sfere
                                   # consecutive) dell'Eroe. 60 = 1 secondo
#-------------------------------------------------------------------------------
  TEMPO_ATTACCO_NEMICI = 30       # Indica il tempo di attacco dei nemici.
#===============================================================================
# .--** FINE IMPOSTAZIONI **--.
#===============================================================================
end

class Game_Map
  attr_accessor :nemici
  
  alias shuu_bubble_initialize initialize
  alias shuu_bubble_setup_events setup_events

  def initialize
    shuu_bubble_initialize
    @nemici = []
  end
  
  def setup_events
    shuu_bubble_setup_events
    @nemici.clear
    for evento in @events.values
      next if evento == nil
      if evento.nome.include?(".enemy")
        @nemici.push(evento)
      end
    end
  end
    
end

class Game_Actor
  def change_exp(exp, show)
    @exp[@class_id] = [exp, 0].max
    last_level = @level
    last_skills = skills
    level_up while !max_level? && self.exp >= next_level_exp
    level_down while self.exp < current_level_exp
    #display_level_up(skills - last_skills) if show && @level > last_level
    if show and @level > last_level and SceneManager.scene_is?(Scene_Map)
      $game_player.animation_id = Shuu_Bubble::ANIM_LEVEL_UP
      $game_player.damage = "Level Up!"
    end
    refresh
  end
end

class Game_Character
  
  def move_type_toward_player
    sx = @x - $game_player.x
    sy = @y - $game_player.y
    if sx.abs + sy.abs >= 12 # modifica Move Approach by Shuuchan
      move_random
    elsif sx.abs + sy.abs <= 4
      move_toward_player
    else
      case rand(12)
      when 0..9;  move_toward_player
      when 10;     move_random
      when 11;    move_forward
      end
    end
  end
  
end

class Game_Player < Game_Character
  attr_accessor :tempo_attacco
  
  alias shuu_bubblebs_initialize initialize
  alias shuu_bubblebs_update update
  
  def initialize
    shuu_bubblebs_initialize
    @tempo_attacco = 0
  end
  
  def update
    shuu_bubblebs_update
    @actor = $game_party.members[0]
    SceneManager.goto(Scene_Gameover) if @actor.hp <= 0
    @tempo_attacco -= 1 if @tempo_attacco > 0
    if $game_switches[Shuu_Bubble::ID_SWITCH_BUBBLE_BS] == true
      if Input.trigger?(Input::Z) and @tempo_attacco <= 0
        @tempo_attacco = Shuu_Bubble::TEMPO_ATTACCO_EROE - @actor.level*2
        @tempo_attacco = 30 if @tempo_attacco < 30
        Audio.se_play(Shuu_Bubble::SE_SFERA)
        indice = Shuu_Bubble::INDICE_SFERA_EROE
        $distanza.push(Game_Distanza.new($game_player, indice))
      end
    end
  end
  
end

class Game_Event < Game_Character
  attr_accessor :per_morire
  attr_accessor :nome
  attr_accessor :morto
  attr_accessor :hp
  attr_accessor :esperienza
  attr_accessor :original_hp
  attr_accessor :tempo_attacco
  attr_accessor :wait_count
  
  alias shuu_bubble_initialize initialize
  alias shuu_bubble_update update
  
  def initialize(map_id, event)
    shuu_bubble_initialize(map_id, event)
    @nome = @event.name
    @morto = false
    @per_morire = 0
    @hp = 1
    @esperienza = 0
    @tempo_attacco = 0
    if @nome.include?(".enemy")
      for i in 1..99
        sbstr = "."
        sbstr += "0" if i < 10
        sbstr += i.to_s
        if @nome.include?(sbstr)
          hp_nemico = (sbstr.slice(1,2)).to_i
          break
        end
      end
      if hp_nemico.is_a?(Numeric)
        @original_hp = hp_nemico
        @hp = hp_nemico
        @tempo_attacco = Shuu_Bubble::TEMPO_ATTACCO_NEMICI
        @esperienza += @hp*(($game_party.members[0]).level)*Shuu_Bubble::MOLT_EXP
      end
    end
  end
  
  def attacca_pg
    Audio.se_play(Shuu_Bubble::SE_SFERA)
    indice = Shuu_Bubble::INDICE_SFERA_NEMICI
    $distanza.push(Game_Distanza.new(self, indice))
  end
  
  def update
    shuu_bubble_update
    if $game_switches[Shuu_Bubble::ID_SWITCH_BUBBLE_BS] == true
      if @hp <= 0 and not @morto
        Audio.se_play(Shuu_Bubble::SE_MORTE, 80)
        @morto = true
        ($game_party.members[0]).gain_exp(@esperienza)
#~         @per_morire = 255
        lock
      end
#~       if @per_morire != 0 and @morto
#~         @per_morire -= 4
#~         @per_morire = 0 if @per_morire < 0
#~         @opacity = @per_morire
#~       end
      if @morto # era: @per_morire == 0 and @morto
        erase
      end
      if not @morto
        if @nome.include?(".enemy") and not @nome.include?(".noatt")
          sx = @x - $game_player.x
          sy = @y - $game_player.y
          @tempo_attacco -= 1 if @tempo_attacco > 0 and (sx.abs + sy.abs <= 12) and @wait_count <= 0
          @wait_count -= 1 if @wait_count > 0
          if @tempo_attacco <= 0
            if sx.abs + sy.abs <= 12 and @wait_count <= 0
              @tempo_attacco = Shuu_Bubble::TEMPO_ATTACCO_NEMICI - @original_hp*4
              @tempo_attacco = 100 if @tempo_attacco < 100
              attacca_pg
            end
          end 
        end
      end
    end
  end

end

module DataManager
  class << self
    alias shuu_bubble_game_objects create_game_objects
    alias shuu_bubble_write make_save_contents
    alias shuu_bubble_read extract_save_contents
  end
  
  def self.create_game_objects
    shuu_bubble_game_objects
    $distanza = []
  end
  def self.make_save_contents
    contents = shuu_bubble_write
    contents[:distanza] = $distanza
    contents
  end
  def self.extract_save_contents(contents)
    shuu_bubble_read(contents)
    $distanza = contents[:distanza]
  end
  
end


class Game_Distanza < Game_Character
  attr_accessor :draw
  attr_accessor :destroy
  attr_accessor :character_name
  
  def initialize(parent,chara_index=0,speed=4,range=0)
    super()
    @parent = parent
    @character_name = "Energy Ball"
    @character_index = chara_index
    @move_speed = Shuu_Bubble::VELOCITA
    @range = Shuu_Bubble::DISTANZA
    @step = 0
    pd = @parent.direction
    moveto(@parent.x,@parent.y)
    set_direction(pd)
    @destroy = false
    @draw = false
  end
  
  def update
    super
    return @destroy = true if @step >= @range
    move_route
    check_event_trigger_touch(@x, @y)
  end
  
  def move_route
    return unless movable?
    d = @direction
    move_straight(d)
    @step += 1
  end
  
  def movable?
    return false if moving?
    return false if @move_route_forcing
    return true
  end
  
  def check_event_trigger_touch(x, y)
    return if @destroy
    if @parent.is_a?(Game_Player)
      for nemico in $game_map.nemici
        if nemico.x == x and nemico.y == y and not nemico.morto
          nemico.animation_id = Shuu_Bubble::ANIM_SFERA
          colpisci_nemico(nemico)
        end
      end
    else
      if $game_player.x == x and $game_player.y == y
        $game_player.animation_id = Shuu_Bubble::ANIM_SFERA
        colpisci_eroe(@parent)
      end
    end
  end
    
  def colpisci_nemico(bersaglio)
    @destroy = true
    bersaglio.jump(0,0)
    danno = 1
    bersaglio.hp -= danno
    bersaglio.wait_count = 60
  end
  
  def colpisci_eroe(source)
    @destroy = true
    $game_player.jump(0,0)
    colpo = rand(5 + ($game_party.members[0]).level) + (Shuu_Bubble::MOLT_DANNO_NEMICI*($game_party.members[0]).level)/3
    danno = ((source.original_hp)*Shuu_Bubble::MOLT_DANNO_NEMICI) - ((($game_party.members[0]).def)) + colpo
    danno = 1 if danno <= 0
    ($game_party.members[0]).hp -= danno
  end
  
end


class Spriteset_Map
  
  alias shuu_bubblebs_create_characters create_characters
  alias shuu_bubblebs_update_characters update_characters
  alias shuu_bubblebs_dispose dispose
  
  def create_characters
    @range_sprites = []
    for range in $distanza
      next if range == nil
      @range_sprites.push(Sprite_Character.new(@viewport1,range))
    end
    shuu_bubblebs_create_characters
  end
  
  def update_characters
    shuu_bubblebs_update_characters
    for range in @range_sprites
      next if range == nil
      range.update
    end
    for range in $distanza
      next if range == nil
      if range.draw == false
        @range_sprites.push(Sprite_Character.new(@viewport1,range))
        range.draw = true
      end
      if range.destroy == true
        $distanza.delete(range)
        range.character_name = ""
      end
    end
  end
  
  def dispose
    for range in @range_sprites
      next if range == nil
      range.dispose
    end
    shuu_bubblebs_dispose
  end
end


class Scene_Map < Scene_Base
  
  alias shuu_bubble_update update
  
  def update
    for range in $distanza
      next if range == nil
      range.update
    end
    shuu_bubble_update
  end
  
end

class Game_Character
  attr_accessor :damage
  attr_accessor :specialtext

  alias shuu_abs2_initialize initialize
  
  def initialize
    shuu_abs2_initialize
    @damage = nil
    @specialtext = nil
  end

end


class Sprite_Base 
#~   alias animation animation_set_sprites
#~   def animation_set_sprites(frame)
#~     cell_data = frame.cell_data
#~     for i in 0..15
#~       sprite = @animation_sprites[i]
#~       next if sprite == nil
#~       pattern = cell_data[i, 0]
#~       if pattern == nil or pattern == -1
#~         sprite.visible = false
#~         next
#~       end
#~       if pattern < 100
#~         sprite.bitmap = @animation_bitmap1
#~       else
#~         sprite.bitmap = @animation_bitmap2
#~       end
#~       sprite.visible = true
#~       sprite.src_rect.set(pattern % 5 * 192,
#~         pattern % 100 / 5 * 192, 192, 192)
#~       if @animation_mirror
#~         sprite.x = @animation_ox - cell_data[i, 1] / 2
#~         sprite.y = @animation_oy - cell_data[i, 2] / 2
#~         sprite.angle = (360 - cell_data[i, 4])
#~         sprite.mirror = (cell_data[i, 5] == 0)
#~       else
#~         sprite.x = @animation_ox + cell_data[i, 1] / 2
#~         sprite.y = @animation_oy + cell_data[i, 2] / 2
#~         sprite.angle = cell_data[i, 4]
#~         sprite.mirror = (cell_data[i, 5] == 1)
#~       end
#~       sprite.z = self.z + 300
#~       sprite.ox = 96
#~       sprite.oy = 96
#~       sprite.zoom_x = cell_data[i, 3] / 200.0
#~       sprite.zoom_y = cell_data[i, 3] / 200.0
#~       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
#~       sprite.blend_type = cell_data[i, 7]
#~     end
#~   end
end

class Sprite_Character < Sprite_Base
  
  alias shuu_abs2_sprch_update update
  alias shuu_abs2_sprch_dispose dispose
  
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @balloon_duration = 0
    @_damage_duration = 0
    @last_hp = 0
    @hpbar_duration = 0
    update
  end
  
  def update
    super
    if @hpbar_duration > 0
      @hpbar_duration -=1
      @hpbar_sprite.x = self.x if @hpbar_sprite != nil
      @hpbar_sprite.y = self.y - self.oy / 2 - 40 if @hpbar_sprite != nil
      if @hpbar_duration <= 0 or @_damage_duration > 0
        dispose_hpbar
      end
    end
    if @character != nil and @character.is_a?(Game_Player) and @last_hp > ($game_party.members[0]).hp
      hpbar
    end
    @last_hp = ($game_party.members[0]).hp
    if @_damage_duration > 0
      @_damage_duration -=1
      @_damage_sprite.x = self.x
      if @_damage_duration <= 0
        dispose_damage
      end
    end
    if @character != nil and @character.damage != nil
      damage(@character.damage)
      @character.damage = nil
    end
    shuu_abs2_sprch_update
  end
  
  def dispose
    shuu_abs2_sprch_dispose
    dispose_damage
    dispose_hpbar
  end
  
  def hpbar
    dispose_hpbar
    @hpbar_duration = 120
    bitmap = Bitmap.new(160, 48)
    gw = 30 * ($game_party.members[0]).hp / ($game_party.members[0]).mhp
    gc1 = Color.new(224,128,64)
    gc2 = Color.new(240,192,64)
    gbc = Color.new(32,32,64)
    bitmap.fill_rect(65, 34, 30, 4, gbc)
    bitmap.gradient_fill_rect(65, 34, gw, 4, gc1, gc2)
    @hpbar_sprite = ::Sprite.new(self.viewport)
    @hpbar_sprite.bitmap = bitmap
    @hpbar_sprite.ox = 80
    @hpbar_sprite.oy = 20
    @hpbar_sprite.x = self.x
    @hpbar_sprite.y = self.y - self.oy / 2 - 40
    @hpbar_sprite.z += 99990
  end
  
  def damage(value)
    dispose_damage
    if value.is_a?(Numeric)
      damage_string = value.abs.to_s
      @_damage_duration = 30
    else
      damage_string = value.to_s
      @_damage_duration = 60
    end
    bitmap = Bitmap.new(160, 48)
    bitmap.font.name = "Arial"
    bitmap.font.size = 20
    bitmap.font.bold = true
    if value.is_a?(Numeric) and value <= 0
      bitmap.font.color.set(255, 255, 128)
    else
      bitmap.font.color.set(255, 255, 255)
    end
    bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
    bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
    @_damage_sprite = ::Sprite.new(self.viewport)
    @_damage_sprite.bitmap = bitmap
    @_damage_sprite.ox = 80
    @_damage_sprite.oy = 20
    @_damage_sprite.x = self.x
    @_damage_sprite.y = self.y - self.oy / 2 - 40
    @_damage_sprite.z += 99999
  end

  def dispose_damage
    if @_damage_sprite != nil
      @_damage_sprite.dispose
      @_damage_sprite = nil
    end
  end
  
  def dispose_hpbar
    if @hpbar_sprite != nil
      @hpbar_sprite.dispose
      @hpbar_sprite = nil
    end
  end
  
end

 

 

Nuovi progetti:

 


w43ztoqv1klp55a6g.jpg

11764.png

 

bpc40hzhbo2xzd76g.jpg

 

00oVI6.gif gifnatale1.pngSvsJAL.pngvgnoJt.png YT3YHP.png fcCbvW.png

Script:

 

 

KZM - MZ Engine (solo core e party per ora)
KZM - MV Core
KZM - Engine Ace


Tutorial

 


Spoiler da guardare se vi interessano

 



Progetti in corso

 

Avanzamento Le Cronache di Arshes - La Strana Sopravvivenza
|||||||||||||||||||| 10% Restart imminente

Avanzamento Undead
|||||||||||||||||||| 15%

Avanzamento Le Cronache di Arshes - La Storia Continua
|||||||||||||||||||| 20% Restart Imminente

ZQ68dC.png rescue-fantasy&size=160x160


Adozioni...

 


AdottinoJudgementDragon.png
(\__/)
( ^^ )
(< >)


Screen Contests

 

q9m.gif

 


MANIFESTO DEL MAKING ITALIANO

 


SALVIAMO IL MAKING ITALIANO!!
Dopo un test dei nostri esperti (Alato, Blake e havana24) abbiamo scoperto che ad interesse risponde interesse: cioè se voi dimostrate di essere interessati a ciò che creano gli altri, questi saranno stimolati a continuare a creare! E' un concetto semplice ma estremamente sottovalutato, basta vedere quanti topic di bei giochi sono caduti nel dimenticatoio e sono stati cagati solo da poche persone (prendiamo per esempio il fantastico gioco di Vech che vi invito a vedere nella sezione RM2k).
Perciò quello che dobbiamo fare è: leggere, leggere, leggere, postare,8 postare, postare! E questo non significa postare a caso, ma leggere per bene il progetto di qualcuno, le domande poste, le creazioni grafiche e musicali, e fare dei post in cui si propongano miglioramenti, si critichino le brutture, si esaltino le bellezze, si aiutino gli oppressi etc etc
BASTA AL MAKING ITALIANO CHE VA A ROTOLI! DIAMOCI UNA SVEGLIATA!!
Per dimostrarvi ciò che sto esponendo vi riporto che la volta in cui abbiamo provato (Alato, Blake e havana24) a fare una cosa di questo genere, c'è costata un pomeriggio ma il giorno dopo abbiamo ottenuto il numero massimo di utenti online mai raggiunto!!! Ma soprattutto ciò significa che l'interesse riguardo al making era stato, almeno momentaneamente, risvegliato!!
Voi pensate che eravamo solo in 3 a cercare tutti i topic e ravvivarli (con sincerità e senza i soliti falsi "Oh che bello.", ma anche con critiche per lavori incompleti o assurdi) e abbiamo ottenuto quel grande risultato: se lo facessimo tutti non sarebbe una cosa potentissima?!?
BASTA ALLE SOLITE BANALI DISCUSSIONI SULLA DECADENZA DEI GIOCHI!! FACCIAMOLI STI GIOCHI!!!
Chi è contrario a questa cosa, può pure continuare così ma è una persona che col making non ha nulla a che fare, ma chi crede nel making inizi ora, immediatamente a seguire questa linea di pensiero!

Ma chi è d'accordo, chi davvero ci tiene al making, incolli questo Manifesto nella propria firma!! Mettete anche voi questa firma!!


Come allegare immagini al forum Bottega Rise of The Hero
5545.png 869.png250d-79e61bdc7724a730c12102387964d19e04arol.gif1321.png

Link to comment
Share on other sites

si

Nuovi progetti:

 


w43ztoqv1klp55a6g.jpg

11764.png

 

bpc40hzhbo2xzd76g.jpg

 

00oVI6.gif gifnatale1.pngSvsJAL.pngvgnoJt.png YT3YHP.png fcCbvW.png

Script:

 

 

KZM - MZ Engine (solo core e party per ora)
KZM - MV Core
KZM - Engine Ace


Tutorial

 


Spoiler da guardare se vi interessano

 



Progetti in corso

 

Avanzamento Le Cronache di Arshes - La Strana Sopravvivenza
|||||||||||||||||||| 10% Restart imminente

Avanzamento Undead
|||||||||||||||||||| 15%

Avanzamento Le Cronache di Arshes - La Storia Continua
|||||||||||||||||||| 20% Restart Imminente

ZQ68dC.png rescue-fantasy&size=160x160


Adozioni...

 


AdottinoJudgementDragon.png
(\__/)
( ^^ )
(< >)


Screen Contests

 

q9m.gif

 


MANIFESTO DEL MAKING ITALIANO

 


SALVIAMO IL MAKING ITALIANO!!
Dopo un test dei nostri esperti (Alato, Blake e havana24) abbiamo scoperto che ad interesse risponde interesse: cioè se voi dimostrate di essere interessati a ciò che creano gli altri, questi saranno stimolati a continuare a creare! E' un concetto semplice ma estremamente sottovalutato, basta vedere quanti topic di bei giochi sono caduti nel dimenticatoio e sono stati cagati solo da poche persone (prendiamo per esempio il fantastico gioco di Vech che vi invito a vedere nella sezione RM2k).
Perciò quello che dobbiamo fare è: leggere, leggere, leggere, postare,8 postare, postare! E questo non significa postare a caso, ma leggere per bene il progetto di qualcuno, le domande poste, le creazioni grafiche e musicali, e fare dei post in cui si propongano miglioramenti, si critichino le brutture, si esaltino le bellezze, si aiutino gli oppressi etc etc
BASTA AL MAKING ITALIANO CHE VA A ROTOLI! DIAMOCI UNA SVEGLIATA!!
Per dimostrarvi ciò che sto esponendo vi riporto che la volta in cui abbiamo provato (Alato, Blake e havana24) a fare una cosa di questo genere, c'è costata un pomeriggio ma il giorno dopo abbiamo ottenuto il numero massimo di utenti online mai raggiunto!!! Ma soprattutto ciò significa che l'interesse riguardo al making era stato, almeno momentaneamente, risvegliato!!
Voi pensate che eravamo solo in 3 a cercare tutti i topic e ravvivarli (con sincerità e senza i soliti falsi "Oh che bello.", ma anche con critiche per lavori incompleti o assurdi) e abbiamo ottenuto quel grande risultato: se lo facessimo tutti non sarebbe una cosa potentissima?!?
BASTA ALLE SOLITE BANALI DISCUSSIONI SULLA DECADENZA DEI GIOCHI!! FACCIAMOLI STI GIOCHI!!!
Chi è contrario a questa cosa, può pure continuare così ma è una persona che col making non ha nulla a che fare, ma chi crede nel making inizi ora, immediatamente a seguire questa linea di pensiero!

Ma chi è d'accordo, chi davvero ci tiene al making, incolli questo Manifesto nella propria firma!! Mettete anche voi questa firma!!


Come allegare immagini al forum Bottega Rise of The Hero
5545.png 869.png250d-79e61bdc7724a730c12102387964d19e04arol.gif1321.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...