Files
tiny_tackle_heroes/Assets/_Project/Scripts/Constants/LevelUpConstants.cs
T

74 lines
3.7 KiB
C#

using System;
using BumpCombat.Progression;
using UnityEngine;
namespace BumpCombat.Constants
{
[Serializable]
public struct MissionTuning
{
[Tooltip("미션 목록에 표시할 이름")]
public string DisplayName;
[Tooltip("목표가 포함된 조건 설명. {0}은 목표 수, {1}은 측정 시간창입니다.")]
public string ConditionFormat;
[Min(1)] public int Target;
[Min(0)] public int ExperienceReward;
public bool RequiresGuardUnlock;
public bool RequiresChargeUnlock;
public MissionTuning(
string displayName,
string conditionFormat,
int target,
int experienceReward,
bool requiresGuardUnlock = false,
bool requiresChargeUnlock = false)
{
DisplayName = displayName;
ConditionFormat = conditionFormat;
Target = target;
ExperienceReward = experienceReward;
RequiresGuardUnlock = requiresGuardUnlock;
RequiresChargeUnlock = requiresChargeUnlock;
}
}
[CreateAssetMenu(menuName = "BumpCombat/Constants/Level Up")]
public sealed class LevelUpConstants : ScriptableObject
{
[Header("경험치")]
[Tooltip("레벨 1에서 다음 레벨까지 필요한 경험치"), Min(1)] public int BaseExperienceToNextLevel = 10;
[Tooltip("레벨이 하나 오를 때마다 늘어나는 필요 경험치"), Min(0)] public int AdditionalExperiencePerLevel = 5;
[Header("레벨업 선택")]
[Tooltip("레벨업 때 표시할 모디파이어 후보 수 (UI 지원 범위: 1~3)"), Range(1, 3)] public int OptionCount = 3;
[Tooltip("레벨업 후보 모디파이어 정의 에셋")]
public ModifierDefinition[] ModifierDefinitions = Array.Empty<ModifierDefinition>();
[Header("미션")]
[Tooltip("파죽지세의 측정 시간창 (전투초)"), Min(0.1f)] public float RampageWindowSeconds = 3f;
[Tooltip("순서: 일반 적 처치, XP 구슬, 범핑, 아티팩트, 후방 범핑, 다중 적중, 공격 취소, 가드, 실드, 강화기, 파죽지세")]
public MissionTuning[] Missions =
{
new("첫 소탕", "소환수가 아닌 일반 몬스터 {0}마리 처치", 100, 10),
new("성장의 발판", "경험치 구슬 {0}개 실제 습득", 50, 10),
new("몸으로 돌파", "실제 피해가 발생한 몸통박치기 {0}회", 60, 10),
new("아티팩트 활용", "서로 다른 아티팩트 발동 {0}회에서 각각 유효 적중", 10, 10),
new("등을 노려라", "서로 다른 적 {0}마리에게 후방 몸통박치기 성공", 15, 15),
new("한 번에 몰아서", "아티팩트 한 번의 발동으로 서로 다른 적 {0}마리 유효 적중", 5, 15),
new("빈틈 차단", "일반 적의 준비/활성 공격을 후방 몸통박치기로 실제 취소 {0}회", 8, 15),
new("정확한 방어", "서로 다른 가드 발동 {0}회에서 실제 공격 차단", 3, 15, true),
new("색을 맞춰라", "맞는 색 아티팩트로 실드의 남은 요구 횟수 실제 차감 {0}회", 6, 15),
new("강화의 순간", "서로 다른 충전 강화기 발동 {0}회에서 각각 유효 적중", 3, 15, false, true),
new("파죽지세", "연속된 {1}전투초 안에 소환수가 아닌 적 {0}마리 처치", 10, 20),
};
public MissionTuning GetMission(int index, MissionTuning fallback)
{
return Missions != null && index >= 0 && index < Missions.Length
? Missions[index]
: fallback;
}
}
}