Exemplo n.º 1
0
    def set_honours(self, winners, losers):
        """
        Set combat winner's honour.
        """
        total_losers = 0
        for char in losers:
            total_losers += HONOURS_MAPPER.get_honour(char, 0)
        average_losers = total_losers / len(losers)
        
        total_winners = 0
        for char in winners:
            total_winners += HONOURS_MAPPER.get_honour(char, 0)
        average_winners = total_winners / len(winners)
        
        total_honours = {}
        for char in winners:
            self_honour = HONOURS_MAPPER.get_honour(char, 0)
            diff = average_losers - self_honour
            change = 0
            if diff > 200:
                change = 20
            elif diff > 100:
                change = 15
            elif diff >= -100:
                change = 10
            elif diff >= -200:
                change = 5
            else:
                change = 0

            value = self_honour + change
            if value < 0:
                value = 0
            total_honours[char.id] = value

        for char in losers:
            self_honour = HONOURS_MAPPER.get_honour(char, 0)
            diff = average_winners - self_honour
            change = 0
            if diff > 200:
                change = 20
            elif diff > 100:
                change = 15
            elif diff >= -100:
                change = 10
            elif diff >= -200:
                change = 5
            else:
                change = 0
        
            value = self_honour - change
            if value < 0:
                value = 0
            total_honours[char.id] = value

        HONOURS_MAPPER.set_honours(total_honours)
Exemplo n.º 2
0
    def set_honours(self, winners, losers):
        """
        Set combat winner's honour.
        """
        total_losers = 0
        for char in losers:
            total_losers += HONOURS_MAPPER.get_honour(char, 0)
        average_losers = total_losers / len(losers)

        total_winners = 0
        for char in winners:
            total_winners += HONOURS_MAPPER.get_honour(char, 0)
        average_winners = total_winners / len(winners)

        total_honours = {}
        for char in winners:
            self_honour = HONOURS_MAPPER.get_honour(char, 0)
            diff = average_losers - self_honour
            change = 0
            if diff > 200:
                change = 20
            elif diff > 100:
                change = 15
            elif diff >= -100:
                change = 10
            elif diff >= -200:
                change = 5
            else:
                change = 0

            value = self_honour + change
            if value < 0:
                value = 0
            total_honours[char.id] = value

        for char in losers:
            self_honour = HONOURS_MAPPER.get_honour(char, 0)
            diff = average_winners - self_honour
            change = 0
            if diff > 200:
                change = 20
            elif diff > 100:
                change = 15
            elif diff >= -100:
                change = 10
            elif diff >= -200:
                change = 5
            else:
                change = 0

            value = self_honour - change
            if value < 0:
                value = 0
            total_honours[char.id] = value

        HONOURS_MAPPER.set_honours(total_honours)
Exemplo n.º 3
0
    def show_rankings(self):
        """
        Show character's rankings.
        """
        top_rankings = HONOURS_MAPPER.get_top_rankings(settings.TOP_RANKINGS_NUMBER)
        nearest_rankings = HONOURS_MAPPER.get_nearest_rankings(self, settings.NEAREST_RANKINGS_NUMBER)
        
        rankings = top_rankings
        rankings.extend([id for id in nearest_rankings if id not in top_rankings])

        characters = [self.search_dbref("#%s" % id) for id in rankings]
        data = [{"name": char.get_name(),
                 "dbref": char.dbref,
                 "ranking": HONOURS_MAPPER.get_ranking(char),
                 "honour": HONOURS_MAPPER.get_honour(char)} for char in characters]
        self.msg({"rankings": data})