【Windows】TRPGクトゥルフ神話キャラメイク用バッチファイル
概要
みんな大好きクトゥルフ神話。
とっても面白いTRPGだけど、キャラメイクが少々面倒……。
何度も何度もダイスを振らなければいけない。
じゃあWindows環境なら誰でも使えるバッチファイルにしてしまえば良いのでは?
ということで書いてみた。
注意点
ひとまず動くように作っただけの試作段階。
都度改修予定。
制約
ゆるゆるハウスルールに準拠して作成。
以下ハウスルール。
能力値判定
STR : 3D6
CON : 3D6
POW : 3D6
DEX : 3D6
APP : 3D6
SIZ : 2D6+6
INT : 2D6+6
EDU : 3D6+3
年収・財産はステータスとしない。
全体一括
一括サイコロは3回まで振れる。
個別振り直し
全体一括が終了後、個別能力値の振り直しは全部で2回まで振れる。
前提
バッチファイルの配置先フォルダの下にdice_bat
フォルダを作成。
dice_batフォルダ内に以下のファイルを配置。
2D6.bat
3D6.bat
3D6_3.bat
next.list
またキャラメイク終了後はバッチファイル配置フォルダにcharacter_data.txt
が作成される。
内容
以下、各ファイルの内容を記載。
オプションやif文の表記揺れには目を瞑る。
メイン以外のファイルは全てメインの中で呼び出されているので名前を変えるときは注意。
メインバッチファイル
全体的に冗長。*回目をfor文でまとめたいところ。
色々と要改修点あり。
個別振り直しのif文の中身はうまくないのでその内綺麗にする。
errorlevel
の処理をリストファイルかなんかで対応させたら綺麗になるかな。
@echo off
cd %~dp0
setlocal enabledelayedexpansion
echo キャラメイクbatの起動します。
echo 全体3回、個別2回までです。
echo.
echo 【全体ダイス】
echo 全体ダイスは3回までです。
echo.
echo ------------------------------------------------------
echo 【全体ダイス】1回目
echo Enterを押してダイスロール。
pause > nul
echo.
call .\dice_bat\3D6.bat
echo STR(筋力) =%result%
set cSTR=%result%
call .\dice_bat\3D6.bat
echo CON(体力) =%result%
set cCON=%result%
call .\dice_bat\3D6.bat
echo POW(精神力)=%result%
set cPOW=%result%
call .\dice_bat\3D6.bat
echo DEX(敏捷性)=%result%
set cDEX=%result%
call .\dice_bat\3D6.bat
echo APP(外見) =%result%
set cAPP=%result%
call .\dice_bat\2D6.bat
echo SIZ(体格) =%result%
set cSIZ=%result%
call .\dice_bat\2D6.bat
echo INT(知性) =%result%
set cINT=%result%
call .\dice_bat\3D6_3.bat
echo EDU(教育) =%result%
set cEDU=%result%
echo.
choice /m " 振り直すには y を、全体ダイスを終えるには n を押してください。 "
if %errorlevel% == 2 goto NEXT
echo.
echo ------------------------------------------------------
echo 【全体ダイス】2回目
echo Enterを押してダイスロール
pause > nul
echo.
call .\dice_bat\3D6.bat
echo STR(筋力) =%result%
set cSTR=%result%
call .\dice_bat\3D6.bat
echo CON(体力) =%result%
set cCON=%result%
call .\dice_bat\3D6.bat
echo POW(精神力)=%result%
set cPOW=%result%
call .\dice_bat\3D6.bat
echo DEX(敏捷性)=%result%
set cDEX=%result%
call .\dice_bat\3D6.bat
echo APP(外見) =%result%
set cAPP=%result%
call .\dice_bat\2D6.bat
echo SIZ(体格) =%result%
set cSIZ=%result%
call .\dice_bat\2D6.bat
echo INT(知性) =%result%
set cINT=%result%
call .\dice_bat\3D6_3.bat
echo EDU(教育) =%result%
set cEDU=%result%
echo.
choice /m " 振り直すには y を、全体ダイスを終えるには n を押してください。 "
if %errorlevel% == 2 goto NEXT
echo.
echo ------------------------------------------------------
echo 【全体ダイス】3回目
echo Enterを押してダイスロール
pause > nul
echo.
call .\dice_bat\3D6.bat
echo STR(筋力) =%result%
set cSTR=%result%
call .\dice_bat\3D6.bat
echo CON(体力) =%result%
set cCON=%result%
call .\dice_bat\3D6.bat
echo POW(精神力)=%result%
set cPOW=%result%
call .\dice_bat\3D6.bat
echo DEX(敏捷性)=%result%
set cDEX=%result%
call .\dice_bat\3D6.bat
echo APP(外見) =%result%
set cAPP=%result%
call .\dice_bat\2D6.bat
echo SIZ(体格) =%result%
set cSIZ=%result%
call .\dice_bat\2D6.bat
echo INT(知性) =%result%
set cINT=%result%
call .\dice_bat\3D6_3.bat
echo EDU(教育) =%result%
set cEDU=%result%
echo.
goto NEXT
:NEXT
echo.
echo ------------------------------------------------------
echo 【個別振り直し】
echo 個別振り直しは2回までです。
echo.
echo 現在ステータス
echo STR(筋力) =%cSTR%
echo CON(体力) =%cCON%
echo POW(精神力)=%cPOW%
echo DEX(敏捷性)=%cDEX%
echo APP(外見) =%cAPP%
echo SIZ(体格) =%cSIZ%
echo INT(知性) =%cINT%
echo EDU(教育) =%cEDU%
echo.
choice /m " 振り直しを行うには y 、終了するには n を押してください。"
if %errorlevel% == 2 goto FINISH
:RE
echo.
echo ------------------------------------------------------
echo 【個別振り直し】1回目
echo 振り直したい能力を選択してください。
type .\dice_bat\next.list
choice /c:12345678 /n
if %errorlevel% == 1 (
echo.
echo " STR(筋力) は %cSTR% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したSTR(筋力)は !result! です。 "
set " cSTR=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 2 (
echo.
echo " CON(体力) は %cCON% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したCON(体力)は !result! です。 "
set " cCON=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 3 (
echo.
echo " POW(精神力) は %cPOW% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したPOW(精神力)は !result! です。 "
set " cPOW=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 4 (
echo.
echo " DEX(敏捷性) は %cDEX% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したDEX(敏捷性)は !result! です。 "
set " cDEX=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 5 (
echo.
echo " APP(外見) は %cAPP% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したAPP(外見)は !result! です。 "
set " cAPP=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 6 (
echo.
echo " SIZ(体格) は %cSIZ% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\2D6.bat
echo.
echo " 振り直したSIZ(体格)は !result! です。 "
set " cSIZ=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 7 (
echo.
echo " INT(知性) は %cINT% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\2D6.bat
echo.
echo " 振り直したINT(知性)は !result! です。 "
set " cINT=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
if %errorlevel% == 8 (
echo.
echo " EDU(教育) は %cEDU% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6_3.bat
echo.
echo " 振り直したEDU(教育)は !result! です。 "
set " cEDU=!result! "
goto RE2 )
if !errorlevel! == 2 goto RE
)
:RE2
echo.
echo.
echo ------------------------------------------------------
echo 【個別振り直し】2回目
echo 個別振り直しはあと1回出来ます。
echo.
echo 現在ステータス
echo STR(筋力) =%cSTR%
echo CON(体力) =%cCON%
echo POW(精神力)=%cPOW%
echo DEX(敏捷性)=%cDEX%
echo APP(外見) =%cAPP%
echo SIZ(体格) =%cSIZ%
echo INT(知性) =%cINT%
echo EDU(教育) =%cEDU%
echo.
choice /m " 振り直しを行うには y 、終了するには n を押してください。 "
if %errorlevel% == 2 goto FINISH
echo.
echo 振り直したい能力を数字で選択してください。
type .\dice_bat\next.list
choice /c:12345678 /n
echo.
if %errorlevel% == 1 (
echo.
echo " STR(筋力) は %cSTR% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したSTR(筋力)は !result! です。 "
set " cSTR=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 2 (
echo.
echo " CON(体力) は %cCON% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したCON(体力)は !result! です。 "
set " cCON=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 3 (
echo.
echo " POW(精神力) は %cPOW% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したPOW(精神力)は !result! です。 "
set " cPOW=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 4 (
echo.
echo " DEX(敏捷性) は %cDEX% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したDEX(敏捷性)は !result! です。 "
set " cDEX=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 5 (
echo.
echo " APP(外見) は %cAPP% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6.bat
echo.
echo " 振り直したAPP(外見)は !result! です。 "
set " cAPP=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 6 (
echo.
echo " SIZ(体格) は %cSIZ% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\2D6.bat
echo.
echo " 振り直したSIZ(体格)は !result! です。 "
set " cSIZ=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 7 (
echo.
echo " INT(知性) は %cINT% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\2D6.bat
echo.
echo " 振り直したINT(知性)は !result! です。 "
set " cINT=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
if %errorlevel% == 8 (
echo.
echo " EDU(教育) は %cEDU% です。 "
choice /n /m " 振り直すには y 、キャンセルは n を押してください。 "
if !errorlevel! == 1 (
call .\dice_bat\3D6_3.bat
echo.
echo " 振り直したEDU(教育)は !result! です。 "
set " cEDU=!result! "
goto FINISH )
if !errorlevel! == 2 goto RE2
)
:FINISH
echo.
echo.
echo ------------------------------------------------------
echo ------------------------------------------------------
echo 【最終ステータス】
echo %date% %time% > character_data.txt
echo.
echo. >> character_data.txt
echo STR(筋力) =%cSTR%
echo CON(体力) =%cCON%
echo POW(精神力)=%cPOW%
echo DEX(敏捷性)=%cDEX%
echo APP(外見) =%cAPP%
echo SIZ(体格) =%cSIZ%
echo INT(知性) =%cINT%
echo EDU(教育) =%cEDU%
echo STR(筋力) =%cSTR% >> character_data.txt
echo CON(体力) =%cCON% >> character_data.txt
echo POW(精神力)=%cPOW% >> character_data.txt
echo DEX(敏捷性)=%cDEX% >> character_data.txt
echo APP(外見) =%cAPP% >> character_data.txt
echo SIZ(体格) =%cSIZ% >> character_data.txt
echo INT(知性) =%cINT% >> character_data.txt
echo EDU(教育) =%cEDU% >> character_data.txt
echo.
echo -----------------------------------------------------
echo.
echo 次回このツールを使用するまで、
echo character_data.txtにデータが保存されます。
echo.
echo なにかキーを押すと画面が閉じてcharacter_data.txtが開きます。
pause > nul
start character_data.txt
endlocal
exit
2D6+6用バッチファイル
所詮batの乱数なので精度は期待しないこと。
そして、書いてから思ったんだけどこのif文必要無いな。
@echo off
set result=
set result1=
set result2=
set result3=
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result1=1
if %ran1% equ 1 set result1=2
if %ran1% equ 2 set result1=3
if %ran1% equ 3 set result1=4
if %ran1% equ 4 set result1=5
if %ran1% equ 5 set result1=6
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result2=1
if %ran1% equ 1 set result2=2
if %ran1% equ 2 set result2=3
if %ran1% equ 3 set result2=4
if %ran1% equ 4 set result2=5
if %ran1% equ 5 set result2=6
set /A result=%result1%+%result2%+6
exit /b 0
3D6用バッチファイル
以下同文。
@echo off
set result=
set result1=
set result2=
set result3=
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result1=1
if %ran1% equ 1 set result1=2
if %ran1% equ 2 set result1=3
if %ran1% equ 3 set result1=4
if %ran1% equ 4 set result1=5
if %ran1% equ 5 set result1=6
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result2=1
if %ran1% equ 1 set result2=2
if %ran1% equ 2 set result2=3
if %ran1% equ 3 set result2=4
if %ran1% equ 4 set result2=5
if %ran1% equ 5 set result2=6
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result3=1
if %ran1% equ 1 set result3=2
if %ran1% equ 2 set result3=3
if %ran1% equ 3 set result3=4
if %ran1% equ 4 set result3=5
if %ran1% equ 5 set result3=6
set /A result=%result1%+%result2%+%result3%
exit /b 0
3D6+3用バッチファイル
以下同文。
@echo off
set result=
set result1=
set result2=
set result3=
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result1=1
if %ran1% equ 1 set result1=2
if %ran1% equ 2 set result1=3
if %ran1% equ 3 set result1=4
if %ran1% equ 4 set result1=5
if %ran1% equ 5 set result1=6
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result2=1
if %ran1% equ 1 set result2=2
if %ran1% equ 2 set result2=3
if %ran1% equ 3 set result2=4
if %ran1% equ 4 set result2=5
if %ran1% equ 5 set result2=6
set /a ran1=%random%*6/32767
if %ran1% equ 0 set result3=1
if %ran1% equ 1 set result3=2
if %ran1% equ 2 set result3=3
if %ran1% equ 3 set result3=4
if %ran1% equ 4 set result3=5
if %ran1% equ 5 set result3=6
set /A result=%result1%+%result2%+%result3%+3
exit /b 0
個別振り直し参照用リストファイル
特に言うこと無し。先頭末尾に改行あり。
bat内に直接書いても問題なし。
1. STR(筋力)
2. CON(体力)
3. POW(精神力)
4. DEX(敏捷性)
5. APP(外見)
6. SIZ(体格)
7. INT(知性)
8. EDU(教育)
実行結果
実際の挙動。
キャラメイクbatの起動します。
全体3回、個別2回までです。
【全体ダイス】
全体ダイスは3回までです。
------------------------------------------------------
【全体ダイス】1回目
Enterを押してダイスロール。
STR(筋力) =10
CON(体力) =9
POW(精神力)=8
DEX(敏捷性)=10
APP(外見) =7
SIZ(体格) =14
INT(知性) =16
EDU(教育) =10
振り直すには y を、全体ダイスを終えるには n を押してください。 [Y,N]?Y
------------------------------------------------------
【全体ダイス】2回目
Enterを押してダイスロール
STR(筋力) =14
CON(体力) =10
POW(精神力)=9
DEX(敏捷性)=10
APP(外見) =11
SIZ(体格) =11
INT(知性) =12
EDU(教育) =19
振り直すには y を、全体ダイスを終えるには n を押してください。 [Y,N]?N
------------------------------------------------------
【個別振り直し】
個別振り直しは2回までです。
現在ステータス
STR(筋力) =14
CON(体力) =10
POW(精神力)=9
DEX(敏捷性)=10
APP(外見) =11
SIZ(体格) =11
INT(知性) =12
EDU(教育) =19
振り直しを行うには y 、終了するには n を押してください。 [Y,N]?Y
------------------------------------------------------
【個別振り直し】1回目
振り直したい能力を選択してください。
1. STR(筋力)
2. CON(体力)
3. POW(精神力)
4. DEX(敏捷性)
5. APP(外見)
6. SIZ(体格)
7. INT(知性)
8. EDU(教育)
3
" POW(精神力) は 9 です。 "
振り直すには y 、キャンセルは n を押してください。 Y
" 振り直したPOW(精神力)は 11 です。 "
------------------------------------------------------
【個別振り直し】2回目
個別振り直しはあと1回出来ます。
現在ステータス
STR(筋力) =14
CON(体力) =10
POW(精神力)=11
DEX(敏捷性)=10
APP(外見) =11
SIZ(体格) =11
INT(知性) =12
EDU(教育) =19
振り直しを行うには y 、終了するには n を押してください。 [Y,N]?Y
振り直したい能力を数字で選択してください。
1. STR(筋力)
2. CON(体力)
3. POW(精神力)
4. DEX(敏捷性)
5. APP(外見)
6. SIZ(体格)
7. INT(知性)
8. EDU(教育)
2
" CON(体力) は 10 です。 "
振り直すには y 、キャンセルは n を押してください。 Y
" 振り直したCON(体力)は 11 です。 "
------------------------------------------------------
------------------------------------------------------
【最終ステータス】
STR(筋力) =14
CON(体力) =11
POW(精神力)=11
DEX(敏捷性)=10
APP(外見) =11
SIZ(体格) =11
INT(知性) =12
EDU(教育) =19
-----------------------------------------------------
次回このツールを使用するまで、
character_data.txtにデータが保存されます。
なにかキーを押すと画面が閉じてcharacter_data.txtが開きます。
ここでなにかしらのキーを押すと以下テキストファイルが開く。
2020/01/14 0:34:25.62
STR(筋力) =14
CON(体力) =11
POW(精神力)=11
DEX(敏捷性)=10
APP(外見) =11
SIZ(体格) =11
INT(知性) =12
EDU(教育) =19
まとめ
とりあえず後日各試行回数を自由に動かせるようにする。
あと、キャラメイクはけっこう大変。
Author And Source
この問題について(【Windows】TRPGクトゥルフ神話キャラメイク用バッチファイル), 我々は、より多くの情報をここで見つけました https://qiita.com/dogimagu/items/8a29e869b37c7915cbf8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .