parent
539ee1c5da
commit
b4b79bcd78
|
@ -10,7 +10,7 @@ class LocationDict(TypedDict):
|
||||||
|
|
||||||
class EventDict(TypedDict):
|
class EventDict(TypedDict):
|
||||||
name: str
|
name: str
|
||||||
stage: Stages
|
stage: str
|
||||||
item: str
|
item: str
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -159,4 +159,4 @@ class BombRushCyberfunkOptions(PerGameCommonOptions):
|
||||||
dont_save_photos: DontSavePhotos
|
dont_save_photos: DontSavePhotos
|
||||||
score_difficulty: ScoreDifficulty
|
score_difficulty: ScoreDifficulty
|
||||||
damage_multiplier: DamageMultiplier
|
damage_multiplier: DamageMultiplier
|
||||||
death_link: BRCDeathLink
|
death_link: BRCDeathLink
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from typing import Dict, List
|
from typing import Dict
|
||||||
|
|
||||||
|
|
||||||
class Stages:
|
class Stages:
|
||||||
Misc = "Misc"
|
Misc = "Misc"
|
||||||
|
@ -99,4 +100,4 @@ region_exits: Dict[str, str] = {
|
||||||
Stages.MA4: [Stages.MA3,
|
Stages.MA4: [Stages.MA3,
|
||||||
Stages.MA5],
|
Stages.MA5],
|
||||||
Stages.MA5: [Stages.MA1]
|
Stages.MA5: [Stages.MA1]
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,7 +158,7 @@ def brink_terminal_plaza(state: CollectionState, player: int) -> bool:
|
||||||
|
|
||||||
|
|
||||||
def brink_terminal_tower(state: CollectionState, player: int) -> bool:
|
def brink_terminal_tower(state: CollectionState, player: int) -> bool:
|
||||||
return rep(state, player, 280)
|
return rep(state, player, 280)
|
||||||
|
|
||||||
|
|
||||||
def brink_terminal_oldhead_underground(state: CollectionState, player: int) -> bool:
|
def brink_terminal_oldhead_underground(state: CollectionState, player: int) -> bool:
|
||||||
|
@ -246,8 +246,8 @@ def millennium_mall_challenge4(state: CollectionState, player: int) -> bool:
|
||||||
return rep(state, player, 458)
|
return rep(state, player, 458)
|
||||||
|
|
||||||
|
|
||||||
def millennium_mall_all_challenges(state: CollectionState, player: int, limit: bool, glitched: bool) -> bool:
|
def millennium_mall_all_challenges(state: CollectionState, player: int) -> bool:
|
||||||
return millennium_mall_challenge4(state, player, limit, glitched)
|
return millennium_mall_challenge4(state, player)
|
||||||
|
|
||||||
|
|
||||||
def millennium_mall_theater(state: CollectionState, player: int, limit: bool) -> bool:
|
def millennium_mall_theater(state: CollectionState, player: int, limit: bool) -> bool:
|
||||||
|
@ -769,7 +769,7 @@ def build_access_cache(state: CollectionState, player: int, movestyle: int, limi
|
||||||
func = globals()[fname]
|
func = globals()[fname]
|
||||||
access: bool = func(*fvars)
|
access: bool = func(*fvars)
|
||||||
access_cache[fname] = access
|
access_cache[fname] = access
|
||||||
if not access and not "oldhead" in fname:
|
if not access and "oldhead" not in fname:
|
||||||
stop = True
|
stop = True
|
||||||
|
|
||||||
return access_cache
|
return access_cache
|
||||||
|
@ -877,7 +877,6 @@ def rules(brcworld):
|
||||||
for e in multiworld.get_region(Stages.MA5, player).entrances:
|
for e in multiworld.get_region(Stages.MA5, player).entrances:
|
||||||
set_rule(e, lambda state: mataan_deepest(state, player, limit, glitched))
|
set_rule(e, lambda state: mataan_deepest(state, player, limit, glitched))
|
||||||
|
|
||||||
|
|
||||||
# locations
|
# locations
|
||||||
# hideout
|
# hideout
|
||||||
set_rule(multiworld.get_location("Hideout: BMX garage skateboard", player),
|
set_rule(multiworld.get_location("Hideout: BMX garage skateboard", player),
|
||||||
|
@ -1029,15 +1028,12 @@ def rules(brcworld):
|
||||||
add_rule(multiworld.get_location("Defeat Faux", player),
|
add_rule(multiworld.get_location("Defeat Faux", player),
|
||||||
lambda state: rep(state, player, 1000))
|
lambda state: rep(state, player, 1000))
|
||||||
|
|
||||||
|
|
||||||
# graffiti spots
|
# graffiti spots
|
||||||
spots: int = 0
|
spots: int = 0
|
||||||
while spots < 385:
|
while spots < 385:
|
||||||
spots += 5
|
spots += 5
|
||||||
set_rule(multiworld.get_location(f"Tagged {spots} Graffiti Spots", player),
|
set_rule(multiworld.get_location(f"Tagged {spots} Graffiti Spots", player),
|
||||||
lambda state, spots=spots: graffiti_spots(state, player, movestyle, limit, glitched, spots))
|
lambda state, spot_count=spots: graffiti_spots(state, player, movestyle, limit, glitched, spot_count))
|
||||||
|
|
||||||
set_rule(multiworld.get_location("Tagged 389 Graffiti Spots", player),
|
set_rule(multiworld.get_location("Tagged 389 Graffiti Spots", player),
|
||||||
lambda state: graffiti_spots(state, player, movestyle, limit, glitched, 389))
|
lambda state: graffiti_spots(state, player, movestyle, limit, glitched, 389))
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@ class BombRushCyberfunkWorld(World):
|
||||||
options_dataclass = BombRushCyberfunkOptions
|
options_dataclass = BombRushCyberfunkOptions
|
||||||
options: BombRushCyberfunkOptions
|
options: BombRushCyberfunkOptions
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, multiworld: MultiWorld, player: int):
|
def __init__(self, multiworld: MultiWorld, player: int):
|
||||||
super(BombRushCyberfunkWorld, self).__init__(multiworld, player)
|
super(BombRushCyberfunkWorld, self).__init__(multiworld, player)
|
||||||
self.item_classification: Dict[BRCType, ItemClassification] = {
|
self.item_classification: Dict[BRCType, ItemClassification] = {
|
||||||
|
@ -49,14 +48,12 @@ class BombRushCyberfunkWorld(World):
|
||||||
BRCType.Camera: ItemClassification.progression
|
BRCType.Camera: ItemClassification.progression
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def collect(self, state: "CollectionState", item: "Item") -> bool:
|
def collect(self, state: "CollectionState", item: "Item") -> bool:
|
||||||
change = super().collect(state, item)
|
change = super().collect(state, item)
|
||||||
if change and "REP" in item.name:
|
if change and "REP" in item.name:
|
||||||
rep: int = int(item.name[0:len(item.name)-4])
|
rep: int = int(item.name[0:len(item.name)-4])
|
||||||
state.prog_items[item.player]["rep"] += rep
|
state.prog_items[item.player]["rep"] += rep
|
||||||
return change
|
return change
|
||||||
|
|
||||||
|
|
||||||
def remove(self, state: "CollectionState", item: "Item") -> bool:
|
def remove(self, state: "CollectionState", item: "Item") -> bool:
|
||||||
change = super().remove(state, item)
|
change = super().remove(state, item)
|
||||||
|
@ -65,11 +62,9 @@ class BombRushCyberfunkWorld(World):
|
||||||
state.prog_items[item.player]["rep"] -= rep
|
state.prog_items[item.player]["rep"] -= rep
|
||||||
return change
|
return change
|
||||||
|
|
||||||
|
|
||||||
def set_rules(self):
|
def set_rules(self):
|
||||||
rules(self)
|
rules(self)
|
||||||
|
|
||||||
|
|
||||||
def get_item_classification(self, item_type: BRCType) -> ItemClassification:
|
def get_item_classification(self, item_type: BRCType) -> ItemClassification:
|
||||||
classification = ItemClassification.filler
|
classification = ItemClassification.filler
|
||||||
if item_type in self.item_classification.keys():
|
if item_type in self.item_classification.keys():
|
||||||
|
@ -77,7 +72,6 @@ class BombRushCyberfunkWorld(World):
|
||||||
|
|
||||||
return classification
|
return classification
|
||||||
|
|
||||||
|
|
||||||
def create_item(self, name: str) -> "BombRushCyberfunkItem":
|
def create_item(self, name: str) -> "BombRushCyberfunkItem":
|
||||||
item_id: int = self.item_name_to_id[name]
|
item_id: int = self.item_name_to_id[name]
|
||||||
item_type: BRCType = self.item_name_to_type[name]
|
item_type: BRCType = self.item_name_to_type[name]
|
||||||
|
@ -85,10 +79,8 @@ class BombRushCyberfunkWorld(World):
|
||||||
|
|
||||||
return BombRushCyberfunkItem(name, classification, item_id, self.player)
|
return BombRushCyberfunkItem(name, classification, item_id, self.player)
|
||||||
|
|
||||||
|
|
||||||
def create_event(self, event: str) -> "BombRushCyberfunkItem":
|
def create_event(self, event: str) -> "BombRushCyberfunkItem":
|
||||||
return BombRushCyberfunkItem(event, ItemClassification.progression_skip_balancing, None, self.player)
|
return BombRushCyberfunkItem(event, ItemClassification.progression_skip_balancing, None, self.player)
|
||||||
|
|
||||||
|
|
||||||
def get_filler_item_name(self) -> str:
|
def get_filler_item_name(self) -> str:
|
||||||
item = self.random.choice(item_table)
|
item = self.random.choice(item_table)
|
||||||
|
@ -98,7 +90,6 @@ class BombRushCyberfunkWorld(World):
|
||||||
|
|
||||||
return item["name"]
|
return item["name"]
|
||||||
|
|
||||||
|
|
||||||
def generate_early(self):
|
def generate_early(self):
|
||||||
if self.options.starting_movestyle == StartStyle.option_skateboard:
|
if self.options.starting_movestyle == StartStyle.option_skateboard:
|
||||||
self.item_classification[BRCType.Skateboard] = ItemClassification.filler
|
self.item_classification[BRCType.Skateboard] = ItemClassification.filler
|
||||||
|
@ -115,7 +106,6 @@ class BombRushCyberfunkWorld(World):
|
||||||
else:
|
else:
|
||||||
self.item_classification[BRCType.BMX] = ItemClassification.progression
|
self.item_classification[BRCType.BMX] = ItemClassification.progression
|
||||||
|
|
||||||
|
|
||||||
def create_items(self):
|
def create_items(self):
|
||||||
rep_locations: int = 87
|
rep_locations: int = 87
|
||||||
if self.options.skip_polo_photos:
|
if self.options.skip_polo_photos:
|
||||||
|
@ -151,7 +141,6 @@ class BombRushCyberfunkWorld(World):
|
||||||
|
|
||||||
self.multiworld.itempool += pool
|
self.multiworld.itempool += pool
|
||||||
|
|
||||||
|
|
||||||
def create_regions(self):
|
def create_regions(self):
|
||||||
multiworld = self.multiworld
|
multiworld = self.multiworld
|
||||||
player = self.player
|
player = self.player
|
||||||
|
@ -211,4 +200,4 @@ class BombRushCyberfunkItem(Item):
|
||||||
|
|
||||||
|
|
||||||
class BombRushCyberfunkLocation(Location):
|
class BombRushCyberfunkLocation(Location):
|
||||||
game: str = "Bomb Rush Cyberfunk"
|
game: str = "Bomb Rush Cyberfunk"
|
||||||
|
|
|
@ -12,7 +12,7 @@ longer earned from doing graffiti, and is instead earned by finding it randomly
|
||||||
|
|
||||||
Items can be found by picking up any type of collectible, unlocking characters, taking pictures of Polo, and for every
|
Items can be found by picking up any type of collectible, unlocking characters, taking pictures of Polo, and for every
|
||||||
5 graffiti spots tagged. The types of items that can be found are Music, Graffiti (M), Graffiti (L), Graffiti (XL),
|
5 graffiti spots tagged. The types of items that can be found are Music, Graffiti (M), Graffiti (L), Graffiti (XL),
|
||||||
Skateboards, Inline Skates, BMX, Outifts, Characters, REP, and the Camera.
|
Skateboards, Inline Skates, BMX, Outfits, Characters, REP, and the Camera.
|
||||||
|
|
||||||
Several changes have been made to the game for a better experience as a randomizer:
|
Several changes have been made to the game for a better experience as a randomizer:
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
## Quick Links
|
## Quick Links
|
||||||
|
|
||||||
- Bomb Rush Cyberfunk: [Steam](https://store.steampowered.com/app/1353230/Bomb_Rush_Cyberfunk/)
|
- Bomb Rush Cyberfunk: [Steam](https://store.steampowered.com/app/1353230/Bomb_Rush_Cyberfunk/)
|
||||||
- Archipelago Mod: [Thunderstore](https://thunderstore.io/c/bomb-rush-cyberfunk/p/TRPG/Archipelago/),
|
- Archipelago Mod: [Thunderstore](https://thunderstore.io/c/bomb-rush-cyberfunk/p/TRPG/BRC_Archipelago/),
|
||||||
[GitHub](https://github.com/TRPG0/BRC-Archipelago/releases)
|
[GitHub](https://github.com/TRPG0/BRC-Archipelago/releases)
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
Loading…
Reference in New Issue