feedback5 O20: the 缚地 status (groundbind) — an enemy air unit counts as a ground unit and cannot move
ba.groundbind "目标变为地面单位,无法移动;使部分近地悬浮敌人掉落;对重量大于3的单位持续时间减半" (予愿安洁莉娜 S2 needs it): - buffs.js: STATUS groundbind (flag groundbind + noMove, move x0), FLAG_KEYS, RESIST_STATUSES (as 束缚, [ASSUMED]); - units.js isFlying: an enemy under 缚地 is a ground unit unless a 浮空 lifts it (same result as before without the flag); - battle/status.js: 浮空 lands on a 缚地 data flyer (PRTS 异常效果 "…且不持有缚地异常…则Buff取消"), 缚地 halved on weight > 3; - content/enemies: 掠海漂移体 / 吉兆飞鳞 drop on 缚地 as their PRTS text says (吉兆飞鳞 stays down while it holds); - render/style.js: the 束缚 icon for it; docs/SIM.md (§2 isFlying, §3 flags / status table / 抵抗). Nothing applies it yet: every golden family is unchanged. Test: test/sim/feedback5-groundbind.test.js.
This commit is contained in:
1 parent
996f5d20fe
commit
83e879a335
8 files changed
+126
-25
No files matched your search
+10
-5
@@ -179,13 +179,18 @@ export class Unit {
|
||||
/**
|
||||
* Air unit (空中单位) for every targeting / ground-only rule: FLY movers, and enemies that hover (近地悬浮, buff flag
|
||||
* `float` — PRTS 术语释义 ba.float "算作空中单位"; they keep walking the ground path) or are levitated (浮空, gamedata_const
|
||||
* ba.levitate "变为空中单位"). Movement and pathing read `motion`, never this.
|
||||
* ba.levitate "变为空中单位"). A 缚地 enemy (status `groundbind`, ba.groundbind "目标变为地面单位") is a ground unit
|
||||
* meanwhile — unless a 浮空 lifts it again (浮空 lands on a 缚地 flyer: Battle.applyStatus). Movement and pathing read
|
||||
* `motion`, never this.
|
||||
*/
|
||||
get isFlying() {
|
||||
if (this.motion === 'FLY') return true;
|
||||
if (this.side !== 'enemy') return false;
|
||||
const f = this.s.flags;
|
||||
return !!(f.float || f.levitate);
|
||||
if (this.side === 'enemy') {
|
||||
const f = this.s.flags;
|
||||
if (f.levitate) return true;
|
||||
if (f.groundbind) return false;
|
||||
return this.motion === 'FLY' || !!f.float;
|
||||
}
|
||||
return this.motion === 'FLY';
|
||||
}
|
||||
|
||||
get hpRatio() { const mh = this.s.maxHp; return mh > 0 ? this.hp / mh : 0; }
|
||||
|
||||
Reference in new issue
Block a user