Advertisement
Guest User

Untitled

a guest
Sep 4th, 2012
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.19 KB | None | 0 0
  1. #include "handlers.hpp"
  2.  
  3. #include "character.hpp"
  4. #include "map.hpp"
  5. #include "npc.hpp"
  6. #include "chat.hpp"
  7.  
  8. namespace Handlers
  9. {
  10.     void Priest_Accept(Character *character, PacketReader &reader)
  11.     {
  12.         (void)character;
  13.         (void)reader;
  14.  
  15.         if (character->npc_type == ENF::Priest && character->npc->marriage && character->npc->marriage->partner[1] == character)
  16.         {
  17.             character->npc->marriage->request_accepted = true;
  18.             character->npc->marriage->last_execution = Timer::GetTime() + util::to_int(character->world->config["WeddingStartDelay"]);
  19.             character->npc->ShowDialog("Very well, the ceremony will start in " + util::to_string(static_cast<int>(character->world->config["WeddingStartDelay"])) + " seconds.");
  20.             character->npc->marriage->state = 1;
  21.  
  22.             PacketBuilder reply;
  23.             reply.SetID(PACKET_MUSIC, PACKET_PLAYER);
  24.             reply.AddShort(util::to_int(character->world->config["WeddingMusic"]));
  25.  
  26.             UTIL_FOREACH(character->map->characters, character)
  27.             {
  28.                 character->Send(reply);
  29.             }
  30.         }
  31.     }
  32.  
  33.     void Priest_Use(Character *character, PacketReader &reader)
  34.     {
  35.         (void)character;
  36.         (void)reader;
  37.  
  38.         if (character->npc_type == ENF::Priest && character->npc->marriage)
  39.         {
  40.             if (character->npc->marriage->partner[0] == character)
  41.             {
  42.                 character->npc->marriage->partner_accepted[0] = true;
  43.                 character->npc->marriage->partner[0]->map->Msg(character, "Yes, I do.", true);
  44.             }
  45.  
  46.             if (character->npc->marriage->partner[1] == character)
  47.             {
  48.                 character->npc->marriage->partner_accepted[1] = true;
  49.                 character->npc->marriage->partner[1]->map->Msg(character, "Yes, I do.", true);
  50.             }
  51.         }
  52.     }
  53.  
  54.     void Priest_Request(Character *character, PacketReader &reader)
  55.     {
  56.         if (character->npc_type == ENF::Priest)
  57.         {
  58.             reader.GetInt();
  59.             reader.GetByte();
  60.  
  61.             Character *partner = character->world->GetCharacter(reader.GetEndString());
  62.  
  63.             if (!partner || partner == character || partner->map != character->map)
  64.             {
  65.                 PacketBuilder reply;
  66.                 reply.SetID(PACKET_PRIEST, PACKET_REPLY);
  67.                 reply.AddChar(PRIEST_PARTNER_MAP);
  68.                 character->Send(reply);
  69.             }
  70.             else if (!partner->partner.empty())
  71.             {
  72.                 PacketBuilder reply;
  73.                 reply.SetID(PACKET_PRIEST, PACKET_REPLY);
  74.                 reply.AddChar(PRIEST_PARTNER_ALREADY_MARRIED);
  75.                 character->Send(reply);
  76.             }
  77.             else if (partner->paperdoll[Character::Armor] != util::to_int(character->world->config[(partner->gender == GENDER_FEMALE ? "WeddingArmorFemale" : "WeddingArmorMale")]))
  78.             {
  79.                 PacketBuilder reply;
  80.                 reply.SetID(PACKET_PRIEST, PACKET_REPLY);
  81.                 reply.AddChar(PRIEST_PARTNER_CLOTHES);
  82.                 partner->Send(reply);
  83.             }
  84.             else if (character->fiance != util::ucfirst(util::lowercase(partner->name)) || partner->fiance != util::ucfirst(util::lowercase(character->name)))
  85.             {
  86.                 PacketBuilder reply;
  87.                 reply.SetID(PACKET_PRIEST, PACKET_REPLY);
  88.                 reply.AddChar(PRIEST_NO_PREMISSION);
  89.                 partner->Send(reply);
  90.             }
  91.             else
  92.             {
  93.                 partner->npc = character->npc;
  94.                 partner->npc_type = ENF::Priest;
  95.  
  96.                 partner->npc->marriage = new NPC_Marriage();
  97.                 partner->npc->marriage->partner[0] = character;
  98.                 partner->npc->marriage->partner[1] = partner;
  99.  
  100.                 PacketBuilder builder(PACKET_PRIEST, PACKET_REQUEST);
  101.                 builder.AddShort(1);
  102.                 builder.AddString(character->name);
  103.                 partner->Send(builder);
  104.             }
  105.         }
  106.     }
  107.  
  108.     void Priest_Open(Character *character, PacketReader &reader)
  109.     {
  110.         short id = reader.GetShort();
  111.  
  112.         UTIL_FOREACH(character->map->npcs, npc)
  113.         {
  114.             if (npc->index == id && npc->Data()->type == ENF::Priest)
  115.             {
  116.                 character->npc = npc;
  117.                 character->npc_type = ENF::Priest;
  118.  
  119.                 if (character->fiance.empty() || !character->partner.empty())
  120.                 {
  121.                     npc->ShowDialog("You have no partner! Please buy a wedding approval from law bob or if you're already married, a divorce.");
  122.                     break;
  123.                 }
  124.  
  125.                 if (character->paperdoll[Character::Armor] != util::to_int(character->world->config[(character->gender == GENDER_FEMALE ? "WeddingArmorFemale" : "WeddingArmorMale")])
  126.                 || util::to_int(character->world->config[(character->gender == GENDER_FEMALE ? "WeddingArmorFemale" : "WeddingArmorMale")]) == 0)
  127.                 {
  128.                     PacketBuilder reply;
  129.                     reply.SetID(PACKET_PRIEST, PACKET_REPLY);
  130.                     reply.AddChar(PRIEST_CLOTHES);
  131.                     character->Send(reply);
  132.                 }
  133.                 else if (character->level < util::to_int(character->world->config["WeddingLevelNeeded"]))
  134.                 {
  135.                     PacketBuilder reply;
  136.                     reply.SetID(PACKET_PRIEST, PACKET_REPLY);
  137.                     reply.AddChar(PRIEST_UNEXPERIENCED);
  138.                     character->Send(reply);
  139.                 }
  140.                 else
  141.                 {
  142.                     PacketBuilder reply;
  143.                     reply.SetID(PACKET_PRIEST, PACKET_OPEN);
  144.                     reply.AddInt(0);
  145.                     character->Send(reply);
  146.                 }
  147.  
  148.                 break;
  149.             }
  150.         }
  151.     }
  152.  
  153.     PACKET_HANDLER_REGISTER(PACKET_PRIEST)
  154.         Register(PACKET_ACCEPT, Priest_Accept, Playing);
  155.         Register(PACKET_USE, Priest_Use, Playing);
  156.         Register(PACKET_REQUEST, Priest_Request, Playing);
  157.         Register(PACKET_OPEN, Priest_Open, Playing);
  158.     PACKET_HANDLER_REGISTER_END()
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement