nonebot-plugin-dnddicer 0.2.2__tar.gz → 0.4.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.4.0}/.github/workflows/docs.yml +6 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/.gitignore +3 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/CHANGELOG.md +48 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/PKG-INFO +50 -18
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/README.md +46 -16
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/.vitepress/config.mts +18 -6
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/battle.md +5 -5
- nonebot_plugin_dnddicer-0.4.0/docs/guide/best-practices.md +287 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/cast.md +44 -21
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/changelog.md +48 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/character-card.md +55 -29
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/checks.md +33 -34
- nonebot_plugin_dnddicer-0.4.0/docs/guide/dm-proxy.md +74 -0
- nonebot_plugin_dnddicer-0.4.0/docs/guide/dm-settlement.md +107 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/faq.md +18 -5
- nonebot_plugin_dnddicer-0.4.0/docs/guide/hp-advanced.md +63 -0
- nonebot_plugin_dnddicer-0.2.2/docs/guide/hp-rest.md → nonebot_plugin_dnddicer-0.4.0/docs/guide/hp.md +30 -59
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/initiative.md +10 -18
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/overview.md +34 -15
- nonebot_plugin_dnddicer-0.4.0/docs/guide/query-scope.md +97 -0
- nonebot_plugin_dnddicer-0.4.0/docs/guide/query.md +137 -0
- nonebot_plugin_dnddicer-0.4.0/docs/guide/quickstart.md +236 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/roll-advanced.md +25 -16
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/guide/roll-basics.md +11 -9
- nonebot_plugin_dnddicer-0.4.0/docs/guide/self-host.md +202 -0
- nonebot_plugin_dnddicer-0.4.0/docs/guide/weapons.md +216 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/index.md +11 -11
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/__init__.py +9 -5
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/character/__init__.py +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/character/constants.py +52 -14
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/character/models.py +42 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/character/services.py +255 -23
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/__init__.py +5 -2
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/base.py +15 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/character.py +35 -36
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/hp.py +163 -2
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/commands/query.py +578 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/roll.py +2 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/text.py +212 -3
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/commands/weapon.py +514 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/config.py +30 -1
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/data/query_settings.py +183 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/ast_nodes.py +11 -4
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/query/__init__.py +48 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/query/books.py +234 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/query/interaction.py +158 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/query/locating.py +263 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/query/models.py +52 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/query/source.py +400 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/__init__.py +120 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/engine.py +196 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/layout.py +219 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/templates/books_card.css +83 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/templates/books_card.html +26 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/templates/rule_card.css +101 -0
- nonebot_plugin_dnddicer-0.4.0/nonebot_plugin_dnddicer/render/templates/rule_card.html +36 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/version.py +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/pyproject.toml +9 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_reinforce.txt +4 -4
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_round1.txt +5 -4
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_tower.txt +8 -8
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/cast_setup.txt +20 -5
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/char_record_error.txt +1 -1
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/char_template.txt +21 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/char_view_other.txt +10 -3
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/char_view_self.txt +5 -2
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_crit_fail.txt +2 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_halfling_luck.txt +1 -1
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/check_mention.txt +6 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/check_temp_bonus.txt +7 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_aoe.txt +1 -1
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_group_save.txt +1 -1
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/dm_player_hp.txt +10 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/dm_player_r.txt +13 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/dm_scope_setup.txt +6 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/hp_weapon_redirect.txt +6 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/hp_weapon_source.txt +10 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/query_books_text.txt +49 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/query_full_paging.txt +31 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/query_image_switch.txt +8 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/query_multi_keyword.txt +13 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/query_scope_set.txt +18 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/query_search_select.txt +14 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/quickstart_bot_info.txt +2 -2
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/quickstart_first_roll.txt +8 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_modifiers.txt +4 -4
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_summary.txt +2 -1
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_attack_adv.txt +11 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_attack_basics.txt +10 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_attack_nat20.txt +7 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_damage_basic.txt +8 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_damage_suffix.txt +14 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_manage.txt +18 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_sneak_reject.txt +4 -0
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/baseline/weapon_spell_variants.txt +18 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/cast.py +26 -6
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/harness.py +35 -2
- nonebot_plugin_dnddicer-0.4.0/tests/docs_examples/query_demo.py +133 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/scenarios.py +228 -19
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/test_docs_sync.py +9 -3
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/engine/test_ast_integration.py +19 -0
- nonebot_plugin_dnddicer-0.4.0/tests/query_fakes.py +163 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_character_command.py +27 -34
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_character_services.py +21 -15
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_help_command.py +7 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_hp_command.py +350 -6
- nonebot_plugin_dnddicer-0.4.0/tests/test_query_books.py +117 -0
- nonebot_plugin_dnddicer-0.4.0/tests/test_query_command.py +1335 -0
- nonebot_plugin_dnddicer-0.4.0/tests/test_query_source.py +703 -0
- nonebot_plugin_dnddicer-0.4.0/tests/test_render_layout.py +189 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_roll_command.py +32 -0
- nonebot_plugin_dnddicer-0.4.0/tests/test_weapon_command.py +991 -0
- nonebot_plugin_dnddicer-0.2.2/docs/guide/dm-guide.md +0 -330
- nonebot_plugin_dnddicer-0.2.2/docs/guide/quickstart.md +0 -147
- 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/tests/docs_examples/baseline/quickstart_first_roll.txt +0 -6
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/.gitattributes +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/.github/workflows/release.yml +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/.github/workflows/test.yml +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/.python-version +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/LICENSE +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/.vitepress/plugins/chat-container.mts +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/.vitepress/scripts/sync-changelog.mjs +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/.vitepress/theme/index.ts +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/docs/.vitepress/theme/style.css +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/battle.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/bot.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/dnd.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/group_config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/help.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/initiative.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/npc.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/commands/roll_parse_args.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/characters.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/group_config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/initiative.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/npc_health.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/schema.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/data/service_state.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/_string_utils.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/adapter.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/errors.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/evaluator.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/limits.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/parser.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/preprocessor.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/ast_engine/trace.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/default_dice.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/karma_runtime.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/result.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/roll_config.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/roll_const.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/roll_utils.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/engine/roll/sequence_runtime.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/initiative/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/initiative/models.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/platform/__init__.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/nonebot_plugin_dnddicer/platform/onebot_v11.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/package-lock.json +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/package.json +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/conftest.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_adjust.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_aoe.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_cleanup.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_errors.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_guide_hit.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_open.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_shield.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/battle_zero_down.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_attr.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_cancel.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_multi.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_no_card.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_save_bonus.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/check_skill_expertise.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_dark_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_dm_turn.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_init_first.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_next_battle.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_prep.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_prep_miss.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_records.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dm_turn_push.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dnd_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/dndx_record.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/faq_default_face.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/faq_dset.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/faq_dset_denied.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/hp_cleanup.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/hp_expr_paren.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/hp_resist_forms.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/hp_set.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/hp_target_search.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_batch_shared.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_batch_split.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_check_link.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_del_ambiguous.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_dup_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_first.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_mention_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_name_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_npc_fixed.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_player_roll.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_swap.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_view.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/init_view_final.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/npc_persist.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/npc_refill_next.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/overview_name_chain.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/quickstart_bot_off.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/quickstart_bot_on.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/quickstart_private_limits.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/rest_after.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_adv.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_dark.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_dis.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_keep.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_multi.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_order_error.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_reason.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_resist.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_short.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_adv_unimpl.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_basics_basic.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_basics_crit_1.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_basics_crit_20.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_basics_math.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_basics_plain_d.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/baseline/roll_basics_space_error.txt +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/test_examples_run.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/docs_examples/transcript.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/engine/test_ast_error_semantics.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/engine/test_ast_evaluator.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/engine/test_ast_parser.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/engine/test_ast_trace_errors_limits.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/engine/test_default_ast_path.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/fake_event.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_battle_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_bot_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_command_mentions.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_command_starts.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_data_schema.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_dnd_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_dset_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_error_fallback.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_initiative_command.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_npc_health.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.0}/tests/test_plugin.py +0 -0
- {nonebot_plugin_dnddicer-0.2.2 → nonebot_plugin_dnddicer-0.4.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,54 @@
|
|
|
8
8
|
- 打 `v*` 标签前,请先在下方补好该版本的小节(标题格式 `## [x.y.z] - 日期`):发布时 `.github/workflows/release.yml` 会提取与所推标签同名的小节作为 GitHub Release 的说明正文,缺小节即会在构建前直接失败。
|
|
9
9
|
-->
|
|
10
10
|
|
|
11
|
+
## [0.4.0] - 2026-09-26
|
|
12
|
+
|
|
13
|
+
### 新增
|
|
14
|
+
|
|
15
|
+
- **规则查询**(`.查询` / `.搜索`,别名 `.检索`;需骰主开启):
|
|
16
|
+
- 两种检索:`.查询` 按词条名称匹配、`.搜索` 做全文检索;多关键词用空格分隔表示同时满足、`|` 表示任一满足。
|
|
17
|
+
- 命中多条时先列候选(回数字看词条、`+` / `-` 翻页,60 秒内只认发起者本人)。
|
|
18
|
+
- 内容来自《5e不全书》,只用于当次回复与短时内存缓存,不落盘、不随插件分发。
|
|
19
|
+
- **规则查询图片模式**:骰主开启总开关并安装可选依赖(`[render]`)后,`.查询图片 on` 可让本处的词条正文以图片返回(仿《5e不全书》的卡片样式);渲染失败或未装依赖时自动回退为文字。
|
|
20
|
+
- **查询范围**:`.查询范围` 按群 / 私聊限定本处可查的书目(英文缩写,含 31 本书与 4 个整目录键,默认全部开放);`.规则书` 列出中文书名与缩写对照(骰主开启图片模式时默认出图)。
|
|
21
|
+
|
|
22
|
+
### 变更
|
|
23
|
+
|
|
24
|
+
- **文档站按前置条件重排为四章**:第一章 · 基础操作、第二章 · 玩家进阶、第三章 · DM 进阶、第四章 · 最佳实践;HP 与代掷内容按「无需角色卡 / 已绑定角色卡 / DM」分层重排,旧的《HP 与长休》《DM 实战指南》地址失效,请从侧栏进入新页。
|
|
25
|
+
- **大成功/大失败播报另起一行**:`.r` / `.rh` 的 `N#` 连掷按次汇总、检定点的单轮与连掷播报都单独成行,不再与结果末行相连。
|
|
26
|
+
- **修饰符回显加括号**:带比较符的修饰符(`R` / `X` / `XO` / `CS`)在回复里以括号包裹(如 `2D6(R=1)+3`),与结果分隔的 `=` 区分开;`K` / `KL` / `M` / `P` / `F` 保持原样。
|
|
27
|
+
- `.bot` 简介与插件描述补充「规则查询」表述。
|
|
28
|
+
|
|
29
|
+
### 修复
|
|
30
|
+
|
|
31
|
+
- 查询范围受限时未命中的提示分命令处理:`.查询` 会附一句建议改用 `.搜索` 做全文检索;`.搜索` 自身同受范围约束,只说明范围、不再建议改用自己。
|
|
32
|
+
|
|
33
|
+
### 文档
|
|
34
|
+
|
|
35
|
+
- 使用文档站新增《规则查询》《自建查询服务》两页;《命令总览》《快速开始》《群管理与 FAQ》同步规则查询的命令、配置与书目缩写表。
|
|
36
|
+
|
|
37
|
+
## [0.3.0] - 2026-09-25
|
|
38
|
+
|
|
39
|
+
### 新增
|
|
40
|
+
|
|
41
|
+
- **自定义武器与攻击系统**:
|
|
42
|
+
- 角色卡新增 `$武器$` 段(`名称+命中加值,伤害表达式+类型`,多项用 `/` 分隔;名称尾加 `x` 表示不可攻击检定的纯伤害法术),并新增 `$种族$` / `$职业$` / `$子职$` 段(游荡者的偷袭骰按等级自动计算)。
|
|
43
|
+
- `.武器名攻击` / `.武器名命中`:用卡上该武器的命中加值掷攻击检定,支持 优势/劣势、`N#` 连掷、`±` 临时加值与 `@玩家` 代掷;天然 20 提示重击、天然 1 提示必失。
|
|
44
|
+
- `.武器名伤害`:掷该武器的伤害并报出伤害类型,`副手` / `重击` / `偷袭` 后缀可组合、可加 `±` 临时加值。
|
|
45
|
+
- `.设置武器` / `.删除武器`:便捷维护卡上武器(列表查看、同名覆盖、多名称删除)。
|
|
46
|
+
- **`.hp` 伤害位置支持武器写法**:
|
|
47
|
+
- `.hp 骷髅a易伤 -战锤重击伤害+1d4` 一条命令完成掷伤与扣血;回复先报「谁用【哪件武器】造成了多少伤害」,再列出各目标的扣血读数(单目标报实际结算值、含抗性/易伤折算;一发多目标报掷出的原始值)。
|
|
48
|
+
- DM 代发不在场的玩家:尾部括号指定武器来源(`.hp 骷髅b -火焰箭伤害(洛恩)` 或 `(@玩家)`,角色名支持模糊匹配)。
|
|
49
|
+
|
|
50
|
+
### 变更
|
|
51
|
+
|
|
52
|
+
- **属性攻击命令退役(破坏性变更)**:`.力量攻击` 等六属性攻击命令整体移除,攻击检定统一走角色卡 `$武器$` 项;`$熟练$` 与 `$额外加值$` 不再接受攻击条目(含全局「攻击」键),攻击加值一律折算进武器项。**旧角色卡需重新登记**:新版本读取旧卡会报错,发送 `.角色卡清除` 后重录即可。
|
|
53
|
+
- `.bot` 简介与插件描述补充「自定义武器与攻击」表述。
|
|
54
|
+
|
|
55
|
+
### 文档
|
|
56
|
+
|
|
57
|
+
- 使用文档站新增《武器与攻击》页,全站手册同步(检定与豁免、角色卡与属性、DM 实战指南、HP 与长休、命令总览与 FAQ 等);示例团四张角色卡补齐武器与职业段,战斗示例统一到武器流程。
|
|
58
|
+
|
|
11
59
|
## [0.2.2] - 2026-09-24
|
|
12
60
|
|
|
13
61
|
### 变更
|
|
@@ -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.4.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
|
|
@@ -26,21 +26,23 @@ Requires-Dist: nonebot2[fastapi]<3.0.0,>=2.4.0; extra == 'dev'
|
|
|
26
26
|
Requires-Dist: nonebug<1.0.0,>=0.4.4; extra == 'dev'
|
|
27
27
|
Requires-Dist: pytest-asyncio<1.0.0,>=0.25.0; extra == 'dev'
|
|
28
28
|
Requires-Dist: pytest<9.0.0,>=8.3.0; extra == 'dev'
|
|
29
|
+
Provides-Extra: render
|
|
30
|
+
Requires-Dist: nonebot-plugin-htmlkit>=0.1.0rc5; extra == 'render'
|
|
29
31
|
Description-Content-Type: text/markdown
|
|
30
32
|
|
|
31
33
|
# 屠龙骰(DNDDicer / nonebot-plugin-dnddicer)
|
|
32
34
|
|
|
33
35
|
> 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。
|
|
34
36
|
>
|
|
35
|
-
> 当前版本:**v0.
|
|
37
|
+
> 当前版本:**v0.4.0** · 完整使用手册见 **📖 [使用文档](https://h-elden.github.io/nonebot-plugin-dnddicer/)**
|
|
36
38
|
|
|
37
39
|
## ✨ 简介
|
|
38
40
|
|
|
39
41
|
DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代维护 + 插件形态** 骰娘」的空位:围绕 DND 跑团全流程持续做深做全,致力于提供功能最全面、体验最好的 DND 骰娘,零配置可加载,供任何已有机器人从商店安装即用。
|
|
40
42
|
|
|
41
43
|
- **掷骰引擎**:内置 AST 表达式引擎(Lark 文法),支持 `2d20kh1`、优势/劣势、爆炸骰、连掷、暗骰等完整掷骰语法;
|
|
42
|
-
- **跑团全流程**:掷骰 → `.dnd` 属性生成 →
|
|
43
|
-
- **规则范围**:仅 DND5e/5r
|
|
44
|
+
- **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免点命令 → 自定义武器与攻击(`.X攻击`/`.X伤害`)/ HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮 → 规则查询(`.查询`/`.搜索`,可限定书目、可出图);
|
|
45
|
+
- **规则范围**:仅 DND5e/5r:专精 DND 定位,不做 COC/D100 体系与 `.mode` 模式切换;
|
|
44
46
|
- **商店合规**:零配置可加载、本地存储走 `nonebot-plugin-localstore`、元数据完整、全程异步。
|
|
45
47
|
|
|
46
48
|
## 📖 使用文档
|
|
@@ -48,10 +50,11 @@ DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代
|
|
|
48
50
|
详细用法、输入/输出示例与常见问题见使用文档(手册式分章,含跑团示例;**在线版**:<https://h-elden.github.io/nonebot-plugin-dnddicer/>,源文件在仓库 `docs/`):
|
|
49
51
|
|
|
50
52
|
- 开始:[快速开始](./docs/guide/quickstart.md) · [示例团与人物](./docs/guide/cast.md)
|
|
51
|
-
- 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [先攻列表](./docs/guide/initiative.md)
|
|
52
|
-
- 第二章 ·
|
|
53
|
-
- 第三章 · DM
|
|
54
|
-
-
|
|
53
|
+
- 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [生命值管理](./docs/guide/hp.md) · [先攻列表](./docs/guide/initiative.md) · [战斗轮](./docs/guide/battle.md) · [规则查询](./docs/guide/query.md)
|
|
54
|
+
- 第二章 · 玩家进阶:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [武器与攻击](./docs/guide/weapons.md) · [HP 进阶与长休](./docs/guide/hp-advanced.md)
|
|
55
|
+
- 第三章 · DM 进阶:[代掷与代操作](./docs/guide/dm-proxy.md) · [血量与伤害结算](./docs/guide/dm-settlement.md) · [查询范围](./docs/guide/query-scope.md)
|
|
56
|
+
- 第四章 · 最佳实践:[最佳实践](./docs/guide/best-practices.md)
|
|
57
|
+
- 参考:[命令总览](./docs/guide/overview.md) · [群管理与 FAQ](./docs/guide/faq.md) · [自建查询服务](./docs/guide/self-host.md)
|
|
55
58
|
|
|
56
59
|
## 📦 安装
|
|
57
60
|
|
|
@@ -87,9 +90,9 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
87
90
|
|
|
88
91
|
## 🎲 用法
|
|
89
92
|
|
|
90
|
-
> 命令以 `.`(或全角 `。`)开头;命令起始符默认仅 `.` / `。`,如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。**群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off` 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @
|
|
93
|
+
> 命令以 `.`(或全角 `。`)开头;命令起始符默认仅 `.` / `。`,如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。**群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off` 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @ 本机器人;私聊不受服务开关限制,但可用命令更少:角色卡、检定、HP、先攻等仅限群聊(差异见[快速开始](./docs/guide/quickstart.md))。
|
|
91
94
|
>
|
|
92
|
-
> **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员**
|
|
95
|
+
> **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员** 指定目标:直连该成员在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4`、`.ri+3 @玩家`、`.init del @玩家`、`.回合 @玩家`、`.角色卡 @玩家`、`.力量豁免 @玩家`、`.先攻检定 @玩家` 等)。完整机制见[代掷与代操作](./docs/guide/dm-proxy.md),命令清单见[命令总览 - @ 提及目标](./docs/guide/overview.md#提及目标-dm-代操作)。
|
|
93
96
|
|
|
94
97
|
### 🎲 掷骰(群聊 / 私聊)
|
|
95
98
|
|
|
@@ -107,9 +110,23 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
107
110
|
| `.角色卡 @玩家` / `.角色卡 角色名` | 查看**他人**整卡(任何人可查看;记录/清除仅限本人) |
|
|
108
111
|
| `.状态 @玩家` | 查看他人的 HP 与生命骰摘要 |
|
|
109
112
|
| `.力量检定` / `.察觉检定+1` 等 | 属性/技能/先攻检定点命令,自动代入调整值/熟练/加值(`2#` 连掷、`+d4` 等可追加;表达式右侧可加 `@玩家` 代掷) |
|
|
110
|
-
| `.体质豁免` /
|
|
113
|
+
| `.体质豁免` / `.感知豁免优势` 等 | 豁免点命令(原名直配,优势/劣势后缀;同样支持尾部 `@玩家`) |
|
|
111
114
|
| `.先攻检定` / `.先攻检定 @玩家` | 掷先攻并自动写入本群先攻列表(@ 形式代不在场的玩家掷) |
|
|
112
115
|
|
|
116
|
+
### 🗡️ 武器与攻击(群聊)
|
|
117
|
+
|
|
118
|
+
角色卡通过 `$武器$` 段自定义武器/法术项:`名称+命中加值,伤害表达式+类型`,如 `长剑+8,1d8+5挥砍`;名称尾加 `x` 表示不可攻击检定,如 `火球术x,8d6火焰`。
|
|
119
|
+
|
|
120
|
+
骰娘只忠实执行、不判 AC、不自动补属性:
|
|
121
|
+
|
|
122
|
+
| 命令 | 说明 |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| `.刺剑攻击` / `.刺剑命中` | 用卡上该武器的命中加值掷攻击检定(`优势`/`劣势`、`N#` 连掷、`±` 临时加值、`@玩家` 代掷;天然 20 提示重击) |
|
|
125
|
+
| `.刺剑伤害` | 掷该武器伤害并报出类型;后缀 `副手`(不加任何加值)/ `重击`(骰数翻倍)/ `偷袭`(游荡者按等级自动附加偷袭骰)可组合,尾部可加 `±` 临时加值(如升环 `.火球术伤害+1d6`) |
|
|
126
|
+
| `.设置武器` / `.删除武器` | 维护卡上武器(同名覆盖 / 删除,多个用 `/` 分隔;`.设置武器` 无参数列出当前武器) |
|
|
127
|
+
|
|
128
|
+
详见 [武器与攻击](./docs/guide/weapons.md)。
|
|
129
|
+
|
|
113
130
|
### 🎯 属性生成(群聊 / 私聊)
|
|
114
131
|
|
|
115
132
|
| 命令 | 说明 |
|
|
@@ -117,18 +134,20 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
117
134
|
| `.dnd [次数] [原因]` | 4D6K3 掷点生成六项属性(附合计与降序,自行分配给六属性) |
|
|
118
135
|
| `.dndx [次数] [原因]` | 4D6K3 掷点并绑定属性名(不排序,掷出即定、可直接抄入角色卡) |
|
|
119
136
|
|
|
120
|
-
### ❤️
|
|
137
|
+
### ❤️ 生命值管理(群聊)
|
|
121
138
|
|
|
122
139
|
| 命令 | 说明 |
|
|
123
140
|
| --- | --- |
|
|
124
141
|
| `.hp [对象] 20/30 (5)` | 设置自己/队友/NPC HP(含临时 HP;先 `.ri 名称` 入先攻表后即可记录 NPC 血量) |
|
|
125
|
-
| `.hp [对象] -2d6+3` 等 |
|
|
142
|
+
| `.hp [对象] -2d6+3` 等 | 伤害/治疗(支持掷骰表达式;伤害位置可直接写 `-武器名伤害`,如 `-战锤重击伤害+1d4`,对应发送者卡上武器项、尾部括号可指定来源代发;目标后加 `抗性`/`易伤` 后缀可减半/加倍,分号分隔多目标同发结算) |
|
|
126
143
|
| `.hp @玩家 …` / `.hp @玩家` | 对 @ 的玩家角色卡结算 / 查看(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4` 与名称混写;需该玩家已建卡) |
|
|
127
144
|
| `.hp` / `.hp list` | 查看自己 / 本群列表(PC + NPC) |
|
|
128
145
|
| `.hp del 名称` / `.hp clr` | 删除单个 / 清空全部 NPC 血量记录(玩家角色卡请用 `.角色卡清除`,玩家先攻条目用 `.init del`) |
|
|
129
146
|
| `.npc 持久/临时 名称` | NPC 血量跨战斗保持 / 恢复默认(同名 NPC 新入先攻表默认自动回满并提示) |
|
|
130
147
|
| `.长休` / `.长休 @玩家` | 长休结算(回满 HP、清临时 HP、回复一半生命骰);@ 形式代不在场的玩家收尾 |
|
|
131
148
|
|
|
149
|
+
> 基础用法见[生命值管理](./docs/guide/hp.md),武器伤害写法与长休进阶见 [HP 进阶与长休](./docs/guide/hp-advanced.md),DM 的结算打法见[血量与伤害结算](./docs/guide/dm-settlement.md)。
|
|
150
|
+
|
|
132
151
|
### ⚔️ 先攻与战斗轮(群聊)
|
|
133
152
|
|
|
134
153
|
| 命令 | 说明 |
|
|
@@ -142,6 +161,17 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
142
161
|
| `.回合 @玩家` | 跳转到该玩家的条目(不受改名/同名歧义影响) |
|
|
143
162
|
| `.ed` | 结束当前回合并自动推进(`.结束` 别名) |
|
|
144
163
|
|
|
164
|
+
### 🔍 规则查询(群聊 / 私聊,需骰主开启)
|
|
165
|
+
|
|
166
|
+
| 命令 | 说明 |
|
|
167
|
+
| --- | --- |
|
|
168
|
+
| `.查询 <关键词>` / `.搜索 <关键词>` | 按名称 / 全文检索《5e不全书》;多关键词用空格分隔表示同时满足、`\|` 表示或;返回候选后回数字看词条、`+` / `-` 翻页(60 秒内有效、只认发起者本人) |
|
|
169
|
+
| `.查询图片 [on/off]` | 查看 / 切换本处的词条图片显示(群聊按群、私聊按本人;需骰主先开启图片模式,否则报错并回退文字) |
|
|
170
|
+
| `.查询范围 [缩写…]` | 查看 / 收窄本处可查询的书目范围(如 `.查询范围 PHB24,MM25`;`.查询范围 全部` 恢复;不设置即全部开放) |
|
|
171
|
+
| `.规则书` | 列出可设置的书目缩写与中文名对照(骰主开启图片模式时默认出图) |
|
|
172
|
+
|
|
173
|
+
> 规则查询默认关闭(`dnddicer_query_enabled`):开启后群聊仍受本群服务开关管辖,私聊可用;查询内容来自《5e不全书》,只用于当次回复与短时内存缓存、不落盘、不随插件分发。详见[规则查询](./docs/guide/query.md)。
|
|
174
|
+
|
|
145
175
|
### ⚙️ 群管理(群聊)
|
|
146
176
|
|
|
147
177
|
| 命令 | 说明 |
|
|
@@ -150,16 +180,18 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
150
180
|
| `.bot [on/off]` | 插件信息查询 / 本群服务开关(群主/管理员,需 @) |
|
|
151
181
|
| `.帮助` / `.help [命令]` | 命令总览 / 指定命令详细用法(如 `.help r`) |
|
|
152
182
|
|
|
153
|
-
> 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n`
|
|
183
|
+
> 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n` 特殊判定;牌堆/随机表(T2)与法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。
|
|
154
184
|
|
|
155
185
|
## 📄 版本与路线
|
|
156
186
|
|
|
157
|
-
1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休(含抗性/易伤与 AOE
|
|
187
|
+
1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休(含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮,全部落地、全量测试通过;
|
|
158
188
|
2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、**NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、`.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
|
|
159
189
|
3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
|
|
160
190
|
4. ✅ **v0.2.2**:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 `.bot` 私聊文案修正;**使用文档站上线**(手册式 15 页,随发版自动部署);
|
|
161
|
-
5.
|
|
162
|
-
6.
|
|
191
|
+
5. ✅ **v0.3.0**:**自定义武器与攻击系统**(`$武器$` 段、`.武器名攻击` / `.武器名伤害`、`.设置武器` / `.删除武器`)、`.hp` 伤害位置武器写法(含来源括号代发);**属性攻击命令退役**(破坏性变更,旧卡需重录)、文档站新增《武器与攻击》页与全站同步;
|
|
192
|
+
6. ✅ **v0.4.0**:**规则查询**(`.查询` / `.搜索` 两种检索、候选选择与翻页、`.查询图片` 图片模式、`.查询范围` 书目限定与 `.规则书`);**文档站按前置条件重排为四章**(基础操作 / 玩家进阶 / DM 进阶 / 最佳实践);大成功/大失败播报另起一行、修饰符回显加括号;
|
|
193
|
+
7. ⏳ **第二期余下**:牌堆/随机表;
|
|
194
|
+
8. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
|
|
163
195
|
|
|
164
196
|
每版完整变更(新增 / 变更 / 修复 / 文档)见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
165
197
|
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
> 专精 **DND5e / DND5r** 跑团的 [NoneBot2](https://nonebot.dev/) 骰娘插件(OneBot V11 适配器),致力于做功能最全面、体验最好的 DND 骰娘。
|
|
4
4
|
>
|
|
5
|
-
> 当前版本:**v0.
|
|
5
|
+
> 当前版本:**v0.4.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` 属性生成 →
|
|
13
|
-
- **规则范围**:仅 DND5e/5r
|
|
12
|
+
- **跑团全流程**:掷骰 → `.dnd` 属性生成 → 角色卡与检定/豁免点命令 → 自定义武器与攻击(`.X攻击`/`.X伤害`)/ HP 管理(伤害掷骰、抗性/易伤、AOE 多目标结算、长休)→ 先攻列表与战斗轮 → 规则查询(`.查询`/`.搜索`,可限定书目、可出图);
|
|
13
|
+
- **规则范围**:仅 DND5e/5r:专精 DND 定位,不做 COC/D100 体系与 `.mode` 模式切换;
|
|
14
14
|
- **商店合规**:零配置可加载、本地存储走 `nonebot-plugin-localstore`、元数据完整、全程异步。
|
|
15
15
|
|
|
16
16
|
## 📖 使用文档
|
|
@@ -18,10 +18,11 @@ DNDDicer 的目标是填补「NoneBot 商店中缺少 **DND5e/5r 专业 + 现代
|
|
|
18
18
|
详细用法、输入/输出示例与常见问题见使用文档(手册式分章,含跑团示例;**在线版**:<https://h-elden.github.io/nonebot-plugin-dnddicer/>,源文件在仓库 `docs/`):
|
|
19
19
|
|
|
20
20
|
- 开始:[快速开始](./docs/guide/quickstart.md) · [示例团与人物](./docs/guide/cast.md)
|
|
21
|
-
- 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [先攻列表](./docs/guide/initiative.md)
|
|
22
|
-
- 第二章 ·
|
|
23
|
-
- 第三章 · DM
|
|
24
|
-
-
|
|
21
|
+
- 第一章 · 基础操作:[掷骰基础](./docs/guide/roll-basics.md) · [掷骰进阶](./docs/guide/roll-advanced.md) · [生命值管理](./docs/guide/hp.md) · [先攻列表](./docs/guide/initiative.md) · [战斗轮](./docs/guide/battle.md) · [规则查询](./docs/guide/query.md)
|
|
22
|
+
- 第二章 · 玩家进阶:[角色卡与属性](./docs/guide/character-card.md) · [检定与豁免](./docs/guide/checks.md) · [武器与攻击](./docs/guide/weapons.md) · [HP 进阶与长休](./docs/guide/hp-advanced.md)
|
|
23
|
+
- 第三章 · DM 进阶:[代掷与代操作](./docs/guide/dm-proxy.md) · [血量与伤害结算](./docs/guide/dm-settlement.md) · [查询范围](./docs/guide/query-scope.md)
|
|
24
|
+
- 第四章 · 最佳实践:[最佳实践](./docs/guide/best-practices.md)
|
|
25
|
+
- 参考:[命令总览](./docs/guide/overview.md) · [群管理与 FAQ](./docs/guide/faq.md) · [自建查询服务](./docs/guide/self-host.md)
|
|
25
26
|
|
|
26
27
|
## 📦 安装
|
|
27
28
|
|
|
@@ -57,9 +58,9 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
57
58
|
|
|
58
59
|
## 🎲 用法
|
|
59
60
|
|
|
60
|
-
> 命令以 `.`(或全角 `。`)开头;命令起始符默认仅 `.` / `。`,如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。**群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off` 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @
|
|
61
|
+
> 命令以 `.`(或全角 `。`)开头;命令起始符默认仅 `.` / `。`,如需用宿主斜杠 `/` 等起始符触发(如 `/.help`),请设置配置项 `dnddicer_use_host_command_starts=true`。**群聊服务默认关闭(白名单)**:需群主/管理员发送 `.bot on` 开启本群服务;`.bot off` 关闭后本群不再响应命令(`.bot` 本身不受影响)。群聊中使用 `.bot` 需先 @ 本机器人;私聊不受服务开关限制,但可用命令更少:角色卡、检定、HP、先攻等仅限群聊(差异见[快速开始](./docs/guide/quickstart.md))。
|
|
61
62
|
>
|
|
62
|
-
> **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员**
|
|
63
|
+
> **DM 代操作(@ 提及目标)**:多数带目标的命令支持用 **@群成员** 指定目标:直连该成员在本群的角色卡,不受同名 NPC/改名影响,且可与名称混写(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4`、`.ri+3 @玩家`、`.init del @玩家`、`.回合 @玩家`、`.角色卡 @玩家`、`.力量豁免 @玩家`、`.先攻检定 @玩家` 等)。完整机制见[代掷与代操作](./docs/guide/dm-proxy.md),命令清单见[命令总览 - @ 提及目标](./docs/guide/overview.md#提及目标-dm-代操作)。
|
|
63
64
|
|
|
64
65
|
### 🎲 掷骰(群聊 / 私聊)
|
|
65
66
|
|
|
@@ -77,9 +78,23 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
77
78
|
| `.角色卡 @玩家` / `.角色卡 角色名` | 查看**他人**整卡(任何人可查看;记录/清除仅限本人) |
|
|
78
79
|
| `.状态 @玩家` | 查看他人的 HP 与生命骰摘要 |
|
|
79
80
|
| `.力量检定` / `.察觉检定+1` 等 | 属性/技能/先攻检定点命令,自动代入调整值/熟练/加值(`2#` 连掷、`+d4` 等可追加;表达式右侧可加 `@玩家` 代掷) |
|
|
80
|
-
| `.体质豁免` /
|
|
81
|
+
| `.体质豁免` / `.感知豁免优势` 等 | 豁免点命令(原名直配,优势/劣势后缀;同样支持尾部 `@玩家`) |
|
|
81
82
|
| `.先攻检定` / `.先攻检定 @玩家` | 掷先攻并自动写入本群先攻列表(@ 形式代不在场的玩家掷) |
|
|
82
83
|
|
|
84
|
+
### 🗡️ 武器与攻击(群聊)
|
|
85
|
+
|
|
86
|
+
角色卡通过 `$武器$` 段自定义武器/法术项:`名称+命中加值,伤害表达式+类型`,如 `长剑+8,1d8+5挥砍`;名称尾加 `x` 表示不可攻击检定,如 `火球术x,8d6火焰`。
|
|
87
|
+
|
|
88
|
+
骰娘只忠实执行、不判 AC、不自动补属性:
|
|
89
|
+
|
|
90
|
+
| 命令 | 说明 |
|
|
91
|
+
| --- | --- |
|
|
92
|
+
| `.刺剑攻击` / `.刺剑命中` | 用卡上该武器的命中加值掷攻击检定(`优势`/`劣势`、`N#` 连掷、`±` 临时加值、`@玩家` 代掷;天然 20 提示重击) |
|
|
93
|
+
| `.刺剑伤害` | 掷该武器伤害并报出类型;后缀 `副手`(不加任何加值)/ `重击`(骰数翻倍)/ `偷袭`(游荡者按等级自动附加偷袭骰)可组合,尾部可加 `±` 临时加值(如升环 `.火球术伤害+1d6`) |
|
|
94
|
+
| `.设置武器` / `.删除武器` | 维护卡上武器(同名覆盖 / 删除,多个用 `/` 分隔;`.设置武器` 无参数列出当前武器) |
|
|
95
|
+
|
|
96
|
+
详见 [武器与攻击](./docs/guide/weapons.md)。
|
|
97
|
+
|
|
83
98
|
### 🎯 属性生成(群聊 / 私聊)
|
|
84
99
|
|
|
85
100
|
| 命令 | 说明 |
|
|
@@ -87,18 +102,20 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
87
102
|
| `.dnd [次数] [原因]` | 4D6K3 掷点生成六项属性(附合计与降序,自行分配给六属性) |
|
|
88
103
|
| `.dndx [次数] [原因]` | 4D6K3 掷点并绑定属性名(不排序,掷出即定、可直接抄入角色卡) |
|
|
89
104
|
|
|
90
|
-
### ❤️
|
|
105
|
+
### ❤️ 生命值管理(群聊)
|
|
91
106
|
|
|
92
107
|
| 命令 | 说明 |
|
|
93
108
|
| --- | --- |
|
|
94
109
|
| `.hp [对象] 20/30 (5)` | 设置自己/队友/NPC HP(含临时 HP;先 `.ri 名称` 入先攻表后即可记录 NPC 血量) |
|
|
95
|
-
| `.hp [对象] -2d6+3` 等 |
|
|
110
|
+
| `.hp [对象] -2d6+3` 等 | 伤害/治疗(支持掷骰表达式;伤害位置可直接写 `-武器名伤害`,如 `-战锤重击伤害+1d4`,对应发送者卡上武器项、尾部括号可指定来源代发;目标后加 `抗性`/`易伤` 后缀可减半/加倍,分号分隔多目标同发结算) |
|
|
96
111
|
| `.hp @玩家 …` / `.hp @玩家` | 对 @ 的玩家角色卡结算 / 查看(`.hp @玩家 -4d6`、`.hp @玩家;地精 -d4` 与名称混写;需该玩家已建卡) |
|
|
97
112
|
| `.hp` / `.hp list` | 查看自己 / 本群列表(PC + NPC) |
|
|
98
113
|
| `.hp del 名称` / `.hp clr` | 删除单个 / 清空全部 NPC 血量记录(玩家角色卡请用 `.角色卡清除`,玩家先攻条目用 `.init del`) |
|
|
99
114
|
| `.npc 持久/临时 名称` | NPC 血量跨战斗保持 / 恢复默认(同名 NPC 新入先攻表默认自动回满并提示) |
|
|
100
115
|
| `.长休` / `.长休 @玩家` | 长休结算(回满 HP、清临时 HP、回复一半生命骰);@ 形式代不在场的玩家收尾 |
|
|
101
116
|
|
|
117
|
+
> 基础用法见[生命值管理](./docs/guide/hp.md),武器伤害写法与长休进阶见 [HP 进阶与长休](./docs/guide/hp-advanced.md),DM 的结算打法见[血量与伤害结算](./docs/guide/dm-settlement.md)。
|
|
118
|
+
|
|
102
119
|
### ⚔️ 先攻与战斗轮(群聊)
|
|
103
120
|
|
|
104
121
|
| 命令 | 说明 |
|
|
@@ -112,6 +129,17 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
112
129
|
| `.回合 @玩家` | 跳转到该玩家的条目(不受改名/同名歧义影响) |
|
|
113
130
|
| `.ed` | 结束当前回合并自动推进(`.结束` 别名) |
|
|
114
131
|
|
|
132
|
+
### 🔍 规则查询(群聊 / 私聊,需骰主开启)
|
|
133
|
+
|
|
134
|
+
| 命令 | 说明 |
|
|
135
|
+
| --- | --- |
|
|
136
|
+
| `.查询 <关键词>` / `.搜索 <关键词>` | 按名称 / 全文检索《5e不全书》;多关键词用空格分隔表示同时满足、`\|` 表示或;返回候选后回数字看词条、`+` / `-` 翻页(60 秒内有效、只认发起者本人) |
|
|
137
|
+
| `.查询图片 [on/off]` | 查看 / 切换本处的词条图片显示(群聊按群、私聊按本人;需骰主先开启图片模式,否则报错并回退文字) |
|
|
138
|
+
| `.查询范围 [缩写…]` | 查看 / 收窄本处可查询的书目范围(如 `.查询范围 PHB24,MM25`;`.查询范围 全部` 恢复;不设置即全部开放) |
|
|
139
|
+
| `.规则书` | 列出可设置的书目缩写与中文名对照(骰主开启图片模式时默认出图) |
|
|
140
|
+
|
|
141
|
+
> 规则查询默认关闭(`dnddicer_query_enabled`):开启后群聊仍受本群服务开关管辖,私聊可用;查询内容来自《5e不全书》,只用于当次回复与短时内存缓存、不落盘、不随插件分发。详见[规则查询](./docs/guide/query.md)。
|
|
142
|
+
|
|
115
143
|
### ⚙️ 群管理(群聊)
|
|
116
144
|
|
|
117
145
|
| 命令 | 说明 |
|
|
@@ -120,16 +148,18 @@ plugins = ["nonebot_plugin_dnddicer"]
|
|
|
120
148
|
| `.bot [on/off]` | 插件信息查询 / 本群服务开关(群主/管理员,需 @) |
|
|
121
149
|
| `.帮助` / `.help [命令]` | 命令总览 / 指定命令详细用法(如 `.help r`) |
|
|
122
150
|
|
|
123
|
-
> 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n`
|
|
151
|
+
> 一期范围外功能会**显式提示而非静默**:`.r exp` 期望值采样、`.r a/n` 特殊判定;牌堆/随机表(T2)与法术位/死亡豁免/BUFF 表(T3 候选)见下方路线。
|
|
124
152
|
|
|
125
153
|
## 📄 版本与路线
|
|
126
154
|
|
|
127
|
-
1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休(含抗性/易伤与 AOE
|
|
155
|
+
1. ✅ **v0.1.0**(第一期 = T0 + T1 + 战斗轮简化版 + `.bot` 服务开关):掷骰引擎移植、`.r/.rh`、帮助、群配置(`.dset`)、角色卡与检定/豁免/攻击、`.dnd` 属性生成、HP 管理与长休(含抗性/易伤与 AOE 伤害掷骰)、先攻列表、战斗轮,全部落地、全量测试通过;
|
|
128
156
|
2. ✅ **v0.2.0**:HP 抗性/易伤与 AOE 掷骰完善、`.dnd 原因` 兼容修复、**NPC/怪物血量**(三层目标搜索、先攻列表与 `.hp list` 联动、`.ri` 入表自动回满、`.npc 持久/临时` 跨战斗保持)、`.dndx` 属性名绑定掷点;
|
|
129
157
|
3. ✅ **v0.2.1**:**@ 提及目标**(DM 可代玩家操作 `.hp`/`.npc`/`.ri`/`.回合` 等、查看角色卡)、玩家名称显示统一回退链、`.hp del/clr` 语义修订(仅作用 NPC 血量)、优势/劣势别名粘连等真机反馈修复;
|
|
130
158
|
4. ✅ **v0.2.2**:掷骰说明文字按四则运算还原(常量复合子表达式与一元负号)、私聊下的群聊限定命令不再静默与 `.bot` 私聊文案修正;**使用文档站上线**(手册式 15 页,随发版自动部署);
|
|
131
|
-
5.
|
|
132
|
-
6.
|
|
159
|
+
5. ✅ **v0.3.0**:**自定义武器与攻击系统**(`$武器$` 段、`.武器名攻击` / `.武器名伤害`、`.设置武器` / `.删除武器`)、`.hp` 伤害位置武器写法(含来源括号代发);**属性攻击命令退役**(破坏性变更,旧卡需重录)、文档站新增《武器与攻击》页与全站同步;
|
|
160
|
+
6. ✅ **v0.4.0**:**规则查询**(`.查询` / `.搜索` 两种检索、候选选择与翻页、`.查询图片` 图片模式、`.查询范围` 书目限定与 `.规则书`);**文档站按前置条件重排为四章**(基础操作 / 玩家进阶 / DM 进阶 / 最佳实践);大成功/大失败播报另起一行、修饰符回显加括号;
|
|
161
|
+
7. ⏳ **第二期余下**:牌堆/随机表;
|
|
162
|
+
8. ⏳(可选)**T3 增强期**:法术位管理(`.ss/.cast`)、死亡豁免闭环(`.ds`)、BUFF/临时加值表(`.buff`)等。
|
|
133
163
|
|
|
134
164
|
每版完整变更(新增 / 变更 / 修复 / 文档)见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
135
165
|
|
|
@@ -8,7 +8,7 @@ export default defineConfig({
|
|
|
8
8
|
lang: 'zh-CN',
|
|
9
9
|
title: '屠龙骰 DNDDicer',
|
|
10
10
|
description:
|
|
11
|
-
'专精 DND5e/5r 的 QQ
|
|
11
|
+
'专精 DND5e/5r 的 QQ 跑团骰娘插件使用文档:掷骰表达式、角色卡与属性、检定与豁免、生命值管理、先攻列表与战斗轮、规则查询、DM 进阶与最佳实践',
|
|
12
12
|
base: '/nonebot-plugin-dnddicer/',
|
|
13
13
|
cleanUrls: true,
|
|
14
14
|
lastUpdated: true,
|
|
@@ -41,27 +41,39 @@ export default defineConfig({
|
|
|
41
41
|
items: [
|
|
42
42
|
{ text: '掷骰基础', link: '/guide/roll-basics' },
|
|
43
43
|
{ text: '掷骰进阶', link: '/guide/roll-advanced' },
|
|
44
|
+
{ text: '生命值管理', link: '/guide/hp' },
|
|
44
45
|
{ text: '先攻列表', link: '/guide/initiative' },
|
|
46
|
+
{ text: '战斗轮', link: '/guide/battle' },
|
|
47
|
+
{ text: '规则查询', link: '/guide/query' },
|
|
45
48
|
],
|
|
46
49
|
},
|
|
47
50
|
{
|
|
48
|
-
text: '第二章 ·
|
|
51
|
+
text: '第二章 · 玩家进阶',
|
|
49
52
|
items: [
|
|
50
53
|
{ text: '角色卡与属性', link: '/guide/character-card' },
|
|
51
54
|
{ text: '检定与豁免', link: '/guide/checks' },
|
|
52
|
-
{ text: '
|
|
53
|
-
{ text: '
|
|
55
|
+
{ text: '武器与攻击', link: '/guide/weapons' },
|
|
56
|
+
{ text: 'HP 进阶与长休', link: '/guide/hp-advanced' },
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
text: '第三章 · DM 进阶',
|
|
61
|
+
items: [
|
|
62
|
+
{ text: '代掷与代操作', link: '/guide/dm-proxy' },
|
|
63
|
+
{ text: '血量与伤害结算', link: '/guide/dm-settlement' },
|
|
64
|
+
{ text: '查询范围', link: '/guide/query-scope' },
|
|
54
65
|
],
|
|
55
66
|
},
|
|
56
67
|
{
|
|
57
|
-
text: '
|
|
58
|
-
items: [{ text: '
|
|
68
|
+
text: '第四章 · 最佳实践',
|
|
69
|
+
items: [{ text: '最佳实践', link: '/guide/best-practices' }],
|
|
59
70
|
},
|
|
60
71
|
{
|
|
61
72
|
text: '参考',
|
|
62
73
|
items: [
|
|
63
74
|
{ text: '命令总览', link: '/guide/overview' },
|
|
64
75
|
{ text: '群管理与 FAQ', link: '/guide/faq' },
|
|
76
|
+
{ text: '自建查询服务(可选)', link: '/guide/self-host' },
|
|
65
77
|
{ text: '更新日志', link: '/guide/changelog' },
|
|
66
78
|
],
|
|
67
79
|
},
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
>
|
|
26
26
|
> `.br` 播「已创建新战斗轮」面向开局,`.init clr` 播「已清除先攻列表」面向清表。
|
|
27
27
|
>
|
|
28
|
-
>
|
|
28
|
+
> 战斗结束后不必专门收尾命令,不再推进即可,下次 `.br` 重新开局。
|
|
29
29
|
|
|
30
30
|
开局后全员掷先攻(`.ri` / `.先攻检定`),就绪的列表形如:
|
|
31
31
|
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
新的一轮,现在是第2轮。
|
|
76
76
|
现在是塔莉的回合。请玩家@老猫开始行动。
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
注:一轮走完自动进位:先播「新的一轮」,再播下一位行动者。
|
|
79
79
|
:::
|
|
80
80
|
|
|
81
81
|
> 回合流转只需记住三条:
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
| `.回合+2` / `.回合-1` | 前进 / 后退若干位(越界自动进位、退位轮次) |
|
|
109
109
|
| `.回合=3` | 直接跳到本轮第 3 位(越界报错) |
|
|
110
110
|
| `.回合 名字` | 按名称跳转(精确优先、其次部分匹配) |
|
|
111
|
-
| `.回合 @玩家` |
|
|
111
|
+
| `.回合 @玩家` | 按归属跳转,不受改名与同名歧义影响 |
|
|
112
112
|
| `.轮次+1` / `.轮次=3` | 调整轮次(只动轮次,回合指针按越界规则修正) |
|
|
113
113
|
|
|
114
114
|
## 常见提示
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
|
|
150
150
|
- **没有 BUFF 计时表**:本轮中自动到期的效果(祝福术、持续时间…)由 DM 手动记、手动撤;
|
|
151
151
|
- 条目显示的是**入表时快照的名称**;玩家改名不影响已入表的条目(`.回合 @玩家` 按归属定位,改名照常生效);
|
|
152
|
-
- `.init clr` / `.br` 会一并清理 NPC 的临时血量(详见[
|
|
152
|
+
- `.init clr` / `.br` 会一并清理 NPC 的临时血量(详见[生命值管理](./hp.md#查看与清理))。
|
|
153
153
|
|
|
154
154
|
## 相关命令
|
|
155
155
|
|
|
@@ -160,4 +160,4 @@
|
|
|
160
160
|
| `.轮次` | `.轮次`、`.轮次+1`、`.轮次=3` | 查看 / 调整轮次 |
|
|
161
161
|
| `.ed` / `.结束` | `.ed` | 结束当前回合并自动推进;一处清表用 `.init clr` |
|
|
162
162
|
|
|
163
|
-
上一站:[
|
|
163
|
+
上一站:[先攻列表](./initiative.md);接下来:[规则查询](./query.md):把规则原文查到手。战场之外(群管理、帮助、默认骰面)见[群管理与 FAQ](./faq.md)。
|