def crazed_shaman_totem(var, wrapper, message): """Give a random totem to a player.""" totem_types = list(TOTEMS[wrapper.source].keys()) totem, target = get_totem_target(var, wrapper, message, LASTGIVEN, []) # don't pass totem_types so they can't autocomplete what random totems they have if not target: return # get the first totem type they haven't fully given out yet for type in totem_types: given = len(SHAMANS[wrapper.source][type]) total = TOTEMS[wrapper.source][type] if given < total: totem = type break else: # all totems are given out, change targets for a random one totem = random.choice(totem_types) orig_target = target target = RETARGET[wrapper.source].get(target, target) if target in itertools.chain.from_iterable(SHAMANS[wrapper.source].values()): wrapper.send(messages["shaman_no_stacking"].format(orig_target)) return given = give_totem(var, wrapper, target, prefix="You", role="crazed shaman", msg="") if given: victim, target = given if victim is not target: RETARGET[wrapper.source][target] = victim SHAMANS[wrapper.source][totem].append(victim) if len(SHAMANS[wrapper.source][totem]) > TOTEMS[wrapper.source][totem]: SHAMANS[wrapper.source][totem].pop(0)
def wolf_shaman_totem(var, wrapper, message): """Give a totem to a player.""" totem_types = list(TOTEMS[wrapper.source].keys()) totem, target = get_totem_target(var, wrapper, message, LASTGIVEN, totem_types) if not target: return if not totem: totem_types = list(TOTEMS[wrapper.source].keys()) if len(totem_types) == 1: totem = totem_types[0] else: wrapper.send(messages["shaman_ambiguous_give"]) return orig_target = target target = RETARGET[wrapper.source].get(target, target) if target in itertools.chain.from_iterable(SHAMANS[wrapper.source].values()): wrapper.send(messages["shaman_no_stacking"].format(orig_target)) return given = give_totem(var, wrapper, target, totem, key="shaman_success_night_known", role="wolf shaman") if given: victim, target = given if victim is not target: RETARGET[wrapper.source][target] = victim SHAMANS[wrapper.source][totem].append(victim) if len(SHAMANS[wrapper.source][totem]) > TOTEMS[wrapper.source][totem]: SHAMANS[wrapper.source][totem].pop(0) send_wolfchat_message(var, wrapper.source, messages["shaman_wolfchat"].format(wrapper.source, target), ("wolf shaman",), role="wolf shaman", command="totem")
def shaman_totem(var, wrapper, message): """Give a totem to a player.""" target = get_totem_target(var, wrapper, message, LASTGIVEN) if not target: return SHAMANS[wrapper.source] = give_totem(var, wrapper, target, prefix="You", role="shaman", msg=" of {0}".format(TOTEMS[wrapper.source]))
def wolf_shaman_totem(var, wrapper, message): """Give a totem to a player.""" target = get_totem_target(var, wrapper, message, LASTGIVEN) if not target: return SHAMANS[wrapper.source] = give_totem(var, wrapper, target, prefix="You", role="wolf shaman", msg=" of {0}".format(TOTEMS[wrapper.source])) relay_wolfchat_command(wrapper.client, wrapper.source.nick, messages["shaman_wolfchat"].format(wrapper.source, target), ("wolf shaman",), is_wolf_command=True)
def crazed_shaman_totem(var, wrapper, message): """Give a random totem to a player.""" target = get_totem_target(var, wrapper, message, LASTGIVEN) if not target: return SHAMANS[wrapper.source] = give_totem(var, wrapper, target, prefix="You", role="crazed shaman", msg="")
def wolf_shaman_totem(var, wrapper, message): """Give a totem to a player.""" totem_types = list(TOTEMS[wrapper.source].keys()) totem, target = get_totem_target(var, wrapper, message, LASTGIVEN, totem_types) if not target: return if not totem: totem_types = list(TOTEMS[wrapper.source].keys()) if len(totem_types) == 1: totem = totem_types[0] else: wrapper.send(messages["shaman_ambiguous_give"]) return orig_target = target target = RETARGET[wrapper.source].get(target, target) if target in itertools.chain.from_iterable( SHAMANS[wrapper.source].values()): wrapper.send(messages["shaman_no_stacking"].format(orig_target)) return given = give_totem(var, wrapper, target, prefix="You", role="wolf shaman", msg=" of {0}".format(totem)) if given: victim, target = given if victim is not target: RETARGET[wrapper.source][target] = victim SHAMANS[wrapper.source][totem].append(victim) if len(SHAMANS[wrapper.source][totem]) > TOTEMS[wrapper.source][totem]: SHAMANS[wrapper.source][totem].pop(0) relay_wolfchat_command(wrapper.client, wrapper.source.nick, messages["shaman_wolfchat"].format( wrapper.source, target), ("wolf shaman", ), is_wolf_command=True)