Indie Dev

Hello Guest!. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, sell your games, upload content, as well as connect with other members through your own private inbox!

Tower of Agria

Essy

Towns Guard
Xy$
0.00
Protagonists

Carolyn
One of the two playable protagonists. Carolyn is a spearman and a former member of a mercenary band known as the Silver Fang mercenaries. She asked to join after losing her family in a bandit raid. The Silver Fang insisted that they had no 'kid sized weapons' and jokingly threw her a dagger and told her to "pretend it's a sword". She instead picked up a spear and stubbornly practiced with it. Eventually she mastered it and became a valued warrior.

Details of the end of her mercenary career very shortly into Floor 0...
Sam
One of the two playable protagonists. Sam came from a prestigious family and was taught the way of the sword from a young age. One day there was a monster raid, her family all stood their ground and fought off waves upon waves of monsters. Eventually the Silver Fang arrived due to a call nearby, what they found was a girl bathed in the blood of monsters clutching a sword still crying.

Carolyn reached out her hand and extended an invitation into the Silver Fang mercenaries.

Details of the end of her mercenary career very shortly into Floor 0...
Beatrix(Spoilers for the 0th Floor)
A ghost girl who chanced upon Sam and Carolyn and followed them.
Sam and Carolyn likewise chanced upon Beatrix's Tomb where she reveals that she had met a violent end and still has lingering regrets holding her to the world.
Beatrix seeks to meet her reincarnated lover so she can properly say goodbye.
Setting
Some believe that the world outside suffered a cataclysm..
Some believe that mankind had always existed here...
For whatever reason mankind lives within this tower...

Tower of Agria exists within a gigantic tower of unknown origin.
So much time has passed that an outside world seems like legend, only known because of the hard work of archaeologists.

Agria itself is a kingdom that had only recently formed following the conclusion of a horrific war.
Only a few known floors are able to easily support life and it's these few floors that compose the Agria Empire.

Materials appear to be manufactured by the tower itself but they're located on higher floors than normal. Because of this the Empire employs 'Climbers' who climb the tower, defeat monsters, and complete tasks.

The main headquarters of the empire is Floor 1: The Capital City, Agria.
There is only 1 lower accessible floor which is referred to as Floor 0 which is where our story begins.

Another important detail is time,
as they live in a tower their sense of time is skewed. They perceive a year as a 100 days cycle.(The tower maintains it's lightning through 24 hours cycles.)
As such if someone is referred to as 30 years old then that is equivalent to 10 of our years.
Gameplay
A Mission Based System is Planned once Floor 2 is Implemented.
Aside from that the battle system is powered by a combination of
Falcao's Pearl ABS(Action Battle System) and my own Directional Input Script which reworks the system so as to add fighting game-like inputs for the attacks.(Script if you're interested is located in the spoiler.)
Code:
#==============================================================================
# ** 8 Way Movement + Directional Input
#------------------------------------------------------------------------------
# Allows 8 Way Movement and Keeps Track of DI.
#
#==============================================================================
class Game_Player < Game_Character
#Instance Variables
  def iframes; @iframes ||= 0; end  #Amount of frames to hold onto the buffer.
  def iframes=(x); @iframes = x; end
  def input_buffer; @input_buffer ||= ""; end #The input buffer
  def input_buffer=(x); @input_buffer = x; end
#Uses two level logic to determine if the apropriate movement has been made.
  def directionalInput
    temp = self.input_buffer[self.input_buffer.length-4,self.input_buffer.length-1]
    $game_variables[1] = temp
    return "circle" if (temp == "DRUL") || (temp == "DLUR") || (temp == "RDLU") || (temp == "RULD") || (temp == "LDRU") || (temp == "LURD") || (temp == "URDL") || (temp == "ULDR")
    temp = self.input_buffer[self.input_buffer.length-3,self.input_buffer.length-1]
    return "half"   if (temp == "DRU") || (temp == "DLU") || (temp == "RDL") || (temp == "RUL") || (temp == "LDR") || (temp == "LUR") || (temp == "URD") || (temp == "ULD")
    temp = self.input_buffer[self.input_buffer.length-2,self.input_buffer.length-1]
    return "back forward" if (temp == "LR") || (temp == "RL") || (temp == "UD") || (temp == "DU")
    return "neutral"
  end
# Exactly What it Says on the Tin, Replaces it with a useless string so at to avoid length errors.
  def flush_buffer; self.input_buffer = "AAAA"; end
#Hard to Read So Placed it in a Method to increase readability.
  def clean_buffer; self.input_buffer = self.input_buffer[self.input_buffer.length-4,self.input_buffer.length-1]; end
#Repeated Self a bit so Refactored adding to the buffer.
  def buffer(x)
      $game_player.iframes = 30 if $game_player.iframes == 0
      unless self.input_buffer[-1]==x
        self.input_buffer << x
      end
  end
#Extends Buffer Time if Needed
  def eb; self.iframes += 15; end;
#8-way movement
  def move_by_input
    unless !movable? || $game_map.interpreter.running?
        if Input.dir8 > 0
       preMove
       case Input.dir8
         when 2; move_straight(Input.dir4)
         when 4; move_straight(Input.dir4)
         when 6; move_straight(Input.dir4)
         when 8; move_straight(Input.dir4)
         when 1; move_diagonal(4, 2)
         when 3; move_diagonal(6, 2)
         when 7; move_diagonal(4, 8)
         when 9; move_diagonal(6, 8)
       end
     end
   end
end
#Modularized Methods that Encapsulates pre-movement actions and their variables.
  def pmVar; @pmVar ||= []; end
  def preMove
       $game_variables[5] = 0 #Reset Spear Level
       $game_variables[0] = 0 #Speed Modification
       $game_variables[1] = Input.dir8; #Holding Onto Directional Input
  end
end
#Modularized Code Section to Get Input and place into the buffer
def getInput
    $game_player.clean_buffer if $game_player.input_buffer.length > 10
    $game_player.flush_buffer if $game_player.iframes == 0
    case Input.dir8
      when 2; $game_player.buffer('D')
      when 4; $game_player.buffer('L')
      when 6; $game_player.buffer('R')
      when 8; $game_player.buffer('U')
    end
    $game_player.iframes -= 1 if $game_player.iframes > 0
end
#Hook into update to clear buffer when frames run out.
class Scene_Map
  alias_method :dirInput, :update
  def update
    getInput
    dirInput
  end
end
#Call as extend_buffer in a script call to extend the buffer time.
def extend_buffer; $game_player.eb; end
#Alias to concisely call the directional input for use in script calls
def di(x); $game_player.directionalInput == x; end

As for the pace of the ABS you are able to cancel actions into eachother.
IE: With Sam her normal swing is an efficient way of inflicting damage quickly but if you need to split second dive out of danger you could use her 'Back Forward' Attack which has her quickly evade her current location and leave behind a flurry of cuts.

Additionally if you jam the button quickly it will repeat the same attack as well.
Another example with Sam is this allows her to fight of two enemies if surrounded using her Back Forward.

While Half Circle and Full Circle are implemented there are no moves in the current version for them.
Screenshots

Credits
#Tsukihime - Extended Moveroutes

#Falcao - Pearl ABS

#Essy - 8-Way Movement + Directional Input
# Region Switch
# Parallel Manager
# Connected Maps

#Moromaga - Face Generator

#Enterbrain - RPG Maker VX Ace Resources
# RPG Maker VX Ace Engine
# RPG Maker MV Resources


# This is not a Commercial Project

Suggestions/Criticism/Complaints Towards Next Version
As of 1/4/16
Gotta Clean Up the U.I. - Essy
Updates (Last Updated 1-16-16)
1-4-16
*Fixed an issue with missing music files preventing progression in the ruins.​
1-14-16
*Fixed an issue where the player can get trapped during the water sections by using the character's dash.
*Buffed Carolyn's Attacks, Carolyn now ignores half of the enemy's defense.
*Fixed another issue involving a missing music file.
*Fixed the ability to cause unintended behavior pre-character selection.​
1-16-16
*Added Items, Potions(HP Heals), Drops(Stamina Heals), Ancient Gold Coins(Their Purpose will be revealed later.) Ability to use items available off start, however if you have old save data you can open the chests right before floor 1 to gain the ability.
*Added Challenger's Hall: A difficulty adjusted challenge that may change slightly each time to challenge it. Different rewards based on the difficulty included the following note... *Half Circle Attack Added into the game. Earn it at the Challenger's Hall.​
Download
------------------------------------------
This is my final VX Ace project. Once I finish this I will be jumping to MV 100%. But I also want to make it my best game. As such, be as mean with your criticism as you want. ;D

The only thing I will say is that while I can doctor sprites I cannot make them from scratch, so on that end edit jobs and doctor jobs are reasonable but full blown fresh graphics probably wont happen unless I get a collab at some point. :U The sam sprite's hair is an example of one of my edit jobs for a gauge of what I'm capable of on that end.
And well, no music as I know nothing about making moosic. (So once again, swapping out songs can happen but fresh music is a no go without a collab.)

Anything else though is free game, hit me as hard as you want so long as it is constructive.
So instead of "dear lord you suck" I'd like "dear lord you suck because this..."
 
Last edited:
Top