diff options
Diffstat (limited to 'examples/rules/COC7')
| -rw-r--r-- | examples/rules/COC7/Character.py | 132 | ||||
| -rw-r--r-- | examples/rules/COC7/Command.py | 1 | ||||
| -rw-r--r-- | examples/rules/COC7/Wiki.py | 3 | ||||
| -rw-r--r-- | examples/rules/COC7/__init__.py | 52 |
4 files changed, 0 insertions, 188 deletions
diff --git a/examples/rules/COC7/Character.py b/examples/rules/COC7/Character.py deleted file mode 100644 index bb30661..0000000 --- a/examples/rules/COC7/Character.py +++ /dev/null @@ -1,132 +0,0 @@ -# MyRule -import math - -from typing import Union -from dataclasses import dataclass - -from hrc.rule import Rule -from hrc.rule.BaseRule import CharacterCard - -aliases = Rule.aliases - -@dataclass -class Attributes(CharacterCard.Attribute): - - @aliases(["luck", "运气"], ignore_case=True) - def LUK(self) -> Union[str, int, None]: ... - - @aliases(["伤害加值", "DamageBonus"], ignore_case=True) - def DB(self) -> Union[str, int, None]: - sum = self.STR() + self.SIZ() - return ( - str(math.ceil((sum - 164) / 80)) + "D6" - if sum > 164 - else "1D4" - if sum > 124 - else "0" - if sum > 84 - else "-1" - if sum > 64 - else "-2" - if sum > 0 - else None - ) - - @aliases(["年龄", "age"], ignore_case=True) - def AGE(self) -> Union[str, int, None]: ... - - @aliases(["HitPoints", "生命值", "生命"], ignore_case=True) - def HP(self) -> Union[str, int, None]: - return self.MAX_HP - - @aliases(["最大生命值", "HitPointTotal", "总生命值"], ignore_case=True) - def MAX_HP(self) -> Union[str, int, None]: - if hasattr(self, "CON") and hasattr(self, "SIZ"): - return (self.CON() + self.SIZ()) // 10 - else: - return None - - @aliases(["理智", "Sanity", "SanityPoint", "理智值", "san值"], ignore_case=True) - def SAN(self) -> Union[str, int, None]: - return self.POW() - - @aliases(["最大理智值", "MaximumSanity"], ignore_case=True) - def MAX_SAN(self) -> Union[str, int, None]: - return 99 - self.player_card.CM() - - @aliases(["魔法", "魔法值", "MagicPoints"], ignore_case=True) - def MP(self) -> Union[str, int, None]: - if hasattr(self, "POW"): - return math.floor(self.POW() / 5) - else: - return None - - @aliases(["伤害加值", "DamageBonus"], ignore_case=True) - def DB(self) -> Union[int, str, None]: # noqa: F811 - sum = self.STR() + self.SIZ() - return ( - str(math.ceil((sum - 164) / 80)) + "D6" - if sum > 164 - else "1D4" - if sum > 124 - else "0" - if sum > 84 - else "-1" - if sum > 64 - else "-2" - if sum > 0 - else None - ) - - @aliases(["体格", "build"], ignore_case=True) - def BUILD(self) -> Union[str, int, None]: - sum = self.STR() + self.SIZ() - return ( - math.ceil((sum - 84) / 80) - if sum > 164 - else 1 - if sum > 124 - else 0 - if sum > 84 - else -1 - if sum > 64 - else -2 - if sum > 0 - else None - ) - - @aliases(["移动速度"], ignore_case=True) - def MOV(self) -> Union[str, int, None]: - mov = 8 - siz = self.player_card.SIZ() - str_val = self.player_card.STR() - dex = self.player_card.DEX() - age = self.AGE() - - if age >= 40: - mov -= math.floor(age / 10 - 3) - - if str_val > siz and dex > siz: - mov += 1 - elif siz > str_val and siz > dex: - mov -= 1 - - return mov - - @aliases(["兴趣技能点", "PersonalInterests"], ignore_case=True) - def PI(self) -> Union[str, int, None]: - return self.player_card.INT() * 2 - - @aliases(["闪避", "Dodge"], ignore_case=True) - def DODGE(self) -> Union[str, int, None]: - if hasattr(self.player_card, "DEX"): - return math.floor(self.player_card.DEX / 2) - return None - - @aliases(["锁匠", "开锁", "撬锁", "Locksmith"], ignore_case=True) - def LOCKSMITH(self) -> Union[str, int, None]: - return 1 - - @aliases(["动物驯养", "驯兽", "AnimalHandling"], ignore_case=True) - def ANIMAL_HANDLING(self) -> Union[str, int, None]: - return 1 diff --git a/examples/rules/COC7/Command.py b/examples/rules/COC7/Command.py deleted file mode 100644 index 9819841..0000000 --- a/examples/rules/COC7/Command.py +++ /dev/null @@ -1 +0,0 @@ -class Command: ...
\ No newline at end of file diff --git a/examples/rules/COC7/Wiki.py b/examples/rules/COC7/Wiki.py deleted file mode 100644 index b97f717..0000000 --- a/examples/rules/COC7/Wiki.py +++ /dev/null @@ -1,3 +0,0 @@ -# MyRule - -class Wiki(): ...
\ No newline at end of file diff --git a/examples/rules/COC7/__init__.py b/examples/rules/COC7/__init__.py deleted file mode 100644 index 65f40ab..0000000 --- a/examples/rules/COC7/__init__.py +++ /dev/null @@ -1,52 +0,0 @@ -import math - -from hrc.core import Core -from hrc.rule import Rule, BaseRule # noqa: F401 -from hrc.dependencies import Depends - -from .Character import Attributes -from .Wiki import Wiki -from .Command import Command - -core = Core() - - -class COC7(Rule): - - # 规则、指令、词条,必须至少实现任意一个 - attr: Attributes = Depends() # CharacterCard.Attribute - wiki: Wiki = Depends() # Wiki - cmd: Command = Depends() # Command # noqa: F821 - - @core.event_postprocessor_hook - async def auto_card(self): - if self.session and self.session.gid and self.ac: - if hasattr(self.pc.trans, "生命") or hasattr(self.pc.trans, "理智"): - self.event.call_back( - "set_group_card", self.pc.gid, f"card#{self.pc.uid}", await self.overview_card() - ) - - async def overview_card(self): - max_hp = math.floor( - (self.pc.get("CON", 0) + self.pc.get("SIZ", 0) / 10)) - max_san = math.floor(99 - self.pc.get("CM", 0)) - mp = self.pc.get("MP", 0) - mp_show = ( - " mp" + str(mp) + "/" + str(math.floor(self.pc.get("POW", 0) / 5)) - if mp and mp != math.floor(self.pc.get("POW", 0) / 5) - else "" - ) - return ( - self.pc.get("__Name", "") - + " hp" - + str(self.pc.get("HP", max_hp)) - + "/" - + str(max_hp) - + " san" - + str(self.pc.get("SAN", "?")) - + "/" - + str(max_san) - + mp_show - + " DEX" - + str(self.pc.get("DEX", "?")) - ) |
