diff --git a/evennia/contrib/tutorials/evadventure/combat_turnbased.py b/evennia/contrib/tutorials/evadventure/combat_turnbased.py index de1da44a2b..9f77ca141e 100644 --- a/evennia/contrib/tutorials/evadventure/combat_turnbased.py +++ b/evennia/contrib/tutorials/evadventure/combat_turnbased.py @@ -785,8 +785,8 @@ class _CmdCombatBase(Command): self.args = self.args.strip() - if not self.caller.location: - self.caller.msg("Can't fight here!") + if not self.caller.location or not self.callerlocation.allow_combat: + self.msg("Can't fight here!") raise InterruptCommand() diff --git a/evennia/contrib/tutorials/evadventure/tests/test_combat.py b/evennia/contrib/tutorials/evadventure/tests/test_combat.py index c8d03534b5..0b20c2a21f 100644 --- a/evennia/contrib/tutorials/evadventure/tests/test_combat.py +++ b/evennia/contrib/tutorials/evadventure/tests/test_combat.py @@ -15,6 +15,40 @@ from ..npcs import EvAdventureMob from ..objects import EvAdventureConsumable, EvAdventureRunestone, EvAdventureWeapon from .mixins import EvAdventureMixin + +class EvAdventureCombatHandlerTest(EvAdventureMixin, BaseEvenniaTest): + """ + Test methods on the turn-based combat handler + + """ + + maxDiff = None + + # make sure to mock away all time-keeping elements + @patch( + "evennia.contrib.tutorials.evadventure.combat_turnbased.EvAdventureCombatHandler.interval", + new=-1, + ) + @patch( + "evennia.contrib.tutorials.evadventure.combat_turnbased.delay", + new=MagicMock(return_value=None), + ) + def setUp(self): + super().setUp() + self.location.allow_combat = True + self.location.allow_death = True + self.combatant = self.character + self.target = create.create_object( + EvAdventureMob, + key="testmonster", + location=self.location, + attributes=(("is_idle", True),), + ) + + # this already starts turn 1 + self.combathandler = combat_turnbased.join_combat(self.combatant, self.target) + + # class EvAdventureTurnbasedCombatHandlerTest(EvAdventureMixin, BaseEvenniaTest): # """ # Test methods on the turn-based combat handler.