public void StopScript(SkillEffectStopReason stopReason)
 {
     if (mScript != null)
     {
         mScript.StopScript(stopReason);
     }
 }
Example #2
0
    protected override void onStopped(SkillEffectStopReason stopReason)
    {
        if (getState(StateEnabled))
        {
            ErrorHandler.Parse(enable(false, stopReason));
        }

        // buff被回收时, 不会再继续触发效果.
        if (stopReason != SkillEffectStopReason.Recycled)
        {
            // 消失时的特效.
            SkillClientBehaviour.AddEffect2Object(mOwner, mBuffRes.endEffectID, mBuffRes.endEffectBindpoint, 0f);

            // buff死亡创建.
            // 对buff拥有者产生效果.
            SkillDetails.AddSkillEffectByResource(mAttackerAttr, mOwner, mBuffRes.effect2OwnerOnExpired);

            // 对buff拥有者周围产生效果.
            SkillDetails.SelectTargetAndAddSkillEffect(mAttackerAttr, mOwner.GetPosition(),
                                                       mOwner.GetDirection(),
                                                       mBuffRes.targetSelectionOnExpired, mBuffRes.effect2OthersOnExpired
                                                       );

            // 在buff拥有者周围进行创建.
            SkillDetails.CreateCreationAround(mAttackerAttr, mBuffRes.creationAroundOwnerOnExpired, mOwner.GetPosition(), mOwner.GetDirection());
        }

        base.onStopped(stopReason);
    }
Example #3
0
 public override void StopScript(SkillEffectStopReason stopReason)
 {
     // 隐藏武器强化的界面.
     if (IsMainPlayerSkillScript)
     {
         EventSystem.Instance.removeEventListener(ResetRandEventDurationEvent.RESET_RAND_EVENT_DURATION, onDurationReset);
         ReloadEvent evt = new ReloadEvent(ReloadEvent.WEAPON_UP_REMOVE_EVENT);
         EventSystem.Instance.PushEvent(evt);
     }
 }
Example #4
0
    /// <summary>
    /// buff开始作用.
    /// </summary>
    protected ErrorCode enable(bool bEnabled, SkillEffectStopReason stopReason)
    {
        if (getState(StateEnabled) == bEnabled)
        {
            return(ErrorCode.Succeeded);
        }

        setState(StateEnabled, bEnabled);

        onEnabled(bEnabled, stopReason);

        return(ErrorCode.Succeeded);
    }
Example #5
0
	/// <summary>
	/// 结束一个技能效果.
	/// </summary>
	public ErrorCode Stop(SkillEffectStopReason stopReason)
	{
		if (!getState(StateAwake))
			return ErrorCode.Succeeded;

		setState(StateAwake, false);

		ErrorCode err = doStop();
		if (err != ErrorCode.Succeeded)
			return err;

		onStopped(stopReason);
		return ErrorCode.Succeeded;
	}
Example #6
0
    public static ErrorCode RemoveRandEvent(BattleUnit owner,
                                            BattleUnitRandEventContainer randEventContainer,
                                            SkillBuffTableItem buffRes,
                                            SkillEffectStopReason stopReason
                                            )
    {
        if (buffRes.randEvent == uint.MaxValue)
        {
            return(ErrorCode.Succeeded);
        }

        randEventContainer.Remove(buffRes, stopReason);

        return(ErrorCode.Succeeded);
    }
    public void Remove(SkillBuffTableItem buffRes, SkillEffectStopReason stopReason)
    {
        SkillRandEventTableItem randEventRes = DataManager.RandEventTable[buffRes.randEvent] as SkillRandEventTableItem;

        if (randEventRes == null)
        {
            return;
        }

        List <BattleUnitRandEvent> typedContainer = mContainer[(int)randEventRes.triggerType];

        BattleUnitRandEvent node = typedContainer.Find(x => (x.fromBuffRes.resID == buffRes.resID && x.randEventResource.resID == randEventRes.resID));

        if (node != null)
        {
            node.StopScript(stopReason);
            typedContainer.Remove(node);
        }
    }
Example #8
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);
            }
        }
    }
Example #9
0
 public ErrorCode RemoveRandEvent(SkillBuffTableItem buffRes, SkillEffectStopReason stopReason)
 {
     return(SkillDetails.RemoveRandEvent(this, mRandEventContainer, buffRes, stopReason));
 }
Example #10
0
	protected virtual void onStopped(SkillEffectStopReason stopReason)
	{
	}
Example #11
0
 /// <summary>
 /// 脚本来源的BUFF被结束, 进行最终结算.
 /// </summary>
 public abstract void StopScript(SkillEffectStopReason stopReason);
Example #12
0
 public override void StopScript(SkillEffectStopReason stopReason)
 {
 }
Example #13
0
 public override void StopScript(SkillEffectStopReason stopReason)
 {
     mOwner.ShowShieldUI(false);
 }
Example #14
0
 public SkillEffectKiller(SkillEffectStopReason reason)
 {
     StopReason = reason;
 }