forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
794 lines
24 KiB
Python
794 lines
24 KiB
Python
from dataclasses import dataclass
|
|
from typing import Dict, Any
|
|
from Options import Range, Toggle, DeathLink, Choice, StartInventoryPool, PerGameCommonOptions, OptionGroup, \
|
|
DefaultOnToggle
|
|
|
|
# -----------------------Settings for Gameplay decisions ---------------
|
|
|
|
|
|
class InitialWeapon(Choice):
|
|
"""
|
|
Chooses your initial weapon. Note you are not be able to equip the sword in the weapon hub in WeaponSanity until
|
|
you unlock it.
|
|
"""
|
|
display_name = "Weapon"
|
|
option_Sword = 0
|
|
option_Bow = 1
|
|
option_Spear = 2
|
|
option_Shield = 3
|
|
option_Fist = 4
|
|
option_Gun = 5
|
|
|
|
|
|
class LocationSystem(Choice):
|
|
"""
|
|
Chooses how the game gives you items. (1) RoomBased gives items on every new room completed. (2) ScoreBased
|
|
gives items according to score obtained by clearing rooms (even repeated ones). For example; each time the player
|
|
completes room 4 it will award 4 points. Getting a new high-score gives an item and resets the score.
|
|
(3) RoomWeaponBased gives items on every new room completed with a new weapon (so more locations than the
|
|
original room based system).
|
|
"""
|
|
display_name = "Location System"
|
|
option_room_based = 1
|
|
option_score_based = 2
|
|
option_room_weapon_based = 3
|
|
default = 1
|
|
|
|
|
|
class ScoreRewardsAmount(Range):
|
|
"""
|
|
When using score based system, this sets how many checks are available based on the score.
|
|
Each room in hades gives "its depth" in score when completed, and each new check needs one more
|
|
point to be unlocked (so check 10 needs 10 points, which can be obtained, for example,
|
|
by completing rooms 5 and 6)
|
|
"""
|
|
display_name = "ScoreRewardsAmount"
|
|
range_start = 72
|
|
range_end = 1000
|
|
default = 150
|
|
|
|
|
|
class KeepsakeSanity(DefaultOnToggle):
|
|
"""
|
|
Shuffles NPCs' keepsakes into the item pool, and makes each keepsake location a check.
|
|
For simplicity this does not affects Hades and Persephone.
|
|
"""
|
|
display_name = "KeepsakeSanity"
|
|
|
|
|
|
class WeaponSanity(DefaultOnToggle):
|
|
"""
|
|
Shuffles weapons (except your initial weapon) into the item pool, and makes obtaining
|
|
each weapon at the House Contractor's shop a check.
|
|
Need to be sent the weapon item to gain the skill to equip them.
|
|
"""
|
|
display_name = "WeaponSanity"
|
|
|
|
|
|
class HiddenAspectSanity(DefaultOnToggle):
|
|
"""
|
|
Shuffles weapon aspects into the item pool, and makes obtaining each aspect a check
|
|
(which needs to be unlocked before being able to be bought).
|
|
"""
|
|
display_name = "HiddenAspectSanity"
|
|
|
|
|
|
class StoreSanity(DefaultOnToggle):
|
|
"""
|
|
Shuffles important items from the House Contractor's shop in the item pool.
|
|
Need to be sent the items to gain the different perks that make runs easier.
|
|
"""
|
|
display_name = "StoreSanity"
|
|
|
|
|
|
class FateSanity(DefaultOnToggle):
|
|
"""
|
|
Shuffles most rewards from the Fated List of Prophecies into the item pool,
|
|
and makes the corresponding items from the list a check.
|
|
Can make the games significantly longer.
|
|
"""
|
|
display_name = "FateSanity"
|
|
|
|
# -------------------- Endgame settings
|
|
|
|
|
|
class HadesDefeatsNeeded(Range):
|
|
"""
|
|
How many times you need to defeat Hades to win the world. 10 is for credits.
|
|
"""
|
|
display_name = "HadesDefeatsNeeded"
|
|
range_start = 1
|
|
range_end = 20
|
|
default = 1
|
|
|
|
|
|
class WeaponsClearsNeeded(Range):
|
|
"""
|
|
How many different weapons clears are needed to win the world.
|
|
"""
|
|
display_name = "WeaponsClearsNeeded"
|
|
range_start = 1
|
|
range_end = 6
|
|
default = 1
|
|
|
|
|
|
class KeepsakesNeeded(Range):
|
|
"""
|
|
How many different keepsake unlocks are needed to win the world.
|
|
"""
|
|
display_name = "KeepsakesNeeded"
|
|
range_start = 0
|
|
range_end = 23
|
|
default = 0
|
|
|
|
|
|
class FatesNeeded(Range):
|
|
"""
|
|
How many different Fated List completions are needed to win the world.
|
|
"""
|
|
display_name = "FatesNeeded"
|
|
range_start = 0
|
|
range_end = 52
|
|
default = 0
|
|
|
|
|
|
# -----------------------Settings for Pact levels ---------------
|
|
|
|
class HeatSystem(Choice):
|
|
"""
|
|
Choose either ReverseHeat (1), MinimalHeat (2) or VanillaHeat(3) for the game.
|
|
In ReverseHeat you start with heat pacts that cannot be disabled until you get the corresponding pact item.
|
|
In Minimal the settings for the PactsAmounts below set your minimal heat to be set, and cannot go below that level.
|
|
If not wanting to have one of this heat systems on, chose Vanilla heat
|
|
(then the following options related to pacts do nothing).
|
|
"""
|
|
display_name = "Heat System"
|
|
option_reverse_heat = 1
|
|
option_minimal_heat = 2
|
|
option_vanilla_heat = 3
|
|
default = 1
|
|
|
|
|
|
class HardLaborPactAmount(Range):
|
|
"""
|
|
Choose the amount of Hard Labor pacts in the pool.
|
|
"""
|
|
display_name = "Hard Labor Pact Amount"
|
|
range_start = 0
|
|
range_end = 5
|
|
default = 3
|
|
|
|
|
|
class LastingConsequencesPactAmount(Range):
|
|
"""
|
|
Choose the amount of Lasting Consequences pacts in the pool.
|
|
"""
|
|
display_name = "Lasting Consequences Pact Amount"
|
|
range_start = 0
|
|
range_end = 4
|
|
default = 2
|
|
|
|
|
|
class ConvenienceFeePactAmount(Range):
|
|
"""
|
|
Choose the amount of Convenience Fee pacts in the pool.
|
|
"""
|
|
display_name = "Convenience Fee Pact Amount"
|
|
range_start = 0
|
|
range_end = 2
|
|
default = 1
|
|
|
|
|
|
class JurySummonsPactAmount(Range):
|
|
"""
|
|
Choose the amount of Jury Summons pacts in the pool.
|
|
"""
|
|
display_name = "Jury Summons Pact Amount"
|
|
range_start = 0
|
|
range_end = 3
|
|
default = 2
|
|
|
|
|
|
class ExtremeMeasuresPactAmount(Range):
|
|
"""
|
|
Choose the amount of Extreme Measures pacts in the pool.
|
|
"""
|
|
display_name = "Extreme Measures Pact Amount"
|
|
range_start = 0
|
|
range_end = 4
|
|
default = 2
|
|
|
|
|
|
class CalisthenicsProgramPactAmount(Range):
|
|
"""
|
|
Choose the amount of Calisthenics Program pacts in the pool.
|
|
"""
|
|
display_name = "Calisthenics Program Pact Amount"
|
|
range_start = 0
|
|
range_end = 2
|
|
default = 1
|
|
|
|
|
|
class BenefitsPackagePactAmount(Range):
|
|
"""
|
|
Choose the amount of Benefits Package pacts in the pool.
|
|
"""
|
|
display_name = "Benefits Package Pact Amount"
|
|
range_start = 0
|
|
range_end = 2
|
|
default = 1
|
|
|
|
|
|
class MiddleManagementPactAmount(Range):
|
|
"""
|
|
Choose the amount of Middle Management pacts in the pool.
|
|
"""
|
|
display_name = "Middle Management Pact Amount"
|
|
range_start = 0
|
|
range_end = 1
|
|
default = 1
|
|
|
|
|
|
class UnderworldCustomsPactAmount(Range):
|
|
"""
|
|
Choose the amount of Underworld Customs pacts in the pool.
|
|
"""
|
|
display_name = "Underworld Customs Pact Amount"
|
|
range_start = 0
|
|
range_end = 1
|
|
default = 1
|
|
|
|
|
|
class ForcedOvertimePactAmount(Range):
|
|
"""
|
|
Choose the amount of Forced Overtime pacts in the pool.
|
|
"""
|
|
display_name = "Forced Overtime Pact Amount"
|
|
range_start = 0
|
|
range_end = 2
|
|
default = 1
|
|
|
|
|
|
class HeightenedSecurityPactAmount(Range):
|
|
"""
|
|
Choose the amount of Heightened Security pacts in the pool.
|
|
"""
|
|
display_name = "Heightened Security Pact Amount"
|
|
range_start = 0
|
|
range_end = 1
|
|
default = 1
|
|
|
|
|
|
class RoutineInspectionPactAmount(Range):
|
|
"""
|
|
Choose the amount of Routine Inspection pacts in the pool.
|
|
"""
|
|
display_name = "Routine Inspection Pact Amount"
|
|
range_start = 0
|
|
range_end = 4
|
|
default = 3
|
|
|
|
|
|
class DamageControlPactAmount(Range):
|
|
"""
|
|
Choose the amount of Damage Control pacts in the pool.
|
|
"""
|
|
display_name = "Damage Control Pact Amount"
|
|
range_start = 0
|
|
range_end = 2
|
|
default = 1
|
|
|
|
|
|
class ApprovalProcessPactAmount(Range):
|
|
"""
|
|
Choose the amount of Approval Process pacts in the pool.
|
|
"""
|
|
display_name = "Approval Process Pact Amount"
|
|
range_start = 0
|
|
range_end = 2
|
|
default = 1
|
|
|
|
|
|
class TightDeadlinePactAmount(Range):
|
|
"""
|
|
Choose the amount of Tight Deadline pacts in the pool.
|
|
"""
|
|
display_name = "Tight Deadline Pact Amount"
|
|
range_start = 0
|
|
range_end = 3
|
|
default = 2
|
|
|
|
|
|
class PersonalLiabilityPactAmount(Range):
|
|
"""
|
|
Choose the amount of Personal Liability pacts in the pool.
|
|
"""
|
|
display_name = "Personal Liability Pact Amount"
|
|
range_start = 0
|
|
range_end = 1
|
|
default = 0
|
|
|
|
|
|
# -----------------------Settings for Filler items ---------------
|
|
|
|
class DarknessPackValue(Range):
|
|
"""
|
|
Choose the value (amount of darkness) of each darkness pack in the pool.
|
|
If set to 0 Darkness will not appear in the pool.
|
|
"""
|
|
display_name = "Darkness Pack Value"
|
|
range_start = 0
|
|
range_end = 10000
|
|
default = 1000
|
|
|
|
|
|
class DarknessPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be darkness packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Darkness Pack Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 10
|
|
|
|
|
|
class KeysPackValue(Range):
|
|
"""
|
|
Choose the value(amount of Keys) of each Keys pack in the pool.
|
|
If set to 0 Keys will not appear in the pool.
|
|
"""
|
|
display_name = "Keys Pack Value"
|
|
range_start = 0
|
|
range_end = 500
|
|
default = 20
|
|
|
|
|
|
class KeysPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be Key packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Keys Pack Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 10
|
|
|
|
|
|
class GemstonesPackValue(Range):
|
|
"""
|
|
Choose the value(amount of Gemstones) of each Gemstone pack in the pool.
|
|
If set to 0 Gems will not appear in the pool.
|
|
"""
|
|
display_name = "Gemstone Pack Value"
|
|
range_start = 0
|
|
range_end = 2500
|
|
default = 100
|
|
|
|
|
|
class GemstonesPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be Gemstones packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Gemstones Pack Percentage"
|
|
range_start = 0
|
|
range_end = 1000
|
|
default = 10
|
|
|
|
|
|
class DiamondsPackValue(Range):
|
|
"""
|
|
Choose the value(amount of diamonds) of each diamond pack in the pool.
|
|
If set to 0 Diamonds will not appear in the pool.
|
|
"""
|
|
display_name = "Diamonds Pack Value"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 15
|
|
|
|
class DiamondsPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be Gemstones packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Diamonds Pack Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 10
|
|
|
|
|
|
class TitanBloodPackValue(Range):
|
|
"""
|
|
Choose the value(amount of Titan blood) of each Titan blood pack in the pool.
|
|
If set to 0 Titan blood will not appear in the pool.
|
|
"""
|
|
display_name = "Titan Blood Pack Value"
|
|
range_start = 0
|
|
range_end = 50
|
|
default = 3
|
|
|
|
|
|
class TitanBloodPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be Titan Blood packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "TitanBlood Pack Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 10
|
|
|
|
|
|
class NectarPackValue(Range):
|
|
"""
|
|
Choose the value(amount of Nectar) of each Nectar pack in the pool.
|
|
If set to 0 Nectar will not appear in the pool.
|
|
"""
|
|
display_name = "Nectar Pack Value"
|
|
range_start = 0
|
|
range_end = 50
|
|
default = 3
|
|
|
|
|
|
class NectarPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be Nectar packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Nectar Pack Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 10
|
|
|
|
class AmbrosiaPackValue(Range):
|
|
"""
|
|
Choose the value(amount of Ambrosia) of each Ambrosia pack in the pool.
|
|
If set to 0 Ambrosia will not appear in the pool.
|
|
"""
|
|
display_name = "Ambrosia Pack Value"
|
|
range_start = 0
|
|
range_end = 50
|
|
default = 3
|
|
|
|
|
|
class AmbrosiaPackPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be Ambrosia packs.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Ambrosia Pack Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 10
|
|
|
|
# -----------------------Settings for Helpers -------------------------
|
|
|
|
|
|
class FillerHelperPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be helpers instead.
|
|
Helpers give a boost to your max Health or boost the chance of obtaining rare Boons.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Filler Helper Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 0
|
|
|
|
|
|
class MaxHealthHelperPercentage(Range):
|
|
"""
|
|
Choose the percentage of helper items that will boost your max health.
|
|
"""
|
|
display_name = "Max Health Helper Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 35
|
|
|
|
|
|
class InitialMoneyHelperPercentage(Range):
|
|
"""
|
|
Choose the percentage of helper items that will boost your initial money by 25 each run.
|
|
This gets capped by the percentage being left from the MaxHealthHelpers.
|
|
What percentage remains from this and the MaxHealthHelpers will give you items that boost the
|
|
rarity of the boons obtained in runs.
|
|
"""
|
|
display_name = "Initial Money Helper Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 35
|
|
|
|
# -----------------------Settings for Trap -------------------------
|
|
|
|
|
|
class FillerTrapPercentage(Range):
|
|
"""
|
|
Choose the percentage of filler items in the pool that will be traps instead.
|
|
Traps diminish your money or health during a run.
|
|
Note if filler porcentage don't sum up to 100 the system will treat them as proportions.
|
|
"""
|
|
display_name = "Filler Trap Percentage"
|
|
range_start = 0
|
|
range_end = 100
|
|
default = 5
|
|
|
|
# -----------------------Settings for QoL -------------------------
|
|
|
|
|
|
class ReverseOrderExtremeMeasure(DefaultOnToggle):
|
|
"""
|
|
When true the order in which extreme meassures applied is reverse
|
|
so level 1 is applied to Hades, instead to Meg/The Furies).
|
|
For a more balanced experience.
|
|
"""
|
|
display_name = "Reverse Order Extreme Measure"
|
|
|
|
|
|
class IgnoreGreeceDeaths(DefaultOnToggle):
|
|
"""
|
|
If deaths on Greece are ignored for deathlink. Leave off for the memes.
|
|
"""
|
|
display_name = "Ignore Greece Deaths"
|
|
|
|
|
|
class StoreGiveHints(DefaultOnToggle):
|
|
"""
|
|
If seeing an item on the House Contractor's shop/Fated List of Prophecies
|
|
should give a hint for it on the multiworld.
|
|
"""
|
|
display_name = "Store Give Hints"
|
|
|
|
|
|
class DisableLateStyx(Toggle):
|
|
"""
|
|
If true, rooms past room 55 will not have checks on room based settings.
|
|
"""
|
|
display_name = "Disable Late Styx"
|
|
default = 0
|
|
|
|
class AutomaticRoomsFinishOnHadesDefeat(Toggle):
|
|
"""
|
|
If defeating Hades should give all room clears on Room based location mode
|
|
or all rooms clears with the equipped weapon on Room weapon based location mode.
|
|
"""
|
|
display_name = "Automatic Room Finish On Hades Defeat"
|
|
default = 0
|
|
|
|
|
|
# ------------------------------ Building dictionary ------------------------
|
|
|
|
@dataclass
|
|
class HadesOptions(PerGameCommonOptions):
|
|
start_inventory_from_pool: StartInventoryPool
|
|
initial_weapon: InitialWeapon
|
|
location_system: LocationSystem
|
|
score_rewards_amount: ScoreRewardsAmount
|
|
keepsakesanity: KeepsakeSanity
|
|
weaponsanity: WeaponSanity
|
|
hidden_aspectsanity: HiddenAspectSanity
|
|
storesanity: StoreSanity
|
|
fatesanity: FateSanity
|
|
hades_defeats_needed: HadesDefeatsNeeded
|
|
weapons_clears_needed: WeaponsClearsNeeded
|
|
keepsakes_needed: KeepsakesNeeded
|
|
fates_needed: FatesNeeded
|
|
heat_system: HeatSystem
|
|
hard_labor_pact_amount: HardLaborPactAmount
|
|
lasting_consequences_pact_amount: LastingConsequencesPactAmount
|
|
convenience_fee_pact_amount: ConvenienceFeePactAmount
|
|
jury_summons_pact_amount: JurySummonsPactAmount
|
|
extreme_measures_pact_amount: ExtremeMeasuresPactAmount
|
|
calisthenics_program_pact_amount: CalisthenicsProgramPactAmount
|
|
benefits_package_pact_amount: BenefitsPackagePactAmount
|
|
middle_management_pact_amount: MiddleManagementPactAmount
|
|
underworld_customs_pact_amount: UnderworldCustomsPactAmount
|
|
forced_overtime_pact_amount: ForcedOvertimePactAmount
|
|
heightened_security_pact_amount: HeightenedSecurityPactAmount
|
|
routine_inspection_pact_amount: RoutineInspectionPactAmount
|
|
damage_control_pact_amount: DamageControlPactAmount
|
|
approval_process_pact_amount: ApprovalProcessPactAmount
|
|
tight_deadline_pact_amount: TightDeadlinePactAmount
|
|
personal_liability_pact_amount: PersonalLiabilityPactAmount
|
|
darkness_pack_value: DarknessPackValue
|
|
darkness_pack_percentage: DarknessPackPercentage
|
|
keys_pack_value: KeysPackValue
|
|
keys_pack_percentage: KeysPackPercentage
|
|
gemstones_pack_value: GemstonesPackValue
|
|
gemstones_pack_percentage: GemstonesPackPercentage
|
|
diamonds_pack_value: DiamondsPackValue
|
|
diamonds_pack_percentage: DiamondsPackPercentage
|
|
titan_blood_pack_value: TitanBloodPackValue
|
|
titan_blood_pack_percentage: TitanBloodPackPercentage
|
|
nectar_pack_value: NectarPackValue
|
|
nectar_pack_percentage: NectarPackPercentage
|
|
ambrosia_pack_value: AmbrosiaPackValue
|
|
ambrosia_pack_percentage: AmbrosiaPackPercentage
|
|
filler_helper_percentage: FillerHelperPercentage
|
|
max_health_helper_percentage: MaxHealthHelperPercentage
|
|
initial_money_helper_percentage: InitialMoneyHelperPercentage
|
|
filler_trap_percentage: FillerTrapPercentage
|
|
reverse_order_em: ReverseOrderExtremeMeasure
|
|
ignore_greece_deaths: IgnoreGreeceDeaths
|
|
store_give_hints: StoreGiveHints
|
|
disable_late_styx : DisableLateStyx
|
|
automatic_rooms_finish_on_hades_defeat: AutomaticRoomsFinishOnHadesDefeat
|
|
death_link: DeathLink
|
|
|
|
# ------------------------------ Options groups
|
|
|
|
|
|
hades_option_groups = [
|
|
OptionGroup("Game Options", [
|
|
InitialWeapon,
|
|
LocationSystem,
|
|
ScoreRewardsAmount,
|
|
KeepsakeSanity,
|
|
WeaponSanity,
|
|
HiddenAspectSanity,
|
|
StoreSanity,
|
|
FateSanity,
|
|
DeathLink,
|
|
]),
|
|
OptionGroup("Goal Options", [
|
|
HadesDefeatsNeeded,
|
|
WeaponsClearsNeeded,
|
|
KeepsakesNeeded,
|
|
FatesNeeded,
|
|
]),
|
|
OptionGroup("Heat Options", [
|
|
HeatSystem,
|
|
HardLaborPactAmount,
|
|
LastingConsequencesPactAmount,
|
|
ConvenienceFeePactAmount,
|
|
JurySummonsPactAmount,
|
|
ExtremeMeasuresPactAmount,
|
|
CalisthenicsProgramPactAmount,
|
|
BenefitsPackagePactAmount,
|
|
MiddleManagementPactAmount,
|
|
UnderworldCustomsPactAmount,
|
|
ForcedOvertimePactAmount,
|
|
HeightenedSecurityPactAmount,
|
|
RoutineInspectionPactAmount,
|
|
DamageControlPactAmount,
|
|
ApprovalProcessPactAmount,
|
|
TightDeadlinePactAmount,
|
|
PersonalLiabilityPactAmount,
|
|
]),
|
|
OptionGroup("Filler Options", [
|
|
DarknessPackValue,
|
|
DarknessPackPercentage,
|
|
KeysPackValue,
|
|
KeysPackPercentage,
|
|
GemstonesPackValue,
|
|
GemstonesPackPercentage,
|
|
DiamondsPackValue,
|
|
DiamondsPackPercentage,
|
|
TitanBloodPackValue,
|
|
TitanBloodPackPercentage,
|
|
NectarPackValue,
|
|
NectarPackPercentage,
|
|
AmbrosiaPackValue,
|
|
AmbrosiaPackPercentage,
|
|
]),
|
|
OptionGroup("Helpers and Trap Options", [
|
|
FillerHelperPercentage,
|
|
MaxHealthHelperPercentage,
|
|
InitialMoneyHelperPercentage,
|
|
FillerTrapPercentage,
|
|
]),
|
|
OptionGroup("Quality of Life Options", [
|
|
ReverseOrderExtremeMeasure,
|
|
IgnoreGreeceDeaths,
|
|
StoreGiveHints,
|
|
DisableLateStyx,
|
|
AutomaticRoomsFinishOnHadesDefeat
|
|
]),
|
|
]
|
|
|
|
|
|
# ------------------------------ Presets
|
|
|
|
hades_option_presets: Dict[str, Dict[str, Any]] = {
|
|
"Easy": {
|
|
"score_rewards_amount": 100,
|
|
"hidden_aspectsanity": False,
|
|
"fatesanity": False,
|
|
"heat_system": "reverse_heat",
|
|
"hard_labor_pact_amount": 2,
|
|
"lasting_consequences_pact_amount": 1,
|
|
"convenience_fee_pact_amount": 1,
|
|
"jury_summons_pact_amount": 1,
|
|
"extreme_measures_pact_amount": 0,
|
|
"calisthenics_program_pact_amount": 1,
|
|
"benefits_package_pact_amount": 1,
|
|
"middle_management_pact_amount": 1,
|
|
"underworld_customs_pact_amount": 1,
|
|
"forced_overtime_pact_amount": 1,
|
|
"heightened_security_pact_amount": 1,
|
|
"routine_inspection_pact_amount": 1,
|
|
"damage_control_pact_amount": 1,
|
|
"approval_process_pact_amount": 1,
|
|
"tight_deadline_pact_amount": 0,
|
|
"personal_liability_pact_amount": 0,
|
|
"darkness_pack_value": 500,
|
|
"keys_pack_value": 10,
|
|
"gemstones_pack_value": 50,
|
|
"diamonds_pack_value": 3,
|
|
"titan_blood_pack_value": 3,
|
|
"nectar_pack_value": 3,
|
|
"ambrosia_pack_value": 3,
|
|
"filler_helper_percentage": 10,
|
|
"max_health_helper_percentage": 40,
|
|
"initial_money_helper_percentage": 30,
|
|
"filler_trap_percentage": 0,
|
|
"disable_late_styx" : True,
|
|
"automatic_rooms_finish_on_hades_defeat": True,
|
|
},
|
|
"Normal": {
|
|
"score_rewards_amount": 100,
|
|
"hidden_aspectsanity": True,
|
|
"fatesanity": False,
|
|
"heat_system": "reverse_heat",
|
|
"hard_labor_pact_amount": 3,
|
|
"lasting_consequences_pact_amount": 2,
|
|
"convenience_fee_pact_amount": 1,
|
|
"jury_summons_pact_amount": 2,
|
|
"extreme_measures_pact_amount": 2,
|
|
"calisthenics_program_pact_amount": 1,
|
|
"benefits_package_pact_amount": 1,
|
|
"middle_management_pact_amount": 1,
|
|
"underworld_customs_pact_amount": 1,
|
|
"forced_overtime_pact_amount": 1,
|
|
"heightened_security_pact_amount": 1,
|
|
"routine_inspection_pact_amount": 3,
|
|
"damage_control_pact_amount": 1,
|
|
"approval_process_pact_amount": 1,
|
|
"tight_deadline_pact_amount": 2,
|
|
"personal_liability_pact_amount": 0,
|
|
"darkness_pack_value": 300,
|
|
"keys_pack_value": 5,
|
|
"gemstones_pack_value": 25,
|
|
"diamonds_pack_value": 2,
|
|
"titan_blood_pack_value": 2,
|
|
"nectar_pack_value": 2,
|
|
"ambrosia_pack_value": 2,
|
|
"filler_helper_percentage": 0,
|
|
"filler_trap_percentage": 5,
|
|
"disable_late_styx" : True,
|
|
"automatic_rooms_finish_on_hades_defeat": True,
|
|
},
|
|
"Hard": {
|
|
"score_rewards_amount": 100,
|
|
"hidden_aspectsanity": True,
|
|
"fatesanity": True,
|
|
"heat_system": "reverse_heat",
|
|
"hard_labor_pact_amount": 5,
|
|
"lasting_consequences_pact_amount": 4,
|
|
"convenience_fee_pact_amount": 2,
|
|
"jury_summons_pact_amount": 3,
|
|
"extreme_measures_pact_amount": 4,
|
|
"calisthenics_program_pact_amount": 2,
|
|
"benefits_package_pact_amount": 2,
|
|
"middle_management_pact_amount": 1,
|
|
"underworld_customs_pact_amount": 1,
|
|
"forced_overtime_pact_amount": 2,
|
|
"heightened_security_pact_amount": 1,
|
|
"routine_inspection_pact_amount": 4,
|
|
"damage_control_pact_amount": 2,
|
|
"approval_process_pact_amount": 2,
|
|
"tight_deadline_pact_amount": 3,
|
|
"personal_liability_pact_amount": 1,
|
|
"darkness_pack_value": 200,
|
|
"keys_pack_value": 3,
|
|
"gemstones_pack_value": 10,
|
|
"diamonds_pack_value": 1,
|
|
"titan_blood_pack_value": 1,
|
|
"nectar_pack_value": 1,
|
|
"ambrosia_pack_value": 1,
|
|
"filler_helper_percentage": 0,
|
|
"filler_trap_percentage": 10,
|
|
"disable_late_styx" : False,
|
|
"automatic_rooms_finish_on_hades_defeat": False,
|
|
},
|
|
} |