Exemplo n.º 1
0
    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));
    }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        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));
            }
        }