public override void Execute(GameCommandTrigger trigger) { int id = trigger.Get <int>("id"); short level = trigger.Get <short>("level") > 0 ? trigger.Get <short>("level") : (short)1; if (SkillMetadataStorage.GetSkill(id) == null) { trigger.Session.SendNotice($"Skill with id: {id} is not defined."); return; } SkillCast skillCast = new(id, level, GuidGenerator.Long(), trigger.Session.ServerTick, trigger.Session.Player.FieldPlayer.ObjectId, trigger.Session.ClientTick); CoordF empty = CoordF.From(0, 0, 0); IFieldObject <Player> player = trigger.Session.Player.FieldPlayer; trigger.Session.FieldManager.BroadcastPacket(SkillUsePacket.SkillUse(skillCast, player.Coord, empty, empty)); }
private static void HandleCast(GameSession session, PacketReader packet) { long skillSN = packet.ReadLong(); int unkValue = packet.ReadInt(); int skillId = packet.ReadInt(); short skillLevel = packet.ReadShort(); packet.ReadByte(); CoordF coords = packet.Read <CoordF>(); packet.ReadShort(); SkillCast skillCast = session.Player.Cast(skillId, skillLevel, skillSN, unkValue); if (skillCast != null) { session.Send(SkillUsePacket.SkillUse(skillCast, coords)); session.Send(StatPacket.SetStats(session.FieldPlayer)); } }
private static void HandleFirstSent(GameSession session, PacketReader packet) { long skillSN = packet.ReadLong(); int unkValue = packet.ReadInt(); int skillId = packet.ReadInt(); short skillLevel = packet.ReadShort(); packet.ReadByte(); CoordF coords = packet.Read <CoordF>(); packet.ReadShort(); SkillCast skillCast = new SkillCast(skillId, skillLevel, skillSN, unkValue); int skillCost = skillCast.GetCost(); if (session.Player.Stats[PlayerStatId.Spirit].Current >= skillCost) { session.FieldPlayer.Value.SkillCast = skillCast; session.Player.ConsumeSp(skillCost); session.Send(SkillUsePacket.SkillUse(skillCast, coords)); session.Send(StatPacket.SetStats(session.FieldPlayer)); } }