From 356eb427fb8f15da9fe26f79c28dd1b36acb9d13 Mon Sep 17 00:00:00 2001 From: runs Date: Wed, 18 Aug 2021 00:55:45 +0200 Subject: [PATCH] first commit --- LICENSE.md | 4 + README.md | 8 + api.lua | 521 ++++++++++++++++++++ brain_merchant.lua | 37 ++ cloth.lua | 25 + init.lua | 20 + locale/eraz.es.tr | 24 + loots.lua | 15 + merchant.lua | 64 +++ mod.conf | 3 + textures/eraz_adventurer_boots.png | Bin 0 -> 4794 bytes textures/eraz_adventurer_boots_inv.png | Bin 0 -> 5234 bytes textures/eraz_adventurer_boots_preview.png | Bin 0 -> 6037 bytes textures/eraz_adventurer_jacket.png | Bin 0 -> 5605 bytes textures/eraz_adventurer_jacket_inv.png | Bin 0 -> 4284 bytes textures/eraz_adventurer_jacket_preview.png | Bin 0 -> 4793 bytes textures/eraz_basket.png | Bin 0 -> 2133 bytes textures/eraz_spawnegg_merchant.png | Bin 0 -> 1424 bytes 18 files changed, 721 insertions(+) create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 api.lua create mode 100644 brain_merchant.lua create mode 100644 cloth.lua create mode 100644 init.lua create mode 100644 locale/eraz.es.tr create mode 100644 loots.lua create mode 100644 merchant.lua create mode 100644 mod.conf create mode 100644 textures/eraz_adventurer_boots.png create mode 100644 textures/eraz_adventurer_boots_inv.png create mode 100644 textures/eraz_adventurer_boots_preview.png create mode 100644 textures/eraz_adventurer_jacket.png create mode 100644 textures/eraz_adventurer_jacket_inv.png create mode 100644 textures/eraz_adventurer_jacket_preview.png create mode 100644 textures/eraz_basket.png create mode 100644 textures/eraz_spawnegg_merchant.png diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..efb5d1d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,4 @@ +# Licenses + +- Source code: GPLv3. +- Textures: CC BY-SA 4.0 diff --git a/README.md b/README.md new file mode 100644 index 0000000..6512c11 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Errand Merchands + +Merchants to trading with. + +## Licenses + +- Code: GPL v3.0 +- Textures: CC BY-SA 4.0 diff --git a/api.lua b/api.lua new file mode 100644 index 0000000..a8fbc68 --- /dev/null +++ b/api.lua @@ -0,0 +1,521 @@ +local S = ... + +--Helper Funtions + +local function is_table_empty(_table) + return next(_table) == nil +end + +local function is_srt_empty(s) + return s == nil or s == '' +end + +local function round(x) + return x>=0 and math.floor(x+0.5) or math.ceil(x-0.5) +end + +local function boolean_to_string(var) + if var or var == 1 or var == "true" then + return "true" + elseif not(var) or var == nil or var == 0 or var == "false" then + return "false" + else + return "false" + end +end + +eraz.file_exists = function(filename) + local f = io.open(filename, "r") + if f ~= nil then + io.close(f) + return true + else + return false + end +end + +--CORE functions + +local function set_gender() + local gender + if math.random(2) == 1 then + gender = "male" + else + gender = "female" + end + return gender +end + +local function set_cloths() + local cloths = { + head = nil, + upper = "eraz:adventurer_jacket", + lower = nil, + footwear = "eraz:adventurer_boots", + } + return cloths +end + +local function set_loot() + if is_table_empty(eraz.loots) then + return nil + end + local keyset = {} + for k in pairs(eraz.loots) do + table.insert(keyset, k) + end + local loot = keyset[math.random(#keyset)] + --minetest.chat_send_all(loot) + return loot +end + +local function load_loot(merchant) + local loot = eraz.loots[merchant.loot] + return loot +end + +local function update_nick(self) + if self.show_name and self.nick and not(self.nick == "") then + self.object:set_nametag_attributes({ + text = self.nick, + bgcolor = "#FFFFFF00", + }) + else + self.object:set_nametag_attributes({ + text = "", + }) + end +end + +local function compose_cloth(_base_texture, cloths) + local base_texture = player_api.compose_base_texture(_base_texture, { + canvas_size ="128x64", + skin_texture = "player_skin.png", + eyebrowns_pos = "16,16", + eye_right_pos = "18,24", + eye_left_pos = "26,24", + mouth_pos = "16,28", + hair_preview = false, + hair_pos = "0,0", + }) + local cloth = base_texture.."^".."[combine:128x64:0,0=" + if cloths.head then + cloth = cloth..":"..player_api.cloth_pos[1].."=" + ..minetest.registered_craftitems[cloths.head]._cloth_texture + end + if cloths.upper then + cloth = cloth..":"..player_api.cloth_pos[2].."=" + ..minetest.registered_craftitems[cloths.upper]._cloth_texture + end + if cloths.lower then + cloth = cloth..":"..player_api.cloth_pos[3].."=" + ..minetest.registered_craftitems[cloths.lower]._cloth_texture + end + if cloths.footwear then + cloth = cloth..":"..player_api.cloth_pos[4].."=" + ..minetest.registered_craftitems[cloths.footwear]._cloth_texture + end + return cloth +end + +function eraz.set_initial_properties(self, staticdata, dtime_s) + if dtime_s == 0 then --new merchant + --self.type already defined when spawned + self.nick = S("Merchant") + self.gender = mobkit.remember(self, "gender", set_gender()) + local base_texture = player_api.create_base_texture(self.gender) + self.base_texture = mobkit.remember(self, "base_texture", minetest.serialize(base_texture)) + local cloths = set_cloths() + local cloth = compose_cloth(base_texture, cloths) + self.cloth = mobkit.remember(self, "cloth", cloth) + self.loot = mobkit.remember(self, "loot", set_loot()) + self.show_name = mobkit.remember(self, "show_name", false) + else + self.cloth = mobkit.recall(self, "cloth") + self.base_texture = mobkit.recall(self, "base_texture") + self.gender = mobkit.recall(self, "gender") + self.loot = mobkit.recall(self, "loot") + self.type = mobkit.recall(self, "type") + self.nick = mobkit.recall(self, "nick") or S("Merchant") + self.show_name = mobkit.recall(self, "show_name") or false + end + local model + if self.gender == "female" then + model = "female.b3d" + else + model = "character.b3d" + end + self.trading = mobkit.remember(self, "trading", false) + self.object:set_properties({ + visual = "mesh", + mesh = model, + textures = {self.cloth}, + }) + if self.type == "fixed" then + self:stand() + end + update_nick(self) +end + +function eraz.register_egg(name, desc, inv_img) + local description = S("@1", desc) + minetest.register_craftitem(name.."_set", { + description = description, + inventory_image = inv_img, + groups = {spawn_egg = 2}, + stack_max = 1, + on_place = function(itemstack, placer, pointed_thing) + local spawn_pos = pointed_thing.above + local under = minetest.get_node(pointed_thing.under) + local def = minetest.registered_nodes[under.name] + if def and def.on_rightclick then + return def.on_rightclick(pointed_thing.under, under, placer, itemstack) + end + if spawn_pos and not minetest.is_protected(spawn_pos, placer:get_player_name()) then + if not minetest.registered_entities[name] then + return + end + local meta = itemstack:get_meta() + local staticdata = meta:get_string("staticdata") + local ent = minetest.add_entity(spawn_pos, name, staticdata) + local ent_ref = ent:get_luaentity() + local merchant_type + local controls = placer:get_player_control() + if controls.aux1 then + merchant_type = "fixed" + else + merchant_type = "errand" + end + ent_ref.type = mobkit.remember(ent_ref, "type", merchant_type) + if merchant_type == "fixed" then + ent_ref:stand() + end + itemstack:take_item() + end + end, + }) +end + +function eraz.cancel_trading(self, msg) + local player_name = self.trading + if player_name then + local player = minetest.get_player_by_name(player_name) + if player then + minetest.close_formspec(player_name, "eraz:merchant") + if msg then + minetest.chat_send_player(player_name, msg) + end + end + end +end + +local _contexts = {} + +local function get_context(name) + local context = _contexts[name] or {} + _contexts[name] = context + return context +end + +minetest.register_on_leaveplayer(function(player) + _contexts[player:get_player_name()] = nil +end) + +local function get_items_loot(loot) + local items_loot = "" + local items_count = 0 + local col = 0 + local row = 0 + local amount, price + for item, item_def in pairs(eraz.loots[loot].items) do + amount = tostring(item_def.amount or 1) + price = tostring(item_def.price or 0)..elez.coin_symbol + items_loot = items_loot.. + "item_image_button["..tostring(col)..","..tostring(row)..";1,1;"..item_def.name..";"..item..";"..amount.."/"..price.."]" + items_count = items_count + 1 + if col == 2 then + col = 0 + row = row + 1 + else + col = col + 1 + end + end + return items_loot, items_count +end + +local function get_items_basket(player) + local items_basket = "" + local total_cost = 0 + local player_name = player:get_player_name() + local context = get_context(player_name) + if is_table_empty(context.basket) then + return items_basket, total_cost + end + local col = 0 + local row = 0 + local amount, price + for item, item_def in pairs(context.basket) do + amount = tostring(item_def.amount or 1) + price = tostring(item_def.price or 0)..elez.coin_symbol + items_basket = items_basket.. + "item_image_button["..tostring(col)..","..tostring(row) + ..";1,1;"..item_def.name..";"..item..";"..amount.."/"..price.."]" + total_cost = total_cost + item_def.price + if col == 2 then + col = 0 + row = row + 1 + else + col = col + 1 + end + end + context.total_cost = total_cost + return items_basket, total_cost +end + +local function compose_edit_formspec(self, player) + local player_name = player:get_player_name() + local context = get_context(player_name) + local loots = "" + local index + local i = 1 + for loot_name in pairs(eraz.loots) do + if i > 1 then + loots = loots.."," + end + loots = loots..loot_name + if loot_name == context.merchant.loot then + index = i + end + i = i + 1 + end + if not index then + index = 0 + end + local selected = "false" + if context.merchant.type == "fixed" then + selected = "true" + end + local formspec = [[ + formspec_version[4] + size[6,6] + set_focus[btn_close;] + field[0.5,0.5;3,0.5;ipt_nick;]]..S("Name")..":"..";"..context.merchant.nick..[[] + checkbox[3.75,0.75;chk_show_name;]]..S("Show name")..";"..boolean_to_string(context.merchant.show_name)..[[] + label[0.5,2;]]..S("Loot")..":"..[[] + dropdown[1.5,1.5;3;drpdwn;]]..loots..[[;]]..tostring(index)..[[;] + checkbox[0.5,3;chk_fixed;]]..S("Fixed")..[[;]]..selected..[[] + style[btn_remove;bgcolor=indianred] + button_exit[0.5,3.5;1,1;btn_remove;]]..S("Remove")..[[] + button_exit[2.5,4.5;1,1;btn_close;]]..S("Close")..[[] + ]] + return formspec +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "eraz:edit_merchant" then + return + end + local player_name = player:get_player_name() + local context = get_context(player_name) + if fields.drpdwn then + context.merchant.loot = mobkit.remember(context.merchant, "loot", fields.drpdwn) + end + if fields.chk_fixed then + local is_fixed = minetest.is_yes(fields.chk_fixed) + local _type + if is_fixed then + _type = "fixed" + else + _type = "errand" + end + context.merchant.type = mobkit.remember(context.merchant, "type", _type) + if is_fixed then + context.merchant:stand() + end + end + if fields.ipt_nick then + context.merchant.nick = mobkit.remember(context.merchant, "nick", fields.ipt_nick) + update_nick(context.merchant) + end + if fields.chk_show_name then + context.merchant.show_name = mobkit.remember(context.merchant, "show_name", + minetest.is_yes(fields.chk_show_name)) + update_nick(context.merchant) + end + if fields.btn_remove then + if context.merchant.trading then + minetest.close_formspec(player_name, "eraz:merchant") + end + eraz.cancel_trading(context.merchant, S("The merchant has been removed.")) + context.merchant.object:remove() + end +end) + +local function compose_formspec(self, player, msg) + local money = tostring(elez.get_money(player)).." "..elez.coin_symbol + local items_loot, items_count = get_items_loot(self.loot) + local items_basket, total_cost = get_items_basket(player) + total_cost = tostring(total_cost).." "..elez.coin_symbol + local items_count_str = tostring(items_count) + if is_srt_empty(msg) then + msg = "" + end + local face = player_api.get_face(minetest.deserialize(self.base_texture), 1.0, true) + local formspec = [[ + formspec_version[4] + size[8.25,8.25] + image[0.5,0.25;0.5,0.5;]]..face..[[] + label[1.25,0.5;]]..self.nick..[[] + label[0.5,1;]]..items_count_str.." "..S("items(s)") + .." | "..S("Amount/Price")..[[] + label[0.5,4.5;]]..S("Click to add to the basket")..[[] + label[4.25,4.5;]]..S("Click to delete from the basket")..[[] + label[5.25,0.75;]]..S("Money")..":".." "..money..[[] + image[4.5,0.625;0.5,0.5;eraz_basket.png] + label[5.25,1;]]..S("Cost")..":".." "..total_cost..[[] + box[0.5,1.25;3,3;darkgray] + scroll_container[0.5,1.25;3,3;scroll_buy;vertical;] + ]]..items_loot..[[ + scroll_container_end[] + scrollbaroptions[min=0;max=]]..tostring(round(items_count)) + ..[[;smallstep=]]..items_count_str..[[;largestep=]]..items_count_str..[[] + style_type[scroll_buy;bgcolor=#446699] + scrollbar[3.5,1.25;0.5,3;vertical;scroll_buy;0] + box[4.25,1.25;3,3;darkgray] + scroll_container[4.25,1.25;3,3;scroll_basket;vertical;] + ]]..items_basket..[[ + scroll_container_end[] + scrollbaroptions[min=0;max=]]..tostring(round(items_count)) + ..[[;smallstep=]]..items_count_str..[[;largestep=]]..items_count_str..[[] + scrollbar[7.25,1.25;0.5,3;vertical;scroll_basket;0] + button_exit[5.125,5;1,1;btn_buy;]]..S("Buy")..[[] + label[0.5,6.5;]]..msg..[[] + button_exit[3.25,6.75;1,1;btn_close;]]..S("Close")..[[] + ]] + return formspec +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "eraz:merchant" then + return + end + local player_name = player:get_player_name() + local context = get_context(player_name) + local item, item_def + local action + --minetest.chat_send_all(minetest.serialize(fields)) + for key, value in pairs(fields) do + if not(key=="scroll_buy") and not(key=="scroll_basket") and not(key=="quit") + and not(key=="btn_close") and not(key=="btn_buy") then + item = key + if string.sub(key, 1, 8) == "_BASKET_" then + action = "delete" + item_def = context.basket[item] + else + action = "buy" + item_def = eraz.loots[context.merchant.loot].items[key] + end + break + end + end + if item then + if action == "buy" then + item = "_BASKET_"..item + if context.basket[item] then --already in the basket=>only increase amount + context.basket[item].amount = context.basket[item].amount + item_def.amount + context.basket[item].price = context.basket[item].price + item_def.price + else --new + context.basket[item] = { + name = item_def.name, + price = item_def.price, + amount = item_def.amount, + } + end + else --action = "delete" + context.total_cost = context.total_cost - context.basket[item].price + context.basket[item] = nil + end + minetest.show_formspec(player_name, "eraz:merchant", + compose_formspec(context.merchant, player)) + return + end + if fields.btn_buy then + local msg + if context.total_cost <= 0 then + msg = S("You have not selected products to buy!") + elseif elez.get_money(player) < context.total_cost then + msg = S("You have not enough money!") + else + local inv = player:get_inventory() + local item_stack + local cost = 0 + for _item, _item_def in pairs(context.basket) do + item_stack = ItemStack(_item_def.name.." "..tostring(_item_def.amount)) + if inv:room_for_item("main", item_stack) then + inv:add_item("main", item_stack) + context.basket[_item] = nil + elez.add_money(player, -_item_def.price) + cost = cost + _item_def.price + context.total_cost = context.total_cost - _item_def.price + end + end + msg = S("You have purchased products with a value of").." " + ..tostring(cost).." "..elez.coin_symbol + end + minetest.show_formspec(player_name, "eraz:merchant", + compose_formspec(context.merchant, player, msg)) + return + end + context.merchant.trading = false +end) + +local function load_shop(self, player) + local player_name = player:get_player_name() + local loot = load_loot(self) + if not loot then + minetest.chat_send_player(player_name, S("This merchant has not loot.")) + return + end + local context = get_context(player_name) + context.merchant = self + context.basket = {} + context.total_cost = 0 + minetest.show_formspec(player_name, "eraz:merchant", + compose_formspec(self, player)) + self.trading = player_name + if self.type == "errand" then + self:stand() --stop merchant + end +end + +local function edit_merchant(self, player) + local player_name = player:get_player_name() + local context = get_context(player_name) + context.merchant = self + minetest.show_formspec(player_name, "eraz:edit_merchant", + compose_edit_formspec(self, player)) +end + +function eraz.register_loot(name, def) + if not eraz.loots[name] then + eraz.loots[name] = def + end +end + +function eraz.on_rightclick(self, player) + local controls = player:get_player_control() + local has = minetest.check_player_privs(player, { + server = true, + }) + if has and controls.aux1 then + edit_merchant(self, player) + return + end + if self.trading then + minetest.chat_send_player(player:get_player_name(), S("This merchant is already trading with another player.")) + return + else + load_shop(self, player) + return + end +end diff --git a/brain_merchant.lua b/brain_merchant.lua new file mode 100644 index 0000000..5c9355b --- /dev/null +++ b/brain_merchant.lua @@ -0,0 +1,37 @@ +-- The Brain of the Merchant +-- + +function eraz.merchant_brain(self) + + --local pos = self.object:get_pos() + + mobkit.vitals(self) + + if self.hp <= 0 then + self:on_die() + return + end + + if mobkit.timer(self, 1) then + + local prty = mobkit.get_queue_priority(self) + + if prty < 30 then + if self.isinliquid then + mobkit.hq_liquid_recovery(self, 30) + return + end + end + + --local player = mobkit.get_nearby_player(self) + + --minetest.chat_send_all("test") + + --Wandering default + if mobkit.is_queue_empty_high(self) and self.type == "errand" + and not(self.trading) then + mobkit.hq_roam(self, 0) + end + + end +end diff --git a/cloth.lua b/cloth.lua new file mode 100644 index 0000000..998ae68 --- /dev/null +++ b/cloth.lua @@ -0,0 +1,25 @@ +local S = ... + +--Adventurer Jacket + +player_api.register_cloth("eraz:adventurer_jacket", { + description = S("Adventurer Jacket"), + texture = "eraz_adventurer_jacket.png", + inventory_image = "eraz_adventurer_jacket_inv.png", + wield_image = "eraz_adventurer_jacket_inv.png", + preview = "eraz_adventurer_jacket_preview.png", + gender = "unisex", + groups = {cloth = 2}, +}) + +--Adventurer Boots + +player_api.register_cloth("eraz:adventurer_boots", { + description = S("Adventurer Boots"), + texture = "eraz_adventurer_boots.png", + inventory_image = "eraz_adventurer_boots_inv.png", + wield_image = "eraz_adventurer_boots_inv.png", + preview = "eraz_adventurer_boots_preview.png", + gender = "unisex", + groups = {cloth = 4}, +}) diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..4e385f5 --- /dev/null +++ b/init.lua @@ -0,0 +1,20 @@ +-- +-- Eraz +-- + +eraz = {} +eraz.loots = {} + +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +local S = minetest.get_translator(modname) + +assert(loadfile(modpath .. "/api.lua"))(S) +assert(loadfile(modpath .. "/loots.lua"))() +assert(loadfile(modpath .. "/brain_merchant.lua"))() +assert(loadfile(modpath .. "/merchant.lua"))(S) +assert(loadfile(modpath .. "/cloth.lua"))(S) +local user_file = modpath .. "/user.lua" +if eraz.file_exists(user_file) then + assert(loadfile(user_file))() +end diff --git a/locale/eraz.es.tr b/locale/eraz.es.tr new file mode 100644 index 0000000..2ec92fc --- /dev/null +++ b/locale/eraz.es.tr @@ -0,0 +1,24 @@ +# textdomain: eraz +Merchant=Mercader +Money=Dinero +Cost=Coste +item(s)=producto(s) +Amount/Price=Cantidad/Precio +Click to add to the basket=Clic para añadir a la cesta +Click to delete from the basket=Clic para eliminar de la cesta +Buy=Comprar +Close=Cerrar +Name=Nombre +Loot=Lote +Fixed=Estático +Remove=Eliminar +Show name=Mostrar nombre +This merchant has not loot.=Este mercader no tiene nada que vender. +The merchant has been removed.=El mercader ha sido eliminado. +The merchant has died.=El mercader ha muerto. +This merchant is already trading with another player.=Este mercader ya está comerciando con otro jugador. +You have purchased products with a value of=Has comprado productos por valor de +You have not enough money!=¡No tienes suficiente dinero! +You have not selected products to buy!=No has seleccionado productos para comprar +Adventurer Jacket=Chaqueta de aventurero +Adventurer Boots=Botas de aventurero diff --git a/loots.lua b/loots.lua new file mode 100644 index 0000000..33f1941 --- /dev/null +++ b/loots.lua @@ -0,0 +1,15 @@ +eraz.register_loot("basic_food", { + type = "fixed", + items = { + apple = { + name = "default:apple", + price = 3, + amount = 6, + }, + bread = { + name = "farming:bread", + price = 1, + amount = 1, + }, + }, +}) diff --git a/merchant.lua b/merchant.lua new file mode 100644 index 0000000..120803a --- /dev/null +++ b/merchant.lua @@ -0,0 +1,64 @@ +-- +-- ERRAND MERCHANTS +-- +local S = ... + +minetest.register_entity("eraz:merchant",{ + type = "errand", + genre = "male", + visual = "mesh", + mesh = "character.b3d", + textures = {"character.png"}, + visual_size = {x= 1.0, y= 1.0}, + collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}, + static_save = true, + physical = true, + collide_with_objects = true, + -- mod props + + -- mobkit api props + get_staticdata = mobkit.statfunc, + stepheight = 0.1, --EVIL! + springiness = 0, + buoyancy = 0.5, -- portion of hitbox submerged + max_speed = 3, + jump_height = 1, + view_range = 10, + lung_capacity = 10, -- seconds + max_hp = 20, + + attack = {range=0.5, damage_groups = {fleshy=3}}, + + animation = { + stand = {range= { x= 0, y= 79}, speed= 5, loop= true}, + walk = {range= { x= 168, y= 187}, speed= 25, loop= true}, + }, + + logic = eraz.merchant_brain, + + on_activate = function(self, staticdata, dtime_s) --on_activate, required + mobkit.actfunc(self, staticdata, dtime_s) + eraz.set_initial_properties(self, staticdata, dtime_s) + end, + + on_step = function(self, dtime) + mobkit.stepfunc(self, dtime) -- required + end, + + on_rightclick = function(self, clicker) + eraz.on_rightclick(self, clicker) + end, + + stand = function(self) + mobkit.clear_queue_low(self) + mobkit.clear_queue_high(self) + mobkit.animate(self, "stand") + end, + + on_die = function(self) + eraz.cancel_trading(self, S("The merchant has died.")) + end, + +}) + +eraz.register_egg("eraz:merchant", S("Merchant"), "eraz_spawnegg_merchant.png", false) diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..0f6d96a --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name = eraz +description = Errand Merchants +depends = player_api diff --git a/textures/eraz_adventurer_boots.png b/textures/eraz_adventurer_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b73f8ef6560d9766f7da805ef38640f8ac0203 GIT binary patch literal 4794 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 Ur<##ik^lez07*qoM6N<$g1+YYga7~l literal 0 HcmV?d00001 diff --git a/textures/eraz_adventurer_boots_inv.png b/textures/eraz_adventurer_boots_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..dc1a6be5c5d1f8df446c354352b1010d9b181b75 GIT binary patch literal 5234 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 literal 0 HcmV?d00001 diff --git a/textures/eraz_adventurer_jacket_inv.png b/textures/eraz_adventurer_jacket_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..067d439e344d5c54c14cb63e3d24ecd38b62f143 GIT binary patch literal 4284 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 ees1S>%>D}%IkBCoCu3Rw0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3y=k}M|+hA*H2L2A-+#sw>(?#uFBE)*VsMTehiLINf>Z$lCU^Th9qFTQe?}NE9bqN z7+WmqBydbA8Q@xAumi?O2B-q89CB03BX3|&*`PyaH2v6%yk*B*&M2`RxAXvegvo?k z{;wnaor~^uz(qWl_LVF4m7Lk^!jTgRQMe35FTvl(uP?_ngP^`NcLJPo`3%6n zRDL5@en4j~RNlYpNZS5PK#JIbvKh%B5Gz$8RbopiG!YWn0cf)IluKH`BC2V#$y9Q# zfI}6qHup4nmnKbL!w4ZjXs#hQuo-y*Rw)X9TIq0TYSyBvRhxDlI%}?8VYRmEiaJ|v zrD?0JwcbXXq32$@_S#$Tee^lf$SAH3>T&cj#+)oVnR#;e;xWoqood7pmQS%hg+NyZw%E=MU6Au>Rrr zA5fDIYUv^67q%a$G1}Vq6ykECjv0uhA^_eT0m&gH$1HX!B{_1ASsaO~(8MOy!P(-7 zfnYh3^vVzHenU<}uKx^f0U**pfn0Ft{swY?#O=>e+w%!=eh7IPdQxMi`fjdsqNu7i zPwU1;Pj6|BR@t2GSv8X*t_p0}(p*}4vN|@KEtRokvG!fpZmH=aPNqB7xUt$6-C3KM z?V8Lgac>Q(?DCM=Qx*xRR@IP6<*ydD@;*k>nLKw(XDfG{I|n;K4{d7QyBesSwOQrF zQ{z0Pt~KCtUAY)AtZ}n#7DHl<=yu7wuLYWErm;Jzo4~*#ftsgwJ*E=-UI4Q4>9g*U zrElwL$|SpW#ADo~?@NzM+MGvg1{k4jTByXwr5v+Z+3;@dI+tl33%uj%P|6z6X*tU} z0f6{Ot(@%{rL(gi;Q#u0LJ6*2n%9whYD&J{U3~xfv~~Dkca+ss&qA|oO;Vzg?e+s# zcYvR2N3{VjI4)SNCNmU9ZPyzygmLR4RQ2XjY_b$M=$%;prvYnfU-|=%Q}ZCAHI2N)#R#$nv}Fa+BE5 zep3&WA5y`oE!se%`)&_)Xi0*9ViPp8`SmWzqegYQI$oSg8J){z=Ww79+MsbeLU1|4 zsx&S_LjAcAB*LXTVyXtpQaj|KHZmR{ot7@d-E&&#^N`?Hl(wn zn{6EDBqSh8>@tY6%X2`<(}pDB{I>!C1^YDFdHTppc&Mem4A6W$YNviowu^I@X|Yzr z!R}mNLjER6^sirRLEtBPj2wtunpZ}i5QPYxnL6u0ZhL|&x(`a}+F62b=-?g0I}2sy zTrkOfa1V2kl$JRqPYEJy_3Y-T+GSM8NZe}lfIwmBTON`C5Z==j^hCOd3kBGbI!bzb zNrQzeeJ65xeEnwbD8ZEm`HQ4cUg!k^i;R~MOEHjnwHI(4~lB;p#l6N$QqnxIdSBxms2pcyvLL`Lli`hey-0a##4 zrY4a6-rsf0pmrm$QV&bf&z`LANHuL9Z^{YQfDpkzV`#|qU-3qanLGFdSm`~BC{QdS zBa;NzT`640UYU;t*KxHTE!m6prG%8?*CY4uraB>4eUKY^di5bGH{&Z>RPQt8P|L*`el}c}EDnO&T?9 zCW85-26=7(xwCsT?^WKV7HvU0o(#CiCKG&8nHOT*;tJy+DcMPcX*oUKsML1x{sX;e z+9!=-hqB4^X3uDKP-ZuS90jk{orF2mg*QT3y1Ij9XB2dH?t=~!kt_-fZ-x1FztJdm zikh3)z|8_=uvq2@LwE5l<1x8=UIK#6a24JGpC`L{Q^1&HRG9R1Xs^xP3Egxeo})5p zAbeUS+LCwk22W=DA^)QZVXIeJx8m-qd#1hI50q# z3iCqUF1&kgSmS}jAV8ArwL`>V?K}N!Jc}U(J8%2Z?fJ`yiw^&G~WD71SM@Q+B~E*epq@u1#FVOahZe1=JblVE_y6tkUi;~@P??& zYx%UjfLr&b?i%onPWEc>X6?*^2^m6Bmb0SiILnfsH69Nb1c#@E>5nMrk*({=CSC-s zGbP_MIEb6b?Sil#*b%kDWxGA{iYYwiAVjWy7-K!bT}`K@Q!nm+D{6{4F6b=S^QeP` zsV-zk9KJT=Zt;5IK@;N%BVGcRqd~44o#sXmKg?S`-qKfp2F%;G`(NyEbO*g4JfuVv zznY3aE|3j+NucIk63a80HHkMERFMvJjAz13MI5+>)bi;97d`-ym|5J$p)cysN)uO$ zG2tf6%7H1-?KaLHE)4cQcCLA#iAcqgs%L)a}UQ93h^8VQ1QC-u{tzSNmrcVr-YkFB)g~FFjyn z_?mGf;s5{u24YJ`L;$7$T>xEonnB|L000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2jvJ600a-FTZ2CU000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000NH zNklTb8&j-Ty`?U_tw$VBrZlh-7W4GSW|3Kj?{VG$M) z3)rBrLGlubHDZOt4iuy;l0YIfQUXJW2nkH0Bok*|&ctJn?e?SHud1%9ds$R_X1J+DDH$4*<9ze!(=1MpaDU~7aL+h+ z5Gn31eo=SRbJI-C-^cQYpYe;Ae@(wTpc0jEqG@*%Y--67a%VBunouhT^x9pzS%xTx z!iZ9(jF7k}_=Uik6%NcVRM z_AUy*AhiIfqtCiHw!HQG-|^*@kD0BHvay!(#=BS9%PdwvIlws_fGfgh2Hh@_CnUWt z3WwGj@|3u}PtxfiS^{eAjL2WuUFd-WaO`}@00PAb~T4)0y+(ds!wDTZ*|y%cN&L64REC2cbT4W3ab z5kv}89b7#PfpTcikmkbWFIG@-!qHR5iOQqA`iBd={pLH&k9$1!NP}Qh^Y4%LNYmmU zcddE=d~gcJ141o$p28S4oF>D$4(lM$ibh4#72%qNZk+PU>u+N`Sh=;vl`FStOw4g~ z0kR~<^kO_f+)!v7&fTSPZwl$d<)4+y?=qjx`QeiawVV&=N|;ZIT_Xrcjuj6sF#;K zvDkad%E1Q$IfCbVoOoykryN4Wbgf2M3fXA)Sl`$tPx?Im)OjYqc9QFtFVo)LXT5F7 ztwm6GJ#_~{kYSYdd@Wki$`!gZWIJ?fZXwSdS~6aG=~3oSG+6$$MW>fAHWCs=WtyEH zn_JtoHa9u_$Y~CpJ;Udpe$L+ZK2`)b1QUj)Mur9#v{LA~TD0Wr0?^%&$ziR-A~=_$ zY|gop5vQLy$Dkjvv9^uGF|}%dE`_vu18%LZv9@xZ#bXa}{M<<{fA|q`F9zYxYDEgU zwFsgL59qm(a4FP+9p;C_;jDw9DAs`^=l)tsd2EEk$Dd?ue2R_L6$afd)lxuM3TekF zYa2~IyYvb7&rERk{5h^J-yn+)`P)der=+KMx@=~A#dmzv-3R#<$)j^z|8kd(SElj6B7Rt=x!EL5 z`-CNrTpJvQZm-A6jhmFih^e_b`kBKig)%HbS{tW~X@@bNb9Qx7Kswfg^|_@;oPvd#EfSG!_$h?Dj36G*e#rc)-tpG|Bk1 zp}T*Bq!r_WgvPwk*%v|`v%H#8E(aW$8^c!_onDX5U_f;wARPqc8RXf3PIC(_Ddxnn zI<+Z}~Ui=rZ$ohlm={lzQWZ@x2e}F zj06E;+2`1(#im`lN|>7nnHjIJv)|>`cAr*XlLkIXKLASZyS(=L3hmvP@xf+dn38gea;PYiG zX5;n_6(9CmUG}#J>?W3O-_h&Fc-k>FqRDcLeD~zMt5kiKZ*F5#$5^$3_MjKX_$~vb zQC`HZ_&j+e;+M}aa{Kx!|9XF$ewNeIDayj64k-JEKi_a%Tld3An>(y? zWX=}5A?+Bi2AE!_Pu%O`yPRAp;<$?*6lu`UGBPC$`h6CwG0z!A`aflN9VXkSVNRk{Q;!p_Xz$3Rs5h}`( zfc6+Emw0d_=h?GUG>$B?)y}!SS7G1+Dxpu+SjsA)SL)J@Qx4TaUN~Q2_JfzA91w7b1EUH~!;V#S0xN(xLSq>> zU0nG-Ty2J4yGoo`911N8hr%ksDkwHyLWT!{Pg>H<%_=;jv6(GOuiR}&!-M|;H_?w- Tp|X5`00000NkvXXu0mjfS8q2= literal 0 HcmV?d00001 diff --git a/textures/eraz_basket.png b/textures/eraz_basket.png new file mode 100644 index 0000000000000000000000000000000000000000..8e21c33f14bd96a881cb4a1024b6651cad712624 GIT binary patch literal 2133 zcmV-b2&(sqP)cK6%2M}kPZL<02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00+HEL_t(o!>yM~Y+Y9shQGD< zdD_?4c5J7q8Yg{(04Y@;p^ZWi1$6=l!JtA^Fk%1_q7#NlnZSer2qqvg27y3G2*Cge zDj`ZJLM@G&(6n{ahn>VpeEqn-zW3bo*n2Mq*GX$))d6)&XLQcl>s#ymXRUvWs`B1T z>GgVCx_pK8m231@uT!qA;x<u}(FmdQ8_ni0y$4{POZg!Tvmh26% zjiI0#@WJDpqplk!+igSyfHz)yg`i4%dWNa#DdNZ?V&6Z2Q7yo12OO<2pa4DyB*6J? z*l=U}J@<@mH@Mske2k|*Kgr>_mX4<>&Q;V-D4lSvHzPm(-4Y^(+fD4YDsUtCH$Hcg zhYnBa++>c3uvsdDVnAIvjERsmXML;WJI`DcUA}l*5PJgL2>#utPI3RC8I9A7&St@4 zrzg)}D){4>SAYReed;kje0WwT#xkz1_vHJ(dglED`1Th+&Z(nw8dNxUc}q_JdJ(FH zTb{l9=rO)}@~|R?Kc8EcGcTUq6T<8j{3}mjQ^a!wpq0V-w>mU+13*A9aYUXbdPmzZKRw9nm&)j?}{Zq5ZU5DQC}LB8vj8#L}%4hcFo{kwC8=wdqzO)W#BL8B-HEd6tmn z5k+I@mCDs_DL?qlb3nPHQ$_%f-M5eNJZ5omlNLf6fyFRBme3uPs0bE8R51eLA$X`n z@hT+NkQk+3Ib7XG2LrAL#l|uDSVr0!=h%TOixdOdTK?i*75W3PM>se1D6<$_m}}E(i9t^m~u*SD3h| z4Fj+_Y^Z`DvBd?&8jCd$8KJ5?f+yf!S5P`8+DV?I;lbC=H1_?qcN^C8a zgSE~kz3wLW%#88PFFdq!82#zhRjep;v(t1t8|0>;Q6YptcTmwdM`WP(Bh^%mVPmL> z5wZv>uN2+@9wU}sEd=#UM3#OHm4|k$3^uoD9~kH0nA_P2$E>AutxIr$gNN_JPE0U# z5P~PON*YBNERiuxCYGrb#u7tf1s4L>27#@rL4r^=O5b~0iNT1W^hzrgL=+Q81S~@* zJ1bBGOCpZVwGE604&Swpd*`RQvz2qfCiqa38YLBQ0jeXD501-Z`8P{QcDqf4TTB098eve466& zvs59X@=9Ji7MC{I>hzE-qn#z(IX{a?psXEb)lgKPs&c4vl+IDsp2!MG9MOs+;wUD| zQ|6{8Xl0guug_|yj~iCdId}6n9L<8?{)FcEM+8;PBgG3i5n`ik_4|}Pp^k)B9uZ8$ zM4oczR7RE=3OmHNjVO(ppb`-TE5)XKEyDc>yhF<7a zo@aV~cSG{~U;dnzLc;P;Wupp+f>(oL2tZH>A`G13FbGN$AhR$Qjl@?6B{G(v2Gk%3 zk+oC-3a6AogxAjR7)a5(4TXsC*L@H2pHr;vZVbYW!Q-ZhG&|DMqy1Q5Z9@K4~gr%p(>a?(ZB%mRX8iN|xs9~|^={l8#t-uQ}T_A)oiX}Sw`l>q}(QY2^ z#=ZGRPsoFD$pPyr8Z?qXWQ14^r7@@|RS+5n*Gt$aoxI);Jp01=n~60|!>}CER3#b$ zah%-#(QF6g1IPJv+Aw7UsRUZBHf6O*-$AJfXN!oXbN>QhSPdC$^;x}og)48o&g!L$ zNPh(ho@A{3znu+tch0-7)wK>Q%U4)hxIpLP%d9UgP^>QFsv$JZ$cn}G{{z_R?njME z5gO-MeCth?7yixFi!XES_45qZu2S{8j9bG-;jwXo4FO|>Dg^!mTWDWM+lFJ)00000 LNkvXXu0mjfAb7~u literal 0 HcmV?d00001 diff --git a/textures/eraz_spawnegg_merchant.png b/textures/eraz_spawnegg_merchant.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8599e56279054d136b202f71044f9ab18377e9 GIT binary patch literal 1424 zcmV;B1#kL^P)b~FB{77sw)5h02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00j6+L_t(o!^M`%j~vArz<*WM zuX)dU$GdA|XF;qm##mrkLG~fJkl0E{BIO?l7w|3rKn^+N09Q~hNcaLsoDm#A76=F+ zg(PM{7<+B}z>medv$LM*nVz2Ro~|kmZ6Sit?#^PvcWJ3q{e8ds-hwTP04(skeGj6o zCC@dvu?Rp42z(d66!6;Or{CV)ia1*Zu-|^I9mYv<@EuE8mQ%A9Ky20cL;xj6GRh5u zVZtCzfAG#=RGfQCkZF5o0gN$)kvQe=e>p-HjoH1kMq|3dxuq4nio-u%`4|8>feYl8 zb3h0Ho;`7l7vEaq`BP_j=*T{-)jW6V3@1;W=b00~Wm4HPfRY8kFJ>#e{NcX{W}Bq_ zK3GXnOm5{vJ9xUNSuNZ8eyBFR&}{QMfjUdk_j{Qzzd(7oB^$zzB4>g*-b+>(yQEQay+ z0gfL&NHmCX9bt{pfZ)~7Ryk2E;RTBQ2j>w8v=JojTfBLBnJh`{*ch}n2uF%TJ1Z=% z4Yvo7jYdeYgY}R|So}(rUVp$#l@d=JU0}*Y2q_o@Wj?#O%(yq8z1$`l8?Y8Du-J{m zydglh7ox1e7deg+* zU(ERAtDCH?tm3%}$92J2kQUdI@bxwUjy|@V!3f&@fO>O^G!Dt4TU;JE9B)O$-RnF& zJz!=GUw0k+dI|1%7{Ah>-|aHfNT`+Iou&5n0K#rcIu>+qr8s_xY?Ps_MCvi|$_+mM zq$UL>vD*(p)t|%W5qoPXZq`To62?OwnQIbtGMbeZ zahx*>6OQbwbA6mL=mS}wQq9E^K2^U8oY~$mT7Uf+vOKrpT8B!bO0Er`e(_&+?A=el z9U`Q}5fZB{wY^hRr$;oRCXSK}!-&St7M|mX=|BB#dmd0q(C}QL%PxT@a9xkHOUt&^ zb!pA*VP^L%0Bbi^xqfG(eH&5uVfPgSglFp7~l5^Jg>+VAdO?J)^{Hu&oUCNF?x1ldd?usd12))1I*7#>eDWMSy8?H;K~j~GjQn#0%7Id2ar+;r5uzrXr}=190fvR eCU?NkFW&$$AUF>wtED3V0000