diff --git a/fightmanager/src/main/java/com/ljsd/fight/FightType.java b/fightmanager/src/main/java/com/ljsd/fight/FightType.java index e69c095b6..691d8a74e 100644 --- a/fightmanager/src/main/java/com/ljsd/fight/FightType.java +++ b/fightmanager/src/main/java/com/ljsd/fight/FightType.java @@ -1,6 +1,7 @@ package com.ljsd.fight; public enum FightType { + CrossLuofuFight(0),//跨服罗浮争锋 StoryFight(1), //故事副本 MapExploreFight(2), // 地图探索 ArenaFight(3), //竞技场 diff --git a/luafight/BattleMain.lua b/luafight/BattleMain.lua index 5e91e2d1d..f91ea138e 100644 --- a/luafight/BattleMain.lua +++ b/luafight/BattleMain.lua @@ -144,6 +144,8 @@ end function BattleMain.Execute(args, fightData, optionData) _seed = args.seed _type = args.type + + print("战斗服type=="..args.type) _maxRound = args.maxRound _fightData = fightData _optionData = optionData or {} @@ -224,14 +226,17 @@ function BattleMain.Execute(args, fightData, optionData) -- 结果为2 resultList.result = 2 else + print("使用战斗结果===================") resultList.result = BattleLogic.Result end - resultList.curRound=curRound + resultList.curRound=curRound local allHeroDamage, allEnemyDamage = BattleLogic.GetAllDamage() -- print(allHeroDamage, allEnemyDamage) if _type == BATTLE_SERVER_TYPE.GuildBossFight -- 公会boss or _type == BATTLE_SERVER_TYPE.CarBossFight -- 车迟boss - or _type == BATTLE_SERVER_TYPE.GuildChallenge then -- 公会副本 -- 返回伤害值 + or _type == BATTLE_SERVER_TYPE.GuildChallenge + or _type == BATTLE_SERVER_TYPE.CarPersonFight + then -- 公会副本 -- 返回伤害值 resultList.duration = allHeroDamage --TODO:公会boss的持续时间传递的是我方总伤害值 else resultList.duration = BattleLogic.CurFrame() / BattleLogic.GameFrameRate diff --git a/luafight/Modules/Battle/Config/Data/PassiveSkillLogicConfig.lua b/luafight/Modules/Battle/Config/Data/PassiveSkillLogicConfig.lua index bfda8b566..a01d8f392 100644 --- a/luafight/Modules/Battle/Config/Data/PassiveSkillLogicConfig.lua +++ b/luafight/Modules/Battle/Config/Data/PassiveSkillLogicConfig.lua @@ -1,8 +1,8 @@ local PassiveSkillLogicConfig = { -__count = 3092, -__indexs = {1.7,94,1,899,1.42,8976,1.7,13,2.1,4.1,2.1,1.6,14,2.1,4.1,2.1,1.5,15,2.1,4.1,4.3,89695,1100,1.01,90,1.41,886,4.1,8.1,16.1,1.9,91,4.1,8.1,28.41,1.11,89,52.02,1.51,885,52.81,20.2,56.61,60.61,104.82,156.34,47786,1.5,5,1.5,9985,1.2,99998,1.3,90097,100,1.4,96,1.5,95,1,9699,300,600,1.6,194,1,199,5.2,994,2.1,1.6,294,1.3,97,9.2,394,4600,1.8,9992,1.3,9997,1.2,298,9800,300,1,49699,33.2,1.6,94,1.2,98,1,99,6.2,62.2,1.11,1789,800,1.5,195,52.2,900,16.2,5500,200,1.51,85,1.4,196,400,1.01,190,1.3,197,1.4,596,1.01,990,2.1,1.01,290,33.2,600,1.01,390,4600,1.01,9990,1.9,9991,1.8,292,57.2,200,449400,1.27,-2.2,1.2,2,1.9,2,1.7,2,1,19,41.2,1.4,396,54.2,1.4,296,6.3,8.4,2.1,4.1,20.2,2.1,596,1.4,896,6.3,6585,-10.6,1,9,-10.3,1,9899,-10.9,1,9,5.2,11.3,-10.2,8.4,13.5,5.1,-10.01,9900,20.6,7.1,1,18898,1.05,5,1,30945,39.8,8.1,16.11,1,9,10,55.21,36.12,8.4,49899,94.3,36.4,-10.3,1.2,9898,128.6,-10.01,63.7,29.2,35.8,9,9890,52.41,47.5,57.2,21.8,-10.5,11,89.41,81.8,203.8,1.2,8,31.8,19.3,59.21,478890,1.22,99979,1.25,199948,1.61,9984,1.2,9,1,2,9986,1,711099,10,90,2.1,1,9,1.2,88,8.3,5.2,49.3,89,4.3,389,21.1,42.14,965289,1.42,999976,1.63,64,1.14,59,1.24,5000538,30,1.2,8,1.3,17,1,29,50,1,19,56160,1.5,995,2.1,4.1,8.1,16.51,18995,1.31,87,640.5,907785,1.9,999992,1.01,999989,1.72,999973,1.6,27000118,200,-400.2,-200.2,300,-100.2,300,59908686,229.2,1,8,10,4.2,9,1.3,9896,-10.8,274.4}, -__values = {0,1.23,2,1.32,3,2,1.3,2.1,2.1,3,12,1,7.3,1.51,-2.2,1.7,-2.2,1.01,2,1.7,2,1.71,2,1,2,1.31,2,1.02,2,1.9,32.2,2,1.8,4,1.83,8.5,1.32,5,51,1.4,5,-10.2,60,11,5.4,200,100,60,40,1.52,75,100,150,50,-100.2,-200.3,-300.2,-200.2,-300.2,200,1.4,96,1,3,8,2,29,1,10,249,97,1,3,496,1.7,18,8,2,1,9,1,55,68.3,6,21.5,98,3,2,494,3600,401,1.7,3,-2.2,3,1.01,5,8,1.7,13,2.1,2.1,1.6,14,2.1,4.1,2.1,1.5,15,2.1,4.1,4.3,91801,3000,1000,10000,16000,8000,5.2,56214,199679,600084,8,50978,10000,350000,1,29,70.3,19959,40,9960,11558931,1.7,999993,1.4,85999995}, -__exVals = {75,.05,.1,.2,.5,.08,.4,.3,.12,.15,.25,.6,.06,.8,nil,.35,.16,.03,.18,.04,.7,.24,.14,.36,.32,.09,.20,.10,.07,.30,.01,.72,.9,.02,.45,.48,.64,.21,.13,.75,2.5,1.2,.95,.26,1.6,.28,.55,.96,3.2,3.6,.17,.34,.33,.015,.23,.29,.50,.40,1.75,1.5,2.8,4.8,.11,2.1,2.4,2.7,4.5,2.9,4.3,5.4,1.1,3.5,.42,.65,.85,.075}, +__count = 3309, +__indexs = {1.7,94,1,899,1.42,8976,1.7,13,2.1,4.1,2.1,1.6,14,2.1,4.1,2.1,1.5,15,2.1,4.1,4.3,89695,1100,1.01,90,1.41,886,4.1,8.1,16.1,1.9,91,4.1,8.1,28.41,1.11,89,52.02,1.51,885,52.81,20.2,56.61,60.61,104.82,156.34,47786,1.5,5,1.5,9985,1.2,99998,1.3,90097,100,1.4,96,1.5,95,1,9699,300,600,1.6,194,1,199,5.2,994,2.1,1.6,294,1.3,97,9.2,394,4600,1.8,9992,1.3,9997,1.2,298,9800,300,1,49699,33.2,1.6,94,1.2,98,1,99,6.2,62.2,1.11,1789,800,1.5,195,52.2,900,16.2,5500,200,1.51,85,1.4,196,400,1.01,190,1.3,197,1.4,596,1.01,990,2.1,1.01,290,33.2,600,1.01,390,4600,1.01,9990,1.9,9991,1.8,292,57.2,200,449400,1.27,-2.2,1.2,2,1.9,2,1.7,2,1,19,41.2,1.4,396,54.2,1.4,296,6.3,8.4,2.1,4.1,20.2,2.1,596,1.4,896,6.3,6585,-10.6,1,9,-10.3,1,9899,-10.9,1,9,5.2,11.3,-10.2,8.4,13.5,5.1,-10.01,9900,20.6,7.1,1,18898,1.05,5,1,30945,39.8,8.1,16.11,1,9,10,55.21,36.12,8.4,49899,94.3,36.4,-10.3,1.2,9898,128.6,-10.01,63.7,29.2,35.8,9,9890,52.41,47.5,57.2,21.8,-10.5,11,89.41,81.8,203.8,1.2,8,31.8,19.3,59.21,478890,1.22,99979,1.55,199945,1.61,9984,1.2,9,1,2,9986,1.2,79998,353.2,2.1,4.1,8.1,10.9,609804,49.2,9,9960,-10.4,10051,10,90,2.1,1,9,1.2,88,8.3,5.2,81.3,89,4.3,389,21.1,42.14,16298,-10.4,88.2,19960,94.3,49960,98.5,2.1,4.1,2.1,1,29959,15.3,59960,25.2,15.7,69960,6.4,33.4,37.5,22.2,2.1,528951,1.42,999976,1.63,64,1.14,59,1.24,5000538,30,1.2,8,1.3,17,1,29,50,1,19,56160,1.5,995,2.1,4.1,8.1,16.51,18995,1.31,87,727.5,907785,1.9,999992,538.2,1.7,989992,1.72,999973,1.6,27000118,200,-400.2,-200.2,300,-100.2,300,59908686,318.2,1,8,10,4.2,9,1.3,9896,-10.8,363.4}, +__values = {0,1.23,2,1.32,3,2,1.3,2.1,2.1,3,12,1,7.3,1.51,-2.2,1.7,-2.2,1.01,2,1.7,2,1.71,2,1,2,1.31,2,1.02,2,1.9,32.2,2,1.8,4,1.83,8.5,1.52,6.3,1.12,20,1.4,5,-10.2,60,11,5.4,200,100,60,40,1.52,27,10,20,18,32,-10.5,18,12,60,20,-10.3,28,42,8,2,-10.3,-20.2,28,100,-200.3,-300.2,-200.2,-300.2,200,1.4,96,1,3,8,2,29,1,10,249,97,1,3,496,1.7,18,8,2,1,9,1,55,85.3,6,21.5,98,3,2,494,3600,401,1.7,3,-2.2,3,1.01,5,8,1.7,13,2.1,2.1,1.6,14,2.1,4.1,2.1,1.5,15,2.1,4.1,4.3,89694,2107,3000,1000,10000,4004,11996,8000,6.2,55893,321,199679,600027,17,40,8,11019,9990,10,29959,10000,20031,49969,1,20000,-30000.2,29,1,89999,99971,40,9959,1,7.2,9,1,9999,9960,40,9960,10041,11548890,1.7,999993,1.4,85999995}, +__exVals = {89,.05,.1,.2,.5,.4,.08,.3,.15,.25,.12,.06,.6,.8,nil,.35,.16,.03,.18,.04,.7,.24,.14,.09,.36,.20,.32,.10,.07,.30,.01,.72,.9,.02,.45,.48,1.2,2.62,1.9,.64,.21,.13,.75,2.5,1.12,.95,.26,1.6,.28,.55,.96,3.2,3.6,.17,.34,.33,2.73,.66,.42,.65,.015,.23,.29,.50,.40,1.75,1.5,2.8,4.8,.11,2.1,2.4,2.7,4.5,2.9,4.3,5.4,1.1,3.5,1.22,.025,1.98,2.15,3.85,2.09,1.37,4.02,2.12,.85,.075}, __fields = { 'Id', 'Type', @@ -21,19 +21,19 @@ __defaults = { nil }, __refs = { - {45,.2,5,1.2,-7,-6,8,.4,1,-1,.4,-23,15,8,.9,-8,6,0,-5,.93,-1,.6,-5,.6,-19,.31,9,.6,5,.5,-7,.5,22,.5,-27,.5,-2,.11,55,2,.5,141,-138,-3,1,3,-4,.3,139,-139,.51,6,-3,-3,7,-1,-6,.3,3,-3,.51,1,2,-3,10,26,-36,.3,4,-4,.51,12,-9,-3,3,10,-13,20.4,14,-11,-3,15,-1,-14,.3,2,-2,.51,16,-13,-3,0,16,-16,.3,17,-17,.51,15,-12,-3,9,-3,50.2,15,-15,10.4,18,-9,-9,.3,19,-19,.51,20,-17,-3,11,-11,.3,1,-1,.51,21,-18,-3,143,-143,.3,141,-141,.51,22,-19,-3,144,-144,.3,23,-23,.51,13,-10,67.2,-15,.3,105,-105,36.2,13,-33,141,-117,-24,.3,149,-149,.51,25,-22,19.2,-5,-10,.3,41.2,76.5,130,-139,.3,18,-18,.51,26,-23,-3,27,-25,1,-3,.3,26,-26,.51,28,-25,-3,0,29,-29,.02,3,0,-3,30,-27,17.2,134.3,10.3,105,-102,10.2,13,-13,104.4,1,144,-145,96.4,67,-64,-3,31,110,-141,.3,31,-31,.61,10,-7,-3,5,-5,77.4,193.3,22,-22,.3,70,-70,.51,27,-24,-3,82.2,.3,9,-9,.51,32,-29,9.4,170.3,67,-34,124.2,-107,-34,46.7,35,-31,-4,.3,37,-37,.51,38,-35,-3,39,-24,154.2,40,-40,.31,66,-66,41,-38,-3,42,-36,-6,.3,192,-192,.51,43,-40,-3,44,1,-42,-3,.3,43,-43,119.4,189.2,4.2,.3,69,-69,.51,46,-43,-3,47,21,-68,.3,46,-46,.51,52,-49,-3,141,-93,-48,.3,49,-49,188.4,50,-11,-39,.3,38,-38,74.5,9.2,73.2,.51,49,-46,236.4,147,-147,38.4,9.3,10,-10,130.4,9.3,32,-32,18.4,51,92,282.2,53,-53,.51,54,-51,-3,32,-14,150.2,54,-54,.51,23,-20,-3,18,-8,264.2,148,-148,.51,2,1,96.2,9,-56,.3,57,-57,.51,58,-55,-3,0,58,-58,.3,59,-59,.51,18,-15,-3,13,5,190.5,69.3,3,57,-60,324.4,116.3,1,17,219.5,61,-58,-3,62,-44,10.2,126.3,371.3,229.3,69.3,89.3,.5,46.6,27,-27,339.4,45.3,61,-61,9.4,281.3,63,1,-64,.3,65,-65,.9,243,.5,-2,.5,-279,5,-2.2,-1,-8,5,0,-37,9,4,-4,4,29,.2,-26,.2,-8,3,21,-31,-1,25,-24,44,.3,-32,0,-6,28,-35,27,18,.3,-42,9,-5,38,0,1,-1,-15,-7,-4,26,.3,-40,.3,-1,3,-4,1,41,.3,-41,3,2,1,12,16,-1,-1,9,1,-27,1,25,1,-4,4,0,-4,-10,-31,0,36,1,.4,-38,70.4,2,0,16,3,2,-28,14,-3,4,1,21,.2,1,-25,14,0,8,.3,1,.2,-38,4,10,.2,7,0,1,0,5,.2,12,-3,-39,14,0,12,0,-11,27,.3,-24,24,0,-15,13,-11,24.2,116.2,-14,1,.2,14,25.2,.2,-28,0,24,1,14,-1,-39,2,-1,44,112.3,.4,-32,0,-13,0,7,4,-4,5,0,9,-21,28,17,.2,1,-1,.3,-45,12,-12,45,25.3,11.3,-15,-6,-5,26,18.4,143.2,37,-25,30,-43,-4,5,1,39,49.4,149.9,.2,1,-28,1.2,23,0,1.2,7.2,-4,3,4.2,.4,155.3,38,31,71,.2,-71,.3,72,1,31,37,-67,1,-75,0,71,5,-5,1,0,5,-6,-71,78,1.2,-80,78,3,1,-82,83,1,101,-100,1.2,-9,10,1.2,-6,7,1.5,8,-7,-97,98,1,-99,100,1.3,-32,0,-71,0,186,8,-110,-15,-35,-21,-1,-6,-6,195,-177,0,26,8,-11,43,-49,-9,5,59,-61,-20,-9,16,-2,44,-2,107,-103,-51,44,86,-139,195,-208,.4,2,.4,-1,.4,8,245.2,.4,35,.4,-3,.4,-4,.4,5,.4,-34,.4,28,.4,9,.2,-65,0,44,.2,-44,0,68,.2,-68,0,63,.2,-63,0,66,.2,-66,0,71,866.2,5,-143,867.3,198,-202,.5,865.4,165,1.2,-174,.5,1,149,-147,-3,10,141,-115,123,-159,.5,863.4,172,-162,158,-171,.5,862.4,174,-175,176,-190,.5,861.6,.5,15,57,-69,-3,9,145,-148,-6,9.2,137,-149,-3,18,138,-147,152,-89,193.14,83,8,-194,.5,20,-20,33,742.2,86,-203,-40,16,.5,25,0,866.3,173,-178,141,-151,74.2,141,-153,-3,9,45,85,77,-216,.5,26,172,-195,0,-3,27,172,-197,198,-200,.5,170,-167,-3,0,171,127.2,-3.2,-3,-3,30,-23,-4,30,-33,.5,3,-3,2.1,105,64,-166,165,-168,67.2,2,951.2,1,94,50,4,-149,.5,67,84,-148,-3,31,124,-14,1,-142,.5,31,2,86.2,74,-181,-34,.5,10,17,855.2,827.2,-3,212,-213,.5,38,12,-47,827.3,152,-167,.3,825.7,181,-187,.5,43,121,-161,0,-3,165,-120,121,-166,.5,3,.2,-3,13,163,-173,215,-215,-3,.5,46,168,-211,-3,47,167,-146,-23,-45,.5,52,43,-92,822.2,101,-194,-48,.5,15,139,-151,-3,158,-119,123,-162,18.2,-37,669.2,51,93,-1,58,-201,.5,156,161.2,32,185,-199,142,-160,.5,23,130,-150,-3,18,139,-147,181.3,782.4,144,-135,-56,.5,58,119,-174,781.3,119,-177,.5,779.4,163,-158,5.2,.5,32,-17,12,133.2,3,30,27,116,-176,75.2,148,-160,780.3,56.3,61,-46,75.2,779.2,-17,-1,.5,1,4,-2,-3,63,140,-139,141,1.7,14,-211,210,-3,1.2,4,1,5,-4,1.3,-170,172,-91,52,.9,-185,56,170,-84,-147,234,.9,-225,43,-33,0,-10,136,-56,-80,3,102,44,-9,0,-103,6,0,178,.3,3,-1,.3,-17,-256,35,.22,244,1,-270,0,-8,0,-18,-11,11,-11,17,-14,0,34,.3,-6,270.3,9,-33,331.2,33,21.1,42.14,-13,.42,177,0,1.2,2.1,3,2,-116,117,2,1.4,0,2,1.3,-152,.4,153,1.4,.3,2,1.2,-30,21.81,3,1,-25,6,21,-15,10,4,-31,27.21,1.2,-151,27.21,-25,2,51,-123,-1,1,8,108,-119,0,159,-172,3,-15,0,42,-56,.101,142,-139,-3,55,128,-4,1.2,-181,.3,10,168,-178,993.4,197,-42,-155,.3,195,-195,.9,-35,175,56,.5,-41,41,-196,.01,204,-204,.7,196,.3,-109,109,14,-210,16,83,-49,-49,55,163,88.2,-68,20,31,-204,.4,215,-228,2,-1,-30,27,8,-12,9,-4,5,9,.5,182,-40,67.6,3,-184,.5,64.3,3,194,-4,-38}, - {{{1},{1,.2,3,581,-1,-580,0,3,-5,8,0,-8,11,-6,-1,-4,8,-5,-3,0,5,1,3,-6,3,7,-7,-2,-4,3,-3,-1,0,1,.7,2.1,4.1,2.1,5,.2,-2,0,-3,0,331,1,2,26,1.2,2,217,12.2,.2,7,-5,5.4,-579,.6,579,0,-7,.2,11,-590,0,-1,2.1,-1,11.2,4,0,-3,.3,7,0,-6,0,3,45.3,33.4,0,7,-512,-78,6,-6,11,-3,7,-14,590,-591,586,-585,-1,99.3,581,-585,5,6,-7,11,-15,5.1,7,4.2,0,4,570,6,-577,571,30,-615,26.3,582,-586,26.01,82.2,-3,7,574,-5,-578,-6,595,-595,150.4,0,25.01,14,-14,11,-4,8,-15,584,-579,577,-582,0,26.3,578,-582,26.01,11,-11,2.1,15,580,-11,-576,-8,600,-600,26.3,585,-589,26.31,-5,9,568,1,-571,-2,581,-592,78.51,129.3,-5,9,-15,580,-566,-13,585,-586,26.51,181.3,104.3,580,-575,-5,.2,25.81,-3,7,25.2,-580,582,-582,102.51,179.4,-6,575,179.2,152.4,49.21,8,-8,100.5,-572,578,99.4,-2,-2,254.51,125.3,-14,50.61,99.6,2,-2,1,582,-583,26.3,-3,-1,100.41,-15,604,-598,-5,-1,51.91,-4,8,356.2,-586,-5,585,-585,26.51,253.3,3,1,572,-3,-573,-11,589,-5,-584,27.3,593,-597,129.31,-6,10,129.3,-3,-11,79.4,9,-13,358.51,567,-2,254.2,230.5,358.21,181.5,26.2,181.2,26.5,281.02,589,-580,-9,26.51,182.4,566,3,-578,575,-581,103.4,577,-581,25.01,0,52.8,583,233.4,309.71,574,-9,-572,-8,51.4,580,-584,408.91,258.61,459.8,334.71,126.5,-580,5,-6,1,638.4,126.11,-6,-9,334.7,-4,-2,385.22,591,-591,585,-584,52.4,588,-592,281.31,573,-569,639.2,-577,-7,586,561.61,462.6,584,-570,-14,0,584,360.4,692.71,567,2,-579,334.2,2,27.61,615.52,156.5,584,590.2,639.42,457.2,716.61,26.8,592,25.4,579,-583,75.81,665.42,356.5,331.14,-15,587,-581,580,-586,50.12,598,-22,-577,-14,175.4,595,-599,50.41,-13,602,-598,199.5,713.61,479.2,-569,-11,24.4,530.21,299.3,659.3,584,-573,2,-12,378.4,352.81,149.3,456.5,26.02,568,1043.5,350.02,584,-589,26.4,2,-6,301.51,-14,579,633.3,26.4,154.21,278.5,-6,571,278.81,77.5,577,-12,-575,0,-5,303.54,377.2,-5,177.61,24.4,582,-10,-581,583,-7,835.4,254.11,569,3,8,10,-5,24,-613,.5,67,-78,612,-611,580,-412,-169,4,613,-29,-3,3,-3,-3,.2,-582,1.2,583,32,-279,247,0,5,-8,903.2,3,-2,583,0,-7,-573,576,5,-581,-6,5,-8,1,580,0,-575,7,-2,-6,577,1,-583,6,-3,1,-4,589,.2,-4,1,-1,-582,583,-586,10,-2,-5,583,-1,0,-3,-582,4,-4,0,4,7,-11,-2.2,7,574,-574,0,570,-247,251,0,-581,-4,1.4,578,0,8,-8,8,-9,10.2,19,-10,581,-579,-10,589,-5,-585,1.2,9,581,-583,10,-20,.3,1.3,588,-4,-585,-2.2,580,14,-7,2,-585,10,-5,-11,585,-579,-1,1,2.1,577,-578,1.2,3,572,-581,7.2,-583,369,226,-9,9,-594,1.2,584,-586,1.2,-2,2.1,1.2,588,.3,-5,-2,0,2,1,-579,6,-2,3,-14,137.3,584,-5,3,0,1571.3,1,.2,4,-4,19.2,-9,137.3,5,-8,583,7,-590,85.2,3,-8,149.5,-580,4,6,-8,6,-5,153.3,585,5,-5,5,-9,-578,578,32,-30,9,-6,93.2,5,59.2,161.3,610,-23,0,116.2,3,-4,0,7,56.3,571,104.2,-3,.2,8,9.3,1560.2,5.3,.4,570,-243,252,-4,-577,-9,11,-10,13,-6,-4,59.3,1,-587,597,28,-611,1,-15,602,-591,-11,6,583,-587,7,-9,581,-582,6,-4,-1,1,7,-7,0,551,-552,0,587,-587,0,12,585,-597,6,597,-603,0,451.2,597,-598,16,568,2,-580,1196.3,599,-597,.3,-2,.2,171.2,1,-1,4,-4,.2,5.2,.2,2,598,-19,13,-594,0,4,579,12,-595,1,1303.2,5,-6,590,-582,162.2,.4,2,-2,7,28,-7,-611,.4,581,6,14,28,-47,.3,4,0,15,-6,2,3,8,34,1.2,-16,17,-53,.3,823.2,61.2,581,.2,-7,2,-3,7,-3,0,262.3,5,-589,1,2,582,6.2,-7,.2,-583,.3,557.6,594,-11,-584,614,-613,599,-600,622.5,600,-31,-570,571,1742.2,3,-2,711.5,-6,1320.2,33.2,584,-593,-2,1691.6,581,-576,312.2,1,1676.4,1678.3,607,-41,-573,-8,0,630,-628,-2,1665.5,577,-11,-568,-2,-11,0,557.6,1,606,-593,-13,0,613,-614,672.6,6,598,-599,-5,.3,1,589,10,-599,601,47,-635,1,-15,610,-599,-11,6,532.2,7,-9,1532.2,237.8,-551,-1,1746.2,0,12,590,-602,6,609,-614,-1,.2,602,-603,16,-15,592,-587,1511.3,.4,1008.6,9,-7,239.3,583,-2,-581,620.5,0,924.2,-5,0,-1,110.2,1550.6,-1,1830.2,524.2,471.2,0,1538.6,-6,.2,-570,-11,0,589,-588,-1,1525.5,588,4,-593,-3,0,-11,1176.6,4,21,-602,-5,586,-4,-581,25.4,1498.3,-576,601,-593,-14,1,537.2,1,94.6,0,604,-604,589,-6,-574,-5,-4,1348.5,-570,570,-575,1475.3,589,-589,1361.8,9,-8,-1,118.8,-4,-2,597,-14,176.2,51.6,1279.2,618,-617,-1,0,92.3,570,-566,269.2,-574,1321.3,244.4,929.3,0,581,0,-567,-14,.3,116.6,-1,0,-576,-5,0,432.2,581,-581,258.6,0,599,-594,-5,3,-3,.4,63.4,203.2,333.2,369.6,74.4,594,-2,-592,.3,11.4,1,594,-589,579,163.2,490.2,318.6,1381.3,.6,1112.4,1,584,776.2,3,-3,223.2,134.4,570,22,-596,370.3,119.4,1088.3,0,581,-570,2,-12,0,210.6,1427.5,1,580,338.2,13.5,.2,607,-593,568,-579,-3,.2,119.6,586,250.2,580,630.2,-6,479.6,-1,235.2,1338.2,597,-597,76.4,587,27.2,-589,624.2,583,314.2,1357.2,1,0,-1,167.2,79.2,-581,5.2,580,-569,569,-580,17.3,580,709.2,0,-2.9,565,368.2,3,589,-592,-2.9,-18,2,785.3,9,572,32.2,-1,.5,1,-1,1.3,-2,1,-3.3,-11,-1,12,.2,142.2,5,.2,2,0,4,0,514.4,1,.5,-1,-11,5,.3,-2,585,-587,587,-588,581,889.2,0,8,1,571,-561,577,1316.2,-5,5,578,-578,21.1,42.14,415.2,935.4,620,-39,13,-584,0,572,.2,2,13,0,-587,571,7,5,-587,-2,-1,4,1,-8,-1,3,-1,-1,4.3,373.2,630,-632,36.6,-35,38,-613,36.4,6,0,-580,575,8,2332.2,36.21,0,610,-612,591,-10,0,5,-1,-585,41.6,-38,2,-574,41.4,-1,0,-573,572,413.2,40.31,594,-595,580,7,0,-5,9,-592,2,14.2,.2,-1,595,-2,0,-10,20,-602,600,30,-629,350.4,396.3,343.6,12.1,1623.6,354.6,12.1,6.1,562.5,11.1,5.1,39.6,11.1,403.5,566,6,996.2,7,-7,.3,1341.4,332.2,1467.51,1343.2,-587,5,2051.61,-16,1,-3.5,2,-17,6,-6,5,1.3,4,-4,69.2,4,0,573,-588,.7,4,-5.2,2,590,-597,-9,15,-15,611,-611,338,-337,-1,1,582,7,-587,-4,587,-586,.5,588,2,-590,586,-3,-1,37,-618,591,-583,-9,75.5,571,9,0,-595,104.3,848.6,587,-20,489.2,-575,6,-11},{1936,1,4,1,4,4.1,1,728,1.42}},{{2},{1.3,580,1,-583,397,187,-2,-1,0,1,.4,-1,-515,520,-416,436,1,2,-525,523,-1,1,-1,-23,-499,242,-324,-1,338,27,-2.2,1.4,-35,4.1,8.1,4.3,2,1.3,6,9,3,-396,.31,582,51,-11,12,-31,-9,-9,-5,4,3,8,-13,0,-2,1,6,1,-6,7,-586,.5,-2,.11,1,.5,46,214,322,-322,113,206,-580,5,576,-581,333,89,157,0,-580,580,.3,3.1,-580,262,20.3,213,-587,4,582,-253,19.3,-572,572,19.9,209,-583,0,-1,581,-581,334,21.2,.5,18.5,329,-329,18.4,10,570,18.4,39.21,212,-586,11,-1,570,-569,322,21.3,-579,579,60.11,41.2,5,-252,59.31,4,116.2,76.41,5,575,75.5,133.8,20.6,589,-587,326,74.61,133.2,-247,56.31,582,-579,577,17.3,56.21,131.2,93.2,19.4,3,-3,75.11,580,14,-594,228.4,-581,581,20.6,319,-319,248.3,580,-581,587,229.3,76.6,265.6,581,-587,2,332,18.11,226.3,594,-594,1,18.9,73.5,-1,5,576,5,1,284.4,95.31,-1,14,567,-577,330,266.11,135.6,0,576,1,-571,323,230.41,589,135.4,97.21,208.2,-573,228.4,192.7,580,-318,39.71,362.6,3,577,2,-249,287.71,575,250.51,343.4,286.9,227.5,0,580,6,-4,56.4,-571,571,37.5,598,-336,22.5,-1,587,-587,439.51,20.3,6,576,-582,385.51,-375,1,581,-571,570,22,-269,21.3,23,-23,215.11,2,-2,580,2,-581,277.3,0,-577,577,258.21,1,580,-573,-6,299.51,6,575,11,-258,601.41,432.3,-583,241.6,12,-12,489.31,-1,-594,510.71,-1,6,589,-595,21.21,63.5,591,-592,512.4,381.41,515.6,605.31,16.9,325,-325,220.3,116.2,241.6,2,-2,241.21,5,739.5,94.8,281.6,0,530.31,376.3,6,588,-12,376.71,10,584,20.5,78.8,627.01,131.9,16.4,-581,3,331,169.61,5,575,-580,873.21,230.8,666.5,21.31,3,209.51,330.3,-582,335,227.42,791.7,848.01,506.6,485.2,223.4,420.7,.6,591,13,-17,1,9,19,-597,29,-47,32,341,-373,1075.3,2,-2,1.2,853.2,7,1,-587,579,9.2,0,-1,124.2,0,11,-2,-8,585,-567,27,-42,577,-412,-168,10,-7,5,572,-572,-7,584,193.2,42,-37,572,-581,.5,65,-65,581,-572,-5,42,-46,.3,585,-260,-156,411,-571,16.2,586,-577,572,-578,578,0,-578,579,0,-186,-23,.4,-372,71.4,4.2,579,-581,0,588,-587,-1,.2,588,0,-6,0,-582,9,5,-13,1.3,582,-586,581,8,-4,-3,12,-6,-3,4,0,-4,-545,-32,600,-2,-1,1,29,-29,30,-28,0,-608,605,0,-598,-7,0,1.2,586,.2,-579,580,.2,-8,.5,4,0,-3,-582,596,-543,-46,585,331.2,563,-563,2.1,-10,0,-9,.3,11,578,-589,1.2,-2,2,592,-585,10,0,563,-553,54,-74,573,146.2,3,577,.2,25.2,31.3,-17,139.2,9,21.3,-573,74,-64,563,-582,.3,3,37,-37,-3,5,-5,134.2,0,573,55.4,74,-83,1,.2,589,-222,-43,255,-576,15,32.2,-582,583,-582,-1,4,8.3,-579,1,5.3,.4,-579,583,-6,-572,48,-54,582,0,-4,0,30,-609,224.3,582,-582,26,-26,150,464,-4,-23,1097.2,3,4,-7,3,0,-8,-582,637,-634,623,-626,588,-588,1.2,-1,593,-593,596,-11,-586,599,-597,6,70,184,319,21,-602,66.2,587,-584,579,-1,-582,0,9,573,-582,588,-576,571,-580,-3,582,-580,584,-582,-4,.4,641,-24,-29,-6,7,-3,8,-9,0,-2,3,.4,-585,.4,618,27,-19,20,1,-56,.2,-592,0,585,-2,7,.2,-587,.2,1,0,-4,.2,-1,6.2,.2,11,.2,571,4,-3,-247,245,-244,87,163,-586,-1,6,594,-599,0,335,11.3,205,-628,4,596,-601,336,9.3,157,396.4,1,-588,580,-244,248,-247,12.4,10,576,-587,2,584,-250,24.3,177,-600,11,-1,576,-575,573,-249,35.5,22.2,-4,-247,32.5,587,719.2,-587,0,336,43.6,5,581,-4,14.2,-582,1,194.3,585,-584,51,-52,316,310,-626,600,-583,583,-600,594,-7,3,30,-35,-584,649,-647,-3,1,585,-586,194.2,598,-596,599,-12,-590,599,-17,28,-274,50.5,585,1,-5,-581,335,251,-250,135.3,580,10,-591,601,-601,588,-252,147.5,630,-625,595,-601,0,2,-1,149.4,105.3,-10,1,1272.2,0,-1,98.7,4,582,-4,14,-261,11.5,-1,14,573,93.2,-251,11.3,151.2,4,576,-576,582,72.2,10,-11,36.6,588,-583,715.2,0,-2,337,201.6,115.2,587,-579,-4,0,332,99.5,3,583,14,-600,582,-247,11.5,-1,0,595,-595,1,84.2,257.6,594,-588,594,-600,59.4,-424,1087.3,576,16,-603,11.4,84.2,2,-3,1.2,585,-4,0,-583,83.6,-1,4,-3,586,-588,9,-6,334,13.6,0,6,1399.2,592,-9,318.4,13.2,372.2,-3,97.2,254,322,24.5,1169.3,.2,336,252,-251,61.3,960.2,95.2,0,94.6,630,-626,596,-599,-2,336,117.6,1,-1,227.2,581,-245,153.6,6,575,15,-14,321.6,582,-572,571,10,-6,-250,201.6,582,-588,5,332,10.7,-587,477.2,-4,337,33.5,5,581,59.2,136.7,99.2,219.2,304.6,.2,76.3,-1,583,6,-588,839.2,580,-575,-1,605,-609,11,-11,.9,4,-3,0,582,7,9,-7,19,-611,.4,582,5,-5,43.2,-1,4,1,578,-583,.3,592,-2,-5,-3,-504,510,-2,-3,5,3.2,-1,12,5,-11,-2,2,-6,-1,0,769.3,17.3,9.3,-577,581,3,-165,-44,-379,586,-586,588,-7,5,-4,4,2,-6,1,764.3,78.2,404.2,21.1,42.14,588,0,-587,1.2,8,577,-588,591,-3,-1,0,-586,584,-574,-11,595,-582,574,.4,9,-15,-570,577,8,.3,-591,583,-577,571,124.2,28.2,825.2,604,-15,6,0,-594,589,-579,-11,600,-587,584,.4,-17,8,-577,578,-9,.3,9,-578,-7,0,-4,589,0,738.2,8,583,-594,588,6,-12,39.2,-1,209.2,602,-13,.4,-5,5,-578,583,-10,.3,10,-583,29.3,581,1.2,20,-21,21,-9,-594,.2,11,20,-19,0,571,-461,474,-474,246,230,-597,121,6.3,216,-583,6.4,12.1,12.6,212,-579,12.1,12.7,476,-476,12.1,12.4,6.3,36.9,12.11,261,1393.5,8,-9,454.2,1414.4,7,-7,1414.11,0,-1,595,-596,5,1850.4,-576,576,22.5,78,-78,.5,4,-4,591,-7,-7.2,-7,-7,7,1255.2,-374,-1,557,23,2,7,.2,-4,-2,569.2,.3,3,-3,3,166,-169,1,-1,0,1,573,7,1,0,1,0,-582,10,592,-20,940.2,620,-30,-254,534.5,8,-9,582,-571,-11,337,251,556.2,11.2,0,-1,582,-576,-7,655,-650},{5,77,1.6,65,4,22,3,1,25,6,21,25,23,4,5,17,3.1,3,23,25,3,5,20,22,3,2.1,26,1,5,17,9,17,3,7,46,32,24.3,21,23,8,42,20.3,5,20,24,4,-26.2,25,27,7,20,26,23,54,25,45.3,5,56.2,1,2.1,5,20,23,70.4,5,17,26,4,26,36.3,25,24.3,17,8,20,1,28,2,3,16,63,35,1.2,20,10,22,85,5,15,2,12,14,4,-3.2,1,3,1.2,4,3,4,1,5,8,-2.2,9.2,5,2,4,-2.2,12,1.4,6,1.4,39,1,4,1,4,4.1,1,7,5,8,3,2,1,8,3,15,11,1,9,4,7,6,7,4,7,51.11,9,4,1,2,11,2,8,14,5,105.3,23,6,14,11,9,5,14,1,11,26,3,86.2,1,8,14,4,1,11,2,12,2,19.3,64.3,8,1.2,13,1,4,9,4,12,1.7,2,7,1,5,1,3,13,2,11,1,68.2,6,1,-5.2,42,2,21,2.1,4.3,6,1.42,9,10,1,26,3.2,17,3,1,-10.2,1,16,3,1,13,110,2,1.2,5,39,37,1,4,1,-2.2,9,3,2,10,6,1.3}},{{3},{2,1,-1,0,1,0,4.3,-1,.9,3.2,581,7,-6,7,-3,8,-11,-2,7.6,29,-16,2,-7,-7,0,4,12.5,5,6.1,6.5,-545,-38,.6,1,-1,.3,-1,2,-1,59.4,5.3,.5,3.2,.7,8.4,13.5,.2,27.3,3.2,.4,16.9,26.5,15.01,31.3,8.3,2,-1,3.2,-2,39.3,52.31,5.1,18.7,.9,589,-589,13.1,65.01,.8,78.51,109.31,.41,581,-580,149.12,.7,4,-3,93.11,54.4,17.3,55.01,97.31,84.5,.2,140.21,207.51,87.01,100.3,26.3,42.01,156.3,102.41,580,-579,36.3,0,18.8,5.3,313.4,174.01,27.01,.31,589,-588,11.9,66.41,-575,-5,3,-3,127.01,61.3,3.1,70.3,143.8,186.2,69.3,.3,73.01,.6,11.5,100.01,163.3,585,-584,18.4,97.01,.7,495.6,36.01,.51,252.41,0,-1,583,-583,82.11,213.3,22.3,602,-601,63.9,602,-602,115.41,53.7,292.31,119.3,207.12,93.6,583,-582,123.22,588,-587,476.41,13.3,.4,323.3,184.11,31.01,98.3,263.01,13.3,47.6,117.8,582,-581,54.9,590,-590,1,622,-623,192.11,145.01,125.01,165.51,-1,613,-613,669.61,.4,82.01,0,7,579,.4,3,.2,-580,.2,-6,-2,-1,21.2,.2,32.2,586,0,-6,2,-582,.2,1,6,575,9,-591,49.7,588,.2,25,-33,4,-581,577,652.2,.2,581,5,-4,0,57.4,1,64,-64,0,579,-580,1,582,.6,-576,576,-2,-576,581,-4,-581,.3,6,576,-564,19,-24,-14,580,-573,.4,-7,.3,19,-19,0,585,.2,-574,.2,579,-583,.8,-7,1,-1,586,-586,68.3,71.6,583,0,2,0,-4,-580,589,-7,0,-574,577,-586,133.3,3.2,584,0,24,-608,112.3,149.7,16.3,.2,24,-25,-577,573,2,-2,29,-609,49.6,582,4,.2,-585,26.6,82,-83,4.2,314.2,-581,.91,2,-2,26.3,.2,6,-3,-3,0,599,-599,.6,3,6.2,1.2,-2,0,638,-638,5,-5,0,592,-592,.2,639,-12,1,12,-635,6,.4,574,-2,7,28,-7,-609,.4,-2,.4,1,618,-617,.2,-3,.2,10,.2,574,.2,-583,677.6,104.5,8.3,751.4,3,-2,-2,952.9,3.2,572.7,.8,595.3,640.3,.11,101.9,.21,853.3,859.4,1,-4,28.3,-589,0,597,-597,842.5,5,-5,529.7,10.3,700.5,0,834.6,797.4,0,588,-588,60.3,.4,5,740.3,108.6,55.3,486.4,1056.5,463.3,585,-585,46.8,142.3,.6,182.2,767.5,0,-1,9.2,507.4,745.6,6.2,219.2,930.3,572.2,14,482.2,76.4,98.6,7.3,.2,3,-2,199.6,3,-1,-3,.31,517.5,99.5,0,-1,3,93.2,3.2,578,1,7,-584,.9,-4,580,-578,2,1,589,-594,586,-5,-580,591,.3,92.2,4,-3,.5,56.2,3,.3,-2,.4,2,.2,-3,.3,3,0,-3,1,.3,15.2,581,-581,2.1,0,12.1,24.22,-576,80.2,125.3,-582,0,4,1,583,-587,0,1,-2,.5,591,-591,7,1,6,-8,-6,11,-10,4,547.2,2,0,-2,468.2,4,1,584,234.2,-1,.6,604,-604,24.4,5,-10,45.3,4,-1,579,6,0,-6,-583,26.3,589,-593,0,-1,.5,587,-587,26.9,597.2,1,0,-3,0,2,95.3,-5,.01,1,-1,3.1,.13,6.5,211.3,6.3,.61,892.4,7,-6,788.11,586,-587,760.01,0,4,.5,142.2,1259.5,.4,594,-593,.7,3,.3,-4,.2,338,-335,-3,878.2,163.2,-571,574,-582,-3,2,-2,282.3,615,-605,-11,.5,1,.2,596},{1.8,12,1,11,1.65,15,1.81,32,3,1,22,3.1,3,1,5,17,4,25,6,4.2,7.3,3.2,3,23,8,4.2,5,20,22,3,24.4,20,27.3,9,17,3,1,29.3,25,32,8.3,5,21,23,3,5,17,25,28.3,5,20,24,4,26,20,6,34.3,26,7,4.2,25,23,54,5,20,60.3,5,21,25,1,2.1,69.4,74.4,88.4,70.3,26,46.3,25,28.3,17,89.3,1,16,1.41,2,1.3,14,12,2,2.1,21,1.2,4,1,7,3,1.5,12,1,8,1.9,2,1.6,11,8,1.2,21,1,23,20,2,19,13,1.2,6,1.5,15,2,10,1.4,4,8,4,3,1,2,1.2,26.2,4.2,8.3,3,7,12.3,3,2.1,-2.2,1,3.1,11,1.4,6,1.9,21,1.9,4,1.6,4,1,4.2,7,1,22.2,7,3,2,1,8.3,1.3,12,11,1,9,4,7,6,11.3,1,4,64.61,9,4,1.3,11,1.3,7,1,13,1,4,2,8,4,8,3,1,23,16.2,8,5,11,1,8,1,4,1.2,12,1,5,6,13,1,12,3,12,2,1,25.3,8,1,13,19.2,82.4,47.3,14.4,164.4,2,8,1.2,5,8,105.3,8,13.3,1,3,1.9,7,1.2,34.2,2,13,2,1.21,3,1.4,6,1,-5.2,29,11.2,9,32.3,5.1,10.8,6,1.42,49.3,47.3,17,6.5,9,3,1,9,9.4,7,9.3,-2.2,25.2,109,1.4,5,18,3,17,1,33,200.2,2.1,-2.2,7,4.2,2,10,6,1.3,7,89.2}},{{4},{14,-11,.6,1,.6,2,0,2,.2,2,-8,.71,38,-37,0,-2,1,6,-7,4,577,0,-579,2,-3,598,-10,4,-10,1,-583,1,.2,-2,2,1,-2,1,-1,2,-2,9,.2,-6,.2,-3,2,-1,1,-2,0,12,-12,1.2,-2,4,-4,4,0,-3,0,11,0,-9,9,0,-7,-5,31.4,.2,1,.2,11,-5,-7,.2,2,0,7,40.3,-2,.5,2,.2,1,50,-42,-11,1,-1,2.1,11,-11,0,11,.2,-12,1.3,4,-7,5,-1,-3,3,8,-8,-2,17.2,0,-8,8,.4,43.2,581,0,7,9.2,2,-578,3,.3,578,.4,-583,.4,583,.4,-578,.2,-5,-2,2,-2,582,0,-582,6,0,545,-551,6,67.2,1,2,577,-579,579,-580,600,-599,10,-5,-6,582,-582,.3,1,0,2,-3,0,1,158.3,0,580,-580,36.2,4,.3,-1,7,-592,0,-3.2,0,50.2,0,1,.3,2.1,608,-606,8.2,2,3.1,6.5,-1,0,5,-1,1,-4,0,3,0,-3,-1,.4,589,-588,631,-632,15.11,1,611,-21,-10,-579,-2,17.21,595,-15,7,-586,-2,11,-9,-2,3,581,-585,582,9,2,-592,87.2,621,-61,26,14,-7,-592,579,-578,574,-571,581,-583,583,31,-617},{14,75,1.31,20,1.42,265,8,25,18,25,134,49,3,6,46,72,1,8,21,6,123,9,21,25,126,49,113,46,158,5,1.01,5,1,6,1,3,6,5,9,1.4,2,1,5,2,5,2,4,1.4,10,1.9,9,24,1.5,12,1.5,2,1.8,3,4,5,6,1.3,7,-5.2,2,3,4,8,5,1.9,4,6,2,5,4,10,1,4,1.5,60,7,1,8,7,2,15,1.5,26,1.41,26,1.2,31,27,2,100,3,1,9,12,1,18,15,2,25,11,3,8,13,4,1,9,1,15,11,15,2,26,42.3,8.2,13,23,19,24,15,2,24,23,-2.2,5,1,7,1.9,2,16,1,6,2,1,4,1.3,2,1.3,27,9,8,2,13,3.1,6.5,30,1.4,2,7,2,1,10,-2.2,1.11,7.6,1.5,2,1,3,4.2,11.3,9,11.5,2,4,1.2,8,116,21,5,13,1.7,12,9,57.2,5,9,-7.2,1.2,12,17}},{{5},{583,-576,0,2,.2,2,0,-4,6.5,-8,.5,3,8.4,-3,0,2,0,19.5,6.3,-6,-3,9,-8,8,-8,.2,8,0,572,-572,.3,-9,580,1,0,-581,581,0,-580,-1,19.3,.2,20,-21,574,-582,1,.2,581,-573,0,573,.3,-573,.3,-8,2,579,-582,580,2,0,-582,582,.4,-581,-1,0,3,1,.2,5,0,-5,583,-587,0,7,-6,2,5,576,-578,3,-9,0,582,42.2,-1,0,19,.9,564,.3,-584,.8,582,66.2,.2,4,584,-588,588,0,-588,.2,589,-589,5,0,577,52.2,.2,594,-594,47.3,584,-2,-582,19,.6,564,-564,.4,580,-590},{14,75,1.31,20,1.32,528,836,1.6,15,1,14,9,1.3,11,5,2,4,1.4,11,1.5,2,1,9,24,17,1.2,25,6,1,14,10,4,8,5,1.4,2,7,8,5,4,10,1,4,1.5,60,7,18,51,1.4,64,27,102,3,58,39,25,10,42,2,26,11,4,26,55,24,68,5,8,1.9,37,1.3,27,17,2,21,2.1,4.3,30,1.4,30,1.7,30,1,2,1,72.2,29,6.3,5,4,2,8,155,80.2,12,91.2,2,14,15}},{{6},{3,-1,.6,1,.6,-1,.5,1,.5,-1,1,2.1,0,4.2,.3,6.2,579,-579,0,5.2,.5,1,25.2,586,-2,.4,-585,19,581,-600,1,18,.3,-19,.7,7,1,-8,0,1,6,5.2,1,-1,0,11.3,6.3,2,559,15,9},{14,75,1.31,32,1.11,1365,2,18,1,14,28,2,4,2,1,13,2,5,9,68,6,1,14,10,4,8,18,13,4,10,5,1.4,68,69,1.4,64,27,105,132,111,206,1.3,44,2,21,2.1,4.3,30,1,33,1.4,33,1,2,1,4,1,32,6.3,11,182,28,15}},{{7},{3,-1,1,594,-15,-580,.9,585,-584,8,-9,0,1,4.1,8,590,-7},{1573,29,151,228,264,364,2,21,2.1,4.3,30,1,33,1.4,33,1,7,1,32,1,196,28}},{{8},{11,-5,5,-8,1,.7,6,550,19},{1573,29,151,228,628,2,21,2.1,4.3,64,275,28}},{{9},{2,599,12},{2744,275,28}},{{10},{562,18},{3019,28}},{{11},{601},{3019}},{{12},{564},{3019}},{{13},{582},{3019}},{{14},{568},{3019}},{{15},{590},{3019}},{{16},{569},{3019}},{{17},{588},{3019}},{{18},{570},{3019}},{{19},{596},{3019}},{{20},{571},{3019}},{{21},{653},{3019}},{{22},{572},{3019}},{{23},{627},{3019}},{{24},{573},{3019}},{{25},{654},{3019}},{{26},{574},{3019}},{{27},{655},{3019}},{{28},{575},{3019}}}, - {341,1.42,62,1.7,7,1.7,2,1.49,-364,.2,93,.3,109,1,.4,1,.5,1,0,2,1,-69,.6,70,0,1,-70,.6,1,2.1,.6,69,.2,-380,381,15.3,-69,.8,1,.3,1,.2,68,2,30.3,.5,23.3,.2,1,0,6.3,.9,1,.11,1.2,.5,1,.4,1.2,.2,1.3,.51,58.3,-87,.01,88,.3,7.2,-88,.01,1,2.1,.01,87,.2,-407,407,2.1,19.4,3.2,39.3,.8,86,1.3,3,.4,2,.4,4,.4,39.3,8.3,2.1,8.4,12.5,.2,2.1,4.1,2.1,-133,0,107,2,4,2,1.5,3}, - {80,.531,465,1.7,-472,.082,477,1,7,2,-1,.2,-486,475,1,0,-476}, - {2,.293}, - {2,.541,1,.4,-1,0,2,-1,4.2,1,.3,-1,3.1,6.4,17.9,1,-1,17.51,34.31,1,-2,34.23,0,14.8,34.52,119.81,16.1,32.1,98.05,34.81,4.2,184.71,.8,14.7,2,0,32.2,31.3,232.01,17.7,100.24,.5,215.08,81.6,115.82,3.2,.2,232.43,201.5,4.2,319.66,434.611,617.94,685.4,217.221,.392,1,.7,-1,.5,1,-1,2.1,2.1,.2,1,0,4.3,3.1,-1,.12,597.3,28.3,.13,7.2,.08,49.3,434.4,.2,57.7,.3,16.7,8.4,188.5,25.21,239.6,49.01,8.4,.9,92.91,.5,69.11,8.1,16.01,509.3,77.21,2,-2,544.5,0,-1,11.3,73.3,11.3,-2,55.91,131.4,115.8,24.8,.2,622.7,24.6,87.3,9.4,2,.2,67.5,2,79.3,44.41,183.41,84.8,100.32,0,322.3,17.7,74.4,.3,154.3,0,-2,19.4,76.02,.653,8.3,3.1,6.1,12.1,24.1,91.7,.4,192.3,425.8,439.61,.81,332.4,.7,-1,.91,25.3,.01,103.7,342.4,403.6} + {45,.2,5,1.2,-7,-6,8,.4,1,-1,.4,-23,15,8,.9,-8,6,0,-5,.93,-1,.6,-5,.6,-19,.31,9,.6,5,.5,-7,.5,22,.5,-27,.5,-2,.11,55,2,.5,141,-138,-3,1,3,-4,.3,139,-139,.51,6,-3,-3,7,-1,-6,.3,3,-3,.51,1,2,-3,10,26,-36,.3,4,-4,.51,12,-9,-3,3,10,-13,20.4,14,-11,-3,15,-1,-14,.3,2,-2,.51,16,-13,-3,0,16,-16,.3,17,-17,.51,15,-12,-3,9,-3,50.2,15,-15,10.4,18,-9,-9,.3,19,-19,.51,20,-17,-3,11,-11,.3,1,-1,.51,21,-18,-3,143,-143,.3,141,-141,.51,22,-19,-3,144,-144,.3,23,-23,.51,13,-10,67.2,-15,.3,105,-105,36.2,13,-33,141,-117,-24,.3,149,-149,.51,25,-22,19.2,-5,-10,.3,41.2,76.5,130,-139,.3,18,-18,.51,26,-23,-3,27,-25,1,-3,.3,26,-26,.51,28,-25,-3,0,29,-29,.02,3,0,-3,30,-27,17.2,134.3,10.3,105,-102,10.2,13,-13,104.4,1,144,-145,96.4,67,-64,-3,31,110,-141,.3,31,-31,.61,10,-7,-3,5,-5,77.4,193.3,22,-22,.3,70,-70,.51,27,-24,-3,82.2,.3,9,-9,.51,32,-29,9.4,170.3,67,-34,124.2,-107,-34,46.7,35,-31,-4,.3,37,-37,.51,38,-35,-3,39,-24,154.2,40,-40,.31,66,-66,41,-38,-3,42,-36,-6,.3,192,-192,.51,43,-40,-3,44,1,-42,-3,.3,43,-43,119.4,189.2,4.2,.3,69,-69,.51,46,-43,-3,47,21,-68,.3,46,-46,.51,52,-49,-3,141,-93,-48,.3,49,-49,188.4,50,-11,-39,.3,38,-38,74.5,9.2,73.2,.51,49,-46,236.4,147,-147,38.4,9.3,10,-10,130.4,9.3,32,-32,18.4,51,92,282.2,53,-53,.51,54,-51,-3,32,-14,150.2,54,-54,.51,23,-20,-3,18,-8,264.2,148,-148,.51,2,1,96.2,9,-56,.3,57,-57,.51,58,-55,-3,0,58,-58,.3,59,-59,.51,18,-15,-3,13,5,190.5,69.3,3,57,-60,324.4,116.3,1,17,219.5,61,-58,-3,62,-44,10.2,126.3,371.3,229.3,69.3,89.3,.5,46.6,27,-27,339.4,45.3,61,-61,9.4,281.3,63,1,-64,.3,65,-65,.9,243,.5,-2,.5,-279,5,-2.2,-1,-8,5,0,-37,9,4,-4,4,29,.2,-26,.2,-8,3,21,-31,-1,25,-24,44,.3,-32,0,-6,28,-35,27,18,.3,-42,9,-5,38,0,1,-1,-15,-7,-4,26,.3,-40,.3,-1,3,-4,1,41,.3,-41,3,2,1,12,16,-1,-1,9,1,-27,1,25,1,-4,4,0,-4,-10,-31,0,36,1,.4,-38,70.4,2,0,16,3,2,-28,14,-3,4,1,21,.2,1,-25,14,0,8,.3,1,.2,-38,4,10,.2,7,0,1,0,5,.2,12,-3,-39,14,0,12,0,-11,27,.3,-24,24,0,-15,13,-11,24.2,116.2,-14,1,.2,14,25.2,.2,-28,0,24,1,14,-1,-39,2,-1,44,112.3,.4,-32,0,-13,0,7,4,-4,5,0,9,-21,28,17,.2,1,-1,.3,-45,12,-12,45,25.3,11.3,-15,-6,-5,26,18.4,143.2,37,-25,30,-43,-4,5,1,39,49.4,149.9,.2,1,-28,1.2,23,0,1.2,7.2,-4,3,4.2,.4,155.3,38,31,71,.2,-71,.3,72,1,31,37,-67,1,-75,0,71,5,-5,1,0,5,-6,-71,78,1.2,-80,78,3,1,-82,83,1,101,-100,1.2,-9,10,1.2,-6,7,1.5,8,-7,-97,98,1,-99,100,1.3,-32,0,-71,0,186,8,-110,-15,-35,-21,-1,-6,-6,195,-177,0,26,8,-11,43,-49,-9,5,59,-61,-20,-9,16,-2,44,-2,107,-103,-51,44,86,-139,195,-208,.4,2,.4,-1,.4,8,245.2,.4,35,.4,-3,.4,-4,.4,5,.4,-34,.4,28,.4,9,.2,-65,0,44,.2,-44,0,68,.2,-68,0,63,.2,-63,0,66,.2,-66,0,71,866.2,5,-143,867.3,198,-202,.5,865.4,165,1.2,-174,.5,1,149,-147,-3,10,141,-115,123,-159,.5,863.4,172,-162,158,-171,.5,862.4,174,-175,176,-190,.5,861.6,.5,15,57,-69,-3,9,145,-148,-6,9.2,137,-149,-3,18,138,-147,152,-89,193.14,83,8,-194,.5,20,2,11,742.2,86,-203,-40,16,.5,25,0,866.3,173,-178,141,-151,74.2,141,-153,-3,9,45,85,77,-216,.5,26,172,-195,0,-3,27,172,-197,198,-200,.5,170,-167,-3,0,171,127.2,-3.2,-3,-3,30,-23,-4,30,-33,.5,3,.2,864.2,64,-166,165,-168,66.3,950.2,1,94,50,4,-149,.5,67,84,-148,-3,31,124,-14,1,-142,.5,31,2,85.2,74,-181,-34,.5,10,17,854.2,826.2,-3,212,-213,.5,38,12,-47,826.3,152,-167,.3,824.7,181,-187,.5,43,121,-161,0,-3,165,-120,121,-166,76.4,13,163,-173,215,-215,-3,.5,46,168,-211,-3,47,167,-146,-23,-45,.5,52,43,-92,821.2,101,-194,-48,.5,15,139,-151,-3,158,-119,123,-162,18.2,-37,668.2,51,93,-1,58,-201,.5,156,160.2,32,185,-199,142,-160,.5,23,130,-150,-3,18,139,-147,265,-275,.5,781.4,144,-135,-56,.5,58,119,-174,780.3,119,-177,.5,778.4,163,-158,5.2,.5,32,-17,12,133.2,3,30,27,116,-176,75.2,148,-160,779.3,56.3,61,-46,75.2,778.2,-17,-1,.5,1,4,-2,-3,63,140,-139,141,1.7,14,-211,210,-3,1.2,4,1,5,-4,1.3,-170,172,-91,52,.9,-185,56,170,-84,-147,234,.9,-225,43,-33,0,-10,136,-56,-80,3,102,44,-9,0,-103,6,0,178,.3,3,-1,.3,-17,-256,274,-212,-10,-17,.22,244,1,0,-245,.74,251,.5,26,.5,70.2,2,.5,1,802.2,246,-142,-104,202,46,-248,246,10,-4,0,-277,0,-8,0,-18,-11,11,-11,17,-14,0,34,.3,-6,-3,3,-3,9,-33,33,2.1,21.1,42.14,58,89.2,-3,4,-257,5.2,6,1,-263,105.2,148,-92,110,-270,6.3,0,19,-271,6.2,142,3,-249,11.3,17,-269,27.2,3,-61,-198,5.2,8,1,-265,131.3,-84,4,-172,21.3,.2,-252,5.2,-67,213,-250,16.2,-5,7,-258,246,-10.2,-14,14.2,10,4,1,-261,19.2,110,53,-267,24.3,231,-268,66.4,34.3,169,1,-22,26.3,-2,1,-199,-56,6.2,-319,121,-58,5.2,16,-96,-176,246,1,-186,190,-322,.42,177,0,1.2,2.1,3,2,-116,117,2,1.4,0,2,1.3,-152,.4,153,1.4,.3,2,1.2,-30,21.81,3,1,-25,6,21,-15,10,4,-31,27.21,1.2,-151,27.21,-25,2,51,-123,-1,1,8,108,-119,0,159,-172,3,-15,0,42,-56,.101,142,-139,-3,55,128,-4,1.2,-181,.3,10,168,-178,1133.4,197,-42,-155,.3,195,-195,.9,-35,175,56,.5,-41,41,-196,.81,204,-204,.7,196,.3,-109,109,14,-210,16,83,-49,-49,55,163,88.2,-68,20,31,-204,.4,215,-228,2,-1,-30,27,8,-12,9,-4,5,9,.5,182,-40,67.6,3,-184,.5,64.3,3,194,-4,-38}, + {{{1},{1,.2,3,657,-1,-656,0,3,-5,8,0,-8,11,-6,-1,-4,8,-5,-3,0,5,1,3,-6,3,7,-7,-2,-4,3,-3,-1,0,1,.7,2.1,4.1,2.1,5,.2,-2,0,-3,0,364,1,2,29,-7.2,9,237,.2,-1,.2,8,-7,5.4,-656,.6,656,0,-8,.2,11,-666,0,-1,2.1,-1,655,0,5,0,-4,.3,6,0,-5,0,2,28.2,0,33.4,0,8,-589,-78,6,-6,11,-3,7,-14,665,-666,662,-661,-1,99.3,656,-660,5,6,-7,11,-15,5.1,7,4.2,0,4,645,6,-652,646,34,-694,26.3,658,-662,26.01,82.2,-3,7,649,-3,-655,-6,671,-671,150.4,0,25.01,14,-14,11,-4,8,-15,661,-656,653,-658,0,26.3,654,-658,26.01,11,-11,2.1,15,656,-10,-653,-8,676,-676,26.3,660,-664,26.31,-5,9,644,2,-648,-2,657,-668,78.51,129.3,-5,9,-15,656,-642,-13,661,-662,26.51,181.3,104.3,656,-651,-5,.2,25.81,-3,7,25.2,-656,658,-658,102.51,179.4,-6,652,179.2,152.4,49.21,8,-8,100.5,-648,654,99.4,-2,-2,254.51,125.3,-14,50.61,99.6,2,-2,1,658,-659,26.3,-3,-1,100.41,-15,678,-672,-5,-1,51.91,-4,8,356.2,-661,-5,660,-660,26.51,253.3,3,1,650,-4,-650,-11,664,-3,-661,27.3,669,-673,129.31,-6,10,129.3,-3,-11,79.4,9,-13,358.51,643,-2,254.2,230.5,358.21,181.5,26.2,181.2,26.5,281.02,664,-655,-9,26.51,182.4,642,4,-655,651,-657,103.4,653,-657,25.01,0,52.8,659,233.4,309.71,649,-8,-648,-8,51.4,657,-661,408.91,258.61,459.8,334.71,126.5,-656,5,-6,1,638.4,126.11,-6,-9,334.7,-4,-2,385.22,666,-666,660,-659,52.4,664,-668,281.31,650,-646,639.2,-654,-7,662,561.61,462.6,661,-647,-14,0,661,360.4,692.71,643,3,-656,334.2,3,27.61,615.52,156.5,661,590.2,639.42,457.2,716.61,26.8,668,25.4,655,-659,75.81,665.42,356.5,331.14,-15,665,-659,656,-662,50.12,674,-23,-652,-14,175.4,671,-675,50.41,-13,676,-672,199.5,713.61,479.2,-645,-11,24.4,530.21,299.3,659.3,661,-650,2,-12,378.4,352.81,149.3,456.5,26.02,644,1043.5,350.02,659,-664,26.4,2,-6,301.51,-14,655,633.3,26.4,154.21,278.5,-6,647,278.81,77.5,653,-12,-651,0,-5,303.54,377.2,-5,177.61,24.4,658,-8,-659,658,-6,835.4,254.11,646,4,6,9,-4,27,-692,.5,67,-78,688,-687,656,-488,-169,4,692,-33,-3,3,-3,-2,.2,-658,1.2,658,36,-325,289,0,7,-9,903.2,3,-2,658,0,-6,-649,651,7,-658,-6,5,-8,1,656,0,-651,7,-2,-6,653,1,-659,6,-3,1,-4,664,.2,-4,2,-2,-657,659,-662,10,-2,-5,659,-2,0,-2,-658,4,-4,0,4,7,-11,-2.2,7,649,-649,0,646,-290,293,0,-656,-4,1.4,654,0,9,-9,9,-10,0,-657,19,-10,658,-656,-10,666,-7,-660,1.2,9,657,-659,10,-20,.3,1.3,665,-5,-661,-2.2,655,15,-7,2,-661,10,-5,-11,660,-654,-1,1,2.1,653,-654,1.2,3,647,-656,7.2,-659,424,247,-10,10,-670,1.2,660,-662,1.2,-2,2.1,1.2,665,.3,-7,-1,0,1,2,-655,6,-2,3,-14,137.3,661,-7,3,0,-1,-4,-2.2,.2,5,-5,18.2,-9,136.3,5,-8,659,8,-667,84.2,3,-8,148.5,-656,4,6,-8,6,-5,152.3,660,7,-7,7,-10,-654,654,32,-30,9,-6,-655,-1,5,58.2,160.3,686,-22,0,115.2,3,-4,0,7,56.3,647,-657,1,-3,.2,8,9.3,996.2,5.3,.4,646,-286,296,-5,-653,-9,11,-10,13,-6,-4,1,-4,661,3,-665,673,31,-690,1,-15,679,-668,-11,6,1564.2,7,-9,657,298.2,-4,-1,1,7,-7,0,609,-610,0,665,-665,0,12,661,-673,6,675,-681,0,450.2,673,-674,16,644,1,358.2,1169.2,675,-673,.3,-2,.2,170.2,1,-1,4,-4,.2,5.2,.2,2,674,-19,13,-670,0,4,655,12,-671,1,915.2,5,-6,667,-659,162.2,.4,1,-1,8,30,-10,-687,.4,657,8,12,31,-50,.3,4,0,15,-6,2,3,8,41,1.2,-20,21,-60,.3,822.2,61.2,658,.2,-8,1,-2,6,319.3,2,-2,7,-666,1,2,658,6.2,-8,.2,-659,.3,556.6,670,-10,-661,690,-689,675,-676,621.5,679,-33,-647,646,-660,-1,3,-2,710.5,-5,1319.2,33.2,660,-669,-2,1690.6,657,-652,311.2,1,1675.4,1677.3,686,-44,-649,-8,0,709,-707,-2,1664.5,653,-11,-644,-2,-11,0,556.6,1,682,-669,-13,0,689,-690,671.6,6,672,-673,-5,.3,1,666,9,-675,678,53,-718,1,-15,686,-675,-11,6,531.2,7,-9,206.2,237.8,-609,-1,1745.2,0,12,667,-679,6,688,-693,-1,.2,679,-680,16,-15,668,-663,1510.3,.4,1007.6,0,2,239.3,497.2,-657,619.5,0,923.2,-5,0,-1,110.2,1549.6,-1,1829.2,523.2,1,-660,0,1537.6,-8,.2,-646,-11,0,664,-663,-1,1524.5,666,2,-669,-3,0,-11,1175.6,4,21,-678,-5,662,-4,-657,25.4,1497.3,-1,26,-669,-14,1,536.2,1,94.7,678,-678,664,-5,-650,-5,-4,1347.5,-646,646,-651,1474.3,664,-664,1360.8,9,-8,-1,118.8,-4,-2,673,-14,646.2,51.6,363.2,697,-696,-1,0,92.3,646,-642,269.2,-650,1320.3,244.4,928.3,0,657,0,-643,-14,.3,116.6,-1,0,-652,-5,0,226.2,465.2,258.6,0,683,131.2,3,-3,.4,63.4,203.2,333.2,369.6,74.4,670,-2,-668,.3,11.4,1,670,-665,654,-3,733.2,-659,318.6,1380.3,.6,1111.4,1,662,-659,-6,3,-3,223.2,134.4,645,23,-672,370.3,119.4,1087.3,0,657,-646,2,-12,0,210.6,1426.5,1,656,338.2,13.5,.2,683,-669,644,-655,-3,.2,119.6,662,250.2,655,-660,6,-6,479.6,-1,235.2,1337.2,673,-673,76.4,664,7,-15,-665,624.2,658,314.2,1356.2,1,0,-1,167.2,79.2,-657,5.2,656,-645,645,-656,17.3,656,709.2,0,-2.9,641,368.2,3,665,-668,-2.9,-18,2,-2,0,2,9,648,32.2,-1,.5,1,-1,1.3,-2,1,-3.3,-11,-1,1.2,-1,11,.2,144.2,5,.2,2,0,4,0,516.4,1,.5,-1,-11,.7,11,.5,-10,.5,9.2,4,4.3,2,.5,15,.5,-25,.5,673,-6,12,-13,-2,10,-673,.5,672,8.5,-1,14.6,383,274,1216.2,-657,9,382,-390,613,1,-612,.3,-2,882.2,662,-663,657,938.2,0,8,1,647,-637,653,-653,-14,-5,5,654,-654,21.1,42.14,-648,386,-394,8,971.2,387,-395,655,-647,-11,399,258,-37,-620,1,-1,401,256,-36,1,-620,-2,402,255,-255,-401,-1,403,254,-34,-622,10,393,-401,6,648,-646,394,-402,-3,603,-592,395,-403,621,-625,1,0,408,249,-31,1,-2,-625,409,248,-657,660,-649,399,-407,0,-4,12,400,-408,-1,626,-617,401,-409,711,-713,-1,413,244,1060.2,-2,415,242,-657,670,-670,417,240,-28,1,-630,418,239,-655,1,633,-625,408,-416,605,0,-607,10,409,-417,656,1992.2,410,-418,2,-5,0,422,-420,-1,1,665.3,1,2.1,699,-42,13,329.2,648,.2,1,14,0,-663,647,-6.2,-663,-2,-1,4,1,-8,-1,3,-1,-1,4.3,479.2,713,-715,35.6,-38,41,-692,35.4,6,0,2083.2,8,-11,-652,36.21,0,686,-688,666,-9,0,5,-2,-660,41.6,-41,1,-649,41.3,1.2,0,-650,648,577.2,39.31,670,-671,656,6,0,-4,9,-668,2,14.2,.2,-1,671,-2,0,-10,21,-679,676,33,-708,514.4,560.3,507.6,12.1,1786.6,518.6,12.1,6.1,726.5,11.1,5.1,39.6,11.1,567.5,642,8,-665,735.3,.3,1504.4,494.2,1630.51,658,-8,-665,5,2214.61,-16,1,-3.5,2,-17,6,-6,5,1.3,4,-4,69.2,4,0,-15,.7,663,-663,.7,4,-5.2,2,666,-673,-9,15,-15,687,-687,371,-370,-1,1,658,8,-664,-4,663,-662,.5,663,4,-667,662,-3,-1,40,-697,1205.2,-9,77.5,647,9,0,-671,106.3,1014.6,664,-21,655.2,-651,6,-11},{1936,1,4,1,4,4.1,1,937,1.42}},{{2},{1.3,656,1,-659,452,208,-2,-1,0,1,.4,-1,-591,595,-491,511,-2.2,-601,599,-2,2,-2,-22,-575,275,-357,-1,371,36,9,8,1.4,-57,5.1,10.1,5.4,2,1.3,6,9,3,-451,.31,658,58,-15,16,-36,-11,-10,-4,5,4,6,-13,0,-2,1,8,-2,-5,6,-661,.5,-2,.11,1,.5,46,214,399,-399,168,227,-656,5,652,-657,366,111,178,0,-656,656,.3,3.1,-656,262,20.3,233,-662,4,660,-298,19.3,-648,648,19.9,231,-660,0,-1,657,-657,367,21.2,.5,18.5,404,-404,18.4,10,646,18.4,39.21,235,-664,11,-1,646,-645,355,21.3,-655,655,60.11,41.2,5,-295,59.31,4,116.2,76.41,5,651,75.5,133.8,20.6,665,-663,359,74.61,133.2,-290,56.31,658,-655,653,17.3,56.21,131.2,93.2,19.4,3,-3,75.11,656,14,-670,228.4,-657,657,20.6,395,-395,248.3,656,-657,665,229.3,76.6,265.6,659,-665,2,365,18.11,226.3,670,-670,1,18.9,73.5,-1,5,652,5,3,284.4,95.31,-1,14,643,-653,363,266.11,135.6,0,652,1,-647,356,230.41,665,135.4,97.21,208.2,-649,228.4,192.7,656,-394,39.71,362.6,3,653,2,-292,287.71,651,250.51,343.4,286.9,227.5,0,656,8,-6,56.4,-647,647,37.5,674,-412,22.5,-1,665,-665,439.51,20.3,6,652,-658,385.51,-430,1,657,-647,646,24,-314,21.3,25,-25,215.11,2,-2,656,2,-657,277.3,0,-653,653,258.21,1,656,-649,-6,299.51,6,651,11,-301,601.41,432.3,-659,241.6,12,-12,489.31,-1,-670,510.71,-1,6,665,-671,21.21,63.5,667,-668,512.4,381.41,515.6,605.31,16.9,403,-403,220.3,116.2,241.6,2,-2,241.21,5,739.5,94.8,281.6,0,530.31,376.3,6,664,-12,376.71,10,660,20.5,78.8,627.01,131.9,16.4,-657,3,364,169.61,5,651,-656,873.21,230.8,666.5,21.31,3,209.51,330.3,-658,368,227.42,791.7,848.01,506.6,485.2,223.4,420.7,.6,666,12,-13,-2,10,22,-676,29,-47,32,396,-428,-1,1,-1,2,-2,1.2,853.2,6,1,-662,655,9.2,0,-1,124.2,0,11,-2,-8,661,-643,27,-42,653,-488,-168,10,-7,5,648,-648,-7,660,-662,4,42,-37,648,-657,.5,65,-65,657,-648,-5,42,-46,.3,660,-302,-189,487,-647,16.2,662,-653,648,-654,654,0,-654,655,0,-207,-23,.4,-427,71.4,4.2,655,-657,0,663,-662,-1,.2,663,0,-5,0,-658,9,5,-13,1.3,658,-662,657,7,-4,-2,12,-7,-3,4,0,-4,-620,-32,676,-2,-2,2,36,-36,37,-35,0,-684,680,0,-673,-7,0,1.2,661,.2,61.2,.2,-7,.5,3,0,-2,-658,672,-619,-46,661,-659,10,639,-639,2.1,-10,0,-9,.3,11,653,-664,1.2,-2,2,668,-661,10,0,639,-629,54,-74,649,146.2,3,653,.2,25.2,31.3,-17,139.2,9,21.3,-649,74,-64,639,-658,.3,3,37,-37,-3,5,-5,134.2,0,649,55.4,74,-83,1,.2,666,-244,-65,298,-652,15,32.2,-658,659,-658,-1,4,8.3,-655,1,5.3,.4,-655,659,-6,-648,48,-54,659,148.3,30,-685,224.3,658,-658,26,-26,150,540,-4,-21,1022.2,2,3,-5,2,0,-9,-658,720,-717,702,-705,663,-663,1.2,-1,669,-669,672,-11,-662,675,-673,6,70,184,395,22,-679,66.2,662,-659,655,-1,-658,0,9,649,-658,663,-651,647,-656,-3,658,-656,660,-658,-4,.4,724,-28,-33,-5,6,-2,8,-10,0,-1,3,.4,-661,.4,697,31,-23,24,1,-63,.2,-668,0,660,-1,8,.2,-664,.2,1,0,-4,.2,-1,6.2,.2,11,.2,647,4,-3,-290,288,-287,109,186,-664,-1,6,670,-675,0,368,11.3,229,-707,4,672,-677,-1,370,10.3,178,397.4,-2,-663,656,-287,292,-291,12.4,10,654,-665,2,660,-293,24.3,198,-676,11,-1,654,338.2,-291,35.5,22.2,-6,-290,32.5,662,-658,660,-665,0,369,43.6,5,200.2,-659,189.2,1,195.3,660,-659,51,-52,319,386,-705,676,-659,659,-676,659,6,2,24,-31,-659,732,-730,-3,1,661,-662,195.2,674,-672,676,-12,-667,675,-17,28,-317,50.5,-1,662,3,-7,-657,368,296,-295,137.3,656,9,-666,677,-677,663,-294,149.5,709,-704,671,-677,0,2,-1,151.4,106.3,-10,1,1274.2,0,-1,99.7,4,660,-6,14,-304,60.6,14,651,-661,661,-296,11.3,152.2,4,1,-1,660,72.2,10,-11,36.6,663,-658,717.2,0,-2,202.7,116.2,665,-657,-4,0,365,99.5,3,661,12,-676,658,-290,11.5,-1,0,671,-671,1,84.2,259.6,670,-664,670,-676,59.4,-479,1089.3,654,16,-681,11.4,84.2,2,-3,1.2,663,-6,0,-659,83.6,-1,4,-3,664,-666,9,-6,367,13.6,0,6,1401.2,668,-9,320.4,13.2,374.2,-3,97.2,254,399,24.5,1171.3,.2,369,294,-293,61.3,962.2,95.2,0,94.6,709,-705,672,-675,-2,369,117.6,1,-1,227.2,657,-288,153.6,6,651,15,-14,322.6,658,-648,647,10,-6,-293,201.6,660,-666,5,365,10.7,-665,665,-662,-4,370,33.5,5,659,59.2,136.7,99.2,219.2,304.6,.2,76.3,-1,659,5,-663,841.2,656,-651,-1,681,-685,11,-11,.9,4,-3,0,658,-8.2,-7,19,-687,.4,658,7,-7,42.2,-1,4,1,654,-659,.3,668,-1,-7,-2,-580,585,-1,-3,4,3.2,-1,12,5,-12,-1,1,-5,-1,0,770.3,17.3,9.3,-653,1,651,1,6,558.3,-6,6.1,12.1,26,-19,17,-16,20,-28,6.4,12.6,24.4,18.3,-685,.5,1,.71,658,-581,-76,.2,10,653,-663,664,-659,-5,659,3,-185,-44,-434,662,-662,295.2,5,-4,4,1,-5,1,-2,-1,1,140.2,645.2,21.1,42.14,664,-641,640,-5,-658,664,-655,654,-7,2,-657,.2,778.3,505.3,2,9,647,595.2,89,-90,11.2,16.2,29.3,-663,890.2,-582,581,-4,22,-17,128.2,-665,.2,30.3,2,-1,0,656,-575,-82,8,650,5,26.2,-664,4,661,-664,805.2,0,664,-573,574,-1,11,-17,-567,-90,61.3,-572,-85,8,651,953.2,1,0,1,656,-571,-86,-1,0,2,662,36.2,-661,0,657,5,63.2,-652,-11,664,-583,584,-665,317.2,93.3,1,662,0,661.2,8,652,-663,666,-3,2,0,-664,659,-649,-11,671,572.2,.4,7,-15,-646,652,9,.3,-667,658,-652,647,299.2,28.2,1001.2,678,-14,7,0,-670,666,-656,-11,676,-663,660,.4,-17,7,-652,653,-8,.3,8,-653,-7,0,-4,664,0,914.2,8,659,-670,663,7,-12,39.2,-1,383.2,679,-15,.4,-3,3,-653,659,-9,.3,9,-659,29.3,657,1.2,22,-23,23,-11,-670,.2,11,20,-19,0,647,-537,550,-550,301,251,-673,121,6.3,238,-660,6.4,12.1,12.6,233,-655,12.1,12.7,552,-552,12.1,12.4,6.3,36.9,12.11,261,1569.5,8,-9,628.2,1590.4,9,-9,1590.11,0,-1,671,-672,5,2026.4,-652,652,22.5,78,-78,.5,4,-4,666,-5,5,8,-8,4.2,1432.2,-429,-1,0,1,661.3,4.3,630,25,2,6,.2,-4,-1,752.2,.3,3,-3,3,166,-169,1,25.3,649,7,1,0,1,0,-658,10,670,-22,1125.2,691,-24,-298,717.5,8,-9,658,-647,-11,370,293,739.2,11.2,0,-1,289.2,-7,745,-740},{5,77,1.6,65,4,22,3,1,25,6,21,25,23,4,5,17,3.1,3,23,25,3,5,20,22,3,2.1,26,1,5,17,9,17,3,7,46,32,24.3,21,23,8,42,20.3,5,20,24,4,-26.2,25,27,7,20,26,23,54,25,45.3,5,56.2,1,2.1,5,20,23,70.4,5,17,26,4,26,36.3,25,24.3,17,8,20,1,28,2,3,16,63,35,1.2,20,10,22,85,5,15,2,12,14,4,-3.2,1,3,1.2,4,3,4,1,5,8,-2.2,9.2,5,2,4,-2.2,12,1.4,6,1.4,39,1,4,1,4,4.1,1,7,5,8,3,2,9,3,15,11,1,9,4,7,6,7,4,7,50.11,13,1,2,11,2,8,14,5,103.3,23,6,14,11,9,5,14,1,11,26,3,84.2,1,8,14,4,1,11,2,12,2,19.3,62.3,8,1.2,13,1,4,9,4,12,1.7,2,7,1,5,1,3,13,2,11,1,67.2,6,1,-5.2,2,1.2,99,1.5,27,2,21,2.1,4.3,14,108,1.42,9,10,1,26,3.2,17,3,1,-10.2,1,16,3,1,13,110,31.2,5,39,45,1,4,1,-2.2,9,3,2,10,6,1.3}},{{3},{2,1,-1,0,1,0,4.3,-1,.9,3.2,657,6,-5,6,-2,8,-11,-2,7.6,29,-16,2,-8,-5,0,2,12.5,4,6.1,6.5,-621,-38,.6,1,-1,.3,-1,2,-1,59.4,5.3,.5,3.2,.7,8.4,13.5,.2,27.3,3.2,.4,16.9,26.5,15.01,31.3,8.3,2,-1,3.2,-2,39.3,52.31,5.1,18.7,.9,664,-664,13.1,65.01,.8,78.51,109.31,.41,657,-656,149.12,.7,4,-3,93.11,54.4,17.3,55.01,97.31,84.5,.2,140.21,207.51,87.01,100.3,26.3,42.01,156.3,102.41,656,-655,36.3,0,18.8,5.3,313.4,174.01,27.01,.31,664,-663,11.9,66.41,-651,-5,3,-3,127.01,61.3,3.1,70.3,143.8,186.2,69.3,.3,73.01,.6,11.5,100.01,163.3,660,-659,18.4,97.01,.7,495.6,36.01,.51,252.41,0,-1,659,-659,82.11,213.3,22.3,679,-678,63.9,679,-679,115.41,53.7,292.31,119.3,207.12,93.6,659,-658,123.22,663,-662,476.41,13.3,.4,323.3,184.11,31.01,98.3,263.01,13.3,47.6,117.8,658,-657,54.9,667,-667,1,701,-702,192.11,145.01,125.01,165.51,-1,689,-689,669.61,.4,82.01,0,7,655,.4,2,.2,-655,.2,-6,-2,-1,21.2,.2,32.2,662,0,-6,2,-658,.2,1,6,651,8,-666,49.7,663,.2,26,-33,3,-656,653,652.2,.2,657,5,-4,0,57.4,1,64,-64,0,655,-656,1,658,.6,-652,652,-2,-652,657,-4,-657,.3,6,652,-640,19,-24,-14,656,-649,.4,-7,.3,19,-19,0,660,.2,-649,.2,656,-660,.8,-7,1,-1,662,-662,68.3,71.6,659,0,1,0,-3,-656,666,-8,0,-650,653,-662,133.3,3.2,17.2,25,-684,112.3,149.7,16.3,.2,25,-24,-654,649,2,-2,29,-685,49.6,658,4,.2,-661,26.6,82,-83,4.2,314.2,-657,.91,2,-2,26.3,.2,6,-3,-3,0,675,-675,.6,3,6.2,1.2,-2,0,721,-721,5,-5,0,668,-668,.2,722,-16,1,16,-718,6,.4,649,-1,8,30,-10,-685,.4,-2,.4,1,697,-696,.2,-3,.2,10,.2,650,.2,-659,677.6,104.5,8.3,751.4,3,-2,-2,952.9,3.2,572.7,.8,595.3,640.3,.11,101.9,.21,853.3,859.4,1,-4,28.3,-664,0,673,-673,403.4,.2,5,-5,529.7,10.3,700.5,0,834.6,731.2,-657,2,-1,0,663,-663,61.3,.4,5,741.3,109.6,56.3,487.4,1057.5,464.3,660,-660,47.8,143.3,.6,183.2,768.5,0,-1,9.2,508.4,746.6,6.2,220.2,.8,-1,1.2,574.3,16,484.2,8.3,54.3,100.4,7.3,.2,3,-2,201.6,3,-1,-3,.7,-1,1,.5,522.5,103.5,0,-1,3,43.2,3.2,654,1,6,-659,.9,-4,656,-654,2,1,665,-670,662,-5,-656,667,.3,96.2,4,-3,.5,59.2,3,.3,-2,482.3,-3,.2,1,.32,-1,.32,1,.5,658,.5,13,-6,12,-13,-2,10,-672,.6,-1,0,735,-734,4.2,681,-22,-659,0,3,0,-3,1,.3,41.2,657,-657,2.1,12.1,24.32,-656,812.7,668,-669,661,908.3,0,655,723.4,2.1,712,-711,.2,577.2,-653,-4,-1,0,598,-597,913.3,659,-660,187.2,657,1,-1,564.2,10.2,-658,47.3,-2,284.3,9.4,0,63.2,1333.6,274.3,712,-701,-10,-1,783.2,656,78.3,195.4,793.3,0,662,-659,-2,-1,2,95.2,2,202.2,95.3,46.2,4,1,658,575.3,-2,.5,666,-666,7,1,6,-8,-6,11,-10,4,97.2,267.3,20.2,4,1,659,360.2,-1,.6,678,-678,24.4,5,70.2,0,1,4,-1,655,5,0,-5,201.2,4,1,665,-669,0,-1,.5,665,-665,26.9,724.2,631.3,0,2,0,-2,32.3,.01,1,-1,3.1,.13,6.5,337.3,6.3,.61,1020.4,7,-6,916.11,664,-665,888.01,0,4,.5,159.2,1387.5,387.3,1,0,1,0,667,-669,.7,3,.3,-4,.2,371,-368,-3,205.2,266.2,-647,649,-657,-3,2,-2,27.3,694,-684,-11,.5,1,.2,672},{1.8,12,1,11,1.65,15,1.81,32,3,1,22,3.1,3,1,5,17,4,25,6,4.2,7.3,3.2,3,23,8,4.2,5,20,22,3,24.4,20,27.3,9,17,3,1,29.3,25,32,8.3,5,21,23,3,5,17,25,28.3,5,20,24,4,26,20,6,34.3,26,7,4.2,25,23,54,5,20,60.3,5,21,25,1,2.1,69.4,74.4,88.4,70.3,26,46.3,25,28.3,17,89.3,1,16,1.41,2,1.3,14,12,2,2.1,21,1.2,4,1,7,3,1.5,12,1,8,1.9,2,1.6,11,8,1.2,21,1,23,20,2,19,13,1.2,6,1.5,15,2,10,1.4,4,8,4,3,1,2,1.2,26.2,4.2,8.3,3,7,12.3,3,2.1,-2.2,1,3.1,11,1.4,6,1.9,21,1.9,4,1.6,4,1,4.2,7,1,22.2,7,3,2,1,8.3,1.3,12,11,1,9,4,7,6,11.3,1,4,64.61,9,4,1.3,11,1.3,7,1,13,5,2,8,4,8,3,1,23,15.2,13,11,1,8,1,4,1.2,12,1,5,6,13,1,12,3,12,2,1,24.3,8,1,13,19.2,80.3,12,1.2,13.5,161.4,2,8,1.2,5,8,83.3,9,13.3,1,3,1.9,7,1.2,33.2,2,13,2,1.21,3,1.4,6,1,-5.2,92.2,99,1.5,3,2,9,17.2,9,38.3,5.1,10.8,9,60.3,3,-6.2,5,21,6,20,-5.3,14,11,1.42,67.3,3,82.2,17,6.5,9,75.3,9.4,7,9.3,-2.2,9,1,109,1.4,5,18,3,17,1,41,215.2,2.1,-2.2,7,4.2,2,10,6,1.3,7,60.2}},{{4},{14,-11,.6,1,.6,2,0,2,.2,2,-8,.71,38,-37,0,-2,1,6,-7,4,653,0,-655,2,-3,674,-11,5,-668,0,658,1,-659,1,.2,-2,2,1,-2,1,-1,2,-2,9,.2,-6,.2,-3,2,-1,1,-2,0,12,-12,1.2,-2,4,-4,4,0,-3,0,11,0,-9,9,0,-7,-5,31.4,.2,1,.2,11,-5,-7,.2,2,0,7,40.3,-2,.5,2,.2,1,50,-42,-11,1,-1,2.1,11,-11,0,11,.2,-12,1.3,4,-7,5,-1,-3,3,8,-8,-2,17.2,0,-8,8,.4,43.2,0,657,0,6,0,-7,2,-654,3,.3,653,.4,-658,.4,658,.4,-653,.2,-5,-2,2,-2,0,658,0,-657,-1,6,0,603,-609,6,70.2,1,2,-4,657,-655,655,-656,676,-675,10,-5,-6,24.2,-658,.3,1,32.3,4,-3,0,7.4,1,0,656,-656,42.2,4,.3,-2,8,166.2,-3.2,0,57.2,0,1,.3,2.1,684,0,-685,.5,8,.5,726,2,-733,-2,0,73.3,3.1,3.1,736,-26,0,-712,1,692,0,-29,-662,692,-693,699,-699,713,-713,692,-692,-1,694,-690,690,-31,37,-36,-660,735,-736,691,-694,3,689,-691,664,28,-30,-662,739,-736,737,-740,656,-653,696,-696,657,-660,741,-741,1,741,-742,659,-659,0,5,-1,1,-4,0,3,0,-3,-1,.4,664,-663,714,-715,15.11,1,687,-22,-9,-655,-2,17.21,671,-15,6,-661,-2,11,-9,-2,3,658,-662,658,10,1,-668,.3,-1,692,-58,27,15,-7,-668,655,-654,650,-647,656,-658,658,35,-696},{14,75,1.31,20,1.42,265,8,25,18,25,134,49,3,6,46,72,1,8,21,6,69,10,44,9,21,25,126,49,113,46,158,5,1.01,5,1,6,1,3,6,5,9,1.4,2,1,5,2,5,2,4,1.4,10,1.9,9,24,1.5,12,1.5,2,1.8,3,4,5,6,1.3,7,-5.2,2,3,4,8,5,1.9,4,6,2,5,4,10,1,4,1.5,-30.2,7,1,8,7,2,15,1.5,26,1.41,26,1.2,31,27,2,70,30,3,1,8,1,12,1,18,15,2,25,11,3,8,13,1,3,1,9,1,15,11,15,2,7,19,46.3,9.2,13,16,-7.2,12,24,15,2,13,11,23,-2.2,5,1,7,1.9,2,16,1,6,2,1,4,1.3,2,1.3,30,1,49,1.5,7,1.5,14,6,12,8,2,13,3.1,6.5,6,-5.2,3,1,2,32.3,2,3,-2.2,3,2,-3.2,1,2,4,7.3,1,4.1,-2.2,2.1,21.4,1.2,18.6,33.3,26,1.4,2,7,2,1,10,-2.2,1.11,7.6,1.5,2,1,3,4.2,11.3,9,11.5,2,4,1.2,8,116,21,5,13,1.7,20,9,1.3,2,5,9,-7.2,1.2,12,17}},{{5},{659,-652,0,2,.2,2,0,-4,6.5,-8,.5,3,8.4,-3,0,2,0,19.5,6.3,-6,-3,9,-8,8,-8,.2,8,0,648,-648,.3,-9,656,1,0,-657,657,0,-656,-1,19.3,.2,20,-21,650,-658,1,.2,657,-649,0,649,.3,-649,.3,-8,2,655,-658,656,2,0,-658,658,.4,-657,0,-1,0,3,1,.2,5,0,-5,661,-664,-1,0,7,-6,2,5,653,-655,3,-9,0,658,-659,1.2,-1,-1,1,0,19,.9,640,.3,-660,.7,1,.5,-1,4.2,0,663,-658,-5,9,676,-685,664,-664,.3,1,655,-655,-1,73.2,90.2,.2,4,659,-663,663,0,-663,.2,19.2,5,0,653,76.2,.2,670,-670,70.4,-3,-658,19,.6,640,-640,.4,656,-666},{14,75,1.31,20,1.32,528,836,1.6,15,1,14,9,1.3,11,5,2,4,1.4,11,1.5,2,1,9,24,17,1.2,25,6,1,14,10,4,8,5,1.4,2,7,8,5,4,10,1,4,1.5,-30.2,7,18,51,1.4,64,27,72,30,3,58,39,25,10,42,2,26,11,4,26,29,26,43.2,13,38,5,8,1.9,37,1.3,30,1,49,1.5,7,1.5,40,2,21,2.1,4.3,19,1,16,9,6,1,6,9,1,4,5,1,4,1,10,-6.2,10,5,26,1.4,30,1.7,30,1,2,1,99.2,29,6.3,5,4,2,8,155,1.5,2,20,9,1.3,2,14,15}},{{6},{3,-1,.6,1,.6,-1,.5,1,.5,-1,1,2.1,0,4.2,.3,6.2,655,-655,0,5.2,.5,1,25.2,5,659,-5,.4,-660,19,-13,670,-676,1,-2,20,.3,653,-6,12,-13,-2,10,-14,.5,-659,.7,77,582,-659,0,-1,2,-1,0,8,-1,1,-8,0,1,6,5.2,1,-1,0,7,6.5,2,633,17,8},{14,75,1.31,32,1.11,1365,2,18,1,14,28,2,4,2,1,13,2,5,9,68,6,1,14,10,4,8,18,13,4,10,5,1.4,31,37,69,1.4,64,27,72,33,132,111,96,110,1.3,80,1.5,7,1.5,40,2,21,2.1,4.3,20,25,7,20,5,1,4,1,32,31,1,33,1.4,33,1,2,11.4,6.3,11,190,28,15}},{{7},{3,-1,1,670,-15,-657,1,.41,2,655,1,-658,6,-6,.3,660,-659,8,-9,0,1,4.1,8,666,-7},{1573,29,151,228,264,207,205,1.5,40,2,21,2.1,4.3,20,25,7,20,5,1,5,32,31,1,33,1.4,33,1,7,1,32,1,204,28}},{{8},{11,-5,5,-8,-2,3,.7,-1,-1,1,-1,7,651,-650,624,21},{1573,29,151,228,471,250,2,21,2.1,4.3,20,32,20,5,1,37,65,283,28}},{{9},{1,7,-5,0,-1,675,12},{2452,341,57,38,65,283,28}},{{10},{1,8,-5,7,625,20},{2452,341,57,38,348,28}},{{11},{1.2,675},{2452,436,348}},{{12},{1,659,-22},{2452,436,348}},{{13},{1,2,655},{2452,436,348}},{{14},{644},{3236}},{{15},{665},{3236}},{{16},{645},{3236}},{{17},{664},{3236}},{{18},{646},{3236}},{{19},{672},{3236}},{{20},{647},{3236}},{{21},{715},{3236}},{{22},{648},{3236}},{{23},{706},{3236}},{{24},{649},{3236}},{{25},{716},{3236}},{{26},{650},{3236}},{{27},{745},{3236}},{{28},{651},{3236}}}, + {374,1.42,84,1.7,7,1.7,2,1.49,-419,.2,93,.3,164,1,.4,1,.5,1,0,2,1,-91,.6,92,0,1,-92,.6,1,2.1,.6,91,.2,-435,436,15.3,-91,.8,1,.3,1,.2,90,2,30.3,.5,23.3,.2,1,0,6.3,.9,1,.11,1.2,.5,1,.4,1.2,.2,1.3,.51,58.3,-109,.01,110,.3,7.2,-110,.01,1,2.1,.01,109,.2,-462,462,2.1,19.4,3.2,39.3,.8,108,1.3,3,.4,2,.4,4,.4,39.3,8.3,2.1,8.4,12.5,.2,2.1,4.1,2.1,-155,129,2,4,2,1.5,3}, + {80,.531,521,1.3,2,1.3,-529,.082,540,1,-8,27,2,-28,27,.2,-561,537,22,4,-28,1,0}, + {2,.893}, + {2,.541,1,.4,-1,0,2,-1,4.2,1,.3,-1,3.1,6.4,17.9,1,-1,17.51,34.31,1,-2,34.23,0,14.8,34.52,119.81,16.1,32.1,98.05,34.81,4.2,184.71,.8,14.7,2,0,32.2,31.3,232.01,17.7,100.24,.5,215.08,81.6,115.82,3.2,.2,232.43,201.5,4.2,319.66,434.611,617.94,685.4,217.221,.392,1,.7,-1,.5,1,-1,2.1,2.1,.2,1,0,4.3,3.1,-1,.12,597.3,28.3,.13,7.2,.08,49.3,434.4,.2,57.7,.3,16.7,8.4,188.5,25.21,239.6,49.01,8.4,.9,92.91,.5,69.11,8.1,16.01,509.3,77.21,2,-2,544.5,0,-1,11.3,.2,10.4,-2,54.91,130.4,114.8,24.8,.2,621.7,24.6,86.3,9.4,67.7,2,78.3,44.41,182.41,84.8,100.32,0,321.3,17.7,74.4,.3,265.3,0,-2,19.4,76.02,.701,1,.74,-1,.92,1,39.2,3.2,.59,343.4,946.4,12.3,3.1,12.6,18.1,24.21,27.51,.461,84.3,3.1,6.1,12.1,24.1,167.7,.4,268.3,500.8,514.61,.81,1,13.3,.7,-1,3.1,.91,28.3,.01,182.7,420.4,481.6} }, __refPoss = { nil, nil, - {10,1.531,1355,1.082,98,1.75,3,1.2,2.1,4.1,612,431,56,1.9}, - {10,1.531,38,78,26,262,416,204,73,26,232,1.082,242,12,389,13,106,13,1,11,274,2,1,154}, - {153,3,1,22,3.1,6.1,12.1,3,2.1,4.1,20.21,23,35.41,5,18,36.01,12.3,40.31,43.11,72.81,107.62,376,2,1,5,1.2,3,1,2,1,2,1.5,3,89,1,3,1.2,7,3,1.3,7,1,4.3,3.1,6.4,1,13.3,20.2,17.3,60,21.4,4.1,8.5,4,27.7,19.11,46.4,42.5,50.5,11.4,4,15.5,8,19.8,73.7,97.9,18.6,10.3,1.2,33.31,1.2,24,34,2,1.3,278,1.8,4.2,103,3,1.4,212.3,54,3,1,13,17,1,3,1.5,7,78.2}, + {10,1.531,1355,1.082,98,1.75,3,1.2,2.1,4.1,612,704,1.9}, + {10,1.531,38,78,26,262,416,204,73,26,232,1.082,242,12,46,343,13,64,42,13,1,11,112,199,10,162,2,1}, + {153,3,1,22,3.1,6.1,12.1,3,2.1,4.1,20.21,23,35.41,5,18,36.01,12.3,40.31,43.11,72.81,107.62,376,2,1,5,1.2,3,1,2,1,2,1.5,3,89,1,3,1.2,7,3,1.3,7,1,4.3,3.1,6.4,1,13.3,20.2,17.3,60,21.4,4.1,8.5,4,27.7,19.11,46.4,42.5,50.5,11.4,4,15.5,8,19.8,73.7,97.9,18.6,10.3,1.2,33.31,1.2,24,34,2,1.3,125,130,46,23,10,4,149,1.8,10.2,103,3,1.4,218.3,62,3,1,13,17,1,3,1.5,7,84.2}, nil }, } diff --git a/luafight/Modules/Battle/Logic/Base/Buff.lua b/luafight/Modules/Battle/Logic/Base/Buff.lua index 0bd54efe8..38fd72ddd 100644 --- a/luafight/Modules/Battle/Logic/Base/Buff.lua +++ b/luafight/Modules/Battle/Logic/Base/Buff.lua @@ -16,6 +16,7 @@ local BuffRegister = { [BuffName.Aura] = "Aura", [BuffName.Brand] = "Brand", [BuffName.Blood] = "Blood", + [BuffName.BanBlood] = "BanBlood", } @@ -254,8 +255,10 @@ function BuffManager:ClearBuff(target, func) if not buff.target:IsRealDead() then if buff.type== BuffName.Shield then buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.Shield) - elseif buff.type== BuffName.DOT or buff.type==BuffName.Control then - buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.clear) + elseif buff.type== BuffName.DOT or buff.type==BuffName.Control or buff.type==BuffName.BanBlood or buff.type==BuffName.Curse then + buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.clear) + elseif buff.type==BuffName.PropertyChange and buff.changeType and (buff.changeType==3 or buff.changeType==4 )then + buff.target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.clear) end end buff:OnEnd() diff --git a/luafight/Modules/Battle/Logic/Base/Effect.lua b/luafight/Modules/Battle/Logic/Base/Effect.lua index 0165ea396..e59d75d04 100644 --- a/luafight/Modules/Battle/Logic/Base/Effect.lua +++ b/luafight/Modules/Battle/Logic/Base/Effect.lua @@ -5,26 +5,6 @@ local max = math.max --local BattleLogic = BattleLogic --local BattleUtil = BattleUtil ---属性编号 --- local BattlePropList = { --- RoleDataName.Attack, --- RoleDataName.PhysicalDefence, --- RoleDataName.MagicDefence, --- RoleDataName.Speed, --- RoleDataName.DamageBocusFactor, --- RoleDataName.DamageReduceFactor, --- RoleDataName.Hit, --- RoleDataName.Dodge, --- RoleDataName.Crit, --- RoleDataName.CritDamageFactor, --- RoleDataName.TreatFacter, --- RoleDataName.MaxHp, --- RoleDataName.Hp, --- RoleDataName.CureFacter, --- RoleDataName.Tenacity, --- RoleDataName.InitRage, --- } - local function buffRandomAction(random, target, buff) -- 检测被动技能对技能的加成 @@ -101,7 +81,7 @@ local effectList = { local cb1 = args[2] local f2 = args[3] BattleLogic.WaitForTrigger(interval, function () - BattleUtil.RandomControl(f1, cb1, caster, target, f2) + BattleUtil.RandomControl(f1, cb1, caster, target, f2,skill) end) end, --[d]改变[a]属性[b]%,持续[c]秒 @@ -225,7 +205,9 @@ local effectList = { local dt = args[2] local f2 = args[3] BattleLogic.WaitForTrigger(interval, function () - target:AddBuff(Buff.Create(caster, BuffName.DOT, f2, 1, 0, dt, f1)) + local buff=Buff.Create(caster, BuffName.DOT, f2, 1, 0, dt, f1) + buff.skill=skill + target:AddBuff(buff) end) end, --造成[a],每秒造成[b]的[c]的伤害,持续[d]秒 @@ -392,7 +374,7 @@ local effectList = { BattleLogic.WaitForTrigger(interval, function () BattleUtil.CalDamage(skill, caster, target, dt, f1) if BattleLogic.BuffMgr:HasBuff(target, BuffName.DOT, function (buff) return dot == 0 or buff.damageType == dot end,caster,dot) then - BattleUtil.RandomControl(f1, ct, caster, target, f3) + BattleUtil.RandomControl(f1, ct, caster, target, f3,skill) end end) end, @@ -474,7 +456,9 @@ local effectList = { local d1 = args[1] local d2 = args[2] BattleLogic.WaitForTrigger(interval, function () - target:AddBuff(Buff.Create(caster, BuffName.DOT, d2, 1, 0, d1, 1)) + local buff=Buff.Create(caster, BuffName.DOT, d2, 1, 0, d1, 1) + buff.skill=skill + target:AddBuff(buff) end) end, --造成[a]%的[b]伤害,对[c]造成额外[d]%伤害 @@ -677,6 +661,7 @@ local effectList = { caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target) BattleLogic.WaitForTrigger(interval, function () local dot = Buff.Create(caster, BuffName.DOT, d2, 1, 0, d1, 1) + dot.skill=skill dot.isRealDamage = true target:AddBuff(dot) end) @@ -953,7 +938,7 @@ local effectList = { local f3 = args[4] BattleLogic.WaitForTrigger(interval, function () if BattleUtil.GetHPPencent(target) < f1 then - BattleUtil.RandomControl(f2, ct, caster, target, f3) + BattleUtil.RandomControl(f2, ct, caster, target, f3,skill) end end) end, @@ -1164,7 +1149,7 @@ local effectList = { -- 伤害 BattleUtil.CalDamage(skill, caster, target, dt, f1) -- 控制未命中则施加增伤印记 - if not BattleUtil.RandomControl(f2, 1, caster, target, f3) then + if not BattleUtil.RandomControl(f2, 1, caster, target, f3,skill) then local brand = Buff.Create(caster, BuffName.Brand, 0, "zengshang") brand.maxLayer = i1 brand.clear = false @@ -1253,6 +1238,7 @@ local effectList = { BattleUtil.CalDamage(skill, caster, target, dt, f1) local val = floor(BattleUtil.FP_Mul(caster:GetRoleData(RoleDataName.MaxHp), f2)) local dot = Buff.Create(caster, BuffName.DOT, f3, 1, 0, val, 1) + dot.skill=skill dot.isRealDamage = true target:AddBuff(dot) end) @@ -1308,7 +1294,7 @@ local effectList = { else BattleUtil.CalDamage(skill, caster, target, dt, f1) end - BattleUtil.RandomControl(f2, c1, caster, target, f4) + BattleUtil.RandomControl(f2, c1, caster, target, f4,skill) end) end) end @@ -1322,7 +1308,9 @@ local effectList = { local dt = args[4] local f2 = args[5] BattleLogic.WaitForTrigger(interval, function () - buffRandomAction(f3, target, Buff.Create(caster, BuffName.DOT, f2, 1, d1, dt, f1)) + local buff=Buff.Create(caster, BuffName.DOT, f2, 1, d1, dt, f1) + buff.skill=skill + buffRandomAction(f3, target,buff) end) end, --造成[a]%的[b]伤害,立即结算目标身上所有dot的剩余伤害。【aoe】 @@ -1408,9 +1396,9 @@ local effectList = { local arr = BattleUtil.ChooseTarget(caster, 20000) for i=1, #arr do if arr[i] == target then - BattleUtil.RandomControl(f1+f3, cb1, caster, arr[i], f2) + BattleUtil.RandomControl(f1+f3, cb1, caster, arr[i], f2,skill) else - BattleUtil.RandomControl(f1, cb1, caster, arr[i], f2) + BattleUtil.RandomControl(f1, cb1, caster, arr[i], f2,skill) end end end) @@ -1464,7 +1452,7 @@ local effectList = { end return b end) - BattleUtil.RandomControl(f1+f3*layer, ct, caster, target, f2) + BattleUtil.RandomControl(f1+f3*layer, ct, caster, target, f2,skill) end) end, --添加[a]的[b]%护盾,持续[c]秒。为自身挂护盾印记,每层额外增加护盾值[d]%,印记最多[e]层。印记不显示。(增益印记,不可驱散) @@ -1675,7 +1663,7 @@ local effectList = { end end) if hasBuff then - BattleUtil.RandomControl(f2, ct, caster, target, f3) + BattleUtil.RandomControl(f2, ct, caster, target, f3,skill) end end) end, @@ -1697,7 +1685,7 @@ local effectList = { end end) if hasBuff then - BattleUtil.RandomControl(f2, ct, caster, target, f3) + BattleUtil.RandomControl(f2, ct, caster, target, f3,skill) end end) end, @@ -1745,7 +1733,9 @@ local effectList = { local f2 = args[5] local f3 = args[6] BattleLogic.WaitForTrigger(interval, function () - buffRandomAction(f4, target, Buff.Create(caster, BuffName.DOT, f2, f2/f3, d1, dt, f1)) + local buff=Buff.Create(caster, BuffName.DOT, f2, f2/f3, d1, dt, f1) + buff.skill=skill + buffRandomAction(f4, target,buff) end) end, --造成[a]%的[b]伤害,若暴击,[g][c]%概率改变我方随机1人[d]属性[e]%,持续[f]秒。 @@ -1850,6 +1840,7 @@ local effectList = { local DOT = Buff.Create(caster, BuffName.DOT, f2, f2/f3, d1, f1, 1) DOT.clear = false DOT.isDeBuff = true + DOT.skill=skill buffRandomAction(f4, target, DOT) end) end, @@ -1891,7 +1882,7 @@ local effectList = { else BattleUtil.CalDamage(skill, caster, target, dt, f1) end - BattleUtil.RandomControl(f2, c1, caster, target, f4) + BattleUtil.RandomControl(f2, c1, caster, target, f4,skill) end) end) end @@ -2174,7 +2165,7 @@ local effectList = { caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target) BattleLogic.WaitForTrigger(interval, function () local damage = BattleUtil.ErrorCorrection(f2 * caster:GetRoleData(BattlePropList[pro])) - BattleUtil.RandomDot(f1, dot, caster, target, i1, 1, floor(damage)) + BattleUtil.RandomDot(f1, dot, caster, target, i1, 1, floor(damage),skill) end) end, @@ -2205,7 +2196,7 @@ local effectList = { BattleLogic.WaitForTrigger(interval, function () BattleUtil.CalDamage(skill, caster, target, dt, f1) if BattleLogic.BuffMgr:HasBuff(target, BuffName.DOT, function (buff) return dot == 0 or buff.damageType == dot end,caster,dot) then - BattleUtil.RandomControl(f2, ct, caster, target, f3) + BattleUtil.RandomControl(f2, ct, caster, target, f3,skill) end end) end, @@ -2315,7 +2306,7 @@ local effectList = { BattleUtil.CalDamage(skill, caster, target, dt, f1) --伤害命中才会给目标上buff if skill and skill:CheckTargetIsHit(target) then - BattleUtil.RandomControl(pro1,ctrl, caster, target,r1) + BattleUtil.RandomControl(pro1,ctrl, caster, target,r1,skill) end end) end, @@ -2460,11 +2451,13 @@ local effectList = { value=0 end if damage-value>0 then - if target.bloodShield then - target.bloodShield:AddValue(damage-value) - else - target:AddBuff(Buff.Create(caster,BuffName.Blood,0,damage-value)) - end + if not target.isBanBlood then + if target.bloodShield then + target.bloodShield:AddValue(damage-value) + else + target:AddBuff(Buff.Create(caster,BuffName.Blood,0,damage-value)) + end + end end end) @@ -2492,6 +2485,7 @@ local effectList = { end end local buff=Buff.Create(caster, BuffName.DOT,round, 1,3,damage) + buff.skill=skill buff.isRealDamage=true target:AddBuff(buff) end) diff --git a/luafight/Modules/Battle/Logic/Base/Passivity.lua b/luafight/Modules/Battle/Logic/Base/Passivity.lua index 4021db414..e04d67679 100644 --- a/luafight/Modules/Battle/Logic/Base/Passivity.lua +++ b/luafight/Modules/Battle/Logic/Base/Passivity.lua @@ -1,31 +1,6 @@ local floor = math.floor local max = math.max local min = math.min ---local RoleDataName = RoleDataName ---local BattleLogic = BattleLogic ---local BattleUtil = BattleUtil ---local BattleEventName = BattleEventName ---local BuffName = BuffName - ---属性编号 --- local BattlePropList = { --- RoleDataName.Attack, --- RoleDataName.PhysicalDefence, --- RoleDataName.MagicDefence, --- RoleDataName.Speed, --- RoleDataName.DamageBocusFactor, --- RoleDataName.DamageReduceFactor, --- RoleDataName.Hit, --- RoleDataName.Dodge, --- RoleDataName.Crit, --- RoleDataName.CritDamageFactor, --- RoleDataName.TreatFacter, --- RoleDataName.MaxHp, --- RoleDataName.Hp, --- RoleDataName.CureFacter, --- RoleDataName.Tenacity, --- RoleDataName.InitRage, --- } PassiveManager = {} PassiveManager.passiveCountList = { [0] = {}, @@ -167,17 +142,24 @@ local passivityList = { role.Event:AddEvent(BattleEventName.PassiveTreating, OnPassiveTreating,nil,nil,role) end, - --受击后,[a]的概率,回复自身的[b]*[c]的血量 - --a[float],b[属性],c[float] + --受击后,[a]的概率,回复自身的[b]*[c]的血量,伤害类型[d](1:直接伤害 0/不填:所有伤害) + --a[float],b[属性],c[float],d[int] [8] = function(role, args,id,judge) local f1 = args[1] local pro = args[2] local f2 = args[3] - + local type = args[4] local OnBeHit = function(atkRole,damage, bCrit, finalDmg, damageType,skill) + if type and not skill then + return + end BattleUtil.RandomAction(f1, function () local val = floor(BattleUtil.FP_Mul(f2, role:GetRoleData(BattlePropList[pro]))) - BattleUtil.CalTreat(role, role, val) + if pro==12 then + BattleUtil.FinalTreat(role, role, val) + else + BattleUtil.CalTreat(role, role, val) + end end) end role.Event:AddEvent(BattleEventName.RoleBeHit, OnBeHit,nil,nil,role) @@ -321,22 +303,7 @@ local passivityList = { --免疫[a]属性伤害。 --a[属性类型] [15] = function(role, args) - local pt = args[1] - local elementDamageReduceFactor - if pt == 1 then - elementDamageReduceFactor = RoleDataName.FireDamageReduceFactor - elseif pt == 2 then - elementDamageReduceFactor = RoleDataName.WindDamageReduceFactor - elseif pt == 3 then - elementDamageReduceFactor = RoleDataName.IceDamageReduceFactor - elseif pt == 4 then - elementDamageReduceFactor = RoleDataName.LandDamageReduceFactor - elseif pt == 5 then - elementDamageReduceFactor = RoleDataName.LightDamageReduceFactor - elseif pt == 6 then - elementDamageReduceFactor = RoleDataName.DarkDamageReduceFactor - end - role.data:AddValue(elementDamageReduceFactor, 10000) + -- TODO:原有老被动已无法使用 end, --发动技能后,[a]的概率将[b]*[c]算作[d]计算,持续[e]秒。 @@ -1366,7 +1333,7 @@ local passivityList = { local OnPassiveCriting = function(crit,skill) BattleUtil.RandomAction(f1, function () - crit(role:GetRoleData(RoleDataName.CritDamageFactor)+f2) + crit(role:GetRoleData(RoleDataName.CritDamageBonus)+f2) end) end role.Event:AddEvent(BattleEventName.PassiveCriting, OnPassiveCriting,nil,nil,role) @@ -2051,31 +2018,41 @@ local passivityList = { end, - -- 战斗第[a]回合造成伤害必定暴击 - -- a[int] + -- 战斗第[a]回合造成伤害必定暴击,[b]是否包含前面的回合 + -- a[int],b[int 0:不包含 1:包含] [112] = function(role, args,id,judge) local i1 = args[1] + local type = args[2] + if not type then + type=0 + end + local function onRoleDamageAfter(target) target.isFlagCrit = false - role.Event:RemoveEvent(BattleEventName.RoleDamageAfter, onRoleDamageAfter) + local curRound=BattleLogic.GetCurRound() + if curRound>i1 then + role.Event:RemoveEvent(BattleEventName.RoleDamageAfter, onRoleDamageAfter) + end end - local function onRoleDamageBefore(target, factorFunc, damageType, skill) + role.Event:AddEvent(BattleEventName.RoleDamageAfter, onRoleDamageAfter,nil,nil,role) + local function onRoleDamageBefore(critFunc,atkRole,defRole,skill) + if atkRole~=role then + return + end if not skill then return end if skill and not skill.isTriggerJudge and judge==1 then return end - --处理伏虎觉醒十星附加的额外技能,额外技能不触发这个特性 2020/11/17 wangzhenxing - if skill and skill.type== BattleSkillType.Extra and skill.owner.roleId==10015 and judge==1 then - return - end - if BattleLogic.GetCurRound() == i1 then - target.isFlagCrit = true - role.Event:AddEvent(BattleEventName.RoleDamageAfter, onRoleDamageAfter,nil,nil,role) + local curRound=BattleLogic.GetCurRound() + if (curRound== i1 and type==0) or (curRound<=i1 and type==1) then + defRole.isFlagCrit = true + else + defRole.isFlagCrit=false end end - role.Event:AddEvent(BattleEventName.RoleDamageBefore, onRoleDamageBefore,nil,nil,role) + BattleLogic.Event:AddEvent(BattleEventName.TemporaryChangeCrit, onRoleDamageBefore,nil,nil,role) end, @@ -2787,7 +2764,7 @@ local passivityList = { end,nil,nil,role) end, - -- 受到[a]状态敌人攻击时受到伤害[b]改变[c]% + -- 受到[a]状态敌人攻击时受到伤害[b]改变[c]%,伤害类型为[d] -- a[持续伤害状态]b[改变类型]c[float],d[int 1:直接伤害 ](d 不填/0不区别是否为直接伤害) [140] = function(role, args) local dot = args[1] @@ -3223,7 +3200,8 @@ local passivityList = { end counter = counter + 1 if counter <= i1 then - deadRole:SetRelive(f1) + deadRole:SetRelive(f1,role) + f1 = args[2] end end end) @@ -3248,15 +3226,22 @@ local passivityList = { role.Event:AddEvent(BattleEventName.PassiveTreatingFactor, onPassiveTreatingFactor,nil,nil,role) end, - -- 受到普攻后降低攻击自己武将的[c]点怒气 - -- c[int] + -- 受到普攻后降低攻击自己武将的[a]点怒气,攻击类型为[b](b:不填或0 为普攻 1:为技能) + -- a[int],b[int] [156] = function(role, args) local i1 = args[1] + local type = args[2] + if not type then + type=0 + end local onBeSkillCastEnd = function(skill) - --同阵营给自己普攻加血不扣除怒气 - if skill.owner.camp~=role.camp and skill.type == BattleSkillType.Normal then - BattleUtil.CalRage(role, skill.owner, i1, CountTypeName.Sub) - end + if type==0 and skill.type~=BattleSkillType.Normal then + return + end + if type==1 and skill.type~=BattleSkillType.Special and skill.type~=BattleSkillType.Extra and skill.type~=BattleSkillType.DeadSkill then + return + end + BattleUtil.CalRage(role, skill.owner, i1, CountTypeName.Sub) end role.Event:AddEvent(BattleEventName.BeSkillCastEnd, onBeSkillCastEnd,nil,nil,role) end, @@ -3769,15 +3754,28 @@ local passivityList = { end, - -- 受到[a]效果概率降低[b]%,[c]改变 - -- a[控制状态]b[float]c[改变类型] + -- 受到[a]效果概率降低[b]%,[c]改变,控制类型[d] 控制类型[e] 控制类型[f](a:0 所有控制类型) + -- a[int],b[float],c[改变类型],d[int],e[int],f[int] [180] = function(role, args) - local ctrl = args[1] + local type = args[1] local f1 = args[2] local ct = args[3] - + local ctrl = args[4] + local ctr2 = args[5] + local ctr3 = args[6] + local ctrls={} + if ctrl then + table.insert(ctrls,ctrl) + end + if ctr2 then + table.insert(ctrls,ctr2) + end + if ctr3 then + table.insert(ctrls,ctr3) + end + local onPassiveBeRandomControl = function(func, ctrl2, target) - if ctrl == 0 or ctrl == ctrl2 then + if type == 0 or BattleUtil.ChecklistIsContainValue(ctrls,ctrl2) then if func then func(f1, ct) end end end @@ -4323,7 +4321,7 @@ local passivityList = { damagingFunc(shareDamage) end -- 分担伤害 - BattleUtil.ApplyDamage(skill, atkRole, role, shareDamage,false,3,dotType,true) + BattleUtil.ApplyDamageNoPassive(skill, atkRole, role, shareDamage,false,3,dotType,true) end end BattleLogic.Event:AddEvent(BattleEventName.FinalDamage, onFinalDamage,nil,nil,role) @@ -4336,7 +4334,7 @@ local passivityList = { local i1 = args[1] local f1 = args[2] BattleUtil.CalRage(role,role,i1,CountTypeName.Add) - local function onPassiveSeckill(func) + local function onPassiveSeckill(func,defRole) local isBoss=BattleUtil.CheckIsBoss(defRole) if isBoss then return @@ -4989,10 +4987,6 @@ local passivityList = { role.Event:AddEvent(BattleEventName.PassiveDamaging, OnPassiveDamaging,nil,nil,role) end, - - - - -- 同阵营只生效一次 -- 敌方武将[c]改变[a]的[b] -- a[float],b[属性],c[改变类型] @@ -5660,11 +5654,13 @@ local passivityList = { end role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit,nil,nil,role) end, - --技能追加的普攻额外造成目标[a][b]%的伤害。 - --a[int 属性id] b[float] + --技能追加的普攻额外造成目标[a][b]%的伤害。,生命每下降[c]%,额外生命百分比加[d]%(c d 不填不增加) + --a[int 属性id] b[float],c[float],d[float] [258]=function(role,args,id,judge) local f1 = args[1] local dt = args[2] + local p1 = args[3] + local p2 = args[4] -- 直接伤害后 local onPassiveDamaging = function(func, defRole, damage,skill) if skill and not skill.isTriggerJudge and judge==1 then @@ -5675,16 +5671,21 @@ local passivityList = { if (f1==12 or f1==13) and BattleUtil.CheckIsBoss(defRole) then return end + if (f1==12 or f1==13) and p1 and p2 and p1~=0 and p2~=0 then + local levelDamage = floor(role:GetRoleData(RoleDataName.MaxHp)*p1) + local lostDamage = role:GetRoleData(RoleDataName.MaxHp) - role:GetRoleData(RoleDataName.Hp) + local level = floor(lostDamage/levelDamage) + dt=dt+(level*p2) + end local val = -floor(BattleUtil.FP_Mul(dt, defRole:GetRoleData(BattlePropList[f1]))) if f1==12 or f1==13 then - BattleUtil.FinalDamage(nil,role,defRole,-val) + BattleUtil.FinalDamageCountShield(nil,role,defRole,-val) else if func then func(val) end end - - + dt=args[2] end end role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role) @@ -5909,12 +5910,17 @@ local passivityList = { role.Event:AddEvent(BattleEventName.PassiveDamaging,passiveBeBeDamage,nil,nil,role) end, - --技能击中受到[a,控制效果]的目标,会额外降低[b]点怒气 - -- a[int 控制效果]b[int] + --技能击中受到[a,控制效果]的目标,会额外降低[b]点怒气,额外造成其[c]属性[d]%的间接伤害,控制效果的添加条件[e](e: 0 不限制 1:自身) + -- a[int 控制效果]b[int],c[int 属性],d[float],e[int] [267]=function(role,args,id,judge) local dot=args[1] local i1 = args[2] - --defRole, damage, bCrit, finalDmg, damageType, skill + local pro = args[3] + local v1 = args[4] + local limitType = args[5] + if not limitType then + limitType=0 + end local OnRoleHit = function(skill) if skill and not skill.isTriggerJudge and judge==1 then return @@ -5926,9 +5932,20 @@ local passivityList = { end local num=0 for key, value in pairs(list) do - local isHave=BattleLogic.BuffMgr:HasBuff(value, BuffName.Control, function(buff) return buff.ctrlType == dot end) + local isHave=BattleLogic.BuffMgr:HasBuff(value, BuffName.Control, function(buff) return buff.ctrlType == dot and (limitType==0 or (limitType==1 and buff.caster==role)) end) if isHave then - BattleUtil.CalRage(role, value, i1, CountTypeName.Sub) + if i1>0 then + BattleUtil.CalRage(role, value, i1, CountTypeName.Sub) + end + if pro and v1 and pro~=0 and v1~=0 then + --如果是boss 并且额外伤害是根据最大生命则返回 + local isBoss=BattleUtil.CheckIsBoss(value) + if isBoss and pro==12 then + return + end + local val = floor(BattleUtil.FP_Mul(v1, value:GetRoleData(BattlePropList[pro]))) + BattleUtil.FinalDamageCountShield(nil,role, value, val) + end end end end @@ -6167,7 +6184,7 @@ local passivityList = { end, - -- 释放技能后[a]方 [b]最高[c]阵营 友方改变[d][e]点怒气 + -- 释放技能后[a]方 [b]最高[c]阵营 友方改变[d][e]点怒气 (c 填0为所有阵营) -- a[int,敌我方] 0:我方 1:敌方,b[int 属性类型], c[int 阵营id], d[int 改变类型], e[int] [275] = function(role, args,id,judge) local camp = args[1] @@ -6183,9 +6200,9 @@ local passivityList = { if skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra then local list=nil if camp==0 then - list= RoleManager.Query(function(v) return v.camp == role.camp and v.element==ele end) + list= RoleManager.Query(function(v) return v.camp == role.camp and (ele==0 or v.element==ele) end) elseif camp==1 then - list= RoleManager.Query(function(v) return v.camp ~= role.camp and v.element==ele end) + list= RoleManager.Query(function(v) return v.camp ~= role.camp and (ele==0 or v.element==ele) end) end if not list or #list == 0 then return @@ -6270,7 +6287,7 @@ local passivityList = { end BattleLogic.Event:AddEvent(BattleEventName.ShieldBuffEnd, OnBuffEnd,nil,nil,role) end, - --发动技能后,[a]概率给我方[b]最高[c]名[d]阵营 [e]属性[f]改变[g],持续[h]回合 + --发动技能后,[a]概率给我方[b]最高[c]名[d]阵营 [e]属性[f]改变[g],持续[h]回合(d 填0为所有阵营) --a[float],b[int 属性],c[int], d[int],e[int 属性],f[int 改变类型],g[float] h[int] [279] = function(role, args,id,judge) local p1=args[1] @@ -6288,7 +6305,7 @@ local passivityList = { end if skill and (skill.type==BattleSkillType.Special or skill.type==BattleSkillType.Extra) then BattleUtil.RandomAction(p1, function () - local list= RoleManager.Query(function(v) return v.camp == role.camp and v.element==ele and not v:IsDead() end) + local list= RoleManager.Query(function(v) return v.camp == role.camp and (ele==0 or v.element==ele) and not v:IsDead() end) if not list or #list ==0 then return end @@ -6308,10 +6325,14 @@ local passivityList = { [280]=function(role,args) role.isImmuneReduceRage=true end, - --当己方[a]阵营神将释放技能怒气不足时,将从精卫身上额外转移怒气释放技能(转移的怒气首先可以保证精卫释放技能) - --a[int 阵营id] + --当己方[a]阵营神将释放技能怒气不足时,将从精卫身上额外转移怒气释放技能,精卫转移有[b]%的概率不减怒 (转移的怒气首先可以保证精卫释放技能) + --a[int 阵营id],b[flaot] [281]=function(role,args) local ele=args[1] + local pro=args[2] + if not pro then + pro=0 + end local onRoleCastSkillBrfore=function(caster) -- 施法者不是自身/自身不足已释放技能/不是己方英雄/不是a 阵营 if caster==role or role.Rage <= role.SuperSkillRage or caster.camp~=role.camp or caster.element~=role.element then @@ -6326,7 +6347,9 @@ local passivityList = { local num=moreRage-lessRage if num>=0 then --精卫转移怒气不算减怒 - role.Rage=role.Rage-lessRage + BattleUtil.RandomAction(1-pro,function() + role.Rage=role.Rage-lessRage + end) BattleUtil.CalRage(role,caster,lessRage,CountTypeName.Add,true) -- 用于记录统计 BattleLogic.Event:DispatchEvent(BattleEventName.RecordTransRage, role, caster, lessRage) @@ -6367,8 +6390,8 @@ local passivityList = { end BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, OnRoundChange,nil,nil,role) end, - --释放技能后,额外[a]改变[b]方怒气最少的[c]阵营目标[d]点怒气,目标人数[e](e 不填默认为 1人 填10为敌方燃烧数 ) - --a[int 改变类型],b[int 0:己方 1:敌方],c[int],d[int],e[int] + --释放技能后,额外[a]改变[b]方怒气最少的[c]阵营目标[d]点怒气,目标人数[e](e 不填默认为 1人 填10为敌方燃烧数)属性[f]改变[g][h]% 持续[i]回合;属性[j]改变[k][l]% 持续[m]回合 + --a[int 改变类型],b[int 0:己方 1:敌方],c[int],d[int],e[int],f[int], g[int],h[float],i[int],j[int]k[int],l[float],m[int] [283]=function(role,args,id,judge) local ct=args[1] local camp=args[2] @@ -6378,7 +6401,14 @@ local passivityList = { if not num then num=1 end - + local p1=args[6] + local ct1=args[7] + local f1=args[8] + local r1=args[9] + local p2=args[10] + local ct2=args[11] + local f2=args[12] + local r2=args[13] local onSkillCastEnd=function(skill) local fireNum=0 if skill and not skill.isTriggerJudge and judge==1 then @@ -6412,6 +6442,12 @@ local passivityList = { for i = 1, #list do if i<=num then BattleUtil.CalRage(role, list[i], v1, ct) + if p1 and ct1 and f1 and r1 then + list[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, r1, BattlePropList[p1], f1,ct1)) + end + if p2 and ct2 and f2 and r2 then + list[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, r2, BattlePropList[p2], f2,ct2)) + end end end end @@ -6462,31 +6498,51 @@ local passivityList = { return end if skill and skill.type == BattleSkillType.Normal and skill.isAdd and skill.owner==role then - dt=BattleUtil.CountValue(dt,v1*num,1) - local val = -floor(BattleUtil.FP_Mul(dt, defRole:GetRoleData(BattlePropList[f1]))) - if func then - func(val) - end + local aaa=BattleUtil.CountValue(dt,v1*num,1) + local val = floor(BattleUtil.FP_Mul(aaa, defRole:GetRoleData(BattlePropList[f1]))) + BattleUtil.FinalDamageCountShield(skill,role,defRole,val) end end role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role) - --记录技能混乱敌人的数量 - local OnRoleHit = function(skill) - if skill and skill.owner==role and skill.type==BattleSkillType.Special then - local list=skill:GetDirectTargetsNoMiss() - if not list then - num=0 + + + local onBuffAdd=function(buff) + if not buff or buff.caster~=role then return - end - for key, value in pairs(list) do - local isHave=BattleLogic.BuffMgr:HasBuff(value, BuffName.Control, function(buff) return buff.ctrlType == ctrl and buff.caster==role and buff.startRound == BattleLogic.GetCurRound() end) - if isHave then - num=num+1 end - end - end - end - role.Event:AddEvent(BattleEventName.SkillCastEnd, OnRoleHit,nil,nil,role) + if buff.type~=BuffName.Control or buff.ctrlType~=ctrl then + return + end + num=num+1 + end + local OnSkillCast=function(skill) + if not skill then + return + end + if skill and not skill.isTriggerJudge and judge==1 then + return + end + --技能释放前清除上一次技能记录的个数 + if skill.type==BattleSkillType.Special then + num=0 + role.Event:AddEvent(BattleEventName.BuffCaster,onBuffAdd,nil,nil,role) + end + end + role.Event:AddEvent(BattleEventName.SkillCast,OnSkillCast,nil,nil,role) + + local OnSkillCastEnd=function(skill) + if not skill then + return + end + if skill and not skill.isTriggerJudge and judge==1 then + return + end + + if skill.type==BattleSkillType.Special then + role.Event:RemoveEvent(BattleEventName.BuffCaster,onBuffAdd,nil,nil,role) + end + end + role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role) end, --必定暴击 @@ -7033,11 +7089,15 @@ local passivityList = { end role.Event:AddEvent(BattleEventName.BuffCaster, OnBuffCaster,nil,nil,role) end, - -- 受到技能伤害时,会为血量属性最低的神将额外回复自身[a]%的[b] - -- 回复a[float] b[int 属性id] + -- 受到技能伤害时,会为血量属性最低的神将额外回复自身[a]%的[b],神将数据量为[c]名 + -- 回复a[float] b[int 属性id],c[int] [307] = function(role, args) local f1 = args[1] local pro=args[2] + local num = args[3] + if num==nil then + num=1 + end local onBeSkillHit = function(caster, damage, bCrit, finalDmg, damageType, skill) --如果角色死亡就不会触发 if role:IsDead() then @@ -7046,12 +7106,14 @@ local passivityList = { if skill and (skill.type==BattleSkillType.Special or skill.type== BattleSkillType.Extra or skill.type== BattleSkillType.DeadSkill) then --技能造成的直接伤害 local list = RoleManager.NoOrder(function(v) return v.camp == role.camp end) BattleUtil.SortByHpFactor(list, 1) - if list[1] then - local val = floor(BattleUtil.FP_Mul(f1, list[1]:GetRoleData(BattlePropList[pro]))) - if pro==12 then - BattleUtil.FinalTreat(role, list[1], val) - else - BattleUtil.CalTreat(role, list[1], val) + for i = 1, #list do + if i<=num then + local val = floor(BattleUtil.FP_Mul(f1, list[i]:GetRoleData(BattlePropList[pro]))) + if pro==12 then + BattleUtil.FinalTreat(role, list[i], val) + else + BattleUtil.CalTreat(role, list[i], val) + end end end end @@ -7152,6 +7214,9 @@ local passivityList = { -- return -- end -- LogYellow("310 1 "..target.position) + if role:IsDead() then + return + end if target:IsDead() then local list = RoleManager.GetNeighbor(target, 1) if list then @@ -7160,7 +7225,7 @@ local passivityList = { -- LogYellow("310 2 周围的目标造成[a]%的[b]属性伤害 value:"..value.position) local val = floor(BattleUtil.FP_Mul(f1, role:GetRoleData(BattlePropList[pro]))) -- LogYellow("310 end pro: "..pro.." val: "..val) - BattleUtil.FinalDamage(nil,role, value, val) + BattleUtil.FinalDamageCountShield(nil,role, value, val) end end end @@ -7518,14 +7583,19 @@ local passivityList = { role.Event:AddEvent(BattleEventName.SkillCastEnd,onSkillCastEnd,nil,nil,role) end, - --[a]攻击时,如果目标处于持续伤害[b]状态,则有[c]%的概率使目标[d][e]回合 - --a[int 攻击类型 1:普攻 4:死亡技能] + --[a]攻击时,如果目标处于持续伤害[b]状态,则有[c]%的概率使目标[d][e]回合,触发条件[f](f: 0/不填 灼烧目标, 1:没有条件) + --a[int 攻击类型 1:普攻 4:死亡技能],b[int],c[flaot],d[int],e[int],f[int] [323]=function(role,args,id,judge) local st = args[1] local dt = args[2] local p1 = args[3] local ct = args[4] local round=args[5] + local type=args[6] + if not type then + type=0 + end + local ctrs={} local onRoleBeDamage=function (defRole, atkRole, damage, bCrit, finalDmg, damageType, dotType, skill) if atkRole and atkRole~=role then return @@ -7536,11 +7606,25 @@ local passivityList = { if skill and not skill.isTriggerJudge and judge==1 then return end - if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT, function(buff) return buff.damageType == dt end,role,dt) then - BattleUtil.RandomControl(p1,ct,role,defRole,round) - end + local isTrigger=false + if type==0 then + if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT, function(buff) return buff.damageType == dt end,role,dt) then + isTrigger=true + end + elseif type==1 then + isTrigger=true + end + + if isTrigger and not ctrs[defRole.position] then + BattleUtil.RandomControl(p1,ct,role,defRole,round) + ctrs[defRole.position]=1 + end end BattleLogic.Event:AddEvent(BattleEventName.RoleBeDamaged,onRoleBeDamage,nil,nil,role) + local onSkillCastEnd=function() + ctrs={} + end + role.Event:AddEvent(BattleEventName.SkillCastEnd,onSkillCastEnd,nil,nil,role) end, --释放技能怒气不足时,损失自身([a]-我方活着的[b]系神将数)%生命*不足怒气数 后释放技能 --a[int],b[int] @@ -7665,7 +7749,7 @@ local passivityList = { return end BattleUtil.RandomAction(p1, function () - deadRole:SetRelive(p2) + deadRole:SetRelive(p2,role) BattleUtil.CalRage(role, role,num,CountTypeName.Add) end) end @@ -7993,12 +8077,8 @@ local passivityList = { end local rDamage =floor(f1 * damage) - if role.bloodShield then - role.bloodShield:AddValue(rDamage) - else - role:AddBuff(Buff.Create(role, BuffName.Blood,0, rDamage)) - end - + BattleUtil.AddBlood(role,rDamage) + end role.Event:AddEvent(BattleEventName.RoleBeHit, onBeHit,nil,nil,role) end, @@ -8348,11 +8428,8 @@ local passivityList = { local onRoundChange=function(curRound) local val = floor(BattleUtil.FP_Mul(v1, role:GetRoleData(BattlePropList[pro]))) --如果身上有御甲就添加御甲的值 - if role.bloodShield then - role.bloodShield:AddValue(val) - else--没有就上御甲buff - role:AddBuff(Buff.Create(role, BuffName.Blood,0, val)) - end + BattleUtil.AddBlood(role,val) + end role.Event:AddEvent(BattleEventName.RoleTurnStart, onRoundChange,nil,nil,role) end, @@ -8449,12 +8526,8 @@ local passivityList = { end local val = floor(BattleUtil.FP_Mul(v1, role:GetRoleData(BattlePropList[pro]))) --如果身上有御甲就添加御甲的值 - if role.bloodShield then - role.bloodShield:AddValue(val) - else--没有就上御甲buff - role:AddBuff(Buff.Create(role, BuffName.Blood,0, val)) - end - time=time+1 + BattleUtil.AddBlood(role,val) + time=time+1 end BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart,onRoundStart,nil,nil,role) end, @@ -8468,10 +8541,14 @@ local passivityList = { local v1 = args[4] local round = args[5] + local isTrigger=false local onSkillCast = function(skill) if not skill then return end + if isTrigger then + return + end local r=BattleLogic.GetCurRound() if r%2~=type then return @@ -8486,9 +8563,1181 @@ local passivityList = { for _, r in pairs(list) do r:AddBuff(Buff.Create(role, BuffName.PropertyChange, round, BattlePropList[pro],v1, ct)) end + isTrigger=true end end role.Event:AddEvent(BattleEventName.SkillCastBefore,onSkillCast,nil,nil,role) + + + local function onRoundChange() + isTrigger=false + end + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange,onRoundChange,nil,nil,role) + end, + -- 修改技能id:[a] 技能类型:[b]的参数,第[c]个参数改变为[d],第[e]个参数改变为[f] + -- a[int 技能的id],b[int 技能的type类型],c[int],d[float/int],e[int],f[int/float] + [356] = function(role, args,id,judge) + local id = args[1] + local type = args[2] + local i1 = args[3] + local v1 = args[4] + local i2 = args[5] + local v2 = args[6] + local onSkillEffectBefore = function(skill, e, func) + if skill.type == BattleSkillType.Special then + if skill.id == id and e.type == type then + if e.args[i1] then + e.args[i1] = v1 + end + if e.args[i2] then + e.args[i2] = v2 + end + if func then func(e) end + end + end + end + role.Event:AddEvent(BattleEventName.SkillEffectBefore, onSkillEffectBefore,nil,nil,role) + end, + --为目标添加[a]类型[b]效果成功,[c]改变目标[d]点怒气 + --a[int],b[int],c[int 改变类型]d[int] + [357] = function(role,args,id,judge) + local type = args[1] + local type2 = args[2] + local ct = args[3] + local v1 = args[4] + local OnBuffBeAdd=function(buff) + if buff.type~=type then + return + end + + if type==BuffName.DOT then + if buff.damageType~=type2 then + return + end + end + BattleUtil.CalRage(role,buff.target,v1,ct) + end + role.Event:AddEvent(BattleEventName.BuffCaster,OnBuffBeAdd,nil,nil,role) + end, + -- 攻击[a]类型[b]效果目标时,暴击伤害改变[c][d]%,攻击类型[e] + -- a[int buff大类型],b[int buff小类型],c[改变类型],d[float],e[int 0:所有 1:普攻 2:技能] + [358] = function(role, args,id,judge) + local type1 = args[1] + local type2 = args[2] + local ct = args[3] + local v1 = args[4] + local skillType = args[5] + local onPassiveDamaging = function(damagingFunc, defRole, damage,skill,dotType,bCrit) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if not bCrit then + return + end + if BattleLogic.BuffMgr:HasBuff(defRole, type1, function(buff) return buff.damageType == type2 end,role,type2) then + if damagingFunc then + local dd = BattleUtil.CountValue(damage,v1, ct) - damage + damagingFunc(-floor(BattleUtil.ErrorCorrection(dd))) + end + end + end + role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role) + end, + --释放技能消耗怒气超过[a]点,对目标额外造成目标[b]属性[c]%*(本次技能消耗怒气数-a)的间接伤害。 + --a[int],b[int],c[float] + [359] = function(role, args,id,judge) + local num = args[1] + local pro = args[2] + local v1 = args[3] + + local OnRoleCrit = function(defRole, damage, bCrit, finalDmg, damageType, dotType, skill) + if not skill then + return + end + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type~=BattleSkillType.Special then + return + end + if skill.costRage<=num then + return + end + --如果是boss 并且额外伤害是根据最大生命则返回 + local isBoss=BattleUtil.CheckIsBoss(defRole) + if isBoss then + return + end + + local ar1 = floor(BattleUtil.FP_Mul(defRole:GetRoleData(BattlePropList[pro]),v1,skill.costRage-num)) + BattleUtil.FinalDamageCountShield(nil, role, defRole, ar1) + end + + role.Event:AddEvent(BattleEventName.RoleDamage, OnRoleCrit,nil,nil,role) + end, + -- 己方[a]阵营神将(除[b]职业神将外)释放技能(除追击技能),有[c]%概率追加一次普攻,每回合最多触发[d]次 + -- a[int 阵营id],b[int job id],c[float],d[int] + [360] = function(role, args,id,judge) + local camp = args[1] + local job = args[2] + local v1 = args[3] + local num = args[4] + + local time=0 + -- 释放技能后 + local onSkillEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.owner==role then + return + end + if time==num then + return + end + if skill.owner.camp~=role.camp then + return + end + if skill.owner.element~=camp then + return + end + if skill.owner.job==job then + return + end + if (skill.type == BattleSkillType.Special or skill.type == BattleSkillType.Extra ) and not skill.isAdd then + BattleUtil.RandomAction(v1, function () + role:AddSkill(BattleSkillType.Normal, false, true, nil) + time=time+1 + end) + end + end + BattleLogic.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role) + + local function onRoundChange() + time=0 + end + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange,onRoundChange,nil,nil,role) + end, + -- 释放技能后[a]%概率再次释放技能,伤害为初始技能伤害[b]%,释放次数每增加1,概率是之前的[c]% + -- a[float],b[float],c[float] + [361] = function(role, args,id,judge) + local p1 = args[1] + local p2 = args[2] + local p3 = args[3] + + local pro=p1 + local triggerTime=0 + + local onSkillEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type~=BattleSkillType.Special then + return + end + pro=p1*(p3^triggerTime) + local isRand=BattleUtil.RandomAction(pro,function() + triggerTime=triggerTime+1 + role:AddSkill(BattleSkillType.Special, false, false, nil) + end) + --连击中断,概率和次数回调 + if not isRand then + pro=p1 + triggerTime=0 + end + end + role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role) + + local OnPassiveDamaging = function(damagingFunc, defRole, damage) + if triggerTime==0 then + return + end + local dd = BattleUtil.CountValue(damage,p2, CountTypeName.SubPencent) - damage + damagingFunc(-floor(dd)) + end + + role.Event:AddEvent(BattleEventName.PassiveDamaging, OnPassiveDamaging,nil,nil,role) + end, + --处于[a]类型[b]效果的目标,获得御甲时得效果改变[c][d]%,[e](e 1:自身释放),改变概率[f](f不填为100%,a填0:为没有buff限制) + --a[int buff类型],b[int 具体类型],c[int 改变类型],d[float],e[int],f[float] + [362]=function(role, args,id,judge) + local type1 = args[1] + local type2 = args[2] + local ct = args[3] + local v1 = args[4] + local type3 = args[5] + local p1 = args[6] + if not p1 then + p1=1 + end + local onPassiveBlood=function(func,trigger,caster,value) + if not func then + return + end + local isPlay=false + + if type1== BuffName.DOT then + if BattleLogic.BuffMgr:HasBuff(trigger, type1, function(buff) return buff.damageType == type2 and buff.caster==role end,role,type2) then + isPlay=true + end + elseif type1== BuffName.HOT then + if BattleLogic.BuffMgr:HasBuff(trigger, type1, nil) then + isPlay=true + end + elseif type1==0 then + isPlay=true + end + if isPlay and func then + BattleUtil.RandomAction(p1,function() + local dd = BattleUtil.CountValue(value,v1, ct) - value + func(floor(BattleUtil.ErrorCorrection(dd))) + end) + end + end + BattleLogic.Event:AddEvent(BattleEventName.BloodValuePassiveChange,onPassiveBlood,nil,nil,role) + end, + --改变被动效果数据 被动id[a] 第[b]个参数值变成[c]; 第[d]个参数值变成[e](参数可变,但必须简直对应) + --a[int 被动id], b[int],c[int/float],d[int],e[int/float],,,,,,, + [363]=function(role, args,id,judge) + --用于被动初始化时替换被动数值 + end, + -- 释放技能后给目标增加自身[a][b]%的御甲 + -- a[属性]b[float]c[int] + [364] = function(role, args,id,judge) + local pro = args[1] + local f1 = args[2] + local i1 = args[3] + -- 技能后后 + local onSkillEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type == BattleSkillType.Special then + local list = skill:GetDirectTargetsNoNoDead() + if list then + local tv = floor(BattleUtil.ErrorCorrection(role:GetRoleData(BattlePropList[pro]) * f1)) + for _, r in ipairs(list) do + BattleUtil.AddBlood(r,tv) + end + end + end + end + role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role) + end, + -- 释放死亡技能,降低目标[a] 改变[b][c]点怒气 + -- a[int 目标选择逻辑数字],b[int 改变类型],c[int] + [365] = function(role, args,id,judge) + local targetsNum = args[1] + local ct = args[2] + local num = args[3] + -- 技能后后 + local onSkillEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type == BattleSkillType.DeadSkill then + local arr = BattleUtil.ChooseTarget(role,targetsNum) + for i=1, #arr do + BattleUtil.CalRage(role,arr[i],num,ct) + end + end + end + role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role) + end, + -- 复活己方神将,降低目标[a] 改变[b][c]点怒气 + -- a[int 目标选择逻辑数字],b[int 改变类型],c[int] + [366] = function(role, args,id,judge) + local targetsNum = args[1] + local ct = args[2] + local num = args[3] + -- 技能后后 + local onSkillEnd = function(target) + local arr = BattleUtil.ChooseTarget(role,targetsNum) + for i=1, #arr do + BattleUtil.CalRage(role,arr[i],num,ct) + end + end + role.Event:AddEvent(BattleEventName.ReliveRole, onSkillEnd,nil,nil,role) + + end, + + -- 受到的伤害[a]改变[b]%,伤害类型[c] + -- a[改变类型]c[float],c[int 0:所有伤害 1:直接伤害 ] + [367] = function(role, args,id,judge) + local ct = args[1] + local f1 = args[2] + local type = args[3] + local onPassiveBeDamaging = function(func, caster, damage,skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + + if type==1 and not skill then + return + end + + local dmgDeduction = damage - floor(BattleUtil.ErrorCorrection(BattleUtil.CountValue(damage, f1, ct))) + if func then func(dmgDeduction) end + end + role.Event:AddEvent(BattleEventName.PassiveBeDamaging, onPassiveBeDamaging,nil,nil,role) + end, + --主动治疗己方神将时,溢出的治疗会*[a]后继续治疗生命百分比最[b]的1名单位 + --a[float],b[int 1:低 2 高] + [368] = function(role, args,id,judge) + local count = args[1] + local type = args[2] + local addHp=0 + + + local onRoleTreat=function(target,realTreat,treat) + local hp=treat- realTreat + if hp>0 then + addHp=addHp+hp*count + end + end + local OnSkillCast = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + + role.Event:AddEvent(BattleEventName.RoleTreat, onRoleTreat,nil,nil,role) + + end + local OnSkillCastEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + role.Event:RemoveEvent(BattleEventName.RoleTreat,onRoleTreat,nil,nil,role) + local list = skill:GetDirectTargetsNoNoDead() + if list and #list>0 then + BattleUtil.SortByHpFactor(list,type) + BattleUtil.FinalTreat(role,list[1],floor(addHp)) + end + addHp=0 + end + role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast,nil,nil,role) + role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role) + end, + + --主动治疗己方神将时,治疗如果溢出使目标[a] 改变[b][c]%,持续[d]回合;叠加伤害为[e]% + --a[int],b[int 改变类型],c[float],d[int],e[float] + [369] = function(role, args,id,judge) + local pro = args[1] + local ct = args[2] + local v1 = args[3] + local round = args[4] + local v2 = args[5] + --存储每个人buff添加数值 + local addHeros={} + local onRoleTreat=function(target,realTreat,treat) + local hp=treat- realTreat + if addHeros[target] and addHeros[target]+v1>v2 then + return + end + if addHeros[target] then + addHeros[target]=addHeros[target]+v1 + else + addHeros[target]=v1 + end + if hp>0 then + target:AddBuff(Buff.Create(role, BuffName.PropertyChange, round, BattlePropList[pro],v1, ct)) + end + end + local OnSkillCast = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + + role.Event:AddEvent(BattleEventName.RoleTreat, onRoleTreat,nil,nil,role) + + end + local OnSkillCastEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + role.Event:RemoveEvent(BattleEventName.RoleTreat,onRoleTreat,nil,nil,role) + end + role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast,nil,nil,role) + role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role) + end, + + -- [a]方处于[b]类型[c]状态敌人受到的直接伤害[d]改变[e]% + -- a[int 0:己方 1:敌方],b[int buff类型],c[int buff效果 (0 表示类型下的的所有)], d[int],e[float] + [370] = function(role, args,id,judge) + local camp = args[1] + local type1 = args[2] + local type2 = args[3] + local ct = args[4] + local v1 = args[5] + local onPassiveBeDamaging = function(func, atkRole, defRole, damage, skill) + if not skill then + return + end + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if camp==0 and defRole.camp~=role.camp then + return + end + + if camp==1 and defRole.camp==role.camp then + return + end + + if BattleLogic.BuffMgr:HasBuff(defRole, type1, function(buff) return buff.hotType == type2 or type2==0 end) then + local dmgDeduction = damage - floor(BattleUtil.ErrorCorrection(BattleUtil.CountValue(damage,v1, ct))) + if func then func(dmgDeduction) end + end + end + BattleLogic.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveBeDamaging,nil,nil,role) + end, + + --释放技能时,为目标增加[a] 改变[b][c]%的效果,持续[d]回合 + --a[int 属性],b[int 改变类型],c[flaot],d[int] + [371]=function(role, args,id,judge) + local pro = args[1] + local ct = args[2] + local v1 = args[3] + local r1 = args[4] + local OnSkillCast = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if not skill then + return + end + + if skill.type~= BattleSkillType.Special and skill.type~= BattleSkillType.Extra then + return + end + local arr=skill:GetDirectTargetsNoExile() + for i = 1, #arr do + arr[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange,r1, BattlePropList[pro], v1, ct)) + end + + end + + role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast,nil,nil,role) + end, + --释放技能后有[a]%/[b]%/[c]%概率为[d]方属性[e]最[f]的目标改变[g] [h]/[i]/[j]点怒气 + --a[float],b[float],c[float],d[int 0:我方 1:敌方],e[int ],f[int 1:低 0:高],g[int 改变类型],h[int],i[int],j[int] + [372]=function(role, args,id,judge) + local p1=args[1] + local p2=args[2] + local p3=args[3] + local camp=args[4] + local pro=args[5] + local sort=args[6] + local ct=args[7] + local v1=args[8] + local v2=args[9] + local v3=args[10] + local onSkillCast=function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if not skill then + return + end + if skill.type~=BattleSkillType.Special then + return + end + local seed=Random.Range01() + local addNum=0 + if p3 and seed<=p3 and v3 then + addNum=v3 + end + if addNum==0 and p2 and v2 and seed<=p2 then + addNum=v2 + end + if addNum==0 and p1 and v1 then + addNum=v1 + end + local list=nil + if camp==0 then + list= RoleManager.Query(function(v) return v.camp == role.camp end) + elseif camp==1 then + list= RoleManager.Query(function(v) return v.camp ~= role.camp end) + end + if not list or #list == 0 then + return + end + list = BattleUtil.SortByProp(list, BattlePropList[pro],sort) + BattleUtil.CalRage(role,list[1],addNum,ct) + end + role.Event:AddEvent(BattleEventName.SkillCastEnd,onSkillCast,nil,nil,role) + end, + --己方神将被动附加[a]效果,有[b]%概率立即为其清除,每回合最多生效[c]次,单场战斗最多[d]次;具体效果类型为[e],[f],[g],[h] + --a[int],b[float],c[int],d[int],e[int],f[int],g[int],h[int] + [373]=function(role, args,id,judge) + local type=args[1] + local pro=args[2] + local num=args[3] + local maxNum=args[4] + local v1=args[5] + local v2=args[6] + local v3=args[7] + local v4=args[8] + local ctrls={} + local maxTime=0 + local roundTime=0 + if v1 then + table.insert(ctrls,v1) + end + if v2 then + table.insert(ctrls,v2) + end + if v3 then + table.insert(ctrls,v3) + end + if v4 then + table.insert(ctrls,v4) + end + + local onBuffRecord=function(buff) + if maxTime==maxNum then + return + end + if roundTime==num then + return + end + if buff.caster.camp==role.camp then + return + end + if buff.type~=type then + return + end + local isCon=false + if type==BuffName.Control then + isCon=BattleUtil.ChecklistIsContainValue(ctrls,buff.ctrlType) + end + if isCon then + BattleUtil.RandomAction(pro,function() + --LogError("111111111") + BattleLogic.BuffMgr:ClearBuff(buff.target,function(buff1) + return buff1==buff + end) + roundTime=roundTime+1 + maxTime=maxTime+1 + end) + end + end + BattleLogic.Event:AddEvent(BattleEventName.BuffStart,onBuffRecord,nil,nil,role) + + local onRoundChange=function() + roundTime=0 + end + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart,onRoundChange,nil,nil,role) + end, + --技能伤害的[a]%转化为御甲 + --a[float] + [374]=function(role, args,id,judge) + local f1 = args[1] + + local allDamage = 0 + local OnHit = function(atkRole, damage, bCrit, finalDmg, damageType, skill) + if skill and skill.type == BattleSkillType.Special then + --吸血修改,finaldag 改成 damage by:王振兴 2020/08/17 + allDamage = allDamage + damage + end + end + local function onSkillCast(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type == BattleSkillType.Special then + allDamage = 0 + role.Event:AddEvent(BattleEventName.RoleHit, OnHit,nil,nil,role) + end + end + local function onSkillCastEnd(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type == BattleSkillType.Special then + role.Event:RemoveEvent(BattleEventName.RoleHit, OnHit) + local value=floor(BattleUtil.ErrorCorrection(allDamage*f1)) + BattleUtil.AddBlood(role,value) + -- 清空伤害记录 + allDamage = 0 + end + end + role.Event:AddEvent(BattleEventName.SkillCast, onSkillCast,nil,nil,role) + role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillCastEnd,nil,nil,role) + end, + --御甲破除时,对攻击者反弹其[a]属性[b]%的伤害 + --a[int],b[float] + [375]=function(role, args,id,judge) + local p1 = args[1] + local v1 = args[2] + local onValueChange=function(pro,caster) + if pro==0 and caster then + --如果是boss 并且额外伤害是根据最大生命则返回 + local isBoss=BattleUtil.CheckIsBoss(caster) + if isBoss and p1==12 then + return + end + local tv = floor(BattleUtil.ErrorCorrection(caster:GetRoleData(BattlePropList[p1]) * v1)) + BattleUtil.FinalDamageCountShield(nil,role,caster,tv) + end + end + role.Event:AddEvent(BattleEventName.BloodValueChange,onValueChange,nil,nil,role) + end, + --自身生命[a]次低于[b]%时,为[c]目标改变[d][e]属性[f]%的效果,持续[g]回合 + --a[int],b[flaot],c[int 查找目标系数],d[int 改变类型],e[int 属性id],f[flaot],g[int] + [376]=function(role, args,id,judge) + local time=args[1] + local pro=args[2] + local targets=args[3] + local ct = args[4] + local p1 = args[5] + local v1 = args[6] + local round = args[7] + + local triggerTime= 0 + local onBeDanage=function() + if triggerTime==time then + return + end + local hp=BattleUtil.GetHPPencent(role) + if hp>=pro or hp==0 then + return + end + local arr = BattleUtil.ChooseTarget(role,targets) + for i=1, #arr do + arr[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange, round, BattlePropList[p1],v1, ct)) + end + triggerTime=triggerTime+1 + end + role.Event:AddEvent(BattleEventName.RoleBeDamaged,onBeDanage,nil,nil,role) + end, + --释放技能时,同时给[a]目标增加减伤[b]%的减伤盾,持续[c]回合。 + --a[int 技能目标参数],b[float],c[int] + [377]=function(role, args,id,judge) + local targets=args[1] + local pro = args[2] + local v1 = args[3] + local onSkillCast=function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if not skill then + return + end + local cl = {} + local arr = BattleUtil.ChooseTarget(role,targets) + if not arr or #arr==0 then + return + end + if arr[1].position<=3 then + return + end + local front=RoleManager.Query(function(v) return role.camp == v.camp and v.position<=3 end) + if not front or #front==0 then + return + end + local function _CallBack(v, ct) + if v then + table.insert(cl, {v, ct}) + end + end + + role.Event:DispatchEvent(BattleEventName.PassiveShield, _CallBack, ShieldTypeName.RateReduce) + arr[1].Event:DispatchEvent(BattleEventName.PassiveBeShield, _CallBack, ShieldTypeName.RateReduce) + pro = BattleUtil.CountChangeList(pro, cl) + + arr[1]:AddBuff(Buff.Create(role, BuffName.Shield, v1, ShieldTypeName.RateReduce,pro, 0)) + end + role.Event:AddEvent(BattleEventName.SkillCastEnd,onSkillCast,nil,nil,role) + end, + --释放技能时,如对方位处于[a]类型[b]效果,则该次攻击[c]%概率附加[d]类型[e]效果(每回合对目标造成自身[f]属性[g]%的伤害,持续[h]回合) + --a[int],b[int],c[float],d[int],e[int],f[int],g[float],h[int] + [378]=function(role, args,id,judge) + local t1=args[1] + local t2=args[2] + local pro=args[3] + local t3=args[4] + local t4=args[5] + local p1=args[6] + local v1=args[7] + local round=args[8] + + local onRoleHit=function(defRole, damage, bCrit, finalDmg, damageType, skill) + if not skill or skill.type~=BattleSkillType.Special then + return + end + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if not BattleLogic.BuffMgr:HasBuff(defRole, t1, function (buff) return buff.type== t1 and buff.damageType==t2 end,role,1) then + local damage = BattleUtil.ErrorCorrection(v1 * role:GetRoleData(BattlePropList[p1])) + BattleUtil.RandomDot(pro,t4, role, defRole,round, 1, floor(damage)) + end + end + role.Event:AddEvent(BattleEventName.RoleHit,onRoleHit,nil,nil,role) + end, + --受到处于[a][b]效果的目标的[c]类型攻击,则有[d]%的概率使目标[e][f][g]回合(c: 1:技能攻击) + --a[int],b[int],c[int],d[float],e[int],f[int],g[int] + [379]=function(role,args,id,judge) + local t1 = args[1] + local t2 = args[2] + local t3 = args[3] + local pro = args[4] + local t4=args[5] + local t5=args[6] + local round=args[7] + + local onRoleBeDamage=function (atkRole, damage, bCrit, finalDmg, damageType, dotType, skill) + if atkRole and atkRole.camp==role.camp then + return + end + if not skill or skill.type==BattleSkillType.Monster then + return + end + if skill.type~=BattleSkillType.Special and skill.type~=BattleSkillType.Extra then + return + end + + local isTrigger=false + if BattleLogic.BuffMgr:HasBuff(atkRole, t1, function(buff) return buff.damageType == t2 end,role,t2) then + isTrigger=true + end + if isTrigger then + if t4==BuffName.Control then + BattleUtil.RandomControl(pro,t5,role,atkRole,round) + end + end + end + role.Event:AddEvent(BattleEventName.RoleBeDamaged,onRoleBeDamage,nil,nil,role) + end, + + -- 死亡时[a]%斩杀生命低于[b]%,且处于[c]类型[d]效果的敌人 + -- a[float],b[float],c[int],d[int] + [380] = function(role, args,id,judge) + local f1 = args[1] + local p1 = args[2] + local t1 = args[3] + local t2 = args[4] + local onRoleDead = function() + local list = RoleManager.Query(function(v) return v.camp ~= role.camp end) + BattleUtil.RandomAction(f1,function() + for i = 1, #list do + if BattleLogic.BuffMgr:HasBuff(list[i], t1, function (buff) return buff.damageType==t2 end) then + local isBoss=BattleUtil.CheckIsBoss(list[i]) + if not isBoss then + + local ft = list[i]:GetRoleData(RoleDataName.Hp)/list[i]:GetRoleData(RoleDataName.MaxHp) + if ft < p1 then + -- 秒杀 + BattleUtil.Seckill(nil, role,list[i]) + end + end + end + end + end) + + end + role.Event:AddEvent(BattleEventName.RoleDead, onRoleDead,nil,nil,role) + end, + --被自身添加[a]类型[b]效果的目标,己方[c]系神将对其暴击率改变[d][e]%,且暴击必定命中 + --a[int],b[int],c[int],d[int],e[float] + [381]=function(role, args,id,judge) + local t1 = args[1] + local t2 = args[2] + local ele = args[3] + local ct = args[4] + local v1 = args[5] + local changeCrit=function(func,atkRole,defRole,skill) + if atkRole.camp~=role.camp or atkRole.element~=ele then + return + end + if not BattleLogic.BuffMgr:HasBuff(defRole, t1, function (buff) return buff.ctrlType==t2 and buff.caster==role end) then + return + end + if func then + func(v1,ct,true) + end + end + BattleLogic.Event:AddEvent(BattleEventName.TemporaryChangeCrit,changeCrit,nil,nil,role) + end, + --技能对自身释放[a]类型buff [b]成功后,有[c]%概率控制[d][e]回合;每回合最多触发[f]次,具体控制效果有[g][h][i][j] + --a[int],b[int 0:失败/成功 1:只有成功],c[float],d[int],e[int],f[int],g[int],h[int],i[int] + [382]=function(role, args,id,judge) + local ctrls={} + local t1 = args[1] + local t2 = args[2] + local pro = args[3] + local t3 = args[4] + local r1 = args[5] + local time = args[6] + local v1 = args[7] + if v1 then + table.insert(ctrls,v1) + end + local v2 = args[8] + if v2 then + table.insert(ctrls,v2) + end + local v3 = args[9] + if v3 then + table.insert(ctrls,v3) + end + local v4 = args[10] + if v4 then + table.insert(ctrls,v4) + end + local triggerTime=0 + local addBuff=function(buff,isAdd,caster,target,skill) + if not skill then + return + end + if time==triggerTime then + return + end + if not BattleUtil.ChecklistIsContainValue(ctrls,buff.ctrlType) then + return + end + if t2==1 and not isAdd then + return + end + BattleUtil.RandomControl(pro,t3,role,caster,r1) + triggerTime=triggerTime+1 + end + + BattleLogic.Event:AddEvent(BattleEventName.RoleAddCtrlBuff,addBuff,nil,nil,role) + + local onRoundChange=function() + triggerTime=0 + end + BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange,onRoundChange,nil,nil,role) + end, + --目标存在御甲,追击的普攻对御甲额外造成[a]倍伤害,不存在御甲,追击的普攻额外造成目标[b][c]%的伤害 + --【御甲不足以抵扣a倍伤害 对神将造成血量伤害=([d]属性*[e]-御甲值)/[f]】 + --a[int],b[int],c[float],d[int],e[int],f[int] + [383]=function(role, args,id,judge) + local d1 = args[1] + local p1 = args[2] + local v1 = args[3] + local p2 = args[4] + local v2 = args[5] + local d2 = args[6] + local passiveDmg=function(func, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) + if not skill then + return + end + if skill.type~=BattleSkillType.Normal or not skill.isAdd then + return + end + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if defRole.bloodShield==nil or defRole.bloodShield.bloodValue==0 then + local isBoss=BattleUtil.CheckIsBoss(defRole) + if isBoss and p1==12 then + return + end + local val = floor(BattleUtil.FP_Mul(v1, defRole:GetRoleData(BattlePropList[p1]))) + BattleUtil.FinalDamageCountShield(nil,role, defRole, val) + else + local jia=defRole.bloodShield.bloodValue + if damage*d1>jia then + local aaa=(role:GetRoleData(BattlePropList[p2])*v2-jia)/d2 + func(-floor(aaa)) + else + func(-floor(damage*(d1-1))) + end + end + end + role.Event:AddEvent(BattleEventName.PassiveDamaging, passiveDmg,nil,nil,role) + end, + -- 技能治疗的目标[a]属性[b]改变[c]%,持续[d]回合 + -- a[int],b[改变类型],c[float],d[int] + [384] = function(role, args,id,judge) + local f1 = args[1] + local ct = args[2] + local v1 = args[3] + local round = args[4] + local onPassiveTreatingFactor = function(func, target) + target:AddBuff(Buff.Create(role, BuffName.PropertyChange, round, BattlePropList[f1], v1,ct)) + end + + local function onSkillCast(skill) + if skill then + if skill and not skill.isTriggerJudge and judge==1 then + return + end + role.Event:AddEvent(BattleEventName.PassiveTreatingFactor, onPassiveTreatingFactor,nil,nil,role) + end + end + local function onSkillCastEnd(skill) + if skill then + if skill and not skill.isTriggerJudge and judge==1 then + return + end + role.Event:RemoveEvent(BattleEventName.PassiveTreatingFactor, onPassiveTreatingFactor) + end + end + role.Event:AddEvent(BattleEventName.SkillCast, onSkillCast,nil,nil,role) + role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillCastEnd,nil,nil,role) + end, + -- 技能目标每[a]改变[b]个,暴击率增加[c]%,[d]改变 + -- a[改变类型],b[int],c[float],d[改变类型] + [385] = function(role, args,id,judge) + local ct = args[1] + local i1 = args[2] + local f1 = args[3] + local ct2 = args[4] + + -- 每次释放技能时提前计算额外加成的伤害 + local extra = 0 + + + local changeCrit=function(func,atkRole,defRole,skill) + if not skill or skill.type~=BattleSkillType.Special then + return + end + if atkRole~=role then + return + end + if func then + func(extra,ct2,false) + end + end + local onSkillCast = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + extra = 0 + if skill and skill.type == BattleSkillType.Special then + -- 改变值 = 技能最大目标数 - 当前目标数 + local maxNum = skill:GetMaxTargetNum() + local curNum = #skill:GetDirectTargets() + local lessNum = max(maxNum - curNum, 0) + local level = math.floor(lessNum/i1) + extra = BattleUtil.ErrorCorrection(level * f1) + end + BattleLogic.Event:AddEvent(BattleEventName.TemporaryChangeCrit,changeCrit,nil,nil,role) + end + role.Event:AddEvent(BattleEventName.SkillCast, onSkillCast,nil,nil,role) + + local onSkillCastEnd=function() + BattleLogic.Event:RemoveEvent(BattleEventName.TemporaryChangeCrit,changeCrit,nil,nil,role) + end + role.Event:AddEvent(BattleEventName.SkillCastEnd,onSkillCastEnd,nil,nil,role) + + end, + --释放技能时,如果目标怒气不足[a]点,每少[b]技能暴击伤害额外[c] [d]% + -- a[int,怒气值],b[int],c[改变类型],d[float] + [386]=function(role,args,id,judge) + local anger = args[1] + local num = args[2] + local type = args[3] + local v1 = args[4] + local onPassiveDamaging = function(func, defRole, damage,skill,dotType,bcrit) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if not bcrit then + return + end + --怒气小于规定值 + if defRole.Rage>=anger then + return + end + local add=floor((anger-defRole.Rage)/num)*v1 + if skill and (skill.type==BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill ) then + local dmgDeduction = damage - floor(BattleUtil.ErrorCorrection(BattleUtil.CountValue(damage,add,type))) + if func then func(dmgDeduction) end + end + end + role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role) + end, + --技能追加的普攻额外造成目标[a][b]%的伤害,如果放技能前自身怒气大于目标,额外生命百分比加[c]%;小于等于目标添加禁御甲,持续[d]回合 + --a[int 属性id] b[float],c[float],d[float] + [387]=function(role,args,id,judge) + local f1 = args[1] + local dt = args[2] + local p1 = args[3] + local p2 = args[4] + local haveRage=0 + -- 直接伤害后 + local onPassiveDamaging = function(func, defRole, damage,skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill and skill.type == BattleSkillType.Normal and skill.isAdd and skill.owner==role then + --如果是boss 并且额外伤害是根据最大生命则返回 + if (f1==12 or f1==13) and BattleUtil.CheckIsBoss(defRole) then + return + end + if (f1==12 or f1==13) and p1 then + if haveRage>defRole.Rage then + dt=dt+p1 + else + defRole:AddBuff(Buff.Create(role, BuffName.BanBlood, p2)) + end + end + local val = -floor(BattleUtil.FP_Mul(dt, defRole:GetRoleData(BattlePropList[f1]))) + if f1==12 or f1==13 then + BattleUtil.FinalDamageCountShield(nil,role,defRole,-val) + else + if func then + func(val) + end + end + end + end + role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role) + local onSkillCast=function(caster) + haveRage=caster.Rage + end + role.Event:AddEvent(BattleEventName.RoleTurnStart,onSkillCast,nil,nil,role) + end, + --非[a]职业神将[b]怒气时,有[c]概率使目标[d]属性[e]改变[f]%,持续[g]回合 + --a[int],b[int],c[float],d[int],e[int],f[float],g[int] + [388]=function(role,args,id,judge) + local prof = args[1] + local ct1 = args[2] + local pro = args[3] + local p1 = args[4] + local ct2 = args[5] + local v1 = args[6] + local round = args[7] + local onRageChange = function(caster, target, deltaRage, countType, value) + if caster~=role then + return + end + + if countType~=ct1 then + return + end + if target.camp~=role.camp then + return + end + if prof~=0 and caster.job==prof then + return + end + + BattleUtil.RandomAction(pro,function() + target:AddBuff(Buff.Create(role, BuffName.PropertyChange,round, BattlePropList[p1],v1, ct2)) + end) + + end + BattleLogic.Event:AddEvent(BattleEventName.RecordRageChange, onRageChange,nil,nil,role) + end, + --暴击时[a]%概率使爆伤改变[b][c]% + --a[float],b[int],c[float] + [389]=function(role,args,id,judge) + local pro=args[1] + local ct = args[2] + local v1 = args[3] + local addCritDamageFa=function(func) + BattleUtil.RandomAction(pro,function() + if func then + func(v1,ct) + end + end) + end + role.Event:AddEvent(BattleEventName.PassiveAddCritDamageFactor,addCritDamageFa,nil,nil,role) + end, + + --释放技能时[a]%概率 改变[b]自身无视目标的[c]类型buff的免疫概率 + --a[float],b[int],c[int] + [390]=function(role,args,id,judge) + local pro=args[1] + local ct = args[2] + local v1 = args[3] + local addCritDamageFa=function(func,buff) + + if buff and buff.type~=v1 then + return + end + if func then + func(pro,ct) + end + end + + local OnSkillCast = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill then + role.Event:AddEvent(BattleEventName.PassiveChangeIgnoreImmuneValue,addCritDamageFa,nil,nil,role) + end + end + local OnSkillCastEnd = function(skill) + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill then + role.Event:RemoveEvent(BattleEventName.PassiveChangeIgnoreImmuneValue,addCritDamageFa,nil,nil,role) + end + end + role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast,nil,nil,role) + role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role) + end, + + --治疗神将释放技能时[a]%概率 清除目标一个减异效果 + --a[float] + [391]=function(role,args,id,judge) + local pro=args[1] + + -- local onRoleTreat=function(targetRole, treat, baseTreat,skill) + -- if not skill then + -- return + -- end + -- BattleUtil.RandomAction(pro, function() + -- local list=BattleLogic.BuffMgr:GetAllBuffByFunc(function(buff) return buff.caster.camp~=targetRole.camp and buff.target==targetRole end) + -- local len=BattleUtil.LengthOfTable(list) + -- if list and len>0 then + -- local index=Random.RangeInt(1,len) + -- BattleLogic.BuffMgr:ClearBuff(targetRole, function (buff) + -- return buff==list[index] + -- end) + -- end + -- end) + -- end + + -- local OnSkillCast = function(skill) + -- if skill and not skill.isTriggerJudge and judge==1 then + -- return + -- end + -- if skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill then + -- role.Event:AddEvent(BattleEventName.RoleTreat,onRoleTreat,nil,nil,role) + -- end + -- end + local OnSkillCastEnd = function(skill) + + if skill and not skill.isTriggerJudge and judge==1 then + return + end + if role.job~=1 then + return + end + -- if skill.type == BattleSkillType.Special or skill.type==BattleSkillType.Extra or skill.type==BattleSkillType.DeadSkill then + -- role.Event:RemoveEvent(BattleEventName.RoleTreat,onRoleTreat,nil,nil,role) + -- end + if skill.type ~= BattleSkillType.Special and skill.type~=BattleSkillType.Extra and skill.type~=BattleSkillType.DeadSkill then + return + end + local targets = skill:GetDirectTargetsNoMiss() + if targets then + for _, r in ipairs(targets) do + BattleUtil.RandomAction(pro, function() + local list=BattleLogic.BuffMgr:GetAllBuffByFunc(function(buff) return buff.caster.camp~=r.camp and buff.target==r end) + local len=BattleUtil.LengthOfTable(list) + if list and len>0 then + local index=Random.RangeInt(1,len) + BattleLogic.BuffMgr:ClearBuff(r, function (buff) + return buff==list[index] + end) + end + end) + end + end + end + --role.Event:AddEvent(BattleEventName.SkillCast, OnSkillCast,nil,nil,role) + role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCastEnd,nil,nil,role) end, } diff --git a/luafight/Modules/Battle/Logic/BattleLogic.lua b/luafight/Modules/Battle/Logic/BattleLogic.lua index 560a4b850..729c7c4b7 100644 --- a/luafight/Modules/Battle/Logic/BattleLogic.lua +++ b/luafight/Modules/Battle/Logic/BattleLogic.lua @@ -107,7 +107,8 @@ function BattleLogic.GetIsPvP() BattleLogic.Type== BATTLE_SERVER_TYPE.ArenaFight or BattleLogic.Type== BATTLE_SERVER_TYPE.CarPersonFight or BattleLogic.Type== BATTLE_SERVER_TYPE.CrossYuxuLunDaoFight or - BattleLogic.Type== BATTLE_SERVER_TYPE.NewArenaFight then + BattleLogic.Type== BATTLE_SERVER_TYPE.NewArenaFight or + BattleLogic.Type== BATTLE_SERVER_TYPE.LINGMAIMIJING then return true end return false @@ -485,10 +486,16 @@ function BattleLogic.Update() BattleLogic.BattleEnd(0) return end + print("===================type==============="..BattleLogic.Type) if CurRound > MaxRound then if BattleLogic.Type == BATTLE_SERVER_TYPE.TOPFight -- 巅峰赛 - or BattleLogic.Type == BATTLE_SERVER_TYPE.Firend then -- 好友切磋 + or BattleLogic.Type == BATTLE_SERVER_TYPE.Firend + or BattleLogic.Type == BATTLE_SERVER_TYPE.CrossYuxuLunDaoFight + or BattleLogic.Type == BATTLE_SERVER_TYPE.LINGMAIMIJING + or BattleLogic.Type == BATTLE_SERVER_TYPE.CarPersonFight + or BattleLogic.Type == BATTLE_SERVER_TYPE.NewArenaFight then -- 好友切磋 if allHeroDamage>allEnemyDamage then + print("============="..allHeroDamage.." "..allEnemyDamage) BattleLogic.BattleEnd(1) else BattleLogic.BattleEnd(0) diff --git a/luafight/Modules/Battle/Logic/Misc/BattleDefine.lua b/luafight/Modules/Battle/Logic/Misc/BattleDefine.lua index 31c7db881..b7fd93da6 100644 --- a/luafight/Modules/Battle/Logic/Misc/BattleDefine.lua +++ b/luafight/Modules/Battle/Logic/Misc/BattleDefine.lua @@ -6,7 +6,7 @@ end BATTLE_SERVER_TYPE = { - NewArenaFight = 0, --本地测试竞技场值 + NewArenaFight = 0, --本地测试竞技场值/罗浮争锋 StoryFight = 1, --故事副本 MapExploreFight = 2, -- 地图探索 ArenaFight = 3, --竞技场 @@ -25,7 +25,11 @@ BATTLE_SERVER_TYPE = { TenDespairArray = 16,--十绝阵 Firend = 17,--好友 SenLuoHuanJing = 18,-- 森罗环境 + TaSuiLingXiao = 19,-- 踏碎凌霄 + FightLevel = 20,-- + QiJieShiLian = 23,--七界试炼 CrossYuxuLunDaoFight = 24,--玉虚论道 + LINGMAIMIJING = 25, --灵脉秘境 } BattleEventName = { @@ -76,6 +80,7 @@ BattleEventName = { RoleBeControl = indexAdd(), -- 角色被控制 RoleRealDead = indexAdd(), -- 角色真死了 RoleRelive = indexAdd(), -- 角色复活了 + ReliveRole = indexAdd(), -- 复活角色 FinalDamage = indexAdd(), FinalBeDamage = indexAdd(), FinalBeDamageEnd = indexAdd(), --最后被攻击结束 @@ -175,8 +180,15 @@ BattleEventName = { ActionOperateAngerAfter =indexAdd(),--角色行动操作怒气后 HitRoleInBurn = indexAdd(), --击中在燃烧状态得敌人 ActionOperateAngerBefore =indexAdd(),--角色行动操作怒气前 - BloodValueChange = indexAdd(), --御甲只发发生改变 + BloodValueChange = indexAdd(), --御甲值发发生改变 CheckLiZhanZhiQu = indexAdd(),--检测历战之躯 + SkillCastCostRageEnd = indexAdd(), --技能释放最后扣除怒气 + BloodValuePassiveChange = indexAdd(),--被动修改御甲值 + TemporaryChangeCrit = indexAdd(),--临时改变暴击率 + RoleAddCtrlBuff = indexAdd(),--角色添加控制类buff + CastRageBrfore = indexAdd(),--扣除怒气之前 + PassiveAddCritDamageFactor = indexAdd(), --被动增加爆伤系数 + PassiveChangeIgnoreImmuneValue = indexAdd(),--被动修改无视 } BattleMaxFrame = 1000000 @@ -184,35 +196,64 @@ BattleMaxFrame = 1000000 index = 0 RoleDataName = { - Level = indexAdd(), --等级 - Hp = indexAdd(), --生命 - MaxHp = indexAdd(), --最大生命 - Attack = indexAdd(), --攻击力 - PhysicalDefence = indexAdd(),--护甲 - MagicDefence = indexAdd(),--魔抗 - Speed = indexAdd(),--速度 + Level = indexAdd(), --等级 + Hp = indexAdd(), --生命 + MaxHp = indexAdd(), --最大生命 + Attack = indexAdd(), --攻击力 + PhysicalDefence = indexAdd(), --护甲 + MagicDefence = indexAdd(), --魔抗 + Speed = indexAdd(), --速度 DamageBocusFactor = indexAdd(), --伤害加成系数(%) DamageReduceFactor = indexAdd(), --伤害减免系数(%) - Hit = indexAdd(), --施法率(%) + Hit = indexAdd(), --施法率(%) Dodge = indexAdd(), --后期基础施法率(%) - Crit = indexAdd(), --暴击率(%) - CritDamageFactor = indexAdd(), --暴击伤害系数(%) + Crit = indexAdd(), --暴击率(%) + CritDamageBonus = indexAdd(), --暴击伤害系数(%) Tenacity = indexAdd(), --抗暴率(%) - TreatFacter = indexAdd(),--治疗加成系数(%) + TreatFacter = indexAdd(), --治疗加成系数(%) CureFacter = indexAdd(),--受到治疗加成系数(%) - TeamDamageBocusFactor = indexAdd(),--队伍伤害加成系数(%) - TeamDamageReduceFactor = indexAdd(),--队伍伤害减免系数(%) - FireDamageReduceFactor = indexAdd(), --火系伤害减免系数(%) - WindDamageReduceFactor = indexAdd(), --风系伤害减免系数(%) - IceDamageReduceFactor = indexAdd(), --冰系伤害减免系数(%) - LandDamageReduceFactor = indexAdd(), --地系伤害减免系数(%) - LightDamageReduceFactor = indexAdd(), --光系伤害减免系数(%) - DarkDamageReduceFactor = indexAdd(), --暗系伤害减免系数(%) - ElementDamageBocusFactor = indexAdd(), --属性伤害加成系数(%) + RenBonus = indexAdd(), --人系伤害加成 + FoBonus = indexAdd(), --佛系伤害加成 + YaoBonus = indexAdd(), --妖系伤害加成 + DaoBonus = indexAdd(), --道系伤害加成 + RenReduce = indexAdd(), --人系伤害减免 + FoReduce = indexAdd(), --佛系伤害减免 + YaoReduce = indexAdd(), --妖系伤害减免 + DaoReduce = indexAdd(), --道系伤害减免 + CritDamageReduce = indexAdd(), --暴击伤害减免 InitRage = indexAdd(), --初始怒气值 - } +-- 战斗表属性id对应战斗中属性数据 +BattlePropList = { + RoleDataName.Attack, + RoleDataName.PhysicalDefence, + RoleDataName.MagicDefence, + RoleDataName.Speed, + RoleDataName.DamageBocusFactor, + RoleDataName.DamageReduceFactor, + RoleDataName.Hit, + RoleDataName.Dodge, + RoleDataName.Crit, + RoleDataName.CritDamageBonus, + RoleDataName.TreatFacter, + RoleDataName.MaxHp, + RoleDataName.Hp, + RoleDataName.CureFacter, + RoleDataName.Tenacity, + RoleDataName.InitRage, + RoleDataName.RenBonus, + RoleDataName.FoBonus, + RoleDataName.YaoBonus, + RoleDataName.DaoBonus, + RoleDataName.RenReduce, + RoleDataName.FoReduce, + RoleDataName.YaoReduce, + RoleDataName.DaoReduce, + RoleDataName.CritDamageReduce, +} + + BuffName = { PropertyChange = 1, Control = 2, @@ -227,6 +268,7 @@ BuffName = { Aura = 11, Brand = 12, Blood = 13, + BanBlood = 14, } DotType = { @@ -294,27 +336,6 @@ skill6={100923,0.15,1.5,1,{260004,{126,0.48,2,4,1,0,4,12,0}}}, } - --- 战斗表属性id对应战斗中属性数据 -BattlePropList = { - RoleDataName.Attack, - RoleDataName.PhysicalDefence, - RoleDataName.MagicDefence, - RoleDataName.Speed, - RoleDataName.DamageBocusFactor, - RoleDataName.DamageReduceFactor, - RoleDataName.Hit, - RoleDataName.Dodge, - RoleDataName.Crit, - RoleDataName.CritDamageFactor, - RoleDataName.TreatFacter, - RoleDataName.MaxHp, - RoleDataName.Hp, - RoleDataName.CureFacter, - RoleDataName.Tenacity, - RoleDataName.InitRage, -} - CurseTypeName = { ShareDamage = 1, } @@ -346,4 +367,19 @@ BattleArtFontType = { Immune = 1, -- 免疫文字 Shield = 2, --破盾文字 clear = 3, --清除文字 + Blood = 4, --禁甲文字 +} + + +BattleMieProp = { + [BattleRoleElementType.REN] = RoleDataName.RenBonus, + [BattleRoleElementType.FO] = RoleDataName.FoBonus, + [BattleRoleElementType.YAO] = RoleDataName.YaoBonus, + [BattleRoleElementType.DAO] = RoleDataName.DaoBonus +} +BattleKangProp = { + [BattleRoleElementType.REN] = RoleDataName.RenReduce, + [BattleRoleElementType.FO] = RoleDataName.FoReduce, + [BattleRoleElementType.YAO] = RoleDataName.YaoReduce, + [BattleRoleElementType.DAO] = RoleDataName.DaoReduce } \ No newline at end of file diff --git a/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua b/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua index 2abfb93cf..55048401c 100644 --- a/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua +++ b/luafight/Modules/Battle/Logic/Misc/BattleUtil.lua @@ -607,16 +607,9 @@ function BattleUtil.ApplyDamage(skill, atkRole, defRole, damage, bCrit, damageTy bCrit = bCrit or false damageType = damageType or 0 - -- if atkRole.isTeam then - -- --max(技能基础伤害*(1+已方异妖伤害加成-目标异妖伤害减免),30%×技能基础伤害) - -- local arr = RoleManager.Query(function (r) return r.camp == atkRole.camp end) - -- local n = 0 - -- for i=1, #arr do - -- n = n + arr[i]:GetRoleData(RoleDataName.TeamDamageBocusFactor) - -- end - -- damage = floor(max(damage * (1 + n / #arr - defRole:GetRoleData(RoleDataName.TeamDamageReduceFactor)), 0.3 * damage)) - -- end + -- 计算护盾减伤 + damage = BattleUtil.CalShield(atkRole, defRole, damage,skill) --加入被动效果 local damagingFunc = function(dmgDeduction) damage = damage - dmgDeduction @@ -625,10 +618,6 @@ function BattleUtil.ApplyDamage(skill, atkRole, defRole, damage, bCrit, damageTy defRole.Event:DispatchEvent(BattleEventName.PassiveBeDamaging, damagingFunc, atkRole, damage, skill, dotType, bCrit) BattleLogic.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) - -- 计算护盾减伤 - - damage = BattleUtil.CalShield(atkRole, defRole, damage,skill) - -- 造成的最终伤害 local damagingFunc = function(dmgDeduction) damage = damage - dmgDeduction @@ -651,13 +640,23 @@ function BattleUtil.ApplyDamageNoPassive(skill, atkRole, defRole, damage, bCrit, -- 计算护盾减伤 damage = BattleUtil.CalShield(atkRole, defRole, damage,skill) -- 造成的最终伤害 - local damagingFunc = function(dmgDeduction) + local damagingFunc = function(dmgDeduction) + --不计算增伤只计算减伤 + if dmgDeduction<0 then + return + end damage = damage - dmgDeduction end + atkRole.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) + defRole.Event:DispatchEvent(BattleEventName.PassiveBeDamaging, damagingFunc, atkRole, damage, skill, dotType, bCrit) + BattleLogic.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) + + + atkRole.Event:DispatchEvent(BattleEventName.FinalDamage, damagingFunc, defRole, damage, skill, dotType, bCrit, damageType) + defRole.Event:DispatchEvent(BattleEventName.FinalBeDamage, damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType) defRole.Event:DispatchEvent(BattleEventName.FinalBeDamageEnd, damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType,isDirect) BattleLogic.Event:DispatchEvent(BattleEventName.FinalDamage, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit, damageType) - -- return BattleUtil.FinalDamage(skill, atkRole, defRole, damage, bCrit, damageType, dotType,isDirect) end @@ -747,7 +746,7 @@ function BattleUtil.FinalDamage(skill, atkRole, defRole, damage, bCrit, damageTy local realDamage=damage --血量防护只会防直接伤害 if defRole.bloodShield and skill then - realDamage=math.abs(defRole.bloodShield:CountBloodValue(damage)) + realDamage=math.abs(defRole.bloodShield:CountBloodValue(damage,atkRole)) -- damage=realDamage end --检测历战之躯 @@ -814,8 +813,8 @@ function BattleUtil.FinalDamageCountShield(skill, atkRole, defRole, damage, bCri if defRole.type == BattleUnitType.Monster or defRole.type == BattleUnitType.Player then return end - -- 计算护盾减伤 - damage = BattleUtil.CalShield(atkRole, defRole, damage,skill) + -- 计算无敌盾减伤 + damage = BattleUtil.CalAllReduceShield(atkRole, defRole, damage,skill) if damage < 0 then damage = 0 end if skill and skill.type==BattleSkillType.Special then @@ -825,7 +824,7 @@ function BattleUtil.FinalDamageCountShield(skill, atkRole, defRole, damage, bCri local realDamage=damage --血量防护只会防直接伤害 if defRole.bloodShield and skill then - realDamage=math.abs(defRole.bloodShield:CountBloodValue(damage)) + realDamage=math.abs(defRole.bloodShield:CountBloodValue(damage,atkRole)) -- damage=realDamage end --检测历战之躯 @@ -898,13 +897,42 @@ function BattleUtil.CalDamage(skill, atkRole, defRole, damageType, baseFactor, i if defRole.type == BattleUnitType.Monster or defRole.type == BattleUnitType.Player then return end - -- 判断是否命中 - if skill and not skill:CheckTargetIsHit(defRole) and atkRole.type==BattleUnitType.Role then - BattleLogic.Event:DispatchEvent(BattleEventName.HitMiss, atkRole, defRole, skill) - atkRole.Event:DispatchEvent(BattleEventName.HitMiss, defRole, skill) - defRole.Event:DispatchEvent(BattleEventName.BeHitMiss, atkRole, skill) - return 0 + + -- 是否暴击: 暴击率 = 自身暴击率 - 对方抗暴率 + local bCrit = false + local critRandom = Random.Range01() + --特殊处理 白骨精附加的普攻不会必定暴击 + local mustCrit=atkRole.mustCrit + if atkRole.roleId==10091 and skill and skill.type==BattleSkillType.Normal and skill.isAdd then + mustCrit=false end + local addCrit=0 + local isMustHit=false + -- 计算被动对暴击概率的影响 + local critFunc = function(df, dt,hit) + addCrit = BattleUtil.CountValue(addCrit, df, dt) + isMustHit = hit + end + BattleLogic.Event:DispatchEvent(BattleEventName.TemporaryChangeCrit,critFunc,atkRole,defRole,skill) + local critCondition = clamp(atkRole:GetRoleData(RoleDataName.Crit)+addCrit - defRole:GetRoleData(RoleDataName.Tenacity), 0, 1) + bCrit = critRandom <= critCondition + --处理达摩神魂被动必定命中 + if not bCrit or addCrit==0 then + isMustHit=false + end + + bCrit =mustCrit or bCrit or defRole.isFlagCrit == true -- 必定暴击 + + -- 判断是否命中 + if not isMustHit then + if (skill and not skill:CheckTargetIsHit(defRole) and atkRole.type==BattleUnitType.Role) then + BattleLogic.Event:DispatchEvent(BattleEventName.HitMiss, atkRole, defRole, skill) + atkRole.Event:DispatchEvent(BattleEventName.HitMiss, defRole, skill) + defRole.Event:DispatchEvent(BattleEventName.BeHitMiss, atkRole, skill) + return 0 + end + end + -- 如果是队伍技能,计算真实伤害,则damageType为伤害值 if atkRole.isTeam and not defRole:IsDead() then return BattleUtil.ApplyDamage(skill, atkRole, defRole, damageType), false @@ -934,18 +962,7 @@ function BattleUtil.CalDamage(skill, atkRole, defRole, damageType, baseFactor, i -- 基础伤害增加系数 local addDamageFactor = 1 + atkRole:GetRoleData(RoleDataName.DamageBocusFactor) - defRole:GetRoleData(RoleDataName.DamageReduceFactor) - -- 是否暴击: 暴击率 = 自身暴击率 - 对方抗暴率 - local bCrit = false - local critRandom = Random.Range01() - --特殊处理 白骨精附加的普攻不会必定暴击 - local mustCrit=atkRole.mustCrit - if atkRole.roleId==10091 and skill and skill.type==BattleSkillType.Normal and skill.isAdd then - mustCrit=false - end - local critCondition = clamp(atkRole:GetRoleData(RoleDataName.Crit) - defRole:GetRoleData(RoleDataName.Tenacity), 0, 1) - bCrit = critRandom <= critCondition - bCrit =mustCrit or bCrit or defRole.isFlagCrit == true -- 必定暴击 - + -- 计算暴伤害系数 local critDamageFactor = 1 local critDamageReduceFactor = 0 -- 暴击伤害减免 @@ -962,16 +979,33 @@ function BattleUtil.CalDamage(skill, atkRole, defRole, damageType, baseFactor, i defRole.Event:DispatchEvent(BattleEventName.CritDamageReduceFactor, onCritDamageReduceFactor, atkRole, defRole) BattleLogic.Event:DispatchEvent(BattleEventName.CritDamageReduceFactor, onCritDamageReduceFactor, atkRole, defRole) critDamageReduceFactor = max(BattleUtil.CountChangeList(critDamageReduceFactor, cl), 0) - - -- 计算额外暴击伤害 - critDamageFactor = 1.3 + atkRole:GetRoleData(RoleDataName.CritDamageFactor) - critDamageReduceFactor + + local critDamageAddFactor=0 --加入被动效果 触发暴击被动 - local critFunc = function(critEx) critDamageFactor = critEx end - atkRole.Event:DispatchEvent(BattleEventName.PassiveCriting, critFunc,skill) + local cl2 = {} + local onCritDamageAddFactor = function(v, ct) + if v then + table.insert(cl2, {v, ct}) + end + end + atkRole.Event:DispatchEvent(BattleEventName.PassiveAddCritDamageFactor, onCritDamageAddFactor, atkRole, defRole) + critDamageAddFactor = max(BattleUtil.CountChangeList(critDamageAddFactor, cl2), 0) + -- 计算额外暴击伤害 + critDamageFactor = 1.3 + atkRole:GetRoleData(RoleDataName.CritDamageBonus) - defRole:GetRoleData(RoleDataName.CritDamageReduce)+critDamageAddFactor - critDamageReduceFactor + --加入被动效果 触发暴击被动 废弃不用 + -- local critFunc = function(critEx) critDamageFactor = critEx end + -- atkRole.Event:DispatchEvent(BattleEventName.PassiveCriting, critFunc,skill) end - -- 公式伤害 = 基础伤害 * 基础伤害系数 * 增伤系数 * 爆伤系数 - local fixDamage = floor(BattleUtil.FP_Mul(baseDamage, baseFactor, addDamageFactor, critDamageFactor)) + -- 计算克制伤害系数 + local MieKangFactor = 1 + if atkRole.type == BattleUnitType.Role and defRole.type == BattleUnitType.Role then + MieKangFactor=MieKangFactor + atkRole:GetRoleData(BattleMieProp[defRole.element]) - defRole:GetRoleData(BattleKangProp[atkRole.element]) + end + + + -- 公式伤害 = 基础伤害 * 基础伤害系数 * 增伤系数 * 爆伤系数 * 克制伤害系数 + local fixDamage = floor(BattleUtil.FP_Mul(baseDamage, baseFactor, addDamageFactor, critDamageFactor, MieKangFactor)) -- 公式计算完成 local damageFunc = function(damage) fixDamage = damage end @@ -1011,7 +1045,7 @@ function BattleUtil.CalTreat(castRole, targetRole, value, baseFactor,skill) --计算暴击 if bCrit then --伤害有个+1.3 不知道干什么用的就给去了 by:wangxhenxing 2020/10/10 18:46 - critDamageFactor = 1.3 + castRole:GetRoleData(RoleDataName.CritDamageFactor) + critDamageFactor = 1.3 + castRole:GetRoleData(RoleDataName.CritDamageBonus) end -- 基础伤害增加系数 local addDamageFactor = 1 + castRole:GetRoleData(RoleDataName.DamageBocusFactor) @@ -1046,8 +1080,8 @@ function BattleUtil.FinalTreat(castRole, targetRole, value, baseFactor,skill) targetRole.data:AddValue(RoleDataName.Hp, treat) end - castRole.Event:DispatchEvent(BattleEventName.RoleTreat, targetRole, treat, baseTreat) - targetRole.Event:DispatchEvent(BattleEventName.RoleBeTreated, castRole, treat, baseTreat) + castRole.Event:DispatchEvent(BattleEventName.RoleTreat, targetRole, treat, baseTreat,skill) + targetRole.Event:DispatchEvent(BattleEventName.RoleBeTreated, castRole, treat, baseTreat,skill) --添加发送到battleLogic的治疗消息,用于计算总的战斗伤害值 BattleLogic.Event:DispatchEvent(BattleEventName.RoleBeTreated, castRole, treat, baseTreat) -- 战斗记录用 @@ -1111,8 +1145,8 @@ function BattleUtil.ApplyTreat(castRole, targetRole, value, baseFactor,critDamag if treat > 0 then targetRole.data:AddValue(RoleDataName.Hp, treat) end - castRole.Event:DispatchEvent(BattleEventName.RoleTreat, targetRole, treat, baseTreat) - targetRole.Event:DispatchEvent(BattleEventName.RoleBeTreated, castRole, treat, baseTreat) + castRole.Event:DispatchEvent(BattleEventName.RoleTreat, targetRole, treat, baseTreat,skill) + targetRole.Event:DispatchEvent(BattleEventName.RoleBeTreated, castRole, treat, baseTreat,skill) --添加发送到battleLogic的治疗消息,用于计算总的战斗伤害值 BattleLogic.Event:DispatchEvent(BattleEventName.RoleBeTreated, castRole, treat, baseTreat) -- 战斗记录用 @@ -1145,6 +1179,19 @@ function BattleUtil.CheckIsHit(atkRole, defRole,skill) end +function BattleUtil.AddBlood(target,value) + if not target.isBanBlood then + if target.bloodShield then + target.bloodShield:AddValue(value) + else + target:AddBuff(Buff.Create(target, BuffName.Blood,0,value)) + end + else + target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.Blood) + end +end + + --获取table的长度 function BattleUtil.LengthOfTable(table) if not table then @@ -1166,7 +1213,7 @@ function BattleUtil.RandomAction(rand, action) end -- -function BattleUtil.RandomControl(rand, ctrl, caster, target, round) +function BattleUtil.RandomControl(rand, ctrl, caster, target, round,skill) local cl = {} local function _CallBack(v, ct) @@ -1185,11 +1232,12 @@ function BattleUtil.RandomControl(rand, ctrl, caster, target, round) buff.target=target BattleLogic.Event:DispatchEvent(BattleEventName.RoleAddBuffFail,buff) end + BattleLogic.Event:DispatchEvent(BattleEventName.RoleAddCtrlBuff,buff,isAdd,caster,target,skill) return isAdd end -- -function BattleUtil.RandomDot(rand, dot, caster, target, round, interval, damage) +function BattleUtil.RandomDot(rand, dot, caster, target, round, interval, damage,skill) local cl = {} local dcl = {} @@ -1208,6 +1256,7 @@ function BattleUtil.RandomDot(rand, dot, caster, target, round, interval, damage return BattleUtil.RandomAction(rand, function() local buff = Buff.Create(caster, BuffName.DOT, round, interval, dot, damage) + buff.skill=skill buff.isRealDamage = true target:AddBuff(buff) end) @@ -1352,7 +1401,7 @@ function BattleUtil.CheckSeckill(bf, kf, caster, target) table.insert(kcl, {kv, kct}) end end - caster.Event:DispatchEvent(BattleEventName.PassiveSeckill, _CallBack) + caster.Event:DispatchEvent(BattleEventName.PassiveSeckill, _CallBack,target) target.Event:DispatchEvent(BattleEventName.PassiveBeSeckill, _CallBack) bf = BattleUtil.CountChangeList(bf, bcl) kf = BattleUtil.CountChangeList(kf, kcl) diff --git a/luafight/Modules/Battle/Logic/Monster/Monster.lua b/luafight/Modules/Battle/Logic/Monster/Monster.lua index a44c90523..35f96cc3d 100644 --- a/luafight/Modules/Battle/Logic/Monster/Monster.lua +++ b/luafight/Modules/Battle/Logic/Monster/Monster.lua @@ -24,6 +24,7 @@ function Monster:Init(data) self.uid= data.id self.teamDamage=data.teamDamage self.roleData = data + self.sex=data.sex self.data:Init(self, data.property) self.buffFilter:Clear() --buff屏蔽列表 self.Event:ClearEvent() diff --git a/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MSkill.lua b/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MSkill.lua index 5dda34c92..ad8b3d960 100644 --- a/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MSkill.lua +++ b/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MSkill.lua @@ -25,7 +25,7 @@ function MSkill:Init(owner, group, index, skillData) --MTrigger.AddSkill(self.skillData, self.skillData.triggerCondition, self) local effectData = self.skillData.effect - self.id = effectData[1] -- 技能ID + self.id = tonumber(effectData[1]) -- 技能ID -- 将技能加入触发检测 MTrigger.AddSkill(self.skillData.triggerId, self.skillData.triggerCondition, self) self.hitTime = effectData[2] -- 效果命中需要的时间 diff --git a/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua b/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua index 4a0f578ff..b8e7928ee 100644 --- a/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua +++ b/luafight/Modules/Battle/Logic/Monster/MonsterSkill/MTrigger.lua @@ -2,92 +2,161 @@ require("Modules.Battle.Logic.Monster.MonsterSkill.MCondition") MTrigger = {} local this = MTrigger +-- local _TriggerConfig = { +-- [1] = { --1:敌方单位行动前 +-- event = BattleEventName.RoleTurnStart, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local role = args[1] +-- return role.camp ~= skill.owner.camp +-- end +-- }, +-- [2] = {--2:敌方单位行动后 +-- event = BattleEventName.RoleTurnEnd, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local role = args[1] +-- return role.camp ~= skill.owner.camp +-- end +-- }, +-- [3] = {--3:我方单位行动前 +-- event = BattleEventName.RoleTurnStart, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local role = args[1] +-- return role.camp == skill.owner.camp +-- end +-- }, +-- [4] = {--4:我方单位行动后 +-- event = BattleEventName.RoleTurnEnd, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local role = args[1] +-- return role.camp == skill.owner.camp +-- end +-- }, +-- [5] = {--5:战前 +-- event = BattleEventName.BattleStart, +-- triggerFunc = function(skill, ...) +-- return true +-- end +-- }, +-- [6] = {--6:奇数回合开始前 +-- event = BattleEventName.BattleRoundStart, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local curRound = args[1] +-- return curRound%2 == 1 +-- end +-- }, +-- [7] = {--7:偶数回合开始前 +-- event = BattleEventName.BattleRoundStart, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local curRound = args[1] +-- return curRound%2 == 0 +-- end +-- }, +-- [8] = {--8:奇数回合结束后 +-- event = BattleEventName.BattleRoundEnd, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local curRound = args[1] +-- return curRound%2 == 1 +-- end +-- }, +-- [9] = {--9:偶数回合结束后 +-- event = BattleEventName.BattleRoundEnd, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local curRound = args[1] +-- return curRound%2 == 0 +-- end +-- }, +-- [10] = {--10:回合开始前 +-- event = BattleEventName.BattleRoundStart, +-- triggerFunc = function(skill, ...) +-- return true +-- end +-- }, +-- [11] = {--11:回合结束后 +-- event = BattleEventName.BattleRoundEnd, +-- triggerFunc = function(skill, ...) +-- return true +-- end +-- }, +-- [12] = {--12:我方单位释放技能后 +-- event = BattleEventName.SkillCastEnd, +-- triggerFunc = function(skill, ...) +-- local args = {...} +-- local castSkill = args[1] +-- return castSkill.owner.camp == skill.owner.camp and castSkill.owner.job==2 and (castSkill.type==BattleSkillType.DeadSkill or castSkill.type==BattleSkillType.Extra or castSkill.type==BattleSkillType.Special) +-- end +-- }, +-- } + local _TriggerConfig = { - [1] = { --1:敌方单位行动前 - event = BattleEventName.RoleTurnStart, - triggerFunc = function(skill, ...) + [BattleEventName.RoleTurnStart] = { + [1] = function(skill, ...) --1:敌方单位行动前 local args = {...} local role = args[1] return role.camp ~= skill.owner.camp - end - }, - [2] = {--2:敌方单位行动后 - event = BattleEventName.RoleTurnEnd, - triggerFunc = function(skill, ...) - local args = {...} - local role = args[1] - return role.camp ~= skill.owner.camp - end - }, - [3] = {--3:我方单位行动前 - event = BattleEventName.RoleTurnStart, - triggerFunc = function(skill, ...) + end, + [3] = function(skill, ...) --3:我方单位行动前 local args = {...} local role = args[1] return role.camp == skill.owner.camp end }, - [4] = {--4:我方单位行动后 - event = BattleEventName.RoleTurnEnd, - triggerFunc = function(skill, ...) + [BattleEventName.RoleTurnEnd] = { + [2] = function(skill, ...)--2:敌方单位行动后 + local args = {...} + local role = args[1] + return role.camp ~= skill.owner.camp + end, + [4] = function(skill, ...)--4:我方单位行动后 local args = {...} local role = args[1] return role.camp == skill.owner.camp end }, - [5] = {--5:战前 - event = BattleEventName.BattleStart, - triggerFunc = function(skill, ...) + [BattleEventName.BattleStart] = { + [5] = function(skill, ...)--5:战前 return true end }, - [6] = {--6:奇数回合开始前 - event = BattleEventName.BattleRoundStart, - triggerFunc = function(skill, ...) + [BattleEventName.BattleRoundStart] = { + [6] = function(skill, ...)--6:奇数回合开始前 local args = {...} local curRound = args[1] return curRound%2 == 1 - end - }, - [7] = {--7:偶数回合开始前 - event = BattleEventName.BattleRoundStart, - triggerFunc = function(skill, ...) + end, + [7] = function(skill, ...)--7:偶数回合开始前 local args = {...} local curRound = args[1] return curRound%2 == 0 + end, + [10] = function(skill, ...)--10:回合开始前 + return true end }, - [8] = {--8:奇数回合结束后 - event = BattleEventName.BattleRoundEnd, - triggerFunc = function(skill, ...) + [BattleEventName.BattleRoundEnd] = { + [8] = function(skill, ...)--8:奇数回合结束后 local args = {...} local curRound = args[1] return curRound%2 == 1 - end - }, - [9] = {--9:偶数回合结束后 - event = BattleEventName.BattleRoundEnd, - triggerFunc = function(skill, ...) + end, + [9] = function(skill, ...)--9:偶数回合结束后 local args = {...} local curRound = args[1] return curRound%2 == 0 - end - }, - [10] = {--10:回合开始前 - event = BattleEventName.BattleRoundStart, - triggerFunc = function(skill, ...) + end, + [11] = function(skill, ...)--11:回合结束后 return true end }, - [11] = {--11:回合结束后 - event = BattleEventName.BattleRoundEnd, - triggerFunc = function(skill, ...) - return true - end - }, - [12] = {--12:我方单位释放技能后 - event = BattleEventName.SkillCastEnd, - triggerFunc = function(skill, ...) + [BattleEventName.SkillCastEnd] = { + [12] = function(skill, ...)--12:我方单位释放技能后 local args = {...} local castSkill = args[1] return castSkill.owner.camp == skill.owner.camp and castSkill.owner.job==2 and (castSkill.type==BattleSkillType.DeadSkill or castSkill.type==BattleSkillType.Extra or castSkill.type==BattleSkillType.Special) @@ -104,32 +173,48 @@ end function this.InitListener() --每次初始化时间监听前 清除下缓存数据 MCondition.ClearCache() - for triggerId, config in pairs(_TriggerConfig) do - BattleLogic.Event:AddEvent(config.event, function(...) + for event, list in pairs(_TriggerConfig) do + BattleLogic.Event:AddEvent(event, function(...) + -- 用于排序 + local firstList = {} -- 用于排序 local sortList = {} - -- 判断是否有需要触发的技能 - - local triggerSkill = this.TriggerList[triggerId] - if not triggerSkill then - return - end - for _, trigger in ipairs(triggerSkill) do - local skill = trigger.skill - local condition = trigger.condition - -- 判断技能是否可以释放 - if skill:canCastSkill() then - -- 判断是否符合触发类型条件 - if config.triggerFunc(skill, ... ) then - -- 检测是否符合子条件 - if MCondition.CheckCondition(skill, condition) then - -- 加入技能排序对列 - table.insert(sortList, skill) + for triggerId, triggerFunc in pairs(list) do + -- 判断是否有需要触发的技能 + local triggerSkill = this.TriggerList[triggerId] + if triggerSkill then + for _, trigger in ipairs(triggerSkill) do + local skill = trigger.skill + local condition = trigger.condition + -- 判断技能是否可以释放 + if skill:canCastSkill() then + -- 判断是否符合触发类型条件 + if triggerFunc(skill, ... ) then + -- 检测是否符合子条件 + if MCondition.CheckCondition(skill, condition) then + -- 加入技能排序对列 + if skill.owner.position == 100 then + table.insert(firstList, skill) + else + table.insert(sortList, skill) + end + end + end end - end + end end end -- 对技能进行排序 + table.sort(firstList, function(a, b) + -- 同阵营按位置排序 + if a.owner.camp == b.owner.camp then + return a.owner.position < b.owner.position + else + -- 不同阵营的根据先手阵营排序 + return a.owner.camp == BattleLogic.FirstCamp + end + end) + -- 对技能进行排序 table.sort(sortList, function(a, b) -- 同阵营按位置排序 if a.owner.camp == b.owner.camp then @@ -140,6 +225,9 @@ function this.InitListener() end end) -- 依次加入技能管理 + for _, skill in ipairs(firstList) do + SkillManager.AddMonsterSkill(skill) + end for _, skill in ipairs(sortList) do SkillManager.AddMonsterSkill(skill) end diff --git a/luafight/Modules/Battle/Logic/Role/RoleLogic.lua b/luafight/Modules/Battle/Logic/Role/RoleLogic.lua index 5f2b36c7f..18c62a9b1 100644 --- a/luafight/Modules/Battle/Logic/Role/RoleLogic.lua +++ b/luafight/Modules/Battle/Logic/Role/RoleLogic.lua @@ -47,7 +47,9 @@ function RoleLogic:Init(uid, data, position) self.Event:ClearEvent() self.skill = data.skill + self.skill[1] = tonumber(self.skill[1]) self.superSkill = data.superSkill + self.superSkill[1] = tonumber(self.superSkill[1]) --首次读条时间=速度/(20*(等级+10) self.sp = 0 local time = self:GetRoleData(RoleDataName.Speed)/(20*(self:GetRoleData(RoleDataName.Level)+10)) @@ -83,6 +85,7 @@ function RoleLogic:Init(uid, data, position) self.IsCanAddSkill = true -- 是否可以追加技能 self.mustHit=false --必定命中 self.mustCrit=false --必定暴击 + self.isBanBlood=false --是否禁止上御甲 self.isImmuneAllReduceShield = false --免疫敌方无敌盾(敌方无敌盾对自己无效) self.ignoreShara = false --忽略敌方分摊 self.type = BattleUnitType.Role @@ -90,16 +93,54 @@ function RoleLogic:Init(uid, data, position) self.curMainTarget=nil --当前主目标 self.passiveList = {} if data.passivity and #data.passivity > 0 then - table.sort(data.passivity,function(a,b)return a[1] < b[1] end) + --排序363类型的排在前面 + table.sort(data.passivity,function(a,b) + if a[3]==b[3] then + return a[1] < b[1] + else + if a[3]==363 then + return true + end + if b[3]==363 then + return false + end + end + + return a[1] < b[1] + end) + local coverPass={} for i = 1, #data.passivity do local v = data.passivity[i] - local passivityId=v[1] + local passivityId = tonumber(v[1]) local judge=v[2] - local id = v[3] + local id = tonumber(v[3]) local args = {} for j = 4, #v do args[j-3] = v[j] end + --如果时363类型得被动就存起来 + if id==363 then + coverPass[args[1]]=args + else + --如果有363修改的被动就修改 + if coverPass[passivityId] then + local coverArgs=coverPass[passivityId] + local len=floor((#coverArgs-1)/2) + for i = 1, len do + local id=0 + if #coverArgs>i+i then + id=coverArgs[i+i] + end + local value=0 + if #coverArgs>=i+i+1 then + value=coverArgs[i+i+1] + end + if id~=0 and value~=0 and #args>=id and args[id] then + args[id]=value + end + end + end + end if BattleUtil.Passivity[id] then BattleUtil.Passivity[id](self, args,passivityId,judge) BattleLogManager.Log( @@ -307,17 +348,27 @@ function RoleLogic:AddBuff(buff) "missF", missF) -- 如果概率为0 或者没有miss if missF == 0 or not BattleUtil.RandomAction(missF, function() BattleLogic.BuffMgr:PutBuff(buff) end) then - for i=1, self.buffFilter.size do - if self.buffFilter.buffer[i](buff,self) then - BattleLogManager.Log( - "Buff Filter", - "camp", buff.caster.camp, - "position", buff.caster.position, - "id", buff.id, - "type", buff.type) - BattleLogic.BuffMgr:PutBuff(buff) - BattleLogic.Event:DispatchEvent(BattleEventName.RoleAddBuffFail,buff,self) - return + + --概率忽略免疫 + local ignoreProb=0 + local changeIgnore=function(v1,ct) + ignoreProb=BattleUtil.CountValue(ignoreProb,v1,ct) + end + buff.caster.Event:DispatchEvent(BattleEventName.PassiveChangeIgnoreImmuneValue,changeIgnore,buff) + local isIgnor=BattleUtil.RandomAction(ignoreProb,function()end) + if not isIgnor then + for i=1, self.buffFilter.size do + if self.buffFilter.buffer[i](buff,self) then + BattleLogManager.Log( + "Buff Filter", + "camp", buff.caster.camp, + "position", buff.caster.position, + "id", buff.id, + "type", buff.type) + BattleLogic.BuffMgr:PutBuff(buff) + BattleLogic.Event:DispatchEvent(BattleEventName.RoleAddBuffFail,buff,self) + return + end end end BattleLogic.BuffMgr:AddBuff(self, buff) @@ -340,6 +391,9 @@ function RoleLogic:IsAvailable(skill) return false end end + if self.isExile then + return false + end --角色没有真正死亡 在 被眩晕/沉默的 情况下 任然能释放死亡技能 if (self.ctrl_dizzy or self.ctrl_slient) and self:IsDead() and skill and skill.type==BattleSkillType.DeadSkill then return true @@ -419,11 +473,15 @@ function RoleLogic:SkillCast(skill, func) local costRate = 1 - noRageRate costRate = costRate > 1 and 1 or costRate costRate = costRate < 0 and 0 or costRate + skill.costRage=0 BattleUtil.RandomAction(costRate, function() self.Rage = self.Rage - costRage + self.Event:DispatchEvent(BattleEventName.SkillCastCostRageEnd,costRage) + skill.costRage=costRage end) end self.Event:DispatchEvent(BattleEventName.ActionOperateAngerAfter,self) + -- 释放绝技 skill:Cast(_CastDone) @@ -462,7 +520,11 @@ end --加入额外技能,用于额外释放技能 by:王振兴 function RoleLogic:InsertExtraSkill(id,type) local effectData=BattleUtil.GetExtraSkillbyId(id) - + effectData[1]=self.superSkill[1] + effectData[2]=self.superSkill[2] + effectData[3]=self.superSkill[3] + effectData[4]=self.superSkill[4] + -- local effectData2={role.,role.superSkill[2],role.superSkill[3],role.superSkill[4],{targets,{1,f1,f2}}} if effectData then local skillType=BattleSkillType.Extra --如果type为1则按绝技处理,不为1的话按额外技能处理(额外技能因为被动判断会判断是否是绝技类型,所以不会触发) @@ -607,6 +669,7 @@ function RoleLogic:Relive() -- 发送复活事件 self.Event:DispatchEvent(BattleEventName.RoleRelive, self) --BattleLogic.Event:DispatchEvent(BattleEventName.RoleRelive, self) + self.reliveCaster.Event:DispatchEvent(BattleEventName.ReliveRole,self) -- 复活的血量算做加血 BattleLogic.Event:DispatchEvent(BattleEventName.RecordTreat, self.reliveCaster or self, self, reHp) return true diff --git a/luafight/Modules/Battle/Logic/Role/Skill.lua b/luafight/Modules/Battle/Logic/Role/Skill.lua index 68a8958b3..2d8abc442 100644 --- a/luafight/Modules/Battle/Logic/Role/Skill.lua +++ b/luafight/Modules/Battle/Logic/Role/Skill.lua @@ -70,6 +70,7 @@ function Skill:Cast(func) local targets=BattleUtil.LengthOfTable(self:GetDirectTargetsNoExile()) if targets==0 and self.castDoneFunc then self.isRage=false + self.owner.Event:DispatchEvent(BattleEventName.CastRageBrfore, self) self.castDoneFunc() return end diff --git a/luafight/Modules/Battle/Logic/SkillManager.lua b/luafight/Modules/Battle/Logic/SkillManager.lua index 2373f00a7..88ef42689 100644 --- a/luafight/Modules/Battle/Logic/SkillManager.lua +++ b/luafight/Modules/Battle/Logic/SkillManager.lua @@ -16,6 +16,7 @@ function this.Init() this.CurSkillCount = 0 -- 清除轮转方法,防止收到上一局战斗的影响 this.TurnRoundFunc = nil + this.MonsterCheckFunc = nil this.Clear() end @@ -39,6 +40,12 @@ function this.AddMonsterSkill(skill) if skill.type == BattleSkillType.Monster then table.insert(this.MonsterSkillList, skill) end + BattleLogManager.Log( + "Add Monster Skill", + "camp", skill.owner.camp, + "pos", skill.owner.position, + "type", BattleSkillType.Monster + ) return skill end diff --git a/luafight/Modules/Battle/Readme.txt b/luafight/Modules/Battle/Readme.txt index bb51aa4a5..114b9cbfb 100644 --- a/luafight/Modules/Battle/Readme.txt +++ b/luafight/Modules/Battle/Readme.txt @@ -1,4 +1,107 @@ -master_zh_test同步数据表2021_08_02_19_27_29 +master_zh_test同步数据表2021_11_23_11_29_17 +v1.0.79 + 1、被动391修改 我方流血显示修改 +master_zh_test同步数据表2021_11_22_18_00_26 +v1.0.78 + 1、被动112 258 360修改提交 + 2. 伤害公式修改 + 3.战斗超时 pvp添加战斗类型 +v1.0.77 + 1、第三批神魂提交 +v1.0.76 + 1、修复前后端战斗数据格式不一致导致的结果不一致 +master_zh_test同步数据表2021_11_16_11_07_25 +v1.0.75 + 1,添加不处理增伤的伤害接口 +master_zh_test同步数据表2021_11_15_17_10_47 +v1.0.74 + 1,第二期神魂技能 +master_zh_test同步数据表2021_11_08_18_01_19 +v1.0.73 + 1,被动285修改 +master_zh_test同步数据表2021_11_08_17_48_59 +v1.0.72 + 1,第一期神魂技能 +v1.0.71 + 1,灵兽技能检测添加初始化 + 2.追加技能特效修改 +v1.0.70 + 1、添加神魂被动技能 +master_zh_test同步数据表2021_11_01_14_07_31 +master_zh_test同步数据表2021_10_26_10_10_26 +master_zh_test同步数据表2021_10_25_18_57_36 +v1.0.69 + 1、战斗公式修改 +master_zh_test同步数据表2021_10_22_18_57_18 +v1.0.68 + 1、添加主角技能 + 2. 被动199修改 +master_zh_test同步数据表2021_10_18_11_00_42 +master_zh_test同步数据表2021_10_16_19_07_28 +master_zh_test同步数据表2021_10_16_19_06_48 +v1.0.67 + 1、被动344添加空判断 + 2. 战斗力公式修改 +master_zh_test同步数据表2021_10_12_15_58_23 +master_zh_test同步数据表2021_10_12_10_25_47 +master_zh_test同步数据表2021_10_11_18_25_43 +v1.0.66 + 1、被动312修改 +master_zh_test同步数据表2021_10_09_18_47_41 +master_zh_test同步数据表2021_10_09_18_46_50 +v1.0.65 + 1、被动116 258 281 312 344 250修改 + 2. 精卫借的怒气不会回复怒气 + 3. 添加不处理增伤被动的方法 +master_zh_test同步数据表2021_09_28_17_45_03 +v1.0.64 + 1、353 351 137 被动修改 + 2. 添加获取没有出发不灭的目标 +master_zh_test同步数据表2021_09_27_18_41_38 +v1.0.63 + 1、353被动修改 +v1.0.62 + 1、添加御甲buff + 2.添加最后一期紫府神印,添加白金装备被动 觉醒被动修改 +master_zh_test同步数据表2021_09_26_20_35_14 +master_zh_test同步数据表2021_09_18_21_14_36 +master_zh_test同步数据表2021_09_18_18_42_35 +v1.0.61 + 1、技能是否能释放 添加是否有技能目标判断 + 2.被动196 200 188 修改 +master_zh_test同步数据表2021_09_17_16_21_53 +master_zh_test同步数据表2021_09_15_20_05_28 +master_zh_test同步数据表2021_09_15_14_23_26 +master_zh_test同步数据表2021_09_14_15_46_46 +master_zh_test同步数据表2021_09_14_11_51_05 +v1.0.60 + 1、被动56修改 +master_zh_test同步数据表2021_09_11_18_04_19 +v1.0.59 + 1、被动261 修改 +master_zh_test同步数据表2021_09_10_18_24_51 + +v1.0.58 + 1、修复方法缺失报错 +v1.0.57 + 1、尝试修复孙悟空大招不会增加伤害的问题 + 2、添加用于debug的log +master_zh_test同步数据表2021_09_07_11_00_31 +v1.0.56 + 1.选生命百分比最少目标逻辑修改 去掉有不灭单位 + 2. 死亡不把怒气显示清空 + 3.被动99 307 选目标逻辑修改 +v1.0.55 + 1.被动263 269 274 332 112 145 修改 + 2. 添加战斗日志 +v1.0.54 + 1. 被动91 被动115 160修改 + 2. Dot类buff清除逻辑修改 +master_zh_test同步数据表2021_08_27_18_25_18 +master_zh_test同步数据表2021_08_21_16_34_06 +v1.0.54 + 1. 被动141 310 283 330 336修改 +master_zh_test同步数据表2021_08_02_19_27_29 v1.0.53 1. 随机种子修改 master_zh_test同步数据表2021_07_31_17_55_16 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java index f2e304517..49ab90a24 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/crossServer/CrossLingmaiSecretAreaBattleHandler.java @@ -112,6 +112,7 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler