Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

[VX] ABS by Vlad.

-----VLAD ABS------


Vlad ABS is a spanish ABS (Action Battle System), very simplistic. Easy to use, but it's not a serious ABS. I have taken the liberty of translating the script and demo. I have attached a .txt file with the translation for the demo, so just look off of it. I posted a translated script too. Also you need to download RGSS200E.DLL, which will allow you to play the demo and use the ABS. Enjoy.

DEMO:
http://files.filefront.com/Vlad+ABS+11/ ... einfo.html

Instructions:
Download this DLL and put in your System32 folder located in C:\WINDOWS
RGSS200E.DLL DOWNLOAD: http://www.sendspace.com/file/4d1qcg

Here's the .txt file you can look off that will translate the demo: http://www.sendspace.com/file/c6k1lu

Here's the translated script. Put it above Main in the Script Editor

Code:
#===================================
# Vlad ABS
#===================================
#--------------------------------------------------------------
# Credits to Vlad
#--------------------------------------------------------------
# To create an enemy, make an event with these annotations:
# Enemy ID - Where ID is the ID number of the enemy in the Database.
# Die X - where X = 1 or 2 (1, erases the event of the enemy, 
# 2, passes to the local interrupter A)
# Follow - Makes the event automatically follow the hero.
#--------------------------------------------------------------
# General Configuration
#--------------------------------------------------------------
#--------------------------------------------------------------
# Attack Button, Don't Change: [DEFAULT= A]
Attack_Button = Input::X
#--------------------------------------------------------------
# Ability Button, Don't Change: [DEFAULT= S]
Skill_Button = {Input::Y => 0}
#--------------------------------------------------------------
# LevelUP Animation:
LevelUp_Ani = 40
#--------------------------------------------------------------
# Attack Animation, copy Enemy_atk_ani[2] = 13
# change the 2 to the ID of the enemy, and the 13 to the ID of the animation.
# Example: Enemy_atk_ani[25] = 24
Enemy_atk_ani = {}
Enemy_atk_ani[2] = 13
#--------------------------------------------------------------

#--------------------------------------------------------------
# Game Character
#--------------------------------------------------------------
class Game_Character
  attr_accessor :hp
  attr_accessor :mp
  attr_accessor :damage
  attr_accessor :critical
  attr_accessor :wait_ataque
  attr_accessor :die
  alias vlad_abs_gchar_initialize initialize
  def initialize
    @hp = 0
    @mp = 0
    @die = 0
    $skill_for_use = 0
    @wait_ataque = 0
    @damage = nil
    @critical = false
    vlad_abs_gchar_initialize
  end  
  def recebe_atk(attacker)
    attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1])
    receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1])
    self.damage = attacker_status.atk - receptor_status.def
    self.damage *= attacker_status.elements_max_rate(attacker_status.element_set)
    self.damage /= 100
    self.damage = 0 if self.damage < 0
    self.critical = (rand(100) < 4)
    self.damage *= 2 if self.critical
    if self.is_a?(Game_Player)
    $game_actors[1].hp -= self.damage
    if $game_actors[1].hp <= 0
      $scene = Scene_Gameover.new
    end
    elsif self.is_a?(Game_Event)
      self.hp -= self.damage
      if self.hp <= 0
        self.animation_id = 88
          $game_actors[1].gain_exp(enemy_status.exp, 1)
          if @die == 1
          self.erase
        elsif @die == 2
          key = [$game_map.map_id, self.id, "A"]
          $game_self_switches[key] = true
          end
          refresh
        end
    end
  end
   def recebe_skl(attacker)
     for key in Skill_Button.keys
    sklid = Skill_Button[key]
    attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1])
    receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1])
    self.damage = $data_skills[sklid].atk_f - receptor_status.def
    self.damage *= attacker_status.elements_max_rate(attacker_status.element_set)
    self.damage /= 100
    self.damage = 0 if self.damage < 0
    self.critical = (rand(100) < 4)
    self.damage *= 2 if self.critical
    attacker_status.mp -= $data_skills[sklid].mp_cost
    if self.is_a?(Game_Player)
    $game_actors[1].hp -= self.damage
    $scene = Scene_Gameover.new if $game_actors[1].hp <= 0
    elsif self.is_a?(Game_Event)
      self.hp -= self.damage
      if self.hp <= 0
          $game_actors[1].gain_exp(enemy_status.exp, 1)
          if @die == 1
          self.erase
        elsif @die == 2
          key = [$game_map.map_id, self.id, "A"]
          $game_self_switches[key] = true
          end
          refresh
        end
    end
  end
end
  def follow_hero(dx, dy)
        sx = @x - dx
        sy = @y - dy
        if sx == 0 and sy == 0
          return
        end
        abs_sx = sx.abs
        abs_sy = sy.abs
        if abs_sx == 0
          sy > 0 ? move_up : move_down
          if not moving? and sx != 0
            sx > 0 ? move_left : move_right
          end
          return
        elsif abs_sy == 0
          sx > 0 ? move_left : move_right
          if not moving? and sy != 0
            sy > 0 ? move_up : move_down
          end
          return
        end
        if abs_sx == abs_sy
          rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
        end
        if abs_sx > abs_sy
          sx > 0 ? move_left : move_right
          if not moving? and sy != 0
            sy > 0 ? move_up : move_down
          end
        else
          sy > 0 ? move_up : move_down
          if not moving? and sx != 0
            sx > 0 ? move_left : move_right
          end
        end
      end
      def raio(dx, dy)
        ax = (@x - dx) ** 2
        ay = (@y - dy) ** 2
        return Math.sqrt(ax + ay)
      end
end

#--------------------------------------------------------------
# Game Event
#--------------------------------------------------------------
class Game_Event < Game_Character
  attr_reader :inimigo
  attr_reader :enemy_status
  alias vlad_abs_gevent_initialize initialize
  alias vlad_abs_gevent_update update
  alias vlad_abs_gevent_refresh refresh
  def initialize(map_id, event)
    @inimigo = false
    @automove = false
    vlad_abs_gevent_initialize(map_id, event)
  end
  def check_com(comentario)
    return false if @list.nil? or @list.size <= 0 
    for item in @list
      if item.code == 108 or item.code == 408
        if item.parameters[0].downcase.include?(comentario.downcase)
          return true
        end
      end
    end
  end
  def check_comment(comentario)
    com = comentario.downcase
    return 0 if @list.nil? or @list.size <= 0 
    for item in @list
      if item.code == 108 or item.code == 408
        if item.parameters[0].downcase =~ /#{com}[ ]?(\d+)?/
          return $1.to_i
        end
      end
    end
    return 0
  end
  def update
    vlad_abs_gevent_update
    if @inimigo
      new_x = (@x + (@direction == 4 ? -1 : @direction == 6 ? 1 : 0))
      new_y = (@y + (@direction == 8 ? -1 : @direction == 2 ? 1 : 0))
      if self.wait_ataque > 0
        self.wait_ataque -= 1
      elsif $game_player.x == new_x and $game_player.y == new_y
         $game_player.recebe_atk(self)
         $game_player.animation_id = self.enemy_atk_animation_id
         $game_player.jump(0,0)
        self.wait_ataque = 60
      end
    end
     if @automove
          unless moving?
            self.follow_hero($game_player.x, $game_player.y)
          end
        end
  end
  def refresh
    vlad_abs_gevent_refresh
    @inimigo = false
    @enemy_id = check_comment("Enemy")
    @automove = true if check_com("Follow") == true
    @die = check_comment("Die")
    if @enemy_id > 0
      @inimigo = true
      @enemy_status = Game_Enemy.new(@enemy_id, @enemy_id)
	    self.hp = @enemy_status.maxhp
	    self.mp = @enemy_status.maxmp
    end
  end
  def enemy_atk_animation_id
    if Enemy_atk_ani[@enemy_id]
    return (@enemy_status.nil? ? 0 : Enemy_atk_ani[@enemy_id])
  else
    return (@enemy_status.nil? ? 0 : 1)
  end
  end
  def Enemy_atk_ani
    return Enemy_atk_ani
  end
end

#--------------------------------------------------------------
# Game Player
#--------------------------------------------------------------
class Game_Player < Game_Character
  alias vlad_abs_gplayer_update update
  alias vlad_abs_gplayer_refresh refresh
  def update
    vlad_abs_gplayer_update
    if self.wait_ataque > 0
      self.wait_ataque -= 1
    end
  def refresh
    vlad_abs_gplayer_refresh
    self.hp = $game_actors[1].hp
    self.mp = $game_actors[1].mp
  end
    if Input.trigger?(Attack_Button) and self.wait_ataque <= 0
      new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0))
      new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0))
      for event in $game_map.events.values
        if event.inimigo
          if event.x == new_x and event.y == new_y
            event.recebe_atk(self)
            event.animation_id = self.player_atk_animation_id
            event.jump(0,0)
            self.wait_ataque = 30
            break
          end
        end
      end
    end
    for key in Skill_Button.keys
    if Input.trigger?(key) and Skill_Button[key] != nil and Skill_Button[key] != 0 and $game_actors[1].mp >= $data_skills[Skill_Button[key]].mp_cost and self.wait_ataque <= 0
      new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0))
      new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0))
      for event in $game_map.events.values
        if event.inimigo
          if event.x == new_x and event.y == new_y
            event.recebe_skl(self)
            event.animation_id = self.player_skl_animation_id
            event.jump(0,0)
            self.wait_ataque = 60
            break
          end
        end
      end
    end
    end
    def player_atk_animation_id
    return ($game_actors[1].nil? ? 0 : $game_actors[1].atk_animation_id)
  end
  def player_skl_animation_id
    for key in Skill_Button.keys
      sklid = Skill_Button[key]
    return ($game_actors[1].nil? ? 0 : $data_skills[sklid].animation_id)
    end
  end
    def Attack_Button
    return Attack_Button
  end
  def Skill_Button
    return Skill_Button
  end
  end
end

#--------------------------------------------------------------
# Game Actor
#--------------------------------------------------------------
class Game_Actor
  alias vlad_abs_change_exp change_exp
  def change_exp(exp, show)
    last_level = @level
    last_skills = skills
    @exp = [[exp, 9999999].min, 0].max
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      level_up
    end
    while @exp < @exp_list[@level]
      level_down
    end
    @hp = [@hp, maxhp].min
    @mp = [@mp, maxmp].min
    if show and @level > last_level
      show_level_up
    end
    vlad_abs_change_exp(exp,show)
  end
  def show_level_up
    $game_player.animation_id = LevelUp_Ani
    $game_actors[1].hp = $game_actors[1].maxhp
    $game_actors[1].mp = $game_actors[1].maxmp
  end
  def LevelUp_Ani
    return LevelUp_Ani
  end
end

#--------------------------------------------------------------
# Sprite Base
#--------------------------------------------------------------
  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
#--------------------------------------------------------------
# Sprite Character
#--------------------------------------------------------------
class Sprite_Character < Sprite_Base
  alias vlad_abs_spchar_update update
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    @balloon_duration = 0
    @_damage_duration = 0
    update
  end
  def update
    super
    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.critical)
      @character.damage = nil
      @character.critical = false
    end
    vlad_abs_spchar_update
  end
def damage(value, critical)
      dispose_damage
      if value.is_a?(Numeric)
        damage_string = value.abs.to_s
      else
        damage_string = value.to_s
      end
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = "Georgia"
      bitmap.font.size = 22
      bitmap.font.italic = true
      if value.is_a?(Numeric) and value <= 0
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 13, 160, 36, "Fallo", 1)
        bitmap.font.color.set(255, 245, 155)
        bitmap.draw_text(0, 12, 160, 36, "Fallo", 1)
      else
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      end
      if critical
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 6, 160, 20, "Crítico", 1)
        bitmap.font.color.set(255, 245, 155)
        bitmap.draw_text(0, 5, 160, 20, "Crítico", 1)
      end
      @_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
      @_damage_duration = 30
    end
    def show_text(string, size=16, color=0)
      dispose_damage
      damage_string = string
      if string.is_a?(Array)
        array = true
      else
        array = false
      end
      bitmap = Bitmap.new(160, 48)
      bitmap.font.name = "Georgia"
      bitmap.font.size = size
      bitmap.font.italic = true
      if array
        for i in 0..string.size
          next if damage_string[i] == nil
          bitmap.font.color.set(96, 96-20, 0) if color == 0
          bitmap.font.color.set(0, 0, 0) if color != 0 
          bitmap.draw_text(-1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1)
          bitmap.draw_text(+1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1)
          bitmap.draw_text(-1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1)
          bitmap.draw_text(+1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1)
          bitmap.font.color.set(255, 245, 155) if color == 0
          bitmap.font.color.set(144, 199, 150) if color == 1
          bitmap.font.color.set(197, 147, 190)if color == 2
          bitmap.font.color.set(138, 204, 198)if color == 3
          bitmap.draw_text(0, (12+(16*i))-16, 160, 36, damage_string[i], 1)
        end
      else
        bitmap.font.color.set(96, 96-20, 0) if color == 0
        bitmap.font.color.set(0, 0, 0) if color != 0 
        bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1)
        bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1)
        bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1)
        bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1)
        bitmap.font.color.set(255, 245, 155) if color == 0
        bitmap.font.color.set(144, 199, 150) if color == 1
        bitmap.font.color.set(197, 147, 190)if color == 2
        bitmap.font.color.set(138, 204, 198)if color == 3
        bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      end
      @_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
      @_damage_sprite.z = 3000
      @_damage_duration = 30
    end 
    def dispose_damage
    if @_damage_sprite != nil
      @_damage_sprite.dispose
      @_damage_sprite = nil
    end
  end
end
  
#--------------------------------------------------------------
# Window Skill
#--------------------------------------------------------------
class Scene_Skill
  alias vlad_abs_sskill_initialize initialize
  alias vlad_abs_sskill_update update
  def initialize(actor_index = 0, equip_index = 0)
    @memory = Window_Command.new(150, ["Memorize"])
    @memory.active = false
    @memory.visible = false
    @memory.x = (544 - @memory.width) / 2
    @memory.y = (416 - @memory.height) / 2
    @memory.z = 1500
    vlad_abs_sskill_initialize
  end
def update
  update_skill
  @memory.update if @memory.active
  return update_memory if @memory.active
  vlad_abs_sskill_update
end
def update_skill
  for key in Skill_Button.keys
  if Input.trigger?(key)
  Sound.play_decision
  Skill_Button[key] = @skill_window.skill.id
  @memory.active = @memory.visible = true
  @skill_window.active = false
end
end
end
  def update_memory
if Input.trigger?(Input::C)
  Sound.play_decision
  @memory.active = @memory.visible = false
  @skill_window.active = true
end
end
  def Skill_Button
    return Skill_Button
  end
end

#--------------------------------------------------------------
# FINISH
#--------------------------------------------------------------

Additionally, you need to input this script above the ABS script in order to see the HUD
Code:
#=============================================================================
# Window Hud
#=============================================================================

class Window_Hud < Window_Base
  def initialize
    super(0,0,128,96)
    self.opacity = 0
#    self.visible = false
    refresh
  end
  def refresh
    self.contents.clear
      actor = $game_actors[1]
      draw_actor_hp(actor, 0, 0, 96)
      draw_actor_mp(actor, 0, 32, 96)
   end
   def update
#     self.visible = true if $game_switches[1] == true # 1=interruptor que activa y desactiva el HUD
     refresh
   end
end

class Scene_Map
  alias hud_main main
  alias hud_update update
  alias hud_terminate terminate
  def main
    @hud = Window_Hud.new
    hud_main
  end
  def update
    @hud.update
    hud_update
  end
  def terminate
    @hud.dispose
  end
end

How to use the ABS
Create an Event. You don't have to name it. Now create a graphic for that monster.
Next create THREE comment boxes. In the first one type Enemy ID and replace the ID with the number your enemy is, in the Database
The second comment box should be Die with either 1 or 2, put 1 if you just want the enemy to get killed and disappear.
For the final comment box it should be either Follow or not. If you do not want the enemy following the hero, then don't put this comment box.

So it should look like this:
EXAMPLE:

Comment: Enemy 27
Comment: Die 1
Comment: Follow [OPTIONAL]

Credits
This was made by a Spanish guy named Vlad. I do believe somewhere in the original post I provided it says it can be distributed anywhere, or at least that's what the person who posted this back on another RM forum said. If someone can point out if it can't be distributed I will take this script down, I do not want to violate any rules. So if someone can translate the original post and verify if this script can be 100% distributed that would be great.

Original Post: http://www.vz4.net/index.php?site/ver-5043
 
Original Post":6piyba2e said:
Descripción:
Este script sirve para crear un ABS muy sencillo de usar, aunque con opciones muy limitadas. No te servirá como ABS serio (faltan animaciones y demás) a menos que quieras una apariencia sencilla.

Instrucciones:
Todas las instrucciones necesarias están en el script.

Créditos:
Script creado por Vlad.

Description
This script is used to create a very easy to use ABS, although with very limited options. It won't do you any good as a serious ABS (lacking animations and others), unless you want a simple look.

Instructions
All the instructions you'll need are in the script.

Credits
Script created by Vlad.

Don't see anything mentioning distribution in there.
 

lalala

Member

Vlad's ABS is under Creative Commons License.
It can be redistributed without any problem if you don't try to make the script yours.
 
lalala":14k0oro3 said:
Vlad's ABS is under Creative Commons License.
It can be redistributed without any problem if you don't try to make the script yours.

Alright thanks for the heads up. So mods, I do believe I can keep this thread up.
 
Cool. I've using this since 1.1, but isn't it on 1.3 right now? I could have believed that his website was distributing 1.3. Hmmm... Oh well, I also thought it wasn't Spanish but something close to it. Then again I only know Mexican Spanish, so I could be wrong. Well, I'm not complaining, this makes it easier for me to understand what he wrote, cause I had to guess what everything meant lol. Well thanks dude!  :thumb:
 

lalala

Member

I think Vlad's scripts are in Portuguese. In that link there is a Spanish translation.
That's true, Portuguese is close to Spanish but not the same.
 
Nice, but a few questions;

1. When you put Die 2, what happens? Does it stay around? And is it invincible then?
2. Can you put other events too? So that, let's say, I make a shop, and the shop owner is attackable, but you choose not to attack him, and instead you buy stuff from him, but it still leaves you the choice of killing him.
3. If yes to above, can you make it so that the person whom you killed is gone for good?

Thanks, nice script, good luck!
-Krobe
 
Krobelus":pnmpqcvr said:
Nice, but a few questions;

1. When you put Die 2, what happens? Does it stay around? And is it invincible then?
2. Can you put other events too? So that, let's say, I make a shop, and the shop owner is attackable, but you choose not to attack him, and instead you buy stuff from him, but it still leaves you the choice of killing him.
3. If yes to above, can you make it so that the person whom you killed is gone for good?

Thanks, nice script, good luck!
-Krobe

To answer question 2, it's fairly easy.

Make a new event and call it Shopkeeper or something, then make two pages.

On the first page put this:
Show Choices: Buy, Battle
If Buy:
Shop Processing

If Battle:
Self Switch C= ON

Now go to the second page, put the precondition as Self Switch C= ON and input the ABS enemy comments, for example

Comment: Enemy 25
Comment: Die 1
Comment: Follow

And that's it.
 
More than over how do they work?

My other problems are that enemies attack a tad to quickly and theres no way to control their speed.
 
Faint":lpjm6zpi said:
When someone attacks me it says Fallo? Means that Attack in Spanish? And how can i change?

from lines 417-430 in script ABS replace

        bitmap.draw_text(1, 13, 160, 36, "Fallo", 1)
        bitmap.font.color.set(255, 245, 155)
        bitmap.draw_text(0, 12, 160, 36, "Fallo", 1)
      else
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      end
      if critical
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 6, 160, 20, "Crítico", 1)
        bitmap.font.color.set(255, 245, 155)
        bitmap.draw_text(0, 5, 160, 20, "Crítico", 1)

with

        bitmap.draw_text(1, 13, 160, 36, "Miss", 1)
        bitmap.font.color.set(255, 245, 155)
        bitmap.draw_text(0, 12, 160, 36, "Miss", 1)
      else
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 13, 160, 36, damage_string, 1)
        bitmap.font.color.set(255, 255, 255)
        bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
      end
      if critical
        bitmap.font.color.set(0, 0, 0)
        bitmap.draw_text(1, 6, 160, 20, "Critical", 1)
        bitmap.font.color.set(255, 245, 155)
        bitmap.draw_text(0, 5, 160, 20, "Critical", 1)

I think fallo means miss
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top