parent
							
								
									539ee1c5da
								
							
						
					
					
						commit
						b4b79bcd78
					
				| 
						 | 
				
			
			@ -10,7 +10,7 @@ class LocationDict(TypedDict):
 | 
			
		|||
 | 
			
		||||
class EventDict(TypedDict):
 | 
			
		||||
    name: str
 | 
			
		||||
    stage: Stages
 | 
			
		||||
    stage: str
 | 
			
		||||
    item: str
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -159,4 +159,4 @@ class BombRushCyberfunkOptions(PerGameCommonOptions):
 | 
			
		|||
    dont_save_photos: DontSavePhotos
 | 
			
		||||
    score_difficulty: ScoreDifficulty
 | 
			
		||||
    damage_multiplier: DamageMultiplier
 | 
			
		||||
    death_link: BRCDeathLink
 | 
			
		||||
    death_link: BRCDeathLink
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
from typing import Dict, List
 | 
			
		||||
from typing import Dict
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Stages:
 | 
			
		||||
    Misc = "Misc"
 | 
			
		||||
| 
						 | 
				
			
			@ -99,4 +100,4 @@ region_exits: Dict[str, str] = {
 | 
			
		|||
    Stages.MA4: [Stages.MA3,
 | 
			
		||||
                 Stages.MA5],
 | 
			
		||||
    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:
 | 
			
		||||
   return rep(state, player, 280)
 | 
			
		||||
    return rep(state, player, 280)
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def millennium_mall_all_challenges(state: CollectionState, player: int, limit: bool, glitched: bool) -> bool:
 | 
			
		||||
    return millennium_mall_challenge4(state, player, limit, glitched)
 | 
			
		||||
def millennium_mall_all_challenges(state: CollectionState, player: int) -> bool:
 | 
			
		||||
    return millennium_mall_challenge4(state, player)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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]
 | 
			
		||||
        access: bool = func(*fvars)
 | 
			
		||||
        access_cache[fname] = access
 | 
			
		||||
        if not access and not "oldhead" in fname:
 | 
			
		||||
        if not access and "oldhead" not in fname:
 | 
			
		||||
            stop = True
 | 
			
		||||
 | 
			
		||||
    return access_cache
 | 
			
		||||
| 
						 | 
				
			
			@ -877,7 +877,6 @@ def rules(brcworld):
 | 
			
		|||
        for e in multiworld.get_region(Stages.MA5, player).entrances:
 | 
			
		||||
            set_rule(e, lambda state: mataan_deepest(state, player, limit, glitched))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    # locations
 | 
			
		||||
    # hideout
 | 
			
		||||
    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),
 | 
			
		||||
            lambda state: rep(state, player, 1000))
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    # graffiti spots
 | 
			
		||||
    spots: int = 0
 | 
			
		||||
    while spots < 385:
 | 
			
		||||
        spots += 5
 | 
			
		||||
        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),
 | 
			
		||||
        lambda state: graffiti_spots(state, player, movestyle, limit, glitched, 389))
 | 
			
		||||
    
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +35,6 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
    options_dataclass = BombRushCyberfunkOptions
 | 
			
		||||
    options: BombRushCyberfunkOptions
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def __init__(self, multiworld: MultiWorld, player: int):
 | 
			
		||||
        super(BombRushCyberfunkWorld, self).__init__(multiworld, player)
 | 
			
		||||
        self.item_classification: Dict[BRCType, ItemClassification] = {
 | 
			
		||||
| 
						 | 
				
			
			@ -49,14 +48,12 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
            BRCType.Camera: ItemClassification.progression
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def collect(self, state: "CollectionState", item: "Item") -> bool:
 | 
			
		||||
        change = super().collect(state, item)
 | 
			
		||||
        if change and "REP" in item.name:
 | 
			
		||||
            rep: int = int(item.name[0:len(item.name)-4])
 | 
			
		||||
            state.prog_items[item.player]["rep"] += rep
 | 
			
		||||
        return change
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    def remove(self, state: "CollectionState", item: "Item") -> bool:
 | 
			
		||||
        change = super().remove(state, item)
 | 
			
		||||
| 
						 | 
				
			
			@ -65,11 +62,9 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
            state.prog_items[item.player]["rep"] -= rep
 | 
			
		||||
        return change
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def set_rules(self):
 | 
			
		||||
        rules(self)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def get_item_classification(self, item_type: BRCType) -> ItemClassification:
 | 
			
		||||
        classification = ItemClassification.filler
 | 
			
		||||
        if item_type in self.item_classification.keys():
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +72,6 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
 | 
			
		||||
        return classification
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def create_item(self, name: str) -> "BombRushCyberfunkItem":
 | 
			
		||||
        item_id: int = self.item_name_to_id[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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def create_event(self, event: str) -> "BombRushCyberfunkItem":
 | 
			
		||||
        return BombRushCyberfunkItem(event, ItemClassification.progression_skip_balancing, None, self.player)
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    def get_filler_item_name(self) -> str:
 | 
			
		||||
        item = self.random.choice(item_table)
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +90,6 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
 | 
			
		||||
        return item["name"]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def generate_early(self):
 | 
			
		||||
        if self.options.starting_movestyle == StartStyle.option_skateboard:
 | 
			
		||||
            self.item_classification[BRCType.Skateboard] = ItemClassification.filler
 | 
			
		||||
| 
						 | 
				
			
			@ -115,7 +106,6 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
        else:
 | 
			
		||||
            self.item_classification[BRCType.BMX] = ItemClassification.progression
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def create_items(self):
 | 
			
		||||
        rep_locations: int = 87
 | 
			
		||||
        if self.options.skip_polo_photos:
 | 
			
		||||
| 
						 | 
				
			
			@ -151,7 +141,6 @@ class BombRushCyberfunkWorld(World):
 | 
			
		|||
 | 
			
		||||
        self.multiworld.itempool += pool
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def create_regions(self):
 | 
			
		||||
        multiworld = self.multiworld
 | 
			
		||||
        player = self.player
 | 
			
		||||
| 
						 | 
				
			
			@ -211,4 +200,4 @@ class BombRushCyberfunkItem(Item):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
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 
 | 
			
		||||
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:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
## Quick Links
 | 
			
		||||
 | 
			
		||||
- 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)
 | 
			
		||||
 | 
			
		||||
## Setup
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue