feat: add 'cleanse' skill to elite enemies and adjust deck panel layout

- Add post-battle 'cleanse' skills (value 4/8/13) to three elite enemy cards
- Remove 'enfeeble' pre-battle skill from two elite enemies, increase their drain values
- Reorganize SkirmishDraftScene UI: expand vertical spacing for commander slots and remove rarity pick counters to reduce clutter and improve layout consistency
This commit is contained in:
Brian Fertig 2026-04-03 20:21:25 -06:00
parent d4d9b25c72
commit e6049b6985
2 changed files with 31 additions and 80 deletions

View File

@ -4022,6 +4022,12 @@
"name": "drain",
"value": 7,
"trigger": "preBattle"
},
{
"name": "cleanse",
"value": 4,
"all": true,
"trigger": "postBattle"
}
]
},
@ -4035,6 +4041,12 @@
"name": "drain",
"value": 10,
"trigger": "preBattle"
},
{
"name": "cleanse",
"value": 8,
"all": true,
"trigger": "postBattle"
}
]
},
@ -4048,6 +4060,12 @@
"name": "drain",
"value": 15,
"trigger": "preBattle"
},
{
"name": "cleanse",
"value": 13,
"all": true,
"trigger": "postBattle"
}
]
}
@ -4068,12 +4086,6 @@
"armor": 2,
"delay": 0,
"skills": [
{
"name": "enfeeble",
"value": 1,
"trigger": "preBattle",
"all": true
},
{
"name": "drain",
"value": 2,
@ -4087,15 +4099,9 @@
"armor": 3,
"delay": 0,
"skills": [
{
"name": "enfeeble",
"value": 2,
"trigger": "preBattle",
"all": true
},
{
"name": "drain",
"value": 3,
"value": 4,
"trigger": "preBattle"
}
]
@ -4108,13 +4114,13 @@
"skills": [
{
"name": "enfeeble",
"value": 3,
"value": 5,
"trigger": "preBattle",
"all": true
},
{
"name": "drain",
"value": 5,
"value": 6,
"trigger": "preBattle"
}
]
@ -4127,13 +4133,13 @@
"skills": [
{
"name": "enfeeble",
"value": 4,
"value": 5,
"trigger": "preBattle",
"all": true
},
{
"name": "drain",
"value": 8,
"value": 10,
"trigger": "preBattle"
}
]
@ -4146,13 +4152,13 @@
"skills": [
{
"name": "enfeeble",
"value": 5,
"value": 8,
"trigger": "preBattle",
"all": true
},
{
"name": "drain",
"value": 11,
"value": 15,
"trigger": "preBattle"
}
]

View File

@ -610,7 +610,7 @@ export class SkirmishDraftScene extends Phaser.Scene {
const { height } = this.scale;
// Fixed vertical zones so sections never overlap
const PLAYER_TOP = 70;
const PLAYER_TOP = 85;
const DIVIDER_Y = height / 2 - 20;
const OPPONENT_TOP = DIVIDER_Y + 14;
const BUTTON_Y = height - 55;
@ -629,36 +629,8 @@ export class SkirmishDraftScene extends Phaser.Scene {
}).setOrigin(0.5);
this.deckPanelGroup.push(yourTitle);
// Player rarity pick counters
y += 18;
{
const rTargets = this._getRarityTargets();
const rarityOrder = ['legendary', 'epic', 'rare', 'common'];
const inCardPhase = ['PLAYER_CARD', 'AI_CARD', 'DRAFT_COMPLETE'].includes(this.draftState);
const currentIdx = this.currentPhaseRarity ? rarityOrder.indexOf(this.currentPhaseRarity) : 999;
const rarityDisplayColors = { legendary: '#886622', epic: '#663388', rare: '#224488', common: '#444444' };
const rarityActiveColors = { legendary: '#ffbb44', epic: '#cc88ff', rare: '#88aaff', common: '#cccccc' };
for (const r of rarityOrder) {
const total = rTargets[r] || 0;
if (total === 0) continue;
const rIdx = rarityOrder.indexOf(r);
const isDone = this.draftState === 'DRAFT_COMPLETE' || (inCardPhase && rIdx < currentIdx);
const isCurrent = r === this.currentPhaseRarity;
const rem = this.playerRemainingPicks[r] || 0;
const label = `${r.charAt(0).toUpperCase() + r.slice(1)}: `;
const status = isDone ? '\u2713' : (inCardPhase ? `${total - rem}/${total}` : `0/${total}`);
const color = isDone ? '#444444' : (isCurrent ? rarityActiveColors[r] : rarityDisplayColors[r]);
const rTxt = this.add.text(PANEL_X + 20, y, label + status, {
fontSize: '12px', color, fontFamily: 'Audiowide'
});
this.deckPanelGroup.push(rTxt);
y += 17;
}
y += 4;
}
// Player commander slot
y += 4;
y += 36;
const pCmd = this.draftedCommander ? this.cardManager.getCard(this.draftedCommander) : null;
const pCmdBg = this.add.rectangle(panelCX, y, PANEL_W - 40, 32, pCmd ? 0x1a3a5c : 0x1a1a2e)
.setStrokeStyle(2, 0xffd700);
@ -711,36 +683,8 @@ export class SkirmishDraftScene extends Phaser.Scene {
}).setOrigin(0.5);
this.deckPanelGroup.push(oppTitle);
// AI rarity pick counters
y += 18;
{
const rTargets = this._getRarityTargets();
const rarityOrder = ['legendary', 'epic', 'rare', 'common'];
const inCardPhase = ['PLAYER_CARD', 'AI_CARD', 'DRAFT_COMPLETE'].includes(this.draftState);
const currentIdx = this.currentPhaseRarity ? rarityOrder.indexOf(this.currentPhaseRarity) : 999;
const rarityDisplayColors = { legendary: '#886622', epic: '#663388', rare: '#224488', common: '#444444' };
const rarityActiveColors = { legendary: '#ffbb44', epic: '#cc88ff', rare: '#88aaff', common: '#cccccc' };
for (const r of rarityOrder) {
const total = rTargets[r] || 0;
if (total === 0) continue;
const rIdx = rarityOrder.indexOf(r);
const isDone = this.draftState === 'DRAFT_COMPLETE' || (inCardPhase && rIdx < currentIdx);
const isCurrent = r === this.currentPhaseRarity;
const rem = this.aiRemainingPicks[r] || 0;
const label = `${r.charAt(0).toUpperCase() + r.slice(1)}: `;
const status = isDone ? '\u2713' : (inCardPhase ? `${total - rem}/${total}` : `0/${total}`);
const color = isDone ? '#444444' : (isCurrent ? rarityActiveColors[r] : rarityDisplayColors[r]);
const rTxt = this.add.text(PANEL_X + 20, y, label + status, {
fontSize: '12px', color, fontFamily: 'Audiowide'
});
this.deckPanelGroup.push(rTxt);
y += 17;
}
y += 4;
}
// AI commander slot
y += 4;
y += 36;
const aCmd = this.aiCommander ? this.cardManager.getCard(this.aiCommander) : null;
const aCmdBg = this.add.rectangle(panelCX, y, PANEL_W - 40, 32, aCmd ? 0x3a1a1a : 0x1a1a2e)
.setStrokeStyle(2, aCmd ? 0xff6644 : 0x444444);
@ -1229,8 +1173,9 @@ export class SkirmishDraftScene extends Phaser.Scene {
_makeBackButton() {
const bg = this.add.rectangle(80, 45, 160, 50, 0x333333)
.setInteractive({ useHandCursor: true })
.setStrokeStyle(1, 0x888888);
this.add.text(80, 45, 'Back', { fontSize: '18px', color: '#ffffff', fontFamily: 'Audiowide' }).setOrigin(0.5);
.setStrokeStyle(1, 0x888888)
.setDepth(12);
this.add.text(80, 45, 'Back', { fontSize: '18px', color: '#ffffff', fontFamily: 'Audiowide' }).setOrigin(0.5).setDepth(12);
bg.on('pointerdown', () => {
this.sound.play('sfx_menu_select', { volume: 0.7 });
this.scene.start('SkirmishDeckSelectScene', {