You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.8 KiB
67 lines
1.8 KiB
using BigFloatNumerics;
|
|
using System;
|
|
using System.Numerics;
|
|
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "DeepCaveDungeonProperty", menuName = "ScriptableObject/GameMod/DeepCaveDungeonProperty")]
|
|
public class DeepCaveDungeonProperty : GameModProperty
|
|
{
|
|
[Serializable]
|
|
public struct GoodsCreator
|
|
{
|
|
public ItemProp itemProp;
|
|
|
|
public float startCount;
|
|
public float multiplierPerLevel;
|
|
public float adderPerLevel;
|
|
|
|
public BigInteger GetCount(uint level)
|
|
{
|
|
return Formula.Calculate(startCount, multiplierPerLevel, adderPerLevel, level);
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public struct EnemyCreator
|
|
{
|
|
[Serializable]
|
|
struct StatProperty
|
|
{
|
|
public float baseV;
|
|
public float multiplierPerLevel;
|
|
public float adderPerLevel;
|
|
}
|
|
|
|
public CharacterProperty property;
|
|
|
|
[SerializeField] StatProperty hpStat;
|
|
[SerializeField] StatProperty atkStat;
|
|
|
|
public BigFloat GetHp(uint level)
|
|
{
|
|
return Formula.Calculate(hpStat.baseV, hpStat.multiplierPerLevel, hpStat.adderPerLevel, level);
|
|
}
|
|
|
|
public BigFloat GetAtk(uint level)
|
|
{
|
|
return Formula.Calculate(atkStat.baseV, atkStat.multiplierPerLevel, atkStat.adderPerLevel, level);
|
|
}
|
|
}
|
|
|
|
public static string CodeName => "DeepCaveDungeon";
|
|
public override string codeName => CodeName;
|
|
|
|
public uint openStage = 1;
|
|
|
|
public EnemyCreator bossEnemyCreator;
|
|
|
|
public float limitTime = 1;
|
|
|
|
public GoodsCreator[] rewards;
|
|
|
|
public override GameModData CreateData(GameModPlayProperty playProperty)
|
|
{
|
|
Debug.Assert(playProperty is DeepCaveDungeonPlayProperty, "Invalid play property type.");
|
|
return new DeepCaveDungeonData(this, playProperty as DeepCaveDungeonPlayProperty);
|
|
}
|
|
}
|