WIP Back To Footman Empires Project :o

Nestharus

o-o
Reaction score
84
Introduction

Footman Empires is largely influenced by Dynasty Warriors Empires 4

Dynasty_Warriors_5_Empires_(PS2)_005.JPG


The object of the game is to take out the opposing teams
footman-empires-jpg.17835


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

footman-empires-2-jpg.17836


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

  • footman empires.jpg
    footman empires.jpg
    530.5 KB · Views: 731
  • footman empires 2.jpg
    footman empires 2.jpg
    55.8 KB · Views: 661

Nestharus

o-o
Reaction score
84
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

 

Nestharus

o-o
Reaction score
84
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
Reaction score
67
Looks pretty awesome to me. Too bad I have zero time to try it out at home.
 

sonofjay

New Member
Reaction score
0
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
Reaction score
67
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:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top