Skip to content

Commit 078ecbf

Browse files
committed
New skills.
GitOrigin-RevId: e79566876536aa2bdd233ceba7e223147af39079
1 parent b2d8adb commit 078ecbf

7 files changed

+68
-2
lines changed

athena/info/Skill.tsx

+40
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ export enum Skill {
5656
DragonSaboteur = 40,
5757
HighTide = 41,
5858
Jeep = 42,
59+
ShipIncreaseAttackAndRange = 43,
60+
XFighterAttackIncrase = 44,
5961
}
6062

6163
export const Skills = new Set<Skill>([
@@ -90,6 +92,8 @@ export const Skills = new Set<Skill>([
9092
Skill.UnitAbilitySniperImmediateAction,
9193
Skill.UnitInfantryForestAttackAndDefenseIncrease,
9294
Skill.UnitRailDefenseIncreasePowerAttackIncrease,
95+
Skill.ShipIncreaseAttackAndRange,
96+
Skill.XFighterAttackIncrase,
9397
Skill.DragonSaboteur,
9498
Skill.Jeep,
9599
Skill.RecoverAirUnits,
@@ -303,6 +307,16 @@ const skillConfig: Record<
303307
requiresCrystal,
304308
},
305309
[Skill.Jeep]: { charges: 2, cost: 800, group: SkillGroup.Special },
310+
[Skill.ShipIncreaseAttackAndRange]: {
311+
charges: 3,
312+
cost: 1000,
313+
group: SkillGroup.Attack,
314+
},
315+
[Skill.XFighterAttackIncrase]: {
316+
charges: 4,
317+
cost: 1200,
318+
group: SkillGroup.Special,
319+
},
306320
};
307321

308322
export const CampaignOnlySkills = new Set(
@@ -368,6 +382,7 @@ const attackUnitStatusEffects = new Map<Skill, SkillUnitModifierMap>([
368382
[Skill.VampireHeal, new Map([[UnitID.Medic, 0.5]])],
369383
[Skill.DragonSaboteur, new Map([[UnitID.Dragon, 0.1]])],
370384
[Skill.HealInfantryMedicPower, new Map([[UnitID.Medic, 0.5]])],
385+
[Skill.XFighterAttackIncrase, new Map([[UnitID.XFighter, 0.2]])],
371386
]);
372387

373388
const attackPowerStatusEffects: SkillMap = new Map([
@@ -388,10 +403,29 @@ const attackUnitPowerStatusEffects: UnitSkillMap = new Map([
388403
]),
389404
],
390405
[Skill.HealInfantryMedicPower, new Map([[UnitID.Medic, 2]])],
406+
[Skill.XFighterAttackIncrase, new Map([[UnitID.XFighter, 0.5]])],
391407
]);
392408

393409
const attackMovementTypeStatusEffects: MovementSkillMap = new Map([
394410
[Skill.HighTide, new Map([[MovementTypes.Ship, 0.2]])],
411+
[
412+
Skill.ShipIncreaseAttackAndRange,
413+
new Map([
414+
[MovementTypes.Ship, 0.15],
415+
[MovementTypes.Amphibious, 0.15],
416+
[MovementTypes.Air, -0.15],
417+
[MovementTypes.LowAltitude, -0.15],
418+
]),
419+
],
420+
[
421+
Skill.XFighterAttackIncrase,
422+
new Map([
423+
[MovementTypes.Air, 0.1],
424+
[MovementTypes.LowAltitude, 0.1],
425+
[MovementTypes.Amphibious, -0.15],
426+
[MovementTypes.Ship, -0.15],
427+
]),
428+
],
395429
]);
396430

397431
const attackMovementTypePowerStatusEffects: MovementSkillMap = new Map([
@@ -549,6 +583,7 @@ const skillRangePowerEffects = new Map<number, RangeSkillMap>([
549583
[UnitID.Cannon, new Map([[Skill.ArtilleryRangeIncrease, [2, 8]]])],
550584
[UnitID.HeavyArtillery, new Map([[Skill.ArtilleryRangeIncrease, [3, 7]]])],
551585
[UnitID.Artillery, new Map([[Skill.ArtilleryRangeIncrease, [2, 6]]])],
586+
[UnitID.XFighter, new Map([[Skill.XFighterAttackIncrase, [1, 3]]])],
552587
]);
553588

554589
const skillMovementTypeRadiusEffects = new Map<
@@ -565,6 +600,7 @@ const skillMovementTypeRadiusEffects = new Map<
565600
],
566601
[MovementTypes.HeavySoldier, new Map([[Skill.BuyUnitSuperAPU, 1]])],
567602
[MovementTypes.AirInfantry, new Map([[Skill.DragonSaboteur, 1]])],
603+
[MovementTypes.Amphibious, new Map([[Skill.ShipIncreaseAttackAndRange, 1]])],
568604
]);
569605

570606
const skillMovementTypeRadiusPowerEffects = new Map<
@@ -594,6 +630,8 @@ const skillMovementTypeRadiusPowerEffects = new Map<
594630
]),
595631
],
596632
[MovementTypes.AirInfantry, new Map([[Skill.VampireHeal, 2]])],
633+
[MovementTypes.Ship, new Map([[Skill.ShipIncreaseAttackAndRange, 2]])],
634+
[MovementTypes.Amphibious, new Map([[Skill.ShipIncreaseAttackAndRange, 2]])],
597635
]);
598636

599637
const unitCosts = new Map<ID, Map<Skill, number>>([
@@ -1411,12 +1449,14 @@ export function shouldUpgradeUnit(unit: Unit, skill: Skill) {
14111449
case Skill.MovementIncreaseGroundUnitDefenseDecrease:
14121450
case Skill.NoUnitRestrictions:
14131451
case Skill.Sabotage:
1452+
case Skill.ShipIncreaseAttackAndRange:
14141453
case Skill.UnitAbilitySniperImmediateAction:
14151454
case Skill.UnitBattleShipMoveAndAct:
14161455
case Skill.UnitInfantryForestAttackAndDefenseIncrease:
14171456
case Skill.UnitRailDefenseIncreasePowerAttackIncrease:
14181457
case Skill.UnlockPowerStation:
14191458
case Skill.VampireHeal:
1459+
case Skill.XFighterAttackIncrase:
14201460
return false;
14211461
default: {
14221462
skill satisfies never;

athena/info/Unit.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2688,7 +2688,7 @@ export const ReconDrone = new UnitInfo(
26882688
);
26892689

26902690
export const XFighter = new UnitInfo(
2691-
25,
2691+
UnitID.XFighter,
26922692
'X-Fighter',
26932693
'Amira',
26942694
'female',

athena/info/UnitID.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default {
99
Flamethrower: 15,
1010
Saboteur: 16,
1111
AcidBomber: 22,
12+
XFighter: 25,
1213
Medic: 26,
1314
Dinosaur: 36,
1415
SuperTank: 38,

dionysus/lib/shouldActivatePower.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const shouldConsiderUnitRatio = (skill: Skill) => {
6262
case Skill.NoUnitRestrictions:
6363
case Skill.RecoverAirUnits:
6464
case Skill.Sabotage:
65+
case Skill.ShipIncreaseAttackAndRange:
6566
case Skill.SpawnUnitInfernoJetpack:
6667
case Skill.UnitAbilitySniperImmediateAction:
6768
case Skill.UnitBattleShipMoveAndAct:
@@ -70,6 +71,7 @@ const shouldConsiderUnitRatio = (skill: Skill) => {
7071
case Skill.UnlockPowerStation:
7172
case Skill.UnlockZombie:
7273
case Skill.VampireHeal:
74+
case Skill.XFighterAttackIncrase:
7375
return true;
7476
default: {
7577
skill satisfies never;

hera/lib/getSkillBasedPortrait.tsx

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
Commander,
1212
Dinosaur,
1313
Dragon,
14+
Frigate,
1415
InfernoJetpack,
1516
Jeep,
1617
Medic,
@@ -22,6 +23,7 @@ import {
2223
SuperAPU,
2324
SuperTank,
2425
UnitInfo,
26+
XFighter,
2527
Zombie,
2628
} from '@deities/athena/info/Unit.tsx';
2729
import UnknownTypeError from '@deities/hephaestus/UnknownTypeError.tsx';
@@ -75,6 +77,10 @@ export default function getSkillBasedPortrait(skill: Skill): UnitInfo | null {
7577
return Medic;
7678
case Skill.Jeep:
7779
return Jeep;
80+
case Skill.ShipIncreaseAttackAndRange:
81+
return Frigate;
82+
case Skill.XFighterAttackIncrase:
83+
return XFighter;
7884
case Skill.ArtilleryRangeIncrease:
7985
case Skill.AttackAndDefenseDecreaseEasy:
8086
case Skill.AttackAndDefenseIncreaseHard:

hera/lib/getSkillConfigForDisplay.tsx

+17
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import Repeat from '@iconify-icons/pixelarticons/repeat.js';
3232
import Shield from '@iconify-icons/pixelarticons/shield.js';
3333
import Ship from '@iconify-icons/pixelarticons/ship.js';
3434
import SpeedSlow from '@iconify-icons/pixelarticons/speed-slow.js';
35+
import Ungroup from '@iconify-icons/pixelarticons/ungroup.js';
3536
import Zap from '@iconify-icons/pixelarticons/zap.js';
3637
import { fbt } from 'fbtee';
3738

@@ -383,6 +384,22 @@ export default function getSkillConfigForDisplay(skill: Skill): SkillConfig {
383384
icon: Seatbelt,
384385
name: fbt('Seatbelts On', 'Skill name'),
385386
};
387+
case Skill.ShipIncreaseAttackAndRange:
388+
return {
389+
alpha: 0.3,
390+
borderStyle: 'up2x',
391+
colors: 'red',
392+
icon: Ship,
393+
name: fbt('Seafarer', 'Skill name'),
394+
};
395+
case Skill.XFighterAttackIncrase:
396+
return {
397+
alpha: 0.5,
398+
borderStyle: 'plus',
399+
colors: 'pink',
400+
icon: Ungroup,
401+
name: fbt("Amira's Ace", 'Skill name'),
402+
};
386403
default: {
387404
skill satisfies never;
388405
throw new UnknownTypeError('getSkillConfig', skill);

hera/ui/SkillDescription.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,6 @@ export default memo(function SkillDescription({
10801080
tileDefense?.size ? (
10811081
<TileTypeStatusEffect effects={tileDefense} type="defense" />
10821082
) : null,
1083-
unitRange.size ? <UnitRange color={color} range={unitRange} /> : null,
10841083
healTypes ? <HealTypes color={color} types={healTypes} /> : null,
10851084
cost ? <CostEffect effect={cost} /> : null,
10861085
].filter(isPresent);
@@ -1113,6 +1112,7 @@ export default memo(function SkillDescription({
11131112
<List items={effects} />.
11141113
</>
11151114
) : null,
1115+
unitRange.size ? <UnitRange color={color} range={unitRange} /> : null,
11161116
isPower && activateOnInvasion ? (
11171117
<div className="paragraph">
11181118
<span className={typeStyle} style={{ color: getColor(color) }}>

0 commit comments

Comments
 (0)