diff --git a/messages/en.json b/messages/en.json index 6bd06e87..7eda0b8d 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1487,6 +1487,7 @@ "pactbreaker_drained": "While out last night, you are suddenly overtaken by {=vampire!role:article} {=vampire!role:bold}! They drain your blood and your vision blurs, however you manage to make the vague shape of your assailant before they retreat, giving you a potential clue to their identity.", "pactbreaker_drained_dead": "While out last night, you are suddenly overtaken by {=vampire!role:article} {=vampire!role:bold}! They drain the rest of your blood as your consciousness fades away...", "pactbreaker_drained_vigilante": "While out last night, you are suddenly overtaken by {=vampire!role:article} {=vampire!role:bold}! They drain the rest of your blood as your consciousness fades away. Shortly after, you reawaken in your own home with an unnatural hunger. It seems you have become {0!role:article} {0!role:bold} yourself!", + "pactbreaker_vampire_no_harm": "You no longer wish to harm {0:@}, as they are now family." "pactbreaker_vote": [ "The village has decided to lock {0:@} into the stocks until tomorrow." ], diff --git a/src/gamemodes/pactbreaker.py b/src/gamemodes/pactbreaker.py index 46af7680..6e18738c 100644 --- a/src/gamemodes/pactbreaker.py +++ b/src/gamemodes/pactbreaker.py @@ -447,6 +447,11 @@ def on_player_protected(self, change_role(var, target, get_main_role(var, target), "vampire", message="pactbreaker_drained_vigilante") self.turned.add(target) self.drained.discard(target) + # prevent new vamp doing a cannibalism + for killer, victim in self.killing.items(): + if killer == protector and get_main_role(var, victim) == "vampire": + self.killing.discard(killer) + protector.send(messages["pactbreaker_vampire_no_harm"].format(victim)) def on_night_death_message(self, evt: Event, var: GameState, victim: User, killer: User | str): if not isinstance(killer, User):