/// <summary> /// trap爆炸死亡. /// </summary> private void explode(object param) { if (mLoopClientBehaviours != null) { SkillClientBehaviour.RemoveAll(this, mLoopClientBehaviours); } Die(new AttackerAttr(this)); }
/// <summary> /// 切换状态并清空参数. /// </summary> /// <param name="state"></param> private void switch2State(ActionSkillState state) { if (state != mState) { mState = state; mStateTimer = 0; SkillClientBehaviour.RemoveAll(mOwner, mLoopClientBehaviours); mTaskManager.Stop(); } }
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); }
/// <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); } } }