UGCProjects/SoloKing/Script/Global/Mini/MiniGameConfig.lua
2025-01-21 11:29:14 +08:00

185 lines
5.4 KiB
Lua

require('Script.Global.Table.WeaponTable')
--- 用到的都放在这
MiniGameMapType = {
SoloKing = 1, -- 和平大乱斗模式
};
--- 是否随机地图
Mini_RandomMap = false;
--- 整体进程
---@type MiniGameState
MiniGameState = {
NON_START = 1, -- 还未开始
SELECT_GAMES = 2, -- 选择地图截断
MINI_PREPARE = 3, -- 玩法准备阶段
--MINI_GAMING = 4, -- 进入玩法游戏阶段
ROUND_PREPARE = 4, -- 回合准备阶段
ROUND_GAMING = 5, -- 回合游玩阶段
ROUND_END = 6, -- 回合结束阶段
MINI_END = 7, -- 玩法结束阶段
ENDED = 8, -- 游戏结束阶段
};
--- 小游戏的各种时间
MiniGameTimes = {
Active = 1, -- 游戏激活时间,游戏激活时间结束后进入游戏阶段
Prepare = 35, -- 每个玩法准备时间
RoundPrepare = 2, -- 玩法单个回合开启时间到正式开启时间
RoundGameTime = -4 * 60,
RoundEnd = 5, -- 玩法单个回合结束到下一个回合开启的时间
MiniGameEnd = 0, -- 一个玩法结束的时候到下一个小游戏或者游戏结束的时间
End = 200; -- 结束的时候执行
};
GameStateTimes = {
GangUp = {
SelectMapTime = 12;
}
}
--- 玩法配置
--- 可以重写玩法的时间:在单个玩法配置中添加 MiniGameTimes = { Prepare = xxx, } 这种形式即可
MiniGameConfig = MiniGameConfig or {
[MiniGameMapType.SoloKing] = {
Script = "Solo", -- 会执行的代码文件
Map = {
-- 按热度排序
MapName = {
['Map_SLXLC'] = 1,
['Map_SMDJ'] = 1,
['Map_HDDJ'] = 1,
['Map_JCK'] = 1,
['Map_DBL'] = 1,
['Map_SCL'] = 1,
['Map_NewYear'] = 2,
['Map_DC'] = 2,
},
ShowName = "单挑王", -- 显示名称
},
--- 小游戏回合次数,如果 <= 1 表示当前游戏只支持单局,且条件为自动设置。
RoundTimes = 7,
--- 初始给的武器,下面每一条都是要添加的一个初始物品
InitArmors = {
[1] = EArmorType.Armor3,
[2] = EHelmetType.Helmet3,
[3] = EBagType.Bag1,
},
InitMedication = {
{ "大包", 1, }, -- 10
{ "绷带", 5, }, -- 2 * Num
{ "可乐", 3, }, -- 4 * Num
},
--- 延迟一会后再给的物品
DelayWeapons = {
{ "手榴弹", 1, }, -- 18
{ "烟雾弹", 1, }, -- 14
{ "震爆弹", 1, }, -- 14
},
--- 地图新增物品
MapAddedItem = {
['Map_JCK'] = {
{ "燃烧瓶", 1 },
},
['Map_DBL'] = {
{ "燃烧瓶", 1 },
},
['Map_SCL'] = {
{ "燃烧瓶", 1 },
},
},
--- 游戏参数,会自动展开,如果想要表结构,需要再嵌套一层表
Params = {
SelectWeaponCount = 7, -- 可以选择武器的个数
RespawnTime = 2, -- 玩家复活的时间,现在用不到
KillHealing = 0, -- 击杀可以回复的血量
KillTimes = 2, -- 击杀多少次当前回合
ResetTime = 3, -- 重置时间
SelectMapTime = 8, -- 选择地图时间,正式开始前这么长时间就不允许再选择了
EnableInsult = false; -- 是否开启鞭尸
DefaultWeapon = 101004, -- 默认初始武器
--- 加分方式
AddFunc = function(Diff, Current, NeedOther)
local Add = 20 - Diff / 100;
Add = math.ceil(Add);
if Add < 5 then Add = 5; end
if Add > 30 then Add = 30; end
if NeedOther then
if Current < 2200 then
Add = Add + math.random(4, 5);
elseif Current < 3000 then
Add = Add + math.random(1, 2);
--else
-- Add = Add + math.random(0, 1);
end
end
return Add;
end,
--- 扣分方式
ReduceFunc = function(Diff, Current)
local Reduce = -20 + Diff / 100;
Reduce = math.floor(Reduce);
if Reduce > -5 then Reduce = -5 end
if Reduce < -30 then Reduce = -30; end
return Reduce;
end,
SpecialWeapon = {
[EWeaponTypeNew.EWeaponTypeNew_SingleShotSniper] = {
InitArmors = {
[1] = EArmorType.Armor2,
[2] = EHelmetType.Helmet2,
},
},
[EWeaponTypeNew.EWeaponTypeNew_Crossbow] = {
InitArmors = {
[1] = EArmorType.Armor2,
[2] = EHelmetType.Helmet2,
},
},
[EWeaponTypeNew.EWeaponTypeNew_Melee] = {
InitArmors = {
[1] = EArmorType.Armor1,
[2] = EHelmetType.Helmet1,
},
},
}
};
},
};
GameModeConfig = {}
-- 由于顺序问题 这里不可以跳数字
GameModeConfig.EGameModeType = {
DefaultMode = 1;
GangUpMode = 2; -- 休闲模式
};
GameModeConfig.GameModeInfo = {
[GameModeConfig.EGameModeType.DefaultMode] = {
Name = "经典模式";
Feature = "·经典和平,双方武器一致。\n·武器从武器池中随机抽取。";
},
[GameModeConfig.EGameModeType.GangUpMode] = {
Name = "休闲模式";
Feature = "·回合武器可自选!\n·不掉分!";
-- 时间配置
MiniGameTimes = {
Active = 2, -- 游戏激活时间,游戏激活时间结束后进入游戏阶段
Prepare = 15, -- 每个玩法准备时间
RoundPrepare = 2, -- 玩法单个回合开启时间到正式开启时间
RoundEnd = 5, -- 玩法单个回合结束到下一个回合开启的时间
MiniGameEnd = 0, -- 一个玩法结束的时候到下一个小游戏或者游戏结束的时间
End = 50; -- 结束的时候执行
},
},
}
return MiniGameConfig;