diff --git a/hagadias/constants.py b/hagadias/constants.py index dd5978e..4947b3f 100644 --- a/hagadias/constants.py +++ b/hagadias/constants.py @@ -257,6 +257,10 @@ "Hitpoints": "hit points", "MoveSpeed": "move speed", "Speed": "quickness", + "AP": "attribute points", + "MP": "mutation points", + "SP": "skill points", + "XP": "experience points", } # The following includes all parts descending from IActivePart, which defines the IsEMPSensitive and # PowerLoadSensitive fields. This holds the hard-coded defaults. These can be overridden in the XML. diff --git a/hagadias/qudobject_props.py b/hagadias/qudobject_props.py index 855e859..6315973 100644 --- a/hagadias/qudobject_props.py +++ b/hagadias/qudobject_props.py @@ -886,6 +886,15 @@ def desc(self) -> str | None: if amt is not None: symbol = "+" if amt > 0 else "" desc_extra.append("{{" + f"rules|{symbol}{amt} {stat}" + "}}") + # ActiveStatPercent (percentage-based boost) + if self.part_ActiveStatPercent is not None: + for boostinfo in self.part_ActiveStatPercent_Boosts.split(";"): + stat, amt = boostinfo.split(":") + stat = stat if stat not in STAT_DISPLAY_NAMES else STAT_DISPLAY_NAMES[stat] + amt = int_or_none(amt) + if amt is not None: + symbol = "+" if amt > 0 else "" + desc_extra.append("{{" + f"rules|{symbol}{amt}% {stat}" + "}}") # carrybonus carry_bonus = self.carrybonus if carry_bonus: