reapply changes?
This commit is contained in:
parent
f363a6c396
commit
7b264f57fa
197
mods/creepers.js
197
mods/creepers.js
|
|
@ -3354,3 +3354,200 @@ runAfterLoad(function() {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Standalone generator function
|
||||||
|
|
||||||
|
function generateCreeper(creeperElements,isAfterScriptLoading=false) {//it can be a single element, though
|
||||||
|
//To specify an array creeper, have the array be inside another array.
|
||||||
|
/*For reasons related to how element colors are loaded, if this function is being run from a JS mod file, isAfterScriptLoading should be false.
|
||||||
|
Otherwise, you'll get TypeErrors for some reason when trying to place your creeper. If this is being run after the game has loaded (e.g. in the console),
|
||||||
|
then isAfterScriptLoading should be true or you might also get TypeErrors (this latter case was a bit inconsistent when I tested it, but
|
||||||
|
the former case wasn't. **isAfterScriptLoading must be false when this function is run from a JS mod file**.*/
|
||||||
|
if(typeof(creeperElements) === "string") { //it should be an array, so string check
|
||||||
|
//console.log("String detected");
|
||||||
|
if(creeperElements.includes(",")) { //comma-separated string?
|
||||||
|
//console.log("Splitting string to array");
|
||||||
|
creeperElements = creeperElements.split(","); //,SS to array
|
||||||
|
} else {
|
||||||
|
//console.log("Wrapping string in array");
|
||||||
|
creeperElements = [creeperElements]; //single string to array
|
||||||
|
};
|
||||||
|
};
|
||||||
|
for(aaf = 0; aaf < creeperElements.length; aaf++) {
|
||||||
|
var elementOfCreeper = creeperElements[aaf];
|
||||||
|
var startColor;
|
||||||
|
var randomExcl = 0;
|
||||||
|
//console.log("randomExcl set")
|
||||||
|
//console.log(elementOfCreeper);
|
||||||
|
|
||||||
|
var headName,bodyName,placerName,descElement;
|
||||||
|
|
||||||
|
if(typeof(elementOfCreeper === "string")) { //comma separated string check
|
||||||
|
if(elementOfCreeper.includes(",")) { //if it is
|
||||||
|
elementOfCreeper = elementOfCreeper.split(","); //to array
|
||||||
|
elementOfCreeper = elementOfCreeper.filter(function(e) { //strip nonexistent elements
|
||||||
|
return typeof(elements[e]) === "object";
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
if(Array.isArray(elementOfCreeper)) {
|
||||||
|
headName = `${elementOfCreeper.join("_")}_creeper_head`; //auto head element name
|
||||||
|
bodyName = `${elementOfCreeper.join("_")}_creeper_body`; //auto body element name
|
||||||
|
placerName = `${elementOfCreeper.join("_")}_creeper`; //auto placer element name
|
||||||
|
descElement = elementOfCreeper.join(", "); //auto explosion element list
|
||||||
|
|
||||||
|
//array case color concatenator and excludeRandom handler
|
||||||
|
startColor = [];
|
||||||
|
//console.log(elementOfCreeper);
|
||||||
|
for(ll = 0; ll < elementOfCreeper.length; ll++) {
|
||||||
|
if(typeof(elements[elementOfCreeper[ll]].excludeRandom !== "undefined")) { //if excludeRandom exists (prevent TypeError)
|
||||||
|
if(elements[elementOfCreeper[ll]].excludeRandom) { //it it's true
|
||||||
|
randomExcl = 1; //the whole array creeper is excluded
|
||||||
|
//console.log("array nyet" + elementOfCreeper);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//console.log(elementOfCreeper[ll]);
|
||||||
|
startColor = startColor.concat(elements[elementOfCreeper[ll]].color);
|
||||||
|
};
|
||||||
|
} else { //they should all be strings, so here
|
||||||
|
headName = `${elementOfCreeper}_creeper_head`; //auto head element name
|
||||||
|
bodyName = `${elementOfCreeper}_creeper_body`; //auto body element name
|
||||||
|
placerName = `${elementOfCreeper}_creeper`; //auto placer element name
|
||||||
|
descElement = elementOfCreeper; //auto explosion element
|
||||||
|
startColor = elements[elementOfCreeper].color;
|
||||||
|
if(typeof(elements[elementOfCreeper].excludeRandom !== "undefined")) { //if excludeRandom exists (prevent TypeError)
|
||||||
|
if(elements[elementOfCreeper].excludeRandom) { //it it's true
|
||||||
|
//console.log("nyet " + elementOfCreeper);
|
||||||
|
randomExcl = 1; //the creeper is excluded
|
||||||
|
} else {
|
||||||
|
//console.log("allow " + elementOfCreeper);
|
||||||
|
randomExcl = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
//Color gen
|
||||||
|
if(Array.isArray(startColor)) { //Average arrays, make colors rgb()
|
||||||
|
startColor = averageRgbPrefixedColorArray(startColor);
|
||||||
|
} else {
|
||||||
|
startColor = _rgbHexCatcher(startColor);
|
||||||
|
};
|
||||||
|
var preColor = rgbStringToHSL(startColor);
|
||||||
|
var colorsArray = [preColor, preColor, preColor, preColor, preColor, preColor, preColor, preColor, preColor, preColor]
|
||||||
|
var colorObjectArray = [];
|
||||||
|
for(q = 0; q < hslOffsets.length; q++) {
|
||||||
|
colorsArray[q] = addArraysInPairs(colorsArray[q],hslOffsets[q]);
|
||||||
|
colorsArray[q] = hslToHex((colorsArray[q][0] % 360),slBound(colorsArray[q][1]),slBound(colorsArray[q][2]));
|
||||||
|
colorObjectArray[q] = hexToRGB(colorsArray[q]); //outputs hex
|
||||||
|
if(isAfterScriptLoading) { // if it's after the hex -> RGB conversion
|
||||||
|
var coq = colorObjectArray[q]; //pull the object
|
||||||
|
colorsArray[q] = `rgb(${coq.r},${coq.g},${coq.b})`; //and change to the RGB from its values
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//End color gen
|
||||||
|
|
||||||
|
//console.log(`${headName}; ${bodyName}; ${placerName}; ${descElement}`)
|
||||||
|
|
||||||
|
//Placer
|
||||||
|
elements[placerName] = {
|
||||||
|
creeperType: elementOfCreeper,
|
||||||
|
color: colorsArray,
|
||||||
|
colorObject: colorObjectArray,
|
||||||
|
category: "auto creepers",
|
||||||
|
properties: {
|
||||||
|
dead: false,
|
||||||
|
dir: 1,
|
||||||
|
panic: 0,
|
||||||
|
following: false,
|
||||||
|
},
|
||||||
|
tick: function(pixel) {
|
||||||
|
autoCreeperPlacerTick(pixel);
|
||||||
|
},
|
||||||
|
related: [bodyName,headName,"creeper"],
|
||||||
|
desc: `Auto-generated creeper.<br/>Explodes into ${descElement}.`,
|
||||||
|
};
|
||||||
|
//Body
|
||||||
|
elements[bodyName] = {
|
||||||
|
creeperType: elementOfCreeper,
|
||||||
|
color: colorsArray,
|
||||||
|
colorObject: colorObjectArray,
|
||||||
|
category: "auto creepers",
|
||||||
|
hidden: true,
|
||||||
|
excludeRandom: true,
|
||||||
|
density: 1500,
|
||||||
|
state: "solid",
|
||||||
|
conduct: 25,
|
||||||
|
tempHigh: 250,
|
||||||
|
stateHigh: "cooked_meat",
|
||||||
|
tempLow: -30,
|
||||||
|
stateLow: "frozen_meat",
|
||||||
|
burn: 10,
|
||||||
|
burnTime: 250,
|
||||||
|
burnInto: ["cooked_meat","cooked_meat","cooked_meat","cooked_meat","gunpowder"],
|
||||||
|
breakInto: ["blood","gunpowder"],
|
||||||
|
reactions: {
|
||||||
|
"cancer": { "elem1":"cancer", "chance":0.005 },
|
||||||
|
"radiation": { "elem1":["ash","meat","rotten_meat","cooked_meat"], "chance":0.4 },
|
||||||
|
"plague": { "elem1":"plague", "chance":0.05 },
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
dead: false,
|
||||||
|
dir: 1,
|
||||||
|
panic: 0,
|
||||||
|
charged: false,
|
||||||
|
didChargeBlueTinted: false,
|
||||||
|
},
|
||||||
|
tick: function(pixel) {
|
||||||
|
autoCreeperBodyTick(pixel);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
//Head
|
||||||
|
elements[headName] = {
|
||||||
|
creeperType: elementOfCreeper,
|
||||||
|
color: colorsArray,
|
||||||
|
colorObject: colorObjectArray,
|
||||||
|
category: "auto creepers",
|
||||||
|
hidden: true,
|
||||||
|
excludeRandom: true,
|
||||||
|
density: 1080,
|
||||||
|
state: "solid",
|
||||||
|
conduct: 25,
|
||||||
|
tempHigh: 250,
|
||||||
|
stateHigh: "cooked_meat",
|
||||||
|
tempLow: -30,
|
||||||
|
stateLow: "frozen_meat",
|
||||||
|
burn: 10,
|
||||||
|
burnTime: 250,
|
||||||
|
burnInto: ["cooked_meat","cooked_meat","cooked_meat","cooked_meat","cooked_meat","cooked_meat","cooked_meat","cooked_meat","cooked_meat","gunpowder"],
|
||||||
|
breakInto: "blood",
|
||||||
|
reactions: {
|
||||||
|
"cancer": { "elem1":"cancer", "chance":0.005 },
|
||||||
|
"radiation": { "elem1":["ash","meat","rotten_meat","cooked_meat"], "chance":0.4 },
|
||||||
|
"plague": { "elem1":"plague", "chance":0.05 },
|
||||||
|
"oxygen": { "elem2":"carbon_dioxide", "chance":0.5 },
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
dead: false,
|
||||||
|
following: false,
|
||||||
|
hissing: false,
|
||||||
|
charged: false,
|
||||||
|
didChargeBlueTinted: false,
|
||||||
|
},
|
||||||
|
tick: function(pixel) {
|
||||||
|
autoCreeperHeadTick(pixel);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
if(creeperIncludeRandom) {
|
||||||
|
randomExcl ? elements[placerName].excludeRandom = true : elements[placerName].excludeRandom = false;
|
||||||
|
} else {
|
||||||
|
elements[placerName].excludeRandom = true;
|
||||||
|
};
|
||||||
|
if(!randomExcl) {
|
||||||
|
//console.log("spawn enabling " + placerName);
|
||||||
|
spawnCreepers.push(placerName);
|
||||||
|
} else {
|
||||||
|
//console.log("nyetted " + placerName);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue