public EvtLevelBuffState(LevelBuffType levelBuff, LevelBuffState state, LevelBuffSide side, uint ownerRuntimeID) { this.levelBuff = levelBuff; this.state = state; this.side = side; this.sourceId = ownerRuntimeID; }
public void AttachLevelBuffEffect(LevelBuffType levelBuffType, string effectPattern) { if (Singleton <StageManager> .Instance.GetPerpStage().rainController == null) { this._attachedLevelBuffEffect[(int)levelBuffType] = effectPattern; Singleton <EffectManager> .Instance.CreateUniqueIndexedEffectPattern(effectPattern, levelBuffType.ToString(), Singleton <LevelManager> .Instance.levelEntity); } }
public void MPResponseHandleLevelBuff(LevelBuffAction action, LevelBuffType type, bool enteringSlow, bool notStartEffect, uint ownerID, LevelBuffSide side, int instancedAbilityID, int actionLocalID) { BaseLevelBuff witchTimeLevelBuff; LevelBuffType type2 = type; if (type2 == LevelBuffType.WitchTime) { witchTimeLevelBuff = base.witchTimeLevelBuff; } else if (type2 == LevelBuffType.StopWorld) { witchTimeLevelBuff = base.stopWorldLevelBuff; } else { witchTimeLevelBuff = null; } switch (action) { case LevelBuffAction.Add: if (type != LevelBuffType.WitchTime) { if (type == LevelBuffType.StopWorld) { base.stopWorldLevelBuff.Setup(enteringSlow, 10f, ownerID); } break; } base.witchTimeLevelBuff.Setup(enteringSlow, 10f, side, notStartEffect); break; case LevelBuffAction.Remove: this.StopLevelBuff(witchTimeLevelBuff); return; case LevelBuffAction.SwitchSide: base.witchTimeLevelBuff.SwitchSide(enteringSlow, 10f, side, ownerID, notStartEffect); this.DestroyLevelBuffEffect(type); this.CreateLevelBuffEffect(type, ownerID, instancedAbilityID, actionLocalID); Singleton <EventManager> .Instance.FireEvent(new EvtLevelBuffState(type, LevelBuffState.Switch, base.witchTimeLevelBuff.levelBuffSide, ownerID), MPEventDispatchMode.Normal); return; case LevelBuffAction.SameSideExtend: witchTimeLevelBuff.ownerID = ownerID; base.witchTimeLevelBuff.ExtendDuration(10f, enteringSlow, true); return; default: return; } witchTimeLevelBuff.ownerID = ownerID; base.AddPlugin(witchTimeLevelBuff); witchTimeLevelBuff.isActive = true; this.CreateLevelBuffEffect(type, ownerID, instancedAbilityID, actionLocalID); Singleton <EventManager> .Instance.FireEvent(new EvtLevelBuffState(type, LevelBuffState.Start, base.witchTimeLevelBuff.levelBuffSide, ownerID), MPEventDispatchMode.Normal); }
private void CreateLevelBuffEffect(LevelBuffType type, uint ownerID, int instancedAbilityID, int actionLocalID) { ApplyLevelBuff buff = this.LocateApplyLevelBuffConfig(ownerID, instancedAbilityID, actionLocalID); if ((buff != null) && !string.IsNullOrEmpty(buff.AttachLevelEffectPattern)) { Singleton <EffectManager> .Instance.CreateUniqueIndexedEffectPattern(buff.AttachLevelEffectPattern, type.ToString(), Singleton <LevelManager> .Instance.levelEntity); } }
public void MPRequestStartLevelBuff(LevelBuffType type, LevelBuffSide side, uint ownerID, bool allowRefresh, bool enteringSlow, bool notStartEffect, float duration, int instancedAbilityID, int actionLocalID) { BaseLevelBuff witchTimeLevelBuff; LevelBuffType type2 = type; if (type2 == LevelBuffType.WitchTime) { witchTimeLevelBuff = base.witchTimeLevelBuff; } else if (type2 == LevelBuffType.StopWorld) { witchTimeLevelBuff = base.stopWorldLevelBuff; } else { witchTimeLevelBuff = null; } bool useMaxDuration = allowRefresh; if (witchTimeLevelBuff.isActive) { if (type == LevelBuffType.WitchTime) { bool flag2 = base.witchTimeLevelBuff.Refresh(duration, side, ownerID, enteringSlow, useMaxDuration, notStartEffect); if (flag2) { Singleton <EventManager> .Instance.FireEvent(new EvtLevelBuffState(type, LevelBuffState.Switch, base.witchTimeLevelBuff.levelBuffSide, ownerID), MPEventDispatchMode.Normal); this.DestroyLevelBuffEffect(type); this.CreateLevelBuffEffect(type, ownerID, instancedAbilityID, actionLocalID); } this.SendLevelBuffResponse(!flag2 ? LevelBuffAction.SameSideExtend : LevelBuffAction.SwitchSide, type, enteringSlow, notStartEffect, ownerID, base.witchTimeLevelBuff.levelBuffSide, instancedAbilityID, actionLocalID); } else if (type == LevelBuffType.StopWorld) { } } else { if (type == LevelBuffType.WitchTime) { base.witchTimeLevelBuff.ownerID = ownerID; base.witchTimeLevelBuff.Setup(enteringSlow, duration, side, notStartEffect); } else if (type == LevelBuffType.StopWorld) { base.stopWorldLevelBuff.ownerID = ownerID; base.stopWorldLevelBuff.Setup(enteringSlow, duration, ownerID); } base.AddPlugin(witchTimeLevelBuff); witchTimeLevelBuff.isActive = true; this.CreateLevelBuffEffect(type, ownerID, instancedAbilityID, actionLocalID); this.SendLevelBuffResponse(LevelBuffAction.Add, type, enteringSlow, notStartEffect, ownerID, witchTimeLevelBuff.levelBuffSide, instancedAbilityID, actionLocalID); Singleton <EventManager> .Instance.FireEvent(new EvtLevelBuffState(type, LevelBuffState.Start, side, ownerID), MPEventDispatchMode.Normal); } }
public bool IsLevelBuffActive(LevelBuffType levelBuffType) { for (int i = 0; i < this.levelBuffs.Length; i++) { if (this.levelBuffs[i].levelBuffType == levelBuffType) { return(this.levelBuffs[i].isActive); } } return(false); }
private void SendLevelBuffResponse(LevelBuffAction action, LevelBuffType type, bool enteringSlow, bool notStartEffect, uint ownerID, LevelBuffSide side, int instancedAbilityID = 0, int actionLocalID = 0) { MPSendPacketContainer pc = Singleton <MPManager> .Instance.CreateSendPacket <Packet_Level_ResultLevelBuff>(); bool flag = enteringSlow; bool flag2 = notStartEffect; Offset <Packet_Level_ResultLevelBuff> offset = Packet_Level_ResultLevelBuff.CreatePacket_Level_ResultLevelBuff(pc.builder, action, 0, (byte)side, flag, flag2, ownerID, (byte)instancedAbilityID, (byte)actionLocalID); pc.Finish <Packet_Level_ResultLevelBuff>(offset); Singleton <MPManager> .Instance.SendReliableToOthers(0x21800001, pc); }
public void AddLevelBuffModifier(LevelBuffType levelBuffType, ActorModifier modifier) { this._levelBuffAttachedModifiers[(int)levelBuffType].Add(modifier); }
private void DestroyLevelBuffEffect(LevelBuffType type) { Singleton <EffectManager> .Instance.TrySetDestroyUniqueIndexedEffectPattern(type.ToString()); }