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)

Gubid,

The new 1.5 version is amazing for its improved speed alone! I've been able to use your system to create a shining force style game where every "action" (attack, magic) enacted on the battlefield calls a cutscene where the actor/enemy is shown attacking the actor/enemy. It looks JUST like the original shining force games now thanks to the updated speed.

But I've come across one little problem. When I add extra troops to the battlefield, I can't use my call cutscene method since it relies on events, namely conditions involving, "If enemy1 . . ., if enemy 2 . . . etc.". Just like it's possible to call common events upon enemy deaths (even the "extra" enemies), could I call such events when one of the "extra" enemies is, say, hit?
 
Perhaps one of the default exit settings? You may be battling on one of the map_id's in which is included in the demo pack that transfers you to a given x,y position. As for the monster, are you 'erasing' the event rather than setting a switch on it to have it not display on an empty page?

As for the 1.5 exp gain issue.
2. Since 1.5 Exp will be shown as gained, but never actually give it - The reason is because in the VX Compatiblity Module I messed up one line. Find the following method 'def change_exp(amount,show)' and change it to be the following:
Code:
 

  def change_exp(amount, show)

    self.exp = [[self.exp + amount, 9999999].min, 0].max

  end

 
 
Hi Gubid,

I was able to figure out the additional enemy states/parameters problem and am good to go with just about everything else. One more thing, though . . . I remember seeing a new movement script for GTBS 1.4 that simulated Shining Force. Instead of moving a cursor to a position in the grid with the system then moving the character to that space automatically, you took control of the character and could walk around freely in the grid.

Would there be an easy way to do this in 1.5?
 
The code that was given for it at the time would likely still apply to 1.5. If I recall, the reason it is not included is because it causes issues with some of the other features, if they are enabled. Like tile tag's that reduce movement.
 
I wonder if you can implement the little hud below that shows simple stats?
I think it looks cool >.<
29p67op.jpg
 
[Bug]: When playing on TEAM Mode, if you perform an action such as Move or Attack and then press Esc you can perform those same actions again making it entirely possible to defeat all enemies with one person in one turn.

[Request]: The script does not currently support scripts that change the screen resolution. Even after modifying multiple resolution scripts, I was still unsuccessful in running the demo with a 640 x 480 resolution. The game freezes when the cursor first appears above a battler sprite while attempting a modified screen size. Please consider a patch.

Is it possible to have the window asking if you are done placing your characters come up automatically when all characters have been placed? Currently, it requires the Esc key to be pressed.

Where is the guide mentioned in the GTBS_General Help portion of the demo on how to use animated battlers? I haven't seen any mention of it.

# Can I use Animated Battlers with this system?
#----------------------------------------------------------------------
# Yes. To do this there are a number of settings you need to change in the database
# and here in the GTBS_Animation Config. If there are further questions, please see
# the online topic for this battle system.


Does this script support jumping animation like the FFT sprites? Is it possible to animate iso_cursor or the wait1-8 pictures?
 

dani3

Member

pariah247":23odxc23 said:
Gubid,

The new 1.5 version is amazing for its improved speed alone! I've been able to use your system to create a shining force style game where every "action" (attack, magic) enacted on the battlefield calls a cutscene where the actor/enemy is shown attacking the actor/enemy. It looks JUST like the original shining force games now thanks to the updated speed.

But I've come across one little problem. When I add extra troops to the battlefield, I can't use my call cutscene method since it relies on events, namely conditions involving, "If enemy1 . . ., if enemy 2 . . . etc.". Just like it's possible to call common events upon enemy deaths (even the "extra" enemies), could I call such events when one of the "extra" enemies is, say, hit?

Is it possible through conditional branches? I'm afraid a script is needed in this case..

Anyone?
 

dricc

Member

No news for the 1.5 version for VX ?

@Artlune : Yes , this is a known issue . I have try to correct this myself , it is really difficult . I am afraid that the only solution is to avoid the "TEAM" option .
 

Haust

Member

I've been getting this damn error message and I really just have no idea how to begin solving this.

first I copied all your scripts to my game
then when I place an event with title "actor1" and one with "enemy1" with the battle processing configured just like you have it in your demo I get this.

Script 'Game_Actor' line 121: TypeError occured.
no implicit conversion from nil to integer

and if I put a "place" event instead of "Actor1" I get this

Script 'Game_Enemy' line 125: TypeError occured
no implicit conversion from nil to integer

Basically I started a new project, copied all your scripts, deleted all the heroes and enemies and made my own, and now this is happening. I'm not clear why it is though.

-edit-
I think what's mainly confusing me is how do you connect troops with enemies on the map, and how do you connect actors in the database to the actors on the map. simply putting "enemy#" and "actor#" doesn't seem to work unless I do it in the demo.
 

dricc

Member

It's easy to forget to copy something ...
There is scripts in the GTBS , yes . But there is also pictures , common events , states ... and a lot of setup .

So i think that the best thing to do is to start from the demo .

With all that you give us , haust , it is impossible to tell you where is the problem ! If you need help , we need a demo .
 
GTBS 1.5.1 is now in beta. If you would like to assist in the GTBS 1.5.1 beta release for both VX and XP. You can find the download links to the beta below within their prepective demo's. If you encounter any issues then please let me know immediately. Also, new to this version, I have published a number of help tutorials on how to use the system. All the tutorials can be found at the following location: http://www.youtube.com/user/gubid OR you can get the direct links from within the tutorial section of the script database.

GTBS 1.5.1 XP = http://www.mediafire.com/?ug5zj1wmjmn
GTBS 1.5.1 VX = http://www.mediafire.com/?1e1etcyzmd2

All existing known issues and addon's are already implemented in the demo's.

Also, just to note.. the script is EXACTLY THE SAME between both VX and XP.. this means that when you give a line number you shouldn't have to tell me what version you are using and thus.. easier support for everyone involved. Also.. 1 fix for a bug implies its fixed for both etc. (nice huh!?)



pariah247,
You can do so by adding the sound to the move_DIR methods in Game_Battler.

dricc,
Thanks for trying to help out! I have provided a demo on youtube to help out with this.. I hope:
http://www.youtube.com/user/gubid

haust,
Your message is caused because the number of elements in your game are below what is mentioned in the script. (probably flying or walk on water element id's).
Anyway, I have fixed this in the 1.5.1(beta) release mentioned above. It also fixes all the other quoted issues here recently in regards to the 1.5 demo. The 1.5.1 is also for VX and the code bases are the exact same, so it should make supporting it easier for everyone.

dani3,
You can reference all enemies via $game_troop.enemies[INDEX].. so if you have one beyond 8 then you would just put the index-1 in the command. (since arrays start 0 instead of 1. Hopefully that should help you.

Artlune,
BUG.. corrected in 1.5.1

Request..There is partial support for this in 1.5.1 but you may still have to implement the spriteset changes into the gtbs spriteset as well for it to support it.

That is a great suggestion.. maybe I will implement it for the final release of 1.5.1

I have given an animated battlers tutorial online on the above mentioned youtube address. If you still have questions, feel free to PM me.

Jumping.... something I have wanted to do since the begining. There are things you can do to implement it with the new animation system.. you can create an additional stance and adjust the user animation to be that.. and add something to the sprite_battler thing to adjust their position for the length of time they have the specified stance on. I dunno.. just some thoughts. Also, the wait pictures would simply need some adjustment to the tbs_phase_6 method for the wait phase.

Mimi Chan,
I have redone the HUD for the GTBS in 1.5.1.. hopefully this will satisfy you, however if you want to adjust the HUD then feel free. I will not be making any other large changes to the system as this is expected to be the FINAL version.


Also, in case you guys didnt hear..
After this release I will NO LONGER be creating new versions of GTBS. As this will be the FINAL RELEASE, I will try to make it as bug free as possible for everyone. If you have existing Add-On request for GTBS and they have not been implemented, I am sorry but I will not be completing them. This includes the Advance Wars Add-on (with some clever eventing it is doable now). What is the reason for this decision? Well, it is because I want to focus on the development of my game, rather than this system. The system is more than adequate for my game in its features etc. The development of this system has been the main draw from me not completing anything for my game. For those that would wish to assist me with my game, then please PM me, or respond to my project topic, noted in my Sig.
 
It's great to see that the mouse works now. I really love this battle system, and I always have. It's a great piece of scripting, I take my hat off to you :) Just testing the new demo, and I got this error when I killed the first soldier and tried to recieve items from him:

Error.png


It doesn't appear to be an error in your script, or at least not directly, but something's going wrong.

EDIT: Also, I get this when trying to use an item on any character (in this case, the potion)

Error2.png
 

dricc

Member

Hi GubiD ,

I have found a bug :
in "Game_Actor " , there is :
for i in 1..4
arm = eval("self.armor#{i}_id")
move += GTBS.equip_move_info(arm) if arm != nil and arm > 0
move += GTBS.weapon_move_info(@weapon_id) if @weapon_id != nil and @weapon_id > 0
end

But this line :
move += GTBS.weapon_move_info(@weapon_id) if @weapon_id != nil and @weapon_id > 0
has to be out of the "for" instruction . Or the modifier for weapon is counted 4 times !
 
dricc, that should be fixed in the beta2. (Good investigation btw!)

fox5, the first problem should be resolved in beta2. I have resolved the other. It will be in the next beta, which will be coming shortly.

Also, I have made two new patches for the system.
Zii Spin Menu Patch(VX)
Code:
if defined?(Zii) != nil

  Move_Icon_Index = 48

  Wait_Icon_Index = 117

  Status_Icon_Index = 137

  

  class Commands_All < Window_SpinCommand

    #-------------------------------------------------------------

    # * Object Initialization

    #-------------------------------------------------------------

    def initialize

      s1 = [Vocab::attack, "icon", Zii::ATTACK, true]

      s2 = [Vocab::skill,  "icon", Zii::SKILL,  true]

      s3 = [Vocab::guard,  "icon", Zii::GUARD,  true]

      s4 = [Vocab::item,   "icon", Zii::ITEM,   true]

      setting = {"R"=>40, "S"=>52, "G"=>"Spin40", "L"=>-12}

      super(0, 0, [s1,s2,s3,s4],setting)

      self.opacity = GTBS::CONTROL_OPACITY

      self.index = -1

      @actor_display = Window_Actor_Display.new(height)

      refresh

      self.active = false

      set_spin

      self.opacity = 0

    end

    

    def refresh(actor = nil)

      self.index = 0

      @actor = actor

      item = []

      @commands = []

      if @actor == nil

        s1 = [Vocab::attack, "icon", Zii::ATTACK, true]

        s2 = [Vocab::skill,  "icon", Zii::SKILL,  true]

        @commands = [s1,s2]

        return 

      else

        self.x, self.y = actor.screen_x - @radius - 28, actor.screen_y - @radius - 28 - 16

        create_contents

        if GTBS::HIDE_INACTIVE

          @commands.push([GTBS::MENU_COMMANDS["Move"], "icon", Move_Icon_Index, true]) if !actor.moved?

          if !actor.perfaction?

            atk_icon = Zii::ATTACK

            if actor.weapons[0] != nil

              n = actor.weapons[0].icon_index

              atk_icon = n if n > 0

            end

            @commands.push([GTBS::MENU_COMMANDS["Attack"],"icon", atk_icon,true])

            if actor.class.skill_name_valid

              @commands.push([actor.class.skill_name, "icon",Zii::SKILL, true]) 

            else

              @commands.push([get_class(actor.class_id), "icon",Zii::SKILL, true]) 

            end

            @commands.push([GTBS::MENU_COMMANDS["Item"], "icon", Zii::ITEM, true])

            if GTBS::AUTO_DEFEND

              @commands.push([GTBS::MENU_COMMANDS["Defend"], "icon", Zii::GUARD, true])

            else

              @commands.push([GTBS::MENU_COMMANDS["Wait"], "icon", Wait_Icon_Index, true])

          end 

          else

            @commands.push([GTBS::MENU_COMMANDS["Wait"], "icon", Wait_Icon_Index, true])

          end

          @commands.push([GTBS::MENU_COMMANDS["Status"], "icon", Status_Icon_Index, true])

        else

          atk_icon = Zii::ATTACK

          if actor.weapons[0] != nil

            n = actor.weapons[0].icon_index

            atk_icon = n if n > 0

          end

          s1 = [GTBS::MENU_COMMANDS["Move"], "icon", Move_Icon_Index, true]

          s2 = [GTBS::MENU_COMMANDS["Attack"],"icon", atk_icon,true]

          s3 = [actor.class.skill_name, "icon",Zii::SKILL, true]

          if actor.class.skill_name_valid

            s3 = [actor.class.skill_name, "icon",Zii::SKILL, true]

          else

            s3 = [get_class(actor.class_id), "icon",Zii::SKILL, true]

          end

          s4 = [GTBS::MENU_COMMANDS["Item"], "icon", Zii::ITEM, true]

          if !actor.perfaction? and GTBS::AUTO_DEFEND

            s5 = [GTBS::MENU_COMMANDS["Defend"], "icon", Zii::GUARD, true]

          else

            s5 = [GTBS::MENU_COMMANDS["Wait"], "icon", Wait_Icon_Index, true]

          end

          s6 = [GTBS::MENU_COMMANDS["Status"], "icon", Status_Icon_Index, true]

          @commands = [s1, s2, s3, s4, s5, s6]

        end

        

        super()

        

        if !GTBS::HIDE_INACTIVE

          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

        end

        @actor_display.refresh(actor)

      end

    end

    def disable_item(index)

      @commands[index][3] = false

    end

    #-------------------------------------------------------------

    # Return Command name

    #-------------------------------------------------------------

    def data(i=-1)

      return "" if self.index == -1

      return @commands[i][0]

    end

    def update

      if @actor != nil

        self.x, self.y = @actor.screen_x - @radius - 28, @actor.screen_y - @radius - 28 - 16

      end

      super

    end

  end

end

EQUAP Skills by Blizzard (XP)
Code:
 

#----------------------------------------------------------------------------

# Blizz EQUAP Skills GTBS Patch

#----------------------------------------------------------------------------

if defined?(DISPLAY_AP_GAIN) != nil and defined?(BlizzCFG) != nil

  class Scene_Battle_TBS

    alias tbs_setup_tmp_info_ap_EQUAP_gain setup_temp_info

    def setup_temp_info

      tbs_setup_tmp_info_ap_EQUAP_gain

      @ap_gain_pop = []

    end

    alias gaining_expap_EQUAP_patch gaining_exp?

    def gaining_exp?

      result = gaining_expap_EQUAP_patch

      if result

        return true

      else

        if @ap_gain_pop.size > 0

          gain_ap

          return true

        end

      end

    end

    def gain_ap

      battler = @ap_gain_pop[0][0]

      ap      = @ap_gain_pop[0][1]

      battler.damage = "#{ap} AP"

      battler.damage_pop = true

      @ap_gain_pop.delete([battler, ap])

      return true

    end

    alias tbs_phase_9_Blizz_pop_ap_earned tbs_phase_9

    def tbs_phase_9

      case @step 

      when 4

        if @gained.size > 0

          ap = 0

          for en in @gained

            if en.dead? and en.is_a?(Game_Enemy)

              ap += BlizzCFG.gainap(en.enemy_id)

            end

          end

          if ap > 0

            @ap_gain_pop << [@active_battler, ap]

            @active_battler.add_ap(ap)

          end

        end  

      end

      tbs_phase_9_Blizz_pop_ap_earned

    end

  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