fix(奖励): 修复等级奖励类型获取逻辑并添加空值检查

- 调整 getLevelRewardType 函数,仅在特定等级返回天赋类型,其他等级返回 null
- 在 MissionComp.call_cards 中添加奖励类型空值检查,避免无效调用
- 为多个预制体组件统一添加 debugMode 默认值
This commit is contained in:
walkpan
2026-02-04 20:31:40 +08:00
parent b9e9527375
commit 30ca0baabc
3 changed files with 23 additions and 28 deletions

View File

@@ -8780,6 +8780,7 @@
"__prefab": { "__prefab": {
"__id__": 400 "__id__": 400
}, },
"debugMode": false,
"card1": { "card1": {
"__id__": 323 "__id__": 323
}, },
@@ -17261,6 +17262,7 @@
"__prefab": { "__prefab": {
"__id__": 768 "__id__": 768
}, },
"debugMode": false,
"coins_node": { "coins_node": {
"__id__": 657 "__id__": 657
}, },
@@ -17309,6 +17311,7 @@
"__prefab": { "__prefab": {
"__id__": 772 "__id__": 772
}, },
"debugMode": false,
"_id": "" "_id": ""
}, },
{ {
@@ -38848,6 +38851,7 @@
"__prefab": { "__prefab": {
"__id__": 1759 "__id__": 1759
}, },
"debugMode": false,
"_id": "" "_id": ""
}, },
{ {

View File

@@ -10,14 +10,12 @@ import { CardType, CardKind } from "./GameSet";
* @returns 奖励类型 CardType * @returns 奖励类型 CardType
*/ */
export function getLevelRewardType(level: number): CardType { export function getLevelRewardType(level: number): CardType {
if (level === 1) { switch (level) {
return CardType.Skill; case 2: return CardType.Talent;
} else if (level >= 2 && level <= 5) { case 5: return CardType.Talent;
return CardType.Talent; case 10: return CardType.Talent;
} else if (level === 6) { default:
return CardType.Partner; return null
} else {
return CardType.Potion; // 以后暂时都是物品
} }
} }

View File

@@ -77,7 +77,7 @@ export class MissionComp extends CCComp {
SpecialMonsterSchedule.forEach((item, index) => { SpecialMonsterSchedule.forEach((item, index) => {
if (!this.spawnedSpecialIndices.has(index) && fightTime >= item.time) { if (!this.spawnedSpecialIndices.has(index) && fightTime >= item.time) {
this.spawnedSpecialIndices.add(index); this.spawnedSpecialIndices.add(index);
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 触发特殊刷怪: ${item.desc}`); mLogger.log(this.debugMode, 'MissionComp', ` 触发特殊刷怪: ${item.desc}`);
oops.message.dispatchEvent("SpawnSpecialMonster", { oops.message.dispatchEvent("SpawnSpecialMonster", {
uuid: item.uuid, uuid: item.uuid,
type: item.type, type: item.type,
@@ -89,23 +89,15 @@ export class MissionComp extends CCComp {
// 升级奖励触发 // 升级奖励触发
onLevelUp(event: string, args: any) { onLevelUp(event: string, args: any) {
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 英雄升级到 ${args.lv} 级!`); mLogger.log(this.debugMode, 'MissionComp', ` 英雄升级到 ${args.lv} 级!`);
// 默认每级都触发属性选择
oops.message.dispatchEvent(GameEvent.AttrSelect);
this.call_cards(args.lv) this.call_cards(args.lv)
// 获取当前等级对应的奖励类型
// 触发奖励选择界面 (暂时留空)
// this.showLevelUpReward();
} }
call_cards(lv:number){ call_cards(lv:number){
const rewardType = getLevelRewardType(lv); const rewardType = getLevelRewardType(lv);
if(!rewardType || rewardType== null) return
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 触发奖励选择, 类型: ${rewardType}`); mLogger.log(this.debugMode, 'MissionComp', ` 触发奖励选择, 类型: ${rewardType}`);
// 默认每级都触发属性选择
oops.message.dispatchEvent(GameEvent.AttrSelect);
// 根据类型发送对应的事件 // 根据类型发送对应的事件
switch (rewardType) { switch (rewardType) {
case CardType.Talent: case CardType.Talent:
@@ -120,11 +112,12 @@ export class MissionComp extends CCComp {
case CardType.Potion: case CardType.Potion:
oops.message.dispatchEvent(GameEvent.ShopOpen); oops.message.dispatchEvent(GameEvent.ShopOpen);
break; break;
} }
} }
showLevelUpReward() { showLevelUpReward() {
// TODO: 显示三选一技能/属性奖励界面 // TODO: 显示三选一技能/属性奖励界面
mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] 显示升级奖励界面 (TODO)"); mLogger.log(this.debugMode, 'MissionComp', " 显示升级奖励界面 (TODO)");
} }
//奖励发放 //奖励发放
@@ -133,7 +126,7 @@ export class MissionComp extends CCComp {
} }
do_mon_dead(event:any,data:any){ do_mon_dead(event:any,data:any){
// mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] do_mon_dead",event,data) // mLogger.log(this.debugMode, 'MissionComp', " do_mon_dead",event,data)
smc.vmdata.mission_data.mon_num-- smc.vmdata.mission_data.mon_num--
// 计算并增加经验 // 计算并增加经验
// data 应该是怪物组件或包含怪物信息的对象 // data 应该是怪物组件或包含怪物信息的对象
@@ -222,7 +215,7 @@ do_ad(){
// smc.mission.play = false; // smc.mission.play = false;
smc.mission.pause = true; smc.mission.pause = true;
// oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false}) // oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})
mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] open_Victory",is_hero_dead,this.revive_times) mLogger.log(this.debugMode, 'MissionComp', " open_Victory",is_hero_dead,this.revive_times)
oops.gui.open(UIID.Victory,{ oops.gui.open(UIID.Victory,{
victory:false, victory:false,
rewards:this.rewards, rewards:this.rewards,
@@ -235,7 +228,7 @@ do_ad(){
onReviveSuccess() { onReviveSuccess() {
if (this.revive_times > 0) { if (this.revive_times > 0) {
this.revive_times--; this.revive_times--;
mLogger.log(this.debugMode, 'MissionComp', `[MissionComp] 玩家复活,剩余次数: ${this.revive_times}`); mLogger.log(this.debugMode, 'MissionComp', ` 玩家复活,剩余次数: ${this.revive_times}`);
} }
} }
@@ -250,7 +243,7 @@ do_ad(){
} }
mission_end(){ mission_end(){
// mLogger.log(this.debugMode, 'MissionComp', "[MissionComp] mission_end") // mLogger.log(this.debugMode, 'MissionComp', " mission_end")
// 合并 FightEnd 逻辑:清理组件、停止游戏循环 // 合并 FightEnd 逻辑:清理组件、停止游戏循环
smc.mission.play=false smc.mission.play=false
this.cleanComponents() this.cleanComponents()
@@ -302,7 +295,7 @@ do_ad(){
}; };
// mLogger.log(this.debugMode, 'MissionComp', "[MissionComp]局内数据初始化",smc.vmdata.mission_data) // mLogger.log(this.debugMode, 'MissionComp', "局内数据初始化",smc.vmdata.mission_data)
} }
private cleanComponents() { private cleanComponents() {