/* $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()
}