def onMessage(self, conn, msg): person = self.registry[msg.getFrom().getResource()] if not self.findPerson(person): return print u"message from %s: %s" % (person, msg.getBody()) if not self.defeated_commands and self.question and utils.sEq(msg.getBody(), self.question.answer): if person in self.offenders: damage = logic.getDamage(person, self.target) self.health -= damage if not self.defeated(): utils.answerConf(conn, msg, u"System damaged: %d, left: %d" % (damage, self.health)) else: return self.question = None self.next_question = time.time() + random.randint(1, config.nextQuestionMaxTimeout) else: if not msg.getBody(): return parts = [utils.normalize(x) for x in msg.getBody().strip().split(" ")] if parts: if self.defeated_commands and parts[0] in logic.availableRewards(): if parts[0] in self.defeated_commands: print u"reward command: %s" % (parts[0]) if not self.reward_person: self.rewardCommand(conn, person, parts[0], parts[1:]) else: utils.answerConf(conn, msg, u"Command %s is unsupported by target. Time left: %d" % (parts[0], int(self.defeated_timeout - time.time()))) else: {"stat": self.printStats, "attack": self.scheduleAttack, "defend": self.doDefend}.get(parts[0], lambda x, y, z: None)(conn, person, parts[1:])
def onMessage(self, conn, msg): person = self.registry[msg.getFrom().getResource()] if not self.findPerson(person): return if self.question and utils.sEq(msg.getBody(), self.question.answer): if person in self.offenders: damage = logic.getDamage(person, self.target) self.health -= damage if not self.defeated(): utils.answerConf(conn, msg, u"Нанесено урона: %d, осталось: %d" % (damage, self.health)) elif person in self.defenders: for p in self.offenders.itervalues(): p.damage(conn, self.findPerson(person), logic.getDefenderDamage(person, self.target), self.name) else: return self.kickDeads(conn) self.question = None self.next_question = time.time() + 1 else: parts = [utils.normalize(x) for x in msg.getBody().strip().split(" ")] if parts: {"stat": self.printStats, "attack": self.scheduleAttack, "defend": self.doDefend}.get(parts[0], lambda x, y, z: None)(conn, person, parts[1:])