伤害计算增加部分角色以及激化反应

This commit is contained in:
CMHopeSunshine 2022-09-17 15:07:31 +08:00
parent cc02a82d84
commit 6838a0b903
6 changed files with 628 additions and 192 deletions

View File

@ -47,14 +47,22 @@
"10000058": ["八重神子", "神子", "八重", "狐狸", "屑狐狸"],
"10000062": ["埃洛伊"],
"10000063": ["申鹤", "小姨", "小姨妈"],
"10000064": ["云堇", "云先生"],
"10000064": ["云堇", "云先生", "云瑾"],
"10000066": ["神里绫人", "0人", "大舅子", "小舅子", "绫人", "神里哥", "凌人", "神里凌人"],
"10000060": ["夜兰", "夜阑", "叶兰"],
"10000065": ["久岐忍", "忍者", "阿卡丽", "97忍", "97人"],
"10000059": ["鹿野院平藏", "近战法师", "平藏", "小鹿"],
"10000067": ["柯莱", "科莱"],
"10000068": ["多莉", "克隆羊", "商人"],
"10000069": ["提纳里", "小驴", "小提"]
"10000069": ["提纳里", "小驴", "小提"],
"10000098": ["妮露", "舞女"],
"10000099": ["赛诺", "风纪官"],
"10000100": ["坎蒂丝", "潘森"],
"10000101": ["纳西妲", "草神", "艹神", "小草王", "小吉祥草王", "草萝莉", "艹萝莉"],
"10000102": ["散兵", "伞兵", "国崩", "卢本伟", "大炮", "sb"],
"10000103": ["迪希雅"],
"10000104": ["艾尔海森", "苏"],
"10000105": ["白术"]
},
"武器": {
"磐岩结绿": [

View File

@ -23418,77 +23418,386 @@
"element": "雷",
"weapon": "双手剑",
"date": "2022年09月09日",
"tag": "治疗、能量回复、炼金返还",
"tag": "治疗、能量回复、炼金返还、自身附魔",
"birthday": "12月21日",
"mission": "待补充",
"introduce": "神出鬼没的旅行百货商人,最喜欢亮闪闪的摩拉。",
"destiny_name": "神灯座",
"destiny": {
"追加投资": "",
"特许经营": "",
"百巧千奇": "",
"酌盈剂虚": "",
"物超所值": "",
"漫掷万镒": ""
"追加投资": "断除烦恼炮命中后产生的售后服务弹增加1枚。",
"特许经营": "在战斗状态中当灯中幽精为相连的角色进行治疗时将从该角色处发射一枚镇灵炮造成相当于多莉攻击力50%的伤害。",
"百巧千奇": "卡萨扎莱宫的无微不至的技能等级提高3级。",
"酌盈剂虚": "与灯中幽精相连的角色,依据当前的生命值与元素能量,获得以下提升:",
"物超所值": "镇灵之灯·烦恼解决炮的技能等级提高3级。",
"漫掷万镒": "多莉施放镇灵之灯·烦恼解决炮后的3秒内将获得以下效果"
},
"attribute": {
"hp": {
"1": "",
"20": "",
"40": "",
"50": "",
"60": "",
"70": "",
"80": "",
"90": ""
"1": "1039",
"20": "2670",
"40": "5163",
"50": "6573",
"60": "8168",
"70": "9577",
"80": "10987",
"90": "12397"
},
"atk": {
"1": "",
"20": "",
"40": "",
"50": "",
"60": "",
"70": "",
"80": "",
"90": ""
"1": "19",
"20": "48",
"40": "93",
"50": "118",
"60": "147",
"70": "172",
"80": "198",
"90": "223"
},
"def": {
"1": "",
"20": "",
"40": "",
"50": "",
"60": "",
"70": "",
"80": "",
"90": ""
"1": "61",
"20": "156",
"40": "301",
"50": "384",
"60": "477",
"70": "559",
"80": "641",
"90": "723"
},
"attribute": "",
"attribute": "生命值加成",
"attributes": {
"1": "0",
"20": "0",
"40": "0",
"50": "",
"60": "",
"70": "",
"80": "",
"90": ""
"1": "0%",
"20": "0%",
"40": "0%",
"50": "6%",
"60": "12%",
"70": "12%",
"80": "18%",
"90": "24%"
}
},
"skill": {
"普通攻击·妙显剑舞·改": {
"描述": "普通攻击进行至多三段的连续挥砍。重击持续消耗体力,旋转大剑攻击周围的敌人。停止旋转时,会进行一次格外有力的挥砍。下落攻击从空中下坠冲击地面,攻击下落路径上的敌人,并在落地时造成范围伤害。",
"数值": { }
"数值": {
"一段伤害": [
"90.2%",
"97.6%",
"104.9%",
"115.4%",
"122.7%",
"131.1%",
"142.7%",
"154.2%",
"165.7%",
"178.3%",
"190.9%",
"",
"",
"",
""
],
"二段伤害": [
"41.1%+43.1%",
"44.4%+46.6%",
"47.8%+50.1%",
"52.5%+55.2%",
"55.9%+58.7%",
"59.7%+62.7%",
"65%+68.2%",
"70.2%+73.7%",
"75.5%+79.2%",
"81.2%+85.2%",
"85.9%+91.3%",
"",
"",
"",
""
],
"三段伤害": [
"128.4%",
"138.8%",
"149.3%",
"164.2%",
"174.7%",
"186.6%",
"203%",
"219.5%",
"235.9%",
"253.8%",
"271.7%",
"",
"",
"",
""
],
"重击循环伤害": [
"62.5%",
"67.6%",
"72.7%",
"80%",
"85.1%",
"90.9%",
"98.9%",
"106.9%",
"114.9%",
"123.6%",
"133.6%",
"",
"",
"",
""
],
"重击终结伤害": [
"113%",
"122%",
"132%",
"145%",
"154%",
"164%",
"179%",
"193%",
"208%",
"224%",
"242%",
"",
"",
"",
""
],
"重击体力消耗": [
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"每秒40.0点",
"",
"",
"",
""
],
"最大持续时间": [
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"5.0秒",
"",
"",
"",
""
],
"下坠期间伤害": [
"74.6%",
"80.7%",
"86.7%",
"95.4%",
"101.5%",
"108.4%",
"118%",
"127.5%",
"137%",
"147.4%",
"157.8%",
"",
"",
"",
""
],
"低空/高空坠地冲击伤害": [
"149%/186%",
"161%/201%",
"173%/217%",
"191%/238%",
"203%/253%",
"217%/271%",
"236%/295%",
"255%/318%",
"274%/342%",
"295%/368%",
"316%/394%",
"",
"",
"",
""
]
}
},
"镇灯之灵·烦恼解决炮": {
"镇之灯·烦恼解决炮": {
"描述": "示意镇灵之灯向敌人发射断除烦恼炮造成雷元素伤害。断除烦恼炮命中后将会产生2枚能自行追踪附近敌人的售后服务弹造成雷元素伤害。据说无论想要解决什么样的烦恼只要出价足够合适多莉都能办得到。",
"数值": { }
"数值": {
"断除烦恼炮伤害": [
"147.3%",
"158.3%",
"169.4%",
"184.1%",
"195.1%",
"206.2%",
"220.9%",
"235.6%",
"250.4%",
"265.1%",
"279.8%",
"294.6%",
"313%",
"",
""
],
"售后服务弹伤害": [
"31.6%",
"33.9%",
"36.3%",
"39.5%",
"41.8%",
"44.2%",
"47.3%",
"50.5%",
"53.7%",
"56.8%",
"60%",
"63.1%",
"67.1%",
"",
""
],
"冷却时间": [
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"9秒",
"",
""
]
}
},
"卡萨扎莱宫的无微不至": {
"描述": "召唤灯中幽精,为顾客提供形形色色的帮助。灯中幽精会与附近的角色相连。与灯中幽精相连的角色将会:\n\n持续恢复生命值回复量受益于多莉的生命值上限\n持续获得元素能量\n处于雷元素附着状态下。\n此外角色与灯中幽精之间的连接触碰敌人时将每0.4秒对敌人造成一次雷元素伤害。同时只能存在一个灯中幽精。\n\n「嗯客人是挑中了这盏灯吗哎呀…您的品味还真好呢只不过这个可是无价之宝。就比如说不管别人出多少摩拉客人您也不会把您旁边那个小吉祥物卖出去吧」",
"数值": { }
"数值": {
"连接伤害": [
"16%",
"17%",
"18%",
"20%",
"21%",
"22%",
"24%",
"25%",
"27%",
"29%",
"30%",
"32%",
"34%",
"",
""
],
"持续治疗量": [
"6.7%生命值上限+642",
"7.2%生命值上限+706",
"7.7%生命值上限+776",
"8.3%生命值上限+851",
"8.8%生命值上限+931",
"9.3%生命值上限+1017",
"10%生命值上限+1107",
"10.7%生命值上限+1204",
"11.3%生命值上限+1305",
"12%生命值上限+1412",
"12.7%生命值上限+1525",
"13.3%生命值上限+1643",
"14.2%生命值上限+1766",
"",
""
],
"元素能量回复": [
"1.6",
"1.7",
"1.8",
"1.9",
"2",
"2.1",
"2.2",
"2.3",
"2.4",
"2.5",
"2.5",
"2.5",
"2.5",
"",
""
],
"持续时间": [
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"12秒",
"",
""
],
"冷却时间": [
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"20秒",
"",
""
],
"元素能量": [
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"80",
"",
""
]
}
},
"披沙沥金": "",
"利上加利": "",
"披沙沥金": "与灯中幽精相连的角色在触发感电、超导、超载、原激化、超激化、超绽放、雷元素扩散或雷元素结晶反应后镇灵之灯·烦恼解决炮的冷却时间缩短1秒。该效果每3秒至多触发一次。",
"利上加利": "镇灵之灯·烦恼解决炮的断除烦恼炮或售后服务弹命中敌人时基于多莉的元素充能效率每100%为多莉恢复5点元素能量。每次施放镇灵之灯·烦恼解决炮只能通过这种方式恢复一次元素能量并至多恢复15点元素能量。",
"意外订单": "合成角色与武器培养素材时有25%的概率返还部分合成材料。"
},
"cv": {
@ -23499,14 +23808,14 @@
},
"food": "料理未知",
"story": [
"",
"",
"",
"",
"",
"",
"",
""
"「多莉·桑歌玛哈巴依,艾尔卡萨扎莱宫之主,无所不有的超级大商人!」\n拿到多莉的名片引入眼帘的便是这句气派的宣言。\n事实上多莉确实是须弥诸多商人中最特别的一个。\n她已经坐拥无数财富却依旧对赚取摩拉抱有极高的热情\n她麾下有数支赫赫有名的商队却依旧会亲自去须弥各地推销自己的宝贝。\n而她售卖的东西也让人眼花缭乱特制旅行包、野外烘干机、全自动雪球发射器…只要出得起摩拉似乎能够从他手上买到任何东西。",
"「哎呀哎呀,客人是要去沙漠吗?我这里可是有好东西呢。」\n「雨林潮湿里面还有毒蛇猛兽不做好准备可不行。来来来带上这个现在可是八折促销中」\n「等下客人你该不会是要从这里过去吧前面有好多好多魔物不如在我这买把武器防身吧。」\n「想去阿赫塔蒙柱王遗迹这你可问对人了。首先你得有一套完整的取水工具碰巧我可以提供喔。」\n须弥的旅人中流传着一个故事。\n据说当你即将踏足危险的地方就有机会见到一个等待已久的小小身影。\n无论是在险峻的山脉、荒芜的沙漠、幽暗的雨林还是魔物丛生的无人区都能看到她的笑脸。\n相传她的身上总是带着各种神奇的宝贝能够帮助旅人度过眼下的难关。\n——当然收费也绝不便宜。\n「在绝望中获得帮助」与「一口气失去大量摩拉」两种完全不同的心情交织在一起往往让旅人既爱又恨。\n而多莉总是会贴心地无视他们脸上纠结的神色将收到的摩拉装入鼓鼓的钱包微笑着离开。\n「多谢惠顾喔嘿嘿。」",
"在外人看来,多莉的生意似乎一直在蒸蒸日上,然而只有多莉自己清楚,她其实多次遇到过旁人无法想象的瓶颈。\n曾经有一段时间来自须弥各地的订单源源不断地送到多莉的手上但多莉却无法按期交付这么多的货物。\n因为周边几条商道的货运量十分有限难以承载如此规模的大宗商品运输。\n商队的成员劝多莉回绝部分订单这样依旧能凭借现有的商道维持稳定收益。假以时日富甲一方应该不成问题。\n但多莉却做了一个非常冒险的举措她一边接下订单一边与妙论派展开合作在公认的危险地区开辟新的商道。\n她将这些新商道开放给周边的商队并借此成立商会、整合资源终于突破了原先的瓶颈。\n时至今日整个须弥境内都能见到多莉新修建的商道「桑歌玛哈巴依老爷」的名声也越传越广。\n与之一同流传的还有多莉当初对商队成员说的话\n「我不会放弃任何订单那是蠢蘑菇才会做的事。」\n「我会赚到所有能赚的摩拉要问为什么的话因为摩拉就在那里。」",
"多莉曾经患过严重的失眠症,夜晚总会莫名其妙地睡不着,第二天顶着浓浓的黑眼圈去商会。\n就算请最好的医生也诊断不出病因安神香点了一根又一根不仅没有带来睡意反而把多莉呛得不停咳嗽。\n就在这个时候有一位路过的医生对多莉说\n「听说有人会在床头放一个沙漏听着细沙落下的声音入眠。」\n多莉尝试几天后以失败告终但她突然灵机一动找人定制了一款超大沙漏。\n沙漏里面装的不是沙子而是亮闪闪的摩拉。\n夜晚听着摩拉敲击的声音多莉终于睡了一个好觉。\n此后多莉在「应对失眠」这件事上也算小有心得\n「睡饱饱的秘诀在于让自己心安。」",
"或许是爱屋及乌,除了摩拉之外,多莉对于「能够带来摩拉的家伙」也很感兴趣。\n比如她手下的商队主要靠驮兽运货多莉就给驮兽修建了一座「乐园」让它们休息的时候可以在里面随意奔跑。\n她会为驮兽挑选非常精细的饲料保证它们营养均衡长得健壮漂亮。\n当然作为精明的商人她也不会放过任何商机。\n不同品种的驮兽在一起玩闹让乐园看上去颇为有趣。多莉借机招揽游客进来观赏通过销售门票、餐饮、纪念品的方式迅速回本。\n她对驮兽的喜爱是真的借此小赚一笔也是真的。\n在这一点上最有发言权的或许是多莉灯中的镇灵。它最初是被多莉骗入灯中但直到现在也没有离开。\n每次战斗时多莉都把它叫出来但打完之后多莉却又会满足它的心愿。\n有时镇灵会想传说中的故事或许是反的——\n灯中装着的其实是一个超强的打手拿着灯的才是能实现愿望的神灵。",
"没有人知道多莉与艾莉丝相遇的具体过程,但她们确实是一对让人艳羡的合作伙伴。\n艾莉丝周游世界各地不会一直停留在须弥但每过一段时间她就会托人将自己的新发明寄给多莉。\n而多莉也会在售卖之后想办法将摩拉送到艾莉丝手上。\n有时艾莉丝会附一封信告诉多莉自己最近身处险地摩拉可以先存放在多莉那里。\n多莉却执意派人携带摩拉赶往距离艾莉丝最近的安全地区以保证艾莉丝能够第一时间拿到摩拉。\n人工费、运输费、保险费…各项费用相加并非一笔小钱多莉却毫不吝啬主动掏腰包提前支付。\n「大善人多莉从不拖欠回款。」\n「而且艾莉丝女士的开销也不小必须保证她时时刻刻有钱可用。」\n多莉总是念叨着这些话不厌其烦地反复确认摩拉是否送到。\n即使现在艾莉丝已经不是多莉唯一的供货商多莉仍将这视为最重要的事。\n也许在她心里一直记得相遇那天许下的承诺。\n「你想要数不清的摩拉可以呀。我可以提供给你各种神奇道具卖出去多少就看你的本事啦。」\n「请放心。我会卖出高高的价格换来多多的摩拉以最快的速度送到你的手上…我会成为你最好的合作伙伴。」",
"为了更好地聆听摩拉发出的美妙声响,多莉亲自定制了一款「摩拉音乐盒」。\n音乐盒的正上方有一个开口开口的大小刚好可以容许一枚摩拉通过。\n当摩拉被投入音乐盒后便会沿着音乐盒内复杂的机关轨道滚动并时不时发出轻盈美妙的撞击声。\n撞击声此起彼伏汇聚成一首悠扬的乐章多莉也会在空旷的艾尔卡萨扎莱宫中旋转起舞。\n「摩拉摩拉亮闪闪的摩拉。」\n「摩拉摩拉数不清的摩拉。」\n「美丽的摩拉是我的摩拉。」\n「别人的摩拉快快来我家。」\n明明是如此熟悉的歌曲却总是百听不厌。\n音乐演奏到最后多莉也会向并不存在的观众深深一躬。\n恰在此时摩拉落入音乐盒的最底部与那里堆积如山的摩拉相碰——\n伴随着一声清脆的「啪嗒」声一切完美落幕。\n意犹未尽的多莉总是会选择向音乐盒中再投一枚摩拉。",
"两位年龄相仿的小女孩牵着手,哼着轻微变调的歌谣,并肩走过天真烂漫的时光。\n她们在春天折野花戴在彼此的耳旁光着脚蹚过夏天的溪水。\n在秋天一同从金色的沙丘滑下依偎在冬天的阳光里看同一本书。\n时间仿佛很长怎么也过不完。\n直到年长一些的姐姐忽然开始不停咳血家里围了许许多多陌生的大人。\n他们一本正经地解释着旁人难以理解的病情随后对着家徒四壁的房屋摇头叹气。\n不知道发生了什么的妹妹每天都去探望姐姐总是露出明亮的笑容\n「没事。休息一下就会好的啦。」\n看着她的笑容天真的妹妹也流露出期待的眼神甚至开始幻想下次一起出游的日子。\n直到某一天正在讲故事的姐姐忽然伸手攥紧了胸口的衣服。\n她瘦削的身体栽倒在床上妹妹伸手去抱她才发现她的身体很轻很轻。\n…就像一根羽毛慢慢飘向所有人都触摸不到的远方。\n后来妹妹在她的枕头下找到了一张揉皱的纸条。\n那是医生开的药方上面罗列着已经几乎绝迹的药材只有少数私人收藏家那里还有存货。\n想要购买的话至少需要几千万摩拉一个令穷困家庭不敢想象的价格。\n总是笑着摇头拒绝这个提议的姐姐或许只敢在深夜的时候看上几眼幻想着那遥不可及的「活下去」的希望。\n妹妹将纸条收进衣服的口袋默默地下了决心。\n「要赚多多的摩拉。」\n「这样就不会再看到亲近的人露出难过的笑脸这样就不会再因为没有摩拉而失去什么…」\n也许就是在那时神明的视线落在了她的身上。\n但对于「野心」疯涨的她来说获得神之眼或许也只是一个开始。\n在今后的无数个日夜中她不停地告诫自己保持清醒同时在心里给自己打气\n「只有执念是不够的。我会为了想要的东西不停努力直至耗尽最后一分力气。」\n「桑歌玛哈巴依老爷没有做不到的事。」"
]
}
}

View File

@ -257,7 +257,8 @@
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1,
"元素充能效率": 1
"元素充能效率": 1,
"元素精通": 1
}
},
"九条裟罗": {
@ -265,14 +266,16 @@
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1,
"元素充能效率": 1
"元素充能效率": 1,
"元素精通": 1
}
},
"刻晴": {
"常规": {
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1
"攻击力": 1,
"元素精通": 1
}
},
"雷泽": {
@ -286,7 +289,8 @@
"常规": {
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1
"攻击力": 1,
"元素精通": 1
}
},
"丽莎": {
@ -294,7 +298,8 @@
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1,
"元素充能效率": 1
"元素充能效率": 1,
"元素精通": 1
}
},
"北斗": {
@ -302,7 +307,8 @@
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1,
"元素充能效率": 1
"元素充能效率": 1,
"元素精通": 1
}
},
"雷主": {
@ -310,7 +316,8 @@
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1,
"元素充能效率": 1
"元素充能效率": 1,
"元素精通": 1
}
},
"早柚": {
@ -556,9 +563,7 @@
},
"多莉": {
"常规": {
"暴击率": 1,
"暴击伤害": 1,
"攻击力": 1,
"生命值": 1,
"元素精通": 1,
"元素充能效率": 1
}

View File

@ -1,92 +1,92 @@
[
9,
9,
10,
11,
11,
12,
13,
14,
16,
17,
19,
20,
22,
24,
27,
30,
32,
35,
38,
40,
43,
46,
49,
51,
54,
57,
59,
61,
65,
68,
71,
75,
78,
81,
85,
88,
8.6,
9.3,
10.0,
10.6,
11.3,
12.3,
13.3,
14.4,
15.7,
17.1,
18.6,
20.3,
22.2,
24.3,
26.9,
29.5,
32.2,
34.9,
37.6,
40.3,
43.1,
45.9,
48.6,
51.4,
54.2,
56.6,
59.1,
61.5,
64.9,
68.2,
71.3,
74.5,
77.7,
80.9,
84.6,
88.3,
92,
96,
100,
104,
108,
112,
117,
122,
128,
134,
141,
148,
155,
162,
168,
175,
182,
189,
199,
208,
217,
226,
236,
246,
257,
270,
283,
296,
312,
326,
340,
354,
368,
383,
397,
412,
426,
439,
457,
473,
490,
506,
522,
539,
555,
571,
588,
605,
627,
644,
663,
682,
703,
723
95.9,
99.8,
103.7,
107.7,
112.1,
116.8,
121.1,
128.0,
134.3,
140.8,
147.5,
154.5,
161.8,
168.4,
175.3,
182.2,
189.3,
199.3,
208.2,
217.2,
226.5,
236.3,
246.4,
256.8,
269.6,
282.8,
296.3,
312.2,
325.7,
339.8,
353.9,
368.3,
382.8,
397.4,
412.3,
425.6,
438.9,
457.1,
473.4,
489.7,
505.6,
522.4,
538.7,
555.0,
571.5,
588.2,
605.1,
626.9,
644.5,
622.7,
681.7,
702.6,
723.4
]

View File

@ -1,7 +1,7 @@
from copy import deepcopy
from LittlePaimon.database.models import Character
from .damage_model import common_fix, draw_dmg_pic, udc, get_damage_multipiler, growth_reaction
from .damage_model import common_fix, draw_dmg_pic, udc, get_damage_multipiler, growth_reaction, intensify_reaction
async def get_role_dmg(info: Character):
@ -26,11 +26,18 @@ async def get_role_dmg(info: Character):
a[1] += f'+{ly[1]}'
dmg_data['踢枪伤害'] = a
elif info.name == '雷电将军':
r = intensify_reaction(info.level, '超激化', info.prop.elemental_mastery, info.prop.reaction_coefficient['激化'])
info.damage_describe.insert(0, '满愿力')
vq['增伤'] += dm['e增伤']
dci = 0.6 if len(info.constellation) >= 2 else 0
dmg_data['协同攻击'] = udc(dm['协同攻击'] * info.prop.attack, (info.prop.crit_rate + ve['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + ve['增伤'], info.level, dci=dci)
dmg_data['梦想一刀'] = udc((dm['梦想一刀基础'] + dm['梦想一刀愿力']) * info.prop.attack, (info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + vq['增伤'],
dmg_data['梦想一刀'] = udc((dm['梦想一刀基础'] + dm['梦想一刀愿力']) * info.prop.attack,
(info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage),
info.prop.dmg_bonus[''] + vq['增伤'],
info.level, dci=dci)
dmg_data['梦想一刀超激化'] = udc((dm['梦想一刀基础'] + dm['梦想一刀愿力']) * info.prop.attack + r,
(info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage),
info.prop.dmg_bonus[''] + vq['增伤'],
info.level, dci=dci)
a1 = udc((dm['梦想一心重击基础'][0] + dm['梦想一心愿力']) * info.prop.attack, (info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + vq['增伤'], info.level,
dci=dci)
@ -41,26 +48,27 @@ async def get_role_dmg(info: Character):
dmg_data['梦想一心能量'] = (str(round(dm['梦想一心能量'] * (1 + extra_energy) * 5, 1)),)
elif info.name == '申鹤':
dmg_data['冰翎加成'] = (str(int(dm['冰翎'] * info.prop.attack)),)
info.prop.dmg_bonus[-1] += 0.15 if info.level >= 40 else 0
bl = int(dmg_data['冰翎加成'][0])
info.prop.dmg_bonus[''] += 0.15 if info.level >= 40 else 0
vq['增伤'] += 0.15 if info.level >= 70 else 0
dmg_data['战技长按'] = udc(dm['e长按'] * info.prop.attack, (info.prop.crit_rate + ve['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[-1] + ve['增伤'], info.level, rcd=dm['大招减抗'])
dmg_data['大招持续伤害'] = udc(dm['大招持续'] * info.prop.attack, (info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[-1] + vq['增伤'], info.level,
dmg_data['战技长按'] = udc(dm['e长按'] * info.prop.attack + bl, (info.prop.crit_rate + ve['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + ve['增伤'], info.level, rcd=dm['大招减抗'])
dmg_data['大招持续伤害'] = udc(dm['大招持续'] * info.prop.attack + bl, (info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + vq['增伤'], info.level,
rcd=dm['大招减抗'])
elif info.name == '珊瑚宫心海':
adb = 0.15 * info.prop.healing_bonus if info.level >= 70 else 0
if len(info.constellation) >= 6:
info.prop.dmg_bonus[3] += 0.4
info.prop.dmg_bonus[''] += 0.4
info.damage_describe.insert(0, '六命触发')
ab = udc(dm['普攻第一段'] * info.prop.attack, (info.prop.crit_rate + va['普攻暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[3] + va['普攻增伤'], info.level)
aq = udc(dm['普攻伤害提升'] * info.prop.health, (info.prop.crit_rate + va['普攻暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[3] + adb + va['普攻增伤'], info.level)
ab = udc(dm['普攻第一段'] * info.prop.attack, (info.prop.crit_rate + va['普攻暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + va['普攻增伤'], info.level)
aq = udc(dm['普攻伤害提升'] * info.prop.health, (info.prop.crit_rate + va['普攻暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + adb + va['普攻增伤'], info.level)
if len(ab) == 1:
dmg_data['开大普攻第一段'] = (str(int(ab[0]) + int(aq[0])), )
else:
dmg_data['开大普攻第一段'] = (str(int(ab[0]) + int(aq[0])), str(int(ab[1]) + int(aq[1])))
dmg_data['开大战技伤害'] = udc(dm['水母伤害'] * info.prop.attack + dm['E伤害提升'] * info.prop.health, (info.prop.crit_rate + ve['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[3] + ve['增伤'], info.level)
dmg_data['大招释放伤害'] = udc(dm['大招伤害'] * info.prop.health, (info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[3] + vq['增伤'], info.level)
dmg_data['开大普攻治疗量'] = (str(int((float(dm['大招治疗量'][0].replace('%生命值上限', '')) / 100.0 * info.prop.health + float(dm['大招治疗量'][1]) * (1 + info.prop.healing_bonus)))),)
dmg_data['战技治疗量'] = (str(int((float(dm['水母治疗量'][0].replace('%生命值上限', '')) / 100.0 * info.prop.health + float(dm['水母治疗量'][1]) * (1 + info.prop.healing_bonus)))),)
dmg_data['开大战技伤害'] = udc(dm['水母伤害'] * info.prop.attack + dm['E伤害提升'] * info.prop.health, (info.prop.crit_rate + ve['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + ve['增伤'], info.level)
dmg_data['大招释放伤害'] = udc(dm['大招伤害'] * info.prop.health, (info.prop.crit_rate + vq['暴击率'], info.prop.crit_damage), info.prop.dmg_bonus[''] + vq['增伤'], info.level)
dmg_data['开大普攻治疗量'] = (str(int((float(dm['大招治疗量'][0].replace('%生命值上限', '')) / 100.0 * info.prop.health + float(dm['大招治疗量'][1])) * (1 + info.prop.healing_bonus))),)
dmg_data['战技治疗量'] = (str(int((float(dm['水母治疗量'][0].replace('%生命值上限', '')) / 100.0 * info.prop.health + float(dm['水母治疗量'][1])) * (1 + info.prop.healing_bonus))),)
else:
dmg_data = get_dmg_data(info, dm, va, ve, vq)
if info.damage_describe:
@ -75,7 +83,7 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
'暴击伤害': 0,
'增伤': va['普攻增伤'],
'额外倍率': va['普攻额外倍率'],
'减抗': 0,
'减抗': va['减抗'],
'减防': 0
},
'AZ': {
@ -83,7 +91,7 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
'暴击伤害': 0,
'增伤': va['重击增伤'],
'额外倍率': va['重击额外倍率'],
'减抗': 0,
'减抗': va['减抗'],
'减防': 0
},
'AX': {
@ -91,7 +99,7 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
'暴击伤害': 0,
'增伤': va['下落攻击增伤'],
'额外倍率': va['下落攻击额外倍率'],
'减抗': 0,
'减抗': va['减抗'],
'减防': 0
},
'E': {
@ -99,7 +107,7 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
'暴击伤害': 0,
'增伤': ve['增伤'],
'额外倍率': ve['额外倍率'],
'减抗': 0,
'减抗': ve['减抗'],
'减防': 0
},
'Q': {
@ -107,7 +115,7 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
'暴击伤害': 0,
'增伤': vq['增伤'],
'额外倍率': 0,
'减抗': 0,
'减抗': vq['减抗'],
'减防': 0
},
}
@ -141,6 +149,7 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
dmg_data[skill_name] = (str(num), )
else:
r = 1 # 反应系数
j = 0 # 激化反应系数
n = '1' # 段数
e = '物理' # 伤害元素类型序号
t = '攻击力' # 倍率区类型
@ -150,6 +159,8 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
for p in para[1:]:
if p.startswith('r'):
r = growth_reaction(info.prop.elemental_mastery, float(p[3:]), info.prop.reaction_coefficient[f'{p[1:3]}'])
if p.startswith('j'):
j = intensify_reaction(info.level, p[1:], info.prop.elemental_mastery, info.prop.reaction_coefficient['激化'])
if p.startswith('n'):
n = p[1:]
if p.startswith('e'):
@ -157,13 +168,13 @@ def get_dmg_data(info: Character, dm: dict, va: dict, ve: dict, vq: dict) -> dic
if p.startswith('t'):
t = p[1:]
if isinstance(num, tuple):
n1 = udc(num[0] * dmt[t] + v[skill_type]['额外倍率'], (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
n2 = udc(num[1] * dmt[t] + v[skill_type]['额外倍率'], (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
n1 = udc(num[0] * dmt[t] + v[skill_type]['额外倍率'] + j, (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
n2 = udc(num[1] * dmt[t] + v[skill_type]['额外倍率'] + j, (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
dmg_data[skill_name] = (n1[0] + '+' + n2[0], n1[1] + '+' + n2[1])
else:
if n == '1':
dmg_data[skill_name] = udc(num * dmt[t] + v[skill_type]['额外倍率'], (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
dmg_data[skill_name] = udc(num * dmt[t] + v[skill_type]['额外倍率'] + j, (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
else:
dmg = udc(num * dmt[t] + v[skill_type]['额外倍率'], (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
dmg = udc(num * dmt[t] + v[skill_type]['额外倍率'] + j, (info.prop.crit_rate + v[skill_type]['暴击率'], info.prop.crit_damage + v[skill_type]['暴击伤害']), info.prop.dmg_bonus[e] + v[skill_type]['增伤'], info.level, r=r, rcd=v[skill_type]['减抗'], dcr=v[skill_type]['减防'])
dmg_data[skill_name] = (dmg[0] + '*' + n, dmg[1] + '*' + n)
return dmg_data

View File

@ -1,4 +1,4 @@
from pathlib import Path
import random
from typing import Tuple, Dict, Optional, List, Union
from LittlePaimon.config.path import JSON_DATA
@ -118,6 +118,20 @@ def upheaval_reaction(level: int, type: str, mastery: int = 0, extra_coefficient
return base_coefficient * base_ratio * (1 + mastery_increase + extra_coefficient) * resistance
def intensify_reaction(level: int, type: str, mastery: int = 0, extra_coefficient: float = 0):
"""
计算激化反应的伤害
:param level: 等级
:param type: 反应类型
:param mastery: 元素精通
:param extra_coefficient: 反应系数提高如如雷4件套效果
:return: 激化伤害
"""
r = 2.3 if type == '超激化' else 2.5
base_coefficient = upheaval_value[level - 1]
return r * base_coefficient * (1 + (mastery * 5) / (mastery + 1200)) * (1 + extra_coefficient)
def weapon_common_fix(info: Character):
"""
对武器的通用面板属性修正
@ -127,13 +141,15 @@ def weapon_common_fix(info: Character):
# 针对q的额外属性
extra_q = {
'暴击率': 0,
'增伤': 0
'增伤': 0,
'减抗': 0
}
# 针对e的额外属性
extra_e = {
'暴击率': 0,
'增伤': 0,
'额外倍率': 0
'额外倍率': 0,
'减抗': 0
}
# 针对a的额外属性
extra_a = {
@ -145,12 +161,13 @@ def weapon_common_fix(info: Character):
'重击额外倍率': 0,
'下落攻击暴击率': 0,
'下落攻击增伤': 0,
'下落攻击额外倍率': 0
'下落攻击额外倍率': 0,
'减抗': 0
}
# 单手剑
if info.weapon.name == '波乱月白经津':
for i in info.prop.dmg_bonus:
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.09 + 0.03 * info.weapon.affix_level)
# for i in info.prop.dmg_bonus:
# info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.09 + 0.03 * info.weapon.affix_level)
extra_a['普攻增伤'] += 2 * (0.15 + 0.05 * info.weapon.affix_level)
info.damage_describe.append('波乱满层')
elif info.weapon.name == '辰砂之纺锤':
@ -169,7 +186,7 @@ def weapon_common_fix(info: Character):
elif info.weapon.name == '雾切之回光':
# TODO 吃不满3层的角色
for i in info.prop.dmg_bonus:
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.3 + 0.1 * info.weapon.affix_level)
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.21 + 0.07 * info.weapon.affix_level)
info.damage_describe.append('雾切满层')
elif info.weapon.name == '铁蜂刺':
for i in info.prop.dmg_bonus:
@ -283,6 +300,12 @@ def weapon_common_fix(info: Character):
elif info.weapon.name == '弹弓':
extra_a['普攻增伤'] += 0.3 + 0.06 * info.weapon.affix_level
extra_a['重击增伤'] += 0.3 + 0.06 * info.weapon.affix_level
elif info.weapon.name == '猎人之径':
extra_a['重击额外倍率'] += info.prop.elemental_mastery * (1.2 + 0.4 * info.weapon.affix_level)
info.damage_describe.append('猎人弓触发')
elif info.weapon.name == '王下近侍':
info.prop.elemental_mastery += 40 + 20 * info.weapon.affix_level
info.damage_describe.append('王下近侍触发')
# 长柄武器
elif info.weapon.name == '白缨枪':
@ -300,8 +323,8 @@ def weapon_common_fix(info: Character):
info.prop.extra_attack += info.prop.base_attack * 0.18 + 0.06 * info.weapon.affix_level
info.damage_describe.append('决斗单怪')
elif info.weapon.name == '息灾':
for i in info.prop.dmg_bonus:
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.09 + 0.03 * info.weapon.affix_level)
# for i in info.prop.dmg_bonus:
# info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.09 + 0.03 * info.weapon.affix_level)
info.prop.extra_attack += info.prop.base_attack * 6 * (0.024 + 0.006 * info.weapon.affix_level)
info.damage_describe.append('息灾前台满层')
elif info.weapon.name == '薙草之稻光':
@ -320,7 +343,7 @@ def weapon_common_fix(info: Character):
extra_e['增伤'] += 3 * (0.09 + 0.03 * info.weapon.affix_level)
info.damage_describe.append('神乐满层')
elif info.weapon.name == '不灭月华':
info.prop.healing_bonus += 0.075 + 0.025 * info.weapon.affix_level
# info.prop.healing_bonus += 0.075 + 0.025 * info.weapon.affix_level
extra_a['普攻额外倍率'] += (0.005 + 0.005 * info.weapon.affix_level) * info.prop.health
elif info.weapon.name == '白辰之环':
for i in info.prop.dmg_bonus:
@ -334,9 +357,17 @@ def weapon_common_fix(info: Character):
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + 4 * (0.06 + 0.02 * info.weapon.affix_level)
info.damage_describe.append('四风满层')
elif info.weapon.name == '流浪乐章':
t = random.randint(1, 3)
if t == 1:
info.prop.extra_attack += (0.45 + 0.15 * info.weapon.affix_level) * info.prop.base_attack
info.damage_describe.append('流浪触发加攻')
elif t == 2:
for i in info.prop.dmg_bonus:
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + (0.36 + 0.12 * info.weapon.affix_level)
info.damage_describe.append('流浪触发增伤')
else:
info.prop.elemental_mastery += 180 + 60 * info.weapon.affix_level
info.damage_describe.append('流浪触发加精通')
elif info.weapon.name == '万国诸海图谱':
for i in info.prop.dmg_bonus:
info.prop.dmg_bonus[i] = info.prop.dmg_bonus[i] + 2 * (0.06 + 0.02 * info.weapon.affix_level)
@ -354,6 +385,10 @@ def weapon_common_fix(info: Character):
extra_q['增伤'] += 0.15 + 0.05 * info.weapon.affix_level
extra_e['增伤'] += 0.15 + 0.05 * info.weapon.affix_level
extra_a['普攻增伤'] += 0.15 + 0.05 * info.weapon.affix_level
elif info.weapon.name == '盈满之实':
info.prop.elemental_mastery += 5 * (21 + 3 * info.weapon.affix_level)
info.prop.extra_attack -= 5 * 0.05 * info.prop.base_attack
info.damage_describe.append('盈满之实满层')
# 系列武器
elif info.weapon.name.startswith('千岩'):
@ -436,6 +471,13 @@ def common_fix(info: Character) -> Tuple[Character, dict, dict, dict]:
info.prop.reaction_coefficient['融化'] += 0.15
info.prop.reaction_coefficient['超载'] += 0.4
info.prop.reaction_coefficient['燃烧'] += 0.4
info.prop.reaction_coefficient['绽放'] += 0.4
elif suit[0][0] == '如雷的盛怒':
info.prop.reaction_coefficient['超载'] += 0.4
info.prop.reaction_coefficient['感电'] += 0.4
info.prop.reaction_coefficient['超导'] += 0.4
info.prop.reaction_coefficient['绽放'] += 0.4
info.prop.reaction_coefficient['激化'] += 0.2
elif suit[0][0] == '翠绿之影':
info.prop.reaction_coefficient['扩散'] += 0.6
elif suit[0][0] == '渡过烈火的贤人':
@ -482,6 +524,15 @@ def common_fix(info: Character) -> Tuple[Character, dict, dict, dict]:
info.damage_describe.append('武人触发')
elif suit[0][0] == '行者之心':
extra_a['重击暴击率'] += 0.3
elif suit[0][0] == '饰金之梦':
info.prop.elemental_mastery += 3 * 50
info.prop.extra_attack += 0.14 * info.prop.base_attack
info.damage_describe.append('饰金之梦触发3不同元素')
elif suit[0][0] == '深林的记忆':
extra_a['减抗'] += 0.3
extra_e['减抗'] += 0.3
extra_q['减抗'] += 0.3
info.damage_describe.append('草套减抗')
return info, extra_q, extra_e, extra_a
@ -561,7 +612,9 @@ def get_damage_multipiler(info: Character) -> Optional[Dict[str, any]]:
'B:c4-攻击力': (info.prop.base_attack * 0.25, '四命触发'),
'AZ-e雷:重击': (float(az[0].replace('%', '')) / 100.0, float(az[1].replace('%', '')) / 100.0),
'E-e雷:战技斩击': float(skill_data['星斗归位']['数值']['斩击伤害'][level_e].replace('%', '')) / 100.0,
'Q-e雷:大招尾刀': float(skill_data['天街巡游']['数值']['最后一击伤害'][level_q].replace('%', '')) / 100.0
'E-e雷-j超激化:战技斩击超激化': float(skill_data['星斗归位']['数值']['斩击伤害'][level_e].replace('%', '')) / 100.0,
'Q-e雷:大招尾刀': float(skill_data['天街巡游']['数值']['最后一击伤害'][level_q].replace('%', '')) / 100.0,
'Q-e雷-j超激化:大招尾刀超激化': float(skill_data['天街巡游']['数值']['最后一击伤害'][level_q].replace('%', '')) / 100.0
}
if info.name == '可莉':
return {
@ -580,7 +633,9 @@ def get_damage_multipiler(info: Character) -> Optional[Dict[str, any]]:
'B:c6-减防-E': (0.6,),
'AZ-e雷:重击': float(skill_data['普通攻击·狐灵食罪式']['数值']['重击伤害'][level_a].replace('%', '')) / 100.0,
'E-e雷:杀生樱满阶': float(skill_data['野干役咒·杀生樱']['数值'][e][level_e].replace('%', '')) / 100.0,
'E-e雷-j超激化:杀生樱满阶超激化': float(skill_data['野干役咒·杀生樱']['数值'][e][level_e].replace('%', '')) / 100.0,
'Q-e雷:天狐霆雷': float(skill_data['大密法·天狐显真']['数值']['天狐霆雷伤害'][level_q].replace('%', '')) / 100.0,
'Q-e雷-j超激化:天狐霆雷超激化': float(skill_data['大密法·天狐显真']['数值']['天狐霆雷伤害'][level_q].replace('%', '')) / 100.0,
}
if info.name == '阿贝多':
return {
@ -668,8 +723,10 @@ def get_damage_multipiler(info: Character) -> Optional[Dict[str, any]]:
'Q-e岩:大招每段': float(skill_data['天权崩玉']['数值']['每颗宝石伤害'][level_q].replace('%', '').replace('每个', '')) / 100.0,
}
if info.name == '菲谢尔':
dm = {'A:普攻第一段': float(skill_data['普通攻击·罪灭之矢']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0}
dm['E-e雷:奥兹攻击'] = float(skill_data['夜巡影翼']['数值']['奥兹攻击伤害'][level_e].replace('%', '')) / 100.0
dm = {'A:普攻第一段': float(skill_data['普通攻击·罪灭之矢']['数值']['一段伤害'][level_a].replace('%', '')) / 100.0,
'E-e雷:奥兹攻击': float(skill_data['夜巡影翼']['数值']['奥兹攻击伤害'][level_e].replace('%', '')) / 100.0,
'E-e雷-j超激化:奥兹攻击超激化': float(skill_data['夜巡影翼']['数值']['奥兹攻击伤害'][level_e].replace('%', '')) / 100.0,
}
if len(info.constellation) >= 6:
dm['E-e雷:奥兹协同攻击'] = 0.3
return dm
@ -678,6 +735,8 @@ def get_damage_multipiler(info: Character) -> Optional[Dict[str, any]]:
'B:c6-减抗-*': (0.15, '六命减抗'),
'E-e雷:完美弹反': float(skill_data['捉浪']['数值']['基础伤害'][level_e].replace('%', '')) / 100.0 + 2 * float(
skill_data['捉浪']['数值']['每层伤害提升'][level_e].replace('%', '')) / 100.0,
'E-e雷-j超激化:完美弹反超激化': float(skill_data['捉浪']['数值']['基础伤害'][level_e].replace('%', '')) / 100.0 + 2 * float(
skill_data['捉浪']['数值']['每层伤害提升'][level_e].replace('%', '')) / 100.0,
'Q-e雷:斫雷每段': float(skill_data['斫雷']['数值']['闪电伤害'][level_q].replace('%', '')) / 100.0
}
if info.name == '诺艾尔':
@ -854,6 +913,50 @@ def get_damage_multipiler(info: Character) -> Optional[Dict[str, any]]:
1 + info.prop.healing_bonus)),
'Q-e冰:大招伤害': float(skill_data['仙法·救苦度厄']['数值']['技能伤害'][level_q].replace('%', '')) / 100.0,
}
if info.name == '提纳里':
info.prop.elemental_mastery += 50 if info.level >= 50 else 0
info.prop.elemental_mastery += 120 if len(info.constellation) >= 4 else 0
return {
'B:c1-暴击率-AZ': (0.15,),
'B:c2-增伤-*': (0.2, '二命增伤'),
'B:c4-增伤-*': (0, '四命精通'),
'B:l70-增伤-AZ': (min(info.prop.elemental_mastery, 1000) * 0.0006, ),
'B:l70-增伤-Q': (min(info.prop.elemental_mastery, 1000) * 0.0006,),
'AZ-e草:重击花筥箭': float(skill_data['普通攻击·藏蕴破障']['数值']['花筥箭伤害'][level_a].replace('%', '')) / 100.0,
'AZ-e草-j蔓激化:重击花筥箭蔓激化': float(skill_data['普通攻击·藏蕴破障']['数值']['花筥箭伤害'][level_a].replace('%', '')) / 100.0,
'AZ-e草-n4:重击藏蕴花矢': float(skill_data['普通攻击·藏蕴破障']['数值']['藏蕴花矢伤害'][level_a].replace('%', '')) / 100.0,
'Q-e草:缠藤箭': float(skill_data['造生缠藤箭']['数值']['缠藤箭伤害'][level_q].replace('%', '')) / 100.0,
'Q-e草-j蔓激化:缠藤箭蔓激化': float(skill_data['造生缠藤箭']['数值']['缠藤箭伤害'][level_q].replace('%', '')) / 100.0,
'Q-e草:次级缠藤箭-n6': float(skill_data['造生缠藤箭']['数值']['次级缠藤箭伤害'][level_q].replace('%', '')) / 100.0,
}
if info.name == '柯莱':
info.prop.elemental_mastery += 60 if len(info.constellation) >= 4 else 0
return {
'E-e草:飞叶轮': float(skill_data['拂花偈叶']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0,
'E-e草-j蔓激化:飞叶轮蔓激化': float(skill_data['拂花偈叶']['数值']['技能伤害'][level_e].replace('%', '')) / 100.0,
'Q-e草:大招爆发伤害': float(skill_data['猫猫秘宝']['数值']['爆发伤害'][level_q].replace('%', '')) / 100.0,
'Q-e草-j蔓激化:大招爆发蔓激化': float(skill_data['猫猫秘宝']['数值']['爆发伤害'][level_q].replace('%', '')) / 100.0,
'Q-e草:大招持续伤害': float(skill_data['猫猫秘宝']['数值']['跃动伤害'][level_q].replace('%', '')) / 100.0,
'Q-e草-j蔓激化:大招持续蔓激化': float(skill_data['猫猫秘宝']['数值']['跃动伤害'][level_q].replace('%', '')) / 100.0
}
if info.name == '多莉':
h = skill_data['卡萨扎莱宫的无微不至']['数值']['持续治疗量'][level_q].split('生命值上限+')
return {
'E-e雷:断除烦恼炮': float(skill_data['镇灵之灯·烦恼解决炮']['数值']['断除烦恼炮伤害'][level_e].replace('%', '')) / 100.0,
'T:大招持续治疗量': int(float(h[0].replace('%', '')) / 100.0 * info.prop.health + float(h[1]) * (1 + info.prop.healing_bonus)),
}
if info.name == '九条裟罗':
atk = float(skill_data['鸦羽天狗霆雷召咒']['数值']['攻击力加成比例'][level_e].replace('%', '')) / 100.0 * info.prop.base_attack
return {
'T:乌羽攻击加成': int(atk),
'B:l0-攻击力-*': (atk, ),
'B:c6-暴击伤害-*': (0.6, ),
'E-e雷:元素战技': float(skill_data['鸦羽天狗霆雷召咒']['数值']['天狗咒雷•伏伤害'][level_e].replace('%', '')) / 100.0,
'Q-e雷:大招首段': float(skill_data['煌煌千道镇式']['数值']['天狗咒雷•金刚坏伤害'][level_q].replace('%', '')) / 100.0,
'Q-e雷-j超激化:大招首段超激化': float(skill_data['煌煌千道镇式']['数值']['天狗咒雷•金刚坏伤害'][level_q].replace('%', '')) / 100.0,
'Q-e雷:大招雷砾': float(skill_data['煌煌千道镇式']['数值']['天狗咒雷•雷砾伤害'][level_q].replace('%', '')) / 100.0,
}
async def draw_dmg_pic(dmg: Dict[str, Union[tuple, list]]) -> PMImage: