Yes. There is a way to emulate that.
—————
test json, made for Noer Tavern Waifu. But we can add another barters to this file. And add more than one item to barters. Or we can do it in more than one file.
{
"barters": [{
"npc_name": "59_69",
"items": [{
"item_name": "ItemSurBot",
"custom_price": null,
"price_mult": 1,
"rndMin": 1,
"rndMax": 5
}]
}],
}
Test code:
module DataManager
class << self
alias_method :load_mod_database_TEST, :load_mod_database
end
def self.load_mod_database
load_mod_database_TEST
$TEST_mod_name = "Mod TEST"
$TEST_modFolder = "ModScripts/_Mods/#{$TEST_mod_name}"
$data_NameBarters_TEST = {}
FileGetter.getFileList("#{$TEST_modFolder}/Data/Barters/*.json").each{|file|
add_new_goods(file)
}
end
def self.add_new_goods(path)
temp_hash = nil
begin
temp_hash = JSON.decode(open(path).read)
rescue
msgbox("Error in Json == [[ #{path} ]] :: def self.add_new_goods")
end
return if temp_hash == nil
temp_hash["barters"].each{|barter|
goods = []
barter["items"].each{|item|
item_name = item["item_name"]
custom_price = item["custom_price"]
price = (item["price_mult"])*($data_ItemName[item_name].price.to_i)
minNum = item["rndMin"]
maxNum = item["rndMax"]
goods += [[*$data_ItemName[item_name].get_type_and_id, custom_price, price.round, Random.new.rand(minNum..maxNum) ]]
}
if $data_NameBarters_TEST[barter["npc_name"]] == nil
$data_NameBarters_TEST[barter["npc_name"]] = goods
else
$data_NameBarters_TEST[barter["npc_name"]] += goods
end
}
end
end
module GIM_ADDON
alias_method :alias_manual_trade_TEST, :manual_trade unless method_defined?(:alias_manual_trade_TEST)
def manual_trade(good,charStoreHashName=nil, charStoreTP=0, charStoreExpireDate=nil, noSell=false, noBuy=false)
goods = $data_NameBarters_TEST["#{charStoreHashName}"]
good += goods if goods != nil
alias_manual_trade_TEST(good, charStoreHashName, charStoreTP, charStoreExpireDate, noSell, noBuy)
end
end