public ForagingJobSettings(string blockType, string npcTypeKey, ILootTable lootTable, int foragingTimeMinSec, int foragingTimeMaxSec, float lootLuckModifier = 0f) { ItemTypes.ItemType type = ItemTypes.GetType(blockType); if (type.RotatedXMinus != null) { BlockTypes = new ItemTypes.ItemType[5] { type, ItemTypes.GetType(type.RotatedXPlus), ItemTypes.GetType(type.RotatedXMinus), ItemTypes.GetType(type.RotatedZPlus), ItemTypes.GetType(type.RotatedZMinus) }; } else { BlockTypes = new ItemTypes.ItemType[5] { type, ItemTypes.GetType(blockType + "x+"), ItemTypes.GetType(blockType + "x-"), ItemTypes.GetType(blockType + "z+"), ItemTypes.GetType(blockType + "z-") }; } NPCType = NPCType.GetByKeyNameOrDefault(npcTypeKey); RecruitmentItem = new InventoryItem(LeafSash.NAME); LootTable = lootTable; ForagingTimeMaxSec = foragingTimeMaxSec; ForagingTimeMinSec = foragingTimeMinSec; LuckMod = lootLuckModifier; }
// Constructor public TrackedItem(ItemTypes.ItemType item, ushort interval, int amount = 0) { this.item = item; this.interval = interval; for (int i = 0; i < itemAmount.Length; ++i) { this.itemAmount[i] = amount; } }
public MinerJobInstance(IBlockJobSettings settings, Vector3Int position, ItemTypes.ItemType type, ByteReader reader) : base(settings, position, type, reader) { ushort belowType = reader.ReadVariableUShort(); MiningCooldown = -1f; if (ItemTypes.TryGetType(belowType, out ItemTypes.ItemType foundtype)) { BlockTypeBelow = foundtype; } }
public MinerJobSettings() { BlockTypes = new ItemTypes.ItemType[] { BuiltinBlocks.Types.minerjob, BuiltinBlocks.Types.minerjobxp, BuiltinBlocks.Types.minerjobxn, BuiltinBlocks.Types.minerjobzp, BuiltinBlocks.Types.minerjobzn }; NPCTypeKey = "pipliz.minerjob"; NPCType = NPCType.GetByKeyNameOrDefault(NPCTypeKey); OnCraftedAudio = "stoneDelete"; MaxCraftsPerRun = 5; }
public void ApplyTypes(ConstructionArea area, JSONNode node) { JSONNode arr; if (node != null && node.TryGetChild("selectedTypes", out arr) && arr.NodeType == NodeType.Array && arr.ChildCount > 0) { ItemTypes.ItemType digTpe = ItemTypes.GetType(ItemTypes.IndexLookup.GetIndex(arr[0].GetAs <string>())); if (digTpe != null && digTpe.ItemIndex != 0) { area.ConstructionType = new Types.DiggerSpecial(digTpe); area.IterationType = new Iterators.TopToBottom(area); } } }
public GeneratorJobSettings(string blockType, string npcTypeKey, InventoryItem energyItem, float craftingCooldown = 5f, int maxCraftsPerHaul = 5, string onCraftedAudio = null) { if (blockType != null) { ItemTypes.ItemType baseType = ItemTypes.GetType(blockType); bool baseHasRotated = baseType.RotatedXPlus != null; BlockTypes = new ItemTypes.ItemType[5] { baseType, baseHasRotated ? ItemTypes.GetType(baseType.RotatedXPlus) : ItemTypes.GetType(blockType + "x+"), baseHasRotated ? ItemTypes.GetType(baseType.RotatedXMinus) : ItemTypes.GetType(blockType + "x-"), baseHasRotated ? ItemTypes.GetType(baseType.RotatedZPlus) : ItemTypes.GetType(blockType + "z+"), baseHasRotated ? ItemTypes.GetType(baseType.RotatedZMinus) : ItemTypes.GetType(blockType + "z-") }; } NPCTypeKey = npcTypeKey; NPCType = NPCType.GetByKeyNameOrDefault(npcTypeKey); CraftingCooldown = craftingCooldown; MaxCraftsPerHaul = maxCraftsPerHaul; OnCraftedAudio = onCraftedAudio; EnergyItem = energyItem; }
public override void OnStopCrafting() { int index; if (!CraftingJobSettings.BlockTypes.ContainsByReference <ItemTypes.ItemType>(CraftingJobInstance.BlockType, out index)) { return; } switch (index) { case 6: case 7: case 8: case 9: ItemTypes.ItemType blockType = CraftingJobSettings.BlockTypes[index - 5]; ESetBlockFlags flags = ESetBlockFlags.None; if (ServerManager.TryChangeBlock(CraftingJobInstance.Position, CraftingJobInstance.BlockType, blockType, (BlockChangeRequestOrigin)CraftingJobInstance.Owner, flags) == EServerChangeBlockResult.Success) { CraftingJobInstance.BlockType = blockType; break; } break; } }