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.
78 lines
2.0 KiB
78 lines
2.0 KiB
using BigFloatNumerics;
|
|
using System;
|
|
using System.Numerics;
|
|
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "ProtectTheMerchantDgProp", menuName = "ScriptableObject/GameMod/ProtectTheMerchantDgProp")]
|
|
public class ProtectTheMerchantDgProp : 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 MerchantCreator
|
|
{
|
|
public CharacterProperty property;
|
|
public float hp;
|
|
|
|
public BigFloat GetHp() => hp;
|
|
}
|
|
|
|
[Serializable]
|
|
public struct EnemyCreator
|
|
{
|
|
[Serializable]
|
|
struct StatProperty
|
|
{
|
|
public float baseV;
|
|
public float multiplierPerLevel;
|
|
public float adderPerLevel;
|
|
}
|
|
|
|
public CharacterProperty property;
|
|
public uint countPerWave;
|
|
|
|
[SerializeField] StatProperty hpStat;
|
|
[SerializeField] float atkStat;
|
|
|
|
public BigFloat GetHp(uint level)
|
|
{
|
|
return Formula.Calculate(hpStat.baseV, hpStat.multiplierPerLevel, hpStat.adderPerLevel, level);
|
|
}
|
|
|
|
public BigFloat GetAtk() => atkStat;
|
|
}
|
|
|
|
public static string CodeName => "ProtectTheMerchantDg";
|
|
public override string codeName => CodeName;
|
|
|
|
public uint openStage = 1;
|
|
|
|
public int waveCount = 1;
|
|
public float waveIntervalTime = 1;
|
|
|
|
public MerchantCreator merchantCreator;
|
|
public EnemyCreator[] normalEnemyCreator;
|
|
|
|
public float limitTime = 1;
|
|
|
|
public GoodsCreator[] rewards;
|
|
|
|
public override GameModData CreateData(GameModPlayProperty playProperty)
|
|
{
|
|
Debug.Assert(playProperty is ProtectTheMerchantDgPlayProp, "Invalid play property type.");
|
|
return new ProtectTheMerchantDgData(this, playProperty as ProtectTheMerchantDgPlayProp);
|
|
}
|
|
}
|