53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace BattleForge\Domain;
|
|
|
|
final class AbilityCatalog
|
|
{
|
|
/**
|
|
* @return array<string, AbilityDefinition>
|
|
*/
|
|
public static function definitions(): array
|
|
{
|
|
static $cache = null;
|
|
|
|
if ($cache !== null) {
|
|
return $cache;
|
|
}
|
|
|
|
$cache = [
|
|
AbilityId::Heal->value => new AbilityDefinition(
|
|
id: AbilityId::Heal,
|
|
label: 'Heal',
|
|
range: 2,
|
|
areaRadius: 0,
|
|
target: AbilityDefinition::TARGET_ALLY,
|
|
effect: AbilityDefinition::EFFECT_RESTORE_HEALTH,
|
|
effectValue: 5,
|
|
),
|
|
AbilityId::AreaDamage->value => new AbilityDefinition(
|
|
id: AbilityId::AreaDamage,
|
|
label: 'Area Damage',
|
|
range: 3,
|
|
areaRadius: 1,
|
|
target: AbilityDefinition::TARGET_TILE,
|
|
effect: AbilityDefinition::EFFECT_DEAL_DAMAGE,
|
|
effectValue: 3,
|
|
),
|
|
AbilityId::Buff->value => new AbilityDefinition(
|
|
id: AbilityId::Buff,
|
|
label: 'Rally',
|
|
range: 1,
|
|
areaRadius: 0,
|
|
target: AbilityDefinition::TARGET_ALLY,
|
|
effect: AbilityDefinition::EFFECT_APPLY_BUFF,
|
|
effectValue: 2,
|
|
),
|
|
];
|
|
|
|
return $cache;
|
|
}
|
|
}
|