예제 #1
0
    def patch_resource_database(
            self, db: ResourceDatabase,
            configuration: BaseConfiguration) -> ResourceDatabase:
        base_damage_reduction = db.base_damage_reduction
        damage_reductions = copy.copy(db.damage_reductions)
        requirement_template = copy.copy(db.requirement_template)

        suits = [db.get_item_by_name("Varia Suit")]
        if configuration.heat_protection_only_varia:
            requirement_template["Heat-Resisting Suit"] = ResourceRequirement(
                db.get_item_by_name("Varia Suit"), 1, False)
        else:
            suits.extend([
                db.get_item_by_name("Gravity Suit"),
                db.get_item_by_name("Phazon Suit")
            ])

        reductions = [DamageReduction(None, configuration.heat_damage / 10.0)]
        reductions.extend([DamageReduction(suit, 0) for suit in suits])
        damage_reductions[db.get_by_type_and_index(ResourceType.DAMAGE,
                                                   "HeatDamage1")] = reductions

        if configuration.progressive_damage_reduction:
            base_damage_reduction = self.prime1_progressive_damage_reduction
        else:
            base_damage_reduction = self.prime1_absolute_damage_reduction

        return dataclasses.replace(db,
                                   damage_reductions=damage_reductions,
                                   base_damage_reduction=base_damage_reduction,
                                   requirement_template=requirement_template)
예제 #2
0
 def patch_resource_database(
         self, db: ResourceDatabase,
         configuration: BaseConfiguration) -> ResourceDatabase:
     damage_reductions = copy.copy(db.damage_reductions)
     damage_reductions[db.get_by_type_and_index(
         ResourceType.DAMAGE, "DarkWorld1")] = [
             DamageReduction(None, configuration.varia_suit_damage / 6.0),
             DamageReduction(db.get_item_by_name("Dark Suit"),
                             configuration.dark_suit_damage / 6.0),
             DamageReduction(db.get_item_by_name("Light Suit"), 0.0),
         ]
     return dataclasses.replace(db, damage_reductions=damage_reductions)
예제 #3
0
def read_damage_reduction(data: Dict,
                          items: List[ItemResourceInfo]) -> DamageReduction:
    return DamageReduction(
        find_resource_info_with_id(items, data["name"], ResourceType.ITEM)
        if data["name"] is not None else None, data["multiplier"])
예제 #4
0
def read_damage_reduction(data: Dict,
                          items: List[ItemResourceInfo]) -> DamageReduction:
    return DamageReduction(
        find_resource_info_with_id(items, data["index"], ResourceType.ITEM),
        data["multiplier"])