update more weapons
This commit is contained in:
@@ -58,6 +58,15 @@ class Cultivate(TimedAction):
|
||||
return True, ""
|
||||
|
||||
def start(self) -> Event:
|
||||
# 计算修炼时长缩减
|
||||
reduction = float(self.avatar.effects.get("cultivate_duration_reduction", 0.0))
|
||||
reduction = max(0.0, min(0.9, reduction)) # 限制在 [0, 0.9] 范围内
|
||||
|
||||
# 动态设置此次修炼的实际duration(四舍五入确保为整数月份)
|
||||
base_duration = self.__class__.duration_months
|
||||
actual_duration = max(1, round(base_duration * (1.0 - reduction)))
|
||||
self.duration_months = actual_duration
|
||||
|
||||
return Event(self.world.month_stamp, f"{self.avatar.name} 在 {self.avatar.tile.region.name} 开始修炼", related_avatars=[self.avatar.id])
|
||||
|
||||
# TimedAction 已统一 step 逻辑
|
||||
|
||||
@@ -23,7 +23,16 @@ class PlunderMortals(TimedAction):
|
||||
region = self.avatar.tile.region
|
||||
if not isinstance(region, CityRegion):
|
||||
return
|
||||
gain = self.GAIN
|
||||
|
||||
# 基础收益
|
||||
base_gain = self.GAIN
|
||||
|
||||
# 应用搜刮收益倍率
|
||||
multiplier_raw = self.avatar.effects.get("extra_plunder_multiplier", 0.0)
|
||||
multiplier = 1.0 + float(multiplier_raw or 0.0)
|
||||
|
||||
# 计算最终收益
|
||||
gain = int(base_gain * multiplier)
|
||||
self.avatar.magic_stone = self.avatar.magic_stone + gain
|
||||
|
||||
def can_start(self) -> tuple[bool, str]:
|
||||
|
||||
@@ -621,12 +621,16 @@ class Avatar(AvatarSaveMixin, AvatarLoadMixin):
|
||||
if self.weapon is not None:
|
||||
r, g, b = self.weapon.grade.color_rgb
|
||||
weapon_text = f"<color:{r},{g},{b}>{self.weapon.get_info()}</color>"
|
||||
if self.weapon.desc:
|
||||
weapon_text += f"({self.weapon.desc})"
|
||||
add_kv(lines, "兵器", weapon_text)
|
||||
|
||||
# 辅助装备(可选,使用颜色标记等级)
|
||||
if self.auxiliary is not None:
|
||||
r, g, b = self.auxiliary.grade.color_rgb
|
||||
auxiliary_text = f"<color:{r},{g},{b}>{self.auxiliary.get_info()}</color>"
|
||||
if self.auxiliary.desc:
|
||||
auxiliary_text += f"({self.auxiliary.desc})"
|
||||
add_kv(lines, "辅助装备", auxiliary_text)
|
||||
else:
|
||||
add_kv(lines, "辅助装备", "无")
|
||||
|
||||
@@ -46,14 +46,39 @@ def get_base_strength(self_avatar: "Avatar") -> float:
|
||||
|
||||
def _combat_strength_vs(opponent: "Avatar", self_avatar: "Avatar") -> float:
|
||||
"""
|
||||
相对战斗力:= 基础战斗力 + 克制点数(若克制则+3)
|
||||
相对战斗力:= 基础战斗力 + 克制点数(若克制则+3) + 境界压制点数
|
||||
"""
|
||||
base = get_base_strength(self_avatar)
|
||||
|
||||
# 属性克制加成
|
||||
suppression_points = 0.0
|
||||
if self_avatar.technique is not None and opponent.technique is not None:
|
||||
if get_suppression_bonus(self_avatar.technique.attribute, opponent.technique.attribute) > 0.0:
|
||||
suppression_points = _SUPPRESSION_POINTS
|
||||
return base + suppression_points
|
||||
|
||||
# 境界压制加成
|
||||
realm_bonus_points = 0.0
|
||||
realm_suppression_bonus_raw = self_avatar.effects.get("realm_suppression_bonus", 0.0)
|
||||
if realm_suppression_bonus_raw:
|
||||
realm_suppression_bonus = float(realm_suppression_bonus_raw or 0.0)
|
||||
# 计算境界差(大境界)
|
||||
from src.classes.cultivation import Realm
|
||||
realm_order = {
|
||||
Realm.Qi_Refinement: 1,
|
||||
Realm.Foundation_Establishment: 2,
|
||||
Realm.Core_Formation: 3,
|
||||
Realm.Nascent_Soul: 4,
|
||||
}
|
||||
self_realm_rank = realm_order.get(self_avatar.cultivation_progress.realm, 1)
|
||||
opponent_realm_rank = realm_order.get(opponent.cultivation_progress.realm, 1)
|
||||
realm_diff = self_realm_rank - opponent_realm_rank
|
||||
|
||||
# 如果境界更高,则获得加成
|
||||
if realm_diff > 0:
|
||||
# 按基础战斗力的百分比计算加成点数
|
||||
realm_bonus_points = base * realm_suppression_bonus * realm_diff
|
||||
|
||||
return base + suppression_points + realm_bonus_points
|
||||
|
||||
|
||||
def _strength_diff(attacker: "Avatar", defender: "Avatar") -> float:
|
||||
|
||||
@@ -59,6 +59,14 @@ EXTRA_CULTIVATE_EXP = "extra_cultivate_exp"
|
||||
说明: 每次修炼时额外获得的经验值
|
||||
"""
|
||||
|
||||
CULTIVATE_DURATION_REDUCTION = "cultivate_duration_reduction"
|
||||
"""
|
||||
修炼时长缩减
|
||||
类型: float (范围: 0.0 ~ 0.9,建议不超过0.5)
|
||||
结算: src/classes/action/cultivate.py
|
||||
说明: 修炼动作的时长缩减比例(如 0.2 表示缩减20%,10个月变为8个月)
|
||||
"""
|
||||
|
||||
EXTRA_BREAKTHROUGH_SUCCESS_RATE = "extra_breakthrough_success_rate"
|
||||
"""
|
||||
额外突破成功率
|
||||
@@ -171,6 +179,14 @@ DAMAGE_REDUCTION = "damage_reduction"
|
||||
说明: 受到伤害的减免比例(如 0.1 表示减少10%伤害)
|
||||
"""
|
||||
|
||||
REALM_SUPPRESSION_BONUS = "realm_suppression_bonus"
|
||||
"""
|
||||
境界压制加成
|
||||
类型: float (倍率,如 0.15 表示每高一个大境界获得15%战斗力加成)
|
||||
结算: src/classes/battle.py
|
||||
说明: 当角色境界高于对手时,每高一个大境界额外增加战斗力点数
|
||||
"""
|
||||
|
||||
# --- 经济相关 ---
|
||||
EXTRA_ITEM_SELL_PRICE_MULTIPLIER = "extra_item_sell_price_multiplier"
|
||||
"""
|
||||
@@ -180,6 +196,14 @@ EXTRA_ITEM_SELL_PRICE_MULTIPLIER = "extra_item_sell_price_multiplier"
|
||||
说明: 出售物品时的价格倍率
|
||||
"""
|
||||
|
||||
EXTRA_PLUNDER_MULTIPLIER = "extra_plunder_multiplier"
|
||||
"""
|
||||
额外搜刮收益倍率
|
||||
类型: float (倍率,如 0.5 表示增加50%,1.0 表示翻倍)
|
||||
结算: src/classes/action/plunder_mortals.py
|
||||
说明: 搜刮凡人时的灵石收益倍率
|
||||
"""
|
||||
|
||||
# --- 特殊权限 ---
|
||||
LEGAL_ACTIONS = "legal_actions"
|
||||
"""
|
||||
@@ -248,9 +272,11 @@ ALL_EFFECTS = [
|
||||
"extra_max_mp", # int - 额外最大灵力值
|
||||
"extra_observation_radius", # int - 额外观察半径
|
||||
"damage_reduction", # float - 伤害减免
|
||||
"realm_suppression_bonus", # float - 境界压制加成
|
||||
|
||||
# 修炼相关
|
||||
"extra_cultivate_exp", # int - 额外修炼经验
|
||||
"cultivate_duration_reduction", # float - 修炼时长缩减
|
||||
"extra_breakthrough_success_rate", # float - 额外突破成功率
|
||||
|
||||
# 双修相关
|
||||
@@ -282,6 +308,7 @@ ALL_EFFECTS = [
|
||||
|
||||
# 经济相关
|
||||
"extra_item_sell_price_multiplier", # float - 额外物品出售价格倍率
|
||||
"extra_plunder_multiplier", # float - 额外搜刮收益倍率
|
||||
|
||||
# 特殊权限
|
||||
"legal_actions", # list[str] - 合法动作列表
|
||||
|
||||
@@ -63,19 +63,6 @@ def random_gender() -> Gender:
|
||||
return Gender.MALE if random.random() < 0.5 else Gender.FEMALE
|
||||
|
||||
|
||||
# 装备概率配置(便于维护和扩展)
|
||||
_EQUIPMENT_PROBABILITIES = {
|
||||
'weapon': (0.01, 0.05), # 武器:1%法宝,5%宝物
|
||||
'auxiliary': { # 辅助装备:分层概率
|
||||
'Qi_Refinement': (0.0, 0.05),
|
||||
'Foundation_Establishment': (0.02, 0.08),
|
||||
'Core_Formation': (0.05, 0.15),
|
||||
'Nascent_Soul': (0.10, 0.20),
|
||||
'default': (0.0, 0.05),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def _get_equipment_probabilities_by_realm(realm, equipment_type: str) -> tuple[float, float]:
|
||||
"""
|
||||
根据境界和装备类型获取法宝、宝物的概率
|
||||
@@ -88,10 +75,16 @@ def _get_equipment_probabilities_by_realm(realm, equipment_type: str) -> tuple[f
|
||||
(artifact_prob, treasure_prob): 法宝概率和宝物概率
|
||||
"""
|
||||
if equipment_type == 'weapon':
|
||||
return _EQUIPMENT_PROBABILITIES['weapon']
|
||||
return (0.05, 0.25) # 武器:5%法宝,25%宝物
|
||||
|
||||
# 辅助装备:根据境界查询
|
||||
auxiliary_probs = _EQUIPMENT_PROBABILITIES['auxiliary']
|
||||
# 辅助装备:根据境界分层
|
||||
auxiliary_probs = {
|
||||
'Qi_Refinement': (0.05, 0.20),
|
||||
'Foundation_Establishment': (0.10, 0.35),
|
||||
'Core_Formation': (0.20, 0.50),
|
||||
'Nascent_Soul': (0.35, 0.60),
|
||||
'default': (0.05, 0.20),
|
||||
}
|
||||
realm_name = realm.name if hasattr(realm, 'name') else 'default'
|
||||
return auxiliary_probs.get(realm_name, auxiliary_probs['default'])
|
||||
|
||||
|
||||
@@ -1,23 +1,28 @@
|
||||
id,name,grade,sect_id,desc,effects
|
||||
,名称,等级(普通/宝物/法宝),所属宗门ID(见sect.csv),描述/提示词,"JSON形式(支持宽松格式,见effects.py说明)"
|
||||
2,灵舟,法宝,9,小舟承灵气,御风渡海,千里一瞬.,{extra_move_step: 1}
|
||||
3,千里镜,法宝,3,澄澈如镜,观千里之外,洞察先机.,{extra_observation_radius: 2}
|
||||
5,聚灵阵盘,法宝,5,刻阵成盘,聚纳灵机,修行事半功倍.,{extra_cultivate_exp: 50}
|
||||
7,万欲同心结,法宝,6,情意同心,双修之道相互映照,修为更精进.,{extra_dual_cultivation_exp: 100}
|
||||
8,影遁披风,法宝,8,融身影界,来去无踪,伏击出其不意.,"{extra_move_step: 1, extra_observation_radius: 1}"
|
||||
9,百兽驭兽符,法宝,2,以兽纹灵符加持,唤引兽心,御兽更易.,{extra_catch_success_rate: 0.1}
|
||||
10,金刚护体罩,法宝,7,镇魂宗护法至宝,以金刚真气凝成护体罩,可御万法、护元神.,"{damage_reduction: 0.2, extra_max_hp: 200}"
|
||||
11,长生延年丹炉,法宝,4,冥王宗炼丹至宝,蕴幽冥生机,可逆夺天命,延寿驻颜.,"{extra_max_lifespan: 150, extra_hp_recovery_rate: 0.5}"
|
||||
12,聚宝天盘,法宝,9,千帆城商道至宝,可聚四方财气,凡持此盘者,财源滚滚,奇遇不断.,"{extra_item_sell_price_multiplier: 0.5, extra_fortune_probability: 0.1}"
|
||||
13,九转炼器炉,法宝,5,朱勾宗炼器至宝,九转炼化,可点化凡铁为神兵,养器如养身.,"{extra_weapon_upgrade_chance: 0.15, extra_weapon_proficiency_gain: 0.5}"
|
||||
14,明心剑匣,法宝,1,明心剑宗传承至宝,内蕴剑道真意,可明心见性,突破瓶颈.,"{extra_breakthrough_success_rate: 0.2, extra_cultivate_exp: 100}"
|
||||
15,玄龟甲,宝物,7,以千年玄龟之甲炼成,可护身御邪.,{damage_reduction: 0.08}
|
||||
16,回春石,宝物,,蕴含生机的灵石,可加速伤势愈合.,{extra_hp_recovery_rate: 0.3}
|
||||
17,延寿宝珠,宝物,,稀有宝珠,持有可延年益寿.,{extra_max_lifespan: 50}
|
||||
18,商道玉符,宝物,9,千帆城商会信物,持此符可享商道优待.,{extra_item_sell_price_multiplier: 0.2}
|
||||
19,淬器石,宝物,5,辅助温养兵器的奇石,可提升兵器品质.,{extra_weapon_upgrade_chance: 0.05}
|
||||
20,洞察神瞳,宝物,3,水镜宗瞳术秘宝,可洞察先机,寻得奇遇.,"{extra_observation_radius: 1, extra_fortune_probability: 0.05}"
|
||||
21,轻灵羽衣,宝物,8,轻若无物的灵衣,身法飘逸,进退自如.,"{extra_escape_success_rate: 0.15, extra_move_step: 1}"
|
||||
22,炼心佛珠,宝物,7,百八佛珠,可镇心神,助突破心魔.,{extra_breakthrough_success_rate: 0.1}
|
||||
23,护元宝甲,宝物,1,剑宗弟子护身宝甲,轻便而坚固.,"{extra_max_hp: 100, damage_reduction: 0.05}"
|
||||
2001,玄龟甲,宝物,7,以千年玄龟之甲炼成,可护身御邪.,{damage_reduction: 0.08}
|
||||
2002,回春石,宝物,,蕴含生机的灵石,可加速伤势愈合.,{extra_hp_recovery_rate: 0.3}
|
||||
2003,延寿宝珠,宝物,,稀有宝珠,持有可延年益寿.,{extra_max_lifespan: 50}
|
||||
2004,商道玉符,宝物,9,千帆城商会信物,持此符可享商道优待.,{extra_item_sell_price_multiplier: 0.2}
|
||||
2005,淬器石,宝物,5,辅助温养兵器的奇石,可提升兵器品质.,{extra_weapon_upgrade_chance: 0.05}
|
||||
2006,洞察神瞳,宝物,3,水镜宗瞳术秘宝,可洞察先机,寻得奇遇.,"{extra_observation_radius: 1, extra_fortune_probability: 0.05}"
|
||||
2007,轻灵羽衣,宝物,8,轻若无物的灵衣,身法飘逸,进退自如.,"{extra_escape_success_rate: 0.15, extra_move_step: 1}"
|
||||
2008,炼心佛珠,宝物,7,百八佛珠,可镇心神,助突破心魔.,{extra_breakthrough_success_rate: 0.1}
|
||||
2009,护元宝甲,宝物,1,剑宗弟子护身宝甲,轻便而坚固.,"{extra_max_hp: 100, damage_reduction: 0.05}"
|
||||
2010,悟道蒲团,宝物,,枯坐蒲团,入定修炼,事半功倍.,{cultivate_duration_reduction: 0.2}
|
||||
2011,掠财鬼面,宝物,,邪道面具,可增幅搜刮凡人时的收益.,{extra_plunder_multiplier: 0.5}
|
||||
3001,灵舟,法宝,9,小舟承灵气,御风渡海,千里一瞬.,{extra_move_step: 1}
|
||||
3002,千里镜,法宝,3,澄澈如镜,观千里之外,洞察先机.,{extra_observation_radius: 2}
|
||||
3003,聚灵阵盘,法宝,5,刻阵成盘,聚纳灵机,修行事半功倍.,{extra_cultivate_exp: 50}
|
||||
3004,万欲同心结,法宝,6,情意同心,双修之道相互映照,修为更精进.,{extra_dual_cultivation_exp: 100}
|
||||
3005,影遁披风,法宝,8,融身影界,来去无踪,伏击出其不意.,"{extra_move_step: 1, extra_observation_radius: 1}"
|
||||
3006,百兽驭兽符,法宝,2,以兽纹灵符加持,唤引兽心,御兽更易.,{extra_catch_success_rate: 0.1}
|
||||
3007,金刚护体罩,法宝,7,镇魂宗护法至宝,以金刚真气凝成护体罩,可御万法、护元神.,"{damage_reduction: 0.2, extra_max_hp: 200}"
|
||||
3008,长生延年丹炉,法宝,4,冥王宗炼丹至宝,蕴幽冥生机,可逆夺天命,延寿驻颜.,"{extra_max_lifespan: 150, extra_hp_recovery_rate: 0.5}"
|
||||
3009,聚宝天盘,法宝,9,千帆城商道至宝,可聚四方财气,凡持此盘者,财源滚滚,奇遇不断.,"{extra_item_sell_price_multiplier: 0.5, extra_fortune_probability: 0.1}"
|
||||
3010,九转炼器炉,法宝,5,朱勾宗炼器至宝,九转炼化,可点化凡铁为神兵,养器如养身.,"{extra_weapon_upgrade_chance: 0.15, extra_weapon_proficiency_gain: 0.5}"
|
||||
3011,明心剑匣,法宝,1,明心剑宗传承至宝,内蕴剑道真意,可明心见性,突破瓶颈.,"{extra_breakthrough_success_rate: 0.2, extra_cultivate_exp: 100}"
|
||||
3012,威压玉佩,法宝,,蕴含上古威压,可对低境界者形成压制.,{realm_suppression_bonus: 0.15}
|
||||
3013,疾风修炼垫,法宝,5,朱勾宗炼制,可加速修炼进度.,"{cultivate_duration_reduction: 0.3, extra_cultivate_exp: 50}"
|
||||
3014,血煞掠夺旗,法宝,,邪道至宝,大幅提升搜刮收益和境界压制.,"{extra_plunder_multiplier: 1.0, realm_suppression_bonus: 0.2}"
|
||||
|
||||
|
||||
|
@@ -1,8 +1,5 @@
|
||||
id,name,weapon_type,grade,sect_id,desc,effects
|
||||
,名称,兵器类型,等级(普通/宝物/法宝),所属宗门ID(见sect.csv),描述/提示词,"JSON形式(支持宽松格式,见effects.py说明)"
|
||||
1,本命剑匣,剑,法宝,1,以心御剑,匣启如霆,剑意随心破万法.,{extra_battle_strength_points: 3}
|
||||
4,镇魂钟,棍,法宝,7,钟鸣摄魄,定魂镇邪,护心安魂.,"{extra_battle_strength_points: 2, extra_observation_radius: 1}"
|
||||
6,万魂幡,扇,法宝,4,幡起万魂啾啾,阴风过境.,"{legal_actions: ['DevourMortals'], extra_battle_strength_points: 'avatar.weapon.special_data.get(""devoured_souls"", 0) // 100 * 0.1'}"
|
||||
1001,凡品剑,剑,普通,,平凡无奇的剑。,{extra_battle_strength_points: 1}
|
||||
1002,凡品刀,刀,普通,,平凡无奇的刀。,{extra_battle_strength_points: 1}
|
||||
1003,凡品枪,枪,普通,,平凡无奇的枪。,{extra_battle_strength_points: 1}
|
||||
@@ -21,4 +18,19 @@ id,name,weapon_type,grade,sect_id,desc,effects
|
||||
2007,瑶光琴,琴,宝物,,琴音悠扬,助人悟道。,"{extra_battle_strength_points: 2, cultivation_speed_rate: 1.1}"
|
||||
2008,凤鸣笛,笛,宝物,,笛声如凤鸣九天,清心宁神。,"{extra_battle_strength_points: 2, cultivation_speed_rate: 1.1}"
|
||||
2009,追魂刺,暗器,宝物,,暗器如影随形,取人性命于无声。,{extra_battle_strength_points: 2}
|
||||
2010,灵兽骨笛,笛,宝物,2,以灵兽之骨炼成,可与兽类心意相通。,"[{extra_battle_strength_points: 1}, {when: 'avatar.spirit_animal is not None', extra_battle_strength_points: 2}]"
|
||||
2011,赤焰战刀,刀,宝物,,烈火淬炼而成,刀身赤红似火。,{extra_battle_strength_points: 2}
|
||||
2012,玄铁重剑,剑,宝物,,重剑无锋,大巧不工。,"{extra_battle_strength_points: 2, extra_max_hp: 100}"
|
||||
2013,碧波软剑,剑,宝物,,轻灵如水,剑法飘逸。,"{extra_battle_strength_points: 2, extra_escape_success_rate: 0.1}"
|
||||
2014,伏魔降妖棍,棍,宝物,7,镇魂宗弟子常用,正气凛然。,"{extra_battle_strength_points: 2, extra_max_mp: 100}"
|
||||
3001,本命剑匣,剑,法宝,1,以心御剑,匣启如霆,剑意随心破万法.,{extra_battle_strength_points: 3}
|
||||
3002,镇魂钟,棍,法宝,7,钟鸣摄魄,定魂镇邪,护心安魂.,"{extra_battle_strength_points: 2, extra_observation_radius: 1}"
|
||||
3003,万魂幡,扇,法宝,4,幡起万魂啾啾,阴风过境.,"{legal_actions: ['DevourMortals'], extra_battle_strength_points: 'avatar.weapon.special_data.get(""devoured_souls"", 0) // 100 * 0.1'}"
|
||||
3004,百战破军枪,枪,法宝,9,千帆城名器,百战淬炼,熟能生巧,威力与熟练度共长。,"{extra_battle_strength_points: '2 + avatar.weapon.proficiency * 0.01'}"
|
||||
3005,霸王战戟,枪,法宝,,上古霸王遗兵,境界越高威力越强,可对低境界者形成压制。,"[{extra_battle_strength_points: 2}, {when: 'avatar.cultivation.level >= 30', extra_battle_strength_points: 2, realm_suppression_bonus: 0.1}]"
|
||||
3006,千手灭魂箭,暗器,法宝,5,朱勾宗杀器,暗箭如雨,来去无踪。,"{extra_battle_strength_points: 3, extra_observation_radius: 1, extra_escape_success_rate: 0.15}"
|
||||
3007,剑宗诛邪剑,剑,法宝,1,明心剑宗传承圣剑,克制邪道。,{extra_battle_strength_points: 3}
|
||||
3008,阴阳双刃,剑,法宝,,正邪同体,阴阳调和,兼具两面之力。,"{extra_battle_strength_points: 2, extra_max_hp: 100, extra_max_mp: 100}"
|
||||
3009,虚空之扇,扇,法宝,,扇动间可窥破虚空,千里瞬至。,"{extra_battle_strength_points: 2, extra_observation_radius: 2, extra_move_step: 1}"
|
||||
3010,鬼哭神嚎锤,棍,法宝,,邪道重兵,锤起鬼哭神嚎,刚猛无匹。,"{extra_battle_strength_points: 3, damage_reduction: 0.1}"
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user