Not sure how defeating spain has anything to do with the first unit in a scripted spawn. In fact that's unlikely - you are spawning an army for the 'united' faction and regardless what you do the first unit in that spawn will be the bodyguard. Unless there is some formatting error which should lead to the spawn not happening at all.
To avoid typos and reference errors I highly recommend to use squid's script checker.
'House cleaning' helps with script processing: the more active monitors you have the longer the processing time. That's why monitors should be terminated whenever possible. Also do not use the same label for counters and event counters - bad practice as it can lead to confusion. Here my take on it with some 'beautification':
Code:
;########################## Balchoth #########################
declare_counter east_united
set_counter east_united 0 - not needed, counters are always zero when declared
monitor_event FactionTurnEnd FactionType slave
; terminate if faction is the AI
if I_IsFactionAIControlled united ; better suited for hotseat games
terminate_monitor
end_if
if I_SettlementOwner Mistrand = united
and I_SettlementOwner Southern_Rhun = united
and I_SettlementOwner Morad = united
and I_SettlementOwner Kelepar = united
and I_SettlementOwner Farest_Rhun = united
and I_NumberOfSettlements venice < 1
and I_EventCounter rhun_falls = 0
historic_event rhun_falls
inc_counter east_united 1
spawn_army
faction united
character random_name, named character, age 22, x 390, y 285, direction N
traits BadManRace 1, Brave 1, GoodCommander 2, GoodDefender 2, GoodSiegeDefender 1, Loyal 1, LoyaltyStarter 1, ReligionStarter 1
unit elite champions exp 2 armour 1 weapon_lvl 1
unit Rhun Infantry Macemen exp 0 armour 0 weapon_lvl 0
unit Rhun Infantry Macemen exp 0 armour 0 weapon_lvl 0
end
end_if
if I_SettlementOwner Harondor = united
and I_SettlementOwner Near_Harad = united
and I_SettlementOwner West_Khand = united
and I_SettlementOwner Harad = united
and I_SettlementOwner Khand = united
and I_SettlementOwner Far_Khand = united
and I_NumberOfSettlements khand < 1
and I_EventCounter khand_falls = 0
historic_event khand_falls
inc_counter east_united 1
spawn_army
faction united
character random_name, named character, age 22, x 390, y 285, direction N
traits BadManRace 1, Brave 1, GoodCommander 2, GoodDefender 2, GoodSiegeDefender 1, Loyal 1, LoyaltyStarter 1, ReligionStarter 1
unit elite champions exp 2 armour 1 weapon_lvl 1
unit Khand_Windriders exp 0 armour 0 weapon_lvl 0
unit Khand_Windriders exp 0 armour 0 weapon_lvl 0
end
end_if
if I_SettlementOwner Gobel_Ancalimon = united
and I_SettlementOwner Shafra = united
and I_SettlementOwner Amrun = united
and I_SettlementOwner Haradwaith = united
and I_SettlementOwner Chelkar = united
and I_NumberOfSettlements spain < 1
and I_EventCounter harad_falls = 0
historic_event harad_falls
inc_counter east_united 1
spawn_army
faction united
character random_name, named character, age 22, x 390, y 285, direction N
traits BadManRace 1, Brave 1, GoodCommander 2, GoodDefender 2, GoodSiegeDefender 1, Loyal 1, LoyaltyStarter 1, ReligionStarter 1
unit elite champions exp 2 armour 1 weapon_lvl 1
unit Harad Mumakil exp 0 armour 0 weapon_lvl 0
end
end_if
if I_CompareCounter east_united = 3
and I_EventCounter east_united = 0
historic_event east_united
terminate_monitor ; good house keeping
end_if
terminate_monitor
end_monitor