mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00
108 lines
3.4 KiB
Python
108 lines
3.4 KiB
Python
![]() |
from dataclasses import dataclass
|
||
|
|
||
|
from Options import Range, PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Visibility
|
||
|
|
||
|
|
||
|
class LogicPercent(Range):
|
||
|
"""Sets the maximum percent similarity required for a check to be in logic.
|
||
|
Higher values are more difficult and items/locations will not be generated beyond this number."""
|
||
|
display_name = "Logic Percent"
|
||
|
range_start = 50
|
||
|
range_end = 95
|
||
|
default = 80
|
||
|
|
||
|
|
||
|
class GoalPercent(Range):
|
||
|
"""Sets the percent similarity required to achieve your goal.
|
||
|
If this number is higher than the value for logic percent,
|
||
|
reaching goal will be in logic upon obtaining all progression items."""
|
||
|
display_name = "Goal Percent"
|
||
|
range_start = 50
|
||
|
range_end = 95
|
||
|
default = 80
|
||
|
|
||
|
|
||
|
class HalfPercentChecks(Range):
|
||
|
"""Sets the lowest percent at which locations will be created for each 0.5% of similarity.
|
||
|
Below this number, there will be a check every 1%.
|
||
|
Above this number, there will be a check every 0.5%."""
|
||
|
display_name = "Half Percent Checks"
|
||
|
range_start = 0
|
||
|
range_end = 95
|
||
|
default = 50
|
||
|
|
||
|
|
||
|
class QuarterPercentChecks(Range):
|
||
|
"""Sets the lowest percent at which locations will be created for each 0.25% of similarity.
|
||
|
This number will override Half Percent Checks if it is lower."""
|
||
|
display_name = "Quarter Percent Checks"
|
||
|
range_start = 0
|
||
|
range_end = 95
|
||
|
default = 70
|
||
|
|
||
|
|
||
|
class CanvasSizeIncrement(Choice):
|
||
|
"""Sets the number of pixels the canvas will expand for each width/height item received.
|
||
|
Ensure an adequate number of locations are generated if setting this below 50."""
|
||
|
display_name = "Canvas Size Increment"
|
||
|
# option_10 = 10
|
||
|
# option_20 = 20
|
||
|
option_25 = 25
|
||
|
option_50 = 50
|
||
|
option_100 = 100
|
||
|
default = 100
|
||
|
|
||
|
|
||
|
class GoalImage(Range):
|
||
|
"""Sets the numbered image you will be required to match.
|
||
|
See https://github.com/MarioManTAW/jspaint/tree/master/images/archipelago
|
||
|
for a list of possible images or choose random.
|
||
|
This can also be overwritten client-side by using File->Open."""
|
||
|
display_name = "Goal Image"
|
||
|
range_start = 1
|
||
|
range_end = 1
|
||
|
default = 1
|
||
|
visibility = Visibility.none
|
||
|
|
||
|
|
||
|
class StartingTool(Choice):
|
||
|
"""Sets which tool (other than Magnifier) you will be able to use from the start."""
|
||
|
option_brush = 0
|
||
|
option_pencil = 1
|
||
|
option_eraser = 2
|
||
|
option_airbrush = 3
|
||
|
option_line = 4
|
||
|
option_rectangle = 5
|
||
|
option_ellipse = 6
|
||
|
option_rounded_rectangle = 7
|
||
|
default = 0
|
||
|
|
||
|
|
||
|
class TrapCount(Range):
|
||
|
"""Sets the percentage of filler items to be replaced by random traps."""
|
||
|
display_name = "Trap Fill Percent"
|
||
|
range_start = 0
|
||
|
range_end = 100
|
||
|
default = 0
|
||
|
|
||
|
|
||
|
class DeathLink(Toggle):
|
||
|
"""If on, using the Undo or Clear Image functions will send a death to all other players with death link on.
|
||
|
Receiving a death will clear the image and reset the history.
|
||
|
This option also prevents Undo and Clear Image traps from being generated in the item pool."""
|
||
|
display_name = "Death Link"
|
||
|
|
||
|
|
||
|
@dataclass
|
||
|
class PaintOptions(PerGameCommonOptions):
|
||
|
logic_percent: LogicPercent
|
||
|
goal_percent: GoalPercent
|
||
|
half_percent_checks: HalfPercentChecks
|
||
|
quarter_percent_checks: QuarterPercentChecks
|
||
|
canvas_size_increment: CanvasSizeIncrement
|
||
|
goal_image: GoalImage
|
||
|
starting_tool: StartingTool
|
||
|
trap_count: TrapCount
|
||
|
death_link: DeathLink
|
||
|
start_inventory_from_pool: StartInventoryPool
|