Commit 21581e1fa1dcf2cf37dca88c975bb0c40ee704e6

Authored by liuzujun
1 parent 3f14b267

新增 电台类活动

Showing 2 changed files with 93 additions and 0 deletions   Show diff stats
@@ -375,6 +375,7 @@ MailId = { @@ -375,6 +375,7 @@ MailId = {
375 375
376 RechargeBack = 3001, 376 RechargeBack = 3001,
377 DrawCode = 3002, 377 DrawCode = 3002,
  378 + ActRadoTaskReward = 3003,
378 } 379 }
379 380
380 TriggerEventType = { 381 TriggerEventType = {
src/models/Activity.lua
@@ -40,6 +40,7 @@ Activity.ActivityType = { @@ -40,6 +40,7 @@ Activity.ActivityType = {
40 40
41 BattleCommandTask = 38, -- 战令任务活动 41 BattleCommandTask = 38, -- 战令任务活动
42 NewUserTask = 41, -- 新用户任务 42 NewUserTask = 41, -- 新用户任务
  43 + RadioTask = 43, -- 活动电台任务
43 } 44 }
44 45
45 local function checkActivityType(activityType) 46 local function checkActivityType(activityType)
@@ -1353,4 +1354,95 @@ activityFunc[Activity.ActivityType.AdvLevel] = { @@ -1353,4 +1354,95 @@ activityFunc[Activity.ActivityType.AdvLevel] = {
1353 end, 1354 end,
1354 } 1355 }
1355 1356
  1357 +-- 获取英雄大成功率
  1358 +local function getHeroCoef(hero, condition)
  1359 + -- 基础概率
  1360 + local rareMap = {[HeroQuality.N] = 10, [HeroQuality.R] = 10, [HeroQuality.SR] = 15, [HeroQuality.SSR] = 20}
  1361 + local rare = hero:getRare()
  1362 + local result = 0
  1363 + for _, it in ipairs(condition:toTableArray(true)) do
  1364 + local type = it[1]
  1365 + local value = it[2]
  1366 + local add = it[3]
  1367 + if type == 1 then -- 种族加成
  1368 + if hero:getCamp() == value then
  1369 + result = result + add
  1370 + end
  1371 + elseif type == 2 then -- 定位加成
  1372 + if hero:getPosition() == value then
  1373 + result = result + add
  1374 + end
  1375 + end
  1376 + end
  1377 +
  1378 + return result + (rareMap[rare] or 0)
  1379 +end
  1380 +
  1381 +local function getActRadioTaskReward(role, id, task)
  1382 + local config = csvdb["crusadeCsv"][id]
  1383 + if not config then return 2 end
  1384 + local carbonData = csvdb["idle_battleCsv"][config.unlock]
  1385 + if not carbonData then return 3 end
  1386 + -- get heros
  1387 + local totalCoef = 0
  1388 + local exp = config.time / 60
  1389 + for _, heroId in ipairs(task.heros) do
  1390 + local hero = role.heros[heroId]
  1391 + if hero then
  1392 + totalCoef = totalCoef + getHeroCoef(hero, config.success)
  1393 + -- 增加英雄信赖
  1394 + hero:addHeroFaith(exp)
  1395 + end
  1396 + end
  1397 + -- send award
  1398 + local bigSuccess = false
  1399 + local result = math.randomInt(0, 100)
  1400 + if result < totalCoef then
  1401 + bigSuccess = true
  1402 + end
  1403 + local money = math.ceil(carbonData.money / 5) * config.time * config.money_clear
  1404 + local exp = math.ceil(carbonData.exp / 5) * config.time * config.exp_clear
  1405 + local itemReward = config.item_clear_special:toNumMap()
  1406 + itemReward[ItemId.Gold] = (itemReward[ItemId.Gold] or 0) + money
  1407 + itemReward[ItemId.Exp] = (itemReward[ItemId.Exp] or 0) + exp
  1408 + if bigSuccess then
  1409 + for key, value in pairs(itemReward) do
  1410 + itemReward[key] = math.ceil(1.5 * value)
  1411 + end
  1412 + end
  1413 +
  1414 + return itemReward
  1415 +end
  1416 +
  1417 +
  1418 +activityFunc[Activity.ActivityType.RadioTask] = {
  1419 + -- ["check"] = function(self, actType, notify) -- 检查
  1420 + -- end,
  1421 + ["init"] = function(self, actType, isCrossDay, notify)
  1422 + end,
  1423 + ["close"] = function(self, actType, notify, actid)
  1424 + local radioTask = self.owner:getProperty("radioTask")
  1425 + local result = {}
  1426 + for id, task in pairs(radioTask) do
  1427 + -- check id
  1428 + local config = csvdb["crusadeCsv"][id]
  1429 + if config then
  1430 + if config.actid == actid then
  1431 + radioTask[id] = nil
  1432 +
  1433 + if not task then return 4 end
  1434 + if skynet.timex() < task.time then return 5 end
  1435 +
  1436 + local reward = getActRadioTaskReward(self.owner, id, task)
  1437 + for k, v in pairs(reward) do
  1438 + result[k] = (result[k] or 0) + v
  1439 + end
  1440 + end
  1441 + end
  1442 + end
  1443 + self.owner:sendMail(MailId.ActRadoTaskReward, nil, result, nil)
  1444 + self.owner:updateProperty({field="radioTask", value=radioTask, notNotify = true})
  1445 + end,
  1446 +}
  1447 +
1356 return Activity 1448 return Activity