コード例 #1
0
ファイル: Trap.cs プロジェクト: fengmin0722/qiangzhan
 /// <summary>
 /// trap爆炸死亡.
 /// </summary>
 private void explode(object param)
 {
     if (mLoopClientBehaviours != null)
     {
         SkillClientBehaviour.RemoveAll(this, mLoopClientBehaviours);
     }
     Die(new AttackerAttr(this));
 }
コード例 #2
0
    /// <summary>
    /// 切换状态并清空参数.
    /// </summary>
    /// <param name="state"></param>
    private void switch2State(ActionSkillState state)
    {
        if (state != mState)
        {
            mState      = state;
            mStateTimer = 0;

            SkillClientBehaviour.RemoveAll(mOwner, mLoopClientBehaviours);
            mTaskManager.Stop();
        }
    }
コード例 #3
0
    protected override void onStopped(bool finished)
    {
        SkillClientBehaviour.RemoveAll(mOwner, mLoopClientBehaviours);

        mOwner.AddActiveFlag(ActiveFlagsDef.DisableAttack, false, InterruptSkillUsing);
        mOwner.AddActiveFlag(ActiveFlagsDef.DisableSkillUse, false, InterruptSkillUsing);
        mOwner.AddActiveFlag(ActiveFlagsDef.DisableMovement, false, true);
        mOwner.AddActiveFlag(ActiveFlagsDef.DisableRotate, false, true);

        base.onStopped(finished);
    }
コード例 #4
0
    /// <summary>
    /// buff开始作用. 添加属性, 动态标记等.
    /// </summary>
    protected virtual void onEnabled(bool bEnabled, SkillEffectStopReason stopReason)
    {
        // 特效
        if (bEnabled)
        {
            SkillClientBehaviour.AddEffect2Object(mOwner, mBuffRes._3DEffectID, mBuffRes._3DEffectBindpoint, 0f, mBuffRes.loop3DEffect, mClientBehaviourIdContainer);
            SkillClientBehaviour.PlayAnimation(mOwner, mBuffRes.animationName, mBuffRes.loopAnimation, mClientBehaviourIdContainer);
        }
        else
        {
            SkillClientBehaviour.RemoveAll(mOwner, mClientBehaviourIdContainer);
        }

        // 检查目标是否可以被控制, 并保存标记, 表示该buff是否对目标产生了控制.
        if ((bEnabled && mOwner.CanBeStuned()) || (!bEnabled && mStunEnabled))
        {
            enableStun(bEnabled);
            mStunEnabled = bEnabled;
        }

        if (mBuffRes.stunImmunity)
        {
            mOwner.AddActiveFlag(ActiveFlagsDef.StunImmunity, bEnabled, true);
        }

        if (mBuffRes.damageImmunity)
        {
            mOwner.AddActiveFlag(ActiveFlagsDef.DamageImmunity, bEnabled, true);
        }

        if (mBuffRes.inviolability)
        {
            mOwner.AddActiveFlag(ActiveFlagsDef.Inviolability, bEnabled, true);
        }

        if (mBuffRes.magneticEffect)
        {
            mOwner.AddActiveFlag(ActiveFlagsDef.MagneticEffect, bEnabled, true);
        }

        if (mBuffRes.strokeEffect)
        {
            mOwner.AddActiveFlag(ActiveFlagsDef.StrokeEffect, bEnabled, true);
        }

        if (mBuffRes.randEvent != uint.MaxValue)
        {
            if (bEnabled)
            {
                mOwner.AddRandEvent(mBuffRes, mAttackerAttr);
            }
            else
            {
                mOwner.RemoveRandEvent(mBuffRes, stopReason);
            }
        }

        if (bEnabled)         // mStackCount == 0.
        {
            AddStack();
            if (mBuffRes.newModelID != uint.MaxValue)
            {
                mOwner.Transform((int)mBuffRes.newModelID);
            }
            if (mBuffRes.newWeaponID != uint.MaxValue)
            {
                mOwner.ChangeWeapon((int)mBuffRes.newWeaponID);
                mOwner.AddActiveFlag(ActiveFlagsDef.DisableChangeWeaponModel, true, false);
            }

            if (mBuffRes.superNewWeaponID != uint.MaxValue)
            {
                if (mOwner is Player)
                {
                    if ((mOwner as Player).HasSuperWeapon())
                    {
                        (mOwner as Player).UnEquipSuperWeapon();
                    }

                    mLastUseWeapon = (uint)mOwner.GetMainWeaponID();
                    (mOwner as Player).SceneChangeWeapon((int)mBuffRes.superNewWeaponID);
                    mOwner.AddActiveFlag(ActiveFlagsDef.DisableChangeWeapon, true, false);
                }
                else
                {
                    GameDebug.LogError("只有玩家支持使用buff更换武器");
                }
            }

            if (mSkillTransform != null)
            {
                mOwner.SkillTransform(mSkillTransform);
            }
        }
        else
        {
            removeAllStacks();
            if (mBuffRes.newModelID != uint.MaxValue)
            {
                mOwner.UndoTransform();
            }
            if (mBuffRes.newWeaponID != uint.MaxValue && mOwner is Player)
            {
                mOwner.AddActiveFlag(ActiveFlagsDef.DisableChangeWeaponModel, false, false);
                mOwner.ChangeWeapon(mOwner.GetMainWeaponID());
            }

            if (mBuffRes.superNewWeaponID != uint.MaxValue)
            {
                if (mOwner is Player)
                {
                    mOwner.AddActiveFlag(ActiveFlagsDef.DisableChangeWeapon, false, false);
                    (mOwner as Player).SceneChangeWeapon((int)mLastUseWeapon);
                }
                else
                {
                    GameDebug.LogError("只有玩家支持使用buff更换武器");
                }
            }

            if (mSkillTransform != null)
            {
                mOwner.SkillTransform(null);
            }
        }
    }