Merge with develop

This commit is contained in:
kervala 2015-11-14 19:29:43 +01:00
parent 5acd91b8fc
commit 093728dcf9
15 changed files with 197 additions and 150 deletions

View file

@ -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()); }

View file

@ -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)
{

View file

@ -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;

View file

@ -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;

View file

@ -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)
{

View file

@ -572,7 +572,7 @@ void checkUnderCursor()
selectedInstance.getMaterial(j).setShininess( 10.0f );
}
selectedInstance = noSelectedInstance;
selectedInstanceURL = string("");
selectedInstanceURL.clear();
}
}
SlotUnderCursor = CLFECOMMON::INVALID_SLOT;

View file

@ -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());

View file

@ -1427,7 +1427,7 @@ int CLuaIHMRyzom::getClientCfgVar(CLuaState &ls)
}
for(uint i = 0; i<v->IntValues.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; i<v->RealValues.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);
}

View file

@ -2469,7 +2469,7 @@ class CAHCreateAccountRules : public IActionHandler
if(Params==rules[i])
{
if(rulesGr)
rulesGr->setActive(text->getText() != ucstring(""));
rulesGr->setActive(!text->getText().empty());
}
}
}

View file

@ -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())

View file

@ -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 <RSMGR::TSessionDesc > &session
const RSMGR::TSessionDesc &sd = sessions[k];
_Lua->newTable();
CLuaObject session(*_Lua);
session.setValue("Id", (double) sd.getSessionId().asInt());
session.setValue("Id", 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("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 <RSMGR::TSessionDesc > &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 <RSMGR::TCharDesc > &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 <RSMGR::TCharDesc > &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 <RSMGR::TCharDesc > &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 <RSMGR::TCharDesc > &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"));

View file

@ -479,7 +479,7 @@ public:
ucstring getLoginName()
{
if (_LoginName == ucstring(""))
if (_LoginName.empty())
_LoginName = getDisplayName();
return _LoginName;

View file

@ -857,10 +857,9 @@ bool CObjectNumber::equal(const CObject* other) const
if (!other || !other->isNumber()) return false;
double otherValue = other->toNumber();
if (_Value == otherValue) return true;
/*
TODO: fabs + epsilon trick
*/
return false;
// if difference between 2 values less than epsilon, we consider they are equals
return fabs(_Value - otherValue) <= std::numeric_limits<double>::epsilon();
}

View file

@ -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];

View file

@ -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]