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