void DealCounterAction(BattleActor aim) { // reset action state aim.ControlEntity.ResetState(); COM_ReportActionCounter counter = GetAimCounter(aim.BattlePos); if (counter == null) { // if(counterLst_.Count == 0) // { mainSkillInst.ContinueAttack(); return; // } } BattleActor actor = null; if (counter.states_ != null) { for (int i = 0; i < counter.states_.Length; ++i) { // add counter state actor = Battle.Instance.GetActorByInstId(counter.states_[i].ownerId_); actor.ControlEntity.AddState(counter.states_[i]); } } ExcuteState(StateInst.ExcuteType.ET_Beattack, ExcuteCounter, counter, true); }
void DealStateCallBack(COM_ReportActionCounter counter) { dealStateCount_++; if (dealStateCount_ == members_.Length) { for (int i = 0; i < members_.Length; ++i) { members_[i].ControlEntity.MoveTo(aim_.ControlEntity.ActorObj, ReadyAttack); } } }
void ExcuteCounter(COM_ReportActionCounter counter) { BattleActor caster = Battle.Instance.GetActorByInstId(counter.casterId_); BattleActor[] aim = new BattleActor[] { Battle.Instance.GetActorByIdx((int)counter.targetPosition_) }; SkillInst skill = new SkillInst(); EffectAPI.Play((EFFECT_ID)GlobalValue.EFFECT_Fanji, caster.ControlEntity.ActorObj.transform.position + caster.ControlEntity.ActorObj.transform.forward, null, null, null, (EffectInst inst, ParamData pData) => { EffectAPI.Play((EFFECT_ID)GlobalValue.EFFECT_FanjiCast, caster.ControlEntity.ActorObj, null, null, (int iVal) => { skill.Cast(GlobalValue.GetAttackID(caster), 1, caster, aim, new COM_ReportTarget[] { counter.props_ }, null, DealCounterAction, true); }); }); }
public void ExcuteState(StateInst.ExcuteType type, DealStateCallBack callback = null, COM_ReportActionCounter counter = null, bool isPhysic = true, bool realDodge = false) { type_ = type; dealStateCallBack_ = callback; realDodge_ = realDodge; counter_ = counter; stateIndex_ = 0; isPhysic_ = isPhysic; if (isPhysic_) { notPlayDef_ = DontPlayDefState(); } else { notPlayDef_ = true; } ExcuteStateInner(); }
public COM_ReportActionCounter GetAimCounter(int pos) { COM_ReportActionCounter counter = null; BattleActor actor = Battle.Instance.GetActorByIdx(pos); if (actor == null) { return(null); } int casterId = actor.InstId; for (int i = 0; i < counterLst_.Count; ++i) { if (casterId == counterLst_[i].casterId_) { counter = counterLst_[i]; counterLst_.RemoveAt(i); break; } } return(counter); }
// public ParamData(COM_ReportActionCounter counter) { reportActionCounter = counter; }