summaryrefslogtreecommitdiff
path: root/src/being/being.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/being/being.cpp')
-rw-r--r--src/being/being.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp
index 399b3883c..5c89ba579 100644
--- a/src/being/being.cpp
+++ b/src/being/being.cpp
@@ -177,6 +177,7 @@ Being::Being(const int id, const Type type, const uint16_t subtype,
mPvpRank(0),
mNumber(100),
mLook(0),
+ mUsageCounter(1),
mHairColor(0),
mErased(false),
mEnemy(false),
@@ -3214,8 +3215,12 @@ void Being::addPet(const int id)
if (!actorManager || !config.getBoolValue("usepets"))
return;
- if (findChildPet(id))
+ Being *const pet = findChildPet(id);
+ if (pet)
+ {
+ pet->incUsage();
return;
+ }
Being *const being = actorManager->createBeing(
id, ActorSprite::PET, 0);
@@ -3252,10 +3257,13 @@ void Being::removePet(const int id)
Being *const pet = *it;
if (pet && pet->mId == id)
{
- pet->setOwner(nullptr);
- actorManager->erase(pet);
- mPets.erase(it);
- delete pet;
+ if (!pet->decUsage())
+ {
+ pet->setOwner(nullptr);
+ actorManager->erase(pet);
+ mPets.erase(it);
+ delete pet;
+ }
}
}
}