WIP Back To Footman Empires Project :o

Introduction

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

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).

Stamina

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

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.

Commanders

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

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.
 

Attachments

Races
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.​

Fortresses
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​
JASS:
//! 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

 
From
JASS:
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​
 

Bribe

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

sonofjay

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.
 

Bribe

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.
  • Ghan Ghan:
    Test!
  • tom_mai78101 tom_mai78101:
    I must be in a test server.
  • tom_mai78101 tom_mai78101:
    Nice, Twitter tweets embedding now works
  • Wizard Wizard:
    Yup.
  • Ghan Ghan:
    Excellent.
  • Ghan Ghan:
    @tom_mai78101 Hello there.
  • Ghan Ghan:
    Tagging works in the chat too.
  • tom_mai78101 tom_mai78101:
    @Ghan Missed it.
  • Wizard Wizard:
    Still fixing things here and there. Added widgets to the portal, will make it match the ones here on the forum index tomorrow.
  • Ghan Ghan:
    The venerable World Editor Tutorials site has been converted to HTTPS at last.
  • jonas jonas:
    cool
  • jonas jonas:
    and I can even edit my messages, nice
  • seph ir oth seph ir oth:
    GENERAL CHIT CHAT, YOU ARE A BOLD ONE
  • Ghan Ghan:
    Hello there
  • The Helper The Helper:
    this new chatbox is great and the forum software update is great too
    +1
  • The Helper The Helper:
    upgrade has fixed forum registration spam problem
  • tom_mai78101 tom_mai78101:
    Something tells me we might be able to customize the chatbox a bit, considering that there's a gap under every message.
  • Wizard Wizard:
    Going to deploy a fix soon, just had to take some time for myself this weekend.
  • Varine Varine:
    Unbelievable. Time for yourself? How dare you!
  • Wizard Wizard:
    xD
  • tom_mai78101 tom_mai78101:
    Hm, it is now harder to type anything on an Android phone. Pressing Backspace or Enter keys will dismiss the Android keyboard for some reasons.
  • tom_mai78101 tom_mai78101:
    Just noticed there's a delay of at least 2 minutes before each post. Guess I can't post Headline News quickly as I used to.
  • tom_mai78101 tom_mai78101:
    As far as I can tell, there are definitely things I need to get accustomed to first.
  • Varine Varine:
    FCC is cracking down recently

    Members online

    No members online now.

    Affiliates

    Hive Workshop
    Top