void BedItem::wakeUp() { if(!house) return; if(sleeper) { if(Player* player = g_game.getPlayerByGuidEx(sleeper)) { regeneratePlayer(player); if(player->isVirtual()) { IOLoginData::getInstance()->savePlayer(player); delete player; } else g_game.addCreatureHealth(player); } } Beds::getInstance().setBedSleeper(NULL, sleeper); internalRemoveSleeper(); BedItem* nextBedItem = getNextBedItem(); if(nextBedItem) nextBedItem->internalRemoveSleeper(); updateAppearance(NULL); if(nextBedItem) nextBedItem->updateAppearance(NULL); }
void BedItem::wakeUp(Player* player) { // avoid crashes if (!house) { return; } if (sleeperGUID != 0) { if (!player) { std::string name; if (IOLoginData::getInstance()->getNameByGuid(sleeperGUID, name)) { Player* _player = new Player(name, NULL); if (IOLoginData::getInstance()->loadPlayer(_player, name)) { regeneratePlayer(_player); IOLoginData::getInstance()->savePlayer(_player); } delete _player; _player = NULL; } } else { regeneratePlayer(player); g_game.addCreatureHealth(player); } } // update the BedSleepersMap Beds::getInstance().setBedSleeper(NULL, sleeperGUID); BedItem* nextBedItem = getNextBedItem(); // unset sleep info internalRemoveSleeper(); if (nextBedItem) { nextBedItem->internalRemoveSleeper(); } // change self and partner's appearance updateAppearance(NULL); if (nextBedItem) { nextBedItem->updateAppearance(NULL); } }
void BedItem::wakeUp(Player* player) { // avoid crashes if (!house) { return; } if (sleeperGUID != 0) { if (!player) { Player _player(nullptr); if (IOLoginData::loadPlayerById(&_player, sleeperGUID)) { regeneratePlayer(&_player); IOLoginData::savePlayer(&_player); } } else { regeneratePlayer(player); g_game.addCreatureHealth(player); } } // update the BedSleepersMap Beds::getInstance().setBedSleeper(nullptr, sleeperGUID); BedItem* nextBedItem = getNextBedItem(); // unset sleep info internalRemoveSleeper(); if (nextBedItem) { nextBedItem->internalRemoveSleeper(); } // change self and partner's appearance updateAppearance(nullptr); if (nextBedItem) { nextBedItem->updateAppearance(nullptr); } }