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.

GTBS v1.5.1.4 - A FFT Styled Battle System (5/19/2010)

Skare_Kro, Place that in a new script section, below the tbs.  Call it whatever you want.

Probpe, I think there was a copy of the template in the 1.1 or 1.2 version.  I dont even have a copy of the template any longer.  I used it for the demon in the 1.4 demo.  Just make it equal... 300x2640 = 50*6 frames x 60*4 directions *11 poses , then draw a line every 50 pixels across and 60 pixels down.  Once you have a row, copy it and alternate.  That is all I did. 
 
There is already a teleport skill. But that reminds me of another issue. Is it possible to make a maximum range to the teleport, in spite of the lower chance of teleport success with distance?
 
What do you mean a 'refresh skill'?  Wouldnt that be heal or revive or something of the sort?  Or do you mean something to restart the turn so that you get to go twice or something?

Teleport/Teleport2 are states.  When this state is assigned to a character then all "movable" positions on the map, are pushed to your "available positions".  You then choose a location and based on the distance you have a "chance of success."  If you fail, you stay where you are and it counts as your move.  That is already built into the system.  Look up in the module Teleport State and Teleport2 State id's.  There is no method currently to only add the items that are closer to you.  It probably wouldnt be that hard, but would require some restructuring to make it possible.

probpe.. done

Also, the VX conversion is giving me pains!  Grrrrrrrrrrr!  I will keep at it though.  (i just dont want to rewrite the entire thing to make it work)
 
Gubid, I have a question about GTBS

1. Last time you told me how to hide the enemy's HP,SP,AP. It worked , but I can still see the info when it was enemy's turn.
Is there any way to hide if even its there turn ?
and if this is able, can we only hide the particular enemy's info ?

and if its able to hide ,I dont like to hide the all info boxes. At least I want to show the enemy's name and show the HP,SP,AP like

<HP ???/???>

2. please look at the screenshot below.

<img src=http://www.op.co.kr/ii/t4/imgd/th200805/31/38/26193075348410e8e56e2c.jpg>

This is the screen, after moving and finishing the orders, there are two selections

wait and status. But we are not able to select the two selections cuz

its just going over even though we didnt select it. Can U please try to fix this ?

3. This might be difficult so im just asking..
Can we set the movement of AI with more details ?
For example, AI moving to particular coordinates, or attacking particular enemy.
and also, can I set the enemy attacking particular actor? or neutral..

4. How can I set, not to show the battle config during the battle ?
If we click 'X' in the battle, we can see the config menu. Can I hide this ?

5. Can you tell me several terms that are used in battle events ? just like this
$scene.set_character("enemy",1,15,14,0) <- I dont even know this one..
Can you tell me the affects and terms together ?

6. I saw some lots of elements in the database, how do I use that ?? For example, secret hunt.. Do i have to give element to the weapon?

7. last time you told me the scrip about amking battlers get awayfrom the battle, but i couldnt find the place to put in.. can you tell me the exact part where to put the script ??

8. How can I make a animated_battler set for the bog battlers ? Just like Gilthyr.. I tried to make with the template but its too big,,,

9. And by the way , did you tried to make UMS and GTBS compatible?

---
sorry for giving you too much question and
Thanks again ill wait for your help !
 
1 - That is a good idea.  I will see what I can do.
2 - I am guessing this is because I force you to the wait direction and dont let you select status.  Is that correct?  For flow reasons I set it up to force you to the wait selection. 
3 - I have some of the stuff in place to do a "weighting system" this would cause your AI characters to raise priority for attacking certain members of the opposing team.  This feature is not yet complete, but I like your idea of setting an AI target.  Although isnt that the point of having AI, is for them to choose the target on their own?
4 - The Config menu cannot be disabled during battle at this time.  Although you can disable it manually by editing the script... comment out the following lines of code, starting at 1800
Code:
    if Input.trigger?(Input::B) and (@target_cursor_enabled or @selected == nil)
      @enable_target_cursor = false
      if @spriteset.tile_sprites.size + @spriteset.range_sprites.size > 0
        clear_tr_sprites
        return
      end
      @windows["option"].active = true
      @windows["option"].visible = true
      @windows["option"].index = 0
      @cursor_active = false
      return
    end
5. $scene.set_character("enemy",1,[15,14],0) is described in the help section. 
set_character means to place an character on the map... type(actor/enemy/neutral, ID, Coords, Animation Entrance ID

6. Secret hunt simply needs to be applied to a weapon.  As long as the weapon includes that element_id and your deal the last hit, then you have a "chance" of receiving an item based on that units id.  Read the secret hunt section of the GTBS module under skill setup.

7. You can place it in its own script if you like, but if you are going to do it that way you must put this above it...
Code:
class Scene_Battle_TBS
  ###ALL THE SCRIPT I PREVIOUSLY GAVE YOU
end

8. Gilthyr is not an animated battler,  he is default.  A Good example of an animated battler and the template, look at the Demon_ANIM in the graphics folder.  Then read the help file to understand the poses orders.

9. havnt had time yet.  I have been working on getting GTBS to VX.  Its proving difficult.

Arajabat - You mean like a skill to give another player another turn?  (If you have played Vandal Hearts 2.. re-turn?)

Shinn - I know.  I plan to put mouse support in, but I just havent had the time yet.  Life is busy and I have so many projects its not even funny.  Eventually, I will have to get started on my own game. 
 
thanks ,

Gubid":3m9dfy4s said:
2 - I am guessing this is because I force you to the wait direction and dont let you select status.  Is that correct?  For flow reasons I set it up to force you to the wait selection. 

8. Gilthyr is not an animated battler,  he is default.  A Good example of an animated battler and the template, look at the Demon_ANIM in the graphics folder.  Then read the help file to understand the poses orders.

so for no.2 , can I make just I can also choose the status ??

or , can i just hide the all selection and just skip to direction select ??

no.8 I was asking if I can make the animated battler set for the big character as Gilthyr cuz template is to small for them.

Thanks.
 
Yes its possible, I will need to create some logic for it. You will probably have to await the next update for it though.
Yes, you are able to use whatever size template you want.  The image will automatically be cut in the appropriate sizes.  You are welcome to use whatever size you wish.  (remember that it will take the width and /6 to get frames, and /11 then / by 4 to get directions. )
 
Hmm... It's something like Chant in Fire Emblem. Let's make a example:

In the battle, there are 2 actors in your control: Arajabat and Winston.

You move Winston and attack an enemy. Winston turn is over. But then, you move Arajabat next to Winston, and use the "Refresh" Skill. Now, you gain another turn with Winston.
 
To be honest I havent looked at it in a long while.  It is on the agenda, just havent had time to really research it. I will let you know.

Sure you can replace the default action names with images if desired.  You will need to update a couple of items but overall should be that hard. 
simply declare you want a sprite created in the initialize section
@move = Sprite.new

then set the bitmap during the refresh after the commands array has been created.
@move.bitmap = RPG::Cache.picture("move")  #where "move" is the name of the picture file.
then set its current x,y for correct placement
@move.x = self.x + 5  #self.x is the window itself.. + 5 is to indent it a little within the window.
@move.y = self.y + (@commands.index("Move")*32) #self.y is the window.. then add 32 for each INDEX menu option. 

you will then also need to update the visibility of these additional sprites as I have done in the def visible=(bool) function.
@move.visible = bool

repeat for each menu item.  (skill, item, wait, status, attack)

edit...
Oh yeah, just thought I would mention that GTBS for VX is almost complete! I have added a couple of nifty little features in the process while i was at it.  Improved the scrolling method and a couple other things.  The one main grip is that you now have to manually configure user animations via script as they removed all user animations from the system.  I setup some defaults which should be good for most people, but... whatever.
 
hmm gubid sorry i couldnt understand 100%.. so U mean i have to add for the script?.. or what ?

and also can you please reply my message ? (im sorry for asking something not related with GTBS)
 
DB- Find def windows_data in Scene_Battle TBS, then comment out each line with
@windows["help"] in it.  That should do it.  Everything is setup to only update the help if it exist.


probpe... here you are... use this to replace the existing commands_all class or place it in its own script below the TBS and it should work also.
forgot to mention that it simply calls the sprite from the folder by the same name in which the command is.  (move, attack, black, earth, status, wait, and so on)
Code:
#-------------------------------------------------------------
#This displays the command window for character actions.
#-------------------------------------------------------------
class Commands_All < Window_Selectable
  USE_COMMAND_IMAGES = true
  
  def initialize
    super(0, 60, 120, 220)
    @back = Sprite.new
    self.opacity = GTBS::CONTROL_OPACITY
    if FileTest.exist?('Graphics/Pictures/Commands_All.png')
      self.opacity = 0
      @back.bitmap = RPG::Cache.picture('Commands_All')
      @back.visible = false
      @back.opacity = GTBS::CONTROL_OPACITY
    end
    self.contents = Bitmap.new(width-32, height-32)
    @item_max = 6
    @column_max = 1
    self.index = -1
    @actor_display = Window_Actor_Display.new(height)
    @command_sprites = {}
    refresh
  end
  
  def refresh(actor = nil)
    self.index = 0
    @actor = actor
    item = []
    @commands = []
    if @actor == nil
      return 
    else
      @index = 0
      self.contents.dispose
      if GTBS::HIDE_INACTIVE
        @commands.push("Move") if !actor.moved?
        if !actor.perfaction?
          @commands.push("Attack")
          @commands.push(get_class(actor.class_id))
          @commands.push("Item")
          if GTBS::AUTO_DEFEND
            @commands.push("Defend")
          else
            @commands.push("Wait")
          end
        else
          @commands.push("Wait")
        end
        @commands.push("Status")
      else
        s1 = "Move"
        s2 = "Attack"
        s3 = get_class(actor.class_id) 
        s4 = "Item"
        if !actor.perfaction? and GTBS::AUTO_DEFEND
          s5 = "Defend"
        else
          s5 = "Wait"
        end
        s6 = "Status"
        @commands = [s1, s2, s3, s4, s5, s6]
      end
      h = @commands.size * 32 + 32
      self.height = h
      self.contents = Bitmap.new(width - 32, height - 32) 
      clear_command_sprites
      for i in 0...@commands.size
        if USE_COMMAND_IMAGES
          draw_image_item(i)
        else
          draw_item(i, normal_color)
        end
      end
      @item_max = @commands.size
      if !GTBS::HIDE_INACTIVE
        if !USE_COMMAND_IMAGES
          disable_item(0) if actor.moved?  ##disables move function is already moved
          if actor.perfaction?
            disable_item(1) ##attack
            disable_item(2) ##class skill
            disable_item(3) ##item
          end
        else
          disable_image_item(0) if actor.moved?
          if actor.perfaction?
            disable_image_item(1) ##attack
            disable_image_item(2) ##class skill
            disable_image_item(3) ##item
          end
        end
      end
      
      
      @actor_display.refresh(actor)
    end
  end
  
  def disable_image_item(index)
    command = @commands[index]
    @command_sprites[command].blend_type = 0
    @command_sprites[command].color.set(255, 255, 255, 128)
    @command_sprites[command].opacity = 255
    @command_sprites[command].color.alpha = 128
  end
  
  def clear_command_sprites
    for sprite in @command_sprites.values
      sprite.dispose
    end
    @command_sprites.clear
  end
  
  def draw_image_item(index)
    command = @commands[index]
    if @command_sprites[command] == nil
      @command_sprites[command] = Sprite.new(nil)
      @command_sprites[command].bitmap = RPG::Cache.picture(command)
      @command_sprites[command].x = self.x + 5
      @command_sprites[command].y = self.y + 10 + (32 * index)
    end
  end
  
  def data(i=-1)
    return "" if self.index == -1
    return @commands[i]
  end
  
  def dispose
    if @actor_display
      @actor_display.dispose
    end
    if @back
      @back.bitmap = nil
      @back = nil
    end
    super
  end
  
  def visible=(bool)
    if @actor_display != nil
      @actor_display.visible = bool
      @actor_display.update
    end
    for sprite in @command_sprites.values
      sprite.visible = bool
    end
    super(bool)
  end
  
  def help_window=(window)
    @help_window = window
    update_help
  end
  
  def update_help
    text = ""
    unless @actor == nil
      case self.data(@index)
      when "Move"
        text = 'Move to an available location'
      when "Attack"
        text = 'Attack a reachable square'
      when get_class(@actor.class_id) 
        text = 'Performs class ability'
      when "Item"
        text = 'Use an item'
      when "Wait"
        text = 'Wait this turn'
      when "Status"
        text = 'Get detailed status information'
      when "Defend"
        text = 'Defend this turn'
      end
    end
    
    @help_window.set_text(text)
  end
  
  def update_cursor_rect
    self.cursor_rect.set(0, (self.index*32), 85, 32)
  end
end
 

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