So, heres the full code with Watchers. However, this code was made for the Lothlorien citadel, (LothlorienCastleBaseKeep). In case youre using another fortress, you will need to add some extra code. Ill try to go over what you will need to do:
Full map.ini code:
;;;------------------------------------
;;; Tauriel
;;;------------------------------------
PlayerTemplate FactionElves
Side = Elves
PlayableSide = Yes ; Please note: the presence of "SIDE:Elves" in the string file is what makes this appear in MP as a playable side. And the skirmish scripts are what actually make it function.
Evil = No
StartMoney = 0
MaxLevelMP = #DIVIDE( PLAYER_MAX_PURCHASE_POIN TS_DEFAULT PLAYER_PURCHASE_POINTS_G RANTED )
MaxLevelSP = #DIVIDE( PLAYER_MAX_PURCHASE_POIN TS_GOOD PLAYER_PURCHASE_POINTS_G RANTED )
PreferredColor = R:43 G:150 B:179
;StartingBuilding = LothlorienFortress
;------------- NO STARTING UNITS FOR YOU -------
StartingUnit0 = ElvenLorienWarriorHorde ;_StartUnit
StartingUnitOffset0 = X:-70 Y:220 Z:0
StartingUnit1 = ElvenLorienWarriorHorde ;_StartUnit
StartingUnitOffset1 = X:60 Y:270 Z:0 ;250
StartingUnitTacticalWOTR = ElvenLorienWarriorHorde
StartingUnitTacticalWOTR = ElvenLorienWarriorHorde
StartingUnitTacticalWOTR = ObjectRingkriegStartScri pt
IntrinsicSciences = SCIENCE_GOOD
IntrinsicSciencesMP = SCIENCE_ELVES
SpellBook = GoodSpellBook
SpellBookMp = ElvesSpellBook_MapMirkwo od
PurchaseScienceCommandSe t = GoodSpellStoreCommandSet
PurchaseScienceCommandSe tMP = ElvesSpellStoreCommandSe t_MapMirkwood
DisplayName = INI:FactionElves
DefaultPlayerAIType = ElvesSkirmishAI ; Needs to exist before I can change it.
BeaconName = MultiplayerBeacon
LightPointsUpSound = GondorLightPointsUp
ObjectiveAddedSound = Gui_MissionObjectiveNew
ObjectiveCompletedSound = Gui_MissionObjectiveComp leted
InitialUpgrades = Upgrade_ElfFaction Upgrade_LothlorienFactio n Upgrade_AllFactionUpgrad e ; Any upgrades this player template is born with.
// NOTE: It is very important that the create-a-hero be the first buildable hero, to ensure that the create-a-hero and the ring hero are always
// attached to the first two buttons in the command set.
BuildableHeroesMP = CreateAHero RohanFrodo_mod RohanSam_mod LothlorienRumil LothlorienHaldir LothlorienCeleborn LothlorienGaladriel LothlorienTauriel LothlorienLegolas ElvenThranduil_mod GasthausGrimbeorn
BuildableRingHeroesMP = RingHeroDummy
SpellStoreCurrentPowerLa bel = APT:SpellStoreCurrentEvensta rPower
SpellStoreMaximumPowerLa bel = APT:SpellStoreMaximumEvensta rPower
ResourceModifierObjectFi lter = RESOURCE_MODIFIER_OBJECT _FILTER
ResourceModifierValues = 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100
MultiSelectionPortrait = UPElvenArmy
LoadScreenMusic = Shell2MusicForLoadScreen Lothlorien ;Shell2MusicForLoadScreen
End
Object LothlorienBeorningerHut
CommandSet = BeorningerHutCommandset_ MapMirkwood
End
Object LothlorienOuterFortress
CommandSet = LothlorienOuterFortressC ommandSet_MapMirkwood2
End
Object LothlorienCastleBaseKeep
CommandSet = LothlorienCastleBaseKeep CommandSet_MapMirkwood2
End
Object MirkwoodCampKeep
CommandSet = MirkwoodCampKeepCommandS et_MapMirkwood2
End
ChildObject ElvesSpellBook_MapMirkwo od GoodSpellBook
CommandSet = ElvesSpellBookCommandSet _MapMirkwood
ReplaceModule ModuleTag_MirkwoodWachen
Behavior = OCLSpecialPower ModuleTag_MirkwoodWachen _MapMirkwood
SpecialPowerTemplate = SpellBookMirkwoodWachen
OCL = OCL_SpawnMirkwoodWachenS ummonEgg_MapMirkwood
TriggerFX = FX_ElvenAlliesSummon
CreateLocation = CREATE_AT_LOCATION
AvailableAtStart = No
RequirementsFilterMPSkir mish = SPELL_BOOK_REQUIREMENTS_ FILTER
RequirementsFilterStrate gic = SPELL_BOOK_REQUIREMENTS_ FILTER_STRATEGIC
End
End
End
CommandSet LothlorienCastleBaseKeepCommandSet_MapMirkwood2
InitialVisible = 10
1 = Command_ConstructElvenLo rienWarriorHorde
2 = Command_ConstructElvenLo rienArcherHorde
3 = Command_ConstructElvenLo rienPikemanHorde
4 = Command_ConstructLothlor ienSängerinnen
5 = Command_ConstructLothlor ienGaladhrimHorde
6 = Command_ConstructLothlor ienCarasGuardHorde
7 = Command_ConstructMirkwoo dWächterPfadeHorde
8 = Command_RingMechanikLoth lorien
9 = Command_SelectRevivables LothlorienCastleKeepHero es_MapMirkwood
10 = Command_StartCitadelSelf Repair
11 = Command_FakeRingHeroRevi veSlot
12 = Command_CreateAHeroReviv eSlot
13 = Command_FrodoRingHeroRev iveSlot
14 = Command_SamRingHeroReviv eSlot
15 = Command_HaldirsBrüderGen ericReviveSlot
16 = Command_GenericReviveSlo t1
17 = Command_GenericReviveSlo t2
18 = Command_GenericReviveSlo t3
19 = Command_FakeHeroReviveSl ot5
20 = Command_FakeHeroReviveSl ot6
21 = Command_FakeHeroReviveSl ot7
22 = Command_FakeHeroReviveSl ot8
23 = Command_RadialBack
End
CommandSet MirkwoodCampKeepCommandS et_MapMirkwood2
InitialVisible = 7
1 = Command_ConstructLothlor ienMirkwoodFighterHorde
2 = Command_ConstructMirkwoo dWächterPfadeHorde
3 = Command_ConstructLothlor ienMirkwoodElkriderHorde
4 = Command_ConstructLothlor ienMirkwoodPalaceGuardHo rde
5 = Command_SpecialAbilityMo bilisierungsbefehl
6 = Command_SelectRevivables MirkwoodCampKeepHeroes_M apMirkwood
7 = Command_StartCitadelSelf Repair
8 = Command_FakeRingHeroRevi veSlot
9 = Command_FakeCreateAHeroR eviveSlot
10 = Command_FakeHeroReviveSl ot1
11 = Command_FakeHeroReviveSl ot2
12 = Command_FakeHeroReviveSl ot3
13 = Command_FakeHeroReviveSl ot4
14 = Command_FakeHeroReviveSl ot5
15 = Command_FakeHeroReviveSl ot6
16 = Command_GenericReviveSlo t7
17 = Command_GenericReviveSlo t8
18 = Command_GenericReviveSlo t9
19 = Command_FakeHeroReviveSl ot10
20 = Command_RadialBack
End
CommandSet LothlorienOuterFortressC ommandSet_MapMirkwood2
InitialVisible = 9
1 = Command_ConstructElvenLo rienWarriorHorde_Outpost
2 = Command_ConstructMirkwoo dWächterPfadeHorde
3 = Command_ConstructElvenLo rienPikemanHorde_Outpost
4 = Command_ConstructLothlor ienSängerinnen_Outpost
5 = Command_ConstructLothlor ienGaladhrimHorde_Outpos t
6 = Command_ConstructLothlor ienCarasGuardHorde_Outpo st
7 = Command_SelectRevivables LothlorienOuterFortressB uildingUpgrades
8 = Command_SelectRevivables LothlorienOuterFortressU pgrades
9 = Command_StartCitadelSelf Repair
10 = Command_PurchaseUpgradeL othlorienGrenzwächterflü gel
11 = Command_PurchaseUpgradeL othlorienHeiligtumsflüge l
12 = Command_PurchaseUpgradeL othlorienGaladhrimflügel
13 = Command_PurchaseUpgradeL othlorienSchmiedeflügel
14 = Command_RadialBack
15 = Command_PurchaseTechnolo gyLothlorienBasicTrainin g_OuterFortress
16 = Command_PurchaseTechnolo gyLothlorienForgedBlades _OuterFortress
17 = Command_PurchaseTechnolo gyLothlorienLongBows_Out erFortress
18 = Command_PurchaseTechnolo gyLothlorienSilverthornA rrows_OuterFortress
19 = Command_RadialBack
End
So, i marked in
RED the parts you must note. Also, in the Mirkwood Base and in the Camp, i replaced the default archer with the guardians.
In case youre not using a LothlorienCastleBaseKeep as primary base, you will need to add this to the end of the code, changing accordly in the red parts.
Object YourBaseObjectName
CommandSet = YourBaseObjectNameCommandSet_MapMirkwood2
End
CommandSet YourBaseObjectNameCommandSet_MapMirkwood2
InitialVisible = 10
1 = Command_ConstructElvenLo rienWarriorHorde
2 = Command_ConstructElvenLo rienArcherHorde
3 = Command_ConstructElvenLo rienPikemanHorde
4 = Command_ConstructLothlor ienSängerinnen
5 = Command_ConstructLothlor ienGaladhrimHorde
6 = Command_ConstructLothlor ienCarasGuardHorde
7 = Command_ConstructMirkwoo dWächterPfadeHorde
8 = Command_RingMechanikLoth lorien
9 = Command_SelectRevivables LothlorienCastleKeepHero es_MapMirkwood
10 = Command_StartCitadelSelf Repair
11 = Command_FakeRingHeroRevi veSlot
12 = Command_CreateAHeroReviv eSlot
13 = Command_FrodoRingHeroRev iveSlot
14 = Command_SamRingHeroReviv eSlot
15 = Command_HaldirsBrüderGen ericReviveSlot
16 = Command_GenericReviveSlo t1
17 = Command_GenericReviveSlo t2
18 = Command_GenericReviveSlo t3
19 = Command_FakeHeroReviveSl ot5
20 = Command_FakeHeroReviveSl ot6
21 = Command_FakeHeroReviveSl ot7
22 = Command_FakeHeroReviveSl ot8
23 = Command_RadialBack
End
Thou i seriously advice you to use one of the Lothlorien bases, because if you dont do it you gonna have to add all the Behaviours from the normal base to your base, and thats really.. extensive. And potentially problematic. XD
Heres an ingame example:
Let me know how it works^^