public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value == null) { return(lastResult = TaskResult.FAIL); } //attack event Base.Events.GameEventID eventID = eventType.value as Base.Events.GameEventID; if (eventID == null) { return(lastResult = TaskResult.FAIL); } //call event Base.Events.AttackTargetEvent attackEvent = new Events.AttackTargetEvent(eventID); attackEvent.DispatchGlobally = false; attackEvent.attackTarget = target.value; attackEvent.Sender = controller.agent.transform.GetInstanceID(); GlobalDataContainer.It.eventsManager.dispatchEvent(attackEvent); //cache result return(lastResult = TaskResult.SUCCESS); }
public override TaskResult run(BehaviourTreeController.TreeStatus controller) { if (hasReadyResult(controller)) { return(lastResult); } if (target.value == null) { return(lastResult = TaskResult.FAIL); } //attack event Base.Events.GameEventID eventID = eventType.value as Base.Events.GameEventID; if (eventID == null) { return(lastResult = TaskResult.FAIL); } //call event Base.Events.DealDamageEvent dealEvent = new Events.DealDamageEvent(eventID); if (dealToYourself) { dealEvent.damageTarget = controller.agent.transform; } else { dealEvent.damageTarget = target.value; } Base.Game.DamageSourceInfo damagesource = new Game.DamageSourceInfo(); damagesource.damageSources.Add(new Base.Game.DamageSourceInfo.SourceValue(Base.Game.DamageSourceInfo.DamageSource.DEFAULT, 100)); dealEvent.damageValue = damagesource; GlobalDataContainer.It.eventsManager.dispatchEvent(dealEvent); //cache result return(lastResult = TaskResult.SUCCESS); }