Show trade tier in formspec

This commit is contained in:
cora 2022-05-17 19:40:20 +02:00 committed by PrairieAstronomer
parent 693345fb27
commit 0b35f3ad62
1 changed files with 18 additions and 6 deletions

View File

@ -61,6 +61,14 @@ if minetest.get_mapgen_setting("mg_name") == "v6" then
TRADE_V6_BIRCH_SAPLING = { { "mcl_core:emerald", 8, 11 }, { "mcl_core:birchsapling", 1, 1 } }
end
local tiernames = {
"Novice",
"Apprentice",
"Journeyman",
"Expert",
"Master",
}
local professions = {
unemployed = {
name = N("Unemployed"),
@ -535,8 +543,7 @@ local stand_still = function(self)
self.jump = false
end
local init_trader_vars = function(self)
self.object:set_properties({textures=professions[self._profession].textures})
local function init_trader_vars(self)
if not self._max_trade_tier then
self._max_trade_tier = 1
end
@ -561,8 +568,8 @@ end
local function go_to_pos(entity,b)
local s=entity.object:get_pos()
if vector.distance(b,s) < 5 then
set_velocity(entity,0)
if vector.distance(b,s) < 1 then
--set_velocity(entity,0)
return true
end
local v = { x = b.x - s.x, z = b.z - s.z }
@ -601,7 +608,7 @@ local function employ(self,jobsite_pos)
self._profession=p
m:set_string("villager",self._id)
self._jobsite = jobsite_pos
init_trader_vars(self)
self.object:set_properties({textures=professions[self._profession].textures})
return true
end
end
@ -775,7 +782,7 @@ local function show_trade_formspec(playername, trader, tradenum)
"size[9,8.75]"
.."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]"
..disabled_img
.."label[4,0;"..F(minetest.colorize("#313131", S(profession))).."]"
.."label[3,0;"..F(minetest.colorize("#313131", S(profession).." - "..S(tiernames[trader._max_trade_tier]))) .."]"
.."list[current_player;main;0,4.5;9,3;9]"
.."list[current_player;main;0,7.74;9,1;]"
..b_prev..b_next
@ -1323,8 +1330,13 @@ mobs:register_mob("mobs_mc:villager", {
end,
on_spawn = function(self)
if self._id then
self.object:set_properties({textures=professions[self._profession].textures})
return
end
self._id=minetest.sha1(minetest.get_gametime()..minetest.pos_to_string(self.object:get_pos())..tostring(math.random()))
self._profession = "unemployed"
self.object:set_properties({textures=professions[self._profession].textures})
end,
on_die = function(self, pos)
-- Close open trade formspecs and give input back to players