Oskar1121

Untitled

Oct 10th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. void ProtocolGame::sendBestiaryLine(const MonsterClass_t monsterClass, bool loaded)
  2. {
  3. NetworkMessage msg;
  4. msg.addByte(238);
  5.  
  6. player->m_bestiaryLoaded[monsterClass] = loaded;
  7. player->m_bestiaryLoad = loaded;
  8.  
  9. BestiaryMap bestiaryMap;
  10. player->getBestiaryByMonsterClass(monsterClass, bestiaryMap);
  11.  
  12. player->m_bestiaryLoaded[monsterClass] = true;
  13. if(!loaded)
  14. player->m_bestiaryLoad = true;
  15.  
  16. msg.addByte(monsterClass);
  17. msg.add<uint16_t>(bestiaryMap.size());
  18. if (!bestiaryMap.empty())
  19. {
  20. for (BestiaryMap::const_iterator it = bestiaryMap.begin(); it != bestiaryMap.end(); it++)
  21. {
  22. MonsterType* mType = g_monsters.getMonsterType(it->first);
  23. if (mType)
  24. {
  25. msg.addByte(0x01);
  26.  
  27. uint32_t kills = it->second.kills;
  28. if (player->hasFlag(PlayerFlag_CannotBeAttacked))
  29. kills = 100000;
  30.  
  31. msg.add<uint32_t>(kills);
  32. msg.addString(mType->name);
  33. msg.addString(mType->name);
  34.  
  35. AddOutfit(msg, mType->info.outfit);
  36.  
  37. LootItemList lootList = it->second.lootItemList;
  38. msg.addByte(lootList.size());
  39. if (!lootList.empty())
  40. {
  41. for (LootItemList::const_iterator _it = lootList.begin(); _it != lootList.end(); ++_it)
  42. {
  43. msg.add<uint32_t>(_it->second);
  44. const ItemType& itemType = Item::items[_it->first];
  45. msg.add<uint16_t>(itemType.clientId);
  46. msg.addString(itemType.name);
  47. }
  48. }
  49.  
  50. msg.add<uint32_t>(mType->info.healthMax);
  51. msg.add<uint32_t>(mType->info.experience);
  52. msg.add<uint16_t>(mType->info.reflection);
  53.  
  54. for(uint32_t combatType = 0; combatType <= 11; ++combatType)
  55. {
  56. CombatType_t type = indexToCombatType(combatType);
  57. if(hasBitSet((uint32_t)type, mType->info.damageImmunities))
  58. msg.addByte(100);
  59. else
  60. msg.addByte(mType->info.elementMap[type]);
  61. }
  62. }
  63. else
  64. msg.addByte(0x00);
  65. }
  66.  
  67. player->clearCacheBestiary(bestiaryMap);
  68. }
  69.  
  70. writeToOutputBuffer(msg);
  71. }
Advertisement
Add Comment
Please, Sign In to add comment