|
|
|
@@ -2890,8 +2890,6 @@ function tail_vore(count) |
|
|
|
totalPrey = totalPrey.merge(prey); |
|
|
|
} |
|
|
|
|
|
|
|
console.log(i + ", " + area + ", " + area * i); |
|
|
|
let line = describe("tails-vore", totalPrey, macro, verbose).replace("$COUNT", number(count, numbers)); |
|
|
|
lines.push(line); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -3858,7 +3856,6 @@ function applyPercentage(name, meterPos) { |
|
|
|
document.querySelector("#" + name + "Meter .fill").style.setProperty("transform", "translate(0px, " + Math.round(meterPos) + "px)"); |
|
|
|
|
|
|
|
let meter = document.querySelector("#" + name + "Meter"); |
|
|
|
console.log(meterPos); |
|
|
|
if (meterPos == 0) { |
|
|
|
meter.classList.add("shaking"); |
|
|
|
} else { |
|
|
|
@@ -4787,179 +4784,248 @@ window.addEventListener('load', function(event) { |
|
|
|
setTimeout(pick_move, 2000); |
|
|
|
}); |
|
|
|
|
|
|
|
function construct_options() { |
|
|
|
let root = document.getElementById("character-flex-outer"); |
|
|
|
function render_text_option(li, option) { |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id); |
|
|
|
input.setAttribute("name", option.id); |
|
|
|
input.setAttribute("type", "text"); |
|
|
|
|
|
|
|
options.forEach(function(category) { |
|
|
|
let name = category.name; |
|
|
|
let cat_id = category.id; |
|
|
|
if (option.default) { |
|
|
|
input.setAttribute("placeholder", option.default); |
|
|
|
} |
|
|
|
|
|
|
|
let cat_div = document.createElement("div"); |
|
|
|
cat_div.classList.add("custom-category"); |
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id); |
|
|
|
label.innerText = option.name; |
|
|
|
|
|
|
|
let header; |
|
|
|
li.appendChild(label); |
|
|
|
li.appendChild(input); |
|
|
|
} |
|
|
|
|
|
|
|
function render_float_option(li, option) { |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id); |
|
|
|
input.setAttribute("name", option.id); |
|
|
|
input.setAttribute("type", "number"); |
|
|
|
input.setAttribute("step", "any"); |
|
|
|
|
|
|
|
if (category.optional) { |
|
|
|
header = document.createElement("label"); |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.classList.add("custom-header-checkbox"); |
|
|
|
input.setAttribute("type", "checkbox"); |
|
|
|
input.id = category.id; |
|
|
|
input.name = category.id; |
|
|
|
if (option.default) { |
|
|
|
input.setAttribute("placeholder", option.default); |
|
|
|
} |
|
|
|
|
|
|
|
cat_div.appendChild(input); |
|
|
|
|
|
|
|
header.classList.add("custom-header"); |
|
|
|
header.setAttribute("for", category.id); |
|
|
|
} else { |
|
|
|
header = document.createElement("div"); |
|
|
|
header.classList.add("custom-header-static"); |
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id); |
|
|
|
label.innerText = option.name; |
|
|
|
|
|
|
|
li.appendChild(label); |
|
|
|
li.appendChild(input); |
|
|
|
|
|
|
|
if (option.unit) { |
|
|
|
input.setAttribute("data-unit", option.unit); |
|
|
|
|
|
|
|
let unit = document.createElement("div"); |
|
|
|
|
|
|
|
unit.classList.add("preview"); |
|
|
|
unit.id = option.id + "Preview"; |
|
|
|
li.appendChild(unit); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function render_radio_option(options_div, option) { |
|
|
|
option.choices.forEach(function(choice) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
|
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id + "-" + choice.value); |
|
|
|
input.setAttribute("name", option.id); |
|
|
|
input.setAttribute("value", choice.value); |
|
|
|
input.setAttribute("type", "radio"); |
|
|
|
|
|
|
|
if (option.default == choice.value) { |
|
|
|
input.setAttribute("checked", true); |
|
|
|
} |
|
|
|
|
|
|
|
header.innerText = name; |
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id + "-" + choice.value); |
|
|
|
label.innerText = choice.name; |
|
|
|
|
|
|
|
li.appendChild(input); |
|
|
|
li.appendChild(label); |
|
|
|
options_div.appendChild(li); |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function render_checkbox_option(options_div, option) { |
|
|
|
option.choices.forEach(function(choice) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
|
|
|
|
let options_div = document.createElement("div") |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id + choice.value); |
|
|
|
input.setAttribute("name", option.id + choice.value); |
|
|
|
input.setAttribute("type", "checkbox"); |
|
|
|
|
|
|
|
if (category.optional) { |
|
|
|
options_div.classList.add("reveal-if-active"); |
|
|
|
if (choice.default) { |
|
|
|
input.setAttribute("checked", true); |
|
|
|
} |
|
|
|
|
|
|
|
category.entries.forEach(function(option) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id + choice.value); |
|
|
|
label.innerText = choice.name; |
|
|
|
|
|
|
|
if (option.type == "text") { |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id); |
|
|
|
input.setAttribute("name", option.id); |
|
|
|
input.setAttribute("type", "text"); |
|
|
|
li.appendChild(input); |
|
|
|
li.appendChild(label); |
|
|
|
options_div.appendChild(li); |
|
|
|
|
|
|
|
if (option.default) { |
|
|
|
input.setAttribute("placeholder", option.default); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id); |
|
|
|
label.innerText = option.name; |
|
|
|
function render_select_option(li, option) { |
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id); |
|
|
|
label.innerText = option.name; |
|
|
|
|
|
|
|
let select = document.createElement("select"); |
|
|
|
select.setAttribute("name", option.id); |
|
|
|
|
|
|
|
li.appendChild(label); |
|
|
|
li.appendChild(input); |
|
|
|
} |
|
|
|
option.choices.forEach(function(choice) { |
|
|
|
let sub_option = document.createElement("option"); |
|
|
|
sub_option.innerText = choice.name; |
|
|
|
sub_option.setAttribute("value", choice.value); |
|
|
|
|
|
|
|
if (option.type == "float") { |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id); |
|
|
|
input.setAttribute("name", option.id); |
|
|
|
input.setAttribute("type", "number"); |
|
|
|
input.setAttribute("step", "any"); |
|
|
|
select.appendChild(sub_option); |
|
|
|
}); |
|
|
|
|
|
|
|
if (option.default) { |
|
|
|
input.setAttribute("placeholder", option.default); |
|
|
|
} |
|
|
|
li.appendChild(label); |
|
|
|
li.appendChild(select); |
|
|
|
} |
|
|
|
|
|
|
|
function render_subcategory_option(li, option) { |
|
|
|
let sub_div = document.createElement("div"); |
|
|
|
sub_div.classList.add("custom-category-sub"); |
|
|
|
|
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id); |
|
|
|
label.innerText = option.name; |
|
|
|
let sub_ul = document.createElement("ul"); |
|
|
|
sub_ul.classList.add("flex-outer-sub"); |
|
|
|
|
|
|
|
li.appendChild(label); |
|
|
|
li.appendChild(input); |
|
|
|
let sub_input = document.createElement("input"); |
|
|
|
sub_input.classList.add("custom-header-checkbox"); |
|
|
|
sub_input.id = option.id; |
|
|
|
sub_input.setAttribute("name", option.id); |
|
|
|
sub_input.setAttribute("type", "checkbox"); |
|
|
|
|
|
|
|
if (option.unit) { |
|
|
|
input.setAttribute("data-unit", option.unit); |
|
|
|
let sub_label = document.createElement("label"); |
|
|
|
sub_label.classList.add("custom-header"); |
|
|
|
sub_label.setAttribute("for", option.id); |
|
|
|
sub_label.innerText = option.name; |
|
|
|
|
|
|
|
let unit = document.createElement("div"); |
|
|
|
let sub_div_inner = document.createElement("div"); |
|
|
|
|
|
|
|
unit.classList.add("preview"); |
|
|
|
unit.id = option.id + "Preview"; |
|
|
|
li.appendChild(unit); |
|
|
|
} |
|
|
|
sub_div_inner.classList.add("reveal-if-active"); |
|
|
|
|
|
|
|
} |
|
|
|
sub_ul.appendChild(sub_input); |
|
|
|
sub_ul.appendChild(sub_label); |
|
|
|
sub_ul.appendChild(sub_div_inner); |
|
|
|
|
|
|
|
if (option.type == "radio") { |
|
|
|
option.choices.forEach(function(choice) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
option.entries.forEach(function(option) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
|
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id + "-" + choice.value); |
|
|
|
input.setAttribute("name", option.id); |
|
|
|
input.setAttribute("value", choice.value); |
|
|
|
input.setAttribute("type", "radio"); |
|
|
|
render_option(sub_div_inner, li, option); |
|
|
|
|
|
|
|
if (option.default == choice.value) { |
|
|
|
input.setAttribute("checked", true); |
|
|
|
} |
|
|
|
sub_div_inner.appendChild(li); |
|
|
|
}); |
|
|
|
|
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id + "-" + choice.value); |
|
|
|
label.innerText = choice.name; |
|
|
|
sub_div.appendChild(sub_ul); |
|
|
|
|
|
|
|
li.appendChild(input); |
|
|
|
li.appendChild(label); |
|
|
|
options_div.appendChild(li); |
|
|
|
li.appendChild(sub_div); |
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
function render_option(root_div, li, option) { |
|
|
|
if (option.type == "text") { |
|
|
|
render_text_option(li, option); |
|
|
|
} |
|
|
|
|
|
|
|
// we added n li elements; we need to skip the default one |
|
|
|
return; |
|
|
|
} |
|
|
|
if (option.type == "float") { |
|
|
|
render_float_option(li, option); |
|
|
|
} |
|
|
|
|
|
|
|
if (option.type == "checkbox") { |
|
|
|
option.choices.forEach(function(choice) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
if (option.type == "radio") { |
|
|
|
render_radio_option(root_div, option); |
|
|
|
// we added n li elements; we need to skip the default one |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let input = document.createElement("input"); |
|
|
|
input.setAttribute("autocomplete", "off"); |
|
|
|
input.setAttribute("id", option.id + choice.value); |
|
|
|
input.setAttribute("name", option.id + choice.value); |
|
|
|
input.setAttribute("type", "checkbox"); |
|
|
|
if (option.type == "checkbox") { |
|
|
|
render_checkbox_option(root_div, option); |
|
|
|
|
|
|
|
if (choice.default) { |
|
|
|
input.setAttribute("checked", true); |
|
|
|
} |
|
|
|
// we added n li elements; we need to skip the default one |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id + choice.value); |
|
|
|
label.innerText = choice.name; |
|
|
|
if (option.type == "select") { |
|
|
|
render_select_option(li, option); |
|
|
|
} |
|
|
|
|
|
|
|
li.appendChild(input); |
|
|
|
li.appendChild(label); |
|
|
|
options_div.appendChild(li); |
|
|
|
if (option.type == "subcategory") { |
|
|
|
render_subcategory_option(li, option); |
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
root_div.appendChild(li); |
|
|
|
} |
|
|
|
|
|
|
|
// we added n li elements; we need to skip the default one |
|
|
|
return; |
|
|
|
} |
|
|
|
function render_category(root, category) { |
|
|
|
let name = category.name; |
|
|
|
let cat_id = category.id; |
|
|
|
|
|
|
|
if (option.type == "select") { |
|
|
|
let label = document.createElement("label"); |
|
|
|
label.setAttribute("for", option.id); |
|
|
|
let cat_div = document.createElement("div"); |
|
|
|
cat_div.classList.add("custom-category"); |
|
|
|
|
|
|
|
let select = document.createElement("select"); |
|
|
|
select.setAttribute("name", option.id); |
|
|
|
let header; |
|
|
|
|
|
|
|
option.choices.forEach(function(choice) { |
|
|
|
let sub_option = document.createElement("option"); |
|
|
|
sub_option.innerText = choice.name; |
|
|
|
sub_option.setAttribute("value", choice.value); |
|
|
|
if (category.optional) { |
|
|
|
header = document.createElement("label"); |
|
|
|
let input = document.createElement("input"); |
|
|
|
input.classList.add("custom-header-checkbox"); |
|
|
|
input.setAttribute("type", "checkbox"); |
|
|
|
input.id = category.id; |
|
|
|
input.name = category.id; |
|
|
|
|
|
|
|
select.appendChild(sub_option); |
|
|
|
}); |
|
|
|
cat_div.appendChild(input); |
|
|
|
|
|
|
|
li.appendChild(label); |
|
|
|
li.appendChild(select); |
|
|
|
} |
|
|
|
header.classList.add("custom-header"); |
|
|
|
header.setAttribute("for", category.id); |
|
|
|
} else { |
|
|
|
header = document.createElement("div"); |
|
|
|
header.classList.add("custom-header-static"); |
|
|
|
} |
|
|
|
|
|
|
|
options_div.appendChild(li); |
|
|
|
header.innerText = name; |
|
|
|
|
|
|
|
}); |
|
|
|
let options_div = document.createElement("div") |
|
|
|
|
|
|
|
cat_div.appendChild(header); |
|
|
|
cat_div.appendChild(options_div); |
|
|
|
root.appendChild(cat_div); |
|
|
|
if (category.optional) { |
|
|
|
options_div.classList.add("reveal-if-active"); |
|
|
|
} |
|
|
|
|
|
|
|
category.entries.forEach(function(option) { |
|
|
|
let li = document.createElement("li"); |
|
|
|
|
|
|
|
render_option(options_div, li, option); |
|
|
|
}); |
|
|
|
|
|
|
|
cat_div.appendChild(header); |
|
|
|
cat_div.appendChild(options_div); |
|
|
|
root.appendChild(cat_div); |
|
|
|
} |
|
|
|
|
|
|
|
function construct_options() { |
|
|
|
let root = document.getElementById("character-flex-outer"); |
|
|
|
|
|
|
|
options.forEach(function(category) { |
|
|
|
render_category(root, category); |
|
|
|
}); |
|
|
|
} |