Initial commit: Tiny Tackle Heroes Unity project
This commit is contained in:
@@ -0,0 +1,278 @@
|
||||
using BumpCombat.Combat;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BumpCombat.Player
|
||||
{
|
||||
public enum ActiveArtifactEffect
|
||||
{
|
||||
Dash,
|
||||
Pulse,
|
||||
Phoenix,
|
||||
Cyclone,
|
||||
ThunderCrash,
|
||||
ChainLightning,
|
||||
}
|
||||
|
||||
[CreateAssetMenu(
|
||||
fileName = "ActiveArtifact",
|
||||
menuName = "BumpCombat/Active Artifact")]
|
||||
public sealed class ActiveArtifactDefinition : ScriptableObject
|
||||
{
|
||||
[SerializeField] private string artifactId;
|
||||
[SerializeField] private string displayName;
|
||||
[SerializeField] private string placeholderSymbol;
|
||||
[SerializeField] private ActiveArtifactEffect effect;
|
||||
[SerializeField] private DamageTag damageTag = DamageTag.Collision;
|
||||
[SerializeField] private Color iconColor = Color.white;
|
||||
[SerializeField] private Color effectColor = Color.white;
|
||||
[SerializeField, Min(0f)] private float normalGaugeCost = 25f;
|
||||
[SerializeField, Min(0f)] private float chargedGaugeCost = 60f;
|
||||
[SerializeField, Min(0.01f)] private float chargeDuration = 0.8f;
|
||||
[SerializeField, Min(0f)] private float normalDamage = 15f;
|
||||
[SerializeField, Min(0f)] private float chargedDamage = 30f;
|
||||
[SerializeField, Min(0f)] private float normalRange = 1.25f;
|
||||
[SerializeField, Min(0f)] private float chargedRange = 2f;
|
||||
[SerializeField, Min(0f)] private float normalKnockback = 1.5f;
|
||||
[SerializeField, Min(0f)] private float chargedKnockback = 3f;
|
||||
[SerializeField, Min(0f)] private float normalWidth = 0.5f;
|
||||
[SerializeField, Min(0f)] private float chargedWidth = 1f;
|
||||
[SerializeField, Min(0f)] private float normalMoveDistance;
|
||||
[SerializeField, Min(0f)] private float chargedMoveDistance;
|
||||
[SerializeField, Min(0f)] private float normalDuration = 0.15f;
|
||||
[SerializeField, Min(0f)] private float chargedDuration = 0.5f;
|
||||
[SerializeField, Min(0.01f)] private float hitInterval = 0.15f;
|
||||
[SerializeField, Min(1)] private int normalMaxTargets = 1;
|
||||
[SerializeField, Min(1)] private int chargedMaxTargets = 12;
|
||||
[SerializeField, Min(1)] private int chargedMaxHitsPerTarget = 1;
|
||||
[SerializeField, Min(0f)] private float chainRange = 2.5f;
|
||||
[SerializeField, Min(1)] private int normalChainDepth = 4;
|
||||
[SerializeField, Min(1)] private int chargedChainDepth = 4;
|
||||
[SerializeField, Min(1)] private int normalBranchCount = 1;
|
||||
[SerializeField, Min(1)] private int chargedBranchCount = 2;
|
||||
[SerializeField, Range(0f, 1f)] private float damageMultiplierPerChain = 0.9f;
|
||||
[SerializeField, Min(0f)] private float normalInvulnerabilityDuration;
|
||||
[SerializeField, Min(0f)] private float chargedInvulnerabilityDuration;
|
||||
[SerializeField, Range(0f, 1f)] private float normalDamageReduction;
|
||||
[SerializeField, Range(0f, 1f)] private float chargedDamageReduction;
|
||||
[SerializeField, Min(0f)] private float normalBuffDuration;
|
||||
[SerializeField, Min(0f)] private float chargedBuffDuration;
|
||||
[SerializeField, Range(0f, 1f)] private float normalMoveSpeedIncrease;
|
||||
[SerializeField, Range(0f, 1f)] private float chargedMoveSpeedIncrease;
|
||||
[SerializeField, Min(0f)] private float normalIgniteDuration;
|
||||
[SerializeField, Min(0f)] private float chargedIgniteDuration;
|
||||
[SerializeField, Min(0f)] private float normalIgniteInterval = 0.5f;
|
||||
[SerializeField, Min(0f)] private float chargedIgniteInterval = 0.5f;
|
||||
[SerializeField, Min(0f)] private float normalIgniteTickDamage;
|
||||
[SerializeField, Min(0f)] private float chargedIgniteTickDamage;
|
||||
[SerializeField, Range(0f, 1f)] private float normalVulnerabilityIncrease;
|
||||
[SerializeField, Range(0f, 1f)] private float chargedVulnerabilityIncrease;
|
||||
[SerializeField, Min(0f)] private float normalVulnerabilityDuration;
|
||||
[SerializeField, Min(0f)] private float chargedVulnerabilityDuration;
|
||||
[SerializeField, Range(0f, 1f)] private float normalShockChance;
|
||||
[SerializeField, Range(0f, 1f)] private float chargedShockChance;
|
||||
[SerializeField, Range(0f, 1f)] private float normalShockIncrease;
|
||||
[SerializeField, Range(0f, 1f)] private float chargedShockIncrease;
|
||||
[SerializeField, Min(0f)] private float normalShockDuration;
|
||||
[SerializeField, Min(0f)] private float chargedShockDuration;
|
||||
|
||||
public string ArtifactId => artifactId;
|
||||
public string DisplayName => displayName;
|
||||
public string PlaceholderSymbol => placeholderSymbol;
|
||||
public ActiveArtifactEffect Effect => effect;
|
||||
public ArtifactColor ArtifactColor => GetArtifactColor(effect);
|
||||
public DamageTag DamageTag => damageTag;
|
||||
public Color IconColor => iconColor;
|
||||
public Color EffectColor => effectColor;
|
||||
public float NormalGaugeCost => normalGaugeCost;
|
||||
public float ChargedGaugeCost => chargedGaugeCost;
|
||||
public float ChargeDuration => chargeDuration;
|
||||
public float NormalDamage => normalDamage;
|
||||
public float ChargedDamage => chargedDamage;
|
||||
public float NormalRange => normalRange;
|
||||
public float ChargedRange => chargedRange;
|
||||
public float NormalKnockback => normalKnockback;
|
||||
public float ChargedKnockback => chargedKnockback;
|
||||
public float NormalWidth => normalWidth;
|
||||
public float ChargedWidth => chargedWidth;
|
||||
public float NormalMoveDistance => normalMoveDistance;
|
||||
public float ChargedMoveDistance => chargedMoveDistance;
|
||||
public float NormalDuration => normalDuration;
|
||||
public float ChargedDuration => chargedDuration;
|
||||
public float HitInterval => hitInterval;
|
||||
public int NormalMaxTargets => normalMaxTargets;
|
||||
public int ChargedMaxTargets => chargedMaxTargets;
|
||||
public int ChargedMaxHitsPerTarget => chargedMaxHitsPerTarget;
|
||||
public float ChainRange => chainRange;
|
||||
public int NormalChainDepth => normalChainDepth;
|
||||
public int ChargedChainDepth => chargedChainDepth;
|
||||
public int NormalBranchCount => normalBranchCount;
|
||||
public int ChargedBranchCount => chargedBranchCount;
|
||||
public float DamageMultiplierPerChain => damageMultiplierPerChain;
|
||||
public float NormalInvulnerabilityDuration => normalInvulnerabilityDuration;
|
||||
public float ChargedInvulnerabilityDuration => chargedInvulnerabilityDuration;
|
||||
public float NormalDamageReduction => normalDamageReduction;
|
||||
public float ChargedDamageReduction => chargedDamageReduction;
|
||||
public float NormalBuffDuration => normalBuffDuration;
|
||||
public float ChargedBuffDuration => chargedBuffDuration;
|
||||
public float NormalMoveSpeedIncrease => normalMoveSpeedIncrease;
|
||||
public float ChargedMoveSpeedIncrease => chargedMoveSpeedIncrease;
|
||||
public float NormalIgniteDuration => normalIgniteDuration;
|
||||
public float ChargedIgniteDuration => chargedIgniteDuration;
|
||||
public float NormalIgniteInterval => normalIgniteInterval;
|
||||
public float ChargedIgniteInterval => chargedIgniteInterval;
|
||||
public float NormalIgniteTickDamage => normalIgniteTickDamage;
|
||||
public float ChargedIgniteTickDamage => chargedIgniteTickDamage;
|
||||
public float NormalVulnerabilityIncrease => normalVulnerabilityIncrease;
|
||||
public float ChargedVulnerabilityIncrease => chargedVulnerabilityIncrease;
|
||||
public float NormalVulnerabilityDuration => normalVulnerabilityDuration;
|
||||
public float ChargedVulnerabilityDuration => chargedVulnerabilityDuration;
|
||||
public float NormalShockChance => normalShockChance;
|
||||
public float ChargedShockChance => chargedShockChance;
|
||||
public float NormalShockIncrease => normalShockIncrease;
|
||||
public float ChargedShockIncrease => chargedShockIncrease;
|
||||
public float NormalShockDuration => normalShockDuration;
|
||||
public float ChargedShockDuration => chargedShockDuration;
|
||||
|
||||
public static ArtifactColor GetArtifactColor(ActiveArtifactEffect effectKind)
|
||||
{
|
||||
return effectKind switch
|
||||
{
|
||||
ActiveArtifactEffect.Dash
|
||||
or ActiveArtifactEffect.Cyclone => ArtifactColor.Green,
|
||||
ActiveArtifactEffect.Pulse
|
||||
or ActiveArtifactEffect.Phoenix => ArtifactColor.Red,
|
||||
ActiveArtifactEffect.ThunderCrash
|
||||
or ActiveArtifactEffect.ChainLightning => ArtifactColor.Blue,
|
||||
_ => ArtifactColor.Green,
|
||||
};
|
||||
}
|
||||
|
||||
public static Color32 GetArtifactPaletteColor(ArtifactColor color)
|
||||
{
|
||||
return color switch
|
||||
{
|
||||
ArtifactColor.Green => new Color32(103, 231, 178, 255),
|
||||
ArtifactColor.Red => new Color32(255, 100, 100, 255),
|
||||
_ => new Color32(104, 179, 255, 255),
|
||||
};
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public void Configure(
|
||||
string id,
|
||||
string name,
|
||||
string symbol,
|
||||
ActiveArtifactEffect effectKind,
|
||||
DamageTag tag,
|
||||
Color icon,
|
||||
Color effectTint,
|
||||
float normalCost,
|
||||
float chargedCost,
|
||||
float chargeTime,
|
||||
float normalAttackDamage,
|
||||
float chargedAttackDamage,
|
||||
float normalEffectRange,
|
||||
float chargedEffectRange,
|
||||
float normalKnockbackForce,
|
||||
float chargedKnockbackForce,
|
||||
float normalEffectWidth = 0.5f,
|
||||
float chargedEffectWidth = 1f,
|
||||
float normalMovementDistance = 0f,
|
||||
float chargedMovementDistance = 0f,
|
||||
float normalEffectDuration = 0.15f,
|
||||
float chargedEffectDuration = 0.5f,
|
||||
float multiHitInterval = 0.15f,
|
||||
int normalTargetLimit = 1,
|
||||
int chargedTargetLimit = 12,
|
||||
float chainHopRange = 2.5f,
|
||||
int normalMaximumChainDepth = 4,
|
||||
int chargedMaximumChainDepth = 4,
|
||||
int normalBranches = 1,
|
||||
int chargedBranches = 2,
|
||||
float chainDamageMultiplier = 0.9f,
|
||||
float normalInvulnerability = 0f,
|
||||
float chargedInvulnerability = 0f,
|
||||
int chargedHitLimitPerTarget = 1,
|
||||
float normalIncomingDamageReduction = 0f,
|
||||
float chargedIncomingDamageReduction = 0f,
|
||||
float normalPlayerBuffDuration = 0f,
|
||||
float chargedPlayerBuffDuration = 0f,
|
||||
float normalMovementSpeedIncrease = 0f,
|
||||
float chargedMovementSpeedIncrease = 0f,
|
||||
float normalBurnDuration = 0f,
|
||||
float chargedBurnDuration = 0f,
|
||||
float normalBurnInterval = 0.5f,
|
||||
float chargedBurnInterval = 0.5f,
|
||||
float normalBurnTickDamage = 0f,
|
||||
float chargedBurnTickDamage = 0f,
|
||||
float normalBumpVulnerabilityIncrease = 0f,
|
||||
float chargedBumpVulnerabilityIncrease = 0f,
|
||||
float normalBumpVulnerabilityDuration = 0f,
|
||||
float chargedBumpVulnerabilityDuration = 0f,
|
||||
float normalElectrocuteChance = 0f,
|
||||
float chargedElectrocuteChance = 0f,
|
||||
float normalElectrocuteIncrease = 0f,
|
||||
float chargedElectrocuteIncrease = 0f,
|
||||
float normalElectrocuteDuration = 0f,
|
||||
float chargedElectrocuteDuration = 0f)
|
||||
{
|
||||
artifactId = id;
|
||||
displayName = name;
|
||||
placeholderSymbol = symbol;
|
||||
effect = effectKind;
|
||||
damageTag = tag;
|
||||
iconColor = icon;
|
||||
effectColor = effectTint;
|
||||
normalGaugeCost = normalCost;
|
||||
chargedGaugeCost = chargedCost;
|
||||
chargeDuration = chargeTime;
|
||||
normalDamage = normalAttackDamage;
|
||||
chargedDamage = chargedAttackDamage;
|
||||
normalRange = normalEffectRange;
|
||||
chargedRange = chargedEffectRange;
|
||||
normalKnockback = normalKnockbackForce;
|
||||
chargedKnockback = chargedKnockbackForce;
|
||||
normalWidth = normalEffectWidth;
|
||||
chargedWidth = chargedEffectWidth;
|
||||
normalMoveDistance = normalMovementDistance;
|
||||
chargedMoveDistance = chargedMovementDistance;
|
||||
normalDuration = normalEffectDuration;
|
||||
chargedDuration = chargedEffectDuration;
|
||||
hitInterval = multiHitInterval;
|
||||
normalMaxTargets = normalTargetLimit;
|
||||
chargedMaxTargets = chargedTargetLimit;
|
||||
chainRange = chainHopRange;
|
||||
normalChainDepth = normalMaximumChainDepth;
|
||||
chargedChainDepth = chargedMaximumChainDepth;
|
||||
normalBranchCount = normalBranches;
|
||||
chargedBranchCount = chargedBranches;
|
||||
damageMultiplierPerChain = chainDamageMultiplier;
|
||||
normalInvulnerabilityDuration = normalInvulnerability;
|
||||
chargedInvulnerabilityDuration = chargedInvulnerability;
|
||||
chargedMaxHitsPerTarget = chargedHitLimitPerTarget;
|
||||
normalDamageReduction = normalIncomingDamageReduction;
|
||||
chargedDamageReduction = chargedIncomingDamageReduction;
|
||||
normalBuffDuration = normalPlayerBuffDuration;
|
||||
chargedBuffDuration = chargedPlayerBuffDuration;
|
||||
normalMoveSpeedIncrease = normalMovementSpeedIncrease;
|
||||
chargedMoveSpeedIncrease = chargedMovementSpeedIncrease;
|
||||
normalIgniteDuration = normalBurnDuration;
|
||||
chargedIgniteDuration = chargedBurnDuration;
|
||||
normalIgniteInterval = normalBurnInterval;
|
||||
chargedIgniteInterval = chargedBurnInterval;
|
||||
normalIgniteTickDamage = normalBurnTickDamage;
|
||||
chargedIgniteTickDamage = chargedBurnTickDamage;
|
||||
normalVulnerabilityIncrease = normalBumpVulnerabilityIncrease;
|
||||
chargedVulnerabilityIncrease = chargedBumpVulnerabilityIncrease;
|
||||
normalVulnerabilityDuration = normalBumpVulnerabilityDuration;
|
||||
chargedVulnerabilityDuration = chargedBumpVulnerabilityDuration;
|
||||
normalShockChance = normalElectrocuteChance;
|
||||
chargedShockChance = chargedElectrocuteChance;
|
||||
normalShockIncrease = normalElectrocuteIncrease;
|
||||
chargedShockIncrease = chargedElectrocuteIncrease;
|
||||
normalShockDuration = normalElectrocuteDuration;
|
||||
chargedShockDuration = chargedElectrocuteDuration;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user