diff --git a/CMakeLists.txt b/CMakeLists.txt
index e7b3cc942..45c00c241 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,8 +41,8 @@ OPTION(HUNTER_ENABLED "Enable Hunter package manager" OFF)
IF(HUNTER_ENABLED)
INCLUDE("CMakeModules/HunterGate.cmake")
HunterGate(
- URL "https://github.com/cpp-pm/hunter/archive/v0.23.317.tar.gz"
- SHA1 "fbdd94b1966d351384e27b02c8d134915b1131d6"
+ URL "https://github.com/cpp-pm/hunter/archive/v0.23.321.tar.gz"
+ SHA1 "5e53cbb0429037ea8e2592bfd92704b8ff3ab492"
FILEPATH "${CMAKE_CURRENT_LIST_DIR}/CMakeModules/HunterConfig.cmake"
)
diff --git a/ryzom/client/data/gamedev/interfaces_v3/actions.xml b/ryzom/client/data/gamedev/interfaces_v3/actions.xml
index de2df5798..bfd245806 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/actions.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/actions.xml
@@ -1,659 +1,612 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/appzone.xml b/ryzom/client/data/gamedev/interfaces_v3/appzone.xml
index 79595ffe1..55e11fb86 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/appzone.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/appzone.xml
@@ -1,260 +1,56 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/ark.lua b/ryzom/client/data/gamedev/interfaces_v3/ark.lua
index 8666be557..fa08c5e00 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/ark.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/ark.lua
@@ -22,31 +22,55 @@ if ArkMissionCatalog == nil then
}
end
-function ArkMissionCatalog:OpenWindow(urlA, urlB)
- local winframe = WebBrowser:addWindow("ark_mission_catalog", "Mission Catalog", getUI(ArkMissionCatalog.window_id))
+function ArkMissionCatalog:OpenWindow(urlA, urlB, dont_active)
+ ArkMissionCatalog.window_id = "ui:interface:encyclopedia"
+ local winframe = getUI(ArkMissionCatalog.window_id)
winframe.opened=true
- winframe.active=true
- winframe.w = 950
+ if dont_active ~= true then
+ winframe.active=true
+ end
ArkMissionCatalog.window = winframe
- getUI(ArkMissionCatalog.window_id..":content:htmlA"):browse(urlA)
+ getUI("ui:interface:encyclopedia:content:htmlA"):browse(urlA)
- local htmlb = getUI(ArkMissionCatalog.window_id..":content:htmlB")
- if htmlb.home == "" then
- htmlb.home = urlB
- end
+ local htmlb = getUI("ui:interface:encyclopedia:content:htmlB")
+ htmlb.home = urlB
htmlb:browse("home")
-
end
-
-function ArkMissionCatalog:OpenCat(url)
+function ArkMissionCatalog:OpenCat(cat, url)
+ local ency = getUI("ui:interface:encyclopedia")
+ setOnDraw(ency, "")
+ ArkMissionCatalog.cat = cat
local htmlb = getUI(ArkMissionCatalog.window_id..":content:htmlB")
- htmlb.home = url+"&continent="+getContinentSheet()
+ local htmlc = getUI(ArkMissionCatalog.window_id..":content:htmlC")
+ if cat == "title" then
+ ArkMissionCatalog.posxB = 180
+ ArkMissionCatalog.widthB = 240
+ ArkMissionCatalog.widthC = 530
+ ArkMissionCatalog.posxC = 405
+
+ local htmlB = getUI(ArkMissionCatalog.window_id..":content:htmlB")
+ local htmlC = getUI(ArkMissionCatalog.window_id..":content:htmlC")
+ htmlB.x = ArkMissionCatalog.posxB
+ htmlB.w = ArkMissionCatalog.widthB
+ htmlC.w = ArkMissionCatalog.widthC
+ htmlC.x = ArkMissionCatalog.posxC
+ htmlC.active = true
+ else
+ ArkMissionCatalog.widthB = 740
+ htmlb.w = ArkMissionCatalog.widthB
+ if htmlc then
+ htmlc.active = false
+ end
+ end
+ htmlb.home = url.."&continent="..getContinentSheet()
htmlb:browse("home")
+ setOnDraw(ency, "ArkMissionCatalog:autoResize()")
end
+-- TODO: check removing fromUTF8
function ArkMissionCatalog:UpdateMissionTexts(win, id, text1, text2)
local w = win:find("ark_mission_"..id)
local text = ucstring()
@@ -72,36 +96,59 @@ function ArkMissionCatalog:autoResize()
local ui = getUI(ArkMissionCatalog.window_id)
local htmlA = getUI(ArkMissionCatalog.window_id..":content:htmlA")
local htmlB = getUI(ArkMissionCatalog.window_id..":content:htmlB")
+ local htmlC = getUI(ArkMissionCatalog.window_id..":content:htmlC")
- if ArkMissionCatalog.cat == "storyline" then
- if ui.w < 784 then
- if ArkMissionCatalog.cat == "storyline" then
+ if htmlC.active == false then
+ if ArkMissionCatalog.cat == "storyline" then
+ if ui.w < 784 then
local td30 = htmlB:find("storyline_content")
if td30 ~= nil then
td30.x = math.max(0, 200-784+ui.w)
ArkMissionCatalog.need_restore_td30 = true
end
- end
- else
- if ArkMissionCatalog.need_restore_td30 then
- local td30 = htmlB:find("storyline_content")
- if td30 ~= nil then
- td30.x = 200
- ArkMissionCatalog.need_restore_td30 = false
+ else
+ if ArkMissionCatalog.need_restore_td30 then
+ local td30 = htmlB:find("storyline_content")
+ if td30 ~= nil then
+ td30.x = 200
+ ArkMissionCatalog.need_restore_td30 = false
+ end
end
end
end
- end
- if ui.w < 950 then
- htmlA.w = math.max(60, 220-950+ui.w)
- htmlB.x = math.max(35, 190-950+ui.w)
- ArkMissionCatalog.need_restore = true
+ if ui.w < 950 then
+ htmlA.w = math.max(60, 220-950+ui.w)
+ htmlB.x = math.max(35, 190-950+ui.w)
+ ArkMissionCatalog.need_restore = true
+ else
+ if ArkMissionCatalog.need_restore then
+ htmlA.w = 220
+ htmlB.x = 190
+ ArkMissionCatalog.need_restore = false
+ end
+ end
else
- if ArkMissionCatalog.need_restore then
- htmlA.w = 220
- htmlB.x = 190
- ArkMissionCatalog.need_restore = false
+ if ui.w < 950 then
+ htmlA.w = math.max(68, 220-950+ui.w)
+ htmlB.x = math.max(35, ArkMissionCatalog.posxB-950+ui.w)
+ if htmlB:find("scroll_bar").h > 0 then
+ htmlC.x = math.max(80, ui.w-htmlC.w)
+ htmlB.w = math.max(62, ui.w-htmlA.w-htmlC.x+16)
+ else
+ htmlC.x = math.max(75, ui.w-htmlC.w-16)
+ htmlB.w = math.max(55, htmlC.x-htmlB.x+16)
+ end
+ ArkMissionCatalog.need_restore = true
+ else
+ if ArkMissionCatalog.need_restore then
+ htmlA.w = 220
+ htmlB.w = ArkMissionCatalog.widthB
+ htmlB.x = ArkMissionCatalog.posxB
+ htmlC.w = ArkMissionCatalog.widthC
+ htmlC.x = ArkMissionCatalog.posxC
+ ArkMissionCatalog.need_restore = false
+ end
end
end
end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.lua b/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.lua
index f133eae27..161012d9e 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.lua
@@ -48,7 +48,7 @@ function bgdownloader:setProgressText(ucstr, color, progress, ellipsis)
local text = self:getProgressGroup():find("text")
local ellipsisTxt = self:getProgressGroup():find("ellipsis")
text.color = color
- text.text = ucstr
+ text.uc_hardtext = ucstr
if ellipsis then
ellipsisTxt.hardtext = ellipsis
else
@@ -60,7 +60,7 @@ function bgdownloader:setProgressText(ucstr, color, progress, ellipsis)
-- any current download to finish, otherwise connection may be lost)
self:setIcon("bgd_pause.tga")
ellipsisTxt.hardtext = ""
- text.text = pausedText
+ text.uc_hardtext = pausedText
else
self:setIcon("")
local progressCtrl = self:getProgressBar()
@@ -88,7 +88,7 @@ function bgdownloader:setPatchProgress(progress)
local progressDate = nltime.getLocalTime() / 500
local colValue = math.floor(230 + 24 * math.sin(progressDate))
local color = string.format("%d %d %d %d", colValue, colValue, colValue, 255)
- self:setProgressText(concatString(i18n.get("uiBGD_Progress"), progressPercentText), color, progress, progressSymbol[progressPostfix + 1])
+ self:setProgressText(concatUCString(i18n.get("uiBGD_Progress"), ucstring(progressPercentText)), color, progress, progressSymbol[progressPostfix + 1])
end
------------------------------------------------------------------------------------------------------------
@@ -110,7 +110,7 @@ function bgdownloader:setPatchError()
self:getProgressGroup().active = true
end
local errMsg = getPatchLastErrorMessage()
- if errMsg == "" then
+ if errMsg == ucstring() then
self:setProgressText(i18n.get("uiBGD_PatchError"), "255 0 0 255", 0)
else
self:setProgressText(errMsg, "255 0 0 255", 0)
diff --git a/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.xml b/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.xml
index 914b4f2ff..48c26b720 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/bg_downloader.xml
@@ -1,74 +1,28 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/bot_chat_v4.xml b/ryzom/client/data/gamedev/interfaces_v3/bot_chat_v4.xml
index 69cf329f4..e1d76646b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/bot_chat_v4.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/bot_chat_v4.xml
@@ -1,1590 +1,1030 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/commands.xml b/ryzom/client/data/gamedev/interfaces_v3/commands.xml
index 5d994c2b6..3ca5c85fb 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/commands.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/commands.xml
@@ -1,132 +1,96 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/commands2.xml b/ryzom/client/data/gamedev/interfaces_v3/commands2.xml
index 3e3de90ba..66487ac80 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/commands2.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/commands2.xml
@@ -1,3 +1 @@
-
-
-
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/compass.xml b/ryzom/client/data/gamedev/interfaces_v3/compass.xml
index a593bfb5a..1862a96eb 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/compass.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/compass.xml
@@ -1,546 +1,400 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/config.xml b/ryzom/client/data/gamedev/interfaces_v3/config.xml
index cd9cc5e3a..cb4a66c9c 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/config.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/config.xml
@@ -1,1620 +1,1365 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/encyclopedia.xml b/ryzom/client/data/gamedev/interfaces_v3/encyclopedia.xml
index 0c4678031..927d7d35f 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/encyclopedia.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/encyclopedia.xml
@@ -1,292 +1,218 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/game_config.xml b/ryzom/client/data/gamedev/interfaces_v3/game_config.xml
index cf51f2d76..ac594feac 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/game_config.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/game_config.xml
@@ -1,1040 +1,853 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/game_context_menu.xml b/ryzom/client/data/gamedev/interfaces_v3/game_context_menu.xml
index 9244b3ba6..c4579c551 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/game_context_menu.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/game_context_menu.xml
@@ -1,154 +1,119 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/game_r2_loading.lua b/ryzom/client/data/gamedev/interfaces_v3/game_r2_loading.lua
index 6ebb82bf0..33a3810d3 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/game_r2_loading.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/game_r2_loading.lua
@@ -100,7 +100,7 @@ function GameR2Loading:setScenarioLanguage(header)
local lvlWidget = win:find("Language")
if header.Language then
local language = "uiR2ED"..header.Language
- lvlWidget.hardtext = i18n.get(language)
+ lvlWidget.hardtext = i18n.get(language):toUtf8()
else
lvlWidget.hardtext = ""
end
@@ -124,7 +124,7 @@ function GameR2Loading:setScenarioRingAccess(header)
local okButton = win:find("validate")
if getDbProp("SERVER:USER:IS_NEWBIE") == 1 and isPlayerFreeTrial() and not header.OtherCharAccess or header.OtherCharAccess ~= "RoSOnly" then
- accessWidget.hardtext = i18n.get("uiR2EDLoadScenario_No")
+ accessWidget.hardtext = i18n.get("uiR2EDLoadScenario_No"):toUtf8()
okButton.frozen = true
end
@@ -132,9 +132,9 @@ function GameR2Loading:setScenarioRingAccess(header)
self.RingAccess = game.checkRingAccess(header.RingPointLevel)
if self.RingAccess == true then
- accessWidget.hardtext = i18n.get("uiR2EDLoadScenario_Yes")
+ accessWidget.hardtext = i18n.get("uiR2EDLoadScenario_Yes"):toUtf8()
else
- accessWidget.hardtext = i18n.get("uiR2EDLoadScenario_No")
+ accessWidget.hardtext = i18n.get("uiR2EDLoadScenario_No"):toUtf8()
end
okButton.frozen = not self.RingAccess
@@ -561,9 +561,9 @@ function GameR2Loading:getTreeTooltip()
local isInNoobLand = getDbProp("SERVER:USER:IS_NEWBIE")
if isInNoobLand == 1 and isPlayerFreeTrial() then
- tree.tooltip = i18n.get("uiR2EdPropertyToolTip_LoadScenario_LoadScenario_NewbieTreeInfo")
+ tree.tooltip = i18n.get("uiR2EdPropertyToolTip_LoadScenario_LoadScenario_NewbieTreeInfo"):toUtf8()
else
- tree.tooltip = i18n.get("uiR2EdPropertyToolTip_LoadScenario_LoadScenario_TreeInfo")
+ tree.tooltip = i18n.get("uiR2EdPropertyToolTip_LoadScenario_LoadScenario_TreeInfo"):toUtf8()
end
end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/guild.lua b/ryzom/client/data/gamedev/interfaces_v3/guild.lua
index 06a804cfd..4c3bc0646 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/guild.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/guild.lua
@@ -61,13 +61,13 @@ function game:guildBuildInterface()
uiMember.name.hardtext = getGuildMemberName(i);
local memberGrade = getGuildMemberGrade(i);
if (memberGrade == 'Leader') then
- uiMember.grade.text = i18n.get('uiGuildLeader');
+ uiMember.grade.uc_hardtext = i18n.get('uiGuildLeader');
elseif (memberGrade == 'HighOfficer') then
- uiMember.grade.text = i18n.get('uiGuildHighOfficer');
+ uiMember.grade.uc_hardtext = i18n.get('uiGuildHighOfficer');
elseif (memberGrade == 'Officer') then
- uiMember.grade.text = i18n.get('uiGuildOfficer');
+ uiMember.grade.uc_hardtext = i18n.get('uiGuildOfficer');
else
- uiMember.grade.text = i18n.get('uiGuildMember');
+ uiMember.grade.uc_hardtext = i18n.get('uiGuildMember');
end
uiMemberList:addChild(uiMember);
end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/guild.xml b/ryzom/client/data/gamedev/interfaces_v3/guild.xml
index 182310e9f..f30c7b08d 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/guild.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/guild.xml
@@ -1,481 +1,323 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/haircut.xml b/ryzom/client/data/gamedev/interfaces_v3/haircut.xml
index e9b555d79..f8f6778c4 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/haircut.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/haircut.xml
@@ -1,231 +1,145 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/harvest.xml b/ryzom/client/data/gamedev/interfaces_v3/harvest.xml
index e4a5044ae..e1b779539 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/harvest.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/harvest.xml
@@ -1,21 +1,17 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
-
\ No newline at end of file
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/help.xml b/ryzom/client/data/gamedev/interfaces_v3/help.xml
index 0c2ce606e..81ae758bf 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/help.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/help.xml
@@ -1,607 +1,605 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/hierarchy.xml b/ryzom/client/data/gamedev/interfaces_v3/hierarchy.xml
index f694b2136..829a95184 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/hierarchy.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/hierarchy.xml
@@ -1,143 +1,107 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/info_player.lua b/ryzom/client/data/gamedev/interfaces_v3/info_player.lua
index 93cf7b159..479b18b59 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/info_player.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/info_player.lua
@@ -129,7 +129,7 @@ function game:displayMagicProtect(dbVal)
local uiText= ui.val;
-- set the text (percentage)
- uiText.text= tostring(val) .. "%";
+ uiText.uc_hardtext= tostring(val) .. "%";
-- set color and global color according to maximum reached or not
if(val >= vMax) then
@@ -223,7 +223,7 @@ function game:displayMagicResist(dbVal)
local uiText= ui.val;
-- set the text (final value)
- uiText.text= tostring(val);
+ uiText.uc_hardtext= tostring(val);
-- set color and global color according to maximum reached or not
if(val >= vMax) then
@@ -282,14 +282,14 @@ function game:onDrawNpcWebPage()
if(available) then
local ucUrl
if config.Local == 1 then
- ucUrl = NicoMagicURL -- for test in local mode
+ ucUrl = ucstring(NicoMagicURL) -- for test in local mode
else
ucUrl = getDynString(self.NpcWebPage.UrlTextId);
end
-- browse
local uiStr= getUIId(getUICaller());
-- if the url
- local utf8Url = ucUrl
+ local utf8Url = ucUrl:toUtf8()
local isRing = string.find(utf8Url, "ring_access_point=1") ~= nil
if isRing then
getUI("ui:interface:npc_web_browser").active = false
@@ -340,7 +340,7 @@ end
function game:getOpenAppPageMessage()
local ucUrl = getDynString(self.NpcWebPage.UrlTextId)
- local url = ucUrl
+ local url = ucUrl:toUtf8()
surl = url:split("&")
for i=1,#surl do
if surl[i]:sub(1, 12) == "open_message" then
@@ -353,8 +353,12 @@ end
function game:onDbChangeAppPage()
if getDbProp("UI:VARIABLES:CURRENT_SERVER_TICK") > self.NpcWebPage.Timeout then
local npcName = getTargetName()
+
+ local message = ucstring()
+
local text = game:getOpenAppPageMessage()
- displaySystemInfo(text, "AMB")
+ message:fromUtf8(text)
+ displaySystemInfo(message, "AMB")
removeOnDbChange(getUI("ui:interface:npc_web_browser"),"@UI:VARIABLES:CURRENT_SERVER_TICK")
end
end
@@ -376,7 +380,7 @@ function game:startNpcWebPage()
removeOnDbChange(getUI("ui:interface:npc_web_browser"),"@UI:VARIABLES:CURRENT_SERVER_TICK")
end
local ucUrl = getDynString(self.NpcWebPage.UrlTextId)
- local utf8Url = ucUrl
+ local utf8Url = ucUrl:toUtf8()
if utf8Url:sub(1, 4) == "http" then
runAH(nil, "browse", "name=ui:interface:npc_web_browser:content:html|url=release_wk.html|localize=1");
@@ -643,30 +647,30 @@ function game:getPvpEffects()
fmt = i18n.get('uiPvPEffect_' .. getRegionByAlias(id) .. '_Bonus');
fmt = replacePvpEffectParam(fmt, param);
if (textBonus ~= '') then
- textBonus = concatString(textBonus, '\n\n');
+ textBonus = concatUCString(textBonus, '\n\n');
end
- textBonus = concatString(textBonus, fmt);
+ textBonus = concatUCString(textBonus, fmt);
else
hasMalus = true;
fmt = i18n.get('uiPvPEffect_' .. getRegionByAlias(id) .. '_Malus');
fmt = replacePvpEffectParam(fmt, param);
if (textMalus ~= '') then
- textMalus = concatString(textMalus, '\n\n');
+ textMalus = concatUCString(textMalus, '\n\n');
end
- textMalus = concatString(textMalus, fmt);
+ textMalus = concatUCString(textMalus, fmt);
end;
end
end
if (hasBonus) then
- uiGroup.pvpEffectsBonusMalusInfo.text_format = i18n.get('uiPvpEffectBonus');
- uiGroup.pvpEffectsBonusMalus.text_format = textBonus;
+ uiGroup.pvpEffectsBonusMalusInfo.uc_hardtext_format = i18n.get('uiPvpEffectBonus');
+ uiGroup.pvpEffectsBonusMalus.uc_hardtext_format = textBonus;
elseif (hasMalus) then
- uiGroup.pvpEffectsBonusMalusInfo.text_format = i18n.get('uiPvpEffectMalus');
- uiGroup.pvpEffectsBonusMalus.text_format = textMalus;
+ uiGroup.pvpEffectsBonusMalusInfo.uc_hardtext_format = i18n.get('uiPvpEffectMalus');
+ uiGroup.pvpEffectsBonusMalus.uc_hardtext_format = textMalus;
else
- uiGroup.pvpEffectsBonusMalusInfo.text_format = '';
- uiGroup.pvpEffectsBonusMalus.text_format = '';
+ uiGroup.pvpEffectsBonusMalusInfo.uc_hardtext_format = '';
+ uiGroup.pvpEffectsBonusMalus.uc_hardtext_format = '';
end
end
@@ -709,7 +713,7 @@ function game:getAllegiancePoints()
text = findReplaceAll(text, '%faction', self:getFactionName(civ));
text = findReplaceAll(text, '%points', tostring(civPoints));
end
- uiGroup.civ_allegiance_pts.text_format = text;
+ uiGroup.civ_allegiance_pts.uc_hardtext_format = text;
-- cult allegiance
if (cult == self.TPVPClan.None or cult == self.TPVPClan.Neutral) then
@@ -719,7 +723,7 @@ function game:getAllegiancePoints()
text = findReplaceAll(text, '%faction', self:getFactionName(cult));
text = findReplaceAll(text, '%points', tostring(cultPoints));
end
- uiGroup.cult_allegiance_pts.text_format = text;
+ uiGroup.cult_allegiance_pts.uc_hardtext_format = text;
end
------------------------------------------------------------------------------------------------------------
@@ -727,7 +731,7 @@ function game:updateAllegiance(path, uiText)
local alleg = getDbProp(path);
local text = i18n.get('uiFameAllegiance' .. tostring(alleg) );
- getUICaller()[uiText].text= text;
+ getUICaller()[uiText].uc_hardtext= text;
end
------------------------------------------------------------------------------------------------------------
@@ -766,28 +770,28 @@ function game:tooltipDeltaValue(base, max)
local text;
if (val == 0) then
- text = concatString('@{FFFF}', tostring(max));
+ text = concatUCString('@{FFFF}', tostring(max));
else
if (val > 0) then
-- bonus
- text = concatString('@{FFFF}', tostring(max));
- text = concatString(text, ' (');
- text = concatString(text, tostring(base));
- text = concatString(text, '@{0F0F}');
- text = concatString(text, ' + ');
- text = concatString(text, tostring(val));
- text = concatString(text, '@{FFFF}');
- text = concatString(text, ')');
+ text = concatUCString('@{FFFF}', tostring(max));
+ text = concatUCString(text, ' (');
+ text = concatUCString(text, tostring(base));
+ text = concatUCString(text, '@{0F0F}');
+ text = concatUCString(text, ' + ');
+ text = concatUCString(text, tostring(val));
+ text = concatUCString(text, '@{FFFF}');
+ text = concatUCString(text, ')');
else
-- malus
- text = concatString('@{FFFF}', tostring(max));
- text = concatString(text, ' (');
- text = concatString(text, tostring(base));
- text = concatString(text, '@{E42F}');
- text = concatString(text, ' - ');
- text = concatString(text, tostring(math.abs(val)));
- text = concatString(text, '@{FFFF}');
- text = concatString(text, ')');
+ text = concatUCString('@{FFFF}', tostring(max));
+ text = concatUCString(text, ' (');
+ text = concatUCString(text, tostring(base));
+ text = concatUCString(text, '@{E42F}');
+ text = concatUCString(text, ' - ');
+ text = concatUCString(text, tostring(math.abs(val)));
+ text = concatUCString(text, '@{FFFF}');
+ text = concatUCString(text, ')');
end
end
@@ -1016,7 +1020,7 @@ function RingPlayerInfo:updateRRPSLevel(dbVal, tooltip)
local uiText= ui.val;
-- set the text
- uiText.text= tostring(val)
+ uiText.uc_hardtext= tostring(val)
self:tooltipRRPs(dbVal, tooltip)
end
@@ -1076,13 +1080,13 @@ end
function game:updateOrganization(path, uiOrgText, uiStatusText, uiPointsText)
local org = getDbProp(path.."1:VALUE")
- getUICaller()[uiOrgText].hardtext = i18n.get('uiOrganization_' .. org)
+ getUICaller()[uiOrgText].uc_hardtext = i18n.get('uiOrganization_' .. org)
local status = getDbProp(path.."2:VALUE")
- getUICaller()[uiStatusText].hardtext= status
+ getUICaller()[uiStatusText].uc_hardtext= status
local points = getDbProp(path.."3:VALUE")
- getUICaller()[uiPointsText].hardtext= points
+ getUICaller()[uiPointsText].uc_hardtext= points
end
@@ -1184,6 +1188,8 @@ end
function game:onMissionSelected(index)
disableModalWindow()
self:updateCurrMissionComboBox()
+ game.WebMissionLastDesc = {}
+ setOnDraw(getMissionWindow(), "game:ensureWebMissionVisibility()")
end
--------------------------------------------------------------------------------------------------------------
@@ -1205,6 +1211,7 @@ function game:onMissionDBIndexChanged()
getUI("ui:interface:info_player_journal:content:mission_list:b_title" .. tostring(missionIndex)).pushed = true
getUI("ui:interface:mission_cb_menu:mission_list:b_title" .. tostring(missionIndex)).pushed = true
end
+ game:updateMissionWindowLayout()
end
--------------------------------------------------------------------------------------------------------------
@@ -1284,6 +1291,179 @@ end
-- end
--end
+function game:parseLangText(text)
+ if text == nil then
+ return ""
+ end
+ local final = ""
+ local work = ""
+ local translated = ""
+ local stext = text:split("[[]")
+ for k, v in pairs(stext) do
+ if string.sub(v, 3, 3) == "]" then
+ if string.sub(v, 1, 2):upper() == getClientCfg("LanguageCode"):upper() then
+ work = ""
+ translated = string.sub(v, 4)
+ elseif string.sub(v, 1, 2):upper() == "WK" and translated == "" then
+ work = string.sub(v, 4)
+ end
+ else
+ if k > 1 then
+ final = final .. "["
+ end
+ final = final .. v
+ end
+ end
+ return final .. work .. translated
+end
+
+function game:updateCapTooltip()
+ --local real_tooltip = "\n\n@{FFFC}Ceci est le @{6F6F}cap@{FFFC} sur lequel vous êtes actuellement fixé.\nCliquez pour obtenir plus d'@{6F6F}informations@{FFFC}.\n\nIl vous également possible de changer de cap en cliquant sur @{6F6F}Mettre le cap sur [...]@{FFFC} à chaque fois que l'option est disponible"
+ local real_tooltip = game:parseLangText(mission_real_tooltip)
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_ctrl").tooltip = getUCtf8("@{FB0F}"..game.CapTitle.."\n@{FFFF}"..game.CapDesc..real_tooltip)
+end
+
+function game:setCapTitle(text)
+ game.CapTitle = game:parseLangText(text)
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_title").uc_hardtext = getUCtf8(game.CapTitle)
+ game:updateCapTooltip()
+end
+
+function game:setCapDesc(text)
+ game.CapDesc = game:parseLangText(text)
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_desc").uc_hardtext = getUCtf8(game.CapDesc)
+ game:updateCapTooltip()
+end
+
+function game:setCapIcon(icon)
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_icon").texture = icon
+end
+
+
+function game:autoHideCapPopup()
+
+ if game.autoHideCapTimer == 0 then
+ alpha = nltime.getLocalTime() - game.autoHideCapStartTime
+ if alpha >= 254*5 then
+ setOnDraw(getUI("ui:interface:cap_popup"), "")
+ getUI("ui:interface:cap_popup").active=false
+ else
+ getUI("ui:interface:cap_popup").alpha=255-math.floor(alpha/5)
+ end
+ else
+ if game.autoHideCapStartTime + game.autoHideCapTimer < nltime.getLocalTime() then
+ game.autoHideCapStartTime = nltime.getLocalTime()
+ game.autoHideCapTimer = 0
+ end
+ end
+end
+
+function game:displayRpMessage(message, icon)
+ if icon == nil then
+ icon = "rpjob_roleplay.tga"
+ end
+
+ local htmlcode = [[
+
+
+
+ |
+
+
+ ]]..message..[[ |
+
+
+
+ ]]
+
+ getUI("ui:interface:cap_popup:html"):renderHtml(htmlcode)
+ setTopWindow(getUI("ui:interface:cap_popup"))
+ getUI("ui:interface:cap_popup").alpha=255
+ getUI("ui:interface:cap_popup").y = getUI("ui:interface").h-170
+ getUI("ui:interface:cap_popup").x = math.floor(getUI("ui:interface").w / 2) - 400
+ getUI("ui:interface:cap_popup").active = true
+ game.autoHideCapStartTime = nltime.getLocalTime()
+ game.autoHideCapTimer = 3000
+ setOnDraw(getUI("ui:interface:cap_popup"), "game:autoHideCapPopup()")
+end
+
+function game:setCapProgress(value, text)
+ if value == nil then
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_progress").active = false
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_infos").x = 4
+ else
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_progress").active = true
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_infos").x = 72
+ if value >= 0 then
+ if value > 100 and game.CapNextUrl ~= "" then
+ getUI("ui:interface:web_transactions"):find("html"):browse(game.CapNextUrl)
+ else
+ setDbProp("UI:TEMP:CAP_PROGRESS", value)
+ end
+ end
+ end
+
+ if text ~= nil then
+ getUI("ui:interface:info_player_journal:content:cap_group:cap_infos").uc_hardtext = getUCtf8(text)
+ end
+end
+
+function game:openInfosUrl()
+ if game.CapInfosUrl == nil then
+ game:openMissionsCatalog()
+ elseif game.CapInfosUrl ~= "" then
+ getUI("ui:interface:web_transactions"):find("html"):browse(game.CapInfosUrl)
+ end
+end
+
+function game:setInfosUrl(url)
+ game.CapInfosUrl = url
+end
+
+function game:setNextUrl(url)
+ game.CapNextUrl = url
+end
+
+function setCap(channel, element, a, b)
+ if element == nil then
+ game.CapChannel = channel
+ game:setInfosUrl(a)
+ game:setNextUrl(b)
+ return
+ end
+
+ if channel ~= game.CapChannel then
+ return
+ end
+
+ if element == "t" then
+ game:setCapTitle(a)
+ elseif element == "d" then
+ game:setCapDesc(a)
+ elseif element == "i" then
+ game:setCapIcon(a)
+ elseif element == "p" then
+ game:setCapProgress(a, b)
+ elseif element == "u" then
+ game:setInfosUrl(a)
+ game:setNextUrl(b)
+ elseif element == "n" then
+ game:setNextUrl(a)
+ elseif element == "o" then
+ game:setInfosUrl(a)
+ elseif element == "r" then
+ game:displayRpMessage(a, b)
+ elseif element == "b" then
+ broadcast(a, b)
+ end
+end
+
+
+function game:openMissionsCatalog()
+ -- Setup this function in webig
+end
+
+
--------------------------------------------------------------------------------------------------------------
function game:onMissionFinished(index)
self:updateCurrMissionComboBox()
@@ -1306,46 +1486,41 @@ end
--------------------------------------------------------------------------------------------------------------
function game:updateMissionWindowLayout()
if not isInRingMode() then
- local missionCB = getUI("ui:interface:info_player_journal:content:mission_combo")
- local missionList = getUI("ui:interface:info_player_journal:content:mission_list")
- local fake = getUI("ui:interface:info_player_journal:content:fake")
- local sepBis = getUI("ui:interface:info_player_journal:content:separator_bis")
- local desc = getUI("ui:interface:info_player_journal:content:desc")
+ local base = "ui:interface:info_player_journal:content:"
+ local missionCB = getUI(base.."mission_combo")
+ local missionList = getUI(base.."mission_list")
+ local fake = getUI(base.."fake")
+ local desc = getUI(base.."desc")
+ local separator = getUI(base.."separator")
local expanded
- local popMinH
local win = getUI("ui:interface:info_player_journal")
if missionCB.active then
- sepBis.active = false
missionList.active = false
+ separator.active = false
fake.sizeref=""
- fake.y = -32
- fake.h = 0
+ fake.y = 0
+ fake.h = 70
expanded = 0
desc.max_sizeref ="wh"
- desc.max_h= -42
- win.pop_min_h = 152 - win.content_y_offset
+ desc.max_h = -60
+ win.pop_min_h = 157 - win.content_y_offset
else
- sepBis.active = true
missionList.active = true
- fake.sizeref="wh5"
+ separator.active = true
+ fake.sizeref = "wh5"
fake.y = -8
- fake.h = -42
+ fake.h = 0
expanded = 1
- desc.max_sizeref ="wh5"
- desc.max_h=16
- win.pop_min_h = 152 - win.content_y_offset
+ desc.max_sizeref = "wh5"
+ desc.max_h = -5
+ win.pop_min_h = 157 - win.content_y_offset
end
- local fixedEntry = getUI("ui:interface:info_player_journal:content:mission_fixed_entry")
- fixedEntry:updateCoords()
- desc.max_h = desc.max_h - fixedEntry.h
-
setDbProp("UI:SAVE:EXPAND_MISSION_LIST", expanded)
- getUI("ui:interface:info_player_journal"):invalidateCoords()
+ win:invalidateCoords()
end
end
-
--------------------------------------------------------------------------------------------------------------
function game:onMissionJournalOpened()
local missionDesc = getUI("ui:interface:info_player_journal:content:desc")
@@ -1366,9 +1541,6 @@ function game:onMissionJournalOpened()
self:updateMissionJournalHeader()
self:updateMissionWindowLayout()
self:updateMissionJournalFixedEntry()
-
-
-
end
--------------------------------------------------------------------------------------------------------------
@@ -1378,10 +1550,10 @@ function game:updateMissionJournalHeader()
win.header_active = headerActive
win.right_button_enabled = headerActive
if headerActive then
- win.title_opened = i18n.get("uiJournalTitle")
+ win.uc_title_opened = i18n.get("uiJournalTitle")
win.content_y_offset = 0
else
- win.title_opened = ""
+ win.uc_title_opened = ucstring("")
win.content_y_offset = win.header_opened.h_real + 3
end
end
@@ -1390,34 +1562,6 @@ end
--------------------------------------------------------------------------------------------------------------
function game:updateMissionJournalFixedEntry()
-- update fixed entry text
-
- local fixedEntryRing = getUI("ui:interface:info_player_journal:no_available_missions:main:mission_fixed_entry")
- local fixedEntryMain = getUI("ui:interface:info_player_journal:content:mission_fixed_entry")
-
- fixedEntryRing.active = game.InGameDbInitialized and isInRingMode()
- fixedEntryMain.active = game.InGameDbInitialized and not isInRingMode()
-
-
-
- local id = "uiFixedMissionEntry"
- if isPlayerNewbie() then
- id = id .."_Newbie"
- if isInRingMode() then
- id = id .. "_R2"
- end
- if isPlayerFreeTrial() then
- id = id .. "_Trial"
- end
- else
- if isInRingMode() then
- id = id .. "_R2"
- else
- id = id .. "_Mainland_" .. getUserRace()
- end
- end
- fixedEntryMain.text = i18n.get(id)
- fixedEntryRing.text = i18n.get(id)
-
self:updateMissionWindowLayout()
end
@@ -1491,7 +1635,19 @@ function game:onInGameDbInitialized()
self:setCurrentMission(game.PrevSessionMission)
end
+ game:setInfoPlayerCharacterRace()
+ --
+ game:openChannels()
+
runAH(nil, "sort_tribefame", "")
+ local ency = getUI("ui:interface:encyclopedia")
+ setOnDraw(ency, "ArkMissionCatalog:startResize()")
+end
+
+function game:onWebIgReady()
+ -- Call init webig
+ getUI("ui:interface:web_transactions:content:html"):browse("home")
+ getUI("ui:interface:webig:content:html"):browse("home")
end
--------------------------------------------------------------------------------------------------------------
@@ -1499,6 +1655,12 @@ end
function game:onFarTpStart()
debugInfo("game:onFarTpStart()")
--game:deinitWebIgApps()
+ --
+ if getDbProp("UI:SAVE:CHAT:SAVE_CHANNEL") > 0 then
+ game:saveChannel()
+ end
+
+ artefact:onClose()
end
--------------------------------------------------------------------------------------------------------------
@@ -1513,7 +1675,12 @@ end
function game:onMainLoopEnd()
game.InGameDbInitialized = false
game:updateMissionJournalFixedEntry()
+ --
+ if getDbProp("UI:SAVE:CHAT:SAVE_CHANNEL") > 0 then
+ game:saveChannel()
+ end
+ artefact:onClose()
end
--------------------------------------------------------------------------------------------------------------
@@ -1587,6 +1754,7 @@ function game:onNewMissionStepAdded(stepIndex)
setOnDraw(missionWnd, "game:ensureLastMissionStepVisibility0()")
else
end
+ game.WebMissionLastDesc = {}
end
function game:ensureLastMissionStepVisibility0()
@@ -1617,6 +1785,7 @@ end
function game:ensureLastMissionStepVisibility1()
local missionWnd = getMissionWindow()
+ local missionIndex = getDbProp("UI:SAVE:MISSION_SELECTED")
local scrollBar = missionWnd:find("sv_desc")
--scrollBar.trackPos = 20000 -- move upward
--scrollBar:updateCoords()
@@ -1630,7 +1799,7 @@ function game:ensureLastMissionStepVisibility1()
topStep = currStep
end
end
- -- debugInfo("Found step : " .. topStep.hardtext)
+
if topStep == nil then
return
end
@@ -1645,12 +1814,270 @@ function game:ensureLastMissionStepVisibility1()
--descWnd:invalidateCoords()
--descWnd:updateCoords()
- setOnDraw(missionWnd, "")
+ game.WebMissionLastDesc = {}
+ setOnDraw(missionWnd, "game:ensureWebMissionVisibility()")
end
+function game:ensureWebMissionVisibility()
+ local missionWnd = getMissionWindow()
+ local missionIndex = getDbProp("UI:SAVE:MISSION_SELECTED")
+ local scrollBar = missionWnd:find("sv_desc")
+ local descWnd = missionWnd:find("desc")
+ local maxNumSteps = getDefine("ipj_nb_goal")
+ local topStep
+ local haveWeb = false
+ for stepIndex = 0, maxNumSteps -1 do
+ local currStep = descWnd["step" .. tostring(stepIndex)]
+ if missionIndex < 15 then
+ dbPath = "SERVER:MISSIONS:" .. tostring(missionIndex) .. ":GOALS:" .. tostring(stepIndex) .. ":TEXT"
+ local stringID = getDbProp(dbPath)
+ local uctext = getDynString(stringID)
+ local text = uctext:toUtf8()
+ if text ~= "" and game.WebMissionLastDesc[stepIndex] ~= text then
+ game.WebMissionLastDesc[stepIndex] = text
+ if string.sub(text, 1, 4) == "@WEB" then
+ text = string.sub(text, 6)
+ haveWeb = true
+ local win = getUI(descWnd.id..":web:html")
+ for web, final_text in string.gmatch(text, "(.*)\n@@@\n(.*)") do
+ win:renderHtml(web)
+ currStep.hardtext = final_text
+ break
+ end
+ else
+ currStep.uc_hardtext = uctext
+ end
+ end
+ end
+
+ if (game.WebMissionLastDesc[stepIndex] ~= nil) and (string.sub(game.WebMissionLastDesc[stepIndex], 1, 4) == "@WEB") then
+ haveWeb = true
+ end
+ end
+
+ if haveWeb then
+ getUI(descWnd.id..":web").h = 56
+ else
+ getUI(descWnd.id..":web").h = 0
+ end
+
+ local base = "ui:interface:info_player_journal:content:"
+ local fake = getUI(base.."fake")
+ local missionCB = getUI(base.."mission_combo")
+ local missionL = getUI(base.."mission_list")
+ local desc = getUI(base.."desc")
+ local win = getUI("ui:interface:info_player_journal")
+
+ if missionCB.active then
+ fake.sizeref=""
+ fake.h = 70
+ else
+ if win.h > 200 then
+ desc.max_sizeref ="wh"
+ desc.max_h = -missionL.h + missionL.y
+ if win.h > 2*(missionL.h - missionL.y) then
+ fake.sizeref=""
+ fake.h = missionL.h - missionL.y - 7
+ else
+ fake.sizeref = "wh5"
+ fake.h = 0
+ end
+ else
+ fake.sizeref = "wh5"
+ fake.h = 0
+ desc.max_sizeref = "wh5"
+ desc.max_h = -5
+ end
+ end
+end
+
--------------------------------------------------------------------------------------------------------------
-- This handler is triggered when a new mission has been added. In this case, we select the mission automatically
function game:onNewMissionAdded(missionIndex)
+ setOnDraw(missionWnd, "game:ensureWebMissionVisibility()")
debugInfo("Mission " .. missionIndex .. " has been added")
+ game.WebMissionLastDesc = {}
end
+
+--------------------------------------------------------------------------------------------------------------
+-- RPJOBS
+
+function game:addRpJob(jobtype, id, value, rpjobs)
+ local base_path = "ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id..":rpjob_"..jobtype.."_infos_"..id
+
+ local group = getUI("ui:interface:info_player_skills:content:rpjobs:rpjob_"..jobtype.."_"..id)
+
+ if (value == nil) then
+ group.active = false
+ else
+ local name = "rpjob_" .. string.format("%03d", value)
+ local sitem = name..".sitem"
+ if (rpjobs[sitem] == nil) then
+ group.active = false
+ else
+ group.active = true
+
+ local echelon_value = rpjobs[sitem][1]
+ local quantity = rpjobs[sitem][2]
+
+ local maxlevel = (echelon_value*6)-30
+
+ if (quantity > maxlevel) then
+ quantity = maxlevel
+ end
+
+ local base = getUI(base_path..":t")
+ base.hardtext = i18n.get(name):toUtf8()
+ local ui = getUI(base_path..":icon")
+ ui.texture = name..".tga"
+ local echelon = getUI(base_path..":echelon_value")
+ echelon.hardtext = tostring(echelon_value/10)
+ local bar = getUI(base_path..":bar3d:level")
+ local t = getUI(base_path..":bar3d:t")
+ if (echelon_value >= 60) then
+ bar.color = "255 0 0 255"
+ bar.w = "368"
+ t.hardtext = i18n.get("uiRpjobMaxLevel"):toUtf8()
+ t.color = "255 255 0 255"
+ else
+ bar.color = tostring(math.floor((105*quantity)/maxlevel)).." "..tostring(100+math.floor((155*quantity)/maxlevel)).." "..tostring(math.floor((105*quantity)/maxlevel)).." 255"
+ bar.w = tostring((368*quantity)/maxlevel)
+ t.hardtext = tostring(quantity).." / "..tostring(maxlevel)
+ t.color = tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." "..tostring(255*math.floor(3*(maxlevel-quantity)/maxlevel)).." 255"
+ end
+ end
+ end
+end
+
+
+function game:getRPJobs()
+ rpjobs_advanced = {}
+ rpjobs_elementary = {}
+ rpjobs_roleplay = {}
+ rpjobs = {}
+
+ for i = 0, 499, 1 do
+ local sheet = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":SHEET")
+ if (sheet ~= 0) then
+ local name = getSheetName(sheet)
+ if (string.sub(name, 0, 6) == "rpjob_") then
+ local quality = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUALITY")
+ local quantity = getDbProp("SERVER:INVENTORY:BAG:"..tostring(i)..":QUANTITY")
+
+ if (name == "rpjob_advanced.sitem") then
+ table.insert(rpjobs_advanced, quality)
+ else
+ if (name == "rpjob_elementary.sitem") then
+ table.insert(rpjobs_elementary, quality)
+ else
+ if (name == "rpjob_roleplay.sitem") then
+ table.insert(rpjobs_roleplay, quality)
+ else
+ if rpjobs[name] == nil then
+ rpjobs[name] = {quality, quantity}
+ else
+ if rpjobs[name][1] < quality then
+ rpjobs[name] = {quality, quantity}
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
+ for id=1,2,1 do
+ game:addRpJob("advanced", id, rpjobs_advanced[id], rpjobs)
+ end
+
+ for id=1,3,1 do
+ game:addRpJob("elementary", id, rpjobs_elementary[id], rpjobs)
+ end
+
+
+end
+
+--------------------------------------------------------------------------------------------------------------
+function game:setInfoPlayerCharacterRace()
+ getUI("ui:interface:info_player_skills:content:basics_skills:character_race_name").uc_hardtext = i18n.get("io"..getUserRace())
+end
+
+function game:arkTitlesAddClassics()
+ runAH(nil, "title_init_combobox", "")
+ local cb = getUI("ui:interface:info_player_skills:content:webinfos:title:player_title")
+ local ui = getUI("ui:interface:encyclopedia:content:htmlC")
+ local html = [[]]
+
+ local titles = {}
+ for i=0,cb:getNumTexts()-1 do
+ table.insert(titles, tostring(cb:getText(i)))
+ end
+ table.sort(titles)
+ for i,title in ipairs(titles) do
+ html = html .. [[]]
+ end
+ html = html .. [[
]]
+ ui:renderHtml(html)
+end
+
+
+
+-- --------------------------------------------------------------------------------------------------------------
+-- game.preInitTimer = 0
+-- function game:preInitWebIgAppsLoop()
+ -- if game.preInitTimer == nil then game.preInitTimer = 0 end
+
+ -- game.preInitTimer = game.preInitTimer - 1
+ -- if (not game.preWebIgAppsInitialized) and game.preInitTimer < 0 then
+ -- debugInfo("initWebIgAppsLoop(): calling app_ig_preinit.php")
+ -- getUI("ui:interface:web_transactions:content:html"):browse("http://atys.ryzom.com/start/app_ig_preinit.php")
+ -- game.preInitTimer = getDbProp("UI:SAVE:WEBIG_RETRY_DELAY")
+ -- end
+
+ -- if game.preWebIgAppsInitialized then
+ -- debugInfo("preInitWebIgAppsLoop(): Calling removeOnDbChange()")
+ -- removeOnDbChange(getUI("ui:interface"), "@UI:VARIABLES:CURRENT_SERVER_TICK")
+ -- end
+-- end
+
+-- --------------------------------------------------------------------------------------------------------------
+-- function game:preInitWebIgApps()
+ -- debugInfo("game:preInitWebIgApps()")
+ -- addOnDbChange(getUI("ui:interface"), "@UI:VARIABLES:CURRENT_SERVER_TICK", "game:preInitWebIgAppsLoop()")
+-- end
+
+-- --------------------------------------------------------------------------------------------------------------
+-- game.postInitTimer = 0
+-- function game:postInitWebIgAppsLoop()
+ -- if game.postInitTimer == nil then game.postInitTimer = 0 end
+
+ -- game.postInitTimer = game.postInitTimer - 1
+ -- if game.postInitTimer < 0 then
+ -- debugInfo("initWebIgAppsLoop(): calling app_ig_postinit.php")
+ -- getUI("ui:interface:web_transactions:content:html"):browse("http://atys.ryzom.com/start/app_ig_postinit.php")
+ -- game.postInitTimer = getDbProp("UI:SAVE:WEBIG_RETRY_DELAY")
+ -- end
+
+ -- if game.postWebIgAppsInitialized then
+ -- debugInfo("postInitWebIgAppsLoop(): Calling removeOnDbChange()")
+ -- removeOnDbChange(getUI("ui:interface:milko_pad"), "@UI:VARIABLES:CURRENT_SERVER_TICK")
+ -- end
+-- end
+
+-- --------------------------------------------------------------------------------------------------------------
+-- function game:postInitWebIgApps()
+ -- debugInfo("game:postInitWebIgApps()")
+ -- addOnDbChange(getUI("ui:interface:milko_pad"), "@UI:VARIABLES:CURRENT_SERVER_TICK", "game:postInitWebIgAppsLoop()")
+-- end
+
+-- --------------------------------------------------------------------------------------------------------------
+-- function game:deinitWebIgApps()
+ -- debugInfo("game:deinitWebIgApps()")
+ -- game.preWebIgAppsInitialized = nil
+ -- game.postWebIgAppsInitialized = nil
+ -- titleSetted = nil
+-- end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/info_player.xml b/ryzom/client/data/gamedev/interfaces_v3/info_player.xml
index 7edb0beb2..35df84f21 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/info_player.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/info_player.xml
@@ -1,1359 +1,848 @@
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/input_config_v3.xml b/ryzom/client/data/gamedev/interfaces_v3/input_config_v3.xml
index fe2c858d7..ff19f59c9 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/input_config_v3.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/input_config_v3.xml
@@ -1,95 +1,88 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/interaction.lua b/ryzom/client/data/gamedev/interfaces_v3/interaction.lua
index f0e07d484..21f5ef617 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/interaction.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/interaction.lua
@@ -3,8 +3,8 @@
------------------------------------------------------------------------------------------------------------
-- create the game namespace without reseting if already created in an other file.
-if (game==nil) then
- game= {};
+if (game == nil) then
+ game={}
end
if (game.ui_props == nil) then
@@ -34,30 +34,30 @@ end
-- called when server send an invitaion we receive a text id containing the string to display (invitor name)
function game:onTeamInvation(textID)
- local ui = getUI('ui:interface:join_team_proposal');
- ui.content.inside.invitor_name.textid = textID;
- ui.active = true;
- setTopWindow(ui);
- ui:center();
- ui:blink(2);
+ local ui = getUI('ui:interface:join_team_proposal')
+ ui.content.inside.invitor_name.textid = textID
+ ui.active = true
+ setTopWindow(ui)
+ ui:center()
+ ui:blink(2)
end
------------------------------------------------------------------------------------------------------------
--
function game:teamInvitationAccept()
- local ui = getUI('ui:interface:join_team_proposal');
- ui.active = false;
- sendMsgToServer('TEAM:JOIN');
+ local ui = getUI('ui:interface:join_team_proposal')
+ ui.active = false
+ sendMsgToServer('TEAM:JOIN')
end
------------------------------------------------------------------------------------------------------------
--
function game:teamInvitationRefuse()
- local ui = getUI('ui:interface:join_team_proposal');
- ui.active = false;
- sendMsgToServer('TEAM:JOIN_PROPOSAL_DECLINE');
+ local ui = getUI('ui:interface:join_team_proposal')
+ ui.active = false
+ sendMsgToServer('TEAM:JOIN_PROPOSAL_DECLINE')
end
------------------------------------------------------------------------------------------------------------
@@ -105,13 +105,13 @@ end
------------------------------------------------------------------------------------------------------------
--
function game:switchChatTab(dbEntry)
- local db= 'UI:SAVE:ISENABLED:' .. dbEntry;
- local val= getDbProp(db);
+ local db= 'UI:SAVE:ISENABLED:' .. dbEntry
+ local val= getDbProp(db)
-- switch value
if(val==0) then
- setDbProp(db, 1);
+ setDbProp(db, 1)
else
- setDbProp(db, 0);
+ setDbProp(db, 0)
end
end
@@ -125,12 +125,12 @@ function game:updateEmoteMenu(prop, tooltip, tooltip_pushed, name, param)
if (key ~= nil and key ~= '') then
key = ' @{T25}@{2F2F}(' .. key .. ')';
- text = concatString(text, key);
+ text = concatUCString(text, key);
end
-- if we don't do the full getUI, it doesn't work (don't understand why)
local uiQC= getUI("ui:interface:user_chat_emote_menu:quick_chat:" .. "qc" .. i);
- uiQC.text_format= text;
+ uiQC.uc_hardtext_format= text;
end
end
@@ -423,7 +423,7 @@ function game:updateTargetConsiderUI()
end
if impossible then
- wgToolTip.tooltip = concatString(wgToolTip.tooltip, "\n", i18n.get("uittConsiderUnknownLevel"))
+ wgToolTip.tooltip = concatUCString(wgToolTip.tooltip, ucstring("\n"), i18n.get("uittConsiderUnknownLevel"))
end
end
@@ -593,16 +593,16 @@ end
------------------------------------------------------------------------------------------------------------
--
function game:closeWebIGBrowserHeader()
- local ui = getUI('ui:interface:webig');
+ local ui = getUI('ui:interface:webig')
-- save size
- ui_webig_browser_h = ui.h;
- ui_webig_browser_w = ui.w;
+ ui_webig_browser_h = ui.h
+ ui_webig_browser_w = ui.w
-- reduce window size
- ui.pop_min_h = 32;
- ui.h = 0;
- ui.w = 150;
+ ui.pop_min_h = 32
+ ui.h = 0
+ ui.w = 150
end
------------------------------------------------------------------------------------------------------------
@@ -685,7 +685,7 @@ end
local SavedUrl = "";
function game:chatUrl(url)
SavedUrl = url
- runAH(nil, "active_menu", "menu=ui:interface:chat_uri_action_menu");
+ runAH(nil, "active_menu", "menu=ui:interface:chat_uri_action_menu")
end
function game:chatUrlCopy()
runAH(nil, "copy_to_clipboard", SavedUrl)
diff --git a/ryzom/client/data/gamedev/interfaces_v3/interaction.xml b/ryzom/client/data/gamedev/interfaces_v3/interaction.xml
index 2ac3bb2d6..1af20d1ea 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/interaction.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/interaction.xml
@@ -1,848 +1,831 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/inventory.xml b/ryzom/client/data/gamedev/interfaces_v3/inventory.xml
index 22488527c..8c3f3af1a 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/inventory.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/inventory.xml
@@ -1,1175 +1,735 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys.xml b/ryzom/client/data/gamedev/interfaces_v3/keys.xml
index c55b76650..3b76c887b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys.xml
@@ -1,329 +1,315 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wasd.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wasd.xml
index b3da2fcbb..82486aef0 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wasd.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wasd.xml
@@ -1,305 +1,291 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wow_alike.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wow_alike.xml
index cf8a68b15..576c7b72c 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wow_alike.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_bi.wow_alike.xml
@@ -1,201 +1,202 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_bi.zqsd.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_bi.zqsd.xml
index a932a072f..4e853d3e8 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_bi.zqsd.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_bi.zqsd.xml
@@ -1,305 +1,291 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed.xml
index 65c7603cd..a4f0543d0 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed.xml
@@ -1,236 +1,216 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wasd.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wasd.xml
index 69f4e84cb..bdc1aee1b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wasd.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wasd.xml
@@ -1,235 +1,214 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wow_alike.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wow_alike.xml
index 65c7603cd..a4f0543d0 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wow_alike.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.wow_alike.xml
@@ -1,236 +1,216 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.zqsd.xml b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.zqsd.xml
index e8510c0f1..3899f9eac 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.zqsd.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/keys_r2ed_bi.zqsd.xml
@@ -1,235 +1,214 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/local_database.xml b/ryzom/client/data/gamedev/interfaces_v3/local_database.xml
index 65e861561..7d5dc1cba 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/local_database.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/local_database.xml
@@ -1,375 +1,378 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/login_config.xml b/ryzom/client/data/gamedev/interfaces_v3/login_config.xml
index 9a18a0393..d9fc5ad9b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/login_config.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/login_config.xml
@@ -1,540 +1,542 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/login_keys.xml b/ryzom/client/data/gamedev/interfaces_v3/login_keys.xml
index 8776797c8..c1783ac16 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/login_keys.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/login_keys.xml
@@ -1,34 +1,31 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/login_main.xml b/ryzom/client/data/gamedev/interfaces_v3/login_main.xml
index bd8f25880..3590d364d 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/login_main.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/login_main.xml
@@ -1,872 +1,457 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/login_widgets.xml b/ryzom/client/data/gamedev/interfaces_v3/login_widgets.xml
index 37c62b2a1..0cc846cbf 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/login_widgets.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/login_widgets.xml
@@ -1,1054 +1,499 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
-
-
-
-
-
+
-
-
+
-
-
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
--->
-
-
-
-
+
+
+
+
+
+
+
+
+
+-->
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
-
-
-
-
+
+
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/macros.xml b/ryzom/client/data/gamedev/interfaces_v3/macros.xml
index ad4c42917..76d20a445 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/macros.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/macros.xml
@@ -1,676 +1,394 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/map.lua b/ryzom/client/data/gamedev/interfaces_v3/map.lua
index 7542ee070..659af6447 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/map.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/map.lua
@@ -115,6 +115,32 @@ function game:onLoadMap(map)
end
+function game:openFullMap()
+ local ui = getUI("ui:interface:map")
+ if ui.active == false then
+ ui.active = true
+ end
+
+ if game.saveMapFull then
+ game.saveMapFull = false
+ ui.x = game.saveMapX
+ ui.y = game.saveMapY
+ ui.w = game.saveMapW
+ ui.h = game.saveMapH
+ else
+ game.saveMapFull = true
+ game.saveMapX = ui.x
+ game.saveMapY = ui.y
+ game.saveMapW = ui.w
+ game.saveMapH = ui.h
+ ui.x = 0
+ ui.y = 0
+ ui.w = getUI("ui:interface").w
+ ui.h = getUI("ui:interface").h
+ setTopWindow(ui)
+ end
+end
+
-- register map overrride
-- game:setAltMap("fyros_map.tga", "fyros_map_sp.tga")
diff --git a/ryzom/client/data/gamedev/interfaces_v3/map.xml b/ryzom/client/data/gamedev/interfaces_v3/map.xml
index 960655646..332107cc6 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/map.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/map.xml
@@ -1,635 +1,272 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.lua b/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.lua
index 605a5be18..43727200a 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.lua
@@ -353,7 +353,7 @@ end
-- local text = self:getProgressGroup():find("text")
-- local ellipsisTxt = self:getProgressGroup():find("ellipsis")
-- text.color = color
--- text.text = ucstr
+-- text.uc_hardtext = ucstr
-- if ellipsis then
-- ellipsisTxt.hardtext = ellipsis
-- else
@@ -378,7 +378,7 @@ end
-- local progressDate = nltime.getLocalTime() / 500
-- local colValue = math.floor(230 + 24 * math.sin(progressDate))
-- local color = string.format("%d %d %d %d", colValue, colValue, colValue, 255)
--- self:setProgressText(concatString(i18n.get("uiBGD_Progress"), progressPercentText), color, progress, progressSymbol[progressPostfix + 1])
+-- self:setProgressText(concatUCString(i18n.get("uiBGD_Progress"), ucstring(progressPercentText)), color, progress, progressSymbol[progressPostfix + 1])
--end
--
--function outgame:setPatchSuccess()
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.xml
index 6f7f7d500..9dd03b8c4 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_appear.xml
@@ -1,2732 +1,1759 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml
index 4f761ff8b..fb8fb54b6 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_config.xml
@@ -1,144 +1,126 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml
index 8acbe7d4e..87ad99f8f 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_connect.xml
@@ -1,84 +1,44 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml
index b69a5286f..fd60cdaef 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_crash.xml
@@ -1,32 +1,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_hierarchy.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_hierarchy.xml
index 691e42145..124d9613d 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_hierarchy.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_hierarchy.xml
@@ -1,27 +1,18 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_intro.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_intro.xml
index 04bc3cd19..9a16512a8 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_intro.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_intro.xml
@@ -1,249 +1,211 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_keys.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_keys.xml
index d7c994574..2292467b1 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_keys.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_keys.xml
@@ -1,42 +1,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_location.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_location.xml
index 02095b522..8fd943e97 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_location.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_location.xml
@@ -1,974 +1,661 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml
index 7e49ffe40..72e746ad3 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_select.xml
@@ -1,940 +1,551 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/out_v2_widgets.xml b/ryzom/client/data/gamedev/interfaces_v3/out_v2_widgets.xml
index 99794e094..62f7c2ebd 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/out_v2_widgets.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/out_v2_widgets.xml
@@ -1,198 +1,85 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_appear.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_appear.xml
index b75f9b40c..6a0c60068 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_appear.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_appear.xml
@@ -1,1504 +1,1024 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_career.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_career.xml
index b793b8f21..b2eb1ed30 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_career.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_career.xml
@@ -1,1059 +1,827 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_config.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_config.xml
index 53188529d..52f436c25 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_config.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_config.xml
@@ -1,128 +1,113 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_connect.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_connect.xml
index 3eaba6242..f58e2422a 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_connect.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_connect.xml
@@ -1,163 +1,102 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_crash.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_crash.xml
index 436573f92..eddaa311b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_crash.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_crash.xml
@@ -1,118 +1,70 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_hierarchy.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_hierarchy.xml
index 0f861dd8f..45025d03d 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_hierarchy.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_hierarchy.xml
@@ -1,23 +1,16 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_intro.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_intro.xml
index 3a92222a3..ec58124e8 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_intro.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_intro.xml
@@ -1,287 +1,201 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_keys.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_keys.xml
index 21ad45062..ad673d513 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_keys.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_keys.xml
@@ -1,39 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_location.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_location.xml
index 8423c2c12..616763866 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_location.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_location.xml
@@ -1,512 +1,319 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_select.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_select.xml
index 34df347eb..e6a3bb1d7 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_select.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_select.xml
@@ -1,1327 +1,965 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_specie.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_specie.xml
index ca798af0a..797c4cbd3 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_specie.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_specie.xml
@@ -1,1156 +1,846 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_summary.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_summary.xml
index beef8bd96..66c8cf65a 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_summary.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_summary.xml
@@ -1,923 +1,613 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outgame_widgets.xml b/ryzom/client/data/gamedev/interfaces_v3/outgame_widgets.xml
index 0774c4de8..0d858aac7 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outgame_widgets.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outgame_widgets.xml
@@ -1,258 +1,204 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outpost.lua b/ryzom/client/data/gamedev/interfaces_v3/outpost.lua
index 3c884a680..77f1b1125 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outpost.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/outpost.lua
@@ -45,7 +45,7 @@ end
function game:outpostDisplayTimeZone(uiLocal)
local tz= getDbProp('UI:SAVE:OUTPOST:TIME_ZONE');
local uiGroup= getUICaller();
- uiGroup[uiLocal].text= 'GMT ' .. string.format('%+d', tz);
+ uiGroup[uiLocal].uc_hardtext= 'GMT ' .. string.format('%+d', tz);
end
------------------------------------------------------------------------------------------------------------
@@ -57,7 +57,7 @@ function game:outpostAdjustHour(uiLocal, prop)
-- add time zone and clamp hour
h = math.fmod(h + tz + 24, 24);
- uiGroup[uiLocal].text = string.format('%02d:00', h);
+ uiGroup[uiLocal].uc_hardtext = string.format('%02d:00', h);
end
------------------------------------------------------------------------------------------------------------
@@ -220,9 +220,9 @@ function game:outpostInfoOnDraw()
-- readable form
if (status == self.OutpostEnums.Peace) then
- uiGroup.Env.Timer.text= '';
+ uiGroup.Env.Timer.uc_hardtext= '';
else
- uiGroup.Env.Timer.text= '(' .. runFct('secondsToTimeString', timeSec) .. ')';
+ uiGroup.Env.Timer.uc_hardtext= '(' .. runFct('secondsToTimeString', timeSec) .. ')';
end
end
@@ -448,7 +448,7 @@ end
function game:outpostDisplayStatusInfo(statusExpr, id)
local uiGroup = getUICaller();
local text = self:outpostGetStatusInfo(statusExpr, -1, 'no');
- uiGroup[id].text_format = text;
+ uiGroup[id].uc_hardtext_format = text;
end
------------------------------------------------------------------------------------------------------------
@@ -487,7 +487,7 @@ function game:outpostChangeRoundLvlThreshold()
local val= getDbProp(path .. ':ROUND_LVL_THRESHOLD');
-- setup text
- uiGroup.outpost_lvl_thre.text= tostring(val);
+ uiGroup.outpost_lvl_thre.uc_hardtext= tostring(val);
end
@@ -504,9 +504,9 @@ function game:outpostChangeRoundLvlMaxAtt()
-- setup text (only relevant when attack period has begun)
if(status>=self.OutpostEnums.AttackRound) then
- uiGroup.outpost_lvl_max_att.text= tostring(val);
+ uiGroup.outpost_lvl_max_att.uc_hardtext= tostring(val);
else
- uiGroup.outpost_lvl_max_att.text= '- ';
+ uiGroup.outpost_lvl_max_att.uc_hardtext= '- ';
end
end
@@ -524,9 +524,9 @@ function game:outpostChangeRoundLvlMaxDef()
-- setup text (only relevant in War)
if(status>=self.OutpostEnums.DefenseRound) then
- uiGroup.outpost_lvl_max_def.text= tostring(val);
+ uiGroup.outpost_lvl_max_def.uc_hardtext= tostring(val);
else
- uiGroup.outpost_lvl_max_def.text= '- ';
+ uiGroup.outpost_lvl_max_def.uc_hardtext= '- ';
end
end
@@ -546,9 +546,9 @@ function game:outpostChangeRoundLvlCur()
-- setup text (only in a Attack/Defense Round)
if(self:outpostIsStatusWarRound(status)) then
- uiGroup.outpost_lvl_cur.text= tostring(val);
+ uiGroup.outpost_lvl_cur.uc_hardtext= tostring(val);
else
- uiGroup.outpost_lvl_cur.text= '- ';
+ uiGroup.outpost_lvl_cur.uc_hardtext= '- ';
end
end
@@ -569,9 +569,9 @@ function game:outpostChangeRoundId()
-- setup text (only in a Attack/Defense Round)
if(self:outpostIsStatusWarRound(status)) then
- uiGroup.outpost_round_cur.text= tostring(val) .. ' / ' .. tostring(maxRound);
+ uiGroup.outpost_round_cur.uc_hardtext= tostring(val) .. ' / ' .. tostring(maxRound);
else
- uiGroup.outpost_round_cur.text= '- ';
+ uiGroup.outpost_round_cur.uc_hardtext= '- ';
end
end
@@ -607,7 +607,7 @@ function game:outpostPvpJoinTimerOnDraw()
-- replace in str
local text= i18n.get('uiOutpostJoinPVPTimer');
text= findReplaceAll(text, "%time", tostring(timeSec));
- uiGroup.Env.Timer.text_format= text;
+ uiGroup.Env.Timer.uc_hardtext_format= text;
end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/outpost.xml b/ryzom/client/data/gamedev/interfaces_v3/outpost.xml
index ea6bf35bb..ed52f3c65 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/outpost.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/outpost.xml
@@ -1,1104 +1,734 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/phrase.xml b/ryzom/client/data/gamedev/interfaces_v3/phrase.xml
index 6f6714b3b..4c3d756c5 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/phrase.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/phrase.xml
@@ -1,841 +1,523 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/player.lua b/ryzom/client/data/gamedev/interfaces_v3/player.lua
index 96dc81962..4a03a2a87 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/player.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/player.lua
@@ -329,7 +329,7 @@ function game:playerTTPvp()
elseif(buttonMode==1 and buttonPushed) then
text = i18n.get('uittPvPModeTagOnChange');
else
- text = "";
+ text = ucstring();
end
-- timer
if(buttonTimer) then
@@ -338,7 +338,7 @@ function game:playerTTPvp()
local tempsString = game:formatTime( pvpServerTagTimer - currentServerTick );
local timeFmt= i18n.get('uittPvPTagTimer');
timeFmt= findReplaceAll(timeFmt, '%temps', tempsString);
- text= concatString(text, timeFmt);
+ text= concatUCString(text, timeFmt);
end
end
@@ -367,12 +367,12 @@ end
function game:bonusMalusSetText(ui, slot, fmt)
local uiTextGroup= ui["text" .. tostring(slot) ];
if(uiTextGroup) then
- uiTextGroup.shade0.text_format= fmt;
- uiTextGroup.shade1.text_format= fmt;
- uiTextGroup.shade2.text_format= fmt;
- uiTextGroup.shade3.text_format= fmt;
- uiTextGroup.text.text_format= fmt;
- uiTextGroup.text2.text_format= fmt;
+ uiTextGroup.shade0.uc_hardtext_format= fmt;
+ uiTextGroup.shade1.uc_hardtext_format= fmt;
+ uiTextGroup.shade2.uc_hardtext_format= fmt;
+ uiTextGroup.shade3.uc_hardtext_format= fmt;
+ uiTextGroup.text.uc_hardtext_format= fmt;
+ uiTextGroup.text2.uc_hardtext_format= fmt;
end
end
@@ -822,7 +822,7 @@ function game:setPhraseTooltipCarac(ttWin, name, value, textValue)
icon.active = true
text.active = true
if textValue ~= nil then
- text.text = textValue
+ text.uc_hardtext = textValue
else
text.hardtext = tostring(value)
end
@@ -835,9 +835,9 @@ function game:timeInSecondsToReadableTime(regenTime)
local minutes = math.fmod(math.floor(regenTime / 60), 60)
local hours = math.floor(regenTime / 3600)
local result = ""
- if seconds > 0 then result = concatString(tostring(seconds), i18n.get("uittSecondsShort")) end
- if minutes > 0 then result = concatString(tostring(minutes), i18n.get("uittMinutesShort"), result) end
- if hours > 0 then result = concatString(tostring(hours), i18n.get("uittHoursShort"), result) end
+ if seconds > 0 then result = concatUCString(tostring(seconds), i18n.get("uittSecondsShort")) end
+ if minutes > 0 then result = concatUCString(tostring(minutes), i18n.get("uittMinutesShort"), result) end
+ if hours > 0 then result = concatUCString(tostring(hours), i18n.get("uittHoursShort"), result) end
return result
end
@@ -849,12 +849,15 @@ function game:setPhraseTooltipPowerRegenTime(ttWin, regenTimeInTicks)
text.active = false
else
text.active = true
- text.text_single_line_format = concatString(i18n.get("uittRegenTime"), game:timeInSecondsToReadableTime(math.floor((regenTimeInTicks + 9) * 0.1)))
+ text.uc_hardtext_single_line_format = concatUCString(i18n.get("uittRegenTime"), game:timeInSecondsToReadableTime(math.floor((regenTimeInTicks + 9) * 0.1)))
text:invalidateCoords()
ttWin:invalidateCoords()
end
end
+
+local EmptyUCString = ucstring()
+
------------------------------------------------------------------------------------------------------------
-- called by C++ code when the tooltip of a phrase is about to be displayed
function game:updatePhraseTooltip(phrase)
@@ -862,12 +865,12 @@ function game:updatePhraseTooltip(phrase)
local ttWin = getUI("ui:interface:action_context_help")
local text = phrase:getName()
- if not text then
- text = ""
+ if not text or text == EmptyUCString then
+ text = ucstring("")
end
local desc = phrase:getDesc()
- if desc and desc ~= "" then
+ if desc and desc ~= EmptyUCString then
local str = tostring(desc)
local charFound = false
for k = 1, string.len(str) do
@@ -877,22 +880,22 @@ function game:updatePhraseTooltip(phrase)
end
end
if charFound then
- text = concatString(text, "\n@{CCCF}", desc)
+ text = concatUCString(text, "\n@{CCCF}", desc)
end
else
- text = concatString(text, "@{CCCF}")
+ text = concatUCString(text, "@{CCCF}")
end
-- IMPORTANT : the following getters on 'phrase' take in account the 'total action malus' for the timebeing
self:setPhraseTooltipCarac(ttWin, "hp_cost", phrase:getHpCost())
self:setPhraseTooltipCarac(ttWin, "sta_cost", phrase:getStaCost())
self:setPhraseTooltipCarac(ttWin, "sap_cost", phrase:getSapCost())
self:setPhraseTooltipCarac(ttWin, "focus_cost", phrase:getFocusCost())
- self:setPhraseTooltipCarac(ttWin, "cast_time", phrase:getCastTime(), concatString(string.format("%.1f", phrase:getCastTime()), i18n.get("uittSeconds")))
+ self:setPhraseTooltipCarac(ttWin, "cast_time", phrase:getCastTime(), concatUCString(string.format("%.1f", phrase:getCastTime()), i18n.get("uittSeconds")))
local castRange = phrase:getCastRange()
if not phrase:isMagicPhrase() then
castRange = 0
end
- self:setPhraseTooltipCarac(ttWin, "cast_range", castRange, concatString(tostring(castRange), i18n.get("uittMeters")))
+ self:setPhraseTooltipCarac(ttWin, "cast_range", castRange, concatUCString(tostring(castRange), i18n.get("uittMeters")))
-- if the phrase is a power / aura, then we may want to display its regen time in the tooltip
if phrase:isPowerPhrase() then
setOnDraw(ttWin, "game:updatePowerPhraseTooltip()")
@@ -906,7 +909,7 @@ function game:updatePhraseTooltip(phrase)
successRateText.active = false
else
successRateText.active = true
- successRateText.text_single_line_format = concatString(i18n.get("uittSuccessRate"), tostring(successRate), " %")
+ successRateText.uc_hardtext_single_line_format = concatUCString(i18n.get("uittSuccessRate"), tostring(successRate), " %")
end
local disableTimeText = ttWin:find("disable_time")
@@ -916,7 +919,7 @@ function game:updatePhraseTooltip(phrase)
disableTimeText.active = false
else
disableTimeText.active = true
- disableTimeText.text_single_line_format = concatString(i18n.get("uittDisableTime"), game:timeInSecondsToReadableTime(disableTime / 10))
+ disableTimeText.uc_hardtext_single_line_format = concatUCString(i18n.get("uittDisableTime"), game:timeInSecondsToReadableTime(disableTime / 10))
end
else
disableTimeText.active = false
@@ -951,9 +954,9 @@ end
------------------------------------------------------------------------------------------------------------
-- called by C++ code when the tooltip of a buff item is about to be displayed
function game:updateBuffItemTooltip(buffItem)
- local ttWin = getUI("ui:interface:buff_item_context_help")
+ local ttWin = getUI("ui:interface:buff_item_context_help")
local item = buffItem:getItemInfo()
- local text = buffItem:getName()
+ local text = buffItem:getName()
self:setPhraseTooltipCarac(ttWin, "hp_buff", item.HpBuff)
self:setPhraseTooltipCarac(ttWin, "sta_buff", item.StaBuff)
@@ -970,7 +973,8 @@ function game:updateBuffItemTooltip(buffItem)
ttWin:find("durability_max").hardtext = item.HpMax
end
- updateTooltipCoords()
+ updateTooltipCoords()
+
return text
end
@@ -1006,12 +1010,12 @@ function game:updatePhraseFaberPreview(dbPath)
local name = ui:find("name")
if (name ~= nil) then
- ui:find("name").hardtext = getSheetLocalizedName(sheet)
+ ui:find("name").uc_hardtext = getSheetLocalizedName(sheet)
end
local desc = ui:find("desc")
if (desc ~= nil) then
- ui:find("desc").hardtext = getSheetLocalizedDesc(sheet)
+ ui:find("desc").uc_hardtext = getSheetLocalizedDesc(sheet)
end
end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/player.xml b/ryzom/client/data/gamedev/interfaces_v3/player.xml
index 8a6455e8d..df1cd74ff 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/player.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/player.xml
@@ -1,394 +1,378 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/player_trade.lua b/ryzom/client/data/gamedev/interfaces_v3/player_trade.lua
new file mode 100644
index 000000000..f80911a10
--- /dev/null
+++ b/ryzom/client/data/gamedev/interfaces_v3/player_trade.lua
@@ -0,0 +1,32 @@
+-- In this file we define functions that serves for player windows
+local base = "ui:interface:player_trade:header_opened";
+local slots = 10; -- Change in local_database.xml, database.xml and NbExchangeSlots on server
+
+------------------------------------------------------------------------------------------------------------
+-- create the game namespace without reseting if already created in an other file.
+if (game==nil) then
+ game= {};
+end
+
+------------------------------------------------------------------------------------------------------------
+-- Update weight and bulk indicator in trade window for receive side
+function game:updateReceiveBulkAndWeight()
+ getUI(base .. ":receive:bulk_txt").hardtext = tostring(getBulk("RECEIVE"));
+ getUI(base .. ":receive:weight_txt").hardtext = tostring(getWeight("RECEIVE"));
+end
+
+-- Update weight and bulk indicator in trade window for give side
+function game:updateGiveBulkAndWeight()
+ getUI(base .. ":give:bulk_txt").hardtext = tostring(getBulk("GIVE"));
+ getUI(base .. ":give:weight_txt").hardtext = tostring(getWeight("GIVE"));
+end
+
+function getWeight(inventory)
+ local weight = runExpr("getItemsWeight('LOCAL:EXCHANGE:"..inventory.."', 0," .. slots .. ")");
+ return math.floor(weight * 100) / 100;
+end
+
+function getBulk(inventory)
+ local bulk = runExpr("getItemsBulk('LOCAL:EXCHANGE:"..inventory.."', 0," .. slots .. ")");
+ return math.floor(bulk * 100) / 100;
+end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/player_trade.xml b/ryzom/client/data/gamedev/interfaces_v3/player_trade.xml
index d0b6e8b1f..14e6bb347 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/player_trade.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/player_trade.xml
@@ -1,378 +1,241 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/r2_logic_entities.xml b/ryzom/client/data/gamedev/interfaces_v3/r2_logic_entities.xml
index b126c6f05..a5f46220b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/r2_logic_entities.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/r2_logic_entities.xml
@@ -1,574 +1,281 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/r2_triggers.xml b/ryzom/client/data/gamedev/interfaces_v3/r2_triggers.xml
index 8647e7792..6cb8e4743 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/r2_triggers.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/r2_triggers.xml
@@ -1,780 +1,322 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/r2ed.xml b/ryzom/client/data/gamedev/interfaces_v3/r2ed.xml
index 24139901a..6acda139c 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/r2ed.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/r2ed.xml
@@ -1,1491 +1,701 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
- |
-
-
-
-
- |
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/r2ed_acts.xml b/ryzom/client/data/gamedev/interfaces_v3/r2ed_acts.xml
index bacc3a881..b29e9a419 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/r2ed_acts.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/r2ed_acts.xml
@@ -1,697 +1,269 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/r2ed_connect.xml b/ryzom/client/data/gamedev/interfaces_v3/r2ed_connect.xml
index efdae02e4..a7dbed0e8 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/r2ed_connect.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/r2ed_connect.xml
@@ -1,50 +1,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/r2ed_scenario.xml b/ryzom/client/data/gamedev/interfaces_v3/r2ed_scenario.xml
index d95833ea6..3c1cf7395 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/r2ed_scenario.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/r2ed_scenario.xml
@@ -1,1065 +1,526 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/reset.xml b/ryzom/client/data/gamedev/interfaces_v3/reset.xml
index 4961bcc08..0bce5329b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/reset.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/reset.xml
@@ -3,534 +3,460 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/ring_access_point.lua b/ryzom/client/data/gamedev/interfaces_v3/ring_access_point.lua
index 92573ef38..ca04561f1 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/ring_access_point.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/ring_access_point.lua
@@ -200,7 +200,7 @@ end
--***********************************************************************
function RingAccessPoint:initScenarioTypes()
for k = 0, 6 do
- self.ScenarioTypeToUtf8[k] = i18n.get("uiRAP_ST_" .. tostring(k))
+ self.ScenarioTypeToUtf8[k] = i18n.get("uiRAP_ST_" .. tostring(k)):toUtf8()
end
end
@@ -227,33 +227,38 @@ function RingAccessPoint:getColumn(name)
return getUI("ui:interface:ring_sessions:content:main:enclosing:columns:getw:column_group:" .. name .. ":values")
end
+
--***********************************************************************
function RingAccessPoint:getSelectList()
return getUI("ui:interface:ring_sessions:content:main:enclosing:columns:getw:select")
--return getUI("ui:interface:checkpass:content:enclosing:select")
end
+
+local scratchUCStr = ucstring()
+
--***********************************************************************
function RingAccessPoint:newTemplate(name, cache)
local group
- if #cache ~= 0 then
- group = cache[#cache]
- table.remove(cache, #cache)
+ if table.getn(cache) ~= 0 then
+ group = cache[table.getn(cache)]
+ table.remove(cache, table.getn(cache))
else
group = createGroupInstance(name, "", {})
end
return group
end
-local lineFeed = "\n"
-local lineEnd = ". "
+local lineFeed = ucstring("\n")
+local lineEnd = ucstring(". ")
--***********************************************************************
-- build a new text group from utf8 text
function RingAccessPoint:newTextLabel(value)
local group = self:newTemplate("rap_text", self.TextCache)
- local str = findReplaceAll(value, lineFeed, lineEnd)
- group:find("t").text_single_line_format = str
+ scratchUCStr:fromUtf8(value)
+ scratchUCStr = findReplaceAll(scratchUCStr, lineFeed, lineEnd)
+ group:find("t").uc_hardtext_single_line_format = scratchUCStr
return group
end
@@ -261,14 +266,15 @@ end
-- build a new text group from utf8 text
function RingAccessPoint:newCenteredTextLabel(value)
local group = self:newTemplate("rap_text_centered", self.CenteredTextCache)
- group:find("t").text_single_line_format = value
+ scratchUCStr:fromUtf8(value)
+ group:find("t").uc_hardtext_single_line_format = scratchUCStr
return group
end
--***********************************************************************
function RingAccessPoint:newNumberLabel(value)
local group = self:newTemplate("rap_number", self.NumberCache)
- group:find("t").text_single_line_format = tostring(value)
+ group:find("t").uc_hardtext_single_line_format = tostring(value)
return group
end
@@ -318,7 +324,7 @@ function RingAccessPoint:addLine(line)
local level = line.Level-1
if level >= 0 and level <= 5 then
- self:getColumn("level"):addChild(self:newNumberLabel(i18n.get("uiRAP_Level" .. tostring(level))))
+ self:getColumn("level"):addChild(self:newNumberLabel(i18n.get("uiRAP_Level" .. tostring(level)):toUtf8()))
else
self:getColumn("level"):addChild(self:newNumberLabel("?"))
end
@@ -327,7 +333,7 @@ function RingAccessPoint:addLine(line)
if self.LangToTex[line.Language] ~= nil then
self:getColumn("language"):addChild(self:newBitmap(self.LangToTex[line.Language]))
elseif i18n.hasTranslation("uiR2ED" .. line.Language) then
- self:getColumn("language"):addChild(self:newCenteredTextLabel(i18n.get("uiR2ED" .. line.Language)))
+ self:getColumn("language"):addChild(self:newCenteredTextLabel(i18n.get("uiR2ED" .. line.Language):toUtf8()))
else
self:getColumn("language"):addChild(self:newCenteredTextLabel(line.Language))
end
@@ -455,10 +461,10 @@ function RingAccessPoint:fill(list)
self:putInCache()
--
-- ("***********************")
- --debugInfo("TextCache size = " .. #self.TextCache)
- --debugInfo("CenteredTextCache size = " .. #self.CenteredTextCache)
- --debugInfo("NumberCache size = " .. #self.NumberCache)
- --debugInfo("BitmapCache size = " .. #self.BitmapCache)
+ --debugInfo("TextCache size = " .. table.getn(self.TextCache))
+ --debugInfo("CenteredTextCache size = " .. table.getn(self.CenteredTextCache))
+ --debugInfo("NumberCache size = " .. table.getn(self.NumberCache))
+ --debugInfo("BitmapCache size = " .. table.getn(self.BitmapCache))
--self:clear()
self.CurrList = list
self.CurrActiveList = {}
@@ -521,7 +527,7 @@ function RingAccessPoint:setMessage(msg, color)
-- The version below set the msg in the middle of the window
--local errorTxt = self:getWindow():find("errorMsg")
- errorTxt.text = msg
+ errorTxt.uc_hardtext = msg
errorTxt.color = color
errorTxt.active=true
--self:getWindow():invalidateCoords()
@@ -549,7 +555,7 @@ end
function RingAccessPoint:sort(list)
local sortDir = self.SortDir
local function sorter(lhs, rhs)
- for k = 1, #sortDir do
+ for k = 1, table.getn(sortDir) do
if lhs[sortDir[k].Var] ~= rhs[sortDir[k].Var] then
if sortDir[k].Up then
return not sortDir[k].Cmp(lhs[sortDir[k].Var], rhs[sortDir[k].Var])
@@ -571,7 +577,7 @@ function RingAccessPoint:headerLeftClick(down, criterion)
parent.tup.active = not down
-- insert
local sortDir = self.SortDir
- for k = 1, #sortDir do
+ for k = 1, table.getn(sortDir) do
if sortDir[k].Var == criterion then
sortDir[k].Up = not sortDir[k].Up
table.insert(sortDir, 1, sortDir[k])
@@ -625,20 +631,20 @@ function RingAccessPoint:onLineSessionTooltip()
local activeLine = self.CurrActiveList[self:getSelectList():getElementIndex(getUICaller().parent) + 1]
local contextHelpText
if self:isInvited(activeLine.Flags) then
- contextHelpText = i18n.get("uiRAP_HowToJoin")
+ contextHelpText = i18n.get("uiRAP_HowToJoin"):toUtf8()
else
- contextHelpText = i18n.get("uiRAP_HowToBeInvited")
+ contextHelpText = i18n.get("uiRAP_HowToBeInvited"):toUtf8()
end
local desc = activeLine.Desc
if desc=="" then desc="-" end
- contextHelpText = contextHelpText .. "\n\n@{6F6F}" .. i18n.get("uiR2EDProp_LoadScenario_Description") .. " : @{FFFF}" .. desc .. "\n\n"
+ contextHelpText = contextHelpText .. "\n\n@{6F6F}" .. i18n.get("uiR2EDProp_LoadScenario_Description"):toUtf8() .. " : @{FFFF}" .. ucstring(desc):toUtf8() .. "\n\n"
- local rateFun = "@{6F6F}" .. i18n.get("uiRAP_RateFun") .. " : @{FFFF}"
- local rateDiff = "@{6F6F}" .. i18n.get("uiRAP_RateDifficulty") .. " : @{FFFF}"
- local rateAccess = "@{6F6F}" .. i18n.get("uiRAP_RateAccessibility") .. " : @{FFFF}"
- local rateOrig = "@{6F6F}" .. i18n.get("uiRAP_RateOriginality") .. " : @{FFFF}"
- local rateDirection = "@{6F6F}" .. i18n.get("uiRAP_RateDirection") .. " : @{FFFF}"
+ local rateFun = "@{6F6F}" .. i18n.get("uiRAP_RateFun"):toUtf8() .. " : @{FFFF}"
+ local rateDiff = "@{6F6F}" .. i18n.get("uiRAP_RateDifficulty"):toUtf8() .. " : @{FFFF}"
+ local rateAccess = "@{6F6F}" .. i18n.get("uiRAP_RateAccessibility"):toUtf8() .. " : @{FFFF}"
+ local rateOrig = "@{6F6F}" .. i18n.get("uiRAP_RateOriginality"):toUtf8() .. " : @{FFFF}"
+ local rateDirection = "@{6F6F}" .. i18n.get("uiRAP_RateDirection"):toUtf8() .. " : @{FFFF}"
if activeLine.NbRating>0 then
rateFun = rateFun .. tostring(math.min(100, activeLine.RateFun)) .. "/100"
@@ -647,11 +653,11 @@ function RingAccessPoint:onLineSessionTooltip()
rateOrig = rateOrig .. tostring(math.min(100, activeLine.RateOriginality)) .. "/100"
rateDirection = rateDirection .. tostring(math.min(100, activeLine.RateDirection)) .. "/100"
else
- rateFun = rateFun .. i18n.get("uiRAP_NoRate")
- rateDiff = rateDiff .. i18n.get("uiRAP_NoRate")
- rateAccess = rateAccess .. i18n.get("uiRAP_NoRate")
- rateOrig = rateOrig .. i18n.get("uiRAP_NoRate")
- rateDirection = rateDirection .. i18n.get("uiRAP_NoRate")
+ rateFun = rateFun .. i18n.get("uiRAP_NoRate"):toUtf8()
+ rateDiff = rateDiff .. i18n.get("uiRAP_NoRate"):toUtf8()
+ rateAccess = rateAccess .. i18n.get("uiRAP_NoRate"):toUtf8()
+ rateOrig = rateOrig .. i18n.get("uiRAP_NoRate"):toUtf8()
+ rateDirection = rateDirection .. i18n.get("uiRAP_NoRate"):toUtf8()
end
-- contextHelpText = contextHelpText .. rateFun .. "\n"
@@ -660,7 +666,9 @@ function RingAccessPoint:onLineSessionTooltip()
-- contextHelpText = contextHelpText .. rateOrig .. "\n"
-- contextHelpText = contextHelpText .. rateDirection .. "\n"
- setContextHelpText(contextHelpText)
+ local uc_contextHelpText = ucstring()
+ uc_contextHelpText:fromUtf8(contextHelpText)
+ setContextHelpText(uc_contextHelpText)
end
@@ -716,9 +724,10 @@ end
--***********************************************************************
function RingAccessPoint:onTell()
--debugInfo("tell to owner of session" .. self.SelectedSessionId)
- player = self:getSessionFromId(self.SelectedSessionId).Owner
+ player = ucstring()
+ player:fromUtf8(self:getSessionFromId(self.SelectedSessionId).Owner)
tell(player, i18n.get("uiRAP_AskForInvite"))
- displaySystemInfo(concatString(i18n.get("uiRAP_TellSentTo"), player), "BC")
+ displaySystemInfo(concatUCString(i18n.get("uiRAP_TellSentTo"), player), "BC")
end
--***********************************************************************
@@ -906,7 +915,7 @@ function RingAccessPoint:onDraw()
-- refreshText.active = false
--else
-- refreshText.active = true
- -- refreshText.text = waitText
+ -- refreshText.uc_hardtext = waitText
--end
end
else
diff --git a/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.lua b/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.lua
index 372db9d42..44a0451d7 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.lua
@@ -45,24 +45,24 @@ function game.RingAccessPointFilter:init()
local levelCB = filterScenarioWnd:find("level"):find("combo_box")
assert(levelCB)
levelCB:resetTexts()
- levelCB:addText(i18n.get("uiScenarioLevel_Any"))
- levelCB:addText("1-50")
- levelCB:addText("51-100")
- levelCB:addText("101-150")
- levelCB:addText("151-200")
- levelCB:addText("201-250")
+ levelCB:addText(ucstring(i18n.get("uiScenarioLevel_Any")))
+ levelCB:addText(ucstring("1-50"))
+ levelCB:addText(ucstring("51-100"))
+ levelCB:addText(ucstring("101-150"))
+ levelCB:addText(ucstring("151-200"))
+ levelCB:addText(ucstring("201-250"))
levelCB.selection = 0
local genreCB = filterScenarioWnd:find("genre"):find("combo_box")
assert(genreCB)
genreCB:resetTexts()
- genreCB:addText(i18n.get("uiScenarioOrient_Any"))
- genreCB:addText(i18n.get("uiScenarioOrient_NewbieTraining"))
- genreCB:addText(i18n.get("uiScenarioOrient_StoryTelling"))
- genreCB:addText(i18n.get("uiScenarioOrient_Mistery"))
- genreCB:addText(i18n.get("uiScenarioOrient_HackSlash"))
- genreCB:addText(i18n.get("uiScenarioOrient_GuildTraining"))
- genreCB:addText(i18n.get("uiScenarioOrient_Other"))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_Any")))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_NewbieTraining")))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_StoryTelling")))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_Mistery")))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_HackSlash")))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_GuildTraining")))
+ genreCB:addText(ucstring(i18n.get("uiScenarioOrient_Other")))
genreCB.selection = 0
local name = filterScenarioWnd:find("name"):find("edit_box_group")
@@ -85,10 +85,10 @@ function game.RingAccessPointFilter:getURLParameters()
local filterScenarioWnd = self:getWnd()
assert(filterScenarioWnd)
- local owner = filterScenarioWnd:find("owner"):find("edit_box_group").input_string
+ local owner = filterScenarioWnd:find("owner"):find("edit_box_group").uc_input_string
local level = self.LevelToURLParam[filterScenarioWnd:find("level"):find("combo_box").selection]
local orientation = self.OrientationToURLParam[filterScenarioWnd:find("genre"):find("combo_box").selection]
- local name = filterScenarioWnd:find("name"):find("edit_box_group").input_string
+ local name = filterScenarioWnd:find("name"):find("edit_box_group").uc_input_string
local charSlot = getCharSlot()
local result = string.format("&owner=%s&level=%s&orientation=%s&name=%s&charSlot=%u", encodeURLUnicodeParam(owner), level, orientation, encodeURLUnicodeParam(name), charSlot)
@@ -107,12 +107,12 @@ function game.RingAccessPointFilter:validate()
end
local ucUrl
if config.Local == 1 then
- ucUrl = NicoMagicURL -- for test in local mode
+ ucUrl = ucstring(NicoMagicURL) -- for test in local mode
else
ucUrl = getDynString(game.NpcWebPage.UrlTextId)
end
debugInfo(tostring(ucUrl))
- local utf8Url = ucUrl
+ local utf8Url = ucUrl:toUtf8()
local browser = getUI("ui:interface:npc_web_browser"):find("html")
-- when in ring mode, add the parameters ourselves. 60 second is the timout for zope....
browseNpcWebPage(getUIId(browser), utf8Url .. self:getURLParameters(), false, 60)
diff --git a/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.xml b/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.xml
index 66b1fe609..4556314d0 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/ring_access_point_filter.xml
@@ -1,64 +1,26 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/ring_window.xml b/ryzom/client/data/gamedev/interfaces_v3/ring_window.xml
index e66a06418..dbd9e21b9 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/ring_window.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/ring_window.xml
@@ -1,1695 +1,900 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml b/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml
index ef470005c..c3d289d1f 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml
@@ -1,445 +1,123 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/taskbar.lua b/ryzom/client/data/gamedev/interfaces_v3/taskbar.lua
index 674bd4ca8..0a9533e48 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/taskbar.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/taskbar.lua
@@ -6,10 +6,10 @@ if (game==nil) then
end
------------------------------------------------------------------------------------------------------------
---
+--
function game:getMilkoTooltipWithKey(prop, tooltip, tooltip_pushed, name, param)
local tt
-
+
-- Check if button is toggled and choose the good tooltip
if (prop ~= '' and tooltip_pushed ~= '') then
local db = getDbProp(prop)
@@ -21,20 +21,20 @@ function game:getMilkoTooltipWithKey(prop, tooltip, tooltip_pushed, name, param)
else
tt = tooltip;
end
-
+
-- Get key shortcut
local text = i18n.get(tt)
local key = runExpr('getKey(\'' .. name .. '\',\'' .. param .. '\',1)')
-
+
if (key ~= nil and key ~= '') then
key = ' @{2F2F}(' .. key .. ')'
- text = concatString(text, key)
+ text = concatUCString(text, key)
end
-
+
setContextHelpText(text)
end
function game:taskbarDisableTooltip(ui)
local uiGroup = getUI(ui)
disableContextHelpForControl(uiGroup)
-end
\ No newline at end of file
+end
diff --git a/ryzom/client/data/gamedev/interfaces_v3/taskbar.xml b/ryzom/client/data/gamedev/interfaces_v3/taskbar.xml
index c3c13d431..f6d04089b 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/taskbar.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/taskbar.xml
@@ -1,1313 +1,674 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/tp_interface.xml b/ryzom/client/data/gamedev/interfaces_v3/tp_interface.xml
index ca630aeaa..0340c22df 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/tp_interface.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/tp_interface.xml
@@ -1,16 +1,13 @@
-
-
-
@@ -39,132 +36,54 @@
-
-
-
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/tracking.xml b/ryzom/client/data/gamedev/interfaces_v3/tracking.xml
index 9a011a83e..dabad05bc 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/tracking.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/tracking.xml
@@ -1,49 +1,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/webig.lua b/ryzom/client/data/gamedev/interfaces_v3/webig.lua
index c13e52ec7..2f9ad2781 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/webig.lua
+++ b/ryzom/client/data/gamedev/interfaces_v3/webig.lua
@@ -216,8 +216,6 @@ function webig:openUrl(url)
getUI("ui:interface:web_transactions"):find("html"):browse(url)
end
---assert(nil, "RELOADABLE SCRIPT")
-
diff --git a/ryzom/client/data/gamedev/interfaces_v3/webig_widgets.xml b/ryzom/client/data/gamedev/interfaces_v3/webig_widgets.xml
index 866f8d4be..244072420 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/webig_widgets.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/webig_widgets.xml
@@ -2,248 +2,236 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/client/data/gamedev/interfaces_v3/widgets.xml b/ryzom/client/data/gamedev/interfaces_v3/widgets.xml
index 30b05cb08..140fadbb2 100644
--- a/ryzom/client/data/gamedev/interfaces_v3/widgets.xml
+++ b/ryzom/client/data/gamedev/interfaces_v3/widgets.xml
@@ -4,6 +4,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -51,7 +76,6 @@
-
@@ -60,31 +84,26 @@
-
-
-
-
-
-
+
@@ -93,10 +112,9 @@
-
+
-
@@ -327,53 +345,52 @@
-
+
-
+
-
+
-
+
@@ -383,8 +400,8 @@
@@ -394,10 +411,10 @@
-
-
+
+
-
+
@@ -481,7 +498,6 @@
-
@@ -650,9 +666,9 @@
-
-
-
+
+
+
@@ -674,7 +690,7 @@
-
+
@@ -698,7 +714,7 @@
-
+
@@ -707,7 +723,7 @@
-
+
@@ -816,11 +832,9 @@
-
-
@@ -910,9 +924,7 @@
-
-
@@ -972,7 +984,7 @@
-
+
@@ -1216,7 +1228,7 @@
-
+
@@ -1240,7 +1252,7 @@
-
+
@@ -1322,7 +1334,6 @@
-
@@ -1350,23 +1361,15 @@
-
-
-
-
-
-
-
-
@@ -1472,22 +1475,17 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
+
@@ -1567,12 +1565,11 @@
-
-
+
@@ -1596,50 +1593,40 @@
-
-
-
-
-
+
-
-
+
-
-
+
-
+
-
diff --git a/ryzom/client/src/character_cl.cpp b/ryzom/client/src/character_cl.cpp
index 0046e4b7e..b67da33f9 100644
--- a/ryzom/client/src/character_cl.cpp
+++ b/ryzom/client/src/character_cl.cpp
@@ -377,6 +377,9 @@ CCharacterCL::CCharacterCL()
_CustomScale = 1.f;
+ _OldCustomScale = 0.f;
+ _StepCustomScale = 0.f;
+ _StartCustomScale = ryzomGetLocalTime();
}// CCharacterCL //
//-----------------------------------------------
@@ -1690,13 +1693,38 @@ void CCharacterCL::updateVisualPropertyVpb(const NLMISC::TGameCycle &/* gameCycl
nlinfo("(%05d,%03d) CH:updtVPVpb:%d: Scale(%d)", sint32(T1%100000), NetMngr.getCurrentServerTick(), _Slot,
(uint)altLookProp.PropertySubData.Scale);
}
- // Save old scale
- float oldCustomScale = _CustomScale;
+
+ float customScale;
// Set new scale
if (altLookProp.PropertySubData.Scale==0)
- _CustomScale = 1.f;
+ customScale = 1.f;
else
- _CustomScale = (float)altLookProp.PropertySubData.Scale/100.f;
+ customScale = ((float)altLookProp.PropertySubData.Scale/100.f);
+ nlinfo("customScale = %f", customScale);
+ _StartCustomScale = ryzomGetLocalTime();
+ if (_OldCustomScale == 0) // first time
+ {
+ _StartCustomScale -= 1001.f;
+ _OldCustomScale = 1.f;
+ _CustomScale = 1.f;
+ }
+
+ _StepCustomScale = customScale - _CustomScale;
+ _OldCustomScale = _CustomScale;
+}
+
+void CCharacterCL::scale(bool calculate)
+{
+ // Save old scale
+ float oldCustomScale = _CustomScale;
+ _CustomScale = _OldCustomScale + (float(ryzomGetLocalTime() - _StartCustomScale) / 1000.f) * _StepCustomScale;
+ if ((_StepCustomScale >= 0 && _CustomScale > _OldCustomScale+_StepCustomScale)
+ || (_StepCustomScale < 0 && _CustomScale < _OldCustomScale+_StepCustomScale))
+ {
+ _CustomScale = _OldCustomScale+_StepCustomScale;
+ _StepCustomScale = 0;
+ }
+
// Apply modification
_CustomScalePos /= oldCustomScale;
_CustomScalePos *= _CustomScale;
@@ -2121,6 +2149,7 @@ double CCharacterCL::computeSpeed()
//-----------------------------------------------
double CCharacterCL::computeSpeedFactor(double speedToDest)
{
+
double speedFactor = 1.0;
// \todo GUIGUI : optimize emotes, currently it's badly designed.
@@ -6047,6 +6076,9 @@ void CCharacterCL::updateAttachedFX()
//-----------------------------------------------
void CCharacterCL::updateVisible (const TTime ¤tTimeInMs, CEntityCL *target)
{
+ if (_StepCustomScale)
+ scale();
+
// Changes the skeleton state
if(!_Skeleton.empty())
{
@@ -6274,6 +6306,11 @@ void CCharacterCL::updateVisiblePostPos(const NLMISC::TTime ¤tTimeInMs, CE
pos = (box().getMin() + box().getMax())/2;
pos.z = box().getMax().z;
}
+
+ CRaceStatsSheet *sheet = const_cast(UserEntity->playerSheet());
+ float namePosZ = sheet->GenderInfos[UserEntity->getGender()].NamePosZNormal;
+ if (pos.z > box().getMin().z + namePosZ)
+ pos.z = box().getMin().z + namePosZ;
nlassert(isValidDouble(pos.x) && isValidDouble(pos.y) && isValidDouble(pos.z));
_CurrentBubble->Position = pos;
}
@@ -6562,6 +6599,7 @@ ADD_METHOD(void CCharacterCL::updatePos(const TTime ¤tTimeInMs, CEntityCL
_OldAutomaton = _CurrentAutomaton;
// Compute the Time Step.
double frameTimeRemaining = computeTimeStep(((double)currentTimeInMs)*0.001);
+
// Update the LodCharacter Animation.
if(_LodCharacterAnimEnabled)
{
diff --git a/ryzom/client/src/character_cl.h b/ryzom/client/src/character_cl.h
index 98b5d374e..8c6cd32db 100644
--- a/ryzom/client/src/character_cl.h
+++ b/ryzom/client/src/character_cl.h
@@ -712,6 +712,9 @@ protected:
sint64 _LastSelectBoxComputeTime;
float _CustomScale;
+ float _OldCustomScale;
+ float _StepCustomScale;
+ NLMISC::TTime _StartCustomScale;
/// Pointer on the Sheet with basic parameters.
const CCharacterSheet *_Sheet;
@@ -872,6 +875,8 @@ protected:
/// Method to Flag the character as alive and do everything needed.
virtual void setAlive();
+ void scale(bool calculate = true);
+
///
double computeTimeStep(const double ¤tTime);
diff --git a/ryzom/client/src/interface_v3/action_handler_item.cpp b/ryzom/client/src/interface_v3/action_handler_item.cpp
index f931f1d76..02f8d1633 100644
--- a/ryzom/client/src/interface_v3/action_handler_item.cpp
+++ b/ryzom/client/src/interface_v3/action_handler_item.cpp
@@ -1079,6 +1079,40 @@ class CCanDropToExchange : public IActionHandler
};
REGISTER_ACTION_HANDLER (CCanDropToExchange, "can_drop_to_exchange");
+// **********************************************************************************************************
+class CCanDropToHotbar : public IActionHandler
+{
+ virtual void execute (CCtrlBase *pCaller, const string &Params)
+ {
+ CInterfaceManager *pIM = CInterfaceManager::getInstance();
+ nlinfo("hey");
+ string src = getParam(Params, "src");
+ CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src);
+ CDBCtrlSheet *pCSSrc = dynamic_cast(pElt);
+ CDBCtrlSheet *pCSDst = dynamic_cast(pCaller);
+ if (!pCSSrc || !pCSDst) return;
+
+ // Exchange can only be done from bag to exchange inventories
+ uint32 srcInventory = pCSSrc->getSecondIndexInDB();
+ if (
+ (srcInventory == INVENTORIES::bag ||
+ srcInventory == INVENTORIES::pet_animal1 ||
+ srcInventory == INVENTORIES::pet_animal2 ||
+ srcInventory == INVENTORIES::pet_animal3 ||
+ srcInventory == INVENTORIES::pet_animal4 ||
+ srcInventory == INVENTORIES::pet_animal5 ||
+ srcInventory == INVENTORIES::pet_animal6 ||
+ srcInventory == INVENTORIES::pet_animal7 ||
+ srcInventory == INVENTORIES::player_room)
+ && getInventory().isInventoryAvailable((INVENTORIES::TInventory) pCSSrc->getSecondIndexInDB())
+ && getInventory().isUsableItem(pCSSrc->getSheetId())
+ )
+ {
+ pCSDst->setCanDrop ( true );
+ }
+ }
+};
+REGISTER_ACTION_HANDLER (CCanDropToHotbar, "can_drop_to_hotbar");
// **********************************************************************************************************
@@ -2462,6 +2496,58 @@ class CHandlerRingXpCatalyserStopUse : public IActionHandler
};
REGISTER_ACTION_HANDLER( CHandlerRingXpCatalyserStopUse, "ring_xp_catalyser_stop_use" );
+// ***************************************************************************
+class CHandlerUseHotbarItem : public IActionHandler
+{
+ void execute(CCtrlBase * /* pCaller */, const std::string &sParams)
+ {
+ CInterfaceManager *pIM = CInterfaceManager::getInstance();
+
+ pIM->displaySystemInfo("use item: " + getParam(sParams, "slot") + " " + sParams);
+ sint64 slot;
+ if (!CInterfaceExpr::evalAsInt(getParam(sParams, "slot"), slot))
+ {
+ nlwarning(" Can't retrieve counter.");
+ return;
+ }
+
+ if (slot > INVENTORIES::NbHotbarSlots) {
+ nlwarning(" Slot out of range.");
+ return;
+ }
+
+ CDBCtrlSheet *pCS = getInventory().getHotbarSheet(slot);
+ if (!pCS)
+ {
+ nlwarning(" Can't retrieve sheet.");
+ return;
+ }
+
+ const CItemSheet *pIS = pCS->asItemSheet();
+ if (!pIS)
+ {
+ nlwarning(" Can't retrieve item.");
+ return;
+ }
+
+ ITEMFAMILY::EItemFamily fam = pIS->Family;
+
+ if (!getInventory().isUsableItem(pCS->getSheetId())) {
+ nlwarning(" Item is not usable.");
+ return;
+ }
+
+ if (fam == ITEMFAMILY::ITEM_SAP_RECHARGE || fam == ITEMFAMILY::CRYSTALLIZED_SPELL)
+ {
+ sendToServerEnchantMessage((uint8)pCS->getInventoryIndex(), (uint16)pCS->getIndexInDB());
+ }
+ else if (fam == ITEMFAMILY::CONSUMABLE || fam == ITEMFAMILY::XP_CATALYSER)
+ {
+ sendMsgUseItem(uint16(pCS->getIndexInDB()));
+ }
+ }
+};
+REGISTER_ACTION_HANDLER( CHandlerUseHotbarItem, "use_hotbar_item" );
// ***************************************************************************
// item groups
diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp
index 0b8cda2ee..95caeabe8 100644
--- a/ryzom/client/src/interface_v3/dbctrl_sheet.cpp
+++ b/ryzom/client/src/interface_v3/dbctrl_sheet.cpp
@@ -309,12 +309,12 @@ CCtrlSheetInfo::CCtrlSheetInfo()
_InterfaceColor= true;
_SheetSelectionGroup = -1;
_UseQuality = true;
- _DisplayItemQuality = true;
_UseQuantity = true;
_DuplicateOnDrag = false;
_ItemSlot= SLOTTYPE::UNDEFINED;
_AutoGrayed= false;
_HasTradeSlotType = false;
+ _IsHotbarSlot = false;
_BrickOverable= false;
_ReadQuantityFromSheet = false;
_AHOnLeftClick = NULL;
@@ -390,6 +390,10 @@ bool CCtrlSheetInfo::parseCtrlInfo(xmlNodePtr cur, CInterfaceGroup * /* parentGr
prop = (char*) xmlGetProp( cur, (xmlChar*)"use_slot_type_db_entry" );
if (prop)
_HasTradeSlotType= CInterfaceElement::convertBool(prop);
+
+ prop = (char*) xmlGetProp( cur, (xmlChar*)"hotbar_slot" );
+ if (prop)
+ _IsHotbarSlot= CInterfaceElement::convertBool(prop);
// Read Action handlers
CAHManager::getInstance()->parseAH(cur, "onclick_l", "params_l", _AHOnLeftClick, _AHLeftClickParams);
@@ -1277,6 +1281,9 @@ void CDBCtrlSheet::setupItem ()
sint32 sheet = _SheetId.getSInt32();
+ _DispQuality = -1;
+ _DispQuantity = -1;
+
// If this is the same sheet, need to resetup
if (_LastSheetId != sheet || _NeedSetup)
{
@@ -1290,13 +1297,6 @@ void CDBCtrlSheet::setupItem ()
{
_ItemSheet = (CItemSheet*)pES;
- // Display the item quality?
- _DisplayItemQuality= _UseQuality &&
- _ItemSheet->Family != ITEMFAMILY::COSMETIC &&
- _ItemSheet->Family != ITEMFAMILY::TELEPORT &&
- _ItemSheet->Family != ITEMFAMILY::SERVICE
- ;
-
_DispSheetBmpId = rVR.getTextureIdFromName (_ItemSheet->getIconMain());
// if file not found or empty, replace by default icon
if( _DispSheetBmpId == -1)
@@ -1350,21 +1350,11 @@ void CDBCtrlSheet::setupItem ()
_DispQuantity = _Quantity.getSInt32();
}
}
- else
- // do not display any number
- _DispQuantity = -1;
}
- else _DispQuantity = -1;
// Setup quality
- if(_DisplayItemQuality)
- {
+ if(_UseQuality)
_DispQuality= _Quality.getSInt32();
- }
- else
- {
- _DispQuality= -1;
- }
// special icon text
if( _NeedSetup || _ItemSheet->getIconText() != _OptString )
@@ -1403,7 +1393,7 @@ void CDBCtrlSheet::setupItem ()
}
// update quality. NB: if quality change, the must updateItemCharacRequirement
- if(_DisplayItemQuality)
+ if(_UseQuality)
{
sint32 newQuality= _Quality.getSInt32();
if(newQuality!=_DispQuality)
@@ -1412,10 +1402,6 @@ void CDBCtrlSheet::setupItem ()
updateItemCharacRequirement(_LastSheetId);
}
}
- else
- {
- _DispQuality= -1;
- }
// update armour color (if USER_COLOR db change comes after SHEET change)
if(_ArmourColorFromDB && _UserColor)
@@ -1428,6 +1414,31 @@ void CDBCtrlSheet::setupItem ()
}
}
+ if (_ItemSheet != NULL)
+ {
+ switch(_ItemSheet->Family)
+ {
+ case ITEMFAMILY::ARMOR:
+ case ITEMFAMILY::MELEE_WEAPON:
+ case ITEMFAMILY::RANGE_WEAPON:
+ case ITEMFAMILY::SHIELD:
+ case ITEMFAMILY::JEWELRY:
+ case ITEMFAMILY::CRAFTING_TOOL:
+ case ITEMFAMILY::HARVEST_TOOL:
+ case ITEMFAMILY::TAMING_TOOL:
+ case ITEMFAMILY::TRAINING_TOOL:
+ // hide 'x0' and 'x1' stack count for equipable items
+ if (_DispQuantity < 2)
+ _DispQuantity = -1;
+ break;
+ default:
+ // hide 'q0'and 'q1' quality for every other item
+ if (_DispQuality < 2)
+ _DispQuality = -1;
+ break;
+ }
+ }
+
// at each frame, must test for grayed.
if(_AutoGrayed)
{
@@ -1893,8 +1904,6 @@ void CDBCtrlSheet::setupOutpostBuilding()
{
COutpostBuildingSheet *pOBSheet = (COutpostBuildingSheet*)pES;
- _DisplayItemQuality = false;
-
_DispSheetBmpId = rVR.getTextureIdFromName (pOBSheet->getIconMain());
// if file not found or empty, replace by default icon
if( _DispSheetBmpId == -1)
@@ -2535,7 +2544,7 @@ void CDBCtrlSheet::drawSheet (sint32 x, sint32 y, bool draging, bool showSelecti
sint32 hArea = (hSheet / 4);
sint32 xIcon = x;
// move buff icons up a row, quantity text is displayed on bottom-left corner
- sint32 yIcon = y + hArea;
+ sint32 yIcon = y + (_DispQuantity > 0 ? hArea : 0);
for (uint i = 0; i < _BuffIcons.size(); ++i)
{
sint32 wIcon = _BuffIcons[i].IconW;
@@ -3789,6 +3798,11 @@ bool CDBCtrlSheet::canDropItem(CDBCtrlSheet *src) const
bf|= 1<getSheetId()) )
+ {
+ return true;
+ }
+
// Look if one slot solution match.
if( pIS->SlotBF & bf )
{
diff --git a/ryzom/client/src/interface_v3/dbctrl_sheet.h b/ryzom/client/src/interface_v3/dbctrl_sheet.h
index 2ccbdf00a..f4c58872c 100644
--- a/ryzom/client/src/interface_v3/dbctrl_sheet.h
+++ b/ryzom/client/src/interface_v3/dbctrl_sheet.h
@@ -164,11 +164,11 @@ public:
bool _UseQuantity : 1; // is the quantity read and displayed ?
bool _ReadQuantityFromSheet : 1; // Read quantity from sheet rather than from database
bool _UseQuality : 1; // is the quality read and displayed ?
- bool _DisplayItemQuality : 1; // Do we have to display the quality for the item (false for Cosmetics and Teleport and if _UseQuality==fasle)?
bool _DuplicateOnDrag : 1; // when dragged, the item is shown twice : one version at the mouse position.
// and another in the source slot. Useful for items to buy that are in infinite quantity.
bool _AutoGrayed : 1; // if true then gray the ctrlSheeet if: 1/ Items: Is the Item Locked. 2/ Bricks: is the brick Latent.
bool _HasTradeSlotType : 1; // true is the SLOT_TYPE DB field should be taken in account
+ bool _IsHotbarSlot : 1; // true if the slot is part of the hotbar
bool _BrickOverable : 1; // if Type is Brick, display like a button (because LeftClickable).
@@ -273,6 +273,7 @@ public:
uint32 getItemNameId() const { return (uint32)_NameId.getSInt32();}
// New Stack Size
sint32 getStackable() const { return (_Stackable>1) ? 999 : 1; }
+ bool isHotbarSlot() const { return _IsHotbarSlot; }
// get non locked quantity (can be zero)
sint32 getNonLockedQuantity() const;
diff --git a/ryzom/client/src/interface_v3/interface_3d_scene.cpp b/ryzom/client/src/interface_v3/interface_3d_scene.cpp
index cd2160489..dacb9a37a 100644
--- a/ryzom/client/src/interface_v3/interface_3d_scene.cpp
+++ b/ryzom/client/src/interface_v3/interface_3d_scene.cpp
@@ -713,7 +713,7 @@ int CInterface3DScene::luaGetElement(CLuaState &ls)
}
return 1;
}
-
+
// ----------------------------------------------------------------------------
string CInterface3DScene::getCurrentCamera() const
{
@@ -1288,7 +1288,7 @@ float CInterface3DShape::getBBoxSizeX () const
{
CAABBox bbox;
_Instance.getShapeAABBox(bbox);
-
+
if (bbox.getCenter() == CVector::Null)
return -0.5f;
@@ -1299,7 +1299,7 @@ float CInterface3DShape::getBBoxSizeY () const
{
CAABBox bbox;
_Instance.getShapeAABBox(bbox);
-
+
if (bbox.getCenter() == CVector::Null)
return -0.5f;
@@ -1310,7 +1310,7 @@ float CInterface3DShape::getBBoxSizeZ () const
{
CAABBox bbox;
_Instance.getShapeAABBox(bbox);
-
+
if (bbox.getCenter() == CVector::Null)
return -0.5f;
@@ -1437,6 +1437,34 @@ void CInterface3DShape::setName (const std::string &ht)
}
}
+std::string CInterface3DShape::getTextures() const
+{
+ return _Textures;
+}
+
+
+void CInterface3DShape::setTextures(const std::string &textures)
+{
+ if (textures.empty())
+ return;
+
+ _Textures = textures;
+ vector texList;
+ splitString(textures, " ", texList);
+
+ for(uint j=0;j<_Instance.getNumMaterials();j++)
+ {
+ sint numStages = _Instance.getMaterial(j).getLastTextureStage() + 1;
+ for(sint l = 0; l < numStages; l++)
+ {
+ if (_Instance.getMaterial(j).isTextureFile((uint) l))
+ {
+ _Instance.getMaterial(j).setTextureFileName(texList[std::min((int)j, (int)texList.size()-1)], (uint) l);
+ }
+ }
+ }
+}
+
// ----------------------------------------------------------------------------
// CInterface3DCamera
// ----------------------------------------------------------------------------
diff --git a/ryzom/client/src/interface_v3/interface_3d_scene.h b/ryzom/client/src/interface_v3/interface_3d_scene.h
index 89355e6df..7db17ae85 100644
--- a/ryzom/client/src/interface_v3/interface_3d_scene.h
+++ b/ryzom/client/src/interface_v3/interface_3d_scene.h
@@ -87,7 +87,7 @@ public:
void setDistLimitMax(float limitMax) { _DistLimitMax = limitMax;}
int luaGetElement(CLuaState &ls);
-
+
REFLECT_EXPORT_START(CInterface3DScene, CInterfaceGroup)
REFLECT_LUA_METHOD ("getElement", luaGetElement);
REFLECT_STRING ("curcam", getCurrentCamera, setCurrentCamera);
@@ -265,11 +265,15 @@ public:
std::string getName() const;
void setName (const std::string &ht);
+ std::string getTextures() const;
+ void setTextures (const std::string &textures);
+
float getBBoxSizeX () const;
float getBBoxSizeY () const;
float getBBoxSizeZ () const;
+
REFLECT_EXPORT_START(CInterface3DShape, CInterfaceElement)
REFLECT_FLOAT("getBBoxSizeX", getBBoxSizeX, setPosX);
REFLECT_FLOAT("getBBoxSizeY", getBBoxSizeY, setPosX);
@@ -281,6 +285,7 @@ public:
REFLECT_FLOAT ("roty", getRotY, setRotY);
REFLECT_FLOAT ("rotz", getRotZ, setRotZ);
REFLECT_STRING ("name", getName, setName);
+ REFLECT_STRING("textures", getTextures, setTextures);
REFLECT_EXPORT_END
protected:
@@ -289,6 +294,7 @@ protected:
NLMISC::CVector _Pos;
NLMISC::CVector _Rot;
std::string _Name;
+ std::string _Textures;
};
/**
diff --git a/ryzom/client/src/interface_v3/inventory_manager.cpp b/ryzom/client/src/interface_v3/inventory_manager.cpp
index 04ad896bc..ccf75c77c 100644
--- a/ryzom/client/src/interface_v3/inventory_manager.cpp
+++ b/ryzom/client/src/interface_v3/inventory_manager.cpp
@@ -74,6 +74,7 @@ CInventoryManager *CInventoryManager::_Instance = NULL;
NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupListSheetBag, std::string, "list_sheet_bag");
NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupIconListBag, std::string, "list_icon_bag");
NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupListSheetFilterCLMSlot, std::string, "list_sheet_filter_clm_slot");
+NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupListSheetFilterHotbarSlot, std::string, "list_sheet_filter_hotbar_slot");
NLMISC_REGISTER_OBJECT(CViewBase, CDBGroupListSheetFilterExchangeable, std::string, "list_sheet_filter_exchangeable");
// ***************************************************************************
@@ -323,6 +324,14 @@ CInventoryManager::CInventoryManager()
UIEquip2[i] = NULL;
}
+ for (i = 0; i < MAX_HOTBARINV_ENTRIES; ++i)
+ {
+ Hotbar[i] = ServerHotbar[i] = 0;
+ UIHotbar[i] = NULL;
+ UIHotbar2[i] = NULL;
+ UIHotbar3[i] = NULL;
+ }
+
for (i = 0; i < MAX_BAGINV_ENTRIES; i++)
{
BagItemEquipped[i]= false;
@@ -390,6 +399,16 @@ CItemImage *CInventoryManager::getEquipItem(uint index)
return NULL;
}
+// *************************************************************************************************
+CItemImage *CInventoryManager::getHotbarItem(uint index)
+{
+ nlassert(index < MAX_HOTBARINV_ENTRIES);
+ if (Hotbar[index] != 0)
+ return &Bag[Hotbar[index]];
+ else
+ return NULL;
+}
+
// *************************************************************************************************
CDBCtrlSheet *CInventoryManager::getHandSheet(uint index)
{
@@ -402,6 +421,11 @@ CDBCtrlSheet *CInventoryManager::getEquipSheet(uint index)
return UIEquip[index];
}
+// *************************************************************************************************
+CDBCtrlSheet *CInventoryManager::getHotbarSheet(uint index)
+{
+ return UIHotbar[index];
+}
// *************************************************************************************************
CItemImage &CInventoryManager::getServerBagItem(uint index)
@@ -480,6 +504,7 @@ void CInventoryManager::init()
Money = NLGUI::CDBManager::getInstance()->getDbProp(LOCAL_INVENTORY ":MONEY");
initIndirection (LOCAL_INVENTORY ":HAND:", Hands, MAX_HANDINV_ENTRIES, true);
initIndirection (LOCAL_INVENTORY ":EQUIP:", Equip, MAX_EQUIPINV_ENTRIES, true);
+ initIndirection (LOCAL_INVENTORY ":HOTBAR:", Hotbar, MAX_HOTBARINV_ENTRIES, true);
// Init observers for auto equipment
{
for (uint i = 0; i < MAX_BAGINV_ENTRIES; ++i)
@@ -527,6 +552,12 @@ void CInventoryManager::init()
UIEquip[SLOT_EQUIPMENT::LEGS] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_ARMOR_LEGS));
UIEquip[SLOT_EQUIPMENT::HANDS] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_ARMOR_HANDS));
+ UIHotbar[0] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR_1));
+ UIHotbar[1] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR_2));
+ UIHotbar[2] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR_3));
+ UIHotbar[3] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR_4));
+ UIHotbar[4] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR_5));
+
UIEquip2[SLOT_EQUIPMENT::HEADDRESS] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_JEWL2_HEADDRESS));
UIEquip2[SLOT_EQUIPMENT::EARL] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_JEWL2_EARING_LEFT));
UIEquip2[SLOT_EQUIPMENT::EARR] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_JEWL2_EARING_RIGHT));
@@ -545,6 +576,17 @@ void CInventoryManager::init()
UIEquip2[SLOT_EQUIPMENT::LEGS] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_ARMR2_LEGS));
UIEquip2[SLOT_EQUIPMENT::HANDS] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_ARMR2_HANDS));
+ UIHotbar2[0] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR2_1));
+ UIHotbar2[1] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR2_2));
+ UIHotbar2[2] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR2_3));
+ UIHotbar2[3] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR2_4));
+ UIHotbar2[4] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR2_5));
+
+ UIHotbar3[0] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR3_1));
+ UIHotbar3[1] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR3_2));
+ UIHotbar3[2] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR3_3));
+ UIHotbar3[3] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR3_4));
+ UIHotbar3[4] = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(CTRL_HOTBAR3_5));
// Init ItemInfoObservers
{
@@ -671,6 +713,23 @@ std::string CInventoryManager::getDBIndexPath(CDBCtrlSheet *pCS)
return string(LOCAL_INVENTORY) + ":EQUIP:" + toString(i);
}
}
+
+
+ for (i = 0; i < MAX_HOTBARINV_ENTRIES; ++i)
+ {
+ if (UIHotbar[i] == pCS)
+ {
+ return string(LOCAL_INVENTORY) + ":HOTBAR:" + toString(i);
+ }
+ if (UIHotbar2[i] == pCS)
+ {
+ return string(LOCAL_INVENTORY) + ":HOTBAR:" + toString(i);
+ }
+ if (UIHotbar3[i] == pCS)
+ {
+ return string(LOCAL_INVENTORY) + ":HOTBAR:" + toString(i);
+ }
+ }
return "";
}
@@ -758,6 +817,20 @@ bool CInventoryManager::isForageToolItem(uint32 sheetID)
return result;
}
+// ***************************************************************************
+bool CInventoryManager::isUsableItem(uint32 sheetID)
+{
+ bool result = false;
+ CEntitySheet *sheet= SheetMngr.get(CSheetId(sheetID));
+ if(sheet && sheet->type()== CEntitySheet::ITEM)
+ {
+ CItemSheet *item= (CItemSheet*)sheet;
+ if( ITEMFAMILY::isUsable(item->Family) )
+ result = true;
+ }
+ return result;
+}
+
// ***************************************************************************
uint32 CInventoryManager::getHandItemSheet( bool rightHand ) const
{
@@ -1176,7 +1249,7 @@ void CInventoryManager::CDBEquipObs::update(ICDBNode* node)
{
CInterfaceManager *pIM = CInterfaceManager::getInstance();
string sTmp = node->getFullName();
- string sIE, sIE2; // Interface Element
+ string sIE, sIE2, sIE3; // Interface Element
CCDBNodeLeaf *pNL = dynamic_cast(node);
if (pNL == NULL) return;
if (strnicmp(sTmp.c_str(),"LOCAL:INVENTORY:HAND",20) == 0)
@@ -1245,20 +1318,61 @@ void CInventoryManager::CDBEquipObs::update(ICDBNode* node)
// update Equips.
getInventory().Equip[index]= pNL->getValue16();
}
+ else if (strnicmp(sTmp.c_str(),"LOCAL:INVENTORY:HOTBAR",22) == 0)
+ {
+ // Coming from hand
+ sTmp = sTmp.substr(23,sTmp.size());
+ sTmp = sTmp.substr(0,sTmp.rfind(':'));
+ sint index;
+ fromString(sTmp, index);
+ switch (index) {
+ case 0:
+ sIE = CTRL_HOTBAR_1;
+ sIE2 = CTRL_HOTBAR2_1;
+ sIE3 = CTRL_HOTBAR3_1;
+ break;
+ case 1:
+ sIE = CTRL_HOTBAR_2;
+ sIE2 = CTRL_HOTBAR2_2;
+ sIE3 = CTRL_HOTBAR3_2;
+ break;
+ case 2:
+ sIE = CTRL_HOTBAR_3;
+ sIE2 = CTRL_HOTBAR2_3;
+ sIE3 = CTRL_HOTBAR3_3;
+ break;
+ case 3:
+ sIE = CTRL_HOTBAR_4;
+ sIE2 = CTRL_HOTBAR2_4;
+ sIE3 = CTRL_HOTBAR3_4;
+ break;
+ case 4:
+ sIE = CTRL_HOTBAR_5;
+ sIE2 = CTRL_HOTBAR2_5;
+ sIE3 = CTRL_HOTBAR3_5;
+ break;
+ }
+ // update Hotbar.
+ getInventory().Hotbar[index]= pNL->getValue16();
+ }
else return;
// Set database for wearing the right item
CDBCtrlSheet *pCS = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(sIE));
CDBCtrlSheet *pCS2 = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(sIE2));
+ CDBCtrlSheet *pCS3 = dynamic_cast(CWidgetManager::getInstance()->getElementFromId(sIE3));
// Remove Last reference and update database
sint16 oldVal = pNL->getOldValue16();
sint16 newVal = pNL->getValue16();
- if (oldVal != 0)
- getInventory().unwearBagItem (oldVal-1);
+ if (sIE != CTRL_HOTBAR_1 && sIE != CTRL_HOTBAR_2 && sIE != CTRL_HOTBAR_3 && sIE != CTRL_HOTBAR_4 && sIE != CTRL_HOTBAR_5)
+ {
+ if (oldVal != 0)
+ getInventory().unwearBagItem (oldVal-1);
- if (newVal != 0)
- getInventory().wearBagItem (newVal-1);
+ if (newVal != 0)
+ getInventory().wearBagItem (newVal-1);
+ }
// Update Display
if (newVal == 0)
@@ -1268,12 +1382,14 @@ void CInventoryManager::CDBEquipObs::update(ICDBNode* node)
{
if (pCS != NULL) pCS->setSheet("");
if (pCS2 != NULL) pCS2->setSheet("");
+ if (pCS3 != NULL) pCS3->setSheet("");
}
}
else
{
if (pCS != NULL) pCS->setSheet(LOCAL_INVENTORY ":BAG:"+ toString(newVal-1));
if (pCS2 != NULL) pCS2->setSheet(LOCAL_INVENTORY ":BAG:"+ toString(newVal-1));
+ if (pCS3 != NULL) pCS3->setSheet(LOCAL_INVENTORY ":BAG:"+ toString(newVal-1));
}
// Hands management
@@ -1405,6 +1521,7 @@ void CInventoryManager::CDBEquipObs::update(ICDBNode* node)
{
if (pCS != NULL) pCS->setSheet("");
if (pCS2 != NULL) pCS2->setSheet("");
+ if (pCS3 != NULL) pCS3->setSheet("");
}
}
}
@@ -2608,6 +2725,42 @@ bool CDBGroupListSheetFilterCLMSlot::CSheetChildFilter::isSheetValid(CDBGroupLis
return false;
}
+// ***************************************************************************
+// CDBGroupListSheetFilterHotbarSlot
+// ***************************************************************************
+
+// ***************************************************************************
+bool CDBGroupListSheetFilterHotbarSlot::CSheetChildFilter::isSheetValid(CDBGroupListSheet *pFather)
+{
+ if (CSheetChild::isSheetValid(pFather))
+ {
+ CInterfaceManager *pIM = CInterfaceManager::getInstance();
+ CDBCtrlSheet *clmCtrl = dynamic_cast(CWidgetManager::getInstance()->getCtrlLaunchingModal());
+ if (!clmCtrl || !Ctrl) return false;
+ if (clmCtrl->getInventoryIndex() == INVENTORIES::exchange &&
+ Ctrl->getInventoryIndex() == INVENTORIES::exchange)
+ {
+ return false;
+ }
+ if ((clmCtrl->getType() == CCtrlSheetInfo::SheetType_Item) &&
+ (Ctrl->getType() == CCtrlSheetInfo::SheetType_Item) )
+ {
+ // Ok if we can put in the slot Ctrl in clmCtrl
+ if ( clmCtrl->canDropItem(Ctrl))
+ {
+ string sTmp = Ctrl->getSheet();
+ // Look if the source is locked
+ sTmp = sTmp.substr(sTmp.rfind(':')+1,sTmp.size());
+ sint32 nTmp;
+ fromString(sTmp, nTmp);
+ if (!getInventory().isBagItemWeared(nTmp) && getInventory().isUsableItem(Ctrl->getSheetId()) && Ctrl->getLockedByOwner() == 0)
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
// ***************************************************************************
// CDBGroupListSheetFilterExchangeable
// ***************************************************************************
@@ -3121,10 +3274,11 @@ class CHandlerInvCannotDrop : public IActionHandler
// Is the dragged sheet comes from a slot
if (!getInventory().isDraggingFromTextList())
{
- // Unequip
CDBCtrlSheet *pCSDst = dynamic_cast(pCaller);
- string invPath = getInventory().getDBIndexPath(pCSDst);
- getInventory().unequip(invPath);
+ if (!pCSDst->isHotbarSlot()) {
+ string invPath = getInventory().getDBIndexPath(pCSDst);
+ getInventory().unequip(invPath);
+ }
}
getInventory().endDrag();
}
@@ -3132,6 +3286,207 @@ class CHandlerInvCannotDrop : public IActionHandler
REGISTER_ACTION_HANDLER( CHandlerInvCannotDrop, "inv_cannot_drop" );
+// ***************************************************************************
+class CHandlerHotbarDropTo : public IActionHandler
+{
+ virtual void execute (CCtrlBase *pCaller, const string &Params)
+ {
+ CInterfaceManager *pIM = CInterfaceManager::getInstance();
+
+ // Check that we have drag'n'drop from inventory (list or slot)
+ // Or if we have launched the choose_bag modal
+ // To prevent other things to happens
+ string src = getParam(Params, "src");
+ CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src);
+ CDBCtrlSheet *pCSSrc = dynamic_cast(pElt);
+ CDBCtrlSheet *pCSDst = dynamic_cast(pCaller);
+ CAHManager::getInstance()->runActionHandler("swap_item", pCSDst, "src="+toString(pCSSrc->getId()));
+ getInventory().endDrag();
+ // if (!getInventory().isDragging())
+ // {
+ // CInterfaceGroup *pIG = CWidgetManager::getInstance()->getModalWindow();
+ // if (pIG == NULL) return;
+ // if (pIG->getId() != "ui:interface:bag_choose") return;
+ // getInventory().beginDrag(NULL, CInventoryManager::TextList);
+
+ // // Special case for choose in bag dialog
+ // string src = getParam(Params, "src");
+ // CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src);
+ // CDBCtrlSheet *pCSSrc = dynamic_cast(pElt);
+ // CDBCtrlSheet *pCSDst = dynamic_cast(pCaller);
+
+ // string invPath = getInventory().getDBIndexPath(pCSSrc);
+ // string bagPath = pCSDst->getSheet();
+
+ // if (bagPath == "UI:EMPTY")
+ // CAHManager::getInstance()->runActionHandler("swap_item", pCSDst, "src="+toString(pCSSrc->getId()));
+ // else
+ // getInventory().equip (bagPath, invPath);
+
+ // getInventory().endDrag();
+ // return;
+ // }
+
+ // string src = getParam(Params, "src");
+ // CInterfaceElement *pElt = CWidgetManager::getInstance()->getElementFromId(src);
+ // CDBCtrlSheet *pCSSrc = dynamic_cast(pElt);
+ // CDBCtrlSheet *pCSDst = dynamic_cast(pCaller);
+ // if (pCSSrc == NULL) return;
+
+ // // Is the dragged sheet comes from an inventory list
+ // if (getInventory().isDraggingFromTextList() || getInventory().isDraggingFromIconList())
+ // {
+ // // If the destination is an equipment slot ?
+ // if (pCSDst != NULL)
+ // {
+ // string invPath = getInventory().getDBIndexPath(pCSDst); // Get the index in the equipment
+ // if (!invPath.empty())
+ // {
+ // // Drop to the slot ie write the database with the index of the slot
+ // string bagPath = pCSSrc->getSheet(); // Get the database branch of the dragged sheet
+
+ // if (pCSSrc && pCSSrc->getType() == CCtrlSheetInfo::SheetType_Item)
+ // if (pCSDst && pCSDst->getType() == CCtrlSheetInfo::SheetType_Item)
+ // {
+ // // If the destination slot match with the type of incoming item
+ // if (pCSDst->canDropItem(pCSSrc))
+ // {
+ // // So directly equip
+ // getInventory().equip(bagPath, invPath);
+ // }
+ // else
+ // {
+ // // Else try to auto equip the player with the incoming item
+ // const string sTmp = bagPath.substr(bagPath.rfind(':')+1,bagPath.size());
+ // sint index;
+ // fromString(sTmp, index);
+ // if (!getInventory().autoEquip(index, false))
+ // getInventory().autoEquip(index, true);
+ // }
+ // }
+ // getInventory().endDrag();
+ // return;
+ // }
+ // }
+
+ // // If the destination is a list sheet
+ // IListSheetBase *pListDst = dynamic_cast(pCaller);
+ // if ((pListDst == NULL) && (pCSDst != NULL))
+ // pListDst = IListSheetBase::getListContaining(pCSDst);
+ // IListSheetBase *pListSrc = IListSheetBase::getListContaining(pCSSrc);
+ // if ((pListDst != NULL) && (pListSrc != NULL))
+ // {
+ // // If the source list and destination list are the same
+ // if (pListDst == pListSrc)
+ // {
+ // // no op
+ // getInventory().endDrag();
+ // return;
+ // }
+ // else // Source list and destination list are not the same
+ // {
+ // // Move the item to the destination list using the procedure move_to_xxx
+ // CDBGroupListSheetBag *pListDstText = dynamic_cast(pListDst);
+ // CDBGroupIconListBag *pListDstIcon = dynamic_cast(pListDst);
+
+ // if (((pListDstText != NULL) && (pListDstText->getInvType() == CInventoryManager::InvBag)) ||
+ // ((pListDstIcon != NULL) && (pListDstIcon->getInvType() == CInventoryManager::InvBag)))
+ // {
+ // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_bag");
+ // }
+ // else if (((pListDstText != NULL) && ((pListDstText->getInvType() == CInventoryManager::InvPA0) ||
+ // (pListDstText->getInvType() == CInventoryManager::InvPA1) ||
+ // (pListDstText->getInvType() == CInventoryManager::InvPA2) ||
+ // (pListDstText->getInvType() == CInventoryManager::InvPA3) ||
+ // (pListDstText->getInvType() == CInventoryManager::InvPA4) ||
+ // (pListDstText->getInvType() == CInventoryManager::InvPA5) ||
+ // (pListDstText->getInvType() == CInventoryManager::InvPA6)
+ // )) ||
+ // ((pListDstIcon != NULL) && ((pListDstIcon->getInvType() == CInventoryManager::InvPA0) ||
+ // (pListDstIcon->getInvType() == CInventoryManager::InvPA1) ||
+ // (pListDstIcon->getInvType() == CInventoryManager::InvPA2) ||
+ // (pListDstIcon->getInvType() == CInventoryManager::InvPA3) ||
+ // (pListDstIcon->getInvType() == CInventoryManager::InvPA4) ||
+ // (pListDstIcon->getInvType() == CInventoryManager::InvPA5) ||
+ // (pListDstIcon->getInvType() == CInventoryManager::InvPA6)
+ // )))
+ // {
+ // string sTmp;
+ // if (pListDstText != NULL) sTmp = toString("%d",pListDstText->getInvType()-CInventoryManager::InvPA0);
+ // if (pListDstIcon != NULL) sTmp = toString("%d",pListDstIcon->getInvType()-CInventoryManager::InvPA0);
+ // nlinfo("ici :%s", sTmp.c_str());
+ // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_pa|"+sTmp);
+ // }
+ // else if (((pListDstText != NULL) && (pListDstText->getInvType() == CInventoryManager::InvGuild)) ||
+ // ((pListDstIcon != NULL) && (pListDstIcon->getInvType() == CInventoryManager::InvGuild)))
+ // {
+ // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_guild");
+ // }
+ // else if (((pListDstText != NULL) && (pListDstText->getInvType() == CInventoryManager::InvRoom)) ||
+ // ((pListDstIcon != NULL) && (pListDstIcon->getInvType() == CInventoryManager::InvRoom)))
+ // {
+ // CAHManager::getInstance()->runActionHandler("proc", pCSSrc, "move_to_room");
+ // }
+ // }
+ // }
+ // }
+
+ // // Is the dragged sheet comes from another slot
+ // if (pCSDst != NULL)
+ // if (getInventory().isDraggingFromSlot())
+ // {
+ // CAHManager::getInstance()->runActionHandler("swap_item", pCSDst, "src="+toString(pCSSrc->getId()));
+ // }
+
+ // CAHManager::getInstance()->runActionHandler("inv_cannot_drop", pCSSrc);
+ }
+};
+REGISTER_ACTION_HANDLER( CHandlerHotbarDropTo, "hotbar_drop" );
+
+// **********************************************************************************************************
+class CHotbarLeftClickOnSlotHandler : public IActionHandler
+{
+ virtual void execute (CCtrlBase *pCaller, const string &/* Params */)
+ {
+ CDBCtrlSheet *sheet = dynamic_cast(pCaller);
+ if (!sheet) return;
+ if (sheet->getSheetId() == 0)
+ {
+ // is there's no item that is not worn, can't choose any item)
+ bool isThereObjectNotWorn = false;
+ for(uint k = 0; k < MAX_BAGINV_ENTRIES; ++k)
+ {
+ uint32 sheetid = getInventory().getBagItem(k).getSheetID();
+ if (sheetid != 0)
+ {
+ if (!getInventory().isBagItemWeared(k))
+ {
+ CEntitySheet *pES = SheetMngr.get(CSheetId(sheetid));
+ if (pES && pES->type()== CEntitySheet::ITEM)
+ {
+ CItemSheet *pIS = (CItemSheet*)pES;
+ if (getInventory().isUsableItem(sheetid))
+ {
+ isThereObjectNotWorn = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (!isThereObjectNotWorn)
+ {
+ // every object are worn, so there's no use to display an empty list -> no-op
+ return;
+ }
+ }
+ CInterfaceManager *im = CInterfaceManager::getInstance();
+ CWidgetManager::getInstance()->pushModalWindow(pCaller, "ui:interface:hotbar_choose");
+ }
+};
+REGISTER_ACTION_HANDLER(CHotbarLeftClickOnSlotHandler, "hotbar_left_click_on_slot");
+
// ***************************************************************************
class CHandlerInvAutoEquip : public IActionHandler
{
diff --git a/ryzom/client/src/interface_v3/inventory_manager.h b/ryzom/client/src/interface_v3/inventory_manager.h
index d5bd763f1..1de2a674b 100644
--- a/ryzom/client/src/interface_v3/inventory_manager.h
+++ b/ryzom/client/src/interface_v3/inventory_manager.h
@@ -41,6 +41,7 @@ const uint MAX_TEMPINV_ENTRIES = INVENTORIES::NbTempInvSlots;
const uint MAX_BAGINV_ENTRIES = INVENTORIES::NbBagSlots;
const uint MAX_HANDINV_ENTRIES = 2;
const uint MAX_EQUIPINV_ENTRIES = 19;
+const uint MAX_HOTBARINV_ENTRIES = INVENTORIES::NbHotbarSlots;
const uint MAX_ANIMALINV_ENTRIES = INVENTORIES::NbPackerSlots;
const uint MAX_GUILDINV_ENTRIES = INVENTORIES::NbGuildSlots;
const uint MAX_ROOMINV_ENTRIES = INVENTORIES::NbRoomSlots;
@@ -193,10 +194,14 @@ public:
CItemImage *getHandItem(uint index);
// get equip item (local inventory)
CItemImage *getEquipItem(uint index);
+ // get hotbar item (local inventory)
+ CItemImage *getHotbarItem(uint index);
// get hand item (local inventory)
CDBCtrlSheet *getHandSheet(uint index);
// get equip item (local inventory)
CDBCtrlSheet *getEquipSheet(uint index);
+ // get hotbar item (local inventory)
+ CDBCtrlSheet *getHotbarSheet(uint index);
// get/set money
uint64 getMoney() const;
void setMoney(uint64 value);
@@ -250,6 +255,8 @@ public:
bool isSword(uint32 sheetID);
// Check if an item is a forage tool
bool isForageToolItem(uint32 sheetID);
+ // Check if an item is usable
+ bool isUsableItem(uint32 sheetID);
// Get the Hand item sheet
uint32 getRightHandItemSheet() const { return getHandItemSheet(true); }
uint32 getLeftHandItemSheet() const { return getHandItemSheet(false); }
@@ -336,6 +343,10 @@ private:
sint32 Equip[MAX_EQUIPINV_ENTRIES];
CDBCtrlSheet *UIEquip[MAX_EQUIPINV_ENTRIES];
CDBCtrlSheet *UIEquip2[MAX_EQUIPINV_ENTRIES];
+ sint32 Hotbar[MAX_HOTBARINV_ENTRIES];
+ CDBCtrlSheet *UIHotbar[MAX_HOTBARINV_ENTRIES];
+ CDBCtrlSheet *UIHotbar2[MAX_HOTBARINV_ENTRIES];
+ CDBCtrlSheet *UIHotbar3[MAX_HOTBARINV_ENTRIES];
NLMISC::CCDBNodeLeaf *Money;
CItemImage PAInv[MAX_INVENTORY_ANIMAL][MAX_ANIMALINV_ENTRIES];
// SERVER INVENTORY
@@ -343,6 +354,7 @@ private:
CItemImage ServerTempInv[MAX_TEMPINV_ENTRIES];
sint32 ServerHands[MAX_HANDINV_ENTRIES];
sint32 ServerEquip[MAX_EQUIPINV_ENTRIES];
+ sint32 ServerHotbar[MAX_EQUIPINV_ENTRIES];
NLMISC::CCDBNodeLeaf *ServerMoney;
CItemImage ServerPAInv[MAX_INVENTORY_ANIMAL][MAX_ANIMALINV_ENTRIES];
// Drag'n'Drop
@@ -745,6 +757,25 @@ public:
};
};
+// ***************************************************************************
+/**
+ * Special list for filtering items which are usable
+ */
+class CDBGroupListSheetFilterHotbarSlot : public CDBGroupListSheet
+{
+public:
+ CDBGroupListSheetFilterHotbarSlot (const TCtorParam ¶m)
+ : CDBGroupListSheet(param)
+ {}
+
+ virtual CSheetChild *createSheetChild() { return new CSheetChildFilter; }
+
+ // A child node
+ struct CSheetChildFilter : public CDBGroupListSheet::CSheetChild
+ {
+ virtual bool isSheetValid(CDBGroupListSheet *pFather);
+ };
+};
// ***************************************************************************
/**
@@ -861,6 +892,12 @@ private:
#define CTRL_ARMOR_ARMS "ui:interface:inv_equip:content:equip:armors:arms"
#define CTRL_ARMOR_HANDS "ui:interface:inv_equip:content:equip:armors:hands"
+#define CTRL_HOTBAR_1 "ui:interface:inv_equip:content:equip:hotbar_c:hotbar:hotbar1"
+#define CTRL_HOTBAR_2 "ui:interface:inv_equip:content:equip:hotbar_c:hotbar:hotbar2"
+#define CTRL_HOTBAR_3 "ui:interface:inv_equip:content:equip:hotbar_c:hotbar:hotbar3"
+#define CTRL_HOTBAR_4 "ui:interface:inv_equip:content:equip:hotbar_c:hotbar:hotbar4"
+#define CTRL_HOTBAR_5 "ui:interface:inv_equip:content:equip:hotbar_c:hotbar:hotbar5"
+
#define CTRL_JEWL2_EARING_LEFT "ui:interface:inventory:content:equip:jewelry:earing_l"
#define CTRL_JEWL2_BRACELET_LEFT "ui:interface:inventory:content:equip:jewelry:bracelet_l"
#define CTRL_JEWL2_RING_LEFT "ui:interface:inventory:content:equip:jewelry:ring_l"
@@ -879,6 +916,18 @@ private:
#define CTRL_ARMR2_ARMS "ui:interface:inventory:content:equip:armors:arms"
#define CTRL_ARMR2_HANDS "ui:interface:inventory:content:equip:armors:hands"
+#define CTRL_HOTBAR2_1 "ui:interface:inventory:content:equip:hotbar_c:hotbar:hotbar1"
+#define CTRL_HOTBAR2_2 "ui:interface:inventory:content:equip:hotbar_c:hotbar:hotbar2"
+#define CTRL_HOTBAR2_3 "ui:interface:inventory:content:equip:hotbar_c:hotbar:hotbar3"
+#define CTRL_HOTBAR2_4 "ui:interface:inventory:content:equip:hotbar_c:hotbar:hotbar4"
+#define CTRL_HOTBAR2_5 "ui:interface:inventory:content:equip:hotbar_c:hotbar:hotbar5"
+
+#define CTRL_HOTBAR3_1 "ui:interface:inv_hotbar:content:hot:hotbar:hotbar1"
+#define CTRL_HOTBAR3_2 "ui:interface:inv_hotbar:content:hot:hotbar:hotbar2"
+#define CTRL_HOTBAR3_3 "ui:interface:inv_hotbar:content:hot:hotbar:hotbar3"
+#define CTRL_HOTBAR3_4 "ui:interface:inv_hotbar:content:hot:hotbar:hotbar4"
+#define CTRL_HOTBAR3_5 "ui:interface:inv_hotbar:content:hot:hotbar:hotbar5"
+
#endif // RY_INVENTORY_MANAGER_H
/* End of inventory_manager.h */
diff --git a/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp b/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp
index 09a096fd8..ca72dc359 100644
--- a/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp
+++ b/ryzom/client/src/interface_v3/lua_ihm_ryzom.cpp
@@ -2420,15 +2420,13 @@ int CLuaIHMRyzom::addShape(CLuaState &ls)
texture = "";
}
+ std::vectortexList;
+ if (!texture.empty())
+ splitString(texture, " ", texList);
+
for(uint j=0;j
-
-
-
-
-
-
- inline void _setProp(CCDBSynchronised &db,
- ICDBStructNode *node, TCharConnectionState value, bool
- forceSending = false) { db.x_setProp(node, uint64(value),
- forceSending); } inline void _getProp(const CCDBSynchronised
- &db, ICDBStructNode *node, TCharConnectionState
- &value) { value =
- (TCharConnectionState)db.x_getProp(node); }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ inline void _setProp(CCDBSynchronised &db, ICDBStructNode *node, TCharConnectionState value, bool forceSending = false) { db.x_setProp(node, uint64(value), forceSending); } inline void _getProp(const CCDBSynchronised &db, ICDBStructNode *node, TCharConnectionState &value) { value = (TCharConnectionState)db.x_getProp(node); }
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -807,288 +959,199 @@
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
-
-
-
-
-
diff --git a/ryzom/common/data_common/msg.xml b/ryzom/common/data_common/msg.xml
index 36c0c3175..e3acf8edd 100644
--- a/ryzom/common/data_common/msg.xml
+++ b/ryzom/common/data_common/msg.xml
@@ -1,191 +1,191 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ryzom/common/src/game_share/inventories.cpp b/ryzom/common/src/game_share/inventories.cpp
index d6b4b5ba9..f4ee24915 100644
--- a/ryzom/common/src/game_share/inventories.cpp
+++ b/ryzom/common/src/game_share/inventories.cpp
@@ -49,6 +49,7 @@ namespace INVENTORIES
NL_STRING_CONVERSION_TABLE_ENTRY(reward_sharing)
NL_STRING_CONVERSION_TABLE_ENTRY(guild)
NL_STRING_CONVERSION_TABLE_ENTRY(player_room)
+ NL_STRING_CONVERSION_TABLE_ENTRY(hotbar)
NL_END_STRING_CONVERSION_TABLE(TInventory, InventoryToString, UNDEFINED)
@@ -108,6 +109,7 @@ namespace INVENTORIES
// "", // exchange_proposition
"", // guild
"", // player_room
+ "HOTBAR", // hotbar
"" // unknown
};
diff --git a/ryzom/common/src/game_share/inventories.h b/ryzom/common/src/game_share/inventories.h
index f99dd5331..076038950 100644
--- a/ryzom/common/src/game_share/inventories.h
+++ b/ryzom/common/src/game_share/inventories.h
@@ -178,6 +178,7 @@ namespace INVENTORIES
reward_sharing, // 15 fake inventory, not in database.xml. Used by the item info protocol only
guild, // 16 (warning: number stored in guild saved file)
player_room, // 17
+ hotbar, // 18
NUM_ALL_INVENTORY // warning: distinct from NUM_INVENTORY
};
@@ -262,6 +263,7 @@ namespace INVENTORIES
const uint NbRoomSlots = 1000;
const uint NbGuildSlots = 1000;
const uint NbTempInvSlots = 16;
+ const uint NbHotbarSlots = 5;
enum TItemPropId
{
diff --git a/ryzom/common/src/game_share/item_family.cpp b/ryzom/common/src/game_share/item_family.cpp
index 695225b11..d8ee8a25e 100644
--- a/ryzom/common/src/game_share/item_family.cpp
+++ b/ryzom/common/src/game_share/item_family.cpp
@@ -124,6 +124,16 @@ namespace ITEMFAMILY
}
+ bool isUsable( EItemFamily fam )
+ {
+ return
+ fam == ITEM_SAP_RECHARGE ||
+ fam == CRYSTALLIZED_SPELL ||
+ fam == CONSUMABLE ||
+ fam == XP_CATALYSER;
+
+ }
+
/**
* returns true if items of this family are destroyed when they are completely worned out
*/
diff --git a/ryzom/common/src/game_share/item_family.h b/ryzom/common/src/game_share/item_family.h
index 3237ad7c8..ec9d25e97 100644
--- a/ryzom/common/src/game_share/item_family.h
+++ b/ryzom/common/src/game_share/item_family.h
@@ -98,6 +98,8 @@ namespace ITEMFAMILY
bool isResellable( EItemFamily fam );
/// return true if this family of item can display a custom text
bool isTextCustomizable( EItemFamily fam );
+ /// return true if this family of item can use item (consume, execute, open, etc)
+ bool isUsable( EItemFamily fam );
/// is craftable
}; // ITEMFAMILY
diff --git a/ryzom/tidy_config.txt b/ryzom/tidy_config.txt
new file mode 100644
index 000000000..ad1f97004
--- /dev/null
+++ b/ryzom/tidy_config.txt
@@ -0,0 +1,7 @@
+indent: yes
+indent-spaces: 4
+markup: yes
+output-xml: yes
+input-xml: yes
+wrap: 0
+