Pastebin

New pastes are no longer accepted · Stats

Latest Pastes


/* $Id: Book.cpp 204 2011-03-03 21:16:24Z sausage $
 * EOSERV is released under the zlib license.
 * See LICENSE.txt for more info.
 */

#include "handlers.hpp"

#include "character.hpp"
#include "map.hpp"
#include "quest.hpp"

namespace Handlers
{
    // User requests another's Book (Quest history)
    void Book_List(Character *character, PacketReader &reader)
    {
        int victimid = reader.GetShort();

        Character *victim = 0;

        victim = character->map->GetCharacterPID(victimid);
        if (!victim) return;

        PacketBuilder reply(PACKET_BOOK, PACKET_REPLY, 500);
        reply.AddBreakString(victim->name);
        reply.AddBreakString(victim->world->GetHome(victim)->name);
        reply.AddBreakString(victim->partner);
        reply.AddBreakString(victim->title);
        reply.AddBreakString(victim->guild ? victim->guild->name : "");
        reply.AddBreakString(victim->guild ? victim->guild->GetRank(victim->guild_rank) : "");
        reply.AddShort(victimid);
        reply.AddChar(victim->clas);
        reply.AddChar(victim->gender);
        reply.AddChar(0);//?
        if (victim->admin >= ADMIN_HGM)
        {
            if (victim->party)
            {
                reply.AddChar(ICON_HGM_PARTY);
            }
            else
            {
                reply.AddChar(ICON_HGM);
            }
        }
        else if (victim->admin >= ADMIN_GUIDE)
        {
            if (victim->party)
            {
                reply.AddChar(ICON_GM_PARTY);
            }
            else
            {
                reply.AddChar(ICON_GM);
            }
        }
        else
        {
            if (victim->party)
            {
                reply.AddChar(ICON_PARTY);
            }
            else
            {
                reply.AddChar(ICON_NORMAL);
            }
        }
        reply.AddByte(255);

        Quest *temp_quest = 0;
        State *state = 0;
        UTIL_IFOREACH(victim->quests, quest)
        {
            temp_quest = victim->world->GetQuest(quest->id);
            if (!temp_quest->exists) continue;

            state = temp_quest->GetState(quest->state);
            if (!state) continue;

            reply.AddBreakString(temp_quest->name);

        }
        character->Send(reply);
    }

PACKET_HANDLER_REGISTER(PACKET_BOOK)
	Register(PACKET_REQUEST, Book_List, Playing);
PACKET_HANDLER_REGISTER_END()

}