nonebot-plugin-dnddicer 0.2.2__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/.github/workflows/docs.yml +6 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/.gitignore +3 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/CHANGELOG.md +22 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/PKG-INFO +24 -9
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/README.md +22 -7
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/.vitepress/config.mts +1 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/cast.md +35 -12
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/changelog.md +22 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/character-card.md +44 -18
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/checks.md +22 -25
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/dm-guide.md +55 -21
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/faq.md +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/hp-rest.md +36 -5
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/overview.md +12 -7
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/quickstart.md +2 -2
- nonebot_plugin_dnddicer-0.3.0/docs/guide/weapons.md +216 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/index.md +2 -2
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/__init__.py +2 -2
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/character/__init__.py +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/character/constants.py +52 -14
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/character/models.py +42 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/character/services.py +255 -23
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/__init__.py +3 -2
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/base.py +15 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/character.py +32 -34
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/hp.py +163 -2
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/text.py +93 -3
- nonebot_plugin_dnddicer-0.3.0/nonebot_plugin_dnddicer/commands/weapon.py +514 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/version.py +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/pyproject.toml +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_reinforce.txt +4 -4
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_round1.txt +5 -4
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_tower.txt +8 -8
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/cast_setup.txt +20 -5
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/char_record_error.txt +1 -1
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/char_template.txt +21 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/char_view_other.txt +10 -3
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/char_view_self.txt +5 -2
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/check_mention.txt +6 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/check_temp_bonus.txt +6 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_aoe.txt +1 -1
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/dm_player_hp.txt +10 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/dm_player_r.txt +13 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/hp_weapon_redirect.txt +6 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/hp_weapon_source.txt +10 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/quickstart_bot_info.txt +2 -2
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_attack_adv.txt +11 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_attack_basics.txt +10 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_attack_nat20.txt +7 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_damage_basic.txt +8 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_damage_suffix.txt +14 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_manage.txt +18 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_sneak_reject.txt +4 -0
- nonebot_plugin_dnddicer-0.3.0/tests/docs_examples/baseline/weapon_spell_variants.txt +18 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/cast.py +26 -6
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/scenarios.py +137 -15
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/test_docs_sync.py +1 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_character_command.py +12 -43
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_character_services.py +21 -15
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_help_command.py +2 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_hp_command.py +350 -6
- nonebot_plugin_dnddicer-0.3.0/tests/test_weapon_command.py +991 -0
- nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/char_template.txt +0 -15
- nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/check_mention.txt +0 -6
- nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_player_hp.txt +0 -9
- nonebot_plugin_dnddicer-0.2.2/tests/docs_examples/baseline/dm_player_r.txt +0 -12
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/.gitattributes +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/.github/workflows/release.yml +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/.github/workflows/test.yml +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/.python-version +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/LICENSE +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/.vitepress/plugins/chat-container.mts +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/.vitepress/scripts/sync-changelog.mjs +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/.vitepress/theme/index.ts +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/.vitepress/theme/style.css +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/battle.md +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/initiative.md +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/roll-advanced.md +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/roll-basics.md +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/battle.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/bot.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/dnd.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/group_config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/help.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/initiative.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/npc.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/roll.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/commands/roll_parse_args.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/characters.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/group_config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/initiative.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/npc_health.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/schema.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/data/service_state.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/_string_utils.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/adapter.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/ast_nodes.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/errors.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/evaluator.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/limits.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/parser.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/preprocessor.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/trace.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/default_dice.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/karma_runtime.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/result.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/roll_config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/roll_const.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/roll_utils.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/engine/roll/sequence_runtime.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/initiative/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/initiative/models.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/platform/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/nonebot_plugin_dnddicer/platform/onebot_v11.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/package-lock.json +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/package.json +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/conftest.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_adjust.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_aoe.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_cleanup.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_errors.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_guide_hit.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_open.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_shield.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/battle_zero_down.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_attr.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_cancel.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_crit_fail.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_halfling_luck.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_multi.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_no_card.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_save_bonus.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/check_skill_expertise.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_dark_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_dm_turn.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_group_save.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_init_first.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_next_battle.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_prep.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_prep_miss.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_records.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dm_turn_push.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dnd_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/dndx_record.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/faq_default_face.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/faq_dset.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/faq_dset_denied.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/hp_cleanup.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/hp_expr_paren.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/hp_resist_forms.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/hp_set.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/hp_target_search.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_batch_shared.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_batch_split.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_check_link.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_del_ambiguous.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_dup_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_first.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_mention_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_name_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_npc_fixed.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_player_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_swap.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_view.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/init_view_final.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/npc_persist.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/npc_refill_next.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/overview_name_chain.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/quickstart_bot_off.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/quickstart_bot_on.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/quickstart_first_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/quickstart_private_limits.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/rest_after.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_adv.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_dark.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_dis.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_keep.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_modifiers.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_multi.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_order_error.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_reason.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_resist.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_short.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_summary.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_adv_unimpl.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_basics_basic.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_basics_crit_1.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_basics_crit_20.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_basics_math.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_basics_plain_d.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/baseline/roll_basics_space_error.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/harness.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/test_examples_run.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/docs_examples/transcript.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/engine/test_ast_error_semantics.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/engine/test_ast_evaluator.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/engine/test_ast_integration.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/engine/test_ast_parser.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/engine/test_ast_trace_errors_limits.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/engine/test_default_ast_path.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/fake_event.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_battle_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_bot_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_command_mentions.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_command_starts.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_data_schema.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_dnd_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_dset_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_error_fallback.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_initiative_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_npc_health.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_plugin.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/tests/test_roll_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/uv.lock +0 -0
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
#
|
|
7
7
|
# 首次使用:仓库 Settings → Pages → Source 选「GitHub Actions」。
|
|
8
8
|
# 未启用前本工作流会自动跳过(保持绿色),启用后无需再改任何配置。
|
|
9
|
+
#
|
|
10
|
+
# 注意(tag 部署被拒时查这里):启用 Pages 后 GitHub 会自动建 `github-pages` 环境,
|
|
11
|
+
# 其「Deployment branches and tags」默认只允许默认分支部署——tag 推送会在 deploy 步
|
|
12
|
+
# 被拒(annotations 提示 not allowed due to environment protection rules)。
|
|
13
|
+
# 解法:Settings → Environments → github-pages → 放行标签(选 Selected branches and
|
|
14
|
+
# tags 加一条 Tag 规则 `v*`,并保留分支 main 供手动预览;或直接选 All branches and tags)。
|
|
9
15
|
name: docs
|
|
10
16
|
|
|
11
17
|
on:
|
|
@@ -8,6 +8,28 @@
|
|
|
8
8
|
- 打 `v*` 标签前,请先在下方补好该版本的小节(标题格式 `## [x.y.z] - 日期`):发布时 `.github/workflows/release.yml` 会提取与所推标签同名的小节作为 GitHub Release 的说明正文,缺小节即会在构建前直接失败。
|
|
9
9
|
-->
|
|
10
10
|
|
|
11
|
+
## [0.3.0] - 2026-09-25
|
|
12
|
+
|
|
13
|
+
### 新增
|
|
14
|
+
|
|
15
|
+
- **自定义武器与攻击系统**:
|
|
16
|
+
- 角色卡新增 `$武器$` 段(`名称+命中加值,伤害表达式+类型`,多项用 `/` 分隔;名称尾加 `x` 表示不可攻击检定的纯伤害法术),并新增 `$种族$` / `$职业$` / `$子职$` 段(游荡者的偷袭骰按等级自动计算)。
|
|
17
|
+
- `.武器名攻击` / `.武器名命中`:用卡上该武器的命中加值掷攻击检定,支持 优势/劣势、`N#` 连掷、`±` 临时加值与 `@玩家` 代掷;天然 20 提示重击、天然 1 提示必失。
|
|
18
|
+
- `.武器名伤害`:掷该武器的伤害并报出伤害类型,`副手` / `重击` / `偷袭` 后缀可组合、可加 `±` 临时加值。
|
|
19
|
+
- `.设置武器` / `.删除武器`:便捷维护卡上武器(列表查看、同名覆盖、多名称删除)。
|
|
20
|
+
- **`.hp` 伤害位置支持武器写法**:
|
|
21
|
+
- `.hp 骷髅a易伤 -战锤重击伤害+1d4` 一条命令完成掷伤与扣血;回复先报「谁用【哪件武器】造成了多少伤害」,再列出各目标的扣血读数(单目标报实际结算值、含抗性/易伤折算;一发多目标报掷出的原始值)。
|
|
22
|
+
- DM 代发不在场的玩家:尾部括号指定武器来源(`.hp 骷髅b -火焰箭伤害(洛恩)` 或 `(@玩家)`,角色名支持模糊匹配)。
|
|
23
|
+
|
|
24
|
+
### 变更
|
|
25
|
+
|
|
26
|
+
- **属性攻击命令退役(破坏性变更)**:`.力量攻击` 等六属性攻击命令整体移除,攻击检定统一走角色卡 `$武器$` 项;`$熟练$` 与 `$额外加值$` 不再接受攻击条目(含全局「攻击」键),攻击加值一律折算进武器项。**旧角色卡需重新登记**:新版本读取旧卡会报错,发送 `.角色卡清除` 后重录即可。
|
|
27
|
+
- `.bot` 简介与插件描述补充「自定义武器与攻击」表述。
|
|
28
|
+
|
|
29
|
+
### 文档
|
|
30
|
+
|
|
31
|
+
- 使用文档站新增《武器与攻击》页,全站手册同步(检定与豁免、角色卡与属性、DM 实战指南、HP 与长休、命令总览与 FAQ 等);示例团四张角色卡补齐武器与职业段,战斗示例统一到武器流程。
|
|
32
|
+
|
|
11
33
|
## [0.2.2] - 2026-09-24
|
|
12
34
|
|
|
13
35
|
### 变更
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: nonebot-plugin-dnddicer
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: 专精 DND5e/5r 跑团的 NoneBot2
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: 专精 DND5e/5r 跑团的 NoneBot2 骰娘插件(屠龙骰):掷骰表达式、角色卡与检定、自定义武器与攻击、属性生成、HP 管理、先攻列表、战斗轮等
|
|
5
5
|
Project-URL: Homepage, https://github.com/H-Elden/nonebot-plugin-dnddicer
|
|
6
6
|
Project-URL: Issues, https://github.com/H-Elden/nonebot-plugin-dnddicer/issues
|
|
7
7
|
Project-URL: Repository, https://github.com/H-Elden/nonebot-plugin-dnddicer.git
|
|
@@ -32,14 +32,14 @@ Description-Content-Type: text/markdown
|
|
|
32
32
|
|
|
33
33
|
> 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。
|
|
34
34
|
>
|
|
35
|
-
> 当前版本:**v0.
|
|
35
|
+
> 当前版本:**v0.3.0** · 完整使用手册见 **📖 [使用文档](https://h-elden.github.io/nonebot-plugin-dnddicer/)**
|
|
36
36
|
|
|
37
37
|
## ✨ 简介
|
|
38
38
|
|
|
39
39
|
DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:围绕 DND 跑团全流程持续做深做全,致力于提供功能最全面、体验最好的 DND 骰娘,零配置可加载,供任何已有机器人从商店安装即用。
|
|
40
40
|
|
|
41
41
|
- **掷骰引擎**:内置 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、优势/劣势、爆炸骰、连掷、暗骰等完整掷骰语法;
|
|
42
|
-
- **跑团全流程**:掷骰 → `.dnd` 属性生成 →
|
|
42
|
+
- **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免点命令 → 自定义武器与攻击(`.X攻击`/`.X伤害`)/ HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
|
|
43
43
|
- **规则范围**:仅 DND5e/5r——专精 DND 定位,不做 COC/D100 体系与 `.mode` 模式切换;
|
|
44
44
|
- **商店合规**:零配置可加载、本地存储走 `nonebot-plugin-localstore`、元数据完整、全程异步。
|
|
45
45
|
|
|
@@ -49,7 +49,7 @@ DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代
|
|
|
49
49
|
|
|
50
50
|
- 开始:[快速开始](./docs/guide/quickstart.md) · [示例团与人物](./docs/guide/cast.md)
|
|
51
51
|
- 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [先攻列表](./docs/guide/initiative.md)
|
|
52
|
-
- 第二章 · 进阶操作:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [HP 与长休](./docs/guide/hp-rest.md) · [战斗轮](./docs/guide/battle.md)
|
|
52
|
+
- 第二章 · 进阶操作:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [武器与攻击](./docs/guide/weapons.md) · [HP 与长休](./docs/guide/hp-rest.md) · [战斗轮](./docs/guide/battle.md)
|
|
53
53
|
- 第三章 · DM 操作:[DM 实战指南](./docs/guide/dm-guide.md)
|
|
54
54
|
- 参考 · [命令总览](./docs/guide/overview.md) · [群管理与 FAQ](./docs/guide/faq.md)
|
|
55
55
|
|
|
@@ -107,9 +107,23 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
107
107
|
| `.角色卡 @玩家` / `.角色卡 角色名` | 查看**他人**整卡(任何人可查看;记录/清除仅限本人) |
|
|
108
108
|
| `.状态 @玩家` | 查看他人的 HP 与生命骰摘要 |
|
|
109
109
|
| `.力量检定` / `.察觉检定+1` 等 | 属性/技能/先攻检定点命令,自动代入调整值/熟练/加值(`2#` 连掷、`+d4` 等可追加;表达式右侧可加 `@玩家` 代掷) |
|
|
110
|
-
| `.体质豁免` /
|
|
110
|
+
| `.体质豁免` / `.感知豁免优势` 等 | 豁免点命令(原名直配,优势/劣势后缀;同样支持尾部 `@玩家`) |
|
|
111
111
|
| `.先攻检定` / `.先攻检定 @玩家` | 掷先攻并自动写入本群先攻列表(@ 形式代不在场的玩家掷) |
|
|
112
112
|
|
|
113
|
+
### 🗡️ 武器与攻击(群聊)
|
|
114
|
+
|
|
115
|
+
角色卡通过 `$武器$` 段自定义武器/法术项:`名称+命中加值,伤害表达式+类型`,如 `长剑+8,1d8+5挥砍`;名称尾加 `x` 表示不可攻击检定,如 `火球术x,8d6火焰`。
|
|
116
|
+
|
|
117
|
+
骰娘只忠实执行、不判 AC、不自动补属性:
|
|
118
|
+
|
|
119
|
+
| 命令 | 说明 |
|
|
120
|
+
| --- | --- |
|
|
121
|
+
| `.刺剑攻击` / `.刺剑命中` | 用卡上该武器的命中加值掷攻击检定(`优势`/`劣势`、`N#` 连掷、`±` 临时加值、`@玩家` 代掷;天然 20 提示重击) |
|
|
122
|
+
| `.刺剑伤害` | 掷该武器伤害并报出类型;后缀 `副手`(不加任何加值)/ `重击`(骰数翻倍)/ `偷袭`(游荡者按等级自动附加偷袭骰)可组合,尾部可加 `±` 临时加值(如升环 `.火球术伤害+1d6`) |
|
|
123
|
+
| `.设置武器` / `.删除武器` | 维护卡上武器(同名覆盖 / 删除,多个用 `/` 分隔;`.设置武器` 无参数列出当前武器) |
|
|
124
|
+
|
|
125
|
+
详见 [武器与攻击](./docs/guide/weapons.md)。
|
|
126
|
+
|
|
113
127
|
### 🎯 属性生成(群聊 / 私聊)
|
|
114
128
|
|
|
115
129
|
| 命令 | 说明 |
|
|
@@ -122,7 +136,7 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
122
136
|
| 命令 | 说明 |
|
|
123
137
|
| --- | --- |
|
|
124
138
|
| `.hp [对象] 20/30 (5)` | 设置自己/队友/NPC HP(含临时 HP;先 `.ri 名称` 入先攻表后即可记录 NPC 血量) |
|
|
125
|
-
| `.hp [对象] -2d6+3` 等 |
|
|
139
|
+
| `.hp [对象] -2d6+3` 等 | 伤害/治疗(支持掷骰表达式;伤害位置可直接写 `-武器名伤害`,如 `-战锤重击伤害+1d4`,对应发送者卡上武器项、尾部括号可指定来源代发;目标后加 `抗性`/`易伤` 后缀可减半/加倍,分号分隔多目标同发结算) |
|
|
126
140
|
| `.hp @玩家 …` / `.hp @玩家` | 对 @ 的玩家角色卡结算 / 查看(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4` 与名称混写;需该玩家已建卡) |
|
|
127
141
|
| `.hp` / `.hp list` | 查看自己 / 本群列表(PC + NPC) |
|
|
128
142
|
| `.hp del 名称` / `.hp clr` | 删除单个 / 清空全部 NPC 血量记录(玩家角色卡请用 `.角色卡清除`,玩家先攻条目用 `.init del`) |
|
|
@@ -158,8 +172,9 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
158
172
|
2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、**NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、`.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
|
|
159
173
|
3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
|
|
160
174
|
4. ✅ **v0.2.2**:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 `.bot` 私聊文案修正;**使用文档站上线**(手册式 15 页,随发版自动部署);
|
|
161
|
-
5.
|
|
162
|
-
6.
|
|
175
|
+
5. ✅ **v0.3.0**:**自定义武器与攻击系统**(`$武器$` 段、`.武器名攻击` / `.武器名伤害`、`.设置武器` / `.删除武器`)、`.hp` 伤害位置武器写法(含来源括号代发);**属性攻击命令退役**(破坏性变更,旧卡需重录)、文档站新增《武器与攻击》页与全站同步;
|
|
176
|
+
6. ⏳ **第二期 T2**:牌堆/随机表、规则查询;
|
|
177
|
+
7. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
|
|
163
178
|
|
|
164
179
|
每版完整变更(新增 / 变更 / 修复 / 文档)见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
165
180
|
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
> 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。
|
|
4
4
|
>
|
|
5
|
-
> 当前版本:**v0.
|
|
5
|
+
> 当前版本:**v0.3.0** · 完整使用手册见 **📖 [使用文档](https://h-elden.github.io/nonebot-plugin-dnddicer/)**
|
|
6
6
|
|
|
7
7
|
## ✨ 简介
|
|
8
8
|
|
|
9
9
|
DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:围绕 DND 跑团全流程持续做深做全,致力于提供功能最全面、体验最好的 DND 骰娘,零配置可加载,供任何已有机器人从商店安装即用。
|
|
10
10
|
|
|
11
11
|
- **掷骰引擎**:内置 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、优势/劣势、爆炸骰、连掷、暗骰等完整掷骰语法;
|
|
12
|
-
- **跑团全流程**:掷骰 → `.dnd` 属性生成 →
|
|
12
|
+
- **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免点命令 → 自定义武器与攻击(`.X攻击`/`.X伤害`)/ HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮;
|
|
13
13
|
- **规则范围**:仅 DND5e/5r——专精 DND 定位,不做 COC/D100 体系与 `.mode` 模式切换;
|
|
14
14
|
- **商店合规**:零配置可加载、本地存储走 `nonebot-plugin-localstore`、元数据完整、全程异步。
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代
|
|
|
19
19
|
|
|
20
20
|
- 开始:[快速开始](./docs/guide/quickstart.md) · [示例团与人物](./docs/guide/cast.md)
|
|
21
21
|
- 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [先攻列表](./docs/guide/initiative.md)
|
|
22
|
-
- 第二章 · 进阶操作:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [HP 与长休](./docs/guide/hp-rest.md) · [战斗轮](./docs/guide/battle.md)
|
|
22
|
+
- 第二章 · 进阶操作:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [武器与攻击](./docs/guide/weapons.md) · [HP 与长休](./docs/guide/hp-rest.md) · [战斗轮](./docs/guide/battle.md)
|
|
23
23
|
- 第三章 · DM 操作:[DM 实战指南](./docs/guide/dm-guide.md)
|
|
24
24
|
- 参考 · [命令总览](./docs/guide/overview.md) · [群管理与 FAQ](./docs/guide/faq.md)
|
|
25
25
|
|
|
@@ -77,9 +77,23 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
77
77
|
| `.角色卡 @玩家` / `.角色卡 角色名` | 查看**他人**整卡(任何人可查看;记录/清除仅限本人) |
|
|
78
78
|
| `.状态 @玩家` | 查看他人的 HP 与生命骰摘要 |
|
|
79
79
|
| `.力量检定` / `.察觉检定+1` 等 | 属性/技能/先攻检定点命令,自动代入调整值/熟练/加值(`2#` 连掷、`+d4` 等可追加;表达式右侧可加 `@玩家` 代掷) |
|
|
80
|
-
| `.体质豁免` /
|
|
80
|
+
| `.体质豁免` / `.感知豁免优势` 等 | 豁免点命令(原名直配,优势/劣势后缀;同样支持尾部 `@玩家`) |
|
|
81
81
|
| `.先攻检定` / `.先攻检定 @玩家` | 掷先攻并自动写入本群先攻列表(@ 形式代不在场的玩家掷) |
|
|
82
82
|
|
|
83
|
+
### 🗡️ 武器与攻击(群聊)
|
|
84
|
+
|
|
85
|
+
角色卡通过 `$武器$` 段自定义武器/法术项:`名称+命中加值,伤害表达式+类型`,如 `长剑+8,1d8+5挥砍`;名称尾加 `x` 表示不可攻击检定,如 `火球术x,8d6火焰`。
|
|
86
|
+
|
|
87
|
+
骰娘只忠实执行、不判 AC、不自动补属性:
|
|
88
|
+
|
|
89
|
+
| 命令 | 说明 |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| `.刺剑攻击` / `.刺剑命中` | 用卡上该武器的命中加值掷攻击检定(`优势`/`劣势`、`N#` 连掷、`±` 临时加值、`@玩家` 代掷;天然 20 提示重击) |
|
|
92
|
+
| `.刺剑伤害` | 掷该武器伤害并报出类型;后缀 `副手`(不加任何加值)/ `重击`(骰数翻倍)/ `偷袭`(游荡者按等级自动附加偷袭骰)可组合,尾部可加 `±` 临时加值(如升环 `.火球术伤害+1d6`) |
|
|
93
|
+
| `.设置武器` / `.删除武器` | 维护卡上武器(同名覆盖 / 删除,多个用 `/` 分隔;`.设置武器` 无参数列出当前武器) |
|
|
94
|
+
|
|
95
|
+
详见 [武器与攻击](./docs/guide/weapons.md)。
|
|
96
|
+
|
|
83
97
|
### 🎯 属性生成(群聊 / 私聊)
|
|
84
98
|
|
|
85
99
|
| 命令 | 说明 |
|
|
@@ -92,7 +106,7 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
92
106
|
| 命令 | 说明 |
|
|
93
107
|
| --- | --- |
|
|
94
108
|
| `.hp [对象] 20/30 (5)` | 设置自己/队友/NPC HP(含临时 HP;先 `.ri 名称` 入先攻表后即可记录 NPC 血量) |
|
|
95
|
-
| `.hp [对象] -2d6+3` 等 |
|
|
109
|
+
| `.hp [对象] -2d6+3` 等 | 伤害/治疗(支持掷骰表达式;伤害位置可直接写 `-武器名伤害`,如 `-战锤重击伤害+1d4`,对应发送者卡上武器项、尾部括号可指定来源代发;目标后加 `抗性`/`易伤` 后缀可减半/加倍,分号分隔多目标同发结算) |
|
|
96
110
|
| `.hp @玩家 …` / `.hp @玩家` | 对 @ 的玩家角色卡结算 / 查看(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4` 与名称混写;需该玩家已建卡) |
|
|
97
111
|
| `.hp` / `.hp list` | 查看自己 / 本群列表(PC + NPC) |
|
|
98
112
|
| `.hp del 名称` / `.hp clr` | 删除单个 / 清空全部 NPC 血量记录(玩家角色卡请用 `.角色卡清除`,玩家先攻条目用 `.init del`) |
|
|
@@ -128,8 +142,9 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
128
142
|
2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、**NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、`.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
|
|
129
143
|
3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
|
|
130
144
|
4. ✅ **v0.2.2**:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 `.bot` 私聊文案修正;**使用文档站上线**(手册式 15 页,随发版自动部署);
|
|
131
|
-
5.
|
|
132
|
-
6.
|
|
145
|
+
5. ✅ **v0.3.0**:**自定义武器与攻击系统**(`$武器$` 段、`.武器名攻击` / `.武器名伤害`、`.设置武器` / `.删除武器`)、`.hp` 伤害位置武器写法(含来源括号代发);**属性攻击命令退役**(破坏性变更,旧卡需重录)、文档站新增《武器与攻击》页与全站同步;
|
|
146
|
+
6. ⏳ **第二期 T2**:牌堆/随机表、规则查询;
|
|
147
|
+
7. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
|
|
133
148
|
|
|
134
149
|
每版完整变更(新增 / 变更 / 修复 / 文档)见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
135
150
|
|
|
@@ -49,6 +49,7 @@ export default defineConfig({
|
|
|
49
49
|
items: [
|
|
50
50
|
{ text: '角色卡与属性', link: '/guide/character-card' },
|
|
51
51
|
{ text: '检定与豁免', link: '/guide/checks' },
|
|
52
|
+
{ text: '武器与攻击', link: '/guide/weapons' },
|
|
52
53
|
{ text: 'HP 与长休', link: '/guide/hp-rest' },
|
|
53
54
|
{ text: '战斗轮', link: '/guide/battle' },
|
|
54
55
|
],
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
四张卡按 **2024 版核心规则**建(玩家手册 / 城主指南 / 怪物图鉴,无扩展):
|
|
33
33
|
|
|
34
34
|
- **27 点购点**定基础属性 → 叠加**背景属性加值**(2024 起物种不再给属性加值)→ 再叠加 **4 级属性提升**;熟练项只登记该角色真实拥有的条目;
|
|
35
|
-
-
|
|
35
|
+
- 额外加值只写「算得进属性检定」的部分;武器类加值(含魔法武器的 +1)直接计入 `$武器$` 项的命中与伤害。
|
|
36
36
|
|
|
37
37
|
展开以下文本,可以直接复制发送给骰娘,进行角色卡记录。
|
|
38
38
|
|
|
@@ -40,41 +40,56 @@
|
|
|
40
40
|
|
|
41
41
|
```text
|
|
42
42
|
$姓名$ 薇拉
|
|
43
|
+
$种族$ 人类
|
|
44
|
+
$职业$ 圣武士
|
|
45
|
+
$子职$ 奉献之誓
|
|
43
46
|
$等级$ 5
|
|
44
47
|
$生命值$ 54/54
|
|
45
48
|
$生命骰$ 5/5 D10
|
|
46
49
|
$属性$ 18/10/14/8/10/16
|
|
47
|
-
$熟练$
|
|
48
|
-
|
|
50
|
+
$熟练$ 感知豁免/魅力豁免/运动/威吓/洞悉/游说/察觉
|
|
51
|
+
$武器$ 长剑+8,1d8+5挥砍
|
|
49
52
|
```
|
|
50
53
|
|
|
51
54
|
```text
|
|
52
55
|
$姓名$ 洛恩
|
|
56
|
+
$种族$ 精灵
|
|
57
|
+
$职业$ 法师
|
|
58
|
+
$子职$ 塑能师
|
|
53
59
|
$等级$ 5
|
|
54
60
|
$生命值$ 37/37
|
|
55
61
|
$生命骰$ 5/5 D6
|
|
56
62
|
$属性$ 8/15/16/18/10/8
|
|
57
|
-
$熟练$
|
|
63
|
+
$熟练$ 智力豁免/感知豁免/2*奥秘/历史/调查/宗教/察觉
|
|
64
|
+
$武器$ 火焰箭+7,2d10火焰/匕首+5,1d4+2穿刺
|
|
58
65
|
```
|
|
59
66
|
|
|
60
67
|
```text
|
|
61
68
|
$姓名$ 塔莉
|
|
69
|
+
$种族$ 半身人
|
|
70
|
+
$职业$ 游荡者
|
|
71
|
+
$子职$ 盗贼
|
|
62
72
|
$等级$ 5
|
|
63
73
|
$生命值$ 43/43
|
|
64
74
|
$生命骰$ 5/5 D8
|
|
65
75
|
$属性$ 8/18/16/10/14/10
|
|
66
|
-
$熟练$
|
|
76
|
+
$熟练$ 敏捷豁免/智力豁免/2*隐匿/2*巧手/先攻/欺瞒/察觉/游说/洞悉
|
|
67
77
|
$额外加值$ 隐匿:优势
|
|
78
|
+
$武器$ 刺剑+7,1d8+4穿刺/匕首+7,1d4+4穿刺
|
|
68
79
|
```
|
|
69
80
|
|
|
70
81
|
```text
|
|
71
82
|
$姓名$ 布鲁姆
|
|
83
|
+
$种族$ 矮人
|
|
84
|
+
$职业$ 牧师
|
|
85
|
+
$子职$ 生命领域
|
|
72
86
|
$等级$ 5
|
|
73
87
|
$生命值$ 48/48
|
|
74
88
|
$生命骰$ 5/5 D8
|
|
75
89
|
$属性$ 14/8/16/8/18/11
|
|
76
|
-
$熟练$
|
|
90
|
+
$熟练$ 感知豁免/魅力豁免/医药/游说/洞悉/宗教
|
|
77
91
|
$额外加值$ 隐匿:劣势/豁免:+1
|
|
92
|
+
$武器$ 战锤+5,1d8+2钝击
|
|
78
93
|
```
|
|
79
94
|
|
|
80
95
|
:::
|
|
@@ -95,16 +110,21 @@ $额外加值$ 隐匿:劣势/豁免:+1
|
|
|
95
110
|
| 豁免熟练 | 感知、魅力 | 智力、感知 | 敏捷、智力 | 感知、魅力 |
|
|
96
111
|
| 技能熟练 | 士兵:运动、威吓;<br>职业:洞悉、游说;<br>物种:察觉 | 学者:奥秘、历史;<br>职业:调查、宗教;<br>物种:察觉 | 罪犯:巧手、隐匿;<br>职业:欺瞒、察觉、游说、洞悉 | 侍僧:洞悉、宗教;<br>职业:医药、游说 |
|
|
97
112
|
| 专精 | — | 奥秘(职业) | 隐匿、巧手(职业) | — |
|
|
98
|
-
|
|
|
113
|
+
| 武器熟练 | 长剑、标枪 | 匕首、轻弩 | 刺剑、匕首、短弓 | 战锤 |
|
|
99
114
|
| 武器精通 | 长剑(削弱)、标枪(缓速) | —(法师无此特性) | 刺剑(侵扰)、匕首(迅击) | —(牧师无此特性) |
|
|
100
|
-
| 额外加值 |
|
|
115
|
+
| 额外加值 | —<br>(长剑 +1,非普通;加值计入武器项) | — | 隐匿:优势<br>(精灵之靴,非普通) | 隐匿:劣势(链甲);<br>豁免:+1(防护斗篷,非普通) |
|
|
116
|
+
| 武器 | 长剑+8,1d8+5挥砍 | 火焰箭+7,2d10火焰;<br>匕首+5,1d4+2穿刺 | 刺剑+7,1d8+4穿刺;<br>匕首+7,1d4+4穿刺 | 战锤+5,1d8+2钝击 |
|
|
101
117
|
|
|
102
118
|
要点:
|
|
103
119
|
- **属性加值来自背景**(2024 起物种不再给属性加值,改为给特性);
|
|
104
120
|
- **生命值**按「1 级取生命骰最大值 + 体质调整值,其后每级取职业固定值 + 体质调整值」计算(圣武士 6、牧师与游荡者 5、法师 4),再加上物种与专长的固定加值(矮人刚毅每级 +1、健壮每级 +2);
|
|
105
121
|
- **熟练加值**(5 级)为 +3;
|
|
106
122
|
- **调整值**为 (属性 − 10) ÷ 2 向下取整;
|
|
107
|
-
-
|
|
123
|
+
- **额外加值**只登记算得进属性检定的部分,来源为 2024 城主指南的魔法物品(5–10 级开卡时给 1 件普通 + 1 件非普通);
|
|
124
|
+
- **武器项**(`$武器$` 段)的数值:
|
|
125
|
+
- 命中加值 = 攻击属性调整 + 熟练加值(+ 魔法加值);
|
|
126
|
+
- 伤害加值 = 攻击属性调整(+ 魔法加值);
|
|
127
|
+
- 伤害类型照武器实际记录(供伤害提示与后续特性使用),详见[武器与攻击](./weapons.md)。
|
|
108
128
|
|
|
109
129
|
## 群里的第一幕
|
|
110
130
|
|
|
@@ -120,12 +140,15 @@ $额外加值$ 隐匿:劣势/豁免:+1
|
|
|
120
140
|
::: chat
|
|
121
141
|
阿茶 | .角色卡记录
|
|
122
142
|
$姓名$ 薇拉
|
|
143
|
+
$种族$ 人类
|
|
144
|
+
$职业$ 圣武士
|
|
145
|
+
$子职$ 奉献之誓
|
|
123
146
|
$等级$ 5
|
|
124
147
|
$生命值$ 54/54
|
|
125
148
|
$生命骰$ 5/5 D10
|
|
126
149
|
$属性$ 18/10/14/8/10/16
|
|
127
|
-
$熟练$
|
|
128
|
-
|
|
150
|
+
$熟练$ 感知豁免/魅力豁免/运动/威吓/洞悉/游说/察觉
|
|
151
|
+
$武器$ 长剑+8,1d8+5挥砍
|
|
129
152
|
屠龙骰 | 角色卡已设置
|
|
130
153
|
|
|
131
154
|
注:另外三张卡的记录结果相同(都回「角色卡已设置」),卡面见上方折叠块。
|
|
@@ -137,7 +160,7 @@ $额外加值$ 力量攻击:+1
|
|
|
137
160
|
| --- | --- |
|
|
138
161
|
| ① 开群与建卡 | 群主开启本群服务;四名玩家登记角色卡 |
|
|
139
162
|
| ② 旅店试骰 | 出发前的掷骰(基本表达式、优势/劣势、暗骰、连掷) |
|
|
140
|
-
| ③ 探路检定 | 属性 / 技能 /
|
|
163
|
+
| ③ 探路检定 | 属性 / 技能 / 豁免检定点命令,含 DM 代掷 |
|
|
141
164
|
| ④ 碎星隘口遭遇战 | 批量先攻、战斗轮推进、HP / AOE / 抗性易伤结算(含 NPC 与亡灵) |
|
|
142
165
|
| ⑤ 战利与长休 | 战后恢复:长休、生命骰回复 |
|
|
143
166
|
| ⑥ 收尾与清场 | 清空先攻表与 NPC 血量记录 |
|
|
@@ -14,6 +14,28 @@ editLink: false
|
|
|
14
14
|
- 打 `v*` 标签前,请先在下方补好该版本的小节(标题格式 `## [x.y.z] - 日期`):发布时 `.github/workflows/release.yml` 会提取与所推标签同名的小节作为 GitHub Release 的说明正文,缺小节即会在构建前直接失败。
|
|
15
15
|
-->
|
|
16
16
|
|
|
17
|
+
## [0.3.0] - 2026-09-25
|
|
18
|
+
|
|
19
|
+
### 新增
|
|
20
|
+
|
|
21
|
+
- **自定义武器与攻击系统**:
|
|
22
|
+
- 角色卡新增 `$武器$` 段(`名称+命中加值,伤害表达式+类型`,多项用 `/` 分隔;名称尾加 `x` 表示不可攻击检定的纯伤害法术),并新增 `$种族$` / `$职业$` / `$子职$` 段(游荡者的偷袭骰按等级自动计算)。
|
|
23
|
+
- `.武器名攻击` / `.武器名命中`:用卡上该武器的命中加值掷攻击检定,支持 优势/劣势、`N#` 连掷、`±` 临时加值与 `@玩家` 代掷;天然 20 提示重击、天然 1 提示必失。
|
|
24
|
+
- `.武器名伤害`:掷该武器的伤害并报出伤害类型,`副手` / `重击` / `偷袭` 后缀可组合、可加 `±` 临时加值。
|
|
25
|
+
- `.设置武器` / `.删除武器`:便捷维护卡上武器(列表查看、同名覆盖、多名称删除)。
|
|
26
|
+
- **`.hp` 伤害位置支持武器写法**:
|
|
27
|
+
- `.hp 骷髅a易伤 -战锤重击伤害+1d4` 一条命令完成掷伤与扣血;回复先报「谁用【哪件武器】造成了多少伤害」,再列出各目标的扣血读数(单目标报实际结算值、含抗性/易伤折算;一发多目标报掷出的原始值)。
|
|
28
|
+
- DM 代发不在场的玩家:尾部括号指定武器来源(`.hp 骷髅b -火焰箭伤害(洛恩)` 或 `(@玩家)`,角色名支持模糊匹配)。
|
|
29
|
+
|
|
30
|
+
### 变更
|
|
31
|
+
|
|
32
|
+
- **属性攻击命令退役(破坏性变更)**:`.力量攻击` 等六属性攻击命令整体移除,攻击检定统一走角色卡 `$武器$` 项;`$熟练$` 与 `$额外加值$` 不再接受攻击条目(含全局「攻击」键),攻击加值一律折算进武器项。**旧角色卡需重新登记**:新版本读取旧卡会报错,发送 `.角色卡清除` 后重录即可。
|
|
33
|
+
- `.bot` 简介与插件描述补充「自定义武器与攻击」表述。
|
|
34
|
+
|
|
35
|
+
### 文档
|
|
36
|
+
|
|
37
|
+
- 使用文档站新增《武器与攻击》页,全站手册同步(检定与豁免、角色卡与属性、DM 实战指南、HP 与长休、命令总览与 FAQ 等);示例团四张角色卡补齐武器与职业段,战斗示例统一到武器流程。
|
|
38
|
+
|
|
17
39
|
## [0.2.2] - 2026-09-24
|
|
18
40
|
|
|
19
41
|
### 变更
|
{nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.3.0}/docs/guide/character-card.md
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# 角色卡与属性
|
|
2
2
|
|
|
3
|
-
角色卡是检定的基础:把等级、六属性、熟练与额外加值登记成一张卡,之后用
|
|
3
|
+
角色卡是检定的基础:把等级、六属性、熟练与额外加值登记成一张卡,之后用 `.力量检定`、`.敏捷豁免`、`.隐匿检定` 这类点命令时,骰娘会自动代入卡上的加值,不必每次手写算式。
|
|
4
|
+
|
|
5
|
+
攻击检定与伤害掷骰需要手动录卡,走卡上的 `$武器$` 条目,见[武器与攻击](./weapons.md))。
|
|
4
6
|
|
|
5
7
|
本页解决两件事——**属性从哪来**、**卡怎么登记**;卡登记好之后怎么掷检定,见[检定与豁免](./checks.md)。
|
|
6
8
|
|
|
@@ -58,44 +60,57 @@ $属性$ 9/15/15/15/12/9
|
|
|
58
60
|
::: chat
|
|
59
61
|
小鹿 | .角色卡模板
|
|
60
62
|
屠龙骰 | $姓名$ 张三
|
|
63
|
+
$种族$ 半精灵
|
|
64
|
+
$职业$ 游荡者
|
|
65
|
+
$子职$ 刺客
|
|
61
66
|
$生命值$ 20/30 (5)
|
|
62
67
|
$生命骰$ 3/4 D8
|
|
63
68
|
$等级$ 4
|
|
64
69
|
$属性$ 10/15/12/13/8/11
|
|
65
|
-
$熟练$ 体操/2
|
|
66
|
-
$额外加值$
|
|
70
|
+
$熟练$ 体操/2*隐匿/敏捷豁免
|
|
71
|
+
$额外加值$ 豁免:+2
|
|
72
|
+
$武器$ 短剑+4,1d4+2穿刺
|
|
67
73
|
|
|
68
74
|
——提示(记录时请仅复制上方模板段并修改)——
|
|
69
75
|
属性段六个数值依次对应: 力量/敏捷/体质/智力/感知/魅力
|
|
70
|
-
额外加值段键 =
|
|
76
|
+
额外加值段键 = 六属性/技能/豁免条目, 另有作用于全部豁免的全局键: 豁免
|
|
71
77
|
额外加值取值 = 可选 优势/劣势 前缀 + ±掷骰表达式, 如: 隐匿:优势+2
|
|
78
|
+
职业段填 12 职业名之一(如 游荡者),游荡者的偷袭后缀会按等级自动附加偷袭骰
|
|
79
|
+
武器段格式 = 名称+命中加值,伤害表达式+类型(多项用 / 分隔),如 短剑+4,1d4+2穿刺
|
|
72
80
|
:::
|
|
73
81
|
|
|
74
|
-
>
|
|
82
|
+
> 「`——提示——`」以下(最后五行)是模板的**提示**,不是卡的内容——记录时只复制「`$姓名$` … `$武器$`」这一段。
|
|
75
83
|
|
|
76
84
|
段落一览(**加粗**为必填):
|
|
77
85
|
|
|
78
86
|
| 段落 | 说明 | 是否必填 |
|
|
79
87
|
| --- | --- | --- |
|
|
80
88
|
| `$姓名$` | 角色名,用于检定落款与先攻列表;不写时显示名回退到群名片 | 可选 |
|
|
89
|
+
| `$种族$` | 种族(如 `半精灵`),记录与展示用 | 可选 |
|
|
90
|
+
| `$职业$` | 12 职业规范名之一(如 `游荡者`);**游荡者**的偷袭后缀会按等级自动附加偷袭骰 | 可选 |
|
|
91
|
+
| `$子职$` | 子职(如 `刺客`),记录与展示用 | 可选 |
|
|
81
92
|
| **`$等级$`** | 等级;熟练加值 = 2 + (等级 − 1) ÷ 4 向下取整(5 级 → +3) | **必填** |
|
|
82
93
|
| **`$属性$`** | 六个数值,用 `/` 分隔,依次对应 **力量 / 敏捷 / 体质 / 智力 / 感知 / 魅力**;<br>骰娘自动计算:调整值 = (数值 − 10) ÷ 2 向下取整 | **必填** |
|
|
83
94
|
| `$生命值$` | `当前/最大(临时)`,如 `54/54`、`20/30 (5)`;<br>HP 结算改的是这里,见[HP 与长休](./hp-rest.md) | 可选 |
|
|
84
95
|
| `$生命骰$` | `当前/总数 D骰面`,如 `5/5 D8`;长休按此回复生命骰 | 可选 |
|
|
85
96
|
| `$熟练$` | 熟练条目,用 `/` 分隔;`2*隐匿` 为**专精**(双倍熟练),`0*隐匿` 显式关闭 | 可选 |
|
|
86
97
|
| `$额外加值$` | 见[下节](#额外加值) | 可选 |
|
|
98
|
+
| `$武器$` | 自定义武器/法术项:`名称+命中加值,伤害表达式+类型`(如 `短剑+4,1d4+2穿刺`),多项用 `/` 分隔;<br>名称尾加 `x` 表示不可攻击检定(如 `火球术x,8d6火焰`);见[武器与攻击](./weapons.md) | 可选 |
|
|
87
99
|
|
|
88
100
|
各段**顺序不限、可整段省略**(洛恩的卡就整段省掉了 `$额外加值$`)。记录成功后回「角色卡已设置」;再次记录会**整体覆盖**旧卡:
|
|
89
101
|
|
|
90
102
|
::: chat
|
|
91
103
|
阿茶 | .角色卡记录
|
|
92
104
|
$姓名$ 薇拉
|
|
105
|
+
$种族$ 人类
|
|
106
|
+
$职业$ 圣武士
|
|
107
|
+
$子职$ 奉献之誓
|
|
93
108
|
$等级$ 5
|
|
94
109
|
$生命值$ 54/54
|
|
95
110
|
$生命骰$ 5/5 D10
|
|
96
111
|
$属性$ 18/10/14/8/10/16
|
|
97
|
-
$熟练$
|
|
98
|
-
|
|
112
|
+
$熟练$ 感知豁免/魅力豁免/运动/威吓/洞悉/游说/察觉
|
|
113
|
+
$武器$ 长剑+8,1d8+5挥砍
|
|
99
114
|
屠龙骰 | 角色卡已设置
|
|
100
115
|
:::
|
|
101
116
|
|
|
@@ -103,18 +118,19 @@ $额外加值$ 力量攻击:+1
|
|
|
103
118
|
|
|
104
119
|
格式为 `条目:取值`,多个用 `/` 分隔;取值是**可选**的 `优势`/`劣势` 前缀加一段 ±掷骰表达式:
|
|
105
120
|
|
|
106
|
-
-
|
|
107
|
-
-
|
|
121
|
+
- 条目键:六属性名、技能名、`力量豁免`/`敏捷豁免`…;
|
|
122
|
+
- 另有作用于**全部**豁免的全局键:`豁免`;
|
|
108
123
|
- 没有内容就整段省略(洛恩的卡省掉了 `$额外加值$`);卡上带优劣势时,对应检定会直接掷出优势/劣势。
|
|
109
124
|
|
|
110
|
-
|
|
125
|
+
只登记**算得进检定**的部分——示例团两处加值都来自 2024 城主指南的魔法物品(数值出处见[示例团与人物](./cast.md#建卡依据)):
|
|
111
126
|
|
|
112
127
|
| 角色 | 卡上的写法 | 含义 |
|
|
113
128
|
| --- | --- | --- |
|
|
114
|
-
| 薇拉 | `力量攻击:+1` | 长剑 +1 的加值只进力量攻击 |
|
|
115
129
|
| 塔莉 | `隐匿:优势` | 精灵之靴:潜行自带优势 |
|
|
116
130
|
| 布鲁姆 | `豁免:+1` | 防护斗篷:所有豁免 +1(另有一条 `隐匿:劣势` 来自链甲) |
|
|
117
131
|
|
|
132
|
+
武器的命中与伤害加值不走这里。直接写进 `$武器$` 项(薇拉的长剑 +1 已在 `长剑+8,1d8+5挥砍` 里),见[武器与攻击](./weapons.md)。
|
|
133
|
+
|
|
118
134
|
限时效果的加值(祝福术 `+1d4`、激励骰…)**不要写进卡**——写成命令里的临时加值即可,见[检定与豁免](./checks.md#临时加值-不进角色卡)。
|
|
119
135
|
|
|
120
136
|
## 查看(.角色卡 / .状态)
|
|
@@ -124,12 +140,15 @@ $额外加值$ 力量攻击:+1
|
|
|
124
140
|
::: chat
|
|
125
141
|
阿茶 | .角色卡
|
|
126
142
|
屠龙骰 | $姓名$ 薇拉
|
|
143
|
+
$种族$ 人类
|
|
144
|
+
$职业$ 圣武士
|
|
145
|
+
$子职$ 奉献之誓
|
|
127
146
|
$生命值$ 54/54
|
|
128
147
|
$生命骰$ 5/5 D10
|
|
129
148
|
$等级$ 5
|
|
130
149
|
$属性$ 18/10/14/8/10/16
|
|
131
|
-
$熟练$
|
|
132
|
-
|
|
150
|
+
$熟练$ 运动/洞悉/察觉/威吓/游说/感知豁免/魅力豁免
|
|
151
|
+
$武器$ 长剑+8,1d8+5挥砍
|
|
133
152
|
老猫 | .状态
|
|
134
153
|
屠龙骰 | HP:43/43
|
|
135
154
|
生命骰:5/5 D8
|
|
@@ -141,20 +160,27 @@ $额外加值$ 力量攻击:+1
|
|
|
141
160
|
白鸦 | .角色卡 @阿茶
|
|
142
161
|
屠龙骰 | 薇拉 的角色卡:
|
|
143
162
|
$姓名$ 薇拉
|
|
163
|
+
$种族$ 人类
|
|
164
|
+
$职业$ 圣武士
|
|
165
|
+
$子职$ 奉献之誓
|
|
144
166
|
$生命值$ 54/54
|
|
145
167
|
$生命骰$ 5/5 D10
|
|
146
168
|
$等级$ 5
|
|
147
169
|
$属性$ 18/10/14/8/10/16
|
|
148
|
-
$熟练$
|
|
149
|
-
|
|
170
|
+
$熟练$ 运动/洞悉/察觉/威吓/游说/感知豁免/魅力豁免
|
|
171
|
+
$武器$ 长剑+8,1d8+5挥砍
|
|
150
172
|
白鸦 | .角色卡 洛恩
|
|
151
173
|
屠龙骰 | 洛恩 的角色卡:
|
|
152
174
|
$姓名$ 洛恩
|
|
175
|
+
$种族$ 精灵
|
|
176
|
+
$职业$ 法师
|
|
177
|
+
$子职$ 塑能师
|
|
153
178
|
$生命值$ 37/37
|
|
154
179
|
$生命骰$ 5/5 D6
|
|
155
180
|
$等级$ 5
|
|
156
181
|
$属性$ 8/15/16/18/10/8
|
|
157
|
-
$熟练$ 2
|
|
182
|
+
$熟练$ 2*奥秘/历史/调查/宗教/察觉/智力豁免/感知豁免
|
|
183
|
+
$武器$ 火焰箭+7,2d10火焰/匕首+5,1d4+2穿刺
|
|
158
184
|
白鸦 | .状态 @小满
|
|
159
185
|
屠龙骰 | 洛恩: HP:37/37
|
|
160
186
|
生命骰:5/5 D6
|
|
@@ -162,7 +188,7 @@ $熟练$ 2*奥秘/历史/调查/宗教/察觉/智力豁免/感知豁免/敏捷
|
|
|
162
188
|
|
|
163
189
|
- **查看开放、修改仅本人**:任何人可查看他人的卡(群内信息共享),而 `.角色卡记录` / `.角色卡清除` 写入的目标恒为发送者自己——带 @ 也不会改动他人的卡;
|
|
164
190
|
- `.状态` 查看他人**仅支持 @ 形式**(写角色名会按自己的状态回复);
|
|
165
|
-
- `$熟练$` 的书写顺序不限,查看时按「技能 →
|
|
191
|
+
- `$熟练$` 的书写顺序不限,查看时按「技能 → 豁免」的固定次序显示;
|
|
166
192
|
- @ 到无卡成员会提示引导建卡;角色名命中 NPC 条目时提示「是NPC条目,没有角色卡」。
|
|
167
193
|
|
|
168
194
|
## 覆盖与清除
|
|
@@ -203,7 +229,7 @@ $属性$ 10/10/10
|
|
|
203
229
|
小鹿 | .角色卡记录
|
|
204
230
|
$等级$ 1
|
|
205
231
|
$属性$ 10/10/10/10/10/10
|
|
206
|
-
$额外加值$
|
|
232
|
+
$额外加值$ 隐匿优势+2
|
|
207
233
|
屠龙骰 | 必须使用冒号(:)分割额外加值条目和内容
|
|
208
234
|
|
|
209
235
|
注:`$额外加值$` 要写成 `条目:取值` 的冒号形式。
|