Don't return self in get_target if allow_self is False

This was put in to allow for custom messages if one couldn't target
themselves. As such, an extra kwarg was added to pass in a custom
message in such an event. It now returns None if they targeted
themselves so the caller can fail gracefully.
This commit is contained in:
skizzerz 2017-12-05 14:14:08 -06:00
parent 40b2c345dc
commit 5cc45eda6d
3 changed files with 5 additions and 12 deletions

View File

@ -37,7 +37,7 @@ def get_participants():
evt.dispatch(var)
return evt.data["players"]
def get_target(var, wrapper, message, *, allow_self=False, allow_bot=False):
def get_target(var, wrapper, message, *, allow_self=False, allow_bot=False, not_self_message=None):
if not message:
wrapper.pm(messages["not_enough_parameters"])
return
@ -52,7 +52,8 @@ def get_target(var, wrapper, message, *, allow_self=False, allow_bot=False):
match, count = users.complete_match(message, players)
if match is None:
if not count and users.lower(wrapper.source.nick).startswith(users.lower(message)):
return wrapper.source
wrapper.pm(messages[not_self_message or "no_target_self"])
return
wrapper.pm(messages["not_playing"].format(message))
return

View File

@ -21,14 +21,10 @@ def dullahan_kill(var, wrapper, message):
wrapper.pm(messages["dullahan_targets_dead"])
return
target = get_target(var, wrapper, re.split(" +", message)[0])
target = get_target(var, wrapper, re.split(" +", message)[0], not_self_message="no_suicide")
if not target:
return
if target is wrapper.source:
wrapper.pm(messages["no_suicide"])
return
orig = target
evt = Event("targeted_command", {"target": target.nick, "misdirection": True, "exchange": True})
evt.dispatch(wrapper.client, var, "kill", wrapper.source.nick, target.nick, frozenset({"detrimental"}))

View File

@ -20,14 +20,10 @@ def hunter_kill(var, wrapper, message):
if wrapper.source in HUNTERS and wrapper.source not in KILLS:
wrapper.pm(messages["hunter_already_killed"])
return
target = get_target(var, wrapper, re.split(" +", message)[0])
target = get_target(var, wrapper, re.split(" +", message)[0], not_self_message="no_suicide")
if not target:
return
if wrapper.source is target:
wrapper.pm(messages["no_suicide"])
return
orig = target
evt = Event("targeted_command", {"target": target.nick, "misdirection": True, "exchange": True})
evt.dispatch(wrapper.client, var, "kill", wrapper.source.nick, target.nick, frozenset({"detrimental"}))