public MobBuffStat(MobStatValue flag) { Flag = flag; N = 0; R = 0; TM = 0; }
public void Update(long currentTime) { MobStatValue endFlag = 0; BuffPhysicalDamage.TryReset(currentTime, ref endFlag); BuffPhysicalDefense.TryReset(currentTime, ref endFlag); BuffMagicDamage.TryReset(currentTime, ref endFlag); BuffMagicDefense.TryReset(currentTime, ref endFlag); BuffAccurrency.TryReset(currentTime, ref endFlag); BuffEvasion.TryReset(currentTime, ref endFlag); BuffSpeed.TryReset(currentTime, ref endFlag); BuffStun.TryReset(currentTime, ref endFlag); BuffFreeze.TryReset(currentTime, ref endFlag); BuffPoison.TryReset(currentTime, ref endFlag); BuffSeal.TryReset(currentTime, ref endFlag); BuffDarkness.TryReset(currentTime, ref endFlag); BuffPowerUp.TryReset(currentTime, ref endFlag); BuffMagicUp.TryReset(currentTime, ref endFlag); BuffPowerGuardUp.TryReset(currentTime, ref endFlag); BuffMagicGuardUp.TryReset(currentTime, ref endFlag); BuffPhysicalImmune.TryReset(currentTime, ref endFlag); BuffMagicImmune.TryReset(currentTime, ref endFlag); BuffDoom.TryReset(currentTime, ref endFlag); BuffWeb.TryReset(currentTime, ref endFlag); BuffHardSkin.TryReset(currentTime, ref endFlag); BuffAmbush.TryReset(currentTime, ref endFlag); BuffVenom.TryReset(currentTime, ref endFlag); BuffBlind.TryReset(currentTime, ref endFlag); BuffSealSkill.TryReset(currentTime, ref endFlag); if (endFlag > 0) { MobPacket.SendMobStatsTempReset(Mob, endFlag); } }
public void TryResetByReference(int reference, ref MobStatValue flag) { if (N == 0 || R != reference) { return; } Reset(); flag |= Flag; }
public void TryReset(long currentTime, ref MobStatValue flag) { if (N == 0 || TM >= currentTime) { return; } Reset(); flag |= Flag; }
public void EncodeForRemote(ref MobStatValue flag, long currentTime, Action <MobBuffStat> func, MobStatValue specificFlag = MobStatValue.ALL) { if (!IsSet(currentTime) || !specificFlag.HasFlag(Flag)) { return; } flag |= Flag; func?.Invoke(this); }
public void EncodeForLocal(Packet pw, ref MobStatValue flag, long currentTime, MobStatValue specificFlag = MobStatValue.ALL) { if (!IsSet(currentTime) || !specificFlag.HasFlag(Flag)) { return; } flag |= Flag; pw.WriteShort(N); pw.WriteInt(R); pw.WriteShort((short)((TM - currentTime) / 100)); // Not sure what value this should be... }
public void Encode(Packet pPacket, MobStatValue pSpecificFlag = MobStatValue.ALL) { long currentTime = MasterThread.CurrentTime; int tmpBuffPos = pPacket.Position; MobStatValue endFlag = 0; pPacket.WriteUInt((uint)endFlag); BuffPhysicalDamage.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffPhysicalDefense.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffMagicDamage.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffMagicDefense.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffAccurrency.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffEvasion.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffSpeed.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffStun.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffFreeze.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffPoison.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffSeal.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffDarkness.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffPowerUp.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffMagicUp.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffPowerGuardUp.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffMagicGuardUp.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffPhysicalImmune.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffMagicImmune.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffDoom.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffWeb.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffHardSkin.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffAmbush.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffVenom.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffBlind.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); BuffSealSkill.EncodeForLocal(pPacket, ref endFlag, currentTime, pSpecificFlag); int tmpBuffPos2 = pPacket.Position; pPacket.Position = tmpBuffPos; pPacket.WriteUInt((uint)endFlag); pPacket.Position = tmpBuffPos2; }