From 093728dcf989f6c20d4bd4e0da0b43876fe64e26 Mon Sep 17 00:00:00 2001 From: kervala Date: Sat, 14 Nov 2015 19:29:43 +0100 Subject: [PATCH] Merge with develop --- code/nel/include/nel/gui/lua_object.h | 3 + code/nel/src/gui/lua_object.cpp | 42 +++++ code/nel/src/net/callback_net_base.cpp | 2 +- code/nel/src/pacs/global_retriever.cpp | 2 +- code/ryzom/client/src/connection.cpp | 4 +- code/ryzom/client/src/cursor_functions.cpp | 2 +- code/ryzom/client/src/debug_client.cpp | 4 +- .../client/src/interface_v3/lua_ihm_ryzom.cpp | 14 +- code/ryzom/client/src/login.cpp | 2 +- .../client/src/r2/displayer_visual_entity.cpp | 2 +- .../ryzom/client/src/session_browser_impl.cpp | 109 ++++++------- code/ryzom/client/src/user_entity.h | 2 +- code/ryzom/common/src/game_share/object.cpp | 9 +- .../src/game_share/scenario_entry_points.cpp | 2 +- .../ryzom/tools/translation/translated/fr.uxt | 148 +++++++++--------- 15 files changed, 197 insertions(+), 150 deletions(-) diff --git a/code/nel/include/nel/gui/lua_object.h b/code/nel/include/nel/gui/lua_object.h index 4ea052ef7..1d3b0d64c 100644 --- a/code/nel/include/nel/gui/lua_object.h +++ b/code/nel/include/nel/gui/lua_object.h @@ -125,6 +125,9 @@ namespace NLGUI void setValue(const char *key, bool value) throw(ELuaNotATable); void setValue(const char *key, TLuaWrappedFunction value) throw(ELuaNotATable); void setValue(const char *key, double value) throw(ELuaNotATable); + void setValue(const char *key, uint32 value) throw(ELuaNotATable); + void setValue(const char *key, sint32 value) throw(ELuaNotATable); + void setValue(const char *key, sint64 value) throw(ELuaNotATable); void setValue(const std::string &key, const std::string &value) throw(ELuaNotATable) { setValue(key.c_str(), value); } void setNil(const char *key) throw(ELuaNotATable); void setNil(const std::string &key) throw(ELuaNotATable) { setNil(key.c_str()); } diff --git a/code/nel/src/gui/lua_object.cpp b/code/nel/src/gui/lua_object.cpp index 5b44f32e2..622157ed9 100644 --- a/code/nel/src/gui/lua_object.cpp +++ b/code/nel/src/gui/lua_object.cpp @@ -389,6 +389,48 @@ namespace NLGUI _LuaState->pop(); } + // ************************************************* + void CLuaObject::setValue(const char *key, uint32 value) throw(ELuaNotATable) + { + nlassert(key); + nlassert(isValid()); + if (!isTable()) throw ELuaNotATable(NLMISC::toString("Trying to set a value '%u' at key %s on object '%s' of type %s (not a table).", value, key, getId().c_str(), getTypename())); + CLuaStackChecker lsc(_LuaState); + push(); + _LuaState->push(key); + _LuaState->push(value); + _LuaState->setTable(-3); + _LuaState->pop(); + } + + // ************************************************* + void CLuaObject::setValue(const char *key, sint32 value) throw(ELuaNotATable) + { + nlassert(key); + nlassert(isValid()); + if (!isTable()) throw ELuaNotATable(NLMISC::toString("Trying to set a value '%d' at key %s on object '%s' of type %s (not a table).", value, key, getId().c_str(), getTypename())); + CLuaStackChecker lsc(_LuaState); + push(); + _LuaState->push(key); + _LuaState->push(value); + _LuaState->setTable(-3); + _LuaState->pop(); + } + + // ************************************************* + void CLuaObject::setValue(const char *key, sint64 value) throw(ELuaNotATable) + { + nlassert(key); + nlassert(isValid()); + if (!isTable()) throw ELuaNotATable(NLMISC::toString("Trying to set a value '%d"NL_I64"' at key %s on object '%s' of type %s (not a table).", value, key, getId().c_str(), getTypename())); + CLuaStackChecker lsc(_LuaState); + push(); + _LuaState->push(key); + _LuaState->push(value); + _LuaState->setTable(-3); + _LuaState->pop(); + } + // ************************************************* void CLuaObject::eraseValue(const char *key) throw(ELuaNotATable) { diff --git a/code/nel/src/net/callback_net_base.cpp b/code/nel/src/net/callback_net_base.cpp index 661e47336..7a117f640 100644 --- a/code/nel/src/net/callback_net_base.cpp +++ b/code/nel/src/net/callback_net_base.cpp @@ -114,7 +114,7 @@ void *CCallbackNetBase::getUserData() */ void CCallbackNetBase::addCallbackArray (const TCallbackItem *callbackarray, sint arraysize) { - if (arraysize == 1 && callbackarray[0].Callback == NULL && string("") == callbackarray[0].Key) + if (arraysize == 1 && callbackarray[0].Callback == NULL && strlen(callbackarray[0].Key) == 0) { // it's an empty array, ignore it return; diff --git a/code/nel/src/pacs/global_retriever.cpp b/code/nel/src/pacs/global_retriever.cpp index 0b8d355df..27b32fbf1 100644 --- a/code/nel/src/pacs/global_retriever.cpp +++ b/code/nel/src/pacs/global_retriever.cpp @@ -752,7 +752,7 @@ sint32 NLPACS::CGlobalRetriever::getIdentifier(const string &id) const const string &NLPACS::CGlobalRetriever::getIdentifier(const NLPACS::UGlobalPosition &position) const { - static const string nullString = string(""); + static const string nullString; if (position.InstanceId == -1) return nullString; diff --git a/code/ryzom/client/src/connection.cpp b/code/ryzom/client/src/connection.cpp index 285bbfab8..a2d139294 100644 --- a/code/ryzom/client/src/connection.cpp +++ b/code/ryzom/client/src/connection.cpp @@ -2682,7 +2682,7 @@ class CAHScenarioControl : public IActionHandler // init current scenario name and parameters if(!R2::getEditor().isInitialized()) { - ScenarioFileName = string(""); + ScenarioFileName.clear(); // empty scenario CInterfaceElement *result = scenarioWnd->findFromShortId(string("scenario_value_text")); @@ -2950,7 +2950,7 @@ class CAHLoadScenario : public IActionHandler } // description - string description = string(""); + string description; result = scenarioWnd->findFromShortId(string("edit_small_description")); if(result) { diff --git a/code/ryzom/client/src/cursor_functions.cpp b/code/ryzom/client/src/cursor_functions.cpp index 8c3bc3a32..f318784a6 100644 --- a/code/ryzom/client/src/cursor_functions.cpp +++ b/code/ryzom/client/src/cursor_functions.cpp @@ -572,7 +572,7 @@ void checkUnderCursor() selectedInstance.getMaterial(j).setShininess( 10.0f ); } selectedInstance = noSelectedInstance; - selectedInstanceURL = string(""); + selectedInstanceURL.clear(); } } SlotUnderCursor = CLFECOMMON::INVALID_SLOT; diff --git a/code/ryzom/client/src/debug_client.cpp b/code/ryzom/client/src/debug_client.cpp index 0af4207ae..79f8ae4a4 100644 --- a/code/ryzom/client/src/debug_client.cpp +++ b/code/ryzom/client/src/debug_client.cpp @@ -36,7 +36,7 @@ #include "user_entity.h" #include "view.h" #include "login.h" -#include "game_share/ryzom_version.h" +#include "user_agent.h" #include "interface_v3/interface_manager.h" #include "interface_v3/sphrase_manager.h" #include "entities.h" @@ -526,7 +526,7 @@ string getDebugInformation() str += toString("ConnectState: %s\n", NetMngr.getConnectionStateCStr()); str += toString("LocalAddress: %s\n", NetMngr.getAddress().asString().c_str()); str += toString("Language: %s\n", CI18N::getCurrentLanguageName().toString().c_str()); - str += toString("ClientVersion: "RYZOM_VERSION"\n"); + str += toString("ClientVersion: %s\n", getDebugVersion().c_str()); if (ClientCfg.R2Mode) { str += toString("PatchVersion: %s\n", R2ServerVersion.c_str()); diff --git a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp index 34339e53a..87ee0c44d 100644 --- a/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp +++ b/code/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp @@ -1427,7 +1427,7 @@ int CLuaIHMRyzom::getClientCfgVar(CLuaState &ls) } for(uint i = 0; iIntValues.size(); i++) { - result.setValue(toString(count).c_str(), (double)v->IntValues[i]); + result.setValue(toString(count).c_str(), (sint32)v->IntValues[i]); count++; } for(uint i = 0; iRealValues.size(); i++) @@ -1752,10 +1752,10 @@ int CLuaIHMRyzom::getCompleteIslands(CLuaState &ls) ls.newTable(); CLuaObject islandTable(ls); islandTable.setValue("continent", island->Continent); - islandTable.setValue("xmin", (double)island->XMin); - islandTable.setValue("ymin", (double)island->YMin); - islandTable.setValue("xmax", (double)island->XMax); - islandTable.setValue("ymax", (double)island->YMax); + islandTable.setValue("xmin", island->XMin); + islandTable.setValue("ymin", island->YMin); + islandTable.setValue("xmax", island->XMax); + islandTable.setValue("ymax", island->YMax); ls.newTable(); CLuaObject entrypointsTable(ls); @@ -1765,8 +1765,8 @@ int CLuaIHMRyzom::getCompleteIslands(CLuaState &ls) const CScenarioEntryPoints::CShortEntryPoint & entryPoint = island->EntryPoints[e]; ls.newTable(); CLuaObject entrypointTable(ls); - entrypointTable.setValue("x", (double)entryPoint.X); - entrypointTable.setValue("y", (double)entryPoint.Y); + entrypointTable.setValue("x", entryPoint.X); + entrypointTable.setValue("y", entryPoint.Y); entrypointsTable.setValue(entryPoint.Location, entrypointTable); } diff --git a/code/ryzom/client/src/login.cpp b/code/ryzom/client/src/login.cpp index 153b7ba6a..4830ae8d5 100644 --- a/code/ryzom/client/src/login.cpp +++ b/code/ryzom/client/src/login.cpp @@ -2469,7 +2469,7 @@ class CAHCreateAccountRules : public IActionHandler if(Params==rules[i]) { if(rulesGr) - rulesGr->setActive(text->getText() != ucstring("")); + rulesGr->setActive(!text->getText().empty()); } } } diff --git a/code/ryzom/client/src/r2/displayer_visual_entity.cpp b/code/ryzom/client/src/r2/displayer_visual_entity.cpp index 5bc8638f0..2e9eeef7a 100644 --- a/code/ryzom/client/src/r2/displayer_visual_entity.cpp +++ b/code/ryzom/client/src/r2/displayer_visual_entity.cpp @@ -968,7 +968,7 @@ void CDisplayerVisualEntity::updateName() ucName = CI18N::get("uiR2EDNoName"); } - std::string actName=std::string(""); + std::string actName; // If entity is in an additionnal act, then postfix its name with the name of the act if (getDisplayedInstance()->getParentAct() != getEditor().getBaseAct()) diff --git a/code/ryzom/client/src/session_browser_impl.cpp b/code/ryzom/client/src/session_browser_impl.cpp index c5e0fdcc3..9e82a6d15 100644 --- a/code/ryzom/client/src/session_browser_impl.cpp +++ b/code/ryzom/client/src/session_browser_impl.cpp @@ -65,6 +65,7 @@ void CSessionBrowserImpl::init(CLuaState *ls) game.setValue("checkRingAccess", luaCheckRingAccess); game.setValue("getFileHeader", luaGetFileHeader); } + if (!ClientCfg.Local) { CSessionBrowserImpl::getInstance().setAuthInfo(getCookie()); @@ -76,8 +77,8 @@ void CSessionBrowserImpl::init(CLuaState *ls) _LastAuthorRating = 0; _LastAMRating = 0; _LastMasterlessRating = 0; - _LastRingPoints = string(""); - _LastMaxRingPoints = string(""); + _LastRingPoints.clear(); + _LastMaxRingPoints.clear(); } @@ -373,34 +374,36 @@ void CSessionBrowserImpl::fill(const std::vector &session const RSMGR::TSessionDesc &sd = sessions[k]; _Lua->newTable(); CLuaObject session(*_Lua); - session.setValue("Id", (double) sd.getSessionId().asInt()); - session.setValue("Owner", sd.getOwnerName()); - session.setValue("Title", sd.getTitle()); - session.setValue("Desc", sd.getDescription()); - session.setValue("Level", (double) sd.getSessionLevel().getValue()); - session.setValue("Language", sd.getLanguage()); + session.setValue("Id", sd.getSessionId().asInt()); + session.setValue("Owner", sd.getOwnerName()); + session.setValue("Title", sd.getTitle()); + session.setValue("Desc", sd.getDescription()); + session.setValue("Level", (uint32) sd.getSessionLevel().getValue()); + session.setValue("Language", sd.getLanguage()); + uint flags = (sd.getAnimMode().getValue() == RSMGR::TAnimMode::am_dm ? (uint) 1 : 0) | (sd.getRequesterCharInvited() ? (uint) 2 : 0); if(sd.getRequesterCharKicked()) flags = (uint) 4; - session.setValue("Flags", (double) flags); - session.setValue("PlayerCount", (double) sd.getNbConnectedPlayer()); - session.setValue("AllowFreeTrial", (double) sd.getAllowFreeTrial()); - session.setValue("NbRating", (double) sd.getNbRating()); - session.setValue("RateFun", (double) sd.getRateFun()); - session.setValue("RateDifficulty", (double) sd.getRateDifficulty()); - session.setValue("RateAccessibility", (double) sd.getRateAccessibility()); - session.setValue("RateOriginality", (double) sd.getRateOriginality()); - session.setValue("RateDirection", (double) sd.getRateDirection()); + session.setValue("Flags", flags); + session.setValue("PlayerCount", sd.getNbConnectedPlayer()); + session.setValue("AllowFreeTrial", sd.getAllowFreeTrial()); - session.setValue("ScenarioRRPTotal", (double) sd.getScenarioRRPTotal()); + session.setValue("NbRating", sd.getNbRating()); + session.setValue("RateFun", sd.getRateFun()); + session.setValue("RateDifficulty", sd.getRateDifficulty()); + session.setValue("RateAccessibility", sd.getRateAccessibility()); + session.setValue("RateOriginality", sd.getRateOriginality()); + session.setValue("RateDirection", sd.getRateDirection()); - session.setValue("AuthorRating", (double) _LastAuthorRating); + session.setValue("ScenarioRRPTotal", sd.getScenarioRRPTotal()); + + session.setValue("AuthorRating", _LastAuthorRating); if(sd.getAnimMode().getValue() == RSMGR::TAnimMode::am_dm) - session.setValue("OwnerRating", (double) _LastAMRating); + session.setValue("OwnerRating", _LastAMRating); else - session.setValue("OwnerRating", (double) _LastMasterlessRating); + session.setValue("OwnerRating", _LastMasterlessRating); // calculate the difference between local time and gmt time_t rawtime; @@ -418,9 +421,9 @@ void CSessionBrowserImpl::fill(const std::vector &session // convert GMT time value from server to local time time_t adjustedTime= sd.getLaunchDate() + localTime - gmtTime; - session.setValue("LaunchDate", (double) adjustedTime); + session.setValue("LaunchDate", (sint64)adjustedTime); - session.setValue("ScenarioType", (double) sd.getOrientation().getValue()); + session.setValue("ScenarioType", (uint32)sd.getOrientation().getValue()); session.push(); _Lua->rawSetI(-2, k +1); // set in session list } @@ -442,12 +445,12 @@ void CSessionBrowserImpl::playerRatingFill(bool scenarioRated, uint32 rateFun, u _Lua->newTable(); CLuaObject scores(*_Lua); - scores.setValue("ScenarioRated", (double) scenarioRated); - scores.setValue("RateFun", (double) rateFun); - scores.setValue("RateDifficulty", (double) rateDifficulty); - scores.setValue("RateAccessibility", (double) rateAccessibility); - scores.setValue("RateOriginality", (double) rateOriginality); - scores.setValue("RateDirection", (double) rateDirection); + scores.setValue("ScenarioRated", scenarioRated); + scores.setValue("RateFun", rateFun); + scores.setValue("RateDifficulty", rateDifficulty); + scores.setValue("RateAccessibility", rateAccessibility); + scores.setValue("RateOriginality", rateOriginality); + scores.setValue("RateDirection", rateDirection); scores.push(); @@ -469,13 +472,13 @@ void CSessionBrowserImpl::averageScoresFill(bool scenarioRated, uint32 rateFun, _Lua->newTable(); CLuaObject scores(*_Lua); - scores.setValue("ScenarioRated", (double) scenarioRated); - scores.setValue("RateFun", (double) rateFun); - scores.setValue("RateDifficulty", (double) rateDifficulty); - scores.setValue("RateAccessibility", (double) rateAccessibility); - scores.setValue("RateOriginality", (double) rateOriginality); - scores.setValue("RateDirection", (double) rateDirection); - scores.setValue("RRPTotal", (double) rrpTotal); + scores.setValue("ScenarioRated", scenarioRated); + scores.setValue("RateFun", rateFun); + scores.setValue("RateDifficulty", rateDifficulty); + scores.setValue("RateAccessibility", rateAccessibility); + scores.setValue("RateOriginality", rateOriginality); + scores.setValue("RateDirection", rateDirection); + scores.setValue("RRPTotal", rrpTotal); scores.push(); @@ -560,13 +563,13 @@ void CSessionBrowserImpl::on_scenarioAverageScores(NLNET::TSockId /* from */, bo _Lua->newTable(); CLuaObject scores(*_Lua); - scores.setValue("ScenarioRated", (double) scenarioRated); - scores.setValue("RateFun", (double) rateFun); - scores.setValue("RateDifficulty", (double) rateDifficulty); - scores.setValue("RateAccessibility", (double) rateAccessibility); - scores.setValue("RateOriginality", (double) rateOriginality); - scores.setValue("RateDirection", (double) rateDirection); - scores.setValue("RRPTotal", (double) rrpTotal); + scores.setValue("ScenarioRated", scenarioRated); + scores.setValue("RateFun", rateFun); + scores.setValue("RateDifficulty", rateDifficulty); + scores.setValue("RateAccessibility", rateAccessibility); + scores.setValue("RateOriginality", rateOriginality); + scores.setValue("RateDirection", rateDirection); + scores.setValue("RRPTotal", rrpTotal); scores.push(); @@ -612,11 +615,11 @@ void CSessionBrowserImpl::charsFill(const std::vector &chars { _Lua->newTable(); CLuaObject luaChar(*_Lua); - luaChar.setValue("Id", (double) cd.getCharId()); + luaChar.setValue("Id", cd.getCharId()); luaChar.setValue("Char", cd.getCharName()); luaChar.setValue("Guild", cd.getGuildName()); - luaChar.setValue("Race", (double) cd.getRace().getValue()); - luaChar.setValue("Religion", (double) cd.getCult().getValue()); + luaChar.setValue("Race", (uint32) cd.getRace().getValue()); + luaChar.setValue("Religion", (uint32) cd.getCult().getValue()); string shardName = toString(cd.getShardId()); for(uint l = 0; l < Mainlands.size(); ++l) @@ -630,7 +633,7 @@ void CSessionBrowserImpl::charsFill(const std::vector &chars luaChar.setValue("Shard", shardName); // note: we do 'level-1' because the TSessionLevel enum starts at 1 - luaChar.setValue("Level", (double) (cd.getLevel().getValue()-1)); + luaChar.setValue("Level", (uint32) (cd.getLevel().getValue()-1)); /* uint32 flags = 0; if (cd.getConnected()) { flags += 1; } @@ -639,7 +642,7 @@ void CSessionBrowserImpl::charsFill(const std::vector &chars uint32 flags = cd.getConnected(); if (cd.getKicked()){ flags = 2; } - luaChar.setValue("Flags", (double) flags); + luaChar.setValue("Flags", flags); luaChar.push(); _Lua->rawSetI(-2, k +1); // set in chars list } @@ -655,14 +658,14 @@ void CSessionBrowserImpl::charsFill(const std::vector &chars // **************************************************************************** -inline double ecoRingPoints(const std::string & ecoPoints, const char * c) +inline uint32 ecoRingPoints(const std::string & ecoPoints, const char * c) { std::string::size_type cPlace = ecoPoints.find(c); if(cPlace==string::npos) return 0; std::string::size_type sepPlace = ecoPoints.find(":", cPlace); std::string points = ecoPoints.substr(cPlace+1, sepPlace); - double ret; + uint32 ret; fromString(points, ret); return ret; } @@ -678,9 +681,9 @@ void CSessionBrowserImpl::ringStatsFill() CLuaObject luaRingPoints(*_Lua); - luaRingPoints.setValue("AuthorRating", (double) _LastAuthorRating); - luaRingPoints.setValue("AMRating", (double) _LastAMRating); - luaRingPoints.setValue("MasterlessRating", (double) _LastMasterlessRating); + luaRingPoints.setValue("AuthorRating", _LastAuthorRating); + luaRingPoints.setValue("AMRating", _LastAMRating); + luaRingPoints.setValue("MasterlessRating", _LastMasterlessRating); luaRingPoints.setValue("MaxBasicRingPoints", ecoRingPoints(_LastMaxRingPoints, "A")); luaRingPoints.setValue("BasicRingPoints", ecoRingPoints(_LastRingPoints, "A")); diff --git a/code/ryzom/client/src/user_entity.h b/code/ryzom/client/src/user_entity.h index ffcdc42e5..21b967e8a 100644 --- a/code/ryzom/client/src/user_entity.h +++ b/code/ryzom/client/src/user_entity.h @@ -479,7 +479,7 @@ public: ucstring getLoginName() { - if (_LoginName == ucstring("")) + if (_LoginName.empty()) _LoginName = getDisplayName(); return _LoginName; diff --git a/code/ryzom/common/src/game_share/object.cpp b/code/ryzom/common/src/game_share/object.cpp index a89245ad1..0505a8b35 100644 --- a/code/ryzom/common/src/game_share/object.cpp +++ b/code/ryzom/common/src/game_share/object.cpp @@ -856,11 +856,10 @@ bool CObjectNumber::equal(const CObject* other) const //H_AUTO(R2_CObjectNumber_equal) if (!other || !other->isNumber()) return false; double otherValue = other->toNumber(); - if (_Value == otherValue ) return true; - /* - TODO: fabs + epsilon trick - */ - return false; + if (_Value == otherValue) return true; + + // if difference between 2 values less than epsilon, we consider they are equals + return fabs(_Value - otherValue) <= std::numeric_limits::epsilon(); } diff --git a/code/ryzom/common/src/game_share/scenario_entry_points.cpp b/code/ryzom/common/src/game_share/scenario_entry_points.cpp index e32778089..b1e9043d9 100644 --- a/code/ryzom/common/src/game_share/scenario_entry_points.cpp +++ b/code/ryzom/common/src/game_share/scenario_entry_points.cpp @@ -372,7 +372,7 @@ void CScenarioEntryPoints::loadFromXMLFile() //entry points and package TShortEntryPoints entryPoints; - std::string package = std::string(""); + std::string package; for(uint e=0; e<_EntryPoints.size(); e++) { const CEntryPoint & entryPoint = _EntryPoints[e]; diff --git a/code/ryzom/tools/translation/translated/fr.uxt b/code/ryzom/tools/translation/translated/fr.uxt index 232502136..dc873d097 100644 --- a/code/ryzom/tools/translation/translated/fr.uxt +++ b/code/ryzom/tools/translation/translated/fr.uxt @@ -9985,36 +9985,36 @@ uittKeepInfo [Conserver l'info dans cette fenêtre.] // HASH_VALUE 45FB9FEFF875C517 // INDEX 2420 uihelpItemMagicBonusAll [@{FFF9}Bonus pour Magie :\n - @{T3}Vitesse du Sort :@{T14}@{FFFF}%cs%@{FFF9}\n - @{T3}Puissance :@{T14}@{FFFF}%mp%\n + @{T3}Vitesse du Sort :@{T19}@{FFFF}%cs%@{FFF9}\n + @{T3}Puissance :@{T19}@{FFFF}%mp%\n ] // HASH_VALUE 2FB33DD3AB8213E8 // INDEX 2421 uihelpItemMagicBonusOffElemental [@{FFF9}Bonus pour Magie Destructrice Elémentaire :\n - @{T3}Vitesse du Sort :@{T14}@{FFFF}%cs%@{FFF9}\n - @{T3}Puissance :@{T14}@{FFFF}%mp%\n + @{T3}Vitesse du Sort :@{T19}@{FFFF}%cs%@{FFF9}\n + @{T3}Puissance :@{T19}@{FFFF}%mp%\n ] // HASH_VALUE 2098D0E88AF919A7 // INDEX 2422 uihelpItemMagicBonusOffAffliction [@{FFF9}Bonus pour Magie Débilitante :\n - @{T3}Vitesse du Sort :@{T14}@{FFFF}%cs%@{FFF9}\n - @{T3}Puissance :@{T14}@{FFFF}%mp%\n + @{T3}Vitesse du Sort :@{T19}@{FFFF}%cs%@{FFF9}\n + @{T3}Puissance :@{T19}@{FFFF}%mp%\n ] // HASH_VALUE DD4432757076566B // INDEX 2423 uihelpItemMagicBonusDefHeal [@{FFF9}Bonus pour Magie Salvatrice Curative :\n - @{T3}Vitesse du Sort :@{T14}@{FFFF}%cs%@{FFF9}\n - @{T3}Puissance :@{T14}@{FFFF}%mp%\n + @{T3}Vitesse du Sort :@{T19}@{FFFF}%cs%@{FFF9}\n + @{T3}Puissance :@{T19}@{FFFF}%mp%\n ] // HASH_VALUE 2088A4E88AF919A7 // INDEX 2424 uihelpItemMagicBonusDefAffliction [@{FFF9}Bonus pour Magie Salvatrice Neutralisante :\n - @{T3}Vitesse du Sort :@{T14}@{FFFF}%cs%@{FFF9}\n - @{T3}Puissance :@{T14}@{FFFF}%mp%\n + @{T3}Vitesse du Sort :@{T19}@{FFFF}%cs%@{FFF9}\n + @{T3}Puissance :@{T19}@{FFFF}%mp%\n ] // HASH_VALUE 4A4CE5C3DA44A737 @@ -10025,42 +10025,42 @@ uihelpItemMagicBonusHeader [\n // HASH_VALUE 49F09B8ED6794263 // INDEX 2426 -uihelpItemHpBonus [@{FFF9}Bonus Vie :@{T12}@{2F2F}%val\n +uihelpItemHpBonus [@{FFF9}Bonus Vie :@{T19}@{2F2F}%val\n ] // HASH_VALUE C6C052A2D6794261 // INDEX 2427 -uihelpItemHpMalus [@{FFF9}Pénalité Vie :@{T12}@{F44F}%val\n +uihelpItemHpMalus [@{FFF9}Pénalité Vie :@{T19}@{F44F}%val\n ] // HASH_VALUE C22128B75D575A2C // INDEX 2428 -uihelpItemSapBonus [@{FFF9}Bonus en Sève :@{T12}@{2F2F}%val\n +uihelpItemSapBonus [@{FFF9}Bonus en Sève :@{T19}@{2F2F}%val\n ] // HASH_VALUE 060079B75D57521E // INDEX 2429 -uihelpItemSapMalus [@{FFF9}Pénalité en Sève :@{T12}@{F44F}%val\n +uihelpItemSapMalus [@{FFF9}Pénalité en Sève :@{T19}@{F44F}%val\n ] // HASH_VALUE 74BAE89A0594E3CA // INDEX 2430 -uihelpItemStaBonus [@{FFF9}Bonus Endurance :@{T12}@{2F2F}%val\n +uihelpItemStaBonus [@{FFF9}Bonus Endurance :@{T19}@{2F2F}%val\n ] // HASH_VALUE 74BAE08C497334CA // INDEX 2431 -uihelpItemStaMalus [@{FFF9}Pénalité Endurance :@{T12}@{F44F}%val\n +uihelpItemStaMalus [@{FFF9}Pénalité Endurance :@{T19}@{F44F}%val\n ] // HASH_VALUE 242B21C617440631 // INDEX 2432 -uihelpItemFocusBonus [@{FFF9}Bonus Concentration :@{T12}@{2F2F}%val\n +uihelpItemFocusBonus [@{FFF9}Bonus Concentration :@{T19}@{2F2F}%val\n ] // HASH_VALUE 292B21C697643A1F // INDEX 2433 -uihelpItemFocusMalus [@{FFF9}Pénalité Concentration :@{T12}@{F44F}%val\n +uihelpItemFocusMalus [@{FFF9}Pénalité Concentration :@{T19}@{F44F}%val\n ] // HASH_VALUE F0AA55011CAF7807 @@ -10228,43 +10228,43 @@ uihelpItemCosmetic [\n // HASH_VALUE EA125F4DF699651A // INDEX 2469 -uihelpItemArmorFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}%origin\n - @{FFF9}@{HuittInfoArmorQuality}Qualité :@{H}@{T12}@{FFFF}%quality\n - @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T12}@{FFFF}%weight Kg\n - @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T12}@{FFFF}%bulk\n - @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T12}@{FFFF}%hp / %hpmax\n - %cansell@{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T12}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n +uihelpItemArmorFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T14}@{FFFF}%origin\n + @{FFF9}@{HuittInfoArmorQuality}Qualité :@{H}@{T14}@{FFFF}%quality\n + @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T14}@{FFFF}%weight Kg\n + @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T14}@{FFFF}%bulk\n + @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T14}@{FFFF}%hp / %hpmax\n + %cansell@{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T14}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n \n - @{FFF9}@{HuittInfoArmorType}Type d'Armure :@{H}@{T14}@{FFFF}%armor %armor_bonus\n - @{FFF9}@{HuittInfoDodgeMod}Modif. d'Esquive :@{H}@{T20}@{FFFF}%dodge\n - @{FFF9}@{HuittInfoParryMod}Modif. de Parade :@{H}@{T20}@{FFFF}%parry\n - @{FFF9}@{HuittInfoMalus}Pénalité de l'Action :@{H}@{T20}@{FFFF}+%actmalus\n - @{FFF9}@{HuittInfoArmorProtection}Protection :@{H}@{T20}@{FFFF}%protect%\n - @{FFF9} @{HuittInfoArmorSlash}Max / Cp Tranchant :@{H}@{T20}@{FFFF}%p_slash\n - @{FFF9} @{HuittInfoArmorBlunt}Max / Cp Contondant :@{H}@{T20}@{FFFF}%p_blunt\n - @{FFF9} @{HuittInfoArmorPierc}Max / Cp Perforant :@{H}@{T20}@{FFFF}%p_pierce\n + @{FFF9}@{HuittInfoArmorType}Type d'Armure :@{H}@{T22}@{FFFF}%armor %armor_bonus\n + @{FFF9}@{HuittInfoDodgeMod}Modif. d'Esquive :@{H}@{T22}@{FFFF}%dodge\n + @{FFF9}@{HuittInfoParryMod}Modif. de Parade :@{H}@{T22}@{FFFF}%parry\n + @{FFF9}@{HuittInfoMalus}Pénalité de l'Action :@{H}@{T22}@{FFFF}+%actmalus\n + @{FFF9}@{HuittInfoArmorProtection}Protection :@{H}@{T22}@{FFFF}%protect%\n + @{FFF9} @{HuittInfoArmorSlash}Max / Cp Tranchant :@{H}@{T22}@{FFFF}%p_slash\n + @{FFF9} @{HuittInfoArmorBlunt}Max / Cp Contondant :@{H}@{T22}@{FFFF}%p_blunt\n + @{FFF9} @{HuittInfoArmorPierc}Max / Cp Perforant :@{H}@{T22}@{FFFF}%p_pierce\n %buffs%special_effects%desc%custom_text] // HASH_VALUE 13E0EBA3282D2876 // INDEX 2470 -uihelpItemMeleeWeaponFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T14}@{FFFF}%origin\n - @{FFF9}@{HuittInfoWeaponQuality}Qualité :@{H}@{T14}@{FFFF}%quality\n - @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T14}@{FFFF}%weight Kg\n - @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T14}@{FFFF}%bulk\n - @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T14}@{FFFF}%hp / %hpmax\n - @{FFF9}@{HuittInfoWeaponSapLoad}Charge en Sève :@{H}@{T14}@{FFFF}%sap / %sapmax\n - @{FFF9}@{HuittInfoItemSkill}Compétence :@{H}@{T14}@{FFFF}%skill\n - %cansell@{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T12}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n +uihelpItemMeleeWeaponFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T17}@{FFFF}%origin\n + @{FFF9}@{HuittInfoWeaponQuality}Qualité :@{H}@{T17}@{FFFF}%quality\n + @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T17}@{FFFF}%weight Kg\n + @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T17}@{FFFF}%bulk\n + @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T17}@{FFFF}%hp / %hpmax\n + @{FFF9}@{HuittInfoWeaponSapLoad}Charge en Sève :@{H}@{T17}@{FFFF}%sap / %sapmax\n + @{FFF9}@{HuittInfoItemSkill}Compétence :@{H}@{T17}@{FFFF}%skill\n + %cansell@{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T17}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n \n - @{FFF9}@{HuittInfoDamageType}Type de Dégâts :@{H}@{T20}@{FFFF}%dmtype\n - @{FFF9}@{HuittInfoWeaponDamage}Dégâts :@{H}@{T20}@{FFFF}%dmg (@{T12}@{FFFF}%max_dmg)\n - @{FFF9}@{HuittInfoWeaponHitMin}Coups/Minute :@{H}@{T20}@{FFFF}%speed\n - @{FFF9}@{HuittInfoWeaponReach}Portée :@{H}@{T20}@{FFFF}%reach\n - @{FFF9}@{HuittInfoDodgeMod}Modif. d'Esquive :@{H}@{T20}@{FFFF}%dodge\n - @{FFF9}@{HuittInfoParryMod}Modif. de Parade :@{H}@{T20}@{FFFF}%parry\n - @{FFF9}@{HuittInfoTargetDodgeMod}Modif. d'Esquive/Cible :@{H}@{T20}@{FFFF}%adv_dodge\n - @{FFF9}@{HuittInfoTargetParryMod}Modif. de Parade/Cible :@{H}@{T20}@{FFFF}%adv_parry\n - @{FFF9}@{HuittInfoMalus}Pénalité de l'Action :@{H}@{T20}@{FFFF}+%actmalus\n + @{FFF9}@{HuittInfoDamageType}Type de Dégâts :@{H}@{T23}@{FFFF}%dmtype\n + @{FFF9}@{HuittInfoWeaponDamage}Dégâts :@{H}@{T23}@{FFFF}%dmg (@{T12}@{FFFF}%max_dmg)\n + @{FFF9}@{HuittInfoWeaponHitMin}Coups/Minute :@{H}@{T23}@{FFFF}%speed\n + @{FFF9}@{HuittInfoWeaponReach}Portée :@{H}@{T23}@{FFFF}%reach\n + @{FFF9}@{HuittInfoDodgeMod}Modif. d'Esquive :@{H}@{T23}@{FFFF}%dodge\n + @{FFF9}@{HuittInfoParryMod}Modif. de Parade :@{H}@{T23}@{FFFF}%parry\n + @{FFF9}@{HuittInfoTargetDodgeMod}Modif. d'Esquive/Cible :@{H}@{T23}@{FFFF}%adv_dodge\n + @{FFF9}@{HuittInfoTargetParryMod}Modif. de Parade/Cible :@{H}@{T23}@{FFFF}%adv_parry\n + @{FFF9}@{HuittInfoMalus}Pénalité de l'Action :@{H}@{T23}@{FFFF}+%actmalus\n %magic_bonus%buffs%special_effects%skill_mod_vs_type%desc%custom_text%enchantment] // HASH_VALUE 3C0F81B91BD521BD @@ -10307,13 +10307,13 @@ uihelpItemAmmoFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}%origin // HASH_VALUE 83398662F7CD3D0A // INDEX 2473 -uihelpItemMPFormat [@{FFF9}@{HuittInfoMpQuality}Qualité :@{H}@{T12}@{FFFF}%quality\n - @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T12}@{FFFF}%weight Kg\n - @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T12}@{FFFF}%bulk\n +uihelpItemMPFormat [@{FFF9}@{HuittInfoMpQuality}Qualité :@{H}@{T13}@{FFFF}%quality\n + @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T13}@{FFFF}%weight Kg\n + @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T13}@{FFFF}%bulk\n %cansell\n - @{FFF9}@{HuittInfoMpEco}Ecosystème :@{H}@{T12}@{FFFF}%ecosystem\n - @{FFF9}@{HuittInfoMpFam}Famille :@{H}@{T12}@{FFFF}%family\n - @{FFF9}@{HuittInfoMpColor}Couleur :@{H}@{T12}@{FFFF}%mpcolor\n + @{FFF9}@{HuittInfoMpEco}Ecosystème :@{H}@{T13}@{FFFF}%ecosystem\n + @{FFF9}@{HuittInfoMpFam}Famille :@{H}@{T13}@{FFFF}%family\n + @{FFF9}@{HuittInfoMpColor}Couleur :@{H}@{T13}@{FFFF}%mpcolor\n @{FFFF}%desc\n %craft] @@ -10403,14 +10403,14 @@ uihelpItemShieldFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}%orig // HASH_VALUE FFE62CC8B7369AC0 // INDEX 2490 -uihelpItemCraftingToolFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}%origin\n - @{FFF9}@{HuittInfoToolQuality}Qualité :@{H}@{T12}@{FFFF}%quality\n - @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T12}@{FFFF}%weight Kg\n - @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T12}@{FFFF}%bulk\n - @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T12}@{FFFF}%hp / %hpmax\n - @{FFF9}@{HuittToolCraftType}Type d'Outil :@{H}@{T12}@{FFFF}%tool\n +uihelpItemCraftingToolFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T14}@{FFFF}%origin\n + @{FFF9}@{HuittInfoToolQuality}Qualité :@{H}@{T14}@{FFFF}%quality\n + @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T14}@{FFFF}%weight Kg\n + @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T14}@{FFFF}%bulk\n + @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T14}@{FFFF}%hp / %hpmax\n + @{FFF9}@{HuittToolCraftType}Type d'Outil :@{H}@{T14}@{FFFF}%tool\n %cansell\n - @{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T12}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n + @{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T14}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n %buffs\n %special_effects\n \n @@ -10418,13 +10418,13 @@ uihelpItemCraftingToolFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF // HASH_VALUE 12DD79BE889C767A // INDEX 2491 -uihelpItemHarvestToolFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}%origin\n - @{FFF9}@{HuittInfoToolQuality}Qualité :@{H}@{T12}@{FFFF}%quality\n - @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T12}@{FFFF}%weight Kg\n - @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T12}@{FFFF}%bulk\n - @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T12}@{FFFF}%hp / %hpmax\n +uihelpItemHarvestToolFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T14}@{FFFF}%origin\n + @{FFF9}@{HuittInfoToolQuality}Qualité :@{H}@{T14}@{FFFF}%quality\n + @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T14}@{FFFF}%weight Kg\n + @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T14}@{FFFF}%bulk\n + @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T14}@{FFFF}%hp / %hpmax\n %cansell\n - @{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T12}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n + @{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T14}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n %buffs\n %special_effects\n \n @@ -10446,12 +10446,12 @@ uihelpItemTamingToolFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}% // HASH_VALUE C6ED74E2DF2FE4E5 // INDEX 2493 -uihelpItemJewelFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T12}@{FFFF}%origin\n - @{FFF9}@{HuittInfoJewelryQuality}Qualité :@{H}@{T12}@{FFFF}%quality\n - @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T12}@{FFFF}%weight Kg\n - @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T12}@{FFFF}%bulk\n - @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T12}@{FFFF}%hp / %hpmax\n - %cansell@{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T12}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n +uihelpItemJewelFormat [@{FFF9}@{HuittInfoOrigin}Origine :@{H}@{T14}@{FFFF}%origin\n + @{FFF9}@{HuittInfoJewelryQuality}Qualité :@{H}@{T14}@{FFFF}%quality\n + @{FFF9}@{HuittInfoWeight}Poids :@{H}@{T14}@{FFFF}%weight Kg\n + @{FFF9}@{HuittInfoBulk}Volume :@{H}@{T14}@{FFFF}%bulk\n + @{FFF9}@{HuittInfoHP}Points de Vie :@{H}@{T14}@{FFFF}%hp / %hpmax\n + %cansell@{FFF9}@{HuittInfoRequirement}Prérequis :@{H}@{T14}@{FFFF}%caracreq@{FFFF}%skillreq@{FFFF}%skillreq2\n \n %magic_protection%magic_resistance%buffs%desc%custom_text]