User Tools

Site Tools



Game Systems




If you are an artist interested in working on this project, please feel free to email me. I am looking for a pixel artist as well as a 2D character designer for portraits.

Some of the images used as placeholder art are copyrighted by their respective owner, Square Enix. These resources include custom sprites by the artists at Other resources seen are either created by myself or are credited to their respective owners on the Credits page.

If you see any media on this website that is not attributed properly is please let me know and I will fix it immediately.

Dusk Tactics, source code, media and information on this website are all copyright ©2014-2022 Dusk Tactics Project unless otherwise noted.


The attributes for characters are subject to change as well as any formulas used to determine things like Attack Power, Critical Hit Chance, and more. — Lou 03/25/2013 23:16


The core of any role playing game is an attribute system based on incremental character growth. These attributes vary from game to game, but they usually represent similar measurements of skill.

Base Attributes

Earlier versions of the stat system had fewer base attributes. While having more may seem more complicated, as long as the formulas utilize them in a way that makes sense, it shouldn't be a problem.


A value that represents a unit's overall power and growth. So far the level cap is around 60, but this might be raised or lowered depending on development.


Strength represents physical power. It is the main stat that determines Attack and a secondary stat that determines Defense. Having high Strength will make the unit very powerful physically, but it will have no impact whatsoever on magic-based offense or defense.


Dexterity in this game measures the unit's expertise in combat. The ability to utilize the various weaponry, skillfully cast magick spells, or anything else that requires manual labor. It is mainly used in calculating Attack and has minor effects on Defense and Resist. Dexterity also increases Accuracy and the chance to score a Critical hit.


Agility measures how quick and nimble the unit is. High Agility makes for a unit that is able to act often and evade enemy attacks. The unit's chance of getting a Critical hit as well as the unit's overall Speed is calculated using Agility. Agility effects both physical offense and magic-based offense, Attack and Magick respectively. While Agility has an effect on many different attributes, it is less effective offensively than Strength and Intellect.


Vitality is all about Health Points, or HP, and Defense. Vitality is the most important attribute for units whose class requires them to soak up damage and defend weaker units. Along with increasing HP when a unit levels, they also receive a bonus for the amount of Vitality they have.

static double HP_PER_VIT  = 2.75;


Intellect is a measure of a unit's mental acuity. All spells and magickal abilities are dependent on Intellect. Magick and Resist, the magickal offensive and defensive attributes, are based on Intellect. Intellect has no effect on Magick Points, which spells require in order to use.


Widsom determines the breadth of arcane knowledge the unit is capable of understanding. Basically the limits of it's magickal abilities are determines by Wisdom. Wisdom is needed in order to increase the unit's amount of Magick Points beyond the default gained at level up.

static double MP_PER_WIS  = 2.75;


Luck is the wildcard attribute. While it has no large influence in one area, it has various influences across a unit's statistics. As of right now Luck has very little effect, but this will change over time. Currently Luck increases your chance to land a Critical hit by a very small amount. Going forward this attribute could effect things like what types of items drop from killed enemies or found chests. It might also have effects on a unit's secondary skills, specifically ones that are based on chance.

static double CRIT_PER_LCK = 0.009;

Resource Attributes

These include values such as Health Points, Magick Points, Action Points, and Experience Points. All of these values are represented as percentage quantities or pools of the given resource. In terms of the user interface they appear as bars which are filled at 100% and empty at 0%.

Health Points

Health Points or HP is the staple of every role playing game. This value represents how much damage a unit can take before it is incapacitated. Many games in this genre keep HP between 1 and 1,000. Generally they tend to deal with 3 digit numbers even at the most powerful level. Other games such as Disgaeaallow units to obtain millions upon millions of HP, while also having a level cap of 9,999.

While it's still early in the design phase, HP is something that will grow dynamically with the various classes. Some of the heavier damage-soaking units will have an abundance of HP in the 50,000 range while a glass cannon type magick unit might max out at 2,000 HP. Making this disparity in HP balanced will be the tricky part. Even if these levels aren't reached, the goal at this point is to have a more noticeable difference in resource attribute values for different classes.

HP Bar

Magick Points

Magick Points or MP is a useable resource that classes use for certain abilities. Currently the plan is to have a battle start with MP at 0, with it regenerating based on the unit's stats as the battle moves forward. This is done in games such as Final Fantasy Tacticsas it's effective at stopping units from instantly nuking their enemy at the start of the battle. Some magick using abilities are powerful enough to render enemy units dead in one hit, so starting with full MP could cause magick based classes to have an edge.

MP Bar

Action Points

As of Version 0.2.0 Action Points or (AP) has been removed from the game. AP is still in the code but it is ignored as I never developed a system using it.
Action Points are the newest addition to the attribute system. In order to add an extra layer to the basic tactics game operations, Action Points or AP will be used as a way of enhancing a unit's turn. At this point in the development process the specifics haven't been finalized, but there are some ideas.

AP could determine how many actions a unit can take during an entire fight or more likely for one turn. An action being movement, attacking, using an item, using an ability or anything else that a unit can be instructed to do. This would allow for strategies where actions are used less frequent early on in order to give a unit the ability to attack twice in one turn later on (this could be expanded to create a combo system the likes of which seen in action rpgs). In this scenario the unit would regenerate at least 2 AP each turn, allowing them to at least have the chance to act normally(i.e. moving and using a command).

AP Bar

Experience Points

Experience Points or XP are gained during combat. When a unit accumulates 100 XP, it will gain a Level. Earned XP is relative to the unit's level and the level of the unit that it is taking an action against. If the other unit is too far below your unit's level, you will gain very little or 0 XP. Likewise, if that unit is a higher level, you will gain much more XP. While the system does have some extra caveats such as awarding bonus experiencing for killing a unit, it also contains some limits that will make it a bit more work to simply gain experience via repetitive actions.

Note: The Experience System below is deprecated and no longer used.

The code snippet below shows an alpha allocation of the required experience points for each level. So far it shows up to 100 levels. The experience point system will be a reset to zero type where upon level gain your Current Experience Points is set to 0 and the xp required to level increases a little bit. Each level brings upon a larger obstacle to overcome in terms of total points required.

If you look at the revised experience chart you can see the numbers are low and grow at a steady rate up until around level 20 where the rate increases. These increases in rate continue all the way up to level 100.

/** Experience/Level **/
static int[] XP_TNL = {
        /**Lv X0,    X1, Lv X2, Lv X3, Lv X4, Lv X5, Lv X6, Lv X7, Lv X8, Lv X9 */
/** 0X */     -1,     0,    50,    60,    70,    80,    90,   100,   110,   120,
/** 1X */    130,   140,   150,   160,   170,   180,   190,   200,   210,   220,
/** 2X */    240,   260,   280,   300,   320,   340,   360,   380,   400,   420,
/** 3X */    440,   460,   480,   500,   525,   550,   575,   600,   625,   650,
/** 4X */    675,   700,   725,   750,   775,   800,   825,   850,   875,   900,
/** 5X */    950,  1000,  1050,  1100,  1150,  1200,  1250,  1300,  1350,  1400,
/** 6X */   1500,  1600,  1700,  1800,  1900,  2000,  2100,  2200,  2300,  2400,
/** 7X */   2600,  2800,  3000,  3200,  3400,  3600,  3800,  4000,  4200,  4400,
/** 8X */   4600,  4800,  5000,  5500,  6000,  6500,  7000,  7500,  8000,  8500,
/** 9X */   9000,  9500, 10000, 11000, 12000, 13000, 14000, 15000, 16000, 17500,
/**10X */  19000  };

XP Bar

Secondary Attributes

These stats are calculated from the base attributes and represent things like offensive and defensive power.


A very important stat that determines how quickly a unit is able to move and act. Speed is normally increased by gaining Levels but it is increased further by Agility.

static double SPD_PER_AGI = 0.63;


The percent chance for a unit's attacks and abilities to successfully land on it's target. This value has a ceiling of 99.99%. For now the starting point for each class, while different, is above 50%. Accuracy is increased upon level up as well as Dexterity.

static double ACCU_PER_DEX = 0.234;


A percent chance for your attacks to do extra damage. Currently the damage increase of Critical hits isn't defined yet. If the bonus is static the value could be twice the normal damage. A dynamic value is more likely. This value would be based on one of the other attributes, or a combination of them.

Since this stat is in the form of a percentage it will always fall between 0% and 100%. So far the percentage is determined by a combination of Dexterity, Agility, and Luck.

static double CRIT_PER_DEX = 0.079;
static double CRIT_PER_AGI = 0.017;
static double CRIT_PER_LCK = 0.009;

Physical Attack

A value representing your current physical offensive attack power. Used to calculate physical damage.

$$ Attack = {Strength + {Dexterity \over 2} + {Agility \over 3}}$$

//Attack modifier
static double ATK_MOD  = 0.69;
double atk_power = ATK_MOD  * (strength  + (dexterity * 0.5) + (agility * 0.33));

Physical Defense

A value determining your ability to resist damage from physical attacks.

$$ Defense= {Vitality + {Strength \over 3} + {Dexterity \over 3}}$ $

//Defense modifier
static double DEF_MOD  = 1.03;
//Defense formula
double phys_defense = DEF_MOD  * (vitality + (strength  * 0.33) + (dexterity * 0.33));

Magick Power

A value representing your current offensive magick power. Used to calculate spell-based damage.

$$ Magick = {Intellect + {Wisdom \over 2} + {Agility \over 3}} $$

//Magick modifier
static double MATK_MOD = 0.73;
//Magick formula
double mag_power = MATK_MOD * (intellect + (wisdom    * 0.5) + (agility * 0.33));

Magick Resist

A value determining your ability to resist damage from magick abilities. This will be the preliminary defense against magick. Not to be confused with Elemental Resistance which further reduces, or increases, magick damage. Elemental Resistance is dependent on the element of the attack.

$$ Resist= {Wisdom + {(2 * Intellect) \over 5 } + { Dexterity \over 4 }} $$

//Resist modifier
static double MDEF_MOD = 1.19;
//Resist formula
double mag_defense  = MDEF_MOD * (wisdom   + (intellect * 0.40) + (dexterity * 0.25));

Travel Attributes

Attributes that determine how a unit is able to navigate the terrain of a map.

Move Type

This, along with Move will determine your ability to move around the map. Move Type will affect how and when Move and Jump values are calculated when it comes to various Terrain types.

Currently there are four different Move Types:

  • Normal - By far the most common, this is the basic Movement Type where Move is used to determine travel horizontally and Jump is used to determine vertical travel.
  • Hover - This extends the Normal movement to allow more flexibility when navigating terrain. Valleys or gaps that could not be traversed before can now simply be hovered over, allowing for easier transportation. There is still a limit, however as the Jump value will still govern your vertical maximum, however there is also a bonus. Hover types are able to stop on normally unwalkable terrain due to the fact that they are hovering over it.
  • Fly - Completely ignores the Jump stat. If land that can be stood upon exists within Move range, a Flying type reach it. This does not mean you can land on tiles that are otherwise unwalkable, it just allows you passage over them. Flying types need to land when not moving, so this is how they differ from Hover types.
  • Teleport - The ultimate and perhaps rarest Movement Type. Ignores both the Move and Jump stat allowing for free travel to any terrain that allows one to stand on it. Combined with advanced Terrain Compatibility and you can have a unit that can stand in Lava!

Terrain Compatibility

While not yet implemented as of version 0.5.5, Terrain Compatibility will define what sort of terrain the unit is able to stand upon. This attribute is in addition to Move Type, so the two are both calculated to define your area of movement. Possible TC types are:

  • Wade - Ability to stand or move through Water terrain tiles that do not exceed shallow depth.
  • Swim - Ability to stand or move through any Water terrain.
  • Water Walking- Ability to simply walk on or stand on Water terrain tiles.
  • Lava Walking- Ability to walk on or stand on Lava terrain tiles.


A value that represents the distance the unit can move in one turn. Map tiles have various move costs depending on their type. The default for the tile cost value is 1 with harder to traverse tiles having as much as double the move cost. Paying attention to what tiles you step on is a very important part of the overall strategy as it not only effects how far you can move but it also has offensive, defensive, and elemental bonuses/penalties.


Similar to the move stat except this determines the ability to traverse tiles that are either higher or lower than the one the unit is currently on. The value itself determines the maximum height difference a unit can traverse.

When moving to a higher location: $$ Jump = |Jump| $$

When Moving to a lower location: $$ Jump = |Jump + 1| $$

formula/attribute.txt · Last modified: 2019/01/28 15:28 by lou