diff --git a/common/item.h b/common/item.h index 9be660117..4159e5ba3 100644 --- a/common/item.h +++ b/common/item.h @@ -391,6 +391,8 @@ public: void SetActivated(bool activated) { m_activated = activated; } int8 GetEvolveLvl() const { return m_evolveLvl; } void SetScaling(bool v) { m_scaling = v; } + void SetTimestamp(uint32 v) { m_timestamp = v; } + uint32 GetTimestamp() { return m_timestamp; } void Initialize(SharedDatabase *db = nullptr); void ScaleItem(); @@ -435,6 +437,7 @@ protected: Item_Struct* m_scaledItem; EvolveInfo* m_evolveInfo; bool m_scaling; + uint32 m_timestamp; // UNIX timestamp (GMT) of expiration // // Items inside of this item (augs or contents); diff --git a/zone/spells.cpp b/zone/spells.cpp index 5205176a9..606ce1816 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -485,9 +485,9 @@ bool Mob::DoCastSpell(uint16 spell_id, uint16 target_id, uint16 slot, } // This needs a bit more work for saving timer to PP for zoning etc - if (IsClient() && item_slot) { + if (IsClient() && item_slot != INVALID_INDEX) { ItemInst *itm = CastToClient()->GetInv().GetItem(item_slot); - if (itm->GetItem()->RecastDelay) { + if (itm && itm->GetItem()->RecastDelay) { outapp = new EQApplicationPacket(OP_ItemRecastDelay, sizeof(ItemRecastDelay_Struct)); ItemRecastDelay_Struct *ird = (ItemRecastDelay_Struct *)outapp->pBuffer; ird->recast_delay = itm->GetItem()->RecastDelay;