Example #1
0
    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,
        }
Example #2
0
 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")
Example #3
0
 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)
Example #4
0
 def use(self, f):
     f.fight.add_fighter(mob.get('Wolf'), f.team_id, summon=True)
Example #5
0
 def fight(self):
     Fight.create([self.user], [mob.get('Thief')])
     self.text = u'Вы расправились с грабителем.'
Example #6
0
 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
Example #7
0
 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
Example #8
0
 def mob(self):
     if self._type in ["mob", "summon"]:
         return mob.get(self.mob_id)
     else:
         return None
Example #9
0
 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)
Example #10
0
 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)