Ultraworked with [Sisyphus](https://github.com/code-yeonggu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
69 lines
2.6 KiB
C#
69 lines
2.6 KiB
C#
using UnityEngine;
|
|
using Colosseum.Stats;
|
|
|
|
namespace Colosseum.Enemy
|
|
{
|
|
/// <summary>
|
|
/// 적 캐릭터 데이터. 기본 스탯과 보상을 정의합니다.
|
|
/// </summary>
|
|
[CreateAssetMenu(fileName = "NewEnemyData", menuName = "Colosseum/Enemy Data")]
|
|
public class EnemyData : ScriptableObject
|
|
{
|
|
[Header("기본 정보")]
|
|
[SerializeField] private string enemyName;
|
|
[TextArea(2, 4)]
|
|
[SerializeField] private string description;
|
|
[SerializeField] private Sprite icon;
|
|
|
|
[Header("기본 스탯")]
|
|
[Min(1f)] [SerializeField] private float baseStrength = 10f;
|
|
[Min(1f)] [SerializeField] private float baseDexterity = 10f;
|
|
[Min(1f)] [SerializeField] private float baseIntelligence = 10f;
|
|
[Min(1f)] [SerializeField] private float baseVitality = 10f;
|
|
[Min(1f)] [SerializeField] private float baseWisdom = 10f;
|
|
[Min(1f)] [SerializeField] private float baseSpirit = 10f;
|
|
|
|
[Header("이동")]
|
|
[Min(0f)] [SerializeField] private float moveSpeed = 3f;
|
|
[Min(0f)] [SerializeField] private float rotationSpeed = 10f;
|
|
|
|
[Header("전투")]
|
|
[Min(0f)] [SerializeField] private float aggroRange = 10f;
|
|
[Min(0f)] [SerializeField] private float attackRange = 2f;
|
|
[Min(0f)] [SerializeField] private float attackCooldown = 1f;
|
|
|
|
// Properties
|
|
public string EnemyName => enemyName;
|
|
public string Description => description;
|
|
public Sprite Icon => icon;
|
|
|
|
public float BaseStrength => baseStrength;
|
|
public float BaseDexterity => baseDexterity;
|
|
public float BaseIntelligence => baseIntelligence;
|
|
public float BaseVitality => baseVitality;
|
|
public float BaseWisdom => baseWisdom;
|
|
public float BaseSpirit => baseSpirit;
|
|
|
|
public float MoveSpeed => moveSpeed;
|
|
public float RotationSpeed => rotationSpeed;
|
|
public float AggroRange => aggroRange;
|
|
public float AttackRange => attackRange;
|
|
public float AttackCooldown => attackCooldown;
|
|
|
|
/// <summary>
|
|
/// CharacterStats에 기본 스탯 적용
|
|
/// </summary>
|
|
public void ApplyBaseStats(CharacterStats stats)
|
|
{
|
|
if (stats == null) return;
|
|
|
|
stats.Strength.BaseValue = baseStrength;
|
|
stats.Dexterity.BaseValue = baseDexterity;
|
|
stats.Intelligence.BaseValue = baseIntelligence;
|
|
stats.Vitality.BaseValue = baseVitality;
|
|
stats.Wisdom.BaseValue = baseWisdom;
|
|
stats.Spirit.BaseValue = baseSpirit;
|
|
}
|
|
}
|
|
}
|