randomelements 0.2

yippee
This commit is contained in:
sb 2024-04-07 16:30:31 -03:00 committed by GitHub
parent 2d670cd009
commit 85ae45f25b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 93 additions and 23 deletions

View File

@ -45,7 +45,7 @@ const nounTemperatures = {
gas: ["#ffffff", "#eeeeee", "#dddddd", "#cccccc", "#bbbbbb"],
plasma: ["#ff9966", "#ffaa77", "#ffbb88", "#ffcc99", "#ffddaa"],
slime: ["#88cc88", "#99dd99", "#aaddaa", "#bbeebb", "#ccffcc"],
sand: ["#cccccc", "#dddddd", "#eeeeee", "#ffffff", "#eeeeee"],
sand: ["#D2B48C", "#E8D5A9", "#F0E3C4", "#DCD0BF", "#EBE4D6"],
dust: ["#aaaaaa", "#bbbbbb", "#cccccc", "#dddddd", "#eeeeee"],
rock: ["#777777", "#888888", "#999999", "#aaaaaa", "#bbbbbb"],
lava: ["#ff4400", "#ff5511", "#ff6622", "#ff7733", "#ff8844"],
@ -57,26 +57,24 @@ const nounTemperatures = {
};
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"
const nounStates = {
metal: "solid",
crystal: "solid",
stone: "solid",
powder: "liquid",
liquid: "liquid",
gas: "gas",
plasma: "gas",
slime: "liquid",
sand: "liquid",
dust: "liquid",
rock: "solid",
lava: "liquid",
ice: "solid",
vapor: "gas",
ash: "liquid",
soot: "liquid",
sludge: "liquid"
};
// Map noun to behavior
@ -100,12 +98,29 @@ const nounBehaviors = {
sludge: behaviors.LIQUID
};
const adjectiveBreakInto = {
sweet: "sugar",
salty: "salt",
};
const nounBreakInto = {
crystal: "glass_shard",
ice: "snow",
rock: ["sand", "gravel"],
};
const adjectiveColorModifiers = {
dark: 0.8, // darker
shiny: 1.2, // brighter
glowing: 1.5 // brightest
};
// Generate elements
for (const name of elementNames) {
const [adjective, noun] = name.split("_");
const baseColor = nounColors[noun];
let baseColor = nounColors[noun];
const {tempLow, tempHigh} = nounTemperatures[noun];
@ -117,14 +132,69 @@ for (const name of elementNames) {
temp /= 2;
}
if (adjective in adjectiveColorModifiers) {
const modifier = adjectiveColorModifiers[adjective];
baseColor = modifyColor(baseColor, modifier);
}
elements[name] = {
color: baseColor,
behavior: nounBehaviors[noun],
category: "random elements",
state: adjectiveStates[adjective],
state: nounStates[noun],
temp: temp,
breakInto: adjectiveBreakInto[adjective] || nounBreakInto[noun],
density: Math.random() * 100,
viscosity: Math.random() * 100
};
function modifyColor(color, modifier) {
if (color[0] === '#') {
color = color.slice(1);
}
color = String(color);
// Check for '#'
const match = color.match(/^#?(.*)$/);
if (match) {
color = match[1];
}
// Convert to RGB
let [r, g, b] = color.match(/.{1,2}/g).map(x => parseInt(x, 16));
// Apply modifier
r = Math.round(r * modifier);
g = Math.round(g * modifier);
b = Math.round(b * modifier);
// Constrain RGB values to 0-255
r = Math.max(0, Math.min(255, r));
g = Math.max(0, Math.min(255, g));
b = Math.max(0, Math.min(255, b));
// Convert back to hex
return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
}
/*
changelog only count importtant stuff and not the small details
0.1
added the mod
0.2
elements have breakInto's
elements with the adjectives "dark, shiny and glowing" are darker or brighter
elements with the nouns "crystal, ice, rock" can break into other elements like "glass_shard, snow, sand"
fixed some elements having wrong states
todo:
elements have reactions
gases dont have breakintos
what a silly little changelog! i made it literally right here!!
*/