58 lines
2.0 KiB
Plaintext
58 lines
2.0 KiB
Plaintext
// =================== 加载觉醒配置 ===================
|
||
local awakenConfig = GlobalConfig.Get("觉醒券.json");
|
||
local AWAKEN_ITEMS = {};
|
||
|
||
// 转换字符串键到整型键
|
||
foreach(keyStr, config in awakenConfig.awaken_items) {
|
||
try {
|
||
AWAKEN_ITEMS[keyStr.tointeger()] <- config;
|
||
} catch(e) {
|
||
::print("[觉醒配置错误] 无效的ID格式: " + keyStr + "\n");
|
||
}
|
||
}
|
||
|
||
// =================== 觉醒处理函数 ===================
|
||
function HandleAwakening(SUser, ItemId) {
|
||
// 安全校验
|
||
if (!(ItemId in AWAKEN_ITEMS)) {
|
||
return SendClassChangeError(SUser, "无效的觉醒道具", ItemId);
|
||
}
|
||
|
||
local config = AWAKEN_ITEMS[ItemId];
|
||
local curJob = SUser.GetCharacJob();
|
||
local curGrow = SUser.GetCharacGrowType();
|
||
local curAwaken = SUser.GetCharacSecondGrowType();
|
||
// 获取转职配置
|
||
local config = AWAKEN_ITEMS[ItemId];
|
||
// 条件检查
|
||
if (SUser.GetCharacLevel() < 50)
|
||
return SendClassChangeError(SUser, "角色等级不足50级!", ItemId);
|
||
|
||
if (curJob != config.job)
|
||
return SendClassChangeError(SUser, "职业不符无法觉醒!", ItemId);
|
||
|
||
if (curGrow == 0)
|
||
return SendClassChangeError(SUser, "请先完成转职!", ItemId);
|
||
|
||
if (curGrow == config.grow + 16)
|
||
return SendClassChangeError(SUser, "已经处于该觉醒状态!", ItemId);
|
||
|
||
// 执行觉醒
|
||
SUser.ChangeGrowType(config.grow, 1); // 假设第二个参数为觉醒标志
|
||
SUser.InitSkillW(1, 1);
|
||
SUser.SendNotiPacket(0, 2, 0);
|
||
SUser.SendNotiPacketMessage("觉醒成功!", 0);
|
||
}
|
||
|
||
// =================== 初始化注册 ===================
|
||
function _Dps_AWAKENING_Main_() {
|
||
if ("awaken_items" in awakenConfig) {
|
||
foreach(itemId, _ in AWAKEN_ITEMS) {
|
||
Cb_Use_Item_Sp_Func[itemId] <- HandleAwakening;
|
||
}
|
||
::print("[觉醒系统] 载入觉醒券数量: " + AWAKEN_ITEMS.len() + "\n");
|
||
} else {
|
||
::print("[觉醒系统错误] 配置缺失 awaken_items 节点\n");
|
||
}
|
||
}
|