WIP Back To Footman Empires Project :o


Footman Empires is largely influenced by Dynasty Warriors Empires 4

The object of the game is to take out the opposing teams

The first arena I am working on for the game has 4 teams and 9 bases. Each base is color coded to make it easier to see. The 4 teams are located on the four corners of the map.

A player loses when their general falls. A team loses when all their generals have fallen or their main camp is taken (very corners of map).

Controlling Areas

To control an area, build a fortress at a control point. Medium squares are control points (see very center of map). The team bases have 3 control points. The black, red, blue, yellow, and white bases each have 1 control point. Building any sort of building on all control points will ensure that the team controls the area.

When an area is controlled, the controlling team gets taxes from that area depending on the tier. Orange/Pink/Teal/Grey are tier 3, Black/Blue/Red/Yellow are tier 1, and White is tier 5.

While units are not on the front lines, they get a variety of bonuses. While units are behind enemy lines, they get various penalties.

Bases are linked together to their neighbors. Fortresses in bases stop spawning when they are no longer connected to the owning team's main camp. To give an example.

Pink controlled by Team 1
Teal controlled by Team 2
Orange controlled by Team 3
Grey controlled by Team 4

White controlled by Team 1
Yellow controlled by Team 1
Red controlled by Team 1

Black controlled by Team 2

In this case, Yellow and Red are connected to Team 1's main camp through White. Let's say that Team 2 takes away Team 1's control of White

White controlled by No Team

Team 1 is still ok as no team is controlling the White base, so Red/Yellow are still connected to the main camp through it. Now Team 2 takes the White base.

White controlled by Team 2

Now the Red and Yellow bases aren't connected to Team 1's main camp. This means that if there are forts at those bases, they will stop spawning. Furthermore, units at those bases will get major penalties as they aren't connected to the main camp.


Morale is how confident a unit is to fight. 100 morale gives a 50% bonus to attack speed and movement speed and a 50% reduction to incoming damage. 0 morale gives a 50% reduction to attack speed and movement speed and a 50% increase in incoming damage.

As a force of units in a colored region fight enemies, their morale changes. Killing enemies increases morale while dying to enemies lowers morale.

Let's consider 3 Team 1 units and 2 Team 2 units all with 50 morale in the Blue Region.

Team 1 kills one of Team 2's units in the blue region. The remaining Team 2 unit in the blue region loses morale based on the dead unit's rank while Team 1's units in the blue region get the same amount of morale that Team 2 lost. Only units in the affected region are modified. If that units leaves the region, their morale does not change to reflect the new region, their morale is their own. If a unit enters the blue region, their morale won't suddenly increase or decrease as well.

When a unit is cut off from the main camp, their morale lowers at a constant rate until they are reconnected to the main camp. Morale only goes up when the unit is part of a force killing other units. It goes down when either the unit is part of a force with dying units or the unit is cut off from the main camp. In this way, cutting off bases from the main camp can be a devastating blow.

Units that are in enemy territory or that are cut off from the main camp get less morale per kill and lose more morale per death. Units in allied territory gain more morale per kill and lose less morale per death. In this way, it can be relatively difficult to take a base.

Some units, like flag bearers and commanders, increase the rate of morale gain per kill and lower the rate of morale loss per death. Structures can also do this, like towers and fortresses within an area. The bonuses depend on the rank and type of the unit/structure. Generals give the most bonuses, but losing them will cost the player the game (like the King in chess).


Whenever a unit attacks or while a unit is moving, that unit uses up stamina. When a unit hits 0 stamina, they begin to lose morale and their attack/movement speed are lowered by 50% and their damage taken is increased by 50%. While a unit is regenerating stamina, their food consumption is increased. If that unit is out of food, they begin losing stamina and morale. No morale and no stamina will decrease their attack speed and damage by an additional 25% and increase their damage taken by an additional 25%.


Food is produced at the main camp and can be carried to outlying fortresses. Each unit can carry a certain amount of food. Some units act purely as supply units (when in areas without a fortress). These supply units give other units in the area food. If the supply unit is killed, those supplies are taken by the killing force (distributed among units, rest discarded).

Mechanical Units

Mechanical units do not have stamina or food, instead they have power. Mechanical units use a constant amount of power. When they run out of power , they can't attack or move. Mechanical units do not have morale. They give extra morale bonuses to allied units and lower morale bonuses for enemy units. They are rather high ranking, so they can increase enemy morale and lower allied morale when they are destroyed.

Power can be transmitted via Power Towers or by suppliers holding battery packs.

Undead Units

Undead units do not use stamina, food, or morale. They give major morale penalties to both allies and enemies (same amount). Undead units use energy and when they run out of energy, they immediately die. Energy is supplied by undead commanders, undead generals, and energy towers. Undead units do not store energy at all, so if there is no energy source in an area, they will immediately die.


When a commander is killed, it will be revived at the main camp after a period of time. If the commander is killed with 0 morale or in an area that is not connected to the main camp, that commander will be lost.


Combat is highly customized so that unit attacks are based on their gear and stats.

If a unit with a low amount of strength were to wield an extremely heavy weapon, they would take a cooldown penalty and would lose more stamina per attack. When a unit is encumbered (more gear than they can carry), they take a movement speed penalty and stamina penalty based on how encumbered they are (less stamina, less movement speed).

If a unit were to wield two weapons, they would lose stamina for each weapon (two attacks at a time). The weapons actually run their own attacks and the armor run their own defenses.

Combat Experience

As a unit gains combat experience, they get morale bonuses (more morale per kill, less morale lost per death). When they get enough experience, they can become a commander. Experience also increases their stats, allowing them to equip better gear.

Units can gain experience by either killing other units directly (this includes heroes) or by being trained at a fortress/main camp for gold.


Each team only gets 1 main camp of 1 race. Each race has a variety of race specific heroes that the team can pick. The highest ranking player on the team can pick the race (save/load), otherwise the race is randomized.​

Each fortress can spawn 6 types of units. Unit spawns are increased via fortress spawn points. When a fortress is upgraded, it gets more spawn points. Gold may be spent to redeem spawn points and change the spawns around. The UI is 6 items in the fortress inventory with item charges representing spawn count.​
Fortresses can be equipped with weapons to give to the spawning units, otherwise the spawning units spawn with default gear. Modifying what a unit spawns with is done by first clicking on the unit in the inventory menu to open its menu (spellbook) and then clicking the equip weapons or equip armor button. From here, different types of weapons and armor are shown. Select the type, select the grade, then select the actual item. Units of the chosen type will spawn with that item from then on (but it will cost gold depending on item).​
Researched technology gives you access to more items to equip units with. It also gives you access to items at the main camp to equip your hero with. Research is all done at the main camp and is shared across the team.​
You may manipulate every spawn within a fort (decide what items it will spawn with and so forth). For example, if 2 elven warriors spawned at a fort, they could each have their own item configurations.​
Different units use up different amounts of spawn points. For example, an Ogre might use 11 points whereas a goblin might use 1. A tier 1 shrine may only have 5 points, making it impossible to spawn an ogre.​

Modularity of the Map
One great thing about the map is that it can be loaded into an arena. The arena only needs to have rects laid out in WE and labeled correctly. From there, the JASS code generated by those rects can be plugged into a program I wrote and then the vjass code to run that arena will automatically be generated!​
Example of generated code​
//! textmacro REGION_SETUP
local ArenaArea TopLeft = ArenaArea.create(true, TopLeftTier, 3)
local ArenaArea Right = ArenaArea.create(false, RightTier, 1)
* Right
call Right.region.setFort(4832, -416, 5152, -96, 1)
call Right.region.addTerritory(1056, -704, 5952, 192)
call Right.region.addTerritory(4064, -2080, 5952, 1568)
call Right.region.addTerritory(4832, 1536, 5824, 1888)
call Right.region.addTerritory(4832, -2400, 5824, -2048)
call Right.region.addTerritory(3936, -1216, 4224, 672)
call Right.region.addTerritory(3808, -1088, 4096, 544)
call Right.region.addTerritory(2176, -1056, 2464, 544)
call Right.region.addTerritory(2048, -1216, 2336, 672)
call Right.region.addTerritory(2112, -1856, 2208, 1280)
call Right.region.addTerritory(1984, -1728, 2176, 1184)
call Right.region.addTerritory(1856, -1600, 2144, 1056)
call Right.region.addTerritory(1760, -1472, 2048, 928)
call Right.region.addTerritory(1632, -1312, 1920, 800)
call Right.region.addTerritory(2304, -928, 3936, 416)
call Right.region.addTerritory(1472, -960, 1600, 416)
call Right.region.addTerritory(1376, -832, 1504, 288)
call Right.region.setTower(5472, -1184, 5664, -992, 1)
call Right.region.setTower(4320, -1824, 4512, -1632, 2)
call Right.region.setTower(4064, -928, 4256, -736, 3)
call Right.region.setTower(4064, 224, 4256, 416, 4)
call Right.region.setTower(5472, 480, 5664, 672, 5)
call Right.region.setTower(4320, 1120, 4512, 1312, 6)
call Right.region.setTower(2016, -1056, 2208, -864, 7)
call Right.region.setTower(2016, 352, 2208, 544, 8)
* TopLeft
call TopLeft.region.setFort(-3872, 3424, -3552, 3744, 1)
call TopLeft.region.setFort(-3744, 992, -3424, 1312, 2)
call TopLeft.region.setFort(-1440, 3296, -1120, 3616, 3)
call TopLeft.region.setMain(-6720, 5952, -6080, 6592)
call TopLeft.region.addTerritory(-6208, 1952, -2080, 6080)
call TopLeft.region.addTerritory(-7360, 4896, -5024, 7232)
call TopLeft.region.addTerritory(-5056, 1632, -1216, 1984)
call TopLeft.region.addTerritory(-2080, 1568, -1472, 2240)
call TopLeft.region.addTerritory(-1952, 1568, -1344, 2112)
call TopLeft.region.addTerritory(-1696, 1600, -1088, 1856)
call TopLeft.region.addTerritory(-1632, 1568, -1024, 1696)
call TopLeft.region.addTerritory(-2528, 1344, -1696, 1696)
call TopLeft.region.addTerritory(-2368, 1216, -1696, 1568)
call TopLeft.region.addTerritory(-2240, 1088, -1696, 1440)
call TopLeft.region.addTerritory(-2144, 960, -1696, 1312)
call TopLeft.region.addTerritory(-1984, 832, -1696, 1184)
call TopLeft.region.addTerritory(-1856, 672, -1696, 992)
call TopLeft.region.addTerritory(-2144, 1984, -1696, 4928)
call TopLeft.region.addTerritory(-4032, 448, -2752, 1696)
call TopLeft.region.addTerritory(-1728, 2688, -576, 3872)
call TopLeft.region.addTerritory(-1728, 2336, -832, 4128)
call TopLeft.region.addTerritory(-1056, 2528, -704, 4000)
call TopLeft.region.addTerritory(-4288, 704, -2496, 1664)
call TopLeft.region.addTerritory(-4160, 608, -2624, 832)
call TopLeft.region.addTerritory(-2528, 1568, -1600, 2368)
call TopLeft.region.setTower(-5280, 5344, -5088, 5536, 1)
call TopLeft.region.setTower(-5664, 4960, -5472, 5152, 2)
call TopLeft.region.setTower(-4256, 3936, -4064, 4128, 3)
call TopLeft.region.setTower(-2976, 3296, -2784, 3488, 4)
call TopLeft.region.setTower(-3616, 2656, -3424, 2848, 5)
call TopLeft.region.setTower(-2848, 5600, -2656, 5792, 6)
call TopLeft.region.setTower(-2080, 3296, -1888, 3488, 7)
call TopLeft.region.setTower(-1440, 2656, -1248, 2848, 8)
call TopLeft.region.setTower(-2976, 1120, -2784, 1312, 9)
call TopLeft.region.setTower(-3616, 1760, -3424, 1952, 10)
call TopLeft.region.setTower(-5920, 2528, -5728, 2720, 11)
//! endtextmacro

set gg_rct_Right_Fort_001=Rect(4832.0, - 416.0, 5152.0, - 96.0)
set gg_rct_Right_Region_001=Rect(1056.0, - 704.0, 5952.0, 192.0)
set gg_rct_Right_Region_002=Rect(4064.0, - 2080.0, 5952.0, 1568.0)
set gg_rct_Right_Region_003=Rect(4832.0, 1536.0, 5824.0, 1888.0)
set gg_rct_Right_Region_004=Rect(4832.0, - 2400.0, 5824.0, - 2048.0)
set gg_rct_Right_Region_005=Rect(3936.0, - 1216.0, 4224.0, 672.0)
set gg_rct_Right_Region_006=Rect(3808.0, - 1088.0, 4096.0, 544.0)
set gg_rct_Right_Region_007=Rect(2176.0, - 1056.0, 2464.0, 544.0)
set gg_rct_Right_Region_008=Rect(2048.0, - 1216.0, 2336.0, 672.0)
set gg_rct_Right_Region_009=Rect(2112.0, - 1856.0, 2208.0, 1280.0)
set gg_rct_Right_Region_010=Rect(1984.0, - 1728.0, 2176.0, 1184.0)
set gg_rct_Right_Region_011=Rect(1856.0, - 1600.0, 2144.0, 1056.0)
set gg_rct_Right_Region_012=Rect(1760.0, - 1472.0, 2048.0, 928.0)
set gg_rct_Right_Region_013=Rect(1632.0, - 1312.0, 1920.0, 800.0)
set gg_rct_Right_Region_014=Rect(2304.0, - 928.0, 3936.0, 416.0)
set gg_rct_Right_Region_015=Rect(1472.0, - 960.0, 1600.0, 416.0)
set gg_rct_Right_Region_016=Rect(1376.0, - 832.0, 1504.0, 288.0)
set gg_rct_Right_Tower_001=Rect(5472.0, - 1184.0, 5664.0, - 992.0)
set gg_rct_Right_Tower_002=Rect(4320.0, - 1824.0, 4512.0, - 1632.0)
set gg_rct_Right_Tower_003=Rect(4064.0, - 928.0, 4256.0, - 736.0)
set gg_rct_Right_Tower_004=Rect(4064.0, 224.0, 4256.0, 416.0)
set gg_rct_Right_Tower_005=Rect(5472.0, 480.0, 5664.0, 672.0)
set gg_rct_Right_Tower_006=Rect(4320.0, 1120.0, 4512.0, 1312.0)
set gg_rct_Right_Tower_007=Rect(2016.0, - 1056.0, 2208.0, - 864.0)
set gg_rct_Right_Tower_008=Rect(2016.0, 352.0, 2208.0, 544.0)
set gg_rct_TopLeft_Fort_001=Rect(- 3872.0, 3424.0, - 3552.0, 3744.0)
set gg_rct_TopLeft_Fort_002=Rect(- 3744.0, 992.0, - 3424.0, 1312.0)
set gg_rct_TopLeft_Fort_003=Rect(- 1440.0, 3296.0, - 1120.0, 3616.0)
set gg_rct_TopLeft_Main=Rect(- 6720.0, 5952.0, - 6080.0, 6592.0)
set gg_rct_TopLeft_Region_001=Rect(- 6208.0, 1952.0, - 2080.0, 6080.0)
set gg_rct_TopLeft_Region_002=Rect(- 7360.0, 4896.0, - 5024.0, 7232.0)
set gg_rct_TopLeft_Region_003=Rect(- 5056.0, 1632.0, - 1216.0, 1984.0)
set gg_rct_TopLeft_Region_004=Rect(- 2080.0, 1568.0, - 1472.0, 2240.0)
set gg_rct_TopLeft_Region_005=Rect(- 1952.0, 1568.0, - 1344.0, 2112.0)
set gg_rct_TopLeft_Region_006=Rect(- 1696.0, 1600.0, - 1088.0, 1856.0)
set gg_rct_TopLeft_Region_007=Rect(- 1632.0, 1568.0, - 1024.0, 1696.0)
set gg_rct_TopLeft_Region_008=Rect(- 2528.0, 1344.0, - 1696.0, 1696.0)
set gg_rct_TopLeft_Region_009=Rect(- 2368.0, 1216.0, - 1696.0, 1568.0)
set gg_rct_TopLeft_Region_010=Rect(- 2240.0, 1088.0, - 1696.0, 1440.0)
set gg_rct_TopLeft_Region_011=Rect(- 2144.0, 960.0, - 1696.0, 1312.0)
set gg_rct_TopLeft_Region_012=Rect(- 1984.0, 832.0, - 1696.0, 1184.0)
set gg_rct_TopLeft_Region_013=Rect(- 1856.0, 672.0, - 1696.0, 992.0)
set gg_rct_TopLeft_Region_014=Rect(- 2144.0, 1984.0, - 1696.0, 4928.0)
set gg_rct_TopLeft_Region_015=Rect(- 4032.0, 448.0, - 2752.0, 1696.0)
set gg_rct_TopLeft_Region_016=Rect(- 1728.0, 2688.0, - 576.0, 3872.0)
set gg_rct_TopLeft_Region_017=Rect(- 1728.0, 2336.0, - 832.0, 4128.0)
set gg_rct_TopLeft_Region_018=Rect(- 1056.0, 2528.0, - 704.0, 4000.0)
set gg_rct_TopLeft_Region_019=Rect(- 4288.0, 704.0, - 2496.0, 1664.0)
set gg_rct_TopLeft_Region_020=Rect(- 4160.0, 608.0, - 2624.0, 832.0)
set gg_rct_TopLeft_Region_021=Rect(- 2528.0, 1568.0, - 1600.0, 2368.0)
set gg_rct_TopLeft_Tower_001=Rect(- 5280.0, 5344.0, - 5088.0, 5536.0)
set gg_rct_TopLeft_Tower_002=Rect(- 5664.0, 4960.0, - 5472.0, 5152.0)
set gg_rct_TopLeft_Tower_003=Rect(- 4256.0, 3936.0, - 4064.0, 4128.0)
set gg_rct_TopLeft_Tower_004=Rect(- 2976.0, 3296.0, - 2784.0, 3488.0)
set gg_rct_TopLeft_Tower_005=Rect(- 3616.0, 2656.0, - 3424.0, 2848.0)
set gg_rct_TopLeft_Tower_006=Rect(- 2848.0, 5600.0, - 2656.0, 5792.0)
set gg_rct_TopLeft_Tower_007=Rect(- 2080.0, 3296.0, - 1888.0, 3488.0)
set gg_rct_TopLeft_Tower_008=Rect(- 1440.0, 2656.0, - 1248.0, 2848.0)
set gg_rct_TopLeft_Tower_009=Rect(- 2976.0, 1120.0, - 2784.0, 1312.0)
set gg_rct_TopLeft_Tower_010=Rect(- 3616.0, 1760.0, - 3424.0, 1952.0)
set gg_rct_TopLeft_Tower_011=Rect(- 5920.0, 2528.0, - 5728.0, 2720.0)

Systems That Aren't Finished
1. Food​
2. Energy​
3. Morale​
4. Power​
5. Spawning​
6. Equipment (damage/combat is done though)​
7. Combat Experience​


vJass errors are legion
Looks pretty awesome to me. Too bad I have zero time to try it out at home.


New Member
This looks awesome, the fact that I love Dynasty Warriors Series, I'll be looking forward on this project.

I hope you can improve the terrain.


vJass errors are legion
I can improve the terrain for you if you want. I am fairly not too terrible with that sort of thing.
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    I have a GIF though
  • tom_mai78101 tom_mai78101:
    In the GIF, I've configured it so the lower the "Main Value" is, the better. I had to compress it pretty far down though.
  • tom_mai78101 tom_mai78101:
    And this is the thread with the video that shows the wall clip. https://tasvideos.org/Forum/Topics/23453
  • tom_mai78101 tom_mai78101:
    Hmm, about the Headline News, I noticed threads are being moved into the subforum (Health News, Environmental News, etc.). When that happens, the TH Forum Home page loses the articles, and instead would show old articles posted 1 or 2 weeks ago.
  • tom_mai78101 tom_mai78101:
    What do we do with the Home page?
  • Ghan Ghan:
    I added those forums to the filter for that widget.
  • tom_mai78101 tom_mai78101:
    Oh nice. They're back. Thanks.
  • tom_mai78101 tom_mai78101:
    Now I think it makes more sense for me to put news in their own subforums, without worry.
  • The Helper The Helper:
    Awesome Ghan thanks! I was purposely not moving the first 15 news articles in Headline news to the different subforums but I guess I don't have to do that now?
  • tom_mai78101 tom_mai78101:
    Question: Is there a way to remove thread redirects? It creates a copy of the moved thread and takes up space, and I am leaning towards wanting to remove them in the Headline News. But if they have an expiration date, I guess I'm fine with it.
  • The Helper The Helper:
    If you move a thread please leave a permanent redirect. You can delete any redirects after 6 months. The redirects are left to help Search Engines find the moved content.
  • tom_mai78101 tom_mai78101:
    What if you move the permanent redirect, not the thread?
  • The Helper The Helper:
    I think that works but I have not messed with it. You can delete redirects though if you have to that will not delete the original thread
  • The Helper The Helper:
    if a redirect ends up in the same forum as the post it goes to though I think the redirect drops or fails or something but they are not bugged out and when you are working on an indirect the original post is safe.
  • The Helper The Helper:
    Happy Early Friday :)
    Happy Friday :)
  • tom_mai78101 tom_mai78101:
    Fun Friday for me
  • tom_mai78101 tom_mai78101:
    Happy Fun Friday to all.
  • The Helper The Helper:
    Happy Sunday everyone!!!
    Happy Sunday!!!
  • jonas jonas:
    Happy monday :p
  • jonas jonas:
    Everyone hates mondays?
  • The Helper The Helper:
    Happy Tuesday!
  • jonas jonas:
    Happy belated tuesday

    Members online

    No members online now.


    Hive Workshop NUON Dome World Editor Tutorials

    Network Sponsors

    Apex Steel Pipe - Buys and sells Steel Pipe.