Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 32 additions & 22 deletions Class/openkhmod.py
Original file line number Diff line number Diff line change
Expand Up @@ -1043,7 +1043,7 @@ def __init__(
ComboGroup: int,
RandomEffect: int,
Kind,
HPDrain: int,
HpDrain: int,
):
self.SubId = SubId
self.Id = Id
Expand Down Expand Up @@ -1077,7 +1077,7 @@ def __init__(
self.ComboGroup = ComboGroup
self.RandomEffect = RandomEffect
self.Kind = Kind
self.HPDrain = HPDrain
self.HpDrain = HpDrain
self.validate()

def validate(self):
Expand All @@ -1094,8 +1094,10 @@ def validate(self):
if self.CriticalAdjust < 0 or self.CriticalAdjust > 255:
raise ValueError(f"CriticalAdjust {self.CriticalAdjust} outside bounds")
# ushort
if self.Power < 0 or self.Power > 65535:
raise ValueError(f"Power {self.Power} outside bounds")
if self.Power < 0:
self.Power = 0
if self.Power > 65535:
self.Power = 65535
# byte
if self.Team < 0 or self.Team > 255:
raise ValueError(f"Team {self.Team} outside bounds")
Expand All @@ -1109,18 +1111,18 @@ def validate(self):
if self.EffectOnHit < 0 or self.EffectOnHit > 255:
raise ValueError(f"EffectOnHit {self.EffectOnHit} outside bounds")
# short
if self.KnockbackStrength1 < -32768 or self.KnockbackStrength1 > 32767:
raise ValueError(f"KnockbackStrength1 {self.KnockbackStrength1} outside bounds")
if self.KnockbackStrength1 < -32768:
self.KnockbackStrength1 = -32768
if self.KnockbackStrength1 > 32767:
self.KnockbackStrength1 = 32767
# short
if self.KnockbackStrength2 < -32768 or self.KnockbackStrength2 > 32767:
raise ValueError(f"KnockbackStrength2 {self.KnockbackStrength2} outside bounds")
if self.KnockbackStrength2 < -32768:
self.KnockbackStrength2 = -32768
if self.KnockbackStrength2 > 32767:
self.KnockbackStrength2 = 32767
# short
if self.Unknown < -32768 or self.Unknown > 32767:
raise ValueError(f"Unknown {self.Unknown} outside bounds")
# string
# if self.Flags not in [0,"BGHit","LimitPAX","Land","CapturePAX","ThankYou","KillBoss"]:
# raise ValueError(f"Flags {self.Flags} outside bounds")
# string
if self.RefactSelf not in ["Reflect","Guard","Nothing"]:
raise ValueError(f"RefactSelf {self.RefactSelf} outside bounds")
# string
Expand Down Expand Up @@ -1158,17 +1160,23 @@ def validate(self):
if self.Switch < 0 or self.Switch > 255:
raise ValueError(f"Switch {self.Switch} outside bounds")
# ushort
if self.Interval < 0 or self.Interval > 65535:
raise ValueError(f"Interval {self.Interval} outside bounds")
if self.Interval < 0:
self.Interval = 0
if self.Interval > 65535:
self.Interval = 65535
# byte
if self.FloorCheck < 0 or self.FloorCheck > 255:
raise ValueError(f"FloorCheck {self.FloorCheck} outside bounds")
# byte
if self.DriveDrain < 0 or self.DriveDrain > 255:
raise ValueError(f"DriveDrain {self.DriveDrain} outside bounds")
if self.DriveDrain < 0:
self.DriveDrain = 0
if self.DriveDrain > 254:
self.DriveDrain = 254
# byte
if self.RevengeDamage < 0 or self.RevengeDamage > 255:
raise ValueError(f"RevengeDamage {self.RevengeDamage} outside bounds")
if self.RevengeDamage < 0:
self.RevengeDamage = 0
if self.RevengeDamage > 254:
self.RevengeDamage = 254
# string
if self.AttackTrReaction not in ["Attack","Charge","Crash","Wall"]:
raise ValueError(f"AttackTrReaction {self.AttackTrReaction} outside bounds")
Expand All @@ -1184,8 +1192,10 @@ def validate(self):
if self.Kind not in [0,"ComboFinisher","AirComboFinisher","ReactionCommand"]:
raise ValueError(f"Kind {self.Kind} outside bounds")
# byte
if self.HPDrain < 0 or self.HPDrain > 255:
raise ValueError(f"HPDrain {self.HPDrain} outside bounds")
if self.HpDrain < 0:
self.HpDrain = 0
if self.HpDrain > 254:
self.HpDrain = 254
Comment on lines +1197 to +1198

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

254? not 255?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't entirely sure if putting it at 255 caused an error. So I just decided to keep the maximum amount 1 lower as that should be more than enough in any cases



class AttackEntriesOrganizer:
Expand Down Expand Up @@ -1231,7 +1241,7 @@ def convert_atkp_object_to_dict_and_add_to_data(self, atkp_object: ATKPObject):
"ComboGroup": atkp_object.ComboGroup,
"RandomEffect": atkp_object.RandomEffect,
"Kind": atkp_object.Kind,
"HPDrain": atkp_object.HPDrain,
"HpDrain": atkp_object.HpDrain,
}
)

Expand Down Expand Up @@ -1275,7 +1285,7 @@ def attack_entry_constructor(self, values):
values["ComboGroup"],
values["RandomEffect"],
values["Kind"],
values["HPDrain"],
values["HpDrain"],
)

# Obsolete, use the switch method instead to avoid any bugs
Expand Down
18 changes: 18 additions & 0 deletions Class/seedSettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -3423,6 +3423,24 @@ def _bonus_slot_setting(key: str, item_type: str, max_val: int, default_val: int
default=attackDataPresets.WEAK,
tooltip=AttackDataPresets.multi_hit_preset_tooltip(),
),
SingleSelect(
name=settingkey.ATTACK_DATA_HPDRAIN_PRESET,
group=SettingGroup.COMPANIONS,
ui_label="HP Gain randomization preset",
choices=AttackDataPresets.attack_data_preset_options(),
shared=True,
default=attackDataPresets.WEAK,
tooltip=AttackDataPresets.hpdrain_preset_tooltip(),
),
SingleSelect(
name=settingkey.ATTACK_DATA_DRIVEGAIN_PRESET,
group=SettingGroup.COMPANIONS,
ui_label="Drive gain randomization preset",
choices=AttackDataPresets.attack_data_preset_options(),
shared=True,
default=attackDataPresets.WEAK,
tooltip=AttackDataPresets.attack_data_preset_tooltip(),
),
SingleSelect(
name=settingkey.COOP_HINT_TYPE,
group=SettingGroup.HINTS,
Expand Down
4 changes: 3 additions & 1 deletion Class/settingkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,4 +257,6 @@
ATTACK_DATA_KNOCKBACK_AMOUNT_PRESET = "attack_data_knockback_amount_preset"
ATTACK_DATA_REVENGE_VALUE_PRESET = "attack_data_revenge_value_preset"
ATTACK_DATA_RANDOMIZATION = "attack_data_randomization"
EXCLUDE_SORA_ROXAS_BASE_ATTACK = "exclude_sora_roxas_base_attack"
EXCLUDE_SORA_ROXAS_BASE_ATTACK = "exclude_sora_roxas_base_attack"
ATTACK_DATA_HPDRAIN_PRESET = "attack_data_hpdrain_preset"
ATTACK_DATA_DRIVEGAIN_PRESET = "attack_data_drivegain_preset"
Loading
Loading