Implement passive relics and six-family defense towers

This commit is contained in:
2026-09-23 18:11:38 +09:00
parent 5d11288a6f
commit c94cbda1e6
21 changed files with 2882 additions and 152 deletions
@@ -73,6 +73,19 @@ namespace BumpCombat.Tests
}
}
[TestCase(EnemyDamageSource.Player, true)]
[TestCase(EnemyDamageSource.PassiveRelicAttack, true)]
[TestCase(EnemyDamageSource.PassiveRelicExplosion, true)]
[TestCase(EnemyDamageSource.PassiveRelicTransferredIgnite, true)]
[TestCase(EnemyDamageSource.Tower, false)]
public void RewardKillCredit_ExcludesTowers(
EnemyDamageSource source,
bool expected)
{
Assert.That(PassiveRelicRules.IsPlayerRewardKill(source),
Is.EqualTo(expected));
}
private static void SetField<T>(ActiveArtifactDefinition definition, string fieldName, T value)
{
typeof(ActiveArtifactDefinition)
@@ -82,32 +95,19 @@ namespace BumpCombat.Tests
[Test]
public void AvailableRelics_ExcludesOwnedIdsAndPreservesCatalogOrder()
{
PassiveRelicId[] all = PassiveRelicRules.GetAvailableRelics(
PassiveRelicId[] catalog = PassiveRelicRules.GetAvailableRelics(
System.Array.Empty<PassiveRelicId>());
PassiveRelicId[] expected = (PassiveRelicId[])
System.Enum.GetValues(typeof(PassiveRelicId));
Assert.That(catalog, Is.EqualTo(expected));
Assert.That(catalog.Length, Is.EqualTo(20));
PassiveRelicId[] afterOne = PassiveRelicRules.GetAvailableRelics(
new[] { PassiveRelicId.ResonanceCore });
PassiveRelicId[] afterAll = PassiveRelicRules.GetAvailableRelics(
new[]
{
PassiveRelicId.TwinHornTalisman,
PassiveRelicId.ResonanceCore,
PassiveRelicId.RuptureSeed,
});
Assert.That(all, Is.EqualTo(new[]
{
PassiveRelicId.TwinHornTalisman,
PassiveRelicId.ResonanceCore,
PassiveRelicId.RuptureSeed,
}));
Assert.That(afterOne, Is.EqualTo(new[]
{
PassiveRelicId.TwinHornTalisman,
PassiveRelicId.RuptureSeed,
}));
Assert.That(afterAll, Is.Empty);
Assert.That(afterOne, Has.None.EqualTo(PassiveRelicId.ResonanceCore));
Assert.That(afterOne.Length, Is.EqualTo(19));
Assert.That(PassiveRelicRules.GetAvailableRelics(expected), Is.Empty);
}
[Test]
public void RuptureDamageAndRadiusScaleFromEnemyHealthAndPlayerBody()
{
@@ -116,6 +116,7 @@ namespace BumpCombat.Tests
}
[TestCase(EnemyDamageSource.Player, true)]
[TestCase(EnemyDamageSource.PassiveRelicAttack, true)]
[TestCase(EnemyDamageSource.Tower, false)]
[TestCase(EnemyDamageSource.PassiveRelicExplosion, false)]
[TestCase(EnemyDamageSource.None, false)]