37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
|
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 <target>")
|
||
|
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:")
|
||
|
|