feat(TU31): Villagers turn into witches when struck by lightning

This commit is contained in:
DrPerkyLegit
2026-05-23 10:56:38 -04:00
parent f1d4882fe0
commit 7bf73ad13e
2 changed files with 18 additions and 1 deletions

View File

@@ -156,7 +156,7 @@ bool Villager::mobInteract(shared_ptr<Player> player)
shared_ptr<ItemInstance> item = player->inventory->getSelected();
bool holdingSpawnEgg = item != nullptr && item->id == Item::spawnEgg_Id;
if (!holdingSpawnEgg && isAlive() && !isTrading() && !isBaby())
if (!player->isSneaking() && !holdingSpawnEgg && isAlive() && !isTrading() && !isBaby())
{
if (!level->isClientSide)
{
@@ -775,3 +775,19 @@ wstring Villager::getDisplayName()
};
return app.GetString(name);
}
void Villager::thunderHit(const LightningBolt* lightningBolt)
{
if (level->isClientSide) return;
shared_ptr<Witch> witch = std::make_shared<Witch>(level);
witch->moveTo(x, y, z, yRot, xRot);
if (this->hasCustomName())
witch->setCustomName(this->getCustomName());
if (this->isPersistenceRequired())
witch->setPersistenceRequired();
level->addEntity(witch);
remove();
}

View File

@@ -147,4 +147,5 @@ public:
virtual shared_ptr<AgableMob> getBreedOffspring(shared_ptr<AgableMob> target);
virtual bool canBeLeashed();
virtual wstring getDisplayName();
virtual void thunderHit(const LightningBolt* lightningBolt);
};