public uint CreateEvadeDummy(uint ownerID, string evadeDummyName, Vector3 initPos, Vector3 initDir) { BaseMonoDynamicObject entity = this.CreateDynamicObjectEntityInstance(ownerID, evadeDummyName, initPos, initDir, this.GetNextNonSyncedDynamicObjectRuntimeID()); entity.dynamicType = BaseMonoDynamicObject.DynamicType.EvadeDummy; EvadeEntityDummy dummy = Singleton <EventManager> .Instance.CreateActor <EvadeEntityDummy>(entity); dummy.Setup(ownerID); return(dummy.runtimeID); }
public override void OnAbilityTriggered(EvtAbilityStart evt) { if ((this._dummyActor != null) && this._dummyActor.IsEntityExists()) { this._dummyActor.Kill(); } uint runtimeID = Singleton <DynamicObjectManager> .Instance.CreateEvadeDummy(base.actor.runtimeID, this.config.EvadeDummyName, base.actor.entity.XZPosition, base.actor.entity.transform.forward); this._dummyActor = Singleton <EventManager> .Instance.GetActor <EvadeEntityDummy>(runtimeID); base.actor.abilityPlugin.HandleActionTargetDispatch(this.config.EvadeStartActions, base.instancedAbility, base.instancedModifier, null, null); Singleton <EventManager> .Instance.FireEvent(new EvtEvadeStart(base.actor.runtimeID), MPEventDispatchMode.Normal); if (this._state == State.Idle) { base.actor.AddAbilityState(AbilityState.BlockAnimEventAttack, true); base.entity.SetCountedIsGhost(true); } this._evadeTimer.Reset(true); this._extendedBlockAttackTimer.Reset(true); this._state = State.Evading; }