feat(fixer): add timed combat boost
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package games.dmg.spigottyrant;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
final class FixerAbilityServiceTest {
|
||||
private static final Instant NOW = Instant.parse("2026-08-14T12:00:00Z");
|
||||
private final FixerAbilityService service = new FixerAbilityService(
|
||||
new AbilityReadinessService(), PluginSettings.from(Map.of())
|
||||
);
|
||||
|
||||
@Test
|
||||
void boostConsumesItemAndRecordsNormalOrNearTyrantHeartTier() {
|
||||
PlayerState ready = new PlayerState(
|
||||
UUID.fromString("11111111-1111-1111-1111-111111111111"), "Fixer",
|
||||
Optional.empty(), Optional.empty(), TyrantClass.FIXER, Optional.empty(),
|
||||
Map.of(), Set.of(Ability.FIXER_BOOST), java.util.List.of()
|
||||
);
|
||||
|
||||
FixerUseResult normal = service.activate(ready, NOW, false);
|
||||
FixerUseResult near = service.activate(ready, NOW, true);
|
||||
|
||||
assertEquals(AbilityUseStatus.ACTIVATED, normal.status());
|
||||
assertEquals(2, normal.heartRows());
|
||||
assertEquals(3, near.heartRows());
|
||||
assertEquals(NOW.plusSeconds(600), normal.player().cooldownEnds()
|
||||
.get(Ability.FIXER_BOOST_ACTIVE));
|
||||
assertEquals(NOW.plusSeconds(3600), normal.player().cooldownEnds()
|
||||
.get(Ability.FIXER_BOOST));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user