This commit is contained in:
Trevius 2014-11-22 00:22:35 -06:00
commit d49426f763
5 changed files with 25 additions and 16 deletions

View File

@ -1,5 +1,9 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50) EQEMu Changelog (Started on Sept 24, 2003 15:50)
------------------------------------------------------- -------------------------------------------------------
== 11/22/2014 ==
Trevius: Grouping with Mercenaries is now considerably less buggy.
Trevius: Fixed an issue with Spell Globals related to high Character IDs.
== 11/19/2014 == == 11/19/2014 ==
Trevius: Mercenaries now Dismiss, Suspend, Unsuspend, and Die correctly. Trevius: Mercenaries now Dismiss, Suspend, Unsuspend, and Die correctly.

View File

@ -514,8 +514,8 @@ OP_LFGAppearance=0x0000
OP_LFGResponse=0x0000 OP_LFGResponse=0x0000
# Raid Opcodes # Raid Opcodes
OP_RaidInvite=0x1bd1 OP_RaidInvite=0x5fb2
OP_RaidUpdate=0x548e OP_RaidUpdate=0x1bd1
OP_RaidJoin=0x0000 OP_RaidJoin=0x0000
# Button-push commands # Button-push commands

View File

@ -3872,11 +3872,11 @@ void Client::SendOPTranslocateConfirm(Mob *Caster, uint16 SpellID) {
PendingTranslocateData.heading = m_pp.binds[0].heading; PendingTranslocateData.heading = m_pp.binds[0].heading;
} }
else { else {
ts->ZoneID = database.GetZoneID(Spell.teleport_zone); PendingTranslocateData.zone_id = ts->ZoneID = database.GetZoneID(Spell.teleport_zone);
PendingTranslocateData.instance_id = 0; PendingTranslocateData.instance_id = 0;
ts->y = Spell.base[0]; PendingTranslocateData.y = ts->y = Spell.base[0];
ts->x = Spell.base[1]; PendingTranslocateData.x = ts->x = Spell.base[1];
ts->z = Spell.base[2]; PendingTranslocateData.z = ts->z = Spell.base[2];
PendingTranslocateData.heading = 0.0; PendingTranslocateData.heading = 0.0;
} }

View File

@ -874,6 +874,7 @@ void SetConsumption(int32 in_hunger, int32 in_thirst);
void DropInst(const ItemInst* inst); void DropInst(const ItemInst* inst);
bool TrainDiscipline(uint32 itemid); bool TrainDiscipline(uint32 itemid);
void SendDisciplineUpdate(); void SendDisciplineUpdate();
void SendDisciplineTimer(uint32 timer_id, uint32 duration);
bool UseDiscipline(uint32 spell_id, uint32 target); bool UseDiscipline(uint32 spell_id, uint32 target);
bool CheckTitle(int titleset); bool CheckTitle(int titleset);

View File

@ -696,16 +696,7 @@ bool Client::UseDiscipline(uint32 spell_id, uint32 target) {
return true; return true;
} }
CastSpell(spell_id, target, DISCIPLINE_SPELL_SLOT, -1, -1, 0, -1, (uint32)DiscTimer, reduced_recast); SendDisciplineTimer(spells[spell_id].EndurTimerIndex, reduced_recast);
if(spells[spell_id].EndurTimerIndex < MAX_DISCIPLINE_TIMERS)
{
EQApplicationPacket *outapp = new EQApplicationPacket(OP_DisciplineTimer, sizeof(DisciplineTimer_Struct));
DisciplineTimer_Struct *dts = (DisciplineTimer_Struct *)outapp->pBuffer;
dts->TimerID = spells[spell_id].EndurTimerIndex;
dts->Duration = reduced_recast;
QueuePacket(outapp);
safe_delete(outapp);
}
} }
else else
{ {
@ -714,6 +705,19 @@ bool Client::UseDiscipline(uint32 spell_id, uint32 target) {
return(true); return(true);
} }
void Client::SendDisciplineTimer(uint32 timer_id, uint32 duration)
{
if (timer_id < MAX_DISCIPLINE_TIMERS)
{
EQApplicationPacket *outapp = new EQApplicationPacket(OP_DisciplineTimer, sizeof(DisciplineTimer_Struct));
DisciplineTimer_Struct *dts = (DisciplineTimer_Struct *)outapp->pBuffer;
dts->TimerID = timer_id;
dts->Duration = duration;
QueuePacket(outapp);
safe_delete(outapp);
}
}
void EntityList::AETaunt(Client* taunter, float range) void EntityList::AETaunt(Client* taunter, float range)
{ {
if (range == 0) if (range == 0)