public override void Execute() { base.Execute(); IntPosition position = new IntPosition(Units.GridToBoardX(this.gridX), Units.GridToBoardZ(this.gridZ)); IDataController dataController = Service.Get <IDataController>(); List <IAssetVO> assets = new List <IAssetVO>(); ProjectileUtils.AddTroopProjectileAssets(this.troopUid, assets, dataController); Service.Get <ProjectileViewManager>().LoadProjectileAssetsAndCreatePools(assets); TroopTypeVO troop = dataController.Get <TroopTypeVO>(this.troopUid); TroopSpawnData troopSpawnData = new TroopSpawnData(troop, position, TroopSpawnMode.LeashedToSpawnPoint, this.amount); Service.Get <SimTimerManager>().CreateSimTimer(1500u, false, new TimerDelegate(this.OnSpawnTimer), troopSpawnData); this.parent.ChildComplete(this); }