Beispiel #1
0
    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);
    }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
    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);
            });
        });
    }
Beispiel #4
0
    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();
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
 //
 public ParamData(COM_ReportActionCounter counter)
 {
     reportActionCounter = counter;
 }