Beispiel #1
0
        public override void Attack()
        {
            Owner.CurrentSkill = new Skill((ushort)Owner.MagicType, 0, 0);  //Thunder

            ScreenSystem.Send(Owner, MsgInteract.Create(Owner, Owner.CurrentTarget, MsgInteractType.Magic, 133337));
            ScreenSystem.Send(Owner, MsgMagicEffect.Create(Owner, Owner.CurrentTarget, 133337));

            Owner.LastAttack = DateTime.UtcNow;
            Owner.CurrentTarget.GetHit(Owner, 133337);
        }
Beispiel #2
0
Datei: Magic.cs Projekt: Pircs/Yi
        public static void ExecuteAttack(Player player, Vector2 targetLocation)
        {
            if (!CostCovered(player))
            {
                return;
            }
            var targets = GetTargets(player, targetLocation, player.CurrentSkill.Info.Type).ToArray();

            foreach (var kvp in targets)
            {
                switch (MagicTypeHelper.Convert(player.CurrentSkill.Info.Type))
                {
                case UseType.Damage:
                    kvp.Item1.GetHit(player, kvp.Item2);
                    break;

                case UseType.Heal:
                    kvp.Item1.GetHealed(player, kvp.Item2);
                    break;

                case UseType.Buff:
                    if (!ScriptEngine.Scripts.TryGetValue(ScriptType.SkillUsage, out var script))
                    {
                        continue;
                    }
                    if (script.Execute(kvp.Item1, player.CurrentSkill))
                    {
                        kvp.Item1.GetBuffed(player, 0);
                    }
                    else
                    {
                        Output.WriteLine($"Unknown Skill: {player.CurrentSkill.Id} | Lv: {player.CurrentSkill.Info.Level}");
                    }

                    break;

                default:
                    Message.SendTo(player, $"Magic Attack Fail: {player.CurrentSkill.Info.Type} -> {MagicTypeHelper.Convert(player.CurrentSkill.Info.Type)}",
                                   MsgTextType.Talk);
                    break;
                }
            }

            foreach (var packet in MsgMagicEffect.Create(player, targets))
            {
                ScreenSystem.Send(player, packet, true);
            }
        }