from commands.command import Command from evennia.utils import inherits_from from typeclasses.characters import Character from evennia.utils.create import create_script class CmdEngage(Command): """ Initiates an encounter with the selected target """ key = "engage" aliases = ["encounter", "fight"] def func(self): if not self.args: self.caller.msg("Usage: engage ") return target = self.caller.search(self.args) if not target: return if not inherits_from(target, Character) or not target.access(self.caller, 'engage'): self.caller.msg(target.db.engage_err_msg or f"You can't initiate an encounter with {target.name}.") return if target == self.caller: self.caller.msg("You can't initiate an encounter with yourself!") return if target.ndb.encounter_handler: target.ndb.encounter_handler.add_character(self.caller) target.ndb.encounter_handler.msg_all(f"{self.caller} joins the encounter") else: handler = create_script("encounter_handler.EncounterHandler") handler.add_character(self.caller) handler.add_character(target) target.msg(f"{self.caller} has engaged you in an encounter!") target.msg("You may leave using the flee command (or aliases)") self.caller.msg(f"You have entered an encounter with {target}. Be polite!") self.caller.msg("It is now your turn:")