Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions rust/data/presets/full-settings/Community Race Season 5.json
Original file line number Diff line number Diff line change
Expand Up @@ -4267,6 +4267,9 @@
"item_pool_preset": null,
"stop_item_placement_early": false,
"ammo_collect_fraction": 0.7,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/full-settings/Default.json
Original file line number Diff line number Diff line change
Expand Up @@ -4267,6 +4267,9 @@
"item_pool_preset": "Full",
"stop_item_placement_early": false,
"ammo_collect_fraction": 0.7,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/full-settings/Mentor Tournament.json
Original file line number Diff line number Diff line change
Expand Up @@ -4267,6 +4267,9 @@
"item_pool_preset": null,
"stop_item_placement_early": false,
"ammo_collect_fraction": 0.7,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4267,6 +4267,9 @@
"item_pool_preset": "Full",
"stop_item_placement_early": false,
"ammo_collect_fraction": 1.0,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/item-progression/Challenge.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"item_pool_preset": "Full",
"stop_item_placement_early": false,
"ammo_collect_fraction": 1.0,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/item-progression/Desolate.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"item_pool_preset": "Reduced",
"stop_item_placement_early": true,
"ammo_collect_fraction": 1.0,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/item-progression/Normal.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"item_pool_preset": "Full",
"stop_item_placement_early": false,
"ammo_collect_fraction": 0.7,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/item-progression/Technical.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"item_pool_preset": "Full",
"stop_item_placement_early": false,
"ammo_collect_fraction": 1.0,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
3 changes: 3 additions & 0 deletions rust/data/presets/item-progression/Tricky.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
"item_pool_preset": "Full",
"stop_item_placement_early": false,
"ammo_collect_fraction": 0.7,
"missile_size": 5,
"super_size": 5,
"powerbomb_size": 5,
"item_pool": [
{
"item": "Missile",
Expand Down
9 changes: 6 additions & 3 deletions rust/maprando-logic/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ impl GlobalState {
item: Item,
game_data: &GameData,
ammo_collect_fraction: f32,
missile_size: u16,
super_size: u16,
powerbomb_size: u16,
tech: &[bool],
) {
self.inventory.items[item as usize] = true;
Expand All @@ -54,23 +57,23 @@ impl GlobalState {
let new_max_missiles = (ammo_collect_fraction
* self.inventory.collectible_missile_packs as f32)
.round() as Capacity
* 5;
* (missile_size as Capacity);
self.inventory.max_missiles = new_max_missiles;
}
Item::Super => {
self.inventory.collectible_super_packs += 1;
let new_max_supers = (ammo_collect_fraction
* self.inventory.collectible_super_packs as f32)
.round() as Capacity
* 5;
* (super_size as Capacity);
self.inventory.max_supers = new_max_supers;
}
Item::PowerBomb => {
self.inventory.collectible_power_bomb_packs += 1;
let new_max_power_bombs = (ammo_collect_fraction
* self.inventory.collectible_power_bomb_packs as f32)
.round() as Capacity
* 5;
* (powerbomb_size as Capacity);
self.inventory.max_power_bombs = new_max_power_bombs;
}
Item::ETank => {
Expand Down
6 changes: 6 additions & 0 deletions rust/maprando-web/src/randomize_helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ pub struct SeedHeaderTemplate<'a> {
semi_filler_items: Vec<String>,
early_filler_items: Vec<String>,
item_placement_style: String,
missile_size: i32,
super_size: i32,
powerbomb_size: i32,
difficulty: &'a DifficultyConfig,
quality_of_life_preset: String,
supers_double: bool,
Expand Down Expand Up @@ -423,6 +426,9 @@ pub fn render_seed(
.progression_rate
),
random_tank: seed_data.settings.item_progression_settings.random_tank,
missile_size: seed_data.settings.item_progression_settings.missile_size as i32,
super_size: seed_data.settings.item_progression_settings.super_size as i32,
powerbomb_size: seed_data.settings.item_progression_settings.powerbomb_size as i32,
filler_items: seed_data
.settings
.item_progression_settings
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<div class="modal" id="tankSizeModal" tabindex="-1" data-parent-modal="itemProgressionModal">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">Ammo Size Settings</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>This setting affects the size of resource expansions.</p>
<p>The default (Vanilla) setting for Missiles, Super Missiles, and Power Bombs is 5 per pack. Setting this to larger values may cause some ammo packs to be removed from the item
pool: the maximum total ammunition that can appear is 999 Missiles, 99 Supers, and 99 Power Bombs.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
47 changes: 47 additions & 0 deletions rust/maprando-web/templates/generate/item_progression.html
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,52 @@ <h1 class="modal-title fs-5">Item Progression</h1>
id="ammoCollectFraction" value="0.7" min="0.5" max="1.0" step="0.1" onchange="itemProgressionChanged()">
</div>
</div>

<div class="form-group row border rounded-3 m-3 p-0">
<div class="col-lg-3 ml-0 mt-1 mb-1 align-items-center">
<button type="button" class="btn mr-1 px-2 py-1" data-bs-toggle="modal" data-bs-target="#tankSizeModal">
<i class="bi bi-question-circle"></i>
</button>
<label for="preset">Ammo Size Settings</label>
</div>
<div class="accordion m-0 p-0" id="accordionTankSize">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed my-0 d-block text-center customize-button" style="padding-top:10px;padding-bottom:10px;" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTankSize">
Customize
</button>
</h2>
</div>
<div id="collapseTankSize" class="accordion-collapse collapse">
<div class="form-group row m-2">
<label class="col-lg-3 col-form-label text-end" for="tank_size_Missile">Missiles per pack:</label>
<span class="itemIcon itemIconMissile"></span>
<div class="col-lg-2">
<input type="text" class="form-control" name="tank_size_Missile" id="tankSizeMissile"
value="0" onchange="tankSizeChanged()">
</div>
</div>

<div class="form-group row m-2">
<label class="col-lg-3 col-form-label text-end" for="tank_size_Super">Super Missiles per pack:</label>
<span class="itemIcon itemIconSuper"></span>
<div class="col-lg-2">
<input type="text" class="form-control" name="tank_size_Super" id="tankSizeSuper"
value="0" onchange="tankSizeChanged()">
</div>
</div>

<div class="form-group row m-2">
<label class="col-lg-3 col-form-label text-end" for="tank_size_PowerBomb">Power Bombs per pack:</label>
<span class="itemIcon itemIconPowerBomb"></span>
<div class="col-lg-2">
<input type="text" class="form-control" name="tank_size_PowerBomb" id="tankSizePowerBomb"
value="0" onchange="tankSizeChanged()">
</div>
</div>
</div>
</div>
</div>

<div class="form-group row border rounded-3 m-3 p-0">
<div class="col-lg-3 ml-0 mt-1 mb-1 align-items-center">
Expand Down Expand Up @@ -477,6 +523,7 @@ <h2 class="accordion-header">
{% include "help/progression/random_tank.html" %}
{% include "help/progression/spazer_before_plasma.html" %}
{% include "help/progression/ammo_collect_fraction.html" %}
{% include "help/progression/tank_size.html" %}
{% include "help/progression/item_pool.html" %}
{% include "help/progression/stop_item_placement_early.html" %}
{% include "help/progression/starting_items.html" %}
Expand Down
55 changes: 43 additions & 12 deletions rust/maprando-web/templates/generate/scripts.html
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,9 @@
"starting_items": buildStartingItems(),
"key_item_priority": buildItemPriorities(),
"filler_items": buildFillerItems(),
"missile_size": tryParseInt(formData.get("tank_size_Missile")),
"super_size": tryParseInt(formData.get("tank_size_Super")),
"powerbomb_size": tryParseInt(formData.get("tank_size_PowerBomb")),
},
"quality_of_life_settings": {
"preset": formData.get("quality_of_life_preset"),
Expand Down Expand Up @@ -1134,13 +1137,18 @@
for (x of preset.item_pool) {
let item = x.item;
let cnt = x.count;
let el = document.getElementById(`itemPool${item}`);
if (el.classList.contains("item-pool-input-multiple")) {
el.value = cnt;
} else {
applyRadioValue(`itemPool${item}`, cnt > 0 ? "Yes" : "No");
}
let el = document.getElementById(`itemPool${item}`);
if (el.classList.contains("item-pool-input-multiple")) {
el.value = cnt;
} else {
applyRadioValue(`itemPool${item}`, cnt > 0 ? "Yes" : "No");
}
}

document.getElementById("tankSizeMissile").value = preset.missile_size;
document.getElementById("tankSizeSuper").value = preset.super_size;
document.getElementById("tankSizePowerBomb").value = preset.powerbomb_size;

processItemPoolPreset();
applyRadioValue("startingItemsPreset", preset.starting_items_preset);
for (x of preset.starting_items) {
Expand Down Expand Up @@ -1272,21 +1280,39 @@
{% endfor %}
}
}
function validateTankSize() {
if (parseInt(document.getElementById("tankSizeMissile").value) < 1) {
document.getElementById("tankSizeMissile").value = "5";
}
if (parseInt(document.getElementById("tankSizeMissile").value) > 999) {
document.getElementById("tankSizeMissile").value = "999";
}
if (parseInt(document.getElementById("tankSizeSuper").value) < 1) {
document.getElementById("tankSizeSuper").value = "5";
}
if (parseInt(document.getElementById("tankSizeSuper").value) > 99) {
document.getElementById("tankSizeSuper").value = "99";
}
if (parseInt(document.getElementById("tankSizePowerBomb").value) < 1) {
document.getElementById("tankSizePowerBomb").value = "5";
}
}

function validateItemPool() {
if (parseInt(document.getElementById("itemPoolMissile").value) > 199) {
document.getElementById("itemPoolMissile").value = "199";
if (parseInt(document.getElementById("itemPoolMissile").value) > 999) {
document.getElementById("itemPoolMissile").value = "999";
}
if (parseInt(document.getElementById("itemPoolETank").value) > 14) {
document.getElementById("itemPoolETank").value = "14";
}
if (parseInt(document.getElementById("itemPoolReserveTank").value) > 4) {
document.getElementById("itemPoolReserveTank").value = "4";
}
if (parseInt(document.getElementById("itemPoolSuper").value) > 19) {
document.getElementById("itemPoolSuper").value = "19";
if (parseInt(document.getElementById("itemPoolSuper").value) > 99) {
document.getElementById("itemPoolSuper").value = "99";
}
if (parseInt(document.getElementById("itemPoolPowerBomb").value) > 19) {
document.getElementById("itemPoolPowerBomb").value = "19";
if (parseInt(document.getElementById("itemPoolPowerBomb").value) > 99) {
document.getElementById("itemPoolPowerBomb").value = "99";
}

if (parseInt(document.getElementById("itemPoolMissile").value) < 0) {
Expand All @@ -1304,11 +1330,16 @@
if (parseInt(document.getElementById("itemPoolPowerBomb").value) < 0) {
document.getElementById("itemPoolPowerBomb").value = "0";
}

}
function itemPoolPresetChanged() {
processItemPoolPreset();
itemProgressionChanged();
}
function tankSizeChanged() {
validateTankSize();
itemProgressionChanged();
}
function itemPoolChanged() {
document.getElementById("itemPoolPresetFull").checked = false;
document.getElementById("itemPoolPresetReduced").checked = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@
</div>
</div>
{% endif %}
<div class="row">
<div class="col-6 col-sm-5 col-md-4 col-lg-3">Tank Sizes:</div>
<div class="col-6 col-sm-7 col-md-8 col-lg-9">
Missile {{+ missile_size }}, Super {{+ super_size }}, PowerBomb {{+ powerbomb_size }}
</div>
</div>
<div class="row">
<div class="col-6 col-sm-5 col-md-4 col-lg-3">Stop item placement early:</div>
<div class="col-6 col-sm-7 col-md-8 col-lg-9">{% if settings.item_progression_settings.stop_item_placement_early %}Yes{% else %}No{% endif %}</div>
Expand Down
Loading
Loading