hhhwmws's picture
Upload 79 files
56e6e25 verified
raw
history blame contribute delete
No virus
64 kB
var preArr = ["脱裤子","卖屁股","擦屁股","提裤子","画大饼","吹水管","秋名山飙车","进入坦克","弹鸡鸡","扭屁屁","卖假货"];
var nameArr = ["卡贼","空心菜","楠楠","毛哥","修罗","黑往事"];
var endArr = ["雅蠛蝶","本次消费打五折","其实我是处男……座","再来一个客户","我要打10个","奥利给","今晚消费由我买单"];
function randomTip(){
var p1 = preArr[Math.round(Math.random()*preArr.length)];
var p2 = nameArr[Math.round(Math.random()*nameArr.length)];
var p3 = endArr[Math.round(Math.random()*endArr.length)];
return "正在" + (p1 ? p1 : preArr[0]) + "的" + (p2 ? p2 : nameArr[0]) + ",忽然来了一句:" +(p3 ? p3:endArr[0]);
}
//技能释放条件
var skillCondition = {
"1":"生命值",//使用者生命值
"2":"法力值",//使用者法力值
"3":"生命比例",//使用者生命比例
"4":"使用者法力比例",//使用者法力比例
"50":"宠物等级",//使用者的实际等级,宠物有效
"51":"境界",//使用者的境界等级
"52":"技能等级",//技能本身的等级
"53":"装备的武器类型",//装备的武器类型
"54":"当前激活的内功",//当前激活的内功ID
"55":"施法者拥有Buff",//施法者是否拥有指定BUFF
"56":"拥有Buff",//当前目标是否拥有指定BUFF
"57":"身上穿戴装备",//身上是否穿着指定装备
"58":"当前宠物",//当前宠物是否特定类型
"59":"属性",//使用者指定属性大于等于指定属性
"60":"左手为空",//使用者左手为空
"61":"派遣宠物类型为什么宠物(只适用于蛮荒)",//派遣宠物类型为什么宠物(只适用于蛮荒)
"62":"本次蛮荒触发事件的次数大于等于多少次(只适用于蛮荒)",//本次蛮荒触发事件的次数小于多少次(只适用于蛮荒)
"63":"本次蛮荒触发事件的次数小于多少次(只适用于蛮荒)",//本次蛮荒触发事件的次数小于多少次(只适用于蛮荒)
};
//技能施放目标,仆从目前不包含宠物,队友为玩家和宠物
var skillTarget = {
"0":"敌人",//随机敌人
"1":"敌人",//全部敌人
"2":"自己",
"3":"拥有者",
"4":"宠物",//随机仆从,不包含自己,目前仅限宠物
"5":"宠物",//全部仆从,也就是宠物,目前只支持1只宠物出战
"6":"随机队友 ",
"7":"全部队友 ",
"10":"血量最低的队友",
"11":"阵亡的队友",
"20":"攻击者"
};
var updateTarget = {
"82":"技能等级",
"83":"宠物等级",
"85":"人物境界"
};
//人物技能类型
var roleSkillType = {
"0":"功法",
"1":"武技",
"2":"仙法",
"3":"生活",
"4":"宠物技能",
};
//五行
var wuxing = {
"0":"普通",
"1":"金",
"2":"木",
"3":"水",
"4":"火",
"5":"土",
"6":"混沌",
};
//触发
var chufa = {
"0":"被动",
"1":"主动",//攻击时触发
"2":"主动",//防御时触发
};
var updateLevelType = {
"0":{
"0":"修为",
"1":"修为",
"2":"修为",
"3":"修为",
"4":"修为",
},
"1":{
"0":"历练",
"1":"熟练度",
"2":"熟练度",
"3":"熟练度",
"4":"熟练度",
}
};
//物品类型
var itemTypeData = {
"0":{
"name":"装备",
},
"1":{
"name":"消耗品",
"0":"人物增加修为的丹药",
"3":"提升境界的辅助丹药",
"4":"人物提升境界的丹药",
"5":"可开启的箱子",
"6":"宠物服用的丹药",
"7":"人物提升灵根的丹药",
"9":"人物提升基础属性的丹药",
"11":"宠物领悟技能的丹药",
"12":"宠物提升亲密度的丹药",
"13":"宠物遗忘技能的丹药",
"14":"地图门票",
"15":"人物转生的丹药",
"16":"宠物取消领悟技能的丹药",
"17":"人物增加寿命或修为的丹药",
"18":"宠物减少等级的丹药",
"19":"法宝提高魂力的丹药",
"20":"人物减少寿命的丹药",
"21":"鬼修重入轮回的丹药",
"22":"种植or配方",
"23":"变更境界的丹药",
"26":"人物增加灵根的丹药",
"27":"增加宠物献祭值",
"28":"人物减少寿命的丹药",
"29":"人物增加六围的丹药"
},
"2":{
"name":"材料",
"0":"不可直接使用的成品",
"1":"可炼制的材料",
"2":"可直接使用的成品",
"4":"蛮荒食物",
"5":"洞府灵物"
},
"3":{
"name":"书卷",
"0":"人物用书卷",
"1":"突破技能等级书卷",
"2":"进阶技能书卷",
"3":"宠物用书卷",
}
};
//从分类
var itemType3Data = {
"0":"根骨",
"1":"真气",
"2":"武术",
"3":"灵力",
"4":"灵巧",
"5":"机缘",
}
var equipTypeSimple = {
"0":"剑",
"1":"刀",
"2":"镖",
"3":"盾牌",
"4":"匕首",
"5":"法器",
"6":"斧",
"7":"双手棍",
"8":"双手弓",
"9":"双手弩",
}
//装备类型
var equipTypeData = {
"0":{
"0":"武器,左手,剑",
"1":"武器,左手,刀",
"2":"武器,左手,镖",
"3":"武器,副手,盾牌",
"4":"武器,副手,匕首",
"5":"武器,副手,法器",
"6":"武器,双手,斧",
"7":"武器,双手棍",
"8":"武器,双手弓",
"9":"武器,双手弩",
"10":"武器,奇兵异宝",
"1001":"武器,奇兵异宝",
"1002":"武器,奇兵异宝",
"1003":"武器,奇兵异宝",
"1004":"武器,奇兵异宝",
"1005":"武器,奇兵异宝",
"1006":"武器,奇兵异宝",
"1007":"武器,奇兵异宝",
"1008":"霸王绝刀",
"1009":"诛仙剑阵",
"1010":"武器,奇兵异宝",
"1011":"武器,奇兵异宝",
"1012":"武器,奇兵异宝",
},
"1":"防具,帽子",
"2":"防具,衣服",
"3":"防具,鞋子",
"4":"首饰,项链",
"5":"首饰,戒指",
"10":"不可装备,奇兵异宝",
};
//是否攻击技能
var isAttackSkillType = {
//"0":"只有被动附加属性",
"1":"物攻倍击 主动 ",
"2":"物攻倍击附伤害 主动",
"3":"法功倍击 主动",
"4":"法功倍击附伤害 主动",
"5":"反击 被动",
"6":"反震 被动",
//"7":"反击+反震 被动",//人物技能:高级反击
//"8":"防御 被动",
//"9":"防御+反击 被动",//人物技能:移花接木
//"10":"魔法盾 被动",
//"11":"基本心法 功法",
"12":"连击 主动",
//"13":"防御+反震 被动",//坐忘无我
"14":"吸血 主动",
"15":"结算物功 主动",
"16":"结算法功 主动",
//"17":"附加伤害 主动",
//"18":"buff 主动",
//"19":"光环 回合前自动触发",
"20":"加血 主动",
"21":"加蓝 主动",
//"22":"吸血盾 被动",
//"23":"吸蓝盾 被动",
"24":"双攻倍击 主动",
//"25":"优化灵根 被动 升级时改变对应五行的灵根",
"26":"速差攻击 主动",
//"27":"闪避 被动",
"28":"丢钱 主动 固定丢1块钱",
"29":"丢钱 主动 固定丢1%的钱",
"30":"吸钱 被动",
"31":"参数倍攻 主动 配合因子使用可以实现多种效果",
"32":"随机次数连击 主动",
"33":"护盾 主动",
//"100":"监听炼药成功事件 被动",
//"101":"监听锻造破碎事件 被动",
};
//技能类型
var skillType = {
"0":"只有被动附加属性",
"1":"物攻倍击 主动 ",
"2":"物攻倍击附伤害 主动",
"3":"法功倍击 主动",
"4":"法功倍击附伤害 主动",
"5":"反击 被动",
"6":"反震 被动",
"7":"反击+反震 被动",//人物技能:高级反击
"8":"防御 被动",
"9":"防御+反击 被动",//人物技能:移花接木
"10":"魔法盾 被动",
"11":"基本心法 功法",
"12":"连击 主动",
"13":"防御+反震 被动",//坐忘无我
"14":"吸血 主动",
"15":"结算物功 主动",
"16":"结算法功 主动",
"17":"附加伤害 主动",
"18":"buff 主动",
"19":"光环 回合前自动触发",
"20":"加血 主动",
"21":"加蓝 主动",
"22":"吸血盾 被动",
"23":"吸蓝盾 被动",
"24":"双攻倍击 主动",
"25":"优化灵根 被动 升级时改变对应五行的灵根",
"26":"速差攻击 主动",
"27":"闪避 被动",
"28":"丢钱 主动 固定丢1块钱",
"29":"丢钱 主动 固定丢1%的钱",
"30":"吸钱 被动",
"31":"参数倍攻 主动 配合因子使用可以实现多种效果",
"32":"随机次数连击 主动",
"33":"护盾 主动",
"100":"监听炼药成功事件 被动",
"101":"监听锻造破碎事件 被动",
};
//伤害因子
var dmgType = {
"0":"无系数",
"1":"物攻系数",
"2":"法攻系数",
"3":"物攻+法攻*",
"4":"武术*",
"5":"灵力*",
"6":"防御*",
"7":"速度*",
"8":"自身加敌人",
"9":"敌人攻击",
"10":"目标buff物伤",
"11":"目标buff法伤",
"12":"附加伤害",
"13":"自身血量百分比越高,伤害越高",
"14":"自身血量百分比越低,伤害越高",
"15":"目标血量百分比越高,伤害越高",
"16":"目标血量百分比越低,伤害越高",
"17":"根据目标血量来结算",
};
var judgeType = {
"1":"永久不成立",
"2":"之后",//大于
"3":"之前",//小于
"4":"",//等于
"5":"或者更高",//大于等于
"6":"或者更低",//小于等于
"7":"约等于",//约等于
"8":"包含"
};
var judgeType2 = {
"1":"不为",
"2":"大于",
"3":"小于",
"4":"",
"5":"不低于",
"6":"不大于",
"7":"约等于",
"8":"包含"
};
var damageCategory = {
"0":"近战物理伤害",
"1":"法术伤害",
"2":"远程物理伤害",
"3":"治疗",
};
//将URL中的UTF-8字符串转成中文字符串
function getCharFromUtf8(str) {
var cstr = "";
var nOffset = 0;
if (str == "")
return "";
str = str.toLowerCase();
nOffset = str.indexOf("%e");
if (nOffset == -1)
return str;
while (nOffset != -1) {
cstr += str.substr(0, nOffset);
str = str.substr(nOffset, str.length - nOffset);
if (str == "" || str.length < 9)
return cstr;
cstr += utf8ToChar(str.substr(0, 9));
str = str.substr(9, str.length - 9);
nOffset = str.indexOf("%e");
}
return cstr + str;
}
//将编码转换成字符
function utf8ToChar(str) {
var iCode, iCode1, iCode2;
iCode = parseInt("0x" + str.substr(1, 2));
iCode1 = parseInt("0x" + str.substr(4, 2));
iCode2 = parseInt("0x" + str.substr(7, 2));
return String.fromCharCode(((iCode & 0x0F) << 12) | ((iCode1 & 0x3F) << 6) | (iCode2 & 0x3F));
}
//获取url的参数
function getUrlParams(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
//获取url的参数(value為中文的情況)
function getUrlParamsCn(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
//replace 是为了替换 · 造成的乱码问题
if (r != null) return unescape(getCharFromUtf8(r[2].replace("%C2%B7"," "))); return null; //返回参数值
}
//mtpis监听,动态添加溢出,避免搜索的时候连带搜索了mtpis
function mtpisListener(obj,mtpis){
obj.mouseenter(function(){
obj.attr("data-mtpis",mtpis);
});
obj.mouseleave(function(){
obj.attr("data-mtpis","");
});
}
//宠物,物品 来源ID获取tip
function findMapTips(id){
var bornDiv = $("<span></span>");
var mtpis = "";
var bornName = "";
if(id == "x"){
return bornDiv.append("蛮荒");
}
var isFromMap = true;//是否来源为地图
var isFromPeifang = false;//配方
var isFromMonster = false;//怪物
var isFromItem = false;//物品
var isFromPet = false;//宠物
var isFromAchive = false;//成就
var map = maptable[id];
if(!map){
map = gatetable[id];
}
if(!map){
map = makerecipedata[id];
isFromMap = false;
isFromPeifang = true;
}
if(!map){
map = monstertable[id];
isFromPeifang = false;
isFromMonster = true;
}
if(!map){
map = itemtable[id];
isFromMonster = false;
isFromItem = true;
}
if(!map){
map = pettable[id];
isFromItem = false;
isFromPet = true;
}
if(!map){
map = achievementdata[id];
isFromPet = false;
isFromAchive = true;
}
if(!map){
map = equipexdatatable[id];
isFromAchive = false;
}
if(isFromMap){
bornName =map.NAME;
var bornDescript = map.DESCRIPT;
var bornLevel = map["Level"];
var bornSuggest = map["推荐境界"];
mtpis += "<p>地图名称:"+bornName+"</p>";
mtpis += "<p>地图等级:"+bornLevel+"</p>";
mtpis += "<p>推荐境界:"+bornSuggest+"</p>";
//mtpis += discover?"<p>发现:"+discover+"</p>":"";
//mtpis += unlock?"<p>解锁:"+unlock+"</p>":"";
mtpis += "<p style='width: 200px;height: auto;word-wrap:break-word;word-break:break-all;overflow: hidden;'>地图描述:"+bornDescript+"</p>";
bornName = bornName+"<a href='other.html?id="+map.ID+"' target='blank'><span class='glyphicon glyphicon-send'></span></a>";
}else if(isFromPeifang){
bornName ="配方:"+map.NAME;
mtpis += "<p>配方名称:"+bornName+"</p>";
if(downloadFile[curVersionIndex].hideItemMakeRecipe && map.IGNORE){
//隐藏
mtpis += "<p>请从游戏中获取配方详细</p>";
}else{
for(var i=1;i<=9;i++){
if(map["原料"+i] && map["原料"+i] != "NA"){
var materialSplit = map["原料"+i].split(":");
var materialId = materialSplit[0];
var material = itemtable[materialId];
if(!material){
material = pettable[materialId];
}
if(!material){
material = equipexdatatable[materialId];
}
if(!material){
//console.log(id)
continue;
}
var needNum = materialSplit[1];
if(map.ID >peifangLimitID){
if(needNum){
if(needNum>10){
var needStr = "";
for(j=1;j<needNum.length;j++){
needStr += "?";
}
needNum = needStr + (needNum%10);
}else{
needNum = "?";
}
}
}
//是否隐藏配方
if(peifangNotShowIds[map.ID]){
mtpis += "<p>原料"+i+":毛哥说摸索去</p>";
}else{
mtpis += "<p>原料"+i+":"+material.NAME+"×"+needNum+"</p>";
}
}
}
}
}else if(isFromMonster){
bornName =map.NAME;
var monsterLevel = map["Level"];
var monsterWuxing = wuxing[map["五行"]];
var monsterFrom = "";
$.each(map.SOURCE_FROM,function(key,sourceId){
//是否有隐藏产物的配方来源
if(hideProduct[sourceId]){
return;
}
var fromMap = maptable[sourceId];
if(!fromMap){
fromMap = gatetable[sourceId];
}
//实在没有,直接返回
if(!fromMap){
console.log("缺少数据,直接返回,ID:"+sourceId);
return bornDiv;
}
monsterFrom += fromMap.NAME +"&nbsp;";
});
mtpis += "<p>怪物名称:"+bornName+"</p>";
mtpis += "<p>等级:"+monsterLevel+"</p>";
mtpis += "<p>五行:"+monsterWuxing+"</p>";
mtpis += "<p>来源:"+monsterFrom+"</p>";
//mtpis += "<p style='width: 200px;height: auto;word-wrap:break-word;word-break:break-all;overflow: hidden;'>描述:"+bornDescript+"</p>";
}else if(isFromItem){//来源为物品
bornName =map.NAME;
//如果物品是兽决、技能卡牌,那么追加 技能描述
if(map.type1 == "203"){
petSkillMap = petskilldata[map.value1];
if(petSkillMap){
bornName += ":"+petSkillMap.NAME;
}else{
console.log("兽决定位不到技能:"+map.value1)
}
}else if(map.type1 == "123"){
var taskMap = tasktable[map.value1];
if(taskMap){
var itemMap = itemtable[taskMap["产物"]];
if(itemMap){
bornName += ":"+itemMap.NAME;
}else{
console.log("种植物品定位不到:"+taskMap["产物"])
}
}else{
var makerecipeMap = makerecipedata[map.value1];
if(makerecipeMap){
bornName += ":【配方】"+makerecipeMap.NAME;
}else{
console.log(map);
}
}
}else if(map.type1 == "115"){
//地图门票
var mapMap = gatetable[map.value1];
if(!mapMap){
mapMap = maptable[map.value1];
}
if(mapMap){
bornName += ":"+mapMap.NAME;
}
}else if(/技能卡牌/.test(map.NAME)){
skillMap = skilldata[map.value1];
if(skillMap){
bornName += ":"+skillMap.NAME;
}else{
console.log("技能卡牌定位不到技能:"+map.value1)
}
}
var bornDescript = map.DESCRIPT;
//对于丹方、配方,隐藏掉描述内容,避免泄露组成方式
if(/的.*(丹方|配方)/.test(map.NAME)){//的.*丹方|的.*配方
bornDescript = "不许偷看";
}
var itemFrom = "";
var itemFromType = "";
$.each(map.SOURCE_FROM,function(key,sourceId){
//是否有隐藏产物的配方来源
if(hideProduct[sourceId]){
return;
}
var fromMap = maptable[sourceId];
itemFromType = "[地图]";
if(!fromMap){
fromMap = gatetable[sourceId];
itemFromType = "[副本]";
}
if(!fromMap){
fromMap = makerecipedata[sourceId];
itemFromType = "[配方]";
}
if(!fromMap){
fromMap = monstertable[sourceId];
itemFromType = "[怪物]";
}
if(!fromMap){
fromMap = itemtable[sourceId];
if(fromMap){
if(fromMap["分类"] == "2" && fromMap["子分类"] == "1" && fromMap["从分类"] == "0"){
itemFromType = "[炼药]";
}else{
itemFromType = "[物品]";
}
}
}
if(!fromMap){
itemFromType = "";
//console.log(sourceId);
return ;
}
itemFrom += fromMap.NAME+ "<font color=yellow>"+itemFromType +"</font>;&nbsp;";
});
//var limit = findLimitDescript(map);
var limit = $("<div></div>").append(findLimitDescript(map)).html();
var itemUseStr = itemTypeData[map["分类"]][map["子分类"]];
var x = parseInt(map.ICON%15);
var y = parseInt(map.ICON/15);
mtpis += "<div class='item' style='background:url(images/itemIcon.bmp) -"+(x*40)+"px -"+(y*40)+"px no-repeat;'></div>";
mtpis += "<p>名称:"+bornName+"</p>";
mtpis += "<p>用处:"+itemUseStr+"</p>";
mtpis += "<p>限制:"+limit+"</p>";
mtpis += "<p>堆叠:"+map["最大叠加"]+"</p>";
mtpis += "<p>来源:"+itemFrom+"</p>";
mtpis += "<p style='width: 200px;height: auto;word-wrap:break-word;word-break:break-all;overflow: hidden;'>描述:"+bornDescript+"</p>";
}else if(isFromPet){//来源为宠物
return findPetTip(id).append(jumpTabHref(map));
}else if(isFromAchive){//来源为成就
bornName = "成就:"+map.NAME;
mtpis += "<p>名称:"+bornName+"</p>";
mtpis += "<p>描述:"+map.DESCRIPT+"</p>";
}else{//来源为装备
if(!map){
//console.log(id);
return bornDiv;
}
return findEquipTips(id).append(jumpTabHref(map));
}
var bornData = $("<span style='color:green'>"+bornName+"</span>");
mtpisListener(bornData,mtpis);
bornDiv.append(bornData).append(jumpTabHref(map));
return bornDiv;
}
//宠物技能ID获取tip
function findPetSkillTips(id){
var giftDiv = $("<span></span>");
if(id!="0"){
var map = petskilldata[id];
if(!map){
console.log("不存在的宠物技能ID:"+id);
return giftDiv;
}
var giftName =map.NAME;
var skill_x = parseInt(map.ICON%15);
var skill_y = parseInt(map.ICON/15);
var gitfDescript = map.DESCRIPT+"<br>"+findSkillRewardInfo(map);
var giftType = map["触发"];
var giftManaCost = map["耗蓝"];
if(giftType=="0"){
giftType = "被动";
}else{
giftType = "主动";
}
var wuxingName = wuxing[map["五行"]];
var mtpis = "";
var skillIcon = "<div class='skill' style='background:url(images/PetSkillIcon.bmp) -"+(skill_x*32)+"px -"+(skill_y*32)+"px no-repeat;'></div>";
mtpis += skillIcon;
mtpis += "<p>名称:"+giftName+"</p>";
mtpis += "<p>五行:"+wuxingName+"</p>";
mtpis += "<p>类型:"+giftType+"</p>";
if(giftManaCost != "0"){
mtpis += "<p>耗蓝:"+giftManaCost+"%</p>";
}
mtpis += "<p style='width: 200px;height: auto;word-wrap:break-word;word-break:break-all;overflow: hidden;'>效果:"+gitfDescript+"</p>";
var giftData = $("<span style='color:green'>"+giftName+"</span>");
mtpisListener(giftData,mtpis);
giftDiv.append(giftData);
return giftDiv;
}
}
//宠物ID获取tip
function findPetTip(id){
var giftPetDataDiv = $("<span></span>");
var map = pettable[id];
if(!map){
console.log("宠物ID不存在:"+id);
return giftPetDataDiv;
}
var pet_x = parseInt(map.ICON%15);
var pet_y = parseInt(map.ICON/15);
var born = "";
$.each(map.SOURCE_FROM,function(index,from){
//是否有隐藏产物的配方来源
if(hideProduct[from]){
return;
}
var fromMap = maptable[from];
if(!fromMap){
fromMap = gatetable[from];
}
if(!fromMap){
fromMap = makerecipedata[from];
}
//实在没有,直接返回
if(!fromMap){
console.log("缺少数据,直接返回,ID:"+from);
return giftPetDataDiv;
}
born += fromMap.NAME+"&nbsp;";
});
if(map["天赋"]!="0" && !petskilldata[map["天赋"]]){
console.log(map.NAME+"-天赋技能不存在-"+map["天赋"]);
return giftPetDataDiv;
}
var mtpis = "";
mtpis += "<div class='pet' style='background:url(images/PetIcon.bmp) -"+(pet_x*40)+"px -"+(pet_y*40)+"px no-repeat;'></div>";
mtpis += "<p>名称:"+map.NAME+"</p>";
mtpis += "<div>成长:"+map.grow+"</div>";
mtpis += "<div>天赋:"+(map["天赋"]!="0"?petskilldata[map["天赋"]].NAME:"")+"</div>";
mtpis += "<div>御力:"+map["御力"]+"</div>";
mtpis += "<div>出处:"+born+"</div>";
mtpis += getMtpis(map.DESCRIP?map.DESCRIP:"");
var giftPetData = $("<span style='color:green'>"+map.NAME+"</span>");
mtpisListener(giftPetData,mtpis);
giftPetDataDiv.append(giftPetData);
return giftPetDataDiv;
}
//Buff获取提示
function findBuffTips(skillmap){
var id = skillmap["效果1-类型"];
var stateDiv = $("<span></span>");
if(id){
var map = buffdatatable[id];
if(map && map.NAME !="无"){
var mtpis = "";
if(map["ICON"] >= 0 ){
var state_x = parseInt(map["ICON"]%15);
var state_y = parseInt(map["ICON"]/15);
mtpis += "<div class='state' style='background:url(images/BuffIcon.bmp) -"+(state_x*40)+"px -"+(state_y*40)+"px no-repeat;'></div>";
}
//有8个效果值
var effectTotal = "";
var targetEffectName;
for(var i=1;i<=8;i++){
var effectNo = map["效果"+i];
if(effectNo == "0"){continue;}
var effect = gameattribstringtable[effectNo]["属性"];
var num = map["数值"+i];
//300为限制效果,无数值
if(map["效果1"] == "300"){
}else{
//0不显示
if(num!="0"){
//如果不包含负号,则前面多个+号
if(!/-/.test(num)){
num = "+"+num;
}
if(/%/.test(effect)){
effect = effect.replace("%",num+"%");
}else{
effect+= num;
}
}
}
effectTotal += effect+"&nbsp;";
if(i == 1){
targetEffectName = effect;
}
}
var formual = calcBuffFormual(skillmap);
var effectColor = map["是否增益"] == "0" ? "pink" : "lightGreen";
mtpis += "<p>名称:"+map.NAME+"</p>";
mtpis += "<p>目标:"+skillTarget[skillmap["目标"]]+"</p>";
mtpis += "<p>几率:"+calcBuffRateFormual(skillmap)+"%</p>";
mtpis += "<p>类型:"+(map["是否增益"] == "0" ? "<span style='color:pink'>减益</span>" : "<span style='color:lightGreen'>增益</span>")+"</p>";
mtpis += "<p>效果:"+effectTotal+"</p>";
mtpis += "<p>持续:"+map["持续回合"]+"</p>";
mtpis += "<p>最大层数:"+map["最大层数"]+"</p>";
mtpis += "<p>公式:"+ (formual ? ("<span style='color:" + (map["是否增益"] == "0" ? "pink" : "lightGreen") + "'>" + targetEffectName+"</span> = "+formual) : "") +"</p>";
//mtpis += getMtpis(map.DESCRIPT)";
var stateData = $("<span style='color:green'>"+map.NAME+"</span>");
mtpisListener(stateData,mtpis);
stateDiv.append(stateData);
}
}
return stateDiv;
}
function findPrefixTip(map){
var stateDiv = $("<span></span>");
if(map && map.NAME !="无"){
var mtpis = "";
if(map["ICON"] >= 0 ){
var state_x = parseInt(map["ICON"]%15);
var state_y = parseInt(map["ICON"]/15);
mtpis += "<div class='state' style='background:url(images/BuffIcon.bmp) -"+(state_x*40)+"px -"+(state_y*40)+"px no-repeat;'></div>";
}
//有8个效果值
var effectTotal = "";
for(var i=1;i<=8;i++){
var effectNo = map["效果"+i];
if(effectNo == "0"){continue;}
var effect = gameattribstringtable[effectNo]["属性"];
var num = map["数值"+i];
//300为限制效果,无数值
if(map["效果1"] == "300"){
}else{
//0不显示
if(num!="0"){
//如果不包含负号,则前面多个+号
if(!/-/.test(num)){
num = "+"+num;
}
if(/%/.test(effect)){
effect = effect.replace("%",num+"%");
}else{
effect+= num;
}
}
}
effectTotal += effect+"&nbsp;";
}
mtpis += "<p>"+effectTotal+"</p>";
var stateData = $("<span style='color:green'>"+map.NAME+"</span>");
mtpisListener(stateData,mtpis);
stateDiv.append(stateData);
}
return stateDiv;
}
function dealPrefixAttr(map){
var param = {};
for(var i=1;i<=8;i++){
var effectNo = map["效果"+i];
if(effectNo == "0"){continue;}
var attrMap = gameattribstringtable[effectNo];
var num = map["数值"+i];
//300为限制效果,无数值
if(map["效果1"] == "300"){
}else{
//0不显示
if(num && num!="0"){
param[attrMap.ID] = {ID:attrMap.ID,NAME:attrMap["属性"],NUM:num};
}
}
}
return param;
}
//Buff计算公式
function calcBuffFormual(map){
var formualNo = map["效果1-公式"];
var formual = "无";
attrMap = gameattribstringtable[map["效果1-xID"]];
if(attrMap){
//formual = attrMap["属性"]+"×系数+基础系数";
//formual = attrMap["属性"];
formual= getCalcMethod(map["效果1-公式"],
map["效果1-xK"],
map["效果1-xB"],
attrMap["属性"]);
}
return formual;
}
//Buff几率计算公式
function calcBuffRateFormual(map){
var formualNo = map["几率-公式"];
var formual = "无";
attrMap = gameattribstringtable[map["几率-xID"]];
if(attrMap){
formual= getCalcMethod(map["几率-公式"],
map["几率-xK"],
map["几率-xB"],
attrMap["属性"]);
}
return formual;
}
//人物技能来源Tips
function findRollSkillFromTips(id){
var map = gatetable[id];
if(map){
//来源通关事件
return findSkillTipsFromGatePass(id);
}else {
//来源技能、物品
return findSkillTipsFromSkill(id);
}
}
function findSkillTipsFromSkill(id){
var map = skilldata[id];
var pic = "SkillIcon.bmp";
var className = "roleSkill";
var quality = "";
var fromItem = false;
if(!map){
map = itemtable[id];
pic = "itemIcon.bmp";
className = "item";
try{
quality = "quality_"+map["品质"];
fromItem = true;
}catch(e){
console.log("不存在技能id:"+id);
}
}
var div = $("<div></div>");
if(map){
var sourceFrom = "";
$.each(map.SOURCE_FROM,function(i,sourceId){
var from = skilldata[sourceId];
var itemFromType = "";
if(!from){
from = itemtable[sourceId];
if(from){
if(from["分类"] == "2" && from["子分类"] == "1" && from["从分类"] == "0"){
itemFromType = "[炼药]";
}else{
itemFromType = "[物品]";
}
}
}
if(!from){
from = makerecipedata[sourceId];
itemFromType = "[配方]";
}
if(!from){
from = maptable[sourceId];
itemFromType = "[地图]";
}
if(!from){
from = gatetable[sourceId];
itemFromType = "[地图]";
}
if(!from){
from = monstertable[sourceId];
itemFromType = "[怪物]";
}
if(from){
sourceFrom += from.NAME + "<font color=yellow>"+itemFromType +"</font>;&nbsp;";
}
});
var mtpis = "";
if(map["ICON"] > 0 ){
var x = parseInt(map["ICON"]%15);
var y = parseInt(map["ICON"]/15);
mtpis += "<div class='"+className+" "+quality+"' style='background:url(images/"+pic+") -"+(x*40)+"px -"+(y*40)+"px no-repeat;'></div>";
}
mtpis += "<p>名称:"+map.NAME+"</p>";
if(map["五行"]){
mtpis += "<p>五行:"+wuxing[map["五行"]]+"</p>";
}
var itemUseStr = itemTypeData[map["分类"]][map["子分类"]];
if(itemUseStr){
mtpis += "<p>用处:"+itemUseStr+"</p>";
}
//物品来源,使用限制
if(fromItem){
var condition = map["条件"];
var judge = map["判断"];
var target = map["条件值"];
if(condition == "51"){
mtpis += "<div>限制:"+ablestagerewardtable[target].NAME+"</div>";
}else if(condition == "52"){
if(!skilldata[target]){
console.log(map.NAME+map.ID+":条件值错误:"+target);
mtpis += "<div>限制:作者这里有bug</div>";
}else{
if(map["分类"] == "0"){
mtpis += "<div>限制:"+skilldata[target].NAME+judge+"重</div>";
}else{
mtpis += "<div>限制:"+skilldata[target].NAME+judge+"级</div>";
}
}
}else{
}
}
mtpis += "<p>来源:"+sourceFrom+"</p>";
mtpis += getMtpis(map.DESCRIPT);
var dataDiv = $("<span style='color:green'>"+map.NAME+"</span>");
mtpisListener(dataDiv,mtpis);
div.append(dataDiv).append(jumpTabHref(map));
}
return div;
}
function findSkillTipsFromGatePass(gateId){
var div = $("<div></div>");
var map = gatetable[gateId];
if(map){
return findMapTips(gateId).prepend("通关副本:<br>");
}
return div;
}
//限制类型,限制条件,限制等级
function findLimitDescript(map){
/*
var type = map["分类"];
var condition = map["条件"];
var judge = map["判断"];
var target = map["条件值"];
if(condition=="51"){//境界限制
var roleLevel = ablestagerewardtable[target];
if(roleLevel){
var roleLevelName = roleLevel.NAME;
roleLevelName += judgeType[judge];
return roleLevelName;
}
}else if(condition=="52"){//功法限制
if(!skilldata[target]){
console.log(map.NAME+map.ID+":条件值错误:"+target);
return "作者这里有bug";
}else if(type == "0"){
return skilldata[target].NAME+"("+judge+"重)";
}else{
return skilldata[target].NAME+"("+judge+"级)";
}
}else{
return findSkillUseLimit(map);
}
return "无";
*/
var useCondition = map["条件"];
var useLimitStr = "";
if(useCondition > 0){
var useConditionName = skillCondition[useCondition];
var useConditionNum = map["条件值"];
var useConditionJudge = judgeType2[map["判断"]];
var useLimitStr = "";
if(!useConditionName){
useConditionName = "未知条件"+useCondition;
}
//生命、法力值
if(useCondition == "1" || useCondition == "2"){
useLimitStr = skillTarget[map["目标"]] + useConditionName + useConditionJudge + "<font color=yellow>" + useConditionNum + "</font>";
}
//生命、法力比例
else if(useCondition == "3" || useCondition == "4"){
useLimitStr = skillTarget[map["目标"]] + useConditionName + useConditionJudge + "<font color=yellow>" + useConditionNum + "%" + "</font>";
}
//宠物等级
else if(useCondition == "50" ){
useLimitStr = useConditionName + "" + useConditionJudge + "<font color=yellow>【" + useConditionNum + "】</font>" ;
}
//使用者的境界等级
else if(useCondition == "51" ){
useLimitStr = useConditionName + useConditionJudge + "<font color=yellow>【" + ablestagerewardtable[useConditionNum].NAME + "】</font>" ;
}
//技能本身的等级
else if(useCondition == "52" ){
useLimitStr = $("<span><span>").append(findSkillTips(skilldata[useConditionNum])).append("("+map["判断"]+")");
}
//装备的武器类型
else if(useCondition == "53" ){
var equipTypeName = equipTypeSimple[useConditionNum];
//如果不是普通装备,则去装备中找名字
if(! equipTypeName ){
//equipTypeName = equipexdatatable[useConditionNum].NAME;
useLimitStr = $("<span>"+useConditionName + useConditionJudge + "</span>").append(findMapTips(useConditionNum));
}else{
useLimitStr = useConditionName + useConditionJudge + "<font color=yellow>【" + equipTypeName + "】</font>";
}
}
//当前激活的内功
else if(useCondition == "54" ){
useLimitStr = $("<span>"+useConditionName + useConditionJudge+"<span>").append(findSkillTips(skilldata[useConditionNum]));
}
//施法者是否拥有指定BUFF
else if(useCondition == "55" ){
useLimitStr = useConditionName + useConditionJudge + "<font color=yellow>【" + buffdatatable[useConditionNum].NAME + "】</font>";
}
//当前目标是否拥有指定BUFF
else if(useCondition == "56" ){
useLimitStr = skillTarget[map["目标"]] + useConditionName + "<font color=yellow>【" + buffdatatable[useConditionNum].NAME + "】</font>";
}
//身上是否穿着指定装备
else if(useCondition == "57" ){
useLimitStr = $("<span>"+useConditionName + useConditionJudge + "</span>").append(findMapTips(useConditionNum));
}
//当前宠物是否特定类型
else if(useCondition == "58" ){
useLimitStr = $("<span>"+useConditionName + "</span>").append(findMapTips(useConditionNum));
}
//使用者指定属性大于等于指定属性
else if(useCondition == "59" ){
useLimitStr = "<font color=yellow>【" + gameattribstringtable[map["判断"]]["属性"] +"】" + useConditionNum + "</font>";
}
else{
useLimitStr = useConditionName;
}
}
return useLimitStr;
}
//套装tips
function findSuitTips (id){
var div = $("<div></div>");
if(id>0){
var map = equipsettable[id];
if(!map){
return;
}
var suitAttr = findSuitAttr(map);
var mtpis = "";
var suitMap = equipsettable[map["套装"]];
var suitEquips = "";
$.each(map["组件"].split(";"),function(index,equipId){
if(equipexdatatable[equipId]){
suitEquips += equipexdatatable[equipId].NAME+"&nbsp;";
}else{
console.log("套装【"+map.NAME+"】装备缺失ID:"+equipId);
}
});
mtpis += "<p>套装名称:"+map.NAME+"</p>";
mtpis += "<p>包含组件:"+suitEquips+"</p>";
mtpis += "<div>属性:"+suitAttr+"</div>";
var dataDiv = $("<span style='color:green'>"+map.NAME+"</span>");
mtpisListener(dataDiv,mtpis);
div.append(dataDiv);
}
return div;
}
//获取装备提示
function findEquipTips (id){
var map = equipexdatatable[id];
if(!map){
return;
}
var quality = "quality_"+map["品阶"];
var div = $("<span></span>");
if(map){
var sourceFrom = "";
$.each(map.SOURCE_FROM,function(i,sourceId){
//是否有隐藏产物的配方来源
if(hideProduct[sourceId]){
return;
}
var from = makerecipedata[sourceId];
if(!from){
from = maptable[sourceId];
}
if(!from){
from = gatetable[sourceId];
}
if(!from){
from = itemtable[sourceId];
}
if(from){
sourceFrom += from.NAME +"&nbsp;";
}
});
var mtpis = "";
if(map["ICON"] >= 0 ){
var x = parseInt(map["ICON"]%15);
var y = parseInt(map["ICON"]/15);
mtpis += "<div class='item "+quality+"' style='background:url(images/itemIconEx.bmp) -"+(x*40)+"px -"+(y*40)+"px no-repeat;'></div>";
}
mtpis += "<p>名称:"+map.NAME+"</p>";
mtpis += "<p>类型:"+getEquipType(map)+"</p>";
mtpis += "<p>等级:"+map["Level"]+"</p>";
//物品来源,使用限制
var condition = map["条件"];
var judge = map["判断"];
var target = map["条件值"];
if(condition == "51"){
var limitMap = ablestagerewardtable[target];
if(limitMap){
mtpis += "<div>限制:"+limitMap.NAME+"</div>";
}
}else if(condition == "52"){
var limitMap = skilldata[target];
if(limitMap){
if(map["分类"] == "0"){
mtpis += "<div>限制:"+limitMap.NAME+judge+"重</div>";
}else{
mtpis += "<div>限制:"+limitMap.NAME+judge+"级</div>";
}
}
}else{
}
mtpis += "<p>来源:"+sourceFrom+"</p>";
mtpis += "<p>描述:<div style='margin-left:2em;'"+getMtpis(map.DESCRIPT)+"</div></p>";
if(map["套装"]>0){
var suitMap = equipsettable[map["套装"]];
var suitEquips = "";
if(!suitMap){
console.log(map);
console.log("上面map套装属性不存在"+map["套装"]);
}else{
$.each(suitMap["组件"].split(";"),function(index,equipId){
if(equipexdatatable[equipId]){
suitEquips += equipexdatatable[equipId].NAME+"&nbsp;";
}else{
console.log("套装【"+suitMap.NAME+"】装备缺失ID:"+equipId);
}
});
mtpis += "<div>套装名称:"+suitMap.NAME+"</div>";
mtpis += "<div>组件:"+suitEquips+"</div>";
mtpis += "<div>属性:"+findSuitAttr(suitMap)+"</div>";
}
}
var dataDiv = $("<span style='color:green'>"+map.NAME+"&nbsp;</span>");
mtpisListener(dataDiv,mtpis);
div.append(dataDiv);
}
return div;
}
//套装属性文本
function findSuitAttr (map){
if(!map){
return;
}
var headArr = ["激活","属性","数值","激活2","属性3","数值4","激活5","属性6","数值7","激活8","属性9","数值10","激活11","属性12","数值13","激活14","属性15","数值16"];
var suitAttr = "";
for(var i=0;i<headArr.length;){
var num = map[headArr[i++]];
var attr = map[headArr[i++]];
var attrNum = map[headArr[i++]];
if(num>0){
if(!gameattribstringtable[attr]){
console.log("不存在属性:"+attr)
continue;
}
var effect = gameattribstringtable[attr]["属性"];
//0不显示
if(attrNum!="0"){
if(/%/.test(effect)){
//如果不包含负号,则前面多个+号
if(!/-/.test(attrNum)){
attrNum = "+"+attrNum;
}
effect = effect.replace("%",attrNum+"%");
}else{
//如果不包含负号,则前面多个+号
attrNum = formateNum(attrNum);
if(!/-/.test(attrNum)){
attrNum = "+"+attrNum;
}
effect+= attrNum;
}
}
suitAttr += "<div>["+num+"]:"+effect+"</div>";
}
}
return suitAttr;
}
//法宝描述
function findTreasureDescript(id){
var map = equipskilldata[id];
var descript = "";
if(map){
var mapType = map["类型"];
descript = map.DESCRIPT;
var attr = "";
if(mapType=="0"){
for(index=1;index<=4;index++){
if(map["奖励"+index+"-类型"] && map["奖励"+index+"-类型"]>0){
var rewardInfo = "";
var rewardXId = map["奖励"+index+"-xID"];
var rewardX = "威力";//402
if(rewardXId != "402"){
rewardX = gameattribstringtable[rewardXId]["属性"];
}
//如果会根据威力增长
var xB = map["奖励"+index+"-xB"]?map["奖励"+index+"-xB"]:"";
var xK = map["奖励"+index+"-xK"]?map["奖励"+index+"-xK"]:"";
if(xK>0){
if(Number(xB) == 0 ){
xB = "";
}else{
xB = xB + "+";
}
rewardInfo = "("+xB+xK+"×"+rewardX+")";
}else if(xK<0){
if(Number(xB) == 0 ){
xB = "";
}
rewardInfo = "("+xB+xK+"×"+rewardX+")";
}else{
rewardInfo = xB;
}
descript = descript.replace(/%d/i,rewardInfo);
}
}
}else if(mapType == "18"){
var rewardXId = map["效果1-xID"];
var rewardX = "威力";//402
if(rewardXId != "402"){
rewardX = gameattribstringtable[rewardXId]["属性"];
}
descript = descript.replace(/%d/g,map["效果1-xB"]);
descript += ",成长:"+map["效果1-xK"]+"×"+rewardX+"";
}else{
descript = descript.replace(/%d/g,map["威力1"]);
if(map["冷却"] >0){
descript += ",冷却:"+map["冷却"]+"回合";
}else if(map["冷却"] <0){
descript += ",准备:"+map["冷却"].replace("-","")+"回合";
}
}
descript = descript.replace(/%%/g,"%");
}
return descript;
}
//获取技能永久属性奖励提示
function findSkillRewardInfo(map){
var category = map["类型"];
var rewardDescript = isAttackSkillType[category]?""+"伤害系数:"+map["威力1"]+"%&nbsp;":"";
//var passiveDescript = foreverReward(map,false);
var resultDescript = rewardDescript;
var giftManaCost = map["耗蓝"];
resultDescript += "<br>类型:【" + skillType[category] + "】";
if(giftManaCost != "0"){
resultDescript += "<br>耗蓝:" + giftManaCost + "%";
}
if(category == "12"){
var comboL = map["威力2"];
var comboH = map["成长2"];
var comboDescript = "<br>连击次数:";
if(comboL == comboH){
comboDescript += comboL;
}else{
comboDescript += comboL + "~" + comboH;
}
resultDescript += comboDescript;
}
if(map["伤害因子"] != "0"){
var dmgTypeName = dmgType[map["伤害因子"]];
resultDescript += "<br>伤害因子:【" + dmgTypeName + "】";
}
//功法类
if(map["分类"] == "0"){
resultDescript += "<br>启用加成:<div style='margin-left:2em;'>"+foreverReward(map,true,"#ff6600")+"</div>";
}
resultDescript += "<br>被动加成:<div style='margin-left:2em;'>"+foreverReward(map,false,"#ff6600")+"</div>";
return resultDescript;
}
/*
奖励计算公式:
0:y=x*k+b
1:y=x*x*k+b
2:y=(x/k + 1)*b
3:y=x*x*k+b
4:y=int(x/k + 1)*b
5:y=x*k+int(x/k)+b
6:等比数列 1 2 2 3 3 3 4 4 4 4
7:y=x * (k - 1) + b
8:y=x * (x + k) + b
*/
var calcMethodArr = [
[["","b"],["x×k","x×k+b"]],//k和b为0,k为0,b为0,k和b都不为0
[["","b"],["x×x*k","x×x*k+b"]],
[["","b"],["0","(x÷k+1)×b"]],
[["","b"],["x×x×k","x×x×k+b"]],
[["","b"],["0","Int(x÷k+1)×b"]],
[["","b"],["x×k+Int(x÷k)","x×k+int(x÷k)+b"]],
[["","等比数列"],["等比数列","等比数列"]],
[["","-x+b"],["x×(k-1)","x×(k-1)+b"]],
[["","b"],["x×(x+k)","x×(x+k)+b"]],
];
//获取公式
function getCalcMethod(formual,k,b,levelTarget){
//method 索引
var x = k=="0"?0:1;
var y = b=="0"?0:1;
if(!calcMethodArr[formual]){
console.log("没有启用奖励,或公式不存在:"+formual);
return "公式缺失";
}
var caleMethod = calcMethodArr[formual][x][y];
var result = caleMethod
.replace(/x/g,levelTarget)
.replace(/k/g,k)
.replace(/b/g,b)
.replace(/[+][-]/g,"-") //加负数,变为减法
;
return result;
}
//获取计算结果
function getCalcMethodNum(formual,k,b,level){
//乘除号替换
return getCalcMethod(formual,k,b,level).replace(/×/g,"*").replace(/÷/g,"/");
}
//奖励公式
//功法技能,奖励1是永久属性奖励,2~4 是启动属性
//其他技能,奖励1~4 都是永久奖励
//map 技能数据 isStart 区分获取的是永久奖励还是启用奖励
function foreverReward(map,isStart, fontColor){
var result = "";
var iInit = 1;
var iLimit = 1;
//启用奖励
if(isStart){
if(map["分类"] == "0" && map["类型"] == "25"){//灵根功法
var wx = wuxing[map["五行"]];
var a = map["伤害L"];
var b = map["伤害H"];
result = "(无需启用)"+wx + "灵根每级随机提升("+a+"~"+b+")点";
return result;
}else if(map["分类"] == "0"){
iInit =2;
iLimit = 4;
}else if(map["分类"] == "5"){//法宝
iInit =2;
iLimit = 4;
}else{
//技能没有启用奖励
return result;
}
}else{//永久奖励
if(map["分类"] != "0"){
iLimit = 4;
}
}
for(var i=iInit;i<=iLimit;i++){
var rewardId = map["奖励"+i+"-类型"];
if(rewardId != "0"){
if(!gameattribstringtable[rewardId]){
console.log(map);
console.log("技能"+map.ID+"不存在的奖励"+i+"-类型:"+rewardId);
continue;
}
var xAttr = gameattribstringtable[rewardId]["属性"];
//升级方式
var passiveType = map["奖励"+i+"-xID"];
if(!gameattribstringtable[passiveType]){
console.log("不存在的属性ID:"+passiveType);
continue;
}
var levelTarget = gameattribstringtable[passiveType]["属性"];
var k = map["奖励"+i+"-xK"];
var b = map["奖励"+i+"-xB"];
var formual = map["奖励"+i+"-公式"];
result += "<span style='color:"+ (fontColor ? fontColor : "brown") + ";font-size:1.5rem;'>" + xAttr+"</span>("+getCalcMethod(formual,k,b,levelTarget)+")<br>";
}
}
return result;
}
//奖励数值
//功法技能,奖励1是永久属性奖励,2~4 是启动属性
//其他技能,奖励1~4 都是永久奖励
//map 技能数据 isStart 区分获取的是永久奖励还是启用奖励
function foreverRewardNum(map,skillLv,roleLv,isStart){
var result = "";
var iInit = 1;
var iLimit = 1;
//启用奖励
if(isStart){
if(map["分类"] == "0"){
iInit =2;
iLimit = 4;
}else{
//技能没有启用奖励
return result;
}
}else{//永久奖励
if(map["分类"] != "0"){
iLimit = 4;
}
}
for(var i=iInit;i<=iLimit;i++){
var rewardId = map["奖励"+i+"-类型"];
if(rewardId != "0"){
var xAttr = gameattribstringtable[rewardId]["属性"];
//升级方式
var passiveType = map["奖励"+i+"-xID"];
var k = map["奖励"+i+"-xK"];
var b = map["奖励"+i+"-xB"];
var formual = map["奖励"+i+"-公式"];
if(/82|83/.test(passiveType)){
var levelTarget = skillLv;
var evalFormual = getCalcMethodNum(formual,k,b,levelTarget);
if(evalFormual == "公式缺失"){
console.log("公式缺失", map);
return "公式缺失";
}
var rewardNum = eval(evalFormual);
//计算结果,并注意将结果插入到%号前面,正数多个+号
//如果有小数,则保留2位
if((rewardNum+"").indexOf(".")>0){
rewardNum = rewardNum.toFixed(2);
}
if(Number(rewardNum)>0){
rewardNum = "+"+rewardNum;
}
}else if (/85/.test(passiveType)){
var levelTarget = roleLv;
var evalFormual = getCalcMethodNum(formual,k,b,levelTarget);
if(evalFormual == "公式缺失"){
console.log("公式缺失", map);
return "公式缺失";
}
var rewardNum = eval(evalFormual);
//计算结果,并注意将结果插入到%号前面,正数多个+号
//如果有小数,则保留2位
if((rewardNum+"").indexOf(".")>0){
rewardNum = rewardNum.toFixed(2);
}
if(Number(rewardNum)>0){
rewardNum = "+"+rewardNum;
}
}else{
//根据属性值
levelTarget = gameattribstringtable[passiveType]["属性"];
console.log("属性="+levelTarget);
rewardNum = getCalcMethod(formual,k,b,levelTarget);
}
//百分号所在 索引
var centIndex = xAttr.indexOf("%");
if(centIndex>0){
result += xAttr.replace("%",rewardNum)+"%<br>";
}else{
result += xAttr+rewardNum+"<br>";
}
}
}
return result;
}
//获取格式化的mtpis
function getMtpis(descript){
return "<div style='max-width: 300px;height: auto;word-wrap:break-word;word-break:break-all;overflow: hidden;'>"
+descript
+"</div>";
}
/*获取装备类型*/
function getEquipType(map){
var equipType = equipTypeData[map["分类"]];
if(map["分类"]=="0"){
equipType =equipType[map["子分类"]];
}
return equipType;
}
//d :威力1 ,c :威力2 , a 伤害L , b伤害H
var skillEffectArr = {
"0":"被动技能",
"1":"对目标造成d%${dt}",
"2":"对目标造成d%$(+a~b)${dt}",
"3":"对目标造成d%${dt}",
"4":"对目标造成d%(+a~b)${dt}",
"5":"造成d%自身的伤害,额外暴伤+c%(${dt})",
"6":"反震来自d%敌人的伤害<BR>体格越强壮反震越厉害(${dt})",
"7":"反击d%敌人的+c%自身的伤害(${dt})",
"8":"防御+a<BR>护甲+b<BR>防御提升d%",
"9":"防御提高+a%<BR>护甲+b<BR>并对敌人造成d%的${dt}",
"10":"吸收所收到的伤害:<BR>每点法力吸收d点伤害<BR>最大吸收c%",
"11":"功法:不在此列",
"12":"对敌人造成a~b次d%的${dt}",
"13":"防御提高+a%<BR>护甲+b<BR>并对敌人造成受到伤害的d%的${dt}",
"14":"物伤提高d%,<BR>并恢复造成伤害的c%的生命(${dt})",
"15":"对目标造成d%的${dt},<BR>目标所附带的[a]状态时额外造成c%的伤害,<BR>并刷新状态持续回合",
"16":"对目标造成d%的${dt},<BR>目标所附带的[a]状态时额外造成c%的伤害,<BR>并刷新状态持续回合",
"17":"普通攻击一次,并额外附带a点~b点${wx}系伤害",
"19":"光环 被动",
"20":"为最虚弱的队友恢复d%的法术伤害",
"22":"防御提高+a<BR>护甲+b<BR>并把防御抵消的伤害的d%转成体力恢复",
"23":"防御提高+a<BR>护甲+b<BR>并把防御抵消的伤害的d%转成法力恢复",
"24":"对目标造成d%${dt},并受法术伤害影响(c%)",
"25":"心法等级提升时随机提升${wx}系灵根a~b点",
"27":"有d%基础几率闪避对手的攻击",
"28":"把一枚铜钱作为暗器丢向敌人,<BR>造成d%的${dt},<BR>并且本次攻击如果暴击的话,<BR>暴击伤害额外提高c%",
"29":"把口袋力所有铜钱的1%丢向敌人,<BR>对目标造成d%的基础${dt}。<BR>丢的越多伤害越高",
"30":"敲诈对方对你造成伤害数值的d%作为补偿",
"31":"参数倍攻,主动",
"32":"连击 主动",
"33":"护盾 主动"
};
function getSkillEffect(hasSkill,curNum){
var skillCategory = hasSkill["类型"];
var skillEffect = "";
switch(skillCategory){
case "11":skillEffect = foreverRewardNum(hasSkill,curNum,$("#roleLevel").val(),true);break;
case "18":skillEffect = hasSkill.DESCRIPT;break;
case "100":
case "101":break;
case "0":skillEffect = getSkillEffectAct(hasSkill,skillCategory,1);//"当我不存在把!" ;
break;
default:skillEffect = getSkillEffectAct(hasSkill,skillCategory,curNum);break;
}
return skillEffect;
}
/*获取技能实际效果*/
function getSkillEffectAct(hasSkill,skillCategory,curNum){
curNum -= 1;
var skillEffect = skillEffectArr[skillCategory];
var skillWuxing = wuxing[hasSkill["五行"]];
var power_1 = hasSkill["威力1"];
var power_2 = hasSkill["威力2"];
var grow_1 = hasSkill["成长1"];
var grow_2 = hasSkill["成长2"];
var dmgL = hasSkill["伤害L"];
var dmgH = hasSkill["伤害H"];
var dmgGrowL = hasSkill["成长L"];
var dmgGrowH = hasSkill["成长H"];
var dmgCategory = damageCategory[hasSkill["伤害类型"]];
var giftManaCost = hasSkill["耗蓝"];
//console.log("蓝:"+giftManaCost);
//实际威力、成长 1:
var power_1_Act;
//实际威力、成长 2:
var power_2_Act;
try{
power_1_Act = eval("k*x+b".replace("x",curNum).replace("k",grow_1).replace("b",power_1));
power_2_Act = eval("k*x+b".replace("x",curNum).replace("k",grow_2).replace("b",power_2));
}catch(e){
return "";
}
//伤害范围
var dmgLAct = eval("k*x+b".replace("x",curNum).replace("k",dmgGrowL).replace("b",dmgL));
var dmgHAct = eval("k*x+b".replace("x",curNum).replace("k",dmgGrowH).replace("b",dmgH));
//特殊情况:法力盾
if(skillCategory == "10"){
power_1_Act = (power_1_Act/100).toFixed(1);
}
//特殊情况:连击技能(疾风剑)
else if(skillCategory == "12"){
dmgLAct = power_2;
dmgHAct = grow_2
}
//特殊情况:清算型(若敌方附带buff则提高伤害)
else if(skillCategory == "15" || skillCategory == "16"){
dmgLAct = buffdatatable[dmgL]["NAME"];
}
//特殊情况:幻影步
else if(skillCategory == "27"){
curNum = curNum + parseInt((curNum+1)/5);
power_1_Act = eval("k*x+b".replace("x",curNum).replace("k",grow_1).replace("b",power_1));
}
//替换结果
if(!skillEffect){
console.log("错误,不存在的技能类型:技能ID:"+hasSkill.ID+",技能名称:"+hasSkill.NAME+","+skillCategory+"===(被動0主動1):"+hasSkill["触发"]);
return "";
}
var skillEffectAct = skillEffect.replace("d",power_1_Act).replace("c",power_2_Act).replace("a",dmgLAct).replace("b",dmgHAct)
.replace("${dt}",dmgCategory).replace("${wx}",skillWuxing).replace(dmgLAct + "~"+ dmgLAct +"次",dmgLAct + "次");
skillEffectAct = (giftManaCost != "0"? "<br>耗蓝:"+giftManaCost+"%<br>" : "")+"<font color='#ff6600'>伤害关联:"+dmgType[hasSkill["伤害因子"]]+"</font><br>" + skillEffectAct;
//console.log(skillEffectAct)
return skillEffectAct;
}
/*格式化数字*/
function formateNum(num){
if(num){
var minusChar = (num<0?"-":"");
var num = (num<0?0-num : num)+"";
var numTemp = num;
if(num.length>8){
var n = num.substring(0,num.length-8);
//少于10亿,补充万单位
if(Number(n) < 10){
//避免出现0000
var m = num.substring(num.length-8,num.length-4);
mLength = m.length > 2 ? "2":m.length;//最多保留2位小数
if(Number(m) > 0){
m = "."+m;
}else{
m = "";
}
numTemp = parseFloat(n+m).toFixed(mLength) + "亿";
}else{
numTemp = n + "亿";
}
}else if(num.length>4){
var n = num.substring(0,num.length-4);
//少于5万,补充个单位
if(Number(n) < 5){
//避免出现0000
var m = num.substring(num.length-4,num.length);
mLength = m.length > 2 ? "2":m.length;//最多保留2位小数
if(Number(m) > 0){
m = "."+m;
numTemp = parseFloat(n+m).toFixed(mLength) + "万";
}else{
m = "";
numTemp = parseInt(n+m) + "万";
}
}else{
numTemp = n + "万";
}
}
return minusChar+numTemp;
}else{
return "0";
}
}
//功法可习得技能
function baseLearnSkill(map){
var keyArr = [
["威力1","成长1"],
["威力2","成长2"],
["伤害L","伤害H"],
["成长L","成长H"]
];
var div = $("<div></div>");
$.each(keyArr,function(index,arr){
var skillId = map[arr[0]];
var learnLv = map[arr[1]];
if(skillId != "0"){
var skill = skilldata[skillId];
if(skill){
div.append($("<p>"+ "第" + learnLv + "重领悟:</p>").append(findSkillTips(skill)));
//console.log(findSkillRewardInfo(skill));
}else{
console.log("人物技能不存在:"+skillId);
}
}
});
return div;
}
function findSkillTips(skill){
if(!skill){
console.log(skill)
return "";
}
var pic = "SkillIcon.bmp";
var className = "roleSkill";
var quality = "quality_"+skill["品质"];
var mtpis = "";
if(skill["ICON"] > 0 ){
var x = parseInt(skill["ICON"]%15);
var y = parseInt(skill["ICON"]/15);
mtpis += "<div class='"+className+" "+quality+"' style='background:url(images/"+pic+") -"+(x*40)+"px -"+(y*40)+"px no-repeat;'></div>";
}
mtpis += "<p>名称:"+skill.NAME+"</p>";
if(skill["五行"]){
mtpis += "<p>五行:"+wuxing[skill["五行"]]+"</p>";
}
mtpis += "<p>"+findSkillRewardInfo(skill) +"</p>";
//mtpis += "<p>来源:"+map.NAME+"</p>";
mtpis += getMtpis(skill.DESCRIPT);
var dataDiv = $("<span style='color:green'>"+skill.NAME+"</span>");
mtpisListener(dataDiv,mtpis);
return dataDiv;
}
function conditionStr(condition){
switch(condition){
case "1":return "永久不成立";
case "2":return "大于";
case "3":return "小于";
case "4":return "等于";
case "5":return "大于等于";
case "6":return "小于等于";
case "7":return "约等于";
default :return "-";
}
}
function formatWuxingLabel(wxID){
var label = $("<span></span>");
label.addClass("label");
label.html(wuxing[wxID]);
switch(wxID){
case "0":label.css("background-color","#777");break;//普通
case "1":label.css("background-color","#FFE153");break;//金
case "2":label.css("background-color","#5cb85c");break;//木
case "3":label.css("background-color","#337ab7");break;//水
case "4":label.css("background-color","#d9534f");break;//火
case "5":label.css("background-color","#977C00");break;//土
case "6":label.css("background-color","#9805ff");break;//混沌
default:break;
}
return label;
}
/*技能使用限制*/
function findSkillUseLimit(map){
var useCondition = map["条件"];
var useLimitStr = "";
if(useCondition > 0){
var useConditionName = skillCondition[useCondition];
var useConditionNum = map["条件值"];
var useConditionJudge = judgeType2[map["判断"]];
var useLimitStr = "";
if(!useConditionName){
useConditionName = "未知条件"+useCondition;
}
//生命、法力值
if(useCondition == "1" || useCondition == "2"){
useLimitStr = skillTarget[map["目标"]] + useConditionName + useConditionJudge + "<font color=blue>" + useConditionNum + "</font>";
}
//生命、法力比例
else if(useCondition == "3" || useCondition == "4"){
useLimitStr = skillTarget[map["目标"]] + useConditionName + useConditionJudge + "<font color=blue>" + useConditionNum + "%" + "</font>";
}
//宠物等级
else if(useCondition == "50" ){
useLimitStr = useConditionName + "<br>" + useConditionJudge + "<font color=blue>【" + useConditionNum + "】</font>" ;
}
//使用者的境界等级
else if(useCondition == "51" ){
useLimitStr = useConditionName + useConditionJudge + "<br><font color=blue>【" + ablestagerewardtable[useConditionNum].NAME + "】</font>" ;
}
//技能本身的等级
else if(useCondition == "52" ){
useLimitStr = $("<span><span>").append(findSkillTips(skilldata[useConditionNum])).append("<br>("+map["判断"]+")").append(jumpTabHref(skilldata[useConditionNum]));
}
//装备的武器类型
else if(useCondition == "53" ){
var equipTypeName = equipTypeSimple[useConditionNum];
//如果不是普通装备,则去装备中找名字
if(! equipTypeName ){
//equipTypeName = equipexdatatable[useConditionNum].NAME;
useLimitStr = $("<span>"+useConditionName + useConditionJudge + "<br></span>").append(findMapTips(useConditionNum));
}else{
useLimitStr = useConditionName + useConditionJudge + "<br><font color=blue>【" + equipTypeName + "】</font>";
}
}
//当前激活的内功
else if(useCondition == "54" ){
useLimitStr = $("<span>"+useConditionName + useConditionJudge+"<br><span>").append(findSkillTips(skilldata[useConditionNum])).append(jumpTabHref(skilldata[useConditionNum]));
}
//施法者是否拥有指定BUFF
else if(useCondition == "55" ){
useLimitStr = useConditionName + useConditionJudge + "<br><font color=blue>【" + buffdatatable[useConditionNum].NAME + "】</font>";
}
//当前目标是否拥有指定BUFF
else if(useCondition == "56" ){
useLimitStr = skillTarget[map["目标"]] + useConditionName + "<br><font color=blue>【" + buffdatatable[useConditionNum].NAME + "】</font>";
}
//身上是否穿着指定装备
else if(useCondition == "57" ){
//useLimitStr = useConditionName + "<br><font color=blue>【" + equipexdatatable[useConditionNum].NAME + "】</font>";
useLimitStr = $("<span>"+useConditionName + useConditionJudge + "<br></span>").append(findMapTips(useConditionNum));
}
//当前宠物是否特定类型
else if(useCondition == "58" ){
useLimitStr = $("<span>"+useConditionName + "<br></span>").append(findMapTips(useConditionNum)).append(jumpTabHref(pettable[useConditionNum]));
}
//使用者指定属性大于等于指定属性
else if(useCondition == "59" ){
useLimitStr = "<font color=blue>【" + gameattribstringtable[map["判断"]]["属性"] +"】<br>" + useConditionNum + "</font>";
}
else{
useLimitStr = useConditionName;
}
}
return useLimitStr;
}
function item203Tips(map){
//指向宠物技能
if(/4[0-9]{4}/.test(map.value1)){
return map.NAME + ":"+ item203ShouJueTips(map.value1);
}
//指向多个宠物技能表
else if(/[0-9]{1,4}/.test(map.value1)){
var psoddMap = petskilloddsdata[map.value1];
if(psoddMap){
var mtpis = "";
mtpis += "";
$.each(psoddMap,function(key,value){
if(/4[0-9]{4}/.test(key)){
if(value>0){
mtpis += item203ShouJueTips(key) + "<br>";
}
}
});
var giftData = $("<span style='color:green'>"+map.NAME+"</span>");
mtpisListener(giftData,mtpis);
var giftDiv = $("<span></span>");
giftDiv.append(giftData);
return giftDiv;
}else{
console.log("兽决定位不到技能:"+map.value1)
}
}
}
function item203ShouJueTips(id){
var petSkillMap = petskilldata[id];
if(petSkillMap){
return petSkillMap.NAME;
}else{
console.log("兽决定位不到技能:"+id)
}
}
/*
怪物扩展属性tips
*/
function findExtraAttrTips(str){
var div = $("<div></div>");
if(str && str != "0"){
//属性ID:值
//值可能是几率、buffID
//500 附加状态几率 501 附加状态ID
//属性ID> 60000为buffID,值为 几率( 除以100)即,1500 / 100 = 15%
var rate_500 = "";
var extra_501_arr = [];
var buff_arr = [];
$.each(str.split(";"),function(index,attr){
var attrArr = attr.split(":");
var id = attrArr[0];
var val = attrArr[1];
if("500" == id){
rate_500 = val;
}else if("501" == id){
extra_501_arr.push(val);
}else{
// buffID
if(parseInt(id) > 60000){
buff_arr.push({"buffId":id,"rate":(parseInt(val/100))});
}else{
var attrMap = gameattribstringtable[id];
var attrName = "未知属性";
if(attrMap){
attrName = attrMap["属性"];
div.append("<div>"+attrName+":"+val+"</div>");
}
}
}
});
var hrFlag = true;
//同时存在500和501
if(extra_501_arr.length > 0){
$.each(extra_501_arr,function(index,buffId){
var buffMap = buffdatatable[buffId];
if(buffMap){
if(div.html() && hrFlag){
hrFlag = false;
div.append("<hr>");
}
div.append($("<div>" + rate_500 + "%几率触发:</div>").append(findBuffTips({"效果1-类型":buffId,"目标":"0"})));
}
});
}
$.each(buff_arr,function(index,buff){
var buffMap = buffdatatable[buff.buffId];
if(buffMap){
if(div.html() && hrFlag){
hrFlag = false;
div.append("<hr>");
}
div.append($("<div>" + buff.rate + "%几率触发:</div>").append(findBuffTips({"效果1-类型":buff.buffId,"目标":"0"})));
}
});
}
return div;
}
/*
宠物初始属性值
*/
function findPetInitAttr(map){
var descript = "<hr>";
var gift = petskilldata[map["天赋"]];
descript += "<p>名称:"+map["NAME"]+"</p>";
descript += "<p>初始品阶:"+map["品阶"]+"</p>";
descript += "<p>御力要求:"+map["御力"]+"</p>";
descript += "<p>体力:"+map["HP"]+"</p>";
descript += "<p>法力:"+map["MP"]+"</p>";
descript += "<p>攻击:"+map["AttackL"]+"-"+map["AttackH"]+"</p>";
descript += "<p>法攻:"+map["MAttack"]+"</p>";
descript += "<p>防御:"+map["Def"]+"</p>";
descript += "<p>护甲:"+map["Arm"]+"</p>";
descript += "<p>速度:"+map["Speed"]+"</p>";
descript += "<p>暴击率:不知道怎么算</p>";//map["CritOdds"]
descript += "<p>暴击伤害:不知道怎么算</p>";//map["CritL"])
descript += "<p>成长:"+map["grow"]+"</p>";
descript += "<p>天赋:"+(gift?gift.NAME:"")+"</p>";
return descript;
}
function jumpTabHref(from){
if(from){
var map = globalsearch[from.ID];
if(map){
return "<a target='_blank' href="+map.url+"?tab="+map.panel+"&&searchName="+from.NAME+ "%20" +map.py+"><span class='glyphicon glyphicon-send'></span></a>";
}
}
return "";
}
//超链接包裹跳转
function jumpTabHref2(obj,from){
if(from){
var map = globalsearch[from.ID];
if(map){
return $("<a target='_blank' href="+map.url+"?tab="+map.panel+"&&searchName="+from.NAME+ "%20" +map.py+"></a>").append(obj);
}
}
return obj;
}
/*
* 激活Tab页
*/
function activeTab(href){
if(href){
href = href.replace(/[#-]/g,"");
href = href.replace(/^panel/,"");
href = tabSpecMap[href] == undefined ? href : tabSpecMap[href];
if(tabFlagMap[href] != undefined && tabFlagMap[href] == false){
tabFlagMap[href] = true;
tabFuncMap[href]();
}
}
}
function tableSearch(){
if(curVersionIndex != -1){
setTimeout(function(){
$().UItoTop({ easingType: 'easeOutQuart' });
//初始化搜索欄
var tab = getUrlParams("tab");
var tabId = "#"+tab;
if(tab && $(tabId).length>0 ){
//先激活Tab页
activeTab(tab);
$("#panel-tab li").addClass("active");
$("#panel-tab div").addClass("active");
$("#panel-tab div .active:not("+tabId+")").removeClass("active");
$("#panel-tab li .active").removeClass("active");
$("a[href='"+tabId+"']").parent().addClass("active");
var searchName = getUrlParamsCn("searchName");
if(searchName){
var searchInput = $("input",$(tabId));
searchInput.val(searchName);
searchInput.keyup();
}
}else{
$("#panel-tab li .active:not(:first-child)").removeClass("active");
$("#panel-tab div .active:not(:first-child)").removeClass("active");
}
},500);
}
}
/*
"58":"当前宠物类型"//当前宠物是否特定类型
"59":"属性",//使用者指定属性大于等于指定属性
function findFromMap(id){
//发现,解锁
var discover = map["发现"];
discover = map[discover];
discover = discover?discover:
var unlock = map["解锁"];
var map = maptable[id];
if(!map){
map = gate
}
}
*/
function formatRememberLabel(){
var label = $("<span></span>");
label.addClass("label");
label.html("转世保留");
label.css("background-color","#CD4F39");
return label;
}