// WingsEmu
// 
// Developed by NosWings Team

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using PhoenixLib.Events;
using WingsEmu.Game.Entities;
using WingsEmu.Game.Helpers.Damages;
using WingsEmu.Game.Monster;
using WingsEmu.Packets.Enums;

namespace WingsEmu.Game;

public class ToSummon
{
    public int VNum { get; init; }
    public Position? SpawnCell { get; init; }
    public IBattleEntity Target { get; init; }
    public bool IsMoving { get; init; }
    public byte SummonChance { get; init; } = 100;
    public bool RemoveTick { get; init; }
    public bool IsTarget { get; init; }
    public bool IsBonusOrProtected { get; init; }
    public bool IsHostile { get; init; }
    public bool IsBossOrMate { get; init; }
    public bool IsVesselMonster { get; init; }
    public SummonType? SummonType { get; init; }
    public IMonsterEntity MonsterEntity { get; init; }
    public IReadOnlyCollection<(string key, IAsyncEvent asyncEvent, bool removeOnUse)> TriggerEvents { get; init; }
    public bool IsMateTrainer { get; init; }
    public short SetHitChance { get; init; }
    public Position? GoToBossPosition { get; init; }
    public bool IsInstantBattle { get; init; }
    public byte Direction { get; init; } = 2;
    public byte? Level { get; init; }
    public float? HpMultiplier { get; init; }
    public float? MpMultiplier { get; init; }
    public FactionType? FactionType { get; init; }
    public Guid? AtAroundMobId { get; init; }
    public byte? AtAroundMobRange { get; init; }
    public ConcurrentDictionary<byte, Waypoint> Waypoints { get; init; }
}