diff --git a/npc.lua b/npc.lua index dbcf40e..0aaab59 100755 --- a/npc.lua +++ b/npc.lua @@ -377,6 +377,16 @@ local function choose_spawn_items(self) -- For test npc.add_item_to_inventory(self, "default:tree", 10) npc.add_item_to_inventory(self, "default:cobble", 10) + npc.add_item_to_inventory(self, "default:diamond", 2) + npc.add_item_to_inventory(self, "default:mese_crystal", 2) + npc.add_item_to_inventory(self, "flowers:rose", 2) + npc.add_item_to_inventory(self, "advanced_npc:marriage_ring", 2) + npc.add_item_to_inventory(self, "flowers:geranium", 2) + npc.add_item_to_inventory(self, "mobs:meat", 2) + npc.add_item_to_inventory(self, "mobs:leather", 2) + npc.add_item_to_inventory(self, "default:sword_stone", 2) + npc.add_item_to_inventory(self, "default:shovel_stone", 2) + npc.add_item_to_inventory(self, "default:axe_stone", 2) minetest.log("Initial inventory: "..dump(self.inventory)) end @@ -534,7 +544,17 @@ local function npc_spawn(self, pos) ent.trader_data.trade_list.both = { ["default:tree"] = {}, ["default:cobble"] = {}, - ["default:wood"] = {} + ["default:wood"] = {}, + ["default:diamond"] = {}, + ["default:mese_crystal"] = {}, + ["flowers:rose"] = {}, + ["advanced_npc:marriage_ring"] = {}, + ["flowers:geranium"] = {}, + ["mobs:meat"] = {}, + ["mobs:leather"] = {}, + ["default:sword_stone"] = {}, + ["default:shovel_stone"] = {}, + ["default:axe_stone"] = {} } npc.trade.generate_trade_offers_by_status(ent) @@ -675,7 +695,7 @@ mobs:register_mob("advanced_npc:npc", { -- Reset timer self.trader_data.change_offers_timer = 0 -- Re-select casual trade offers - select_casual_trade_offers(self) + npc.trade.generate_trade_offers_by_status(self) end -- Timer function for gifts diff --git a/trade/prices.lua b/trade/prices.lua index 932b24f..6c6ef7d 100644 --- a/trade/prices.lua +++ b/trade/prices.lua @@ -43,6 +43,7 @@ npc.trade.prices.table["farming:bread"] = {tier = npc.trade.prices.curre -- Tier 2 items: medium priced items -- Tier 1 items: expensive items +npc.trade.prices.table["default:mese_crystal"] = {tier = npc.trade.prices.currency.tier1.string, count = 45} npc.trade.prices.table["default:diamond"] = {tier = npc.trade.prices.currency.tier1.string, count = 90} npc.trade.prices.table["advanced_npc:marriage_ring"] = {tier = npc.trade.prices.currency.tier1.string, count = 100} diff --git a/trade/trade.lua b/trade/trade.lua index 4ed2387..54516d4 100644 --- a/trade/trade.lua +++ b/trade/trade.lua @@ -58,6 +58,7 @@ npc.trade.DEDICATED_TRADER_PROMPT = { action_type = "function", response_id = 1, action = function(self, player) + npc.trade.show_dedicated_trade_formspec(self, player, npc.trade.OFFER_SELL) end }, [2] = { @@ -65,7 +66,7 @@ npc.trade.DEDICATED_TRADER_PROMPT = { action_type = "function", response_id = 2, action = function(self, player) - + npc.trade.show_dedicated_trade_formspec(self, player, npc.trade.OFFER_BUY) end } } @@ -107,6 +108,50 @@ function npc.trade.show_trade_offer_formspec(self, player, offer_type) minetest.show_formspec(player:get_player_name(), "advanced_npc:trade_offer", formspec) end + +function npc.trade.show_dedicated_trade_formspec(self, player, offers_type) + + -- Choose the correct offers + local offers = self.trader_data.buy_offers + local menu_offer_type = "sell" + if offers_type == npc.trade.OFFER_SELL then + offers = self.trader_data.sell_offers + menu_offer_type = "buy" + end + + -- Create a grid with the items for trade offer + local max_columns = 4 + local current_x = 0.2 + local current_y = 0.5 + local current_col = 1 + local current_row = 1 + local formspec = "size[8.9,8.2]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "label[0.2,0.05;Click on the price button to "..menu_offer_type.." item]" + for i = 1, #offers do + local price_item_name = minetest.registered_items[npc.get_item_name(offers[i].price)].description + formspec = formspec.. + "box["..current_x..","..current_y..";2,2.3;#212121]".. + "item_image["..(current_x + 0.45)..","..(current_y + 0.15)..";1.3,1.3;"..npc.get_item_name(offers[i].item).."]".. + "item_image_button["..(current_x + 1.15)..","..(current_y + 1.4)..";1,1;"..offers[i].price..";price"..i..";]".. + "label["..(current_x + 0.15)..","..(current_y + 1.7)..";Price]" + current_x = current_x + 2.1 + current_col = current_col + 1 + if current_col > 4 then + current_col = 1 + current_x = 0.2 + current_y = current_y + 2.4 + end + end + + formspec = formspec .. "button_exit[2.5,7.9;3.9,0.5;exit;Nevermind]" + + minetest.show_formspec(player:get_player_name(), "advanced_npc:dedicated_trading_offers", formspec) + +end + function npc.trade.get_random_trade_status() local chance = math.random(1,10)