diff --git a/open_samus_returns_rando/files/templates/template_powerup_bmsad.json b/open_samus_returns_rando/files/templates/template_powerup_bmsad.json index a473403..b78e04e 100644 --- a/open_samus_returns_rando/files/templates/template_powerup_bmsad.json +++ b/open_samus_returns_rando/files/templates/template_powerup_bmsad.json @@ -171,6 +171,78 @@ "fields": {}, "dependencies": [] }, + "FX": { + "type": "CFXComponent", + "unk_1": 1500, + "unk_2": 0.0, + "functions": [ + { + "name": "FXCreateAndLink", + "unk1": true, + "unk2": false, + "params": { + "Param1": { + "type": "s", + "value": "" + }, + "Param2": { + "type": "s", + "value": "" + }, + "Param3": { + "type": "s", + "value": "" + }, + "Param4": { + "type": "s", + "value": "" + }, + "Param5": { + "type": "i", + "value": 0 + }, + "Param6": { + "type": "i", + "value": 4 + }, + "Param7": { + "type": "f", + "value": 0.0 + }, + "Param8": { + "type": "f", + "value": 0.0 + }, + "Param9": { + "type": "f", + "value": 0.0 + }, + "Param10": { + "type": "f", + "value": 0.0 + }, + "Param11": { + "type": "f", + "value": 0.0 + }, + "Param12": { + "type": "f", + "value": 0.0 + }, + "Param13": { + "type": "b", + "value": false + }, + "Param14": { + "type": "b", + "value": true + } + } + } + ], + "fields": {}, + "dependencies": [] + }, "AUDIO": { "type": "CAudioComponent", "unk_1": 3000, diff --git a/open_samus_returns_rando/model_data.py b/open_samus_returns_rando/model_data.py index 87f705c..82c73f7 100644 --- a/open_samus_returns_rando/model_data.py +++ b/open_samus_returns_rando/model_data.py @@ -23,10 +23,11 @@ class ModelData: "actors/items/itemsphere/animations/droparachnus.bcskla", "actors/items/itemsphere/animations/relax.bcskla", "actors/items/itemsphere/fx/itemsphereexplode.bcptl", - "actors/items/itemsphere/fx/itemsphereparts.bcptl" + "actors/items/itemsphere/fx/itemsphereparts.bcptl", + "maps/textures/chozoartifactor_d.bctex", + "maps/textures/chozoartifactorbase_d.bctex", ), ), - "adn": ModelData( bcmdl_path="actors/items/adn/models/adn.bcmdl", dependencies=( @@ -34,111 +35,74 @@ class ModelData: "actors/items/adn/fx/adnleak.bcptl", "actors/items/adn/models/adn.bcmdl", "actors/items/adn/models/textures/adn_d.bctex", - "actors/items/adn/scripts/adn.lc" + "system/fx/textures/steam.bctex", + "system/fx/textures/twistsmoke_l.bctex", ), ), - "babyhatchling": ModelData( - bcmdl_path="actors/characters/babyhatchling/models/babyhatchling.bcmdl", + bcmdl_path="actors/characters/babyhatchling/models/babyhatchlingsmall.bcmdl", dependencies=( "actors/characters/babyhatchling/charclasses/babyhatchling.bmsad", - "actors/characters/babyhatchling/models/babyhatchling.bcmdl", - "actors/characters/babyhatchling/models/babyhatchlingcutscene.bcmdl", "actors/characters/babyhatchling/models/babyhatchlingsmall.bcmdl", - "actors/characters/babyhatchling/models/hatchling_telecolor.bcmdl", - "actors/characters/babyhatchling/models/hatchling_teledisolve.bcmdl", - "actors/characters/babyhatchling/models/textures/babyhatchling_a.bctex", - "actors/characters/babyhatchling/models/textures/babyhatchling_d.bctex", - "actors/characters/babyhatchling/models/textures/coreveins.bctex", - "actors/characters/babyhatchling/models/textures/cubemetroids.bctex" + "actors/characters/babyhatchling/models/babyhatchling.bcmdl", ), ), - "powerup_wavebeam": ModelData( bcmdl_path="actors/items/powerup_wavebeam/models/powerup_wavebeam.bcmdl", dependencies=( "actors/items/powerup_wavebeam/charclasses/powerup_wavebeam.bmsad", "actors/items/powerup_wavebeam/models/powerup_wavebeam.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_wavebeam/models/textures/itemspherecoat.bctex", "actors/items/powerup_wavebeam/models/textures/itemspherewavebeam_d.bctex", - "actors/items/powerup_wavebeam/scripts/powerup_wavebeam.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_spazerbeam": ModelData( bcmdl_path="actors/items/powerup_spazerbeam/models/powerup_spazerbeam.bcmdl", dependencies=( "actors/items/powerup_spazerbeam/charclasses/powerup_spazerbeam.bmsad", "actors/items/powerup_spazerbeam/models/powerup_spazerbeam.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_spazerbeam/models/textures/itemspazerbeam_d.bctex", - "actors/items/powerup_spazerbeam/scripts/powerup_spazerbeam.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_plasmabeam": ModelData( bcmdl_path="actors/items/powerup_plasmabeam/models/powerup_plasmabeam.bcmdl", dependencies=( "actors/items/powerup_plasmabeam/charclasses/powerup_plasmabeam.bmsad", "actors/items/powerup_plasmabeam/models/powerup_plasmabeam.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_plasmabeam/models/textures/itemplasmabeam_d.bctex", - "system/fx/textures/plasmabeamhead.bctex", - "actors/items/powerup_plasmabeam/scripts/powerup_plasmabeam.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_chargebeam": ModelData( bcmdl_path="actors/items/powerup_chargebeam/models/powerup_chargebeam.bcmdl", dependencies=( "actors/items/powerup_chargebeam/charclasses/powerup_chargebeam.bmsad", "actors/items/powerup_chargebeam/models/powerup_chargebeam.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_chargebeam/models/textures/itemspherechargebeam_d.bctex", - "actors/items/powerup_chargebeam/scripts/powerup_chargebeam.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_icebeam": ModelData( bcmdl_path="actors/items/powerup_icebeam/models/powerup_icebeam.bcmdl", dependencies=( "actors/items/powerup_icebeam/charclasses/powerup_icebeam.bmsad", "actors/items/powerup_icebeam/models/powerup_icebeam.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_icebeam/models/textures/itemsphereicebeam_d.bctex", - "actors/items/powerup_icebeam/scripts/powerup_icebeam.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_grapplebeam": ModelData( bcmdl_path="actors/items/powerup_grapplebeam/models/powerup_grapplebeam.bcmdl", dependencies=( "actors/items/powerup_grapplebeam/charclasses/powerup_grapplebeam.bmsad", "actors/items/powerup_grapplebeam/models/powerup_grapplebeam.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_grapplebeam/models/textures/itemgrapplebeam_d.bctex", - "actors/items/powerup_grapplebeam/scripts/powerup_grapplebeam.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_supermissile": ModelData( bcmdl_path="actors/items/powerup_supermissile/models/powerup_supermissile.bcmdl", dependencies=( "actors/items/powerup_supermissile/charclasses/powerup_supermissile.bmsad", "actors/items/powerup_supermissile/models/powerup_supermissile.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", - "actors/items/powerup_supermissile/scripts/powerup_supermissile.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_scanningpulse": ModelData( bcmdl_path="actors/items/powerup_scanningpulse/models/powerup_scanningpulse.bcmdl", dependencies=( @@ -146,11 +110,12 @@ class ModelData: "actors/items/powerup_scanningpulse/fx/orb.bcptl", "actors/items/powerup_scanningpulse/fx/scanpulseloop.bcptl", "actors/items/powerup_scanningpulse/models/powerup_scanningpulse.bcmdl", - "actors/items/powerup_scanningpulse/scripts/powerup_scanningpulse.lc", - "sounds/generic/hability_projector.bcwav" - ) + "system/fx/textures/halfwave.bctex", + "system/fx/textures/haloflame.bctex", + "system/fx/textures/splat.bctex", + "system/fx/textures/xflare_large.bctex", + ), ), - "powerup_energyshield": ModelData( bcmdl_path="actors/items/powerup_energyshield/models/powerup_energyshield.bcmdl", dependencies=( @@ -159,11 +124,12 @@ class ModelData: "actors/items/powerup_energyshield/fx/lightingarmourloop.bcptl", "actors/items/powerup_energyshield/models/powerup_energyshield.bcmdl", "actors/items/powerup_scanningpulse/models/powerup_scanningpulse.bcmdl", - "actors/items/powerup_energyshield/scripts/powerup_energyshield.lc", - "sounds/generic/hability_projector.bcwav" - ) + "system/fx/textures/halfwave.bctex", + "system/fx/textures/haloflame.bctex", + "system/fx/textures/splat.bctex", + "system/fx/textures/xflare_large.bctex", + ), ), - "powerup_energywave": ModelData( bcmdl_path="actors/items/powerup_energywave/models/powerup_energywave.bcmdl", dependencies=( @@ -172,11 +138,12 @@ class ModelData: "actors/items/powerup_energywave/fx/energywaveloop.bcptl", "actors/items/powerup_energywave/models/powerup_energywave.bcmdl", "actors/items/powerup_scanningpulse/models/powerup_scanningpulse.bcmdl", - "actors/items/powerup_energywave/scripts/powerup_energywave.lc", - "sounds/generic/hability_projector.bcwav" - ) + "system/fx/textures/halfwave.bctex", + "system/fx/textures/haloflame.bctex", + "system/fx/textures/splat.bctex", + "system/fx/textures/xflare_large.bctex", + ), ), - "powerup_phasedisplacement": ModelData( bcmdl_path="actors/items/powerup_phasedisplacement/models/powerup_phasedisplacement.bcmdl", dependencies=( @@ -185,122 +152,86 @@ class ModelData: "actors/items/powerup_phasedisplacement/fx/phasedisplacementloop.bcptl", "actors/items/powerup_phasedisplacement/models/powerup_phasedisplacement.bcmdl", "actors/items/powerup_scanningpulse/models/powerup_scanningpulse.bcmdl", - "actors/items/powerup_phasedisplacement/scripts/powerup_phasedisplacement.lc", - "sounds/generic/hability_projector.bcwav" - ) + "system/fx/textures/halfwave.bctex", + "system/fx/textures/haloflame.bctex", + "system/fx/textures/splat.bctex", + "system/fx/textures/xflare_large.bctex", + ), ), - "powerup_variasuit": ModelData( bcmdl_path="actors/items/powerup_variasuit/models/powerup_variasuit.bcmdl", dependencies=( "actors/items/powerup_variasuit/charclasses/powerup_variasuit.bmsad", "actors/items/powerup_variasuit/models/powerup_variasuit.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_variasuit/models/textures/itemspherecoat.bctex", "actors/items/powerup_variasuit/models/textures/itemvariasuit_d.bctex", - "actors/items/powerup_variasuit/scripts/powerup_variasuit.lc", - "actors/items/itemsphere/animations/relax.bcskla", ), ), - "powerup_gravitysuit": ModelData( bcmdl_path="actors/items/powerup_gravitysuit/models/powerup_gravitysuit.bcmdl", dependencies=( "actors/items/powerup_gravitysuit/charclasses/powerup_gravitysuit.bmsad", "actors/items/powerup_gravitysuit/models/powerup_gravitysuit.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_gravitysuit/models/textures/cubemetroids.bctex", "actors/items/powerup_gravitysuit/models/textures/itemgravitysuit_d.bctex", - "actors/items/powerup_gravitysuit/scripts/powerup_gravitysuit.lc", - "actors/items/itemsphere/animations/relax.bcskla", ), ), - "powerup_morphball": ModelData( bcmdl_path="actors/items/powerup_morphball/models/powerup_morphball.bcmdl", dependencies=( "actors/items/powerup_morphball/charclasses/powerup_morphball.bmsad", "actors/items/powerup_morphball/models/powerup_morphball.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_morphball/models/textures/powerup_morphball_d.bctex", - "actors/items/powerup_morphball/scripts/powerup_morphball.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_bomb": ModelData( bcmdl_path="actors/items/powerup_bomb/models/powerup_bomb.bcmdl", dependencies=( "actors/items/powerup_bomb/charclasses/powerup_bomb.bmsad", "actors/items/powerup_bomb/models/powerup_bomb.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_bomb/models/textures/powerup_bomb.bctex", - "actors/items/powerup_bomb/scripts/powerup_bomb.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_springball": ModelData( bcmdl_path="actors/items/powerup_springball/models/powerup_springball.bcmdl", dependencies=( "actors/items/powerup_springball/charclasses/powerup_springball.bmsad", "actors/items/powerup_springball/models/powerup_springball.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_springball/models/textures/itemspringball_d.bctex", - "actors/items/powerup_springball/scripts/powerup_springball.lc", - "actors/items/itemsphere/animations/droparachnus.bcskla", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_spiderball": ModelData( bcmdl_path="actors/items/powerup_spiderball/models/powerup_spiderball.bcmdl", dependencies=( "actors/items/powerup_spiderball/charclasses/powerup_spiderball.bmsad", "actors/items/powerup_spiderball/models/powerup_spiderball.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_spiderball/models/textures/powerup_morphball_d.bctex", - "actors/items/powerup_spiderball/scripts/powerup_spiderball.lc", - "actors/items/itemsphere/animations/relax.bcskla" - ) + ), ), - "powerup_highjumpboots": ModelData( - bcmdl_path="actors/items/powerup_highjumpboots/models/highjumpboots.bcmdl", + bcmdl_path="actors/items/powerup_highjumpboots/models/powerup_highjumpboots.bcmdl", dependencies=( "actors/items/powerup_highjumpboots/charclasses/powerup_highjumpboots.bmsad", "actors/items/powerup_highjumpboots/models/powerup_highjumpboots.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_highjumpboots/models/textures/itemspherehighjumpboots_d.bctex", - "actors/items/powerup_highjumpboots/scripts/powerup_highjumpboots.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_spacejump": ModelData( bcmdl_path="actors/items/powerup_spacejump/models/powerup_spacejump.bcmdl", dependencies=( "actors/items/powerup_spacejump/charclasses/powerup_spacejump.bmsad", "actors/items/powerup_spacejump/models/powerup_spacejump.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_spacejump/models/textures/itemspacejump_d.bctex", - "actors/items/powerup_spacejump/scripts/powerup_spacejump.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "powerup_screwattack": ModelData( bcmdl_path="actors/items/powerup_screwattack/models/powerup_screwattack.bcmdl", dependencies=( "actors/items/powerup_screwattack/charclasses/powerup_screwattack.bmsad", "actors/items/powerup_screwattack/models/powerup_screwattack.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_screwattack/models/textures/itemscrewattack_d.bctex", - "actors/items/powerup_screwattack/scripts/powerup_screwattack.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), - "item_energytank": ModelData( bcmdl_path="actors/items/item_energytank/models/item_energytank.bcmdl", dependencies=( @@ -309,11 +240,8 @@ class ModelData: "actors/items/item_energytank/models/textures/energytank_d.bctex", "actors/items/item_energytank/models/textures/tankglow.bctex", "actors/items/item_energytank/models/textures/weaponstank_d.bctex", - "actors/items/item_energytank/scripts/item_energytank.lc", - "actors/items/itemtank/animations/relax.bcskla" ), ), - "item_senergytank": ModelData( bcmdl_path="actors/items/item_senergytank/models/item_senergytank.bcmdl", dependencies=( @@ -321,53 +249,40 @@ class ModelData: "actors/items/item_senergytank/models/item_senergytank.bcmdl", "actors/items/item_energytank/models/item_energytank.bcmdl", "actors/items/item_senergytank/models/textures/spenergytank_d.bctex", - "actors/items/item_senergytank/scripts/item_senergytank.lc", - "actors/items/itemtank/animations/relax.bcskla" ), ), - "item_missiletank": ModelData( bcmdl_path="actors/items/item_missiletank/models/item_missiletank.bcmdl", dependencies=( "actors/items/item_missiletank/charclasses/item_missiletank.bmsad", "actors/items/item_missiletank/models/item_missiletank.bcmdl", "actors/items/item_energytank/models/item_energytank.bcmdl", - "actors/items/item_missiletank/scripts/item_missiletank.lc", - "actors/items/itemtank/animations/relax.bcskla" ), ), - "item_supermissiletank": ModelData( bcmdl_path="actors/items/item_supermissiletank/models/item_supermissiletank.bcmdl", dependencies=( "actors/items/item_supermissiletank/charclasses/item_supermissiletank.bmsad", "actors/items/item_supermissiletank/models/item_supermissiletank.bcmdl", "actors/items/item_energytank/models/item_energytank.bcmdl", - "actors/items/item_supermissiletank/scripts/item_supermissiletank.lc", - "actors/items/itemtank/animations/relax.bcskla" ), ), - "item_powerbombtank": ModelData( bcmdl_path="actors/items/item_powerbombtank/models/item_powerbombtank.bcmdl", dependencies=( "actors/items/item_powerbombtank/charclasses/item_powerbombtank.bmsad", "actors/items/item_powerbombtank/models/item_powerbombtank.bcmdl", "actors/items/item_energytank/models/item_energytank.bcmdl", - "actors/items/item_powerbombtank/scripts/item_powerbombtank.lc", - "actors/items/itemtank/animations/relax.bcskla" + "maps/textures/powerbomb_d.bctex", + "actors/weapons/powerbomb/models/textures/powerbomb_d.bctex", ), ), - "powerup_powerbomb": ModelData( bcmdl_path="actors/items/powerup_powerbomb/models/powerup_powerbomb.bcmdl", dependencies=( "actors/items/powerup_powerbomb/charclasses/powerup_powerbomb.bmsad", "actors/items/powerup_powerbomb/models/powerup_powerbomb.bcmdl", - "actors/items/itemsphere/models/itemsphere.bcmdl", "actors/items/powerup_powerbomb/models/textures/powerbomb_d.bctex", - "actors/items/powerup_powerbomb/scripts/powerup_powerbomb.lc", - "actors/items/itemsphere/animations/relax.bcskla" ), ), } diff --git a/open_samus_returns_rando/patcher_editor.py b/open_samus_returns_rando/patcher_editor.py index 0a6b235..f51d284 100644 --- a/open_samus_returns_rando/patcher_editor.py +++ b/open_samus_returns_rando/patcher_editor.py @@ -8,6 +8,7 @@ from mercury_engine_data_structures.game_check import Game from open_samus_returns_rando.bmsld_add import remove_actor_from_all_groups +from open_samus_returns_rando.constants import ALL_AREAS T = typing.TypeVar("T") @@ -31,6 +32,12 @@ def get_file(self, path: str, type_hint: type[T] = BaseResource) -> T: def get_level_pkgs(self, name: str) -> set[str]: return set(self.find_pkgs(path_for_level(name) + ".bmsld")) + def get_all_level_pkgs(self) -> list[str]: + def get_nested_list(): + for area in ALL_AREAS: + yield self.get_level_pkgs(area) + return [pkg for all_level_pkgs in get_nested_list() for pkg in all_level_pkgs] + def ensure_present_in_scenario(self, scenario: str, asset): for pkg in self.get_level_pkgs(scenario): self.ensure_present(pkg, asset) diff --git a/open_samus_returns_rando/pickup.py b/open_samus_returns_rando/pickup.py index ae7f1e8..a6b991b 100644 --- a/open_samus_returns_rando/pickup.py +++ b/open_samus_returns_rando/pickup.py @@ -43,12 +43,18 @@ def patch_single_item_pickup(self, bmsad: dict) -> dict: quantity: float = self.pickup["resources"][0][0]["quantity"] set_custom_params: dict = pickable["functions"][0]["params"] + action_sets: dict = bmsad["action_sets"][0]["animations"][0] + + fx_create_and_link: dict = bmsad["components"]["FX"]["functions"][0]["params"] + if item_id == "ITEM_ENERGY_TANKS": item_id = "fMaxLife" quantity *= self.configuration["energy_per_tank"] set_custom_params["Param4"]["value"] = "Full" set_custom_params["Param5"]["value"] = "fCurrentLife" set_custom_params["Param6"]["value"] = "LIFE" + action_sets["animation_id"] = 150 + action_sets["action"]["bcskla"] = "actors/items/itemtank/animations/relax.bcskla" elif item_id == "ITEM_AEION_TANKS": item_id = "fMaxEnergy" @@ -56,6 +62,32 @@ def patch_single_item_pickup(self, bmsad: dict) -> dict: set_custom_params["Param4"]["value"] = "Full" set_custom_params["Param5"]["value"] = "fEnergy" set_custom_params["Param6"]["value"] = "SPECIALENERGY" + action_sets["animation_id"] = 150 + action_sets["action"]["bcskla"] = "actors/items/itemtank/animations/relax.bcskla" + + elif item_id in {"ITEM_WEAPON_MISSILE_MAX", "ITEM_RANDO_LOCKED_SUPERS", "ITEM_RANDO_LOCKED_PBS"}: + action_sets["animation_id"] = 150 + action_sets["action"]["bcskla"] = "actors/items/itemtank/animations/relax.bcskla" + + elif item_id.startswith("ITEM_SPECIAL_ENERGY"): + fx_create_and_link["Param13"]["value"] = True + if item_id == "ITEM_SPECIAL_ENERGY_SCANNING_PULSE": + fx_create_and_link["Param1"]["value"] = "orb" + fx_create_and_link["Param2"]["value"] = "actors/items/powerup_scanningpulse/fx/orb.bcptl" + if item_id == "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD": + fx_create_and_link["Param1"]["value"] = "orb" + fx_create_and_link["Param2"]["value"] = "actors/items/powerup_energyshield/fx/orb.bcptl" + if item_id == "ITEM_SPECIAL_ENERGY_ENERGY_WAVE": + fx_create_and_link["Param1"]["value"] = "yelloworb" + fx_create_and_link["Param2"]["value"] = "actors/items/powerup_energywave/fx/yelloworb.bcptl" + elif item_id == "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT": + fx_create_and_link["Param1"]["value"] = "purpleorb" + fx_create_and_link["Param2"]["value"] = "actors/items/powerup_phasedisplacement/fx/purpleorb.bcptl" + + elif item_id == "ITEM_ADN": + fx_create_and_link["Param1"]["value"] = "leak" + fx_create_and_link["Param2"]["value"] = "actors/items/adn/fx/adnleak.bcptl" + fx_create_and_link["Param13"]["value"] = True set_custom_params["Param1"]["value"] = item_id set_custom_params["Param2"]["value"] = quantity @@ -86,12 +118,19 @@ def patch_multi_item_pickup(self, bmsad: dict) -> dict: return bmsad - def patch_model(self, editor: PatcherEditor, model_names: list[str], new_template: dict): + def patch_model(self, model_names: list[str], new_template: dict) -> None: if len(model_names) == 1: model_data = get_data(model_names[0]) - new_template["model_name"] = model_data.bcmdl_path + new_template["header"]["model_name"] = model_data.bcmdl_path MODELUPDATER = new_template["components"]["MODELUPDATER"] MODELUPDATER["functions"][0]["params"]["Param1"]["value"] = model_data.bcmdl_path + + if model_names[0] in {"item_missiletank", "item_supermissiletank", + "item_powerbombtank", "item_senergytank"}: + energytank_bcmdl = "actors/items/item_energytank/models/item_energytank.bcmdl" + MODELUPDATER["functions"][0]["params"]["Param2"]["value"] = energytank_bcmdl + elif model_names[0] == "item_energytank": + MODELUPDATER["functions"][0]["params"].pop("Param2") else: MODELUPDATER = new_template["components"]["MODELUPDATER"] MODELUPDATER["type"] = "CMultiModelUpdaterComponent" @@ -133,7 +172,7 @@ def patch(self, editor: PatcherEditor): # Update model model_names: list[str] = self.pickup["model"] - self.patch_model(editor, model_names, new_template) + self.patch_model(model_names, new_template) # TODO Update minimap @@ -155,8 +194,6 @@ def patch(self, editor: PatcherEditor): # Dependencies for level_pkg in pkgs_for_level: - editor.ensure_present(level_pkg, "system/animtrees/base.bmsat") - editor.ensure_present(level_pkg, "actors/items/randomizer_powerup/scripts/randomizer_powerup.lc") for model_name in model_names: model_data = get_data(model_name) for dep in model_data.dependencies: @@ -169,10 +206,30 @@ def patch(self, editor: PatcherEditor): # json.dumps(new_template, indent=4) # ) +def ensure_base_models(editor: PatcherEditor) -> None: + for level_pkg in editor.get_all_level_pkgs(): + # ensure base stuff + editor.ensure_present(level_pkg, "system/animtrees/base.bmsat") + editor.ensure_present(level_pkg, "sounds/generic/obtencion.bcwav") + editor.ensure_present(level_pkg, "actors/items/randomizer_powerup/scripts/randomizer_powerup.lc") + + # ensure itemsphere stuff (base for many majors) + editor.ensure_present(level_pkg, "actors/items/itemsphere/animations/relax.bcskla") + model_data = get_data("itemsphere") + for dep in model_data.dependencies: + editor.ensure_present(level_pkg, dep) + + # ensure energytank stuff (base for all tanks) + editor.ensure_present(level_pkg, "actors/items/itemtank/animations/relax.bcskla") + model_data = get_data("item_energytank") + for dep in model_data.dependencies: + editor.ensure_present(level_pkg, dep) + def patch_pickups(editor: PatcherEditor, lua_scripts: LuaEditor, pickups_config: list[dict], configuration: dict): editor.add_new_asset("actors/items/randomizer_powerup/scripts/randomizer_powerup.lc", b'', []) + ensure_base_models(editor) for i, pickup in enumerate(pickups_config): LOG.debug("Writing pickup %d: %s", i, pickup["caption"]) diff --git a/tests/test_files/models_1.json b/tests/test_files/models_1.json new file mode 100644 index 0000000..8286227 --- /dev/null +++ b/tests/test_files/models_1.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s010_area1", + "actor": "ST_SaveStation" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s010_area1", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s000_surface" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s010_area1" + }, + "location": { + "x": -1000.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s010_area1" + }, + "location": { + "x": -900.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s010_area1" + }, + "location": { + "x": -800.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s010_area1" + }, + "location": { + "x": -700.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s010_area1" + }, + "location": { + "x": -600.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s010_area1" + }, + "location": { + "x": -500.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s010_area1" + }, + "location": { + "x": -400.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s010_area1" + }, + "location": { + "x": -300.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s010_area1" + }, + "location": { + "x": -200.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s010_area1" + }, + "location": { + "x": -100.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s010_area1" + }, + "location": { + "x": 0.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s010_area1" + }, + "location": { + "x": 100.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s010_area1" + }, + "location": { + "x": 200.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s010_area1" + }, + "location": { + "x": 300.0, + "y": 8300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s010_area1" + }, + "location": { + "x": -1000.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s010_area1" + }, + "location": { + "x": -900.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s010_area1" + }, + "location": { + "x": -800.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s010_area1" + }, + "location": { + "x": -700.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s010_area1" + }, + "location": { + "x": -600.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s010_area1" + }, + "location": { + "x": -500.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s010_area1" + }, + "location": { + "x": -400.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s010_area1" + }, + "location": { + "x": -300.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s010_area1" + }, + "location": { + "x": -200.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s010_area1" + }, + "location": { + "x": -100.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s010_area1" + }, + "location": { + "x": 0.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s010_area1" + }, + "location": { + "x": 100.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s010_area1" + }, + "location": { + "x": 200.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s010_area1" + }, + "location": { + "x": 300.0, + "y": 8100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s010_area1" + }, + "location": { + "x": -1000.0, + "y": 8000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_018" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_2.json b/tests/test_files/models_2.json new file mode 100644 index 0000000..bbe8510 --- /dev/null +++ b/tests/test_files/models_2.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s020_area2", + "actor": "ST_SaveStation001" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s020_area2", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s020_area2" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s020_area2" + }, + "location": { + "x": -7500.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s020_area2" + }, + "location": { + "x": -7400.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s020_area2" + }, + "location": { + "x": -7300.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s020_area2" + }, + "location": { + "x": -7200.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s020_area2" + }, + "location": { + "x": -7100.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s020_area2" + }, + "location": { + "x": -7000.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s020_area2" + }, + "location": { + "x": -6900.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s020_area2" + }, + "location": { + "x": -6800.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s020_area2" + }, + "location": { + "x": -6700.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s020_area2" + }, + "location": { + "x": -6600.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s020_area2" + }, + "location": { + "x": -6500.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s020_area2" + }, + "location": { + "x": -6400.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s020_area2" + }, + "location": { + "x": -6300.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s020_area2" + }, + "location": { + "x": -6200.0, + "y": 3300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s020_area2" + }, + "location": { + "x": -7500.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s020_area2" + }, + "location": { + "x": -7400.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s020_area2" + }, + "location": { + "x": -7300.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s020_area2" + }, + "location": { + "x": -7200.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s020_area2" + }, + "location": { + "x": -7100.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s020_area2" + }, + "location": { + "x": -7000.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s020_area2" + }, + "location": { + "x": -6900.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s020_area2" + }, + "location": { + "x": -6800.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s020_area2" + }, + "location": { + "x": -6700.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s020_area2" + }, + "location": { + "x": -6600.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s020_area2" + }, + "location": { + "x": -6500.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s020_area2" + }, + "location": { + "x": -6400.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s020_area2" + }, + "location": { + "x": -6300.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s020_area2" + }, + "location": { + "x": -6200.0, + "y": 3100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s020_area2" + }, + "location": { + "x": -7500.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_005" + } + ] + } \ No newline at end of file diff --git a/tests/test_files/models_2b.json b/tests/test_files/models_2b.json new file mode 100644 index 0000000..d5b72ba --- /dev/null +++ b/tests/test_files/models_2b.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s025_area2b", + "actor": "ST_FromArea02A" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s025_area2b", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s025_area2b" + }, + "location": { + "x": 8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s025_area2b" + }, + "location": { + "x": -10000.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s025_area2b" + }, + "location": { + "x": -9900.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s025_area2b" + }, + "location": { + "x": -9800.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s025_area2b" + }, + "location": { + "x": -9700.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s025_area2b" + }, + "location": { + "x": -9600.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s025_area2b" + }, + "location": { + "x": -9500.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s025_area2b" + }, + "location": { + "x": -9400.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s025_area2b" + }, + "location": { + "x": -9300.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s025_area2b" + }, + "location": { + "x": -9200.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s025_area2b" + }, + "location": { + "x": -9100.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s025_area2b" + }, + "location": { + "x": -9000.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s025_area2b" + }, + "location": { + "x": -8900.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s025_area2b" + }, + "location": { + "x": -8800.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s025_area2b" + }, + "location": { + "x": -8700.0, + "y": -400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s025_area2b" + }, + "location": { + "x": -10000.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s025_area2b" + }, + "location": { + "x": -9900.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s025_area2b" + }, + "location": { + "x": -9800.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s025_area2b" + }, + "location": { + "x": -9700.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s025_area2b" + }, + "location": { + "x": -9600.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s025_area2b" + }, + "location": { + "x": -9500.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s025_area2b" + }, + "location": { + "x": -9400.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s025_area2b" + }, + "location": { + "x": -9300.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s025_area2b" + }, + "location": { + "x": -9200.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s025_area2b" + }, + "location": { + "x": -9100.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s025_area2b" + }, + "location": { + "x": -9000.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s025_area2b" + }, + "location": { + "x": -8900.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s025_area2b" + }, + "location": { + "x": -8800.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s025_area2b" + }, + "location": { + "x": -8700.0, + "y": -600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s025_area2b" + }, + "location": { + "x": -10000.0, + "y": -700.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera009" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_2c.json b/tests/test_files/models_2c.json new file mode 100644 index 0000000..793d1cd --- /dev/null +++ b/tests/test_files/models_2c.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s028_area2c", + "actor": "LE_Teleporter_02_01" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s028_area2c", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s028_area2c" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s028_area2c" + }, + "location": { + "x": 15400.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s028_area2c" + }, + "location": { + "x": 15500.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s028_area2c" + }, + "location": { + "x": 15600.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s028_area2c" + }, + "location": { + "x": 15700.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s028_area2c" + }, + "location": { + "x": 15800.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s028_area2c" + }, + "location": { + "x": 15900.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s028_area2c" + }, + "location": { + "x": 16000.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s028_area2c" + }, + "location": { + "x": 16100.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s028_area2c" + }, + "location": { + "x": 16200.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s028_area2c" + }, + "location": { + "x": 16300.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s028_area2c" + }, + "location": { + "x": 16400.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s028_area2c" + }, + "location": { + "x": 16500.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s028_area2c" + }, + "location": { + "x": 16600.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s028_area2c" + }, + "location": { + "x": 16700.0, + "y": -4900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s028_area2c" + }, + "location": { + "x": 15400.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s028_area2c" + }, + "location": { + "x": 15500.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s028_area2c" + }, + "location": { + "x": 15600.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s028_area2c" + }, + "location": { + "x": 15700.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s028_area2c" + }, + "location": { + "x": 15800.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s028_area2c" + }, + "location": { + "x": 15900.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s028_area2c" + }, + "location": { + "x": 16000.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s028_area2c" + }, + "location": { + "x": 16100.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s028_area2c" + }, + "location": { + "x": 16200.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s028_area2c" + }, + "location": { + "x": 16300.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s028_area2c" + }, + "location": { + "x": 16400.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s028_area2c" + }, + "location": { + "x": 16500.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s028_area2c" + }, + "location": { + "x": 16600.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s028_area2c" + }, + "location": { + "x": 16700.0, + "y": -5100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s028_area2c" + }, + "location": { + "x": 15400.0, + "y": -5200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + } + ] + } \ No newline at end of file diff --git a/tests/test_files/models_3.json b/tests/test_files/models_3.json new file mode 100644 index 0000000..06fce68 --- /dev/null +++ b/tests/test_files/models_3.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s030_area3", + "actor": "ST_FromArea02" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s030_area3", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s030_area3" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s030_area3" + }, + "location": { + "x": -23000.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s030_area3" + }, + "location": { + "x": -22900.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s030_area3" + }, + "location": { + "x": -22800.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s030_area3" + }, + "location": { + "x": -22700.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s030_area3" + }, + "location": { + "x": -22600.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s030_area3" + }, + "location": { + "x": -22500.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s030_area3" + }, + "location": { + "x": -22400.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s030_area3" + }, + "location": { + "x": -22300.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s030_area3" + }, + "location": { + "x": -22200.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s030_area3" + }, + "location": { + "x": -22100.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s030_area3" + }, + "location": { + "x": -22000.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s030_area3" + }, + "location": { + "x": -21900.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s030_area3" + }, + "location": { + "x": -21800.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s030_area3" + }, + "location": { + "x": -21700.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s030_area3" + }, + "location": { + "x": -23000.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s030_area3" + }, + "location": { + "x": -22900.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s030_area3" + }, + "location": { + "x": -22800.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s030_area3" + }, + "location": { + "x": -22700.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s030_area3" + }, + "location": { + "x": -22600.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s030_area3" + }, + "location": { + "x": -22500.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s030_area3" + }, + "location": { + "x": -22400.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s030_area3" + }, + "location": { + "x": -22300.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s030_area3" + }, + "location": { + "x": -22200.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s030_area3" + }, + "location": { + "x": -22100.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s030_area3" + }, + "location": { + "x": -22000.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s030_area3" + }, + "location": { + "x": -21900.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s030_area3" + }, + "location": { + "x": -21800.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s030_area3" + }, + "location": { + "x": -21700.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s030_area3" + }, + "location": { + "x": -23000.0, + "y": 2900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_003" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_3b.json b/tests/test_files/models_3b.json new file mode 100644 index 0000000..1230764 --- /dev/null +++ b/tests/test_files/models_3b.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s033_area3b", + "actor": "ST_Gamma_004A_Checkpoint" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s033_area3b", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s000_surface" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s033_area3b" + }, + "location": { + "x": -4600.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s033_area3b" + }, + "location": { + "x": -4500.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s033_area3b" + }, + "location": { + "x": -4400.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s033_area3b" + }, + "location": { + "x": -4300.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s033_area3b" + }, + "location": { + "x": -4200.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s033_area3b" + }, + "location": { + "x": -4100.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s033_area3b" + }, + "location": { + "x": -4000.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s033_area3b" + }, + "location": { + "x": -3900.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s033_area3b" + }, + "location": { + "x": -3800.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s033_area3b" + }, + "location": { + "x": -3700.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s033_area3b" + }, + "location": { + "x": -3600.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s033_area3b" + }, + "location": { + "x": -3500.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s033_area3b" + }, + "location": { + "x": -3400.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s033_area3b" + }, + "location": { + "x": -3300.0, + "y": -16400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s033_area3b" + }, + "location": { + "x": -4600.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s033_area3b" + }, + "location": { + "x": -4500.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s033_area3b" + }, + "location": { + "x": -4400.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s033_area3b" + }, + "location": { + "x": -4300.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s033_area3b" + }, + "location": { + "x": -4200.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s033_area3b" + }, + "location": { + "x": -4100.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s033_area3b" + }, + "location": { + "x": -4000.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s033_area3b" + }, + "location": { + "x": -3900.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s033_area3b" + }, + "location": { + "x": -3800.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s033_area3b" + }, + "location": { + "x": -3700.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s033_area3b" + }, + "location": { + "x": -3600.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s033_area3b" + }, + "location": { + "x": -3500.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s033_area3b" + }, + "location": { + "x": -3400.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s033_area3b" + }, + "location": { + "x": -3300.0, + "y": -16600.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s033_area3b" + }, + "location": { + "x": -4600.0, + "y": -16700.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_033" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_3c.json b/tests/test_files/models_3c.json new file mode 100644 index 0000000..4ebed57 --- /dev/null +++ b/tests/test_files/models_3c.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s036_area3c", + "actor": "ST_Gamma_007B_Checkpoint" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s036_area3c", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s036_area3c" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s036_area3c" + }, + "location": { + "x": 3400.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s036_area3c" + }, + "location": { + "x": 3500.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s036_area3c" + }, + "location": { + "x": 3600.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s036_area3c" + }, + "location": { + "x": 3700.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s036_area3c" + }, + "location": { + "x": 3800.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s036_area3c" + }, + "location": { + "x": 3900.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s036_area3c" + }, + "location": { + "x": 4000.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s036_area3c" + }, + "location": { + "x": 4100.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s036_area3c" + }, + "location": { + "x": 4200.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s036_area3c" + }, + "location": { + "x": 4300.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s036_area3c" + }, + "location": { + "x": 4400.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s036_area3c" + }, + "location": { + "x": 4500.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s036_area3c" + }, + "location": { + "x": 4600.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s036_area3c" + }, + "location": { + "x": 4700.0, + "y": 3200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s036_area3c" + }, + "location": { + "x": 3400.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s036_area3c" + }, + "location": { + "x": 3500.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s036_area3c" + }, + "location": { + "x": 3600.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s036_area3c" + }, + "location": { + "x": 3700.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s036_area3c" + }, + "location": { + "x": 3800.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s036_area3c" + }, + "location": { + "x": 3900.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s036_area3c" + }, + "location": { + "x": 4000.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s036_area3c" + }, + "location": { + "x": 4100.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s036_area3c" + }, + "location": { + "x": 4200.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s036_area3c" + }, + "location": { + "x": 4300.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s036_area3c" + }, + "location": { + "x": 4400.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s036_area3c" + }, + "location": { + "x": 4500.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s036_area3c" + }, + "location": { + "x": 4600.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s036_area3c" + }, + "location": { + "x": 4700.0, + "y": 3000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s036_area3c" + }, + "location": { + "x": 3400.0, + "y": 2900.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_013" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_4.json b/tests/test_files/models_4.json new file mode 100644 index 0000000..ce6ee1e --- /dev/null +++ b/tests/test_files/models_4.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s040_area4", + "actor": "ST_FromArea03" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s040_area4", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s000_surface" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s040_area4" + }, + "location": { + "x": 12300.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s040_area4" + }, + "location": { + "x": 12400.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s040_area4" + }, + "location": { + "x": 12500.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s040_area4" + }, + "location": { + "x": 12600.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s040_area4" + }, + "location": { + "x": 12700.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s040_area4" + }, + "location": { + "x": 12800.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s040_area4" + }, + "location": { + "x": 12900.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s040_area4" + }, + "location": { + "x": 13000.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s040_area4" + }, + "location": { + "x": 13100.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s040_area4" + }, + "location": { + "x": 13200.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s040_area4" + }, + "location": { + "x": 13300.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s040_area4" + }, + "location": { + "x": 13400.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s040_area4" + }, + "location": { + "x": 13500.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s040_area4" + }, + "location": { + "x": 13600.0, + "y": -2000.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s040_area4" + }, + "location": { + "x": 12300.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s040_area4" + }, + "location": { + "x": 12400.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s040_area4" + }, + "location": { + "x": 12500.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s040_area4" + }, + "location": { + "x": 12600.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s040_area4" + }, + "location": { + "x": 12700.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s040_area4" + }, + "location": { + "x": 12800.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s040_area4" + }, + "location": { + "x": 12900.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s040_area4" + }, + "location": { + "x": 13000.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s040_area4" + }, + "location": { + "x": 13100.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s040_area4" + }, + "location": { + "x": 13200.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s040_area4" + }, + "location": { + "x": 13300.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s040_area4" + }, + "location": { + "x": 13400.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s040_area4" + }, + "location": { + "x": 13500.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s040_area4" + }, + "location": { + "x": 13600.0, + "y": -2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s040_area4" + }, + "location": { + "x": 12300.0, + "y": -2300.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_006" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_5.json b/tests/test_files/models_5.json new file mode 100644 index 0000000..ce8e66b --- /dev/null +++ b/tests/test_files/models_5.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s050_area5", + "actor": "ST_CheckPoint_004" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s050_area5", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s000_surface" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s050_area5" + }, + "location": { + "x": 12300.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s050_area5" + }, + "location": { + "x": 12400.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s050_area5" + }, + "location": { + "x": 12500.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s050_area5" + }, + "location": { + "x": 12600.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s050_area5" + }, + "location": { + "x": 12700.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s050_area5" + }, + "location": { + "x": 12800.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s050_area5" + }, + "location": { + "x": 12900.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s050_area5" + }, + "location": { + "x": 13000.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s050_area5" + }, + "location": { + "x": 13100.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s050_area5" + }, + "location": { + "x": 13200.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s050_area5" + }, + "location": { + "x": 13300.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s050_area5" + }, + "location": { + "x": 13400.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s050_area5" + }, + "location": { + "x": 13500.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s050_area5" + }, + "location": { + "x": 13600.0, + "y": -8200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s050_area5" + }, + "location": { + "x": 12300.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s050_area5" + }, + "location": { + "x": 12400.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s050_area5" + }, + "location": { + "x": 12500.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s050_area5" + }, + "location": { + "x": 12600.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s050_area5" + }, + "location": { + "x": 12700.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s050_area5" + }, + "location": { + "x": 12800.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s050_area5" + }, + "location": { + "x": 12900.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s050_area5" + }, + "location": { + "x": 13000.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s050_area5" + }, + "location": { + "x": 13100.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s050_area5" + }, + "location": { + "x": 13200.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s050_area5" + }, + "location": { + "x": 13300.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s050_area5" + }, + "location": { + "x": 13400.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s050_area5" + }, + "location": { + "x": 13500.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s050_area5" + }, + "location": { + "x": 13600.0, + "y": -8400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s050_area5" + }, + "location": { + "x": 12300.0, + "y": -8500.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_AfterChase" + } + ] +} \ No newline at end of file diff --git a/tests/test_files/models_surface.json b/tests/test_files/models_surface.json new file mode 100644 index 0000000..616c802 --- /dev/null +++ b/tests/test_files/models_surface.json @@ -0,0 +1,938 @@ +{ + "$schema": "../../open_samus_returns_rando/files/schema.json", + "starting_location": { + "scenario": "s000_surface", + "actor": "StartPoint0" + }, + "starting_items": { + "ITEM_MAX_LIFE": 599, + "ITEM_WEAPON_MISSILE_MAX": 50, + "ITEM_WEAPON_SUPER_MISSILE_MAX": 0, + "ITEM_WEAPON_POWER_BOMB_MAX": 0, + "ITEM_METROID_COUNT": 0, + "ITEM_METROID_TOTAL_COUNT": 40 + }, + "pickups": [ + { + "pickup_type": "actor", + "caption": "Morph Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_MORPH_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup1" + }, + "model": [ + "powerup_morphball" + ] + }, + { + "pickup_type": "actor", + "caption": "Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_BOMB", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup2" + }, + "model": [ + "powerup_bomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Spider Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPIDER_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup3" + }, + "model": [ + "powerup_spiderball" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_POWER_BOMB_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup4" + }, + "model": [ + "powerup_powerbomb" + ] + }, + { + "pickup_type": "actor", + "caption": "Charge Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_CHARGE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup5" + }, + "model": [ + "powerup_chargebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Ice Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_ICE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup6" + }, + "model": [ + "powerup_icebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Wave Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_WAVE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup7" + }, + "model": [ + "powerup_wavebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Spazer Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SPAZER_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup8" + }, + "model": [ + "powerup_spazerbeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Plasma Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_PLASMA_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup9" + }, + "model": [ + "powerup_plasmabeam" + ] + }, + { + "pickup_type": "actor", + "caption": "Grapple Beam acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_GRAPPLE_BEAM", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup10" + }, + "model": [ + "powerup_grapplebeam" + ] + }, + { + "pickup_type": "actor", + "caption": "High Jump Boots acquired.", + "resources": [ + [ + { + "item_id": "ITEM_HIGH_JUMP_BOOTS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup11" + }, + "model": [ + "powerup_highjumpboots" + ] + }, + { + "pickup_type": "actor", + "caption": "Space Jump acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPACE_JUMP", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup12" + }, + "model": [ + "powerup_spacejump" + ] + }, + { + "pickup_type": "actor", + "caption": "Varia Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_VARIA_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup13" + }, + "model": [ + "powerup_variasuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Gravity Suit acquired.", + "resources": [ + [ + { + "item_id": "ITEM_GRAVITY_SUIT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup14" + }, + "model": [ + "powerup_gravitysuit" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile acquired.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_SUPER_MISSILE_MAX", + "quantity": 5 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup15" + }, + "model": [ + "powerup_supermissile" + ] + }, + { + "pickup_type": "actor", + "caption": "Screw Attack acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SCREW_ATTACK", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup16" + }, + "model": [ + "powerup_screwattack" + ] + }, + { + "pickup_type": "actor", + "caption": "Spring Ball acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPRING_BALL", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup17" + }, + "model": [ + "powerup_springball" + ] + }, + { + "pickup_type": "actor", + "caption": "Scan Pulse acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_SCANNING_PULSE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup18" + }, + "model": [ + "powerup_scanningpulse" + ] + }, + { + "pickup_type": "actor", + "caption": "Lightning Armor acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_SHIELD", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup19" + }, + "model": [ + "powerup_energyshield" + ] + }, + { + "pickup_type": "actor", + "caption": "Beam Burst acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_ENERGY_WAVE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup20" + }, + "model": [ + "powerup_energywave" + ] + }, + { + "pickup_type": "actor", + "caption": "Phase Drift acquired.", + "resources": [ + [ + { + "item_id": "ITEM_SPECIAL_ENERGY_PHASE_DISPLACEMENT", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup21" + }, + "model": [ + "powerup_phasedisplacement" + ] + }, + { + "pickup_type": "actor", + "caption": "Energy Tank acquired. Energy capacity increased by 100.", + "resources": [ + [ + { + "item_id": "ITEM_ENERGY_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup22" + }, + "model": [ + "item_energytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Missile Tank acquired. Missile capacity increased by 3.", + "resources": [ + [ + { + "item_id": "ITEM_WEAPON_MISSILE_MAX", + "quantity": 3 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup23" + }, + "model": [ + "item_missiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Super Missile Tank acquired. Super Missile capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_SUPERS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup24" + }, + "model": [ + "item_supermissiletank" + ] + }, + { + "pickup_type": "actor", + "caption": "Power Bomb Tank acquired. Power Bomb capacity increased by 1.", + "resources": [ + [ + { + "item_id": "ITEM_RANDO_LOCKED_PBS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup25" + }, + "model": [ + "item_powerbombtank" + ] + }, + { + "pickup_type": "actor", + "caption": "Aeion Tank acquired. Aeion capacity increased.", + "resources": [ + [ + { + "item_id": "ITEM_AEION_TANKS", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup26" + }, + "model": [ + "item_senergytank" + ] + }, + { + "pickup_type": "actor", + "caption": "Nothing acquired.", + "resources": [ + [ + { + "item_id": "ITEM_NONE", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup27" + }, + "model": [ + "itemsphere" + ] + }, + { + "pickup_type": "actor", + "caption": "Metroid DNA acquired.", + "resources": [ + [ + { + "item_id": "ITEM_ADN", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup28" + }, + "model": [ + "adn" + ] + }, + { + "pickup_type": "actor", + "caption": "Baby Metroid acquired.", + "resources": [ + [ + { + "item_id": "ITEM_BABY_HATCHLING", + "quantity": 1 + } + ] + ], + "pickup_actor": { + "scenario": "s000_surface", + "actor": "another_pickup29" + }, + "model": [ + "babyhatchling" + ] + } + ], + "energy_per_tank": 100, + "aeion_per_tank": 50, + "reveal_map_on_start": true, + "game_patches": { + "nerf_power_bombs": false + }, + "new_spawn_points": [ + { + "new_actor": { + "actor": "SP_RDV_000", + "scenario": "s000_surface" + }, + "location": { + "x": -8000.0, + "y": 2016.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + } + ], + "custom_pickups": [ + { + "new_actor": { + "actor": "another_pickup1", + "scenario": "s000_surface" + }, + "location": { + "x": -7500.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup2", + "scenario": "s000_surface" + }, + "location": { + "x": -7400.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup3", + "scenario": "s000_surface" + }, + "location": { + "x": -7300.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup4", + "scenario": "s000_surface" + }, + "location": { + "x": -7200.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup5", + "scenario": "s000_surface" + }, + "location": { + "x": -7100.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup6", + "scenario": "s000_surface" + }, + "location": { + "x": -7000.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup7", + "scenario": "s000_surface" + }, + "location": { + "x": -6900.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup8", + "scenario": "s000_surface" + }, + "location": { + "x": -6800.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup9", + "scenario": "s000_surface" + }, + "location": { + "x": -6700.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup10", + "scenario": "s000_surface" + }, + "location": { + "x": -6600.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup11", + "scenario": "s000_surface" + }, + "location": { + "x": -6500.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup12", + "scenario": "s000_surface" + }, + "location": { + "x": -6400.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup13", + "scenario": "s000_surface" + }, + "location": { + "x": -6300.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup14", + "scenario": "s000_surface" + }, + "location": { + "x": -6200.0, + "y": 2400.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup15", + "scenario": "s000_surface" + }, + "location": { + "x": -7500.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup16", + "scenario": "s000_surface" + }, + "location": { + "x": -7400.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup17", + "scenario": "s000_surface" + }, + "location": { + "x": -7300.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup18", + "scenario": "s000_surface" + }, + "location": { + "x": -7200.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup19", + "scenario": "s000_surface" + }, + "location": { + "x": -7100.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup20", + "scenario": "s000_surface" + }, + "location": { + "x": -7000.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup21", + "scenario": "s000_surface" + }, + "location": { + "x": -6900.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup22", + "scenario": "s000_surface" + }, + "location": { + "x": -6800.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup23", + "scenario": "s000_surface" + }, + "location": { + "x": -6700.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup24", + "scenario": "s000_surface" + }, + "location": { + "x": -6600.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup25", + "scenario": "s000_surface" + }, + "location": { + "x": -6500.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup26", + "scenario": "s000_surface" + }, + "location": { + "x": -6400.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup27", + "scenario": "s000_surface" + }, + "location": { + "x": -6300.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup28", + "scenario": "s000_surface" + }, + "location": { + "x": -6200.0, + "y": 2200.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + }, + { + "new_actor": { + "actor": "another_pickup29", + "scenario": "s000_surface" + }, + "location": { + "x": -7500.0, + "y": 2100.0, + "z": 0.0 + }, + "collision_camera_name": "collision_camera_000" + } + ] + } \ No newline at end of file