With ghan-buri-ghan the way I did is that I replaced the OCL it spawns in the GoodSpellbook (it's module ModuleTag_SummonDruedain Allies). For fixing the duplicates the only way I figured out how to fix was a child object again.
To make the powers available you'll have to remove their requirement. There is usually a "starter" module that you have to remove and then in the specialpower module you have to switch StartsActive to Yes.
Here's my map.ini code for ghan-buri-ghan
ChildObject GasthausGhanBuriGhan_SummonedMax GasthausGhanBuriGhan_Summoned
MaxSimultaneousOfType = 1
RemoveModule ModuleTag_Slave
RemoveModule ModuleTag_LifetimeUpdate
KindOf = +HERO
End
Object DruedainKrieger_Summoned
RemoveModule ModuleTag_LifetimeUpdate
End
Object DruedainKriegerHorde_Summoned
RemoveModule ModuleTag_Slave
RemoveModule ModuleTag_LifetimeUpdate
End
ObjectCreationList OCL_SpawnDruedainAlliesMax
CreateObject
ObjectNames = GasthausGhanBuriGhan_SummonedMax
UseJustBuiltFlag = Yes
Count = 1
FadeIn = Yes
FadeTime = 8000
IgnoreCommandPointLimit = Yes
Disposition = ABSOLUTE_ANGLE
DispositionAngle = 90
Offset = X:0 Y:0 Z:0
End
CreateObject
ObjectNames = DruedainKriegerHorde_Summoned
Count = 2
FadeIn = Yes
FadeTime = 8000
IgnoreCommandPointLimit = Yes
Disposition = SPAWN_AROUND
DispositionAngle = 120 ;SpawnAround uses this as the arc between guys
DispositionIntensity = 300 ; and this for distance from center
End
End
ChildObject RohanSpellBookMax RohanSpellBook
ReplaceModule ModuleTag_SummonDruedainAllies
Behavior = OCLSpecialPower ModuleTag_SummonDruedainAllies2
SpecialPowerTemplate = SpellBookDruedainAllies
OCL = OCL_SpawnDruedainAlliesMax
TriggerFX = FX_RohirimSummon
CreateLocation = CREATE_AT_LOCATION
AvailableAtStart = No
RequirementsFilterMPSkirmish = SPELL_BOOK_REQUIREMENTS_FILTER
RequirementsFilterStrategic = SPELL_BOOK_REQUIREMENTS_FILTER_STRATEGIC
End
End
End
PlayerTemplate FactionRohan
SpellBookMp = RohanSpellBookMax
End