/// <summary> /// </summary> /// <param name="character"> /// </param> /// <param name="destination"> /// </param> /// <param name="heading"> /// </param> /// <param name="playfield"> /// </param> /// <returns> /// </returns> private MessageDataFiller NormalTeleport( ICharacter character, Vector3 destination, Quaternion heading, Identity playfield) { return(x => { x.Identity = character.Identity; x.Destination = new SmokeLounge.AOtomation.Messaging.GameData.Vector3() { X = (float)destination.x, Y = (float)destination.y, Z = (float)destination.z }; x.Heading = new SmokeLounge.AOtomation.Messaging.GameData.Quaternion() { X = (float)heading.x, Y = (float)heading.x, Z = (float)heading.y, W = (float)heading.w }; x.Unknown1 = 0x61; x.Playfield = new Identity() { Type = IdentityType.Playfield1, Instance = playfield.Instance }; x.ChangePlayfield = ((playfield.Instance != character.Playfield.Identity.Instance) || (playfield.Type != character.Playfield.Identity.Type)) ? new Identity { Type = IdentityType.Playfield2, Instance = playfield.Instance } : Identity.None; x.Playfield2 = new Identity() { Type = IdentityType.Playfield3, Instance = playfield.Instance }; }); }
/// <summary> /// </summary> /// <param name="character"> /// </param> /// <param name="destination"> /// </param> /// <param name="heading"> /// </param> /// <param name="playfield"> /// </param> /// <param name="playfieldInstance"> /// </param> /// <param name="GS"> /// </param> /// <param name="SG"> /// </param> /// <param name="destinationidentity"> /// </param> /// <returns> /// </returns> private MessageDataFiller ProxyTeleport( ICharacter character, Vector3 destination, Quaternion heading, int playfield, Identity playfieldInstance, int GS, int SG, Identity destinationidentity) { return(x => { x.Identity = character.Identity; x.Destination = new SmokeLounge.AOtomation.Messaging.GameData.Vector3() { X = (float)destination.x, Y = (float)destination.y, Z = (float)destination.z }; x.Heading = new SmokeLounge.AOtomation.Messaging.GameData.Quaternion() { X = (float)heading.x, Y = (float)heading.y, Z = (float)heading.z, W = (float)heading.w }; x.Unknown1 = 0x61; x.Playfield = playfieldInstance; x.GameServerId = GS; x.SgId = SG; x.ChangePlayfield = ((playfield != character.Playfield.Identity.Instance) || (IdentityType.Playfield != character.Playfield.Identity.Type)) ? new Identity { Type = IdentityType.Playfield2, Instance = playfield } : Identity.None; x.Playfield2 = destinationidentity; }); }
/// <summary> /// </summary> /// <param name="character"> /// </param> /// <param name="destination"> /// </param> /// <param name="heading"> /// </param> /// <param name="playfield"> /// </param> /// <param name="playfieldInstance"> /// </param> /// <param name="GS"> /// </param> /// <param name="SG"> /// </param> /// <param name="destinationidentity"> /// </param> public void SendTeleportProxy( ICharacter character, Vector3 destination, Quaternion heading, int playfield, Identity playfieldInstance, int GS, int SG, Identity destinationidentity) { this.Send( character, this.ProxyTeleport( character, destination, heading, playfield, playfieldInstance, GS, SG, destinationidentity), false); }
/// <summary> /// </summary> /// <param name="character"> /// </param> /// <param name="destination"> /// </param> /// <param name="heading"> /// </param> /// <param name="playfield"> /// </param> public void Send(ICharacter character, Vector3 destination, Quaternion heading, Identity playfield) { this.Send(character, this.NormalTeleport(character, destination, heading, playfield), false); }