400 lines
10 KiB
Python
400 lines
10 KiB
Python
装扮选项属性 = {
|
|
"神器": {
|
|
"智力": 65,
|
|
"体力": 65,
|
|
"精神": 65,
|
|
"力量": 65,
|
|
"施放速度": 0.14,
|
|
"移动速度": 0.07,
|
|
"攻击速度": 0.07,
|
|
"火属性抗性": 45,
|
|
"光属性抗性": 45,
|
|
"冰属性抗性": 45,
|
|
"暗属性抗性": 45,
|
|
"所有异常抗性": 0.042
|
|
},
|
|
"稀有": {
|
|
"智力": 55,
|
|
"体力": 55,
|
|
"精神": 55,
|
|
"力量": 55,
|
|
"施放速度": 0.12,
|
|
"移动速度": 0.06,
|
|
"攻击速度": 0.06,
|
|
"火属性抗性": 35,
|
|
"光属性抗性": 35,
|
|
"冰属性抗性": 35,
|
|
"暗属性抗性": 35,
|
|
"所有异常抗性": 0.036
|
|
},
|
|
"高级": {
|
|
"智力": 45,
|
|
"体力": 45,
|
|
"精神": 45,
|
|
"力量": 45,
|
|
"施放速度": 0.12,
|
|
"移动速度": 0.05,
|
|
"攻击速度": 0.05,
|
|
"火属性抗性": 25,
|
|
"光属性抗性": 25,
|
|
"冰属性抗性": 25,
|
|
"暗属性抗性": 25,
|
|
"所有异常抗性": 0.03
|
|
}
|
|
}
|
|
|
|
|
|
class 装扮:
|
|
部位: str
|
|
品质: str
|
|
套装: str
|
|
选项集合: tuple[str]
|
|
|
|
def 效果(self, 角色, 选项: str):
|
|
if 选项 in self.选项集合:
|
|
数值 = 装扮选项属性[self.品质][选项]
|
|
角色.SetStatus(**{选项: 数值})
|
|
elif str(选项) == '0':
|
|
pass
|
|
else:
|
|
skill = 角色.GetSkillByName(选项)
|
|
if skill is not None:
|
|
skill.lv += 1
|
|
|
|
|
|
class 神器装扮头发(装扮):
|
|
部位 = "头发"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
id = 1
|
|
选项集合 = ("智力", "精神", "施放速度")
|
|
|
|
|
|
class 神器装扮帽子(装扮):
|
|
部位 = "帽子"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
选项集合 = ("智力", "精神", "施放速度")
|
|
|
|
|
|
class 神器装扮脸部(装扮):
|
|
部位 = "脸部"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
# 逗号不能删
|
|
选项集合 = ("攻击速度", "所有异常抗性")
|
|
|
|
|
|
class 神器装扮胸部(装扮):
|
|
部位 = "胸部"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
选项集合 = ("攻击速度", "所有异常抗性")
|
|
|
|
|
|
class 神器装扮上衣(装扮):
|
|
部位 = "上衣"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
选项集合 = ()
|
|
|
|
|
|
class 神器装扮腰带(装扮):
|
|
部位 = "腰带"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
选项集合 = ("力量", "体力", "火属性抗性", "光属性抗性", "冰属性抗性", "暗属性抗性")
|
|
|
|
|
|
class 神器装扮下装(装扮):
|
|
部位 = "下装"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
选项集合 = ()
|
|
|
|
|
|
class 神器装扮鞋(装扮):
|
|
部位 = "鞋"
|
|
品质 = "神器"
|
|
套装 = "神器装扮"
|
|
选项集合 = ("力量", "体力", "移动速度")
|
|
|
|
|
|
class 稀有装扮头发(装扮):
|
|
部位 = "头发"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ("智力", "精神", "施放速度")
|
|
|
|
|
|
class 稀有装扮帽子(装扮):
|
|
部位 = "帽子"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ("智力", "精神", "施放速度")
|
|
|
|
|
|
class 稀有装扮脸部(装扮):
|
|
部位 = "脸部"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ("攻击速度", "所有异常抗性")
|
|
|
|
|
|
class 稀有装扮胸部(装扮):
|
|
部位 = "胸部"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ("攻击速度", "所有异常抗性")
|
|
|
|
|
|
class 稀有装扮上衣(装扮):
|
|
部位 = "上衣"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ()
|
|
|
|
|
|
class 稀有装扮腰带(装扮):
|
|
部位 = "腰带"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ("力量", "体力", "火属性抗性", "光属性抗性", "冰属性抗性", "暗属性抗性")
|
|
|
|
|
|
class 稀有装扮下装(装扮):
|
|
部位 = "下装"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ()
|
|
|
|
|
|
class 稀有装扮鞋(装扮):
|
|
部位 = "鞋"
|
|
品质 = "稀有"
|
|
套装 = "稀有装扮"
|
|
选项集合 = ("力量", "体力", "移动速度")
|
|
|
|
|
|
class 高级装扮头发(装扮):
|
|
部位 = "头发"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ("智力", "精神", "施放速度")
|
|
|
|
|
|
class 高级装扮帽子(装扮):
|
|
部位 = "帽子"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ("智力", "精神", "施放速度")
|
|
|
|
|
|
class 高级装扮脸部(装扮):
|
|
部位 = "脸部"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ("攻击速度", "所有异常抗性")
|
|
|
|
|
|
class 高级装扮胸部(装扮):
|
|
部位 = "胸部"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ("攻击速度", "所有异常抗性")
|
|
|
|
|
|
class 高级装扮上衣(装扮):
|
|
部位 = "上衣"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ()
|
|
|
|
|
|
class 高级装扮腰带(装扮):
|
|
部位 = "腰带"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ("力量", "体力", "火属性抗性", "光属性抗性", "冰属性抗性", "暗属性抗性")
|
|
|
|
|
|
class 高级装扮下装(装扮):
|
|
部位 = "下装"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ()
|
|
|
|
|
|
class 高级装扮鞋(装扮):
|
|
部位 = "鞋"
|
|
品质 = "高级"
|
|
套装 = "高级装扮"
|
|
选项集合 = ("力量", "体力", "移动速度")
|
|
|
|
|
|
神器装扮集合 = (神器装扮头发, 神器装扮帽子, 神器装扮脸部, 神器装扮胸部,
|
|
神器装扮上衣, 神器装扮腰带, 神器装扮下装, 神器装扮鞋)
|
|
稀有装扮集合 = (稀有装扮头发, 稀有装扮帽子, 稀有装扮脸部, 稀有装扮胸部,
|
|
稀有装扮上衣, 稀有装扮腰带, 稀有装扮下装, 稀有装扮鞋)
|
|
高级装扮集合 = (高级装扮头发, 高级装扮帽子, 高级装扮脸部, 高级装扮胸部,
|
|
高级装扮上衣, 高级装扮腰带, 高级装扮下装, 高级装扮鞋)
|
|
|
|
装扮集合 = tuple(map(lambda x: x(), (神器装扮集合 + 稀有装扮集合 + 高级装扮集合)))
|
|
|
|
|
|
class 装扮套装:
|
|
名称: str
|
|
兼容于: str = None
|
|
所需数量: int
|
|
|
|
def 效果(self, 属性):
|
|
pass
|
|
|
|
|
|
class 神器装扮3(装扮套装):
|
|
名称 = "神器装扮"
|
|
兼容于 = "稀有装扮"
|
|
所需数量 = 3
|
|
|
|
def 效果(self, 属性):
|
|
# print("effect unique suit 3")
|
|
属性.SetStatus(四维=50, 三速=0.03)
|
|
|
|
|
|
class 神器装扮8(装扮套装):
|
|
|
|
名称 = "神器装扮"
|
|
兼容于 = "稀有装扮"
|
|
所需数量 = 8
|
|
|
|
def 效果(self, 属性):
|
|
# print("effect unique suit 8")
|
|
属性.SetStatus(四维=50, 三速=0.03)
|
|
属性.AddElementDB('火',10)
|
|
属性.AddElementDB('光',10)
|
|
属性.AddElementDB('冰',10)
|
|
属性.AddElementDB('暗',10)
|
|
# 属性.所有属性强化加成(10)
|
|
# 属性.所有属性抗性加成(15)
|
|
|
|
|
|
class 稀有装扮3(装扮套装):
|
|
|
|
名称 = "稀有装扮"
|
|
所需数量 = 3
|
|
|
|
def 效果(self, 属性):
|
|
# print("effect rare suit 3")
|
|
属性.SetStatus(四维=40, 三速=0.02)
|
|
|
|
|
|
class 稀有装扮8(装扮套装):
|
|
|
|
名称 = "稀有装扮"
|
|
所需数量 = 8
|
|
|
|
def 效果(self, 属性):
|
|
# print("effect rare suit 8")
|
|
属性.SetStatus(四维=40, 三速=0.02)
|
|
属性.AddElementDB('火',6)
|
|
属性.AddElementDB('光',6)
|
|
属性.AddElementDB('冰',6)
|
|
属性.AddElementDB('暗',6)
|
|
|
|
|
|
class 节日装扮8(装扮套装):
|
|
|
|
名称 = "节日装扮"
|
|
所需数量 = 8
|
|
|
|
def 效果(self, 属性):
|
|
属性.SetStatus(四维=25, 三速=0.02)
|
|
|
|
|
|
class 高级装扮3(装扮套装):
|
|
|
|
名称 = "高级装扮"
|
|
所需数量 = 3
|
|
|
|
def 效果(self, 属性):
|
|
# print("effect uncommon suit 3")
|
|
属性.SetStatus(四维=10)
|
|
|
|
|
|
class 高级装扮8(装扮套装):
|
|
|
|
名称 = "高级装扮"
|
|
所需数量 = 8
|
|
|
|
def 效果(self, 属性):
|
|
# print("effect uncommon suit 8")
|
|
属性.SetStatus(四维=10, 三速=0.01)
|
|
|
|
|
|
装扮套装集合 = tuple(
|
|
map(lambda x: x(), (神器装扮3, 神器装扮8, 稀有装扮3, 稀有装扮8, 节日装扮8, 高级装扮3, 高级装扮8)))
|
|
|
|
def get_dress_list(skills_coat:list[str] = [],skills_pants:list[str] = []) -> dict:
|
|
"""
|
|
获取装扮列表
|
|
:param info: 装扮信息
|
|
:return: 装扮列表
|
|
"""
|
|
dress_list = {}
|
|
for dress in 装扮集合:
|
|
部位 = dress.部位
|
|
if 部位 not in dress_list:
|
|
dress_list[部位] = []
|
|
选项集合 = dress.选项集合
|
|
if dress.部位 == "上衣":
|
|
选项集合 = 选项集合 + tuple(skills_coat)
|
|
elif dress.部位 == "下装":
|
|
选项集合 = 选项集合 + tuple(skills_pants)
|
|
data = {}
|
|
data["id"] = len(dress_list[部位])
|
|
data["options"] = 选项集合
|
|
data["part"] = 部位
|
|
data["rarity"] = dress.品质
|
|
data["suit"] = dress.套装
|
|
data["name"] = f"{dress.品质}装扮{dress.部位}"
|
|
dress_list[部位].append(data)
|
|
return dress_list
|
|
|
|
def calc_dress_effect(avatar,char):
|
|
"""
|
|
计算装扮效果
|
|
"""
|
|
时装品级列表 = {}
|
|
for 部位 in avatar:
|
|
id = avatar[部位].get("id")
|
|
if id is None or id == '':
|
|
continue
|
|
时装 = 装扮集合[int(id)]
|
|
时装.效果(角色=char, 选项=avatar[部位].get("option"))
|
|
时装品级列表[时装.套装] = 时装品级列表.get(时装.套装, 0) + 1
|
|
|
|
套装集合: list[装扮套装] = []
|
|
|
|
for 套装 in 装扮套装集合:
|
|
数量 = 时装品级列表.get(套装.名称, 0)
|
|
if 数量 > 0:
|
|
if 数量 >= 套装.所需数量:
|
|
查找 = len(
|
|
[
|
|
i
|
|
for i in 套装集合
|
|
if hasattr(i, "兼容于")
|
|
and i.兼容于 == 套装.名称
|
|
and i.所需数量 == 套装.所需数量
|
|
]
|
|
)
|
|
if 查找 == 0:
|
|
套装集合.append(套装)
|
|
else:
|
|
if hasattr(套装, "兼容于") and 套装.兼容于 is not None:
|
|
数量 += 时装品级列表.get(套装.兼容于, 0)
|
|
时装品级列表[套装.兼容于] = 数量
|
|
时装品级列表.pop(套装.名称)
|
|
for 套装 in 套装集合:
|
|
套装.效果(char)
|