public int DoSplash(ItemDefinition splashType, int amount) { int iAmount; if (this.HasLiquidItem()) { Item liquidItem = this.GetLiquidItem(); int amount1 = liquidItem.amount; ItemDefinition template = WaterResource.Merge(splashType, liquidItem.info); if (Object.op_Inequality((Object)liquidItem.info, (Object)template)) { liquidItem.Remove(0.0f); liquidItem = ItemManager.Create(template, amount1, 0UL); if (!liquidItem.MoveToContainer(this.inventory, -1, true)) { liquidItem.Remove(0.0f); return(0); } } iAmount = Mathf.Min(this.maxStackSize - amount1, amount); liquidItem.amount += iAmount; } else { iAmount = Mathf.Min(amount, this.maxStackSize); Item obj = ItemManager.Create(splashType, iAmount, 0UL); if (obj != null && !obj.MoveToContainer(this.inventory, -1, true)) { obj.Remove(0.0f); } } return(iAmount); }
public void AddLiquid(ItemDefinition liquidType, int amount) { if (amount <= 0) { return; } Item item = GetItem(); Item item2 = item.contents.GetSlot(0); ItemModContainer component = item.info.GetComponent <ItemModContainer>(); if (item2 == null) { ItemManager.Create(liquidType, amount, 0uL)?.MoveToContainer(item.contents); return; } int num = Mathf.Clamp(item2.amount + amount, 0, component.maxStackSize); ItemDefinition itemDefinition = WaterResource.Merge(item2.info, liquidType); if (itemDefinition != item2.info) { item2.Remove(); item2 = ItemManager.Create(itemDefinition, num, 0uL); item2.MoveToContainer(item.contents); } else { item2.amount = num; } item2.MarkDirty(); SendNetworkUpdateImmediate(); }
public void FillCheck() { if (base.isClient) { return; } BasePlayer ownerPlayer = base.GetOwnerPlayer(); if (!ownerPlayer) { return; } float single = UnityEngine.Time.realtimeSinceStartup - this.lastFillTime; Vector3 vector3 = ownerPlayer.transform.position - new Vector3(0f, 1f, 0f); if (this.CanFillFromWorld()) { this.AddLiquid(WaterResource.GetAtPoint(vector3), Mathf.FloorToInt(single * this.fillMlPerSec)); return; } LiquidContainer facingLiquidContainer = this.GetFacingLiquidContainer(); if (facingLiquidContainer != null && facingLiquidContainer.HasLiquidItem()) { int num = Mathf.CeilToInt((1f - this.HeldFraction()) * (float)this.MaxHoldable()); if (num > 0) { Item liquidItem = facingLiquidContainer.GetLiquidItem(); int num1 = Mathf.Min(Mathf.CeilToInt(single * this.fillMlPerSec), Mathf.Min(liquidItem.amount, num)); this.AddLiquid(liquidItem.info, num1); liquidItem.UseItem(num1); facingLiquidContainer.OpenTap(2f); } } }
public int DoSplash(ItemDefinition splashType, int amount) { int num = 0; if (!this.HasLiquidItem()) { num = Mathf.Min(amount, this.maxStackSize); Item item = ItemManager.Create(splashType, num, (ulong)0); if (item != null && !item.MoveToContainer(this.inventory, -1, true)) { item.Remove(0f); } } else { Item liquidItem = this.GetLiquidItem(); int num1 = liquidItem.amount; ItemDefinition itemDefinition = WaterResource.Merge(splashType, liquidItem.info); if (liquidItem.info != itemDefinition) { liquidItem.Remove(0f); liquidItem = ItemManager.Create(itemDefinition, num1, (ulong)0); if (!liquidItem.MoveToContainer(this.inventory, -1, true)) { liquidItem.Remove(0f); return(0); } } num = Mathf.Min(this.maxStackSize - num1, amount); liquidItem.amount += num; } return(num); }
public void AddLiquid(ItemDefinition liquidType, int amount) { if (amount <= 0) { return; } Item obj = this.GetItem(); Item slot = obj.contents.GetSlot(0); ItemModContainer component = (ItemModContainer)((Component)obj.info).GetComponent <ItemModContainer>(); if (slot == null) { ItemManager.Create(liquidType, amount, 0UL)?.MoveToContainer(obj.contents, -1, true); } else { int iAmount = Mathf.Clamp(slot.amount + amount, 0, component.maxStackSize); ItemDefinition template = WaterResource.Merge(slot.info, liquidType); if (Object.op_Inequality((Object)template, (Object)slot.info)) { slot.Remove(0.0f); slot = ItemManager.Create(template, iAmount, 0UL); slot.MoveToContainer(obj.contents, -1, true); } else { slot.amount = iAmount; } slot.MarkDirty(); this.SendNetworkUpdateImmediate(false); } }
public void FillCheck() { if (base.isClient) { return; } BasePlayer ownerPlayer = GetOwnerPlayer(); if (!ownerPlayer) { return; } float f = (UnityEngine.Time.realtimeSinceStartup - lastFillTime) * fillMlPerSec; Vector3 pos = ownerPlayer.transform.position - new Vector3(0f, 1f, 0f); LiquidContainer facingLiquidContainer = GetFacingLiquidContainer(); if (Interface.CallHook("OnLiquidVesselFill", this, ownerPlayer, facingLiquidContainer) != null) { return; } if (facingLiquidContainer == null && CanFillFromWorld()) { AddLiquid(WaterResource.GetAtPoint(pos), Mathf.FloorToInt(f)); } else if (facingLiquidContainer != null && facingLiquidContainer.HasLiquidItem()) { int num = Mathf.CeilToInt((1f - HeldFraction()) * (float)MaxHoldable()); if (num > 0) { Item liquidItem = facingLiquidContainer.GetLiquidItem(); int num2 = Mathf.Min(Mathf.CeilToInt(f), Mathf.Min(liquidItem.amount, num)); AddLiquid(liquidItem.info, num2); liquidItem.UseItem(num2); facingLiquidContainer.OpenTap(2f); } } lastFillTime = UnityEngine.Time.realtimeSinceStartup; }
public void FillCheck() { if (this.isClient) { return; } BasePlayer ownerPlayer = this.GetOwnerPlayer(); if (!Object.op_Implicit((Object)ownerPlayer)) { return; } float num1 = Time.get_realtimeSinceStartup() - this.lastFillTime; Vector3 pos = Vector3.op_Subtraction(((Component)ownerPlayer).get_transform().get_position(), new Vector3(0.0f, 1f, 0.0f)); if (this.CanFillFromWorld()) { this.AddLiquid(WaterResource.GetAtPoint(pos), Mathf.FloorToInt(num1 * this.fillMlPerSec)); } else { LiquidContainer facingLiquidContainer = this.GetFacingLiquidContainer(); if (!Object.op_Inequality((Object)facingLiquidContainer, (Object)null) || !facingLiquidContainer.HasLiquidItem()) { return; } int num2 = Mathf.CeilToInt((1f - this.HeldFraction()) * (float)this.MaxHoldable()); if (num2 <= 0) { return; } Item liquidItem = facingLiquidContainer.GetLiquidItem(); int num3 = Mathf.Min(Mathf.CeilToInt(num1 * this.fillMlPerSec), Mathf.Min(liquidItem.amount, num2)); this.AddLiquid(liquidItem.info, num3); liquidItem.UseItem(num3); facingLiquidContainer.OpenTap(2f); } }
public void AddLiquid(ItemDefinition liquidType, int amount) { if (amount <= 0) { return; } Item item = this.GetItem(); Item slot = item.contents.GetSlot(0); ItemModContainer component = item.info.GetComponent <ItemModContainer>(); if (slot != null) { int num = Mathf.Clamp(slot.amount + amount, 0, component.maxStackSize); ItemDefinition itemDefinition = WaterResource.Merge(slot.info, liquidType); if (itemDefinition == slot.info) { slot.amount = num; } else { slot.Remove(0f); slot = ItemManager.Create(itemDefinition, num, (ulong)0); slot.MoveToContainer(item.contents, -1, true); } slot.MarkDirty(); base.SendNetworkUpdateImmediate(false); } else { Item item1 = ItemManager.Create(liquidType, amount, (ulong)0); if (item1 != null) { item1.MoveToContainer(item.contents, -1, true); return; } } }
void AddToPumps() { if (wPumpList == null || wPumpList.Count == 0) { return; } if (wpMax < 1) { return; } foreach (WaterPump wPump in wPumpList) { if (wPump != null && !wPump.IsFull() && wPump.HasFlag(BaseEntity.Flags.Reserved8)) { int amount; if (wpMin == wpMax) { amount = wpMax; } else { amount = rnd.Next(wpMin, wpMax + 1); } if (amount >= 1) { ItemDefinition water = WaterResource.GetAtPoint(wPump.WaterResourceLocation.position); if (water != null) { wPump.inventory?.AddItem(water, amount); } } } } }
public static ItemDefinition GetAtPoint(Vector3 pos) { return(ItemManager.FindItemDefinition((WaterResource.IsFreshWater(pos) ? "water" : "water.salt"))); }