Balance adjustments: buff armor/delay on artillery units; rework rally to include caster when `all` is true and scale strike values; nerf flurry damage; simplify counter and bloodpact damage calculations.
This commit is contained in:
parent
14aaf03b33
commit
c3e56fd6aa
|
|
@ -465,7 +465,7 @@
|
|||
{
|
||||
"attack": 2,
|
||||
"health": 6,
|
||||
"armor": 0,
|
||||
"armor": 1,
|
||||
"delay": 0,
|
||||
"skills": [
|
||||
{
|
||||
|
|
@ -478,7 +478,7 @@
|
|||
{
|
||||
"attack": 3,
|
||||
"health": 9,
|
||||
"armor": 0,
|
||||
"armor": 3,
|
||||
"delay": 0,
|
||||
"skills": [
|
||||
{
|
||||
|
|
@ -491,7 +491,7 @@
|
|||
{
|
||||
"attack": 5,
|
||||
"health": 14,
|
||||
"armor": 1,
|
||||
"armor": 5,
|
||||
"delay": 0,
|
||||
"skills": [
|
||||
{
|
||||
|
|
@ -505,7 +505,7 @@
|
|||
"attack": 7,
|
||||
"health": 20,
|
||||
"armor": 1,
|
||||
"delay": 0,
|
||||
"delay": 7,
|
||||
"skills": [
|
||||
{
|
||||
"name": "mortar",
|
||||
|
|
@ -517,7 +517,7 @@
|
|||
{
|
||||
"attack": 10,
|
||||
"health": 30,
|
||||
"armor": 2,
|
||||
"armor": 10,
|
||||
"delay": 0,
|
||||
"skills": [
|
||||
{
|
||||
|
|
@ -545,13 +545,14 @@
|
|||
"delay": 2,
|
||||
"skills": [
|
||||
{
|
||||
"name": "berserk",
|
||||
"name": "rally",
|
||||
"value": 1,
|
||||
"trigger": "on_attack"
|
||||
"all": true,
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "strike",
|
||||
"value": 2,
|
||||
"value": 3,
|
||||
"trigger": "preAttack"
|
||||
}
|
||||
]
|
||||
|
|
@ -563,13 +564,14 @@
|
|||
"delay": 2,
|
||||
"skills": [
|
||||
{
|
||||
"name": "berserk",
|
||||
"value": 2,
|
||||
"trigger": "on_attack"
|
||||
"name": "rally",
|
||||
"value": 3,
|
||||
"all": true,
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "strike",
|
||||
"value": 3,
|
||||
"value": 6,
|
||||
"trigger": "preAttack"
|
||||
}
|
||||
]
|
||||
|
|
@ -581,13 +583,14 @@
|
|||
"delay": 2,
|
||||
"skills": [
|
||||
{
|
||||
"name": "berserk",
|
||||
"value": 2,
|
||||
"trigger": "on_attack"
|
||||
"name": "rally",
|
||||
"value": 6,
|
||||
"all": true,
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "strike",
|
||||
"value": 5,
|
||||
"value": 12,
|
||||
"trigger": "preAttack"
|
||||
}
|
||||
]
|
||||
|
|
@ -599,13 +602,14 @@
|
|||
"delay": 2,
|
||||
"skills": [
|
||||
{
|
||||
"name": "berserk",
|
||||
"value": 3,
|
||||
"trigger": "on_attack"
|
||||
"name": "rally",
|
||||
"value": 12,
|
||||
"all": true,
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "strike",
|
||||
"value": 7,
|
||||
"value": 24,
|
||||
"trigger": "preAttack"
|
||||
}
|
||||
]
|
||||
|
|
@ -617,13 +621,14 @@
|
|||
"delay": 2,
|
||||
"skills": [
|
||||
{
|
||||
"name": "berserk",
|
||||
"value": 5,
|
||||
"trigger": "on_attack"
|
||||
"name": "rally",
|
||||
"value": 24,
|
||||
"all": true,
|
||||
"trigger": "preBattle"
|
||||
},
|
||||
{
|
||||
"name": "strike",
|
||||
"value": 10,
|
||||
"value": 48,
|
||||
"trigger": "preAttack"
|
||||
}
|
||||
]
|
||||
|
|
@ -1480,7 +1485,7 @@
|
|||
"skills": [
|
||||
{
|
||||
"name": "flurry",
|
||||
"value": 2,
|
||||
"value": 1,
|
||||
"trigger": "passive"
|
||||
},
|
||||
{
|
||||
|
|
@ -1498,7 +1503,7 @@
|
|||
"skills": [
|
||||
{
|
||||
"name": "flurry",
|
||||
"value": 2,
|
||||
"value": 1,
|
||||
"trigger": "passive"
|
||||
},
|
||||
{
|
||||
|
|
@ -1516,7 +1521,7 @@
|
|||
"skills": [
|
||||
{
|
||||
"name": "flurry",
|
||||
"value": 3,
|
||||
"value": 1,
|
||||
"trigger": "passive"
|
||||
},
|
||||
{
|
||||
|
|
@ -1534,7 +1539,7 @@
|
|||
"skills": [
|
||||
{
|
||||
"name": "flurry",
|
||||
"value": 5,
|
||||
"value": 1,
|
||||
"trigger": "passive"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -105,10 +105,14 @@ export class SkillProcessor {
|
|||
|
||||
rally(skill, attacker, defender, allies, enemies, context) {
|
||||
const assaultAllies = allies.filter(a => a.type === 'assault' && a !== attacker && a.currentHP > 0);
|
||||
if (assaultAllies.length === 0) return;
|
||||
if (skill.all) {
|
||||
// Rally all includes the caster itself
|
||||
const targets = attacker.type === 'assault' && attacker.currentHP > 0
|
||||
? [attacker, ...assaultAllies]
|
||||
: [...assaultAllies];
|
||||
if (targets.length === 0) return;
|
||||
const allTargets = [];
|
||||
for (const t of assaultAllies) {
|
||||
for (const t of targets) {
|
||||
t.currentAttack += skill.value;
|
||||
t._tempBuffs = t._tempBuffs || [];
|
||||
t._tempBuffs.push({ stat: 'currentAttack', amount: skill.value, source: 'rally' });
|
||||
|
|
@ -117,6 +121,7 @@ export class SkillProcessor {
|
|||
if (context) context.rallyAllTargets = allTargets;
|
||||
return;
|
||||
}
|
||||
if (assaultAllies.length === 0) return;
|
||||
const rng = context?.rng;
|
||||
const idx = rng
|
||||
? rng.nextInt(0, assaultAllies.length - 1)
|
||||
|
|
@ -331,7 +336,7 @@ export class SkillProcessor {
|
|||
|
||||
counter(skill, attacker, defender, allies, enemies, context) {
|
||||
if (!context.attackingCard) return;
|
||||
const dmg = Math.max(0, skill.value - Math.max(0, context.attackingCard.currentArmor));
|
||||
const dmg = skill.value;
|
||||
context.attackingCard.currentHP -= dmg;
|
||||
context.counterDamage = dmg;
|
||||
}
|
||||
|
|
@ -408,7 +413,7 @@ export class SkillProcessor {
|
|||
}
|
||||
|
||||
bloodpact(skill, attacker, defender, allies, enemies, context) {
|
||||
const hpCost = Math.ceil(skill.value * 0.75);
|
||||
const hpCost = skill.value;
|
||||
attacker.currentHP -= hpCost;
|
||||
attacker.health -= hpCost; // permanently reduce max HP
|
||||
attacker.currentAttack += skill.value;
|
||||
|
|
|
|||
Loading…
Reference in New Issue