server-master/srcs/WingsAPI.Game/Npcs/MonsterData.cs
2026-02-10 18:21:30 +01:00

147 lines
No EOL
6.3 KiB
C#

// WingsEmu
//
// Developed by NosWings Team
using System;
using System.Collections.Generic;
using WingsAPI.Data.Drops;
using WingsEmu.DTOs.BCards;
using WingsEmu.DTOs.NpcMonster;
using WingsEmu.Game._enum;
using WingsEmu.Game.Entities;
using WingsEmu.Game.Skills;
using WingsEmu.Packets.Enums;
namespace WingsEmu.Game.Npcs;
public class MonsterData : NpcMonsterDto, IMonsterData
{
// Do not remove!
public MonsterData()
{
}
public MonsterData(IMonsterData monsterData)
{
AmountRequired = monsterData.AmountRequired;
ArmorLevel = monsterData.ArmorLevel;
AttackType = monsterData.AttackType;
AttackUpgrade = monsterData.AttackUpgrade;
BasicCastTime = monsterData.BasicCastTime;
BasicCooldown = monsterData.BasicCooldown;
BasicRange = monsterData.BasicRange;
AttackEffect = monsterData.AttackEffect;
BasicHitChance = monsterData.BasicHitChance;
CanBeCollected = monsterData.CanBeCollected;
CanBeDebuffed = monsterData.CanBeDebuffed;
CanBeCaught = monsterData.CanBeCaught;
CanBePushed = monsterData.CanBePushed;
CanRegenMp = monsterData.CanRegenMp;
CanWalk = monsterData.CanWalk;
CellSize = monsterData.CellSize;
CleanDamageMin = monsterData.CleanDamageMin;
CleanDamageMax = monsterData.CleanDamageMax;
CleanHitRate = monsterData.CleanHitRate;
CleanMeleeDefence = monsterData.CleanMeleeDefence;
CleanRangeDefence = monsterData.CleanRangeDefence;
CleanMagicDefence = monsterData.CleanMagicDefence;
CleanDodge = monsterData.CleanDodge;
CleanHp = monsterData.CleanHp;
CleanMp = monsterData.CleanMp;
CloseDefence = monsterData.BaseCloseDefence;
Concentrate = monsterData.BaseConcentrate;
CriticalChance = monsterData.BaseCriticalChance;
CriticalRate = monsterData.BaseCriticalRate;
DamagedOnlyLastJajamaruSkill = monsterData.DamagedOnlyLastJajamaruSkill;
DamageMaximum = monsterData.BaseDamageMaximum;
DamageMinimum = monsterData.BaseDamageMinimum;
DarkResistance = monsterData.BaseDarkResistance;
DeathEffect = monsterData.DeathEffect;
MaxHp = monsterData.BaseMaxHp;
MaxMp = monsterData.BaseMaxMp;
DefenceDodge = monsterData.DefenceDodge;
DefenceUpgrade = monsterData.DefenceUpgrade;
DisappearAfterHitting = monsterData.DisappearAfterHitting;
DisappearAfterSeconds = monsterData.DisappearAfterSeconds;
DisappearAfterSecondsMana = monsterData.DisappearAfterSecondsMana;
DistanceDefence = monsterData.DistanceDefence;
DistanceDefenceDodge = monsterData.DistanceDefenceDodge;
Element = monsterData.BaseElement;
ElementRate = monsterData.BaseElementRate;
SuggestedFaction = monsterData.SuggestedFaction;
FireResistance = monsterData.BaseFireResistance;
GiveDamagePercentage = monsterData.GiveDamagePercentage;
GroupAttack = monsterData.GroupAttack;
HasMode = monsterData.HasMode;
HostilityType = monsterData.RawHostility;
IconId = monsterData.IconId;
IsPercent = monsterData.IsPercent;
JobXp = monsterData.JobXp;
Level = monsterData.BaseLevel;
LightResistance = monsterData.BaseLightResistance;
MagicDefence = monsterData.MagicDefence;
MagicMpFactor = monsterData.MagicMpFactor;
MeleeHpFactor = monsterData.MeleeHpFactor;
MinimumAttackRange = monsterData.MinimumAttackRange;
Id = monsterData.MonsterVNum;
Name = monsterData.Name;
NoticeRange = monsterData.NoticeRange;
OnDefenseOnlyOnce = monsterData.OnDefenseOnlyOnce;
PermanentEffect = monsterData.PermanentEffect;
Race = (byte)monsterData.MonsterRaceType;
RaceType = monsterData.MonsterRaceSubType;
RangeDodgeFactor = monsterData.RangeDodgeFactor;
RespawnTime = (int)(monsterData.BaseRespawnTime.TotalMilliseconds / 100);
SpawnMobOrColor = monsterData.SpawnMobOrColor;
Speed = monsterData.BaseSpeed;
SpriteSize = monsterData.SpriteSize;
TakeDamages = monsterData.TakeDamages;
VNumRequired = monsterData.VNumRequired;
WaterResistance = monsterData.BaseWaterResistance;
WeaponLevel = monsterData.WeaponLevel;
WinfoValue = monsterData.WinfoValue;
Xp = monsterData.Xp;
MaxTries = monsterData.MaxTries;
CollectionCooldown = monsterData.CollectionCooldown;
CollectionDanceTime = monsterData.CollectionDanceTime;
TeleportRemoveFromInventory = monsterData.TeleportRemoveFromInventory;
HasDash = monsterData.HasDash;
BCards = monsterData.BCards;
ModeBCards = monsterData.ModeBCards;
Drops = monsterData.Drops;
MonsterSkills = monsterData.MonsterSkills;
if (monsterData is NpcMonsterDto npcMonsterDto)
{
Skills = npcMonsterDto.Skills;
}
}
public short BaseCloseDefence => CloseDefence;
public short BaseConcentrate => Concentrate;
public short BaseCriticalChance => CriticalChance;
public short BaseCriticalRate => CriticalRate;
public int BaseDamageMaximum => DamageMaximum;
public int BaseDamageMinimum => DamageMinimum;
public short BaseDarkResistance => DarkResistance;
public int BaseMaxHp => MaxHp;
public int BaseMaxMp => MaxMp;
public byte BaseElement => Element;
public short BaseElementRate => ElementRate;
public short BaseFireResistance => FireResistance;
public int RawHostility => HostilityType;
public byte BaseLevel => Level;
public short BaseLightResistance => LightResistance;
public int MonsterVNum => Id;
public MonsterRaceType MonsterRaceType => (MonsterRaceType)Race;
public byte MonsterRaceSubType => RaceType;
public byte BaseSpeed => Speed;
public short BaseWaterResistance => WaterResistance;
public TimeSpan BaseRespawnTime => TimeSpan.FromMilliseconds(RespawnTime * 100);
public FactionType? SuggestedFaction { get; set; }
public IReadOnlyList<DropDTO> Drops { get; set; }
public bool CanSeeInvisible { get; set; }
public IReadOnlyList<BCardDTO> BCards { get; set; }
public IReadOnlyList<BCardDTO> ModeBCards { get; set; }
public IReadOnlyList<INpcMonsterSkill> MonsterSkills { get; set; } = new List<INpcMonsterSkill>();
}