Merge pull request #503 from stefanblox/main

stuff and random elements
This commit is contained in:
slweeb 2024-04-06 20:13:43 -04:00 committed by GitHub
commit 564cd7bd9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 241 additions and 111 deletions

130
mods/randomelements.js Normal file
View File

@ -0,0 +1,130 @@
const adjectives = ["shiny", "glowing", "dark", "bright", "heavy", "light", "hot", "cold", "hard", "soft", "smooth", "rough", "round", "sharp", "sweet", "sour", "bitter", "salty", "savory"];
const nouns = ["metal", "crystal", "stone", "powder", "liquid", "gas", "plasma", "slime", "sand", "dust", "rock", "lava", "ice", "vapor", "ash", "soot", "sludge"];
const elementNames = [];
while (elementNames.length < 300) {
const adjective = adjectives[Math.floor(Math.random() * adjectives.length)];
const noun = nouns[Math.floor(Math.random() * nouns.length)];
const name = `${adjective}_${noun}`;
if (!elementNames.includes(name)) {
elementNames.push(name);
}
}
const nounTemperatures = {
metal: {tempLow: 1000, tempHigh: 1800},
crystal: {tempLow: 500, tempHigh: 1000},
stone: {tempLow: 600, tempHigh: 1200},
powder: {tempLow: 100, tempHigh: 500},
liquid: {tempLow: -100, tempHigh: 100},
gas: {tempLow: -200, tempHigh: -100},
plasma: {tempLow: 8000, tempHigh: 20000},
slime: {tempLow: -10, tempHigh: 30},
sand: {tempLow: 100, tempHigh: 500},
dust: {tempLow: 50, tempHigh: 200},
rock: {tempLow: 500, tempHigh: 1000},
lava: {tempLow: 700, tempHigh: 1200},
ice: {tempLow: -50, tempHigh: 0},
vapor: {tempLow: -50, tempHigh: 100},
ash: {tempLow: 200, tempHigh: 500},
soot: {tempLow: 200, tempHigh: 500},
sludge: {tempLow: -10, tempHigh: 100}
}
const nounColors = {
metal: ["#999999", "#bbbbbb", "#cccccc", "#dddddd", "#eeeeee"],
crystal: ["#77ffff", "#88eeff", "#99ddff", "#aaccff", "#bbbbff"],
stone: ["#888888", "#999999", "#aaaaaa", "#bbbbbb", "#cccccc"],
powder: ["#eeeeee", "#ffffff", "#dddddd", "#cccccc", "#bbbbbb"],
liquid: ["#336699", "#4477aa", "#5588bb", "#6699cc", "#77aadd"],
gas: ["#ffffff", "#eeeeee", "#dddddd", "#cccccc", "#bbbbbb"],
plasma: ["#ff9966", "#ffaa77", "#ffbb88", "#ffcc99", "#ffddaa"],
slime: ["#88cc88", "#99dd99", "#aaddaa", "#bbeebb", "#ccffcc"],
sand: ["#cccccc", "#dddddd", "#eeeeee", "#ffffff", "#eeeeee"],
dust: ["#aaaaaa", "#bbbbbb", "#cccccc", "#dddddd", "#eeeeee"],
rock: ["#777777", "#888888", "#999999", "#aaaaaa", "#bbbbbb"],
lava: ["#ff4400", "#ff5511", "#ff6622", "#ff7733", "#ff8844"],
ice: ["#66cccc", "#77dddd", "#88eeee", "#99ffff", "#aaffff"],
vapor: ["#ffffff", "#eeeeee", "#dddddd", "#cccccc", "#bbbbbb"],
ash: ["#cccccc", "#dddddd", "#eeeeee", "#ffffff", "#eeeeee"],
soot: ["#333333", "#444444", "#555555", "#666666", "#777777"],
sludge: ["#886633", "#997733", "#a98844", "#bb9944", "#ccaa55"]
};
const adjectiveStates = {
shiny: "solid",
glowing: "gas",
dark: "solid",
bright: "gas",
heavy: "solid",
light: "gas",
hot: "solid",
cold: "solid",
hard: "solid",
soft: "liquid",
smooth: "liquid",
rough: "solid",
round: "liquid",
sharp: "solid",
sweet: "liquid",
sour: "liquid",
bitter: "liquid",
salty: "solid",
savory: "liquid"
};
// Map noun to behavior
const nounBehaviors = {
metal: behaviors.WALL,
crystal: behaviors.WALL,
stone: behaviors.WALL,
powder: behaviors.POWDER,
liquid: behaviors.LIQUID,
gas: behaviors.GAS,
plasma: behaviors.GAS,
slime: behaviors.LIQUID,
sand: behaviors.POWDER,
dust: behaviors.POWDER,
rock: behaviors.WALL,
lava: behaviors.LIQUID,
ice: behaviors.WALL,
vapor: behaviors.GAS,
ash: behaviors.POWDER,
soot: behaviors.POWDER,
sludge: behaviors.LIQUID
};
// Generate elements
for (const name of elementNames) {
const [adjective, noun] = name.split("_");
const baseColor = nounColors[noun];
const {tempLow, tempHigh} = nounTemperatures[noun];
let temp = Math.random() * (tempHigh - tempLow) + tempLow;
if (adjective === "hot") {
temp *= 1.5;
} else if (adjective === "cold") {
temp /= 2;
}
elements[name] = {
color: baseColor,
behavior: nounBehaviors[noun],
category: "random elements",
state: adjectiveStates[adjective],
temp: temp,
density: Math.random() * 100,
viscosity: Math.random() * 100
};
}

View File

@ -1,7 +1,5 @@
elements.cooked_rice = {
viscosity: 1000,
tempMin: 20,
stateMin: "rice",
tempHigh: 500,
stateHigh: "charcoal",
density: 699,
@ -1452,7 +1450,7 @@ elements.silver_coin = {
state: "solid",
};
elements.uraniumaniumaniumaniumanium_popcornicecream_plutoniumeptunium_238239 = {
elements.lololol_this_crashes_ur_game_lololol_why_would_you_want_to_use_this_lololol_it_crashes = {
color: "#238fe8",
behavior: [
"XX|XX|XX",
@ -1501,104 +1499,6 @@ elements.oreo = {
state: "liquid"
};
elements.uranium_238 = {
tempHigh: 1200,
stateHigh: "molten_uranium",
color: ["#0f400b", "#30522d", "#4d6b4a", "#6f8f6d"],
behavior: [
"XX|CR:radiation%1|XX",
"CR:radiation%1|CH:lead%0.001|CR:radiation%1",
"M2|M1|M2",
],
category: "powders",
state: "liquid",
density: 19100,
hardness: 0.6,
conduct: 0.235,
excludeRandom: true,
reactions: {
"neutron": {elem1: "uranium_239",},
}
};
elements.uranium_239 = {
tempHigh: 1300,
stateHigh: "molten_uranium",
color: ["#153816", "#135e14", "#379138", "#567556", "#7bb37b"],
behavior: [
"XX|CR:radiation%2|XX",
"CR:radiation%2|CH:lead%0.002|CR:radiation%2",
"M2|M1|M2",
],
category: "powders",
state: "liquid",
hidden: true,
density: 19100,
hardness: 0.6,
conduct: 0.235,
excludeRandom: true,
reactions: {
"electron": {elem1: "neptunium_239"}
}
};
elements.neptunium_239 = {
tempHigh: 1500,
stateHigh: "molten_uranium",
color: ["#082e19", "#173b27", "#354a3f", "#4c635a", "#344a41"],
behavior: [
"XX|CR:radiation%3|XX",
"CR:radiation%3|CH:lead%0.003|CR:radiation%3",
"M2|M1|M2",
],
category: "powders",
state: "liquid",
hidden: true,
density: 20000,
hardness: 0.7,
conduct: 0.3,
excludeRandom: true,
reactions: {
"electron": {elem1: "plutonium"},
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.1 }
}
};
elements.plutonium = {
tempHigh: 2000,
stateHigh: "molten_uranium",
color: ["#0a4a17", "#194d23", "#263b2a", "#475449"],
behavior: [
"XX|CR:radiation%4|XX",
"CR:radiation%4|CH:lead%0.004|CR:radiation%4",
"M2|M1|M2",
],
category: "powders",
state: "liquid",
hidden: true,
density: 22000,
hardness: 0.8,
conduct: 0.4,
excludeRandom: true,
reactions: {
"neutron": { elem1:"n_explosion", tempMin:500, chance:0.2 },
"electron": { elem1:"n_explosion", tempMin:500, chance:0.00000000000000000000001 }
}
};
elements.electron = {
color: "#c99d16",
behavior: behaviors.BOUNCY,
reactions: {
"uranium": { temp2:100 },
},
temp: 35,
category: "energy",
state: "gas",
density: 0.00002,
ignoreAir: true
};
elements.sned = {
desc: "slowly expanding...",
color: "#dfe0d9",
@ -1757,15 +1657,7 @@ elements.thermal_paste = {
state: "liquid",
};
elements.sam = {
name: "sam's sperm i think",
viscosity: 10000,
color: "#0e0e0e",
behavior: behaviors.LIQUID,
category: "joke",
state: "liquid",
desc: "begs the question; did he censor himself?"
};
// die
elements.glitch = {
color: ["#ff0000", "#c300ff", "#bbff00", "#1100ff", "#00ffaa"],
@ -1803,11 +1695,20 @@ elements.sound = {
}
file.click();
},
onUnselect: function() {},
tool: function() {},
category: "special",
};
elements.vomit = {
viscosity: 170,
tempHigh: 100,
stateHigh: ["dirty_water", "stench"],
behavior: behaviors.LIQUID,
category: "liquids",
state: "liquid",
stain: 0.1
};
elements.incinerate.category = "tools",
elements.cook.category = "tools",
elements.room_temp.category = "tools",
@ -1863,3 +1764,102 @@ if (!elements.coffee.reactions) elements.coffee.reactions = {};
elements.coffee.reactions.milk = {elem1: null, elem2: "coffee_milk",}
elements.silver.breakInto = "silver_coin"
// sb is an idiot and he has alzheimer so here is a property list
/*
== METADATA ==
name
alias
category
desc
extraInfo
related
hidden
darkText
canPlace
nocheer
forceAutoGen
== COLOR ==
color
innerColor (dead property)
colorOn
customColor
forceSaveColor
colorPattern
colorKey
== BEHAVIOR ==
behavior
behaviorOn
tool (func)
onMouseUp (func)
onSelect (func)
onUnselect (func)
onMix (func)
tick (func)
perTick (func)
reactions
== TEMP ==
temp
tempLow
stateLow
stateLowName
stateLowColor
stateLowColorMultiplier
tempHigh
stateHigh
stateHighName
stateHighColor
stateHighColorMultiplier
extraTempLow
extraTempHigh
heatCapacity (dead property)
== PROPERTIES ==
state
density
insulate
viscosity
conduct
stain
stainSelf
charge
movable
hardness
foodNeed
properties
maxSize
baby
egg
eggColor
seed
noMix
ignoreAir
excludeRandom
cooldown
isFood
ignore
canContain
== BURN ==
burn
burning
burnTime
burnInto
extinguish
fireColor
fireElement
== FLIP ==
rotatable
flipX
flippableX
flipY
flippableY
== BREAK ==
breakInto
breakIntoColor
*/