Initial Commit
This commit is contained in:
commit
8998dd946b
173 changed files with 361405 additions and 0 deletions
51
.gitignore
vendored
Normal file
51
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Ignore all files
|
||||||
|
*.*
|
||||||
|
|
||||||
|
# File Types
|
||||||
|
!*.mps
|
||||||
|
!*.json
|
||||||
|
!*.txt
|
||||||
|
!*.project
|
||||||
|
!*.js
|
||||||
|
!*.7z
|
||||||
|
!*.csv
|
||||||
|
!*.ain
|
||||||
|
!*.fnl
|
||||||
|
!*.ks
|
||||||
|
!*.tjs
|
||||||
|
!*.yaml
|
||||||
|
!*.rb
|
||||||
|
!*.rvdata2
|
||||||
|
|
||||||
|
# Other Needed Files
|
||||||
|
!.gitignore
|
||||||
|
!README.md
|
||||||
|
!patch-config.txt
|
||||||
|
!GameUpdate*
|
||||||
|
!patch*
|
||||||
|
!Game.dat
|
||||||
|
!bsxx.dat*
|
||||||
|
!game.ini
|
||||||
|
!package.nw
|
||||||
|
!SRPG_Unpacker.exe
|
||||||
|
!(SRPG_Unpacker Patcher).bat
|
||||||
|
!Data/BasicData/CommonEvent.dat
|
||||||
|
!Data/BasicData/DataBase.dat
|
||||||
|
!Data/BasicData/CDataBase.dat
|
||||||
|
!Data/BasicData/SysDatabase.dat
|
||||||
|
|
||||||
|
|
||||||
|
# WolfDawn pristine originals kept locally for re-injection (never shipped)
|
||||||
|
wolf_json/originals/
|
||||||
|
|
||||||
|
# Ignore
|
||||||
|
previous_patch_sha.txt
|
||||||
|
kabe3_save.dat
|
||||||
|
kabe3_system.dat
|
||||||
|
psbpack.dat
|
||||||
|
Save*
|
||||||
|
cg.dat
|
||||||
|
scene.dat
|
||||||
|
BSXScript_*
|
||||||
|
|
||||||
|
# Images
|
||||||
BIN
Data/BasicData/CDataBase.dat
Normal file
BIN
Data/BasicData/CDataBase.dat
Normal file
Binary file not shown.
BIN
Data/BasicData/CDataBase.project
Normal file
BIN
Data/BasicData/CDataBase.project
Normal file
Binary file not shown.
BIN
Data/BasicData/CommonEvent.dat
Normal file
BIN
Data/BasicData/CommonEvent.dat
Normal file
Binary file not shown.
BIN
Data/BasicData/DataBase.dat
Normal file
BIN
Data/BasicData/DataBase.dat
Normal file
Binary file not shown.
BIN
Data/BasicData/DataBase.project
Normal file
BIN
Data/BasicData/DataBase.project
Normal file
Binary file not shown.
BIN
Data/BasicData/Game.dat
Normal file
BIN
Data/BasicData/Game.dat
Normal file
Binary file not shown.
BIN
Data/BasicData/SysDatabase.dat
Normal file
BIN
Data/BasicData/SysDatabase.dat
Normal file
Binary file not shown.
BIN
Data/BasicData/SysDatabase.project
Normal file
BIN
Data/BasicData/SysDatabase.project
Normal file
Binary file not shown.
BIN
Data/MapData/Dungeon.mps
Normal file
BIN
Data/MapData/Dungeon.mps
Normal file
Binary file not shown.
BIN
Data/MapData/ED_mon.mps
Normal file
BIN
Data/MapData/ED_mon.mps
Normal file
Binary file not shown.
BIN
Data/MapData/ED_studio.mps
Normal file
BIN
Data/MapData/ED_studio.mps
Normal file
Binary file not shown.
BIN
Data/MapData/ED_tika.mps
Normal file
BIN
Data/MapData/ED_tika.mps
Normal file
Binary file not shown.
BIN
Data/MapData/ED_yasiki.mps
Normal file
BIN
Data/MapData/ED_yasiki.mps
Normal file
Binary file not shown.
BIN
Data/MapData/Map004.mps
Normal file
BIN
Data/MapData/Map004.mps
Normal file
Binary file not shown.
BIN
Data/MapData/Map006.mps
Normal file
BIN
Data/MapData/Map006.mps
Normal file
Binary file not shown.
BIN
Data/MapData/OP.mps
Normal file
BIN
Data/MapData/OP.mps
Normal file
Binary file not shown.
BIN
Data/MapData/OP_kyoukai_reihai.mps
Normal file
BIN
Data/MapData/OP_kyoukai_reihai.mps
Normal file
Binary file not shown.
BIN
Data/MapData/OP_suramu.mps
Normal file
BIN
Data/MapData/OP_suramu.mps
Normal file
Binary file not shown.
BIN
Data/MapData/SampleMapA.mps
Normal file
BIN
Data/MapData/SampleMapA.mps
Normal file
Binary file not shown.
BIN
Data/MapData/SampleMapB.mps
Normal file
BIN
Data/MapData/SampleMapB.mps
Normal file
Binary file not shown.
BIN
Data/MapData/TitleMap.mps
Normal file
BIN
Data/MapData/TitleMap.mps
Normal file
Binary file not shown.
BIN
Data/MapData/blank.mps
Normal file
BIN
Data/MapData/blank.mps
Normal file
Binary file not shown.
BIN
Data/MapData/bokujyou.mps
Normal file
BIN
Data/MapData/bokujyou.mps
Normal file
Binary file not shown.
BIN
Data/MapData/bokujyou_niwa.mps
Normal file
BIN
Data/MapData/bokujyou_niwa.mps
Normal file
Binary file not shown.
BIN
Data/MapData/bokujyou_niwa_ev.mps
Normal file
BIN
Data/MapData/bokujyou_niwa_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/cafe.mps
Normal file
BIN
Data/MapData/cafe.mps
Normal file
Binary file not shown.
BIN
Data/MapData/doukutu_A.mps
Normal file
BIN
Data/MapData/doukutu_A.mps
Normal file
Binary file not shown.
BIN
Data/MapData/doukutu_B.mps
Normal file
BIN
Data/MapData/doukutu_B.mps
Normal file
Binary file not shown.
BIN
Data/MapData/doukutu_B_ev.mps
Normal file
BIN
Data/MapData/doukutu_B_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/heimin_1.mps
Normal file
BIN
Data/MapData/heimin_1.mps
Normal file
Binary file not shown.
BIN
Data/MapData/heimin_1_ev.mps
Normal file
BIN
Data/MapData/heimin_1_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/heimin_2.mps
Normal file
BIN
Data/MapData/heimin_2.mps
Normal file
Binary file not shown.
BIN
Data/MapData/heimin_2_ev.mps
Normal file
BIN
Data/MapData/heimin_2_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/house_rose.mps
Normal file
BIN
Data/MapData/house_rose.mps
Normal file
Binary file not shown.
BIN
Data/MapData/house_rose_ev.mps
Normal file
BIN
Data/MapData/house_rose_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/huyuusou.mps
Normal file
BIN
Data/MapData/huyuusou.mps
Normal file
Binary file not shown.
BIN
Data/MapData/huyuusou_ev.mps
Normal file
BIN
Data/MapData/huyuusou_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/inkya.mps
Normal file
BIN
Data/MapData/inkya.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kanemoti_gaki.mps
Normal file
BIN
Data/MapData/kanemoti_gaki.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kanemoti_heya.mps
Normal file
BIN
Data/MapData/kanemoti_heya.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kanemoti_ima.mps
Normal file
BIN
Data/MapData/kanemoti_ima.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kanrakugai.mps
Normal file
BIN
Data/MapData/kanrakugai.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kyoukai_heya.mps
Normal file
BIN
Data/MapData/kyoukai_heya.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kyoukai_heya_ev.mps
Normal file
BIN
Data/MapData/kyoukai_heya_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kyoukai_reihai.mps
Normal file
BIN
Data/MapData/kyoukai_reihai.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kyoukai_reihai_ev.mps
Normal file
BIN
Data/MapData/kyoukai_reihai_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kyoukai_soto.mps
Normal file
BIN
Data/MapData/kyoukai_soto.mps
Normal file
Binary file not shown.
BIN
Data/MapData/kyoukai_zangesitu.mps
Normal file
BIN
Data/MapData/kyoukai_zangesitu.mps
Normal file
Binary file not shown.
BIN
Data/MapData/massage.mps
Normal file
BIN
Data/MapData/massage.mps
Normal file
Binary file not shown.
BIN
Data/MapData/mori.mps
Normal file
BIN
Data/MapData/mori.mps
Normal file
Binary file not shown.
BIN
Data/MapData/mori_ev.mps
Normal file
BIN
Data/MapData/mori_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/onsen_kigae.mps
Normal file
BIN
Data/MapData/onsen_kigae.mps
Normal file
Binary file not shown.
BIN
Data/MapData/onsen_uketuke.mps
Normal file
BIN
Data/MapData/onsen_uketuke.mps
Normal file
Binary file not shown.
BIN
Data/MapData/onsen_uketuke_ev.mps
Normal file
BIN
Data/MapData/onsen_uketuke_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/onsen_yokujyou.mps
Normal file
BIN
Data/MapData/onsen_yokujyou.mps
Normal file
Binary file not shown.
BIN
Data/MapData/onsen_yokujyou_ev1.mps
Normal file
BIN
Data/MapData/onsen_yokujyou_ev1.mps
Normal file
Binary file not shown.
BIN
Data/MapData/onsen_yokujyou_ev2.mps
Normal file
BIN
Data/MapData/onsen_yokujyou_ev2.mps
Normal file
Binary file not shown.
BIN
Data/MapData/oukyuu.mps
Normal file
BIN
Data/MapData/oukyuu.mps
Normal file
Binary file not shown.
BIN
Data/MapData/park.mps
Normal file
BIN
Data/MapData/park.mps
Normal file
Binary file not shown.
BIN
Data/MapData/park_ev.mps
Normal file
BIN
Data/MapData/park_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/rojiura.mps
Normal file
BIN
Data/MapData/rojiura.mps
Normal file
Binary file not shown.
BIN
Data/MapData/rojiura_ev.mps
Normal file
BIN
Data/MapData/rojiura_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/sakaba.mps
Normal file
BIN
Data/MapData/sakaba.mps
Normal file
Binary file not shown.
BIN
Data/MapData/sakaba_2.mps
Normal file
BIN
Data/MapData/sakaba_2.mps
Normal file
Binary file not shown.
BIN
Data/MapData/sakaba_vip.mps
Normal file
BIN
Data/MapData/sakaba_vip.mps
Normal file
Binary file not shown.
BIN
Data/MapData/sakaba_vip_ev.mps
Normal file
BIN
Data/MapData/sakaba_vip_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/sinjya_mati.mps
Normal file
BIN
Data/MapData/sinjya_mati.mps
Normal file
Binary file not shown.
BIN
Data/MapData/studio.mps
Normal file
BIN
Data/MapData/studio.mps
Normal file
Binary file not shown.
BIN
Data/MapData/studio_ev.mps
Normal file
BIN
Data/MapData/studio_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/suramu.mps
Normal file
BIN
Data/MapData/suramu.mps
Normal file
Binary file not shown.
BIN
Data/MapData/suramu_ev.mps
Normal file
BIN
Data/MapData/suramu_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/syoukan.mps
Normal file
BIN
Data/MapData/syoukan.mps
Normal file
Binary file not shown.
BIN
Data/MapData/syoukan_ev.mps
Normal file
BIN
Data/MapData/syoukan_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/syoukan_heya.mps
Normal file
BIN
Data/MapData/syoukan_heya.mps
Normal file
Binary file not shown.
BIN
Data/MapData/syoukan_heya_ev.mps
Normal file
BIN
Data/MapData/syoukan_heya_ev.mps
Normal file
Binary file not shown.
BIN
Data/MapData/taikenban.mps
Normal file
BIN
Data/MapData/taikenban.mps
Normal file
Binary file not shown.
BIN
Data/MapData/test00.mps
Normal file
BIN
Data/MapData/test00.mps
Normal file
Binary file not shown.
BIN
Data/MapData/testmap.mps
Normal file
BIN
Data/MapData/testmap.mps
Normal file
Binary file not shown.
BIN
Data/MapData/toire.mps
Normal file
BIN
Data/MapData/toire.mps
Normal file
Binary file not shown.
BIN
Data/MapData/toire_otoko.mps
Normal file
BIN
Data/MapData/toire_otoko.mps
Normal file
Binary file not shown.
BIN
Data/MapData/toire_suramu.mps
Normal file
BIN
Data/MapData/toire_suramu.mps
Normal file
Binary file not shown.
BIN
Data/MapData/toire_suramu_onna.mps
Normal file
BIN
Data/MapData/toire_suramu_onna.mps
Normal file
Binary file not shown.
69
GameUpdate.bat
Normal file
69
GameUpdate.bat
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
@echo off
|
||||||
|
setlocal EnableExtensions EnableDelayedExpansion
|
||||||
|
|
||||||
|
REM When deployed on a game: this file sits in the game root; patch scripts live in .\gameupdate\
|
||||||
|
REM In this repo the same layout is kept for neatness: this bat is under DazedMTLTool\gameupdate\ next to a nested gameupdate\ folder with patch.ps1.
|
||||||
|
set "GU_ROOT=%~dp0"
|
||||||
|
REM Game root is this batch file's folder (not %%CD%%, so full-path launches still work).
|
||||||
|
set "GAME_ROOT=!GU_ROOT!"
|
||||||
|
if "!GAME_ROOT:~-1!"=="\" set "GAME_ROOT=!GAME_ROOT:~0,-1!"
|
||||||
|
set "PATCH_SCRIPT_DIR=!GU_ROOT!gameupdate"
|
||||||
|
|
||||||
|
if not exist "!PATCH_SCRIPT_DIR!\patch.ps1" (
|
||||||
|
echo ERROR: patch.ps1 not found at:
|
||||||
|
echo !PATCH_SCRIPT_DIR!\patch.ps1
|
||||||
|
echo Expected layout: GameUpdate.bat and a gameupdate folder next to each other ^(same parent^).
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Copy patch.ps1 so the live script can be overwritten during updates
|
||||||
|
copy /Y "!PATCH_SCRIPT_DIR!\patch.ps1" "!PATCH_SCRIPT_DIR!\patch2.ps1" >nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo ERROR: Could not copy patch.ps1 to patch2.ps1 in:
|
||||||
|
echo !PATCH_SCRIPT_DIR!
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set "_my_shell=pwsh"
|
||||||
|
where /q !_my_shell!
|
||||||
|
if !errorlevel! neq 0 (
|
||||||
|
echo PowerShell 7 ^(pwsh^) not found.
|
||||||
|
if /I "%GAMEUPDATE_PROMPT_PWSH%"=="1" (
|
||||||
|
echo.
|
||||||
|
set /p "INSTALL_PWSH=PowerShell 7 is faster. Install now via winget? (Y/N): "
|
||||||
|
if /I "!INSTALL_PWSH!"=="Y" (
|
||||||
|
echo Installing PowerShell 7 via winget...
|
||||||
|
winget install --id Microsoft.PowerShell --source winget --accept-package-agreements --accept-source-agreements
|
||||||
|
where /q pwsh
|
||||||
|
if !errorlevel! equ 0 (
|
||||||
|
set "_my_shell=pwsh"
|
||||||
|
echo PowerShell 7 installed; using pwsh.
|
||||||
|
) else (
|
||||||
|
echo Install failed or unavailable; falling back to powershell.
|
||||||
|
set "_my_shell=powershell"
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo Skipping install; falling back to powershell.
|
||||||
|
set "_my_shell=powershell"
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo Tip: Set GAMEUPDATE_PROMPT_PWSH=1 to offer PowerShell 7 install.
|
||||||
|
echo Falling back to powershell...
|
||||||
|
set "_my_shell=powershell"
|
||||||
|
)
|
||||||
|
where /q !_my_shell!
|
||||||
|
if !errorlevel! neq 0 (
|
||||||
|
echo ERROR: Neither pwsh nor powershell was found.
|
||||||
|
del /Q "!PATCH_SCRIPT_DIR!\patch2.ps1" >nul 2>&1
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
!_my_shell! -NoProfile -ExecutionPolicy Bypass -File "!PATCH_SCRIPT_DIR!\patch2.ps1" -GameRoot "!GAME_ROOT!"
|
||||||
|
set "GU_PATCH_EXIT=!errorlevel!"
|
||||||
|
del /Q "!PATCH_SCRIPT_DIR!\patch2.ps1" >nul 2>&1
|
||||||
|
|
||||||
|
exit /b !GU_PATCH_EXIT!
|
||||||
14
GameUpdate_linux.sh
Executable file
14
GameUpdate_linux.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Enable error handling
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Same layout as GameUpdate.bat: patch assets live under ./gameupdate/ next to this file.
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
GAME_ROOT="$SCRIPT_DIR"
|
||||||
|
PATCH_DIR="$SCRIPT_DIR/gameupdate"
|
||||||
|
|
||||||
|
cd "$GAME_ROOT"
|
||||||
|
cp "$PATCH_DIR/patch.sh" "$PATCH_DIR/patch2.sh"
|
||||||
|
bash "$PATCH_DIR/patch2.sh"
|
||||||
|
rm "$PATCH_DIR/patch2.sh"
|
||||||
92
LICENSE_OFL.txt
Normal file
92
LICENSE_OFL.txt
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
This Font Software is licensed under the SIL Open Font License,
|
||||||
|
Version 1.1.
|
||||||
|
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font
|
||||||
|
creation efforts of academic and linguistic communities, and to
|
||||||
|
provide a free and open framework in which fonts may be shared and
|
||||||
|
improved in partnership with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply to
|
||||||
|
any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software
|
||||||
|
components as distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to,
|
||||||
|
deleting, or substituting -- in part or in whole -- any of the
|
||||||
|
components of the Original Version, by changing formats or by porting
|
||||||
|
the Font Software to a new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed,
|
||||||
|
modify, redistribute, and sell modified and unmodified copies of the
|
||||||
|
Font Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components, in
|
||||||
|
Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the
|
||||||
|
corresponding Copyright Holder. This restriction only applies to the
|
||||||
|
primary font name as presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created using
|
||||||
|
the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
114
README.md
Normal file
114
README.md
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
# Apply Patch
|
||||||
|
1. Click Code
|
||||||
|
2. Click Download ZIP
|
||||||
|
3. Extract to game folder and Replace All.
|
||||||
|
|
||||||
|
## Future Patching
|
||||||
|
1. Run **`GameUpdate.bat`** to auto patch (Windows).
|
||||||
|
|
||||||
|
### Folder layout
|
||||||
|
|
||||||
|
**In this translation-tool repo:** Patch payloads stay tidy inside **`gameupdate/gameupdate/`** (`patch.ps1`, `patch-config.txt`, etc.). **`GameUpdate.bat`** and **`GameUpdate_linux.sh`** sit one level up, under **`gameupdate/`**.
|
||||||
|
|
||||||
|
**On an installed game (what gets copied over):** Put **`GameUpdate.bat`** in the **game root**, next to the game exe. Put **`patch.ps1`** and friends inside **`gameupdate\`** under that same root (mirror names—still **`gameupdate\`**). **`GameUpdate.bat`** finds **`gameupdate\patch.ps1`** from its own folder, so **`GameRoot`** is correct even if the console cwd is somewhere else.
|
||||||
|
|
||||||
|
**Copy checklist:** From **`DazedMTLTool/gameupdate/`**, copy **`GameUpdate.bat`** to `<game>\`; copy everything inside **`gameupdate/gameupdate/`** into `<game>\gameupdate\`.
|
||||||
|
|
||||||
|
2. Optional: set `GAMEUPDATE_PROMPT_PWSH=1` before running `GameUpdate.bat` if you want users to be prompted to install PowerShell 7 via winget.
|
||||||
|
3. Optional: set `GAMEUPDATE_DL_ATTEMPTS` (default `2`) to control retries for API checks/downloads. Lower values fail faster; higher values tolerate flaky networks.
|
||||||
|
|
||||||
|
# Troubleshooting
|
||||||
|
**GAMEUPDATE.bat doesn't update and closes immediately**
|
||||||
|
1. Make sure your path doesn't contain any Japanese characters or lots of whitespace.
|
||||||
|
2. Make sure you actually have permissions in the folder
|
||||||
|
3. Auto-update calls GitLab’s public HTTP API (`/api/v4/...`), not the web “Download ZIP” URL—no account or token is required for public patch repos.
|
||||||
|
|
||||||
|
For WOLF RPG games, if you downloaded the game off of DLSite, you will need to do some extra steps to patch it. This is because there is a "master" file called Data.wolf that will take priority over the english patch files. You will need this file to be a folder before patching will work.
|
||||||
|
|
||||||
|
# Wolf Games
|
||||||
|
1) Download the latest UberWolf.exe release from the following link:
|
||||||
|
https://github.com/Sinflower/UberWolf/releases
|
||||||
|
2) Drag Data.wolf onto UberWolf.exe. This will create a new folder called data.wolf~
|
||||||
|
3) Rename the new data.wolf~ folder to Data
|
||||||
|
4) Delete the Data.wolf file
|
||||||
|
5) Delete previous_patch_sha.txt (this will exist if you ran GameUpdate.bat previously)
|
||||||
|
6) Run GameUpdate.bat
|
||||||
|
|
||||||
|
# Edit/Contribute
|
||||||
|
TLDR 3 steps.
|
||||||
|
|
||||||
|
Fork the repository.
|
||||||
|
Make the changes.
|
||||||
|
Submit a merge request.
|
||||||
|
|
||||||
|
If everything looks good and doesn't break things I'll merge it in.
|
||||||
|
|
||||||
|
Longer Version:
|
||||||
|
|
||||||
|
# Required Software:
|
||||||
|
* [VSCode](https://code.visualstudio.com/) Make sure you check all the boxes for context menus.
|
||||||
|
* [Git](https://git-scm.com/downloads) (Use the default for everything. Just keep clicking Next)
|
||||||
|
|
||||||
|
# Guide to contributing
|
||||||
|
|
||||||
|
### 1. Fork the Repository
|
||||||
|
- Go to the repository you want to fork.
|
||||||
|
- Click the "Fork" button.
|
||||||
|
|
||||||
|
### 2. Clone Your Fork
|
||||||
|
- Clone your forked repository to your local machine.
|
||||||
|
```sh
|
||||||
|
git clone https://gitgud.io/YOUR_USERNAME/REPO_NAME.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Make Your Changes (In VSCode)
|
||||||
|
- Edit the files locally on your new branch using VSCode.
|
||||||
|
- Add and commit your changes.
|
||||||
|
```sh
|
||||||
|
git add .
|
||||||
|
git commit -m "Description of your changes"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Push Your Changes
|
||||||
|
- Push your changes to your fork on GitGud.io.
|
||||||
|
```sh
|
||||||
|
git push origin your-feature-branch
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Create a Merge Request
|
||||||
|
- Go to your fork on GitGud.io.
|
||||||
|
- Click on "Merge Requests" in the sidebar.
|
||||||
|
- Click the "New merge request" button.
|
||||||
|
- Select the branch you made changes to and the target project (the original repo).
|
||||||
|
- Provide a title and description for your merge request and submit it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
Assuming you want to fork a repository named `example-project`:
|
||||||
|
|
||||||
|
### 1. Fork the Repo
|
||||||
|
- Navigate to `https://gitgud.io/original_user/example-project` and click "Fork".
|
||||||
|
|
||||||
|
### 2. Clone Your Fork
|
||||||
|
```sh
|
||||||
|
git clone https://gitgud.io/YOUR_USERNAME/example-project.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Make Changes and Commit
|
||||||
|
```sh
|
||||||
|
# Make changes to the files
|
||||||
|
git add .
|
||||||
|
git commit -m "Add new feature to example project"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Push Changes
|
||||||
|
```sh
|
||||||
|
git push origin add-new-feature
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Create a Merge Request
|
||||||
|
- Go to `https://gitgud.io/YOUR_USERNAME/example-project/merge_requests` and click on "New merge request"
|
||||||
|
- Choose the source branch `add-new-feature` and target branch (default: `main` or `master`)
|
||||||
|
- Fill in the details and submit the merge request
|
||||||
3
gameupdate/patch-config.txt
Normal file
3
gameupdate/patch-config.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
username=dazed-translations
|
||||||
|
repo=magical-girls-runa-and-nanami
|
||||||
|
branch=main
|
||||||
769
gameupdate/patch.ps1
Normal file
769
gameupdate/patch.ps1
Normal file
|
|
@ -0,0 +1,769 @@
|
||||||
|
#Requires -Version 5.1
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]$GameRoot
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
if (-not $PSBoundParameters.ContainsKey('GameRoot') -or [string]::IsNullOrWhiteSpace($GameRoot)) {
|
||||||
|
$GameRoot = (Get-Location).ProviderPath
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$GameRoot = (Resolve-Path -LiteralPath $GameRoot).ProviderPath
|
||||||
|
}
|
||||||
|
|
||||||
|
$PatchBundleRoot = $PSScriptRoot
|
||||||
|
|
||||||
|
function Wait-ConsolePause {
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host 'Press any key to close this window...'
|
||||||
|
try {
|
||||||
|
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Read-Host 'Press Enter to close'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-DazedPatcherBannerGlyphs {
|
||||||
|
return @{
|
||||||
|
'A' = @(' ', ' AAA ', ' A A ', ' AAAAA ', ' A A ', ' A A ', ' ')
|
||||||
|
'C' = @(' ', ' CCCC ', ' C ', ' C ', ' C ', ' CCCC ', ' ')
|
||||||
|
'D' = @(' ', ' DDDDD ', ' D D ', ' D D ', ' D D ', ' DDDDD ', ' ')
|
||||||
|
'E' = @(' ', ' EEEEE ', ' E ', ' EEE ', ' E ', ' EEEEE ', ' ')
|
||||||
|
'H' = @(' ', ' H H ', ' H H ', ' HHHHH ', ' H H ', ' H H ', ' ')
|
||||||
|
'P' = @(' ', ' PPPPP ', ' P P ', ' PPPP ', ' P ', ' P ', ' ')
|
||||||
|
'R' = @(' ', ' RRRRR ', ' R R ', ' RRRR ', ' R R ', ' R R ', ' ')
|
||||||
|
'T' = @(' ', ' TTTTT ', ' T ', ' T ', ' T ', ' T ', ' ')
|
||||||
|
'Z' = @(' ', ' ZZZZZ ', ' Z ', ' Z ', ' Z ', ' ZZZZZ ', ' ')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Build-AsciiWordLines {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][string]$Word,
|
||||||
|
[hashtable]$Glyphs
|
||||||
|
)
|
||||||
|
$letters = @(
|
||||||
|
$Word.ToUpperInvariant().ToCharArray() | ForEach-Object { [string]$_ }
|
||||||
|
)
|
||||||
|
$rows = New-Object string[] 7
|
||||||
|
for ($r = 0; $r -lt 7; $r++) {
|
||||||
|
$parts = New-Object System.Collections.Generic.List[string]
|
||||||
|
foreach ($letter in $letters) {
|
||||||
|
if (-not $Glyphs.ContainsKey($letter)) {
|
||||||
|
throw "Banner glyph missing for '$letter'."
|
||||||
|
}
|
||||||
|
$parts.Add($Glyphs[$letter][$r])
|
||||||
|
}
|
||||||
|
$rows[$r] = ($parts -join ' ')
|
||||||
|
}
|
||||||
|
return [string[]]$rows
|
||||||
|
}
|
||||||
|
|
||||||
|
function ConvertTo-LineStringArray {
|
||||||
|
param([AllowNull()][object]$Value)
|
||||||
|
if ($null -eq $Value) { return @() }
|
||||||
|
if ($Value -is [string[]]) { return $Value }
|
||||||
|
if ($Value -is [System.Collections.Generic.List[string]]) { return $Value.ToArray() }
|
||||||
|
if ($Value -is [string]) {
|
||||||
|
if ([string]::IsNullOrWhiteSpace([string]$Value)) { return @() }
|
||||||
|
return ,[string]$Value
|
||||||
|
}
|
||||||
|
return [string[]](@($Value) | ForEach-Object { if ($null -eq $_) { '' } else { "$_" } })
|
||||||
|
}
|
||||||
|
|
||||||
|
function Pad-LineBlockToHeight {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true, Position = 0)][object]$Rows,
|
||||||
|
[Parameter(Mandatory = $true, Position = 1)][int]$TargetHeight
|
||||||
|
)
|
||||||
|
[string[]]$lines = ConvertTo-LineStringArray -Value $Rows
|
||||||
|
if ($lines.Count -eq 0 -and $TargetHeight -gt 0) {
|
||||||
|
$blank = New-Object string[] $TargetHeight
|
||||||
|
for ($i = 0; $i -lt $TargetHeight; $i++) { $blank[$i] = '' }
|
||||||
|
return $blank
|
||||||
|
}
|
||||||
|
if ($lines.Count -ge $TargetHeight) {
|
||||||
|
return [string[]]$lines
|
||||||
|
}
|
||||||
|
$padTotal = $TargetHeight - $lines.Count
|
||||||
|
$padTop = [int][Math]::Floor($padTotal / 2)
|
||||||
|
$padBot = $padTotal - $padTop
|
||||||
|
$top = @()
|
||||||
|
for ($i = 0; $i -lt $padTop; $i++) { $top += '' }
|
||||||
|
$bot = @()
|
||||||
|
for ($i = 0; $i -lt $padBot; $i++) { $bot += '' }
|
||||||
|
return [string[]]($top + $lines + $bot)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-EmbeddedIconAsciiCatLines {
|
||||||
|
# Refresh via generate_icon_ascii.ps1 when assets/icon.png changes.
|
||||||
|
$raw = @'
|
||||||
|
# %#
|
||||||
|
%:.-@ #..=
|
||||||
|
#:.-*:.:# *..=*..-%
|
||||||
|
*=.:.+# %% @*-:::+#
|
||||||
|
*-# +...=# =-%
|
||||||
|
% #..==..:# %@
|
||||||
|
%..* -.:%%#=..=##*##%% %*=:...+
|
||||||
|
*:.=+.:= ..=%##%*:..::.....:=+:..-=*:.:
|
||||||
|
*=:--.=* ..=%###%########*+=:.-+#%%%:.-
|
||||||
|
-:% #..=%###%%%%%###%%%%%#%%%#%*..+
|
||||||
|
%..=%##-.=*=-*%#####%%%%%#%#:.:
|
||||||
|
+.:###%+....:*%###:.=*=-*%%-..%
|
||||||
|
-.:%#%+..:..=%####=....-#%%+..%
|
||||||
|
*..*%##**%*-=###%=..:..=%#%*..#
|
||||||
|
=..*%%%%#%%%#####*#%*-+%%%-..
|
||||||
|
+..-*#%%%%######%%#%%%%*:..#
|
||||||
|
%+...-+*##%%%%%%%%#*+-..=%
|
||||||
|
%..:.....::---::....:*%
|
||||||
|
:.:%%#*+=--::::-=+:.:*
|
||||||
|
%..+%#%%%%%%%%%%%%%%+..-@ #-:::+@
|
||||||
|
#..+%###############%#:.:% #..=*:..#
|
||||||
|
..=%################%#:..% %..+%%-..@
|
||||||
|
%..:%###%#%##%%#%#####%#:.- *..*%*..+
|
||||||
|
#....*%##-.+%%#:.+%##%#%%*..* :.-%%:.-
|
||||||
|
%..=..-%#%:..#%+..+%#%+::#%:.- :.-%%:.-
|
||||||
|
-.:%=..*%%*..+%:.:%#%#..:#%=.. #..+%*..+
|
||||||
|
..=%#..:%%#..-#..=%#%-..*%%=..*:.-%%-..@
|
||||||
|
-.-%%+..+%%-.:+..+%%+..+%#%-....=%%-..#
|
||||||
|
+..*%*..:%%=..=..*%%:..*%%#...=#%+:.:#
|
||||||
|
..-**..:+**=..:..+**+:..**+..=*=:..+
|
||||||
|
+..............................:=#
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%@
|
||||||
|
'@
|
||||||
|
return [string[]]@($raw -split '\r?\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
function Write-AsciiHeader {
|
||||||
|
try {
|
||||||
|
Write-Host ''
|
||||||
|
$glyphs = Get-DazedPatcherBannerGlyphs
|
||||||
|
$wordDazed = Build-AsciiWordLines -Word 'Dazed' -Glyphs $glyphs
|
||||||
|
$wordPatcher = Build-AsciiWordLines -Word 'Patcher' -Glyphs $glyphs
|
||||||
|
$titleCore = [System.Collections.Generic.List[string]]::new()
|
||||||
|
foreach ($ln in $wordDazed) { $titleCore.Add($ln) }
|
||||||
|
[void]$titleCore.Add('')
|
||||||
|
foreach ($ln in $wordPatcher) { $titleCore.Add($ln) }
|
||||||
|
$titleRows = $titleCore.ToArray()
|
||||||
|
|
||||||
|
$catLines = @(Get-EmbeddedIconAsciiCatLines)
|
||||||
|
|
||||||
|
$targetH = [Math]::Max($titleRows.Count, $catLines.Count)
|
||||||
|
$titlePadded = Pad-LineBlockToHeight -Rows $titleRows -TargetHeight $targetH
|
||||||
|
$catPadded = Pad-LineBlockToHeight -Rows $catLines -TargetHeight $targetH
|
||||||
|
|
||||||
|
$titleWidth = 0
|
||||||
|
foreach ($ln in $titlePadded) {
|
||||||
|
$safe = if ($null -eq $ln) { '' } else { $ln }
|
||||||
|
if ($safe.Length -gt $titleWidth) { $titleWidth = $safe.Length }
|
||||||
|
}
|
||||||
|
|
||||||
|
$gap = ' '
|
||||||
|
for ($i = 0; $i -lt $targetH; $i++) {
|
||||||
|
$ti = if ($null -eq $titlePadded[$i]) { '' } else { $titlePadded[$i] }
|
||||||
|
$ci = if ($catPadded.Length -le $i -or $null -eq $catPadded[$i]) { '' } else { $catPadded[$i] }
|
||||||
|
$left = if ($titleWidth -gt 0) { $ti.PadRight($titleWidth) } else { '' }
|
||||||
|
Write-Host ($left + $gap + $ci)
|
||||||
|
}
|
||||||
|
Write-Host ''
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host ('[Banner skipped] ' + $_.Exception.Message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Write-BannerWrongFolder {
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host '========================================'
|
||||||
|
Write-Host 'ERROR: Wrong game root folder!'
|
||||||
|
Write-Host '========================================'
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host 'Game root cannot be the gameupdate folder itself.'
|
||||||
|
Write-Host 'Run GameUpdate.bat from the game root (same folder as GameUpdate.bat).'
|
||||||
|
Write-Host '========================================'
|
||||||
|
Write-Host ''
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-WrongWorkingDirectory {
|
||||||
|
param([string]$Root)
|
||||||
|
return ($Root -and ((Split-Path -Leaf $Root) -ieq 'gameupdate'))
|
||||||
|
}
|
||||||
|
|
||||||
|
function Read-PatchConfig {
|
||||||
|
param([string]$ConfigPath)
|
||||||
|
$cfg = @{ username = ''; repo = ''; branch = '' }
|
||||||
|
if (-not (Test-Path -LiteralPath $ConfigPath)) {
|
||||||
|
return $cfg
|
||||||
|
}
|
||||||
|
foreach ($rawLine in Get-Content -LiteralPath $ConfigPath) {
|
||||||
|
$line = $rawLine.Trim()
|
||||||
|
if (-not $line -or $line.StartsWith('#')) { continue }
|
||||||
|
$eq = $line.IndexOf('=')
|
||||||
|
if ($eq -lt 1) { continue }
|
||||||
|
$k = $line.Substring(0, $eq).Trim().ToLowerInvariant()
|
||||||
|
$v = if ($eq -lt $line.Length - 1) { $line.Substring($eq + 1).Trim() } else { '' }
|
||||||
|
switch ($k) {
|
||||||
|
'username' { $cfg.username = $v }
|
||||||
|
'repo' { $cfg.repo = $v }
|
||||||
|
'branch' { $cfg.branch = $v }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-SrpgUnpacker {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][string]$ExePath,
|
||||||
|
[Parameter(Mandatory = $true)][string]$WorkingDirectory,
|
||||||
|
[Parameter(Mandatory = $true)][string[]]$Arguments
|
||||||
|
)
|
||||||
|
Push-Location -LiteralPath $WorkingDirectory
|
||||||
|
try {
|
||||||
|
& $ExePath @Arguments
|
||||||
|
return $LASTEXITCODE
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
Pop-Location
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-SrpgPreSetup {
|
||||||
|
param([string]$Root)
|
||||||
|
$unpacker = Join-Path $Root 'SRPG_Unpacker.exe'
|
||||||
|
$dts = Join-Path $Root 'data.dts'
|
||||||
|
$dataDir = Join-Path $Root 'data'
|
||||||
|
$projectDat = Join-Path $dataDir 'project.dat'
|
||||||
|
$patchDir = Join-Path $Root 'patch'
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $dts)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (-not (Test-Path -LiteralPath $unpacker)) {
|
||||||
|
Write-Host '[Pre-Setup] SRPG_Unpacker.exe not found; skipping data setup.'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
$shouldUnpack =
|
||||||
|
-not (Test-Path -LiteralPath $dataDir) -or
|
||||||
|
-not (Test-Path -LiteralPath $projectDat)
|
||||||
|
|
||||||
|
$runUnpackBlock = {
|
||||||
|
if (Test-Path -LiteralPath $dts) {
|
||||||
|
Write-Host '[Pre-Setup] Unpacking data.dts to data\'
|
||||||
|
$code = Invoke-SrpgUnpacker -ExePath $unpacker -WorkingDirectory $Root -Arguments @('-o', 'data', 'data.dts')
|
||||||
|
if ($code -ne 0) {
|
||||||
|
Write-Host '[Pre-Setup] ERROR: Unpack failed. Continuing.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host '[Pre-Setup] Skipping unpack: data.dts missing.'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $patchDir)) {
|
||||||
|
if (Test-Path -LiteralPath $projectDat) {
|
||||||
|
Write-Host '[Pre-Setup] Creating patch folder from data\project.dat'
|
||||||
|
$code = Invoke-SrpgUnpacker -ExePath $unpacker -WorkingDirectory $Root -Arguments @('.\data\project.dat', '-c')
|
||||||
|
if ($code -ne 0) {
|
||||||
|
Write-Host '[Pre-Setup] ERROR: Create Patch failed. Continuing.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host '[Pre-Setup] Skipping create patch: data\project.dat not found.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($shouldUnpack) {
|
||||||
|
& $runUnpackBlock
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (-not (Test-Path -LiteralPath $patchDir)) {
|
||||||
|
if (Test-Path -LiteralPath $projectDat) {
|
||||||
|
Write-Host '[Pre-Setup] Creating patch folder from data\project.dat'
|
||||||
|
$code = Invoke-SrpgUnpacker -ExePath $unpacker -WorkingDirectory $Root -Arguments @('.\data\project.dat', '-c')
|
||||||
|
if ($code -ne 0) {
|
||||||
|
Write-Host '[Pre-Setup] ERROR: Create Patch failed. Continuing.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host '[Pre-Setup] Skipping create patch: data\project.dat not found.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-EnvInt {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][string]$Name,
|
||||||
|
[Parameter(Mandatory = $true)][int]$Default
|
||||||
|
)
|
||||||
|
$raw = [Environment]::GetEnvironmentVariable($Name)
|
||||||
|
if ([string]::IsNullOrWhiteSpace($raw)) { return $Default }
|
||||||
|
$parsed = 0
|
||||||
|
if ([int]::TryParse([string]$raw, [ref]$parsed) -and $parsed -gt 0) { return $parsed }
|
||||||
|
return $Default
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-WithRetry {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][scriptblock]$Action,
|
||||||
|
[Parameter(Mandatory = $true)][string]$Name,
|
||||||
|
[int]$Attempts = 2,
|
||||||
|
[int]$DelaySeconds = 2
|
||||||
|
)
|
||||||
|
$lastErr = $null
|
||||||
|
for ($i = 1; $i -le $Attempts; $i++) {
|
||||||
|
try {
|
||||||
|
return & $Action
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
$lastErr = $_
|
||||||
|
if ($i -lt $Attempts) {
|
||||||
|
Write-Host ("{0} failed ({1}/{2}), retrying..." -f $Name, $i, $Attempts)
|
||||||
|
Start-Sleep -Seconds $DelaySeconds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw $lastErr
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-InvalidZipDownloadHint {
|
||||||
|
param([Parameter(Mandatory = $true)][string]$LiteralPath)
|
||||||
|
$item = Get-Item -LiteralPath $LiteralPath -ErrorAction SilentlyContinue
|
||||||
|
if (-not $item) {
|
||||||
|
return '(downloaded file missing)'
|
||||||
|
}
|
||||||
|
$len = $item.Length
|
||||||
|
$parts = [System.Collections.Generic.List[string]]::new()
|
||||||
|
$parts.Add("File size: $len bytes.")
|
||||||
|
if ($len -eq 0) {
|
||||||
|
$parts.Add('Empty file often means the window was closed during download, the connection dropped, or security software blocked the file. Run again and let it finish.')
|
||||||
|
return ($parts -join ' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
$peekSize = [Math]::Min([int64]$len, 6144)
|
||||||
|
$buf = New-Object byte[] $peekSize
|
||||||
|
$fs = [System.IO.File]::OpenRead($LiteralPath)
|
||||||
|
try {
|
||||||
|
[void]$fs.Read($buf, 0, $peekSize)
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
$fs.Dispose()
|
||||||
|
}
|
||||||
|
|
||||||
|
$text = [System.Text.Encoding]::UTF8.GetString($buf)
|
||||||
|
if ($text -match '(?i)<!DOCTYPE\s+html|<html[\s>]') {
|
||||||
|
$parts.Add('Body looks like HTML (often an error page or block). Check username/repo/branch in patch-config.txt and network.')
|
||||||
|
}
|
||||||
|
elseif ($text.TrimStart().StartsWith('{')) {
|
||||||
|
try {
|
||||||
|
$j = ($text.TrimStart() | ConvertFrom-Json)
|
||||||
|
if ($j.message) {
|
||||||
|
$parts.Add("GitLab JSON: $($j.message)")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$parts.Add('Body starts with JSON (likely an API error, not a ZIP).')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
$parts.Add('Body starts with `{` but was not parseable JSON (truncated or wrong encoding).')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$flat = ($text -replace '[\r\n]+', ' ')
|
||||||
|
$take = [Math]::Min(200, $flat.Length)
|
||||||
|
if ($take -gt 0) {
|
||||||
|
$parts.Add(('UTF-8 preview: ' + $flat.Substring(0, $take)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($parts -join ' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
$script:GameUpdateConsoleCloseHelperLoaded = $false
|
||||||
|
function Initialize-GameUpdateConsoleCloseHelper {
|
||||||
|
if ($script:GameUpdateConsoleCloseHelperLoaded) { return }
|
||||||
|
$script:GameUpdateConsoleCloseHelperLoaded = $true
|
||||||
|
$script:GameUpdateConsoleCloseHelperWorks = $false
|
||||||
|
if ($env:OS -ne 'Windows_NT') { return }
|
||||||
|
|
||||||
|
try {
|
||||||
|
Add-Type -TypeDefinition @'
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace GameUpdate {
|
||||||
|
public static class ConsoleCloseHelper {
|
||||||
|
private static HandlerRoutine _handler;
|
||||||
|
|
||||||
|
public static void Register() {
|
||||||
|
_handler = Handle;
|
||||||
|
SetConsoleCtrlHandler(_handler, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Unregister() {
|
||||||
|
if (_handler != null) {
|
||||||
|
SetConsoleCtrlHandler(_handler, false);
|
||||||
|
_handler = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool Handle(uint ctrlType) {
|
||||||
|
const uint CTRL_CLOSE_EVENT = 2;
|
||||||
|
const uint CTRL_LOGOFF_EVENT = 5;
|
||||||
|
const uint CTRL_SHUTDOWN_EVENT = 6;
|
||||||
|
if (ctrlType != CTRL_CLOSE_EVENT && ctrlType != CTRL_LOGOFF_EVENT && ctrlType != CTRL_SHUTDOWN_EVENT) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
string path = Environment.GetEnvironmentVariable("GAMEUPDATE_REPO_ZIP_PATH");
|
||||||
|
if (!string.IsNullOrEmpty(path) && File.Exists(path)) {
|
||||||
|
File.Delete(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private delegate bool HandlerRoutine(uint ctrlType);
|
||||||
|
|
||||||
|
[DllImport("Kernel32.dll", SetLastError = true)]
|
||||||
|
private static extern bool SetConsoleCtrlHandler(HandlerRoutine handler, bool add);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'@ -ErrorAction Stop
|
||||||
|
$script:GameUpdateConsoleCloseHelperWorks = $true
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
$script:GameUpdateConsoleCloseHelperWorks = $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-PatchArchiveDownload {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][string]$Url,
|
||||||
|
[Parameter(Mandatory = $true)][string]$OutFile,
|
||||||
|
[Parameter(Mandatory = $true)][hashtable]$Headers
|
||||||
|
)
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $OutFile) {
|
||||||
|
Remove-Item -LiteralPath $OutFile -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
$outFull = [System.IO.Path]::GetFullPath($OutFile)
|
||||||
|
Initialize-GameUpdateConsoleCloseHelper
|
||||||
|
|
||||||
|
$prevPref = $ProgressPreference
|
||||||
|
$completed = $false
|
||||||
|
$registeredCloseHandler = $false
|
||||||
|
try {
|
||||||
|
if ($script:GameUpdateConsoleCloseHelperWorks) {
|
||||||
|
$env:GAMEUPDATE_REPO_ZIP_PATH = $outFull
|
||||||
|
[GameUpdate.ConsoleCloseHelper]::Register()
|
||||||
|
$registeredCloseHandler = $true
|
||||||
|
}
|
||||||
|
|
||||||
|
$ProgressPreference = 'Continue'
|
||||||
|
Invoke-WebRequest -Uri $Url -OutFile $OutFile -Headers $Headers -UseBasicParsing
|
||||||
|
$completed = $true
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
$ProgressPreference = $prevPref
|
||||||
|
|
||||||
|
if ($registeredCloseHandler) {
|
||||||
|
try {
|
||||||
|
[GameUpdate.ConsoleCloseHelper]::Unregister()
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
Remove-Item env:GAMEUPDATE_REPO_ZIP_PATH -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $completed -and (Test-Path -LiteralPath $OutFile)) {
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $OutFile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-FileOrDirectoryViaCmd {
|
||||||
|
param([Parameter(Mandatory = $true)][string]$LiteralPath)
|
||||||
|
if (-not (Test-Path -LiteralPath $LiteralPath)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
$full = (Resolve-Path -LiteralPath $LiteralPath).ProviderPath
|
||||||
|
$item = Get-Item -LiteralPath $LiteralPath
|
||||||
|
if ($item.PSIsContainer) {
|
||||||
|
cmd.exe /c "rd /s /q `"$full`"" | Out-Null
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cmd.exe /c "del /f /q `"$full`"" | Out-Null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-DownloadedRepoZip {
|
||||||
|
param([Parameter(Mandatory = $true)][string]$LiteralPath)
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $LiteralPath
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-PatchDownloadExtract {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)][string]$Root,
|
||||||
|
[Parameter(Mandatory = $true)][string]$StateFilePath,
|
||||||
|
[Parameter(Mandatory = $true)][string]$Username,
|
||||||
|
[Parameter(Mandatory = $true)][string]$Repo,
|
||||||
|
[Parameter(Mandatory = $true)][string]$Branch
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($PSVersionTable.PSEdition -ne 'Core') {
|
||||||
|
try {
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
}
|
||||||
|
catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-Location -LiteralPath $Root
|
||||||
|
|
||||||
|
$id = [uri]::EscapeDataString($Username + '/' + $Repo)
|
||||||
|
$branchEnc = [uri]::EscapeDataString($Branch)
|
||||||
|
$headers = @{ 'User-Agent' = 'DazedMTL-Patcher-1.0' }
|
||||||
|
$dlAttempts = Get-EnvInt -Name 'GAMEUPDATE_DL_ATTEMPTS' -Default 2
|
||||||
|
|
||||||
|
$latestSha = Invoke-WithRetry -Name 'Resolve latest patch SHA' -Attempts $dlAttempts -Action {
|
||||||
|
(Invoke-RestMethod -Uri ("https://gitgud.io/api/v4/projects/$id/repository/branches/$branchEnc") -Headers $headers).commit.id
|
||||||
|
}
|
||||||
|
if (-not $latestSha) { throw 'PATCH_ERR:API:Latest commit SHA response was empty.' }
|
||||||
|
$latestSha = ([string]$latestSha).Trim()
|
||||||
|
|
||||||
|
$previousSha = ''
|
||||||
|
if (Test-Path -LiteralPath $StateFilePath) {
|
||||||
|
$previousSha = (Get-Content -LiteralPath $StateFilePath -Raw).Trim()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host 'First run: comparing with remote...'
|
||||||
|
}
|
||||||
|
if ($previousSha -eq $latestSha) {
|
||||||
|
return 10
|
||||||
|
}
|
||||||
|
|
||||||
|
$zipPath = Join-Path $Root ('dazedmtl_patch_' + [Guid]::NewGuid().ToString('N') + '.zip')
|
||||||
|
Write-Host ('Downloading patch... ' + $zipPath)
|
||||||
|
$stage = Join-Path ([IO.Path]::GetTempPath()) ('gu_' + [Guid]::NewGuid().ToString('N'))
|
||||||
|
$archiveSha = [uri]::EscapeDataString($latestSha)
|
||||||
|
$archiveUrl = "https://gitgud.io/api/v4/projects/$id/repository/archive.zip?sha=$archiveSha"
|
||||||
|
|
||||||
|
$dlSw = [System.Diagnostics.Stopwatch]::StartNew()
|
||||||
|
Invoke-WithRetry -Name 'Download archive with Invoke-WebRequest' -Attempts $dlAttempts -Action {
|
||||||
|
Invoke-PatchArchiveDownload -Url $archiveUrl -OutFile $zipPath -Headers $headers
|
||||||
|
} | Out-Null
|
||||||
|
$dlSw.Stop()
|
||||||
|
$bytes = (Get-Item -LiteralPath $zipPath).Length
|
||||||
|
if ($bytes -eq 0) {
|
||||||
|
$hint = Get-InvalidZipDownloadHint -LiteralPath $zipPath
|
||||||
|
Remove-DownloadedRepoZip -LiteralPath $zipPath
|
||||||
|
throw "PATCH_ERR:ZIP:Download is empty (0 bytes). $hint"
|
||||||
|
}
|
||||||
|
|
||||||
|
$secs = [Math]::Max($dlSw.Elapsed.TotalSeconds, 0.001)
|
||||||
|
$mbps = ($bytes / 1MB) / $secs
|
||||||
|
Write-Host ("Download complete: {0:N1} MB in {1:N1}s ({2:N1} MB/s)" -f ($bytes / 1MB), $secs, $mbps)
|
||||||
|
|
||||||
|
$zipHeaderBad = $false
|
||||||
|
$zipHeaderHint = ''
|
||||||
|
$fs = [System.IO.File]::OpenRead($zipPath)
|
||||||
|
try {
|
||||||
|
$hdr = New-Object byte[] 4
|
||||||
|
if ($fs.Read($hdr, 0, 4) -lt 4 -or $hdr[0] -ne 0x50 -or $hdr[1] -ne 0x4B) {
|
||||||
|
$zipHeaderBad = $true
|
||||||
|
$zipHeaderHint = Get-InvalidZipDownloadHint -LiteralPath $zipPath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
$fs.Dispose()
|
||||||
|
}
|
||||||
|
if ($zipHeaderBad) {
|
||||||
|
Remove-DownloadedRepoZip -LiteralPath $zipPath
|
||||||
|
throw "PATCH_ERR:ZIP:Download is not a valid ZIP (missing PK header). $zipHeaderHint"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $stage) {
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $stage
|
||||||
|
}
|
||||||
|
New-Item -ItemType Directory -Path $stage | Out-Null
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
Expand-Archive -LiteralPath $zipPath -DestinationPath $stage -Force
|
||||||
|
$dirs = @(Get-ChildItem -LiteralPath $stage -Directory)
|
||||||
|
if ($dirs.Count -ne 1) {
|
||||||
|
throw ('PATCH_ERR:ZIP:Expected one root folder in archive, found {0}.' -f $dirs.Count)
|
||||||
|
}
|
||||||
|
Copy-Item -Path (Join-Path $dirs[0].FullName '*') -Destination $PWD.Path -Recurse -Force
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (Test-Path -LiteralPath $zipPath) {
|
||||||
|
Remove-DownloadedRepoZip -LiteralPath $zipPath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if (Test-Path -LiteralPath $stage) {
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $stage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Set-Content -LiteralPath $StateFilePath -Value $latestSha -Encoding Ascii
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function Invoke-SrpgPostApply {
|
||||||
|
param([string]$Root)
|
||||||
|
$unpacker = Join-Path $Root 'SRPG_Unpacker.exe'
|
||||||
|
$dts = Join-Path $Root 'data.dts'
|
||||||
|
$projectDat = Join-Path $Root 'data\project.dat'
|
||||||
|
$dataDir = Join-Path $Root 'data'
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $dts)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (-not (Test-Path -LiteralPath $unpacker)) {
|
||||||
|
Write-Host 'SRPG_Unpacker.exe not found in root; skipping SRPG patch steps.'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $projectDat) {
|
||||||
|
Write-Host 'Applying patch to data\project.dat...'
|
||||||
|
$code = Invoke-SrpgUnpacker -ExePath $unpacker -WorkingDirectory $Root -Arguments @('.\data\project.dat', '-a')
|
||||||
|
if ($code -ne 0) {
|
||||||
|
Write-Host 'ERROR: Apply Patch failed.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host 'ERROR: data\project.dat not found; cannot apply patch.'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $dataDir) {
|
||||||
|
Write-Host 'Packing data folder to data.dts...'
|
||||||
|
$code = Invoke-SrpgUnpacker -ExePath $unpacker -WorkingDirectory $Root -Arguments @('-o', 'data.dts', 'data')
|
||||||
|
if ($code -ne 0) {
|
||||||
|
Write-Host 'WARNING: Pack failed.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Host 'Step 4: Skipping pack - data folder not found.'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-StalePatchZipArtifactsInGameRoot {
|
||||||
|
param([Parameter(Mandatory = $true)][string]$Root)
|
||||||
|
if (-not (Test-Path -LiteralPath $Root)) { return }
|
||||||
|
Get-ChildItem -LiteralPath $Root -Filter 'dazedmtl_patch_*.zip' -File -ErrorAction SilentlyContinue |
|
||||||
|
ForEach-Object {
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $_.FullName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-PatchTempArtifacts {
|
||||||
|
param([string]$Root)
|
||||||
|
$zipPath = Join-Path $Root 'repo.zip'
|
||||||
|
$legacyTmp = Join-Path $Root '_patch_extract_tmp'
|
||||||
|
|
||||||
|
Remove-StalePatchZipArtifactsInGameRoot -Root $Root
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $zipPath) {
|
||||||
|
Write-Host ' Removing repo.zip...'
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $zipPath
|
||||||
|
}
|
||||||
|
if (Test-Path -LiteralPath $legacyTmp) {
|
||||||
|
Write-Host ' Removing _patch_extract_tmp - using rd /s /q (avoids PowerShell hangs on huge folders).'
|
||||||
|
Remove-FileOrDirectoryViaCmd -LiteralPath $legacyTmp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (Test-WrongWorkingDirectory -Root $GameRoot) {
|
||||||
|
Write-BannerWrongFolder
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-AsciiHeader
|
||||||
|
|
||||||
|
Remove-StalePatchZipArtifactsInGameRoot -Root $GameRoot
|
||||||
|
|
||||||
|
$configPath = Join-Path $PatchBundleRoot 'patch-config.txt'
|
||||||
|
if (-not (Test-Path -LiteralPath $configPath)) {
|
||||||
|
Write-Host 'patch-config.txt not found next to patch.ps1 - skipping patch.'
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$cfg = Read-PatchConfig -ConfigPath $configPath
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($cfg.username)) {
|
||||||
|
Write-Host "ERROR: 'username=' is missing in patch-config.txt"
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
if ([string]::IsNullOrWhiteSpace($cfg.repo)) {
|
||||||
|
Write-Host "ERROR: 'repo=' is missing in patch-config.txt"
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
if ([string]::IsNullOrWhiteSpace($cfg.branch)) {
|
||||||
|
Write-Host "ERROR: 'branch=' is missing in patch-config.txt"
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ('Pulling patch from https://gitgud.io/{0}/{1} (branch: {2})' -f $cfg.username, $cfg.repo, $cfg.branch)
|
||||||
|
|
||||||
|
Invoke-SrpgPreSetup -Root $GameRoot
|
||||||
|
|
||||||
|
$stateFile = Join-Path $PatchBundleRoot 'previous_patch_sha.txt'
|
||||||
|
|
||||||
|
$patchDlExit = 1
|
||||||
|
try {
|
||||||
|
$patchDlExit = Invoke-PatchDownloadExtract -Root $GameRoot -StateFilePath $stateFile `
|
||||||
|
-Username $cfg.username -Repo $cfg.repo -Branch $cfg.branch
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host $_.Exception.Message
|
||||||
|
if ($_.InvocationInfo.PositionMessage) { Write-Host $_.InvocationInfo.PositionMessage }
|
||||||
|
Remove-PatchTempArtifacts -Root $GameRoot
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($patchDlExit -eq 10) {
|
||||||
|
Write-Host 'Already up to date.'
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($patchDlExit -ne 0) {
|
||||||
|
Write-Host 'Download or extraction failed!'
|
||||||
|
Remove-PatchTempArtifacts -Root $GameRoot
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host 'Applying patch...'
|
||||||
|
|
||||||
|
Invoke-SrpgPostApply -Root $GameRoot
|
||||||
|
|
||||||
|
Write-Host 'Cleaning up...'
|
||||||
|
Remove-PatchTempArtifacts -Root $GameRoot
|
||||||
|
Write-Host 'Done.'
|
||||||
|
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host ''
|
||||||
|
Write-Host $_.Exception.Message
|
||||||
|
Wait-ConsolePause
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
224
gameupdate/patch.sh
Executable file
224
gameupdate/patch.sh
Executable file
|
|
@ -0,0 +1,224 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
ROOT_DIR="$(pwd)"
|
||||||
|
CONFIG_FILE="$SCRIPT_DIR/patch-config.txt"
|
||||||
|
STATE_FILE="$SCRIPT_DIR/previous_patch_sha.txt"
|
||||||
|
GITGUD_API="https://gitgud.io/api/v4"
|
||||||
|
API_HEADERS=( -H "User-Agent: GameUpdate/1.0" )
|
||||||
|
|
||||||
|
check_dependency() {
|
||||||
|
if ! command -v "$1" > /dev/null 2>&1; then
|
||||||
|
echo "Error: '$1' is not installed. Please install it using 'pkg install $1'."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for jq, unzip, and curl
|
||||||
|
check_dependency jq
|
||||||
|
check_dependency unzip
|
||||||
|
check_dependency curl
|
||||||
|
|
||||||
|
# Check if CONFIG_FILE exists
|
||||||
|
if [ ! -f "$CONFIG_FILE" ]; then
|
||||||
|
echo "Config file '$CONFIG_FILE' not found! Assuming no patching needed."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Convert line endings to Unix format
|
||||||
|
sed -i 's/\r$//' "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# Debug information
|
||||||
|
echo "Root directory: $ROOT_DIR"
|
||||||
|
echo "Config file path: $CONFIG_FILE"
|
||||||
|
|
||||||
|
# Read configuration from file
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
. "$CONFIG_FILE"
|
||||||
|
|
||||||
|
if [ -z "${username:-}" ]; then
|
||||||
|
echo "ERROR: 'username=' is missing in gameupdate/patch-config.txt"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "${repo:-}" ]; then
|
||||||
|
echo "ERROR: 'repo=' is missing in gameupdate/patch-config.txt"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "${branch:-}" ]; then
|
||||||
|
echo "ERROR: 'branch=' is missing in gameupdate/patch-config.txt"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RETRIES="${GAMEUPDATE_DL_ATTEMPTS:-2}"
|
||||||
|
if ! [[ "$RETRIES" =~ ^[1-9][0-9]*$ ]]; then
|
||||||
|
RETRIES=2
|
||||||
|
fi
|
||||||
|
|
||||||
|
retry_cmd() {
|
||||||
|
local name="$1"
|
||||||
|
shift
|
||||||
|
local attempt=1
|
||||||
|
while true; do
|
||||||
|
if "$@"; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [ "$attempt" -ge "$RETRIES" ]; then
|
||||||
|
echo "$name failed after $attempt attempt(s)."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo "$name failed ($attempt/$RETRIES), retrying..."
|
||||||
|
attempt=$((attempt + 1))
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
project_enc=$(jq -nr --arg ns "$username" --arg rp "$repo" '$ns + "/" + $rp | @uri')
|
||||||
|
branch_enc=$(jq -nr --arg b "$branch" '$b | @uri')
|
||||||
|
|
||||||
|
# Get the latest hash
|
||||||
|
echo "Getting latest commit SHA hash"
|
||||||
|
latest_patch_sha="$(
|
||||||
|
retry_cmd "Resolve latest patch SHA" \
|
||||||
|
curl -fsSL "${API_HEADERS[@]}" \
|
||||||
|
"${GITGUD_API}/projects/${project_enc}/repository/branches/${branch_enc}" \
|
||||||
|
| jq -r '.commit.id'
|
||||||
|
)"
|
||||||
|
latest_patch_sha="$(printf '%s' "$latest_patch_sha" | tr -d '[:space:]')"
|
||||||
|
if [ -z "$latest_patch_sha" ] || [ "$latest_patch_sha" = "null" ]; then
|
||||||
|
echo "PATCH_ERR:API:Latest commit SHA response was empty."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# PRE-SETUP: Ensure SRPG data and patch structure exists
|
||||||
|
# Run Steps 1 and 2 BEFORE pulling repo patch to avoid overwriting updates
|
||||||
|
# 1) Unpack once if data folder doesn't exist (and data.dts does)
|
||||||
|
# 2) Create Patch once if patch folder doesn't exist
|
||||||
|
# --------------------------------------------------------
|
||||||
|
UNPACKER="$ROOT_DIR/SRPG_Unpacker.exe"
|
||||||
|
if [ -f "$ROOT_DIR/data.dts" ]; then
|
||||||
|
if [ -f "$UNPACKER" ]; then
|
||||||
|
echo "[Pre-Setup] Running SRPG_Unpacker preparation steps..."
|
||||||
|
|
||||||
|
# Step 1: Unpack (once) — mirror patch.ps1: unpack if no data/ or no data/project.dat
|
||||||
|
if [ ! -d "$ROOT_DIR/data" ] || [ ! -f "$ROOT_DIR/data/project.dat" ]; then
|
||||||
|
if [ -f "$ROOT_DIR/data.dts" ]; then
|
||||||
|
echo "[Pre-Setup] Step 1: Unpacking data.dts -> data"
|
||||||
|
( cd "$ROOT_DIR" && "$UNPACKER" -o data data.dts ) || echo "[Pre-Setup] ERROR: Unpack failed."
|
||||||
|
else
|
||||||
|
echo "[Pre-Setup] Step 1: Skipping unpack (no data folder and no data.dts found)."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[Pre-Setup] Step 1: data folder exists; skipping unpack."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step 2: Create Patch (once)
|
||||||
|
if [ ! -d "$ROOT_DIR/patch" ]; then
|
||||||
|
if [ -f "$ROOT_DIR/data/project.dat" ]; then
|
||||||
|
echo "[Pre-Setup] Step 2: Creating patch from data/project.dat"
|
||||||
|
( cd "$ROOT_DIR" && "$UNPACKER" ./data/project.dat -c ) || echo "[Pre-Setup] ERROR: Create Patch failed."
|
||||||
|
else
|
||||||
|
echo "[Pre-Setup] Step 2: Skipping create patch (data/project.dat not found)."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[Pre-Setup] Step 2: patch folder exists; skipping create."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[Pre-Setup] SRPG_Unpacker.exe not found in root; skipping pre-setup steps."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
download_extract() {
|
||||||
|
echo "Downloading latest patch..."
|
||||||
|
archive_sha_enc=$(jq -nr --arg s "$latest_patch_sha" '$s | @uri')
|
||||||
|
if ! retry_cmd "Download archive with curl" \
|
||||||
|
curl -fSL --progress-bar "${API_HEADERS[@]}" \
|
||||||
|
"${GITGUD_API}/projects/${project_enc}/repository/archive.zip?sha=${archive_sha_enc}" \
|
||||||
|
-o "$ROOT_DIR/repo.zip"; then
|
||||||
|
echo "Download failed!"
|
||||||
|
rm -f "$ROOT_DIR/repo.zip"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TMP_EX=$(mktemp -d)
|
||||||
|
|
||||||
|
echo "Extracting..."
|
||||||
|
if ! unzip -qo "$ROOT_DIR/repo.zip" -d "$TMP_EX"; then
|
||||||
|
echo "Extraction failed!"
|
||||||
|
rm -rf "$TMP_EX"
|
||||||
|
rm -f "$ROOT_DIR/repo.zip"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
inner=""
|
||||||
|
for d in "$TMP_EX"/*; do
|
||||||
|
if [ -d "$d" ]; then
|
||||||
|
inner="$d"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -z "$inner" ]; then
|
||||||
|
echo "Archive had no root folder!"
|
||||||
|
rm -rf "$TMP_EX"
|
||||||
|
rm -f "$ROOT_DIR/repo.zip"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Applying patch..."
|
||||||
|
if ! cp -r "$inner"/* "$ROOT_DIR/"; then
|
||||||
|
echo "Patch application failed!"
|
||||||
|
rm -rf "$TMP_EX"
|
||||||
|
rm -f "$ROOT_DIR/repo.zip"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "$TMP_EX"
|
||||||
|
|
||||||
|
echo "Cleaning up..."
|
||||||
|
rm -f "$ROOT_DIR/repo.zip"
|
||||||
|
|
||||||
|
# --------------------------------------------------------
|
||||||
|
# POST-APPLY: Run Steps 3 and 4 after patch files are merged
|
||||||
|
# --------------------------------------------------------
|
||||||
|
UNPACKER="$ROOT_DIR/SRPG_Unpacker.exe"
|
||||||
|
if [ -f "$ROOT_DIR/data.dts" ]; then
|
||||||
|
if [ -f "$UNPACKER" ]; then
|
||||||
|
echo "Running SRPG_Unpacker apply/pack steps..."
|
||||||
|
|
||||||
|
if [ -f "$ROOT_DIR/data/project.dat" ]; then
|
||||||
|
echo "Step 3: Applying patch to data/project.dat"
|
||||||
|
( cd "$ROOT_DIR" && "$UNPACKER" ./data/project.dat -a ) || echo "ERROR: Apply Patch failed."
|
||||||
|
else
|
||||||
|
echo "ERROR: data/project.dat not found; cannot apply patch."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$ROOT_DIR/data" ]; then
|
||||||
|
echo "Step 4: Packing data -> data.dts"
|
||||||
|
( cd "$ROOT_DIR" && "$UNPACKER" -o data.dts data ) || echo "WARNING: Pack failed."
|
||||||
|
else
|
||||||
|
echo "Step 4: Skipping pack (data folder not found)."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "SRPG_Unpacker.exe not found in root; skipping SRPG patch steps."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$latest_patch_sha" > "$STATE_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if previous_patch_sha.txt exists in gameupdate
|
||||||
|
if [ ! -f "$STATE_FILE" ]; then
|
||||||
|
echo "No saved patch version yet (first run); comparing with remote..."
|
||||||
|
download_extract
|
||||||
|
else
|
||||||
|
previous_patch_sha=$(tr -d '[:space:]' < "$STATE_FILE")
|
||||||
|
|
||||||
|
if [ "$latest_patch_sha" != "$previous_patch_sha" ]; then
|
||||||
|
echo "Update found! Patching..."
|
||||||
|
download_extract
|
||||||
|
else
|
||||||
|
echo "Already up to date (matches latest patch commit)."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
65
gameupdate/vocab.txt
Normal file
65
gameupdate/vocab.txt
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
# Game Characters
|
||||||
|
エル (El) - Female; inn adventurer tied to the Light Plain plotline; not player-chosen; speaks casually and informally; energetic and direct
|
||||||
|
流浪の求道者 (Seeker) - Male; roaming challenge NPC; not player-chosen; speaks in a grave, formal register; stoic and trial-focused
|
||||||
|
シスターエキュリー (Sister Ecurie) - Female; church sister of the Amol faith; not player-chosen; polite religious register; gentle and dutiful
|
||||||
|
ホエミ (Hoemi) - Female; friend in the northern district; not player-chosen; casual friendly speech; warm and approachable
|
||||||
|
ロクサヌ (Roxanu) - Female; northern district student; not player-chosen; youthful casual speech; sociable and ordinary
|
||||||
|
ミント (Mint) - Female; northern district student; not player-chosen; youthful casual speech; lively and informal
|
||||||
|
ヒルデ (Hilde) - Female; apartment resident; not player-chosen; plain civilian speech; practical and grounded
|
||||||
|
管理人ナミサ (Manager Namisa) - Female; apartment manager; not player-chosen; polite caretaker speech; responsible and matter-of-fact
|
||||||
|
デフィ (Defi) - Female; soldier's wife living in the apartment; not player-chosen; domestic casual speech; reserved and ordinary
|
||||||
|
ラム (Ram) - Female; arena warrior; not player-chosen; confident fighter's speech; bold and competitive
|
||||||
|
アルシェ (Arche) - Female; arena fan; not player-chosen; enthusiastic casual speech; excitable and friendly
|
||||||
|
バーニア (Barnia) - Female; student associated with the arena; not player-chosen; youthful casual speech; curious and energetic
|
||||||
|
フォサ (Fossa) - Female; arena-side NPC; not player-chosen; casual town speech; socially active
|
||||||
|
キャナリ (Canari) - Female; cafe worker or cafe patron; not player-chosen; light casual speech; cheerful and sociable
|
||||||
|
エロン (Elon) - Male; cafe NPC; not player-chosen; casual adult speech; relaxed and conversational
|
||||||
|
チコニャ (Ciconya) - Female; cafe NPC; not player-chosen; casual service speech; friendly and talkative
|
||||||
|
ルートル (Rootle) - Male; cafe NPC; not player-chosen; casual adult speech; easygoing
|
||||||
|
シャモー (Chameau) - Male; cafe NPC; not player-chosen; casual adult speech; relaxed and ordinary
|
||||||
|
コション (Cochon) - Male; cafe NPC; not player-chosen; casual adult speech; informal and sociable
|
||||||
|
アレニエ (Areignee) - Female; trading-company NPC; not player-chosen; businesslike polite speech; composed and practical
|
||||||
|
ミルバト (Mirbat) - Male; trading-company NPC; not player-chosen; businesslike speech; practical and restrained
|
||||||
|
受付アンヌ (Receptionist Anne) - Female; theater receptionist; not player-chosen; polite service register; courteous and professional
|
||||||
|
支配人アドルフ (Manager Adolf) - Male; theater manager; not player-chosen; formal managerial speech; authoritative and composed
|
||||||
|
アンリ (Henri) - Male; theater-related named NPC; not player-chosen; polite stage-world speech; refined and reserved
|
||||||
|
カトリーヌ (Catherine) - Female; theater performer or staff member; not player-chosen; elegant feminine speech; theatrical and poised
|
||||||
|
シエル (Ciel) - Female; theater performer or staff member; not player-chosen; polite feminine speech; graceful and composed
|
||||||
|
グラティア (Gratia) - Female; theater NPC; not player-chosen; refined speech; elegant and expressive
|
||||||
|
オレイユ (Oreille) - Female; theater NPC; not player-chosen; refined speech; attentive and polished
|
||||||
|
実況 (Commentator) - Male; arena or event commentator; not player-chosen; energetic announcing register; loud and performative
|
||||||
|
ウミ (Umi) - Female; named NPC in Albol Forest; not player-chosen; casual rural speech; practical and outdoorsy
|
||||||
|
ネリネ (Nerine) - Female; named NPC at Albol Camp; not player-chosen; casual camp speech; warm and grounded
|
||||||
|
ジャスミン (Jasmine) - Female; named NPC at Albol Camp; not player-chosen; casual feminine speech; friendly and composed
|
||||||
|
アーディ (Ardi) - Male; named NPC in the Testa settlement; not player-chosen; casual local speech; practical and direct
|
||||||
|
クラレット (Claret) - Female; named NPC in Viola Village; not player-chosen; casual village speech; grounded and approachable
|
||||||
|
ステノ (Steno) - Female; hot spring inn NPC; not player-chosen; polite hospitality speech; calm and service-minded
|
||||||
|
|
||||||
|
# Worldbuilding Terms
|
||||||
|
淫催都市ヒュプノズム (Lewd Hypnosis City Hypnosm) - Game title and central city setting; a city shaped by the Incitation curse and its social control
|
||||||
|
ヒュプノズム (Hypnosm) - Main city and hub area; divided into districts such as the southern district, slums, upper district, church, guild, theater, and lord's manor
|
||||||
|
淫催 (Incitation) - The central hypnosis-like curse or state that alters obedience, desire, and social values throughout Hypnosm
|
||||||
|
淫催の呪い (Incitation Curse) - Story term for the magical influence affecting the city and its residents
|
||||||
|
淫催の守護者 (Guardian of Incitation) - Enemy or boss title connected to the Incitation system
|
||||||
|
アモル教 (Amol Faith) - City religion imposed on residents; tied to marriage, sexuality, and the social norms of Hypnosm
|
||||||
|
光の平原 (Light Plain) - Major plot location where magical power gathers and expands; associated with danger, monsters, and the Divine King's awakening
|
||||||
|
神王覚醒 (Divine King's Awakening) - Historical event said to have created or transformed the Light Plain around twenty years earlier
|
||||||
|
血胤 (Bloodline) - Ruby-tagged lore term read as Bloodseed; unique hereditary magic tied to absorbing traits from other beings
|
||||||
|
血胤魔術 (Bloodline Magic) - Keimi's unique magic system derived from the Bloodline lineage
|
||||||
|
ブラッドシード家 (Bloodseed Family) - Fallen noble family associated with Bloodline magic
|
||||||
|
フィガロ家 (Figaro Family) - Prestigious family famous for swords and magic swords
|
||||||
|
魔剣 (Magic Sword) - Lore term for special enchanted swords, especially those connected to the Figaro family
|
||||||
|
フィガロの魔剣 (Figaro Magic Sword) - Named magic sword from the Figaro family
|
||||||
|
魔剣活性化 (Magic Sword Activation) - Story process or quest concept for making a magic sword usable
|
||||||
|
冒険者ランク (Adventurer Rank) - Guild status system; raising it unlocks citizenship and marriage-related progression
|
||||||
|
住民権 (Citizenship) - Legal status required to access restricted districts and marry within Hypnosm
|
||||||
|
ギルド (Guild) - Adventurer organization that handles rank progression and quest reporting
|
||||||
|
マナ (Mana) - Recurring magical resource gained from exploration and used in city systems
|
||||||
|
マナ屋 (Mana Shop) - City facility or service related to exchanging mana
|
||||||
|
領主の館 (Lord's Manor) - Plot location tied to the city's ruler and later story investigation
|
||||||
|
地下道 (Underground Passage) - Story route used during the Hypnosm investigation arc
|
||||||
|
魔人の塔 (Demon Tower) - Major dungeon or travel destination referenced in progression data
|
||||||
|
氷結の迷宮 (Frozen Labyrinth) - Major dungeon or travel destination referenced in progression data
|
||||||
|
宵闇のエージェント (Agent of Twilight) - Named quest title with story significance
|
||||||
|
極寒のプレリュード (Frigid Prelude) - Named quest title with story significance
|
||||||
|
性奴隷 (Sex Slave) - In-universe class/status used by event progression and relationship systems
|
||||||
62
readme.txt
Normal file
62
readme.txt
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
|
||||||
|
この度は『手折らる花へのトロイメライ』を購入して頂きありがとうございます。
|
||||||
|
|
||||||
|
以下にプレイするにあたっての注意等を書かせて頂きました。
|
||||||
|
特に免責事項・禁止事項は御一読お願いします。
|
||||||
|
|
||||||
|
|
||||||
|
■起動方法
|
||||||
|
|
||||||
|
解凍後に作成されたフォルダ内の『game.exe』をクリックして起動して下さい。
|
||||||
|
|
||||||
|
|
||||||
|
■操作キー一覧
|
||||||
|
|
||||||
|
本作品は基本的にマウス操作のみでプレイします
|
||||||
|
|
||||||
|
|
||||||
|
左クリック 移動・決定・メッセージ送り
|
||||||
|
右クリック メニュー表示・キャンセル
|
||||||
|
中クリック バックログ・文字非表示(エッチシーンのみ)
|
||||||
|
Aキー 自動メッセージ送り(エッチシーンのみ)
|
||||||
|
左Ctrlキー メッセージスキップができます
|
||||||
|
|
||||||
|
■免責事項
|
||||||
|
|
||||||
|
本ソフトの起動に伴う一切のトラブルには責任を負いかねます。
|
||||||
|
それをご理解の上での起動をお願い致します。
|
||||||
|
|
||||||
|
|
||||||
|
■禁止事項
|
||||||
|
|
||||||
|
当ソフトは成人指定です。18歳未満の方は遊ぶことができません。
|
||||||
|
ソフトおよびデータの複製・再配布、
|
||||||
|
素材の一部もしくは全ての流用を禁じます。
|
||||||
|
|
||||||
|
|
||||||
|
■使わせて頂いた素材と提供者様(敬称略)
|
||||||
|
|
||||||
|
画像等
|
||||||
|
|
||||||
|
●ぴぽや
|
||||||
|
https://pipoya.net/
|
||||||
|
|
||||||
|
|
||||||
|
BGM・SE等
|
||||||
|
|
||||||
|
●OtoLogic
|
||||||
|
https://otologic.jp/free/license.html
|
||||||
|
●MusMus
|
||||||
|
https://musmus.main.jp/info.html
|
||||||
|
|
||||||
|
提供者様にはこの場を借りて、感謝申し上げます。
|
||||||
|
|
||||||
|
|
||||||
|
■連絡先
|
||||||
|
作者Cien
|
||||||
|
https://ci-en.dlsite.com/creator/9555
|
||||||
|
|
||||||
|
ご質問、ご感想、バグ報告などお気軽にご連絡ください。
|
||||||
|
|
||||||
|
Copyright (C) 2026 +蟹 All Rights Reserved.
|
||||||
|
|
||||||
2856
wolf_json/CDataBase.project.json
Normal file
2856
wolf_json/CDataBase.project.json
Normal file
File diff suppressed because it is too large
Load diff
202242
wolf_json/CommonEvent.dat.json
Normal file
202242
wolf_json/CommonEvent.dat.json
Normal file
File diff suppressed because it is too large
Load diff
17576
wolf_json/DataBase.project.json
Normal file
17576
wolf_json/DataBase.project.json
Normal file
File diff suppressed because it is too large
Load diff
163
wolf_json/Dungeon.mps.json
Normal file
163
wolf_json/Dungeon.mps.json
Normal file
|
|
@ -0,0 +1,163 @@
|
||||||
|
{
|
||||||
|
"file": "Dungeon.mps",
|
||||||
|
"kind": "map",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"event": 1,
|
||||||
|
"page": 0,
|
||||||
|
"name": "回復人",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 0,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "「ここではコモンイベント15を利用して\n 【セーブ禁止】されているからセーブできないぜ。\n ところで回復するかい?",
|
||||||
|
"text": "「ここではコモンイベント15を利用して\n 【セーブ禁止】されているからセーブできないぜ。\n ところで回復するかい?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 1,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Choice",
|
||||||
|
"speaker_src": "choice",
|
||||||
|
"source": "完全回復する",
|
||||||
|
"text": "完全回復する"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 1,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "Choice",
|
||||||
|
"speaker_src": "choice",
|
||||||
|
"source": "何もしない",
|
||||||
|
"text": "何もしない"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 3,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "「完全回復、了解!\n ピロリロリロ~!",
|
||||||
|
"text": "「完全回復、了解!\n ピロリロリロ~!"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"event": 3,
|
||||||
|
"page": 0,
|
||||||
|
"name": "宝箱",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 0,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "「『WOLF RPGエディター』\n これを手にする者には試練が降りかかる」\nと書いてある。",
|
||||||
|
"text": "「『WOLF RPGエディター』\n これを手にする者には試練が降りかかる」\nと書いてある。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 1,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Choice",
|
||||||
|
"speaker_src": "choice",
|
||||||
|
"source": "開ける",
|
||||||
|
"text": "開ける"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 1,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "Choice",
|
||||||
|
"speaker_src": "choice",
|
||||||
|
"source": "まだ開けない",
|
||||||
|
"text": "まだ開けない"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 6,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "”そなたらがウディタを手にするのに\n ふさわしい者かどうか、その力で示せ!”",
|
||||||
|
"text": "”そなたらがウディタを手にするのに\n ふさわしい者かどうか、その力で示せ!”"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 7,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "”10ターン以内に",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "”10ターン以内に\n \\r[我,わ]が\\r[輩,はい]を倒してみせるのだ!”",
|
||||||
|
"text": "”10ターン以内に\n \\r[我,わ]が\\r[輩,はい]を倒してみせるのだ!”"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 15,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "”おめでとう、君たちの勝ちだ”",
|
||||||
|
"text": "”おめでとう、君たちの勝ちだ”"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 16,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "”これを使って、存分に世界を創造するがいい……”",
|
||||||
|
"text": "”これを使って、存分に世界を創造するがいい……”"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 22,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ウルファールたちは",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ウルファールたちは\n「WOLF RPGエディター」を手に入れた!",
|
||||||
|
"text": "ウルファールたちは\n「WOLF RPGエディター」を手に入れた!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 23,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "これはマップで使うことができるぞ!\nやってみよう!",
|
||||||
|
"text": "これはマップで使うことができるぞ!\nやってみよう!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 29,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "”また挑戦するがいい……”",
|
||||||
|
"text": "”また挑戦するがいい……”"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"event": 4,
|
||||||
|
"page": 0,
|
||||||
|
"name": "店の人",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 0,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "「いらっしゃい!\n 何か買ってくぅ?それとも、セ・エ・ブ?\n うふっ♪",
|
||||||
|
"text": "「いらっしゃい!\n 何か買ってくぅ?それとも、セ・エ・ブ?\n うふっ♪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 1,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Choice",
|
||||||
|
"speaker_src": "choice",
|
||||||
|
"source": "ショップ",
|
||||||
|
"text": "ショップ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 1,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "Choice",
|
||||||
|
"speaker_src": "choice",
|
||||||
|
"source": "セーブで",
|
||||||
|
"text": "セーブで"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
644
wolf_json/ED_mon.mps.json
Normal file
644
wolf_json/ED_mon.mps.json
Normal file
|
|
@ -0,0 +1,644 @@
|
||||||
|
{
|
||||||
|
"file": "ED_mon.mps",
|
||||||
|
"kind": "map",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"event": 0,
|
||||||
|
"page": 2,
|
||||||
|
"name": "門番(左)",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 31,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nご苦労さまです。兵士さん。",
|
||||||
|
"text": "セルリア\nご苦労さまです。兵士さん。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 32,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "門番\n\\f[64]ありがとうございます!\n今日も異常なしです!",
|
||||||
|
"text": "門番\n\\f[64]ありがとうございます!\n今日も異常なしです!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 35,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nわぁっ……!大きな声ですね……。\n驚いちゃいました。",
|
||||||
|
"text": "セルリア\nわぁっ……!大きな声ですね……。\n驚いちゃいました。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 36,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "門番\n(……………………い、異常あり!!異常なおっぱいあり!!)",
|
||||||
|
"text": "門番\n(……………………い、異常あり!!異常なおっぱいあり!!)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 60,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n…………おつかれさん。",
|
||||||
|
"text": "ローザ\n…………おつかれさん。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 61,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "門番\n\\f[64]ありがとうございます!\n今日も異常なしです!",
|
||||||
|
"text": "門番\n\\f[64]ありがとうございます!\n今日も異常なしです!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 63,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n近くで大きな声を出すな……。耳が痛い……。",
|
||||||
|
"text": "ローザ\n近くで大きな声を出すな……。耳が痛い……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 64,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "門番\n(……………………い、異常あり!!異常なおっぱいあり!!)",
|
||||||
|
"text": "門番\n(……………………い、異常あり!!異常なおっぱいあり!!)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"event": 2,
|
||||||
|
"page": 0,
|
||||||
|
"name": "ev",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 35,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nはぁ、暇だな~。",
|
||||||
|
"text": "王国の門番(左)\nはぁ、暇だな~。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 39,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(右)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(右)\nせめて貴族がお忍びでやってるパーティに呼ばれた娼婦でも通れば、\n目の保養になるんだが……。",
|
||||||
|
"text": "王国の門番(右)\nせめて貴族がお忍びでやってるパーティに呼ばれた娼婦でも通れば、\n目の保養になるんだが……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 40,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nおいおいあんまり大きな声で言うなよ……。\n大抵の貴族が黙認しているとはいえ、ご法度なんだからさ。",
|
||||||
|
"text": "王国の門番(左)\nおいおいあんまり大きな声で言うなよ……。\n大抵の貴族が黙認しているとはいえ、ご法度なんだからさ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 41,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(右)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(右)\nいいだろ別に……、こんな場所じゃ誰も聞いてねえよ。",
|
||||||
|
"text": "王国の門番(右)\nいいだろ別に……、こんな場所じゃ誰も聞いてねえよ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 43,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nん?とか言ってたらなんか来たぞ……。",
|
||||||
|
"text": "王国の門番(左)\nん?とか言ってたらなんか来たぞ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 44,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(右)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(右)\nほんとだ……。あれは……女?\nもしかして娼婦じゃねえか?\nさて、今日はどんな女が来るのか……、ワクワク……。",
|
||||||
|
"text": "王国の門番(右)\nほんとだ……。あれは……女?\nもしかして娼婦じゃねえか?\nさて、今日はどんな女が来るのか……、ワクワク……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 58,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあらぁ♥門番さん方お疲れ様でぇす♥",
|
||||||
|
"text": "セルリア\nあらぁ♥門番さん方お疲れ様でぇす♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 59,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 60,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n…………………………どうも。",
|
||||||
|
"text": "ローザ\n…………………………どうも。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 61,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nあ、あの……あなたは……。\nいえ……、あなた様はまさかセ……、",
|
||||||
|
"text": "王国の門番(左)\nあ、あの……あなたは……。\nいえ……、あなた様はまさかセ……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 63,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあっ、わたくしですかぁ♥\n隣の町から来た娼婦でぇす♥\n今日は貴族の方々のパーティにお呼ばれしていますの♥",
|
||||||
|
"text": "セルリア\nあっ、わたくしですかぁ♥\n隣の町から来た娼婦でぇす♥\n今日は貴族の方々のパーティにお呼ばれしていますの♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 65,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nぼ、僕も……、です……。",
|
||||||
|
"text": "ローザ\nぼ、僕も……、です……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 66,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nで、ですが……、どう見ても……",
|
||||||
|
"text": "王国の門番(左)\nで、ですが……、どう見ても……"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 68,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nはい?なんですかぁ♥",
|
||||||
|
"text": "セルリア\nはい?なんですかぁ♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 71,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nセルリア様……ですよね……?\n隣にいるのもローザさんですし……。",
|
||||||
|
"text": "王国の門番(左)\nセルリア様……ですよね……?\n隣にいるのもローザさんですし……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 84,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 85,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nセル……リア……?ど、どこのどなたですかぁ?\nそんな意地悪を言わないで通してくださいませ♥",
|
||||||
|
"text": "セルリア\nセル……リア……?ど、どこのどなたですかぁ?\nそんな意地悪を言わないで通してくださいませ♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 86,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nえっ?し、しかし……、どこからどう見てもセルリア様で……。",
|
||||||
|
"text": "王国の門番(左)\nえっ?し、しかし……、どこからどう見てもセルリア様で……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 87,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 88,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nもう、何を言っているかわかりませんわー!\n知りません!そんな人知りません!聞いたことがありませんわー!",
|
||||||
|
"text": "セルリア\nもう、何を言っているかわかりませんわー!\n知りません!そんな人知りません!聞いたことがありませんわー!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 95,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 96,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあ、なるほど!わかりました!\nつまりは、通行料を払えということかしら?\nそれも……、わ・た・く・しの体で……ですよね♥",
|
||||||
|
"text": "セルリア\nあ、なるほど!わかりました!\nつまりは、通行料を払えということかしら?\nそれも……、わ・た・く・しの体で……ですよね♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 98,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nい、いえ、別にそのようなことは……。",
|
||||||
|
"text": "王国の門番(左)\nい、いえ、別にそのようなことは……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 106,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 107,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 108,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 109,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nはぁい♥",
|
||||||
|
"text": "セルリア\nはぁい♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 115,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番\n……………………!!!!",
|
||||||
|
"text": "王国の門番\n……………………!!!!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 116,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 117,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n お客さまを待たせるわけにはいきませんの……♥\n今日のところは、これで見逃していただけませんかしら♥",
|
||||||
|
"text": "セルリア\n お客さまを待たせるわけにはいきませんの……♥\n今日のところは、これで見逃していただけませんかしら♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 118,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 119,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nた、頼む……、頼む……。",
|
||||||
|
"text": "ローザ\nた、頼む……、頼む……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 120,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番\nは、はい…………。",
|
||||||
|
"text": "王国の門番\nは、はい…………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 121,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 122,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 123,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nではでは、ごめんあそばせ~~。",
|
||||||
|
"text": "セルリア\nではでは、ごめんあそばせ~~。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 124,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 125,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 134,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 138,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\nまさか、あんなにセルリア様とローザさんにそっくりな娼婦がいるとは……。",
|
||||||
|
"text": "王国の門番(左)\nまさか、あんなにセルリア様とローザさんにそっくりな娼婦がいるとは……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 139,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(右)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(右)\nい、今更だが……、本物じゃないよな?",
|
||||||
|
"text": "王国の門番(右)\nい、今更だが……、本物じゃないよな?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 140,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\n本物があんなスケベな服着てるわけないだろ!\n雰囲気もエロすぎだったし、やりなれてるっていうか……。",
|
||||||
|
"text": "王国の門番(左)\n本物があんなスケベな服着てるわけないだろ!\n雰囲気もエロすぎだったし、やりなれてるっていうか……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 141,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(右)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(右)\nヤリマンってああいう感じなんだなぁ。\n特に金髪の方。ありゃ、マジモンだ。\nそれにしても、いい体してたわぁ……。",
|
||||||
|
"text": "王国の門番(右)\nヤリマンってああいう感じなんだなぁ。\n特に金髪の方。ありゃ、マジモンだ。\nそれにしても、いい体してたわぁ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 142,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(左)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(左)\n顔もセルリア様とローザさんに似てて美人だし…、\nあのドスケベな乳首……、うぅっ。\n勃起で股間が痛ぇよ……。",
|
||||||
|
"text": "王国の門番(左)\n顔もセルリア様とローザさんに似てて美人だし…、\nあのドスケベな乳首……、うぅっ。\n勃起で股間が痛ぇよ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 143,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王国の門番(右)",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王国の門番(右)\n俺もだ。\n早く帰って忘れないうちに抜いときたいぜ……。",
|
||||||
|
"text": "王国の門番(右)\n俺もだ。\n早く帰って忘れないうちに抜いときたいぜ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 153,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 154,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 159,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n…………無事、王国に入り込めたようですね。\nまさかこのような服を着せられるとは思いませんでしたが……、\n作戦は成功したようです。",
|
||||||
|
"text": "ローザ\n…………無事、王国に入り込めたようですね。\nまさかこのような服を着せられるとは思いませんでしたが……、\n作戦は成功したようです。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 160,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 161,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n無事じゃないわよ!",
|
||||||
|
"text": "セルリア\n無事じゃないわよ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 162,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 163,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nえっ?",
|
||||||
|
"text": "ローザ\nえっ?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 164,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 165,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n一緒に練習したのに、わたくしにばかり娼婦の真似をさせて!\nわたくしだって恥ずかしいのに!",
|
||||||
|
"text": "セルリア\n一緒に練習したのに、わたくしにばかり娼婦の真似をさせて!\nわたくしだって恥ずかしいのに!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 166,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 167,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nす、すみません……。\n演技は苦手なものでして……。",
|
||||||
|
"text": "ローザ\nす、すみません……。\n演技は苦手なものでして……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 168,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 169,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあの兵士さん達、絶対わたくしのほうがいやらしいと思ってる……。\n普段からエッチなことしてる女の子だと思ってるんだ……。",
|
||||||
|
"text": "セルリア\nあの兵士さん達、絶対わたくしのほうがいやらしいと思ってる……。\n普段からエッチなことしてる女の子だと思ってるんだ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 170,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 171,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nセ、セルリア様の演技はとてもお上手でしたよ……。",
|
||||||
|
"text": "ローザ\nセ、セルリア様の演技はとてもお上手でしたよ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 172,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 173,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nもう!そんなこと言われても嬉しくないもん!",
|
||||||
|
"text": "セルリア\nもう!そんなこと言われても嬉しくないもん!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 174,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 175,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nあ、あまり大きな声を出されてはいけません……。\nその……、周りの目が……。",
|
||||||
|
"text": "ローザ\nあ、あまり大きな声を出されてはいけません……。\nその……、周りの目が……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 176,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 177,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nはっ……!",
|
||||||
|
"text": "セルリア\nはっ……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 182,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 183,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n確かに……、わたくし達のことをじろじろと見ていますね……。\n特に……、男の方々が……。",
|
||||||
|
"text": "セルリア\n確かに……、わたくし達のことをじろじろと見ていますね……。\n特に……、男の方々が……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 186,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nよく娼婦が出入りしているらしいですが……、あくまで非公式ですからね。\nこの姿だと目立ちます。\n早く公爵のお屋敷に向かいましょう。",
|
||||||
|
"text": "ローザ\nよく娼婦が出入りしているらしいですが……、あくまで非公式ですからね。\nこの姿だと目立ちます。\n早く公爵のお屋敷に向かいましょう。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 188,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nえぇ、そうしましょう。",
|
||||||
|
"text": "セルリア\nえぇ、そうしましょう。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
877
wolf_json/ED_studio.mps.json
Normal file
877
wolf_json/ED_studio.mps.json
Normal file
|
|
@ -0,0 +1,877 @@
|
||||||
|
{
|
||||||
|
"file": "ED_studio.mps",
|
||||||
|
"kind": "map",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"event": 0,
|
||||||
|
"page": 0,
|
||||||
|
"name": "ev",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 4,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "\n数日後………………",
|
||||||
|
"text": "\n数日後………………"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 16,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n…………ということがあったんです。",
|
||||||
|
"text": "セルリア\n…………ということがあったんです。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 18,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "カメラマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "カメラマン\nいやぁ、なんて壮大な物語なんだ!\nその話だけでも映像化できそうだね!",
|
||||||
|
"text": "カメラマン\nいやぁ、なんて壮大な物語なんだ!\nその話だけでも映像化できそうだね!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 20,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n今わたくしがこうして無事でいられるのも、\nまだ町に来て間もない私達を愛してくれた皆様のおかげです。\nねっ、ローザ。",
|
||||||
|
"text": "セルリア\n今わたくしがこうして無事でいられるのも、\nまだ町に来て間もない私達を愛してくれた皆様のおかげです。\nねっ、ローザ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 22,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nま、まぁ……、はい……。",
|
||||||
|
"text": "ローザ\nま、まぁ……、はい……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 23,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "カメラマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "カメラマン\nでもいいのかい、王国に戻らなくても?\n今だったらその王子も失脚して、\n堂々と帰れるんでしょ?",
|
||||||
|
"text": "カメラマン\nでもいいのかい、王国に戻らなくても?\n今だったらその王子も失脚して、\n堂々と帰れるんでしょ?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 25,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nいえ……、わたくし達はこれからもこの町で\n暮らしていきたいと思っております。\n皆様から受けた御恩を誠心誠意お返しするために……。",
|
||||||
|
"text": "セルリア\nいえ……、わたくし達はこれからもこの町で\n暮らしていきたいと思っております。\n皆様から受けた御恩を誠心誠意お返しするために……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 26,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "カメラマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "カメラマン\nさすがセルリアちゃん、ローザちゃん!\nそれじゃあ、恩返しの「撮影」!早速始めちゃおうか!",
|
||||||
|
"text": "カメラマン\nさすがセルリアちゃん、ローザちゃん!\nそれじゃあ、恩返しの「撮影」!早速始めちゃおうか!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 31,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "二人のことを教えて",
|
||||||
|
"text": "二人のことを教えて"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 32,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nわたくし達はとある王国で、聖女と騎士という肩書きをいただいていました。\n身に余る立場でしたがその名に恥じぬよう、\n全身全霊でその職務を果たしていました。",
|
||||||
|
"text": "セルリア\nわたくし達はとある王国で、聖女と騎士という肩書きをいただいていました。\n身に余る立場でしたがその名に恥じぬよう、\n全身全霊でその職務を果たしていました。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 33,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nしかし、僕達はその国の王子によって追放されてしまった。\n素性を隠してこの町で暮らしていたんだ。\n騙すような形になってすまない。",
|
||||||
|
"text": "ローザ\nしかし、僕達はその国の王子によって追放されてしまった。\n素性を隠してこの町で暮らしていたんだ。\n騙すような形になってすまない。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 34,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "これからどうする?",
|
||||||
|
"text": "これからどうする?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 35,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n王国から助けていただいたことも含め\n何より、余所者のわたくし達を受け入れていただいた皆様には\n感謝しかありません。",
|
||||||
|
"text": "セルリア\n王国から助けていただいたことも含め\n何より、余所者のわたくし達を受け入れていただいた皆様には\n感謝しかありません。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 36,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nできれば、僕達はこの町でこれからも暮らしていきたいと思っている。\nだから改めてこの町の一員として認めてもらえればありがたい。",
|
||||||
|
"text": "ローザ\nできれば、僕達はこの町でこれからも暮らしていきたいと思っている。\nだから改めてこの町の一員として認めてもらえればありがたい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 37,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n皆様から受けた御恩を誠心誠意お返ししていきたいと思います。",
|
||||||
|
"text": "セルリア\n皆様から受けた御恩を誠心誠意お返ししていきたいと思います。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 41,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "この町でやりたいことは",
|
||||||
|
"text": "この町でやりたいことは"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 42,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nええっと……、わたくしにできる事は少ないですが……、\nお世話になった方達に",
|
||||||
|
"text": "セルリア\nええっと……、わたくしにできる事は少ないですが……、\nお世話になった方達に"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 43,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nできれば、僕達はこの町でこれからも暮らしていきたいと思っている。\nだから改めてこの町の一員として認めてもらえればありがたい。",
|
||||||
|
"text": "ローザ\nできれば、僕達はこの町でこれからも暮らしていきたいと思っている。\nだから改めてこの町の一員として認めてもらえればありがたい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 48,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "エッチななことについてどう思っている?",
|
||||||
|
"text": "エッチななことについてどう思っている?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 49,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nえっ……?",
|
||||||
|
"text": "セルリア\nえっ……?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 50,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n……こんな質問にも答えなければならないのか?",
|
||||||
|
"text": "ローザ\n……こんな質問にも答えなければならないのか?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 51,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nだ、駄目よ……、ローザ。\n皆さんが見るのだからちゃんと答えないと……。",
|
||||||
|
"text": "セルリア\nだ、駄目よ……、ローザ。\n皆さんが見るのだからちゃんと答えないと……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 52,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nで、ですが……、",
|
||||||
|
"text": "ローザ\nで、ですが……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 53,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n……………………。",
|
||||||
|
"text": "セルリア\n……………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 54,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nまだわたくしは経験が少ないですので……、\nリードしていただけると嬉しいですね。\nそ、その、ちょっと無理矢理されるのも……、好きです。",
|
||||||
|
"text": "セルリア\nまだわたくしは経験が少ないですので……、\nリードしていただけると嬉しいですね。\nそ、その、ちょっと無理矢理されるのも……、好きです。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 55,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nで、でも!積極的な女性を好まれる方がいることも存じ上げてますので、\nわたくしも頑張って皆さんを気持ちよくさせれるよう頑張ります!",
|
||||||
|
"text": "セルリア\nで、でも!積極的な女性を好まれる方がいることも存じ上げてますので、\nわたくしも頑張って皆さんを気持ちよくさせれるよう頑張ります!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 56,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n………………。",
|
||||||
|
"text": "ローザ\n………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 57,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nあまり……、色事は得意ではないが……、\n性的な快感は……、その……、正直嫌いじゃないと最近は思っている……。",
|
||||||
|
"text": "ローザ\nあまり……、色事は得意ではないが……、\n性的な快感は……、その……、正直嫌いじゃないと最近は思っている……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 58,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nも、もし、その気があるのならば、僕を激しく求めて欲しい……。\nそうすれば……、体が快感を欲してしまうから……。",
|
||||||
|
"text": "ローザ\nも、もし、その気があるのならば、僕を激しく求めて欲しい……。\nそうすれば……、体が快感を欲してしまうから……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 60,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "最後に例のポーズで視聴者へメッセージを",
|
||||||
|
"text": "最後に例のポーズで視聴者へメッセージを"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 61,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nで、でも!積極的な女性を好まれる方がいることも存じ上げてますので、\nわたくしも頑張って皆さんを気持ちよくさせれるよう頑張ります!",
|
||||||
|
"text": "セルリア\nで、でも!積極的な女性を好まれる方がいることも存じ上げてますので、\nわたくしも頑張って皆さんを気持ちよくさせれるよう頑張ります!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 62,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n例のポーズって……。",
|
||||||
|
"text": "ローザ\n例のポーズって……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 63,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあれのこと……ですよね……。",
|
||||||
|
"text": "セルリア\nあれのこと……ですよね……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 64,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n……………………。",
|
||||||
|
"text": "セルリア\n……………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 65,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nみ、皆さん……、この度は本当にありがとうございました……。\nお見苦しい体かと思いますが、皆さんに喜んで頂けているということで、\nこれからもお相手お願いいたします……♥",
|
||||||
|
"text": "セルリア\nみ、皆さん……、この度は本当にありがとうございました……。\nお見苦しい体かと思いますが、皆さんに喜んで頂けているということで、\nこれからもお相手お願いいたします……♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 66,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nセルリア様のような器量はないが……、\nそれでも僕を欲してもらえるならば、その気持ちには全力で応えよう……♥",
|
||||||
|
"text": "ローザ\nセルリア様のような器量はないが……、\nそれでも僕を欲してもらえるならば、その気持ちには全力で応えよう……♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 79,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nはい!カットォー!",
|
||||||
|
"text": "スカウトマン\nはい!カットォー!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 80,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nいやあ、二人ともデビュー以降すごい人気でね。\n「そもそも彼女達は誰なんだ?」って声が多くてさ、\nこのイメージビデオはさらにいい宣伝になるよぉ。",
|
||||||
|
"text": "スカウトマン\nいやあ、二人ともデビュー以降すごい人気でね。\n「そもそも彼女達は誰なんだ?」って声が多くてさ、\nこのイメージビデオはさらにいい宣伝になるよぉ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 81,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n……変わった趣味の人間が多いもんだ。",
|
||||||
|
"text": "ローザ\n……変わった趣味の人間が多いもんだ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 82,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそうよね。\nわたくし達のことなんて聞いても何も面白くないのに……。",
|
||||||
|
"text": "セルリア\nそうよね。\nわたくし達のことなんて聞いても何も面白くないのに……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 83,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nい、いえ……!今のは僕のことを言っているのであって……、\n決してセルリア様のことを含んだわけでは……。",
|
||||||
|
"text": "ローザ\nい、いえ……!今のは僕のことを言っているのであって……、\n決してセルリア様のことを含んだわけでは……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 84,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nそれにしてもいいのかい?\nこのイメージビデオの売上はあの王国に全部寄付するって。\n王子とやらが悪いんだから、全部責任取らせればいいのに。",
|
||||||
|
"text": "スカウトマン\nそれにしてもいいのかい?\nこのイメージビデオの売上はあの王国に全部寄付するって。\n王子とやらが悪いんだから、全部責任取らせればいいのに。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 85,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nたとえ国が浄化されたとしても、必ず痛みが伴います。\n少しでも市民の方々の助けになればと思いまして……。",
|
||||||
|
"text": "セルリア\nたとえ国が浄化されたとしても、必ず痛みが伴います。\n少しでも市民の方々の助けになればと思いまして……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 86,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n二人で話して決めたんだ\n僕達には健やかに暮らせるだけの金があればいい。",
|
||||||
|
"text": "ローザ\n二人で話して決めたんだ\n僕達には健やかに暮らせるだけの金があればいい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 87,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nくぅ~……、尊すぎる……!\nそりゃあファンも増えるわけだ!",
|
||||||
|
"text": "スカウトマン\nくぅ~……、尊すぎる……!\nそりゃあファンも増えるわけだ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 92,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nですので、これからも皆さんのお手伝い、させてくださいね♪",
|
||||||
|
"text": "セルリア\nですので、これからも皆さんのお手伝い、させてくださいね♪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 93,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n……あまりセルリア様に無理は言わないでくれ。\n代わり僕が身を粉にして皆の為に働こう。",
|
||||||
|
"text": "ローザ\n……あまりセルリア様に無理は言わないでくれ。\n代わり僕が身を粉にして皆の為に働こう。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 94,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあらぁ、皆さんのことを独り占めする気?\nいつの間にそんなに我儘になっちゃったのかしら。",
|
||||||
|
"text": "セルリア\nあらぁ、皆さんのことを独り占めする気?\nいつの間にそんなに我儘になっちゃったのかしら。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 95,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nち、違います!そういう意味ではありません!\n僕は単純にセルリア様のことを……。",
|
||||||
|
"text": "ローザ\nち、違います!そういう意味ではありません!\n僕は単純にセルリア様のことを……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 96,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nふふふ……、ローザだけじゃなく、わたくしの相手もしてくださいね。\n約束ですよ。\nじゃないとわたくし嫉妬しちゃいますので。",
|
||||||
|
"text": "セルリア\nふふふ……、ローザだけじゃなく、わたくしの相手もしてくださいね。\n約束ですよ。\nじゃないとわたくし嫉妬しちゃいますので。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 97,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nはい!カットォ!最高!\n一言で言うと最高!それ以外なら無限に語れる!\n今回のイメージビデオは過去一の傑作になりそうだ!",
|
||||||
|
"text": "スカウトマン\nはい!カットォ!最高!\n一言で言うと最高!それ以外なら無限に語れる!\n今回のイメージビデオは過去一の傑作になりそうだ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 98,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n本当ですか?それは、嬉しいです。",
|
||||||
|
"text": "セルリア\n本当ですか?それは、嬉しいです。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 99,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n少しでも王国の助けになれればいいですね。",
|
||||||
|
"text": "ローザ\n少しでも王国の助けになれればいいですね。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 105,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nよし、それじゃあ最後にパッケージの表紙取ろうか!\nこう、二人で胸をあわせてギューっと抱き合って目線をこっちにちょうだい!",
|
||||||
|
"text": "スカウトマン\nよし、それじゃあ最後にパッケージの表紙取ろうか!\nこう、二人で胸をあわせてギューっと抱き合って目線をこっちにちょうだい!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 107,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nこう……ですか?",
|
||||||
|
"text": "セルリア\nこう……ですか?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 114,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "\nEDCG表示",
|
||||||
|
"text": "\nEDCG表示"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 115,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nお顔が近いです、セルリア様……。",
|
||||||
|
"text": "ローザ\nお顔が近いです、セルリア様……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 116,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n気にしない気にしない。\nほら、笑顔よローザ。",
|
||||||
|
"text": "セルリア\n気にしない気にしない。\nほら、笑顔よローザ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 119,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n…………………………。",
|
||||||
|
"text": "ローザ\n…………………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 120,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nふふふ。まさか二人でこんなことしてるなんて……。\n昔なら考えられないわね。\nとっても幸せ……。",
|
||||||
|
"text": "セルリア\nふふふ。まさか二人でこんなことしてるなんて……。\n昔なら考えられないわね。\nとっても幸せ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 121,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nはい……、ですが少し複雑です。",
|
||||||
|
"text": "ローザ\nはい……、ですが少し複雑です。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 122,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n……どうして?",
|
||||||
|
"text": "セルリア\n……どうして?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 123,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n結局……、僕はセルリア様を守れませんでした。\nそんな僕に幸せになる資格があるのか……、",
|
||||||
|
"text": "ローザ\n結局……、僕はセルリア様を守れませんでした。\nそんな僕に幸せになる資格があるのか……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 124,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nそして、降って湧いたような幸せが、\n夢のようにふと消えてしまうのではないかと不安になるのです。",
|
||||||
|
"text": "ローザ\nそして、降って湧いたような幸せが、\n夢のようにふと消えてしまうのではないかと不安になるのです。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 125,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n確かに夢みたいね。\nわたくし達の未来にこんな形があるなんて……、\nそれに……。",
|
||||||
|
"text": "セルリア\n確かに夢みたいね。\nわたくし達の未来にこんな形があるなんて……、\nそれに……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 126,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nわたくし達、二人ともこんなにエッチな女の子だったなんてね……、ふふっ……。",
|
||||||
|
"text": "セルリア\nわたくし達、二人ともこんなにエッチな女の子だったなんてね……、ふふっ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 127,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nうぅっ……。ぼ、僕は……その……。",
|
||||||
|
"text": "ローザ\nうぅっ……。ぼ、僕は……その……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 131,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n夢なら何度だって見れるわ。\nもし、夢から醒めてしまったら……、",
|
||||||
|
"text": "セルリア\n夢なら何度だって見れるわ。\nもし、夢から醒めてしまったら……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 132,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nまた皆さんに夢を見せてもらいに行きましょう。\n今度は二人で……ね♥",
|
||||||
|
"text": "セルリア\nまた皆さんに夢を見せてもらいに行きましょう。\n今度は二人で……ね♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 133,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nは、はい……♥",
|
||||||
|
"text": "ローザ\nは、はい……♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 134,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\nおっ!いいよ!その表情!完璧!\nそうだな……、今回のイメージビデオのタイトルは……。",
|
||||||
|
"text": "スカウトマン\nおっ!いいよ!その表情!完璧!\nそうだな……、今回のイメージビデオのタイトルは……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 139,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "\nED終了 タイトル出す?",
|
||||||
|
"text": "\nED終了 タイトル出す?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 151,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nあ、あのぉ……、セルリア様……。",
|
||||||
|
"text": "ローザ\nあ、あのぉ……、セルリア様……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 152,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nどうしたのかしらローザ?",
|
||||||
|
"text": "セルリア\nどうしたのかしらローザ?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 153,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nもう娼婦のフリをする必要はないですよね?\nで、あればもうこの服を着る必要も……。",
|
||||||
|
"text": "ローザ\nもう娼婦のフリをする必要はないですよね?\nで、あればもうこの服を着る必要も……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 154,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n駄目よぉ。これからわたくし達のことを助けてくれた方達に、\nお礼に回るんだから。",
|
||||||
|
"text": "セルリア\n駄目よぉ。これからわたくし達のことを助けてくれた方達に、\nお礼に回るんだから。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 155,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nそ、それとこの服にどのような関係が……、",
|
||||||
|
"text": "ローザ\nそ、それとこの服にどのような関係が……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 156,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそれは当然、皆さんに喜んで貰えるからに決まってるじゃない。\nほら、こーやって……、ねっ♥",
|
||||||
|
"text": "セルリア\nそれは当然、皆さんに喜んで貰えるからに決まってるじゃない。\nほら、こーやって……、ねっ♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 157,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nわ、わかりました……。",
|
||||||
|
"text": "ローザ\nわ、わかりました……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 162,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそうだ!さっき先輩のシスターの方に男性の喜ぶ言葉遣いを学んだから、\nローザにも伝授するわねっ。",
|
||||||
|
"text": "セルリア\nそうだ!さっき先輩のシスターの方に男性の喜ぶ言葉遣いを学んだから、\nローザにも伝授するわねっ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 163,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 164,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nは、はい……。",
|
||||||
|
"text": "ローザ\nは、はい……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 168,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nまず、男性器のことは「おちんぽ」って呼ぶの。\nわかった?",
|
||||||
|
"text": "セルリア\nまず、男性器のことは「おちんぽ」って呼ぶの。\nわかった?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 169,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 170,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n………………!\nそ、そのようなはしたない言葉を……!",
|
||||||
|
"text": "ローザ\n………………!\nそ、そのようなはしたない言葉を……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 172,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nはいっ♪言ってみて♥",
|
||||||
|
"text": "セルリア\nはいっ♪言ってみて♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 173,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 174,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n………………。",
|
||||||
|
"text": "ローザ\n………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 175,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 176,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nお、おちんぽ…………。",
|
||||||
|
"text": "ローザ\nお、おちんぽ…………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 178,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n………………。",
|
||||||
|
"text": "セルリア\n………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 179,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 180,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nだ、駄目でしたか……?",
|
||||||
|
"text": "ローザ\nだ、駄目でしたか……?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 181,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "汗",
|
||||||
|
"text": "汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 182,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n恥じらいながら口にする方が、逆に良いのかもしれないわね……。\n参考になったわ……。さすがねローザ。",
|
||||||
|
"text": "セルリア\n恥じらいながら口にする方が、逆に良いのかもしれないわね……。\n参考になったわ……。さすがねローザ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 183,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 184,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nお、お褒めいただきありがとうございます……。",
|
||||||
|
"text": "ローザ\nお、お褒めいただきありがとうございます……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 186,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそれとね、エッチな声を出す時は、\n全力でお腹から声を出した方がいいんだって。",
|
||||||
|
"text": "セルリア\nそれとね、エッチな声を出す時は、\n全力でお腹から声を出した方がいいんだって。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 188,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n気持ち良くなっちゃうと、自然と「お゙っ♥」ってはしたない声出ちゃうでしょ?\n男性の方はそれが好きらしいの。",
|
||||||
|
"text": "セルリア\n気持ち良くなっちゃうと、自然と「お゙っ♥」ってはしたない声出ちゃうでしょ?\n男性の方はそれが好きらしいの。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 189,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 190,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nぼ、僕にできますかね……。",
|
||||||
|
"text": "ローザ\nぼ、僕にできますかね……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 195,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nさっ、早速実践よ。頑張りましょうね♪",
|
||||||
|
"text": "セルリア\nさっ、早速実践よ。頑張りましょうね♪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 196,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 197,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nは、はい……。",
|
||||||
|
"text": "ローザ\nは、はい……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 201,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "\nセルリアとローザが\\c[06]淫語\\c[00]を習得しました!\nセルリアとローザの\\c[06]貞操観念\\c[00]が変化しました!",
|
||||||
|
"text": "\nセルリアとローザが\\c[06]淫語\\c[00]を習得しました!\nセルリアとローザの\\c[06]貞操観念\\c[00]が変化しました!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 236,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n次は、おちんぽが顔の前に来た時に、\n嬉しそうに「くっさぁっ……♥」って言うの。はいっ♪",
|
||||||
|
"text": "セルリア\n次は、おちんぽが顔の前に来た時に、\n嬉しそうに「くっさぁっ……♥」って言うの。はいっ♪"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 237,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nこの指導、一体どれくらいあるのですか……?",
|
||||||
|
"text": "ローザ\nこの指導、一体どれくらいあるのですか……?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 248,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "\nセルリアとローザが隠語を学びました。",
|
||||||
|
"text": "\nセルリアとローザが隠語を学びました。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
773
wolf_json/ED_tika.mps.json
Normal file
773
wolf_json/ED_tika.mps.json
Normal file
|
|
@ -0,0 +1,773 @@
|
||||||
|
{
|
||||||
|
"file": "ED_tika.mps",
|
||||||
|
"kind": "map",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"event": 0,
|
||||||
|
"page": 0,
|
||||||
|
"name": "ev",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 5,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nん……。",
|
||||||
|
"text": "セルリア\nん……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 14,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nここは……。",
|
||||||
|
"text": "セルリア\nここは……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 16,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nやっとお目覚めか。\n今の服装と一緒でおめでたい頭をしているようだな。",
|
||||||
|
"text": "王子\nやっとお目覚めか。\n今の服装と一緒でおめでたい頭をしているようだな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 24,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n殿下……!?\nわたくしは何を……?ここはどこですか?公爵様は!?",
|
||||||
|
"text": "セルリア\n殿下……!?\nわたくしは何を……?ここはどこですか?公爵様は!?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 26,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n知っているか?\n歴史上、優秀な城塞には一つだけ弱点があるとされてるんだ。",
|
||||||
|
"text": "王子\n知っているか?\n歴史上、優秀な城塞には一つだけ弱点があるとされてるんだ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 28,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n……一体何の話をしているんですか?",
|
||||||
|
"text": "セルリア\n……一体何の話をしているんですか?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 29,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n理由は簡単、その弱点に向かって敵をおびき寄せるためだ。",
|
||||||
|
"text": "王子\n理由は簡単、その弱点に向かって敵をおびき寄せるためだ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 33,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nまさか……!?ハメハメ公爵がわたくし達を……!?",
|
||||||
|
"text": "セルリア\nまさか……!?ハメハメ公爵がわたくし達を……!?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 34,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nくっくっく……。やっと気づいたか。奴の名の通り、貴様らはハメられたのだよ。\n奴は反乱分子を炙り出すための撒き餌のようなものさ。",
|
||||||
|
"text": "王子\nくっくっく……。やっと気づいたか。奴の名の通り、貴様らはハメられたのだよ。\n奴は反乱分子を炙り出すための撒き餌のようなものさ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 35,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nしかし、まさかここまでの証拠を集めあげるとは……、\n貴様らは追放ではなく、処刑してしまった方が良いかとも思ったぞ。",
|
||||||
|
"text": "王子\nしかし、まさかここまでの証拠を集めあげるとは……、\n貴様らは追放ではなく、処刑してしまった方が良いかとも思ったぞ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 37,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n(そう……、わたくし達は殿下の罠に嵌ってしまったのね……。\n うぅっ……、折角頑張って集めた証拠が……!)",
|
||||||
|
"text": "セルリア\n(そう……、わたくし達は殿下の罠に嵌ってしまったのね……。\n うぅっ……、折角頑張って集めた証拠が……!)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 38,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nそうだ……、ここはどこかと聞いていたな。\nここは、王宮の地下室さ。\n貴様らのような輩を調教し、商品とするための場所だ。",
|
||||||
|
"text": "王子\nそうだ……、ここはどこかと聞いていたな。\nここは、王宮の地下室さ。\n貴様らのような輩を調教し、商品とするための場所だ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 40,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nここが……!捕らえている令嬢達を解放なさい!",
|
||||||
|
"text": "セルリア\nここが……!捕らえている令嬢達を解放なさい!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 41,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nするわけがないだろう。\nここまで調べたのなら知っているだろう、\nまだまだ人手不足だということを。",
|
||||||
|
"text": "王子\nするわけがないだろう。\nここまで調べたのなら知っているだろう、\nまだまだ人手不足だということを。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 42,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n……まぁ、貴様等のおかげでその問題も解決しそうだ。\nあの女、堅物の生娘達だと思っていたが、調教の手間が省けたよ。\nあれには先に早速働いてもらってる。",
|
||||||
|
"text": "王子\n……まぁ、貴様等のおかげでその問題も解決しそうだ。\nあの女、堅物の生娘達だと思っていたが、調教の手間が省けたよ。\nあれには先に早速働いてもらってる。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 44,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n一体何を言って……、",
|
||||||
|
"text": "セルリア\n一体何を言って……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 48,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n…………!!\n待ってください……!\nローザは……!?ローザはどこですか!?",
|
||||||
|
"text": "セルリア\n…………!!\n待ってください……!\nローザは……!?ローザはどこですか!?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 49,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n体質のせいか奴はだいぶ早く目が覚めたからな。\nほら、ちょうどいいタイミングだ、そこから見えるぞ。",
|
||||||
|
"text": "王子\n体質のせいか奴はだいぶ早く目が覚めたからな。\nほら、ちょうどいいタイミングだ、そこから見えるぞ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 51,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nローザに何かしたらわたくしが絶対に許しませんから!",
|
||||||
|
"text": "セルリア\nローザに何かしたらわたくしが絶対に許しませんから!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 52,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n奴も同じことを言っていたよ。\nそして、自分が代わりになるから貴様のことを助けろとな。",
|
||||||
|
"text": "王子\n奴も同じことを言っていたよ。\nそして、自分が代わりになるから貴様のことを助けろとな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 53,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nほら、見て見ろ。さぁ、目に焼き付けろ。\n貴様を守るために、奴がどんな目に合っているのかをな。",
|
||||||
|
"text": "王子\nほら、見て見ろ。さぁ、目に焼き付けろ。\n貴様を守るために、奴がどんな目に合っているのかをな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 74,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nなんて酷いことを……。",
|
||||||
|
"text": "セルリア\nなんて酷いことを……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 75,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n仕方ないだろう。\n自分が誰かの分まで倍の金を稼ぐと息まいたんだからな。",
|
||||||
|
"text": "王子\n仕方ないだろう。\n自分が誰かの分まで倍の金を稼ぐと息まいたんだからな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 76,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n一介の騎士如きが、聖女の代わりに慰み者になったところで、\n稼げる額はたかがしれているんだが……、",
|
||||||
|
"text": "王子\n一介の騎士如きが、聖女の代わりに慰み者になったところで、\n稼げる額はたかがしれているんだが……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 77,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nまぁ、騎士故に体は丈夫だろう。\nあんな女でも意外と好きものには人気があるようだからな、\nしっかりと稼いでもらうことにするよ。",
|
||||||
|
"text": "王子\nまぁ、騎士故に体は丈夫だろう。\nあんな女でも意外と好きものには人気があるようだからな、\nしっかりと稼いでもらうことにするよ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 79,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそんな…………、ローザ……。",
|
||||||
|
"text": "セルリア\nそんな…………、ローザ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 80,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nいい従者を持ったな。くくく……。\nさぁ、貴様はどこへでも行くがいい。",
|
||||||
|
"text": "王子\nいい従者を持ったな。くくく……。\nさぁ、貴様はどこへでも行くがいい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 82,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nえっ………………。",
|
||||||
|
"text": "セルリア\nえっ………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 83,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n約束だからな。貴様は見逃してやる。\nまぁ、奴には壊れるまでここで働いてもらが……。",
|
||||||
|
"text": "王子\n約束だからな。貴様は見逃してやる。\nまぁ、奴には壊れるまでここで働いてもらが……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 85,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n…………。",
|
||||||
|
"text": "セルリア\n…………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 87,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nお願いします……。\nローザを解放してください……。",
|
||||||
|
"text": "セルリア\nお願いします……。\nローザを解放してください……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 89,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nわたくしが代わりになんでもしますから……。\nお願いです……。ローザを自由にしてください……。",
|
||||||
|
"text": "セルリア\nわたくしが代わりになんでもしますから……。\nお願いです……。ローザを自由にしてください……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 90,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nふん、そこまで言うなら仕方がないな。",
|
||||||
|
"text": "王子\nふん、そこまで言うなら仕方がないな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 92,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n………………わ、わかりました。",
|
||||||
|
"text": "セルリア\n………………わ、わかりました。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 104,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 122,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nローザ……、ごめんなさい……。",
|
||||||
|
"text": "セルリア\nローザ……、ごめんなさい……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 123,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nセルリア様……!?\nおい!約束が違うではないか!",
|
||||||
|
"text": "ローザ\nセルリア様……!?\nおい!約束が違うではないか!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 124,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nケツの穴まで犯されてヨガっていた女がいっぱしの口を利くじゃないか。",
|
||||||
|
"text": "王子\nケツの穴まで犯されてヨガっていた女がいっぱしの口を利くじゃないか。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 125,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nそ、それは……、おまえらが薬を使って……!\nそれよりも!代わりにセルリア様は解放すると言っていたはずだ!",
|
||||||
|
"text": "ローザ\nそ、それは……、おまえらが薬を使って……!\nそれよりも!代わりにセルリア様は解放すると言っていたはずだ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 126,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n仕方ないだろう。\nこの女がどうしてもというからな。",
|
||||||
|
"text": "王子\n仕方ないだろう。\nこの女がどうしてもというからな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 127,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nローザ……、わたくしが巻き込んでしまったのだから、もういいの……。\nわたくしのために犠牲になるのはやめて……。",
|
||||||
|
"text": "セルリア\nローザ……、わたくしが巻き込んでしまったのだから、もういいの……。\nわたくしのために犠牲になるのはやめて……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 128,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nそんなこと言わないでください!\n僕はセルリア様さえ無事なら……!",
|
||||||
|
"text": "ローザ\nそんなこと言わないでください!\n僕はセルリア様さえ無事なら……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 129,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nはぁ………………。\n俺はそんなお涙頂戴の寸劇が見たいわけじゃないんだが……。\n結局どっちが稼いでくれるんだ?",
|
||||||
|
"text": "王子\nはぁ………………。\n俺はそんなお涙頂戴の寸劇が見たいわけじゃないんだが……。\n結局どっちが稼いでくれるんだ?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 130,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nわたくしです。\nもうこれ以上ローザに手は出させません。",
|
||||||
|
"text": "セルリア\nわたくしです。\nもうこれ以上ローザに手は出させません。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 131,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nそんな馬鹿なことを……!\n僕に決まっている……!だからセルリア様だ!",
|
||||||
|
"text": "ローザ\nそんな馬鹿なことを……!\n僕に決まっている……!だからセルリア様だ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 132,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nもういい……。\n俺が決めてやる。\nほら、準備しろ!",
|
||||||
|
"text": "王子\nもういい……。\n俺が決めてやる。\nほら、準備しろ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 161,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 162,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤",
|
||||||
|
"text": "赤"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 173,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nロー……ザ……あっ……♥",
|
||||||
|
"text": "セルリア\nロー……ザ……あっ……♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 174,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nセルリア様ぁっ……♥",
|
||||||
|
"text": "ローザ\nセルリア様ぁっ……♥"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 180,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nやっと終わったか……。",
|
||||||
|
"text": "王子\nやっと終わったか……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 181,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nこいつらとヤリたい貴族共は沢山いるからな。\n後はこの二人を使って、有力者達を取り込んでいけば、\n俺の地位も盤石だ!ハハハッ!",
|
||||||
|
"text": "王子\nこいつらとヤリたい貴族共は沢山いるからな。\n後はこの二人を使って、有力者達を取り込んでいけば、\n俺の地位も盤石だ!ハハハッ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 183,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n後はあの二人を使って、有力者達を取り込み、\n俺の地位を盤石とするだけだからな!ハハハッ!",
|
||||||
|
"text": "王子\n後はあの二人を使って、有力者達を取り込み、\n俺の地位を盤石とするだけだからな!ハハハッ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 191,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "Narration",
|
||||||
|
"speaker_src": "narration",
|
||||||
|
"source": "???\nちょっとまったぁ!!",
|
||||||
|
"text": "???\nちょっとまったぁ!!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 195,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nだ、誰だ……!?",
|
||||||
|
"text": "王子\nだ、誰だ……!?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 210,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "全員",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "全員\n「俺だ!」「僕だ!」「私だ!」「オウ!」「★※□!」",
|
||||||
|
"text": "全員\n「俺だ!」「僕だ!」「私だ!」「オウ!」「★※□!」"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 212,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n……っ多いな!!!\nそして本当に誰なんだおまえらは!",
|
||||||
|
"text": "王子\n……っ多いな!!!\nそして本当に誰なんだおまえらは!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 213,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\n無事ですか。セルリア様、ローザさん。",
|
||||||
|
"text": "司祭\n無事ですか。セルリア様、ローザさん。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 217,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n司祭様……、それに皆様……、どうしてここに……?",
|
||||||
|
"text": "セルリア\n司祭様……、それに皆様……、どうしてここに……?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 218,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n貴様らの仲間か……!!",
|
||||||
|
"text": "王子\n貴様らの仲間か……!!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 220,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n(仲間……どころか、\n 僕も知らない奴がいる気もするが……)",
|
||||||
|
"text": "ローザ\n(仲間……どころか、\n 僕も知らない奴がいる気もするが……)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 222,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nどいつここいつも共通点すらない!\nなんだこの集団!本当に誰なんだ!",
|
||||||
|
"text": "王子\nどいつここいつも共通点すらない!\nなんだこの集団!本当に誰なんだ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 228,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\nふぉっふぉっふぉ、\n私達はその二人が住む町のただの住人達ですよ。",
|
||||||
|
"text": "司祭\nふぉっふぉっふぉ、\n私達はその二人が住む町のただの住人達ですよ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 229,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nおまえは…………、まさかあの町の司祭か?\nせめておまえが先頭に立っておけよ!\nなんでカメラマンみたいなやつが一番前にいるんだ!",
|
||||||
|
"text": "王子\nおまえは…………、まさかあの町の司祭か?\nせめておまえが先頭に立っておけよ!\nなんでカメラマンみたいなやつが一番前にいるんだ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 230,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\n歳を取ると若い人についていくのが大変で……。",
|
||||||
|
"text": "司祭\n歳を取ると若い人についていくのが大変で……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 233,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\nごほん……、ともかく、その二人は私の……、いえ、私達のものです。\n返してもらいますよ!",
|
||||||
|
"text": "司祭\nごほん……、ともかく、その二人は私の……、いえ、私達のものです。\n返してもらいますよ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 235,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそんな……、みなさん……!わたくし達のために……!",
|
||||||
|
"text": "セルリア\nそんな……、みなさん……!わたくし達のために……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 238,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nくそっ!おい!見張りの者達はどこだ!?\nこの不敬者共を即刻処刑しろ!",
|
||||||
|
"text": "王子\nくそっ!おい!見張りの者達はどこだ!?\nこの不敬者共を即刻処刑しろ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 239,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\n既に王室内は制圧済みですよ。\n後はあなただけです。",
|
||||||
|
"text": "司祭\n既に王室内は制圧済みですよ。\n後はあなただけです。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 240,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n馬鹿……、なっ……!そんなことできるわけ……。",
|
||||||
|
"text": "王子\n馬鹿……、なっ……!そんなことできるわけ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 241,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\nさっ、諦めて降伏いたしなさい!",
|
||||||
|
"text": "司祭\nさっ、諦めて降伏いたしなさい!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 242,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nくそっ!聖女だの騎士だのもてはやされているが……、\n布を一枚剥いでしまえばただの肉穴だろう!\nそれを助けるために王族に歯向かうだと……!?",
|
||||||
|
"text": "王子\nくそっ!聖女だの騎士だのもてはやされているが……、\n布を一枚剥いでしまえばただの肉穴だろう!\nそれを助けるために王族に歯向かうだと……!?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 245,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "カメラマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "カメラマン\nバッキャロウ!\nこん顔も体も性格もいい女、他にどこにもいねえだろうが!\n千年に一人の逸材だ!",
|
||||||
|
"text": "カメラマン\nバッキャロウ!\nこん顔も体も性格もいい女、他にどこにもいねえだろうが!\n千年に一人の逸材だ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 248,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "店主",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "店主\n彼女達のおかげで日々が色づき、\n救われた男達がどれだけいると思うんだ!",
|
||||||
|
"text": "店主\n彼女達のおかげで日々が色づき、\n救われた男達がどれだけいると思うんだ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 251,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "温泉の受付のおじさん",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "温泉の受付のおじさん\n二人のスケベな姿を見る度、\n毎日頑張ろうって思えるんだ!\n後、売上もめっちゃ上がった!",
|
||||||
|
"text": "温泉の受付のおじさん\n二人のスケベな姿を見る度、\n毎日頑張ろうって思えるんだ!\n後、売上もめっちゃ上がった!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 254,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "門番",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "門番\n僕が、町の門を守るように、\n二人は僕達の心の門を守っていたのさ!\n(今、門を放置して来てるけど)",
|
||||||
|
"text": "門番\n僕が、町の門を守るように、\n二人は僕達の心の門を守っていたのさ!\n(今、門を放置して来てるけど)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 256,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあぁ……、わたくし達のことをそこまで思っていてくださったのですね……!",
|
||||||
|
"text": "セルリア\nあぁ……、わたくし達のことをそこまで思っていてくださったのですね……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 258,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n(主に自分達の欲望のためな気もするが……)",
|
||||||
|
"text": "ローザ\n(主に自分達の欲望のためな気もするが……)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 259,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "司祭",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "司祭\n……というわけですよ。\n残念ですが、彼女達をあなたの道具になどさせません。",
|
||||||
|
"text": "司祭\n……というわけですよ。\n残念ですが、彼女達をあなたの道具になどさせません。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 265,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n貴様ら……、好き放題言っているが……、\nわかっているのか?王に逆らうということを。",
|
||||||
|
"text": "王子\n貴様ら……、好き放題言っているが……、\nわかっているのか?王に逆らうということを。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 269,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "金持ちのおじさん",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "金持ちのおじさん\n王と言うのであれば、私も財政界の王と言われていますよ。\nこの国にも多額の支援を行っています。",
|
||||||
|
"text": "金持ちのおじさん\n王と言うのであれば、私も財政界の王と言われていますよ。\nこの国にも多額の支援を行っています。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 272,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "牧場主",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "牧場主\n僕も牧場王さ!\nこの国の食料がどれだけ僕の所から来ているか……。\nそれを止めることだって……。フフ。",
|
||||||
|
"text": "牧場主\n僕も牧場王さ!\nこの国の食料がどれだけ僕の所から来ているか……。\nそれを止めることだって……。フフ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 275,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "スカウトマン",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "スカウトマン\n僕も業界の王って一部では言われているね。\nニュースとしてあなたの悪行、\nあることないこと、各国にリークできちゃうんだよ。",
|
||||||
|
"text": "スカウトマン\n僕も業界の王って一部では言われているね。\nニュースとしてあなたの悪行、\nあることないこと、各国にリークできちゃうんだよ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 278,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "オーク",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "オーク\nオデ!オーク!王!ウゴ!!",
|
||||||
|
"text": "オーク\nオデ!オーク!王!ウゴ!!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 282,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nくそ……!くそくそくそくそくそ!くそがぁ!!!\nその女達の何が良いというのだ!\n聖女と騎士が、王族より偉いというのか!",
|
||||||
|
"text": "王子\nくそ……!くそくそくそくそくそ!くそがぁ!!!\nその女達の何が良いというのだ!\n聖女と騎士が、王族より偉いというのか!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 285,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n地位、名誉、権力……、そのようなものは関係ありません……。",
|
||||||
|
"text": "セルリア\n地位、名誉、権力……、そのようなものは関係ありません……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 287,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nセルリア様……。",
|
||||||
|
"text": "ローザ\nセルリア様……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 288,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\n何ぃ?",
|
||||||
|
"text": "王子\n何ぃ?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 290,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nわたくし達はあなたに追放され、この方達が住む町に流れ着き、\n今までの肩書を捨て暮らしていました……。",
|
||||||
|
"text": "セルリア\nわたくし達はあなたに追放され、この方達が住む町に流れ着き、\n今までの肩書を捨て暮らしていました……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 292,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n見知らぬわたくし達を皆様方は温かく迎え入れていただきました……。",
|
||||||
|
"text": "セルリア\n見知らぬわたくし達を皆様方は温かく迎え入れていただきました……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 294,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそう……、そこにあったのは「愛」です!\n互いに与え合う「無償の愛」です!",
|
||||||
|
"text": "セルリア\nそう……、そこにあったのは「愛」です!\n互いに与え合う「無償の愛」です!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 296,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nい、一部有償の人間もいたと思いますが……。",
|
||||||
|
"text": "ローザ\nい、一部有償の人間もいたと思いますが……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 298,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nと、とにかく愛です!愛なのです!",
|
||||||
|
"text": "セルリア\nと、とにかく愛です!愛なのです!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 301,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n殿下!あなたはわたくし達の愛の力によって敗れるのです!",
|
||||||
|
"text": "セルリア\n殿下!あなたはわたくし達の愛の力によって敗れるのです!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 302,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "王子",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "王子\nうっ……!うっ……!ああああああああああああああああ!!!!",
|
||||||
|
"text": "王子\nうっ……!うっ……!ああああああああああああああああ!!!!"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
349
wolf_json/ED_yasiki.mps.json
Normal file
349
wolf_json/ED_yasiki.mps.json
Normal file
|
|
@ -0,0 +1,349 @@
|
||||||
|
{
|
||||||
|
"file": "ED_yasiki.mps",
|
||||||
|
"kind": "map",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"event": 0,
|
||||||
|
"page": 0,
|
||||||
|
"name": "ev",
|
||||||
|
"lines": [
|
||||||
|
{
|
||||||
|
"cmd": 23,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n公爵様……、突然の来訪、お許しください。",
|
||||||
|
"text": "セルリア\n公爵様……、突然の来訪、お許しください。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 24,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nおぉ、どなたかと思えば、\n随分と刺激的な格好をされた方が来ましたな。ハハッ。",
|
||||||
|
"text": "公爵\nおぉ、どなたかと思えば、\n随分と刺激的な格好をされた方が来ましたな。ハハッ。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 25,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 26,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nこ、これには深い理由がありまして……。",
|
||||||
|
"text": "セルリア\nこ、これには深い理由がありまして……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 27,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nははっ、セルリア様方のことです。\n何かお考えがあってでしょう。",
|
||||||
|
"text": "公爵\nははっ、セルリア様方のことです。\n何かお考えがあってでしょう。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 32,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nさて、王子の件についてでしたよね……。",
|
||||||
|
"text": "公爵\nさて、王子の件についてでしたよね……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 34,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n王国内では禁じられている娼婦の招集、禁制の魔法薬の製造、\nこれらに殿下とその一派の貴族の方々が関与しています。",
|
||||||
|
"text": "セルリア\n王国内では禁じられている娼婦の招集、禁制の魔法薬の製造、\nこれらに殿下とその一派の貴族の方々が関与しています。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 36,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nまだ証拠こそありませんが、\n反王子派閥の貴族から地位を剥奪し、そこの子女を隷女にしているなど、\n余罪は数しれません。",
|
||||||
|
"text": "ローザ\nまだ証拠こそありませんが、\n反王子派閥の貴族から地位を剥奪し、そこの子女を隷女にしているなど、\n余罪は数しれません。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 37,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nそれはそれは……、なんとなんと……。",
|
||||||
|
"text": "公爵\nそれはそれは……、なんとなんと……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 39,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nお願いします。\n殿下達の悪行を止めるために、\n反王子派閥であるハメハメ公爵の力をお借しください!",
|
||||||
|
"text": "セルリア\nお願いします。\n殿下達の悪行を止めるために、\n反王子派閥であるハメハメ公爵の力をお借しください!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 40,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nなるほど……。しかし、殿下に加えその周辺貴族まで関わっているとなると、\n事は相当大きくなりそうですな。",
|
||||||
|
"text": "公爵\nなるほど……。しかし、殿下に加えその周辺貴族まで関わっているとなると、\n事は相当大きくなりそうですな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 42,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nしかし……、そうせねばこの王国の民は救えません……!\nどうかお力添えを……。",
|
||||||
|
"text": "セルリア\nしかし……、そうせねばこの王国の民は救えません……!\nどうかお力添えを……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 48,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nそれで今日はどのような要件で……。",
|
||||||
|
"text": "公爵\nそれで今日はどのような要件で……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 49,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 50,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n話は既に耳にしているかと思いますが……、\nこれを見てください……。",
|
||||||
|
"text": "セルリア\n話は既に耳にしているかと思いますが……、\nこれを見てください……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 52,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nこれは……!",
|
||||||
|
"text": "公爵\nこれは……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 53,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n王国内では禁じられている娼婦の招集、禁制の魔法薬の製造、\nさらに、遠くの町で危険なモンスターの研究まで……。\nそれに殿下とその一派の貴族の方々が関与している証拠です。",
|
||||||
|
"text": "セルリア\n王国内では禁じられている娼婦の招集、禁制の魔法薬の製造、\nさらに、遠くの町で危険なモンスターの研究まで……。\nそれに殿下とその一派の貴族の方々が関与している証拠です。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 54,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nまだ証拠こそありませんが、\n反王子派閥の貴族から地位を剥奪し、そこの子女を隷女にしているなど、\n余罪は数しれません。",
|
||||||
|
"text": "ローザ\nまだ証拠こそありませんが、\n反王子派閥の貴族から地位を剥奪し、そこの子女を隷女にしているなど、\n余罪は数しれません。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 55,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nそれはそれは……、なんとなんと……。",
|
||||||
|
"text": "公爵\nそれはそれは……、なんとなんと……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 56,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nそこでお願いがあります。\n反王子派閥であるハメハメ公爵の力をお借りして、\n殿下達の悪行を止めたいのです!",
|
||||||
|
"text": "セルリア\nそこでお願いがあります。\n反王子派閥であるハメハメ公爵の力をお借りして、\n殿下達の悪行を止めたいのです!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 57,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ダンショク男爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ダンショク男爵\nなるほど……。しかし、殿下に加えその周辺貴族まで関わっているとなると、\n事は相当大きくなりそうですな。",
|
||||||
|
"text": "ダンショク男爵\nなるほど……。しかし、殿下に加えその周辺貴族まで関わっているとなると、\n事は相当大きくなりそうですな。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 60,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nふむ…………。",
|
||||||
|
"text": "公爵\nふむ…………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 65,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nわかりました。このハメハメ、ひと肌脱ぎましょう。",
|
||||||
|
"text": "公爵\nわかりました。このハメハメ、ひと肌脱ぎましょう。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 67,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n公爵様……!",
|
||||||
|
"text": "セルリア\n公爵様……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 68,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\n私が脱いだとしても、セルリア様方のようにセクシーにはなりませんがな。\nはっはっはっ!",
|
||||||
|
"text": "公爵\n私が脱いだとしても、セルリア様方のようにセクシーにはなりませんがな。\nはっはっはっ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 69,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 70,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nもう、からかわないでください……!",
|
||||||
|
"text": "セルリア\nもう、からかわないでください……!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 71,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\nとはいえ、大きな話です。\n家臣の者も交えて詳細な話を詰めたい。",
|
||||||
|
"text": "公爵\nとはいえ、大きな話です。\n家臣の者も交えて詳細な話を詰めたい。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 79,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "公爵",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "公爵\n暖かいお茶でも飲んでお待ちください。\nそのお姿では冷えますでしょう。",
|
||||||
|
"text": "公爵\n暖かいお茶でも飲んでお待ちください。\nそのお姿では冷えますでしょう。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 80,
|
||||||
|
"str": 1,
|
||||||
|
"speaker": "UI",
|
||||||
|
"speaker_src": "ui",
|
||||||
|
"source": "赤汗",
|
||||||
|
"text": "赤汗"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 81,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあぅ……、ですから言わないでください……。",
|
||||||
|
"text": "セルリア\nあぅ……、ですから言わないでください……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 87,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\n良かったですね。セルリア様。",
|
||||||
|
"text": "ローザ\n良かったですね。セルリア様。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 89,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nえぇ、大変なのはここからだけど……、\nそうね、少しだけ前進したわね。",
|
||||||
|
"text": "セルリア\nえぇ、大変なのはここからだけど……、\nそうね、少しだけ前進したわね。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 91,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nさて、折角ですし、お茶を頂きましょうか。",
|
||||||
|
"text": "セルリア\nさて、折角ですし、お茶を頂きましょうか。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 105,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあら……、",
|
||||||
|
"text": "セルリア\nあら……、"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 107,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\n急に眠気が……、疲れていたのかしら……。",
|
||||||
|
"text": "セルリア\n急に眠気が……、疲れていたのかしら……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 114,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nローザ……?そんなとこで寝ちゃ……、駄目……よ……。",
|
||||||
|
"text": "セルリア\nローザ……?そんなとこで寝ちゃ……、駄目……よ……。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 125,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nん………………。",
|
||||||
|
"text": "ローザ\nん………………。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 126,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nこの味…………!",
|
||||||
|
"text": "ローザ\nこの味…………!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 127,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "ローザ",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "ローザ\nセルリア様……、待っ…………!",
|
||||||
|
"text": "ローザ\nセルリア様……、待っ…………!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 128,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nローザ!?どうしたの!?ローザ!",
|
||||||
|
"text": "セルリア\nローザ!?どうしたの!?ローザ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cmd": 132,
|
||||||
|
"str": 0,
|
||||||
|
"speaker": "セルリア",
|
||||||
|
"speaker_src": "literal_line1_lowconf",
|
||||||
|
"source": "セルリア\nあれ……、急に眠気が……、どうして…………。",
|
||||||
|
"text": "セルリア\nあれ……、急に眠気が……、どうして…………。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue