• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[GUI] Tribe System

This bundle is marked as awaiting update. A staff member has requested changes to it before it can be approved.
Tribe System

Inspired by the RTS game Totem Tribe, the Tribe System can be used to create buildings that house a certain number of units and retrain them whenever the old ones die. In this template we have Pig Farms that train a maximum of 3 Peons and Barracks that train a maximum of 5 Grunts. Units are free and take no food supply, but the building will not train more units than its limit. In the original game, if you had let's say 2 Barracks and 10 Grunts and 1 Barracks was destroyed, if a Grunt from the not destroyed Barracks died, instead of starting training a new grunt, it would assign one of the homeless grunts to its group, until there were no more homeless grunts, and then it would start training new grunts. Also newly created buildings would do the same if there were any matching homeless units. This is quite a pain to do, so instead I made it so when a building is killed all its units will become hostile (you can change this if you don't like my idea).
Contents

Tribe System [GUI] (Map)

Reviews
MyPad
Alright, I think I got this to work. Odd thing is that in reference to this quote, I would've suggested adding an option where this happens, until further inspection of triggers convinced me otherwise. Review: Upon closer inspection of the...
I'd call this a custom food system rather than a tribe system.

Seems like an interesting addition to footmen frenzy maps.
I based it on the game's name since I didn't have a good name. I don't think that name works either.
I didn't think of it as a footmen frenzy system, more of a melee system in which you build the structures, kinda like Nexus Wars, except you get to control the units and have a limit to them.

It would be pretty cool if the barracks/pig farm could order it's child units around, either via ability or rally point.
In the game I mentioned, you couldn't control any units individualy. You had a Fighter Flag that sent all fighting units to attack move, a Scout Flag that could send Scouts (like Shades) to move, and a Building Construction site that would send all workers to work on a certain building. But that system is way easier to implement, and doesn't really need to be included in this system. (Make a Town Hall unit that has an ability with Carrion Swarm as a base. Remove all damage, and set range to 9999999. When this ability is used teleport your rally flag to the point of the ability cast. Periodically send every player's units of certain types to attack move at the position of the flag, owned by the respective player.)
 
Is this testable in other copies in wc3 (testable -> can be loaded in wc3 as test map)? In my version, it does not appear in the list of openable maps, and in the World Editor, the map can be previewed/loaded but testing it leads to the former situation. This had to be saved again so that the map can properly load.
Strange. I tried to test the map now and it doesn't work, but it worked flawlessly when I first posted it.
Edit: My World Editor seems unable to test any map for some reason, not just this one. I can open it in world editor, it appears correctly
 
Alright, I think I got this to work.

@Xetanth87 said:
so instead I made it so when a building is killed all its units will become hostile

Odd thing is that in reference to this quote, I would've suggested adding an option where this happens, until further inspection of triggers convinced me otherwise.


Review:

  • Upon closer inspection of the triggers, it is clear that registering a unit-type to be automatically trained would require a bit of effort and memory. Instead, why not create a constructor function that does the registering for the user, like this:

    JASS:
    function TribeSystem_register takes integer unitId, integer buildingId, integer qty returns integer (returns index)
        // Core idea is to set the needed variables.
        set maxInst = maxInst + 1
        set someArr[maxInst] = unitId
        set otherArr[maxInst] = buildingId
        ...
        return maxInst
    endfunction

  • Trigger names in the system are generic, running the risk of having other triggers overlap with them due to their name. Suggested action is to rename them to be more unique.

  • Similarly, at most 1 variable needs to be renamed (BusyStructures can be somewhat broad)


Set to

Awaiting Update

 
Last edited:
Top