1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-25 22:27:45 +00:00
project-meteor-server/FFXIVClassic Map Server/packets/send/Actor/battle/BattleActionX01Packet.cs
yogurt c5ce2ec771 Combat additions
Added formulas for base EXP gain and chain experience
Added basic scripts for most player abilities and effects
Added stat gains for some abilities
Changed status flags
Fixed bug with player death
Fixed bug where auto attacks didnt work when not locked on
Added traits
2018-04-18 16:06:41 -05:00

52 lines
No EOL
1.7 KiB
C#

using FFXIVClassic.Common;
using System;
using System.IO;
namespace FFXIVClassic_Map_Server.packets.send.actor.battle
{
// see xtx_command
enum BattleActionX01PacketCommand : ushort
{
Disengage = 12002,
Attack = 22104,
}
class BattleActionX01Packet
{
public const ushort OPCODE = 0x0139;
public const uint PACKET_SIZE = 0x58;
public static SubPacket BuildPacket(uint sourceActorId, uint animationId, ushort commandId, BattleAction action)
{
byte[] data = new byte[PACKET_SIZE - 0x20];
using (MemoryStream mem = new MemoryStream(data))
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
binWriter.Write((UInt32)sourceActorId);
binWriter.Write((UInt32)animationId);
//Missing... last value is float, string in here as well?
binWriter.Seek(0x20, SeekOrigin.Begin);
binWriter.Write((UInt32)1); //Num actions (always 1 for this)
binWriter.Write((UInt16)commandId);
binWriter.Write((UInt16)0x801); //?
binWriter.Write((UInt32)action.targetId);
binWriter.Write((UInt16)action.amount);
binWriter.Write((UInt16)action.worldMasterTextId);
binWriter.Write((UInt32)action.effectId);
binWriter.Write((Byte)action.param);
binWriter.Write((Byte)1); //?
}
}
new SubPacket(OPCODE, sourceActorId, data).DebugPrintSubPacket();
return new SubPacket(OPCODE, sourceActorId, data);
}
}
}