bump mission rewards and add first-clear card logic
- Increased gold rewards for several Imperial missions to improve progression pacing. - Reformatted `missions.json` for consistency (multi-line arrays). - Set default starting gold to 300 in `SaveManager`. - Implemented first-clear-only card rewards in `BattleScene`; subsequent wins grant gold but no duplicate cards. - Added consolation gold (50% of mission reward) on defeat. - Fixed `CollectionScene` input priority and improved terminal typing speed and line wrapping.
This commit is contained in:
parent
8b6ccba887
commit
739cf18603
Binary file not shown.
|
After Width: | Height: | Size: 181 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 157 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 178 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 165 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 181 KiB |
|
|
@ -668,7 +668,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 1,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -681,7 +681,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 2,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -694,7 +694,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 3,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -707,7 +707,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 4,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -720,7 +720,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 5,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -972,7 +972,7 @@
|
|||
{
|
||||
"name": "jam",
|
||||
"value": 2,
|
||||
"trigger": "on_attack"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "protect",
|
||||
|
|
@ -990,7 +990,7 @@
|
|||
{
|
||||
"name": "jam",
|
||||
"value": 4,
|
||||
"trigger": "on_attack"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "protect",
|
||||
|
|
@ -1008,7 +1008,7 @@
|
|||
{
|
||||
"name": "jam",
|
||||
"value": 6,
|
||||
"trigger": "on_attack"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "protect",
|
||||
|
|
@ -1026,7 +1026,7 @@
|
|||
{
|
||||
"name": "jam",
|
||||
"value": 9,
|
||||
"trigger": "on_attack"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "protect",
|
||||
|
|
@ -1044,7 +1044,7 @@
|
|||
{
|
||||
"name": "jam",
|
||||
"value": 12,
|
||||
"trigger": "on_attack"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "protect",
|
||||
|
|
@ -1457,7 +1457,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 2,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "heal",
|
||||
|
|
@ -1475,7 +1475,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 3,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "heal",
|
||||
|
|
@ -1493,7 +1493,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 5,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "heal",
|
||||
|
|
@ -1511,7 +1511,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 7,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "heal",
|
||||
|
|
@ -1529,7 +1529,7 @@
|
|||
{
|
||||
"name": "legion",
|
||||
"value": 9,
|
||||
"trigger": "passive"
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "heal",
|
||||
|
|
@ -3753,7 +3753,7 @@
|
|||
]
|
||||
}
|
||||
],
|
||||
"flavorText": "He demands a tithe of blood from all — even himself.",
|
||||
"flavorText": "He demands a tithe of blood from all \u2014 even himself.",
|
||||
"artKey": "bt_bloodlord_1"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3802,6 +3802,8 @@ export class BattleScene extends Phaser.Scene {
|
|||
}
|
||||
|
||||
_showResult() {
|
||||
if (this._resultShown) return;
|
||||
this._resultShown = true;
|
||||
if (this.autoTimer) this.autoTimer.remove();
|
||||
const { width, height } = this.scale;
|
||||
const won = this.engine.winner === 'player';
|
||||
|
|
|
|||
|
|
@ -14,6 +14,11 @@ export class BootScene extends Phaser.Scene {
|
|||
// Load all JSON data files
|
||||
this.load.image('vs', 'assets/images/ui/vs.png');
|
||||
this.load.image('attacksFirst', 'assets/images/ui/attacksFirst.png');
|
||||
this.load.image('card_back_imperial', 'assets/images/cards/card_back_imperial.png');
|
||||
this.load.image('card_back_raider', 'assets/images/cards/card_back_raider.png');
|
||||
this.load.image('card_back_bloodthirsty', 'assets/images/cards/card_back_bloodthirsty.png');
|
||||
this.load.image('card_back_xeno', 'assets/images/cards/card_back_xeno.png');
|
||||
this.load.image('card_back_right', 'assets/images/cards/card_back_right.png');
|
||||
this.load.spritesheet('attacks', 'assets/images/spritesheets/attacks.png', { frameWidth: 460, frameHeight: 460 });
|
||||
this.load.json('cards', 'data/cards.json');
|
||||
this.load.json('packs', 'data/packs.json');
|
||||
|
|
|
|||
|
|
@ -16,6 +16,14 @@ const RARITY_COLORS = {
|
|||
legendary: 0xffaa00
|
||||
};
|
||||
|
||||
const CARD_BACK_KEYS = {
|
||||
imperial: 'card_back_imperial',
|
||||
raider: 'card_back_raider',
|
||||
bloodthirsty: 'card_back_bloodthirsty',
|
||||
xeno: 'card_back_xeno',
|
||||
righteous: 'card_back_right'
|
||||
};
|
||||
|
||||
const FACTION_LABELS = {
|
||||
imperial: 'IMPERIAL',
|
||||
raider: 'RAIDER',
|
||||
|
|
@ -272,37 +280,10 @@ export class StoreScene extends Phaser.Scene {
|
|||
// Card back container
|
||||
const backContainer = this.add.container(cx, cardY).setDepth(101);
|
||||
|
||||
// Back rectangle
|
||||
const backRect = this.add.rectangle(0, 0, CARD_W, CARD_H, 0x1a1a2e)
|
||||
.setStrokeStyle(3, factionColor);
|
||||
backContainer.add(backRect);
|
||||
|
||||
// Cross-hatch pattern
|
||||
const hatch = this.add.graphics();
|
||||
const hatchAlpha = 0.15;
|
||||
hatch.lineStyle(1, factionColor, hatchAlpha);
|
||||
for (let d = -CARD_H; d < CARD_W + CARD_H; d += 18) {
|
||||
hatch.lineBetween(
|
||||
Math.max(-CARD_W / 2, d - CARD_H / 2), Math.max(-CARD_H / 2, -d + CARD_W / 2 - CARD_H),
|
||||
Math.min(CARD_W / 2, d + CARD_H / 2), Math.min(CARD_H / 2, -d + CARD_W / 2 + CARD_H)
|
||||
);
|
||||
}
|
||||
backContainer.add(hatch);
|
||||
|
||||
// Center emblem
|
||||
const emblemCircle = this.add.circle(0, -15, 50, factionColor, 0.4)
|
||||
.setStrokeStyle(3, factionColor, 0.8);
|
||||
backContainer.add(emblemCircle);
|
||||
const questionMark = this.add.text(0, -18, '?', {
|
||||
fontSize: '52px', color: '#ffffff', fontFamily: 'RaiderCrusader'
|
||||
}).setOrigin(0.5).setAlpha(0.7);
|
||||
backContainer.add(questionMark);
|
||||
|
||||
// Faction label on back
|
||||
const backLabel = this.add.text(0, 90, FACTION_LABELS[pack.faction] || '', {
|
||||
fontSize: '16px', color: '#ffffff', fontFamily: 'Audiowide'
|
||||
}).setOrigin(0.5).setAlpha(0.4);
|
||||
backContainer.add(backLabel);
|
||||
// Card back image
|
||||
const backKey = CARD_BACK_KEYS[pack.faction] || 'card_back_imperial';
|
||||
const backImg = this.add.image(0, 0, backKey).setDisplaySize(CARD_W, CARD_H);
|
||||
backContainer.add(backImg);
|
||||
|
||||
// Special golden border
|
||||
if (card._slotSpecial) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue