Give pets 30 buff because that's what they got

This commit is contained in:
Michael Cook (mackal) 2016-08-02 21:08:05 -04:00
parent 64cf613189
commit d68a3b191e
13 changed files with 30 additions and 28 deletions

View File

@ -30,6 +30,7 @@
static const uint32 BUFF_COUNT = 25; static const uint32 BUFF_COUNT = 25;
static const uint32 PET_BUFF_COUNT = 30;
static const uint32 MAX_MERC = 100; static const uint32 MAX_MERC = 100;
static const uint32 MAX_MERC_GRADES = 10; static const uint32 MAX_MERC_GRADES = 10;
static const uint32 MAX_MERC_STANCES = 10; static const uint32 MAX_MERC_STANCES = 10;
@ -522,8 +523,8 @@ struct BuffRemoveRequest_Struct
struct PetBuff_Struct { struct PetBuff_Struct {
/*000*/ uint32 petid; /*000*/ uint32 petid;
/*004*/ uint32 spellid[BUFF_COUNT+5]; /*004*/ uint32 spellid[PET_BUFF_COUNT];
/*124*/ int32 ticsremaining[BUFF_COUNT+5]; /*124*/ int32 ticsremaining[PET_BUFF_COUNT];
/*244*/ uint32 buffcount; /*244*/ uint32 buffcount;
}; };

View File

@ -2012,18 +2012,18 @@ namespace RoF
__packet->WriteUInt8(1); // 1 indicates all buffs on the pet (0 to add or remove a single buff) __packet->WriteUInt8(1); // 1 indicates all buffs on the pet (0 to add or remove a single buff)
__packet->WriteUInt16(emu->buffcount); __packet->WriteUInt16(emu->buffcount);
for (uint16 i = 0; i < BUFF_COUNT; ++i) for (uint16 i = 0; i < PET_BUFF_COUNT; ++i)
{ {
if (emu->spellid[i]) if (emu->spellid[i])
{ {
__packet->WriteUInt32(i); __packet->WriteUInt32(i);
__packet->WriteUInt32(emu->spellid[i]); __packet->WriteUInt32(emu->spellid[i]);
__packet->WriteUInt32(emu->ticsremaining[i]); __packet->WriteUInt32(emu->ticsremaining[i]);
__packet->WriteUInt32(0); // Unknown __packet->WriteUInt32(0); // numhits
__packet->WriteString(""); __packet->WriteString("");
} }
} }
__packet->WriteUInt8(0); // Unknown __packet->WriteUInt8(0); // some sort of type
FINISH_ENCODE(); FINISH_ENCODE();
} }

View File

@ -2099,18 +2099,18 @@ namespace RoF2
__packet->WriteUInt8(1); // 1 indicates all buffs on the pet (0 to add or remove a single buff) __packet->WriteUInt8(1); // 1 indicates all buffs on the pet (0 to add or remove a single buff)
__packet->WriteUInt16(emu->buffcount); __packet->WriteUInt16(emu->buffcount);
for (uint16 i = 0; i < BUFF_COUNT; ++i) for (uint16 i = 0; i < PET_BUFF_COUNT; ++i)
{ {
if (emu->spellid[i]) if (emu->spellid[i])
{ {
__packet->WriteUInt32(i); __packet->WriteUInt32(i);
__packet->WriteUInt32(emu->spellid[i]); __packet->WriteUInt32(emu->spellid[i]);
__packet->WriteUInt32(emu->ticsremaining[i]); __packet->WriteUInt32(emu->ticsremaining[i]);
__packet->WriteUInt32(0); // Unknown __packet->WriteUInt32(0); // num hits
__packet->WriteString(""); __packet->WriteString("");
} }
} }
__packet->WriteUInt8(0); // Unknown __packet->WriteUInt8(0); // some sort of type
FINISH_ENCODE(); FINISH_ENCODE();
} }

View File

@ -1502,7 +1502,7 @@ namespace SoD
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->petid); VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->petid);
VARSTRUCT_ENCODE_TYPE(uint16, Buffer, emu->buffcount); VARSTRUCT_ENCODE_TYPE(uint16, Buffer, emu->buffcount);
for (unsigned int i = 0; i < BUFF_COUNT; ++i) for (unsigned int i = 0; i < PET_BUFF_COUNT; ++i)
{ {
if (emu->spellid[i]) if (emu->spellid[i])
{ {
@ -1513,7 +1513,7 @@ namespace SoD
} }
} }
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->buffcount); VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->buffcount); // I think this is actually some sort of type
delete[] __emu_buffer; delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req); dest->FastQueuePacket(&in, ack_req);

View File

@ -1177,9 +1177,9 @@ namespace SoF
OUT(petid); OUT(petid);
OUT(buffcount); OUT(buffcount);
int EQBuffSlot = 0; int EQBuffSlot = 0; // do we really want to shuffle them around like this?
for (uint32 EmuBuffSlot = 0; EmuBuffSlot < BUFF_COUNT; ++EmuBuffSlot) for (uint32 EmuBuffSlot = 0; EmuBuffSlot < PET_BUFF_COUNT; ++EmuBuffSlot)
{ {
if (emu->spellid[EmuBuffSlot]) if (emu->spellid[EmuBuffSlot])
{ {

View File

@ -891,9 +891,9 @@ namespace Titanium
OUT(petid); OUT(petid);
OUT(buffcount); OUT(buffcount);
int EQBuffSlot = 0; int EQBuffSlot = 0; // do we really want to shuffle them around like this?
for (uint32 EmuBuffSlot = 0; EmuBuffSlot < BUFF_COUNT; ++EmuBuffSlot) for (uint32 EmuBuffSlot = 0; EmuBuffSlot < PET_BUFF_COUNT; ++EmuBuffSlot)
{ {
if (emu->spellid[EmuBuffSlot]) if (emu->spellid[EmuBuffSlot])
{ {

View File

@ -1764,18 +1764,18 @@ namespace UF
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, 1); VARSTRUCT_ENCODE_TYPE(uint8, Buffer, 1);
VARSTRUCT_ENCODE_TYPE(uint16, Buffer, emu->buffcount); VARSTRUCT_ENCODE_TYPE(uint16, Buffer, emu->buffcount);
for (unsigned int i = 0; i < BUFF_COUNT; ++i) for (unsigned int i = 0; i < PET_BUFF_COUNT; ++i)
{ {
if (emu->spellid[i]) if (emu->spellid[i])
{ {
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, i); VARSTRUCT_ENCODE_TYPE(uint32, Buffer, i);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->spellid[i]); VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->spellid[i]);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->ticsremaining[i]); VARSTRUCT_ENCODE_TYPE(uint32, Buffer, emu->ticsremaining[i]);
VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0); VARSTRUCT_ENCODE_TYPE(uint32, Buffer, 0); // numhits
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, 0); // This is a string. Name of the caster of the buff. VARSTRUCT_ENCODE_TYPE(uint8, Buffer, 0); // This is a string. Name of the caster of the buff.
} }
} }
VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->buffcount); VARSTRUCT_ENCODE_TYPE(uint8, Buffer, emu->buffcount); /// I think this is actually some sort of type
delete[] __emu_buffer; delete[] __emu_buffer;
dest->FastQueuePacket(&in, ack_req); dest->FastQueuePacket(&in, ack_req);

View File

@ -329,7 +329,7 @@ RULE_INT(Spells, MaxBuffSlotsNPC, 25)
RULE_INT(Spells, MaxSongSlotsNPC, 10) RULE_INT(Spells, MaxSongSlotsNPC, 10)
RULE_INT(Spells, MaxDiscSlotsNPC, 1) RULE_INT(Spells, MaxDiscSlotsNPC, 1)
RULE_INT(Spells, MaxTotalSlotsNPC, 36) RULE_INT(Spells, MaxTotalSlotsNPC, 36)
RULE_INT(Spells, MaxTotalSlotsPET, 25) // do not set this higher than 25 until the player profile is removed from the blob RULE_INT(Spells, MaxTotalSlotsPET, 30) // do not set this higher than 25 until the player profile is removed from the blob
RULE_BOOL (Spells, EnableBlockedBuffs, true) RULE_BOOL (Spells, EnableBlockedBuffs, true)
RULE_INT(Spells, ReflectType, 1) //0 = disabled, 1 = single target player spells only, 2 = all player spells, 3 = all single target spells, 4 = all spells RULE_INT(Spells, ReflectType, 1) //0 = disabled, 1 = single target player spells only, 2 = all player spells, 3 = all single target spells, 4 = all spells
RULE_INT(Spells, VirusSpreadDistance, 30) // The distance a viral spell will jump to its next victim RULE_INT(Spells, VirusSpreadDistance, 30) // The distance a viral spell will jump to its next victim

View File

@ -1709,8 +1709,8 @@ bool Bot::LoadPet()
NPC *pet_inst = GetPet()->CastToNPC(); NPC *pet_inst = GetPet()->CastToNPC();
SpellBuff_Struct pet_buffs[BUFF_COUNT]; SpellBuff_Struct pet_buffs[PET_BUFF_COUNT];
memset(pet_buffs, 0, (sizeof(SpellBuff_Struct) * BUFF_COUNT)); memset(pet_buffs, 0, (sizeof(SpellBuff_Struct) * PET_BUFF_COUNT));
if (!botdb.LoadPetBuffs(GetBotID(), pet_buffs)) if (!botdb.LoadPetBuffs(GetBotID(), pet_buffs))
bot_owner->Message(13, "%s for %s's pet", BotDatabase::fail::LoadPetBuffs(), GetCleanName()); bot_owner->Message(13, "%s for %s's pet", BotDatabase::fail::LoadPetBuffs(), GetCleanName());
@ -1741,11 +1741,11 @@ bool Bot::SavePet()
return false; return false;
char* pet_name = new char[64]; char* pet_name = new char[64];
SpellBuff_Struct pet_buffs[BUFF_COUNT]; SpellBuff_Struct pet_buffs[PET_BUFF_COUNT];
uint32 pet_items[EQEmu::legacy::EQUIPMENT_SIZE]; uint32 pet_items[EQEmu::legacy::EQUIPMENT_SIZE];
memset(pet_name, 0, 64); memset(pet_name, 0, 64);
memset(pet_buffs, 0, (sizeof(SpellBuff_Struct) * BUFF_COUNT)); memset(pet_buffs, 0, (sizeof(SpellBuff_Struct) * PET_BUFF_COUNT));
memset(pet_items, 0, (sizeof(uint32) * EQEmu::legacy::EQUIPMENT_SIZE)); memset(pet_items, 0, (sizeof(uint32) * EQEmu::legacy::EQUIPMENT_SIZE));
pet_inst->GetPetState(pet_buffs, pet_items, pet_name); pet_inst->GetPetState(pet_buffs, pet_items, pet_name);

View File

@ -1472,7 +1472,7 @@ bool BotDatabase::LoadPetBuffs(const uint32 bot_id, SpellBuff_Struct* pet_buffs)
return true; return true;
int buff_index = 0; int buff_index = 0;
for (auto row = results.begin(); row != results.end() && buff_index < BUFF_COUNT; ++row) { for (auto row = results.begin(); row != results.end() && buff_index < PET_BUFF_COUNT; ++row) {
pet_buffs[buff_index].spellid = atoi(row[0]); pet_buffs[buff_index].spellid = atoi(row[0]);
pet_buffs[buff_index].level = atoi(row[1]); pet_buffs[buff_index].level = atoi(row[1]);
pet_buffs[buff_index].duration = atoi(row[2]); pet_buffs[buff_index].duration = atoi(row[2]);
@ -1509,7 +1509,7 @@ bool BotDatabase::SavePetBuffs(const uint32 bot_id, const SpellBuff_Struct* pet_
if (!saved_pet_index) if (!saved_pet_index)
return true; return true;
for (int buff_index = 0; buff_index < BUFF_COUNT; ++buff_index) { for (int buff_index = 0; buff_index < PET_BUFF_COUNT; ++buff_index) {
if (!pet_buffs[buff_index].spellid || pet_buffs[buff_index].spellid == SPELL_UNKNOWN) if (!pet_buffs[buff_index].spellid || pet_buffs[buff_index].spellid == SPELL_UNKNOWN)
continue; continue;

View File

@ -5368,8 +5368,8 @@ void Mob::SendPetBuffsToClient()
int MaxSlots = GetMaxTotalSlots(); int MaxSlots = GetMaxTotalSlots();
if(MaxSlots > BUFF_COUNT) if(MaxSlots > PET_BUFF_COUNT)
MaxSlots = BUFF_COUNT; MaxSlots = PET_BUFF_COUNT;
for(int buffslot = 0; buffslot < MaxSlots; buffslot++) for(int buffslot = 0; buffslot < MaxSlots; buffslot++)
{ {

View File

@ -3178,7 +3178,8 @@ void ZoneDatabase::SavePetInfo(Client *client)
query.clear(); query.clear();
// pet buffs! // pet buffs!
for (int index = 0; index < RuleI(Spells, MaxTotalSlotsPET); index++) { int max_slots = RuleI(Spells, MaxTotalSlotsPET);
for (int index = 0; index < max_slots; index++) {
if (petinfo->Buffs[index].spellid == SPELL_UNKNOWN || petinfo->Buffs[index].spellid == 0) if (petinfo->Buffs[index].spellid == SPELL_UNKNOWN || petinfo->Buffs[index].spellid == 0)
continue; continue;
if (query.length() == 0) if (query.length() == 0)

View File

@ -125,7 +125,7 @@ struct PetInfo {
uint32 HP; uint32 HP;
uint32 Mana; uint32 Mana;
float size; float size;
SpellBuff_Struct Buffs[BUFF_COUNT]; SpellBuff_Struct Buffs[PET_BUFF_COUNT];
uint32 Items[EQEmu::legacy::EQUIPMENT_SIZE]; uint32 Items[EQEmu::legacy::EQUIPMENT_SIZE];
char Name[64]; char Name[64];
}; };