public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false) { throw new NotSupportedException(); }
public override void ApplyPoison(Poison p) { throw new NotSupportedException(); }
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false) { //FindTarget(); }
public CharacterInfo(BinaryReader reader) { Index = reader.ReadInt32(); Name = reader.ReadString(); Level = reader.ReadByte(); Class = (MirClass) reader.ReadByte(); Gender = (MirGender) reader.ReadByte(); Hair = reader.ReadByte(); CreationIP = reader.ReadString(); CreationDate = DateTime.FromBinary(reader.ReadInt64()); Banned = reader.ReadBoolean(); BanReason = reader.ReadString(); ExpiryDate = DateTime.FromBinary(reader.ReadInt64()); LastIP = reader.ReadString(); LastDate = DateTime.FromBinary(reader.ReadInt64()); Deleted = reader.ReadBoolean(); DeleteDate = DateTime.FromBinary(reader.ReadInt64()); CurrentMapIndex = reader.ReadInt32(); CurrentLocation = new Point(reader.ReadInt32(), reader.ReadInt32()); Direction = (MirDirection)reader.ReadByte(); BindMapIndex = reader.ReadInt32(); BindLocation = new Point(reader.ReadInt32(), reader.ReadInt32()); HP = reader.ReadUInt16(); MP = reader.ReadUInt16(); Experience = reader.ReadInt64(); AMode = (AttackMode) reader.ReadByte(); PMode = (PetMode) reader.ReadByte(); if (Envir.LoadVersion > 34) { PKPoints = reader.ReadInt32(); } int count = reader.ReadInt32(); Array.Resize(ref Inventory, count); for (int i = 0; i < count; i++) { if (!reader.ReadBoolean()) continue; UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion); if (SMain.Envir.BindItem(item) && i < Inventory.Length) Inventory[i] = item; } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { if (!reader.ReadBoolean()) continue; UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion); if (SMain.Envir.BindItem(item) && i < Equipment.Length) Equipment[i] = item; } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { if (!reader.ReadBoolean()) continue; UserItem item = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion); if (SMain.Envir.BindItem(item) && i < QuestInventory.Length) QuestInventory[i] = item; } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { UserMagic magic = new UserMagic(reader); if (magic.Info == null) continue; Magics.Add(magic); } if (Envir.LoadVersion < 2) return; Thrusting = reader.ReadBoolean(); HalfMoon = reader.ReadBoolean(); CrossHalfMoon = reader.ReadBoolean(); DoubleSlash = reader.ReadBoolean(); if(Envir.LoadVersion > 46) { MentalState = reader.ReadByte(); } if (Envir.LoadVersion < 4) return; count = reader.ReadInt32(); for (int i = 0; i < count; i++) Pets.Add(new PetInfo(reader)); if (Envir.LoadVersion < 5) return; AllowGroup = reader.ReadBoolean(); if (Envir.LoadVersion < 12) return; if (Envir.LoadVersion == 12) count = reader.ReadInt32(); for (int i = 0; i < Globals.FlagIndexCount; i++) Flags[i] = reader.ReadBoolean(); if (Envir.LoadVersion > 27) GuildIndex = reader.ReadInt32(); if (Envir.LoadVersion > 30) AllowTrade = reader.ReadBoolean(); if (Envir.LoadVersion > 33) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) { QuestProgressInfo quest = new QuestProgressInfo(reader); if (SMain.Envir.BindQuest(quest)) CurrentQuests.Add(quest); } } if(Envir.LoadVersion > 42) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) { Buff buff = new Buff(reader); if (Envir.LoadVersion == 51) { buff.Caster = SMain.Envir.GetObject(reader.ReadUInt32()); } Buffs.Add(buff); } } if(Envir.LoadVersion > 43) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) Mail.Add(new MailInfo(reader, Envir.LoadVersion, Envir.LoadCustomVersion)); } //IntelligentCreature if (Envir.LoadVersion > 44) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) { UserIntelligentCreature creature = new UserIntelligentCreature(reader); if (creature.Info == null) continue; IntelligentCreatures.Add(creature); } if (Envir.LoadVersion == 45) { var old1 = (IntelligentCreatureType)reader.ReadByte(); var old2 = reader.ReadBoolean(); } PearlCount = reader.ReadInt32(); } if (Envir.LoadVersion > 49) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) CompletedQuests.Add(reader.ReadInt32()); } if (Envir.LoadVersion > 50 && Envir.LoadVersion < 54) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) { Poison poison = new Poison(reader); if (Envir.LoadVersion == 51) { poison.Owner = SMain.Envir.GetObject(reader.ReadUInt32()); } Poisons.Add(poison); } } if (Envir.LoadVersion > 56) { if (reader.ReadBoolean()) CurrentRefine = new UserItem(reader, Envir.LoadVersion, Envir.LoadCustomVersion); if (CurrentRefine != null) SMain.Envir.BindItem(CurrentRefine); CollectTime = reader.ReadInt64(); CollectTime += SMain.Envir.Time; } if (Envir.LoadVersion > 58) { count = reader.ReadInt32(); for (int i = 0; i < count; i++) Friends.Add(new FriendInfo(reader)); } if (Envir.LoadVersion > 59) { Married = reader.ReadInt32(); MarriedDate = DateTime.FromBinary(reader.ReadInt64()); Mentor = reader.ReadInt32(); MentorDate = DateTime.FromBinary(reader.ReadInt64()); isMentor = reader.ReadBoolean(); MentorExp = reader.ReadInt64(); } }
public abstract void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false);
public abstract void ApplyPoison(Poison p);
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false) { if ((Caster != null) || (!NoResist)) if (((Caster.Race != ObjectType.Player) || Settings.PvpCanResistPoison) && (Envir.Random.Next(Settings.PoisonResistWeight) < PoisonResist)) return; if (p.Owner != null && p.Owner.Race == ObjectType.Player && Envir.Time > BrownTime && PKPoints < 200) p.Owner.BrownTime = Envir.Time + Settings.Minute; if ((p.PType == PoisonType.Green) || (p.PType == PoisonType.Red)) p.Duration = Math.Max(0, p.Duration - PoisonRecovery); if (p.Duration == 0) return; for (int i = 0; i < PoisonList.Count; i++) { if (PoisonList[i].PType != p.PType) continue; if ((PoisonList[i].PType == PoisonType.Green) && (PoisonList[i].Value > p.Value)) return;//cant cast weak poison to cancel out strong poison if ((PoisonList[i].PType != PoisonType.Green) && ((PoisonList[i].Duration - PoisonList[i].Time) > p.Duration)) return;//cant cast 1 second poison to make a 1minute poison go away! ReceiveChat("You have been poisoned.", ChatType.System); PoisonList[i] = p; return; } ReceiveChat("You have been poisoned.", ChatType.System); PoisonList.Add(p); }
public override void ApplyPoison(Poison p) { if (p.Owner != null && p.Owner.IsAttackTarget(this)) Target = p.Owner; if (Master != null && p.Owner != null && p.Owner.Race == ObjectType.Player && p.Owner != Master) { if (Envir.Time > Master.BrownTime && Master.PKPoints < 200) p.Owner.BrownTime = Envir.Time + Settings.Minute; } for (int i = 0; i < PoisonList.Count; i++) { if (PoisonList[i].PType != p.PType) continue; PoisonList[i] = p; return; } PoisonList.Add(p); }
private bool ProcessDelayedExplosion(Poison poison) { if (Dead) return false; if (ExplosionInflictedStage == 0) { Enqueue(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 0 }); Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 0 }); return true; } if (ExplosionInflictedStage == 1) { if (Envir.Time > ExplosionInflictedTime) ExplosionInflictedTime = poison.TickTime + 3000; Enqueue(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 1 }); Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 1 }); return true; } if (ExplosionInflictedStage == 2) { Enqueue(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 2 }); Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 2 }); if (poison.Owner != null) { switch (poison.Owner.Race) { case ObjectType.Player: Attacked((PlayerObject)poison.Owner, poison.Value, DefenceType.MAC, false); break; case ObjectType.Monster://this is in place so it could be used by mobs if one day someone chooses to Attacked((MonsterObject)poison.Owner, poison.Value, DefenceType.MAC); break; } LastHitter = poison.Owner; } return false; } return false; }
public override void ApplyPoison(Poison p) { if (p.Owner != null && p.Owner.Race == ObjectType.Player && Envir.Time > BrownTime && PKPoints < 200) p.Owner.BrownTime = Envir.Time + Settings.Minute; ReceiveChat("You have been poisoned.", ChatType.System); for (int i = 0; i < PoisonList.Count; i++) { if (PoisonList[i].PType != p.PType) continue; PoisonList[i] = p; return; } PoisonList.Add(p); }
public abstract void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false, bool ignoreDefence = true);
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false, bool ignoreDefence = true) { throw new NotSupportedException(); }
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false, bool ignoreDefence = true) { //FindTarget(); }
private bool ProcessDelayedExplosion(Poison poison) { if (Dead) return false; if (ExplosionInflictedStage == 0) { Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 0 }); return true; } if (ExplosionInflictedStage == 1) { if (Envir.Time > ExplosionInflictedTime) ExplosionInflictedTime = poison.TickTime + 3000; Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 1 }); return true; } if (ExplosionInflictedStage == 2) { Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion, EffectType = 2 }); if (poison.Owner != null) { switch (poison.Owner.Race) { case ObjectType.Player: PlayerObject caster = (PlayerObject)poison.Owner; DelayedAction action = new DelayedAction(DelayedType.Magic, Envir.Time, poison.Owner, caster.GetMagic(Spell.DelayedExplosion), poison.Value, this.CurrentLocation); CurrentMap.ActionList.Add(action); //Attacked((PlayerObject)poison.Owner, poison.Value, DefenceType.MAC, false); break; case ObjectType.Monster://this is in place so it could be used by mobs if one day someone chooses to Attacked((MonsterObject)poison.Owner, poison.Value, DefenceType.MAC); break; } LastHitter = poison.Owner; } return false; } return false; }
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false, bool ignoreDefence = true) { if ((Caster != null) && (!NoResist)) if (((Caster.Race != ObjectType.Player) || Settings.PvpCanResistPoison) && (Envir.Random.Next(Settings.PoisonResistWeight) < PoisonResist)) return; if (!ignoreDefence && (p.PType == PoisonType.Green)) { int armour = GetAttackPower(MinMAC, MaxMAC); if (p.Value > armour) p.PType = PoisonType.None; else p.Value -= armour; } if (p.Owner != null && p.Owner.Race == ObjectType.Player && Envir.Time > BrownTime && PKPoints < 200) p.Owner.BrownTime = Envir.Time + Settings.Minute; if ((p.PType == PoisonType.Green) || (p.PType == PoisonType.Red)) p.Duration = Math.Max(0, p.Duration - PoisonRecovery); if (p.Duration == 0) return; for (int i = 0; i < PoisonList.Count; i++) { if (PoisonList[i].PType != p.PType) continue; if ((PoisonList[i].PType == PoisonType.Green) && (PoisonList[i].Value > p.Value)) return;//cant cast weak poison to cancel out strong poison if ((PoisonList[i].PType != PoisonType.Green) && ((PoisonList[i].Duration - PoisonList[i].Time) > p.Duration)) return;//cant cast 1 second poison to make a 1minute poison go away! if ((PoisonList[i].PType == PoisonType.Frozen) || (PoisonList[i].PType == PoisonType.Slow) || (PoisonList[i].PType == PoisonType.Paralysis) || (PoisonList[i].PType == PoisonType.LRParalysis)) return;//prevents mobs from being perma frozen/slowed if (p.PType == PoisonType.DelayedExplosion) return; ReceiveChat("You have been poisoned.", ChatType.System2); PoisonList[i] = p; return; } if (p.PType == PoisonType.DelayedExplosion) { ExplosionInflictedTime = Envir.Time + 4000; Enqueue(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion }); Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion }); ReceiveChat("You are a walking explosive.", ChatType.System); } else ReceiveChat("You have been poisoned.", ChatType.System2); PoisonList.Add(p); }
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false) { if (p.Owner != null && p.Owner.IsAttackTarget(this)) Target = p.Owner; if (Master != null && p.Owner != null && p.Owner.Race == ObjectType.Player && p.Owner != Master) { if (Envir.Time > Master.BrownTime && Master.PKPoints < 200) p.Owner.BrownTime = Envir.Time + Settings.Minute; } for (int i = 0; i < PoisonList.Count; i++) { if (PoisonList[i].PType != p.PType) continue; if ((PoisonList[i].PType == PoisonType.Green) && (PoisonList[i].Value > p.Value)) return;//cant cast weak poison to cancel out strong poison if ((PoisonList[i].PType != PoisonType.Green) && ((PoisonList[i].Duration - PoisonList[i].Time) > p.Duration)) return;//cant cast 1 second poison to make a 1minute poison go away! if (p.PType == PoisonType.DelayedExplosion) return; if ((PoisonList[i].PType == PoisonType.Frozen) || (PoisonList[i].PType == PoisonType.Slow) || (PoisonList[i].PType == PoisonType.Paralysis)) return;//prevents mobs from being perma frozen/slowed PoisonList[i] = p; return; } if (p.PType == PoisonType.DelayedExplosion) { ExplosionInflictedTime = Envir.Time + 4000; Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion }); } PoisonList.Add(p); }