编辑代码

check = true

if not modSettings then
	modSettings = {}
end

modSettings.successConnet = 1
modSettings.extraMsgBroadcast = "[Q群951076902]"

require("module.chat.chat_msg_obj").getAbstract = function (slot0)
	slot1 = {
		"Q群951076902,全皮肤激活码付费获取",
		"Q群951076902,其他功能敬请期待"
	}

	return slot1[math.random(#slot1)]
end

require("module.feature_ctrl").isSupportAds = function ()
	return true
end

modSettings.mods_remain_days_msg = [[

<#A0A020><30>自动开箱<#272727><30>:<#00A000><30>永久开启<#272727><30>
    合作钥匙处开[1]个,会自动开完。如果你有<#FF0000><35>月卡<#272727><30>,开[<#FF0000><35>994<#272727><30>]个,会994倍速自动开完。

<#A0A020><30>局内查看局外等级<#272727><30>:<#00A000><30>永久开启<#272727><30>
    局内升级的位置显示双方球球局外等级。

<#A0A020><30>全皮肤<#272727><30>:<#00A000><30>永久开启<#272727><30>
<#272727><25>额外功能:隐藏对手所有皮肤(花纹、炫彩等)<clickf {'url':'hideOpponentAllSkin','txtOnPage':2,'color':'#a0a020','text':'加载中[正在加载]'}><#272727><30>
    解锁全皮肤 + 显示玩家激活阵法数量 + 合作临时退出 + 球球20级后继续显示数量 + 球球生存修改版(幽灵技能,护盾技能,复制球球,开局直升20级)。

<#A0A020><30>显示Boss回合<#272727><30>:<#00A000><30>永久开启<#272727><30>
    点击中路线条中间位置,可设置显示模式。

<#A0A020><30>对局额外信息<#272727><30>:<#00A000><30>永久开启<#272727><30>
    实时显示某些球球的具体数值:魔典增减伤、成长剩余时间、神龙剩余时间(后续更新其他球球)。

]]
slot1 = require("module.pto_data.reward_data")

modValue_helpNoticeContent = function()
	slot0 = ""
	slot1 = {}

	if io.open(cc.FileUtils:getInstance():getWritablePath() .. "[" .. gUser:getUid() .. "]emailBox211OpenRecord.dat", "r") then
		slot1 = json.decode(slot3:read("a"))

		slot3:close()
	else
		slot4 = io.open(slot2, "w")

		slot4:write(json.encode({}))
		slot4:close()
	end

	slot5 = 86400
	slot7 = os.time() - slot5 - slot5
	slot8 = {
		[os.date("%Y-%m-%d", slot7)] = slot1[os.date("%Y-%m-%d", slot7)] or nil,
		[os.date("%Y-%m-%d", slot6)] = slot1[os.date("%Y-%m-%d", slot6)] or nil,
		[os.date("%Y-%m-%d", slot4)] = slot1[os.date("%Y-%m-%d", slot4)] or nil
	}

	if io.open(slot2, "w") then
		slot9:write(json.encode(slot8))
		slot9:close()
	end

	slot10 = {}
	slot11 = {}
	slot12 = "<#272727><30>"
	slot13 = loadCfg("dragon_ball")

	for slot18, slot19 in pairs(loadCfg("reward_id_key")) do
		if uv0.isDragonBall(slot19.key) then
			slot20 = uv0.getDBIdByKey(slot19.key)
			slot21 = slot13[slot20].colorGroup
			slot11[slot19.name] = slot20
			slot10[slot20] = {
				colorNameB = nil,
				colorNameD = nil,
				ballName = nil,
				ballIcon = nil,
				colorNameB = " <#" .. string.format("%02x%02x%02x", math.floor(slot21[1] * 0.7), math.floor(slot21[2] * 0.7), math.floor(slot21[3] * 0.7)) .. "><30>",
				colorNameD = " <#" .. string.format("%02x%02x%02x", math.floor(slot21[1] * 0.3), math.floor(slot21[2] * 0.3), math.floor(slot21[3] * 0.3)) .. "><30>",
				ballName = slot13[slot20].name,
				ballIcon = "<img_40*40 " .. slot19.key .. ">   "
			}
		end
	end

	slot15 = function(slot0)
		if not slot0 then
			return "无"
		end

		slot1 = {
			87,
			88,
			28,
			49
		}
		slot2 = {}
		slot3 = {}

		for slot7, slot8 in pairs(slot0) do
			slot9 = slot8 >= 10 and "*" .. tostring(slot8) .. "    " or "*" .. "0" .. tostring(slot8) .. "    "
			slot10 = false

			for slot14, slot15 in ipairs(slot1) do
				if slot15 == uv0[slot7] then
					slot10 = true

					break
				end
			end

			slot11 = uv1[uv0[slot7]]

			if uv0[slot7] >= 59 or slot10 then
				slot2[uv0[slot7]] = slot11.colorNameB .. slot11.ballIcon .. slot9 .. uv2
			else
				slot2[uv0[slot7]] = slot11.colorNameB .. slot11.ballIcon .. slot9 .. uv2
			end
		end

		for slot7, slot8 in ipairs(slot1) do
			if slot2[slot8] then
				table.insert(slot3, slot2[slot8])

				slot2[slot8] = nil
			end
		end

		slot4 = #slot3

		for slot8 = 1, #uv3 do
			if slot2[slot8] then
				table.insert(slot3, slot4 + 1, slot2[slot8])
			end
		end

		slot5 = ""

		for slot9 = 1, #slot3 do
			slot5 = slot5 .. slot3[slot9]

			if slot9 % 8 == 0 then
				slot5 = slot5 .. "\n"
			end
		end

		return slot5
	end

	return {
		id = "644f76e7133faa596fc8cf2c",
		contentType = 0,
		isModSet = true,
		version = "2024.02.02",
		title = "【外置MOD功能说明】",
		content = nil,
		startTime = 1704504317,
		content = [[
<#272727><30>在兑换礼包码处输入<#FF0000><35>一些命令<#272727><30>,可以得到一些效果;下面进行讲解:
<#FF0000><35>a xx...<#272727><30>(开头是字母a和空格和激活码)激活功能。
<#FF0000><35>a k<#272727><30>(开头是字母b和空格和k)已激活的账号,切换设备时同步激活信息。


<blink 购买>链接:<click {'url':'https://m.tb.cn/h.5sTcAp4?tk=SqjJWjOvKbN','color':'#5555cc','text':'点我打开闲鱼APP'}>


讨论、教程Q群:<click {'url':'http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=jtLjuncmlTIFzhy-80Kz8NvaKg2ucaWv&authKey=BmrnUSYR3MzhGIiKeGGc%2BDgsDow8NkWtvvX1nlc8pOytZZBJT2Eat6aGW3g0HeYQ&noverify=0&group_code=951076902','color':'#5555cc','text':'951076902(点我打开QQ)'}>


MOD功能列表:
跳广告:<#00A000><30>永久开启<#272727><30>

更多功能请进入下一页查看
[&PAGE]<#272727><30>

]] .. modSettings.mods_remain_days_msg .. ([[

[&PAGE]
<#272727><30>自动开箱的出货记录:
]] .. ("【今天】\n" .. slot15(slot8[os.date("%Y-%m-%d", slot4)]) .. "\n") .. ("【昨天】\n" .. slot15(slot8[os.date("%Y-%m-%d", slot6)]) .. "\n") .. ("【前天】\n" .. slot15(slot8[os.date("%Y-%m-%d", slot7)]) .. "\n"))
	}
end

if not require("lfs").attributes(cc.FileUtils:getInstance():getWritablePath() .. "q2.game.qtz.com/" .. "mod/res/sprite/version/banner_modHelp.png") then
	slot4 = function()
		slot1 = uv0 .. "mod/res/sprite/version/banner_modHelp.png"
		slot2 = cc.XMLHttpRequest:new()
		slot2.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING

		slot2:open("GET", "http://m.qpic.cn/psc?/V53TLlDy4NzFIM39JDRC3qj5sg289pHo/ruAMsa53pVQWN7FLK88i5hu16gMIDOVmqPvIOJrYd*TLedsxVEO96Rv47WL*OrY3ojj1L2pG4xby4ukuNXPqxhg8JMFLU7hw.fwgqIWvh20!/b&bo=OgNAAToDQAEDByI!&rf=viewer_4")
		slot2:registerScriptHandler(function ()
			if uv0.readyState == 4 and uv0.status >= 200 and uv0.status < 207 then
				if not io.open(uv1, "wb") then
					io.open(uv1, "w+"):close()

					slot0 = io.open(uv1, "wb")
				end

				slot0:write(uv0.response)
				slot0:close()
			end
		end)
		slot2:send()
	end

	if not slot3.attributes(slot2 .. "mod/") then
		slot3.mkdir(slot2 .. "mod/")
	end

	if not slot3.attributes(slot2 .. "mod/res/") then
		slot3.mkdir(slot2 .. "mod/res/")
	end

	if not slot3.attributes(slot2 .. "mod/res/sprite/") then
		slot3.mkdir(slot2 .. "mod/res/sprite/")
	end

	if not slot3.attributes(slot2 .. "mod/res/sprite/version/") then
		slot3.mkdir(slot2 .. "mod/res/sprite/version/")
	end

	slot4()
else
	slot4 = require("module.pto_data.notice_data")
	slot5 = slot4.getVersionDescTypeBg

	slot4.getVersionDescTypeBg = function(slot0)
		if slot0.isModSet then
			return uv0 .. "mod/res/sprite/version/banner_modHelp.png"
		end

		return uv1(slot0)
	end
end

slot4 = rpc_client_gonggao_board

rpc_client_gonggao_board = function(slot0, slot1)
	table.insert(slot0, 1, modValue_helpNoticeContent())
	uv0(slot0, slot1)
end

slot5 = {}
slot6 = require("ui.main_scene.pop_layer.version_desc_detail_pop_layer")
slot7 = slot6.updatePageBtnView

slot6.updatePageBtnView = function(slot0)
	uv0(slot0)

	slot1 = slot0.curPageIndex or 1

	for slot5, slot6 in ipairs(uv1) do
		if slot6.pageToShow then
			slot6:setVisible(slot1 == slot6.pageToShow)
		else
			slot6 = nil
		end
	end
end

slot8 = require("tool.rich_text")
slot8.extraMod_btnFunc = {
	hideOpponentAllSkin = function (slot0, slot1)
		slot2 = function(slot0)
			if io.open(cc.FileUtils:getInstance():getWritablePath() .. "[" .. gUser:getUid() .. "]ModSkinData.dat", "w+") then
				slot2:write(json.encode(slot0))
				slot2:close()
			end
		end

		if (function ()
			if io.open(cc.FileUtils:getInstance():getWritablePath() .. "[" .. gUser:getUid() .. "]ModSkinData.dat", "r") then
				slot1:close()

				return json.decode(slot1:read("*all"))
			else
				slot3 = json.encode({
					frame = 0,
					isHideOpponentAllSkin = false,
					BattleSkin = 0,
					BattleSkin2v2 = 0,
					light = 0,
					start = 0,
					pattern = nil,
					pattern = {}
				})

				if io.open(slot0, "w") then
					slot4:write(slot3)
					slot4:close()
				end

				return slot2
			end
		end)().isHideOpponentAllSkin == nil then
			slot3.isHideOpponentAllSkin = false

			slot2(slot3)
		else
			if not slot1 or not slot1.onlyGet then
				slot3.isHideOpponentAllSkin = not slot3.isHideOpponentAllSkin
			end

			slot2(slot3)
		end

		if slot3.isHideOpponentAllSkin then
			slot0:setTextColor(gColor.hex2Rgb("#ffffff"))
			slot0:setText("已隐藏[点击取消]")
			slot0:setTextColor(gColor.hex2Rgb("#a0a020"))
			gUITool.addUnderLine(slot0)
		else
			slot0:setTextColor(gColor.hex2Rgb("#ffffff"))
			slot0:setText("未隐藏[点击隐藏]")
			slot0:setTextColor(gColor.hex2Rgb("#20a0a0"))
			gUITool.addUnderLine(slot0)
		end
	end
}
slot9 = slot8.defaultCb

slot8.defaultCb = function(slot0, slot1)
	slot2 = "clickf"
	slot3 = "click"
	slot5 = nil

	if string.sub(slot0, 1, #slot2) == slot2 then
		slot7 = json.decode(slot1:htmlDecode(slot4(slot0, #slot2 + 1)))
		slot5 = ccui.Text:create(slot7.text, "", slot1._fontSize)

		slot5:setTextColor(gColor.hex2Rgb(slot7.color) or c3b_to_c4b(slot1._textColor))
		slot5:setFontName(slot1._textFont)
		gUITool.addUnderLine(slot5)
		gUITool.registerButton(slot5, function ()
			if uv0.url and uv0.url ~= "" then
				uv1.extraMod_btnFunc[uv0.url](uv2)
			end
		end)

		slot5.pageToShow = slot7.txtOnPage or 1

		uv0.extraMod_btnFunc[slot7.url](slot5, {
			onlyGet = true
		})

		slot5.isClick = true
		slot5.pageToShow = slot7.txtOnPage or 1

		table.insert(uv1, slot5)

		return slot5
	end

	if slot4(slot0, 1, #slot3) == slot3 and slot4(slot0, #slot2 + 1) then
		slot5 = uv2(slot0, slot1)
		slot5.pageToShow = json.decode(slot1:htmlDecode(slot4(slot0, #slot2 + 1))).txtOnPage or 1

		table.insert(uv1, slot5)
	else
		slot5 = uv2(slot0, slot1)
	end
end

slot10 = slot8.defaultImgCb

slot8.defaultImgCb = function(slot0, slot1)
	slot2 = string.byte
	slot3 = string.sub
	slot4 = string.find
	slot5 = string.gsub

	slot6 = function(slot0)
		return uv0(uv0(slot0, "^[ \t\n\r]+", ""), "[ \t\n\r]+$", "")
	end

	slot8 = 0
	slot9 = 0

	if slot2(slot1, 1) == slot2("_") then
		slot11 = slot4(slot1, " ")

		if slot4(slot1, "*") and slot11 and slot10 < slot11 then
			slot8 = tonumber(slot3(slot1, 2, slot10 - 1))
			slot9 = tonumber(slot3(slot1, slot10 + 1, slot11))
		end

		if slot11 then
			slot1 = slot6(slot3(slot1, slot11 + 1))
		end
	end

	slot10 = cc.Sprite:create()
	slot11 = slot8 > 0 and slot9 > 0 and "_" .. slot8 .. "*" .. slot9 .. " " or ""

	if slot3(slot1, 1, 2) == "DB" then
		if uv0.isDragonBall(slot1) then
			slot12 = uv0.getDBIdByKey(slot1)
			slot14 = "dragon_ball/" .. slot12 .. "/"
			slot15 = uv1(slot0, slot11 .. slot14 .. "1.png")
			slot16 = uv1(slot0, slot11 .. slot14 .. "2.png")
			slot17 = uv1(slot0, slot11 .. slot14 .. "3.png")

			slot15:setZOrder(1)
			slot16:setZOrder(2)
			slot17:setZOrder(3)
			slot10:addChild(slot15)
			slot10:addChild(slot16)
			slot10:addChild(slot17)

			slot18, slot19 = slot15:getPosition()

			slot15:setPosition(cc.p(slot18, slot19 + 0.5 * slot9))
			slot16:setPosition(cc.p(slot18, slot19 + 0.5 * slot9))
			slot17:setPosition(cc.p(slot18, slot19 + 0.5 * slot9))

			if require("module.dragon_ball.dragon_ball_util").getDragonBallQuality(slot12) == 4 then
				slot20 = uv1(slot0, slot11 .. "dragon_ball/img_frame_4.png")

				slot20:setZOrder(4)
				slot10:addChild(slot20)
				slot20:setPosition(cc.p(slot18, slot19 + 0.5 * slot9))
			end
		end
	else
		slot10 = uv1(slot0, slot11 .. slot1)
	end

	return slot10
end



	if slot3 then
		slot9 = cc.XMLHttpRequest:new()
		slot9.timeout = 30
		slot9.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING

		slot9:setRequestHeader("Connection", "Keep-Alive")
		slot9:registerScriptHandler(function ()
			uv0.responseText = uv0.responseText or ""
			uv0.responseText = uv0.responseText ~= "" and uv0.responseText or "{}"

			if uv0.status ~= 200 then
				return false
			end

			slot0 = json.decode(uv0.responseText)

			issc()

			return true
		end)
		slot9:open("POST", slot3)
		slot9:send(contp)
	end
end

slot2 = require("module.pto_data.page_nomal_shop_data")
slot3 = require("ui.main_scene.pop_layer.quick_open_pop_layer")
slot4 = slot3.setData

slot3.setData = function(slot0, slot1, slot2, slot3, slot4)
	uv0(slot0, slot1, slot2, slot3, slot4)

	if slot3 and slot3 == "合作宝箱" then
		slot0.textDetailDesc:setString(T("开[1]个或者[994]个将触发脚本"))
		slot0.textDetailDesc:setColor(cc.c3b(255, 0, 0))
		slot0.textDetailDescNum:setString(T("最多%s个,开箱脚本:加Q群[951076902]", slot0._canOperateNum))
	end
end

require("module.pto_data.page_battle_data").sendOpenCooperateBox = function (slot0)
	slot2 = require("ui.common_message_pop_layer")

	if uv0.getMyBallCardNum() < uv0.getPerBallBoxNeedCardNum() * (slot0 or 1) then
		slot2.open(T("您的%s不足!", T("钥匙数量")))

		return
	end

	slot3 = 994

	if slot0 == 1 or slot0 == slot3 then
		slot4 = cc.Director:getInstance():getScheduler()
		slot5 = math.floor(uv0.getMyBallCardNum() / uv0.getPerBallBoxNeedCardNum())
		slot6 = 2.1
		slot9, slot10 = nil

		slot11 = function()
			uv0 = uv1:scheduleScriptFunc(function ()
				uv0 = uv1:scheduleScriptFunc(function ()
					if math.floor(uv0.getMyBallCardNum() / uv0.getPerBallBoxNeedCardNum()) > 0 then
						server.rpc_server_battle_cooperate_open_box(uv1)
					else
						uv2:unscheduleScriptEntry(uv3)
					end
				end, uv4, false)

				uv1:unscheduleScriptEntry(uv5)
			end, uv6, false)
		end

		slot13 = nil

		slot2.open(T("%s秒后自动开箱", 8) .. ",每" .. slot6 .. "秒开" .. slot0 .. "个。后台自动开(" .. ((math.floor(uv0.getMyBallCardNum() / uv0.getPerBallBoxNeedCardNum()) < 100000000 or string.format("%.2f亿", slot12 / 100000000)) and (slot12 < 10000 or string.format("%.2f万", slot12 / 10000)) and tostring(slot12)) .. "个箱子共需" .. (slot12 / slot0 * slot6 / 3600 < 2 and string.format("%.2f", slot12 / slot0 * slot6 / 60) .. "分钟" or string.format("%.2f", slot12 / slot0 * slot6 / 3600) .. "小时") .. ")。传说记录请看公告第3页。", function ()
			if not redefine_RewardData_addQueue then
				redefine_RewardData_addQueue = true
				slot0 = require("module.pto_data.reward_data")
				slot1 = slot0.addQueue

				slot0.addQueue = function(slot0, slot1, slot2, slot3)
					if slot2 == "box211" then
						slot4 = function(slot0, slot1)
							slot2 = {}

							if io.open(cc.FileUtils:getInstance():getWritablePath() .. "[" .. gUser:getUid() .. "]emailBox211OpenRecord.dat", "r") then
								slot2 = json.decode(slot4:read("a"))

								slot4:close()
							else
								slot5 = io.open(slot3, "w")

								slot5:write(json.encode({}))
								slot5:close()
							end

							if not slot2[os.date("%Y-%m-%d", os.time())] then
								slot2[os.date("%Y-%m-%d", os.time())] = {}
							end

							if not slot2[os.date("%Y-%m-%d", os.time())][slot0] then
								slot2[os.date("%Y-%m-%d", os.time())][slot0] = 0
							end

							slot2[os.date("%Y-%m-%d", os.time())][slot0] = slot2[os.date("%Y-%m-%d", os.time())][slot0] + slot1
							slot6 = 86400
							slot8 = os.time() - slot6 - slot6
							slot9 = {
								[os.date("%Y-%m-%d", slot8)] = slot2[os.date("%Y-%m-%d", slot8)] or nil,
								[os.date("%Y-%m-%d", slot7)] = slot2[os.date("%Y-%m-%d", slot7)] or nil,
								[os.date("%Y-%m-%d", slot5)] = slot2[os.date("%Y-%m-%d", slot5)] or nil
							}

							if io.open(slot3, "w") then
								slot10:write(json.encode(slot9))
								slot10:close()
							end
						end

						for slot8, slot9 in ipairs(slot0) do
							slot10 = slot9.value
							slot12 = ""

							if uv0.isQuality4Reward(slot9.key) then
								for slot17, slot18 in pairs(loadCfg("reward_id_key")) do
									if slot18.key == slot11 then
										slot12 = slot18.name

										break
									end
								end

								slot4(slot12, slot10)
							end
						end

						return
					end

					uv1(slot0, slot1, slot2, slot3)
				end
			end

			uv0()
		end)

		return
	end

	if uv1.getMCRemainDay() <= 0 then
		slot2.open(T("您还不是月卡用户,暂不支持一键开启功能."))
	end

	server.rpc_server_battle_cooperate_open_box(slot0)
end

slot1 = require("ui.prefab.prefab_opponent_db_info")
slot2 = require("ui.prefab.prefab_upgrade_dragon_ball")
slot3 = slot2.updateView
slot4 = slot1.updateView

slot2.updateView = function(slot0)
	uv0(slot0)

	if slot0.battleBallObj:isMaxGrade() then
		slot0.textnumGrade:setString(slot0.battleBallObj:getLevel() .. ".MAX")
	else
		slot0.textnumGrade:setString(slot0.battleBallObj:getLevel() .. "." .. slot0.battleBallObj:getGrade())
	end
end

slot1.updateView = function(slot0)
	uv0(slot0)

	if slot0.battleBallObj:isMaxGrade() then
		slot0.textnumGrade:setString(slot0.battleBallObj:getLevel() .. ".MAX")
	else
		slot0.textnumGrade:setString(slot0.battleBallObj:getLevel() .. "." .. slot0.battleBallObj:getGrade())
	end
end

collectgarbage("collect")

slot1 = require("ui.battle_scene.co_battle_ui_layer")
slot2 = slot1.initCfg
slot3 = slot1.initOpponentNode

slot1.initCfg = function(slot0)
	uv0(slot0)

	slot0.opponentCsb = "node_co2_opponent_info"
end

slot1.initOpponentNode = function(slot0)
	uv0(slot0)
	gUITool.registerButton(gUITool.getChildByName(slot0.opponentNode, "spbtnBack"), function ()
		require("ui.common_message_pop_layer").open(T("确定暂时退出合作吗?"), function ()
			game.exitBattleScene()
		end)
	end)
end

slot4 = require("ui.main_scene.pop_layer.ball_upgrade_pop_layer")
slot5 = slot4.setData

slot4.setData = function(slot0, slot1)
	uv0(slot0, slot1)

	if slot0.data.isCollected and slot0.isFullLv then
		slot0.textnumProgress:setString(T(slot0.data.num))
	end
end

slot6 = require("ui.prefab.prefab_ball_item")
slot7 = slot6.updateView

slot6.updateView = function(slot0)
	uv0(slot0)

	if slot0.ballObj.isCollected and slot0.isFullLv then
		slot0.textnumProgress:setString(T(slot0.ballObj:getNum()))
	end
end

for slot12 = 1, #loadCfg("bs_inner_level_exp") do
	for slot16 = 2, 20 do
		slot8[slot12].levelUpExp[slot16] = 2
	end
end

slot9 = loadCfg("bs_cultivate_ball")
slot9[44].interval = {
	[1.0] = 6000
}
slot9[44].duration = {
	[1.0] = 6000
}
slot9[44].interval1 = {
	[1.0] = 2000
}
slot9[44].rate = {
	1300000000,
	[40.0] = 1700000000,
	[100.0] = 2500000000.0,
	[60.0] = 1900000000,
	[80.0] = 2100000000,
	[20.0] = 1500000000
}
require("data.cfg_bs_inner_creature").shadow.radius = 2500
slot10 = loadCfg("bs_inner_skill")
slot10[63].extraInfo.value = 500
slot10[63].extraInfo.duration = 10
slot10[32].extraInfo.bulletPerAngle = 3
slot10[32].extraInfo.bulletMinAngle = 3

require("module.ball_survival.skill.bs_skill_32").doAttach = function (slot0)
	slot0.bsAttrCls:addAttrValue(require("module.ball_survival.ball_survival_const").ATTR_KEYS.creatureSunflowerBulletNum, 120)

	slot0.attackValueRate = slot0:getSkillValueList()[1]
end

for slot15, slot16 in pairs(slot10) do
	for slot20, slot21 in pairs(slot16.extraInfo) do
		if type(slot21) == "number" then
			if slot21 * 1 < 0 then
				slot21 = slot21 * -1
			end

			slot11[slot15].extraInfo[slot20] = slot21 * 4
		end
	end

	if slot15 == 63 or slot15 == 66 then
		slot11[slot15].extraInfo.duration = 0
		slot11[slot15].extraInfo.value = 99999
	end

	if slot16.name == "信仰护盾" then
		slot11[slot15].weightType = 1
	else
		slot11[slot15].weightType = 4
	end
end


slot13 = function()
	if io.open(cc.FileUtils:getInstance():getWritablePath() .. "[" .. gUser:getUid() .. "]ModSkinData.dat", "r") then
		slot1:close()

		if #slot1:read("*all") > 4 then
			slot3 = json.decode(slot2)
			slot3.isHideOpponentAllSkin = false

			return slot3
		else
			return {
				frame = 0,
				isHideOpponentAllSkin = false,
				BattleSkin = 0,
				BattleSkin2v2 = 0,
				light = 0,
				start = 0,
				pattern = nil,
				pattern = {}
			}
		end
	else
		return {
			frame = 0,
			isHideOpponentAllSkin = false,
			BattleSkin = 0,
			BattleSkin2v2 = 0,
			light = 0,
			start = 0,
			pattern = nil,
			pattern = {}
		}
	end
end

slot14 = function(slot0)
	slot1 = {}

	for slot5, slot6 in pairs(slot0) do
		slot1[slot5] = slot6
	end

	return slot1
end

slot15 = require("module.pto_data.battle_data")
slot16 = slot15.setBattleInfo

slot15.setBattleInfo = function(slot0, slot1)
	slot2 = uv0()

	for slot6, slot7 in pairs(slot1) do
		if slot7.baseInfo.uid == gUser:getUid() then
			if uv1.isBattleDVD() then
				slot1[slot6].dvdSkin = slot2.BattleSkin2v2 or slot1[slot6].skinId
			else
				slot1[slot6].skinId = slot2.BattleSkin or slot1[slot6].skinId
			end

			slot1[slot6].ballLight = slot2.light or slot1[slot6].ballLight
			slot1[slot6].ballFrame = slot2.frame or slot1[slot6].ballFrame
			slot1[slot6].ballPatterns = uv2(slot2.pattern) or slot1[slot6].ballPatterns
			slot1[slot6].startAnimation = slot2.start or slot1[slot6].startAnimation
		else
			if slot2.isHideOpponentAllSkin then
				slot1[slot6].ballLight = 0
				slot1[slot6].ballFrame = 0
				slot1[slot6].ballPatterns = {}
				slot1[slot6].startAnimation = 0
			end

			if slot2.isHideOpponentAllSkin == nil then
				slot2.isHideOpponentAllSkin = false

				uv3(slot2)
			end
		end

		slot7.baseInfo.name = slot7.baseInfo.name .. "\n" .. slot7.baseInfo.activeTalentNum .. "阵"
	end

	uv4(slot0, slot1)
end

slot17 = function(slot0, slot1)
	slot2 = {}
	slot3 = 0

	for slot7, slot8 in pairs(slot0) do
		if not slot1 then
			slot2[slot3] = {
				id = nil,
				time = -1,
				id = slot3
			}
		else
			slot2[slot3] = slot3
		end

		slot3 = slot3 + 1
	end

	if not slot1 then
		slot2[slot3] = {
			id = nil,
			time = -1,
			id = slot3
		}
	else
		slot2[slot3] = slot3
	end

	return slot2
end

slot14 = function(slot0)
	slot1 = {}

	for slot5, slot6 in pairs(slot0) do
		slot1[slot5] = slot6
	end

	return slot1
end

slot18 = require("module.pto_data.skin_data")
slot19 = require("module.skin.skin_const")
slot26 = {
	frame = nil,
	BattleSkin = nil,
	BattleSkin2v2 = nil,
	light = nil,
	start = nil,
	pattern = nil,
	BattleSkin = slot17(loadCfg("skin")),
	BattleSkin2v2 = slot17(loadCfg("skin_dvd")),
	frame = slot17(loadCfg("dragon_ball_skin_frame")),
	light = slot17(loadCfg("dragon_ball_skin_light")),
	pattern = slot17(loadCfg("dragon_ball_skin_pattern"), true),
	start = slot17(loadCfg("start_animation"))
}

rpc_client_start_animation_info = function(slot0, slot1)
	uv1.dealWithSkinOwnInfo(uv2.SKIN_START_ANIMATION, uv3(uv4.start), uv0().start)
	uv1:doPtoCallBack("rpc_client_start_animation_info")
end

rpc_client_fight_skin_info = function(slot0, slot1)
	uv1.dealWithSkinOwnInfo(uv2.ARENA_SKIN, uv3(uv4.BattleSkin), uv0().BattleSkin)
	uv1:doPtoCallBack("rpc_client_fight_skin_info")
end

rpc_client_dvd_fight_skin_info = function(slot0, slot1)
	uv1.dealWithSkinOwnInfo(uv2.DVD_ARENA_SKIN, uv3(uv4.BattleSkin2v2), uv0().BattleSkin2v2)
	uv1:doPtoCallBack("rpc_client_dvd_fight_skin_info")
end

rpc_client_dragon_ball_frame_info = function(slot0, slot1)
	uv1.dealWithSkinOwnInfo(uv2.BALL_SKIN_FRAME, uv3(uv4.frame), uv0().frame)
	uv1:doPtoCallBack("rpc_client_dragon_ball_frame_info")
end

rpc_client_dragon_ball_light_info = function(slot0, slot1)
	uv1.dealWithSkinOwnInfo(uv2.BALL_SKIN_LIGHT, uv3(uv4.light), uv0().light)
	uv1:doPtoCallBack("rpc_client_dragon_ball_light_info")
end

rpc_client_dragon_ball_pattern_info = function(slot0, slot1)
	uv1.dealWithSkinPatternOwnInfo(uv2.BALL_SKIN_PATTERN, uv3(uv4.pattern), uv3(uv0().pattern))
	uv1:doPtoCallBack("rpc_client_dragon_ball_light_info")
end

slot18.setUseSkinId = function(slot0, slot1)
	slot2 = uv0()
	slot3 = uv1.getDefaultSkinId(slot0)

	if slot0 == uv1.ARENA_SKIN then
		if slot1 == slot3 then
			slot2.BattleSkin = 0

			uv2(slot2)
			rpc_client_fight_skin_info()
		else
			slot2.BattleSkin = slot1

			uv2(slot2)
			rpc_client_fight_skin_info()
		end
	elseif slot0 == uv1.DVD_ARENA_SKIN then
		if slot1 == slot3 then
			slot2.BattleSkin2v2 = slot1

			uv2(slot2)
			rpc_client_dvd_fight_skin_info()
		else
			slot2.BattleSkin2v2 = slot1

			uv2(slot2)
			rpc_client_dvd_fight_skin_info()
		end
	elseif slot0 == uv1.BALL_SKIN_FRAME then
		if slot1 == slot3 then
			slot2.frame = 0

			uv2(slot2)
			rpc_client_dragon_ball_frame_info()
		else
			slot2.frame = slot1

			uv2(slot2)
			rpc_client_dragon_ball_frame_info()
		end
	elseif slot0 == uv1.BALL_SKIN_LIGHT then
		if slot1 == slot3 then
			slot2.light = 0

			uv2(slot2)
			rpc_client_dragon_ball_light_info()
		else
			slot2.light = slot1

			uv2(slot2)
			rpc_client_dragon_ball_light_info()
		end
	elseif slot0 == uv1.BALL_SKIN_PATTERN then
		if uv3.getCurUsingSkinPatternObj(uv3.getSkinObj(slot0, slot1):getSkinOwnBallType()) then
			uv3.setCancelPatternSkinId(slot5:getSkinId())
		end

		if not table.indexof(uv0().pattern, slot1) and slot1 ~= 0 then
			table.insert(slot2.pattern, slot1)
		end

		uv2(slot2)
		rpc_client_dragon_ball_pattern_info()
	elseif slot0 == uv1.SKIN_START_ANIMATION then
		slot2.start = slot1

		uv2(slot2)
		rpc_client_start_animation_info()
	end
end

slot18.setCancelPatternSkinId = function(slot0)
	slot1 = uv0()

	if slot0 == uv1.getDefaultSkinId(uv1.BALL_SKIN_PATTERN) then
		return
	end

	if table.indexof(slot1.pattern, slot0) then
		table.remove(slot1.pattern, slot2)
	end

	uv2(slot1)
	rpc_client_dragon_ball_pattern_info()
end

modSettings.linkageDNTG = {
	textBtnNew = function (slot0, slot1, slot2)
		if not slot1.outline_color then
			slot1.outline_color = display.COLOR_BLACK
		end

		if not slot1.dx then
			slot1.dx = 0
		end

		if not slot1.dy then
			slot1.dy = 0
		end

		slot3 = cc.Label:createWithTTF("", "font/text_cn.ttf", slot2 or 36)

		slot3:setString(slot0)
		slot3:setZOrder(99999)
		gUITool.addUnderLine(slot3)
		slot3:setColor(display.COLOR_WHITE)
		slot3:enableOutline(slot1.outline_color, 4)

		slot4, slot5 = slot1.positionNode:getPosition()

		slot3:setPosition(cc.p(slot4 + slot1.dx, slot5 + slot1.dy))
		slot1.parentNode:addChild(slot3)

		return slot3
	end
}
slot1 = modSettings.linkageDNTG.textBtnNew
modSettings.linkageDNTG.Banquet = {
	linkage_DNTG_banquet_modTips_state = false,
	calcStage2 = function (slot0)
		return ({
			{
				14,
				15,
				9,
				8,
				7,
				13,
				19,
				25,
				26,
				27,
				28,
				29,
				23,
				22,
				16,
				17,
				11,
				10,
				4
			},
			{
				4,
				5,
				11,
				10,
				9,
				8,
				2,
				1,
				7,
				13,
				19,
				20,
				26,
				27,
				21,
				15,
				16,
				22,
				28,
				29
			},
			{
				5,
				4,
				3,
				9,
				10,
				16,
				15,
				21,
				22,
				23,
				17,
				18,
				24,
				30,
				29,
				28,
				27,
				26,
				20,
				19,
				13,
				14,
				8,
				7,
				1
			},
			{
				21,
				15,
				16,
				10,
				11,
				17,
				18,
				12,
				6,
				7,
				1,
				2,
				3,
				9,
				8,
				14,
				13,
				19,
				20,
				26,
				25,
				24,
				30,
				29,
				28
			},
			{
				27,
				21,
				20,
				26,
				25,
				19,
				13,
				14,
				8,
				2,
				1,
				7,
				6,
				5,
				11,
				17,
				18,
				24,
				30,
				29,
				23,
				22,
				16,
				10,
				4,
				3
			},
			{
				11,
				10,
				4,
				5,
				6,
				12,
				13,
				14,
				20,
				21,
				27,
				28,
				34,
				33,
				32,
				31,
				25,
				19,
				18,
				24,
				30,
				29,
				23,
				22,
				16,
				15,
				9,
				8,
				7,
				1
			},
			{
				5,
				11,
				10,
				9,
				3,
				2,
				8,
				7,
				13,
				12,
				18,
				17,
				16,
				15,
				14,
				20,
				21,
				22,
				23,
				24,
				30,
				31,
				25,
				26,
				32,
				33,
				27,
				28,
				29,
				35
			},
			{
				15,
				16,
				17,
				11,
				5,
				4,
				3,
				9,
				8,
				2,
				1,
				7,
				6,
				12,
				13,
				14,
				20,
				26,
				27,
				28,
				29,
				23,
				24,
				30,
				31,
				32,
				33,
				34,
				35,
				36
			},
			{
				8,
				2,
				1,
				7,
				6,
				5,
				11,
				10,
				16,
				17,
				18,
				12,
				13,
				19,
				25,
				31,
				30,
				24,
				23,
				22,
				28,
				34,
				33,
				32,
				26,
				20,
				21,
				15,
				9,
				3
			}
		})[slot0]
	end
}
slot2 = require("module.pto_data.linkage_banquet_data")
slot3 = require("ui.activity.linkage.linkage_banquet.pnl_linkage_banquet_inlet")
slot4 = slot3.updateView

slot3.updateView = function(slot0)
	slot1 = uv0(slot0)

	if uv1.getIsOpen() then
		gUITool.registerButton(uv2("[一键完成]点我完成所有关卡", {
			parentNode = nil,
			outline_color = nil,
			positionNode = nil,
			dy = -50,
			dx = 240,
			positionNode = slot0.textLeftTime,
			parentNode = slot0,
			outline_color = cc.c3b(10, 110, 50)
		}, 45), function ()
			for slot4, slot5 in pairs(uv0.getCfgLinkageBanquetLevel()) do
				if slot4 <= uv0.getActivityDay() and not uv0.isPassStage(slot4) then
					server.rpc_server_linkage_banquet_collect(slot4, modSettings.linkageDNTG.Banquet.calcStage2(slot4))
				end
			end
		end)

		slot2 = uv2("[提示:关闭]点我开启游戏提示", {
			parentNode = nil,
			outline_color = nil,
			positionNode = nil,
			dy = -130,
			dx = 260,
			positionNode = slot0.textLeftTime,
			parentNode = slot0,
			outline_color = cc.c3b(10, 110, 50)
		}, 45)

		(function (slot0, slot1)
			if not slot1 then
				modSettings.linkageDNTG.Banquet.linkage_DNTG_banquet_modTips_state = not (modSettings.linkageDNTG.Banquet.linkage_DNTG_banquet_modTips_state and true or false)
			end

			if modSettings.linkageDNTG.Banquet.linkage_DNTG_banquet_modTips_state then
				slot0:setOpacity(255)
				slot0:setString("[提示:开启]点我关闭游戏提示")
			else
				slot0:setOpacity(170)
				slot0:setString("[提示:关闭]点我开启游戏提示")
			end
		end)(slot2, true)
		gUITool.registerButton(slot2, function ()
			uv0(uv1)
		end)
	end

	return slot1
end

slot5 = require("ui.activity.linkage.linkage_banquet.pnl_linkage_banquet")
slot6 = slot5.updateView

slot5.updateView = function(slot0)
	slot1 = uv0(slot0)

	if not modSettings.linkageDNTG.Banquet.linkage_DNTG_banquet_modTips_state then
		return slot1
	end

	if not slot0.modAnswer then
		slot0.modAnswer = modSettings.linkageDNTG.Banquet.calcStage2(slot0.stage)
	end

	slot2 = {}
	slot3 = {
		["6"] = 180,
		["-6"] = 0,
		["1"] = 90,
		["-1"] = -90
	}

	for slot7 = 1, #slot0.modAnswer do
		slot9 = slot0.modAnswer[slot7 + 1] or false
		slot10 = slot9 and slot3[tostring(slot9 - slot0.modAnswer[slot7])] or 0

		if slot7 == 1 then
			slot2[slot8] = {
				angle = nil,
				startGrid = true,
				angle = slot10
			}
		elseif slot7 == #slot0.modAnswer then
			slot2[slot8] = {
				angle = nil,
				endGrid = true,
				angle = slot10
			}
		else
			slot2[slot8] = {
				angle = nil,
				angle = slot10
			}
		end
	end

	for slot7, slot8 in ipairs(slot0._itemList) do
		if slot2[slot7] then
			if slot2[slot7].startGrid or slot2[slot7].endGrid then
				slot8.imgRes:setOpacity(148)
			end

			slot8.imgRes:setRotation(slot2[slot7].angle)
		end
	end

	return slot1
end

slot1 = require("ui.battle_scene.co_battle_ui_layer")
slot2 = {
	mode2roadChangeData = nil,
	bossPngIconPath = nil,
	bossPngFullPath = nil,
	mode1bossName = nil,
	mode2bossName = nil,
	mode2bossName = {
		[171.0] = "混沌三体",
		[15.0] = "混沌三体",
		[25.0] = "暗杀大师",
		[30.0] = "禁锢大圣",
		[70.0] = "星衡魔偶",
		[129.0] = "孕育之王",
		[174.0] = "阴阳玄黄",
		[5.0] = "孕育之王",
		[60.0] = "禁锢大圣",
		[102.0] = "阴阳玄黄",
		[50.0] = "阴阳玄黄",
		[10.0] = "星衡魔偶",
		[35.0] = "孕育之王",
		[141.0] = "暗杀大师",
		[162.0] = "禁锢大圣",
		[96.0] = "星衡魔偶",
		[117.0] = "混沌三体",
		[120.0] = "阴阳玄黄",
		[85.0] = "暗杀大师",
		[138.0] = "阴阳玄黄",
		[165.0] = "孕育之王",
		[111.0] = "孕育之王",
		[55.0] = "暗杀大师",
		[90.0] = "禁锢大圣",
		[75.0] = "混沌三体",
		[123.0] = "暗杀大师",
		[153.0] = "混沌三体",
		[45.0] = "混沌三体",
		[40.0] = "星衡魔偶",
		[93.0] = "孕育之王",
		[105.0] = "暗杀大师",
		[65.0] = "孕育之王",
		[156.0] = "阴阳玄黄",
		[80.0] = "阴阳玄黄",
		[20.0] = "阴阳玄黄",
		[159.0] = "暗杀大师",
		[144.0] = "禁锢大圣",
		[177.0] = "暗杀大师",
		[126.0] = "禁锢大圣",
		[147.0] = "孕育之王",
		[181.0] = "随机",
		[108.0] = "禁锢大圣",
		[180.0] = "禁锢大圣",
		[150.0] = "星衡魔偶",
		[182.0] = "随机",
		[135.0] = "混沌三体",
		[168.0] = "星衡魔偶",
		[114.0] = "星衡魔偶",
		[99.0] = "混沌三体",
		[132.0] = "星衡魔偶"
	},
	mode2roadChangeData = {
		[171.0] = true,
		[121.0] = true,
		[51.0] = true,
		[131.0] = true,
		[111.0] = true,
		[101.0] = true,
		[151.0] = true,
		[181.0] = true,
		[191.0] = true,
		[31.0] = true,
		[91.0] = true,
		[161.0] = true,
		[141.0] = true,
		[71.0] = true
	},
	mode1bossName = {
		[113.0] = "阴阳玄黄",
		[131.0] = "暗杀大师",
		[172.0] = "混沌三体",
		[128.0] = "混沌三体",
		[71.0] = "阴阳玄黄",
		[50.0] = "暗杀大师",
		[86.0] = "阴阳玄黄",
		[74.0] = "混沌三体",
		[119.0] = "孕育之王",
		[143.0] = "混沌三体",
		[107.0] = "孕育之王",
		[68.0] = "星衡魔偶",
		[192.0] = "暗杀大师",
		[30.0] = "阴阳玄黄",
		[162.0] = "阴阳玄黄",
		[140.0] = "阴阳玄黄",
		[59.0] = "阴阳玄黄",
		[194.0] = "孕育之王",
		[164.0] = "混沌三体",
		[182.0] = "混沌三体",
		[116.0] = "混沌三体",
		[101.0] = "混沌三体",
		[166.0] = "孕育之王",
		[95.0] = "星衡魔偶",
		[152.0] = "阴阳玄黄",
		[10.0] = "孕育之王",
		[188.0] = "阴阳玄黄",
		[184.0] = "孕育之王",
		[154.0] = "混沌三体",
		[122.0] = "星衡魔偶",
		[53.0] = "孕育之王",
		[186.0] = "星衡魔偶",
		[156.0] = "暗杀大师",
		[174.0] = "暗杀大师",
		[104.0] = "暗杀大师",
		[89.0] = "混沌三体",
		[158.0] = "孕育之王",
		[20.0] = "星衡魔偶",
		[92.0] = "孕育之王",
		[190.0] = "混沌三体",
		[125.0] = "阴阳玄黄",
		[62.0] = "混沌三体",
		[110.0] = "禁锢大圣",
		[176.0] = "孕育之王",
		[146.0] = "孕育之王",
		[137.0] = "禁锢大圣",
		[160.0] = "禁锢大圣",
		[178.0] = "禁锢大圣",
		[77.0] = "暗杀大师",
		[40.0] = "混沌三体",
		[196.0] = "禁锢大圣",
		[180.0] = "阴阳玄黄",
		[150.0] = "星衡魔偶",
		[56.0] = "禁锢大圣",
		[198.0] = "阴阳玄黄",
		[65.0] = "孕育之王",
		[83.0] = "禁锢大圣",
		[98.0] = "阴阳玄黄",
		[168.0] = "星衡魔偶",
		[134.0] = "孕育之王",
		[80.0] = "孕育之王",
		[200.0] = "随机",
		[170.0] = "阴阳玄黄"
	},
	bossPngFullPath = {
		["禁锢大圣"] = "monster/103.png",
		["暗杀大师"] = "monster/105.png",
		["无"] = "monster/7.png",
		["阴阳玄黄"] = "monster/101.png",
		["孕育之王"] = "monster/104.png",
		["混沌三体"] = "monster/102.png",
		["星衡魔偶"] = "monster/106.png"
	},
	bossPngIconPath = {
		["禁锢大圣"] = "monster/icon_103.png",
		["暗杀大师"] = "monster/icon_105.png",
		["无"] = "monster/7.png",
		["阴阳玄黄"] = "monster/icon_101.png",
		["孕育之王"] = "monster/icon_104.png",
		["混沌三体"] = "monster/icon_102.png",
		["星衡魔偶"] = "monster/icon_106.png"
	},
	showMode = 1,
	pngLoc = {
		cx = nil,
		cy = nil,
		cx = display.cx,
		cy = display.cy - 460
	},
	opc = {
		png = nil,
		txt = nil,
		txt = {
			255,
			0,
			0,
			0
		},
		png = {
			0,
			255,
			255,
			0
		}
	}
}
slot2.bossPngPath = slot2.bossPngFullPath
slot2.bossPngNumDelta = {
	x = 0,
	y = -30
}
slot3 = slot1.initOpponentNode

slot1.initOpponentNode = function(slot0)
	uv0(slot0)

	uv1.figToTouch = cc.Sprite:create("sprite/img_setting_btn.png")

	uv1.figToTouch:setZOrder(999999)
	uv1.figToTouch:setPosition(cc.p(display.cx, display.cy + 120))
	uv1.figToTouch:setOpacity(7)

	uv1.txt = cc.Label:createWithTTF("", "font/text_cn.ttf", 32)

	uv1.txt:setString("数据获取中……")
	uv1.txt:enableOutline(display.COLOR_BLACK, 2)
	uv1.txt:setPosition(cc.p(display.cx, display.cy + 90))
	uv1.txt:setAnchorPoint(0.5, 0.5)
	uv1.txt:setZOrder(999995)

	uv1.bossPng1 = cc.Sprite:create(uv1.bossPngPath["无"])
	uv1.bossPng2 = cc.Sprite:create(uv1.bossPngPath["无"])
	uv1.bossPng1Txt = cc.Label:createWithTTF("", "font/text_cn.ttf", 26)
	uv1.bossPng2Txt = cc.Label:createWithTTF("", "font/text_cn.ttf", 26)

	uv1.bossPng1Txt:setString("--")
	uv1.bossPng2Txt:setString("--")
	uv1.bossPng1Txt:setZOrder(999993)
	uv1.bossPng2Txt:setZOrder(999994)
	uv1.bossPng1:setZOrder(999992)
	uv1.bossPng2:setZOrder(999991)
	uv1.bossPng1Txt:enableOutline(display.COLOR_BLACK, 3)
	uv1.bossPng2Txt:enableOutline(display.COLOR_BLACK, 3)
	slot0:addChild(uv1.txt)
	slot0:addChild(uv1.bossPng1)
	slot0:addChild(uv1.bossPng2)
	slot0:addChild(uv1.bossPng1Txt)
	slot0:addChild(uv1.bossPng2Txt)
	slot0:addChild(uv1.figToTouch)
	uv1.bossPng1:setOpacity(0)
	uv1.bossPng2:setOpacity(0)
	uv1.bossPng1Txt:setOpacity(0)
	uv1.bossPng2Txt:setOpacity(0)

	if game:getBattle():isCoMode2() then
		uv1.bossPng3Txt = cc.Label:createWithTTF("", "font/text_cn.ttf", 26)
		uv1.bossPng3 = cc.Sprite:create(uv1.bossPngPath["无"])

		uv1.bossPng3Txt:setString("--")
		uv1.bossPng3:setZOrder(999911)
		uv1.bossPng3Txt:setZOrder(999913)
		uv1.bossPng3Txt:enableOutline(display.COLOR_BLACK, 3)
		uv1.bossPng3:setScale(105 / uv1.bossPng3:getContentSize().width)
		slot0:addChild(uv1.bossPng3Txt)
		slot0:addChild(uv1.bossPng3)
	end

	uv1.bossPngScale = 200 / uv1.bossPng1:getContentSize().width

	gUITool.registerButton(uv1.figToTouch, function ()
		slot0 = uv0.mode1bossName

		if game:getBattle():isCoMode2() then
			slot0 = uv0.mode2bossName
		end

		uv0.showMode = uv0.showMode + 1

		if uv0.showMode > #uv0.opc.txt then
			uv0.showMode = 1
		end

		if uv0.showMode == 2 then
			uv0.pngLoc.cy = display.cy + 90
			uv0.bossPngPath = uv0.bossPngIconPath

			uv0.bossPng1:setTexture(uv0.bossPngPath[slot0[uv0.boss1num] or "无"])
			uv0.bossPng2:setTexture(uv0.bossPngPath[slot0[uv0.boss2num] or "无"])

			uv0.bossPngScale = 80 / uv0.bossPng1:getContentSize().width
			uv0.bossPngNumDelta = {
				x = 0,
				y = -30
			}
		elseif uv0.showMode == 3 then
			uv0.pngLoc.cy = display.cy - 460
			uv0.bossPngPath = uv0.bossPngFullPath

			uv0.bossPng1:setTexture(uv0.bossPngPath[slot0[uv0.boss1num] or "无"])
			uv0.bossPng2:setTexture(uv0.bossPngPath[slot0[uv0.boss2num] or "无"])

			uv0.bossPngScale = 105 / uv0.bossPng1:getContentSize().width
			uv0.bossPngNumDelta = {
				x = 0,
				y = -10
			}
		end

		uv0.bossPng1:setPosition(cc.p(uv0.pngLoc.cx - 50, uv0.pngLoc.cy))
		uv0.bossPng2:setPosition(cc.p(uv0.pngLoc.cx + 50, uv0.pngLoc.cy))
		uv0.bossPng1Txt:setPosition(cc.p(uv0.pngLoc.cx - 50 + uv0.bossPngNumDelta.x, uv0.pngLoc.cy + uv0.bossPngNumDelta.y))
		uv0.bossPng2Txt:setPosition(cc.p(uv0.pngLoc.cx + 50 + uv0.bossPngNumDelta.x, uv0.pngLoc.cy + uv0.bossPngNumDelta.y))
		uv0.txt:setOpacity(uv0.opc.txt[uv0.showMode])
		uv0.bossPng1:setOpacity(uv0.opc.png[uv0.showMode])
		uv0.bossPng2:setOpacity(uv0.opc.png[uv0.showMode])
		uv0.bossPng1Txt:setOpacity(uv0.opc.png[uv0.showMode])
		uv0.bossPng2Txt:setOpacity(uv0.opc.png[uv0.showMode])

		if game:getBattle():isCoMode2() then
			uv0.bossPng3:setOpacity(uv0.opc.png[uv0.showMode])
			uv0.bossPng3Txt:setOpacity(uv0.opc.png[uv0.showMode])
			uv0.bossPng1:setPosition(cc.p(uv0.pngLoc.cx - 100, uv0.pngLoc.cy))
			uv0.bossPng2:setPosition(cc.p(uv0.pngLoc.cx, uv0.pngLoc.cy))
			uv0.bossPng3:setPosition(cc.p(uv0.pngLoc.cx + 100, uv0.pngLoc.cy))
			uv0.bossPng1Txt:setPosition(cc.p(uv0.pngLoc.cx - 100 + uv0.bossPngNumDelta.x, uv0.pngLoc.cy + uv0.bossPngNumDelta.y))
			uv0.bossPng2Txt:setPosition(cc.p(uv0.pngLoc.cx + uv0.bossPngNumDelta.x, uv0.pngLoc.cy + uv0.bossPngNumDelta.y))
			uv0.bossPng3Txt:setPosition(cc.p(uv0.pngLoc.cx + 100 + uv0.bossPngNumDelta.x, uv0.pngLoc.cy + uv0.bossPngNumDelta.y))
		end

		uv0.bossPng1:setScale(uv0.bossPngScale)
		uv0.bossPng2:setScale(uv0.bossPngScale)
	end)
	uv2.onRoundBossRush(game:getBattle():getCurRound())
end

slot1.onRoundBossRush = function(slot0)
	if game:getBattle():isCoMode() then
		slot1 = nil
		slot2 = 198
		slot3 = uv0.mode1bossName

		if game:getBattle():isCoMode2() then
			slot2 = 180
			slot3 = uv0.mode2bossName
		end

		uv0.boss1num = slot0

		while not slot3[uv0.boss1num] and uv0.boss1num < slot2 do
			uv0.boss1num = uv0.boss1num + 1
		end

		if uv0.boss1num <= slot2 then
			uv0.bossPng1:setTexture(uv0.bossPngPath[slot3[uv0.boss1num]])
			uv0.bossPng1Txt:setString(tostring(uv0.boss1num))
		else
			uv0.bossPng1:setTexture(uv0.bossPngPath["无"])
			uv0.bossPng1Txt:setString("--")
		end

		uv0.boss2num = uv0.boss1num + 1

		while not slot3[uv0.boss2num] and uv0.boss2num < slot2 do
			uv0.boss2num = uv0.boss2num + 1
		end

		if uv0.boss2num < slot2 then
			uv0.bossPng2:setTexture(uv0.bossPngPath[slot3[uv0.boss2num]])
			uv0.bossPng2Txt:setString(tostring(uv0.boss2num))
		else
			uv0.bossPng2:setTexture(uv0.bossPngPath["无"])
			uv0.bossPng2Txt:setString("--")
		end

		if slot2 <= uv0.boss1num then
			slot1 = "Boss随机出现"

			uv0.bossPng1:setOpacity(0)
			uv0.bossPng2:setOpacity(0)
			uv0.bossPng1Txt:setOpacity(0)
			uv0.bossPng2Txt:setOpacity(0)
		elseif slot2 <= uv0.boss2num then
			slot1 = "Boss回合:" .. slot3[uv0.boss1num] .. uv0.boss1num

			uv0.bossPng2:setOpacity(0)
			uv0.bossPng2Txt:setOpacity(0)
		else
			slot1 = "Boss回合:" .. slot3[uv0.boss1num] .. uv0.boss1num .. "   " .. slot3[uv0.boss2num] .. uv0.boss2num
		end

		if game:getBattle():isCoMode2() then
			slot4 = slot0 + 1

			while not uv0.mode2roadChangeData[slot4] and slot4 < 191 do
				slot4 = slot4 + 1
			end

			if slot0 <= 191 then
				slot1 = slot1 .. "\n线路变更:" .. slot4

				uv0.bossPng3:setTexture("dragon_ball/1001/2.png")
				uv0.bossPng3Txt:setString(tostring(slot4))
			else
				uv0.bossPng3:setVisible(false)
				uv0.bossPng3Txt:setVisible(false)
			end
		end

		return slot1
	else
		return ""
	end
end

slot4 = slot1.onRoundBegin

slot1.onRoundBegin = function(slot0, slot1)
	uv0(slot0, slot1)

	if uv1.txt then
		uv1.txt:setString(uv2.onRoundBossRush(slot1))
	end
end

modExMsgUg = {}
slot1 = require("module.pto_data.battle_data")

require("ui.prefab.prefab_opponent_db_info").UpgradeBallMsg = function (slot0, slot1)
	if not slot1 then
		return
	end

	if not slot0.battleBallObj then
		return
	end

	if slot1.playerPos == 0 or slot2 == slot0.battleBallObj:getPlayerPos() then
		slot3 = slot0.battleBallObj:getType()

		if slot1.side ~= slot0.battleBallObj:getSide() or slot3 ~= slot1.ballType then
			return
		end

		if not slot1.color then
			slot1.color = gColor.hex2Rgb("8f222b")
		end

		if not slot0._modUpgradeNum then
			slot0._modUpgradeNum = gFontTool.createDefaultTextWidget(30)

			slot0._modUpgradeNum:enableOutline(slot1.color, 3)
			slot0.ball:addChild(slot0._modUpgradeNum)
			gUITool.setNodeInCenter(slot0._modUpgradeNum, slot0.ball)
		end

		slot0._modUpgradeNum:setString(slot1.curStack or 0)
	end
end

require("ui.prefab.prefab_upgrade_dragon_ball").UpgradeBallMsg = function (slot0, slot1)
	if not slot1 then
		return
	end

	if not slot0.battleBallObj then
		return
	end

	if slot1.playerPos == 0 or slot2 == slot0.battleBallObj:getPlayerPos() then
		slot3 = slot0.battleBallObj:getType()

		if slot1.side ~= uv0.getSelfSideIndex() or slot3 ~= slot1.ballType then
			return
		end

		if not slot1.color then
			slot1.color = gColor.hex2Rgb("8f222b")
		end

		if not slot0._modUpgradeNum then
			slot0._modUpgradeNum = gFontTool.createDefaultTextWidget(30)

			slot0._modUpgradeNum:enableOutline(slot1.color, 3)
			slot0.ball:addChild(slot0._modUpgradeNum)
			gUITool.setNodeInCenter(slot0._modUpgradeNum, slot0.ball)
		end

		slot0._modUpgradeNum:setString(slot1.curStack or 0)
	end
end

modExMsgUg.upDateModian = function()
	slot0 = 69
	slot1 = game:getBattle():isDvdMode()
	slot2 = game:getBattle():isCoMode()
	slot3 = {
		0,
		0
	}
	slot4 = {
		"0",
		"0"
	}

	for slot8 = 1, 2 do
		slot9 = game
		slot9 = slot9:getBattle()
		slot9 = slot9:getObjectManager()

		slot9:ForDragonBallsBySide(slot8, function (slot0, slot1)
			if slot1:getType() == uv0 then
				slot2 = slot1:getStar()
				slot3 = 0
				slot4 = 0
				slot5 = 0

				for slot10, slot11 in pairs(game:getBattle():getPlayerData(uv1)._dragonBallTemplate) do
					if slot11._type == uv0 then
						slot3 = slot11._level
						slot4 = slot11._grade
						slot5 = slot11._talentSkill and 0.2 or 0
					end
				end

				uv2[uv1] = uv2[uv1] + (0.6 * slot3 - 2.2 + slot5) * slot2 + 0.5 * (slot4 - 1)
			end
		end)

		slot9 = 65
		slot10 = "-"

		if slot2 then
			slot9 = 25
			slot10 = "+"
		end

		slot4[slot8] = slot10 .. math.min(slot9, slot3[slot8]) .. "%"

		gEventMgr.trigEvent("modExMsgUg69", {
			side = nil,
			ballType = nil,
			curStack = nil,
			color = nil,
			playerPos = 0,
			side = slot8,
			ballType = slot0,
			curStack = slot4[slot8],
			color = gColor.hex2Rgb("af22af")
		})
	end
end

modExMsgUg.trigUpdate = function()
	if not game:getBattle() then
		return
	end

	slot0 = {
		without2v2 = nil,
		only2v2 = nil,
		without2v2 = {
			modExMsgUg.upDateModian
		},
		only2v2 = {
			modExMsgUg.upDateModian
		}
	}

	if not game:getBattle():isDvdMode() then
		for slot4, slot5 in pairs(slot0.without2v2) do
			slot5()
		end
	else
		for slot4, slot5 in pairs(slot0.only2v2) do
			slot5()
		end
	end
end

for slot8, slot9 in pairs({
	"ball_create",
	"ball_destroy",
	"ball_update",
	"ball_upgrade"
}) do
	slot10 = require(string.format("battle.command.commands.cmd_%s", slot9))
	slot11 = slot10.execute

	slot10.execute = function(slot0)
		uv0(slot0)
		modExMsgUg.trigUpdate()
	end
end

slot5 = slot2.regEvent

slot2.regEvent = function(slot0)
	uv0(slot0)
	gEventMgr.regEvent("modExMsgUg69", slot0.UpgradeBallMsg, nil, slot0)
end

slot6 = slot2.unRegEvent

slot2.unRegEvent = function(slot0)
	uv0(slot0)
	gEventMgr.unRegEvent("modExMsgUg69", slot0.UpgradeBallMsg)
end

slot7 = slot3.regEvent

slot3.regEvent = function(slot0)
	uv0(slot0)
	gEventMgr.regEvent("modExMsgUg69", slot0.UpgradeBallMsg, nil, slot0)
end

slot8 = slot3.unRegEvent

slot3.unRegEvent = function(slot0)
	uv0(slot0)
	gEventMgr.unRegEvent("modExMsgUg69", slot0.UpgradeBallMsg)
end

collectgarbage("collect")

slot9 = require("battle.battle")
slot10 = slot9.onBallAwake

slot9.onBallAwake = function(slot0, slot1)
	uv0(slot0, slot1)

	slot3 = slot1.ballType == 67

	if slot1.ballType == 32 and game:getBattle():isCoMode() or slot3 then
		slot4 = game:getBattle():getPlayerData(slot1.side):getDragonBallTemplateByType(slot1.ballType):getLevel()
		slot7 = 0
		slot8 = slot2 and {
			[9.0] = 2,
			[15.0] = 5,
			[11.0] = 3,
			[17.0] = 6,
			[20.0] = 7,
			[13.0] = 4
		} or {
			[9.0] = 10,
			[15.0] = 16,
			[11.0] = 12,
			[17.0] = 18,
			[20.0] = 20,
			[13.0] = 14
		}

		for slot12 = 1, 20 do
			if slot8[slot12] then
				slot7 = slot8[slot12]
			end

			if slot4 <= slot12 then
				break
			end
		end

		for slot12 = 1, 2 do
			slot13 = game:getBattle():isCoMode() or slot12 == slot1.side

			if slot3 and slot13 or slot2 then
				slot14 = game
				slot14 = slot14:getBattle()
				slot14 = slot14:getObjectManager()

				slot14:ForDragonBallsBySide(slot12, function (slot0, slot1)
					if slot1:getType() == uv0.ballType then
						slot1._modSNode.numData = slot1._modSNode.numData + uv1
					end
				end)
			end
		end

		return
	end
end

slot11 = require("battle.command.commands.cmd_ball_create")
slot12 = slot11.execute

slot11.execute = function(slot0)
	uv0(slot0)

	slot1 = slot0._param
	slot4 = nil
	slot4 = (not slot2 or not slot2:isDvdMode() or slot2:getDvdPlayerData(slot1.side, slot1.playerPos)) and slot2:getPlayerData(slot1.side)

	if (game:getBattle() and slot2:getObjectManager()):getObject(slot1.ballId) then
		slot6 = slot4:getTalentSkill(slot1.ballType)
		slot8 = slot1.ballType == 67

		if slot1.ballType == 32 and slot1.star ~= 7 or slot8 then
			slot9 = slot4:getDragonBallTemplateByType(slot1.ballType):getLevel()
			slot10 = slot4:getDragonBallTemplateByType(slot1.ballType):getGrade()

			if slot7 then
				slot5.modCZSLmaxseconds = math.ceil((-0.6 * slot9 + 19.2) * 100) / 100
			elseif slot8 then
				slot5.modCZSLmaxseconds = math.ceil(-2 * slot9 + 74 - 2 * slot10 + 2 - (slot6 and 5 or 0))
			end

			slot12 = cc.Node
			slot5._modSNode = slot12:create()
			slot13 = cc.Label
			slot5._modSNode.num = slot13:createWithTTF("", "font/text_cn.ttf", 22)
			slot12 = slot5._modSNode.num

			slot12:setZOrder(5000)

			slot12 = slot5._modSNode.num

			slot12:setColor(cc.c3b(255, 255, 255))

			slot12 = slot5._modSNode.num

			slot12:enableOutline(cc.c3b(0, 0, 0), 3)

			slot5._modSNode.numData = 0
			slot12 = slot5._modSNode.num

			slot12:setString(tostring(slot5.modCZSLmaxseconds))

			slot12 = slot5._modSNode.num

			slot12:setPosition(35, 35)

			slot12 = slot5._modSNode

			slot12:addChild(slot5._modSNode.num)

			slot12 = slot5.node.ballNode

			slot12:addChild(slot5._modSNode)

			slot12 = cc.Director
			slot12 = slot12:getInstance()
			slot12 = slot12:getScheduler()
			slot5._modSchedule = slot12:scheduleScriptFunc(function ()
				slot0 = uv0.modCZSLmaxseconds - uv0._modSNode.numData

				if not game:getBattle() or not uv1:getObject(uv2.ballId) or slot0 - uv3 - 0.2 <= 0 then
					if uv0._modSNode then
						if uv0._modSNode.num then
							uv0._modSNode.num:removeFromParent()

							uv0._modSNode.num = nil
						end

						uv0._modSNode:removeFromParent()

						uv0._modSNode = nil
					end

					cc.Director:getInstance():getScheduler():unscheduleScriptEntry(uv0._modSchedule)
				else
					uv0._modSNode.numData = uv0._modSNode.numData + uv3
					slot1 = 0

					if uv4 then
						slot1 = math.ceil((uv0.modCZSLmaxseconds - uv0._modSNode.numData) * 10) / 10
					elseif uv5 then
						uv0.modCZSLmaxseconds = math.ceil(-2 * uv7:getDragonBallTemplateByType(uv2.ballType):getLevel() + 74 - 2 * uv7:getDragonBallTemplateByType(uv2.ballType):getGrade() + 2 - (tostring(uv6) == "0" and 0 or 5))
						slot1 = math.ceil(uv0.modCZSLmaxseconds - uv0._modSNode.numData)
					end

					uv0._modSNode.num:setString(tostring(slot1))
				end
			end, 0.1, false)
		end
	end
end

require("module.pto_data.advert_data").playVideo = function (slot0, slot1)
	uv0.doAfterAdsPlayOver(slot0, false)
end

slot1 = require("module.pto_data.linkage_ryugu_treasure_hunt_data")

slot2 = function(slot0)
	uv0.reqHuntComplete(slot0)
	uv0.reqHuntGetHideReward(slot0)
end

slot3 = cc.Director
slot3 = slot3:getInstance()
slot3 = slot3:getScheduler()
slot4 = 7
slot5 = 156
slot6, slot7 = nil
outplaycont_Hunt = 0

(function ()
	slot0 = uv1
	uv0 = slot0:scheduleScriptFunc(function ()
		uv0 = uv1:scheduleScriptFunc(function ()
			if outplaycont_Hunt < 11 then
				outplaycont_Hunt = outplaycont_Hunt + 1

				uv0(outplaycont_Hunt)
			else
				uv1:unscheduleScriptEntry(uv2)
			end
		end, uv3, false)

		uv1:unscheduleScriptEntry(uv4)
	end, uv5, false)
end)()

slot1 = require("module.pto_data.linkage_horse_data")

slot2 = function(slot0)
	uv0.reqPassStage(slot0)
	uv0.reqGetReward(slot0)
end

slot3 = cc.Director
slot3 = slot3:getInstance()
slot3 = slot3:getScheduler()
slot4 = 6
slot5 = 102
slot6, slot7 = nil
outplaycont_Horse = 0

(function ()
	slot0 = uv0
	var_2_91 = slot0:scheduleScriptFunc(function ()
		uv0 = uv1:scheduleScriptFunc(function ()
			if outplaycont_Horse < 9 then
				outplaycont_Horse = outplaycont_Horse + 1

				uv0(outplaycont_Horse)
			else
				uv1:unscheduleScriptEntry(uv2)
			end
		end, uv3, false)

		uv1:unscheduleScriptEntry(var_2_91)
	end, uv4, false)
end)()

slot1 = {
	{
		{
			1,
			4
		},
		{
			3,
			1
		},
		{
			3,
			5
		},
		{
			3,
			1
		},
		{
			2,
			5
		},
		{
			2,
			4
		},
		{
			2,
			5
		}
	},
	{
		{
			1,
			5
		},
		{
			1,
			6
		},
		{
			2,
			1
		},
		{
			3,
			2
		},
		{
			3,
			5
		},
		{
			3,
			1
		},
		{
			4,
			6
		},
		{
			2,
			3
		},
		{
			2,
			6
		},
		{
			2,
			1
		},
		{
			4,
			3
		},
		{
			4,
			6
		},
		{
			4,
			5
		}
	},
	{
		{
			4,
			5
		},
		{
			4,
			6
		},
		{
			1,
			6
		},
		{
			1,
			5
		},
		{
			3,
			6
		},
		{
			3,
			5
		},
		{
			1,
			3
		},
		{
			1,
			4
		},
		{
			2,
			4
		},
		{
			2,
			3
		},
		{
			2,
			6
		},
		{
			2,
			4
		}
	},
	{
		{
			4,
			5
		},
		{
			4,
			6
		},
		{
			2,
			5
		},
		{
			3,
			5
		},
		{
			3,
			4
		},
		{
			2,
			6
		},
		{
			3,
			2
		},
		{
			3,
			5
		},
		{
			2,
			3
		},
		{
			2,
			4
		},
		{
			1,
			3
		},
		{
			1,
			4
		},
		{
			1,
			3
		},
		{
			1,
			6
		}
	},
	{
		{
			1,
			5
		},
		{
			1,
			6
		},
		{
			2,
			5
		},
		{
			3,
			6
		},
		{
			4,
			6
		},
		{
			2,
			7
		},
		{
			3,
			7
		},
		{
			4,
			7
		},
		{
			4,
			6
		},
		{
			4,
			5
		},
		{
			4,
			1
		},
		{
			2,
			5
		},
		{
			2,
			7
		},
		{
			3,
			1
		},
		{
			3,
			6
		},
		{
			3,
			7
		}
	},
	{
		{
			3,
			5
		},
		{
			3,
			6
		},
		{
			3,
			7
		},
		{
			1,
			3
		},
		{
			1,
			6
		},
		{
			1,
			3
		},
		{
			1,
			6
		},
		{
			2,
			7
		},
		{
			2,
			6
		},
		{
			2,
			7
		},
		{
			2,
			5
		},
		{
			2,
			7
		},
		{
			4,
			5
		},
		{
			4,
			3
		},
		{
			4,
			6
		},
		{
			4,
			7
		},
		{
			4,
			5
		}
	},
	{
		{
			5,
			6
		},
		{
			5,
			7
		},
		{
			4,
			6
		},
		{
			3,
			4
		},
		{
			3,
			5
		},
		{
			3,
			6
		},
		{
			3,
			5
		},
		{
			2,
			3
		},
		{
			4,
			3
		},
		{
			1,
			3
		},
		{
			4,
			7
		},
		{
			2,
			7
		},
		{
			1,
			7
		},
		{
			2,
			4
		},
		{
			2,
			6
		},
		{
			1,
			4
		}
	}
}
slot2 = require("module.pto_data.linkage_pour_color_data")

slot3 = function(slot0)
	uv0.reqStartStageInfo(slot0)

	if uv1[slot0] ~= nil then
		for slot4, slot5 in pairs(uv1[slot0]) do
			uv0.reqPourColor(slot0, slot5[1], slot5[2])
		end
	end
end

slot4 = cc.Director
slot4 = slot4:getInstance()
slot4 = slot4:getScheduler()
slot5 = 2
slot6 = 90
slot7, slot8 = nil
outplaycont_Pour = 0

(function ()
	slot0 = uv1
	uv0 = slot0:scheduleScriptFunc(function ()
		uv0 = uv1:scheduleScriptFunc(function ()
			if outplaycont_Pour < 7 then
				outplaycont_Pour = outplaycont_Pour + 1

				uv0(outplaycont_Pour)
			else
				uv1:unscheduleScriptEntry(uv2)
			end
		end, uv3, false)

		uv1:unscheduleScriptEntry(uv4)
	end, uv5, false)
end)()

slot2 = require("module.mission.mission_const")

require("module.mission.mission").getMissionShowState = function (slot0)
	if slot0.state == uv0.STATE_COMPLETED then
		return uv1.COMPLETE
	elseif slot0.state == uv0.STATE_PROGRESS then
		if slot0.progress < slot0.value then
			return uv1.CAN_NOT_GET
		else
			slot1 = slot0.type

			server.rpc_server_mission_complete(slot0.mid)

			return uv1.CAN_GET
		end
	end

	return uv1.CAN_NOT_GET
end

gEventMgr.regEvent(gEventConst.EV_ENTER_MAIN_SCENE, function ()
	slot0 = require("module.pto_data.linkage_sky_soldier_data")
	slot1 = slot0.getCfgLinkageSkySoldier()

	if slot0.getCurNotPassStage() <= slot0.getCurStage() then
		for slot7 = slot2, slot3 do
			slot8 = {}
			slot10 = (slot1[slot7] or {}).missionList or {}

			for slot14, slot15 in ipairs(slot10) do
				table.insert(slot8, {
					id = nil,
					isFinish = 1,
					id = slot15
				})
			end

			slot0.sendKillInfo(slot7, slot8, 1)
		end
	end
end)