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