hadean-old/content/core/items/CoreItems.ts

137 lines
3.3 KiB
TypeScript

import { Item, ItemFilter, ItemProperty, ItemState } from '@items'
class Material {
name: string;
hardness: number;
setName(name: string) {
this.name = name;
return this;
}
setHardness(n: number) {
this.hardness = n;
}
}
// #region properties!
export const ROCK = new ItemProperty('core:rock')
export const MATERIAL = new ItemProperty('core:material')
export const ROCK_SIZE = new ItemProperty('core:rock-size')
export const SEDIMENTARY = new ItemProperty('core:sedimentary')
export const IGNEOUS = new ItemProperty('core:igneous')
export const METAMORPHIC = new ItemProperty('core:metamorphic')
// #endregion
// #region tree-y stuff
export const LOG = new Item()
.setName("Log")
.setId('core:resources/log')
export const STICK = new Item()
.setName("Stick")
.plural('Sticks')
.setId('core:resources/stick')
export const PLANT_FIBRES = new Item()
.setName("Plant Fibres")
.setId('core:plant-fibres')
// #endregion
// #region normal ass rocks
export const FLINT_NORMAL = new Item()
.setName("Flint")
.setId('core:flint')
.setProperty(MATERIAL, new Material()
.setName('Flint')
.setHardness(7)
)
.setProperty(ROCK, true)
.setProperty(IGNEOUS, true)
export const SANDSTONE_NORMAL = new Item()
.setName("Sandstone")
.setId('core:sandstone')
export const SANDSTONE_PEBBLE = new Item()
.setName("Sandstone Pebble")
.setId('core:sandstone-pebble')
export const SLATE = new Item()
.setName("Slate")
.setId('core:slate')
export const LIMESTONE_NORMAL = new Item()
.setName("Limestone")
.setId('core:limestone')
export const LIMESTONE_PEBBLE = new Item()
.setName("Limestone Pebble")
.setId('core:limestone-pebble')
export const SHALE_NORMAL = new Item()
.setName("Shale")
.setId('core:shale')
export const SHALE_PEBBLE = new Item()
.setName("Shale Pebble")
.setId('core:shale-pebble')
export const OBSIDIAN_NORMAL = new Item()
.setName("Obsidian")
.setId('core:obsidian')
// #endregion
// #region tools n shit
export const FLINT_HATCHET = new Item()
.setName("Flint Hatchet")
.setId('core:flint-hatchet')
export const ARROWHEAD = new Item<{
baseMaterial: ItemState<any>
}>()
.setName("Flint Arrowhead")
.setId('core:flint-arrowhead')
export const FLINT_SPEAR = new Item()
.setName("Flint Spear")
.setId('core:flint-spear')
export const SLATE_HATCHET = new Item()
.setName("Slate Hatchet")
.setId('core:slate-hatchet')
export const SLATE_ARROWHEAD = new Item()
.setName("Slate Arrowhead")
.setId('core:slate-arrowhead')
export const SLATE_SPEAR = new Item()
.setName("Slate Spear")
.setId('core:slate-spear')
export const OBSIDIAN_HATCHET = new Item()
.setName("Obsidian Hatchet")
.setId('core:obsidian-hatchet')
export const OBSIDIAN_ARROWHEAD = new Item()
.setName("Obsidian Arrowhead")
.setId('core:obsidian-arrowhead')
export const OBSIDIAN_SPEAR = new Item()
.setName("Obsidian Spear")
.setId('core:obsidian-spear')
// #endregion
export function FILTER_CRAFTABLE_ROCK(itemState: ItemState<any>) {
if(!itemState.item.getProperty(MATERIAL)) return false;
const mat: Material = itemState.item.getProperty(MATERIAL) as Material;
return itemState.item.getProperty(ROCK)
&& mat.hardness >= 6
&& mat.hardness < 10
}
// tools: plant fibres = rope, flint hatchet
// shale - igneous. metamorphasis => slate