Files
fc/dev/project/assets/Scripts/zbridge/utils/bridge.conditions.js
T
2026-05-23 22:10:14 +08:00

164 lines
4.2 KiB
JavaScript

// ================================================================
//
// 条件判断集
//
// ================================================================
const RoleController = require( "role_controller" );
const HeroController = require( "hero_controller" );
const BattleDramaController = require( "battle_drama_controller" );
const BackPackController = require( "backpack_controller" );
// 条件关键字
const CKeys = [
"dun",
"lev",
"maxlev",
"maxdun",
"star",
"guild_lv",
"open_day",
"world_lev",
"building",
"guide_close",
"hopen",
"item",
];
// 条件判断方法集合
const CFMap = {
// 关卡条件
"dun": function ( _val ) {
let dun = parseInt( _val ) || 0;
let dt = BattleDramaController.getInstance().getModel().getDramaData();
if( dt.max_dun_id < dun ) {
let cfg = game.configs.dungeon_data.data_drama_dungeon_info[ dun ];
return nx.text.format( "LockMaxDun", cfg ? cfg.name : "" );
}
},
// 等级条件
"lev": function ( _val ) {
let role = RoleController.getInstance().getRoleVo();
if( role && role.lev < _val ) {
return nx.text.format( "LockRoleLevel", _val );
}
},
// 等级限制条件
"maxlev": function ( _val ) {
let role = RoleController.getInstance().getRoleVo();
if( role && role.lev >= _val ) {
return nx.text.format( "LockRoleMaxLevel", _val );
}
},
// 关卡限制条件
"maxdun": function ( _val ) {
let dun = parseInt( _val ) || 0;
let dt = BattleDramaController.getInstance().getModel().getDramaData();
if( dt.max_dun_id >= dun ) {
let cfg = game.configs.dungeon_data.data_drama_dungeon_info[ dun ];
return nx.text.format( "LockMaxDun", cfg ? cfg.name : "" );
}
},
// 星级条件
"star": function ( _val ) {
let bag = HeroController.getInstance().getModel();
if( bag ){
let partners = bag.getAllHeroArray();
let count = 0;
partners.forEach( _part =>{
if( _part.star >= _val ){
count++;
}
} )
if( bag && count <= 0 ) {
return nx.text.format( "LockHeroStar", _val );
}
}
},
// 工会等级条件
"guild_lv": function ( _val ) {
let role = RoleController.getInstance().getRoleVo();
if( role && role.guild_lev < _val ) {
return nx.text.format( "LockGuildLevel", _val );
}
},
// 开服天数条件
"open_day": function ( _val ) {
let role = RoleController.getInstance().getRoleVo();
if( role && role.open_day < _val ) {
return nx.text.format( "LockOpenDay", _val );
}
},
// 世界等级条件
"world_lev": function ( _val ) {
let level = RoleController.getInstance().getModel().getWorldLev();
if( level < _val ) {
return nx.text.format( "LockWorldLevel", _val );
}
},
// 待废弃:建筑条件
"building": function ( _val ) {
nx.error( "解锁判断: building条件需要重建,目前废弃!" );
return;
},
// 引导忽略
"guide_close": function( _val ) {
let closed = !nx.bridge.plot || !nx.bridge.plot.opened;
if( !!_val == closed ) {
return;
}
return nx.text.getKey( "LockGuideIgnored" );
},
// HOpen
"hopen": function( _val ) {
let open = nx.bridge.vget( "HOpened" );
let key = open ? 1 : 0;
if( key == _val ) {
return;
}
return nx.text.getKey( "LockGuideHClose" );
},
// 背包道具数量
"item": function( _val ) {
let tmp = `${_val}`;
let arr = tmp.split( "#" );
let model = BackPackController.getInstance().getModel();
let count = model ? model.getBackPackItemNumByBid( arr[0] ) : 0;
let need = arr[1] || 0;
if( count < need ) {
return nx.text.getKey( "LockItemCount" );
}
},
};
// 别名
CFMap["dungeon"] = CFMap["dun"];
CFMap["guild"] = CFMap["guild_lv"];
module.exports = {
CFMap,
CKeys,
};