探索事件

back_recharge
xuexinpeng 2022-03-21 16:33:26 +08:00
parent 204c7e9d0c
commit 293e9869b4
23 changed files with 1242 additions and 159 deletions

View File

@ -185,13 +185,13 @@ function BattleMain.Execute(args, fightData, optionData)
end) then
local resultList = {0, 0, 0, 0, 0, 0}
if BattleLogic.Result == 1 then --胜利记录我方剩余血量
local arr = RoleManager.Query(function (r) return r.camp == 0 end, true)
local arr = RoleManager.QueryIncludeExile(function (r) return r.camp == 0 end, true)
for i=1, #arr do
local pos = arr[i].position
resultList[pos] = arr[i]:GetRoleData(RoleDataName.Hp)
end
elseif BattleLogic.Result == 0 then --失败记录敌方剩余血量
local arr = RoleManager.Query(function (r) return r.camp == 1 end, true)
local arr = RoleManager.QueryIncludeExile(function (r) return r.camp == 1 end, true)
for i=1, #arr do
local pos = arr[i].position
resultList[pos] = arr[i]:GetRoleData(RoleDataName.Hp)
@ -212,12 +212,12 @@ function BattleMain.Execute(args, fightData, optionData)
if curRound > maxRound and _type == BATTLE_SERVER_TYPE.SenLuoHuanJing then -- 森罗幻境超时返回两边血量战斗结果为2
resultList = {0, 0, 0, 0, 0, 0}
-- 第一位保存我方血量
local arr = RoleManager.Query(function (r) return r.camp == 0 end, true)
local arr = RoleManager.QueryIncludeExile(function (r) return r.camp == 0 end, true)
if arr[1] then
resultList[1] = arr[1]:GetRoleData(RoleDataName.Hp)
end
-- 第二位保存地方血量
local arr = RoleManager.Query(function (r) return r.camp == 1 end, true)
local arr = RoleManager.QueryIncludeExile(function (r) return r.camp == 1 end, true)
if arr[1] then
resultList[2] = arr[1]:GetRoleData(RoleDataName.Hp)
end

View File

@ -0,0 +1,584 @@
package com.ljsd.jieling.util;
import rpc.protocols.CommonProto;
import config.*;
import manager.STableManager;
import org.luaj.vm2.LuaTable;
import org.luaj.vm2.LuaValue;
import util.StringUtil;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class FightDataUtil {
/**
*
*
* @param data
* @return
*/
public static LuaValue getOptionData(String data) {
LuaValue LuaTable = new LuaTable();
LuaTable.set("uid",data);
// LuaTable.set("enemyData", getEnemyData(monsterTeamList));
//
// if (data.equals("") || data==null){
// return new LuaTable();
// }
// String[] tempData1 = data.split("\\|");
// LuaValue tableA = new LuaTable();
// for (int i = 0; i < tempData1.length; i++) {
// String[] tempData2 = tempData1[i].split("#");
// LuaValue tableB = new LuaTable();
// for (int j = 0; j < tempData2.length; j++) {
// tableB.rawset(j + 1, LuaValue.valueOf(Integer.parseInt(tempData2[j])));
// }
// tableA.rawset(i + 1, tableB);
// }
return LuaTable;
}
public static LuaValue getFinalFightData(CommonProto.FightTeamInfo heroTeam, List<CommonProto.FightTeamInfo> monsterTeamList) {
LuaValue LuaTable = new LuaTable();
LuaTable.set("playerData", getPlayerData(heroTeam,0));
LuaTable.set("enemyData", getEnemyData(monsterTeamList));
return LuaTable;
}
public static LuaValue getFinalPlayerFightData(CommonProto.FightTeamInfo heroTeam, CommonProto.FightTeamInfo enemyHeroTeam) {
return getFinalPlayerFightData(heroTeam,enemyHeroTeam,false);
}
public static LuaValue getFinalPlayerFightData(CommonProto.FightTeamInfo heroTeam, CommonProto.FightTeamInfo enemyHeroTeam,boolean firstCamp) {
LuaValue LuaTable = new LuaTable();
LuaTable.set("playerData", getPlayerData(heroTeam,0));
LuaValue enemyData = new LuaTable();
enemyData.rawset( 1, getPlayerData(enemyHeroTeam,1,firstCamp));
LuaTable.set("enemyData", enemyData);
return LuaTable;
}
public static LuaValue getEnemyData(List<CommonProto.FightTeamInfo> enemyDataList) {
LuaValue enemyData = new LuaTable();
for (int i = 0; i < enemyDataList.size(); i++) {
enemyData.rawset(i + 1, getMonsterFightUnit(enemyDataList.get(i)));
}
return enemyData;
}
private static LuaValue getMonsterFightUnit(CommonProto.FightTeamInfo data) {
LuaValue enemyData = new LuaTable();
for (int i = 0; i < data.getFightUnitListCount(); i++) {
CommonProto.FightUnitInfo unitInfo = data.getFightUnitList(i);
String[] unitSkill = unitInfo.getUnitSkillIds().trim().split("#");
SMonsterConfig sMonster = STableManager.getConfig(SMonsterConfig.class).get(Integer.parseInt(unitInfo.getUnitId()));
LuaValue unitData = new LuaTable();
unitData.set("roleId", sMonster.getMonsterId());
unitData.set("professionId", sMonster.getProfession());
unitData.set("camp", 1);
unitData.set("type", sMonster.getType());
unitData.set("position",unitInfo.getPosition());
unitData.set("quality", sMonster.getQuality());
unitData.set("element",sMonster.getPropertyName());
unitData.set("skinId",sMonster.getSkinId());
SCHero hero = SCHero.getsCHero().get(sMonster.getMonsterId());
if(hero!=null){
unitData.set("job",hero.getJob());
unitData.set("star",hero.getStar());
}
if (unitSkill.length==1){
unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId()));
unitData.set("superSkill", new LuaTable());
unitData.set("passivity", new LuaTable());
}else if (unitSkill.length==2){
unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId()));
unitData.set("superSkill", getSkill(unitSkill[1],sMonster.getSkinId()));
unitData.set("passivity", new LuaTable());
}else {
unitData.set("skill", getSkill(unitSkill[0],sMonster.getSkinId()));
unitData.set("superSkill", getSkill(unitSkill[1],sMonster.getSkinId()));
unitData.set("passivity", getPassivity(unitSkill));
}
unitData.set("ai", getMonsterAi(sMonster.getMonsterAi()));
CommonProto.FightUnitInfo fightUnitList = data.getFightUnitList(i);
String property = fightUnitList.getProperty();
unitData.set("property", getMonsterProperty(property));
enemyData.rawset(i+1, unitData);
}
//todo 灵兽技能
enemyData.set("monsterList", getPokemonSkill(data.getPokemonUnitListList(),1));
enemyData.set("teamPassive", new LuaTable());
enemyData.set("teamSkill",new LuaTable());
return enemyData;
}
private static LuaValue getMonsterAi(int[] monsterAIs) {
LuaValue property = new LuaTable();
int index =1;
for(int monsterAI : monsterAIs){
property.rawset(index++, LuaValue.valueOf(monsterAI));
}
return property;
}
private static LuaValue getPassivity(String[] unitSkill) {
LuaValue passivityData = new LuaTable();
int length = unitSkill.length;
if(length<3){
return passivityData;
}
int passivityIndex = 1;
Set<Integer> tempSet = new HashSet<>(8);
for(int i=2;i<length;i++){
int passivityId = Integer.parseInt(unitSkill[i]);
SPassiveSkillLogicConfig sPassiveSkillLogicConfig = SPassiveSkillLogicConfig.getConfig(passivityId);
if(sPassiveSkillLogicConfig.getCoverID()!=0)
tempSet.add(sPassiveSkillLogicConfig.getCoverID());
}
for(int i=2;i<length;i++){
LuaValue detail = new LuaTable();
int passivityId = Integer.parseInt(unitSkill[i]);
SPassiveSkillLogicConfig sPassiveSkillLogicConfig = SPassiveSkillLogicConfig.getConfig(passivityId);
if(sPassiveSkillLogicConfig.getEffectiveRange()!=1){
continue;
}
//如果有覆盖的则不添加
if(tempSet.contains(sPassiveSkillLogicConfig.getId())){
continue;
}
detail.rawset(1,LuaValue.valueOf(sPassiveSkillLogicConfig.getId()));
detail.rawset(2, LuaValue.valueOf(sPassiveSkillLogicConfig.getJudge()));
detail.rawset(3, LuaValue.valueOf(sPassiveSkillLogicConfig.getType()));
List<LuaValue> effectList = parseArraayToLuaValues(sPassiveSkillLogicConfig.getValue());
int size = effectList.size();
if (size > 0) {
for (int j = 0; j < size; j++) {
detail.rawset(j + 4, effectList.get(j));
}
}
passivityData.rawset(passivityIndex,detail);
passivityIndex++;
}
return passivityData;
}
private static List<LuaValue> parseArraayToLuaValues(float[] source) {
List<LuaValue> result = new ArrayList<>(source.length);
for(float id : source){
result.add(LuaValue.valueOf(id));
}
return result;
}
/**
* -- {,,,,,,,%,%,%,%,%,%,%
* -- ,%,%,%,%,%,%,%
* -- ,%,%,%,%,%}
* @return
*/
private static LuaValue getMonsterProperty(String propertyString) {
LuaValue property = new LuaTable();
int index =1;
for(String value : propertyString.split("#")){
property.rawset(index++, LuaValue.valueOf(value));
}
return property;
}
public static LuaValue getPlayerData(CommonProto.FightTeamInfo heroTeam,int position) {
return getPlayerData(heroTeam, position,false);
}
public static LuaValue getPlayerData(CommonProto.FightTeamInfo heroTeam,int position,boolean first) {
LuaValue playerData = new LuaTable();
for (int i = 1; i <= heroTeam.getFightUnitListCount(); i++) {
playerData.rawset(i, getHeroFightUnit(heroTeam.getFightUnitList(i - 1),position));
}
playerData.set("teamSkill",new LuaTable());
playerData.set("teamPassive", getTeamPassive(heroTeam.getTeamPassiveList()));
playerData.set("outData",heroTeam.getSpecialPassive());
// 灵兽技能
playerData.set("monsterList", getPokemonSkill(heroTeam.getPokemonUnitListList(),position));
playerData.set("firstCamp",first?1:0);
return playerData;
}
private static LuaValue getTeamPassive(String pokemonSkill) {
LuaValue passivityData = new LuaTable();
if (StringUtil.isEmpty(pokemonSkill)){
return passivityData;
}
String[] skills = pokemonSkill.trim().split("\\|");
for (int j = 0; j < skills.length; j++) {
if (skills[j].length()>0){
String[] unitSkill = skills[j].split("#");
if(unitSkill.length==0){
continue;
}
LuaValue passivityDataPer= new LuaTable();
for(int i=0;i<unitSkill.length;i++){
LuaValue detail = new LuaTable();
if(StringUtil.isEmpty(unitSkill[i]) || unitSkill[i].equals("0")){
continue;
}
int passivityId = Integer.parseInt(unitSkill[i]);
SPassiveSkillLogicConfig sPassiveSkillLogicConfig = SPassiveSkillLogicConfig.getConfig(passivityId);
detail.rawset(1, LuaValue.valueOf(sPassiveSkillLogicConfig.getType()));
List<LuaValue> effectList = parseArraayToLuaValues(sPassiveSkillLogicConfig.getValue());
int size = effectList.size();
if (size > 0) {
for (int t = 0; t < size; t++) {
detail.rawset(t + 2, effectList.get(t));
}
}
passivityDataPer.rawset(i+1,detail);
}
passivityData.rawset(j+1,passivityDataPer);
}
}
return passivityData;
}
//组装灵兽技能数据 camp=0 自己 1 对方
private static LuaValue getPokemonSkill(List<CommonProto.FightUnitInfo> pokemonUnitList, int camp) {
LuaValue teamSkill = new LuaTable();
if (pokemonUnitList.isEmpty()){
return teamSkill;
}
for (int i = 0; i < pokemonUnitList.size(); i++) {
CommonProto.FightUnitInfo unitInfo=pokemonUnitList.get(i);
String skillId = unitInfo.getUnitSkillIds();
if(skillId.equals("0")|| StringUtil.isEmpty(skillId)){
continue;
}
///100代表是修行技能
if (unitInfo.getPosition()==100){
LuaValue monster = new LuaTable();
monster.set("id",0);
monster.set("star",unitInfo.getStar());
monster.set("teamDamage",unitInfo.getForceScore());
monster.set("camp",camp);
monster.set("position",unitInfo.getPosition());
monster.set("property",getProperty(unitInfo.getProperty()));
String[] skillIdArr = skillId.split("#");
LuaValue skillList= new LuaTable();
for (int k = 0; k < skillIdArr.length; k++) {
SPlayerSkill playerSkillConfig=STableManager.getConfig(SPlayerSkill.class).get(Integer.valueOf(skillIdArr[k]));
LuaValue skill= new LuaTable();
int[] skillIDList = playerSkillConfig.getSkillIDList();
for(int j = 0 ; j <skillIDList.length;j++){
LuaValue oneSkill = new LuaTable();
oneSkill.rawset("triggerId",playerSkillConfig.getReleasePoint()[j]);
int[][] releaseLimit = playerSkillConfig.getReleaseLimit();
LuaValue triggerCondition = new LuaTable();
if(releaseLimit!=null&&releaseLimit.length>0&&releaseLimit[0].length>0){
for(int l = 0 ; l<releaseLimit[j].length;l++){
triggerCondition.rawset(l+1, LuaValue.valueOf(releaseLimit[j][l]));
}
}else{
triggerCondition.rawset(1,LuaValue.valueOf(0));
}
oneSkill.set("effect",getSkill(String.valueOf(skillIDList[j]),0));
oneSkill.set("triggerCondition",triggerCondition);
oneSkill.set("maxCount",playerSkillConfig.getWarEffectCount()[j]);
oneSkill.set("maxRoundCount",playerSkillConfig.getTurnEffectCount()[j]);
skill.rawset(j+1,oneSkill);
}
skillList.rawset(k+1,skill);
}
monster.set("skill",skillList);
teamSkill.rawset(i+1,monster);
}else{
SSpiritAnimalSkill sSpiritAnimalSkill=STableManager.getConfig(SSpiritAnimalSkill.class).get(Integer.valueOf(skillId));
LuaValue monster = new LuaTable();
monster.set("id",sSpiritAnimalSkill.getSpiritAnimalMatch());
monster.set("star",sSpiritAnimalSkill.getStarMatch());
monster.set("camp",camp);
monster.set("position",unitInfo.getPosition());
monster.set("property",getProperty(unitInfo.getProperty()));
String[] skillIdArr = skillId.split("#");
LuaValue skillList= new LuaTable();
for (int k = 0; k < skillIdArr.length; k++) {
LuaValue skill = new LuaTable();
int[] skillIDList = sSpiritAnimalSkill.getSkillIDList();
for (int j = 0; j < skillIDList.length; j++) {
LuaValue oneSkill = new LuaTable();
oneSkill.rawset("triggerId", sSpiritAnimalSkill.getReleasePoint()[j]);
int[][] releaseLimit = sSpiritAnimalSkill.getReleaseLimit();
LuaValue triggerCondition = new LuaTable();
if (releaseLimit != null && releaseLimit.length > 0 && releaseLimit[0].length > 0) {
for (int l = 0; l < releaseLimit[j].length; l++) {
triggerCondition.rawset(l + 1, LuaValue.valueOf(releaseLimit[j][l]));
}
} else {
triggerCondition.rawset(1, LuaValue.valueOf(0));
}
oneSkill.set("effect", getSkill(String.valueOf(skillIDList[j]), 0));
oneSkill.set("triggerCondition", triggerCondition);
oneSkill.set("maxCount", sSpiritAnimalSkill.getWarEffectCount()[j]);
oneSkill.set("maxRoundCount", sSpiritAnimalSkill.getTurnEffectCount()[j]);
skill.rawset(j + 1, oneSkill);
}
skillList.rawset(k+1,skill);
}
monster.set("skill",skillList);
// String[] skillAndPosItem = skillAndPos.split("#");
// if (Integer.parseInt(skillAndPosItem[1])>0){
// teamSkill.rawset(i + 1, getSkill(skillAndPosItem[1],skillAndPosItem[0]));
// }
teamSkill.rawset(i+1,monster);
}
}
return teamSkill;
}
/**
*
* @param data
* @param postion 0: 1
* @return
*/
private static LuaValue getHeroFightUnit(CommonProto.FightUnitInfo data,int postion) {
String unitId = data.getUnitId();
String[] skillIds = data.getUnitSkillIds().trim().split("#");
String property = data.getProperty();
SCHero hero = SCHero.getsCHero().get(Integer.parseInt(unitId));
LuaValue unitData = new LuaTable();
unitData.set("roleId", hero.getId());
unitData.set("professionId", hero.getProfession());
unitData.set("camp", postion);
unitData.set("type", 1);
unitData.set("quality", 1);
unitData.set("position", data.getPosition());
unitData.set("element", hero.getPropertyName());
unitData.set("skill", getSkill(skillIds[0],data.getSkinId()));
if(skillIds.length == 1){
unitData.set("superSkill", getSkill(null,data.getSkinId()));
}else {
unitData.set("superSkill", getSkill(skillIds[1],data.getSkinId()));
}
unitData.set("passivity", getPassivity(skillIds));
unitData.set("property", getProperty(property));
unitData.set("skinId",data.getSkinId());
unitData.set("job",hero.getJob());
unitData.set("star",data.getStar());
return unitData;
}
private static LuaValue getProperty(String dataList) {
String[] propertyArr = dataList.trim().split("#");
LuaValue property = new LuaTable();
for (int i = 1; i <= propertyArr.length; i++) {
property.rawset(i, LuaValue.valueOf(Double.parseDouble(propertyArr[i-1])));
}
return property;
}
private static LuaValue getSkill(String skillId,int skinId) {
LuaValue skill = new LuaTable();
if (StringUtil.isEmpty(skillId)){
return skill;
}
SSkillLogicVo sSkillLogicVo = SSkillLogicConfig.getsSkillLogicVo(Integer.parseInt(skillId));
if (sSkillLogicVo != null && sSkillLogicVo.getSkillTargetVoList().size()>0) {
// float cd = sSkillLogicVo.getCd();
// if(args!=null&&args.length>0){
// cd+=Integer.parseInt(args[0]);
// }
skill.rawset(1, LuaValue.valueOf(skillId));
int[][] display =sSkillLogicVo.getSkillDisplay();
int skillDisplay = display[0][0];
for(int[] skillArray:display){
if(skillArray[0]==skinId){
skillDisplay = skillArray[1];
break;
}
}
SCombatControl sCombatControl = STableManager.getConfig(SCombatControl.class).get(skillDisplay);
int KeyFrame = sCombatControl.getKeyFrame();
int SkillDuration = sCombatControl.getSkillDuration();
int SkillNumber = sCombatControl.getSkillNumber();
skill.rawset(2, LuaValue.valueOf(KeyFrame/1000f));
skill.rawset(3, LuaValue.valueOf(SkillDuration/1000f));
skill.rawset(4, LuaValue.valueOf(SkillNumber));
List<LuaValue> effectList = getEffect(sSkillLogicVo);
int size = effectList.size();
if (size > 0) {
for (int i = 0; i < size; i++) {
skill.rawset(i + 5, effectList.get(i));
}
}
}
return skill;
}
private static List<LuaValue> getEffect(SSkillLogicVo sSkillLogicVo) {
List<LuaValue> effectList = new ArrayList<>();
for (SkillTargetVo skillTargetVos : sSkillLogicVo.getSkillTargetVoList()) {
LuaValue effect = new LuaTable();
effect.rawset(1, LuaValue.valueOf(skillTargetVos.getTargetId()));
List<LuaValue> effectValueList = getEffectArgs(skillTargetVos.getEffectVale());
int size = effectValueList.size();
if (size > 0) {
for (int i = 0; i < size; i++) {
effect.rawset(i + 2, effectValueList.get(i));
}
}
effectList.add(effect);
}
return effectList;
}
private static List<LuaValue> getEffectArgs(float[][] effects) {
List<LuaValue> effectValueList = new ArrayList<>();
int sizeY = effects.length;
if (sizeY > 0) {
for (int i = 0; i < sizeY; i++) {
int sizeX = effects[i].length;
LuaValue effectValue = new LuaTable();
for (int j = 0; j < sizeX; j++) {
effectValue.rawset(j + 1, LuaValue.valueOf(effects[i][j]));
}
effectValueList.add(effectValue);
}
}
return effectValueList;
}
//==================================test data =================================
public static LuaValue getTestFightData() {
LuaValue LuaTable = new LuaTable();
LuaTable.set("playerData", getTestPlayerData());
LuaTable.set("enemyData", getTestEnemyData());
return LuaTable;
}
private static LuaValue getTestEnemyData() {
LuaValue playerDataMap = new LuaTable();
LuaValue playerData = new LuaTable();
for (int i = 1; i <= 5; i++) {
playerData.rawset(i, getTestFightUnit(false));
}
playerData.set("teamSkill", new LuaTable());
for (int i = 1; i <= 3; i++) {
playerDataMap.rawset(i, playerData);
}
return playerDataMap;
}
private static LuaValue getTestFightUnit(boolean b) {
LuaValue unitData = new LuaTable();
unitData.set("type", 1);
unitData.set("quality", 1);
unitData.set("skill", getTestSkill(true));
unitData.set("passivity", getTestSkill(false));
if (b) {
unitData.set("roleId", 10001);
unitData.set("professionId", 4);
unitData.set("camp", 0);
unitData.set("superSkill", getTestSkill(true));
unitData.set("property", getTestProperty(true));
} else {
unitData.set("roleId", 1);
unitData.set("professionId", 2);
unitData.set("camp", 1);
unitData.set("superSkill", getTestSkill(false));
unitData.set("property", getTestProperty(false));
}
return unitData;
}
public static final Double[] propertyEm = new Double[]{
1d, 144d, 144d, 285d, 152d, 53d, 154d, 0d, 0d, 0.7, 0.35, 0.3, 1.5, 1d, 0d, 0d, 0d, 0d, 0.05, 0d, 0d, 0d, 0d, 0d, 0.05, 0d
};
public static final Double[] propertyHero = new Double[]{
1d, 10000d, 10000d, 169d, 271d, 95d, 176d, 0d, 0d, 0.3, 0.15, 0.3, 1.5, 1d, 0.05, 0d, 0d, 0d, 0d, 0d, 0.05, 0d, 0d, 0d, 0d, 0d
};
private static LuaValue getTestProperty(boolean isHero) {
LuaValue property = new LuaTable();
if (isHero) {
for (int i = 1; i <= propertyHero.length; i++) {
property.rawset(i, LuaValue.valueOf(propertyHero[i - 1]));
}
} else {
for (int i = 1; i <= propertyEm.length; i++) {
property.rawset(i, LuaValue.valueOf(propertyEm[i - 1]));
}
}
return property;
}
//"{1, 10000, 10000, 169, 271, 95, 176, 0, 0, 0.3, 0.15, 0.3, 1.5, 1, 0.05, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0}"
//{ 0.5, {20011, 0.7,{1, 0.1, 1}}}
private static LuaValue getTestSkill(boolean notNull) {
LuaValue skill = new LuaTable();
if (notNull) {
skill.rawset(1, LuaValue.valueOf(0.5));
skill.rawset(2, getTestEffect());
}
return skill;
}
private static LuaValue getTestEffect() {
LuaValue effect = new LuaTable();
effect.rawset(1, LuaValue.valueOf(20011));
effect.rawset(2, LuaValue.valueOf(0.7));
effect.rawset(3, getTestEffectArgs());
return effect;
}
private static LuaValue getTestEffectArgs() {
LuaValue effectArgs = new LuaTable();
effectArgs.rawset(1, LuaValue.valueOf(1));
effectArgs.rawset(2, LuaValue.valueOf(0.1));
effectArgs.rawset(3, LuaValue.valueOf(1));
return effectArgs;
}
private static LuaValue getTestPlayerData() {
LuaValue playerData = new LuaTable();
for (int i = 1; i <= 5; i++) {
playerData.rawset(i, getTestFightUnit(true));
}
playerData.set("teamSkill", new LuaTable());
return playerData;
}
}

View File

@ -1,8 +1,8 @@
local HardStage = {
__count = 665,
__indexs = {1.91,82,1.81,2.1,4.1,8.1,16.1,32.1,4.1},
__values = {-719,-2.2,3,10,5,10,4,6,3,5,16,2,5,-6.2,36,1,10,29,8,41,39,3,17,3,9,3,1,3,1,5,1,-2.2,4,-2.2,7,2,1,4,1,3,3.1,1,9.4,12,1,4,2,7,1,5,30.3,2,13,1,9,3,7,2,12,4,6,1,7,2,6,22.3,4,3,4,2,6,8,5,6,1,5,2,58.3,2,5,53.3,3,1,14,-2.2,49.3,6,1,2,4,1.5,4,7,3,1,11,5,8,1,3,1.2,4,3,8,12,4,7,-4.2,2,10,1,9,13,40.3,1.253,7,32.3,5,10,1,6,-4.3,1.2,-2.4,1.2,2,2.1,60.3,8,5.3,4,6,10,4,3,21,7,3,-2.9,4,8,2,10,12,4,14,13,3,12,1.4,-2.7,82,3.1,3.1,-2.9,8,2,72,-2.5,1.8,7.2,2.1,4.1,8.1,16.1,16.51,-2.8,288,6295,1.42,2,1.9,97.3,1.5,27,1.3,9,1.7,3911,1,3,7,988,1005,996,1.3,32994,-5000.2,10000,-5000.6,20000,10000,6,4,996,3994,5000,-2500.2,5000,40000,20000,-10000.2,7500,2500,10000,55000,1.973,621,-2.9,1,2.1,4.1,8.1,16.1,8.7,40.1,40.1,21621,40000,-20000.2,17500,2500,20000,140000,70000,-35000.2,30000,5000,35000,160000,80000,-40000.2,-20000.2,40000,80000,40000,-10000.2,-20000.3,4.2,-20000.4,120000,60000,25000,5000,-30000.3,17.2,40000,22.2,-40000.2,6.2,25000,15000,-40000.3,180000,90000,-22500.2,-45000.3,4.2,-45000.4,180000,67500,22500,4.2,-45000.6,180000,22500,67500,6.2,13.2,157500,22500,4.2,40000,100000,70000,-35000.4,22500,117500,4.2,292000,74000,72000,-73000.4,996000,498000,-249000.2,9500,239500,249000,1012000,506000,253000,144000,109000,-253000.2,1028000,514000,257000,27500,229500,-257000.2,1052000,526000,177000,86000,-263000.3,1068000,534000,59500,207500,-267000.3,1084000,482000,60000,-271000.4,1104000,374000,178000,-276000.4,1124000,263500,298500,-281000.4,1560001,-100.51,8500,2.1,4.1,8.1,16.1,32.1,6.5,278499,1090000,485000,60000,-545000.3,3240000,1620000,810000,330000,480000,-810000.2,3000300,50,1799650,2400000,1200000,900000,300000,-1200000.2,5600000,2800000,1400000,800000,600000,-1400000.2,8800000,4400000,2200000,2100000,100000,-2200000.2,14000000,7000000,-3500000.4},
__exVals = {425,nil,-183.56,-685.71,-552.79,-664.62,-450.46,-443.08,-400.88,-310.15,-37.98,-92.84,130.81,217.32,417.76,352.35,409.32,620.31,607.65,450.46,-630.1,-645.7,-722.6,605.54,262.68,7.38,-366.07,-119.21,-341.80,123.43,368.18,289.05,48.53,-401.93,-79.12,-425.14,-197.27,13.71,297.49,213.10,340.75,169.85,-152.97,86.5,-77.2,-184.4,-237.3,-298.9,458.9,29.54,-262.68,-7.38,366.07,119.21,-341.8,-123.43,-368.18,-289.05,-48.53,401.93,79.12,425.14,197.27,-13.71,-297.49,213.1,-340.75,-169.85,152.97,-86.5,77.2,184.4,237.3,298.9,-458.9,-29.54,'1-1','1-2','1-3','1-4','1-5','1-6','1-7','1-8','1-9','2-1','2-2','2-3','2-4','2-5','2-6','2-7','2-8','2-9','3-1','3-2','3-3','3-4','3-5','3-6','3-7','3-8','3-9','4-1','4-2','4-3','4-4','4-5','4-6','4-7','4-8','4-9','5-1','5-2','5-3','5-4','5-5','5-6','5-7','5-8','5-9','6-1','6-2','6-3','6-4','6-5','6-6','6-7','6-8','6-9','7-1','7-2','7-3','7-4','7-5','7-6','7-7','7-8','7-9','8-1','8-2','8-3','8-4','8-5','8-6','8-7','8-8','8-9','9-1','9-2','9-3','9-4','9-5','9-6','9-7','9-8','9-9','10-1','10-2','10-3','10-4','10-5','10-6','10-7','10-8','10-9','11-1','11-2','11-3','11-4','11-5','11-6','11-7','11-8','11-9','12-1','12-2','12-3','12-4','12-5','12-6','12-7','12-8','12-9','13-1','13-2','13-3','13-4','13-5','13-6','13-7','13-8','13-9','14-1','14-2','14-3','14-4','14-5','14-6','14-7','14-8','14-9','15-1','15-2','15-3','15-4','15-5','15-6','15-7','15-8','15-9','16-1','16-2','16-3','16-4','16-5','16-6','16-7','16-8','16-9','17-1','17-2','17-3','17-4','17-5','17-6','17-7','17-8','17-9','18-1','18-2','18-3','18-4','18-5','18-6','18-7','18-8','18-9','19-1','19-2','19-3','19-4','19-5','19-6','19-7','19-8','19-9','20-1','20-2','20-3','20-4','20-5','20-6','20-7','20-8','20-9','21-1','21-2','21-3','21-4','21-5','21-6','21-7','21-8','21-9','22-1','22-2','22-3','22-4','22-5','22-6','22-7','22-8','22-9','23-1','23-2','23-3','23-4','23-5','23-6','23-7','23-8','23-9','24-1','24-2','24-3','24-4','24-5','24-6','24-7','24-8','24-9','25-1','25-2','25-3','25-4','25-5','25-6','25-7','25-8','25-9','26-1','26-2','26-3','26-4','26-5','26-6','26-7','26-8','26-9','27-1','27-2','27-3','27-4','27-5','27-6','27-7','27-8','27-9','28-1','28-2','28-3','28-4','28-5','28-6','28-7','28-8','28-9','29-1','29-2','29-3','29-4','29-5','29-6','29-7','29-8','29-9','30-1','30-2','30-3','30-4','30-5','30-6','30-7','30-8','30-9','31-1','31-2','31-3','31-4','31-5','31-6','31-7','31-8','31-9','32-1','32-2','32-3','32-4','32-5','32-6','32-7','32-8','32-9','33-1','33-2','33-3','33-4','33-5','33-6','33-7','33-8','33-9','34-1','34-2','34-3','34-4','34-5','34-6','34-7','34-8','34-9','35-1','35-2','35-3','35-4','35-5','35-6','35-7','35-8','35-9','1-10','2-10','3-10','4-10','5-10','6-10','7-10','8-10','9-10','10-10','11-10','12-10','13-10','14-10','15-10','16-10','17-10','18-10','19-10','20-10','21-10','22-10','23-10','24-10','25-10','26-10','27-10','28-10','29-10','30-10','31-10','32-10','33-10','34-10','35-10'},
__count = 855,
__indexs = {1.91,82,1.81,2.1,4.1,8.1,16.1,32.1,24.1},
__values = {-719,-2.2,3,10,5,10,4,6,3,5,16,2,5,-6.2,36,1,10,29,8,41,39,3,17,3,9,3,1,3,1,5,1,-2.2,4,-2.2,7,2,1,4,1,3,3.1,1,9.4,12,1,4,2,7,1,5,30.3,2,13,1,9,3,7,2,12,4,6,1,7,2,6,22.3,4,3,4,2,6,8,5,6,1,5,2,58.3,2,5,53.3,3,1,14,-2.2,49.3,6,1,2,4,1.5,4,7,3,1,11,5,8,1,3,1.2,4,3,8,12,4,7,-4.2,2,10,1,9,13,40.3,1.154,3,10,4,3,21,7,3,-2.11,8,2,8,79.3,14,13,3,12,1.4,-2.7,82,3.1,3.1,-2.9,7,131.2,1,2,67,-2.5,1.8,10.2,2.1,4.1,8.1,16.1,32.1,4.3,-2.8,5583,1.42,2,1.31,2,1.5,27,1.3,9,1.7,3909,1001,1005,996,1.3,32994,-5000.2,10000,-5000.6,30006,4,996,68994,50000,-25000.2,5000,1.973,621,-2.9,1,2.1,4.1,8.1,16.1,8.7,40.1,40.1,16621,7500,17500,56000,28000,-14000.2,3500,10500,14000,200000,100000,-50000.3,500,49500,284000,142000,-71000.2,57000,14000,71000,260000,130000,-65000.2,12500,52500,65000,244000,122000,61000,35000,26000,-61000.2,304000,152000,76000,42000,34000,-76000.2,200000,89000,11000,-50000.4,564000,282000,-141000.2,500,140500,141000,252000,65000,61000,-63000.4,376000,188000,16000,78000,-94000.3,448000,224000,32000,80000,-112000.3,452000,205500,20500,-113000.4,580000,290000,35000,110000,-145000.3,780000,390000,137500,57500,-195000.3,528000,83500,180500,-132000.4,1264000,632000,316000,81500,234500,-316000.2,988000,492000,2000,-247000.4,1200000,600000,60000,240000,-300000.3,1360000,680000,50000,290000,-340000.3,400000,320000,360000,-180000.4,1440000,570001,-100.51,8499,1,-100.51,8500,2.1,4.1,8.1,12.11,29.1,26.1,6.1,68499,70000,290000,-360000.2,240000,120000,-60000.4,1760000,810000,70000,-440000.4,2120000,1060000,25000,505000,-530000.3,2200000,900300,50,29650,170000,-550000.4,2320000,820000,340000,-580000.4,4280000,2140000,1070000,15000,1055000,-1070000.2,2720000,545000,815000,-680000.4,5880000,2940000,1470000,140000,1330000,-1470000.2,10920000,5460000,2730000,2555000,175000,-2730000.2,7600000,3800000,1015000,885000,-1900000.3,5.2,65000,1835000,5.2,2915000,885000,-1900000.4,3200000,1720000,2460000,-1230000.4,4105000,1455000,2780000,-1390000.4,3885000,1875000,2880000,-1440000.4,3545000,2375000,2960000,-1480000.4,3280000,2840000,3060000,-1530000.4,2895000,3385000,3140000,-1570000.4,2585000,3895000,3240000,-1620000.4,2250000,4430000,3340000,-1670000.4,1795000,5045000,3420000,-1710000.4,7080000,3540000,-1770000.4},
__exVals = {525,nil,-183.56,-685.71,-552.79,-664.62,-450.46,-443.08,-400.88,-310.15,-37.98,-92.84,130.81,217.32,417.76,352.35,409.32,620.31,607.65,450.46,-630.1,-645.7,-722.6,605.54,262.68,7.38,-366.07,-119.21,-341.80,123.43,368.18,289.05,48.53,-401.93,-79.12,-425.14,-197.27,13.71,297.49,213.10,340.75,169.85,-152.97,-262.68,-7.38,366.07,119.21,-341.8,-123.43,-368.18,-289.05,-48.53,401.93,79.12,425.14,197.27,-13.71,-297.49,213.1,-340.75,-169.85,152.97,86.5,-77.2,-184.4,-237.3,-298.9,458.9,29.54,-86.5,77.2,184.4,237.3,298.9,-458.9,-29.54,'1-1','1-2','1-3','1-4','1-5','1-6','1-7','1-8','1-9','2-1','2-2','2-3','2-4','2-5','2-6','2-7','2-8','2-9','3-1','3-2','3-3','3-4','3-5','3-6','3-7','3-8','3-9','4-1','4-2','4-3','4-4','4-5','4-6','4-7','4-8','4-9','5-1','5-2','5-3','5-4','5-5','5-6','5-7','5-8','5-9','6-1','6-2','6-3','6-4','6-5','6-6','6-7','6-8','6-9','7-1','7-2','7-3','7-4','7-5','7-6','7-7','7-8','7-9','8-1','8-2','8-3','8-4','8-5','8-6','8-7','8-8','8-9','9-1','9-2','9-3','9-4','9-5','9-6','9-7','9-8','9-9','10-1','10-2','10-3','10-4','10-5','10-6','10-7','10-8','10-9','11-1','11-2','11-3','11-4','11-5','11-6','11-7','11-8','11-9','12-1','12-2','12-3','12-4','12-5','12-6','12-7','12-8','12-9','13-1','13-2','13-3','13-4','13-5','13-6','13-7','13-8','13-9','14-1','14-2','14-3','14-4','14-5','14-6','14-7','14-8','14-9','15-1','15-2','15-3','15-4','15-5','15-6','15-7','15-8','15-9','16-1','16-2','16-3','16-4','16-5','16-6','16-7','16-8','16-9','17-1','17-2','17-3','17-4','17-5','17-6','17-7','17-8','17-9','18-1','18-2','18-3','18-4','18-5','18-6','18-7','18-8','18-9','19-1','19-2','19-3','19-4','19-5','19-6','19-7','19-8','19-9','20-1','20-2','20-3','20-4','20-5','20-6','20-7','20-8','20-9','21-1','21-2','21-3','21-4','21-5','21-6','21-7','21-8','21-9','22-1','22-2','22-3','22-4','22-5','22-6','22-7','22-8','22-9','23-1','23-2','23-3','23-4','23-5','23-6','23-7','23-8','23-9','24-1','24-2','24-3','24-4','24-5','24-6','24-7','24-8','24-9','25-1','25-2','25-3','25-4','25-5','25-6','25-7','25-8','25-9','26-1','26-2','26-3','26-4','26-5','26-6','26-7','26-8','26-9','27-1','27-2','27-3','27-4','27-5','27-6','27-7','27-8','27-9','28-1','28-2','28-3','28-4','28-5','28-6','28-7','28-8','28-9','29-1','29-2','29-3','29-4','29-5','29-6','29-7','29-8','29-9','30-1','30-2','30-3','30-4','30-5','30-6','30-7','30-8','30-9','31-1','31-2','31-3','31-4','31-5','31-6','31-7','31-8','31-9','32-1','32-2','32-3','32-4','32-5','32-6','32-7','32-8','32-9','33-1','33-2','33-3','33-4','33-5','33-6','33-7','33-8','33-9','34-1','34-2','34-3','34-4','34-5','34-6','34-7','34-8','34-9','35-1','35-2','35-3','35-4','35-5','35-6','35-7','35-8','35-9','36-1','36-2','36-3','36-4','36-5','36-6','36-7','36-8','36-9','37-1','37-2','37-3','37-4','37-5','37-6','37-7','37-8','37-9','38-1','38-2','38-3','38-4','38-5','38-6','38-7','38-8','38-9','39-1','39-2','39-3','39-4','39-5','39-6','39-7','39-8','39-9','40-1','40-2','40-3','40-4','40-5','40-6','40-7','40-8','40-9','41-1','41-2','41-3','41-4','41-5','41-6','41-7','41-8','41-9','42-1','42-2','42-3','42-4','42-5','42-6','42-7','42-8','42-9','43-1','43-2','43-3','43-4','43-5','43-6','43-7','43-8','43-9','44-1','44-2','44-3','44-4','44-5','44-6','44-7','44-8','44-9','45-1','45-2','45-3','45-4','45-5','45-6','45-7','45-8','45-9','1-10','2-10','3-10','4-10','5-10','6-10','7-10','8-10','9-10','10-10','11-10','12-10','13-10','14-10','15-10','16-10','17-10','18-10','19-10','20-10','21-10','22-10','23-10','24-10','25-10','26-10','27-10','28-10','29-10','30-10','31-10','32-10','33-10','34-10','35-10','36-10','37-10','38-10','39-10','40-10','41-10','42-10','43-10','44-10','45-10'},
__fields = {
'Id',
'Chapter',
@ -47,25 +47,25 @@ __defaults = {
nil
},
__refs = {
{144,.81,1,2.1,4.1,8.1,16.1,32.1,6.5},
{144,1.81,-18,2.1,4.1,8.1,16.1,32.1,6.5},
{144,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,1,-11,12,-12,13,-13,14,-14,15,-15,16,-16,17,-17,18,-18,19,-19,20,1,-21,22,-22,23,-23,24,-24,25,-25,26,-26,27,-27,28,-28,29,-29,30,1,-31,32,-32,33,-33,34,-34,35,-35,36,-36,37,-37,38,-38,39,-39,40,1,-41,42,-42,43,-43,44,-44,45,-45,46,-46,47,-47,48,-48,49,-49,50,1,-51,52,-52,53,-53,54,-54,55,-55,56,-56,57,-57,58,-58,59,-59,60,1,-61,62,-62,63,-63,64,-64,65,-65,66,-66,67,-67,68,-68,69,-69,70,1,-71,72,-72,73,-73,74,-74,75,-75,76,-76,77,-77,78,-78,79,-79,80,1,-81,82,-82,83,-83,84,-84,85,-85,86,-86,87,-87,88,-88,89,-89,90,1,-91,92,-92,93,-93,94,-94,95,-95,96,-96,97,-97,98,-98,99,-99,100,1,-101,102,-102,103,-103,104,-104,105,-105,106,-106,107,-107,108,-108,109,-109,110,1,-111,112,-112,113,-113,114,-114,115,-115,116,-116,117,-117,118,-118,119,-119,120,1,-121,122,-122,123,-123,124,-124,125,-125,126,-126,127,-127,128,-128,129,-129,130,1,-131,132,-132,133,-133,134,-134,135,-135,136,-136,137,-137,138,-138,139,-139,140,1,-141,142,-142,143,-143,144,-144,145,-145,146,-146,147,-147,148,-148,149,-149,150,1,-151,152,-152,153,-153,154,-154,155,-155,156,-156,157,-157,158,-158,159,-159,160,1,-161,162,-162,163,-163,164,-164,165,-165,166,-166,167,-167,168,-168,169,-169,170,1,-171,172,-172,173,-173,174,-174,175,-175,176,-176,177,-177,178,-178,179,-179,180,1,-181,182,-182,183,-183,184,-184,185,-185,186,-186,187,-187,188,-188,189,-189,190,1,-191,192,-192,193,-193,194,-194,195,-195,196,-196,197,-197,198,-198,199,-199,200,1,-201,202,-202,203,-203,204,-204,205,-205,206,-206,207,-207,208,-208,209,-209,210,1,-211,212,-212,213,-213,214,-214,215,-215,216,-216,217,-217,218,-218,219,-219,220,1,-221,222,-222,223,-223,224,-224,225,-225,226,-226,227,-227,228,-228,229,-229,230,1,-231,232,-232,233,-233,234,-234,235,-235,236,-236,237,-237,238,-238,239,-239,240,1,-241,242,-242,243,-243,244,-244,245,-245,246,-246,247,-247,248,-248,249,-249,250,1,-251,252,-252,253,-253,254,-254,255,-255,256,-256,257,-257,258,-258,259,-259,260,1,-261,262,-262,263,-263,264,-264,265,-265,266,-266,267,-267,268,-268,269,-269,270,1,-271,272,-272,273,-273,274,-274,275,-275,276,-276,277,-277,278,-278,279,-279,280,1,-281,282,-282,283,-283,284,-284,285,-285,286,-286,287,-287,288,-288,289,-289,290,1,-291,292,-292,293,-293,294,-294,295,-295,296,-296,297,-297,298,-298,299,-299,300,1,-301,302,-302,303,-303,304,-304,305,-305,306,-306,307,-307,308,-308,309,-309,310,1,-311,312,-312,313,-313,314,-314,315,-315,316,-316,317,-317,318,-318,319,-319,320,1,-321,322,-322,323,-323,324,-324,325,-325,326,-326,327,-327,328,-328,329,-329,330,1,-331,332,-332,333,-333,334,-334,335,-335,336,-336,337,-337,338,-338,339,-339,340,1,-341,342,-342,343,-343,344,-344,345,-345,346,-346,347,-347,348,-348,349,-349,350},
{2783,0,1,0,1,4.1,8.1,0,307,-306,19.71,299,-298,19.71,291,-290,19.71,283,-282,19.71,275,-274,19.71,267,-266,19.71,259,-258,19.71,251,-250,19.71,243,-242,19.71,235,-234,19.71,227,-226,19.71,219,-218,19.71,211,-210,19.71,203,-202,19.71,195,-194,19.71,187,-186,19.71,179,-178,19.71,171,-170,19.71,163,-162,19.71,155,-154,19.71,147,-146,19.71,139,-138,19.71,131,-130,19.71,123,-122,19.71,115,-114,19.71,107,-106,19.71,99,-98,19.71,91,-90,19.71,83,-82,19.71,75,-74,19.71,67,-66,19.71,59,-58,19.71,51,-50,19.71,43,-42,19.71,35},
{{{1},{2731,1.2,-20,21,2,1.3,-2635,2636,1.5,2,1.2,8,1.2,-33,34,11.2,-2463,2464,11.3,-44,22.1,44.1,88.1,44.23,-2692,69,152,228,-86,-264,-68,-61,56,112,279,-216,-133,-189.2,-151,-218,-61,-32,2716,40.1,80.1,80.97}},{{2},{2710,1.2,2,21,-20,1.3,-2596,2587,10,1.3,24,-23,1.2,-15,13.2,47,-46,13.5,50,-49,13.4,26.1,52.1,104.1,52.63,-2714,1,4,3,20,19,-6,26,54,-20,23,141,112,85,51,27,-4,-16,-80,2259,45.1,90.1,90.98}}},
{{{1,1},{361,2390,-2715,7,88,216,165,-171,-203,-57,-25,44,-54,71,121,259,-65,-197,-149,2691,-2262,-11,-302,-112,-52,54,73,221,109,-174,181,-235,-144,-70,17,54,237,36.1,72.1,144.1,72.35,-159,66,211,173,-205,-195,-57,-18,58,182,132,-237,-47,270,66,-233,-131,-46,21,54.1,108.1,108.701},{1,-19.43}},{{1,2},{2,2726,-2721,20,10,-6,29,58,-14,-6,2611,-2464,98,145,-89,-60,162,48,-547,18.1,36.1,72.1,144.1,54.35,-545,848,-844,10,11,4,1,46,35,-13,97,65,99,73,86,21,-16,-29,-496,54.1,108.1,108.701},{1,-19.43}},{{2,1},{338,-222,-90,31,82,267,2320,-2430,-167,-58,-7,21,-31,74,152,227,-86,2335,-2662,180,251,-31,-342,-76,2637,-2607,112,210,38,-100,130,-270,-113,-73,33,2709,-2444,36.1,72.1,144.1,72.35,-2665,106,215,106,-248,-158,-51,-2,62,237,19,-238,63,260,-27,-256,-83,-41,39,54.1,108.1,108.701},{1,-19.43}},{{2,2},{10,-1,5,25,-10,9,29,46,-8,-18,32,156,124,52,-83,9,143,2210,-2720,18.1,36.1,72.1,144.1,54.35,-2729,-4.2,12,14,-5,15,46,12,7,31,139,104,83,63,11,-18,-61,-452,53.1,106.1,106.501},{1,-19.43}},{{3,1},{290,2462,-2728,44,117,271,2299,-2503,-190,12,-2,-8,72,193,190,-113,-269,-30,2671,-2250,-82,-311,-69,2715,-2661,361,-67,8,44,-291,-78,-65,44,98,116,34.1,68.1,136.1,68.05,323,39,-455,24,65,187,-213,40.1,80.1,80.97},{1,9,10,2.1,4.1,8.1,16.1,6.1,1.2,3,1,4,2,1.7,10.1,20.1,20.91,1.6}},{{3,2},{15,-9,11,30,-22,23,33,27,-26,48,156,160,-9,-97,93,95,22,-535,17.1,34.1,68.1,136.1,51.05,-537,9,32,47,-2,77,-161,40.1,80.1,80.97},{1,9,10,2.1,4.1,8.1,16.1,6.1,1.2,3,1,4,2,1.7,10.1,20.1,20.91,1.6}},{{4,1},{2750,3,-2730,56,442,-432,-26,12,299,28,-275,2649,3,-2250,-136,-365,321,130,-67,-328,-7,152,2521,22.1,44.1,88.1,154.241},{2,1.3,3,4,1.2,-2.2,1,7.1,14.1,28.1,56.1,21.1,21,14.1,28.1,28.72}},{{4,2},{2727,-2724,17,29,46,45,148,187,-150,212,11,2179,11.1,22.1,44.1,88.1,143.241},{2,1.3,3,4,1.2,-2.2,1,7.1,14.1,28.1,56.1,21.1,21,14.1,28.1,28.72}},{{5,1},{2754,-2661,407,-392,274,2398,-2440,-290,239,-207,2672,10.1,20.1,40.1,70.46},{3,2,3,4,6,4,5.1,10.1,20.1,40.1,15.41,23,10.1,20.1,20.91}},{{5,2},{2729,-2687,72,59,373,2183,5.1,10.1,20.1,40.1,65.46},{3,2,3,4,6,4,5.1,10.1,20.1,40.1,15.41,23,10.1,20.1,20.91}}},
{898,0,1,-1,-21,21,-31,31,-13,13,-1,1,-33,33,2,-2,-5,5,-32,0,32,-7,7,-43,43,-19,19,-35,35,-26,26,-9,9,-42,42,-40,40,-36,17,19,-37,37,5,-5,-23,23,38.2,-4,4,46.2,-5,5,-18,18,-29,-11,40,34.2,-11,11,-39,39,-41,41,-32,32,42.2,-20,20,-22,22,-13,-13,26,-17,17,-30,30,17.2,4.2,-24,24,44.2,23.2,-7,7,-42,4,38,-29,29,53.2,89.2,53.2,27.2,5,-5,-36,36,-15,15,-30,-1,31,-27,27,83.2,-16,16,93.2,36.2,57.2,55.2,-5,5,-31,-2,33,5,-5,-6,6,-28,28,-44,44,59.2,105.2,25.2,40.2,-39,36,3,93.2,123.2,15.2,-38,38,8.2,93.2,69.4,-18,11,7,91.2,51.2,17.2,-34,34,-5,5,44.2,-7,7,-3,3,-36,-6,42,15.2,135.2,190.2,95.2,25.2,61.2,181.2,57.2,-17,4,13,-5,5,-7,7,99.2,97.4,-5,5,-9,9,67.2,-11,-17,28,74.2,127.2,-7,7,-5,5,175.2,34.2,5,-5,-4,4,-23,-18,41,8,-8,106.2,-25,25,-10,10,61.2,169.2,93.2,8,-8,-3,-21,180.3,87.2,-6,6,57.2,222.2,48.2,-3,3,7,-7,-21,-21,42,36.2,-5,5,30.2,101.2,129.2,57.2,-2,2,86.2,-25,-6,31,28.2,-8,8,220.4,59.2,25.2,50.2,122.2,-30,20,10,28.2,123.2,-6,6,245.2,-14,14,207.2,12.2,-4,4,-7,-19,26,106.2,-2,2,55.2,34.2,63.4,230.2,133.2,-26,-13,39,49.2,-5,5,47.2,38.2,76.2,25.2,211.2,-3,3,-37,2,35,-6,6,182.2,76.2,-5,5,72.2,34.2,137.2,8.2,-30,4,26,114.2,4,-4,186.2,-12,12,4.2,76.2,10,-10,371.3,-29,42,114.2,36.2,224.4,-7,7,8,-8,12.2,90.2,-23,-19,42,-7,7,28.2,32.2,21.2,40.2,4.2,-6,6,31.2,-31,5,26,87.2,9.2,87.2,70.2,40.2,67.2,8.2,219.2,-38,27,11,140.2,8,-8,317.4,116.2,10.2,116.2,59.2,-25,-17,42,195.2,397.2,47.2,21.2,13.3,25,4.2,424.3,-8,49.3,338.2,-7,7,34.2,361.2,29.2,380.4,-17,25,102.3,178.3,26,-7,7,4.1,42.4,-26,-16,133.3,13.2,4.2,315.3,23,120.2,101.2,78.2,-17,27,-10,70.2,218.2,47.2,302.2,-7,7,72.2,48.2,29.2,-29,22,45.5,21.2,365.2,116.2,46.2,103.2,428.3,-8,378.3,3,-3,281.2,11.2,-7,7,509.2,154.2,48.2,-42,49,-7,30.2,6,-6,32.2,70.2,519.2,44.2,9,-9,128.2,-36,41,-5,15.2,7,-7,61.2,-6,6,17.2,29.2,390.2,517.3},
{144,-1,1,2.1,4.1,8.1,2.1,0,19.1,38.1,76.1,152.1,304.1,57.65},
{143,1,0,2,0,2,4.1,8.1,0,2,82,19.1,38.73,43,5.3,1,0,1,4.1,10.5,4.3,15,17.9,8.1,1,10,45.5,19.21,1.2,18.1,36.91,73.71,3,13.11,130.7,36.71,56.91,18.1,36.1,72.1,144.1,126.1},
{161,.73,2,.81,2.1,4.1,8.1,16.1,24.1,12,10.9},
{144,.81,1,2.1,4.1,8.1,16.1,32.1,26.52},
{144,1.81,-18,2.1,4.1,8.1,16.1,32.1,26.52},
{144,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,1,-11,12,-12,13,-13,14,-14,15,-15,16,-16,17,-17,18,-18,19,-19,20,1,-21,22,-22,23,-23,24,-24,25,-25,26,-26,27,-27,28,-28,29,-29,30,1,-31,32,-32,33,-33,34,-34,35,-35,36,-36,37,-37,38,-38,39,-39,40,1,-41,42,-42,43,-43,44,-44,45,-45,46,-46,47,-47,48,-48,49,-49,50,1,-51,52,-52,53,-53,54,-54,55,-55,56,-56,57,-57,58,-58,59,-59,60,1,-61,62,-62,63,-63,64,-64,65,-65,66,-66,67,-67,68,-68,69,-69,70,1,-71,72,-72,73,-73,74,-74,75,-75,76,-76,77,-77,78,-78,79,-79,80,1,-81,82,-82,83,-83,84,-84,85,-85,86,-86,87,-87,88,-88,89,-89,90,1,-91,92,-92,93,-93,94,-94,95,-95,96,-96,97,-97,98,-98,99,-99,100,1,-101,102,-102,103,-103,104,-104,105,-105,106,-106,107,-107,108,-108,109,-109,110,1,-111,112,-112,113,-113,114,-114,115,-115,116,-116,117,-117,118,-118,119,-119,120,1,-121,122,-122,123,-123,124,-124,125,-125,126,-126,127,-127,128,-128,129,-129,130,1,-131,132,-132,133,-133,134,-134,135,-135,136,-136,137,-137,138,-138,139,-139,140,1,-141,142,-142,143,-143,144,-144,145,-145,146,-146,147,-147,148,-148,149,-149,150,1,-151,152,-152,153,-153,154,-154,155,-155,156,-156,157,-157,158,-158,159,-159,160,1,-161,162,-162,163,-163,164,-164,165,-165,166,-166,167,-167,168,-168,169,-169,170,1,-171,172,-172,173,-173,174,-174,175,-175,176,-176,177,-177,178,-178,179,-179,180,1,-181,182,-182,183,-183,184,-184,185,-185,186,-186,187,-187,188,-188,189,-189,190,1,-191,192,-192,193,-193,194,-194,195,-195,196,-196,197,-197,198,-198,199,-199,200,1,-201,202,-202,203,-203,204,-204,205,-205,206,-206,207,-207,208,-208,209,-209,210,1,-211,212,-212,213,-213,214,-214,215,-215,216,-216,217,-217,218,-218,219,-219,220,1,-221,222,-222,223,-223,224,-224,225,-225,226,-226,227,-227,228,-228,229,-229,230,1,-231,232,-232,233,-233,234,-234,235,-235,236,-236,237,-237,238,-238,239,-239,240,1,-241,242,-242,243,-243,244,-244,245,-245,246,-246,247,-247,248,-248,249,-249,250,1,-251,252,-252,253,-253,254,-254,255,-255,256,-256,257,-257,258,-258,259,-259,260,1,-261,262,-262,263,-263,264,-264,265,-265,266,-266,267,-267,268,-268,269,-269,270,1,-271,272,-272,273,-273,274,-274,275,-275,276,-276,277,-277,278,-278,279,-279,280,1,-281,282,-282,283,-283,284,-284,285,-285,286,-286,287,-287,288,-288,289,-289,290,1,-291,292,-292,293,-293,294,-294,295,-295,296,-296,297,-297,298,-298,299,-299,300,1,-301,302,-302,303,-303,304,-304,305,-305,306,-306,307,-307,308,-308,309,-309,310,1,-311,312,-312,313,-313,314,-314,315,-315,316,-316,317,-317,318,-318,319,-319,320,1,-321,322,-322,323,-323,324,-324,325,-325,326,-326,327,-327,328,-328,329,-329,330,1,-331,332,-332,333,-333,334,-334,335,-335,336,-336,337,-337,338,-338,339,-339,340,1,-341,342,-342,343,-343,344,-344,345,-345,346,-346,347,-347,348,-348,349,-349,350,1,-351,352,-352,353,-353,354,-354,355,-355,356,-356,357,-357,358,-358,359,-359,360,1,-361,362,-362,363,-363,364,-364,365,-365,366,-366,367,-367,368,-368,369,-369,370,1,-371,372,-372,373,-373,374,-374,375,-375,376,-376,377,-377,378,-378,379,-379,380,1,-381,382,-382,383,-383,384,-384,385,-385,386,-386,387,-387,388,-388,389,-389,390,1,-391,392,-392,393,-393,394,-394,395,-395,396,-396,397,-397,398,-398,399,-399,400,1,-401,402,-402,403,-403,404,-404,405,-405,406,-406,407,-407,408,-408,409,-409,410,1,-411,412,-412,413,-413,414,-414,415,-415,416,-416,417,-417,418,-418,419,-419,420,1,-421,422,-422,423,-423,424,-424,425,-425,426,-426,427,-427,428,-428,429,-429,430,1,-431,432,-432,433,-433,434,-434,435,-435,436,-436,437,-437,438,-438,439,-439,440,1,-441,442,-442,443,-443,444,-444,445,-445,446,-446,447,-447,448,-448,449,-449,450},
{3187,0,1,0,1,4.1,8.1,0,397,-396,19.71,389,-388,19.71,381,-380,19.71,373,-372,19.71,365,-364,19.71,357,-356,19.71,349,-348,19.71,341,-340,19.71,333,-332,19.71,325,-324,19.71,317,-316,19.71,309,-308,19.71,301,-300,19.71,293,-292,19.71,285,-284,19.71,277,-276,19.71,269,-268,19.71,261,-260,19.71,253,-252,19.71,245,-244,19.71,237,-236,19.71,229,-228,19.71,221,-220,19.71,213,-212,19.71,205,-204,19.71,197,-196,19.71,189,-188,19.71,181,-180,19.71,173,-172,19.71,165,-164,19.71,157,-156,19.71,149,-148,19.71,141,-140,19.71,133,-132,19.71,125,-124,19.71,117,-116,19.71,109,-108,19.71,101,-100,19.71,93,-92,19.71,85,-84,19.71,77,-76,19.71,69,-68,19.71,61,-60,19.71,53,-52,19.71,45},
{{{1},{3135,1.2,-20,21,2,1.3,-3039,3040,1.5,2,1.5,-26,27,9.2,-2860,2861,9.2,1.2,-37,20.1,40.1,80.1,40.92,1.2,-3096,69,152,267,-125,-264,-68,-61,56,112,279,-216,-133,189,222,-184,-218,-61,-32,3113,1.2,41.1,82.1,164.1,82.05}},{{2},{3114,1.2,2,21,-20,1.3,-3000,2991,10,1.3,24,-23,1.2,-15,13.2,40,-39,13.5,43,-42,13.4,26.1,52.1,104.1,52.63,-3118,1,4,3,20,19,-6,26,54,-20,23,141,112,85,113,35,-4,-18,-148,2663,45.1,90.1,180.1,90.75}}},
{{{1,1},{361,2813,-3138,7,88,216,208,-214,-203,-57,-25,44,-54,71,121,270,-76,-197,-149,3095,-2622,-19,-338,-112,-52,54,73,221,115,-180,211,-265,-144,-70,17,54,237,36.1,72.1,144.1,72.35,-159,66,211,241,-273,-195,-57,-18,58,182,132,-237,-47,270,66,-233,-131,-46,21,54.1,108.1,216.1,108.17},{1,-19.44}},{{1,2},{2,3130,-3125,20,10,-6,29,58,-14,-6,3015,-2868,98,145,-89,-60,187,93,-617,18.1,36.1,72.1,144.1,54.35,-615,945,-941,10,11,4,1,46,35,-13,97,65,99,73,144,32,-17,-85,-508,54.1,108.1,216.1,108.17},{1,-19.44}},{{2,1},{338,-222,-90,31,82,267,2724,-2834,-167,-58,-7,21,-31,74,152,266,-125,2758,-3085,180,316,-96,-342,-76,3041,-3011,112,210,38,-100,141,-281,-113,-73,33,3113,-2848,36.1,72.1,144.1,72.35,-3088,106,215,155,-297,-158,-51,-2,62,237,19,-238,63,260,-27,-256,-83,-41,39,54.1,108.1,216.1,108.17},{1,-19.44}},{{2,2},{10,-1,5,25,-10,9,29,46,-8,-18,32,156,124,52,-83,9,193,2564,-3124,18.1,36.1,72.1,144.1,54.35,-3133,-4.2,12,14,-5,15,46,12,7,31,139,104,83,131,11,-24,-123,-452,53.1,106.1,212.1,106.07},{1,-19.44}},{{3,1},{290,2885,-3151,44,117,271,2722,-2926,-190,12,-2,-8,72,193,239,-162,-269,-30,3075,-2586,-150,-311,-69,3119,-3065,361,-67,8,44,-291,-78,-65,44,98,116,34.1,68.1,136.1,68.05,323,55,-471,24,65,187,-213,40.1,80.1,160.1,80.65},{1,9,10,2.1,4.1,8.1,16.1,6.1,1.2,3,1,4,2,1.7,10.1,20.1,40.1,20.11}},{{3,2},{15,-9,11,30,-22,23,33,27,-26,48,156,160,-9,-97,93,163,24,-605,17.1,34.1,68.1,136.1,51.05,-607,9,32,47,-2,77,-161,40.1,80.1,160.1,80.65},{1,9,10,2.1,4.1,8.1,16.1,6.1,1.2,3,1,4,2,1.7,10.1,20.1,40.1,20.11}},{{4,1},{3173,3,-3153,56,499,-489,-26,12,299,28,-275,3053,3,-2586,-204,-365,321,130,-67,-328,-7,152,2944,22.1,44.1,88.1,176.1,44.34},{2,1.3,3,4,1.2,-2.2,1,7.1,14.1,28.1,56.1,21.1,21,14.1,28.1,56.1,28.02}},{{4,2},{3131,-3128,17,29,46,45,148,187,-150,280,13,2513,11.1,22.1,44.1,88.1,176.1,44.34},{2,1.3,3,4,1.2,-2.2,1,7.1,14.1,28.1,56.1,21.1,21,14.1,28.1,56.1,28.02}},{{5,1},{3177,-3084,432,-417,274,2802,-2844,-290,239,-207,3095,10.1,20.1,40.1,80.1,20.91},{3,2,3,4,6,4,5.1,10.1,20.1,40.1,15.41,23,10.1,20.1,40.1,20.41}},{{5,2},{3133,-3091,72,59,443,2517,5.1,10.1,20.1,40.1,80.1,20.91},{3,2,3,4,6,4,5.1,10.1,20.1,40.1,15.41,23,10.1,20.1,40.1,20.41}}},
{1072,0,1,-1,-22,22,-32,32,-14,14,-1,1,-34,34,2,-2,-5,5,-33,0,33,-7,7,-44,44,-20,20,-36,36,-27,27,-9,9,-43,43,-41,41,-37,17,20,-38,38,5,-5,-24,24,38.2,-4,4,46.2,-5,5,-19,19,-30,-11,41,34.2,-12,12,-40,40,-42,42,-33,33,42.2,-21,21,-23,23,-14,-13,27,-18,18,-31,31,17.2,4.2,-25,25,44.2,23.2,-7,7,-43,4,39,-30,30,53.2,89.2,53.2,27.2,5,-5,-37,37,-16,16,-31,-1,32,-28,28,83.2,-17,17,93.2,36.2,57.2,55.2,-5,5,-32,-2,34,5,-5,-6,6,-29,29,-45,45,59.2,105.2,25.2,40.2,-40,37,3,93.2,123.2,15.2,-39,39,8.2,93.2,69.4,-19,12,7,91.2,51.2,17.2,-35,35,-5,5,44.2,-7,7,-3,3,-37,-6,43,15.2,135.2,190.2,95.2,25.2,61.2,181.2,57.2,-18,4,14,-5,5,-7,7,99.2,97.4,-5,5,-9,9,67.2,-12,-17,29,74.2,127.2,-7,7,-5,5,175.2,34.2,5,-5,-4,4,-24,-18,42,8,-8,106.2,-26,26,-10,10,61.2,169.2,93.2,8,-8,-3,-22,180.3,87.2,-6,6,57.2,222.2,48.2,-3,3,7,-7,-22,-21,43,36.2,-5,5,30.2,101.2,129.2,57.2,-2,2,86.2,-26,-6,32,28.2,-8,8,220.4,59.2,25.2,50.2,122.2,-31,21,10,28.2,123.2,-6,6,245.2,-15,15,207.2,12.2,-4,4,-7,-20,27,106.2,-2,2,55.2,34.2,63.4,230.2,133.2,-27,-13,40,49.2,-5,5,47.2,38.2,76.2,25.2,211.2,-3,3,-38,2,36,-6,6,182.2,76.2,-5,5,72.2,34.2,137.2,8.2,-31,4,27,114.2,4,-4,186.2,-13,13,4.2,76.2,10,-10,371.3,-29,43,114.2,36.2,224.4,-7,7,8,-8,12.2,90.2,-24,-19,43,-7,7,28.2,32.2,21.2,40.2,4.2,-6,6,31.2,-32,5,27,87.2,9.2,87.2,70.2,40.2,67.2,8.2,219.2,-39,27,12,140.2,8,-8,317.4,116.2,10.2,116.2,59.2,-26,-17,43,195.2,397.2,47.2,21.2,13.3,26,4.2,424.3,-8,49.3,338.2,-7,7,34.2,361.2,29.2,380.4,-18,26,102.3,178.3,27,-7,7,4.1,42.4,-27,-16,133.3,13.2,4.2,315.3,24,120.2,101.2,78.2,-18,28,-10,70.2,218.2,47.2,302.2,-7,7,72.2,48.2,29.2,-30,23,45.5,21.2,365.2,116.2,46.2,103.2,428.3,-8,378.3,3,-3,281.2,11.2,-7,7,509.2,154.2,48.2,-43,50,-7,30.2,6,-6,32.2,70.2,519.2,44.2,9,-9,128.2,-37,42,-5,15.2,7,-7,61.2,-6,6,17.2,29.2,390.2,517.3,-2,29,9.2,3,-3,4.2,11.2,192.4,506.2,154.3,19,18,125.2,9,-9,4.2,40.2,420.2,40.2,63.2,8.2,-37,-7,44,273.4,-4,4,95.2,462.4,162.5,-3,7,-7,7,163.2,11.2,131.4,194.4,114.2,-24,-6,30,13.2,173.2,378.4,2.1,2.1,238.2,462.3,20,66.3,410.4,4.1,82.2,137.2,4,-4,-14,-7.2,236.4,52.4,594.2,6.4,163.3,8,19,-3,3,29.2,48.2,98.2,33.2,3,-3,43.2,31.2,-35,2,316.3,40.4,267.4,38.2,102.4,740.3,-11,11,398.2,352.4,4.2,438.4,208.2,-43},
{144,-1,1,2.1,4.1,8.1,2.1,0,19.1,38.1,76.1,152.1,304.1,247.642},
{143,1,0,2,0,2,4.1,8.1,0,2,82,19.1,38.1,19.81,38,0,1,0,1,4.1,8.1,0,1,12,26.5,19.21,1.2,18.1,36.91,73.71,7,13.11,111.7,36.71,56.91,18.1,36.1,72.1,144.1,288.1,18.1},
{161,.81,-16,.81,18,.81,2,2.1,4.1,8.1,16.1,32.1,.81,4,20.91},
nil,
{2105,1.2,-1964,1965,1.4,-1969,1970,1.4,-1974,1975,1.5,-1980,1981,1.4,-1985,1986,1.4,-1990,1991,1.5,-1996,1997,1.4,-2001,2002,1.4,-2006,2007,1.5,-2012,2013,1.4,-2017,2018,1.4,-2022,2023,1.5,-2028,2029,1.4,-2033,2034,1.4,-2038,2039,1.5,-2044,2045,1.4,-2049,2050,1.4,-2054,2055,1.5,-2060,2061,1.4,-2065,2066,1.4,-2070,2071,1.5,-2076,2077,1.4,-2081,2082,1.4,-2086,2087,1.5,-2092,2093,1.4,-2097,2098,1.4,-2102,2103,1.5,-2108,2109,1.4,-2113,2114,1.4,-2118,2119,1.5,-2124,2125,1.4,-2129,2130,1.4,-2134,2135,1.5,-2140,2141,1.4,-2145,2146,1.4,-2150,2151,1.5,-2156,2157,1.4,-2161,2162,1.4,-2166,2167,1.5,-2172,2173,1.4,-2177,2178,1.4,-2182,2183,1.5,-2188,2189,1.4,-2193,2194,1.4,-2198,2199,1.5,-2204,2205,1.4,-2209,2210,1.4,-2214,2215,1.5,-2220,2221,1.4,-2225,2226,1.4,-2230,2231,1.5,-2236,2237,1.4,-2241,2242,1.4,-2246,2247,1.5,-2252,2253,1.4,-2257,2258,1.4,-2262,2263,1.5,-2268,2269,1.4,-2273,2274,1.4,-2278,2279,1.5,-2284,2285,1.4,-2289,2290,1.4,-2294,2295,1.5,-2300,2301,1.4,-2305,2306,1.4,-2310,2311,1.5,-2316,2317,1.4,-2321,2322,1.4,-2326,2327,1.5,-2332,2333,1.4,-2337,2338,1.4,-2342,2343,1.5,-2348,2349,1.4,-2353,2354,1.4,-2358,2359,1.5,-2364,2365,1.4,-2369,2370,1.4,-2374,2375,1.5,-2380,2381,1.4,-2385,2386,1.4,-2390,2391,1.5,-2396,2397,1.4,-2401,2402,1.4,-2406,2407,1.5,-2412,2413,1.4,-2417,2418,1.4,-2422,2423,1.5,-2428,2429,1.4,-2433,2434,1.4,-2438,2439,1.5,-2444,2445,1.4,-2449,2450,1.4,-2454,2455,1.5,-2460,2461,1.4,-2465,2466,1.4,-2470,2471,1.5,-2476,2477,1.4,-2481,2482,1.4,-2486,2487,1.5,-2492,2493,1.4,-2497,2498,1.4,-2502,2503,1.5,-2508,2509,1.4,-2513,2514,1.4,-2518,2519,1.2},
{854,5,-252,-3,250,-248,247,-245,246,0,5,-248,244,-246,246,-248,-1,4,-5,249,2,-252,253,1,-4,6,-6,7,1.3,.2,-5,5,2.1,5.1,10.1,5.1,7,-7,-5,10,-10,5,3,-3,-5,14,-14,5,8,-8,12.4,1,-1,-5,12,-12,-5.2,-5,-5,8,-8,17.4,7,-7,29.4,23.2,17.3,13,-13,5,-259,259,-5,-252,252,5,-258,258,-5,-255,255,17.2,-256,257,5,-6,2,-2,-255,245,17,-7,6,-6,-254,259,-14,9,8,-8,-253,256,-13,10,-260,260,-256,265,-4,-5,41.2,24.4,41.2,-254,262,-7,-1,-257,257,-253,243,15,-5,9,-9,-5,6,3,-4,-10,10,93.2,-1,54.3,77.2,85.2,12.3,14,-2,-7,4,45.2,7,-12,10,-9,9,3,5,1,-9,5,118.3,-13},
{919,0,1,-777,778,0,1,0,1,-780,781,6.4,-783,784,0,1,-1,0,1,-785,786,13.3,5,-792,787,0,4,0,1,-792,794,0,1,-2,0,2,-795,796,19.3,2,-799,797,38.4,-799,801,19.5,-802,1783,19.4,-1786,1784,19.4,-1786,1788,19.5,-1789,1790,19.4,-1793,1791,19.4,-1793,1795,19.5,-1796,1797,19.4,-1800,1798,19.4,-1800,1802,19.5,-1803,1804,13.3,3,-1808,1805,0,2,0,1,-1808,1809,0,1,-4,0,4,-1810,1811,38.4,-1814,1812,38.4,-1814,1815,19.5,-1816,1817,38.4,-1821,1818,38.4,-1821,1822,19.5,-1823,1824,19.4,-1828,1825,44.4,-1828,1829,0,1,-3,0,3,-1830,1831,19.4,-1835,1832,38.4,-1835,1836,38.5,-1837,1838,19.4,-1842,1839,19.4,-1842,1843,19.5,-1844,1845,51.4,-1848,1846,95.4,-1848,1849,19.5,-1850,1851,32.3,2,-1855,1853,19.4,-1855,1856,0,1,-5,0,5,-1857,1858,19.4,-1862,1860,19.4,-1862,1863,19.5,-1864,1865,19.4,-1869,1867,19.4,-1869,1870,19.5,-1871,1872,76.4,-1875,1873,19.4,-1875,1876,19.5,-1877,1879,19.4,-1882,1880,19.4,-1882,1883,0,1,-6,0,6,-1884,1886,19.4,-1889,1887,19.4,-1889,1890,19.5,-1891,1893,19.4,-1896,1894,19.4,-1896,1897,19.5,-1898,1899,95.4,-1903,1901,19.4,-1903,1904,76.5,-1905,1906,38.4,-1909,1907,19.4,-1909,1911,304.5,-1912,1913,209.4,-1917,1914,25.4,-1917,1918,247.5,-1919,1920,19.4,-1924,1921,19.4,-1924,1925,19.5,-1926,1927,19.4,-1931,1928,247.4,-1931,1932,228.5,-1933,1934,19.4,-1938,1935,19.4,-1938,1939,19.5,-1940,1941,114.4,-1945,1943,95.4,-1945,1946,114.5,-1947,1948,19.4,-1952,1950,19.4,-1952,1953,19.5,-1954,1955,19.4,-1959,1957,19.4,-1959,1960,19.5,-1961,2522,76.4,-2526,2523,76.4,-2526,2527,76.5,-2528,2529,19.4,-2533,2530,133.4,-2533,2534,133.5,-2535,2538,19.4,-2542,2539,19.4,-2542,2543,19.5,-2544,2545,19.4,-2549,2546,19.4,-2549,2550,19.5,-2551,2552,19.4,-2556,2553,19.4,-2556,2557,19.5,-2558,2559,13.4,-2562,2560,114.4,-2562,2563,4.2},
{{{1},{946,1.973,-18,1.81,2.1,4.1,8.1,14.1}}},
{144,2,-2,1,-1,4.2,6.1,6.1,0,19.1,38.1,76.1,152.1,304.1,57.65},
{146,-3,3,2.1,4.1,8.1,2.1,0,19.1,38.1,76.1,152.1,304.1,57.65},
{{{1},{243,.4,105,.4,-105,.4,104,.4,230,.4,-230,.4,229,.4,-229,.4,231,.4,-13,.3,23,-241,0,205,-205,0,207,0,-1,1,0,-9,0,7,-7,0,2134,0,-2126,2126,1,-2334,0,206,-206,0,585,0,-585,3.1,10.4,566,0,-566,3.1,10.4,587,0,-587,3.1,10.4,565,0,-565,3.1,10.4,572,0,-572,3.1,10.4,568,0,-568,3.1,10.4,571,0,-571,3.1,10.4,564,0,-564,3.1,10.4,570,0,-570,3.1,10.4,586,0,-586,3.1,10.4,567,0,-567,3.1,10.4,569,0,-569,3.1,120.47,563,0,-563,3.1,120.97},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,4.1}},{{2},{347,.4,207,.4,-207,.4,100,.4,98,.4,21,.4,-22,.4,20,.4,12,.4,2,.4,-3,0,-130,130,0,-128,0,-1,1,0,166,0,-168,168,.3,-167,167,0,-166,0,-2,2,0,-100,208,-109,109,-208,100,10.1,20.41,-101,209,10.2,-209,101,10.1,20.1,40.1,80.1,90.98},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,4.1}},{{3},{554,.4,10,.4,1,.4,-12,.4,2,.4,-108,.4,108,4.3,-100,.4,208,6.2,0,-100,100,3.2,.9,208,0,-208,3.2,-13,0,-195,195,0,22,0,-11,11,0,-26,0,-191,191,0,37,0,343,-343,0,-31,0,-197,197,0,33,0,-24,24,0,-32,0,-198,198,0,20,0,353,-353,0,-23,40.4,34,7.2,23,0,-38,40.4,25,0,355,-355,0,-19,40.4,34,0,-25,25,0,-33,40.4,21,0,352,-352,53.2,80.8,.2,-26,79.34,28,59.4,-22,79.41,-97,0,470,-470,0,94,159.41,119.01,-96,30.4,97,40.7,-321,-149,40.5,71,0,-60,60,0,-75,199.41,22,0,-13,13,0,-21,80.41,120.01,-90,20.4,96,40.4,20,100.4,90.2,40.6,-320,-150},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,4.1}}},
{{{1},{1326,1.991,-9,1.9,2.1,4.1,2.1,-109,-1273,1274,-1274,1275,-1275,1276,-1276,1277,-1277,1278,-1278,1279,-1279,1280,-1280,1281,-1281,1282,-9,19.1,38.1,76.1,38.73},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,16.1}},{{2},{1526,1.991,-9,1.9,2.1,4.1,2.1,-109,10.9,20.01},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,4.1}},{{3},{1726,1.991,-9,1.9,2.1,4.1,2.1,-109,10.9,20.01},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,4.1}}}
{2231,1.2,-2090,2091,1.4,-2095,2096,1.4,-2100,2101,1.2,2,1.2,-2107,2108,1.4,-2112,2113,1.4,-2117,2118,1.5,-2123,2124,1.4,-2128,2129,1.4,-2133,2134,1.5,-2139,2140,1.4,-2144,2145,1.4,-2149,2150,1.5,-2155,2156,1.4,-2160,2161,1.4,-2165,2166,1.5,-2171,2172,1.4,-2176,2177,1.4,-2181,2182,1.5,-2187,2188,1.4,-2192,2193,1.4,-2197,2198,1.5,-2203,2204,1.4,-2208,2209,1.4,-2213,2214,1.5,-2219,2220,1.4,-2224,2225,1.4,-2229,2230,1.5,-2235,2236,1.4,-2240,2241,1.4,-2245,2246,1.5,-2251,2252,1.4,-2256,2257,1.4,-2261,2262,1.5,-2267,2268,1.4,-2272,2273,1.4,-2277,2278,1.5,-2283,2284,1.4,-2288,2289,1.4,-2293,2294,1.5,-2299,2300,1.4,-2304,2305,1.4,-2309,2310,1.5,-2315,2316,1.4,-2320,2321,1.4,-2325,2326,128.3,-2332,2333,1.4,-2337,2338,1.4,-2342,2343,1.5,-2348,2349,1.4,-2353,2354,1.4,-2358,2359,1.5,-2364,2365,1.4,-2369,2370,1.4,-2374,2375,1.5,-2380,2381,1.4,-2385,2386,1.4,-2390,2391,1.5,-2396,2397,1.4,-2401,2402,1.4,-2406,2407,1.5,-2412,2413,1.4,-2417,2418,1.4,-2422,2423,1.5,-2428,2429,1.4,-2433,2434,1.4,-2438,2439,1.5,-2444,2445,1.4,-2449,2450,1.4,-2454,2455,1.5,-2460,2461,1.4,-2465,2466,1.4,-2470,2471,1.5,-2476,2477,1.4,-2481,2482,1.4,-2486,2487,1.5,-2492,2493,1.4,-2497,2498,1.4,-2502,2503,1.5,-2508,2509,1.4,-2513,2514,1.4,-2518,2519,1.5,-2524,2525,1.4,-2529,2530,1.4,-2534,2535,1.5,-2540,2541,1.4,-2545,2546,1.4,-2550,2551,1.5,-2556,2557,1.4,-2561,2562,1.4,-2566,2567,1.5,-2572,2573,1.4,-2577,2578,1.4,-2582,2583,1.5,-2588,2589,1.4,-2593,2594,1.4,-2598,2599,1.5,-2604,2605,1.4,-2609,2610,1.4,-2614,2615,1.5,-2620,2621,1.4,-2625,2626,1.4,-2630,2631,1.5,-2636,2637,1.4,-2641,2642,1.4,-2646,2647,1.5,-2652,2653,1.4,-2657,2658,1.4,-2662,2663,1.5,-2668,2669,1.4,-2673,2674,1.4,-2678,2679,1.5,-2684,2685,1.4,-2689,2690,1.4,-2694,2695,1.5,-2700,2701,1.4,-2705,2706,1.4,-2710,2711,1.5,-2716,2717,1.4,-2721,2722,1.4,-2726,2727,1.5,-2732,2733,1.4,-2737,2738,1.4,-2742,2743,1.5,-2748,2749,1.4,-2753,2754,1.4,-2758,2759,1.5,-2764,2765,1.4,-2769,2770,1.4,-2774,2775,1.5,-2780,2781,1.4,-2785,2786,1.4,-2790,2791,1.5,-2796,2797,1.4,-2801,2802,1.4,-2806,2807,1.2},
{1027,-5.2,0,-10,10,-11,11,-10,0,5,-347,343,-345,345,-347,-1,4,-5,348,2,-351,352,1,-4,6,-6,7,1.3,.2,-5,5,2.1,5.1,10.1,5.1,7,-7,-5,10,-10,5,3,-3,-5,14,-14,5,8,-8,12.4,1,-1,-5,12,-12,-5.2,-5,-5,8,-8,17.4,7,-7,29.4,23.2,17.3,13,-13,5,-358,358,-5,-351,351,5,-357,357,-5,-354,354,17.2,-355,356,5,-6,2,-2,-354,344,17,-7,6,-6,-353,358,-14,9,8,-8,-352,355,-13,10,-359,359,-355,364,-4,-5,41.2,24.4,41.2,-353,361,-7,-1,-356,356,-352,342,15,-5,9,-9,-5,6,3,-4,161.2,93.2,-1,54.3,77.2,85.2,12.3,14,-2,-7,4,45.2,7,-12,10,-9,9,3,5,1,-9,5,118.3,66.2,129.3,9,3,-7,124.3,15,-20,10,42.3,12,3,-10,66.2,-355,360,-362,357,133.2,-354,361,-17,18.3,108.2,4,-9,1,-1,84.2,1,9,60.3,6,7,-8,54.3,-5,18,-8,54.5},
{1090,0,1,-948,949,0,1,0,1,-951,952,6.4,-954,955,0,1,-1,0,1,-956,960,13.3,2,-963,961,19.4,-963,1944,0,2,19.3,-1946,1947,19.4,-1950,1948,19.4,-1950,1952,0,1,-2,0,2,-1953,1954,19.4,-1957,1955,19.4,-1957,1958,38.5,-1960,1961,19.4,-1964,1962,19.4,-1964,1966,38.5,-1967,1968,19.4,-1971,1969,19.4,-1971,1973,19.5,-1974,1975,13.3,3,-1979,1976,25.4,-1979,1980,0,1,-3,0,3,-1981,1982,19.4,-1986,1983,19.4,-1986,1987,19.5,-1988,1989,0,2,0,2,-1993,1991,57.4,-1993,1994,0,1,-5,0,5,-1995,1996,32.4,-1999,1997,19.4,-1999,2001,76.5,-2002,2003,38.4,-2007,2005,19.4,-2007,2008,38.5,-2009,2010,76.4,-2014,2011,25.3,1,-2014,2015,0,1,-4,0,4,-2016,2017,19.4,-2021,2018,19.4,-2021,2022,19.5,-2023,2024,57.4,-2028,2026,57.4,-2028,2029,57.5,-2030,2031,38.4,-2035,2032,38.4,-2035,2036,38.5,-2037,2038,19.4,-2042,2039,19.4,-2042,2043,19.5,-2044,2045,57.4,-2049,2047,57.4,-2049,2050,57.5,-2051,2052,38.4,-2056,2053,158.4,-2056,2057,190.5,-2058,2059,38.4,-2063,2061,38.4,-2063,2064,38.5,-2065,2066,38.4,-2070,2067,76.4,-2070,2071,76.5,-2072,2073,19.4,-2077,2074,19.4,-2077,2078,19.5,-2079,2081,70.4,-2084,2082,57.4,-2084,2085,0,1,-6,0,6,-2086,2087,0,242,0,483,-2812,2329,0,481,0,2,-2812,2813,0,1,-710,0,710,-2814,2815,38.4,-2818,2816,38.4,-2818,2819,0,1,-9,0,9,-2820,2821,114.4,-2825,2823,19.4,-2825,2826,114.5,-2827,2828,95.4,-2832,2829,95.4,-2832,2833,95.5,-2834,2835,0,4,0,2,-2841,2839,38.4,-2841,2842,38.5,-2843,2844,57.4,-2848,2846,19.4,-2848,2849,19.5,-2850,2851,57.4,-2855,2852,101.4,-2855,2856,209.5,-2857,2858,38.4,-2862,2860,38.4,-2862,2863,38.5,-2864,2865,38.4,-2869,2866,38.4,-2869,2870,38.5,-2871,2872,19.4,-2876,2873,19.4,-2876,2877,19.5,-2878,2879,19.4,-2883,2880,133.4,-2883,2884,133.5,-2885,2886,19.4,-2890,2887,19.4,-2890,2891,19.5,-2892,2893,95.4,-2897,2895,95.4,-2897,2898,95.5,-2899,2901,70.4,-2904,2902,19.4,-2904,2905,266.5,-2906,2908,19.4,-2911,2909,19.4,-2911,2912,19.5,-2913,2915,19.4,-2918,2916,19.4,-2918,2919,19.5,-2920,2922,19.4,-2925,2923,19.4,-2925,2926,19.5,-2927,2929,19.4,-2932,2930,19.4,-2932,2933,19.5,-2934,2936,19.4,-2939,2937,19.4,-2939,2940,19.5,-2941,2943,19.4,-2946,2944,19.4,-2946,2947,19.5,-2948,2950,19.4,-2953,2951,19.4,-2953,2954,19.5,-2955,2957,19.4,-2960,2958,19.4,-2960,2961,19.5,-2962,2963,19.4,-2966,2964,19.4,-2966,2967,4.2},
{{{1},{1107,1.973,-18,1.81,2.1,4.1,8.1,16.1,18.1}}},
{144,2,-2,1,-1,4.2,6.1,6.1,0,19.1,38.1,76.1,152.1,304.1,247.642},
{146,-3,3,2.1,4.1,8.1,2.1,0,19.1,38.1,76.1,152.1,304.1,247.642},
{{{1},{243,.91,404,.4,-300,.41,301,.4,-13,.3,23,-311,0,275,-275,0,277,0,-1,1,0,-10,0,8,-8,0,2365,0,-2356,2356,1,-2634,0,276,-276,0,754,0,-754,3.1,10.4,737,0,-737,3.1,10.4,756,0,-756,3.1,20.41,743,0,-743,3.1,10.4,739,0,-739,3.1,10.4,742,0,-742,3.1,40.41,741,0,-741,3.1,10.4,755,0,-755,3.1,10.4,738,0,-738,3.1,10.4,740,0,-740,3.1,120.1,120.31,1,736,60.5,1,275,120.7,-755,-1,80.9,20.2,-275,-1,120.92,60.6,-736,0,60.2,1,87.2,120.34,-753,100.9},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,24.1}},{{2},{347,.91,267,.4,22,.4,-24,4.1,.4,-5,.6,-160,160,0,-158,0,-1,1,0,240,0,-242,242,.3,-241,241,0,-240,0,-2,2,0,-100,278,-179,179,-278,100,10.1,20.41,-101,279,10.2,-279,101,10.1,20.1,40.1,80.1,50.84,220.01,90.67,80.55},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,24.1}},{{3},{624,.9,11,.9,-10,.4,-178,.4,178,4.3,-100,.4,278,6.2,0,-100,100,3.2,.9,278,0,-278,3.2,-15,0,-263,263,0,24,0,-11,11,0,-29,0,-258,258,0,40,0,444,-444,0,-33,0,-265,265,0,35,0,-24,24,10.3,-267,267,0,21,0,454,-454,0,-25,40.4,36,0,-23,23,0,-41,40.4,28,0,456,-456,0,-21,40.4,36,27.2,25,0,-34,40.4,22,0,453,-453,0,-26,80.8,.2,-29,79.34,31,59.4,-24,79.41,-166,0,641,-641,0,162,159.41,119.01,-164,30.4,166,40.7,-421,-220,40.5,77,0,-64,64,0,-82,199.41,24,0,-13,13,50.3,-268,268,0,-167,50.4,163,0,-264,264,140.3,120.3,-40,0,-259,259,0,-158,20.4,165,0,-266,266,150.3,100.3,-19,40.7,-420,-221,40.5,-163,0,175,44,-219,158,40.4,29,180.4,-22,40.4,34,200.4,-32,40.4,19,0,455,-455,73.2,40.7,48,-223,40.5,39,0,444,-419,-25,30.2,40.3,35,200.4,-33,120.41,40.3,49,-224,40.5,28,60.4},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,24.1}}},
{{{1},{1487,1.991,-9,1.9,2.1,4.1,2.1,-109,-1434,1435,-1435,1436,-1436,1437,-1437,1438,-1438,1439,-1439,1440,-1440,1441,-1441,1442,-1442,1443,-9,19.1,38.1,76.1,152.1,76.57},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,16.1}},{{2},{1687,1.991,-9,1.9,2.1,4.1,2.1,-109,10.9,20.01,18.1,2.1},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,24.1}},{{3},{1887,1.991,-9,1.9,2.1,4.1,2.1,-109,10.9,20.01,18.1,2.1},{-2.9,3,-2.8,2.1,4.1,8.1,16.1,32.1,24.1}}}
},
__refPoss = {
nil,
@ -80,7 +80,7 @@ __refPoss = {
nil,
nil,
nil,
{2,4,2.1,2,4,3,6.1,12.1,24.1,48.1,96.1,18.71},
{2,4,2.1,2,4,3,6.1,12.1,24.1,48.1,96.1,78.77},
nil,
nil,
nil,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2051,8 +2051,8 @@ local effectList = {
-- 造成[a]%的[b]伤害如果目标[c]且[d]低于[e]则有[F]%概率将其秒杀
-- a[float]b[伤害类型]c[持续伤害类型]d[属性]e[float]f[float]
-- 造成[a]%的[b]伤害如果目标[c]且[d]低于[e]则有[F]%概率将其秒杀,灭有一层c状态,增加[g]%暴毙率,暴毙伤害提升[h]%,最多提高[i]层
-- a[float],b[伤害类型],c[持续伤害类型],d[属性],e[float],f[float],g[float],h[float],i[int]
[108] = function(caster, target, args, interval, skill)
local f1 = args[1]
local dt = args[2]
@ -2060,16 +2060,32 @@ local effectList = {
local pro1 = args[4]
local f2 = args[5]
local f3 = args[6]
local v1 = args[7]
local v2 = args[8]
local v3 = args[9]
if v1==nil then
v1=0
end
if v2==nil then
v2=0
end
if v3==nil then
v3=0
end
caster.Event:DispatchEvent(BattleEventName.RoleViewBullet, skill, target)
BattleLogic.WaitForTrigger(interval, function ()
local isSecKill = false
if BattleLogic.BuffMgr:HasBuff(target, BuffName.DOT, function (buff) return dot == 0 or buff.damageType == dot end,caster,dot) then
-- 检测被动技能对秒杀参数得影响
f2, f3 = BattleUtil.CheckSeckill(f2, f3, caster, target)
--
local list=BattleLogic.BuffMgr:GetAllBuffByFunc(function(buff) return buff.target==target and dot == 0 or buff.damageType == dot end)
local len=BattleUtil.LengthOfTable(list)
if len>v3 then
len=v3
end
local ft = target:GetRoleData(RoleDataName.Hp)/target:GetRoleData(RoleDataName.MaxHp)
if ft < f2 then
isSecKill = BattleUtil.RandomAction(f3, function()
if ft < f2+v2*len then
isSecKill = BattleUtil.RandomAction(f3+len*v1, function()
-- 秒杀
local isBoss=BattleUtil.CheckIsBoss(target)
if isBoss then

View File

@ -50,7 +50,7 @@ function EffectCaster:DoEffect(caster, target, eff, duration, skill)
e.args[i] = eff.args[i]
end
-- 检测被动技能对技能参数的影响
-- 检测被动技能对技能参数的影响
local function _PassiveCheck(pe)
if pe then
e = pe
@ -77,7 +77,7 @@ end
function EffectCaster:takeEffect(caster, target, effects, effectIndex, duration, skill)
for k=1, #effects do
-- 如果不是第一个效果对列的第一个效果则判断是否命中
-- 如果不是第一个效果对列的第一个效果则判断是否命中
if k ~= 1 and effectIndex == 1 then
if self:CheckTargetIsHit(target) then
self:DoEffect(caster, target, effects[k], duration, skill)
@ -93,25 +93,25 @@ function EffectCaster:ChooseTarget()
--
self.effectTargets = {}
self.targetIsHit = {}
-- 先计算出技能的目标
-- 先计算出技能的目标
for i=1, #self.effectList do
-- 是否重新选择目标
-- 是否重新选择目标
local isReTarget = true
if self.targets and self.targets[i] then
self.effectTargets[i] = self.targets[i]
-- 判断是否有有效目标
-- 判断是否有有效目标
for _, role in ipairs(self.effectTargets[i]) do
if not role:IsRealDead() then
isReTarget = false
end
end
end
-- 重新选择目标
-- 重新选择目标
if isReTarget then
local effectGroup = self.effectList[i]
local chooseId = effectGroup.chooseId
self.effectTargets[i] = BattleUtil.ChooseTarget(self.skill.owner, chooseId)
-- 检测被动对攻击目标的影响
-- 检测被动对攻击目标的影响
if i == 1 then
local function _PassiveTarget(targets)
self.effectTargets[i] = targets
@ -122,19 +122,19 @@ function EffectCaster:ChooseTarget()
end
end
-- 释放技能
-- func 技能释放完成回调
-- 释放技能
-- func 技能释放完成回调
function EffectCaster:Cast()
-- 选择目标
-- 选择目标
self:ChooseTarget()
-- 对目标造成相应的效果
-- 对目标造成相应的效果
for i=1, #self.effectList do
local effectGroup = self.effectList[i]
local chooseId = effectGroup.chooseId
local arr = self.effectTargets[i]
if arr and #arr > 0 then
-- 效果延迟1帧生效
-- 效果延迟1帧生效
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime, function()
local effects = effectGroup.effects
local weight = math.floor(chooseId % 10000 / 100)
@ -145,10 +145,10 @@ function EffectCaster:Cast()
table.sort(arr, function(a, b)
return a.position < b.position
end)
-- 全部同时生效
-- 全部同时生效
for j=1, count do
if arr[j] and not arr[j]:IsRealDead() then
-- 检测是否命中
-- 检测是否命中
if i == 1 then
self.targetIsHit[arr[j]] = BattleUtil.CheckIsHit(self.skill.owner, arr[j],self.skill)
end
@ -160,7 +160,7 @@ function EffectCaster:Cast()
end
end
-- 遍历技能命中目标
-- 遍历技能命中目标
function EffectCaster:ForeachTargets(func)
local targets = self:GetDirectTargets()
for _, role in ipairs(targets) do
@ -170,7 +170,7 @@ function EffectCaster:ForeachTargets(func)
end
end
-- 获取直接选择目标Id
-- 获取直接选择目标Id
function EffectCaster:GetDirectChooseId()
local effectGroup = self.effectList[1]
local chooseId = effectGroup.chooseId
@ -178,12 +178,12 @@ function EffectCaster:GetDirectChooseId()
end
-- 获取技能的直接目标,和策划规定第一个效果的目标为直接效果目标,(包含miss的目标)
-- 获取技能的直接目标,和策划规定第一个效果的目标为直接效果目标,(包含miss的目标)
function EffectCaster:GetDirectTargets()
return self.effectTargets[1]
end
-- 获取直接目标不包含miss的目标可能为空
-- 获取直接目标不包含miss的目标可能为空
function EffectCaster:GetDirectTargetsNoMiss()
local list = {}
for _, role in ipairs(self.effectTargets[1]) do
@ -194,7 +194,7 @@ function EffectCaster:GetDirectTargetsNoMiss()
return list
end
-- 获取直接目标和没有被放逐的目标不包含miss的目标可能为空
-- 获取直接目标和没有被放逐的目标不包含miss的目标可能为空
function EffectCaster:GetDirectTargetsNoExile()
local list = {}
for _, role in ipairs(self.effectTargets[1]) do
@ -205,7 +205,7 @@ function EffectCaster:GetDirectTargetsNoExile()
return list
end
-- 获取直接目标和没有被放逐的目标,不包含不灭可能为空
-- 获取直接目标和没有被放逐的目标,不包含不灭可能为空
function EffectCaster:GetDirectTargetsNoNODead()
local list = {}
for _, role in ipairs(self.effectTargets[1]) do
@ -216,7 +216,7 @@ function EffectCaster:GetDirectTargetsNoNODead()
return list
end
-- 获取技能目标最大人数
-- 获取技能目标最大人数
function EffectCaster:GetMaxTargetNum()
local mainEffect = self.effectList[1]
if not mainEffect then
@ -225,7 +225,7 @@ function EffectCaster:GetMaxTargetNum()
return BattleUtil.GetMaxTargetNum(mainEffect.chooseId)
end
-- 判断是否命中
-- 判断是否命中
function EffectCaster:CheckTargetIsHit(role)
return self.targetIsHit[role]
end

View File

@ -5979,11 +5979,12 @@ local passivityList = {
end
role.Event:AddEvent(BattleEventName.FinalBeDamage,onFinalBeDamage,nil,nil,role)
end,
--攻击时伤害增加(我方每个存活的其他[a]元素武将伤害增加[b]%
--a[int] b[float]
--攻击时伤害增加(我方每个存活的其他[a]元素武将伤害增加[b]%,是否包含自身[c]
--a[int 10:与自身相同阵营],b[float],c[int 1:包含 ]
[266] = function(role,args,id,judge)
local ele=args[1]
local v1=args[2]
local type=args[3]
local passiveBeBeDamage=function(damagingFunc, defRole, damage, skill)
if skill and not skill.isTriggerJudge and judge==1 then
return
@ -5994,15 +5995,15 @@ local passivityList = {
local list = RoleManager.QueryIncludeExile(function(v) return role.camp == v.camp end)
local num=0
for _, r in pairs(list) do
if r~=role and r.element==ele and not r:IsDead() then
if (r~=role or (type and type==1) ) and (r.element==ele or (ele==10 and r.element==role.element) )and not r:IsDead() then
num=num+1
end
end
if damagingFunc then
local dd = BattleUtil.CountValue(damage,v1*num,2)-damage
damagingFunc(-floor(BattleUtil.ErrorCorrection(dd)))
end
if damagingFunc then
local dd = BattleUtil.CountValue(damage,v1*num,2)-damage
damagingFunc(-floor(BattleUtil.ErrorCorrection(dd)))
end
end
@ -8219,8 +8220,15 @@ local passivityList = {
local onTurnEnd=function(role)
role.Event:RemoveEvent(BattleEventName.RoleKill,onRoleKill,nil,nil,role)
if isNoDie then
local damage=floor(BattleUtil.FP_Mul(role.curMainTarget:GetRoleData(BattlePropList[p1]),v1))
BattleUtil.FinalDamage(nil,role,role.curMainTarget,damage)
if role.curMainTarget then
local isBoss=BattleUtil.CheckIsBoss(role.curMainTarget)
if isBoss then
return
end
local damage=floor(BattleUtil.FP_Mul(role.curMainTarget:GetRoleData(BattlePropList[p1]),v1))
BattleUtil.FinalDamage(nil,role,role.curMainTarget,damage)
end
end
isNoDie=true
end
@ -8678,8 +8686,8 @@ local passivityList = {
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]
-- 修改技能id:[a] 技能类型:[b]的参数,第[c]个参数改变为[d],第[e]个参数改变为[f],第[g]个参数改变为[h]
-- a[int 技能的id],b[int 技能的type类型],c[int],d[float/int],e[int],f[int/float],g[int],h[int/float]
[356] = function(role, args,id,judge)
local id = args[1]
local type = args[2]
@ -8687,6 +8695,8 @@ local passivityList = {
local v1 = args[4]
local i2 = args[5]
local v2 = args[6]
local i3 = args[7]
local v3 = args[8]
local onSkillEffectBefore = function(skill, e, func)
if skill.type == BattleSkillType.Special then
if skill.id == id and e.type == type then
@ -8696,6 +8706,9 @@ local passivityList = {
if e.args[i2] then
e.args[i2] = v2
end
if e.args[i3] then
e.args[i3] = v3
end
if func then func(e) end
end
end
@ -9288,7 +9301,7 @@ local passivityList = {
BattleUtil.FinalDamageCountShield(nil,role,caster,tv)
end
end
role.Event:AddEvent(BattleEventName.BloodValueChange,onValueChange,nil,nil,role)
role.Event:AddEvent(BattleEventName.BloodValueGetZero,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]
@ -9498,6 +9511,10 @@ local passivityList = {
if not skill then
return
end
if target ~= role then
return
end
if time==triggerTime then
return
end
@ -10836,8 +10853,269 @@ local passivityList = {
end
role.Event:AddEvent(BattleEventName.RoleHit, onRoleHit,nil,nil,role)
end,
--触发不灭后,技能额外造成目标[a][b]%的伤害。
--a[int 属性id] b[float]
[422]=function(role,args,id,judge)
local f1 = args[1]
local dt = args[2]
-- 直接伤害后
local onPassiveDamaging = function(func, defRole, damage,skill)
if skill and not skill.isTriggerJudge and judge==1 then
return
end
if not BattleLogic.BuffMgr:HasBuff(role,BuffName.NoDead) then
return
end
--观音,这个被动只有额外技能才能触发 by王振兴 2021/1/21 17:48
if skill and (skill.type == BattleSkillType.Extra or skill.type == BattleSkillType.Special) then
--如果是boss 并且额外伤害是根据最大生命则返回
if (f1==12 or f1==13) and BattleUtil.CheckIsBoss(defRole) then
return
end
local val = floor(BattleUtil.FP_Mul(dt, defRole:GetRoleData(BattlePropList[f1])))
BattleUtil.FinalDamageCountShield(nil,role,defRole,val)
end
end
role.Event:AddEvent(BattleEventName.PassiveDamaging, onPassiveDamaging,nil,nil,role)
end,
--每回合结束时,自身增加[a]类型[b]效果,持续[c]回合,参数1[d],参数2[e],参数3[f],buff是否可被清除[g]
--a[int],b[int],c[int],d[int/float],e[int/float],f[int/float],g[int 0可被清除 1不可清除 ]
[423]=function(role,args,id,judge)
local t1=args[1]
local t2=args[2]
local r1=args[3]
local v1=args[4]
local v2=args[5]
local v3=args[6]
local type=args[7]
local onRoundChange=function(round)
if round==0 then
return
end
if t1==BuffName.PropertyChange then
local buff=Buff.Create(role,BuffName.PropertyChange, r1, BattlePropList[t2], v1,v2)
if type and type==1 then
buff.clear=false
else
buff.clear=true
end
role:AddBuff(buff)
end
end
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundEnd, onRoundChange,nil,nil,role)
end,
--造成直接伤害,无视对方[a]%的伤害减免
-- a[float]
[424]=function(role,args,id,judge)
local v1=args[1]
local addDMGFac=function(func)
if func then
func(v1,CountTypeName.Sub)
end
end
role.Event:AddEvent(BattleEventName.PassiveChangeDefDMGReFac,addDMGFac,nil,nil,role)
end,
-- 攻击时若目标[a]类型[b]效果,则当次攻击自身暴击[c]改变[d]%
-- a[int],b[int],c[改变类型],d[float]
[425] = function(role, args,id,judge)
local dot = args[1]
local pro = args[2]
local ct = args[3]
local f1 = args[4]
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
local isHave=false
if dot==BuffName.DOT then
if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT, function(buff) return buff.damageType == pro end,role,pro) then
isHave=true
end
end
if isHave then
critFunc(f1,ct,false)
end
end
BattleLogic.Event:AddEvent(BattleEventName.TemporaryChangeCrit, onRoleDamageBefore,nil,nil,role)
end,
--改变[a]目标[b]生命回复量[c]%
--a[int],b[int 1:敌方],c[float]
[426]=function(role, args,id,judge)
local ct=args[1]
local type=args[2]
local pro=args[3]
local function onPassiveTreatFactor(func,target,skill)
local isTrigger=false
if type==1 and target.camp~=role.camp then
isTrigger=true
end
if isTrigger then
func(pro,ct)
end
end
BattleLogic.Event:AddEvent(BattleEventName.PassiveTreatingFactor,onPassiveTreatFactor,nil,nil,role)
end,
-- 主动攻击目标时,额外对目标造成[a]属性[b]%/目标最大数量的伤害
-- a[int]b[float]
[427] = function(role, args,id,judge)
local pro = args[1]
local v1 = args[2]
local onHit = function(target, damage, bCrit, finalDmg,damageType,skill)
--只对技能的直接目标生效,分摊出去的不会回血 2020/12/17 王振兴
if not skill then
return
end
--舍身济世分担不触发
if damageType==3 then
return
end
--如果是boss 并且额外伤害是根据最大生命则返回
local isBoss=BattleUtil.CheckIsBoss(target)
if isBoss and pro==12 then
return
end
local val = floor( BattleUtil.FP_Mul(v1, target:GetRoleData(BattlePropList[pro]))/skill:GetMaxTargetNum())
BattleUtil.FinalDamageCountShield(nil,role, target, val)
end
local onSkillCast = function(skill)
if skill and not skill.isTriggerJudge and judge==1 then
return
end
role.Event:AddEvent(BattleEventName.RoleHit, onHit,nil,nil,role)
end
-- 技能后后
local onSkillCastEnd = function(skill)
if skill and not skill.isTriggerJudge and judge==1 then
return
end
role.Event:RemoveEvent(BattleEventName.RoleHit, onHit)
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]属性最[f]神将[g]改变[h]点怒气,每局可触发[i]次
-- a[int],b[int],c[int],d[int],e[int],f[int],g[int],h[int],i[int]
[428] = function(role, args,id,judge)
local p1 = args[1]
local s1 = args[2]
local ct1= args[3]
local v1 = args[4]
local p2 = args[5]
local s2 = args[6]
local ct2= args[7]
local v2 = args[8]
local t1 = args[9]
local time=0
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundStart, function(curRound)
if PassiveManager.passiveCountList[role.camp][428] and PassiveManager.passiveCountList[role.camp][428] > 0 then
return
end
PassiveManager.passiveCountList[role.camp][428] = 1
if time>=t1 then
return
end
local list = RoleManager.Query(function(v) return v.camp == role.camp end)
list = BattleUtil.SortByProp(list, BattlePropList[p1],s1)
if list and #list>0 then
BattleUtil.CalRage(role,list[1],v1,ct1)
end
local list2 = RoleManager.Query(function(v) return v.camp ~= role.camp end)
list2 = BattleUtil.SortByProp(list2, BattlePropList[p2],s2)
if list2 and #list2>0 then
BattleUtil.CalRage(role,list2[1],v2,ct2)
end
time=time+1
end)
end,
--每次释放技能,有[a]%的概率,使目标被控制概率改变[b][c]%,持续[d]回合
--a[float],b[int],c[float],d[int]
[429]=function(role, args,id,judge)
local p1=args[1]
local ct=args[2]
local p2=args[3]
local r1=args[4]
local OnSkillCast=function(skill)
if not skill then
return
end
if skill and not skill.isTriggerJudge and judge==1 then
return
end
local list = skill:GetDirectTargets()
if list then
for i = 1, #list do
BattleUtil.RandomAction(p1,function()
list[i]:AddBuff(Buff.Create(role, BuffName.BreakArmor,r1,4,ct,p2))
end)
end
end
end
role.Event:AddEvent(BattleEventName.SkillCastEnd,OnSkillCast,nil,nil,role)
end,
--释放技能时,有[a]%概率为目标增加[b]属性 改变[c][d]%的效果,持续[e]回合
--a[float],b[int 属性],c[int],d[float],e[int]
[430]=function(role, args,id,judge)
local p1 = args[1]
local pro = args[2]
local ct = args[3]
local v1 = args[4]
local r1 = args[5]
local OnSkillCast = function(skill)
if not skill then
return
end
if skill and not skill.isTriggerJudge and judge==1 then
return
end
local arr=skill:GetDirectTargets()
for i = 1, #arr do
BattleUtil.RandomAction(p1,function()
arr[i]:AddBuff(Buff.Create(role, BuffName.PropertyChange,r1, BattlePropList[pro], v1, ct))
end)
end
end
role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCast,nil,nil,role)
end,
--释放技能时,我方随机[a]个人,增加[b]%[c]属性的御甲
--a[int],b[float],c[int 属性]
[431]=function(role, args,id,judge)
local v1 = args[1]
local v2 = args[2]
local pro = args[3]
local OnSkillCast = function(skill)
if not skill then
return
end
if skill and not skill.isTriggerJudge and judge==1 then
return
end
local list = RoleManager.QueryNoDead(function(v) return role.camp == v.camp end)
if list then
BattleUtil.RandomList(list)
v1=min(v1,#list)
for i = 1, v1 do
local val = floor(BattleUtil.FP_Mul(v2, list[i]:GetRoleData(BattlePropList[pro])))
--如果身上有御甲就添加御甲的值
BattleUtil.AddBlood(list[i],val)
end
end
end
role.Event:AddEvent(BattleEventName.SkillCastEnd, OnSkillCast,nil,nil,role)
end,
}
return passivityList

View File

@ -570,7 +570,6 @@ function BattleLogic.BattleEnd(result)
local v1 = HardStageCondition.CheckCondition(harConfig.ConditionType,harConfig.ConditionValue)
table.insert(levelStarRecord,hardStageConfig.ConditionValue[i])
table.insert(levelStarRecord,v1)
print("k=="..hardStageConfig.ConditionValue[i].." v=="..v1)
end
end
end

View File

@ -4,8 +4,8 @@ Blood = Buff:New()
function Blood:SetData(...)
-- 刷新排序等级
self.bloodValue=...
--self.bloodValue=...
self.bloodValue=0
self.sort = 4
end
@ -23,12 +23,12 @@ end
--初始化后调用一次
function Blood:OnStart()
self.target.bloodShield = self
local passiveChange=function(addValue)
self.bloodValue=self.bloodValue+addValue
end
BattleLogic.Event:DispatchEvent(BattleEventName.BloodValuePassiveChange,passiveChange,self.target,self.caster,self.bloodValue)
self.target.Event:DispatchEvent(BattleEventName.BloodValueChange,self.bloodValue/self.target:GetRoleData(RoleDataName.MaxHp),1,self.bloodValue)
--self.target.bloodShield = self
-- local passiveChange=function(addValue)
-- self.bloodValue=self.bloodValue+addValue
-- end
-- BattleLogic.Event:DispatchEvent(BattleEventName.BloodValuePassiveChange,passiveChange,self.target,self.caster,self.bloodValue)
-- self.target.Event:DispatchEvent(BattleEventName.BloodValueChange,self.bloodValue/self.target:GetRoleData(RoleDataName.MaxHp),1,self.bloodValue)
end
function Blood:GetCurValue()
return self.bloodValue
@ -57,8 +57,9 @@ function Blood:CountBloodValue(damage,atkRole)
if self.bloodValue<=0 then
value=0
self.bloodValue=0
self.target.Event:DispatchEvent(BattleEventName.BloodValueGetZero,self.bloodValue/self.target:GetRoleData(RoleDataName.MaxHp),atkRole)
end
self.target.Event:DispatchEvent(BattleEventName.BloodValueChange,self.bloodValue/self.target:GetRoleData(RoleDataName.MaxHp),atkRole)
self.target.Event:DispatchEvent(BattleEventName.BloodValueChange,self.bloodValue/self.target:GetRoleData(RoleDataName.MaxHp))
return finalDamage
end

View File

@ -2,7 +2,9 @@ BreakArmor = Buff:New()
--初始化Buff通过传入一些自定义参数控制成长相关的数值
function BreakArmor:SetData(...)
self.signType=...
self.signType,
self.signValue1,
self.signValue2=...
-- 刷新排序等级
self.sort = 4
end

View File

@ -196,6 +196,7 @@ BattleEventName = {
PassiveChangeRoleHit = indexAdd(),--被动改变角色命中
RoleIsVanish = indexAdd(), -- 角色已经从显示层消失
CheckDamageIsImmune = indexAdd(),--检测伤害是否免疫
BloodValueGetZero = indexAdd(), --御甲值清零
}

View File

@ -1032,6 +1032,9 @@ function BattleUtil.CalDamage(skill, atkRole, defRole, damageType, baseFactor, i
defDMGRef=BattleUtil.CountValue(defDMGRef,v1,ct)
end
atkRole.Event:DispatchEvent(BattleEventName.PassiveChangeDefDMGReFac,changeDefDMGFac)
if defDMGRef<0 then
defDMGRef=0
end
-- 基础伤害增加系数
local addDamageFactor = 1 + atkRole:GetRoleData(RoleDataName.DamageBocusFactor) - defDMGRef
@ -1071,7 +1074,7 @@ function BattleUtil.CalDamage(skill, atkRole, defRole, damageType, baseFactor, i
-- 计算克制伤害系数
local MieKangFactor = 1
if atkRole.type == BattleUnitType.Role and defRole.type == BattleUnitType.Role then
if BattleLogic.GetIsPvP() and atkRole.type == BattleUnitType.Role and defRole.type == BattleUnitType.Role then
MieKangFactor=MieKangFactor + atkRole:GetRoleData(BattleMieProp[defRole.element]) - defRole:GetRoleData(BattleKangProp[atkRole.element])
end
@ -1239,7 +1242,7 @@ function BattleUtil.ApplyTreat(castRole, targetRole, value, baseFactor,critDamag
end
castRole.Event:DispatchEvent(BattleEventName.PassiveTreatingFactor, treatFactorFunc, targetRole,skill)
targetRole.Event:DispatchEvent(BattleEventName.PassiveBeTreatedFactor, treatFactorFunc, castRole)
BattleLogic.Event:DispatchEvent(BattleEventName.PassiveTreatingFactor,treatFactorFunc,targetRole,skill)
local factor = castRole.isTeam and 1 or castRole:GetRoleData(RoleDataName.TreatFacter) --释放者为team则不计算治疗加成属性
if factor==0 then
factor=1
@ -1307,13 +1310,15 @@ end
function BattleUtil.AddBlood(target,value)
if not target.isBanBlood then
if target.bloodShield then
BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime*2,function()
--BattleLogic.WaitForTrigger(BattleLogic.GameDeltaTime*2,function()
target.bloodShield:AddValue(value)
end)
--end)
else
local buff=Buff.Create(target, BuffName.Blood,0,value)
target:AddBuff(buff)
target.bloodShield=buff
target.bloodShield:AddValue(value)
--target.bloodShield:star
end
else
target.Event:DispatchEvent(BattleEventName.ShowHintText, BattleArtFontType.Blood)
@ -1354,6 +1359,12 @@ function BattleUtil.RandomControl(rand, ctrl, caster, target, round,skill)
target.Event:DispatchEvent(BattleEventName.PassiveBeRandomControl, _CallBack, ctrl, target)
BattleLogic.Event:DispatchEvent(BattleEventName.PassiveBeRandomControl, _CallBack, ctrl,caster,target)
rand = BattleUtil.CountChangeList(rand, cl)
local list=BattleLogic.BuffMgr:GetBuff(target,function(buff)
return buff.type==BuffName.BreakArmor and buff.signType==4
end)
for key, value in pairs(list) do
rand=BattleUtil.CountValue(rand,value.signValue2,value.signValue1)
end
local buff = Buff.Create(caster, BuffName.Control, round, ctrl)
local isAdd=BattleUtil.RandomAction(rand, function()
target:AddBuff(buff)

View File

@ -39,6 +39,32 @@ function Monster:Init(data)
--LogError("monster skill id=="..data.skill[i])
self.skillGroupList[i] = MSkillManager.CreateMSkillGroup(self, i, data.skill[i])
end
if data.passivity and #data.passivity > 0 then
table.sort(data.passivity,function(a,b)
return a[1] < b[1]
end)
for i = 1, #data.passivity do
local v = data.passivity[i]
local passivityId = tonumber(v[1])
local judge=v[2]
local id = tonumber(v[3])
local args = {}
for j = 4, #v do
args[j-3] = v[j]
end
if BattleUtil.Passivity[id] then
BattleUtil.Passivity[id](self, args,passivityId,judge)
BattleLogManager.Log(
"Add Passive",
"id", tostring(id),
"camp", tostring(self.camp),
"pos", tostring(self.position),
"passivityId", tostring(passivityId),
"judge", tostring(judge)
)
end
end
end
end

View File

@ -1,34 +1,174 @@
master_zh_online_special同步数据表2022_03_14_17_38_27
v1.0.90
1.被动429 430 431修改
master_zh_online_special同步数据表2022_03_08_14_34_13
v1.0.89
1.被动427 428修改
master_zh_online_special同步数据表2022_03_07_18_33_58
master_zh_online_special同步数据表2022_03_02_15_24_02
v1.0.88
1.被动339修改
master_zh_online_special同步数据表2022_03_01_15_11_26
v1.0.87
1.新增425 426被动
v1.0.86
1.被动375修改
master_zh_online_special同步数据表2022_02_22_19_07_18
v1.0.85
1.被动226 423 424修改
master_zh_online_special同步数据表2022_02_15_15_19_15
v1.0.84
1.效果108修改
2.被动356修改 新增422
master_zh_online_special同步数据表2022_02_08_17_17_46
v1.0.83
1、修复姑获鸟神魂五对所有人生效的问题
v1.0.82
1.御甲初始化数值修改
master_zh_online_special同步数据表2022_01_25_10_12_04
v1.0.81
1.被动414修改
2.御甲显示修改
master_zh_online_special同步数据表2022_01_20_10_06_14
master_zh_online_special同步数据表2022_01_18_17_33_33
master_zh_online_special同步数据表2022_01_18_15_44_08
v1.0.80
1.被动418-421
2.护盾buff修改
master_zh_online_special同步数据表2022_01_13_17_48_10
master_zh_online_special同步数据表2022_01_11_16_41_51
v1.0.79
1.被动413-418
master_zh_online_special同步数据表2022_01_11_16_25_15
v1.0.78
1.被动283修改
v1.0.77
1.战斗结束返回服务器队伍数据接口修改
v1.0.76
1.新增412被动 56被动修改
master_zh_online_special同步数据表2021_12_28_09_54_11
master_zh_online_special同步数据表2021_12_21_18_34_24
v1.0.75
1、鲸吞魂印修改
2. 护盾效果修改
v1.0.74
1、修复RoleManager table.removebyvalue方法空报错
v1.0.73
1、第五期神魂技能
2.第二期变身卡
master_zh_online_special同步数据表2021_12_14_14_27_05
master_zh_online_special同步数据表2021_12_08_13_13_42
v1.0.72
1、被动257修改
2.不灭修改
v1.0.71
1、被动257修改
master_zh_online_special同步数据表2021_12_07_18_07_35
v1.0.70
1、第四期神魂技能
master_zh_online_special同步数据表2021_11_30_17_36_04
v1.0.69
1、第一期变身卡技能
v1.0.68
1、第三期神魂技能
2. 新法宝技能
master_zh_online_special同步数据表2021_11_23_15_58_01
v1.0.67
1、修复前后端战斗数据格式不一致导致的结果不一致
master_zh_online_special同步数据表2021_11_16_14_56_55
v1.0.66
1 第二期神魂技能
master_zh_online_special同步数据表2021_11_09_11_57_57
master_zh_online_special同步数据表2021_11_09_11_57_46
master_zh_online_special同步数据表2021_11_02_14_08_41
v1.0.65
1 被动180修改
2. 灵兽检测逻辑初始化修改
master_zh_online_special同步数据表2021_10_26_16_05_44
v1.0.64
1 添加主角技能
2. 被动119修改
master_zh_online_special同步数据表2021_10_19_16_13_17
v1.0.63
1、被动344添加空判断
2. 战斗力公式修改
master_zh_online_special同步数据表2021_10_12_15_59_00
master_zh_online_special同步数据表2021_10_12_15_58_52
master_zh_online_special同步数据表2021_10_12_10_26_03
master_zh_online_special同步数据表2021_10_11_19_54_13
master_zh_online_special同步数据表2021_10_11_19_53_59
v1.0.62
1、被动116 258 281 312 344 250312353 351 137修改
2. 精卫借的怒气不会回复怒气
3. 添加不处理增伤被动的方法
v1.0.61
1.同步客户端逻辑
master_zh_online_special同步数据表2021_09_28_18_03_42
master_zh_online_special同步数据表2021_09_28_14_34_53
master_zh_online_special同步数据表2021_09_18_21_22_03
v1.0.60
1、技能是否能释放 添加是否有技能目标判断
2.被动196 200 188 修改
master_zh_online_special同步数据表2021_09_16_20_56_10
master_zh_online_special同步数据表2021_09_16_19_56_58
master_zh_online_special同步数据表2021_09_15_16_43_43
master_zh_online_special同步数据表2021_09_15_15_58_04
master_zh_online_special同步数据表2021_09_15_15_55_26
master_zh_online_special同步数据表2021_09_14_15_45_21
master_zh_online_special同步数据表2021_09_14_13_07_13
v1.0.59
1、被动56修改 被动261 修改
master_zh_online_special同步数据表2021_09_14_11_32_16
master_zh_online_special同步数据表2021_09_14_11_26_22
v1.0.58
1. 被动414修改
2.御甲显示修改
1、修复方法缺失报错
v1.0.57
1. 护盾buff修改
1、尝试修复孙悟空大招不会增加伤害的问题
2、添加用于debug的log
master_zh_online_special同步数据表2021_09_07_10_58_24
v1.0.56
1. 被动417-421
1.选生命百分比最少目标逻辑修改 去掉有不灭单位
2. 死亡不把怒气显示清空
3.被动99 307 选目标逻辑修改
master_zh_online_special同步数据表2021_09_03_15_16_49
v1.0.55
1. 56被动修改
v1.0.54
1. 新加被动412
1. 被动263 269 274 332 112 145 修改
2. 添加战斗日志
master_zh_online_special同步数据表2021_08_28_19_41_53
v1.0.54
1. 被动91 被动115 160修改
2. Dot类buff清除逻辑修改
master_zh_online_special同步数据表2021_08_24_14_58_11
v1.0.53
1. 神魂第一期英雄技能添加
1. 被动141 310 283 330 336修改
master_zh_online_special同步数据表2021_08_03_10_38_57
v1.0.52
1. 灵兽技能检测修改
1. 死亡技能不受控制影响
2.战斗随机种子修改
master_zh_online_special同步数据表2021_07_28_08_34_36
v1.0.51
1. 山河社稷图星级检测修改
1. 被动292修改
master_zh_online_special同步数据表2021_07_16_19_57_49
v1.0.50
1. 灵兽技能触发机制修改
1. 被动292 319修改
v1.0.49
1. 同步dev分支战斗逻辑
1. 同步客户端逻辑
master_zh_online_special同步数据表2021_07_13_18_14_42
master_zh_online_special同步数据表2021_07_06_17_33_58
v1.0.48
1. 同步dev分支战斗逻辑
v1.0.47
1. 同步dev分支战斗逻辑
v1.0.46
1. 同步dev分支战斗逻辑
v1.0.45
1. 新增紫府神印被动效果
v1.0.44
v1.0.47
1. 新增英雄觉醒被动 及 困难副本被动 效果
master_zh_online_special同步数据表2021_06_30_07_33_07
v1.0.46
1、同步数据表
v1.0.45
1. 【战斗】修改免疫控制效果清除提示
v1.0.44
1. 【战斗】修复群体性的免疫效果不会正常消失的问题
v1.0.43
1. 被动200修改
v1.0.42
@ -173,4 +313,4 @@ v1.0.1
v1.0.0
1、创建战斗版本文件
2、灵兽技能加入
2、灵兽技能加入

View File

@ -49,12 +49,15 @@ public class ExplorerMapEventHandler extends BaseHandler<PlayerInfoProto.Explor
if (user == null) {
return;
}
PlayerInfoProto.ExplorerMapEventResponse.Builder builder = PlayerInfoProto.ExplorerMapEventResponse.newBuilder();
int id = proto.getId();
PlayerInfoProto.ExplorerMapEventResponse.Builder builder = PlayerInfoProto.ExplorerMapEventResponse.newBuilder();
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true);
/* int id = proto.getId();
Map<Integer, SExploreEvent> exploreEventConfig = STableManager.getConfig(SExploreEvent.class);
if(!exploreEventConfig.containsKey(id)){
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true);
return;
}
List<KeyVal> eventList = user.getPlayerInfoManager().getExploreEvent();
int index = 0;
for(int i =0;i<eventList.size();i++){
@ -67,11 +70,11 @@ public class ExplorerMapEventHandler extends BaseHandler<PlayerInfoProto.Explor
}
}
}
/* 1
*//* 1兽潮
2
3*/
3*//*
if(exploreEventConfig.get(id).getType() == 1){
PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), TeamEnum.FORMATION_NORMAL.getTeamId(), 20, "",
PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), TeamEnum.EXPLORE_EVENT_TEAM.getTeamId(), 20, "",
GameFightType.ExploreShouChaoFight, exploreEventConfig.get(id).getMonsterGroup(), 3);
FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent);
CommonProto.FightData fightData = CommonProto.FightData.newBuilder()
@ -96,8 +99,7 @@ public class ExplorerMapEventHandler extends BaseHandler<PlayerInfoProto.Explor
if(GameApplication.serverId != csPlayer.getServerId()){
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
}
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(user,TeamEnum.FORMATION_NORMAL.getTeamId(), null, null);
//对手 修行等级 区服名称 战斗类行 积分变化情况
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(user,TeamEnum.EXPLORE_EVENT_TEAM.getTeamId(), null, null);
CommonProto.FightTeamInfo defteamInfo = FightUtil.makeCrossPersonData(csPlayer, TeamEnum.FORMATION_NORMAL.getTeamId(), null, crossArenaManager);
int myforce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.FORMATION_NORMAL.getTeamId(), false);
FightResult fightResult = GetWorldArenaChallengeRequestHandler.getFightForPVP(uid, defUid,
@ -121,6 +123,6 @@ public class ExplorerMapEventHandler extends BaseHandler<PlayerInfoProto.Explor
}
eventList.remove(index);
user.getPlayerInfoManager().setExploreEvent(eventList);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapEventResponse.getNumber(), builder.build(), true);*/
}
}

View File

@ -46,9 +46,13 @@ public class ExplorerMapEventXMBeforeBattleHandler extends BaseHandler<PlayerIn
}
}
//TODO
matchUid=10052935;
user.getPlayerInfoManager().setExploreEventMatchDefUid(matchUid);
builder.setDefTeamInfo( PlayerLogic.getInstance().getCrossYxldOneTeamInfo(matchUid, new ArrayList<Integer>(TeamEnum.FORMATION_NORMAL.getTeamId())));
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossYuXuLunDaoChallengeBeforeResponse.getNumber(), builder.build(), true);
List<Integer> team = new ArrayList<>();
//new ArrayList<Integer>(TeamEnum.FORMATION_NORMAL.getTeamId())
team.add(TeamEnum.FORMATION_NORMAL.getTeamId());
builder.setDefTeamInfo( PlayerLogic.getInstance().getCrossYxldOneTeamInfo(matchUid,team));
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerXMEventChallengeBeforeResponse.getNumber(), builder.build(), true);
}
}

View File

@ -49,7 +49,8 @@ public class ExplorerMapInfoHandler extends BaseHandler<PlayerInfoProto.Explorer
List<KeyVal> event = user.getPlayerInfoManager().getExploreEvent();
for(KeyVal keyVal:event){
builder.addRandEvent(CommonProto.CommKeyVal.newBuilder().setKey(keyVal.getKey()).setVal(keyVal.getVal()).build());
builder.addRandEvent(CommonProto.CommKeyVal.newBuilder().setKey(keyVal.getKey()).setVal(keyVal.getVal()).
setVal2(keyVal.getVa2()).build());
}
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.ExplorerMapInfoResponse.getNumber(), builder.build(), true);
}

View File

@ -4,10 +4,12 @@ public class KeyVal {
private int key;
private int val;
private int va2;
public KeyVal(int key, int val) {
public KeyVal(int key, int val, int va2) {
this.key = key;
this.val = val;
this.va2 = va2;
}
public int getKey() {
@ -25,4 +27,12 @@ public class KeyVal {
public void setVal(int val) {
this.val = val;
}
public int getVa2() {
return va2;
}
public void setVa2(int va2) {
this.va2 = va2;
}
}

View File

@ -31,18 +31,22 @@ public enum TeamEnum {
CROSS_YU_XU_LUN_DAO_TWO(2002,"玉虚论道第二编队",1,1),
CROSS_YU_XU_LUN_DAO_THREE(2003,"玉虚论道第三编队",1,1),
CROSS_LING_MAI_SECRET_AREA(2004,"灵脉秘境编队",1,1),
FOURCHALLENGE_PEOPLE_TEAM(3001,"四灵试炼-人"),
FOURCHALLENGE_BUDDHA_TEAM(3002,"四灵试炼-佛"),
FOURCHALLENGE_MONSTER_TEAM(3003,"四灵试炼-妖"),
FOURCHALLENGE_MORALITY_TEAM(3004,"四灵试炼-道"),
SEVEN_WORLD_TEAM(2101,"七届试炼编队",1,0),
//探索编队
EXPLORE_TEAM_ONE(3101,"1",1,0),
EXPLORE_TEAM_TWO(3102,"2",1,0),
EXPLORE_TEAM_TREE(3103,"3",1,0),
EXPLORE_TEAM_FOUR(3104,"4",1,0),
EXPLORE_TEAM_FIVE(3105,"5",1,0),
EXPLORE_EVENT_TEAM(3110,"探索事件编队",1,1),
;
/**

View File

@ -179,8 +179,8 @@ public class ExplorerMapLogic {
explorerInfo.setEnemyReliveTime(time + exploreConfig.getBattleInterval());
}
LOGGER.info("{}怪物死亡=》重生时间{}", user.getId(), explorerInfo.getEnemyReliveTime());
RankEnum.toRank(RankEnum.EXPLORE_RANK.getType()).addRank(user.getId(),"",1);
user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_ENEMY_NUM);
//RankEnum.toRank(RankEnum.EXPLORE_RANK.getType()).addRank(user.getId(),"",1);
//user.getUserMissionManager().onGameEvent(user, GameEvent.EXPLORE, MissionType.EXPLORE_ENEMY_NUM);
}
@ -286,6 +286,14 @@ public class ExplorerMapLogic {
if(now < user.getPlayerInfoManager().getLoginTime()+60000){
continue;
}
//整点刷出随机事件
/*Calendar calendar = Calendar.getInstance();
int minute = calendar.get(Calendar.MINUTE);
sendRandomEvent(user);
MongoUtil.getLjsdMongoTemplate().lastUpdate();
if(minute == 0){
//sendRandomEvent(user);
}*/
Map<Integer, ExplorerInfo> explorer = user.getPlayerInfoManager().getExplorer();
if (explorer == null || explorer.size() == 0) {
continue;
@ -396,12 +404,6 @@ public class ExplorerMapLogic {
if (delayId.size() > 0) {
user.getPlayerInfoManager().setExplorer(explorer);
}
//整点刷出随机事件
Calendar calendar = Calendar.getInstance();
int minute = calendar.get(Calendar.MINUTE);
if(minute == 0){
sendRandomEvent(user);
}
MongoUtil.getLjsdMongoTemplate().lastUpdate();
}
} catch (Exception e) {
@ -413,15 +415,17 @@ public class ExplorerMapLogic {
//map
Map<Integer, SExplore> config = STableManager.getConfig(SExplore.class);
Map<Integer, SExploreEvent> exploreEventConfig = STableManager.getConfig(SExploreEvent.class);
List<SExplore> limitConfig = config.values().stream().filter(n->n.getLevel()>= user.getPlayerInfoManager().getLevel()).collect(Collectors.toList());
List<SExplore> limitConfig = config.values().stream().filter(n->n.getLevel()<= user.getPlayerInfoManager().getLevel()).collect(Collectors.toList());
Random random = new Random();
int ranomMapId = random.nextInt(limitConfig.size());
SExplore rankExplore = limitConfig.get(ranomMapId);
user.getPlayerInfoManager().getExploreEvent();
int randomMapId = random.nextInt(limitConfig.size());
SExplore rankExplore = limitConfig.get(randomMapId);
//user.getPlayerInfoManager().getExploreEvent();
int randomEventId = random.nextInt(rankExplore.getEventList().length);
int eventId = rankExplore.getEventList()[randomEventId];
LOGGER.error("explore add eventId:"+eventId+" randomMapId: "+randomMapId);
user.getPlayerInfoManager().addExploreEvent(new KeyVal(eventId,TimeUtils.nowInt()+exploreEventConfig.get(eventId).getTime(),randomMapId));
int rankEventId = random.nextInt(rankExplore.getEventList().length);
int eventId = rankExplore.getEventList()[rankEventId];
user.getPlayerInfoManager().getExploreEvent().add(new KeyVal(eventId,TimeUtils.nowInt()+exploreEventConfig.get(eventId).getTime()));
}
public static class Instance {
public final static ExplorerMapLogic instance = new ExplorerMapLogic();

View File

@ -23,7 +23,7 @@ public class SExploreEvent implements BaseConfig {
@Override
public void init() throws Exception {
Map<Integer, SExploreEvent> exploreEventConfig = STableManager.getConfig(SExploreEvent.class);
}

View File

@ -26,17 +26,17 @@ public class ExcelUtils {
oldFileNames.addAll(Arrays.asList(list));
readExcelData();
// //只加载新文件
// Set<String> newFileNames = new HashSet<>();
// File newfile = new File(path);
// String[] newList = newfile.list();
// newFileNames.addAll(Arrays.asList(newList));
// newFileNames.removeAll(oldFileNames);
// if(!newFileNames.isEmpty()) {
// for (String newFileName : newFileNames) {
// String finalNewFileName = newFileName.replaceAll(".txt", "");
// genJavaFile(finalNewFileName);
// }
// }
/*Set<String> newFileNames = new HashSet<>();
File newfile = new File(path);
String[] newList = newfile.list();
newFileNames.addAll(Arrays.asList(newList));
newFileNames.removeAll(oldFileNames);
if(!newFileNames.isEmpty()) {
for (String newFileName : newFileNames) {
String finalNewFileName = newFileName.replaceAll(".txt", "");
genJavaFile(finalNewFileName);
}
}*/
}
public static void genJavaFile(String fileName){