diff --git a/ryzom/client/src/commands.cpp b/ryzom/client/src/commands.cpp index 00d2b9e4f..18f2eb779 100644 --- a/ryzom/client/src/commands.cpp +++ b/ryzom/client/src/commands.cpp @@ -408,6 +408,18 @@ NLMISC_COMMAND(afk, "Set the player as 'away from keyboard'","[]") return true; } +NLMISC_COMMAND(selfkill, "Kill the player ","") +{ + CBitMemStream out; + if(!GenericMsgHeaderMngr.pushNameToStream("COMMAND:SELFKILL", out)) + { + nlwarning("Unknown message name COMMAND:SELFKILL"); + return false; + } + NetMngr.push(out); + return true; +} + bool randomCheckCharset(std::string const& str) { std::string::const_iterator it, itEnd = str.end(); diff --git a/ryzom/client/src/interface_v3/action_handler_game.cpp b/ryzom/client/src/interface_v3/action_handler_game.cpp index f05ffb271..06a97671d 100644 --- a/ryzom/client/src/interface_v3/action_handler_game.cpp +++ b/ryzom/client/src/interface_v3/action_handler_game.cpp @@ -1095,6 +1095,20 @@ public: REGISTER_ACTION_HANDLER( CHandlerContextWebPage, "context_web_page"); +// *************************************************************************** +class CHandlerFullMap : public IActionHandler +{ +public: + void execute (CCtrlBase * /* pCaller */, const std::string &/* sParams */) + { + CInterfaceManager *pIM= CInterfaceManager::getInstance(); + + CLuaManager::getInstance().executeLuaScript("game:openFullMap()", true); + } +}; +REGISTER_ACTION_HANDLER( CHandlerFullMap, "fullmap"); + + // *************************************************************************** @@ -1958,7 +1972,7 @@ public: bool womanTitle = false; if (pChar != NULL) womanTitle = pChar->getGender() == GSGENDER::female; - + copyInout = STRING_MANAGER::CStringManagerClient::getTitleLocalizedName(CEntityCL::getTitleFromName(copyInout), womanTitle); // Sometimes translation contains another title @@ -2665,9 +2679,9 @@ class CAHAddShape : public IActionHandler instance.setPos(CVector((float)x, (float)y, (float)z)); instance.setRotQuat(dir.getRot()); } - + instance.setTransformMode(UTransformable::RotEuler); - + // if the shape is a particle system, additionnal parameters are user params UParticleSystemInstance psi; psi.cast (instance); @@ -3402,7 +3416,7 @@ class CHandlerGameConfigVREnable : public IActionHandler // VR_CONFIG CCtrlBaseButton *pBut = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(GAME_CONFIG_VR_ENABLE_BUTTON)); - if (pBut) + if (pBut) { // hide or show device list depending on enabled or not updateVRDevicesComboUI(pBut->getPushed()); @@ -3541,7 +3555,7 @@ class CHandlerGameConfigApply : public IActionHandler NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:AUTO_CHANNEL")->setValue32(pCS->getPushed()); CCtrlBaseButton *pBut = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(GAME_CONFIG_VR_ENABLE_BUTTON)); - if (pBut) + if (pBut) { // store the new config variables ClientCfg.VREnable = pBut->getPushed(); diff --git a/ryzom/client/src/interface_v3/action_handler_item.cpp b/ryzom/client/src/interface_v3/action_handler_item.cpp index 9bbf9fbc8..da7e95fd8 100644 --- a/ryzom/client/src/interface_v3/action_handler_item.cpp +++ b/ryzom/client/src/interface_v3/action_handler_item.cpp @@ -208,7 +208,7 @@ void CInterfaceItemEdition::CItemEditionWindow::begin() { if(_CurrItemSheet && !WindowName.empty()) { - + const CItemSheet *pIS = _CurrItemSheet->asItemSheet(); if ((pIS != NULL) && ITEMFAMILY::isTextCustomizable(pIS->Family) ) { @@ -342,7 +342,7 @@ void CInterfaceItemEdition::CItemEditionWindow::begin() // ******************************************************************************************** void CInterfaceItemEdition::CItemEditionWindow::end() { - + CDBCtrlSheet *pCSItem = _CurrItemSheet; std::string windowName = WindowName; if(pCSItem && !windowName.empty()) @@ -371,7 +371,7 @@ void CInterfaceItemEdition::CItemEditionWindow::end() editBoxShort->setActive(false); editShort->setActive(false); editBoxLarge->setActive(false); - editLarge->setActive(false); + editLarge->setActive(false); display->setActive(false); editButtons->setActive(false); closeButton->setActive(false); @@ -413,7 +413,7 @@ void CInterfaceItemEdition::CItemEditionWindow::validate() textValid = editLarge->getActive(); text = editBoxLarge->getInputString(); } - + if (textValid) { CBitMemStream out; @@ -1722,7 +1722,7 @@ void CItemMenuInBagInfoWaiter::infoReceived() void CItemMenuInBagInfoWaiter::infoValidated(CDBCtrlSheet* ctrlSheet) { CInterfaceManager *pIM = CInterfaceManager::getInstance(); - + // get the dialog stack CInterfaceGroup* pMenu = dynamic_cast( CWidgetManager::getInstance()->getElementFromId("ui:interface:item_menu_in_bag") ); if(!pMenu) return; @@ -1960,16 +1960,15 @@ class CHandlerItemMenuCheck : public IActionHandler for(i=0;isetActive(invId!=INVENTORIES::guild && - (uint)invId!=INVENTORIES::pet_animal+i && + pMoveToPa[i]->setActive((uint)invId!=INVENTORIES::pet_animal+i && invMngr.isInventoryPresent((INVENTORIES::TInventory)(INVENTORIES::pet_animal+i)) ); } if (pMoveToGuild) - pMoveToGuild->setActive(invId==INVENTORIES::bag && invMngr.isInventoryPresent(INVENTORIES::guild)); + pMoveToGuild->setActive(invId!=INVENTORIES::guild && invMngr.isInventoryPresent(INVENTORIES::guild)); if (pMoveToRoom) - pMoveToRoom->setActive(invId==INVENTORIES::bag && invMngr.isInventoryPresent(INVENTORIES::player_room)); + pMoveToRoom->setActive(invId!=INVENTORIES::player_room && invMngr.isInventoryPresent(INVENTORIES::player_room)); // std case: can drop / destroy if(pDrop) pDrop->setActive(invId!=INVENTORIES::guild); @@ -2037,7 +2036,7 @@ class CHandlerItemMenuCheck : public IActionHandler if (pMoveSubMenu) pMoveSubMenu->setActive(false); } - if (bIsLockedByOwner) + if (bIsLockedByOwner) { if (pLockUnlock) pLockUnlock->setHardText("uimUnlockItem"); // Cannot drop/destroy if locked by owner @@ -2050,7 +2049,8 @@ class CHandlerItemMenuCheck : public IActionHandler } // Only show lock menu item if inventory contains the info - if (pLockUnlock) pLockUnlock->setActive(pCS->canOwnerLock()); + if (invId!=INVENTORIES::guild) + if (pLockUnlock) pLockUnlock->setActive(pCS->canOwnerLock()); // **** Gray Entries @@ -2207,7 +2207,7 @@ class CHandlerItemMenuBaseCheck : public IActionHandler CViewTextMenu *pDestroy = dynamic_cast(pMenu->getView("destroy")); CViewTextMenu *pLockUnlock = dynamic_cast(pMenu->getView("lockunlock")); - if (pCS->getLockedByOwner()) + if (pCS->getLockedByOwner()) { pLockUnlock->setHardText("uimUnlockItem"); // Cannot destroy if locked by owner @@ -2364,7 +2364,7 @@ class CHandlerItemTextDisplay : public IActionHandler std::string const& windowName = sParams; CInterfaceManager *pIM = CInterfaceManager::getInstance(); CDBCtrlSheet *pCSItem = dynamic_cast(CWidgetManager::getInstance()->getCtrlLaunchingModal()); - if (pCSItem == NULL || windowName.empty()) + if (pCSItem == NULL || windowName.empty()) return; const CItemSheet *pIS = pCSItem->asItemSheet(); @@ -2385,7 +2385,7 @@ class CHandlerItemTextEdition : public IActionHandler std::string const& windowName = sParams; CInterfaceManager *pIM = CInterfaceManager::getInstance(); CDBCtrlSheet *pCSItem = dynamic_cast(CWidgetManager::getInstance()->getCtrlLaunchingModal()); - if (pCSItem == NULL || windowName.empty()) + if (pCSItem == NULL || windowName.empty()) return; CInterfaceItemEdition::getInstance()->setCurrWindow(pCSItem, windowName, true); diff --git a/ryzom/client/src/interface_v3/action_phrase_faber.cpp b/ryzom/client/src/interface_v3/action_phrase_faber.cpp index 7625be010..05e5735e1 100644 --- a/ryzom/client/src/interface_v3/action_phrase_faber.cpp +++ b/ryzom/client/src/interface_v3/action_phrase_faber.cpp @@ -50,6 +50,10 @@ using namespace NLMISC; // *************************************************************************** const std::string FaberPlanDB= "UI:PHRASE:FABER:FABER_PLAN:SHEET"; +const std::string FaberPlanHpBuffDB= "UI:PHRASE:FABER:FABER_PLAN:HP_BUFF"; +const std::string FaberPlanSapBuffDB= "UI:PHRASE:FABER:FABER_PLAN:SAP_BUFF"; +const std::string FaberPlanStaBuffDB= "UI:PHRASE:FABER:FABER_PLAN:STA_BUFF"; +const std::string FaberPlanFocusBuffDB= "UI:PHRASE:FABER:FABER_PLAN:FOCUS_BUFF"; const std::string MPFaberDB= "UI:PHRASE:FABER:MP_BUILD"; const std::string MPSelectionDB= "UI:PHRASE:FABER:MP_SELECT"; const std::string MPQuantityDb= "UI:PHRASE:FABER:MP_QUANTITY"; @@ -170,6 +174,16 @@ void CActionPhraseFaber::launchFaberCastWindow(sint32 memoryLine, uint memoryIn if(node) node->setValue32(0); + // Reset buff values + node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanHpBuffDB, false); + if (node) node->setValue32(0); + node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanSapBuffDB, false); + if (node) node->setValue32(0); + node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanStaBuffDB, false); + if (node) node->setValue32(0); + node = NLGUI::CDBManager::getInstance()->getDbProp(FaberPlanFocusBuffDB, false); + if (node) node->setValue32(0); + // Reset the result item node= NLGUI::CDBManager::getInstance()->getDbProp(ItemResultSheetDB, false); if(node) @@ -1565,6 +1579,14 @@ void CActionPhraseFaber::updateItemResult() uint phraseSlot= pPM->getMemorizedPhrase(_ExecuteFromMemoryLine, _ExecuteFromMemoryIndex); const CSPhraseCom &phrase= pPM->getPhrase(phraseSlot); uint32 recommendedPropId= pBM->getBrickPropId("cr_recommended"); + uint32 crHp = pBM->getBrickPropId("cr_hp"); + uint32 crSap = pBM->getBrickPropId("cr_sap"); + uint32 crSta = pBM->getBrickPropId("cr_sta"); + uint32 crFocus = pBM->getBrickPropId("cr_focus"); + sint32 hpBuff = 0; + sint32 sapBuff = 0; + sint32 staBuff = 0; + sint32 focusBuff = 0; for(i=0;igetBrick(phrase.Bricks[i]); @@ -1578,10 +1600,30 @@ void CActionPhraseFaber::updateItemResult() // minimze the level minLevel= min(minLevel, sint32(brick->Properties[j].Value)); } + + if (brick->Properties[j].PropId == crHp) + hpBuff = sint32(brick->Properties[j].Value); + if (brick->Properties[j].PropId == crSap) + sapBuff = sint32(brick->Properties[j].Value); + if (brick->Properties[j].PropId == crSta) + staBuff = sint32(brick->Properties[j].Value); + if (brick->Properties[j].PropId == crFocus) + focusBuff = sint32(brick->Properties[j].Value); } } } + { + NLGUI::CDBManager *cdb = NLGUI::CDBManager::getInstance(); + NLMISC::CCDBNodeLeaf *node = cdb->getDbProp(FaberPlanHpBuffDB, false); + if (node) node->setValue32(hpBuff); + node = cdb->getDbProp(FaberPlanSapBuffDB, false); + if (node) node->setValue32(sapBuff); + node = cdb->getDbProp(FaberPlanStaBuffDB, false); + if (node) node->setValue32(staBuff); + node = cdb->getDbProp(FaberPlanFocusBuffDB, false); + if (node) node->setValue32(focusBuff); + } // **** Parse all MPs setuped, to compute level and stats uint totalItemPartMPReq= 0; diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp index 599e99716..0b8cda2ee 100644 --- a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp +++ b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp @@ -2534,7 +2534,8 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti // there is max 4 icons sint32 hArea = (hSheet / 4); sint32 xIcon = x; - sint32 yIcon = y; + // move buff icons up a row, quantity text is displayed on bottom-left corner + sint32 yIcon = y + hArea; for (uint i = 0; i < _BuffIcons.size(); ++i) { sint32 wIcon = _BuffIcons[i].IconW; diff --git a/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp b/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp index 4c21fee47..b6dde9379 100644 --- a/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp +++ b/ryzom/client/src/interface_v3/interface_expr_user_fct_game.cpp @@ -799,7 +799,11 @@ static DECLARE_INTERFACE_USER_FCT(getAnimalInventoryStateText) // According to server status, change the inventory text uint status= (uint)args[0].getInteger(); - if(ANIMAL_STATUS::isInStable((ANIMAL_STATUS::EAnimalStatus)status)) + if(ANIMAL_STATUS::isInBag((ANIMAL_STATUS::EAnimalStatus)status)) + { + result.setString("uiAnimalInBag"); + } + else if(ANIMAL_STATUS::isInStable((ANIMAL_STATUS::EAnimalStatus)status)) { result.setString("uiAnimalInStable"); }