diff --git a/genius_invocation/card/action/equipment/talent/talents/DecorousHarmony.py b/genius_invocation/card/action/equipment/talent/talents/DecorousHarmony.py index 6f96c33c..b485b8b3 100644 --- a/genius_invocation/card/action/equipment/talent/talents/DecorousHarmony.py +++ b/genius_invocation/card/action/equipment/talent/talents/DecorousHarmony.py @@ -12,3 +12,8 @@ class DecorousHarmony(TalentCard): character = Yunjin def __init__(self) -> None: super().__init__() + + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「云堇」天赋牌「庄谐并举」的效果:效果“装备有此牌的云堇在场时,如果我方没有手牌,则飞云旗阵会使普通攻击造成的伤害额外+2。”调整为“装备有此牌的云堇在场,且我方触发飞云旗阵时:如果我方没有手牌,则使此次技能伤害+2。”" + return log diff --git a/genius_invocation/card/action/equipment/talent/talents/DescentofDivinity.py b/genius_invocation/card/action/equipment/talent/talents/DescentofDivinity.py index d6f9dbf3..20b058de 100644 --- a/genius_invocation/card/action/equipment/talent/talents/DescentofDivinity.py +++ b/genius_invocation/card/action/equipment/talent/talents/DescentofDivinity.py @@ -1,5 +1,5 @@ from genius_invocation.card.action.equipment.talent.import_head import * -from genius_invocation.card.character.characters.Albedo import * +from genius_invocation.card.character.characters.Albedo import * class DescentofDivinity(TalentCard): id: int = 216041 @@ -12,4 +12,8 @@ class DescentofDivinity(TalentCard): character = Albedo def __init__(self) -> None: super().__init__() - \ No newline at end of file + + def balance_adjustment(self): + log = {} + log[4.8] = " 调整了角色牌「阿贝多」天赋牌「神性之陨」的效果:“装备有此牌的阿贝多在场时,如果我方场上存在阳华,则我方角色进行下落攻击时造成的伤害+1。”增加了效果“进行下落攻击时少花费1个无色元素”" + return log diff --git a/genius_invocation/card/action/equipment/talent/talents/DominanceofEarth.py b/genius_invocation/card/action/equipment/talent/talents/DominanceofEarth.py index 087d631d..1c11e3ab 100644 --- a/genius_invocation/card/action/equipment/talent/talents/DominanceofEarth.py +++ b/genius_invocation/card/action/equipment/talent/talents/DominanceofEarth.py @@ -1,5 +1,5 @@ from genius_invocation.card.action.equipment.talent.import_head import * -from genius_invocation.card.character.characters.Zhongli import * +from genius_invocation.card.character.characters.Zhongli import * class DominanceofEarth(TalentCard): id: int = 216031 @@ -12,4 +12,9 @@ class DominanceofEarth(TalentCard): character = Zhongli def __init__(self) -> None: super().__init__() - \ No newline at end of file + + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「钟离」天赋牌「炊金馔玉」的效果:效果“我方出战角色在护盾角色状态或护盾出战状态的保护下时,我方召唤物造成的岩元素伤害+1。”调整为“装备有此牌的钟离生命值至少为7时,钟离造成的伤害和我方召唤物造成的岩元素伤害+1。”" + return log + diff --git a/genius_invocation/card/action/equipment/talent/talents/FeatherfallJudgment.py b/genius_invocation/card/action/equipment/talent/talents/FeatherfallJudgment.py index 5b2c7ad2..ab2cce64 100644 --- a/genius_invocation/card/action/equipment/talent/talents/FeatherfallJudgment.py +++ b/genius_invocation/card/action/equipment/talent/talents/FeatherfallJudgment.py @@ -1,5 +1,5 @@ from genius_invocation.card.action.equipment.talent.import_head import * -from genius_invocation.card.character.characters.Cyno import * +from genius_invocation.card.character.characters.Cyno import * class FeatherfallJudgment(TalentCard): id: int = 214041 @@ -16,5 +16,5 @@ def __init__(self) -> None: def balance_adjustment(): log = {} log[4.2] = "调整了角色牌「赛诺」的天赋牌「落羽的裁择」效果,其伤害增加效果改为:“装备有此牌的赛诺在启途誓使的「凭依」级数为偶数时使用秘仪·律渊渡魂,造成的伤害+1。”" + log[4.8] = "调整了角色牌「赛诺」天赋牌「落羽的裁择」的效果:效果“装备有此牌的赛诺在启途誓使的「凭依」级数为偶数时,使用秘仪·律渊渡魂造成的伤害+1。”调整为“装备有此牌的赛诺在启途誓使的「凭依」级数至少为2时,使用秘仪·律渊渡魂造成的伤害+2。(每回合1次)”" return log - \ No newline at end of file diff --git a/genius_invocation/card/action/equipment/talent/talents/MirrorCage.py b/genius_invocation/card/action/equipment/talent/talents/MirrorCage.py index f07b3e53..f8f42bdd 100644 --- a/genius_invocation/card/action/equipment/talent/talents/MirrorCage.py +++ b/genius_invocation/card/action/equipment/talent/talents/MirrorCage.py @@ -12,9 +12,10 @@ class MirrorCage(TalentCard): character = MirrorMaiden def __init__(self) -> None: super().__init__() - + @staticmethod def balance_adjustment(): log = {} log[4.2] = "调整了角色牌「愚人众·藏镜仕女」的天赋牌「镜锢之笼」所需元素骰:所需元素骰由4个水元素骰子调整为3个" + log[4.8] = "调整了角色牌「藏镜仕女」天赋牌「镜锢之笼」的效果:效果“并且会使所附属角色切换到其他角色时元素骰费用+1”调整为“并且会使附属角色受到的水元素伤害+1”" return log diff --git a/genius_invocation/card/action/event/events/Falls_and_Fortune.py b/genius_invocation/card/action/event/events/Falls_and_Fortune.py index d371cff1..ad93916c 100644 --- a/genius_invocation/card/action/event/events/Falls_and_Fortune.py +++ b/genius_invocation/card/action/event/events/Falls_and_Fortune.py @@ -10,14 +10,14 @@ class Falls_and_Fortune_Entity(Combat_Status): def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_character=None): super().__init__(game, from_player, from_character) self.current_usage = 1 - + def on_calculate(self, game:'GeniusGame'): if game.current_dice.use_type == 'change character': game.current_dice.cost[0]['cost_num'] += 1 def on_change(self, game:'GeniusGame'): self.on_calculate(game) - + def update_listener_list(self): self.listeners = [ (EventType.CALCULATE_DICE, ZoneType.ACTIVE_ZONE, self.on_calculate), @@ -40,9 +40,15 @@ def on_played(self, game: 'GeniusGame'): zone = game.active_player.team_combat_status if not zone.has_status(Falls_and_Fortune_Entity): zone.add_entity(Falls_and_Fortune_Entity(game, game.active_player, None)) - + def find_target(self, game:'GeniusGame'): if game.active_player.dice_zone.num() >= 8 and not get_opponent(game).is_pass: return [1] else: - return [] \ No newline at end of file + return [] + + def balance_adjustment(): + log = { + 4.8:"调整了事件牌「坍陷与契机」所需元素骰:由1个元素骰调整为0个元素骰。", + } + return log \ No newline at end of file diff --git a/genius_invocation/card/action/event/events/Lyresong.py b/genius_invocation/card/action/event/events/Lyresong.py index 7fc7e674..31a08b8f 100644 --- a/genius_invocation/card/action/event/events/Lyresong.py +++ b/genius_invocation/card/action/event/events/Lyresong.py @@ -15,7 +15,11 @@ def on_calculate(self, game:'GeniusGame'): if game.active_player_index == self.from_player.index: if game.current_dice.use_type == ActionCardType.EQUIPMENT_ARTIFACT: if game.current_dice.cost[0]['cost_num']>0: - game.current_dice.cost[0]['cost_num'] = max(game.current_dice.cost[0]['cost_num']-2, 0) + if self.from_player.round_play_cards == 0: + count = 2 + else: + count = 1 + game.current_dice.cost[0]['cost_num'] = max(game.current_dice.cost[0]['cost_num']-count, 0) return True return False @@ -57,4 +61,10 @@ def find_target(self, game:'GeniusGame'): for idx, character in enumerate(game.active_player.character_list): if character.character_zone.artifact_card != None: target.append(idx+2) - return target \ No newline at end of file + return target + + def balance_adjustment(): + log = { + 4.8:"本回合中,我方下次打出「圣遗物」手牌时会触发的效果改为:“少花费1个元素骰。如果打出此牌前我方未打出过其他行动牌,则改为少花费2个元素骰”。" + } + return log \ No newline at end of file diff --git a/genius_invocation/card/action/event/events/Underwater_Treasure_Hunt.py b/genius_invocation/card/action/event/events/Underwater_Treasure_Hunt.py index d6429310..c32dda11 100644 --- a/genius_invocation/card/action/event/events/Underwater_Treasure_Hunt.py +++ b/genius_invocation/card/action/event/events/Underwater_Treasure_Hunt.py @@ -1,8 +1,23 @@ from genius_invocation.card.action.base import ActionCard from genius_invocation.utils import * +from genius_invocation.entity.status import Status if TYPE_CHECKING: from genius_invocation.game.game import GeniusGame + +class Treasure_Heal(Status): + def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_character=None): + super().__init__(game, from_player, from_character) + self.current_usage = 1 + + def on_end(self, game: 'GeniusGame'): + self.on_destroy(game) + + def update_listener_list(self): + self.listeners = [ + (EventType.FINAL_END, ZoneType.ACTIVE_ZONE, self.on_end), + ] + class Undersea_Treasure(ActionCard): name: str = 'Underwater Treasure' name_ch = '海底宝藏' @@ -12,7 +27,11 @@ def __init__(self) -> None: super().__init__() def on_played(self, game: 'GeniusGame'): - get_my_active_character(game).heal(1, game) + activte_character = get_my_active_character(game) + if not activte_character.has_status(Treasure_Heal): + activte_character.heal(1, game) + else: + activte_character.character_zone.add_entity(Treasure_Heal(game, game.active_player, activte_character)) dices = game.active_player.roll_dice(num=1, is_basic=True) game.active_player.dice_zone.add(dices) @@ -33,3 +52,10 @@ def __init__(self) -> None: def on_played(self, game: 'GeniusGame'): cards = [Undersea_Treasure() for _ in range(6)] game.active_player.card_zone.insert_randomly(cards, num=-1) + + def balance_adjustment(): + log = { + 4.8:"事件牌「海中寻宝」生成的「海底宝藏」增加了使用次数限制:每个角色每回合最多受到1次来自本效果的治疗。", + } + return log + diff --git a/genius_invocation/card/action/support/item/Kusava.py b/genius_invocation/card/action/support/item/Kusava.py index f7b64146..1c3cb8f7 100644 --- a/genius_invocation/card/action/support/item/Kusava.py +++ b/genius_invocation/card/action/support/item/Kusava.py @@ -73,8 +73,8 @@ class Kusava(SupportCard): name: str = 'Kusava' name_ch = '苦舍桓' time = 4.7 - cost_num = 0 - cost_type = None + cost_num = 1 + cost_type = CostType.WHITE card_type = ActionCardType.SUPPORT_ITEM def __init__(self) -> None: @@ -84,3 +84,9 @@ def __init__(self) -> None: def on_played(self, game: 'GeniusGame') -> None: self.entity = KusavaEntity(game, from_player=game.active_player) super().on_played(game) + + def balance_adjustment(): + log = { + 4.8:"支调整了支援牌「苦舍桓」所需元素骰:由0个元素骰调整为1个元素骰" + } + return log diff --git a/genius_invocation/card/action/support/item/Lumenstone_Adjuvant.py b/genius_invocation/card/action/support/item/Lumenstone_Adjuvant.py index a6da896a..36e36e4a 100644 --- a/genius_invocation/card/action/support/item/Lumenstone_Adjuvant.py +++ b/genius_invocation/card/action/support/item/Lumenstone_Adjuvant.py @@ -50,8 +50,8 @@ class Lumenstone_Adjuvant(SupportCard): name: str = 'Lumenstone Adjuvant' name_ch = '流明石触媒' time = 4.5 - cost_num = 2 - cost_type = CostType.WHITE + cost_num = 3 + cost_type = CostType.BLACK card_type = ActionCardType.SUPPORT_ITEM def __init__(self) -> None: @@ -61,3 +61,9 @@ def __init__(self) -> None: def on_played(self, game: 'GeniusGame') -> None: self.entity = Lumenstone_Adjuvant_Entity(game, from_player=game.active_player) super().on_played(game) + + def balance_adjustment(): + log = { + 4.8:"调整了支援牌「流明石触媒」所需元素骰:由2个相同元素骰调整为3个任意元素骰", + } + return log diff --git a/genius_invocation/card/action/support/location/Dawn_Winery.py b/genius_invocation/card/action/support/location/Dawn_Winery.py index a06c04af..cd51ad89 100644 --- a/genius_invocation/card/action/support/location/Dawn_Winery.py +++ b/genius_invocation/card/action/support/location/Dawn_Winery.py @@ -12,7 +12,7 @@ class Dawn_Winery_Entity(Support): id: int = 321004 name = 'Dawn Wineryr' name_ch = '晨曦酒庄' - max_usage = 1 + max_usage = 2 max_count = -1 def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_character=None): super().__init__(game, from_player, from_character) @@ -41,7 +41,7 @@ def update_listener_list(self): (EventType.BEGIN_ACTION_PHASE, ZoneType.SUPPORT_ZONE, self.on_begin), (EventType.ON_CHANGE_CHARACTER, ZoneType.SUPPORT_ZONE, self.on_use), ] - + def show(self): if self.usage>0: return '┬─┬┬─┬' @@ -66,4 +66,10 @@ def __init__(self) -> None: def on_played(self, game: 'GeniusGame') -> None: self.entity = Dawn_Winery_Entity(game, from_player=game.active_player) - super().on_played(game) \ No newline at end of file + super().on_played(game) + + def balance_adjustment(): + log = { + 4.8:"调整了支援牌「晨曦酒庄」的效果:效果触发的限制“每回1次”调整为“每回合至多2次”", + } + return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/Albedo.py b/genius_invocation/card/character/characters/Albedo.py index 04aaf04b..c809c174 100644 --- a/genius_invocation/card/character/characters/Albedo.py +++ b/genius_invocation/card/character/characters/Albedo.py @@ -49,8 +49,6 @@ def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_charact self.usage: int = 3 self.current_usage: int = 3 self.round = -1 - self.round_usage = 1 - self.round_max_usage = 1 def update(self): self.current_usage = self.usage @@ -74,21 +72,22 @@ def on_end(self, game:'GeniusGame'): self.on_destroy(game) def on_calculate_dice(self, game:'GeniusGame'): - if game.round != self.round: - self.round = game.round - self.round_usage = self.round_max_usage if game.active_player == self.from_player: - if self.round_usage > 0: - if game.current_dice.use_type == SkillType.NORMAL_ATTACK: - if self.from_player.is_after_change: - if game.current_dice.cost[1]['cost_num'] > 0: - game.current_dice.cost[1]['cost_num'] -= 1 - return True + if game.current_dice.use_type == SkillType.NORMAL_ATTACK: + if self.from_player.is_after_change: + if game.current_dice.cost[1]['cost_num'] > 0: + game.current_dice.cost[1]['cost_num'] -= 1 + return True return False def on_use_skill(self, game:'GeniusGame'): - if self.on_calculate_dice(game): - self.round_usage -= 1 + self.on_calculate_dice(game) + + def on_change(self, game:'GeniusGame'): + if game.active_player_index == self.from_player.index: + if self.round != game.round: + self.round = game.round + self.from_player.is_quick_change == True def on_add_damage(self, game:'GeniusGame'): if game.active_player == self.from_player: @@ -100,12 +99,12 @@ def on_add_damage(self, game:'GeniusGame'): def update_listener_list(self): self.listeners = [ (EventType.END_PHASE, ZoneType.SUMMON_ZONE, self.on_end), - (EventType.CALCULATE_DICE, ZoneType.SUMMON_ZONE, self.on_calculate_dice), - (EventType.ON_USE_SKILL, ZoneType.SUMMON_ZONE, self.on_use_skill), + (EventType.ON_CHANGE_CHARACTER, ZoneType.SUMMON_ZONE, self.on_change), ] if self.from_character.talent: self.listeners.append((EventType.DAMAGE_ADD, ZoneType.SUMMON_ZONE, self.on_add_damage)) - + self.listeners.append((EventType.CALCULATE_DICE, ZoneType.SUMMON_ZONE, self.on_calculate_dice)) + self.listeners.append((EventType.ON_USE_SKILL, ZoneType.SUMMON_ZONE, self.on_use_skill)) class RiteofProgeniture(ElementalBurst): id: int = 16043 @@ -152,3 +151,10 @@ def listen_talent_events(self, game: 'GeniusGame'): status = self.from_player.summon_zone.has_entity(SolarIsotoma) if status != None: status.listen_event(game, EventType.DAMAGE_ADD, ZoneType.SUMMON_ZONE, status.on_add_damage) + status.listen_event(game, EventType.CALCULATE_DICE, ZoneType.SUMMON_ZONE, status.on_calculate_dice) + status.listen_event(game, EventType.ON_USE_SKILL, ZoneType.SUMMON_ZONE, status.on_use_skill) + + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「阿贝多」召唤「阳华」的效果:效果“此召唤物在场时:我方角色进行下落攻击时少花费一个无色元素”调整为“此召唤物在场,我方执行「切换角色」行动时:将此次切换视为「快速行动」而非「战斗行动」”" + return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/AllDevouringNarwhal.py b/genius_invocation/card/character/characters/AllDevouringNarwhal.py index 82f84bec..0314250f 100644 --- a/genius_invocation/card/character/characters/AllDevouringNarwhal.py +++ b/genius_invocation/card/character/characters/AllDevouringNarwhal.py @@ -53,7 +53,7 @@ def __init__(self, from_character: 'Character'): def on_call(self, game: 'GeniusGame'): super().on_call(game) # 处理伤害 - add_damage = min(5, self.from_character.addtional_max_health//3) + add_damage = min(4, self.from_character.addtional_max_health//3) self.resolve_damage(game, add_damage=add_damage) # 获得能量 self.gain_energy(game) @@ -130,6 +130,11 @@ def init_state(self, game: 'GeniusGame'): self.domain = DeepDevourersDomain(game, self.from_player, self) self.from_player.team_combat_status.add_entity(self.domain) + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「吞星之鲸」元素战技的效果:效果“造成1点水元素伤害,此角色每有3点无尽食欲提供的额外最大生命,此伤害+1(最多+5)”中,“最多+5”调整为“最多+4”" + return log + class DeepDevourersDomain(Combat_Status): diff --git a/genius_invocation/card/character/characters/ConsecratedFlyingSerpent.py b/genius_invocation/card/character/characters/ConsecratedFlyingSerpent.py index d073d4ba..d6bae70b 100644 --- a/genius_invocation/card/character/characters/ConsecratedFlyingSerpent.py +++ b/genius_invocation/card/character/characters/ConsecratedFlyingSerpent.py @@ -44,10 +44,10 @@ def on_call(self, game: 'GeniusGame'): super().on_call(game) self.resolve_damage(game) self.gain_energy(game) - self.from_character.from_player.card_zone.find_card_by_name(BonecrunchersEnergyBlock.name, num=1) - num = min(self.from_character.round_get_cards, self.calculate_card_num(game)) - self.from_character.round_get_cards = max(0, self.from_character.round_get_cards - num) - self.from_character.from_player.get_card(num=num) + # self.from_character.from_player.card_zone.find_card_by_name(BonecrunchersEnergyBlock.name, num=1) + # num = min(self.from_character.round_get_cards, self.calculate_card_num(game)) + # self.from_character.round_get_cards = max(0, self.from_character.round_get_cards - num) + self.from_character.from_player.get_card(num=1) game.manager.invoke(EventType.AFTER_USE_SKILL, game) class ScattershotVortex(ElementalBurst): @@ -133,4 +133,9 @@ def equip_talent(self, game:'GeniusGame', is_action=True, talent_card=None): def listen_talent_events(self, game: 'GeniusGame'): self.listen_event(game, EventType.AFTER_PLAY_CARD, ZoneType.CHARACTER_ZONE, self.after_play_card) - self.listen_event(game, EventType.AFTER_CHANGE_CHARACTER, ZoneType.CHARACTER_ZONE, self.after_change) \ No newline at end of file + self.listen_event(game, EventType.AFTER_CHANGE_CHARACTER, ZoneType.CHARACTER_ZONE, self.after_change) + + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「圣骸飞蛇」元素战技的效果:效果调整为“造成3点风元素伤害,抓1张牌”" + return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/ConsecratedScorpion.py b/genius_invocation/card/character/characters/ConsecratedScorpion.py index 4519a9c2..3fa5f412 100644 --- a/genius_invocation/card/character/characters/ConsecratedScorpion.py +++ b/genius_invocation/card/character/characters/ConsecratedScorpion.py @@ -185,13 +185,18 @@ def on_played(self, game: 'GeniusGame') -> None: element_dice = ElementToDice[get_my_active_character(game).element] game.active_player.dice_zone.add([element_dice.value]) - character = get_my_active_character(game) - if hasattr(character, 'country_list'): - if CountryType.CONSECRATED_BEAST in character.country_list: - character.get_power(power=1) + # character = get_my_active_character(game) + # if hasattr(character, 'country_list'): + # if CountryType.CONSECRATED_BEAST in character.country_list: + # character.get_power(power=1) def find_target(self, game: 'GeniusGame'): if game.active_player.last_die_round == game.round : if game.active_player.team_combat_status.has_status(HasBonecrunchersEnergyBlock) is None: return [1] return [] + + def balance_adjustment(): + log = {} + log[4.8] = "调整了「圣骸兽」角色的事件牌「噬骸能量块」的效果:移除了效果“如果我方出战角色是「圣骸兽」角色,则使其获得1点充能。”" + return log diff --git a/genius_invocation/card/character/characters/Cyno.py b/genius_invocation/card/character/characters/Cyno.py index 29d48806..4cfdb7b9 100644 --- a/genius_invocation/card/character/characters/Cyno.py +++ b/genius_invocation/card/character/characters/Cyno.py @@ -8,12 +8,12 @@ class Pactsworn_Pathclearer(Status): def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_character: 'Character'): super().__init__(game, from_player, from_character) self.current_usage = 0 - self.max_usage = 5 + self.max_usage = 8 def increase_level(self, level): self.current_usage += level - if self.current_usage > self.max_usage: - self.current_usage -= 4 + if self.current_usage >= self.max_usage: + self.current_usage -= 6 def on_end_phase(self, game:'GeniusGame'): if game.active_player == self.from_player: @@ -117,12 +117,13 @@ def __init__(self, from_character: 'Character'): def on_call(self, game: 'GeniusGame'): super().on_call(game) # 处理伤害 - if self.from_character.talent and self.from_character.character_zone.has_entity(Pactsworn_Pathclearer).current_usage in [3,5]: - self.resolve_damage(game, add_main_damage=1) + if self.from_character.talent and self.from_character.character_zone.has_entity(Pactsworn_Pathclearer).current_usage >= 2: + self.resolve_damage(game, add_main_damage=2) else: self.resolve_damage(game) # 获得能量 self.gain_energy(game) + self.from_character.character_zone.has_entity(Pactsworn_Pathclearer).increase_level(1) # after skill game.manager.invoke(EventType.AFTER_USE_SKILL, game) @@ -189,3 +190,11 @@ def __init__(self, game: 'GeniusGame', zone: 'CharacterZone', from_player: 'Geni def revive(self, game: 'GeniusGame'): super().revive(game) self.init_state(game) + + def balance_adjustment(): + log = {} + log[4.8] = [ + "调整了角色牌「赛诺」状态「启途誓使」的效果:移除了效果“大于等于6级时:「凭依」级数-4”,并增加效果“结束阶段:如果「凭依」级数至少为8,则「凭依」级数-6。", + "调整了角色牌「赛诺」元素战技的效果:增加效果“启途誓使的「凭依」级数+1”" + ] + return log diff --git a/genius_invocation/card/character/characters/KaedeharaKazuha.py b/genius_invocation/card/character/characters/KaedeharaKazuha.py index ee6a099e..478b3789 100644 --- a/genius_invocation/card/character/characters/KaedeharaKazuha.py +++ b/genius_invocation/card/character/characters/KaedeharaKazuha.py @@ -44,7 +44,7 @@ class Chihayaburu(ElementalSkill): damage_type: SkillType = SkillType.ELEMENTAL_SKILL main_damage_element: ElementType = ElementType.ANEMO - main_damage: int = 3 + main_damage: int = 1 piercing_damage = 0 cost = [ @@ -61,7 +61,7 @@ def __init__(self, from_character: 'Character') -> None: def add_status(self, game: 'GeniusGame'): assert self.from_character.character_zone.has_entity(Midare_Ranzan) is None - status = Midare_Ranzan(game, self.from_character.from_player, self.from_character, self.from_character.last_swirl) + status = Midare_Ranzan(game, self.from_character.from_player, self.from_character, ElementType.ANEMO) self.from_character.character_zone.add_entity(status) def on_call(self, game: 'GeniusGame'): @@ -81,7 +81,7 @@ class Kazuha_Slash(ElementalBurst): damage_type: SkillType = SkillType.ELEMENTAL_BURST main_damage_element: ElementType = ElementType.ANEMO - main_damage: int = 3 + main_damage: int = 1 piercing_damage = 0 cost = [ @@ -117,21 +117,26 @@ def __init__(self, game:'GeniusGame', from_player: 'GeniusPlayer', from_characte self.element = element self.usage = 1 self.current_usage = 1 - + + def on_change_character(self, game:'GeniusGame'): + if game.current_switch["to"] == self.from_character: + self.from_player.is_quick_change == True + def infusion(self, game:'GeniusGame'): if game.current_damage.damage_from == self.from_character: if game.current_damage.is_plunging_attack: game.current_damage.main_damage_element = self.element - - def on_dmg_add(self, game:'GeniusGame'): - if game.current_damage.damage_from == self.from_character: - if game.current_damage.is_plunging_attack: - game.current_damage.main_damage += 1 + + def before_any_action(self, game:'GeniusGame'): + if self.from_character.is_active: + skill = self.from_character.skills[0] + skill.before_use_skill(game) + self.character_list[self.active_idx].skill(0, game) self.on_destroy(game) - + def update_listener_list(self): self.listeners = [ - (EventType.DAMAGE_ADD, ZoneType.CHARACTER_ZONE, self.on_dmg_add), + (EventType.BEFORE_ANY_ACTION, ZoneType.CHARACTER_ZONE, self.before_any_action), (EventType.INFUSION, ZoneType.CHARACTER_ZONE, self.infusion) ] @@ -173,7 +178,7 @@ def end_phase(self, game:'GeniusGame'): self.current_usage -= 1 if self.current_usage <=0: self.on_destroy(game) - + def update_listener_list(self): self.listeners = [ (EventType.EXECUTE_DAMAGE, ZoneType.SUMMON_ZONE, self.on_reaction), @@ -189,7 +194,7 @@ def __init__(self, game:'GeniusGame', from_player: 'GeniusPlayer', from_characte super().__init__(game, from_player, from_character) self.usage = 2 self.current_usage = 2 - + def update(self): self.current_usage = max(self.current_usage, self.usage) @@ -204,7 +209,7 @@ def update_listener_list(self): self.listeners = [ (EventType.DAMAGE_ADD, ZoneType.ACTIVE_ZONE, self.on_dmg_add) ] - + class Enhance_CRYO_by_Swirl(Enhance_by_Swirl): element: ElementType = ElementType.CRYO name = "Enhance_CRYO_by_Swirl" @@ -264,7 +269,7 @@ def on_excute_dmg(self, game:'GeniusGame'): self.last_swirl = game.current_damage.swirl_crystallize_type else: self.last_swirl = None - + def after_skill(self, game: "GeniusGame"): if game.current_skill.from_character == self: if self.last_swirl is not None: @@ -287,4 +292,11 @@ def update_listener_list(self): def listen_talent_events(self, game: 'GeniusGame'): - self.listen_event(game, EventType.AFTER_USE_SKILL, ZoneType.CHARACTER_ZONE, self.after_skill) \ No newline at end of file + self.listen_event(game, EventType.AFTER_USE_SKILL, ZoneType.CHARACTER_ZONE, self.after_skill) + + def balance_adjustment(): + log = {} + log[4.8] = ["调整了角色牌「枫原万叶」元素爆发的伤害:由3点风元素伤害调整为1点;", + "调整了角色牌「枫原万叶」元素战技的伤害:由3点风元素伤害调整为1点;", + "调整了角色牌「枫原万叶」状态「乱岚拨止」的效果:效果调整为“我方下次通过「切换角色」行动切换到所附属角色时:将此次切换视为「快速行动」而非「战斗行动」。我方选择行动前:如果所附属角色为「出战角色」,则直接使用「普通攻击」;本次「普通攻击」造成的物理伤害变为风元素伤害,结算后移除此效果。”"] + return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/Kaveh.py b/genius_invocation/card/character/characters/Kaveh.py index 7b5c9416..dae9ef59 100644 --- a/genius_invocation/card/character/characters/Kaveh.py +++ b/genius_invocation/card/character/characters/Kaveh.py @@ -185,7 +185,7 @@ def before_action(self, game: 'GeniusGame'): game=game, damage_type=SkillType.OTHER, main_damage_element=ElementType.DENDRO, - main_damage=card.calculate_dice(game)+1, + main_damage=card.calculate_dice(game), piercing_damage=0, damage_from=self, damage_to=get_active_character(game, 1-self.from_player.index) @@ -249,3 +249,8 @@ def listen_talent_events(self, game: 'GeniusGame'): if status is not None: status.listen_event(game, EventType.CALCULATE_DICE, ZoneType.ACTIVE_ZONE, status.on_calculate_dice) status.listen_event(game, EventType.ON_PLAY_CARD, ZoneType.ACTIVE_ZONE, status.on_play_card) + + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「卡维」出战状态「迸发扫描」的效果:“造成所舍弃卡牌原本元素骰费用+1的草元素伤害”调整为“造成所舍弃卡牌原本元素骰费用的草元素伤害”" + return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/Lisa.py b/genius_invocation/card/character/characters/Lisa.py index 6a548c6b..2dfdaa85 100644 --- a/genius_invocation/card/character/characters/Lisa.py +++ b/genius_invocation/card/character/characters/Lisa.py @@ -17,14 +17,14 @@ def check_status(game: 'GeniusGame', from_character: 'Character'=None): if from_character is None: from_character = get_opponent_active_character(game) return from_character.character_zone.has_entity(Conductive) - + @staticmethod def add_status(game: 'GeniusGame', from_character: 'Character'=None, status: 'Status'=None): if status is not None: status.update() return - + # if status is not provided status = Conductive.check_status(game, from_character) if from_character is None: @@ -34,7 +34,7 @@ def add_status(game: 'GeniusGame', from_character: 'Character'=None, status: 'St from_character.character_zone.add_entity(status) else: status.update() - + def update(self): self.current_usage = min(self.current_usage+1, self.max_usage) @@ -134,7 +134,7 @@ def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_charact super().__init__(game, from_player, from_character) self.usage = 2 self.current_usage = self.usage - + def on_end_phase(self, game: 'GeniusGame'): if game.active_player == self.from_player: dmg = Damage.create_damage( @@ -155,7 +155,7 @@ def on_end_phase(self, game: 'GeniusGame'): def update(self): self.current_usage = max(self.usage, self.current_usage) - + def update_listener_list(self): self.listeners = [ (EventType.END_PHASE, ZoneType.SUMMON_ZONE, self.on_end_phase) @@ -183,7 +183,10 @@ class Lightning_Rose(ElementalBurst): def on_call(self, game: 'GeniusGame'): super().on_call(game) self.consume_energy(game) + status = Conductive.check_status(game) self.resolve_damage(game) + if status is None: + Conductive.add_status(game) self.generate_summon(game, Lightning_Rose_Summon) game.manager.invoke(EventType.AFTER_USE_SKILL, game) @@ -212,7 +215,7 @@ def on_switched_to(self): if self.talent_on: self.talent_on -= 1 Conductive.add_status(self.from_player.game) - + def on_begin(self, game: 'GeniusGame'): super().on_begin(game) if self.talent: diff --git a/genius_invocation/card/character/characters/MirrorMaiden.py b/genius_invocation/card/character/characters/MirrorMaiden.py index 3134c633..4551f6cf 100644 --- a/genius_invocation/card/character/characters/MirrorMaiden.py +++ b/genius_invocation/card/character/characters/MirrorMaiden.py @@ -94,12 +94,12 @@ def on_switch(self, game): def update_listener_list(self): self.listeners = [ - (EventType.DAMAGE_ADD, ZoneType.CHARACTER_ZONE, self.on_add_damage), - (EventType.BEGIN_ACTION_PHASE, ZoneType.CHARACTER_ZONE, self.on_begin) + (EventType.CALCULATE_DICE, ZoneType.CHARACTER_ZONE, self.on_calculate_dice), + (EventType.ON_CHANGE_CHARACTER, ZoneType.CHARACTER_ZONE, self.on_switch), + (EventType.FINAL_END, ZoneType.CHARACTER_ZONE, self.on_begin) ] if self.from_character.talent: - self.listeners.append(EventType.CALCULATE_DICE, ZoneType.CHARACTER_ZONE, self.on_calculate_dice) - self.listeners.append(EventType.ON_CHANGE_CHARACTER, ZoneType.CHARACTER_ZONE, self.on_switch) + self.listeners.append((EventType.DAMAGE_ADD, ZoneType.CHARACTER_ZONE, self.on_add_damage)) class RippledReflection(ElementalBurst): @@ -143,11 +143,11 @@ def __init__(self, game: 'GeniusGame', zone: 'CharacterZone', from_player: 'Geni def listen_talent_events(self, game: 'GeniusGame'): if self.refraction_target != None: status = self.refraction_target.character_zone.has_entity(Refraction) - status.listen_event(game, EventType.CALCULATE_DICE, ZoneType.CHARACTER_ZONE, status.on_calculate_dice) - status.listen_event(game, EventType.ON_CHANGE_CHARACTER, ZoneType.CHARACTER_ZONE, status.on_switch) + status.listen_event(game, EventType.DAMAGE_ADD, ZoneType.CHARACTER_ZONE, status.on_add_damage) @staticmethod def balance_adjustment(): log = {} log[3.7] = "调整了「七圣召唤」中,角色牌「愚人众·藏镜仕女」元素战技造成的水元素伤害:造成3水元素伤害改为造成2水元素伤害" + log[4.8] = "调整了角色牌「藏镜仕女」状态「水光破镜」的效果:效果“附属角色受到的水元素伤害+1。”调整为“所附属角色切换到其他角色时:需要多花费1个元素骰。”" return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/Yunjin.py b/genius_invocation/card/character/characters/Yunjin.py index a688f409..28e1535f 100644 --- a/genius_invocation/card/character/characters/Yunjin.py +++ b/genius_invocation/card/character/characters/Yunjin.py @@ -113,23 +113,42 @@ class FlyingCloudFlagFormation(Combat_Status): def __init__(self, game: 'GeniusGame', from_player: 'GeniusPlayer', from_character = None, usage=1): super().__init__(game, from_player, from_character) self.current_usage = usage + self.is_use = False def update(self, usage=1): self.current_usage = min(self.max_usage, self.current_usage + usage) + def after_any_action(self, game: 'GeniusGame'): + self.is_use = False + + def on_calculate_dice(self, game:'GeniusGame'): + if game.active_player == self.from_player: + if game.current_dice.use_type == SkillType.NORMAL_ATTACK: + if self.from_player.is_after_change: + if game.current_dice.cost[1]['cost_num'] > 0: + game.current_dice.cost[1]['cost_num'] -= 1 + return True + return False + + def on_use_skill(self, game:'GeniusGame'): + if self.on_calculate_dice(game): + self.current_usage -= 1 + def on_add_damage(self, game:'GeniusGame'): if game.current_damage.damage_from.from_player == self.from_player: if game.current_damage.damage_type == SkillType.NORMAL_ATTACK: - game.current_damage.main_damage += 1 - if self.from_character.talent and self.from_player.hand_zone.num()==0: - game.current_damage.main_damage += 1 - self.current_usage -= 1 + if self.is_use: + if self.from_character.talent and self.from_player.hand_zone.num()==0: + game.current_damage.main_damage += 2 if self.current_usage == 0: self.on_destroy(game) def update_listener_list(self): self.listeners = [ (EventType.DAMAGE_ADD, ZoneType.ACTIVE_ZONE, self.on_add_damage), + (EventType.CALCULATE_DICE, ZoneType.ACTIVE_ZONE, self.on_calculate_dice), + (EventType.ON_USE_SKILL, ZoneType.ACTIVE_ZONE, self.on_use_skill), + (EventType.AFTER_ANY_ACTION, ZoneType.ACTIVE_ZONE, self.after_any_action), ] class CliffbreakersBanner(ElementalBurst): @@ -172,3 +191,8 @@ def __init__(self, game: 'GeniusGame', zone: 'CharacterZone', from_player: 'Geni self.talent = talent self.talent_skill = self.skills[2] self.next_skill = SpearFlourish(self) + + def balance_adjustment(): + log = {} + log[4.8] = "调整了角色牌「云堇」出战状态「飞云旗阵」的效果:移除了效果“造成的伤害+1”" + return log \ No newline at end of file diff --git a/genius_invocation/card/character/characters/Zhongli.py b/genius_invocation/card/character/characters/Zhongli.py index 01031fef..3d17a602 100644 --- a/genius_invocation/card/character/characters/Zhongli.py +++ b/genius_invocation/card/character/characters/Zhongli.py @@ -75,11 +75,6 @@ def update(self): def on_end_phase(self, game: 'GeniusGame'): if game.active_player == self.from_player: damage = 1 - - if self.from_character.talent: - if self.from_player.team_combat_status.has_shield(Combat_Shield) or self.from_character.character_zone.has_entity(Shield): - damage += 1 - dmg = Damage.create_damage( game, damage_type=SkillType.SUMMON, @@ -186,3 +181,15 @@ def __init__(self, game: 'GeniusGame', zone: 'CharacterZone', from_player: 'Geni self.power = 0 self.talent = talent self.talent_skill = self.skills[2] + + def listen_talent_events(self, game: 'GeniusGame'): + self.listen_event(game, EventType.DAMAGE_ADD, ZoneType.CHARACTER_ZONE, self.on_damage_add) + + def on_damage_add(self, game: 'GeniusGame'): + if game.active_player == self.from_player: + if self.talent and self.power >= 7: + if game.current_damage.damage_from.from_player == self.from_player: + if game.current_damage.main_damage_element == ElementType.GEO: + game.current_damage.main_damage += 1 + if game.current_damage.damage_from == self: + game.current_damage.main_damage += 1