public void Add(Mobile m) { PartyMemberInfo mi = this[m]; if (mi == null) { this.m_Members.Add(new PartyMemberInfo(m)); m.Party = this; Packet memberList = Packet.Acquire(new PartyMemberList(this)); Packet attrs = Packet.Acquire(new MobileAttributesN(m)); for (int i = 0; i < this.m_Members.Count; ++i) { Mobile f = ((PartyMemberInfo)this.m_Members[i]).Mobile; f.Send(memberList); if (f != m) { f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m)); f.Send(attrs); m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f)); m.Send(new MobileAttributesN(f)); } } Packet.Release(memberList); Packet.Release(attrs); } }
protected override void OnTick() { Party p = Party.Get(this.m_Mobile); if (p == null) { return; } this.m_Mobile.SendLocalizedMessage(1005437); // You have rejoined the party. this.m_Mobile.Send(new PartyMemberList(p)); Packet message = Packet.Acquire(new MessageLocalizedAffix(Serial.MinusOne, -1, MessageType.Label, 0x3B2, 3, 1008087, "", AffixType.Prepend | AffixType.System, this.m_Mobile.Name, "")); Packet attrs = Packet.Acquire(new MobileAttributesN(this.m_Mobile)); foreach (PartyMemberInfo mi in p.Members) { Mobile m = mi.Mobile; if (m != this.m_Mobile) { m.Send(message); m.Send(new MobileStatusCompact(this.m_Mobile.CanBeRenamedBy(m), this.m_Mobile)); m.Send(attrs); this.m_Mobile.Send(new MobileStatusCompact(m.CanBeRenamedBy(this.m_Mobile), m)); this.m_Mobile.Send(new MobileAttributesN(m)); } } Packet.Release(message); Packet.Release(attrs); }
public void Add(Mobile m) { var mi = this[m]; if (mi != null) { return; } var ns = m.NetState; Members.Add(new PartyMemberInfo(m)); m.Party = this; Span <byte> memberList = stackalloc byte[PartyPackets.GetPartyMemberListPacketLength(this)].InitializePacket(); Span <byte> attrsPacket = stackalloc byte[OutgoingMobilePackets.MobileAttributesPacketLength].InitializePacket(); for (var i = 0; i < Members.Count; ++i) { var f = Members[i].Mobile; PartyPackets.CreatePartyMemberList(memberList, this); f.NetState?.Send(memberList); if (f != m) { f.NetState.SendMobileStatusCompact(m, m.CanBeRenamedBy(f)); OutgoingMobilePackets.CreateMobileAttributes(attrsPacket, m, true); f.NetState?.Send(attrsPacket); ns.SendMobileStatusCompact(f, f.CanBeRenamedBy(m)); ns.SendMobileAttributes(f, true); } } }
public void OnStatsQuery(Mobile beholder, Mobile beheld) { if (beholder != beheld && Contains(beholder) && beholder.Map == beheld.Map && Utility.InUpdateRange(beholder, beheld)) { if (!beholder.CanSee(beheld)) { beholder.Send(new MobileStatusCompact(beheld.CanBeRenamedBy(beholder), beheld)); } beholder.Send(new MobileAttributesN(beheld)); } }
public void OnStatsQuery(Mobile beholder, Mobile beheld) { if (beholder != beheld && Contains(beholder) && beholder.Map == beheld.Map && Utility.InUpdateRange(beholder.Location, beheld.Location)) { if (!beholder.CanSee(beheld)) { beholder.NetState.SendMobileStatusCompact(beheld, beheld.CanBeRenamedBy(beholder)); } beholder.NetState.SendMobileAttributes(beheld, true); } }
// Methods public MobileStatusExtended(Mobile m) : base(17) { string text1 = m.Name; if (text1 == null) { text1 = ""; } base.EnsureCapacity(88); this.m_Stream.Write(Serial.op_Implicit(m.Serial)); this.m_Stream.WriteAsciiFixed(text1, 30); this.m_Stream.Write(((short)m.Hits)); this.m_Stream.Write(((short)m.HitsMax)); this.m_Stream.Write(m.CanBeRenamedBy(m)); this.m_Stream.Write(((byte)(MobileStatus.SendAosInfo ? 4 : 3))); this.m_Stream.Write(m.Female); this.m_Stream.Write(((short)m.Str)); this.m_Stream.Write(((short)m.Dex)); this.m_Stream.Write(((short)m.Int)); this.m_Stream.Write(((short)m.Stam)); this.m_Stream.Write(((short)m.StamMax)); this.m_Stream.Write(((short)m.Mana)); this.m_Stream.Write(((short)m.ManaMax)); this.m_Stream.Write(m.TotalGold); this.m_Stream.Write(((short)(Core.AOS ? m.PhysicalResistance : ((int)(m.ArmorRating + 0.5))))); this.m_Stream.Write(((short)(Mobile.BodyWeight + m.TotalWeight))); this.m_Stream.Write(((short)m.StatCap)); this.m_Stream.Write(((byte)m.Followers)); this.m_Stream.Write(((byte)m.FollowersMax)); if (!MobileStatus.SendAosInfo) { return; } this.m_Stream.Write(((short)m.FireResistance)); this.m_Stream.Write(((short)m.ColdResistance)); this.m_Stream.Write(((short)m.PoisonResistance)); this.m_Stream.Write(((short)m.EnergyResistance)); this.m_Stream.Write(((short)m.Luck)); IWeapon weapon1 = m.Weapon; int num1 = 0; int num2 = 0; if (weapon1 != null) { weapon1.GetStatusDamage(m, out num1, out num2); } this.m_Stream.Write(((short)num1)); this.m_Stream.Write(((short)num2)); this.m_Stream.Write(m.TithingPoints); }
public void Add(Mobile m) { PartyMemberInfo mi = this[m]; if (mi == null) { this.m_Members.Add(new PartyMemberInfo(m)); m.Party = this; Packet memberList = Packet.Acquire(new PartyMemberList(this)); Packet attrs = Packet.Acquire(new MobileAttributesN(m)); for (int i = 0; i < this.m_Members.Count; ++i) { Mobile f = ((PartyMemberInfo)this.m_Members[i]).Mobile; f.Send(memberList); if (f != m) { #region Enhance Client f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m)); f.Send(attrs); f.Send(new KRDisplayWaypoint(m, WaypointType.PartyMember, false, 1062613, m.Name)); m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f)); m.Send(new MobileAttributesN(f)); m.Send(new KRDisplayWaypoint(f, WaypointType.PartyMember, false, 1062613, f.Name)); /* * for (int i2 = 0; i2 < m_Members.Count; ++i2) * { * Mobile f2 = ((PartyMemberInfo)m_Members[i2]).Mobile; * * if (f2.NetState != null && f2.NetState.IsKRClient) * { * f2.NetState.Send(new DisplayWaypoint(f.Serial, f.X, f.Y, f.Z, f.Map.MapID, WaypointType.PartyMember, f.Name)); * } * } */ #endregion } } Packet.Release(memberList); Packet.Release(attrs); } }
private static void EventSink_RenameRequest(Mobile from, Mobile targ, string name) { if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from)) { name = name.Trim(); if (NameVerification.Validate( name, 1, 16, true, false, true, 0, NameVerification.Empty, NameVerification.StartDisallowed, Core.ML ? NameVerification.Disallowed : Array.Empty <string>() )) { if (Core.ML) { var disallowed = ProfanityProtection.Disallowed; for (var i = 0; i < disallowed.Length; i++) { if (name.IndexOfOrdinal(disallowed[i]) != -1) { from.SendLocalizedMessage(1072622); // That name isn't very polite. return; } } from.SendLocalizedMessage( 1072623, $"{targ.Name}\t{name}" ); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~. } targ.Name = name; } else { from.SendMessage("That name is unacceptable."); } } }
private static void EventSink_RenameRequest(Mobile from, Mobile targ, string name) { if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from)) { name = name.Trim(); if (NameVerification.Validate(name, 1, 16, true, false, true, 0, NameVerification.Empty, NameVerification.StartDisallowed, new string[] { })) { targ.Name = name; } else { from.SendMessage("That name is unacceptable."); } } }
private static void EventSink_RenameRequest(RenameRequestEventArgs e) { Mobile from = e.From; Mobile targ = e.Target; string name = e.Name; if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from)) { name = name.Trim(); var numExceptions = 0; var exceptions = NameVerification.Empty; if (targ is BaseCreature) { exceptions = new char[] { ' ' }; numExceptions = 5; } if (NameVerification.Validate(name, 1, 16, true, false, true, numExceptions, exceptions, NameVerification.StartDisallowed, (Core.ML ? NameVerification.Disallowed : new string[] { }))) { if (Core.ML) { string[] disallowed = ProfanityProtection.Disallowed; for (int i = 0; i < disallowed.Length; i++) { if (name.IndexOf(disallowed[i]) != -1) { from.SendLocalizedMessage(1072622); // That name isn't very polite. return; } } from.SendLocalizedMessage(1072623, String.Format("{0}\t{1}", targ.Name, name)); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~. } targ.Name = name; } else { from.SendMessage("That name is unacceptable."); } } }
public void Add(Mobile m) { PartyMemberInfo mi = this[m]; if (mi == null) { m_Members.Add(new PartyMemberInfo(m)); m.Party = this; Packet memberList = Packet.Acquire(new PartyMemberList(this)); Packet attrs = Packet.Acquire(new MobileAttributesN(m)); for (int i = 0; i < m_Members.Count; ++i) { Mobile f = ((PartyMemberInfo)m_Members[i]).Mobile; f.Send(memberList); if (f != m) { f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m)); f.Send(attrs); if (f.NetState != null && f.NetState.IsEnhancedClient) { Waypoints.Create(f, m, WaypointType.PartyMember); } m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f)); m.Send(new MobileAttributesN(f)); if (m.NetState != null && m.NetState.IsEnhancedClient) { Waypoints.Create(m, f, WaypointType.PartyMember); } } } Packet.Release(memberList); Packet.Release(attrs); } }
private static void EventSink_RenameRequest(RenameRequestEventArgs e) { Mobile from = e.From; Mobile targ = e.Target; string name = e.Name; if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from)) { name = name.Trim(); if (NameVerification.Validate(name, 1, 16, true, false, true, 0, NameVerification.Empty)) { targ.Name = name; } else { from.SendMessage("That name is unacceptable."); } } }
public void Add(Mobile m) { PartyMemberInfo mi = this[m]; if (mi == null) { m_Members.Add(new PartyMemberInfo(m)); m.Party = this; Packet memberList = Packet.Acquire(new PartyMemberList(this)); Packet attrs = Packet.Acquire(new MobileAttributesN(m)); for (int i = 0; i < m_Members.Count; ++i) { Mobile f = ((PartyMemberInfo)m_Members[i]).Mobile; f.Send(memberList); if (f != m) { f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m)); f.Send(attrs); m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f)); m.Send(new MobileAttributesN(f)); #region GeNova: KR Support for (int i2 = 0; i2 < m_Members.Count; ++i2) { Mobile f2 = ((PartyMemberInfo)m_Members[i2]).Mobile; if (f2.NetState != null && f2.NetState.IsKRClient) { f2.NetState.Send(new DisplayWaypoint(f.Serial, f.X, f.Y, f.Z, f.Map.MapID, 2, f.Name)); } } #endregion } } Packet.Release(memberList); Packet.Release(attrs); } }
public void Add(Mobile m) { PartyMemberInfo mi = this[m]; if (mi == null) { m_Members.Add(new PartyMemberInfo(m)); m.Party = this; Packet memberList = new PartyMemberList(this); Packet attrs = new MobileAttributesN(m); for (int i = 0; i < m_Members.Count; ++i) { Mobile f = ((PartyMemberInfo)m_Members[i]).Mobile; f.Send(memberList); if (!f.HasGump(typeof(PartyRadarGump))) { PartyRadarGump pr = new PartyRadarGump(f, m); f.SendGump(pr); // Custom Radar Gump GumpTimer gumpTimer = new GumpTimer(f, m); gumpTimer.Start(); GumpTimer gumpTimerT = new GumpTimer(m, f); gumpTimerT.Start(); } if (f != m) { f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m)); f.Send(attrs); m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f)); m.Send(new MobileAttributesN(f)); } } } }
protected override void OnTick() { Party p = Get(m_Mobile); if (p == null) { return; } m_Mobile.SendLocalizedMessage(1005437); // You have rejoined the party. m_Mobile.Send(new PartyMemberList(p)); Packet message = Packet.Acquire(new MessageLocalizedAffix(Serial.MinusOne, -1, MessageType.Label, 0x3B2, 3, 1008087, "", AffixType.Prepend | AffixType.System, m_Mobile.Name, "")); Packet attrs = Packet.Acquire(new MobileAttributesN(m_Mobile)); for (var index = 0; index < p.Members.Count; index++) { PartyMemberInfo mi = p.Members[index]; Mobile m = mi.Mobile; if (m != m_Mobile) { m.Send(message); m.Send(new MobileStatusCompact(m_Mobile.CanBeRenamedBy(m), m_Mobile)); m.Send(attrs); m_Mobile.Send(new MobileStatusCompact(m.CanBeRenamedBy(m_Mobile), m)); m_Mobile.Send(new MobileAttributesN(m)); if (m_Mobile.NetState != null && m_Mobile.NetState.IsEnhancedClient) { Waypoints.Create(m_Mobile, m, WaypointType.PartyMember); } } } Packet.Release(message); Packet.Release(attrs); }
private static void EventSink_RenameRequest(RenameRequestEventArgs e) { Mobile from = e.From; Mobile targ = e.Target; string name = e.Name; if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from)) { name = name.Trim(); if (NameVerification.Validate(name, 1, 16, true, false, true, 0, NameVerification.Empty, NameVerification.StartDisallowed, (/*Core.ML ?*/ NameVerification.Disallowed /*: new string[]{}*/)) == NameResultMessage.Allowed) { // if( Core.ML ) // { string[] disallowed = ProfanityProtection.Disallowed; for (int i = 0; i < disallowed.Length; i++) { if (name.IndexOf(disallowed[i]) != -1) { from.SendLocalizedMessage(1072622); // That name isn't very polite. return; } } from.SendLocalizedMessage(1072623, String.Format("{0}\t{1}", targ.Name, name)); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~. // } targ.Name = name; } else { from.SendMessage("That name is unacceptable."); } } }
private static void EventSink_RenameRequest(RenameRequestEventArgs e) { Mobile m = e.From; Mobile targ = e.Target; string name = e.Name; if (!m.CanSee(targ) || !m.InRange(targ, 12) || !targ.CanBeRenamedBy(m)) { return; } name = name.Trim(); if (m.AccessLevel < AccessLevel.GameMaster) { if (ProfanityProtection.DisallowedAnywhere.Any(badWord => StringSearchFlags.Contains.Execute(name, badWord, true))) { m.SendMessage("That name isn't very polite."); return; } var result = NameVerification.ValidatePlayerName( name, 1, 16, true, false, true, 1, NameVerification.SpaceDashPeriodQuote); if (result != NameResultMessage.Allowed && result != NameResultMessage.AlreadyExists) { m.SendMessage("That name isn't acceptable."); return; } } targ.Name = name; // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~. m.SendLocalizedMessage(1072623, String.Format("{0}\t{1}", targ.Name, name)); }
public MobileStatus(Mobile beholder, Mobile beheld, NetState ns) : base(0x11) { var name = beheld.Name ?? ""; int type; if (beholder != beheld) { type = 0; EnsureCapacity(43); } else if (Core.HS && ns?.ExtendedStatus == true) { type = 6; EnsureCapacity(121); } else if (Core.ML && ns?.SupportsExpansion(Expansion.ML) == true) { type = 5; EnsureCapacity(91); } else { type = Core.AOS ? 4 : 3; EnsureCapacity(88); } Stream.Write(beheld.Serial); Stream.WriteAsciiFixed(name, 30); if (beholder == beheld) { WriteAttr(beheld.Hits, beheld.HitsMax); } else { WriteAttrNorm(beheld.Hits, beheld.HitsMax); } Stream.Write(beheld.CanBeRenamedBy(beholder)); Stream.Write((byte)type); if (type <= 0) { return; } Stream.Write(beheld.Female); Stream.Write((short)beheld.Str); Stream.Write((short)beheld.Dex); Stream.Write((short)beheld.Int); WriteAttr(beheld.Stam, beheld.StamMax); WriteAttr(beheld.Mana, beheld.ManaMax); Stream.Write(beheld.TotalGold); Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5))); Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight)); if (type >= 5) { Stream.Write((short)beheld.MaxWeight); Stream.Write((byte)(beheld.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } Stream.Write((short)beheld.StatCap); Stream.Write((byte)beheld.Followers); Stream.Write((byte)beheld.FollowersMax); if (type >= 4) { Stream.Write((short)beheld.FireResistance); // Fire Stream.Write((short)beheld.ColdResistance); // Cold Stream.Write((short)beheld.PoisonResistance); // Poison Stream.Write((short)beheld.EnergyResistance); // Energy Stream.Write((short)beheld.Luck); // Luck var weapon = beheld.Weapon; if (weapon != null) { weapon.GetStatusDamage(beheld, out var min, out var max); Stream.Write((short)min); // Damage min Stream.Write((short)max); // Damage max } else { Stream.Write((short)0); // Damage min Stream.Write((short)0); // Damage max } Stream.Write(beheld.TithingPoints); } if (type >= 6) { for (var i = 0; i < 15; ++i) { Stream.Write((short)beheld.GetAOSStatus(i)); } } }
public MobileStatusExtended(Mobile m, NetState ns) : base(0x11) { var name = m.Name ?? ""; int type; if (Core.HS && ns?.ExtendedStatus == true) { type = 6; EnsureCapacity(121); } else if (Core.ML && ns?.SupportsExpansion(Expansion.ML) == true) { type = 5; EnsureCapacity(91); } else { type = Core.AOS ? 4 : 3; EnsureCapacity(88); } Stream.Write(m.Serial); Stream.WriteAsciiFixed(name, 30); Stream.Write((short)m.Hits); Stream.Write((short)m.HitsMax); Stream.Write(m.CanBeRenamedBy(m)); Stream.Write((byte)type); Stream.Write(m.Female); Stream.Write((short)m.Str); Stream.Write((short)m.Dex); Stream.Write((short)m.Int); Stream.Write((short)m.Stam); Stream.Write((short)m.StamMax); Stream.Write((short)m.Mana); Stream.Write((short)m.ManaMax); Stream.Write(m.TotalGold); Stream.Write((short)(Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5))); Stream.Write((short)(Mobile.BodyWeight + m.TotalWeight)); if (type >= 5) { Stream.Write((short)m.MaxWeight); Stream.Write((byte)(m.Race?.RaceID + 1 ?? 0)); // Would be 0x00 if it's a non-ML enabled account but... } Stream.Write((short)m.StatCap); Stream.Write((byte)m.Followers); Stream.Write((byte)m.FollowersMax); if (type >= 4) { Stream.Write((short)m.FireResistance); // Fire Stream.Write((short)m.ColdResistance); // Cold Stream.Write((short)m.PoisonResistance); // Poison Stream.Write((short)m.EnergyResistance); // Energy Stream.Write((short)m.Luck); // Luck var weapon = m.Weapon; if (weapon != null) { weapon.GetStatusDamage(m, out var min, out var max); Stream.Write((short)min); // Damage min Stream.Write((short)max); // Damage max } else { Stream.Write((short)0); // Damage min Stream.Write((short)0); // Damage max } Stream.Write(m.TithingPoints); } if (type >= 6) { for (var i = 0; i < 15; ++i) { Stream.Write((short)m.GetAOSStatus(i)); } } }
public MobileStatusExtended( Mobile m ) : base( 0x11 ) { string name = m.Name; if ( name == null ) name = ""; EnsureCapacity( 88 ); m_Stream.Write( (int) m.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); m_Stream.Write( (short) m.Hits ); m_Stream.Write( (short) m.HitsMax ); m_Stream.Write( m.CanBeRenamedBy( m ) ); m_Stream.Write( (byte) 3 ); // Expantions Type m_Stream.Write( m.Female ); m_Stream.Write( (short) m.Str ); m_Stream.Write( (short) m.Dex ); m_Stream.Write( (short) m.Int ); m_Stream.Write( (short) m.Stam ); m_Stream.Write( (short) m.StamMax ); m_Stream.Write( (short) m.Mana ); m_Stream.Write( (short) m.ManaMax ); m_Stream.Write( (int) m.TotalGold ); m_Stream.Write( (short) (int)(m.ArmorRating + 0.5) ); m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) ); m_Stream.Write( (short) m.StatCap ); m_Stream.Write( (byte) m.Followers ); m_Stream.Write( (byte) m.FollowersMax ); }
public MobileStatus(Mobile beholder, Mobile beheld, NetState ns) : base(0x11) { string name = beheld.Name; if (name == null) { name = ""; } int type; if (beholder != beheld) { type = 0; EnsureCapacity(43); } else if (Core.HS && ns != null && ns.ExtendedStatus) { type = 6; EnsureCapacity(121); } else if (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML)) { type = 5; EnsureCapacity(91); } else { type = Core.AOS ? 4 : 3; EnsureCapacity(88); } m_Stream.Write(beheld.Serial); m_Stream.WriteAsciiFixed(name, 30); if (beholder == beheld) { WriteAttr(beheld.Hits, beheld.HitsMax); } else { WriteAttrNorm(beheld.Hits, beheld.HitsMax); } m_Stream.Write(beheld.CanBeRenamedBy(beholder)); m_Stream.Write((byte)type); if (type > 0) { m_Stream.Write(beheld.Female); m_Stream.Write((short)beheld.Str); m_Stream.Write((short)beheld.Dex); m_Stream.Write((short)beheld.Int); WriteAttr(beheld.Stam, beheld.StamMax); WriteAttr(beheld.Mana, beheld.ManaMax); m_Stream.Write(beheld.TotalGold); m_Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5))); m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight)); if (type >= 5) { m_Stream.Write((short)beheld.MaxWeight); m_Stream.Write((byte)(beheld.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write((short)beheld.StatCap); m_Stream.Write((byte)beheld.Followers); m_Stream.Write((byte)beheld.FollowersMax); if (type >= 4) { m_Stream.Write((short)beheld.FireResistance); // Fire m_Stream.Write((short)beheld.ColdResistance); // Cold m_Stream.Write((short)beheld.PoisonResistance); // Poison m_Stream.Write((short)beheld.EnergyResistance); // Energy m_Stream.Write((short)beheld.Luck); // Luck IWeapon weapon = beheld.Weapon; int min = 0, max = 0; if (weapon != null) { weapon.GetStatusDamage(beheld, out min, out max); } m_Stream.Write((short)min); // Damage min m_Stream.Write((short)max); // Damage max m_Stream.Write(beheld.TithingPoints); } if (type >= 6) { for (int i = 0; i < 15; ++i) { m_Stream.Write((short)beheld.GetAOSStatus(i)); } } } }
public MobileStatusExtended(Mobile m) : base(0x11) { string name = m.Name; if (name == null) name = ""; bool sendMaxWeight = (Core.ML && m.NetState != null && m.NetState.SupportsExpansion(Expansion.ML)); this.EnsureCapacity(sendMaxWeight ? 91 : 88); m_Stream.Write((int)m.Serial); m_Stream.WriteAsciiFixed(name, 30); m_Stream.Write((short)m.Hits); m_Stream.Write((short)m.HitsMax); m_Stream.Write(m.CanBeRenamedBy(m)); m_Stream.Write((byte)(sendMaxWeight ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type m_Stream.Write(m.Female); m_Stream.Write((short)m.Str); m_Stream.Write((short)m.Dex); m_Stream.Write((short)m.Int); m_Stream.Write((short)m.Stam); m_Stream.Write((short)m.StamMax); m_Stream.Write((short)m.Mana); m_Stream.Write((short)m.ManaMax); m_Stream.Write((int)m.TotalGold); //m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) ); m_Stream.Write((short)((int)(m.ArmorRating + 0.5))); m_Stream.Write((short)(Mobile.BodyWeight + m.TotalWeight)); if (sendMaxWeight) { //SMD: we're never ML, so we shouldn't need this! // m_Stream.Write( (short)m.MaxWeight ); // m_Stream.Write( (byte)(m.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write((short)m.StatCap); m_Stream.Write((byte)m.Followers); m_Stream.Write((byte)m.FollowersMax); if (Core.AOS) { //SMD: we're never AOS, so we shouldn't need this! // m_Stream.Write( (short) m.FireResistance ); // Fire // m_Stream.Write( (short) m.ColdResistance ); // Cold // m_Stream.Write( (short) m.PoisonResistance ); // Poison // m_Stream.Write( (short) m.EnergyResistance ); // Energy // m_Stream.Write( (short) m.Luck ); // Luck // // IWeapon weapon = m.Weapon; // // int min = 0, max = 0; // // if ( weapon != null ) // weapon.GetStatusDamage( m, out min, out max ); // // m_Stream.Write( (short) min ); // Damage min // m_Stream.Write( (short) max ); // Damage max // // m_Stream.Write( (int) m.TithingPoints ); } }
public MobileStatusExtended( Mobile m, NetState ns ) : base(0x11) { string name = m.Name; if ( name == null ) name = ""; int type; if ( Core.HS && ns != null && ns.ExtendedStatus ) { type = 6; EnsureCapacity( 121 ); } else if ( Core.ML && ns != null && ns.SupportsExpansion( Expansion.ML ) ) { type = 5; EnsureCapacity( 91 ); } else { type = Core.AOS ? 4 : 3; EnsureCapacity( 88 ); } m_Stream.Write( (int) m.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); m_Stream.Write( (short) m.Hits ); m_Stream.Write( (short) m.HitsMax ); m_Stream.Write( m.CanBeRenamedBy( m ) ); m_Stream.Write( (byte) type ); m_Stream.Write( m.Female ); m_Stream.Write( (short) m.Str ); m_Stream.Write( (short) m.Dex ); m_Stream.Write( (short) m.Int ); m_Stream.Write( (short) m.Stam ); m_Stream.Write( (short) m.StamMax ); m_Stream.Write( (short) m.Mana ); m_Stream.Write( (short) m.ManaMax ); m_Stream.Write( (int) m.TotalGold ); m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) ); m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) ); if ( type >= 5 ) { m_Stream.Write( (short)m.MaxWeight ); m_Stream.Write( (byte)(m.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write( (short) m.StatCap ); m_Stream.Write( (byte) m.Followers ); m_Stream.Write( (byte) m.FollowersMax ); if ( type >= 4 ) { m_Stream.Write( (short) m.FireResistance ); // Fire m_Stream.Write( (short) m.ColdResistance ); // Cold m_Stream.Write( (short) m.PoisonResistance ); // Poison m_Stream.Write( (short) m.EnergyResistance ); // Energy m_Stream.Write( (short) m.Luck ); // Luck IWeapon weapon = m.Weapon; int min = 0, max = 0; if ( weapon != null ) weapon.GetStatusDamage( m, out min, out max ); m_Stream.Write( (short) min ); // Damage min m_Stream.Write( (short) max ); // Damage max m_Stream.Write( (int) m.TithingPoints ); } if ( type >= 6 ) { for ( int i = 0; i < 15; ++i ) m_Stream.Write( (short) m.GetAOSStatus( i ) ); } }
public void Add(Mobile m) { PartyMemberInfo mi = this[m]; if (mi == null) { this.m_Members.Add(new PartyMemberInfo(m)); m.Party = this; Packet memberList = Packet.Acquire(new PartyMemberList(this)); Packet attrs = Packet.Acquire(new MobileAttributesN(m)); for (int i = 0; i < this.m_Members.Count; ++i) { Mobile f = ((PartyMemberInfo)this.m_Members[i]).Mobile; f.Send(memberList); if (f != m) { #region Enhance Client f.Send(new MobileStatusCompact(m.CanBeRenamedBy(f), m)); f.Send(attrs); f.Send(new KRDisplayWaypoint(m, WaypointType.PartyMember, false, 1062613, m.Name)); m.Send(new MobileStatusCompact(f.CanBeRenamedBy(m), f)); m.Send(new MobileAttributesN(f)); m.Send(new KRDisplayWaypoint(f, WaypointType.PartyMember, false, 1062613, f.Name)); /* for (int i2 = 0; i2 < m_Members.Count; ++i2) { Mobile f2 = ((PartyMemberInfo)m_Members[i2]).Mobile; if (f2.NetState != null && f2.NetState.IsKRClient) { f2.NetState.Send(new DisplayWaypoint(f.Serial, f.X, f.Y, f.Z, f.Map.MapID, WaypointType.PartyMember, f.Name)); } } */ #endregion } } Packet.Release(memberList); Packet.Release(attrs); } }
public MobileStatus( Mobile beholder, Mobile beheld ) : base( 0x11 ) { string name = beheld.Name; if ( name == null ) name = ""; int type; if ( beholder != beheld ) { type = 0; EnsureCapacity( 43 ); } else { type = 3; EnsureCapacity( 88 ); } m_Stream.Write( beheld.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); if ( beholder == beheld ) WriteAttr( beheld.Hits, beheld.HitsMax ); else WriteAttrNorm( beheld.Hits, beheld.HitsMax ); m_Stream.Write( beheld.CanBeRenamedBy( beholder ) ); m_Stream.Write( (byte) type ); if ( type > 0 ) { m_Stream.Write( beheld.Female ); m_Stream.Write( (short) beheld.Str ); m_Stream.Write( (short) beheld.Dex ); m_Stream.Write( (short) beheld.Int ); WriteAttr( beheld.Stam, beheld.StamMax ); WriteAttr( beheld.Mana, beheld.ManaMax ); m_Stream.Write( (int) beheld.TotalGold ); m_Stream.Write( (short) (int)(beheld.ArmorRating + 0.5) ); m_Stream.Write( (short) (Mobile.BodyWeight + beheld.TotalWeight) ); m_Stream.Write( (short) beheld.StatCap ); m_Stream.Write( (byte) beheld.Followers ); m_Stream.Write( (byte) beheld.FollowersMax ); } }
public void Add( Mobile m ) { PartyMemberInfo mi = this[m]; if ( mi == null ) { m_Members.Add( new PartyMemberInfo( m ) ); m.Party = this; Packet memberList = Packet.Acquire( new PartyMemberList( this ) ); Packet attrs = Packet.Acquire( new MobileAttributesN( m ) ); for ( int i = 0; i < m_Members.Count; ++i ) { Mobile f = ((PartyMemberInfo)m_Members[i]).Mobile; f.Send( memberList ); if ( f != m ) { f.Send( new MobileStatusCompact( m.CanBeRenamedBy( f ), m ) ); f.Send( attrs ); m.Send( new MobileStatusCompact( f.CanBeRenamedBy( m ), f ) ); m.Send( new MobileAttributesN( f ) ); } } Packet.Release( memberList ); Packet.Release( attrs ); } }
public MobileStatus(Mobile beholder, Mobile beheld, NetState ns) : base(0x11) { string name = beheld.Name; if (name == null) name = ""; bool sendMLExtended = (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML)); this.EnsureCapacity(43 + (beholder == beheld ? (sendMLExtended ? 48 : 45) : 0)); this.m_Stream.Write(beheld.Serial); this.m_Stream.WriteAsciiFixed(name, 30); if (beholder == beheld) this.WriteAttr(beheld.Hits, beheld.HitsMax); else this.WriteAttrNorm(beheld.Hits, beheld.HitsMax); this.m_Stream.Write(beheld.CanBeRenamedBy(beholder)); if (beholder == beheld) { this.m_Stream.Write((byte)(sendMLExtended ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type this.m_Stream.Write(beheld.Female); this.m_Stream.Write((short)beheld.Str); this.m_Stream.Write((short)beheld.Dex); this.m_Stream.Write((short)beheld.Int); this.WriteAttr(beheld.Stam, beheld.StamMax); this.WriteAttr(beheld.Mana, beheld.ManaMax); this.m_Stream.Write((int)beheld.TotalGold); this.m_Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5))); this.m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight)); if (sendMLExtended) { this.m_Stream.Write((short)beheld.MaxWeight); this.m_Stream.Write((byte)(beheld.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } this.m_Stream.Write((short)beheld.StatCap); this.m_Stream.Write((byte)beheld.Followers); this.m_Stream.Write((byte)beheld.FollowersMax); if (Core.AOS) { this.m_Stream.Write((short)beheld.FireResistance); // Fire this.m_Stream.Write((short)beheld.ColdResistance); // Cold this.m_Stream.Write((short)beheld.PoisonResistance); // Poison this.m_Stream.Write((short)beheld.EnergyResistance); // Energy this.m_Stream.Write((short)beheld.Luck); // Luck IWeapon weapon = beheld.Weapon; int min = 0, max = 0; if (weapon != null) weapon.GetStatusDamage(beheld, out min, out max); this.m_Stream.Write((short)min); // Damage min this.m_Stream.Write((short)max); // Damage max this.m_Stream.Write((int)beheld.TithingPoints); } } else { this.m_Stream.Write((byte)0x00); } }
public void TestMobileStatusExtended(ProtocolChanges changes) { var beholder = new Mobile(0x1) { Name = "Random Mobile 1" }; beholder.DefaultMobileInit(); var beheld = new Mobile(0x2) { Name = "Random Mobile 2" }; beheld.DefaultMobileInit(); var ns = new NetState(null) { ProtocolChanges = changes }; var data = new MobileStatus(beholder, beheld, ns).Compile(); Span <byte> expectedData = stackalloc byte[121]; // Max Size var pos = 0; expectedData.Write(ref pos, (byte)0x11); pos += 2; // Length int type; var notSelf = beholder != beheld; if (notSelf) { type = 0; } else if (Core.HS && ns.ExtendedStatus) { type = 6; } else if (Core.ML && ns.SupportsExpansion(Expansion.ML)) { type = 5; } else { type = Core.AOS ? 4 : 3; } expectedData.Write(ref pos, beheld.Serial); expectedData.WriteAsciiFixed(ref pos, beheld.Name, 30); expectedData.WriteReverseAttribute(ref pos, beheld.Hits, beheld.HitsMax, notSelf); expectedData.Write(ref pos, beheld.CanBeRenamedBy(beheld)); expectedData.Write(ref pos, (byte)type); if (type > 0) { expectedData.Write(ref pos, beheld.Female); expectedData.Write(ref pos, (ushort)beheld.Str); expectedData.Write(ref pos, (ushort)beheld.Dex); expectedData.Write(ref pos, (ushort)beheld.Int); expectedData.WriteReverseAttribute(ref pos, beheld.Stam, beheld.StamMax, notSelf); expectedData.WriteReverseAttribute(ref pos, beheld.Mana, beheld.ManaMax, notSelf); expectedData.Write(ref pos, beheld.TotalGold); expectedData.Write( ref pos, (ushort)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)) ); expectedData.Write(ref pos, (ushort)(Mobile.BodyWeight + beheld.TotalWeight)); if (type >= 5) { expectedData.Write(ref pos, (ushort)beheld.MaxWeight); expectedData.Write(ref pos, (byte)(beheld.Race.RaceID + 1)); // 0x00 for a non-ML enabled account } expectedData.Write(ref pos, (ushort)beheld.StatCap); expectedData.Write(ref pos, (byte)beheld.Followers); expectedData.Write(ref pos, (byte)beheld.FollowersMax); if (type >= 4) { expectedData.Write(ref pos, (ushort)beheld.FireResistance); expectedData.Write(ref pos, (ushort)beheld.ColdResistance); expectedData.Write(ref pos, (ushort)beheld.PoisonResistance); expectedData.Write(ref pos, (ushort)beheld.EnergyResistance); expectedData.Write(ref pos, (ushort)beheld.Luck); } var min = 0; var max = 0; beheld.Weapon?.GetStatusDamage(beheld, out min, out max); expectedData.Write(ref pos, (ushort)min); expectedData.Write(ref pos, (ushort)max); expectedData.Write(ref pos, beheld.TithingPoints); if (type >= 6) { for (var i = 0; i < 15; ++i) { expectedData.Write(ref pos, (ushort)beheld.GetAOSStatus(i)); } } } expectedData.Slice(1, 2).Write((ushort)pos); // Length expectedData = expectedData.Slice(0, pos); AssertThat.Equal(data, expectedData); }
public MobileStatusExtended( Mobile m, NetState ns ) : base(0x11) { string name = m.Name; if ( name == null ) name = ""; bool sendMLExtended = (Core.ML && ns != null && ns.SupportsExpansion( Expansion.ML )); #region UOSA: KR Support this.EnsureCapacity((m.NetState != null && m.NetState.IsKRClient) ? 161 : (sendMLExtended ? 91 : 88)); #endregion m_Stream.Write( (int) m.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); m_Stream.Write( (short) m.Hits ); m_Stream.Write( (short) m.HitsMax ); m_Stream.Write( m.CanBeRenamedBy( m ) ); #region UOSA: KR Support m_Stream.Write((byte)((m.NetState != null && m.NetState.IsKRClient) ? 0x06 : (sendMLExtended ? 0x05 : Core.AOS ? 0x04 : 0x03))); // type #endregion m_Stream.Write( m.Female ); m_Stream.Write( (short) m.Str ); m_Stream.Write( (short) m.Dex ); m_Stream.Write( (short) m.Int ); m_Stream.Write( (short) m.Stam ); m_Stream.Write( (short) m.StamMax ); m_Stream.Write( (short) m.Mana ); m_Stream.Write( (short) m.ManaMax ); m_Stream.Write( (int) m.TotalGold ); m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) ); m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) ); if( sendMLExtended ) { m_Stream.Write( (short)m.MaxWeight ); m_Stream.Write( (byte)(m.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write( (short) m.StatCap ); m_Stream.Write( (byte) m.Followers ); m_Stream.Write( (byte) m.FollowersMax ); if ( Core.AOS ) { m_Stream.Write( (short) m.FireResistance ); // Fire m_Stream.Write( (short) m.ColdResistance ); // Cold m_Stream.Write( (short) m.PoisonResistance ); // Poison m_Stream.Write( (short) m.EnergyResistance ); // Energy m_Stream.Write( (short) m.Luck ); // Luck IWeapon weapon = m.Weapon; int min = 0, max = 0; if ( weapon != null ) weapon.GetStatusDamage( m, out min, out max ); m_Stream.Write( (short) min ); // Damage min m_Stream.Write( (short) max ); // Damage max m_Stream.Write( (int) m.TithingPoints ); } #region UOSA: KR Support if (m.NetState != null && m.NetState.IsKRClient) { m_Stream.Write((short)m.AttackChance); // Hit Chance Increase m_Stream.Write((short)m.WeaponSpeed); // Swing Speed Increase m_Stream.Write((short)m.WeaponDamage); // Damage Increase m_Stream.Write((short)m.LowerRegCost); // Lower Reagent Cost m_Stream.Write((short)m.RegenHits); // Hit Points Regeneration m_Stream.Write((short)m.RegenStam); // Stamina Regeneration m_Stream.Write((short)m.RegenMana); // Mana Regeneration m_Stream.Write((short)m.ReflectPhysical); // Reflect Physical Damage m_Stream.Write((short)m.EnhancePotions); // Enhance Potions m_Stream.Write((short)m.DefendChance); // Defense Chance Increase m_Stream.Write((short)m.SpellDamage); // Spell Damage Increase m_Stream.Write((short)m.CastRecovery); // Faster Cast Recovery m_Stream.Write((short)m.CastSpeed); // Faster Casting m_Stream.Write((short)m.LowerManaCost); // Lower Mana Cost m_Stream.Write((short)m.BonusStr); // Strength Increase m_Stream.Write((short)m.BonusDex); // Dexterity Increase m_Stream.Write((short)m.BonusInt); // Intelligence Increase m_Stream.Write((short)m.BonusHits); // Hit Points Increase m_Stream.Write((short)m.BonusStam); // Stamina Increase m_Stream.Write((short)m.BonusMana); // Mana Increase m_Stream.Write((short)m.MaxHitIncrease); // Maximum Hit Points Increase m_Stream.Write((short)m.MaxStamIncrease); // Maximum Stamina Increase m_Stream.Write((short)m.MaxManaIncrease); // Maximum Mana Increase } #endregion }
public MobileStatusExtended( Mobile m ) : base(0x11) { string name = m.Name; if ( name == null ) name = ""; this.EnsureCapacity( 88 ); m_Stream.Write( (int) m.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); m_Stream.Write( (short) m.Hits ); m_Stream.Write( (short) m.HitsMax ); m_Stream.Write( m.CanBeRenamedBy( m ) ); m_Stream.Write( (byte) (MobileStatus.SendAosInfo ? 0x04 : 0x03) ); // type m_Stream.Write( m.Female ); m_Stream.Write( (short) m.Str ); m_Stream.Write( (short) m.Dex ); m_Stream.Write( (short) m.Int ); m_Stream.Write( (short) m.Stam ); m_Stream.Write( (short) m.StamMax ); m_Stream.Write( (short) m.Mana ); m_Stream.Write( (short) m.ManaMax ); m_Stream.Write( (int) m.TotalGold ); m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) ); m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) ); m_Stream.Write( (short) m.StatCap ); m_Stream.Write( (byte) m.Followers ); m_Stream.Write( (byte) m.FollowersMax ); if ( MobileStatus.SendAosInfo ) { m_Stream.Write( (short) m.FireResistance ); // Fire m_Stream.Write( (short) m.ColdResistance ); // Cold m_Stream.Write( (short) m.PoisonResistance ); // Poison m_Stream.Write( (short) m.EnergyResistance ); // Energy m_Stream.Write( (short) m.Luck ); // Luck IWeapon weapon = m.Weapon; int min = 0, max = 0; if ( weapon != null ) weapon.GetStatusDamage( m, out min, out max ); m_Stream.Write( (short) min ); // Damage min m_Stream.Write( (short) max ); // Damage max m_Stream.Write( (int) m.TithingPoints ); } }
public MobileStatus(Mobile beholder, Mobile beheld) : base(0x11) { string name = beheld.Name; if (name == null) name = ""; bool sendMaxWeight = (Core.ML && beheld.NetState != null && beheld.NetState.SupportsExpansion(Expansion.ML)); this.EnsureCapacity(43 + (beholder == beheld ? (sendMaxWeight ? 48 : 45) : 0)); m_Stream.Write(beheld.Serial); m_Stream.WriteAsciiFixed(name, 30); if (beholder == beheld) WriteAttr(beheld.Hits, beheld.HitsMax); else WriteAttrNorm(beheld.Hits, beheld.HitsMax); m_Stream.Write(beheld.CanBeRenamedBy(beholder)); if (beholder == beheld) { m_Stream.Write((byte)(sendMaxWeight ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type m_Stream.Write(beheld.Female); m_Stream.Write((short)beheld.Str); m_Stream.Write((short)beheld.Dex); m_Stream.Write((short)beheld.Int); WriteAttr(beheld.Stam, beheld.StamMax); WriteAttr(beheld.Mana, beheld.ManaMax); m_Stream.Write((int)beheld.TotalGold); //m_Stream.Write( (short) (Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)) ); m_Stream.Write((short)((int)(beheld.ArmorRating + 0.5))); m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight)); if (sendMaxWeight) { //SMD: we're never ML, so we shouldn't need this! //m_Stream.Write( (short)beheld.MaxWeight ); //m_Stream.Write( (byte)(beheld.Race.RaceID + 1) ); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write((short)beheld.StatCap); m_Stream.Write((byte)beheld.Followers); m_Stream.Write((byte)beheld.FollowersMax); if (Core.AOS) { //SMD: We're never AOS, so we shouldn't need this! // m_Stream.Write( (short) beheld.FireResistance ); // Fire // m_Stream.Write( (short) beheld.ColdResistance ); // Cold // m_Stream.Write( (short) beheld.PoisonResistance ); // Poison // m_Stream.Write( (short) beheld.EnergyResistance ); // Energy // m_Stream.Write( (short) beheld.Luck ); // Luck // // IWeapon weapon = beheld.Weapon; // // int min = 0, max = 0; // // if ( weapon != null ) // weapon.GetStatusDamage( beheld, out min, out max ); // // m_Stream.Write( (short) min ); // Damage min // m_Stream.Write( (short) max ); // Damage max // // m_Stream.Write( (int) beheld.TithingPoints ); } } else { m_Stream.Write((byte)0x00); } }
public MobileStatus(Mobile beholder, Mobile beheld, NetState ns) : base(0x11) { string name = beheld.Name; if (name == null) { name = ""; } int type; // bool isEnhancedClient = beholder.NetState != null && beholder.NetState.Version.IsEnhanced; if (beholder != beheld) { type = 0; EnsureCapacity(43); } //else if (isEnhancedClient) //{ //type = 7; //EnsureCapacity(149); //} else if (Core.HS && ns != null && ns.ExtendedStatus) { type = 6; EnsureCapacity(121); } else if (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML)) { type = 5; EnsureCapacity(91); } else { type = Core.AOS ? 4 : 3; EnsureCapacity(88); } m_Stream.Write(beheld.Serial); m_Stream.WriteAsciiFixed(name, 30); if (beholder == beheld) { WriteAttr(beheld.Hits, beheld.HitsMax); } else { WriteAttrNorm(beheld.Hits, beheld.HitsMax); } m_Stream.Write(beheld.CanBeRenamedBy(beholder)); m_Stream.Write((byte)type); if (type > 0) { m_Stream.Write(beheld.Female); m_Stream.Write((short)beheld.Str); m_Stream.Write((short)beheld.Dex); m_Stream.Write((short)beheld.Int); WriteAttr(beheld.Stam, beheld.StamMax); WriteAttr(beheld.Mana, beheld.ManaMax); m_Stream.Write(beheld.TotalGold); m_Stream.Write((short)(Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5))); m_Stream.Write((short)(Mobile.BodyWeight + beheld.TotalWeight)); if (type >= 5) { m_Stream.Write((short)beheld.MaxWeight); m_Stream.Write((byte)(beheld.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write((short)beheld.StatCap); m_Stream.Write((byte)beheld.Followers); m_Stream.Write((byte)beheld.FollowersMax); if (type >= 4) { m_Stream.Write((short)beheld.FireResistance); // Fire m_Stream.Write((short)beheld.ColdResistance); // Cold m_Stream.Write((short)beheld.PoisonResistance); // Poison m_Stream.Write((short)beheld.EnergyResistance); // Energy m_Stream.Write((short)beheld.Luck); // Luck IWeapon weapon = beheld.Weapon; int min = 0, max = 0; if (weapon != null) { weapon.GetStatusDamage(beheld, out min, out max); } m_Stream.Write((short)min); // Damage min m_Stream.Write((short)max); // Damage max m_Stream.Write(beheld.TithingPoints); } if (type >= 6) { for (int i = 0; i < 15; ++i) { m_Stream.Write((short)beheld.GetAOSStatus(i)); } //if (isEnhancedClient) //{ /* m_Stream.Write((short)beheld.AttackChance); // Hit Chance Increase m_Stream.Write((short)beheld.WeaponSpeed); // Swing Speed Increase m_Stream.Write((short)beheld.WeaponDamage); // Damage Increase m_Stream.Write((short)beheld.LowerRegCost); // Lower Reagent Cost m_Stream.Write((short)beheld.RegenHits); // Hit Points Regeneration m_Stream.Write((short)beheld.RegenStam); // Stamina Regeneration m_Stream.Write((short)beheld.RegenMana); // Mana Regeneration m_Stream.Write((short)beheld.ReflectPhysical); // Reflect Physical Damage m_Stream.Write((short)beheld.EnhancePotions); // Enhance Potions m_Stream.Write((short)beheld.DefendChance); // Defense Chance Increase m_Stream.Write((short)beheld.SpellDamage); // Spell Damage Increase m_Stream.Write((short)beheld.CastRecovery); // Faster Cast Recovery m_Stream.Write((short)beheld.CastSpeed); // Faster Casting m_Stream.Write((short)beheld.LowerManaCost); // Lower Mana Cost m_Stream.Write((short)beheld.BonusStr); // Strength Increase m_Stream.Write((short)beheld.BonusDex); // Dexterity Increase m_Stream.Write((short)beheld.BonusInt); // Intelligence Increase m_Stream.Write((short)beheld.BonusHits); // Hit Points Increase m_Stream.Write((short)beheld.BonusStam); // Stamina Increase m_Stream.Write((short)beheld.BonusMana); // Mana Increase m_Stream.Write((short)beheld.MaxHitIncrease); // Maximum Hit Points Increase m_Stream.Write((short)beheld.MaxStamIncrease); // Maximum Stamina Increase m_Stream.Write((short)beheld.MaxManaIncrease); // Maximum Mana Increase */ //} #region EC Support if (beheld.NetState != null && beheld.NetState.IsKRClient) { m_Stream.Write((short)beheld.AttackChance); // Hit Chance Increase m_Stream.Write((short)beheld.WeaponSpeed); // Swing Speed Increase m_Stream.Write((short)beheld.WeaponDamage); // Damage Increase m_Stream.Write((short)beheld.LowerRegCost); // Lower Reagent Cost m_Stream.Write((short)beheld.RegenHits); // Hit Points Regeneration m_Stream.Write((short)beheld.RegenStam); // Stamina Regeneration m_Stream.Write((short)beheld.RegenMana); // Mana Regeneration m_Stream.Write((short)beheld.ReflectPhysical); // Reflect Physical Damage m_Stream.Write((short)beheld.EnhancePotions); // Enhance Potions m_Stream.Write((short)beheld.DefendChance); // Defense Chance Increase m_Stream.Write((short)beheld.SpellDamage); // Spell Damage Increase m_Stream.Write((short)beheld.CastRecovery); // Faster Cast Recovery m_Stream.Write((short)beheld.CastSpeed); // Faster Casting m_Stream.Write((short)beheld.LowerManaCost); // Lower Mana Cost m_Stream.Write((short)beheld.BonusStr); // Strength Increase m_Stream.Write((short)beheld.BonusDex); // Dexterity Increase m_Stream.Write((short)beheld.BonusInt); // Intelligence Increase m_Stream.Write((short)beheld.BonusHits); // Hit Points Increase m_Stream.Write((short)beheld.BonusStam); // Stamina Increase m_Stream.Write((short)beheld.BonusMana); // Mana Increase m_Stream.Write((short)beheld.MaxHitIncrease); // Maximum Hit Points Increase m_Stream.Write((short)beheld.MaxStamIncrease); // Maximum Stamina Increase m_Stream.Write((short)beheld.MaxManaIncrease); // Maximum Mana Increase } #endregion } } }
public MobileStatus( Mobile beholder, Mobile beheld ) : base(0x11) { string name = beheld.Name; if ( name == null ) name = ""; this.EnsureCapacity( 43 + (beholder == beheld ? 45 : 0) ); m_Stream.Write( beheld.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); if ( beholder == beheld ) WriteAttr( beheld.Hits, beheld.HitsMax ); else WriteAttrNorm( beheld.Hits, beheld.HitsMax ); m_Stream.Write( beheld.CanBeRenamedBy( beholder ) ); if ( beholder == beheld ) { m_Stream.Write( (byte) (m_SendAosInfo ? 0x04 : 0x03) ); m_Stream.Write( beheld.Female ); m_Stream.Write( (short) beheld.Str ); m_Stream.Write( (short) beheld.Dex ); m_Stream.Write( (short) beheld.Int ); WriteAttr( beheld.Stam, beheld.StamMax ); WriteAttr( beheld.Mana, beheld.ManaMax ); m_Stream.Write( (int) beheld.TotalGold ); m_Stream.Write( (short) (Core.AOS ? beheld.PhysicalResistance : (int)(beheld.ArmorRating + 0.5)) ); m_Stream.Write( (short) (Mobile.BodyWeight + beheld.TotalWeight) ); m_Stream.Write( (short) beheld.StatCap ); m_Stream.Write( (byte) beheld.Followers ); m_Stream.Write( (byte) beheld.FollowersMax ); if ( m_SendAosInfo ) { m_Stream.Write( (short) beheld.FireResistance ); // Fire m_Stream.Write( (short) beheld.ColdResistance ); // Cold m_Stream.Write( (short) beheld.PoisonResistance ); // Poison m_Stream.Write( (short) beheld.EnergyResistance ); // Energy m_Stream.Write( (short) beheld.Luck ); // Luck IWeapon weapon = beheld.Weapon; int min = 0, max = 0; if ( weapon != null ) weapon.GetStatusDamage( beheld, out min, out max ); m_Stream.Write( (short) min ); // Damage min m_Stream.Write( (short) max ); // Damage max m_Stream.Write( (int) beheld.TithingPoints ); } } else { m_Stream.Write( (byte) 0x00 ); } }
// Methods public MobileStatus(Mobile beholder, Mobile beheld) : base(17) { IWeapon weapon1; int num1; int num2; string text1 = beheld.Name; if (text1 == null) { text1 = ""; } base.EnsureCapacity((43 + ((beholder == beheld) ? 45 : 0))); this.m_Stream.Write(Serial.op_Implicit(beheld.Serial)); this.m_Stream.WriteAsciiFixed(text1, 30); if (beholder == beheld) { this.WriteAttr(beheld.Hits, beheld.HitsMax); } else { this.WriteAttrNorm(beheld.Hits, beheld.HitsMax); } this.m_Stream.Write(beheld.CanBeRenamedBy(beholder)); if (beholder == beheld) { this.m_Stream.Write(((byte)(MobileStatus.m_SendAosInfo ? 4 : 3))); this.m_Stream.Write(beheld.Female); this.m_Stream.Write(((short)beheld.Str)); this.m_Stream.Write(((short)beheld.Dex)); this.m_Stream.Write(((short)beheld.Int)); this.WriteAttr(beheld.Stam, beheld.StamMax); this.WriteAttr(beheld.Mana, beheld.ManaMax); this.m_Stream.Write(beheld.TotalGold); this.m_Stream.Write(((short)(Core.AOS ? beheld.PhysicalResistance : ((int)(beheld.ArmorRating + 0.5))))); this.m_Stream.Write(((short)(Mobile.BodyWeight + beheld.TotalWeight))); this.m_Stream.Write(((short)beheld.StatCap)); this.m_Stream.Write(((byte)beheld.Followers)); this.m_Stream.Write(((byte)beheld.FollowersMax)); if (!MobileStatus.m_SendAosInfo) { return; } this.m_Stream.Write(((short)beheld.FireResistance)); this.m_Stream.Write(((short)beheld.ColdResistance)); this.m_Stream.Write(((short)beheld.PoisonResistance)); this.m_Stream.Write(((short)beheld.EnergyResistance)); this.m_Stream.Write(((short)beheld.Luck)); weapon1 = beheld.Weapon; num1 = 0; num2 = 0; if (weapon1 != null) { weapon1.GetStatusDamage(beheld, out num1, out num2); } this.m_Stream.Write(((short)num1)); this.m_Stream.Write(((short)num2)); this.m_Stream.Write(beheld.TithingPoints); return; } this.m_Stream.Write(((byte)0)); }
public void OnStatsQuery( Mobile beholder, Mobile beheld ) { if ( beholder != beheld && Contains( beholder ) && beholder.Map == beheld.Map && Utility.InUpdateRange( beholder, beheld ) ) { if ( !beholder.CanSee( beheld ) ) beholder.Send( new MobileStatusCompact( beheld.CanBeRenamedBy( beholder ), beheld ) ); beholder.Send( new MobileAttributesN( beheld ) ); } }
public MobileStatusExtended(Mobile m, NetState ns) : base(0x11) { string name = m.Name; if ( name == null ) name = ""; bool sendMLExtended = (Core.ML && ns != null && ns.SupportsExpansion(Expansion.ML)); this.EnsureCapacity(sendMLExtended ? 91 : 88); m_Stream.Write( (int) m.Serial ); m_Stream.WriteAsciiFixed( name, 30 ); m_Stream.Write( (short) m.Hits ); m_Stream.Write( (short) m.HitsMax ); m_Stream.Write( m.CanBeRenamedBy( m ) ); m_Stream.Write((byte)(sendMLExtended ? 0x05 : Core.AOS ? 0x04 : 0x03)); // type m_Stream.Write( m.Female ); m_Stream.Write( (short) m.Str ); m_Stream.Write( (short) m.Dex ); m_Stream.Write( (short) m.Int ); m_Stream.Write( (short) m.Stam ); m_Stream.Write( (short) m.StamMax ); m_Stream.Write( (short) m.Mana ); m_Stream.Write( (short) m.ManaMax ); int totalGold = m.TotalGold; if (m.BankBox != null) totalGold += m.BankBox.TotalGold; m_Stream.Write(totalGold); m_Stream.Write( (short) (Core.AOS ? m.PhysicalResistance : (int)(m.ArmorRating + 0.5)) ); m_Stream.Write( (short) (Mobile.BodyWeight + m.TotalWeight) ); if (sendMLExtended) { m_Stream.Write( (short)m.MaxWeight ); m_Stream.Write( (byte)(m.Race.RaceID + 1)); // Would be 0x00 if it's a non-ML enabled account but... } m_Stream.Write( (short) m.StatCap ); m_Stream.Write( (byte) m.Followers ); m_Stream.Write( (byte) m.FollowersMax ); if ( Core.AOS ) { m_Stream.Write( (short) m.FireResistance ); // Fire m_Stream.Write( (short) m.ColdResistance ); // Cold m_Stream.Write( (short) m.PoisonResistance ); // Poison m_Stream.Write( (short) m.EnergyResistance ); // Energy m_Stream.Write( (short) m.Luck ); // Luck IWeapon weapon = m.Weapon; int min = 0, max = 0; if ( weapon != null ) weapon.GetStatusDamage( m, out min, out max ); m_Stream.Write( (short) min ); // Damage min m_Stream.Write( (short) max ); // Damage max m_Stream.Write( (int) m.TithingPoints ); } }