Blizz-ABS Bug and Suggestion Compilation

Started by winkio, April 21, 2010, 03:40:33 am

Previous topic - Next topic

winkio

putting everything in one file is a bad idea because of the spacing of character sets (for example, jumping character sets might be taller than walking ones), but the different/more frames is planned for v3.0.

KK20

Probably a pointless question since you mentioned multiplayer, but are you allowing the hotkeys to be mapped to other keys, such as using YUIOP instead of 12345 to call upon skills and items? Or allow full keyboard mapping (we aren't restricted to just 10 hotkeys)?

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

winkio

Yep, it will be an array, so you choose how many hotkeys, what they are, and in what order they are.  Everything is going to be mapped as part of a control scheme, and there will be ways to allow the user to modify control schemes.

KK20

Awesome <3

By the way, was curious about this while I was fixing up on that Enemy Trigger Condition Checking script I made, located in Map_Enemy:
  #----------------------------------------------------------------------------
  # start
  #  Setups the starting event code.
  #----------------------------------------------------------------------------
  def start
    # if event code exists
    return if @list.size <= 1
    # set starting and execution flag
    @starting = @execute = true
    # trigger override
    @trigger = 1
  end
What was the true purpose for the @trigger = 1? But if I left @trigger = 1 there and if you gave an enemy event an "EventTouch" trigger, it only triggers once.

I noticed that when I removed that line, the game froze up once I killed the enemy. That led me to the Interpreter class in method setup_starting_event, specifically the line
if event.trigger < 3

Thus my need to change that to a != 3 (Parallel Process map events never have @starting = true, from what I was seeing, so I don't get why it was never like that to begin with).

Also, not sure if you want to apply Event Lock to enemy events with these custom triggers of player touch and event touch.

So this might be something to look at.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

winkio

In Blizz-ABS under Game_Event, it aliases the start function:

  #----------------------------------------------------------------------------
  # override start
  #  Has been enhanced to support the event lock feature.
  #----------------------------------------------------------------------------
  alias start_blizzabs_later start
  def start
    # stop if event lock not expired yet
    return if @event_lock != nil && @event_lock > 0
    # call original method
    start_blizzabs_later
    # set event lock if activated by touch
    @event_lock = @lock_time if @trigger == 1 || @trigger == 2
  end


The @trigger = 1 in Map_Enemy is used so that the event lock is set at the end of the event's start function.

I don't understand the < 3 vs != 3 point you made, I don't see how it would make a difference?

KK20

October 26, 2012, 11:03:18 pm #505 Last Edit: October 26, 2012, 11:04:39 pm by KK20
1.) Create an enemy that doesn't attack and make a map event for it. Trigger is Action Button (but we all know that this doesn't really matter)
2.) In its list, add a Comment line
Trigger:Weapon
and make it say something with a message.
3.) Test play and attack the enemy. Now press the Action Button or run into it. The message prints again.

This was why I was questioning the @trigger = 1 (which is "Player Touch" and thus makes sense to the problem). Whenever that enemy's event is started, its trigger has been permanently changed to Player Touch.

Now remove @trigger = 1 and kill the enemy. Game freezes.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

winkio

I think I already encountered and fixed this bug, because I have a modified version of 2.84 with @trigger = 1 removed and everything works correctly.  Let me figure out what I did.

KK20

Oh good. Glad to know it's already been addressed.

At this point, I feel like finding bugs is not really worth it since I don't even know what has been fixed in 2.85.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

winkio

Quote from: KK20 on October 26, 2012, 11:52:49 pmI don't even know what has been fixed in 2.85.


Yeah, this is a problem.  Once I get the time, I am going to make a list of everything, and scan the last 1.5 years of threads to make sure I didn't miss anything.

winkio

I just worked out another bug that was brought to my attention again by RoseSkye.  The bug was that Wait for Move Completion would sometimes cause the game to crash.  Related bugs were that you could not use move routes on events with empty spritesets or conditions that had not been met.  The fix is as follows:

In part 2, change line 9166 from

@tile_id < 384 && !@teleport


to

@tile_id < 384 && !@teleport && !@move_route_forcing


This is planned to go into v2.85, but if you want it sooner, you can apply it yourself.

candi.horror

November 15, 2012, 08:57:17 pm #510 Last Edit: November 15, 2012, 09:02:27 pm by candi.horror
Quote from: legacyblade on April 22, 2010, 03:24:26 am
A gravity system would be nice. Blizz had originally planned to make it. In the current top down perspective, it could be make to allow jumping down a ledge but not up it (if said ledge were high enough anyways). But this could also be used to make a side scrolling RPG, which would be a really cool feature. Hope that's not too tough of a feature to add x.x

Quote from: Blizzard on April 22, 2010, 06:10:09 am
I still say that should be a plugin and in no way part of the native system.


Is this plug-in still being devolved? I have a couple of Platformer scripts for RMXP (found here and here) that seem to be compatible with XAS (as seen here), but from what i read online BABS is a much better system than XAS ~_^

Kiwa

Hey guys.
I've been using all my free time on my game again recently so i am preping everything before i drop more info on CP-Forums. (dont want any empty promises...ya know!?)
while preping for an Online style game i decided to make some changes... twiddeling with BABS today i turned off "Auto Game Over" in "Basic Configuration"

I set up some mobs of different sort ..including a massive scary max level boss who of cores 1shot me.
YES! COOL! just want i wanted! now im a ghost that runs around looking for a rez cuz i noobed it.
only to decide "im gonna pwn this dragon!! lolololol...wait WTF?!? i can hit him!?"

(bug detail)
it seems i can only Melee the monsters... i can hit them and kill them and collect the drops.
but i cant use items or spells.
i did run a test with a common event restoring HP slowly.. if i died and the event tried to restore my HP i got a "Game Over" screen.
also if it helps debug this.....i can spam my attack button 'K' with no penalty..it seems to have defaulted to 0 and the knockback didn't work.

============TLDR=============

When "Auto Game Over" = false   i can attack/melee as a ghost. (see 'bug detail' above)

Shadow Eye31

Quote from: Kiwa on January 07, 2013, 10:37:42 am
Hey guys.
I've been using all my free time on my game again recently so i am preping everything before i drop more info on CP-Forums. (dont want any empty promises...ya know!?)
while preping for an Online style game i decided to make some changes... twiddeling with BABS today i turned off "Auto Game Over" in "Basic Configuration"

I set up some mobs of different sort ..including a massive scary max level boss who of cores 1shot me.
YES! COOL! just want i wanted! now im a ghost that runs around looking for a rez cuz i noobed it.
only to decide "im gonna pwn this dragon!! lolololol...wait WTF?!? i can hit him!?"

(bug detail)
it seems i can only Melee the monsters... i can hit them and kill them and collect the drops.
but i cant use items or spells.
i did run a test with a common event restoring HP slowly.. if i died and the event tried to restore my HP i got a "Game Over" screen.
also if it helps debug this.....i can spam my attack button 'K' with no penalty..it seems to have defaulted to 0 and the knockback didn't work.

============TLDR=============

When "Auto Game Over" = false   i can attack/melee as a ghost. (see 'bug detail' above)


Because the game does not issue the game over command at Hp 0. The command, to my knowledge, is meant to be used as a custom game over, through Common Events or such. Without calling a common event at Hp 0 with game over set to off, the game will continue regularly. Either set a common event or turn it back on. Not really a bug, rather than a side effect of that option.


And a suggestion for BABS. Wall-like effects. An example would be a fire wall spell that makes 3 tile in a line in front of the caster deal damage to all who enter it. Possibly push enemies back as well. It can be done through some clever eventing/scripting, but would be nice for people who can't/don't want to go that far into their game.

Blizzard

The wall effect should be doable as extension of the trap system.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Kiwa

Sorry for the late reply.
and thanks for that info. i can maybe make a common even to shut off BABS during those unfortunate moments.

maybe this is also something i can work around and simply don't know it.
I noticed that you can shoot thru walls with arrows,magic, ect... it would be interesting to create a toggle or tile option to allow the projectile events to hit clipping and stop (destroy themselves).

or maybe its there and I'm blind.. (blizz has a tenancy to have everything thought out before i have my "revelation".)

Blizzard

Actually they should already do that if you use the wall terrain tag.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Kiwa

March 17, 2013, 08:41:45 am #516 Last Edit: March 17, 2013, 08:50:05 am by Kiwa
so i just made a terrain tag <3
only thing i see may be a problem is the homing skills will still travel thru the wall terrain. but maybe thats in animation only? because it uses a follow mechanic?

P.S
one day...ill contribute something...  ):


Blizzard

No, homing skills do ignore walls. This is because otherwise they would have to use path finding that doesn't use passability but terrain tags and that's kinda annoying to implement. Though, I believe that this is an acceptable compromise. It was modeled after Secret of Mana where you could do the same thing.
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

Kiwa

Either way im still more than grateful. i can work around it if i so desire.

what about target in sight kind of toggle option in the future?

or another option from observation (which may have a resolve i overlooked)
I noticed that you can only have like 3 or 4 status modifiers (such as HP, MP, Poisons, ect...) at one time.


Soulshaker3

Hey guys i think i found a bug in blizz abs, sometimes when i kill an enemy there's like a "ghost" gold icon where i can't pick him up but if i go to the menu and come back he disapears it only happens sometimes tough.
Screens
Spoiler: ShowHide




Script
Spoiler: ShowHide
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blizz-ABS by Blizzard and winkio
# Version: 2.84
# Auto-Generated Configuration Script
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
#                                    PART 1
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Copy-paste this auto-generated script into the script slot instead of Part 1
# of the default Blizz-ABS script.
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#==============================================================================
# BlizzABS
#------------------------------------------------------------------------------
#  This is the master control, configuration, utility and battle process
#  module for Blizz-ABS.
#==============================================================================

module BlizzABS
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Control
  #----------------------------------------------------------------------------
  #  This module provides in-game control configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Control
   
    CUSTOM_CONTROLS = true
    DISABLE_DEFAULT = true
    UP = "Key['Arrow Up']"
    LEFT = "Key['Arrow Left']"
    DOWN = "Key['Arrow Down']"
    RIGHT = "Key['Arrow Right']"
    PREVPAGE = "Key['Q']"
    NEXTPAGE = "Key['E']"
    CONFIRM = "Key['Enter'], Key['C']"
    CANCEL = "Key['Esc']"
    ATTACK = "Key['Z']"
    DEFEND = "Key['X']"
    SKILL = "Key['A']"
    ITEM = "Key['S']"
    SELECT = "Key['D']"
    HUD = "Key['V']"
    HOTKEY = "Key['W']"
    MINIMAP = "Key['C']"
    RUN = "Key['L']"
    SNEAK = "Key['Left Shift']"
    JUMP = "Key['Space']"
    TURN = "Key['Left Ctrl']"
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Config
  #----------------------------------------------------------------------------
  #  This module provides Blizz-ABS configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Config
   
    # 2.1. # Basic Configuration
    MAX_PARTY = 2
    MAX_PETS = 1
    MAX_MONSTERS = 1
    MAX_SUMMONS = 1
    CATERPILLAR = false
    CORPSES = false
    EMPTY_CORPSES = false
    RECOVER_ON_LEVEL_UP = true
    FULL_DEFEND = false
    DIRECT_HOTKEYS = true
    AUTO_GAMEOVER = true
    DROP_AMMO = false
    MENU_COLOR_TINT = -1
    DISABLE_ABS_MODE = 0
    ITEM_DROP = true
    ITEM_PICKUP_SOUND_FILE = RPG::AudioFile.new('056-Right02', 75, 100)
    GOLD_DROP = 'cor'
    GOLD_PICKUP_SOUND_FILE = RPG::AudioFile.new('', 75, 100)
    DROP_TIME = 30
    EVENT_LOCK = 40
    ANIMATED_IDS = []
   
    # 2.2. # Movement Configuration
    PIXEL_MOVEMENT_RATE = 0
    REPAIR_MOVEMENT = true
    EIGHT_WAY_MOVEMENT = true
    SNEAK_ON_CHARGE = true
    NORMAL_SPEED = 4
    RUN_SPEED = 0
    SNEAK_SPEED = 3
    JUMPING = 2
    NO_JUMP_TAGS = []
    ALLOW_JUMP_TAGS = []
    NO_FLOOR_TAGS = []
   
    # 2.3. # Lag Prevention Configuration
    INTELLIGENT_PASSABILITY = true
    ABSEAL_AUTOKILL = true
    ABSEAL_FACTOR = 4
    DISABLE_ANTILAG_IDS = []
   
    # 2.4. # Game Info Configuration
    HUD_ENABLED = false
    HUD_POSITION = 0
    HUD_TYPE = 0
    MINIMAP = false
    HOTKEYS = true
    ENEMY_HEALTH_BARS = 255
    ENEMY_HEALTH_BARS_MATCH_WIDTH = false
    BOUNCING_DAMAGE = true
    WEAPON_DATA_MODE = [2, 1]
    SKILL_DATA_MODE = [2, 1, 2]
    ITEM_DATA_MODE = [2, 1, 2]
   
    # 2.5. # Enemy Behavior Configuration
    AI_DEFAULT_ATTRIBUTES = '01000100'
    AI_DELAY_TIME = 40
    VIEW_RANGE = 5
    HEARING_RANGE_RATIO = 40
    RESPAWN_TIME = 0
    WALL_TAGS = []
    NO_ENEMY_TAGS = []
    EXP_MODE = 0
    KNOCKBACK_MODE = 0
   
    # 2.6. # Animation Configuration
    ANIMATIONS = true
    SMALL_ANIMATIONS = true
    DISPLAY_LEVEL_UP = true
    LEVEL_UP_ANIMATION_ID = 0
    FLEE_ANIMATION_ID = 0
    CALL_HELP_ANIMATION_ID = 0
    DEFEND_ANIMATION_ID = 0
    UNSUMMON_ANIMATION_ID = 0
   
    # 2.7. # Sprite Control Configuration
    A_ACTION_SPRITES = true
    A_WEAPON_SPRITES = false
    A_DEFEND_SPRITES = false
    A_SKILL_SPRITES = false
    A_ITEM_SPRITES = false
    A_IDLE_SPRITES = false
    A_CHARGE_SPRITES = false
    A_CHARGE_WEAPON_SPRITES = false
    A_CHARGE_SKILL_SPRITES = false
    A_CHARGE_ITEM_SPRITES = false
    E_ACTION_SPRITES = false
    E_SKILL_SPRITES = false
    E_IDLE_SPRITES = false
    E_CHARGE_SPRITES = false
    E_CHARGE_SKILL_SPRITES = false
    RUNNING_SPRITES = false
    SNEAKING_SPRITES = false
    JUMPING_SPRITES = false
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Alignments
  #----------------------------------------------------------------------------
  #  This module provides alignment configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Alignments
   
    GROUPS = [1, 2, 3, 4, 5, 6]
    LIFELESS_GROUPS = [4]
    LINKED_GROUPS = [5, 6]
    PERMANENT_GROUPS = [5, 6]
    ACTOR_GROUP = 1
    ENEMY_GROUP = 2
   
    def self.enemies(id)
      case id
      when 1 then return [2]
      when 2 then return [1, 3, 5, 6]
      when 5 then return [2]
      end
      return []
    end
   
    def self.allies(id)
      case id
      when 1 then return [1]
      when 2 then return [2]
      when 5 then return [5, 6]
      when 6 then return [5, 6]
      end
      return []
    end
   
    def self.neutral(id)
      return []
    end
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Weapons
  #----------------------------------------------------------------------------
  #  This module provides weapon configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Weapons
   
    def self.type(id)
      return SWORD
    end
   
    def self.combo(id)
      return 0
    end
   
    def self.projectile_speed(id)
      return 5
    end
   
    def self.knockback(id)
      return 1
    end
   
    def self.range(id)
      return 1.5
    end
   
    def self.penalty(id)
      return 16
    end
   
    def self.frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.charge(id)
      return [CHARGENone, 0]
    end
   
    def self.charge_frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.consume(id)
      return []
    end
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Skills
  #----------------------------------------------------------------------------
  #  This module provides skill configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Skills
   
    def self.type(id)
      return [DIRECT, EXPLNone]
    end
   
    def self.combo(id)
      return 0
    end
   
    def self.projectile_speed(id)
      return 5
    end
   
    def self.knockback(id)
      return 1
    end
   
    def self.range(id)
      return 1.0
    end
   
    def self.penalty(id)
      return 24
    end
   
    def self.frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.charge(id)
      return [CHARGENone, 0]
    end
   
    def self.charge_frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.trap(id)
      return 10
    end
   
    def self.summon(id)
      return [SUMMONPet, 0, 0]
    end
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Items
  #----------------------------------------------------------------------------
  #  This module provides item configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Items
   
    def self.type(id)
      return [DIRECT, EXPLNone]
    end
   
    def self.combo(id)
      return 0
    end
   
    def self.projectile_speed(id)
      return 5
    end
   
    def self.knockback(id)
      return 1
    end
   
    def self.range(id)
      return 5.5
    end
   
    def self.penalty(id)
      return 24
    end
   
    def self.frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.charge(id)
      return [CHARGENone, 0]
    end
   
    def self.charge_frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.trap(id)
      return 10
    end
   
    def self.summon(id)
      return [SUMMONPet, 0, 0]
    end
   
    def self.drop_sprite(id)
      return false
    end
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Enemies
  #----------------------------------------------------------------------------
  #  This module provides enemy configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Enemies
   
    def self.type(id)
      return SWORD
    end
   
    def self.combo(id)
      return 0
    end
   
    def self.projectile_speed(id)
      return 5
    end
   
    def self.knockback(id)
      return 1
    end
   
    def self.range(id)
      return 1.5
    end
   
    def self.penalty(id)
      return 16
    end
   
    def self.frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.charge(id)
      return [CHARGENone, 0]
    end
   
    def self.charge_frames(id)
      return [3, 3, 3, 3]
    end
   
    def self.delay(id)
      return nil
    end
   
    def self.perception(id)
      return nil
    end
   
    def self.ai(id)
      return nil
    end
   
    def self.destruct(id)
      return 0
    end
   
    def self.respawn(id)
      return 0
    end
   
  end
 
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  # BlizzABS::Combos
  #----------------------------------------------------------------------------
  #  This module provides combo configurations.
  #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
 
  module Combos
   
    def self.total_actions(com)
      return 1
    end
   
    def self.commands(com)
      case com.id
      when 1 #StarBurst Stream
        case com.aid
        when 1 #Starburst Stream:Ativar
          return [[COMFreeze, true],
                  [COMAttack],
                  [COMInput, 1, [Input::Hud], INPress, 20],
                  [COMCondition, VARInput, 1, '==', VARConstant, true],
                  [COMSkill, 60]]
        end
      end
      return []
    end
   
    def self.anim_data(com)
      case com.id
      when 1 #StarBurst Stream
        case com.aid
          when 1 then return [1, [3, 3, 3, 3], '', false] #Starburst Stream:Ativar
        end
      end
      return [0, [3, 3, 3, 3], '', false]
    end
   
  end
 
end
Hellow?