Index: src/map/charutils.cpp =================================================================== --- src/map/charutils.cpp (revision 2749) +++ src/map/charutils.cpp (working copy) @@ -1763,6 +1763,57 @@ PChar->pushPacket(new CCharAbilitiesPacket(PChar)); } + +#define BASE_RABBIT_TP 0x00000007 +#define WILD_CARROT 0xC0000000 +#define BASE_TIGER_TP 0x00000700 +#define BASE_SHEEP_TP 0x001E0000 +#define BASE_CACTUS_TP 0x0C000000 + +void SetJugPetAbilities(CCharEntity* PChar, uint32 PetID) +{ +// memset(PChar->m_PetCommands+20,0xff,sizeof(uint8)*8); + uint * hacks = (uint *)(PChar->m_PetCommands+20); + switch(PetID) { + case 54: + break; + case 47: + *hacks |= BASE_CACTUS_TP; + break; + case 21: + case 36: + case 57: + *hacks |= BASE_SHEEP_TP; + break; + //tiger family fall through + case 39: + case 27: + case 63: + *hacks |= BASE_TIGER_TP; + break; + //slipper silas has none + case 67: + *hacks |= 0; + break; + //rabbit family + //lucky on top + case 51: + *(hacks+1) |= WILD_CARROT ; + *(hacks) |= BASE_RABBIT_TP - 2; + break; + //fall through to basic rabbit stuff + case 22: + case 37: + *hacks |= (uint)BASE_RABBIT_TP ; + //memset(PChar->m_PetCommands+20,0x07,sizeof(uint8)*1); + break; + + + } + +} + + void BuildingCharPetAbilityTable(CCharEntity* PChar, CPetEntity* PPet, uint32 PetID){ DSP_DEBUG_BREAK_IF(PPet==NULL || PChar==NULL); @@ -1773,6 +1824,14 @@ return; } + + + if(PChar->GetMJob() == JOB_BST || PChar->GetSJob() == JOB_BST) + { + SetJugPetAbilities(PChar,PetID); + } + + if(PChar->GetMJob() == JOB_SMN || PChar->GetSJob() == JOB_SMN) { std::vector AbilitiesList = ability::GetAbilities(JOB_SMN);