Merge pull request #291 from lykoss/swap-event

Add a new swap_player event
This commit is contained in:
Ryan Schmidt 2017-03-24 22:18:57 -07:00 committed by GitHub
commit 322de008e7
2 changed files with 16 additions and 13 deletions

View File

@ -124,7 +124,8 @@
"invalid_channel": "You need to be in {0} to use that command.",
"swap_notice": "More than one player is logged in to your account. Use '{0}swap <nick>' to swap.",
"account_not_playing": "You do not appear to be playing. Make sure you are identified to the same account.",
"target_not_playing": "That person is no{0} playing.",
"target_not_playing": "That person is not playing.",
"target_no_longer_playing": "That person is no longer playing.",
"target_not_logged_in": "That person is not logged in to NickServ.",
"player_swap": "\u0002{0}\u0002 has swapped places with \u0002{1}\u0002.",
"get_pingif": "You will be pinged when there are at least {0} players joined.",

View File

@ -548,7 +548,7 @@ def replace(var, wrapper, message):
if not rest: # bare call
target = None
for user in users.users_(): # FIXME: Backwards-compatible API
for user in var.ALL_PLAYERS:
if users.equals(user.account, wrapper.source.account):
if user is wrapper.source or user.nick not in list_participants(): # FIXME: Need to fix once list_participants() holds User instances
continue
@ -568,7 +568,11 @@ def replace(var, wrapper, message):
target, _ = users.complete_match(rest[0], pl)
if target is None:
wrapper.pm(messages["target_not_playing"].format(" longer" if target in var.DEAD else "t"))
wrapper.pm(messages["target_not_playing"])
return
if target not in pl:
wrapper.pm(messages["target_no_longer_playing" if target.nick in var.DEAD else "target_not_playing"]) # FIXME: Need to fix once var.DEAD holds User instances
return
if target.account is None:
@ -576,6 +580,8 @@ def replace(var, wrapper, message):
return
if users.equals(target.account, wrapper.source.account) and target is not wrapper.source:
evt = Event("swap_player", {})
evt.dispatch(var, target, wrapper.source)
rename_player(var, wrapper.source, target.nick)
# Make sure to remove player from var.DISCONNECTED if they were in there
if var.PHASE in var.GAME_PHASES:
@ -586,7 +592,11 @@ def replace(var, wrapper, message):
channels.Main.mode(("-" + mode, target), ("+" + mode, wrapper.source))
channels.Main.send(messages["player_swap"].format(wrapper.source, target))
myrole.caller(wrapper.source.client, wrapper.source.nick, wrapper.target.name, "")
myrole.caller(wrapper.source.client, wrapper.source.nick, wrapper.target.name, "") # FIXME: Old API
@event_listener("swap_player", priority=0)
def swap_player(evt, var, old_user, user):
var.ALL_PLAYERS[var.ALL_PLAYERS.index(old_user)] = user
@command("pingif", "pingme", "pingat", "pingpref", pm=True)
def altpinger(var, wrapper, message):
@ -3016,14 +3026,6 @@ def rename_player(var, user, prefix):
event = Event("rename_player", {})
event.dispatch(user.client, var, prefix, nick) # FIXME: Need to update all the callbacks
try:
temp = users._get(prefix) # FIXME
except KeyError: # dirty hack; this isn't a swap
pass
else:
# ALL_PLAYERS needs to keep its ordering for purposes of mad scientist
var.ALL_PLAYERS[var.ALL_PLAYERS.index(temp)] = user
if user in var.ALL_PLAYERS:
try:
r = var.ROLES[get_role(prefix)]
@ -6561,7 +6563,7 @@ def listroles(cli, nick, chan, rest):
reply(cli, nick, chan, " ".join(msg))
@cmd("myrole", pm=True, phases=("day", "night"))
def myrole(cli, nick, chan, rest):
def myrole(cli, nick, chan, rest): # FIXME: Need to fix !swap once this gets converted
"""Reminds you of your current role."""
ps = list_participants()