mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-18 23:51:28 +00:00
Changed the pet command #defines to be based on RoF2 list of pet commands and added decodes to Titanium, SoF and SoD.
(RoF+) The /pet focus on/off and /pet hold on/off commands are now functional. Added more toggle and on/off support for pet commands.
This commit is contained in:
parent
668823eaf2
commit
f1a73d4da2
@ -1,5 +1,9 @@
|
|||||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
== 01/06/2015 ==
|
||||||
|
Trevius: Changed the pet command #defines to be based on RoF2 list of pet commands and added decodes to Titanium, SoF and SoD.
|
||||||
|
Trevius: (RoF+) The /pet focus on/off and /pet hold on/off commands are now functional.
|
||||||
|
|
||||||
== 01/05/2015 ==
|
== 01/05/2015 ==
|
||||||
Uleat: Fixed (added translators for) item/text links. Only 'OP_ChannelMessage' and 'OP_SpecialMesg' are currently handled..more text channels will be added as the need arises.
|
Uleat: Fixed (added translators for) item/text links. Only 'OP_ChannelMessage' and 'OP_SpecialMesg' are currently handled..more text channels will be added as the need arises.
|
||||||
|
|
||||||
|
|||||||
@ -4518,47 +4518,8 @@ namespace RoF
|
|||||||
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
||||||
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
||||||
|
|
||||||
switch (eq->command)
|
IN(command);
|
||||||
{
|
emu->unknown = eq->unknown04;
|
||||||
case 0x00:
|
|
||||||
emu->command = 0x04; // Health
|
|
||||||
break;
|
|
||||||
case 0x01:
|
|
||||||
emu->command = 0x10; // Leader
|
|
||||||
break;
|
|
||||||
case 0x02:
|
|
||||||
emu->command = 0x07; // Attack
|
|
||||||
break;
|
|
||||||
case 0x04:
|
|
||||||
emu->command = 0x08; // Follow
|
|
||||||
break;
|
|
||||||
case 0x05:
|
|
||||||
emu->command = 0x05; // Guard
|
|
||||||
break;
|
|
||||||
case 0x06:
|
|
||||||
emu->command = 0x09; // Sit. Needs work. This appears to be a toggle between Sit/Stand now.
|
|
||||||
break;
|
|
||||||
case 0x0c:
|
|
||||||
emu->command = 0x0b; // Taunt
|
|
||||||
break;
|
|
||||||
case 0x0f:
|
|
||||||
emu->command = 0x0c; // Hold
|
|
||||||
break;
|
|
||||||
case 0x10:
|
|
||||||
emu->command = 0x1b; // Hold on
|
|
||||||
break;
|
|
||||||
case 0x11:
|
|
||||||
emu->command = 0x1c; // Hold off
|
|
||||||
break;
|
|
||||||
case 0x1c:
|
|
||||||
emu->command = 0x01; // Back
|
|
||||||
break;
|
|
||||||
case 0x1d:
|
|
||||||
emu->command = 0x02; // Leave/Go Away
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
emu->command = eq->command;
|
|
||||||
}
|
|
||||||
|
|
||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4589,47 +4589,8 @@ namespace RoF2
|
|||||||
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
||||||
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
||||||
|
|
||||||
switch (eq->command)
|
IN(command);
|
||||||
{
|
emu->unknown = eq->unknown04;
|
||||||
case 0x00:
|
|
||||||
emu->command = 0x04; // Health
|
|
||||||
break;
|
|
||||||
case 0x01:
|
|
||||||
emu->command = 0x10; // Leader
|
|
||||||
break;
|
|
||||||
case 0x02:
|
|
||||||
emu->command = 0x07; // Attack
|
|
||||||
break;
|
|
||||||
case 0x04:
|
|
||||||
emu->command = 0x08; // Follow
|
|
||||||
break;
|
|
||||||
case 0x05:
|
|
||||||
emu->command = 0x05; // Guard
|
|
||||||
break;
|
|
||||||
case 0x06:
|
|
||||||
emu->command = 0x09; // Sit. Needs work. This appears to be a toggle between Sit/Stand now.
|
|
||||||
break;
|
|
||||||
case 0x0c:
|
|
||||||
emu->command = 0x0b; // Taunt
|
|
||||||
break;
|
|
||||||
case 0x0f:
|
|
||||||
emu->command = 0x0c; // Hold
|
|
||||||
break;
|
|
||||||
case 0x10:
|
|
||||||
emu->command = 0x1b; // Hold on
|
|
||||||
break;
|
|
||||||
case 0x11:
|
|
||||||
emu->command = 0x1c; // Hold off
|
|
||||||
break;
|
|
||||||
case 0x1c:
|
|
||||||
emu->command = 0x01; // Back
|
|
||||||
break;
|
|
||||||
case 0x1d:
|
|
||||||
emu->command = 0x02; // Leave/Go Away
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
emu->command = eq->command;
|
|
||||||
}
|
|
||||||
|
|
||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3105,6 +3105,87 @@ namespace SoD
|
|||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECODE(OP_PetCommands)
|
||||||
|
{
|
||||||
|
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
||||||
|
|
||||||
|
switch (eq->command)
|
||||||
|
{
|
||||||
|
case 0x04:
|
||||||
|
emu->command = 0x00; // /pet health
|
||||||
|
break;
|
||||||
|
case 0x10:
|
||||||
|
emu->command = 0x01; // /pet leader
|
||||||
|
break;
|
||||||
|
case 0x07:
|
||||||
|
emu->command = 0x02; // /pet attack or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x08:
|
||||||
|
emu->command = 0x04; // /pet follow or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x05:
|
||||||
|
emu->command = 0x05; // /pet guard or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x09:
|
||||||
|
emu->command = 0x07; // /pet sit or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0a:
|
||||||
|
emu->command = 0x08; // /pet stand or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x06:
|
||||||
|
emu->command = 0x03; // /pet guard me
|
||||||
|
break;
|
||||||
|
case 0x03: // Case Made Up
|
||||||
|
emu->command = 0x09; // Stop?
|
||||||
|
break;
|
||||||
|
case 0x0b:
|
||||||
|
emu->command = 0x0d; // /pet taunt or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0e:
|
||||||
|
emu->command = 0x0e; // /pet notaunt or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0c:
|
||||||
|
emu->command = 0x0f; // /pet hold
|
||||||
|
break;
|
||||||
|
case 0x1b:
|
||||||
|
emu->command = 0x10; // /pet hold on
|
||||||
|
break;
|
||||||
|
case 0x1c:
|
||||||
|
emu->command = 0x11; // /pet hold off
|
||||||
|
break;
|
||||||
|
case 0x11:
|
||||||
|
emu->command = 0x12; // Slumber?
|
||||||
|
break;
|
||||||
|
case 0x12:
|
||||||
|
emu->command = 0x15; // /pet no cast
|
||||||
|
break;
|
||||||
|
case 0x0d: // Case Made Up
|
||||||
|
emu->command = 0x16; // Pet Window No Cast
|
||||||
|
break;
|
||||||
|
case 0x13:
|
||||||
|
emu->command = 0x18; // /pet focus
|
||||||
|
break;
|
||||||
|
case 0x19:
|
||||||
|
emu->command = 0x19; // /pet focus on
|
||||||
|
break;
|
||||||
|
case 0x1a:
|
||||||
|
emu->command = 0x1a; // /pet focus off
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
emu->command = 0x1c; // /pet back off
|
||||||
|
break;
|
||||||
|
case 0x02:
|
||||||
|
emu->command = 0x1d; // /pet get lost
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
emu->command = eq->command;
|
||||||
|
}
|
||||||
|
OUT(unknown);
|
||||||
|
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
}
|
||||||
|
|
||||||
DECODE(OP_RaidInvite)
|
DECODE(OP_RaidInvite)
|
||||||
{
|
{
|
||||||
DECODE_LENGTH_ATLEAST(structs::RaidGeneral_Struct);
|
DECODE_LENGTH_ATLEAST(structs::RaidGeneral_Struct);
|
||||||
|
|||||||
@ -104,6 +104,7 @@ D(OP_ItemVerifyRequest)
|
|||||||
D(OP_LoadSpellSet)
|
D(OP_LoadSpellSet)
|
||||||
D(OP_LootItem)
|
D(OP_LootItem)
|
||||||
D(OP_MoveItem)
|
D(OP_MoveItem)
|
||||||
|
D(OP_PetCommands)
|
||||||
D(OP_RaidInvite)
|
D(OP_RaidInvite)
|
||||||
D(OP_ReadBook)
|
D(OP_ReadBook)
|
||||||
D(OP_Save)
|
D(OP_Save)
|
||||||
|
|||||||
@ -2443,6 +2443,87 @@ namespace SoF
|
|||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECODE(OP_PetCommands)
|
||||||
|
{
|
||||||
|
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
||||||
|
|
||||||
|
switch (eq->command)
|
||||||
|
{
|
||||||
|
case 0x04:
|
||||||
|
emu->command = 0x00; // /pet health
|
||||||
|
break;
|
||||||
|
case 0x10:
|
||||||
|
emu->command = 0x01; // /pet leader
|
||||||
|
break;
|
||||||
|
case 0x07:
|
||||||
|
emu->command = 0x02; // /pet attack or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x08:
|
||||||
|
emu->command = 0x04; // /pet follow or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x05:
|
||||||
|
emu->command = 0x05; // /pet guard or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x09:
|
||||||
|
emu->command = 0x07; // /pet sit or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0a:
|
||||||
|
emu->command = 0x08; // /pet stand or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x06:
|
||||||
|
emu->command = 0x03; // /pet guard me
|
||||||
|
break;
|
||||||
|
case 0x03: // Case Made Up
|
||||||
|
emu->command = 0x09; // Stop?
|
||||||
|
break;
|
||||||
|
case 0x0b:
|
||||||
|
emu->command = 0x0d; // /pet taunt or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0e:
|
||||||
|
emu->command = 0x0e; // /pet notaunt or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0c:
|
||||||
|
emu->command = 0x0f; // /pet hold
|
||||||
|
break;
|
||||||
|
case 0x1b:
|
||||||
|
emu->command = 0x10; // /pet hold on
|
||||||
|
break;
|
||||||
|
case 0x1c:
|
||||||
|
emu->command = 0x11; // /pet hold off
|
||||||
|
break;
|
||||||
|
case 0x11:
|
||||||
|
emu->command = 0x12; // Slumber?
|
||||||
|
break;
|
||||||
|
case 0x12:
|
||||||
|
emu->command = 0x15; // /pet no cast
|
||||||
|
break;
|
||||||
|
case 0x0d: // Case Made Up
|
||||||
|
emu->command = 0x16; // Pet Window No Cast
|
||||||
|
break;
|
||||||
|
case 0x13:
|
||||||
|
emu->command = 0x18; // /pet focus
|
||||||
|
break;
|
||||||
|
case 0x19:
|
||||||
|
emu->command = 0x19; // /pet focus on
|
||||||
|
break;
|
||||||
|
case 0x1a:
|
||||||
|
emu->command = 0x1a; // /pet focus off
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
emu->command = 0x1c; // /pet back off
|
||||||
|
break;
|
||||||
|
case 0x02:
|
||||||
|
emu->command = 0x1d; // /pet get lost
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
emu->command = eq->command;
|
||||||
|
}
|
||||||
|
OUT(unknown);
|
||||||
|
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
}
|
||||||
|
|
||||||
DECODE(OP_RaidInvite)
|
DECODE(OP_RaidInvite)
|
||||||
{
|
{
|
||||||
DECODE_LENGTH_ATLEAST(structs::RaidGeneral_Struct);
|
DECODE_LENGTH_ATLEAST(structs::RaidGeneral_Struct);
|
||||||
|
|||||||
@ -88,6 +88,7 @@ D(OP_ItemLinkClick)
|
|||||||
D(OP_ItemVerifyRequest)
|
D(OP_ItemVerifyRequest)
|
||||||
D(OP_LootItem)
|
D(OP_LootItem)
|
||||||
D(OP_MoveItem)
|
D(OP_MoveItem)
|
||||||
|
D(OP_PetCommands)
|
||||||
D(OP_RaidInvite)
|
D(OP_RaidInvite)
|
||||||
D(OP_ReadBook)
|
D(OP_ReadBook)
|
||||||
D(OP_Save)
|
D(OP_Save)
|
||||||
|
|||||||
@ -1637,6 +1637,87 @@ namespace Titanium
|
|||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DECODE(OP_PetCommands)
|
||||||
|
{
|
||||||
|
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
||||||
|
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
||||||
|
|
||||||
|
switch (eq->command)
|
||||||
|
{
|
||||||
|
case 0x04:
|
||||||
|
emu->command = 0x00; // /pet health
|
||||||
|
break;
|
||||||
|
case 0x10:
|
||||||
|
emu->command = 0x01; // /pet leader
|
||||||
|
break;
|
||||||
|
case 0x07:
|
||||||
|
emu->command = 0x02; // /pet attack or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x08:
|
||||||
|
emu->command = 0x04; // /pet follow or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x05:
|
||||||
|
emu->command = 0x05; // /pet guard or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x09:
|
||||||
|
emu->command = 0x07; // /pet sit or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0a:
|
||||||
|
emu->command = 0x08; // /pet stand or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x06:
|
||||||
|
emu->command = 0x03; // /pet guard me
|
||||||
|
break;
|
||||||
|
case 0x03: // Case Made Up
|
||||||
|
emu->command = 0x09; // Stop?
|
||||||
|
break;
|
||||||
|
case 0x0b:
|
||||||
|
emu->command = 0x0d; // /pet taunt or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0e:
|
||||||
|
emu->command = 0x0e; // /pet notaunt or Pet Window
|
||||||
|
break;
|
||||||
|
case 0x0c:
|
||||||
|
emu->command = 0x0f; // /pet hold
|
||||||
|
break;
|
||||||
|
case 0x1b:
|
||||||
|
emu->command = 0x10; // /pet hold on
|
||||||
|
break;
|
||||||
|
case 0x1c:
|
||||||
|
emu->command = 0x11; // /pet hold off
|
||||||
|
break;
|
||||||
|
case 0x11:
|
||||||
|
emu->command = 0x12; // Slumber?
|
||||||
|
break;
|
||||||
|
case 0x12:
|
||||||
|
emu->command = 0x15; // /pet no cast
|
||||||
|
break;
|
||||||
|
case 0x0d: // Case Made Up
|
||||||
|
emu->command = 0x16; // Pet Window No Cast
|
||||||
|
break;
|
||||||
|
case 0x13:
|
||||||
|
emu->command = 0x18; // /pet focus
|
||||||
|
break;
|
||||||
|
case 0x19:
|
||||||
|
emu->command = 0x19; // /pet focus on
|
||||||
|
break;
|
||||||
|
case 0x1a:
|
||||||
|
emu->command = 0x1a; // /pet focus off
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
emu->command = 0x1c; // /pet back off
|
||||||
|
break;
|
||||||
|
case 0x02:
|
||||||
|
emu->command = 0x1d; // /pet get lost
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
emu->command = eq->command;
|
||||||
|
}
|
||||||
|
OUT(unknown);
|
||||||
|
|
||||||
|
FINISH_DIRECT_DECODE();
|
||||||
|
}
|
||||||
|
|
||||||
DECODE(OP_ReadBook)
|
DECODE(OP_ReadBook)
|
||||||
{
|
{
|
||||||
// no apparent slot translation needed -U
|
// no apparent slot translation needed -U
|
||||||
|
|||||||
@ -62,6 +62,7 @@ D(OP_ItemLinkClick)
|
|||||||
D(OP_LFGuild)
|
D(OP_LFGuild)
|
||||||
D(OP_LootItem)
|
D(OP_LootItem)
|
||||||
D(OP_MoveItem)
|
D(OP_MoveItem)
|
||||||
|
D(OP_PetCommands)
|
||||||
D(OP_ReadBook)
|
D(OP_ReadBook)
|
||||||
D(OP_SetServerFilter)
|
D(OP_SetServerFilter)
|
||||||
D(OP_ShopPlayerSell)
|
D(OP_ShopPlayerSell)
|
||||||
|
|||||||
@ -3425,57 +3425,8 @@ namespace Underfoot
|
|||||||
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
DECODE_LENGTH_EXACT(structs::PetCommand_Struct);
|
||||||
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
SETUP_DIRECT_DECODE(PetCommand_Struct, structs::PetCommand_Struct);
|
||||||
|
|
||||||
switch (eq->command)
|
IN(command);
|
||||||
{
|
IN(unknown);
|
||||||
case 0x00:
|
|
||||||
emu->command = 0x04; // Health
|
|
||||||
break;
|
|
||||||
case 0x01:
|
|
||||||
emu->command = 0x10; // Leader
|
|
||||||
break;
|
|
||||||
case 0x02:
|
|
||||||
emu->command = 0x07; // Attack
|
|
||||||
break;
|
|
||||||
case 0x04:
|
|
||||||
emu->command = 0x08; // Follow
|
|
||||||
break;
|
|
||||||
case 0x05:
|
|
||||||
emu->command = 0x05; // Guard
|
|
||||||
break;
|
|
||||||
case 0x06:
|
|
||||||
emu->command = 0x09; // Sit. Needs work. This appears to be a toggle between Sit/Stand now.
|
|
||||||
break;
|
|
||||||
case 0x0c:
|
|
||||||
emu->command = 0x0b; // Taunt
|
|
||||||
break;
|
|
||||||
case 0x0f:
|
|
||||||
emu->command = 0x0c; // Hold
|
|
||||||
break;
|
|
||||||
case 0x10:
|
|
||||||
emu->command = 0x1b; // Hold on
|
|
||||||
break;
|
|
||||||
case 0x11:
|
|
||||||
emu->command = 0x1c; // Hold off
|
|
||||||
break;
|
|
||||||
case 0x1c:
|
|
||||||
emu->command = 0x01; // Back
|
|
||||||
break;
|
|
||||||
case 0x1d:
|
|
||||||
emu->command = 0x02; // Leave/Go Away
|
|
||||||
break;
|
|
||||||
case 0x15:
|
|
||||||
emu->command = 0x12; // No Cast - /command
|
|
||||||
break;
|
|
||||||
case 0x16:
|
|
||||||
emu->command = 0x12; // No Cast - Pet Window
|
|
||||||
break;
|
|
||||||
case 0x18:
|
|
||||||
emu->command = 0x13; // Focus - Pet Window
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
emu->command = eq->command;
|
|
||||||
}
|
|
||||||
OUT(unknown);
|
|
||||||
|
|
||||||
FINISH_DIRECT_DECODE();
|
FINISH_DIRECT_DECODE();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9925,12 +9925,14 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
|||||||
uint32 PetCommand = pet->command;
|
uint32 PetCommand = pet->command;
|
||||||
|
|
||||||
// Handle Sit/Stand toggle in UF and later.
|
// Handle Sit/Stand toggle in UF and later.
|
||||||
|
/*
|
||||||
if (GetClientVersion() >= EQClientUnderfoot)
|
if (GetClientVersion() >= EQClientUnderfoot)
|
||||||
{
|
{
|
||||||
if (PetCommand == PET_SITDOWN)
|
if (PetCommand == PET_SITDOWN)
|
||||||
if (mypet->GetPetOrder() == SPO_Sit)
|
if (mypet->GetPetOrder() == SPO_Sit)
|
||||||
PetCommand = PET_STANDUP;
|
PetCommand = PET_STANDUP;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
switch (PetCommand)
|
switch (PetCommand)
|
||||||
{
|
{
|
||||||
@ -10036,13 +10038,28 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PET_TAUNT: {
|
case PET_TAUNT: {
|
||||||
|
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
||||||
|
if (mypet->CastToNPC()->IsTaunting())
|
||||||
|
{
|
||||||
|
Message_StringID(MT_PetResponse, PET_NO_TAUNT);
|
||||||
|
mypet->CastToNPC()->SetTaunting(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Message_StringID(MT_PetResponse, PET_DO_TAUNT);
|
||||||
|
mypet->CastToNPC()->SetTaunting(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case PET_TAUNT_ON: {
|
||||||
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
||||||
Message_StringID(MT_PetResponse, PET_DO_TAUNT);
|
Message_StringID(MT_PetResponse, PET_DO_TAUNT);
|
||||||
mypet->CastToNPC()->SetTaunting(true);
|
mypet->CastToNPC()->SetTaunting(true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PET_NOTAUNT: {
|
case PET_TAUNT_OFF: {
|
||||||
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
||||||
Message_StringID(MT_PetResponse, PET_NO_TAUNT);
|
Message_StringID(MT_PetResponse, PET_NO_TAUNT);
|
||||||
mypet->CastToNPC()->SetTaunting(false);
|
mypet->CastToNPC()->SetTaunting(false);
|
||||||
@ -10060,16 +10077,25 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PET_SITDOWN: {
|
case PET_SIT: {
|
||||||
if (mypet->IsFeared()) break; //could be exploited like PET_BACKOFF
|
if (mypet->IsFeared()) break; //could be exploited like PET_BACKOFF
|
||||||
|
|
||||||
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
||||||
mypet->Say_StringID(MT_PetResponse, PET_SIT_STRING);
|
if (mypet->GetPetOrder() == SPO_Sit)
|
||||||
mypet->SetPetOrder(SPO_Sit);
|
{
|
||||||
mypet->SetRunAnimSpeed(0);
|
mypet->Say_StringID(MT_PetResponse, PET_SIT_STRING);
|
||||||
if (!mypet->UseBardSpellLogic()) //maybe we can have a bard pet
|
mypet->SetPetOrder(SPO_Follow);
|
||||||
mypet->InterruptSpell(); //No cast 4 u. //i guess the pet should start casting
|
mypet->SendAppearancePacket(AT_Anim, ANIM_STAND);
|
||||||
mypet->SendAppearancePacket(AT_Anim, ANIM_SIT);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mypet->Say_StringID(MT_PetResponse, PET_SIT_STRING);
|
||||||
|
mypet->SetPetOrder(SPO_Sit);
|
||||||
|
mypet->SetRunAnimSpeed(0);
|
||||||
|
if (!mypet->UseBardSpellLogic()) //maybe we can have a bard pet
|
||||||
|
mypet->InterruptSpell(); //No cast 4 u. //i guess the pet should start casting
|
||||||
|
mypet->SendAppearancePacket(AT_Anim, ANIM_SIT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -10083,6 +10109,19 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case PET_SITDOWN: {
|
||||||
|
if (mypet->IsFeared()) break; //could be exploited like PET_BACKOFF
|
||||||
|
|
||||||
|
if ((mypet->GetPetType() == petAnimation && GetAA(aaAnimationEmpathy) >= 3) || mypet->GetPetType() != petAnimation) {
|
||||||
|
mypet->Say_StringID(MT_PetResponse, PET_SIT_STRING);
|
||||||
|
mypet->SetPetOrder(SPO_Sit);
|
||||||
|
mypet->SetRunAnimSpeed(0);
|
||||||
|
if (!mypet->UseBardSpellLogic()) //maybe we can have a bard pet
|
||||||
|
mypet->InterruptSpell(); //No cast 4 u. //i guess the pet should start casting
|
||||||
|
mypet->SendAppearancePacket(AT_Anim, ANIM_SIT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case PET_SLUMBER: {
|
case PET_SLUMBER: {
|
||||||
if (mypet->IsFeared()) break; //could be exploited like PET_BACKOFF
|
if (mypet->IsFeared()) break; //could be exploited like PET_BACKOFF
|
||||||
|
|
||||||
@ -10101,9 +10140,16 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
|||||||
if (mypet->IsFeared())
|
if (mypet->IsFeared())
|
||||||
break; //could be exploited like PET_BACKOFF
|
break; //could be exploited like PET_BACKOFF
|
||||||
|
|
||||||
mypet->Say_StringID(MT_PetResponse, PET_ON_HOLD);
|
if (mypet->IsHeld())
|
||||||
mypet->WipeHateList();
|
{
|
||||||
mypet->SetHeld(true);
|
mypet->SetHeld(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mypet->Say_StringID(MT_PetResponse, PET_ON_HOLD);
|
||||||
|
mypet->WipeHateList();
|
||||||
|
mypet->SetHeld(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -10123,6 +10169,7 @@ void Client::Handle_OP_PetCommands(const EQApplicationPacket *app)
|
|||||||
mypet->SetHeld(false);
|
mypet->SetHeld(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case PET_NOCAST_ON:
|
||||||
case PET_NOCAST: {
|
case PET_NOCAST: {
|
||||||
if (GetAA(aaAdvancedPetDiscipline) == 2 && mypet->IsNPC()) {
|
if (GetAA(aaAdvancedPetDiscipline) == 2 && mypet->IsNPC()) {
|
||||||
if (mypet->IsFeared())
|
if (mypet->IsFeared())
|
||||||
|
|||||||
@ -266,6 +266,7 @@ public:
|
|||||||
void SetPetSpellID(uint16 amt) {pet_spell_id = amt;}
|
void SetPetSpellID(uint16 amt) {pet_spell_id = amt;}
|
||||||
uint32 GetMaxDamage(uint8 tlevel);
|
uint32 GetMaxDamage(uint8 tlevel);
|
||||||
void SetTaunting(bool tog) {taunting = tog;}
|
void SetTaunting(bool tog) {taunting = tog;}
|
||||||
|
bool IsTaunting() const { return taunting; }
|
||||||
void PickPocket(Client* thief);
|
void PickPocket(Client* thief);
|
||||||
void StartSwarmTimer(uint32 duration) { swarm_timer.Start(duration); }
|
void StartSwarmTimer(uint32 duration) { swarm_timer.Start(duration); }
|
||||||
void AddLootDrop(const Item_Struct*dbitem, ItemList* itemlistconst, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange = false);
|
void AddLootDrop(const Item_Struct*dbitem, ItemList* itemlistconst, int16 charges, uint8 minlevel, uint8 maxlevel, bool equipit, bool wearchange = false);
|
||||||
|
|||||||
48
zone/pets.h
48
zone/pets.h
@ -1,26 +1,34 @@
|
|||||||
#ifndef PETS_H
|
#ifndef PETS_H
|
||||||
#define PETS_H
|
#define PETS_H
|
||||||
|
|
||||||
#define PET_BACKOFF 1
|
// Defines based on the RoF2 Client
|
||||||
#define PET_GETLOST 2
|
#define PET_HEALTHREPORT 0 // 0x00 - /pet health
|
||||||
#define PET_HEALTHREPORT 4
|
#define PET_LEADER 1 // 0x01 - /pet leader
|
||||||
#define PET_GUARDHERE 5
|
#define PET_ATTACK 2 // 0x02 - /pet attack or Pet Window
|
||||||
#define PET_GUARDME 6
|
#define PET_GUARDME 3 // 0x03 - No longer exists? - define not from client
|
||||||
#define PET_ATTACK 7
|
#define PET_FOLLOWME 4 // 0x04 - /pet follow or Pet Window
|
||||||
#define PET_FOLLOWME 8
|
#define PET_GUARDHERE 5 // 0x05 - /pet guard or Pet Window
|
||||||
#define PET_SITDOWN 9
|
#define PET_SIT 6 // 0x06 - /pet sit or Pet Window
|
||||||
#define PET_STANDUP 10
|
#define PET_SITDOWN 7 // 0x07 - /pet sit on
|
||||||
#define PET_TAUNT 11
|
#define PET_STANDUP 8 // 0x08 - /pet sit off
|
||||||
#define PET_HOLD 12
|
#define PET_STOP 9 // 0x09 - Not implemented?
|
||||||
#define PET_NOTAUNT 14
|
// Guessing 10 and 11 are PET_STOP_ON and PET_STOP_OFF
|
||||||
#define PET_LEADER 16
|
#define PET_TAUNT 12 // 0x0c - /pet taunt or Pet Window
|
||||||
#define PET_SLUMBER 17
|
#define PET_TAUNT_ON 13 // 0x0d - /pet taunt on
|
||||||
#define PET_NOCAST 18
|
#define PET_TAUNT_OFF 14 // 0x0e - /pet taunt off
|
||||||
#define PET_FOCUS 19
|
#define PET_HOLD 15 // 0x0f - /pet hold
|
||||||
#define PET_FOCUS_ON 25
|
#define PET_HOLD_ON 16 // 0x10 - /pet hold on
|
||||||
#define PET_FOCUS_OFF 26
|
#define PET_HOLD_OFF 17 // 0x11 - /pet hold off
|
||||||
#define PET_HOLD_ON 27
|
#define PET_SLUMBER 18 // 0x12 - What is this? - define not from client
|
||||||
#define PET_HOLD_OFF 28
|
// Guessing 19 and 20 are PET_SLUMBER_ON and PET_SLUMBER_OFF
|
||||||
|
#define PET_NOCAST 21 // 0x15 - /pet no cast
|
||||||
|
#define PET_NOCAST_ON 22 // 0x16 - Pet Window No Cast
|
||||||
|
#define PET_NOCAST_OFF 23 // 0x17 - Guessed
|
||||||
|
#define PET_FOCUS 24 // 0x18 - /pet focus
|
||||||
|
#define PET_FOCUS_ON 25 // 0x19 - /pet focus on
|
||||||
|
#define PET_FOCUS_OFF 26 // 0x1a - /pet focus off
|
||||||
|
#define PET_BACKOFF 28 // 0x1c - /pet back off
|
||||||
|
#define PET_GETLOST 29 // 0x1d - /pet get lost
|
||||||
|
|
||||||
class Mob;
|
class Mob;
|
||||||
struct NPCType;
|
struct NPCType;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user