This commit is contained in:
Oskar Nordling 2016-07-05 12:20:51 +02:00
parent ebc68ee291
commit 6fc0bc87eb
1 changed files with 13 additions and 22 deletions

View File

@ -4,7 +4,7 @@ using System;
namespace Oxide.Plugins namespace Oxide.Plugins
{ {
[Info("EasyFurnace", "oskar3123", "1.1.1", ResourceId = 1191)] [Info("EasyFurnace", "oskar3123", "1.1.2", ResourceId = 1191)]
class EasyFurnace : RustPlugin class EasyFurnace : RustPlugin
{ {
class Cfg class Cfg
@ -86,13 +86,13 @@ namespace Oxide.Plugins
{ {
if (item.info.shortname != "metal.ore" && item.info.shortname != "sulfur.ore") return; if (item.info.shortname != "metal.ore" && item.info.shortname != "sulfur.ore") return;
if (item.amount < 100) return;
if (container.itemList.Count() > 1) return; if (container.itemList.Count() > 1) return;
int cap = container.capacity; int cap = container.capacity;
if (cap != 6 && cap != 18) return; if (cap != 6 && cap != 18) return;
if (item.amount < cap) return;
int oresize = cap == 6 ? int oresize = cap == 6 ?
(item.info.shortname == "metal.ore" ? Cfg.furnaceMetalOres : Cfg.furnaceSulfurOres) : (item.info.shortname == "metal.ore" ? Cfg.furnaceMetalOres : Cfg.furnaceSulfurOres) :
(item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalOres : Cfg.largeFurnaceSulfurOres); (item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalOres : Cfg.largeFurnaceSulfurOres);
@ -102,19 +102,10 @@ namespace Oxide.Plugins
int outputsize = cap == 6 ? int outputsize = cap == 6 ?
(item.info.shortname == "metal.ore" ? Cfg.furnaceMetalOutput : Cfg.furnaceSulfurOutput) : (item.info.shortname == "metal.ore" ? Cfg.furnaceMetalOutput : Cfg.furnaceSulfurOutput) :
(item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalOutput : Cfg.largeFurnaceSulfurOutput); (item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalOutput : Cfg.largeFurnaceSulfurOutput);
double woodfactor = item.info.shortname == "metal.ore" ? 5D : 2.5D;
string outputname = item.info.shortname == "metal.ore" ? "metal.fragments" : "sulfur";
if (cap == 6 && if (oresize + woodsize + outputsize > cap) return;
(item.info.shortname == "metal.ore" ? Cfg.furnaceMetalOres : Cfg.furnaceSulfurOres) +
(item.info.shortname == "metal.ore" ? Cfg.furnaceMetalWood : Cfg.furnaceSulfurWood) +
(item.info.shortname == "metal.ore" ? Cfg.furnaceMetalOutput : Cfg.furnaceSulfurOutput)
> 6)
return;
if (cap == 18 &&
(item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalOres : Cfg.largeFurnaceSulfurOres) +
(item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalWood : Cfg.largeFurnaceSulfurWood) +
(item.info.shortname == "metal.ore" ? Cfg.largeFurnaceMetalOutput : Cfg.largeFurnaceSulfurOutput)
> 18)
return;
BaseOven furnace = null; BaseOven furnace = null;
foreach (BaseOven key in furnaceCache.Keys) foreach (BaseOven key in furnaceCache.Keys)
@ -134,10 +125,10 @@ namespace Oxide.Plugins
if (itm.info.shortname == item.info.shortname) if (itm.info.shortname == item.info.shortname)
orecount += itm.amount; orecount += itm.amount;
orecount += item.amount; orecount += item.amount;
if (orecount > oresize * GetStackSize(item.info.shortname == "metal.ore" ? "metal.ore" : "sulfur.ore")) if (orecount > oresize * GetStackSize(outputname))
orecount = oresize * GetStackSize(item.info.shortname == "metal.ore" ? "metal.ore" : "sulfur.ore"); orecount = oresize * GetStackSize(outputname);
int woodToRetain = (int)Math.Ceiling((orecount / oresize) * (item.info.shortname == "metal.ore" ? 5D : 2.5D)); int woodToRetain = (int)Math.Ceiling((orecount / oresize) * woodfactor);
int woodMaxStack = GetStackSize("wood"); int woodMaxStack = GetStackSize("wood");
if (woodToRetain > woodMaxStack * woodsize) if (woodToRetain > woodMaxStack * woodsize)
woodToRetain = woodMaxStack * woodsize; woodToRetain = woodMaxStack * woodsize;
@ -150,7 +141,7 @@ namespace Oxide.Plugins
} }
int retainedAmount; int retainedAmount;
retainedAmount = RemoveItemsFromInventory(player, item.info.shortname == "metal.ore" ? "metal.fragments" : "sulfur", outputsize); retainedAmount = RemoveItemsFromInventory(player, outputname, outputsize);
if (retainedAmount < outputsize) if (retainedAmount < outputsize)
{ {
ItemManager.Create(ItemManager.FindItemDefinition("wood"), retainedWood).MoveToContainer(player.inventory.containerMain); ItemManager.Create(ItemManager.FindItemDefinition("wood"), retainedWood).MoveToContainer(player.inventory.containerMain);
@ -168,9 +159,9 @@ namespace Oxide.Plugins
} }
for (int i = 0; i < outputsize; i++) for (int i = 0; i < outputsize; i++)
ItemManager.Create(ItemManager.FindItemDefinition(item.info.shortname == "metal.ore" ? "metal.fragments" : "sulfur"), 1).MoveToContainer(container, -1, false); ItemManager.Create(ItemManager.FindItemDefinition(outputname), 1).MoveToContainer(container, -1, false);
RemoveItemsFromInventory(player, item.info.shortname == "metal.ore" ? "metal.ore" : "sulfur.ore", orecount); RemoveItemsFromInventory(player, item.info.shortname, orecount);
int amountPerStack = orecount / oresize; int amountPerStack = orecount / oresize;
Item[] oresToAdd = new Item[oresize]; Item[] oresToAdd = new Item[oresize];
@ -182,7 +173,7 @@ namespace Oxide.Plugins
tmpCnt++; tmpCnt++;
tmpCnt += amountPerStack; tmpCnt += amountPerStack;
extras--; extras--;
oresToAdd[i] = ItemManager.Create(ItemManager.FindItemDefinition(item.info.shortname == "metal.ore" ? "metal.ore" : "sulfur.ore"), tmpCnt); oresToAdd[i] = ItemManager.Create(ItemManager.FindItemDefinition(item.info.shortname), tmpCnt);
} }
foreach (Item oreToAdd in oresToAdd) foreach (Item oreToAdd in oresToAdd)