diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index afc1ace9..f095cebf 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -320,7 +320,6 @@ export class HeroAttrsComp extends ecs.Comp { this.maxSkillDistance = 0; this.minSkillDistance = 0; - this.is_dead = false; this.is_count_dead = false; this.is_atking = false; diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index bfdb3b99..7c644626 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -446,14 +446,13 @@ export class HeroViewComp extends CCComp { } if(this.model.fac === FacSet.HERO){ - // 将英雄移到玩家看不到的墓地 - this.node.setPosition(v3(-2000, -2000, 0)); + // 英雄直接销毁,不再进入墓地 const collider = this.node.getComponent(Collider2D); if (collider) { collider.enabled = false; } - // 隐藏UI this.top_node.active = false; + this.ent.destroy(); } else { // 🔥 方案B:治理性措施 - 在销毁实体前先禁用碰撞体,从源头减少"尸体"参与碰撞 const collider = this.node.getComponent(Collider2D); diff --git a/assets/script/game/map/MissionCardComp.ts b/assets/script/game/map/MissionCardComp.ts index e8152408..6c75e522 100644 --- a/assets/script/game/map/MissionCardComp.ts +++ b/assets/script/game/map/MissionCardComp.ts @@ -432,13 +432,6 @@ export class MissionCardComp extends CCComp { private onUseHeroCard(event: string, args: any) { const payload = args ?? event; if (!payload) return; - - if (this.isBattlePhase) { - payload.cancel = true; - payload.reason = "battle_phase"; - oops.gui.toast("战斗阶段无法召唤英雄"); - return; - } const current = this.getAliveHeroCount(); this.syncMissionHeroData(current); @@ -671,16 +664,10 @@ export class MissionCardComp extends CCComp { private enterBattlePhase() { if (!this.cards_node || !this.cards_node.isValid) return; this.initCardsPanelPos(); - // 战斗阶段不再隐藏抽卡面板 - // Tween.stopAllByTarget(this.cards_node); - // tween(this.cards_node) - // .to(this.cardsPanelMoveDuration, { scale: this.cardsHideScale }) - // .call(() => { - // if (this.cards_node && this.cards_node.isValid) { - // this.cards_node.active = false; - // } - // }) - // .start(); + // 战斗阶段抽卡面板不再收起 + this.cards_node.active = true; + Tween.stopAllByTarget(this.cards_node); + this.cards_node.setScale(this.cardsShowScale); this.cachedHInfoComps.forEach(comp => { if (comp && comp.isValid) { @@ -693,7 +680,8 @@ export class MissionCardComp extends CCComp { private buildDrawCards(): CardConfig[] { let targetType: CardType | CardType[] | undefined = undefined; if (this.isBattlePhase) { - targetType = CardType.Skill; + // 战斗阶段只刷英雄卡牌,不刷其他卡牌 + targetType = CardType.Hero; } else { targetType = [CardType.Hero, CardType.SpecialRefresh]; } diff --git a/assets/script/game/map/MissionComp.ts b/assets/script/game/map/MissionComp.ts index 7cb591ba..9b496197 100644 --- a/assets/script/game/map/MissionComp.ts +++ b/assets/script/game/map/MissionComp.ts @@ -520,9 +520,9 @@ export class MissionComp extends CCComp { case MissionPhase.BattleEnd: // BattleEnd 计时结束后,如果是因为全灭或手动调用的 fight_end,进入 Settle // 需要注意的是,open_Victory / fight_end 现在只需切换到 BattleEnd 即可,Settle 由这里自动接管 - // 如果游戏正在运行(波次更迭),则自动进入 PrepareStart 阶段 + // 如果游戏正在运行(波次更迭),直接进入下一波的 BattleStart,不再进入 PrepareStart if (smc.mission.play && !smc.mission.pause) { - this.changePhase(MissionPhase.PrepareStart); + this.changePhase(MissionPhase.BattleStart); } else { this.changePhase(MissionPhase.Settle); @@ -566,7 +566,7 @@ export class MissionComp extends CCComp { * - 显示开始按钮 * - 触发英雄战斗结束技能 */ - private enterPreparePhase() { + enterPreparePhase() { this.changePhase(MissionPhase.PrepareStart); } diff --git a/assets/script/game/map/MissionHeroComp.ts b/assets/script/game/map/MissionHeroComp.ts index de853522..445c4602 100644 --- a/assets/script/game/map/MissionHeroComp.ts +++ b/assets/script/game/map/MissionHeroComp.ts @@ -121,24 +121,14 @@ export class MissionHeroCompComp extends CCComp { } } - /** 战斗准备阶段:重置出战英雄计数,恢复满血重新登场 */ + /** 战斗准备阶段:重置出战英雄计数,恢复满血 */ fight_ready(){ const heroes = this.getAllHeroes(); smc.vmdata.mission_data.hero_num = heroes.length; for (let i = 0; i < heroes.length; i++) { const hero = heroes[i]; const model = hero.get(HeroAttrsComp); - const view = hero.get(HeroViewComp); - if (model && view) { - if (model.is_dead) { - view.alive(); - const landingPos = this.pickPositionForHero([hero.eid]); - // 不再直接设置位置,而是播放下落入场动画 - // 计算出出生点(空中) - const spawnPos: Vec3 = v3(landingPos.x, landingPos.y + MissionHeroCompComp.HERO_DROP_HEIGHT, 0); - view.node.setPosition(spawnPos); - hero.playDropAnim(spawnPos, landingPos.y); - } + if (model) { model.dirty_hp = true; } }