|
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":"当前激活的内功", |
|
"55":"施法者拥有Buff", |
|
"56":"拥有Buff", |
|
"57":"身上穿戴装备", |
|
"58":"当前宠物", |
|
"59":"属性", |
|
"60":"左手为空", |
|
"61":"派遣宠物类型为什么宠物(只适用于蛮荒)", |
|
"62":"本次蛮荒触发事件的次数大于等于多少次(只适用于蛮荒)", |
|
"63":"本次蛮荒触发事件的次数小于多少次(只适用于蛮荒)", |
|
}; |
|
|
|
|
|
|
|
|
|
var skillTarget = { |
|
"0":"敌人", |
|
"1":"敌人", |
|
"2":"自己", |
|
"3":"拥有者", |
|
"4":"宠物", |
|
"5":"宠物", |
|
"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 = { |
|
|
|
"1":"物攻倍击 主动 ", |
|
"2":"物攻倍击附伤害 主动", |
|
"3":"法功倍击 主动", |
|
"4":"法功倍击附伤害 主动", |
|
"5":"反击 被动", |
|
"6":"反震 被动", |
|
|
|
|
|
|
|
|
|
|
|
"12":"连击 主动", |
|
|
|
"14":"吸血 主动", |
|
"15":"结算物功 主动", |
|
"16":"结算法功 主动", |
|
|
|
|
|
|
|
"20":"加血 主动", |
|
"21":"加蓝 主动", |
|
|
|
|
|
"24":"双攻倍击 主动", |
|
|
|
"26":"速差攻击 主动", |
|
|
|
"28":"丢钱 主动 固定丢1块钱", |
|
"29":"丢钱 主动 固定丢1%的钱", |
|
"30":"吸钱 被动", |
|
"31":"参数倍攻 主动 配合因子使用可以实现多种效果", |
|
"32":"随机次数连击 主动", |
|
"33":"护盾 主动", |
|
|
|
|
|
|
|
}; |
|
|
|
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":"治疗", |
|
}; |
|
|
|
|
|
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)); |
|
} |
|
|
|
|
|
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; |
|
} |
|
|
|
function getUrlParamsCn(name){ |
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); |
|
var r = window.location.search.substr(1).match(reg); |
|
|
|
if (r != null) return unescape(getCharFromUtf8(r[2].replace("%C2%B7"," "))); return null; |
|
} |
|
|
|
|
|
|
|
function mtpisListener(obj,mtpis){ |
|
obj.mouseenter(function(){ |
|
obj.attr("data-mtpis",mtpis); |
|
}); |
|
obj.mouseleave(function(){ |
|
obj.attr("data-mtpis",""); |
|
}); |
|
} |
|
|
|
|
|
|
|
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 += "<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){ |
|
|
|
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 +" "; |
|
}); |
|
mtpis += "<p>怪物名称:"+bornName+"</p>"; |
|
mtpis += "<p>等级:"+monsterLevel+"</p>"; |
|
mtpis += "<p>五行:"+monsterWuxing+"</p>"; |
|
mtpis += "<p>来源:"+monsterFrom+"</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 = ""; |
|
|
|
return ; |
|
} |
|
itemFrom += fromMap.NAME+ "<font color=yellow>"+itemFromType +"</font>; "; |
|
}); |
|
|
|
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){ |
|
|
|
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; |
|
} |
|
|
|
|
|
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; |
|
} |
|
} |
|
|
|
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+" "; |
|
}); |
|
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; |
|
} |
|
|
|
|
|
|
|
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>"; |
|
} |
|
|
|
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]; |
|
|
|
|
|
if(map["效果1"] == "300"){ |
|
|
|
}else{ |
|
|
|
if(num!="0"){ |
|
|
|
if(!/-/.test(num)){ |
|
num = "+"+num; |
|
} |
|
if(/%/.test(effect)){ |
|
effect = effect.replace("%",num+"%"); |
|
}else{ |
|
effect+= num; |
|
} |
|
} |
|
} |
|
|
|
effectTotal += effect+" "; |
|
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>"; |
|
|
|
|
|
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>"; |
|
} |
|
|
|
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]; |
|
|
|
|
|
if(map["效果1"] == "300"){ |
|
|
|
}else{ |
|
|
|
if(num!="0"){ |
|
|
|
if(!/-/.test(num)){ |
|
num = "+"+num; |
|
} |
|
if(/%/.test(effect)){ |
|
effect = effect.replace("%",num+"%"); |
|
}else{ |
|
effect+= num; |
|
} |
|
} |
|
} |
|
|
|
effectTotal += effect+" "; |
|
} |
|
|
|
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]; |
|
|
|
|
|
if(map["效果1"] == "300"){ |
|
|
|
}else{ |
|
|
|
if(num && num!="0"){ |
|
param[attrMap.ID] = {ID:attrMap.ID,NAME:attrMap["属性"],NUM:num}; |
|
} |
|
} |
|
} |
|
return param; |
|
} |
|
|
|
function calcBuffFormual(map){ |
|
var formualNo = map["效果1-公式"]; |
|
var formual = "无"; |
|
attrMap = gameattribstringtable[map["效果1-xID"]]; |
|
if(attrMap){ |
|
|
|
|
|
formual= getCalcMethod(map["效果1-公式"], |
|
map["效果1-xK"], |
|
map["效果1-xB"], |
|
attrMap["属性"]); |
|
} |
|
|
|
|
|
return formual; |
|
} |
|
|
|
|
|
function calcBuffRateFormual(map){ |
|
var formualNo = map["几率-公式"]; |
|
var formual = "无"; |
|
attrMap = gameattribstringtable[map["几率-xID"]]; |
|
if(attrMap){ |
|
formual= getCalcMethod(map["几率-公式"], |
|
map["几率-xK"], |
|
map["几率-xB"], |
|
attrMap["属性"]); |
|
} |
|
return formual; |
|
} |
|
|
|
|
|
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>; "; |
|
} |
|
}); |
|
|
|
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 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 ){ |
|
|
|
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])); |
|
} |
|
|
|
else if(useCondition == "55" ){ |
|
useLimitStr = useConditionName + useConditionJudge + "<font color=yellow>【" + buffdatatable[useConditionNum].NAME + "】</font>"; |
|
} |
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|
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+" "; |
|
}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 +" "; |
|
} |
|
}); |
|
|
|
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+" "; |
|
}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+" </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]["属性"]; |
|
|
|
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 = "威力"; |
|
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 = "威力"; |
|
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"]+"% ":""; |
|
|
|
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; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var calcMethodArr = [ |
|
[["","b"],["x×k","x×k+b"]], |
|
[["","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){ |
|
|
|
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,"/"); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
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; |
|
} |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
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); |
|
|
|
|
|
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; |
|
} |
|
|
|
|
|
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; |
|
} |
|
|
|
|
|
|
|
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["耗蓝"]; |
|
|
|
|
|
var power_1_Act; |
|
|
|
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 |
|
} |
|
|
|
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; |
|
|
|
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); |
|
|
|
if(Number(n) < 10){ |
|
|
|
var m = num.substring(num.length-8,num.length-4); |
|
mLength = m.length > 2 ? "2":m.length; |
|
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); |
|
|
|
if(Number(n) < 5){ |
|
|
|
var m = num.substring(num.length-4,num.length); |
|
mLength = m.length > 2 ? "2":m.length; |
|
|
|
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))); |
|
|
|
|
|
}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 += 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 ){ |
|
|
|
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])); |
|
} |
|
|
|
else if(useCondition == "55" ){ |
|
useLimitStr = useConditionName + useConditionJudge + "<br><font color=blue>【" + buffdatatable[useConditionNum].NAME + "】</font>"; |
|
} |
|
|
|
else if(useCondition == "56" ){ |
|
useLimitStr = skillTarget[map["目标"]] + useConditionName + "<br><font color=blue>【" + buffdatatable[useConditionNum].NAME + "】</font>"; |
|
} |
|
|
|
else if(useCondition == "57" ){ |
|
|
|
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) |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
function findExtraAttrTips(str){ |
|
var div = $("<div></div>"); |
|
if(str && str != "0"){ |
|
|
|
|
|
|
|
|
|
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{ |
|
|
|
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; |
|
|
|
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>"; |
|
descript += "<p>暴击伤害:不知道怎么算</p>"; |
|
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; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
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 ){ |
|
|
|
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); |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function formatRememberLabel(){ |
|
var label = $("<span></span>"); |
|
label.addClass("label"); |
|
label.html("转世保留"); |
|
label.css("background-color","#CD4F39"); |
|
return label; |
|
} |