bool CPetControl::checkNode(const CString &name) { CGameManager *gameManager = getGameManager(); if (!gameManager) return true; if (name == "NULL") return false; CViewItem *view = gameManager->getView(); if (!view) return true; CNodeItem *node = view->findNode(); if (!node) return true; CString viewName = view->getName(); CString nodeName = node->getName(); CRoomItem *room = getGameManager()->getRoom(); if (room) { CString roomName = room->getName(); CString newNode; if (roomName == "1stClassRestaurant") { } else if (nodeName == "Lobby Node") { nodeName = "Node 1"; } else if (nodeName == "Entrance Node") { nodeName = "Node 2"; } else if (nodeName == "MaitreD Node") { nodeName = "Node 3"; } else if (nodeName == "Scraliontis Table Standing Node") { nodeName = "Node 4"; } else if (nodeName == "Pellerator Node") { nodeName = "Node 5"; } else if (nodeName == "SUB Node") { nodeName = "Node 6"; } else if (nodeName == "Phonograph Node") { nodeName = "Node 7"; } else if (nodeName == "Scraliontis Table Seated Node") { nodeName = "Node 8"; } if (roomName == "MusicRoom") { if (nodeName == "Musical Instruments") nodeName = "Node 1"; if (nodeName == "Phonograph Node") nodeName = "Node 2"; } } CString str = CString::format("%s.%s", nodeName.c_str(), viewName.c_str()); str = str.right(5); str.toLowercase(); CString nameLower = name; nameLower.toLowercase(); return nameLower.contains(str); }
bool CPetControl::isDoorOrBellbotPresent() const { CGameManager *gameManager = getGameManager(); if (!gameManager) return false; CViewItem *view = gameManager->getView(); if (!view) return false; for (CTreeItem *treeItem = view->getFirstChild(); treeItem; treeItem = treeItem->scan(view)) { CString name = treeItem->getName(); if (dynamic_cast<CGameObject *>(treeItem) && (name.contains("Doorbot") || name.contains("BellBot"))) return true; } return false; }
bool CPetControl::isBotInView(const CString &name) const { CGameManager *gameManager = getGameManager(); if (!gameManager) return false; CViewItem *view = gameManager->getView(); if (!view) return false; // Iterate to find NPC for (CTreeItem *child = view->getFirstChild(); child; child = child->scan(view)) { CGameObject *gameObject = dynamic_cast<CGameObject *>(child); if (gameObject) { if (!gameObject->getName().compareToIgnoreCase(name)) return true; } } return false; }
bool CPetControl::dismissBot(const CString &name) { CGameManager *gameManager = getGameManager(); if (!gameManager) return false; CViewItem *view = gameManager->getView(); if (!view) return false; bool result = false; CDismissBotMsg dismissMsg; for (CTreeItem *treeItem = view->getFirstChild(); treeItem; treeItem = treeItem->scan(view)) { if (!treeItem->getName().compareToIgnoreCase(name)) dismissMsg.execute(treeItem); else result = true; } return result; }