def handler(cls, attacker, victim_codename): logging.info("SNIPE start.") victim = Util.get_victim(victim_codename) logging.info("Attacker {}".format(attacker)) logging.info("Victim {}".format(victim)) """ validation """ outgoing = [] try: Kill.validate_kill(attacker, victim) if attacker.role != "SNIPER": raise MeError("not SNIPER") except (TeamError, MeError, TargetError) as message: outgoing.append((WEI_HAN, message.message)) outgoing.append((attacker.key.id(), message.message)) return outgoing except: message = "[ERR] Unknown Error in SNIPE" outgoing.append((WEI_HAN, message)) outgoing.append((attacker.key.id(), message)) return outgoing action = Action() action.attacker = attacker.key.id() action.action = "SNIPE" action.victim = victim.key.id() action.datetime = datetime.now() action_key = action.put() attacker = Player.get_by_id(action.attacker) attacker.killed.append(str(action_key.id())) attacker.put() victim.state = "DEAD" victim.killed_by = str(action_key.id()) victim.put() message = "{} has been SNIPED.".format(victim_codename) outgoing.append((victim.key.id(), "You have been SNIPED. (Ref {}).".\ format(action_key.id()))) outgoing.append(("*", message)) outgoing += Team.push(Team.get_by_id(victim.team)) return outgoing
def handler(cls, attacker, params): if len(params) == 0: raise CommandError("Parameter {}".format(params)) victim = Util.get_victim(params[0]) Disarm.validate_disarm(attacker, victim) action = Action() action.attacker = attacker.key.id() action.action = "DISARM" action.victim = victim.key.id() action.datetime = datetime.now() action.need_validation = True action_key = action.put() return [(action.victim, "{} claimed to have disarm you. " "[REPLY {}] Y/N.".format(attacker.realname, action_key.id()))]
def handler(cls, attacker, params): logging.info("KILL start") victim = Util.get_victim(params[0]) Kill.validate_kill(attacker, victim) action = Action() action.attacker = attacker.key.id() action.action = "KILL" action.victim = victim.key.id() action.datetime = datetime.now() action.need_validation = True action_key = action.put() logging.info("KILL finish") return [(action.victim, "{} claimed to have killed you. " "[REPLY {}] Y/N.".format(attacker.realname, action_key.id()))]
def handler(cls, attacker, params): logging.info("KILL start") victim = Util.get_victim(params[0]) Kill.validate_kill(attacker, victim) action = Action() action.attacker = attacker.key.id() action.action = "KILL" action.victim = victim.key.id() action.datetime = datetime.now() action.need_validation = True action_key = action.put() logging.info("KILL finish") return [ ( action.victim, "{} claimed to have killed you. " "[REPLY {}] Y/N.".format(attacker.realname, action_key.id()), ) ]
def handler(cls, attacker, params): """ Validation """ if len(params) != 5: raise CommandError("INVUL - {}".format(params)) if attacker.state == "DEAD": raise MeError("DEAD") if attacker.role != "MEDIC": raise MeError("not MEDIC") target_codename = params.pop(0) target = Util.get_victim(target_codename) if target.team != attacker.team: raise TeamError if target.state == "DEAD": raise TargetError("DEAD") chi_start_time = datetime(year=2016, month=int(params[0]),\ day=int(params[1]), hour=int(params[2]),\ minute=int(params[3])) utc_start_time = Util.chi_to_utc(chi_start_time) utc_end_time = utc_start_time + timedelta(hours=8) if utc_start_time < datetime.now(): raise TimeError(chi_start_time, Util.utc_to_chi(datetime.now())) if datetime.now() < attacker.can_set_after: raise TimeError("invul", Util.utc_to_chi(attacker.can_set_after)) """ Make new Invul """ invul = Invul() invul.medic = attacker.key.id() invul.target = target.key.id() invul.start_time = utc_start_time invul.end_time = utc_end_time """ Invalidate old invul """ try: old_invul = Invul.get_by_id(attacker.item) logging.info("INVUL: invalidating old invul with id {}".\ format(attacker.item)) if old_invul.in_effect or old_invul.deprecated: raise TimeError("invul" "midnight") old_invul.deprecated = True old_invul.put() except: logging.info("INVUL: unable to invalidate old invul") invul_key = invul.put() attacker.item = invul_key.id() attacker.put() task = taskqueue.Task(url="/invul", params={"id": invul_key.id()},\ eta = utc_start_time) task.add(queue_name="invul") return [(invul.medic, "Invul will been set for {} from {} to {}.".\ format(target_codename,\ chi_start_time.strftime("%m-%d %I:%M%p"), Util.utc_to_chi(utc_end_time).strftime("%m-%d %I:%M%p")))]