<Effect name="Unit Research Tech">
<Param name="PlayerID" dispName="$$22301$$Player" varType="player">0</Param>
<Param name="TechID" dispName="$$22311$$Tech" varType="tech">0</Param>
<Param name="SrcObject" dispName="$$22421$$Unit" varType="unit">default</Param>
<Command>researchByID(%TechID%,kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
</Effect>
<Effect name="Unit Train Unit">
<Param name="PlayerID" dispName="$$22301$$Player" varType="player">0</Param>
<Param name="Protounit" dispName="$$19160$$Unit" varType="protounit">villager greek</Param>
<Param name="SrcObject" dispName="$$22421$$Unit" varType="unit">default</Param>
<Param name="amount" dispName="Number of units" varType="long">1</Param>
<Command>trQuestVarSet("zmoo", 0);</Command>
<Command>while(%amount%>1*trQuestVarGet("zmoo")){</Command>
<Command>trainByID(kbGetProtoUnitID("%Protounit%"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trQuestVarSet("zmoo", trQuestVarGet("zmoo")+1);}</Command>
</Effect>
This could be very useful on some maps where you want the AI to train and research units on multiplayer or singleplayer maps. I am not sure how to loop build but for now you could loop the trigger to train units. Rules of training units still apply though so take that in mind. (e.g. resources, pop, 15 unit limit, unit actually needs to be available to build, etc)Other cool ideas I can think of is to have garrisonned buildings (using transform in editor) that will train units to appear outside the garrisonned unit. That could make a cool game idea.
Fell free to make up your own ideas. Enjoy the triggers!
P.s. Here are some more triggers made while discussion has bene going on here:
<Effect name="Convert to owner of other unit">
<Param name="SrcObject" dispName="Other Unit" varType="unit">default</Param>
<Param name="SrcObject2" dispName="Unit to Convert" varType="unit">default</Param>
<Command>trQuestVarSet("zmoo", 0);</Command>
<Command>while(13>=1*trQuestVarGet("zmoo")){</Command>
<Command>trUnitSelectClear();</Command>
<Command>trUnitSelect("%SrcObject%");</Command>
<Command>if(trUnitIsOwnedBy(1*trQuestVarGet("zmoo"))){</Command>
<Command>trUnitSelectClear();</Command>
<Command>trUnitSelect("%SrcObject2%");</Command>
<Command>trUnitConvert(1*trQuestVarGet("zmoo"));}</Command>
<Command>trQuestVarSet("zmoo", trQuestVarGet("zmoo")+1);}</Command>
</Effect>
<Effect name="Army Convert to owner of other unit">
<Param name="SrcObject" dispName="Other Unit" varType="unit">default</Param>
<Param name="SrcArmy" dispName="$$22348$$Army" VarType="group">default</Param>
<Command>trQuestVarSet("zmoo", 0);</Command>
<Command>while(13>=1*trQuestVarGet("zmoo")){</Command>
<Command>trUnitSelectClear();</Command>
<Command>trUnitSelect("%SrcObject%");</Command>
<Command>if(trUnitIsOwnedBy(1*trQuestVarGet("zmoo"))){</Command>
<Command>trArmySelect("%SrcArmy%");</Command>
<Command>trUnitConvert(1*trQuestVarGet("zmoo"));}</Command>
<Command>trQuestVarSet("zmoo", trQuestVarGet("zmoo")+1);}</Command>
</Effect>
<Effect name="Unit Train Available Myth">
<Param name="PlayerID" dispName="$$22301$$Player" varType="player">0</Param>
<Param name="SrcObject" dispName="$$22421$$Unit" varType="unit">default</Param>
<Param name="amount" dispName="Number of units" varType="long">1</Param>
<Command>trQuestVarSet("zmoo", 0);</Command>
<Command>while(%amount%>1*trQuestVarGet("zmoo")){</Command>
<Command>trainByID(kbGetProtoUnitID("Anubite"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Argus"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Automaton"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Avenger"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Battle Boar"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Behemoth"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Carcinos"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Centaur"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Chimera"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Colossus"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Cyclops"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Dryad"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Einheriar"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Fenris Wolf"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Fire Giant"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Flying Medic"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Frost Giant"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Heka Gigantes"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Hippocampus"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Hydra"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Jormund Elver"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Kraken"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Lampades"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Leviathan"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Man O War"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Manticore"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Medusa"),kbGetBlockID("%SrcObject%"),%PlayerID%);</Command>
<Command>trainByID(kbGetProtoUnitID("Minotaur"),kbGetBlockID("%SrcObject%"),%PlayerI