def js_zone(model, current_user): """ отдает данные для отображения списка игроков в текущей локации model - модель из бд current_user - текущий пользователь (кто смотрит список) duel_invite - состояние инвайта: 0 - нет, 1 - пригласил тек. пользователя, 2 - приглашен тек. пользователем enc - если не None, то список мобов, против которых будет драться игрок и просит ему помочь. """ enc = None if ( model["data"]["loc"] == "encounter" and model["data"].get("encounter_help") != None and current_user["loc"] != "encounter_help" ): enc = [mob.get(id).js() for id in model["data"]["encounter"]] dd = model["data"].get("duel_invite") if dd == None: inv = 0 elif len([x for x in dd if x[0] == current_user.id]) > 0: inv = 1 else: inv = 0 if inv == 0 and current_user["duel_invite"] != None: if len([x for x in current_user["duel_invite"] if x[0] == str(model["_id"])]) > 0: inv = 2 return { "id": str(model["_id"]), "name": model.get("name"), "title": model["data"].get("title"), "level": model.get("level"), "image": model.get("image"), "duel_invite": inv, "enc": enc, }
def encounter_start(self): " В бой с мобцами! " try: limit = self["encounter_limit"] mobs = [mob.get(m) for m in self["encounter"]] team = [self] + self.get_encounter_helpers() for noob in team: noob.go_noupdate("default") del self["encounter"] del self["encounter_limit"] del self["encounter_help"] Fight.create(team, mobs, start_time=limit) except: del self["encounter"] del self["encounter_limit"] del self["encounter_help"] log_exception() self.go("default")
def run_ai(self): ''' Делает ходы для мобов ''' for f in self.fighters(): if f._type in ["mob", "summon"] and f.can_move(): mob.get(f.mob_id).run_ai(f)
def use(self, f): f.fight.add_fighter(mob.get('Wolf'), f.team_id, summon=True)
def fight(self): Fight.create([self.user], [mob.get('Thief')]) self.text = u'Вы расправились с грабителем.'
def encounter_help(user): other = _user.User.get(user['help_for']) res = _zone(user) res.update({"encounter": {"help_for": other.js_link(), "mobs": [mob.get(m).js() for m in other["encounter"]], "time_left": other["encounter_limit"] - now(), "help": [u.js_link() for u in other.get_encounter_helpers() if u.id != user.id]}}) return res
def encounter(user): res = _zone(user) res.update({"encounter": {"mobs": [mob.get(m).js() for m in user["encounter"]], "time_left": user["encounter_limit"] - now(), "need_help": user["encounter_help"] != None, "help": [u.js_link() for u in user.get_encounter_helpers()]}}) return res
def mob(self): if self._type in ["mob", "summon"]: return mob.get(self.mob_id) else: return None
def cast(self): self.src.fight.add_fighter(mob.get('Skeleton', level = max(1, int(round(self.src.level * 0.5)))), self.src.team_id, summon=True)
def cast(self): self.src.fight.add_fighter(mob.get('Squire', level = max(1, int(round(self.skill(0, 10, 20, base_skill_level = 0))))), self.src.team_id, summon=True)