Initial Commit

This commit is contained in:
onms 2026-06-24 05:29:56 -05:00
commit 2f6ceba3ba
234 changed files with 2634077 additions and 0 deletions

37
.gitignore vendored Normal file
View file

@ -0,0 +1,37 @@
# Ignore all files
*.*
# File Types
!*.mps
!*.dat
!*.json
!*.txt
!*.project
!*.js
!*.zip
!*.7z
!*.csv
!*.ain
!*.fnl
!*.ks
!*.tjs
!*.yaml
!*.rb
!*.rvdata2
# Other Needed Files
!.gitignore
!README.md
!patch-config.txt
!GameUpdate*
!patch*
!Game.dat
# Ignore
previous_patch_sha.txt
kabe3_save.dat
kabe3_system.dat
psbpack.dat
Save*
# Images

BIN
icudtl.dat Normal file

Binary file not shown.

13
package.json Normal file
View file

@ -0,0 +1,13 @@
{
"name": "shiganoma",
"main": "www/index.html",
"js-flags": "--expose-gc",
"chromium-args": "--limit-fps=60",
"window": {
"title": "Paradise Succubus",
"toolbar": false,
"width": 1280,
"height": 720,
"icon": "www/icon/icon.png"
}
}

1
www/data/Actors.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Animations.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Armors.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Classes.json Normal file

File diff suppressed because one or more lines are too long

2314820
www/data/CommonEvents.json Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

1
www/data/Enemies.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Items.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map001.json Normal file
View file

@ -0,0 +1 @@
{"autoplayBgm":false,"autoplayBgs":false,"battleback1Name":"Translucent","battleback2Name":"","bgm":{"name":"Stage_X","pan":0,"pitch":100,"volume":50},"bgs":{"name":"","pan":0,"pitch":100,"volume":90},"disableDashing":false,"displayName":"test room","encounterList":[],"encounterStep":30,"height":13,"note":"","parallaxLoopX":false,"parallaxLoopY":false,"parallaxName":"","parallaxShow":true,"parallaxSx":0,"parallaxSy":0,"scrollType":0,"specifyBattleback":false,"tilesetId":1,"width":17,"data":[2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,2816,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"events":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}

1
www/data/Map002.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map003.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map004.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map005.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map006.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map007.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map008.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map009.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map010.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map011.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map012.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map013.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map014.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map015.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map016.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map017.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map018.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map019.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map020.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map021.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map022.json Normal file
View file

@ -0,0 +1 @@
{"autoplayBgm":false,"autoplayBgs":false,"battleback1Name":"","battleback2Name":"","bgm":{"name":"","pan":0,"pitch":100,"volume":90},"bgs":{"name":"","pan":0,"pitch":100,"volume":90},"disableDashing":false,"displayName":"One's Star [Save] Boundary","encounterList":[],"encounterStep":30,"height":9,"note":"","parallaxLoopX":false,"parallaxLoopY":false,"parallaxName":"StarlitSky","parallaxShow":true,"parallaxSx":0,"parallaxSy":0,"scrollType":0,"specifyBattleback":false,"tilesetId":4,"width":9,"data":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1537,1537,1537,0,0,0,0,0,0,1537,1537,1537,0,0,0,0,0,0,1537,1537,1537,0,0,0,0,0,0,1537,1537,1537,0,0,0,0,0,0,1537,1537,1537,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"events":[null,{"id":1,"name":"EV003-冒険の記録","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":true,"image":{"tileId":0,"characterName":"!Crystal","direction":4,"pattern":1,"characterIndex":2},"list":[{"code":352,"indent":0,"parameters":[]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":true,"through":false,"trigger":0,"walkAnime":true}],"x":4,"y":3},{"id":2,"name":"Move Locations","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"!Door","direction":4,"pattern":1,"characterIndex":1},"list":[{"code":250,"indent":0,"parameters":[{"name":"Magic1","volume":90,"pitch":100,"pan":0}]},{"code":111,"indent":0,"parameters":[6,-1,2]},{"code":201,"indent":1,"parameters":[0,2,19,33,2,1]},{"code":0,"indent":1,"parameters":[]},{"code":412,"indent":0,"parameters":[]},{"code":111,"indent":0,"parameters":[6,-1,4]},{"code":201,"indent":1,"parameters":[0,2,18,32,4,1]},{"code":0,"indent":1,"parameters":[]},{"code":412,"indent":0,"parameters":[]},{"code":111,"indent":0,"parameters":[6,-1,6]},{"code":201,"indent":1,"parameters":[0,2,20,32,6,1]},{"code":0,"indent":1,"parameters":[]},{"code":412,"indent":0,"parameters":[]},{"code":111,"indent":0,"parameters":[6,-1,8]},{"code":201,"indent":1,"parameters":[0,2,19,31,8,1]},{"code":0,"indent":1,"parameters":[]},{"code":412,"indent":0,"parameters":[]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":0,"stepAnime":true,"through":false,"trigger":1,"walkAnime":true}],"x":4,"y":5}]}

1
www/data/Map023.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map024.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map025.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map026.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map027.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map028.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map029.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map030.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map031.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map032.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Map033.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/MapInfos.json Normal file
View file

@ -0,0 +1 @@
[null,{"id":1,"expanded":false,"name":"test room","order":1,"parentId":0,"scrollX":639,"scrollY":380},{"id":2,"expanded":true,"name":"Boundary Expanse","order":2,"parentId":0,"scrollX":969,"scrollY":824},{"id":3,"expanded":true,"name":"Before the adventure begins","order":8,"parentId":0,"scrollX":639,"scrollY":380},{"id":4,"expanded":true,"name":"For stories","order":9,"parentId":0,"scrollX":639,"scrollY":380.5},{"id":5,"expanded":true,"name":"Recollection Room","order":10,"parentId":0,"scrollX":1490,"scrollY":372},{"id":6,"expanded":true,"name":"Template event storage","order":11,"parentId":0,"scrollX":631,"scrollY":380},{"id":7,"expanded":true,"name":"Paradise Island Boundary","order":3,"parentId":2,"scrollX":639,"scrollY":380},{"id":8,"expanded":true,"name":"Paradise Island/landing point selection","order":12,"parentId":0,"scrollX":639,"scrollY":380.5},{"id":9,"expanded":true,"name":"Paradise Island/Second Area Selection","order":16,"parentId":0,"scrollX":572.5,"scrollY":389},{"id":10,"expanded":true,"name":"Paradise Island/Third Area Selection","order":20,"parentId":0,"scrollX":598.5,"scrollY":381},{"id":11,"expanded":true,"name":"1-1","order":13,"parentId":8,"scrollX":549.5,"scrollY":381},{"id":12,"expanded":true,"name":"1-2","order":14,"parentId":11,"scrollX":625.5,"scrollY":819.5},{"id":13,"expanded":true,"name":"1-3","order":15,"parentId":12,"scrollX":549.5,"scrollY":381},{"id":14,"expanded":true,"name":"2-1","order":17,"parentId":9,"scrollX":683.5,"scrollY":640},{"id":15,"expanded":true,"name":"2-2","order":18,"parentId":14,"scrollX":549.5,"scrollY":819},{"id":16,"expanded":true,"name":"2-3","order":19,"parentId":15,"scrollX":549.5,"scrollY":381},{"id":17,"expanded":true,"name":"3-1","order":21,"parentId":10,"scrollX":590.5,"scrollY":381},{"id":18,"expanded":true,"name":"3-2","order":22,"parentId":17,"scrollX":549.5,"scrollY":381},{"id":19,"expanded":true,"name":"3-3","order":23,"parentId":18,"scrollX":590.5,"scrollY":827},{"id":20,"expanded":true,"name":"Kamran, the place of finality","order":24,"parentId":0,"scrollX":631,"scrollY":819.5},{"id":21,"expanded":false,"name":"Hero Boundary","order":4,"parentId":2,"scrollX":675.5,"scrollY":464.5},{"id":22,"expanded":false,"name":"One's Star [Save] Boundary","order":5,"parentId":2,"scrollX":633.5,"scrollY":380.5},{"id":23,"expanded":false,"name":"Reminiscence room of degerminated species","order":6,"parentId":2,"scrollX":639,"scrollY":380},{"id":24,"expanded":true,"name":"credit","order":25,"parentId":20,"scrollX":639,"scrollY":380.5},{"id":25,"expanded":true,"name":"Hakai Seed Route Ending","order":26,"parentId":24,"scrollX":639,"scrollY":380.5},{"id":26,"expanded":true,"name":"Creation species root ending","order":27,"parentId":24,"scrollX":633.5,"scrollY":380.5},{"id":27,"expanded":true,"name":"Chaos Route Ending","order":28,"parentId":24,"scrollX":639,"scrollY":380.5},{"id":28,"expanded":true,"name":"World truth 1","order":29,"parentId":24,"scrollX":639,"scrollY":380.5},{"id":29,"expanded":true,"name":"The truth of the world 2","order":30,"parentId":24,"scrollX":633.5,"scrollY":380.5},{"id":30,"expanded":true,"name":"The truth of the world 3","order":31,"parentId":24,"scrollX":633.5,"scrollY":380.5},{"id":31,"expanded":true,"name":"The truth of the world 4","order":32,"parentId":24,"scrollX":639,"scrollY":380.5},{"id":32,"expanded":true,"name":"The truth of the world 5","order":33,"parentId":24,"scrollX":633.5,"scrollY":380.5},{"id":33,"expanded":false,"name":"border of entertainment","order":7,"parentId":2,"scrollX":633.5,"scrollY":380.5}]

1
www/data/Skills.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/States.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/System.json Normal file

File diff suppressed because one or more lines are too long

1
www/data/Tilesets.json Normal file

File diff suppressed because one or more lines are too long

142090
www/data/Troops.json Normal file

File diff suppressed because it is too large Load diff

1
www/data/Weapons.json Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,16 @@
Water A|水場A
Deep Water|深い水場
Swamp Grass|水草
Lotus Pads (Flowers)|蓮の葉(花)
Lava|溶岩
Waterfall A (Lava Cave)|滝A溶岩洞窟
Water B (Grass Maze)|水場B草迷宮
Waterfall B (Grass Maze)|滝B草迷宮
Water C (Dirt Cave)|水場C土洞窟
Waterfall C (Dirt Cave)|滝C土洞窟
Water D (Rock Cave)|水場D岩洞窟
Waterfall D (Rock Cave)|滝D岩洞窟
Water E (Crystal)|水場E水晶
Waterfall E (Crystal)|滝E水晶
Canal|水路
Waterfall (Stone Wall)|滝F石壁

View file

@ -0,0 +1,32 @@
Ground A (Dirt Cave)|床A土洞窟
Ground B (Grass Maze)|床B草迷宮
Dark Ground A (Dirt Cave)|濃い床A土洞窟
Dark Ground B (Grass Maze)|濃い床B草迷宮
Hole A (Dirt Cave)|穴A土洞窟
Hole B (Grass Maze)|穴B草迷宮
Hole I (Stone Floor)|穴I石の床
Ground Cracks|床のひび割れ
Ground C (Rock Cave)|床C岩洞窟
Ground D (Crystal)|床D水晶
Dark Ground C (Rock Cave)|濃い床C岩洞窟
Dark Ground D (Crystal)|濃い床D水晶
Hole C (Rock Cave)|穴C岩洞窟
Hole D (Crystal)|穴D水晶
Hole J|穴J
Soil on Ground|床の汚れ
Ground E (Lava Cave)|床E溶岩洞窟
Ground F (In Body)|床F体内
Dark Ground E (Lava Cave)|濃い床E溶岩洞窟
Rug A|じゅうたんA
Hole E (Lava Cave)|穴E溶岩洞窟
Hole F (In Body)|穴F体内
Fencepost|柵
Moss on Ground|床の苔
Ground G (Ice Cave)|床G氷洞窟
Ground H (Demonic World)|床H魔界
Dark Ground G (Ice Cave)|濃い床G氷洞窟
Rug B|じゅうたんB
Hole G (Ice Cave)|穴G氷洞窟
Hole H (Demonic World)|穴H魔界
Raised Stone|石段
Poison Swamp|毒の沼

View file

@ -0,0 +1,48 @@
Wall A (Dirt Cave)|壁A土洞窟
Wall B (Rock Cave)|壁B岩洞窟
Wall C (Lava Cave)|壁C溶岩洞窟
Wall D (Ice Cave)|壁D氷洞窟
Wall E (Grass Maze)|壁E草迷宮
Wall F (Crystal)|壁F水晶
Wall G (In Body)|壁G体内
Wall H (Demonic World)|壁H魔界
Wall A (Dirt Cave)|壁A土洞窟
Wall B (Rock Cave)|壁B岩洞窟
Wall C (Lava Cave)|壁C溶岩洞窟
Wall D (Ice Cave)|壁D氷洞窟
Wall E (Grass Maze)|壁E草迷宮
Wall F (Crystal)|壁F水晶
Wall G (In Body)|壁G体内
Wall H (Demonic World)|壁H魔界
Wall I (Stone)|壁I
Wall J (Brick)|壁Jレンガ
Wall K (Brick)|壁Kレンガ
Wall L (Stone)|壁L
Wall M (Stone)|壁M
Wall N (Castle)|壁N
Wall O (Fort)|壁O
Wall P (Demon Castle)|壁P魔王城
Wall I (Stone)|壁I
Wall J (Brick)|壁Jレンガ
Wall K (Brick)|壁Kレンガ
Wall L (Stone)|壁L
Wall M (Stone)|壁M
Wall N (Castle)|壁N
Wall O (Fort)|壁O
Wall P (Demon Castle)|壁P魔王城
Wall Q (Temple)|壁Q神殿
Wall R (Marble)|壁R大理石
Wall S (Frozen)|壁S凍結
Wall T (Factory)|壁T工場
Ledge A (Dirt Cave)|段差A土洞窟
Ledge B (Rock Cave)|段差B岩洞窟
Ledge C (Lava Cave)|段差C溶岩洞窟
Ledge D (Ice Cave)|段差D氷洞窟
Wall Q (Temple)|壁Q神殿
Wall R (Marble)|壁R大理石
Wall S (Frozen)|壁S凍結
Wall T (Factory)|壁T工場
Ledge A (Dirt Cave)|段差A土洞窟
Ledge B (Rock Cave)|段差B岩洞窟
Ledge C (Lava Cave)|段差C溶岩洞窟
Ledge D (Ice Cave)|段差D氷洞窟

View file

@ -0,0 +1,128 @@
Darkness|暗闇
Translucent Floor A|半透明の床A
Translucent Floor B|半透明の床B
Translucent Floor C|半透明の床C
Translucent Floor D|半透明の床D
Stairs A (Translucent)|階段A半透明
Stairs B (Translucent)|階段B半透明
Wire Mesh|金網
Transparent|透明
Translucent Floor A|半透明の床A
Translucent Floor B|半透明の床B
Translucent Floor C|半透明の床C
Translucent Floor D|半透明の床D
Stairs A (Translucent)|階段C半透明
Stairs B (Translucent)|階段D半透明
Wire Mesh|金網
Ground A (Dirt Cave)|床A土洞窟
Ground B (Rock Cave)|床B岩洞窟
Ground C (Lava Cave)|床C溶岩洞窟
Ground D (Ice Cave)|床D氷洞窟
Ground E (Grass Maze)|床E草迷宮
Ground F (Crystal)|床F水晶
Ground G (In Body)|床G体内
Ground H (Demonic World)|床H魔界
Stairs A (Dirt Cave, Left)|階段A土洞窟・左
Stairs A (Dirt Cave, Center)|階段A土洞窟・中央
Stairs A (Dirt Cave, Right)|階段A土洞窟・右
Stairs A (Dirt Cave)|階段A土洞窟
Stairs B (Rock Cave, Left)|階段B岩洞窟・左
Stairs B (Rock Cave, Center)|階段B岩洞窟・中央
Stairs B (Rock Cave, Right)|階段B岩洞窟・右
Stairs B (Rock Cave)|階段B岩洞窟
Cobblestones A|石畳A
Cobblestones B|石畳B
Cobblestones C|石畳C
Cobblestones D|石畳D
Cobblestones E|石畳E
Cobblestones F|石畳F
Cobblestones G|石畳G
Interior Floor A (Demon Castle)|内装床A魔王城
Stairs C (Lava Cave, Left)|階段C溶岩洞窟・左
Stairs C (Lava Cave, Center)|階段C溶岩洞窟・中央
Stairs C (Lava Cave, Right)|階段C溶岩洞窟・右
Stairs C (Lava Cave)|階段C溶岩洞窟
Stairs D (Ice Cave, Left)|階段D氷洞窟・左
Stairs D (Ice Cave, Center)|階段D氷洞窟・中央
Stairs D (Ice Cave, Right)|階段D氷洞窟・右
Stairs D (Ice Cave)|階段D氷洞窟
Cobblestones H|石畳H
Interior Floor B (Concrete)|内装床Bコンクリート
Icy Ground A|氷の床A
Interior Floor C (Factory)|内装床C工場
Decorative Tile|舗装床
Cobblestones I|石畳I
Cobblestones J|石畳J
Decorative Tile|化粧タイル
Stairs E (Grass Maze, Left)|階段E草迷宮・左
Stairs E (Grass Maze, Center)|階段E草迷宮・中央
Stairs E (Grass Maze, Right)|階段E草迷宮・右
Stairs E (Grass Maze)|階段E草迷宮
Stairs F (Crystal, Left)|階段F水晶・左
Stairs F (Crystal, Center)|階段F水晶・中央
Stairs F (Crystal, Right)|階段F水晶・右
Stairs F (Crystal)|階段F水晶
Stairs G (In Body, Left)|階段G体内・左
Stairs G (In Body, Center)|階段G体内・中央
Stairs G (In Body, Right)|階段G体内・右
Stairs G (In Body)|階段G体内
Stairs H (Demonic World, Left)|階段H魔界・左
Stairs H (Demonic World, Center)|階段H魔界・中央
Stairs H (Demonic World, Right)|階段H魔界・右
Stairs H (Demonic World)|階段H魔界
Stairs I (Stone, Left)|階段I石・左
Stairs I (Stone, Center)|階段I石・中央
Stairs I (Stone, Right)|階段I石・右
Stairs I (Stone)|階段I
Stairs J (Ruins, Left)|階段J廃墟・左
Stairs J (Ruins, Center)|階段J廃墟・中央
Stairs J (Ruins, Right)|階段J廃墟・右
Stairs J (Ruins)|階段J廃墟
Stairs K (Stone, Left)|階段K石・左
Stairs K (Stone, Center)|階段K石・中央
Stairs K (Stone, Right)|階段K石・右
Stairs K (Stone)|階段K
Stairs L (Ruins, Left)|階段L廃墟・左
Stairs L (Ruins, Center)|階段L廃墟・中央
Stairs L (Ruins, Right)|階段L廃墟・右
Stairs L (Ruins)|階段L廃墟
Ground (Dirt Cave, Ruins)|床A土洞窟・廃墟
Ground (Rock Cave, Ruins)|床B岩洞窟・廃墟
Ground (Lava Cave, Ruins)|床C溶岩洞窟・廃墟
Ground (Ice Cave, Ruins)|床D氷洞窟・廃墟
Ground (Grass Maze, Ruins)|床E草迷宮・廃墟
Ground (Crystal, Ruins)|床F水晶・廃墟
Ground (In Body, Ruins)|床G体内・廃墟
Ground (Demonic World, Ruins)|床H魔界・廃墟
Cobblestones A (Ruins)|石畳A廃墟
Cobblestones B (Ruins)|石畳B廃墟
Cobblestones C (Ruins)|石畳C廃墟
Cobblestones D (Ruins)|石畳D廃墟
Cobblestones E (Ruins)|石畳E廃墟
Cobblestones F (Ruins)|石畳F廃墟
Cobblestones G (Ruins)|石畳G廃墟
Interior Floor A (Demon Castle, Ruins)|内装床A魔王城・廃墟
Cobblestones H (Ruins)|石畳H廃墟
Interior Floor B (Concrete, Ruins)|内装床Bコンクリート・廃墟
Icy Ground B|氷の床B
Interior Floor D (Factory)|内装床D工場
Decorative Tile (Ruins)|舗装床(廃墟)
Cobblestones I (Ruins)|石畳I廃墟
Cobblestones J (Ruins)|石畳J廃墟
Decorative Tile (Ruins)|化粧タイル(廃墟)
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile B|大きなレリーフ床B
Large Relief Floor Tile B|大きなレリーフ床B
Directional Floor Tile A (Down)|方向床A
Directional Floor Tile B (Up)|方向床B
Relief Floor Tile A (Gold)|レリーフ床A
Relief Floor Tile B (Gold)|レリーフ床B
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile B|大きなレリーフ床B
Large Relief Floor Tile B|大きなレリーフ床B
Directional Floor Tile C (Left)|方向床C
Directional Floor Tile D (Right)|方向床D
Relief Floor Tile C (Gold)|レリーフ床C
Relief Floor Tile D (Gold, Ruins)|レリーフ床D金・廃墟

View file

@ -0,0 +1,256 @@
Transparent|透明
Beanstalk A|豆の木A
Stairs A (Up)|階段A上り
Stairs B (Up)|階段B上り
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Vines A|ツタA
Beanstalk B (Snow)|豆の木B
Beanstalk C (Dead)|豆の木C枯れ
Stairs A (Down)|階段A下り
Stairs B (Down)|階段B下り
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Vines A|ツタA
Crumbling Wall|崩れた壁
Dug-Up Ground|掘られた床
Stairs C (Up)|階段C上り
Stairs D (Up)|階段D上り
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Vines B (Down)|ツタB下り
Crumbling Wall|崩れた壁
Dug-Up Ground|掘られた床
Stairs C (Down)|階段C下り
Stairs D (Down)|階段D下り
Hole A (Metal Ladder)|穴A鉄ばしご
Hole B (Rope Ladder)|穴B縄ばしご
Hole C (Rope)|穴Cロープ
Hole D|穴D
Log Bridge (V)|丸太の橋(縦)
Log Bridge (H)|丸太の橋(横)
Wood Bridge (V)|木の橋(縦)
Wood Bridge (H)|木の橋(横)
Stone Bridge (V)|石の橋(縦)
Stone Bridge (H)|石の橋(横)
Wood Bridge (V)|木の橋(縦)
Wood Bridge (H)|木の橋(横)
Bridge Spar (Wood, Center A)|橋げた木・中央A
Bridge Spar (Wood, Left)|橋げた(木・左)
Bridge Spar (Wood, Center B)|橋げた木・中央B
Bridge Spar (Wood, Right)|橋げた(木・右)
Bridge Spar (Stone, Center A)|橋げた石・中央A
Bridge Spar (Stone, Left)|橋げた(石・左)
Bridge Spar (Stone, Center B)||橋げた石・中央B
Bridge Spar (Stone, Right)|橋げた(石・右)
Gravel A (Dirt Cave)|砂利A土洞窟
Gravel B (Rock Cave)|砂利B岩洞窟
Gravel C (Lava Cave)|砂利C溶岩洞窟
Ice Pieces |氷の欠片
Small Sprouts A (Grass Maze)|小さな芽A草迷宮
Small Crystals|小さな水晶
Detritus (In Body)|床装飾(体内)
Small Sprouts B (Demonic World)|小さな芽B魔界
Boulder A (Dirt Cave)|岩A土洞窟
Boulder B (Rock Cave)|岩B岩洞窟
Boulder C (Lava Cave)|岩C溶岩洞窟
Lump of Ice|氷塊
Boulder D (Grass Maze)|岩D草迷宮
Crystal|水晶
Spherical Lump|球状突起物
Boulder E (Demonic World)|岩E魔界
Tall Rock A (Dirt Cave)|大きな岩A土洞窟
Tall Rock B (Rock Cave)|大きな岩B岩洞窟
Tall Rock C (Lava Cave)|大きな岩C溶岩洞窟
Tall Lump of Ice|大きな氷塊
Tall Rock D (Grass Maze)|大きな岩D草迷宮
Large Crystal|大きな水晶
Large Growth|大型突起物
Tall Rock E (Demonic World)|大きな岩E魔界
Tall Rock A (Dirt Cave)|大きな岩A土洞窟
Tall Rock B (Rock Cave)|大きな岩B岩洞窟
Tall Rock C (Lava Cave)|大きな岩C溶岩洞窟
Tall Lump of Ice|大きな氷塊
Tall Rock D (Grass Maze)|大きな岩D草迷宮
Large Crystal|大きな水晶
Large Growth|大型突起物
Tall Rock E (Demonic World)|大きな岩E魔界
Stone Pillar A|石の柱A
Stone Pillar B|石の柱B
Stone Pillar C|石の柱C
Stone Pillar C (Moss)|石の柱C
Stone Pillar C (Ice)|石の柱C
Wood Pillar|木の柱
Stone Pillar D|石の柱D
Orb Pillar|オーブの柱
Stone Pillar A|石の柱A
Stone Pillar B|石の柱B
Stone Pillar C|石の柱C
Stone Pillar C (Moss)|石の柱C
Stone Pillar C (Ice)|石の柱C
Wood Pillar|木の柱
Stone Pillar D|石の柱D
Orb Pillar|オーブの柱
Broken Stone Pillar A|折れた石の柱A
Broken Stone Pillar B|折れた石の柱B
Broken Stone Pillar C|折れた石の柱C
Broken Stone Pillar C (Moss)|折れた石の柱C
Broken Stone Pillar C (Ice)|折れた石の柱C
Broken Wood Pillar A|折れた木の柱A
Broken Stone Pillar D|折れた石の柱D
Broken Orb Pillar|折れたオーブの柱
Rubble|瓦礫A
Rubble (Moss)|瓦礫B
Rubble (Ice)|瓦礫C
Broken Wood Pillar B|折れた木の柱B
Rubble (Dirt)|瓦礫D
Scrap Wood|端材
Barricade A (H)|バリケードA
Barricade B (V)|バリケードB
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing (Abandoned Mine)|壁の補強材(廃坑)
Wall Bracing (Abandoned Mine)|壁の補強材(廃坑)
Wall Bracing (Abandoned Mine)|壁の補強材(廃坑)
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing|壁の補強材
Wall Bracing (Abandoned Mine)|壁の補強材(廃坑)
Wall Bracing (Abandoned Mine)|壁の補強材(廃坑)
Wall Bracing (Abandoned Mine)|壁の補強材(廃坑)
Exit A|外への出口A
Entrance A|入口A
Exit B|外への出口B
Entrance B|入口B
Exit C|外への出口C
Entrance C|入口C
Window A|窓A
Window B|窓B
Exit D|外への出口D
Entrance D|入口D
Exit E|外への出口E
Entrance E|入口E
Light From Exit A (Top)|出口からの光A
Light From Exit B (Bottom)|出口からの光B
Window A|窓A
Window B|窓B
Spider Web|蜘蛛の巣
Stone Tablet|石版
Stone Tablet (Ruins)|石版(廃墟)
Entrance A|入口A
Entrance A (Extend)|入口A延長部分
Entrance A (Top Half A)|入口A上半分A
Entrance B|入口B
Entrance A (Top Half B)|入口A上半分B
Wall Vines A|壁のツタA
Wall Vines B|壁のツタB
Wall Vines C|壁のツタC
Wall Fern|壁のシダ
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Fissures D|亀裂D
Wall Vines A|壁のツタA
Wall Vines B|壁のツタB
Wall Vines C|壁のツタC
Wall Moss|壁の苔
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Fissures D|亀裂D
Monument A|石碑A
Monument B|石碑B
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Monument A|石碑A
Monument C|石碑C
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Statue A|石像A
Angel Statue A|天使像A
Angel Statue B|天使像B
Dais|台座
Statue B|石像B
Demon Statue|悪魔像
Dragon Statue|竜像
Dragon Statue|竜像
Statue A|石像A
Angel Statue A|天使像A
Angel Statue B|天使像B
Dais|台座
Statue B|石像B
Demon Statue|悪魔像
Dragon Statue|竜像
Dragon Statue|竜像
Large Gravel Mound A (Dirt)|大きな土砂A
Large Gravel Mound A (Dirt)|大きな土砂A
Large Gravel Mound B (Stone)|大きな土砂B
Large Gravel Mound B (Stone)|大きな土砂B
Large Gold Mound|大きな金の山
Large Gold Mound|大きな金の山
Large Silver Mound|大きな銀の山
Large Silver Mound|大きな銀の山
Large Gravel Mound A (Dirt)|大きな土砂A
Large Gravel Mound A (Dirt)|大きな土砂A
Large Gravel Mound B (Stone)|大きな土砂B
Large Gravel Mound B (Stone)|大きな土砂B
Large Gold Mound|大きな金の山
Large Gold Mound|大きな金の山
Large Silver Mound|大きな銀の山
Large Silver Mound|大きな銀の山
Gravel Mound (Dirt)|土砂A
Gravel Mound (Stone)|土砂B
Gold Bricks A|金の延べ棒A
Gold Bricks B|金の延べ棒B
Crate A (Dirt)|木箱A
Crate B (Stone)|木箱B
Crate C (Ruins)|木箱C廃墟
Pot A (Ruins)|壺A廃墟
Gold Mound|金の山
Silver Mound|銀の山
Silver Bricks A|銀の延べ棒A
Silver Bricks B|銀の延べ棒B
Crate D (Gold Dust)|木箱D
Crate E (Silver Dust)|木箱E
Pot A|壺A
Pot B|壺B
Shovel|スコップ
Pickax|つるはし
Rope|ロープ
Mound of Gold Coins|金貨の山
Crate F|木箱F
Crate G|木箱G
Barrel A|樽A
Barrel B (Ruins)|樽B廃墟
Large Bones|大きな骸骨
Large Bones|大きな骸骨
Bones A|骸骨A
Table (Ruins)|テーブル(廃墟)
Jail Bars|鉄格子
Jail Bars|鉄格子
Jail Bars|鉄格子
Jail Bars|鉄格子
Large Bones|大きな骸骨
Large Bones|大きな骸骨
Bones B|骸骨B
Stool (Ruins)|椅子(廃墟)
Jail Bars|鉄格子
Jail Bars|鉄格子
Jail Bars|鉄格子
Jail Bars|鉄格子

View file

@ -0,0 +1,256 @@
Decorative Pillar A (Stone)|装飾柱A
Decorative Pillar B (Stone)|装飾柱B
Decorative Pillar C (Temple)|装飾柱C遺跡
Decorative Pillar D (Rock Cave)|装飾柱D岩洞窟
Decorative Pillar E (Demon Castle)|装飾柱E魔王城
Decorative Pillar F (Fort)|装飾柱F
Decorative Pillar G (Dirt Cave)|装飾柱G土洞窟
Decorative Pillar H (Factory)|装飾柱H工場
Decorative Pillar A (Stone)|装飾柱A
Decorative Pillar B (Stone)|装飾柱B
Decorative Pillar C (Temple)|装飾柱C遺跡
Decorative Pillar D (Rock Cave)|装飾柱D岩洞窟
Decorative Pillar E (Demon Castle)|装飾柱E魔王城
Decorative Pillar F (Fort)|装飾柱F
Decorative Pillar G (Dirt Cave)|装飾柱G土洞窟
Decorative Pillar H (Factory)|装飾柱H工場
Decorative Pillar A (Stone)|装飾柱A
Decorative Pillar B (Stone)|装飾柱B
Decorative Pillar C (Temple)|装飾柱C遺跡
Decorative Pillar D (Rock Cave)|装飾柱D岩洞窟
Decorative Pillar E (Demon Castle)|装飾柱E魔王城
Decorative Pillar F (Fort)|装飾柱F
Decorative Pillar G (Dirt Cave)|装飾柱G土洞窟
Decorative Pillar H (Factory)|装飾柱H工場
Decorative Pillar A (Stone, Ruins)|装飾柱A石・廃墟
Decorative Pillar B (Stone, Ruins)|装飾柱B石・廃墟
Decorative Pillar C (Temple, Ruins)|装飾柱C遺跡・廃墟
Decorative Pillar D (Rock Cave, Ruins)|装飾柱D岩洞窟・廃墟
Decorative Pillar E (Demon Castle, Ruins)|装飾柱E魔王城・廃墟
Decorative Pillar F (Fort, Ruins)|装飾柱F砦・廃墟
Decorative Pillar G (Dirt Cave, Ruins)|装飾柱G土洞窟・廃墟
Decorative Pillar A (Stone, Front, Ruins)|装飾柱A石・手前・廃墟
Decorative Pillar A (Stone, Ruins)|装飾柱A石・廃墟
Decorative Pillar B (Stone, Ruins)|装飾柱B石・廃墟
Decorative Pillar C (Temple, Ruins)|装飾柱C遺跡・廃墟
Decorative Pillar D (Rock Cave, Ruins)|装飾柱D岩洞窟・廃墟
Decorative Pillar E (Demon Castle, Ruins)|装飾柱E魔王城・廃墟
Decorative Pillar F (Fort, Ruins)|装飾柱F砦・廃墟
Decorative Pillar G (Dirt Cave, Ruins)|装飾柱G土洞窟・廃墟
Decorative Pillar D (Rock Cave, Front, Ruins)|装飾柱F岩洞窟・手前・廃墟
Decorative Pillar A (Stone, Ruins)|装飾柱A石・廃墟
Decorative Pillar B (Stone, Ruins)|装飾柱B石・廃墟
Decorative Pillar C (Temple, Ruins)|装飾柱C遺跡・廃墟
Decorative Pillar D (Rock Cave, Ruins)|装飾柱D岩洞窟・廃墟
Decorative Pillar E (Demon Castle, Ruins)|装飾柱E魔王城・廃墟
Decorative Pillar F (Fort, Ruins)|装飾柱F砦・廃墟
Decorative Pillar G (Dirt Cave, Ruins)|装飾柱G土洞窟・廃墟
Decorative Pillar F (Fort, Front, Ruins)|装飾柱F砦・手前・廃墟
Decorative Pillar A (Stone, Front)|装飾柱A石・手前
Decorative Pillar B (Stone, Front)|装飾柱B石・手前
Decorative Pillar C (Temple, Front)|装飾柱C神殿・手前
Decorative Pillar D (Rock Cave, Front)|装飾柱D岩洞窟・手前
Decorative Pillar E (Demon Castle, Front)|装飾柱E魔王城・手前
Decorative Pillar F (Fort, Front)|装飾柱F砦・手前
Decorative Pillar G (Dirt Cave, Front)|装飾柱G土洞窟・手前
Decorative Pillar H (Factory, Front)|装飾柱H工場・手前
Gate A|門A
Gate A|門A
Gate A|門A
Gate B|門B
Gate B|門B
Gate B|門B
Decorative Pillar I (Demonic)|装飾柱I悪魔
Decorative Pillar I (Demonic, Ruins)|装飾柱I悪魔・廃墟
Gate A|門A
Gate A|門A
Gate A|門A
Gate B|門B
Gate B|門B
Gate B|門B
Decorative Pillar I (Demonic)|装飾柱I悪魔
Decorative Pillar I (Demonic, Ruins)|装飾柱I悪魔・廃墟
Gate A|門A
Gate A|門A
Gate A|門A
Gate B|門B
Gate B|門B
Gate B|門B
Coffin A (Right)|棺A
Coffin A (Right)|棺A
Hexagram|魔法陣
Hexagram|魔法陣
Hexagram|魔法陣
Hexagram (Lit)|魔法陣(光)
Hexagram (Lit)|魔法陣(光)
Hexagram (Lit)|魔法陣(光)
Coffin B (Top)|棺B
Coffin C (Bottom)|棺C
Hexagram|魔法陣
Hexagram|魔法陣
Hexagram|魔法陣
Hexagram (Lit)|魔法陣(光)
Hexagram (Lit)|魔法陣(光)
Hexagram (Lit)|魔法陣(光)
Coffin B (Top)|棺B
Coffin C (Bottom)|棺C
Hexagram|魔法陣
Hexagram|魔法陣
Hexagram|魔法陣
Hexagram (Lit)|魔法陣(光)
Hexagram (Lit)|魔法陣(光)
Hexagram (Lit)|魔法陣(光)
Coffin D (Left)|棺D
Coffin D (Left)|棺D
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Rails (Ruins)|線路(廃墟)
Rails (Ruins)|線路(廃墟)
Rails (Ruins)|線路(廃墟)
Rails (Ruins)|線路(廃墟)
Rails|線路
Railroad Ties A|枕木A
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Railroad Ties B|枕木B
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Rails|線路
Mural A|壁画A
Hieroglyph|ヒエログリフ
Hieroglyph|ヒエログリフ
Large Mural A|大きな壁画A
Large Mural A|大きな壁画A
Large Mural A|大きな壁画A
Bed|ベッド
Bed (Ruins)|ベッド(廃墟)
Mural B|壁画B
Hieroglyph|ヒエログリフ
Hieroglyph|ヒエログリフ
Large Mural B|大きな壁画B
Large Mural B|大きな壁画B
Large Mural B|大きな壁画B
Bed|ベッド
Bed (Ruins)|ベッド(廃墟)
Middle Window A|中型窓A
Middle Window B|中型窓B
Middle Window C|中型窓C
Middle Window D (Ruins)|中型窓窓D廃墟
Window (Demon Castle)|窓(魔王城)
Table|テーブル
Cheap Bed|粗末なベッド
Straw Bed|むしろの寝床
Middle Window A|中型窓A
Middle Window B|中型窓B
Middle Window C|中型窓C
Middle Window D (Ruins)|中型窓窓D廃墟
Window (Demon Castle)|窓(魔王城)
Stool|椅子
Cheap Bed|粗末なベッド
Straw Bed|むしろの寝床
Large Window A|大型窓A
Large Window B|大型窓B
Large Window C|大型窓C
Stained Glass Window|ステンドグラス
Large Window D|大型窓D
Window A|窓A
Window B|窓B
Window C|窓C
Large Window A|大型窓A
Large Window B|大型窓B
Large Window C|大型窓C
Stained Glass Window|ステンドグラス
Large Window D|大型窓D
Window A|窓A
Window B|窓B
Window C|窓C
Chest A|チェストA
Cabinet|キャビネット
Closet|クローゼット
Chest of Drawers|タンス
Dish Cabinet|食器棚
Wine Rack|ワインセラー
Bottle Shelf A|ボトル棚A
Bottle Shelf B|ボトル棚B
Chest B|チェストB
Chest C|チェストC
Closet|クローゼット
Chest of Drawers|タンス
Dish Cabinet|食器棚
Wine Rack|ワインセラー
Bottle Shelf A|ボトル棚A
Bottle Shelf B|ボトル棚B
Tipped Shelf|倒れた棚
Sundries Shelf A|雑貨棚A
Sundries Shelf A|雑貨棚A
Sundries Shelf B|雑貨棚B
Medicine Shelf|薬品棚
Bookshelf A|本棚A
Bookshelf B|本棚B
Bookshelf B|本棚B
Tipped Shelf|倒れた棚
Sundries Shelf A|雑貨棚A
Sundries Shelf A|雑貨棚A
Sundries Shelf B|雑貨棚B
Medicine Shelf|薬品棚
Bookshelf A|本棚A
Bookshelf B|本棚B
Bookshelf B|本棚B
Curtains A|カーテンA
Curtains B|カーテンB
Curtains C|カーテンC
Curtains D|カーテンD
Curtains A (Ruins)|カーテンA廃墟
Curtains B (Ruins)|カーテンB廃墟
Curtains C (Ruins)|カーテンC廃墟
Curtains D (Ruins)|カーテンD廃墟
Curtains A|カーテンA
Curtains B|カーテンB
Curtains C|カーテンC
Curtains D|カーテンD
Curtains A (Ruins)|カーテンA廃墟
Curtains B (Ruins)|カーテンB廃墟
Curtains C (Ruins)|カーテンC廃墟
Curtains D (Ruins)|カーテンD廃墟
Clock|時計
Mirror|鏡
Clock (Ruins)|時計(廃墟)
Mirror (Ruins)|鏡(廃墟)
Stacked Crates|積まれた木箱
Stacked Crates|積まれた木箱
Tapestry A|タペストリーA
Tapestry A (Ruins)|タペストリーA廃墟
Clock|時計
Mirror|鏡
Clock (Ruins)|時計(廃墟)
Mirror (Ruins)|鏡(廃墟)
Stacked Crates|積まれた木箱
Stacked Crates|積まれた木箱
Tapestry A|タペストリーA
Tapestry A (Ruins)|タペストリーA廃墟
Chair A (Wood)|背もたれ椅子A木製
Chair B (Stone)|背もたれ椅子B
Throne A|玉座A
Throne A|玉座A
Throne A|玉座A
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Chair A (Wood)|背もたれ椅子A木製
Chair B (Stone)|背もたれ椅子B
Throne A|玉座A
Throne A|玉座A
Throne A|玉座A
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城

View file

@ -0,0 +1,16 @@
Canal A|水路A
Deep Canal|深い水路
Lotus Pads (Flowers)|蓮の葉(花)
Junk|ゴミ
Pool A (Stone Lined)|水場A石の縁
Waterfall A (Stone Wall)|滝A石壁
Pool B (Wood Lined)|水場B木の縁
Waterfall B (Stone Wall)|滝B石壁
Canal B|水路B
Waterfall C (Stone Wall)|滝C石壁
Pool C (Stone Lined)|水場C石の縁
Waterfall D (Stone Wall)|滝D石壁
Bathing Spot|水浴び場
Waterfall E (Dirt Wall)|滝E土壁
Open Bath|露天風呂
Waterfall F (Demon Castle)|滝F魔王城

View file

@ -0,0 +1,32 @@
Wood Floor A|木の床A
Cobblestones A|石畳A
Rug A|じゅうたんA
Straw Mat|ござ
Hole A (Wood Floor)|穴A木の床
Raised Stone A|石段A
Ground Cracks|床のひび割れ
Table A|テーブルA
Wood Floor B|木の床B
Cobblestones B|石畳B
Rug B|じゅうたんB
Rug C|じゅうたんC
Hole B (Wood Floor)|穴B木の床
Raised Stone B|石段B
Soil on Ground|床の汚れ
Table B|テーブルB
Cobblestones C|石畳C
Cobblestones D|石畳D
Rug D|じゅうたんD
Demon Castle Floor|魔王城の床
Hole C (Stone Floor)|穴C石の床
Raised Stone C|石段C
Moss on Ground|床の苔
Table C|テーブルC
Cobblestones E|石畳E
Cobblestones F|石畳F
Rug E|じゅうたんE
Rug F|じゅうたんF
Hole D|穴D
Raised Stone D|石段D
Wire mesh|金網
Table D|テーブルD

View file

@ -0,0 +1,48 @@
Wall A (Stone)|壁A
Wall B (Brick)|壁Bレンガ
Wall C (Brick)|壁Cレンガ
Wall D (Stone)|壁D
Wall E (Stone)|壁E
Wall F (Castle)|壁F
Wall G (Fort)|壁G
Wall H (Demon Castle)|壁H魔王城
Wall A (Stone)|壁A
Wall B (Brick)|壁Bレンガ
Wall C (Brick)|壁Cレンガ
Wall D (Stone)|壁D
Wall E (Stone)|壁E
Wall F (Castle)|壁F
Wall G (Fort)|壁G
Wall H (Demon Castle)|壁H魔王城
Wall I (Wood)|壁I木造
Wall J (Log)|壁J丸太
Wall K (Wood)|壁K木造
Interior Wall A (Wood)|内装壁A木造
Interior Wall (Stone)|内装壁B
Wall L (Stone)|壁L
Wall M (Marble)|壁M大理石
Wall N (Concrete)|壁Nコンクリート
Wall I (Wood)|壁I木造
Wall J (Log)|壁J丸太
Wall K (Wood)|壁K木造
Interior Wall A (Wood)|内装壁A木造
Interior Wall (Stone)|内装壁B
Wall L (Stone)|壁L
Wall M (Marble)|壁M大理石
Wall N (Concrete)|壁Nコンクリート
Interior Wall C (Stone)|内装壁C
Interior Wall D (Brick)|内装壁Dレンガ
Interior Wall E (Stone)|内装壁E
Interior Wall F (Desert)|内装壁F砂漠風
Interior Wall G (Mansion)|内装壁G豪邸
Interior Wall H (Temple)|内装壁H神殿
Wall O (Tent)|壁Oテント
Wall P (Stage)|壁P舞台
Interior Wall C (Stone)|内装壁C
Interior Wall D (Brick)|内装壁Dレンガ
Interior Wall E (Stone)|内装壁E
Interior Wall F (Desert)|内装壁F砂漠風
Interior Wall G (Mansion)|内装壁G豪邸
Interior Wall H (Temple)|内装壁H神殿
Wall O (Tent)|壁Oテント
Wall P (Stage)|壁P舞台

View file

@ -0,0 +1,129 @@
Darkness|暗闇
Wire Mesh|金網
Stone Bridge (V, Left)|石の橋(縦・左)
Stone Bridge (V Center)|石の橋(縦・中央)
Stone Bridge (V, Riight)|石の橋(縦・右)
Stone Bridge (H, Top)|石の橋(横・上)
Stone Bridge (H Center)|石の橋(横・中央)
Broken Bridge (H, Top)|壊れた橋(横・上)
Transparent|透明
Wire Mesh|金網
Broken Bridge (V, Left)|壊れた橋(縦・左)
Broken Bridge (V Center)|壊れた橋(縦・中央)
Broken Bridge (V, Riight)|壊れた橋(縦・右)
Stone Bridge (H, Bottom)|石の橋(横・下)
Broken Bridge (H Center)|壊れた橋(横・中央)
Broken Bridge (H, Bottom)|壊れた橋(横・下)
Wood Floor A|木の床A
Wood Floor B|木の床B
Wood Floor C|木の床C
Wood Floor D|木の床D
Cobblestones A|石畳A
Cobblestones B|石畳B
Cobblestones C|石畳C
Cobblestones D|石畳D
Ledge A (Wood)|段差A木製
Ledge B (Wood)|段差B木製
Ledge C (Log)|段差C丸太
Ledge D (Log)|段差D丸太
Ledge E (Brick)|段差Eレンガ
Ledge F (Stone)|段差F
Ledge G (Stone)|段差G
Ledge H (Stone)|段差H
Cobblestones E|石畳E
Cobblestones F|石畳F
Wood Floor E|木の床E
Wood Floor F|木の床F
Cobblestones G|石畳G
Cobblestones H|石畳H
Cobblestones I|石畳I
Cobblestones J|石畳J
Ledge I (Brick)|段差Iレンガ
Ledge J (Castle)|段差J
Ledge K (Fort)|段差K
Ledge L (Wood)|段差L木製
Ledge M (Stone)|段差M
Ledge N (Stone)|段差N
Ledge O (Marble)|段差O大理石
Ledge P (Stone)|段差P
Interior Floor A (Wood)|内装床A木製
Interior Floor B (Brick)|内装床Bレンガ
Interior Floor C (Temple)|内装床C神殿
Interior Floor D (Stone)|内装床D
Interior Floor E (Demon Castle)|内装床E魔王城
Interior Floor F (Tent)|内装床Fテント
Interior Floor G (Concrete)|内装床Gコンクリート
Interior Floor H (Dirt)|内装床H
Ledge Q (Wood)|段差Q木製
Ledge R (Desert)|段差R砂漠風
Ledge S (Temple)|段差S神殿
Ledge T (Stone)|段差T
Ledge U (Demon Castle)|段差U魔界城
Ledge V (Tent)|段差Vテント
Ledge W (Concrete)|段差Wコンクリート
Ledge X (Dirt)|段差X
Stairs A (Wood, Left)|階段A木製・左
Stairs A (Wood, Center)|階段A木製・中央
Stairs A (Wood)|階段A木製・右
Stairs A (Wood)|階段A木製
Stairs B (Stone, Left)|階段B石・左
Stairs B (Stone, Center)|階段B石・中央
Stairs B (Stone, Right)|階段B石・右
Stairs B (Stone)|階段B
Stairs C (Stone, Left)|階段C石・左
Stairs C (Stone, Center)|階段C石・中央
Stairs C (Stone, Right)|階段C石・右
Stairs C (Stone)|階段C
Stairs C (Stone, Ruins, Left)|階段C石・廃墟・左
Stairs C (Stone, Ruins, Center)|階段C石・廃墟・中央
Stairs C (Stone, Ruins, Right)|階段C石・廃墟・右
Stairs C (Stone, Ruins)|階段C石・廃墟
Stairs D (Carpet, Left)|階段Dじゅうたん・左
Stairs D (Carpet, Center)|階段Dじゅうたん・中央
Stairs D (Carpet, Right)|階段Dじゅうたん・右
Stairs D (Carpet)|階段Dじゅうたん
Stairs E (Carpet, Left)|階段Eじゅうたん・左
Stairs E (Carpet, Center)|階段Eじゅうたん・中央
Stairs E (Carpet, Right)|階段Eじゅうたん・右
Stairs E (Carpet)|階段Eじゅうたん
Wood Floor A (Ruins)|木の床A廃墟
Wood Floor B (Ruins)|木の床B廃墟
Wood Floor C (Ruins)|木の床C廃墟
Wood Floor D (Ruins)|木の床D廃墟
Cobblestones A (Ruins)|石畳A廃墟
Cobblestones B (Ruins)|石畳B廃墟
Cobblestones C (Ruins)|石畳C廃墟
Cobblestones D (Ruins)|石畳D廃墟
Cobblestones E (Ruins)|石畳E廃墟
Cobblestones F (Ruins)|石畳F廃墟
Wood Floor E (Ruins)|木の床E廃墟
Wood Floor F (Ruins)|木の床F廃墟
Cobblestones G (Ruins)|石畳G廃墟
Cobblestones H (Ruins)|石畳H廃墟
Cobblestones I (Ruins)|石畳I廃墟
Cobblestones J (Ruins)|石畳J廃墟
Interior Floor A (Wood, Ruins)|内装床A木製・廃墟
Interior Floor B (Brick, Ruins)|内装床Bレンガ・廃墟
Interior Floor C (Temple, Ruins)|内装床C神殿・廃墟
Interior Floor D (Stone, Ruins)|内装床D石・廃墟
Interior Floor E (Demon Castle, Ruins)|内装床E魔王城・廃墟
Interior Floor F (Concrete, Ruins)|内装床Fコンクリート・廃墟
Interior Floor G (Tent, Ruins)|内装床Gテント・廃墟
Interior Floor H (Dirt, Ruins)|内装床H土・廃墟
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile B|大きなレリーフ床B
Large Relief Floor Tile B|大きなレリーフ床B
Relief Floor Tile A (Silver)|レリーフ床A
Relief Floor Tile B (Silver)|レリーフ床B
Relief Floor Tile C (Gold)|レリーフ床C
Relief Floor Tile D (Gold)|レリーフ床D
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile B|大きなレリーフ床B
Large Relief Floor Tile B|大きなレリーフ床B
Relief Floor Tile E (Silver, Ruins)|レリーフ床E銀・廃墟
Relief Floor Tile F (Silver)|レリーフ床F
Relief Floor Tile G (Gold, Ruins)|レリーフ床G金・廃墟
Relief Floor Tile H (Gold)|レリーフ床H

View file

@ -0,0 +1,256 @@
Transparent|透明
Stairs A (Up)|階段A上り
Stairs B (Up)|階段B上り
Stairs C (Up)|階段C上り
Stairs D (Up)|階段D上り
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Hole|穴
Stairs A (Down)|階段A下り
Stairs B (Down)|階段B下り
Stairs C (Down)|階段C下り
Stairs D (Down)|階段D下り
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Middle Window A|中型窓A
Middle Window B|中型窓B
Middle Window C|中型窓C
Middle Window D (Ruins)|中型窓D廃墟
Window (Demon Castle)|窓(魔王城)
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Middle Window A|中型窓A
Middle Window B|中型窓B
Middle Window C|中型窓C
Middle Window D (Ruins)|中型窓D廃墟
Window (Demon Castle)|窓(魔王城)
Hole A (Metal Ladder)|穴A鉄ばしご
Hole B (Rope Ladder)|穴B縄ばしご
Hole C (Rope)|穴Cロープ
Large Window A|大型窓A
Large Window B|大型窓B
Large Window C|大型窓C
Stained Glass Window|ステンドグラス
Large Window D|大型窓D
Window A|窓A
Window B|窓B
Window C|窓C
Large Window A|大型窓A
Large Window B|大型窓B
Large Window C|大型窓C
Stained Glass Window|ステンドグラス
Large Window D|大型窓D
Window A|窓A
Window B|窓B
Window C|窓C
Chest A|チェストA
Cabinet|キャビネット
Closet|クローゼット
Chest of Drawers|タンス
Dish Cabinet|食器棚
Wine Rack|ワインセラー
Bottle Shelf A|ボトル棚A
Bottle Shelf B|ボトル棚B
Chest B|チェストB
Chest C|チェストC
Closet|クローゼット
Chest of Drawers|タンス
Dish Cabinet|食器棚
Wine Rack|ワインセラー
Bottle Shelf A|ボトル棚A
Bottle Shelf B|ボトル棚B
Bread Shelf|パン棚
Sundries Shelf A|雑貨棚A
Sundries Shelf A|雑貨棚A
Sundries Shelf B|雑貨棚B
Medicine Shelf|薬品棚
Bookshelf A|本棚A
Bookshelf B|本棚B
Bookshelf B|本棚B
Bread Shelf|パン棚
Sundries Shelf A|雑貨棚A
Sundries Shelf A|雑貨棚A
Sundries Shelf B|雑貨棚B
Medicine Shelf|薬品棚
Bookshelf A|本棚A
Bookshelf B|本棚B
Bookshelf B|本棚B
Bed|ベッド
Large Bed|ダブルベッド
Large Bed|ダブルベッド
Cheap Bed A|粗末なベッドA
Cheap Bed B|粗末なベッドB
Straw Bed|むしろの寝床
Bed (Ruins)|ベッド(廃墟)
Tipped Shelf|倒れた棚
Bed|ベッド
Large Bed|ダブルベッド
Large Bed|ダブルベッド
Cheap Bed A|粗末なベッドA
Cheap Bed B|粗末なベッドB
Straw Bed|むしろの寝床
Bed (Ruins)|ベッド(廃墟)
Tipped Shelf|倒れた棚
Table A|テーブルA
Table B|テーブルB
Table C|テーブルC
Fortuneteller's Table A|占い台A
Mini Table A|ミニテーブルA
Piano|ピアノ
Piano|ピアノ
Piano|ピアノ
Stool A|椅子A
Stool B|椅子B
Stool C|椅子C
Fortuneteller's Table B (Crystal)|占い台B水晶
Mini Table B (Flower)|ミニテーブルB花瓶
Piano|ピアノ
Piano|ピアノ
Piano|ピアノ
Oven|かまど
Sink|流し
Kitchen Counter A|調理台A
Kitchen Counter B|調理台B
Dresser|ドレッサー
Pipe Organ|パイプオルガン
Pipe Organ|パイプオルガン
Pipe Organ|パイプオルガン
Simple Shelf A|簡易棚A
Simple Shelf B (Jars)|簡易棚B
Simple Shelf C (Books)|簡易棚C
Simple Shelf D (Sacks)|簡易棚D
Simple Shelf E (Bottles)|簡易棚Eボトル
Pipe Organ|パイプオルガン
Pipe Organ|パイプオルガン
Pipe Organ|パイプオルガン
Large Fireplace|大きな暖炉
Large Fireplace|大きな暖炉
Large Fireplace|大きな暖炉
Fireplace A (Stone)|暖炉A
Fireplace B (Brick)|暖炉Bレンガ
Fireplace C (Iron)|暖炉C
Tapestry A|タペストリーA
Tapestry A (Ruins)|タペストリーA廃墟
Large Fireplace|大きな暖炉
Large Fireplace|大きな暖炉
Large Fireplace|大きな暖炉
Fireplace A (Stone)|暖炉A
Fireplace B (Brick)|暖炉Bレンガ
Fireplace C (Iron)|暖炉C
Tapestry A|タペストリーA
Tapestry A (Ruins)|タペストリーA廃墟
Curtains A|カーテンA
Curtains B|カーテンB
Curtains C|カーテンC
Curtains D|カーテンD
Curtains A (Ruins)|カーテンA廃墟
Curtains B (Ruins)|カーテンB廃墟
Curtains C (Ruins)|カーテンC廃墟
Curtains D (Ruins)|カーテンD廃墟
Curtains A|カーテンA
Curtains B|カーテンB
Curtains C|カーテンC
Curtains D|カーテンD
Curtains A (Ruins)|カーテンA廃墟
Curtains B (Ruins)|カーテンB廃墟
Curtains C (Ruins)|カーテンC廃墟
Curtains D (Ruins)|カーテンD廃墟
Clock|時計
Mirror|鏡
Posted Notice|貼り紙
Posted Notice (Ruins)|貼り紙(廃墟)
World Map|世界地図
World Map|世界地図
Painting|絵画
Painting|絵画
Clock|時計
Mirror|鏡
Stone Tablet|石版
Stone Tablet (Ruins)|石版(廃墟)
Portrait A|肖像画A
Portrait B|肖像画B
Painting A|絵画A
Painting B|絵画B
Chair A (Wood)|背もたれ椅子A木製
Chair B (Stone)|背もたれ椅子B
Throne A|玉座A
Throne A|玉座A
Throne A|玉座A
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Chair A (Wood)|背もたれ椅子A木製
Chair B (Stone)|背もたれ椅子B
Throne A|玉座A
Throne A|玉座A
Throne A|玉座A
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Throne B (Demon Castle)|玉座B魔王城
Shield|盾
Swords A|剣A
Swords B|剣B
Entrance A|入口A
Entrance A (Extend)|入口A延長部分
Entrance A (Top Half A)|入口A上半分AS
Entrance B|入口B
Entrance A (Top Half B)|入口A上半分B
Pot A|壺A
Pot B|壺B
Pot C (Ruins)|壺C廃墟
Table A (Ruins)|テーブルA廃墟
Stone Pillar A|石の柱A
Stone Pillar B|石の柱B
Fort Pillar|砦の柱
Rubble|瓦礫
Basin|桶
Barrel |樽
Barrel (Ruins)|樽(廃墟)
Stool (Ruins)|椅子(廃墟)
Stone Pillar A|石の柱A
Stone Pillar B|石の柱B
Fort Pillar|砦の柱
Rubble|瓦礫
Basin|桶
Tub A|たらいA
Tub B|たらいB
Crate A (Ruins)|木箱A廃墟
Broken Stone Pillar A|折れた石の柱A
Broken Stone Pillar B|折れた石の柱B
Broken Fort Pillar|折れた砦の柱
Scrap Wood|端材
Crate B|木箱B
Crate C|木箱C
Stacked Crates|積まれた木箱
Stacked Crates|積まれた木箱
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Fissures D|亀裂D
Crate D|木箱D
Crate E|木箱E
Stacked Crates|積まれた木箱
Stacked Crates|積まれた木箱
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Fissures D|亀裂D
Crate F|木箱F
Crate G|木箱G
Sacks C|麻袋C
Large Crate|大きな木箱
Jail Bar|鉄格子
Jail Bar|鉄格子
Jail Bar|鉄格子
Jail Bar|鉄格子
Sack A|麻袋A
Sack B|麻袋B
Sacks C|麻袋C
Large Crate|大きな木箱
Jail Bar|鉄格子
Jail Bar|鉄格子
Jail Bar|鉄格子
Jail Bar|鉄格子

View file

@ -0,0 +1,256 @@
Cup & Teapot A (Bottom)|カップとポットA
Cup & Teapot B (Top)|カップとポットB
Cup & Teapot C (Left)|カップとポットC
Cup & Teapot D (Right)|カップとポットD
Cup A (Bottom)|カップA
Cup B (Top)|カップB
Cup C (Left)|カップC
Cup D (Right)|カップD
Glass & Bottle A (Bottom)|グラスとボトルA
Glass & Bottle B (Top)|グラスとボトルB
Glass & Bottle C (Left)|グラスとボトルC
Glass & Bottle D (Right)|グラスとボトルD
Glass A (Bottom)|グラスA
Glass B (Top)|グラスB
Glass C (Left)|グラスC
Glass D (Right)|グラスD
Pint Mug & Ale Bottle A (Bottom)|ジョッキと瓶A
Pint Mug & Ale Bottles B (Top)|ジョッキと瓶B
Pint Mug & Ale Bottles C (Left)|ジョッキと瓶C
Pint Mug & Ale Bottle D (Right)|ジョッキと瓶D
Pint Mug A (Bottom)|ジョッキA
Pint Mug B (Top)|ジョッキB
Pint Mug C (Left)|ジョッキC
Pint Mug D (Right)|ジョッキD
Teapot|ポット
Bottle A|ボトルA
Bottles B|ボトルB
Bottles C|ボトルC
Broken Bottle|割れたボトル
Ale Bottle A|瓶A
Ale Bottles B|瓶B
Ale Bottles C|瓶C
Meal (Fish)|魚料理
Meal (Meat)|肉料理
Side Dishes|副菜
Fruit Bowl|フルーツ盛り合わせ
Roast Pig|丸焼き
Cake|ケーキ
Pizza|ピザ
Meal (Fish)|魚料理
Dinner Set A (Bottom)|夕食セットA
Dinner Set B (Top)|夕食セットB
Dinner Set C (Left)|夕食セットC
Dinner Set D (Right)|夕食セットD
Pie|パイ
Fried Rice|チャーハン
Mystery Dishes|謎の料理
Cooking Disaster|失敗料理
Breakfast Set A (Bottom)|朝食セットA
Breakfast Set B (Top)|朝食セットB
Breakfast Set C (Left)|朝食セットC
Breakfast Set D (Right)|朝食セットD
Plate A|皿A
Bowl|ボウル
Plates B|皿B
Plates C|皿C
Closed Book A (Bottom)|閉じた本A
Closed Book B (Top)|閉じた本B
Closed Book C (Left)|閉じた本C
Closed Book D (Right)|閉じた本D
Open Book A (Bottom)|開いた本A
Open Book B (Top)|開いた本B
Open Book C (Left)|開いた本C
Open Book D (Right)|開いた本D
Closed Old Book A (Bottom)|閉じた古文書A
Closed Old Book B (Top)|閉じた古文書B
Closed Old Book C (Left)|閉じた古文書C
Closed Old Book D (Right)|閉じた古文書D
Open Old Book A (Bottom)|開いた古文書A
Open Old Book B (Top)|開いた古文書B
Open Old Book C (Left)|開いた古文書C
Open Old Book D (Right)|開いた古文書D
Notes & Pen A (Bottom)|メモとペンA
Notes & Pen B (Top)|メモとペンB
Notes & Pen C (Left)|メモとペンC
Notes & Pen D (Right)|メモとペンD
Map A (Bottom)|地図A
Map B (Top)|地図B
Map C (Left)|地図C
Map D (Right)|地図D
Envelope & Letter|封筒と便箋
Envelope|封筒
Scrolls A|巻物A
Scrolls B|巻物B
Vase|花瓶
Potted Plant A|植木鉢A
Potted Plant B|植木鉢B
Planter|プランター
Case A|ケースA
Case B|ケースB
Letter Case|レターケース
Cutting Board|まな板
Small Box A|小箱A
Small Box B|小箱B
Small Box C|小箱C
Small Box D|小箱D
Sack A|袋A
Sacks B|袋B
Sacks C|袋C
Medicine Bottle A|薬瓶A
Medicine Bottles B|薬瓶B
Medicine Bottles C|薬瓶C
Potion A|液体入り瓶A
Potions B|液体入り瓶B
Basket A|バスケットA
Basket B|バスケットB
Basket C|バスケットC
Basket D|バスケットD
Rugs A|じゅうたんA
Rugs B|じゅうたんB
Rugs C|じゅうたんC
Lab Equipment|実験器具
Stuffed Doll A|ぬいぐるみA
Stuffed Doll B|ぬいぐるみB
Stuffed Doll C|ぬいぐるみC
Stuffed Doll D|ぬいぐるみD
Doll A|人形A
Doll B|人形B
Gifts A|プレゼントA
Gifts B|プレゼントB
Shovel|スコップ
Pickax|つるはし
Rope A|ロープA
Rope B|ロープB
Pendant|ペンダント
Jewelry Case A|宝石ケースA
Necklace|ネックレス
Jewelry Case B|宝石ケースB
Sword A|剣A
Swords B|剣B
Swords C|剣C
Axes|斧
Spears A|槍A
Spears B|槍B
Whip|鞭
Knives|短剣
Cooking Utensils|調理器具
Dry Flowers|ドライフラワー
Shield A|盾A
Shield B|盾B
Men's Clothing A (Hanging)|男物の服A壁掛け
Men's Clothing B (Hanging)|男物の服B壁掛け
Women's Clothing A (Hanging)|女物の服A壁掛け
Women's Clothing B (Hanging)|女物の服B壁掛け
Sword Rack A|剣掛台A
Sword Rack B|剣掛台B
Hammers|ハンマー
Bows & Arrows|弓矢
Blacksmith's Table A|金床A
Blacksmith's Table B|金床B
Large Basin|水桶
Scrap Metal|鉄くず
Helmet A|兜A
Helmet B|兜B
Helmet C|兜C
Hat A (Stand)|帽子Aスタンド
Hat B (Stand)|帽子Bスタンド
Hat C (Stand)|帽子Cスタンド
Women's Clothing (Stand)|女物の服(スタンド)
Dress (Stand)|ドレス(スタンド)
Armor A (Stand)|鎧Aスタンド
Armor B (Stand)|鎧Bスタンド
Armor C (Stand)|鎧Cスタンド
Armor D (Stand)|鎧Dスタンド
Men's Clothing (Stand)|男物の服(スタンド)
Cape (Stand)|マント(スタンド)
Robe A (Stand)|ローブAスタンド
Robe B (Stand)|ローブBスタンド
Church Symbol|教会のシンボル
Angel Statue A|天使像A
Angel Statue B|天使像B
Goddess Statue|女神像
Statue|石像
Dais|台座
Repository of Swords|剣立て
Repository of Spears|槍立て
Church Symbol|教会のシンボル
Angel Statue A|天使像A
Angel Statue B|天使像B
Goddess Statue|女神像
Statue|石像
Broken Statue|壊れた像
Repository of Swords|剣立て
Repository of Spears|槍立て
Church Table A|教会机A
Church Table A|教会机A
Church Table A|教会机A
Church Table B|教会机B
Decorative Pillar A|装飾柱A
Decorative Pillar B|装飾柱B
Decorative Pillar A (Ruins)|装飾柱A廃墟
Decorative Pillar B (Ruins)|装飾柱B廃墟
Church Table A|教会机A
Church Table A|教会机A
Church Table A|教会机A
Church Table B|教会机B
Decorative Pillar A|装飾柱A
Decorative Pillar B|装飾柱B
Decorative Pillar A (Ruins)|装飾柱A廃墟
Decorative Pillar B (Ruins)|装飾柱B廃墟
Gold Bricks A|金の延べ棒A
Gold Bricks B|金の延べ棒B
Silver Bricks A|銀の延べ棒A
Silver Bricks B|銀の延べ棒B
Decorative Pillar A|装飾柱A
Decorative Pillar B|装飾柱B
Decorative Pillar A (Ruins)|装飾柱A廃墟
Decorative Pillar B (Ruins)|装飾柱B廃墟
Monument A|石碑A
Monument B|石碑B
Demon Statue|悪魔像
Dragon Statue|竜像
Dragon Statue|竜像
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument|大きな石碑
Monument A|石碑A
Monument C|石碑C
Demon Statue|悪魔像
Dragon Statue|竜像
Dragon Statue|竜像
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument|大きな石碑
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Railings (Wood)|段差用手すり(木製)
Banister A (Wood)|階段用手すりA木製
Banister A (Wood)|階段用手すりA木製
Banister B (Stone)|階段用手すりB
Banister B (Stone)|階段用手すりB
Banister C (Temple)|階段用手すりC神殿
Banister C (Temple)|階段用手すりC神殿
Banister D (Castle)|階段用手すりD
Banister D (Castle)|階段用手すりD
Banister A (Wood)|階段用手すりA木製
Banister A (Wood)|階段用手すりA木製
Banister B (Stone)|階段用手すりB
Banister B (Stone)|階段用手すりB
Banister C (Temple)|階段用手すりC神殿
Banister C (Temple)|階段用手すりC神殿
Banister D (Castle)|階段用手すりD
Banister D (Castle)|階段用手すりD
Banister A (Wood)|階段用手すりA木製
Banister A (Wood)|階段用手すりA木製
Banister B (Stone)|階段用手すりB
Banister B (Stone)|階段用手すりB
Banister C (Temple)|階段用手すりC神殿
Banister C (Temple)|階段用手すりC神殿
Banister D (Castle)|階段用手すりD
Banister D (Castle)|階段用手すりD

View file

@ -0,0 +1,16 @@
Water A (Meadow)|水場A草地
Deep Water|深い水場
Lotus Pads|蓮の葉
Swamp Grass|水草
Water B (Snow)|水場B
Waterfall A (Stone Wall)|滝A石壁
Canal|水路
Waterfall B (Dirt Wall)|滝B土壁
Water C (Dirt)|水場C
Waterfall C (Cliff)|滝C
Water D (Sand)|水場 D
Waterfall D (Boulder)|滝D玉石
Water E (Port)|水場E
Waterfall E (Stone Wall)|滝E石壁
Poison Swamp|毒の沼
Dead Tree|枯れ木

View file

@ -0,0 +1,32 @@
Meadow|草地
Dirt (Meadow)|土(草地)
Road (Meadow)|道(草地)
Cobblestones A|石畳A
Bush|茂み
Road Edging|縁石
Fencepost A (Wood)|柵A木製
Fissures|ひび割れ
Dirt|土
Grass (Dirt)|草地(土)
Road (Dirt)|道(土)
Cobblestones A (Snow)|石畳A
Bush (Dead)|茂み(枯れ草)
Road Edging (Snow)|縁石(雪)
Fencepost B (Metal)|柵B金属
Soil|汚れ
Sand|砂地
Grass (Sand)|草地(砂地)
Road (Sand)|道(砂地)
Cobblestones B|石畳B
Bush (Sand)|茂み(砂地)
Hole|穴
Fencepost C (Stone)|柵C
Moss|苔
Snow|雪
Dirt (Snow)|土(雪)
Road (Snow)|道(雪)
Carpet|カーペット
Bush (Snow)|茂み(雪)
Hole|穴
Fencepost A (Wood, Snow)|柵A木製・雪
Poison Swamp|毒の沼

View file

@ -0,0 +1,32 @@
Roof A (Red Tile)|屋根A赤瓦
Roof B (Orange Tile)|屋根B橙瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof D (Green Tile)|屋根D緑瓦
Roof E (Blue Tile)|屋根E青瓦
Roof F (Dressed Tile)|屋根F化粧瓦
Roof G (Khaki Tile)|屋根Gカーキ瓦
Roof H (Sheet Metal)|屋根H鉄板
Outer Wall A (Plaster)|外壁A白壁
Outer Wall B (Rock Wall)|外壁B石壁
Outer Wall C (Rock Wall)|外壁C石壁
Outer Wall D (Rock Wall)|外壁D石壁
Outer Wall E (Brick)|外壁Eレンガ
Outer Wall F (Decorative Tile)|外壁F化粧タイル
Outer Wall G (Dirt)|外壁G土壁
Outer Wall H (Wood)|外壁H木造
Roof I (Wood)|屋根I木造
Roof J (Wood)|屋根J木造
Roof K (Log)|屋根K丸太
Roof L (Thatch)|屋根L
Roof M (Stone)|屋根M
Roof N (Tent)|屋根Nテント
Snow Roof A|雪の屋根A
Snow Roof B|雪の屋根B
Outer Wall I (Wood)|外壁I木造
Outer Wall J (Wood)|外壁J木造
Outer Wall K (Log)|外壁K丸太
Outer Wall L (Wood)|外壁L木造
Outer Wall M (Rock Wall)|外壁M石壁
Outer Wall N (Tent)|外壁Nテント
Snow Outer Wall (Wood)|雪の外壁(木造)
Snow Outer Wall (Brick)|雪の外壁(レンガ)

View file

@ -0,0 +1,48 @@
Wall A (Stone)|壁A
Wall B (Brick)|壁Bレンガ
Wall C (Stone)|壁C
Wall D (Stone)|壁D
Wall E (Stone)|壁E
Wall F (Marble)|壁F大理石
Wall G (Hedge)|壁G生け垣
Wall G (Frozen)|壁H凍結
Wall A (Stone)|壁A
Wall B (Brick)|壁Bレンガ
Wall C (Stone)|壁C
Wall D (Stone)|壁D
Wall E (Stone)|壁E
Wall F (Marble)|壁F大理石
Wall G (Hedge)|壁G生け垣
Wall G (Frozen)|壁H凍結
Building A (Urban)|建物A都会風
Building B (Dirt Wall)|建物B土壁
Building C (Desert)|建物C砂漠風
Building D (Temple, Snow)|建物D神殿・雪
Building E (Castle)|建物E
Building F (Castle, Snow)|建物F城・雪
Building G (Fort)|建物G
Building H (Fort, Snow)|建物H砦・雪
Building A (Urban)|建物A都会風
Building B (Dirt Wall)|建物B土壁
Building C (Desert)|建物C砂漠風
Building D (Temple, Snow)|建物D神殿・雪
Building E (Castle)|建物E
Building F (Castle, Snow)|建物F城・雪
Building G (Fort)|建物G
Building H (Fort, Snow)|建物H砦・雪
Ledge A (Meadow)|段差A草地
Ledge B (Dirt)|段差B
Ledge C (Desert)|段差C砂地
Ledge D (Snow)|段差D
Ledge E (Paved)|段差E舗装
Forest A|森A
Forest B (Snow)|森B
Demon Castle|魔王城
Cliff A (Meadow)|崖A草地
Cliff B (Dirt)|崖B
Cliff C (Desert)|崖C砂地
Cliff D (Snow)|崖D
Wall (Paved)|壁(舗装)
Forest A|森A
Forest B (Snow)|森B
Demon Castle|魔王城

View file

@ -0,0 +1,128 @@
Darkness|暗闇
Wire Mesh|金網
Large Bridge (V, Left)|大きな橋(縦・左)
Large Bridge (V, Center)|大きな橋(縦・中央)
Large Bridge (V, Right)|大きな橋(縦・右)
Large Bridge (H, Top)|大きな橋(横・上)
Large Bridge (H, Center)|大きな橋(横・中央)
Large Bridge (Snow, H, Top)|大きな橋(雪・横・上)
Transparent|透明
Wire Mesh|金網
Large Bridge (Snow, V, Left)|大きな橋(雪・縦・左)
Large Bridge (Snow, V, Center)|大きな橋(雪・縦・中央)
Large Bridge (Snow, V, Right)|大きな橋(雪・縦・右)
Large Bridge (H, Bottom)|大きな橋(横・下)
Large Bridge (Snow, H, Center)|大きな橋(雪・横・中央)
Large Bridge (Snow, H, Bottom)|大きな橋(雪・横・下)
Meadow A|草地A
Dirt A|土A
Desert A|砂地A
Snow A|雪A
Meadow|草地B
Dirt B|土B
Desert B|砂地B
Snow B|雪B
Stairs (Meadow, Left)|階段(草地・左)
Stairs (Meadow, Center)|階段(草地・中央)
Stairs (Meadow, Right)|階段(草地・右)
Stairs (Meadow)|階段
Stairs (Dirt, Left)|階段(土・左)
Stairs (Dirt, Center)|階段(土・中央)
Stairs (Dirt, Right)|階段(土・右)
Stairs (Dirt)|階段(土)
Cobblestones A|石畳A
Cobblestones B|石畳B
Cobblestones C|石畳C
Cobblestones D|石畳D
Cobblestones A (Ruins)|石畳A廃墟
Cobblestones B (Ruins)|石畳B廃墟
Cobblestones C (Ruins)|石畳C廃墟
Cobblestones D (Ruins)|石畳D廃墟
Stairs (Desert, Left)|階段(砂地・左)
Stairs (Desert, Center)|階段(砂地・中央)
Stairs (Desert, Right)|階段(砂地・右)
Stairs (Desert)|階段(砂地)
Stairs (Snow, Left)|階段(雪・左)
Stairs (Snow, Center)|階段(雪・中央)
Stairs (Snow, Right)|階段(雪・右)
Stairs (Snow)|階段(雪)
Cobblestones E|石畳E
Cobblestones F|石畳F
Cobblestones G|石畳G
Ice Floor A|氷の床A
Cobblestones E (Ruins)|石畳E廃墟
Cobblestones F (Ruins)|石畳F廃墟
Cobblestones G (Ruins)|石畳G廃墟
Ice Floor B|氷の床B
Stairs (Paved, Left)|階段(舗装・左)
Stairs (Paved, Center)|階段(舗装・中央)
Stairs (Paved, Right)|階段(舗装・右)
Stairs (Paved)|階段(舗装)
Stairs (Ruins, Left)|階段(廃墟・左)
Stairs (Ruins, Center)|階段(廃墟・中央)
Stairs (Ruins, Right)|階段(廃墟・右)
Stairs (Ruins)|階段(廃墟)
Ledge (Port, Left)|段差(港・左)
Ledge (Port, Center)|段差(港・中央)
Ledge (Port, Right)|段差(港・右)
Ledge (Port)|段差(港)
Cobblestones H|石畳H
Cobblestones I|石畳I
Cloud A|雲A
Cloud B|雲B
Farm Field A (Top)|畑A
Farm Field A (Center)|畑A中央
Farm Field B (Snow, Top)|畑B雪・上
Farm Field B (Snow, Center)|畑B雪・中央
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile B|大きなレリーフ床B
Large Relief Floor Tile B|大きなレリーフ床B
Farm Field A (Bottom)|畑A
Farm Field A|畑A
Farm Field B (Snow, Bottom)|畑B雪・下
Farm Field B (Snow)|畑B
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile A|大きなレリーフ床A
Large Relief Floor Tile B|大きなレリーフ床B
Large Relief Floor Tile B|大きなレリーフ床B
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Garden A|花壇A
Garden B (Snow)|花壇B
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Meadow)|段差(草地)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Cliff|崖
Cliff|崖
Cliff|崖
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Cliff|崖
Cliff|崖
Cliff|崖
Cliff (Meadow)|崖(草地)
Cliff (Meadow)|崖(草地)
Cliff (Meadow)|崖(草地)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Cliff (Dirt)|崖(土)
Cliff (Dirt)|崖(土)
Cliff (Dirt)|崖(土)

View file

@ -0,0 +1,256 @@
Transparent|透明
Shop Sign (Sword)|看板(剣)
Shop Sign (Sword & Shield)|看板(剣と盾)
Shop Sign (Armor)|看板(鎧)
Shop Sign (Sack)|看板(袋)
Shop Sign (Teapot)|看板(ポット)
Shop Sign (Inn)|看板(宿)
Shop Sign (Pub)|看板(酒場)
Shop Sign (Eatery)|看板(食堂)
Shop Sign (Hexagram)|看板(魔法陣)
Shop Sign (Staves)|看板(杖)
Shop Sign (Coin)|看板(コイン)
Shop Sign (Necklace)|看板(ネックレス)
Shop Sign (Hammer)|看板(ハンマー)
Shop Sign (Crest)|看板(紋章)
Shop Sign (Blank)|看板(無地)
Log Bridge (V)|丸太の橋(縦)
Log Bridge (H)|丸太の橋(横)
Wood Bridge (V)|木の橋(縦)
Wood Bridge (H)|木の橋(横)
Stone Bridge (V)|石の橋(縦)
Stone Bridge (H)|石の橋(横)
Wood Bridge (V)|木の橋(縦)
Wood Bridge (H)|木の橋(横)
Bridge Spar (Wood, Center A)|橋げた木・中央A
Bridge Spar (Wood, Left)|橋げた(木・左)
Bridge Spar (Wood, Center B)|橋げた木・中央B
Bridge Spar (Wood, Right)|橋げた(木・右)
Bridge Spar (Stone, Center A)|橋げた石・中央A
Bridge Spar (Stone, Left)|橋げた(石・左)
Bridge Spar (Stone, Center B)||橋げた石・中央B
Bridge Spar (Stone, Right)|橋げた(石・右)
Window A|窓A
Window B|窓B
Window C|窓C
Window D|窓D
Middle Window A|中型窓A
Middle Window B|中型窓B
Middle Window C|中型窓C
Middle Window D|中型窓D
Window E|窓E
Window F|窓F
Window G|窓G
Stained Glass Window A|ステンドグラスA
Middle Window A|中型窓A
Middle Window E|中型窓E
Middle Window C|中型窓C
Middle Window D|中型窓D
Large Window A|大型窓A
Large Window B|大型窓B
Large Window C|大型窓C
Stained Glass Window B|ステンドグラスB
Large Window D|大型窓D
Middle Window F|中型窓F
Middle Window G|中型窓G
Middle Window H|中型窓H
Large Window A|大型窓A
Large Window E|大型窓E
Large Window C|大型窓C
Stained Glass Window B|ステンドグラスB
Large Window D|大型窓D
Middle Window F|中型窓F
Middle Window G|中型窓G
Middle Window H|中型窓H
Chimney A|煙突A
Mooring Bollard A|ビットA
Mooring Bollard B (Rope)|ビットBロープ
Entrance A|入口A
Entrance A (Extend)|入口A延長部分
Entrance A (Top Half A)|入口A上半分AS
Entrance B|入口B
Entrance A (Top Half B)|入口A上半分B
Chimney B|煙突B
Sign A|立て札A
Sign B|立て札B
Well|井戸
Stepping Stones|踏み石
Barrel|樽
Grave A|墓A
Grave B|墓B
Pot|壺
Basin A|桶A
Basin B|桶B
Rock Fire Pit A|石のかまどA
Rock Fire Pit B|石のかまどB
Barricade (H)|バリケード(横)
Barricade (V)|バリケード(縦)
Beanstalk|豆の木
Grass A|草A
Grass B|草B
Grass C|草C
Grass D|草D
Stump|切り株
Tree|木
Tree|木
Boulder A|岩A
Flowers A|花A
Flowers B|花B
Flowers C|花C
Flowers D|花D
Fallen Log|倒木
Tree|木
Bush|植え込み
Boulder B|岩B
Scarecrow|かかし
Hole|穴
Firewood|薪
Rocks|小石
Crops A|農作物A
Crops B|農作物B
Crops C|農作物C
Crops D|農作物D
Large Tree|大木
Large Tree|大木
Large Tree|大木
Large Tree|大木
Large Crate|大きな木箱
Crate A|木箱A
Crate B|木箱B
Crate C|木箱C
Large Tree|大木
Large Tree|大木
Large Tree|大木
Large Tree|大木
Large Crate|大きな木箱
Crate D|木箱D
Crate E|木箱E
Crate F|木箱F
Conifer Tree (Snow)|針葉樹(雪)
Conifer Tree (Snow)|針葉樹(雪)
Conifer Tree (Snow)|針葉樹(雪)
Conifer Tree (Snow)|針葉樹(雪)
Scarecrow (Snow)|かかし(雪)
Pot (Snow)|壺(雪)
Bucket (Snow)|桶(雪)
Crate (Snow)|木箱(雪)
Large Conifer Tree (Snow)|大針葉樹(雪)
Large Conifer Tree (Snow)|大針葉樹(雪)
Large Conifer Tree (Snow)|大針葉樹(雪)
Large Conifer Tree (Snow)|大針葉樹(雪)
Mooring Bollard (Snow)|ビット(雪)
Barricade (H, Snow)|バリケード(横・雪)
Barricade (H, Snow)|バリケード(縦・雪)
Beanstalk (Snow)|豆の木(雪)
Chimney (Snow)|煙突(雪)
Sign A (Snow)|立て札A
Sign B (Snow)|立て札B
Well (Snow)|井戸(雪)
Stepping Stones (Snow)|踏み石(雪)
Barrel (Snow)|樽(雪)
Grave A (Snow)|墓A
Grave B (Snow)|墓B
Grass A (Snow)|草A
Grass B (Snow)|草B
Grass C (Snow)|草C
Grass D (Snow)|草D
Stump (Snow)|切り株(雪)
Conifer Tree (Snow)|針葉樹(雪)
Conifer Tree (Snow)|針葉樹(雪)
Boulder A (Snow)|岩A
Snowman|雪だるま
Hole (Snow)|穴(雪)
Firewood (Snow)|薪(雪)
Rocks (Snow)|小石(雪)
Fallen Log (Snow)|倒木(雪)
Conifer Tree (Snow)|針葉樹(雪)
Bush (Snow)|植え込み(雪)
Boulder B (Snow)|岩B
Dead Tree|枯れ木
Dead Tree|枯れ木
Mushrooms A|キコA
Mushrooms B|キコB
Palm Tree|ヤシの木
Palm Tree|ヤシの木
Cactus|サボテン
Dead Grass A|枯れ草A
Dead Tree|枯れ木
Dead Tree (Shrub)|枯れ木(低木)
Rafflesia|ラフレシア
Stump (Moss)|切り株(苔)
Palm Tree|ヤシの木
Bush (Flowers)|植え込み(花)
Fern|シダ
Dead Grass B|枯れ草B
Hay|干し草
Hay (Snow)|干し草(雪)
Floral Patch|花畑
Susuki Grass|ススキ
Fallen Leaves|落ち葉
Lotus Pads A|蓮の葉A
Lotus Pads B (Flowers)|蓮の葉B
Lotus Pads C|蓮の葉C
Wall Vines A|壁のツタA
Wall Vines B|壁のツタB
Wall Vines C|壁のツタC
Wall Fern|壁のシダ
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Fissures D|亀裂D
Wall Vines A|壁のツタA
Wall Vines B|壁のツタB
Wall Vines C|壁のツタC
Wall Moss|壁の苔
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Fissures D|亀裂D
Tent A|テントA
Tent A|テントA
Tent A|テントA
Streetlight A|街灯A
Stairs A (Up)|階段A上り
Stairs B (Up)|階段B上り
Stairs C (Up)|階段C上り
Stairs D (Up)|階段D上り
Tent A|テントA
Tent A|テントA
Tent A|テントA
Streetlight A|街灯A
Stairs A (Down)|階段A下り
Stairs B (Down)|階段B下り
Stairs C (Down)|階段C下り
Stairs D (Down)|階段D下り
Tent A|テントA
Tent A (Entrance)|テントA入口
Tent A|テントA
Streetlight A|街灯A
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Vines A|ツタ
Tent B (Snow)|テントB
Tent B (Snow)|テントB
Tent B (Snow)|テントB
Streetlight B (Snow)|街灯B
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Vines A|ツタA
Tent B (Snow)|テントB
Tent B (Snow)|テントB
Tent B (Snow)|テントB
Streetlight B (Snow)|街灯B
Metal Ladder|鉄ばしご
Rope Ladder|縄ばしご
Rope|ロープ
Vines B (Down)|ツタB下り
Tent B (Snow)|テントB
Tent B (Entrance, Snow)|テント(入口・雪)
Tent B (Snow)|テントB
Streetlight B (Snow)|街灯B
Hole A (Metal Ladder)|穴A鉄ばしご
Hole B (Rope Ladder)|穴B縄ばしご
Hole C (Rope)|穴Cロープ
Hole D|穴D

View file

@ -0,0 +1,256 @@
Stone Pillar A|石の柱A
Stone Pillar B|石の柱B
Stone Pillar C|石の柱C
Stone Pillar C (Moss)|石の柱C
Stone Pillar C (Snow)|石の柱C
Wood Pillar|木の柱
Stone Pillar D|石の柱D
Demon Castle Pillar|魔王城の柱
Stone Pillar A|石の柱A
Stone Pillar B|石の柱B
Stone Pillar C|石の柱C
Stone Pillar C (Moss)|石の柱C
Stone Pillar C (Snow)|石の柱C
Wood Pillar|木の柱
Stone Pillar D|石の柱D
Demon Castle Pillar|魔王城の柱
Broken Stone Pillar|折れた石の柱A
Broken Stone Pillar|折れた石の柱B
Broken Stone Pillar|折れた石の柱C
Broken Stone Pillar C (Moss)|折れた石の柱C
Broken Stone Pillar C (Snow)|折れた石の柱C
Broken Wood Pillar|折れた木の柱
Broken Stone Pillar F|折れた石の柱D
Broken Demon Castle Pillar|折れた魔王城の柱
Bones A|骸骨A
Bones B|骸骨B
Rubble|瓦礫A
Rubble B (Moss)|瓦礫B
Rubble C (Snow)|瓦礫C
Broken Wood Pillar|折れた木の柱
Rubble D|瓦礫D
Rubble E (Demon Castle)|瓦礫E魔王城
Tapestry A|タペストリーA
Tapestry A (Ruins)|タペストリーA廃墟
Tapestry B|タペストリーB
Tapestry B (Ruins)|タペストリーB廃墟
Tapestry C|タペストリーC
Tapestry C (Ruins)|タペストリーC廃墟
Tapestry D|タペストリーD
Tapestry D (Ruins)|タペストリーD廃墟
Tapestry A|タペストリーA
Tapestry A (Ruins)|タペストリーA廃墟
Tapestry B|タペストリーB
Tapestry B (Ruins)|タペストリーB廃墟
Tapestry C|タペストリーC
Tapestry C (Ruins)|タペストリーC廃墟
Tapestry D|タペストリーD
Tapestry D (Ruins)|タペストリーD廃墟
Monument A|石碑A
Monument B|石碑B
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Monument A|石碑A
Monument C|石碑C
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument|大きな石碑
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Large Monument (Lit)|大きな石碑(光)
Monument A (Snow)|石碑A
Monument B (Snow)|石碑B
Large Monument (Snow)|大きな石碑(雪)
Large Monument (Snow)|大きな石碑(雪)
Large Monument (Snow)|大きな石碑(雪)
Large Monument (Ruins)|大きな石碑(廃墟)
Large Monument (Ruins)|大きな石碑(廃墟)
Large Monument (Ruins)|大きな石碑(廃墟)
Monument A (Snow)|石碑A
Monument B (Snow)|石碑B
Large Monument (Snow)|大きな石碑(雪)
Large Monument (Snow)|大きな石碑(雪)
Large Monument (Snow)|大きな石碑(雪)
Large Monument (Ruins)|大きな石碑(廃墟)
Large Monument (Ruins)|大きな石碑(廃墟)
Large Monument (Ruins)|大きな石碑(廃墟)
Statue A|石像A
Angel Statue A|天使像A
Angel Statue B|天使像B
Demon Statue|悪魔像
Dais|台座
Dragon Statue|竜像
Dragon Statue|竜像
Statue B|石像B
Statue A|石像A
Angel Statue A|天使像A
Angel Statue B|天使像B
Demon Statue|悪魔像
Dais|台座
Dragon Statue|竜像
Dragon Statue|竜像
Statue B|石像B
Statue A (Snow)|石像A
Angel Statue A (Snow)|天使像A
Angel Statue B (Snow)|天使像B
Demon Statue (Snow)|悪魔像(雪)
Dais (Snow)|台座(雪)
Dragon Statue (Snow)|竜像(雪)
Dragon Statue (Snow)|竜像(雪)
Ice Statue|氷像
Statue A (Snow)|石像A
Angel Statue A (Snow)|天使像A
Angel Statue B (Snow)|天使像B
Demon Statue (Snow)|悪魔像(雪)
Dais (Snow)|台座(雪)
Dragon Statue (Snow)|竜像(雪)
Dragon Statue (Snow)|竜像(雪)
Ice Statue|氷像
Window A (Demon Castle)|窓A魔王城
Window B (Demon Castle)|窓B魔王城
Window C (Demon Castle)|窓C魔王城
Gravel Mound (Dirt)|土砂A
Large Gravel Mound (Dirt)|大きな土砂(土)
Large Gravel Mound (Dirt)|大きな土砂(土)
Cave Entrance|洞窟入口
Mine Entrance|坑道入口
Window A (Demon Castle)|窓A魔王城
Window B (Demon Castle)|窓B魔王城
Window D (Demon Castle)|窓D魔王城
Gravel Mound B (Dirt, Snow)|土砂B土・雪
Large Gravel Mound (Dirt)|大きな土砂(土)
Large Gravel Mound (Dirt)|大きな土砂(土)
Cave Entrance|洞窟入口
Mine Entrance|坑道入口
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof A (Red Tile)|屋根A赤瓦
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof B (Snow)|屋根B
Roof B (Snow)|屋根B
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof C (Indigo Tile)|屋根C藍瓦
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Round Tower A (Castle)|円塔A
Round Tower A (Castle)|円塔A
Roof Detail A (Red Tile)|屋根飾りA赤瓦
Roof Detail B (Snow)|屋根飾りB
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower A (Castle)|円塔A
Round Tower A (Castle)|円塔A
Roof Detail C (Indigo Tile)|屋根飾りC藍瓦
Roof Detail D (Wood)|屋根飾りD木造
Roof D (Wood)|屋根D木造
Roof D (Wood)|屋根D木造
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower A (Castle)|円塔A
Round Tower A (Castle)|円塔A
Round Tower A (Castle's Spire)|円塔A城の尖塔
Round Tower A (Castle's Spire)|円塔A城の尖塔
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower A (Castle)|円塔A
Round Tower A (Castle)|円塔A
Round Tower A (Castle's Spire)|円塔A城の尖塔
Round Tower A (Castle's Spire)|円塔A城の尖塔
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower A (Castle)|円塔A
Round Tower A (Castle)|円塔A
Round Tower A (Castle's Spire)|円塔A城の尖塔
Round Tower A (Castle's Spire)|円塔A城の尖塔
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower B (Fort)|円塔B
Round Tower B (Fort)|円塔B
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle)|円塔A
Round Tower A (Castle)|円塔A
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle's Spire, Snow)|円塔A城の尖塔・雪
Round Tower A (Castle's Spire, Snow)|円塔A城の尖塔・雪
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle's Spire, Snow)|円塔A城の尖塔・雪
Round Tower A (Castle's Spire, Snow)|円塔A城の尖塔・雪
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle's Spire, Snow)|円塔A城の尖塔・雪
Round Tower A (Castle's Spire, Snow)|円塔A城の尖塔・雪
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower C (Demon Castle)|円塔C魔王城
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower A (Castle, Snow)|円塔A城・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪
Round Tower B (Fort, Snow)|円塔B砦・雪

View file

@ -0,0 +1,48 @@
Wall A (Concrete)|壁Aコンクリート
Wall B (Concrete, Dirty)|壁Bコンクリート・汚れ
Wall C (House)|壁C現代住宅
Wall D (Metal)|壁D金属
Wall E (Metal, Red Rust)|壁E金属・赤錆
Wall F (Metal, Patina)|壁F金属・緑青錆
Wall G (Barracks)|壁Gバラック
Wall H (Chinese)|壁H中華風
Wall A (Concrete)|壁Aコンクリート
Wall B (Concrete, Dirty)|壁Bコンクリート・汚れ
Wall C (House)|壁C現代住宅
Wall D (Metal)|壁D金属
Wall E (Metal, Red Rust)|壁E金属・赤錆
Wall F (Metal, Patina)|壁F金属・緑青錆
Wall G (Barracks)|壁Gバラック
Wall H (Chinese)|壁H中華風
Wall I (Factory)|壁I工場
Wall J (Factory)|壁J工場
Wall K (Building)|壁Kビル
Wall L (Checkered)|壁L市松
Interior Wall A (Pattern)|内装壁A模様
Interior Wall B (Pattern)|内装壁B模様
Interior Wall C (Pattern)|内装壁C模様
Wall M (Brick)|壁Mレンガ)
Wall I (Factory)|壁I工場
Wall J (Factory)|壁J工場
Wall K (Building)|壁Kビル
Wall L (Checkered)|壁L市松
Interior Wall A (Pattern)|内装壁A模様
Interior Wall B (Pattern)|内装壁B模様
Interior Wall C (Pattern)|内装壁C模様
Wall M (Brick)|壁Mレンガ)
Wall N (Wood)|壁N木造
Wall O (Wood, Dirty)|壁O木造・汚れ
Wall P (Artery)|壁P動脈)
Wall Q (In Body)|壁Q体内)
Wall R (Neon)|壁Rネオン)
Wall S (Wire Mesh)|壁S金網
Wall T (Wire Mesh, Red Rust)|壁T金網・赤錆
Wall U (Wire Mesh, Patina)|壁U金網・緑青錆
Wall N (Wood)|壁N木造
Wall O (Wood, Dirty)|壁O木造・汚れ
Wall P (Artery)|壁P動脈)
Wall Q (In Body)|壁Q体内)
Wall R (Neon)|壁Rネオン)
Wall S (Wire Mesh)|壁S金網
Wall T (Wire Mesh, Red Rust)|壁T金網・赤錆
Wall U (Wire Mesh, Patina)|壁U金網・緑青錆

View file

@ -0,0 +1,256 @@
Transparent|透明
Stairs A (Up)|階段A上り
Stairs B (Up)|階段B上り
Stairs C (Up)|階段C上り
Stairs D (Up)|階段D上り
Metal Ladder|鉄ばしご
Metal Stairs|金属階段
Rope|ロープ
Hole|穴
Stairs A (Down)|階段A下り
Stairs B (Down)|階段B下り
Stairs C (Down)|階段C下り
Stairs D (Down)|階段D下り
Metal Ladder|鉄ばしご
Metal Stairs|金属階段
Rope|ロープ
Midsize Window A|中型窓A
Midsize Window B|中型窓B
Large Window A|大型窓A
Midsize Window C|中型窓C
Large Window B|大型窓B
Metal Ladder|鉄ばしご
Metal Stairs|金属階段
Rope|ロープ
Midsize Window A|中型窓A
Midsize Window B|中型窓B
Large Window A|大型窓A
Midsize Window C|中型窓C
Large Window B|大型窓B
Hole A (Metal Ladder)|穴A鉄ばしご
Hole B (Metal Stairs)|穴B金属階段
Hole C (Rope)|穴Cロープ
Asphalt Bridge (V)|アスファルトの橋(縦)
Asphalt Bridge (H)|アスファルトの橋(横)
Stone Bridge (V)|石の橋(縦)
Stone Bridge (H)|石の橋(横)
Metal Bridge A (V)|金属の橋A
Metal Bridge A (H)|金属の橋A
Metal Bridge B (V)|金属の橋B
Metal Bridge B (H)|金属の橋B
Bridge Spar A (Asphalt, Center A)|橋げたAアスファルト・中央A
Bridge Spar A (Asphalt, Left)|橋げたAアスファルト・左
Bridge Spar A (Asphalt, Center B)|橋げたAアスファルト・中央B
Bridge Spar A (Asphalt, Right)|橋げたAアスファルト・右
Bridge Spar B (Metal, Center A)|橋げたB金属・中央A
Bridge Spar B (Metal, Left)|橋げたB金属・左
Bridge Spar B (Metal, Center B)|橋げたB金属・中央B
Bridge Spar B (Metal, Right)|橋げたB金属・右
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Warning Plate (Keep Out)|警告プレートKEEP OUT
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal, Stairs)|連絡橋(金属・階段)
Metal Fence|金属フェンス
Warning Plate (Exclamation Mark)|警告プレート(!マーク)
Metal Fence|金属フェンス
Warning Plate (Radioactivity Mark)|警告プレート(放射能マーク)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal, Stairs)|連絡橋(金属・階段)
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Warning Plate (Biohazard Mark)|警告プレート(バイオハザードマーク)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal)|連絡橋(金属)
Connecting Bridge (Metal)|連絡橋(金属)
Podium (H)|教壇机(横)
Pillar A (Asphalt)|柱Aアスファルト
Pillar B (Metal)|柱B金属
Pillar C (Machine)|柱C機械
Pillar D (Decoration)|柱D装飾
Pillar E (Metal)|柱E金属
Pillar F (Brick)|柱Fレンガ
Large Window C|大型窓C
Podium (H)|教壇机(横)
Pillar A (Asphalt)|柱Aアスファルト
Pillar B (Metal)|柱B金属
Pillar C (Machine)|柱C機械
Pillar D (Decoration)|柱D装飾
Pillar E (Metal)|柱E金属
Pillar F (Brick)|柱Fレンガ
Large Window C|大型窓C
Podium (V)|教壇机(縦)
Broken Pillar A (Asphalt)|折れた柱Aアスファルト
Broken Pillar B (Metal)|折れた柱B金属
Broken Pillar C (Machine)|折れた柱C機械
Broken Pillar D (Decoration)|折れた柱D装飾
Broken Pillar E (Metal)|折れた柱E金属
Broken Pillar F (Brick)|折れた柱Fレンガ
Barricade (No Entry)|バリケード(通行禁止)
Podium (V)|教壇机(縦)
Girder A (Asphalt, Left)|梁Aアスファルト・左
Girder A (Asphalt, Center)|梁Aアスファルト・中央
Girder A (Asphalt, Right)|梁Aアスファルト・右
Girder C (Decoration, Left)|梁C装飾・左
Girder C (Decoration, Center)|梁C装飾・中央
Girder C (Decoration, Right)|梁C装飾・右
Bar (No Entry)|バー(通行禁止)
Bar (No Entry)|バー(通行禁止)
Girder B (Metal, Left)|梁B金属・左
Girder B (Metal, Center)|梁B金属・中央
Girder B (Metal, Right)|梁B金属・右
Rubble A (Asphalt)|瓦礫Aアスファルト
Rubble B (Metal)|瓦礫B金属
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Jail Bars|鉄格子
Laser Barrier|レーザーバリア
Wheelchair (Left)|車いす(左)
Wheelchair (Right)|車いす(右)
Pipe Frame Bed (Ruins)|パイプベッド(廃墟)
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Jail Bars|鉄格子
Laser Barrier|レーザーバリア
Wheelchair (Bottom)|車いす(下)
Wheelchair (Fallen)|車いす(倒れ)
Pipe Frame Bed (Ruins)|パイプベッド(廃墟)
Lab Equipment|実験器具
School Desk (V)|学校机(縦)
School Desk (H)|学校机(横)
TV|テレビ
Computer|PC
Laptop|ートPC
Printer|プリンター
Telephone|電話
Intercom (Hanging)|インターホン(壁掛け)
Tablet Device|タブレット端末
Table Clock|置時計
Gas Stove|ガスコンロ
Kitchen Counter|調理台
Sink|流し
Exhaust Fan|換気扇
Air Conditioner|エアコン
Wastebasket|ゴミ箱
Book Stand|本立て
Document|書類
School Chair (Bottom)|学校イス(下)
School Chair (Top)|学校イス(上)
School Chair (Right)|学校イス(右)
School Chair (Left)|学校イス(左)
Sofa (Right)|ソファ(右)
Sofa (Left)|ソファ(左)
Sofa (Down)|ソファ(下)
Sofa (Up)|ソファ(下)
Office Chair (Bottom)|オフィスチェア(下)
Office Chair (Top)|オフィスチェア(上)
Office Chair (Right)|オフィスチェア(右)
Office Chair (Left)|オフィスチェア(左)
Sofa (Right)|ソファ(右)
Sofa (Left)|ソファ(左)
Sofa (Top)|ソファ(上)
Sofa (Top)|ソファ(上)
Washing Machine|洗濯機
Western Style Toilet|洋式便器
Urinal|男性用便器
Bathroom Sink|洗面台
Bathtub (V)|バスタブ(縦)
Bathtub (H)|バスタブ(横)
Bathtub (H)|バスタブ(横)
Glass Table (V)|ガラステーブル(縦)
Washing Machine|洗濯機
Western Style Toilet|洋式便器
Urinal|男性用便器
Wash Basin|洗面台
Bathtub (V)|バスタブ(縦)
Glass Table (H)|ガラステーブル(横)
Glass Table (H)|ガラステーブル(横)
Glass Table (V)|ガラステーブル(縦)
Refrigerator|冷蔵庫
Bookshelf A|本棚A
Chest of Drawers A|タンスA
Miscellaneous Item Shelf|雑貨棚
Locker A|ロッカーA
Document Shelf|資料棚
Medicine Shelf|薬品棚
Locker B (School)|ロッカーB学校
Refrigerator|冷蔵庫
Bookshelf A|本棚A
Chest of Drawers A|タンスA
Miscellaneous Item Shelf |雑貨棚
Locker A|ロッカーA
Document Shelf|資料棚
Medicine Shelf|薬品棚
Locker B (School)|ロッカーB学校
Display Shelf A|商品陳列棚A
Display Shelf B|商品陳列棚B
Convenience Store Shelf A|コンビニ棚A
Convenience Store Shelf B|コンビニ棚B
Document Shelf (Ruins)|資料棚(廃墟)
Chest of Drawers B (Decoration)|タンスB装飾
Shelf A (Decoration)|棚A装飾
Bookshelf B (Decoration)|本棚B装飾
Display Shelf A|商品陳列棚A
Display Shelf B|商品陳列棚B
Convenience Store Shelf A|コンビニ棚A
Convenience Store Shelf B|コンビニ棚B
Document Shelf (Ruins)|資料棚(廃墟)
Chest of Drawers B (Decoration)|タンスB装飾
Shelf A (Decoration)|棚A装飾
Bookshelf B (Decoration)|本棚B装飾
Stacked Crates|積まれた木箱
Shipping Container|コンテナ
Stacked Cardboard Boxes|積まれたダンボール
Vending Machine|自動販売機
ATM|ATM
Steel Shelf|鉄骨棚
Operating Table|手術台
Hospital Bed|病院ベッド
Stacked Crates|積まれた木箱
Shipping Container|コンテナ
Stacked Cardboard Boxes|積まれたダンボール
Vending Machine|自動販売機
ATM|ATM
Steel Shelf|鉄骨棚
Operating Table|手術台
Hospital Bed|病院ベッド
Bed|ベッド
Mattress|敷布団
Large Bed|ダブルベッド
Large Bed|ダブルベッド
Pipe Frame Bed|パイプベッド
Slot Machine |スロット
Poker Table|ポーカー台
Poker Table|ポーカー台
Bed|ベッド
Mattress|敷布団
Large Bed|ダブルベッド
Large Bed|ダブルベッド
Pipe Frame Bed|パイプベッド
Slot Machine|スロット
Poker Table|ポーカー台
Poker Table|ポーカー台
Chest A (Wood)|チェストA木製
Chest B (Metal)|チェストB金属
Chest C (Decoration)|チェストC装飾
Large Desk A|大きいデスクA
Large Desk A|大きいデスクA
Roulette Table|ルーレット台
Roulette Table|ルーレット台
Roulette Table|ルーレット台
Side Desk A (Wood)|サイドデスクA木製
Side Desk B (Metal)|サイドデスクB金属
Desk|デスク
Large Desk B|大きいデスクB
Large Desk B|大きいデスクB
Roulette Table|ルーレット台
Roulette Table|ルーレット台
Roulette Table|ルーレット台

View file

@ -0,0 +1,256 @@
Black Board|黒板
Black Board|黒板
Black Board|黒板
White Board|ホワイトボード
White Board|ホワイトボード
White Board|ホワイトボード
Cloth Partition A|布の衝立A
Cloth Partition B|布の衝立B
Black Board|黒板
Black Board|黒板
Black Board|黒板
White Board|ホワイトボード
White Board|ホワイトボード
White Board|ホワイトボード
Cloth Partition A|布の衝立A
Cloth Partition B|布の衝立B
Stool|腰掛けイス
Skeleton Model|骨格模型
Biological Specimen|生物標本
Potted Plant|植木鉢
Armchair|肘掛け椅子
Insect Specimen|昆虫標本
Restroom Mark (Men)|トイレマーク(男性)
Restroom Mark (Women)|トイレマーク(女性)
Wall Speaker|壁掛けスピーカー
Skeleton Model |骨格模型
Biological Specimen|生物標本
Fire Extinguisher|消火器
Armchair|肘掛け椅子
Room Plate|室名札
EXIT Sign|EXITプレート
Vent|通気口
Painting A|絵画A
Painting B|絵画B
Vision Test Chart|視力検査表
Plaster Bust|石膏胸像
Calendar|カレンダー
Plant A|植物A
Plant B|植物B
Plant C|植物C
Painting C|絵画C
Painting D|絵画D
Anatomical Chart|人体図
Canvas|キャンバス
Bulletin Board|掲示板
Plant A|植物A
Plant B|植物B
Plant C|植物C
Plumbing|配管
Plumbing|配管
Valve|バルブ
Machine A|機械A
Machine B|機械B
Machine C|機械C
Air Vent A|通風口A
Air Vent B|通風口B
Plumbing|配管
Plumbing|配管
Plumbing|配管
Neon Tube|ネオン管
Neon Tube|ネオン管
Neon Tube|ネオン管
Fan|ファン
Fluorescent Light|蛍光灯
Plumbing|配管
Plumbing|配管
Plumbing|配管
Neon Tube|ネオン管
Neon Tube|ネオン管
Neon Tube|ネオン管
Outdoor Air Intake Unit|室外機
Shutter|シャッター
Plumbing|配管
Plumbing|配管
Plumbing|配管
Control Panel A|操作パネルA
Control Panel B|操作パネルB
Control Panel C|操作パネルC
Pipe (H)|パイプ(横)
Pipe (V)|パイプ(縦)
Line A|ラインA
Line B|ラインB
Road Closed|通行止め
Waste|廃棄物
Scrap Metal|スクラップ
Mysterious Liquid|謎の液体
Scattered Papers|散らばった紙
Pipe (V)|パイプ(縦)
Belt Conveyor (V)|ベルトコンベアー(縦)
Belt Conveyor (H)|ベルトコンベアー(横)
Belt Conveyor (H)|ベルトコンベアー(横)
Belt Conveyor (H)|ベルトコンベアー(横)
Duct|ダクト
Mechanical Device|機械装置
Pile of Rubble|瓦礫の山
Pile of Rubble|瓦礫の山
Belt Conveyor (V)|ベルトコンベアー(縦)
Robot Arm|ロボットアーム
Server Machine|サーバマシン
Meters|計器類
Duct|ダクト
Mechanical Device|機械装置
Pile of Rubble|瓦礫の山
Pile of Rubble|瓦礫の山
Belt Conveyor (V)|ベルトコンベアー(縦)
Robot Arm|ロボットアーム
Server Machine|サーバマシン
Meters|計器類
Duct|ダクト
Drain|排水口
Graffiti|落書き
Graffiti|落書き
Monitor A|モニターA
Monitor B|モニターB
Large Monitor|大型モニター
Large Monitor|大型モニター
IV Stand|点滴スタンド
ECG Monitor|心電図モニタ
Sewing Mannequin|トルソー
Rubble|瓦礫
Operation Board A|操作盤A
Operation Board B|操作盤B
Operation Board C|操作盤C
Operation Board D|操作盤D
IV Stand|点滴スタンド
ECG Monitor|心電図モニタ
Sewing Mannequin|トルソー
Broken Machine|壊れた機械
Stairs|階段
Stairs|階段
Stairs|階段
Cage|檻
Cage|檻
Handrail|欄干
Handrail|欄干
Handrail|欄干
Stairs|階段
Stairs|階段
Stairs|階段
Curtains A|カーテンA
Curtains B|カーテンB
Curtains C|カーテンC
Curtains D|カーテンD
Handrail|欄干
Stairs|階段
Stairs|階段
Stairs|階段
Curtains A|カーテンA
Curtains B|カーテンB
Curtains C|カーテンC
Curtains D|カーテンD
Emergency Alarm|非常ベル
Spider Web|蜘蛛の巣
Mirror|鏡
Vase|花瓶
Piano|ピアノ
Piano|ピアノ
Piano|ピアノ
Stained Glass|ステンドグラス
Decorative Pillar|装飾柱
Dripping|液垂れ
Mirror|鏡
Lamp|電気スタンド
Piano|ピアノ
Piano|ピアノ
Piano|ピアノ
Stained Glass|ステンドグラス
Decorative Pillar|装飾柱
Picture Frame|写真立て
Side Table|サイドテーブル
Altar|祭壇
Fireplace|暖炉
Fireplace|暖炉
Fireplace|暖炉
Stuffed Doll A|ぬいぐるみA
Decorative Pillar|装飾柱
Book A|本A
Book B|本B
Glass Pieces|ガラス片
Fireplace|暖炉
Fireplace|暖炉
Fireplace|暖炉
Doll|人形
Stuffed Doll B|ぬいぐるみB
Beer Mug|ビールジョッキ
Wine & Glass|ワインとグラス
Noodle Dish|麺料理
Bread|パン
Banister A (V)|手すりA
Banister A (V)|手すりA
Banister B (V)|手すりB
Banister B (V)|手すりB
Meat Dish|肉料理
Roast Chicken|ローストチキン
Cake|ケーキ
Fruit Bowl|果物盛り合わせ
Banister A (V)|手すりA
Banister A (V)|手すりA
Banister B (V)|手すりB
Banister B (V)|手すりB
Plate A|皿A
Teapot & Cup|ティーポットとカップ
Ration|レーション
Plate B|皿B
Banister A (V)|手すりA
Banister A (V)|手すりA
Banister B (V)|手すりB
Banister B (V)|手すりB
Demon Statue|悪魔像
Goddess Statue|女神像
Soldier Statue|兵士像
Wall Clock|柱時計
Banister A (H)|手すりA
Banister A (H)|手すりA
Banister A (H)|手すりA
Banister A (H)|手すりA
Demon Statue|悪魔像
Goddess Statue|女神像
Soldier Statue|兵士像
Wall Clock|柱時計
Banister B (H)|手すりB
Banister B (H)|手すりB
Banister B (H)|手すりB
Banister B (H)|手すりB
Monument A|モニュメントA
Monument B|モニュメントB
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Monument A|モニュメントA
Monument B|モニュメントB
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Monument C|モニュメントC
Monument D|モニュメントD
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Large Machine|大型機械
Large Machine|大型機械
Large Machine|大型機械
Monument C|モニュメントC
Control Panel|コントロールパネル
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Large Machine|大型機械
Large Machine|大型機械
Large Machine|大型機械

View file

@ -0,0 +1,32 @@
Roof A (Metal)|屋根A金属
Roof B (Metal, Red Rust)|屋根B金属・赤錆
Roof C (Metal, Patina)|屋根C金属・緑青錆
Roof D (Barracks)|屋根Dバラック
Roof E (Barracks)|屋根Eバラック
Roof F (Factory)|屋根F工場
Roor G (Ivy)|屋根Gツタ
Roof H (House)|屋根H現代住宅
Outer Wall A (Metal)|外壁A金属
Outer Wall B (Metal, Red Rust)|外壁B金属・赤錆
Outer Wall C (Metal, Patina)|外壁C金属・緑青錆
Outer Wall D (Barracks)|外壁Dバラック
Outer Wall E (Barracks)|外壁Eバラック
Outer Wall F (Factory)|外壁F工場
Outer Wall G (Ivy)|外壁Gツタ
Outer Wall H (House)|外壁H現代住宅
Roof I (House)|屋根I現代住宅
Roof J (Brick)|屋根Jレンガ
Roof K (Brick)|屋根Kレンガ
Roof L (Chinese)|屋根L中華風
Roof M (Blue Sheet)|屋根Mブルーシート
Roof N (Wood)|屋根N木造
Roof O (Brick)|屋根Oレンガ
Roof P (Wood)|屋根P木造
Outer Wall I (House)|外壁I現代住宅
Outer Wall J (Brick)|外壁Jレンガ
Outer Wall K (Brick)|外壁Kレンガ
Outer Wall L (Chinese)|外壁L中華風
Outer Wall M (Blue Sheet)|外壁Mブルーシート
Outer Wall N (Wood)|外壁N木造
Outer Wall O (Brick)|外壁Oレンガ
Outer Wall P (Wood)|外壁P木造

View file

@ -0,0 +1,48 @@
Wall A (Concrete)|壁Aコンクリート
Wall B (Concrete, Dirty)|壁Bコンクリート・汚れ
Wall C (Block)|壁Cブロック
Wall D (Apartment)|壁Dマンション
Wall E (Apartment)|壁Eマンション
Wall F (Metal)|壁F金属
Wall G (Metal, Red Rust)|壁G金属・赤錆
Wall H (Metal, Patina)|壁H金属・緑青錆
Wall A (Concrete)|壁Aコンクリート
Wall B (Concrete, Dirty)|壁Bコンクリート・汚れ
Wall C (Block)|壁Cブロック
Wall D (Apartment)|壁Dマンション
Wall E (Apartment)|壁Eマンション
Wall F (Metal)|壁F金属
Wall G (Metal, Red Rust)|壁G金属・赤錆
Wall H (Metal, Patina)|壁H金属・緑青錆
Wall I (Barracks)|壁Iバラック
Wall J (Barracks)|壁Jバラック
Wall K (Factory)|壁K工場
Cliff A (Meadow)|崖A草地)
Wall L (Factory)|壁L工場
Wall M (Factory)|壁M工場
Wall N (Building)|壁Nビル
Wall O (Brick)|壁Oレンガ)
Wall I (Barracks)|壁Iバラック
Wall J (Barracks)|壁Jバラック
Wall K (Factory)|壁K工場
Cliff A (Meadow)|崖A草地)
Wall L (Factory)|壁L工場
Wall M (Factory)|壁M工場
Wall N (Building)|壁Nビル
Wall O (Brick)|壁Oレンガ)
Wall P (Chinese)|壁P中華風
Wall Q (Wire Mesh)|壁Q金網
Wall R (Wire Mesh, Red Rust)|壁R金網・赤錆
Wall S (Wire Mesh, Patina)|壁S金網・緑青錆
Wall T (Wood)|壁T木造
Wall U (Wood, Dirty)|壁U木造・汚れ
Wall V (Building)|壁Vビル
Wall W (Building)|壁Wビル
Wall P (Chinese)|壁P中華風
Wall Q (Wire Mesh)|壁Q金網
Wall R (Wire Mesh, Red Rust)|壁R金網・赤錆
Wall S (Wire Mesh, Patina)|壁S金網・緑青錆
Wall T (Wood)|壁T木造
Wall U (Wood, Dirty)|壁U木造・汚れ
Wall V (Building)|壁Vビル
Wall W (Building)|壁Wビル

View file

@ -0,0 +1,128 @@
Darkness|暗闇
Grid floor|格子床
Metal Bridge (V, Left)|金属橋(縦・左)
Metal Bridge (V, Center)|金属橋(縦・中央)
Metal Bridge (V, Right)|金属橋(縦・右)
Asphalt Bridge (H, Top)|アスファルト橋(横・上)
Metal Bridge (H, Center)|金属橋(横・中央)
Metal Bridge (H, Top)|金属橋(横・上)
Transparent|透明
Grid floor|格子床
Asphalt Bridge (V, Left)|アスファルト橋(縦・左)
Asphalt Bridge (V, Center)|アスファルト橋(縦・中央)
Asphalt Bridge (V, Right)|アスファルト橋(縦・右)
Asphalt Bridge (H, Bottom)|アスファルト橋(横・下)
Asphalt Bridge (H, Center)|アスファルト橋(横・中央)
Metal Bridge (H, Bottom)|金属橋(横・下)
Asphalt Floor|アスファルト床
Metal Floor A (Factory)|金属床A工場
Concrete Floor|コンクリート床
Concrete Floor (Ruins)|コンクリート床(廃墟)
Hole|穴
Grid floor (Ruins)|格子床(廃墟)
Asphalt Floor (Ruins)|アスファルト床(廃墟)
Metal Floor A (Factory, Ruins)|金属床A工場・廃墟
Asphalt Floor|アスファルト床
Metal Floor A (Factory)|金属床A工場
Concrete Floor|コンクリート床
Interior Floor A (In Body)|内装床A体内
Stairs A (Asphalt, Left)|階段Aアスファルト・左
Stairs A (Asphalt, Center)|階段Aアスファルト・中央
Stairs A (Asphalt, Right)|階段Aアスファルト・右
Stairs A (Asphalt)|階段Aアスファルト
Meadow|草地
Desert|砂地
Wood Floor A|木の床A
Wood Floor A (Ruins)|木の床A廃墟
Asphalt Floor (Dirty)|アスファルト床(汚れ)
Asphalt Floor (Dirty, Ruins)|アスファルト床(汚れ・廃墟)
Metal Floor A (Factory, Rust)|金属床A工場・サビ
Interior Floor B (Artery)|内装床B動脈
Bumpy Tile A|点字ブロックA
Bumpy Tile B|点字ブロックB
Bumpy Tile C|点字ブロックC
Bumpy Tile C (Ruins)|点字ブロックC廃墟
Stairs B (Metal, Left)|階段B金属・左
Stairs B (Metal, Center)|階段B金属・中央
Stairs B (Metal, Right)|階段B金属・右
Stairs B (Metal)|階段B金属
Interior Floor C (Green Resin)|内装床C緑樹脂
Interior Floor D (Tile)|内装床Dタイル
Interior Floor D (Tile, Ruins)|内装床Dタイル・廃墟
Interior Floor E (Decoration)|内装床E装飾
Bush|茂み
Waste Land|荒地
Wood Floor B|木の床B
Wood Floor B (Ruins)|木の床B廃墟
Stairs C (Meadow, Left)|階段C草地・左
Stairs C (Meadow, Center)|階段C草地・中央
Stairs C (Meadow, Right)|階段C草地・右
Stairs C (Meadow)|階段C草地
Stairs D (Wood, Left)|階段D木製・左
Stairs D (Wood, Center)|階段D木製・中央
Stairs D (Wood, Right)|階段D木製・右
Stairs D (Wood)|階段D木製
Cobblestones A|石畳A
Cobblestones B|石畳B
Cobblestones C|石畳C
Cobblestones D|石畳D
Interior Floor F (Checkered)|内装床F市松
Interior Floor F (Checkered, Ruins)|内装床F市松・廃墟
Metal Floor B|金属床B
Metal Floor B (Rust, Ruins)|金属床Bサビ・廃墟
Stairs E (Carpet, Left)|階段Eじゅうたん・左
Stairs E (Carpet, Center)|階段Eじゅうたん・中央
Stairs E (Carpet, Right)|階段Eじゅうたん・右
Stairs E (Carpet)|階段Eじゅうたん
Stairs F (Desert, Left)|階段F砂地・左
Stairs F (Desert, Center)|階段F砂地・中央
Stairs F (Desert, Right)|階段F砂地・右
Stairs F (Desert)|階段F砂地
Mark Floor A|マーク床A
Mark Floor B|マーク床B
Mark Floor C|マーク床C
Mark Floor D|マーク床D
Mark Floor E|マーク床E
Mark Floor E (Ruins)|マーク床E廃墟
Mark Floor F (Off)|マーク床F
Mark Floor F|マーク床F
Neon Floor|ネオン床
Interior Floor G (Tile Carpet)|内装床Gタイルカーペット
Interior Floor G (Tile Carpet, Ruins)|内装床Gタイルカーペット・廃墟
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Marble Floor|大理石床
Interior Floor H (Linoleum)|内装床Hリウム
Interior Floor H (Linoleum, Ruins)|内装床Hリウム・廃墟
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Stairs G (Tile Carpet, Left)|階段Gタイルカーペット・左
Stairs G (Tile Carpet, Center)|階段Gタイルカーペット・中央
Stairs G (Tile Carpet, Right)|階段Gタイルカーペット・右
Stairs G (Tile Carpet)|階段Gタイルカーペット
Cobblestones A (Ruins)|石畳A廃墟
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Ledge (Dirt)|段差(土)
Stairs H (Linoleum, Left)|階段Hリウム・左
Stairs H (Linoleum, Center)|階段Hリウム・中央
Stairs H (Linoleum, Right)|階段Hリウム・右
Stairs H (Linoleum)|階段Hリウム
Cobblestones C (Ruins)|石畳C廃墟
Cliff (Dirt)|崖(土)
Cliff (Dirt)|崖(土)
Cliff (Dirt)|崖(土)
Marble Floor (Ruins)|大理石床(廃墟)
Wood Floor C|木の床C
Wood Floor C (Ruins)|木の床C廃墟
Metal Floor C (Machine)|金属床C機械
Metal Floor C (Machine, Ruins)|金属床C機械・廃墟
Cliff (Dirt)|崖(土)
Cliff (Dirt)|崖(土)
Cliff (Dirt)|崖(土)

View file

@ -0,0 +1,256 @@
Transparent|透明
Neon Shop Sign (Weapon)|ネオン看板(武器屋)
Neon Shop Sign (Armor)|ネオン看板(防具屋)
Neon Shop Sign (Item)|ネオン看板(アイテム屋)
Neon Shop Sign (Pharmacy)|ネオン看板(薬屋)
Neon Shop Sign (Cafe)|ネオン看板(酒場)
Neon Shop Sign (Inn)|ネオン看板(宿屋)
Neon Shop Sign (Market)|ネオン看板(マーケット)
Metal Shop Sign (Weapon)|金属看板(武器屋)
Metal Shop Sign (Armor)|金属看板(防具屋)
Metal Shop Sign (Item)|金属看板(アイテム屋)
Metal Shop Sign (Pharmacy)|金属看板(薬屋)
Metal Shop Sign (Cafe)|金属看板(酒場)
Metal Shop Sign (Inn)|金属看板(宿屋)
Metal Shop Sign (Firearm)|金属看板(銃器屋)
Metal Shop Sign (Blank)|金属看板(無地)
Asphalt Bridge (V)|アスファルトの橋(縦)
Asphalt Bridge (H)|アスファルトの橋(横)
Stone Bridge (V)|石の橋(縦)
Stone Bridge (H)|石の橋(横)
Metal Bridge A (V)|金属の橋A
Metal Bridge A (H)|金属の橋A
Metal Bridge B (V)|金属の橋B
Metal Bridge B (H)|金属の橋B
Bridge Spar A (Asphalt, Center A)|橋げたAアスファルト・中央A
Bridge Spar A (Asphalt, Left)|橋げたAアスファルト・左
Bridge Spar A (Asphalt, Center B)|橋げたAアスファルト・中央B
Bridge Spar A (Asphalt, Right)|橋げたAアスファルト・右
Bridge Spar B (Metal, Center A)|橋げたB金属・中央A
Bridge Spar B (Metal, Left)|橋げたB金属・左
Bridge Spar B (Metal, Center B)|橋げたB金属・中央B
Bridge Spar B (Metal, Right)|橋げたB金属・右
White Line|白線
White Line|白線
White Line|白線
White Line|白線
White Line|白線
Yellow & Black Line|黄黒線
Yellow & Black Line|黄黒線
Yellow & Black Line|黄黒線
White Line|白線
Traffic Lights (Car)|信号機(車)
Traffic Lights (Pedestrian)|信号機(歩行者)
Entrance A|入口A
White Line (Crosswalk)|白線(横断歩道)
Yellow & Black Line|黄黒線
Traffic Cone|通行止めコーン
Yellow & Black Line|黄黒線
White Line|白線
Traffic Lights (Car)|信号機(車)
Traffic Lights (Walker)|信号機(歩行者)
Entrance B|入口B
White Line (Crosswalk)|白線(横断歩道)
Yellow & Black Line|黄黒線
Yellow & Black Line|黄黒線
Yellow & Black Line|黄黒線
Window A|窓A
Window B|窓B
Window C|窓C
Window D|窓D
Window E|窓E
Window F|窓F
Window G|窓G
Window H|窓H
Midsize Window A|中型窓A
Midsize Window B|中型窓B
Midsize Window C|中型窓C
Midsize Window D|中型窓D
Midsize Window E|中型窓E
Midsize Window F|中型窓F
Midsize Window G|中型窓G
Midsize Window H|中型窓H
Midsize Window A|中型窓A
Midsize Window B|中型窓B
Midsize Window C|中型窓C
Midsize Window D|中型窓D
Midsize Window E|中型窓E
Midsize Window F|中型窓F
Midsize Window G|中型窓G
Midsize Window H|中型窓H
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (H)|ネオン看板(横)
Neon Shop Sign (H)|ネオン看板(横)
Street Light A|街灯A
Street Light B|街灯B
Stained Glass Window|ステンドグラス
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (H)|ネオン看板(横)
Neon Shop Sign (H)|ネオン看板(横)
Street Light A|街灯A
Street Light B|街灯B
Stained Glass Window|ステンドグラス
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (V)|ネオン看板(縦)
Neon Shop Sign (H)|ネオン看板(横)
Neon Shop Sign (H)|ネオン看板(横)
Stacked Crates|積まれた木箱
Shipping Container|コンテナ
Stacked Cardboard|積まれたダンボール
Chimney A|煙突A
Chimney B|煙突B
Chimney C|煙突C
Exhaust Port Wall|壁面用排気口
Roof Window|屋根用出窓
Stacked Crates|積まれた木箱
Shipping Container|コンテナ
Stacked Cardboard Boxes|積まれたダンボール
Wall Poster|張り紙
Signboard A|看板A
Signboard C|看板C
Digital Signage A|電子看板A
Digital Signage C|電子看板C
Neon Shop Sign (CASINO)|ネオン看板(カジノ)
Neon Shop Sign (CASINO)|ネオン看板(カジノ)
Small Crane|小型クレーン
Poster|ポスター
Signboard B|看板B
Digital Signage B|電子看板B
Digital Signage B|電子看板B
Digital Signage C|電子看板C
Iron Materials|鉄資材
Helmet & Tool|ヘルメットと工具
Small Crane|小型クレーン
Crate|木箱
Shipping Container|コンテナ
Cardboard Box|ダンボール
Barrel|樽
Oil Drum|ドラム缶
Garbage Can|ゴミ箱
Sorted Waste Bins|分別ゴミ箱
Sorted Waste Bins|分別ゴミ箱
Plant A|植物A
Plant B|植物B
Plant C|植物C
Vending Machine|自動販売機
ATM|ATM
Tree|木
Roadside Tree|街路樹
Utility Pole|電柱
Plant A|植物A
Plant B|植物B
Plant C|植物C
Vending Machine|自動販売機
ATM|ATM
Tree|木
Avenue Tree|街路樹
Utility Pole|電柱
Public Phone|公衆電話
Machine Device|機械端末
Planter (Flower)|プランター(花)
Planter (Plant)|プランター(植物)
Potted Plant|植木鉢
Tree (Loop)|木(ループ)
Tombstone (Cross)|墓石(十字架)
Tombstone (Plaque)|墓石(プレート)
Neon Tube|ネオン管
Neon Tube|ネオン管
Machine A|機械A
Machine B|機械B
Machine C|機械C
Barricade (No Entry)|バリケード(通行禁止)
Bar (No Entry)|バー(通行禁止)
Bar (No Entry)|バー(通行禁止)
Neon Tube|ネオン管
Neon Tube|ネオン管
Outdoor Air Intake Unit|室外機
Waste|廃棄物
Scrap Metal|スクラップ
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Neon Tube|ネオン管
Neon Tube|ネオン管
Air Vent A|通風口A
Air Vent B|通風口B
Shutter|シャッター
Fissures A|亀裂A
Fissures B|亀裂B
Fissures C|亀裂C
Drain|排水口
Guardrail|ガードレール
Timetable|時刻表
Piled Up Tires|積まれたタイヤ
Small Fuel Tank|小型燃料タンク
Car (White)|車(白)
Car (White)|車(白)
Manhole|マンホール
Bus|バス
Bus|バス
Truck|トラック
Truck|トラック
Wrecked Car|壊れた車
Car (Black)|車(黒)
Car (Black)|車(黒)
Vent|通気口
Bus|バス
Bus|バス
Truck|トラック
Truck|トラック
Wrecked Car|壊れた車
Car (Red)|車(赤)
Car (Red)|車(赤)
Oil Drum (Leak)|ドラム缶(液漏れ)
Food Stalls|露店(食べ物)
Food Stalls|露店(食べ物)
Food Stalls|露店(食べ物)
Stall Goods A|露店商品A
Stairs A (Up)|階段A上り
Stairs B (Up)|階段B上り
Stairs C (Up)|階段C上り
Stairs D (Up)|階段D上り
Food Stalls|露店(食べ物)
Food Stalls|露店(食べ物)
Food Stalls|露店(食べ物)
Stall Goods B|露店商品B
Stairs A (Down)|階段A下り
Stairs B (Down)|階段B下り
Stairs C (Down)|階段C下り
Stairs D (Down)|階段D下り
Food Stalls|露店(食べ物)
Food Stalls|露店(食べ物)
Food Stalls|露店(食べ物)
Stall Goods C|露店商品C
Metal Ladder|鉄ばしご
Metal Stairs|金属階段
Rope|ロープ
Net|ネット
Junk Stalls|露店(ジャンク)
Junk Stalls|露店(ジャンク)
Junk Stalls|露店(ジャンク)
Stall Goods D|露店商品D
Metal Ladder|鉄ばしご
Metal Stairs|金属階段
Rope|ロープ
Net|ネット
Junk Stalls|露店(ジャンク)
Junk Stalls|露店(ジャンク)
Junk Stalls|露店(ジャンク)
Stall Goods E|露店商品E
Metal Ladder|鉄ばしご
Metal Stairs|金属階段
Rope|ロープ
Net|ネット
Junk Stalls|露店(ジャンク)
Junk Stalls|露店(ジャンク)
Junk Stalls|露店(ジャンク)
Stall Goods F|露店商品F
Hole A (Metal Ladder)|穴A鉄ばしご
Hole B (Metal Stairs)|穴B金属階段
Hole C (Rope)|穴Cロープ
Hole|穴

View file

@ -0,0 +1,256 @@
Fountain A|噴水A
Fountain A|噴水A
Fountain B|噴水B
Fountain B|噴水B
Slide|滑り台
Slide|滑り台
Exercise Bar|鉄棒
Drinking Fountain|水飲み場
Fountain A|噴水A
Fountain A|噴水A
Fountain B|噴水B
Fountain B|噴水B
Slide|滑り台
Slide|滑り台
Water Well Pump|ポンプ井戸
Garbage Dumpster|ごみ収集箱
Fountain C|噴水C
Fountain C|噴水C
Fountain C|噴水C
Bench A|ベンチA
Bench A|ベンチA
Swing|ブランコ
Shop Canopy|店用天蓋
Barbed Wire|有刺鉄線
Fountain C|噴水C
Fountain C|噴水C
Fountain C|噴水C
Bench B|ベンチB
Bench B|ベンチB
Swing|ブランコ
Shop Canopy|店用天蓋
Barbed Wire|有刺鉄線
Grass A|草A
Grass B|草B
Hole|穴
Small Stones|小石
Flower Bed|花壇
Flower Bed|花壇
Flower Bed|花壇
Barbed Wire|有刺鉄線
Flower|花
Cage|檻
Cage|檻
Graffiti|落書き
Graffiti|落書き
Barbed Wire|有刺鉄線
Barbed Wire|有刺鉄線
Barbed Wire|有刺鉄線
Demon Statue|悪魔像
Goddess Statue|女神像
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Gutter|側溝
Gutter|側溝
Gutter|側溝
Demon Statue|悪魔像
Goddess Statue|女神像
Metal Fence|金属フェンス
Warning Plate (Keep Out)|警告プレートKEEP OUT
Metal Fence|金属フェンス
Gutter|側溝
Postal Box|ポスト
Gutter|側溝
Soldier Statue|兵士像
Warning Plate (Biohazard Mark)|警告プレート(バイオハザードマーク)
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Metal Fence|金属フェンス
Gutter|側溝
Gutter|側溝
Gutter|側溝
Soldier Statue|兵士像
Pillar A (Asphalt)|柱Aアスファルト
Pillar B (Metal)|柱B金属
Pillar C (Machine)|柱C機械
Pillar D (Decoration)|柱D装飾
Pillar E (Metal)|柱E金属
Pillar F (Brick)|柱Fレンガ
Food Waste|生ゴミ
Warning Plate (Radioactivity Mark)|警告プレート(放射能マーク)
Pillar A (Asphalt)|柱Aアスファルト
Pillar B (Metal)|柱B金属
Pillar C (Machine)|柱C機械
Pillar D (Decoration)|柱D装飾
Pillar E (Metal)|柱E金属
Pillar F (Brick)|柱Fレンガ
Mysterious Liquid|謎の液体
Warning Plate (Exclamation Mark)|警告プレート(!マーク)
Broken Pillar A (Asphalt)|折れた柱Aアスファルト
Broken Pillar B (Metal)|折れた柱B金属
Broken Pillar C (Machine)|折れた柱C機械
Broken Pillar D (Decoration)|折れた柱D装飾
Broken Pillar E (Metal)|折れた柱E金属
Broken Pillar F (Brick)|折れた柱Fレンガ
Fire Hydrant|消火栓
Monument A|モニュメントA
Monument B|モニュメントB
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Monument A|モニュメントA
Monument B|モニュメントB
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Stele|巨大な石版
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Huge Iron Monument|巨大プレート
Monument C|モニュメントC
Monument D|モニュメントD
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Large Machine|大型機械
Large Machine|大型機械
Large Machine|大型機械
Monument C|モニュメントC
Control Panel|コントロールパネル
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Sphere Machinery|球体機械
Large Machine|大型機械
Large Machine|大型機械
Large Machine|大型機械
Wall A|壁A
Wall A|壁A
Wall A|壁A
Decorative Pillar A|装飾柱A
Arch A|門A
Arch A|門A
Arch A|門A
Decorative Pillar B|装飾柱B
Wall A|壁A
Wall A|壁A
Wall A|壁A
Decorative Pillar A|装飾柱A
Arch A|門A
Arch A|門A
Arch A|門A
Decorative Pillar B|装飾柱B
Wall A|壁A
Wall A|壁A
Wall A|壁A
Decorative Pillar A|装飾柱A
Arch A|門A
Arch A|門A
Arch A|門A
Decorative Pillar B|装飾柱B
Wall B (Topside)|壁B上面
Wall B (Topside)|壁B上面
Wall B (Topside)|壁B上面
Spire|尖塔
Clock Tower|時計塔
Clock Tower|時計塔
Clock Tower|時計塔
Wall A Ceiling|壁A天井
Wall B (Topside)|壁B上面
Wall B (Topside)|壁B上面
Wall B (Topside)|壁B上面
Spire|尖塔
Clock Tower|時計塔
Clock Tower|時計塔
Clock Tower|時計塔
Decorative Pillar A (Front)|装飾柱A(手前)
Wall B (Topside)|壁B上面
Wall B (Topside)|壁B上面
Wall B (Topside)|壁B上面
Spire|尖塔
Clock Tower|時計塔
Clock Tower|時計塔
Clock Tower|時計塔
Decorative Pillar B (Front)|装飾柱B(手前)
Wall B|壁B
Wall B|壁B
Wall B|壁B
Spire|尖塔
Arch B|門B
Arch B|門B
Arch B|門B
Iron Fence B|鉄柵B
Wall B|壁B
Wall B|壁B
Wall B|壁B
Spire|尖塔
Arch B|門B
Arch B|門B
Arch B|門B
Gate|門扉
Wall B|壁B
Wall B|壁B
Wall B|壁B
Spire|尖塔
Arch B|門B
Arch B|門B
Arch B|門B
Gate|門扉
Rooftop Railing|屋上用手すり
Rooftop Railing|屋上用手すり
Rooftop Railing|屋上用手すり
Iron Fence A|鉄柵A
Tank|戦車
Tank|戦車
Helicopter|ヘリコプター
Helicopter|ヘリコプター
Rooftop Railing|屋上用手すり
Round Clock|丸時計
Rooftop Railing|屋上用手すり
Iron Fence A|鉄柵A
Tank|戦車
Tank|戦車
Helicopter|ヘリコプター
Helicopter|ヘリコプター
Rooftop Railing|屋上用手すり
Rooftop Railing|屋上用手すり
Rooftop Railing|屋上用手すり
Iron Fence A|鉄柵A
Rooftop Billboard B|屋上看板B
Rooftop Billboard B|屋上看板B
Food Cart|屋台
Food Cart|屋台
Convenience Store|コンビニエンスストア
Convenience Store|コンビニエンスストア
Convenience Store|コンビニエンスストア
Steel Tower|鉄塔
Rooftop Billboard A|屋上看板A
Roof|屋根
Roof|屋根
Roof|屋根
Convenience Store|コンビニエンスストア
Convenience Store|コンビニエンスストア
Convenience Store|コンビニエンスストア
Steel Tower|鉄塔
Water Storage Tank|貯水タンク
Roof|屋根
Roof|屋根
Roof|屋根
Bus Waiting Area|待合所
Bus Waiting Area|待合所
Station Kiosk|駅の売店
Steel Tower|鉄塔
Water Storage Tank|貯水タンク
Roof|屋根
Roof|屋根
Roof|屋根
Bus Waiting Area|待合所
Bus Waiting Area|待合所
Station Kiosk|駅の売店
Roof Detail|屋根飾り
Roof|屋根
Roof|屋根
Roof|屋根
Roof|屋根

View file

@ -0,0 +1,16 @@
Sea|海
Deep Sea|深い海
Rock Shoal|岩礁
Icebergs|氷山
Poison Swamp|毒の沼
Dead Trees|枯れ木
Lava|溶岩
Lava Bubbles|溶岩の泡
Pond|池
Boulder|岩
Frozen Sea|凍った海
Whirlpool|渦
Land's End|大地の境界
Endless Waterfall|下界に落ちる滝
Cloud (Land's End)|雲(大地の境界)
Cloud|雲

View file

@ -0,0 +1,32 @@
Grassland A|草原A
Grassland A (Dark)|草原A
Grassland B|草原B
Grassland B (Dark)|草原B
Forest|森
Forest (Conifer)|森(針葉樹)
Hill (Grass)|丘(草)
Mountain (Dirt)|山(土)
Wasteland A|荒れ地A
Wasteland B|荒れ地B
Dirt Field A|土肌A
Dirt Field B|土肌B
Forest (Dead Trees)|森(枯れ木)
Road (Dirt)|道(土)
Hill (Dirt)|丘(土)
Mountain (Rock)|山(岩)
Desert A|砂漠A
Desert B|砂漠B
Rocky Land A|岩地A
Rocky Land B (Lava)|岩地B溶岩
Forest (Palm Trees)|森(ヤシの木)
Road (Paved)|道(舗装)
Hill (Sandstone)|丘(砂岩)
Mountain (Sandstone)|山(砂岩)
Snowfield|雪原
Hill (Snow)|丘(雪)
Clouds|雲
Large Clouds|大きな雲
Forest (Snow)|森(雪)
Pit|穴
Hill (Rock)|丘(岩)
Mountain (Snow)|山(雪)

View file

@ -0,0 +1,256 @@
Transparent|透明
Sign|立て札
Pier (H)|桟橋(横)
Pier (V)|桟橋(縦)
Pond|池
Oasis|オアシス
Pond (Ice)|池(氷)
Beanstalk|豆の木
Tent|テント
Igloo|氷の家
Pyramid|ピラミッド
Giant Tree|大樹
Giant Tree (Snow)|大樹(雪)
Dirt|土砂
Avalanche|雪崩
Beanstalk|豆の木
Cave A|洞窟A
Cave B|洞窟B
Cave (Collapsed)|洞窟(土砂崩れ)
Mine|坑道
Tunnel|トンネル
Tunnel (Blocked)|トンネル(通行止め)
Shrine|ほこら
Shrine (Snow)|ほこら(雪)
Crater|クレーター
Trail|山道
Rock Mountain|岩山
Rock Mountain|岩山
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Snow)|岩山(雪)
Rock Mountain (Snow)|岩山(雪)
Volcano Crater (Lava)|火口(溶岩)
Volcano Crater (Lava)|火口(溶岩)
Rock Mountain|岩山
Rock Mountain|岩山
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Snow)|岩山(雪)
Rock Mountain (Snow)|岩山(雪)
Volcano Crater|火口
Volcano Crater|火口
Rock Mountain|岩山
Rock Mountain|岩山
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Snow)|岩山(雪)
Rock Mountain (Snow)|岩山(雪)
Volcano|火山
Volcano|火山
Rock Mountain|岩山
Rock Mountain|岩山
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Sandstone)|岩山(砂岩)
Rock Mountain (Snow)|岩山(雪)
Rock Mountain (Snow)|岩山(雪)
Town A|町A
Town A|町A
Town B|町B
Town B|町B
Village A|村A
Village A|村A
Village B|村B
House (Town)|家(町)
Town C|町C
Town D|町D
Village C|村C
Village D|村D
Town E (Desert)|町E砂漠
Town E (Desert)|町E砂漠
Town F (Desert)|町F砂漠
House (Village)|家(村)
Town A (Snow)|町A
Town A (Snow)|町A
Town B (Snow)|町B
Town B (Snow)|町B
Town G (Desert)|町G砂漠
Town G (Desert)|町G砂漠
Large Tent|大きなテント
House (Desert)|家(砂漠)
Town C (Snow)|町C
Town D (Snow)|町D
Village C (Snow)|村C
Village D (Snow)|村D
Village A (Snow)|村A
Village A (Snow)|村A
Village B (Snow)|村B
House (Snow)|家(雪)
Fortress City |城塞都市
Fortress City |城塞都市
Fortress City (Snow)|城塞都市(雪)
Fortress City (Snow)|城塞都市(雪)
Large Mansion|大きな屋敷
Large Mansion|大きな屋敷
School of Magic|魔法学校
School of Magic|魔法学校
Fortress City |城塞都市
Fortress City |城塞都市
Fortress City (Snow)|城塞都市(雪)
Fortress City (Snow)|城塞都市(雪)
Large Mansion|大きな屋敷
Large Mansion|大きな屋敷
School of Magic|魔法学校
School of Magic|魔法学校
Bridge (H)|橋(横)
Bridge (V)|橋(縦)
Collapsed Bridge (H)|崩れた橋(横)
Collapsed Bridge (V)|崩れた橋(縦)
Snow Bridge (H)|雪の橋(横)
Snow Bridge (V)|雪の橋(縦)
Collapsed Snow Bridge (H)|崩れた雪の橋(横)
Collapsed Snow Bridge (V)|崩れた雪の橋(縦)
Tower A|塔A
Tower A (Ruins)|塔A廃墟
Tower B|塔B
Tower C|塔C
Tower A (Snow)|塔A
Tower D|塔D
Temple A|神殿A
Temple A (Snow)|神殿A
Tower A|塔A
Tower A (Ruins)|塔A廃墟
Tower B|塔B
Tower C|塔C
Tower A (Snow)|塔A
Tower D (Ruins)|塔D廃墟
Temple B|神殿B
Temple C|神殿C
Castle A|城A
Castle A|城A
Castle B|城B
Castle B|城B
Fort A|砦A
Fort A|砦A
Fort B|砦B
Fort B|砦B
Castle A|城A
Castle A|城A
Castle B|城B
Castle B|城B
Fort A|砦A
Fort A|砦A
Fort B|砦B
Fort B|砦B
Castle C|城C
Castle C|城C
Castle D|城D
Castle D|城D
Castle (Ruins)|城(廃墟)
Castle (Ruins)|城(廃墟)
Fort (Ruins)|砦(廃墟)
Fort (Ruins)|砦(廃墟)
Castle C|城C
Castle C|城C
Castle D|城D
Castle D|城D
Castle (Ruins)|城(廃墟)
Castle (Ruins)|城(廃墟)
Fort (Ruins)|砦(廃墟)
Fort (Ruins)|砦(廃墟)
Castle A, B (Snow)|城A・B
Castle A, B (Snow)|城A・B
Castle C, D (Snow)|城C・D
Castle C, D (Snow)|城C・D
Fort (Snow)|砦(雪)
Fort (Snow)|砦(雪)
Castle (Ruins, Snow)|城(廃墟・雪)
Castle (Ruins, Snow)|城(廃墟・雪)
Castle A, B (Snow)|城A・B
Castle A, B (Snow)|城A・B
Castle C, D (Snow)|城C・D
Castle C, D (Snow)|城C・D
Fort (Snow)|砦(雪)
Fort (Snow)|砦(雪)
Castle (Ruins, Snow)|城(廃墟・雪)
Castle (Ruins, Snow)|城(廃墟・雪)
Castle (Walled)|城(城壁)
Castle (Walled)|城(城壁)
Castle (Walled)|城(城壁)
Demon Castle|魔王城
Demon Castle|魔王城
Cursed Castle|呪われた城
Cursed Castle|呪われた城
Town C (Ruins)|町C廃墟
Castle (Walled)|城(城壁)
Castle (Walled)|城(城壁)
Castle (Walled)|城(城壁)
Demon Castle|魔王城
Demon Castle|魔王城
Cursed Castle|呪われた城
Cursed Castle|呪われた城
Town F (Ruins)|町F廃墟
Castle (Walled)|城(城壁)
Castle (Walled)|城(城壁)
Castle (Walled)|城(城壁)
Town A (Ruins)|町A廃墟
Town A (Ruins)|町A廃墟
Village A (Ruins)|村A廃墟
Village A (Ruins)|村A廃墟
House (Ruins)|家(廃墟)
Castle Wall (Ruins A)|城壁廃墟A
Castle Wall (Ruins B)|城壁廃墟B
Castle Wall (Ruins C)|城壁廃墟C
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall (Gate)|城壁(城門)
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Barricades|バリケード
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Castle Wall|城壁
Lookout Post|やぐら
Floating Continent (Giant Tree)|浮遊大陸(大樹)
Floating Continent (Giant Tree)|浮遊大陸(大樹)
Floating Continent|浮遊大陸
Floating Continent|浮遊大陸
Floating Continent (Cloud)|浮遊大陸(雲)
Floating Continent (Cloud)|浮遊大陸(雲)
Cloud Land|雲の大地
Cloud Land|雲の大地
Floating Continent (Castle)|浮遊大陸(城)
Floating Continent (Castle)|浮遊大陸(城)
Floating Continent|浮遊大陸
Floating Continent|浮遊大陸
Floating Continent (Cloud)|浮遊大陸(雲)
Floating Continent (Cloud)|浮遊大陸(雲)
Cloud Land|雲の大地
Cloud Land|雲の大地
Floating Continent (Temple)|浮遊大陸(神殿)
Floating Continent (Temple)|浮遊大陸(神殿)
Floating Continent (Shadow)|浮遊大陸(影)
Floating Continent (Shadow)|浮遊大陸(影)
Cloud Land (Temple)|雲の大地(神殿)
Cloud Land (Temple)|雲の大地(神殿)
Cloud Land (Castle)|雲の大地(城)
Cloud Land (Castle)|雲の大地(城)

View file

@ -0,0 +1,256 @@
Transparent|透明
Signboard A|看板A
Signboard B|看板B
Signboard C|看板C
Iron Bridge (H)|鉄橋(横)
Iron Bridge (V)|鉄橋(縦)
Reservoir A|貯水池A
Reservoir B|貯水池B
Hut|小屋
Shanty|掘っ立て小屋
Signboard D|看板D
Stele A|石碑A
Stele B|石碑B
Windmill|風車
Parabolic Antenna|パラボラアンテナ
Heliport|ヘリポート
Entrance A (Open)|入口A
Entrance A (Closed)|入口A
Entrance B (Open)|入口B
Entrance B (Closed)|入口B
Entrance C (Open)|入口C
Entrance C (Closed)|入口C
Entrance D (Closed)|入口D
Entrance E (Closed)|入口E
Road|道路
Road|道路
Road Closed|通行止め
Rocky Mountain|岩山
Rocky Mountain|岩山
Mountain|山
Mountain|山
Coniferous Tree A|針葉樹A
Road|道路
Road|道路
Road|道路
Rocky Mountain|岩山
Rocky Mountain|岩山
Mountain|山
Mountain|山
Coniferous Tree B|針葉樹B
Road|道路
Road|道路
Road|道路
Rocky Mountain|岩山
Rocky Mountain|岩山
Mountain|山
Mountain|山
Broadleaf Tree|広葉樹
Road|道路
Road|道路
Road|道路
Rocky Mountain|岩山
Rocky Mountain|岩山
Mountain|山
Mountain|山
Broken Buildings|壊れたビル街
Town A|町A
Town B|町B
Slum A|スラム街A
Slum B|スラム街B
Mansion A|邸宅A
Mansion A|邸宅A
Gate A|ゲートA
Gate B|ゲートB
Shopping Area A|商店街A
Shopping Area B|商店街B
Buildings A|ビル街A
Buildings B|ビル街B
Mansion B|邸宅B
Mansion B|邸宅B
Gate C|ゲートC
Gate D|ゲートD
Residential Street|住宅街
Residential Street|住宅街
Slum|スラム街
Slum|スラム街
School|学校
School|学校
Hospital|病院
Hospital|病院
Residential Street|住宅街
Residential Street|住宅街
Slum|スラム街
Slum|スラム街
School|学校
School|学校
Hospital|病院
Hospital|病院
City A|街A
City A|街A
City B|街B
City B|街B
Residence A|屋敷A
Residence A|屋敷A
Residence B|屋敷B
Residence B|屋敷B
City A|街A
City A|街A
City B|街B
City B|街B
Residence A|屋敷A
Residence A|屋敷A
Residence B|屋敷B
Residence B|屋敷B
Bridge A (V)|橋A
Bridge A (H)|橋A
Broken Bridge A (V)|壊れた橋A
Broken Bridge A (H)|壊れた橋A
Bridge B (V)|橋B
Bridge B (H)|橋B
Broken Bridge B (V)|壊れた橋(縦)
Broken Bridge B (H)|壊れた橋(横)
Building A|ビルA
Building B|ビルB
Building C|ビルC
Building D|ビルD
Apartment|マンション
Apartment Complex|マンション群
Collapsed Building A|崩壊したビルA
Collapsed Building B|崩壊したビルB
Building A|ビルA
Building B|ビルB
Building C|ビルC
Building D|ビルD
Apartment|マンション
Apartment Complex|マンション群
Collapsed Building A|崩壊したビルA
Collapsed Building B|崩壊したビルB
Large Town A|大きな町A
Large Town A|大きな町A
Entertainment District A|歓楽街A
Entertainment District A|歓楽街A
Police Station|警察署
Police Station|警察署
Crater A|クレーターA
Crater A|クレーターA
Large Town A|大きな町A
Large Town A|大きな町A
Entertainment District A|歓楽街A
Entertainment District A|歓楽街A
Police Station|警察署
Police Station|警察署
Crater A|クレーターA
Crater A|クレーターA
Large Town B|大きな町B
Large Town B|大きな町B
Entertainment District B|歓楽街B
Entertainment District B|歓楽街B
Museum|博物館
Museum|博物館
Crater B|クレーターB
Crater B|クレーターB
Large Town B|大きな町B
Large Town B|大きな町B
Entertainment District B|歓楽街B
Entertainment District B|歓楽街B
Museum|博物館
Museum|博物館
Crater B|クレーターB
Crater B|クレーターB
Warehouse A|倉庫A
Warehouse A|倉庫A
Factory|工場
Factory|工場
Warehouse B|倉庫B
Gantry Crane|ガントリークレーン
Park|公園
Crater C|クレーターC
Warehouse A|倉庫A
Warehouse A|倉庫A
Factory|工場
Factory|工場
Warehouse B|倉庫B
Gantry Crane|ガントリークレーン
Statue A|像A
Statue B|像B
Fuel Tank|燃料タンク
Fuel Tank|燃料タンク
Construction Site|工事現場
Construction Site|工事現場
Watchtower|監視塔
Steel Tower|鉄塔
Tower A|タワーA
Tower B|タワーB
Fuel Tank|燃料タンク
Fuel Tank|燃料タンク
Construction Site|工事現場
Construction Site|工事現場
Watchtower|監視塔
Steel Tower|鉄塔
Tower A|タワーA
Tower B|タワーB
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall (Gate)|外壁(門)
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall (Gate)|外壁(門)
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Outer Wall|外壁
Theme Park|テーマパーク
Theme Park|テーマパーク
Port|港湾
Port|港湾
Military Base|軍事基地
Military Base|軍事基地
Dome|ドーム
Dome|ドーム
Theme Park|テーマパーク
Theme Park|テーマパーク
Port|港湾
Port|港湾
Military Base|軍事基地
Military Base|軍事基地
Dome|ドーム
Dome|ドーム
Lighthouse|灯台
Broken Lighthouse|壊れた灯台
Temple|寺院
Church|教会
Cemetery A|墓地A
Cemetery B|墓地B
Prison|刑務所
Prison|刑務所

15
www/js/libs/fpsmeter.js Normal file
View file

@ -0,0 +1,15 @@
/*! FPSMeter 0.3.1 - 9th May 2013 | https://github.com/Darsain/fpsmeter */
(function(m,j){function s(a,e){for(var g in e)try{a.style[g]=e[g]}catch(j){}return a}function H(a){return null==a?String(a):"object"===typeof a||"function"===typeof a?Object.prototype.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase()||"object":typeof a}function R(a,e){if("array"!==H(e))return-1;if(e.indexOf)return e.indexOf(a);for(var g=0,j=e.length;g<j;g++)if(e[g]===a)return g;return-1}function I(){var a=arguments,e;for(e in a[1])if(a[1].hasOwnProperty(e))switch(H(a[1][e])){case "object":a[0][e]=
I({},a[0][e],a[1][e]);break;case "array":a[0][e]=a[1][e].slice(0);break;default:a[0][e]=a[1][e]}return 2<a.length?I.apply(null,[a[0]].concat(Array.prototype.slice.call(a,2))):a[0]}function N(a){a=Math.round(255*a).toString(16);return 1===a.length?"0"+a:a}function S(a,e,g,j){if(a.addEventListener)a[j?"removeEventListener":"addEventListener"](e,g,!1);else if(a.attachEvent)a[j?"detachEvent":"attachEvent"]("on"+e,g)}function D(a,e){function g(a,b,d,c){return y[0|a][Math.round(Math.min((b-d)/(c-d)*J,J))]}
function r(){f.legend.fps!==q&&(f.legend.fps=q,f.legend[T]=q?"FPS":"ms");K=q?b.fps:b.duration;f.count[T]=999<K?"999+":K.toFixed(99<K?0:d.decimals)}function m(){z=A();L<z-d.threshold&&(b.fps-=b.fps/Math.max(1,60*d.smoothing/d.interval),b.duration=1E3/b.fps);for(c=d.history;c--;)E[c]=0===c?b.fps:E[c-1],F[c]=0===c?b.duration:F[c-1];r();if(d.heat){if(w.length)for(c=w.length;c--;)w[c].el.style[h[w[c].name].heatOn]=q?g(h[w[c].name].heatmap,b.fps,0,d.maxFps):g(h[w[c].name].heatmap,b.duration,d.threshold,
0);if(f.graph&&h.column.heatOn)for(c=u.length;c--;)u[c].style[h.column.heatOn]=q?g(h.column.heatmap,E[c],0,d.maxFps):g(h.column.heatmap,F[c],d.threshold,0)}if(f.graph)for(p=0;p<d.history;p++)u[p].style.height=(q?E[p]?Math.round(O/d.maxFps*Math.min(E[p],d.maxFps)):0:F[p]?Math.round(O/d.threshold*Math.min(F[p],d.threshold)):0)+"px"}function k(){20>d.interval?(x=M(k),m()):(x=setTimeout(k,d.interval),P=M(m))}function G(a){a=a||window.event;a.preventDefault?(a.preventDefault(),a.stopPropagation()):(a.returnValue=
!1,a.cancelBubble=!0);b.toggle()}function U(){d.toggleOn&&S(f.container,d.toggleOn,G,1);a.removeChild(f.container)}function V(){f.container&&U();h=D.theme[d.theme];y=h.compiledHeatmaps||[];if(!y.length&&h.heatmaps.length){for(p=0;p<h.heatmaps.length;p++){y[p]=[];for(c=0;c<=J;c++){var b=y[p],e=c,g;g=0.33/J*c;var j=h.heatmaps[p].saturation,m=h.heatmaps[p].lightness,n=void 0,k=void 0,l=void 0,t=l=void 0,v=n=k=void 0,v=void 0,l=0.5>=m?m*(1+j):m+j-m*j;0===l?g="#000":(t=2*m-l,k=(l-t)/l,g*=6,n=Math.floor(g),
v=g-n,v*=l*k,0===n||6===n?(n=l,k=t+v,l=t):1===n?(n=l-v,k=l,l=t):2===n?(n=t,k=l,l=t+v):3===n?(n=t,k=l-v):4===n?(n=t+v,k=t):(n=l,k=t,l-=v),g="#"+N(n)+N(k)+N(l));b[e]=g}}h.compiledHeatmaps=y}f.container=s(document.createElement("div"),h.container);f.count=f.container.appendChild(s(document.createElement("div"),h.count));f.legend=f.container.appendChild(s(document.createElement("div"),h.legend));f.graph=d.graph?f.container.appendChild(s(document.createElement("div"),h.graph)):0;w.length=0;for(var q in f)f[q]&&
h[q].heatOn&&w.push({name:q,el:f[q]});u.length=0;if(f.graph){f.graph.style.width=d.history*h.column.width+(d.history-1)*h.column.spacing+"px";for(c=0;c<d.history;c++)u[c]=f.graph.appendChild(s(document.createElement("div"),h.column)),u[c].style.position="absolute",u[c].style.bottom=0,u[c].style.right=c*h.column.width+c*h.column.spacing+"px",u[c].style.width=h.column.width+"px",u[c].style.height="0px"}s(f.container,d);r();a.appendChild(f.container);f.graph&&(O=f.graph.clientHeight);d.toggleOn&&("click"===
d.toggleOn&&(f.container.style.cursor="pointer"),S(f.container,d.toggleOn,G))}"object"===H(a)&&a.nodeType===j&&(e=a,a=document.body);a||(a=document.body);var b=this,d=I({},D.defaults,e||{}),f={},u=[],h,y,J=100,w=[],W=0,B=d.threshold,Q=0,L=A()-B,z,E=[],F=[],x,P,q="fps"===d.show,O,K,c,p;b.options=d;b.fps=0;b.duration=0;b.isPaused=0;b.tickStart=function(){Q=A()};b.tick=function(){z=A();W=z-L;B+=(W-B)/d.smoothing;b.fps=1E3/B;b.duration=Q<L?B:z-Q;L=z};b.pause=function(){x&&(b.isPaused=1,clearTimeout(x),
C(x),C(P),x=P=0);return b};b.resume=function(){x||(b.isPaused=0,k());return b};b.set=function(a,c){d[a]=c;q="fps"===d.show;-1!==R(a,X)&&V();-1!==R(a,Y)&&s(f.container,d);return b};b.showDuration=function(){b.set("show","ms");return b};b.showFps=function(){b.set("show","fps");return b};b.toggle=function(){b.set("show",q?"ms":"fps");return b};b.hide=function(){b.pause();f.container.style.display="none";return b};b.show=function(){b.resume();f.container.style.display="block";return b};b.destroy=function(){b.pause();
U();b.tick=b.tickStart=function(){}};V();k()}var A,r=m.performance;A=r&&(r.now||r.webkitNow)?r[r.now?"now":"webkitNow"].bind(r):function(){return+new Date};for(var C=m.cancelAnimationFrame||m.cancelRequestAnimationFrame,M=m.requestAnimationFrame,r=["moz","webkit","o"],G=0,k=0,Z=r.length;k<Z&&!C;++k)M=(C=m[r[k]+"CancelAnimationFrame"]||m[r[k]+"CancelRequestAnimationFrame"])&&m[r[k]+"RequestAnimationFrame"];C||(M=function(a){var e=A(),g=Math.max(0,16-(e-G));G=e+g;return m.setTimeout(function(){a(e+
g)},g)},C=function(a){clearTimeout(a)});var T="string"===H(document.createElement("div").textContent)?"textContent":"innerText";D.extend=I;window.FPSMeter=D;D.defaults={interval:100,smoothing:10,show:"fps",toggleOn:"click",decimals:1,maxFps:60,threshold:100,position:"absolute",zIndex:10,left:"5px",top:"5px",right:"auto",bottom:"auto",margin:"0 0 0 0",theme:"dark",heat:0,graph:0,history:20};var X=["toggleOn","theme","heat","graph","history"],Y="position zIndex left top right bottom margin".split(" ")})(window);(function(m,j){j.theme={};var s=j.theme.base={heatmaps:[],container:{heatOn:null,heatmap:null,padding:"5px",minWidth:"95px",height:"30px",lineHeight:"30px",textAlign:"right",textShadow:"none"},count:{heatOn:null,heatmap:null,position:"absolute",top:0,right:0,padding:"5px 10px",height:"30px",fontSize:"24px",fontFamily:"Consolas, Andale Mono, monospace",zIndex:2},legend:{heatOn:null,heatmap:null,position:"absolute",top:0,left:0,padding:"5px 10px",height:"30px",fontSize:"12px",lineHeight:"32px",fontFamily:"sans-serif",
textAlign:"left",zIndex:2},graph:{heatOn:null,heatmap:null,position:"relative",boxSizing:"padding-box",MozBoxSizing:"padding-box",height:"100%",zIndex:1},column:{width:4,spacing:1,heatOn:null,heatmap:null}};j.theme.dark=j.extend({},s,{heatmaps:[{saturation:0.8,lightness:0.8}],container:{background:"#222",color:"#fff",border:"1px solid #1a1a1a",textShadow:"1px 1px 0 #222"},count:{heatOn:"color"},column:{background:"#3f3f3f"}});j.theme.light=j.extend({},s,{heatmaps:[{saturation:0.5,lightness:0.5}],
container:{color:"#666",background:"#fff",textShadow:"1px 1px 0 rgba(255,255,255,.5), -1px -1px 0 rgba(255,255,255,.5)",boxShadow:"0 0 0 1px rgba(0,0,0,.1)"},count:{heatOn:"color"},column:{background:"#eaeaea"}});j.theme.colorful=j.extend({},s,{heatmaps:[{saturation:0.5,lightness:0.6}],container:{heatOn:"backgroundColor",background:"#888",color:"#fff",textShadow:"1px 1px 0 rgba(0,0,0,.2)",boxShadow:"0 0 0 1px rgba(0,0,0,.1)"},column:{background:"#777",backgroundColor:"rgba(0,0,0,.2)"}});j.theme.transparent=
j.extend({},s,{heatmaps:[{saturation:0.8,lightness:0.5}],container:{padding:0,color:"#fff",textShadow:"1px 1px 0 rgba(0,0,0,.5)"},count:{padding:"0 5px",height:"40px",lineHeight:"40px"},legend:{padding:"0 5px",height:"40px",lineHeight:"42px"},graph:{height:"40px"},column:{width:5,background:"#999",heatOn:"backgroundColor",opacity:0.5}})})(window,FPSMeter);

View file

@ -0,0 +1,3 @@
/*! npm.im/iphone-inline-video */
var makeVideoPlayableInline=function(){"use strict";/*! npm.im/intervalometer */
function e(e,n,r,i){function t(r){d=n(t,i),e(r-(a||r)),a=r}var d,a;return{start:function(){d||t(0)},stop:function(){r(d),d=null,a=0}}}function n(n){return e(n,requestAnimationFrame,cancelAnimationFrame)}function r(e,n,r,i){function t(n){Boolean(e[r])===Boolean(i)&&n.stopImmediatePropagation(),delete e[r]}return e.addEventListener(n,t,!1),t}function i(e,n,r,i){function t(){return r[n]}function d(e){r[n]=e}i&&d(e[n]),Object.defineProperty(e,n,{get:t,set:d})}function t(e,n,r){r.addEventListener(n,function(){return e.dispatchEvent(new Event(n))})}function d(e,n){Promise.resolve().then(function(){e.dispatchEvent(new Event(n))})}function a(e){var n=new Audio;return t(e,"play",n),t(e,"playing",n),t(e,"pause",n),n.crossOrigin=e.crossOrigin,n.src=e.src||e.currentSrc||"data:",n}function o(e,n,r){(m||0)+200<Date.now()&&(e[g]=!0,m=Date.now()),r||(e.currentTime=n),A[++k%3]=100*n|0}function u(e){return e.driver.currentTime>=e.video.duration}function s(e){var n=this;n.video.readyState>=n.video.HAVE_FUTURE_DATA?(n.hasAudio||(n.driver.currentTime=n.video.currentTime+e*n.video.playbackRate/1e3,n.video.loop&&u(n)&&(n.driver.currentTime=0)),o(n.video,n.driver.currentTime)):n.video.networkState!==n.video.NETWORK_IDLE||n.video.buffered.length||n.video.load(),n.video.ended&&(delete n.video[g],n.video.pause(!0))}function c(){var e=this,n=e[b];return e.webkitDisplayingFullscreen?void e[E]():("data:"!==n.driver.src&&n.driver.src!==e.src&&(o(e,0,!0),n.driver.src=e.src),void(e.paused&&(n.paused=!1,e.buffered.length||e.load(),n.driver.play(),n.updater.start(),n.hasAudio||(d(e,"play"),n.video.readyState>=n.video.HAVE_ENOUGH_DATA&&d(e,"playing")))))}function v(e){var n=this,r=n[b];r.driver.pause(),r.updater.stop(),n.webkitDisplayingFullscreen&&n[T](),r.paused&&!e||(r.paused=!0,r.hasAudio||d(n,"pause"),n.ended&&(n[g]=!0,d(n,"ended")))}function p(e,r){var i=e[b]={};i.paused=!0,i.hasAudio=r,i.video=e,i.updater=n(s.bind(i)),r?i.driver=a(e):(e.addEventListener("canplay",function(){e.paused||d(e,"playing")}),i.driver={src:e.src||e.currentSrc||"data:",muted:!0,paused:!0,pause:function(){i.driver.paused=!0},play:function(){i.driver.paused=!1,u(i)&&o(e,0)},get ended(){return u(i)}}),e.addEventListener("emptied",function(){var n=!i.driver.src||"data:"===i.driver.src;i.driver.src&&i.driver.src!==e.src&&(o(e,0,!0),i.driver.src=e.src,n?i.driver.play():i.updater.stop())},!1),e.addEventListener("webkitbeginfullscreen",function(){e.paused?r&&!i.driver.buffered.length&&i.driver.load():(e.pause(),e[E]())}),r&&(e.addEventListener("webkitendfullscreen",function(){i.driver.currentTime=e.currentTime}),e.addEventListener("seeking",function(){A.indexOf(100*e.currentTime|0)<0&&(i.driver.currentTime=e.currentTime)}))}function l(e){var n=e[b];e[E]=e.play,e[T]=e.pause,e.play=c,e.pause=v,i(e,"paused",n.driver),i(e,"muted",n.driver,!0),i(e,"playbackRate",n.driver,!0),i(e,"ended",n.driver),i(e,"loop",n.driver,!0),r(e,"seeking"),r(e,"seeked"),r(e,"timeupdate",g,!1),r(e,"ended",g,!1)}function f(e,n,r){void 0===n&&(n=!0),void 0===r&&(r=!0),r&&!h||e[b]||(p(e,n),l(e),e.classList.add("IIV"),!n&&e.autoplay&&e.play(),/iPhone|iPod|iPad/.test(navigator.platform)||console.warn("iphone-inline-video is not guaranteed to work in emulated environments"))}var m,y="undefined"==typeof Symbol?function(e){return"@"+(e||"@")+Math.random()}:Symbol,h="object-fit"in document.head.style&&/iPhone|iPod/i.test(navigator.userAgent)&&!matchMedia("(-webkit-video-playable-inline)").matches,b=y(),g=y(),E=y("nativeplay"),T=y("nativepause"),A=[],k=0;return f.isWhitelisted=h,f}();

1
www/js/libs/lz-string.js Normal file

File diff suppressed because one or more lines are too long

428
www/js/libs/pixi-picture.js Normal file
View file

@ -0,0 +1,428 @@
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
var shaderLib = [
{
vertUniforms: "",
vertCode: "vTextureCoord = aTextureCoord;",
fragUniforms: "uniform vec4 uTextureClamp;",
fragCode: "vec2 textureCoord = clamp(vTextureCoord, uTextureClamp.xy, uTextureClamp.zw);"
},
{
vertUniforms: "uniform mat3 uTransform;",
vertCode: "vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;",
fragUniforms: "",
fragCode: "vec2 textureCoord = vTextureCoord;"
},
{
vertUniforms: "uniform mat3 uTransform;",
vertCode: "vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;",
fragUniforms: "uniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;",
fragCode: "vec2 textureCoord = mod(vTextureCoord - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;" +
"\ntextureCoord = (uMapCoord * vec3(textureCoord, 1.0)).xy;" +
"\ntextureCoord = clamp(textureCoord, uClampFrame.xy, uClampFrame.zw);"
}
];
var PictureShader = (function (_super) {
__extends(PictureShader, _super);
function PictureShader(gl, vert, frag, tilingMode) {
var lib = shaderLib[tilingMode];
_super.call(this, gl, vert.replace(/%SPRITE_UNIFORMS%/gi, lib.vertUniforms)
.replace(/%SPRITE_CODE%/gi, lib.vertCode), frag.replace(/%SPRITE_UNIFORMS%/gi, lib.fragUniforms)
.replace(/%SPRITE_CODE%/gi, lib.fragCode));
this.bind();
this.tilingMode = tilingMode;
this.tempQuad = new PIXI.Quad(gl);
this.tempQuad.initVao(this);
this.uniforms.uColor = new Float32Array([1, 1, 1, 1]);
this.uniforms.uSampler = [0, 1];
}
PictureShader.blendVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\nuniform mat3 mapMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vMapCoord;\n%SPRITE_UNIFORMS%\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n %SPRITE_CODE%\n vMapCoord = (mapMatrix * vec3(aVertexPosition, 1.0)).xy;\n}\n";
return PictureShader;
}(PIXI.Shader));
extras.PictureShader = PictureShader;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
var overlayFrag = "\nvarying vec2 vTextureCoord;\nvarying vec2 vMapCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler[2];\nuniform vec4 uColor;\n%SPRITE_UNIFORMS%\n\nvoid main(void)\n{\n %SPRITE_CODE%\n vec4 source = texture2D(uSampler[0], textureCoord) * uColor;\n vec4 target = texture2D(uSampler[1], vMapCoord);\n\n //reverse hardlight\n if (source.a == 0.0) {\n gl_FragColor = vec4(0, 0, 0, 0);\n return;\n }\n //yeah, premultiplied\n vec3 Cb = source.rgb/source.a, Cs;\n if (target.a > 0.0) {\n Cs = target.rgb / target.a;\n }\n vec3 multiply = Cb * Cs * 2.0;\n vec3 Cs2 = Cs * 2.0 - 1.0;\n vec3 screen = Cb + Cs2 - Cb * Cs2;\n vec3 B;\n if (Cb.r <= 0.5) {\n B.r = multiply.r;\n } else {\n B.r = screen.r;\n }\n if (Cb.g <= 0.5) {\n B.g = multiply.g;\n } else {\n B.g = screen.g;\n }\n if (Cb.b <= 0.5) {\n B.b = multiply.b;\n } else {\n B.b = screen.b;\n }\n vec4 res;\n res.xyz = (1.0 - source.a) * Cs + source.a * B;\n res.a = source.a + target.a * (1.0-source.a);\n gl_FragColor = vec4(res.xyz * res.a, res.a);\n}\n";
var HardLightShader = (function (_super) {
__extends(HardLightShader, _super);
function HardLightShader(gl, tilingMode) {
_super.call(this, gl, extras.PictureShader.blendVert, overlayFrag, tilingMode);
}
return HardLightShader;
}(extras.PictureShader));
extras.HardLightShader = HardLightShader;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
function mapFilterBlendModesToPixi(gl, array) {
if (array === void 0) { array = []; }
array[PIXI.BLEND_MODES.OVERLAY] = [new extras.OverlayShader(gl, 0), new extras.OverlayShader(gl, 1), new extras.OverlayShader(gl, 2)];
array[PIXI.BLEND_MODES.HARD_LIGHT] = [new extras.HardLightShader(gl, 0), new extras.HardLightShader(gl, 1), new extras.HardLightShader(gl, 2)];
return array;
}
extras.mapFilterBlendModesToPixi = mapFilterBlendModesToPixi;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
var normalFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler[2];\nuniform vec4 uColor;\n%SPRITE_UNIFORMS%\n\nvoid main(void)\n{\n %SPRITE_CODE%\n\n vec4 sample = texture2D(uSampler[0], textureCoord);\n gl_FragColor = sample * uColor;\n}\n";
var normalVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n%SPRITE_UNIFORMS%\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n %SPRITE_CODE%\n}\n";
var NormalShader = (function (_super) {
__extends(NormalShader, _super);
function NormalShader(gl, tilingMode) {
_super.call(this, gl, normalVert, normalFrag, tilingMode);
}
return NormalShader;
}(extras.PictureShader));
extras.NormalShader = NormalShader;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
var overlayFrag = "\nvarying vec2 vTextureCoord;\nvarying vec2 vMapCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler[2];\nuniform vec4 uColor;\n%SPRITE_UNIFORMS%\n\nvoid main(void)\n{\n %SPRITE_CODE%\n vec4 source = texture2D(uSampler[0], textureCoord) * uColor;\n vec4 target = texture2D(uSampler[1], vMapCoord);\n\n //reverse hardlight\n if (source.a == 0.0) {\n gl_FragColor = vec4(0, 0, 0, 0);\n return;\n }\n //yeah, premultiplied\n vec3 Cb = source.rgb/source.a, Cs;\n if (target.a > 0.0) {\n Cs = target.rgb / target.a;\n }\n vec3 multiply = Cb * Cs * 2.0;\n vec3 Cb2 = Cb * 2.0 - 1.0;\n vec3 screen = Cb2 + Cs - Cb2 * Cs;\n vec3 B;\n if (Cs.r <= 0.5) {\n B.r = multiply.r;\n } else {\n B.r = screen.r;\n }\n if (Cs.g <= 0.5) {\n B.g = multiply.g;\n } else {\n B.g = screen.g;\n }\n if (Cs.b <= 0.5) {\n B.b = multiply.b;\n } else {\n B.b = screen.b;\n }\n vec4 res;\n res.xyz = (1.0 - source.a) * Cs + source.a * B;\n res.a = source.a + target.a * (1.0-source.a);\n gl_FragColor = vec4(res.xyz * res.a, res.a);\n}\n";
var OverlayShader = (function (_super) {
__extends(OverlayShader, _super);
function OverlayShader(gl, tilingMode) {
_super.call(this, gl, extras.PictureShader.blendVert, overlayFrag, tilingMode);
}
return OverlayShader;
}(extras.PictureShader));
extras.OverlayShader = OverlayShader;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
function nextPow2(v) {
v += (v === 0) ? 1 : 0;
--v;
v |= v >>> 1;
v |= v >>> 2;
v |= v >>> 4;
v |= v >>> 8;
v |= v >>> 16;
return v + 1;
}
var PictureRenderer = (function (_super) {
__extends(PictureRenderer, _super);
function PictureRenderer(renderer) {
_super.call(this, renderer);
}
PictureRenderer.prototype.onContextChange = function () {
var gl = this.renderer.gl;
this.drawModes = extras.mapFilterBlendModesToPixi(gl);
this.normalShader = [new extras.NormalShader(gl, 0), new extras.NormalShader(gl, 1), new extras.NormalShader(gl, 2)];
this._tempClamp = new Float32Array(4);
this._tempColor = new Float32Array(4);
this._tempRect = new PIXI.Rectangle();
this._tempRect2 = new PIXI.Rectangle();
this._tempRect3 = new PIXI.Rectangle();
this._tempMatrix = new PIXI.Matrix();
this._tempMatrix2 = new PIXI.Matrix();
this._bigBuf = new Uint8Array(1 << 20);
this._renderTexture = new PIXI.BaseRenderTexture(1024, 1024);
};
PictureRenderer.prototype.start = function () {
};
PictureRenderer.prototype.flush = function () {
};
PictureRenderer.prototype._getRenderTexture = function (minWidth, minHeight) {
if (this._renderTexture.width < minWidth ||
this._renderTexture.height < minHeight) {
minHeight = nextPow2(minWidth);
minHeight = nextPow2(minHeight);
this._renderTexture.resize(minWidth, minHeight);
}
return this._renderTexture;
};
PictureRenderer.prototype._getBuf = function (size) {
var buf = this._bigBuf;
if (buf.length < size) {
size = nextPow2(size);
buf = new Uint8Array(size);
this._bigBuf = buf;
}
return buf;
};
PictureRenderer.prototype.render = function (sprite) {
if (!sprite.texture.valid) {
return;
}
var tilingMode = 0;
if (sprite.tileTransform) {
tilingMode = this._isSimpleSprite(sprite) ? 1 : 2;
}
var blendShader = this.drawModes[sprite.blendMode];
if (blendShader) {
this._renderBlend(sprite, blendShader[tilingMode]);
}
else {
this._renderNormal(sprite, this.normalShader[tilingMode]);
}
};
PictureRenderer.prototype._renderNormal = function (sprite, shader) {
var renderer = this.renderer;
renderer.bindShader(shader);
renderer.state.setBlendMode(sprite.blendMode);
this._renderInner(sprite, shader);
};
PictureRenderer.prototype._renderBlend = function (sprite, shader) {
var renderer = this.renderer;
var spriteBounds = sprite.getBounds();
var renderTarget = renderer._activeRenderTarget;
var matrix = renderTarget.projectionMatrix;
var flipX = matrix.a < 0;
var flipY = matrix.d < 0;
var resolution = renderTarget.resolution;
var screen = this._tempRect;
var fr = renderTarget.sourceFrame || renderTarget.destinationFrame;
screen.x = 0;
screen.y = 0;
screen.width = fr.width;
screen.height = fr.height;
var bounds = this._tempRect2;
var fbw = fr.width * resolution, fbh = fr.height * resolution;
bounds.x = (spriteBounds.x + matrix.tx / matrix.a) * resolution + fbw / 2;
bounds.y = (spriteBounds.y + matrix.ty / matrix.d) * resolution + fbh / 2;
bounds.width = spriteBounds.width * resolution;
bounds.height = spriteBounds.height * resolution;
if (flipX) {
bounds.y = fbw - bounds.width - bounds.x;
}
if (flipY) {
bounds.y = fbh - bounds.height - bounds.y;
}
var screenBounds = this._tempRect3;
var x_1 = Math.floor(Math.max(screen.x, bounds.x));
var x_2 = Math.ceil(Math.min(screen.x + screen.width, bounds.x + bounds.width));
var y_1 = Math.floor(Math.max(screen.y, bounds.y));
var y_2 = Math.ceil(Math.min(screen.y + screen.height, bounds.y + bounds.height));
var pixelsWidth = x_2 - x_1;
var pixelsHeight = y_2 - y_1;
if (pixelsWidth <= 0 || pixelsHeight <= 0) {
return;
}
var rt = this._getRenderTexture(pixelsWidth, pixelsHeight);
renderer.bindTexture(rt, 1, true);
var gl = renderer.gl;
if (renderer.renderingToScreen && renderTarget.root) {
var buf = this._getBuf(pixelsWidth * pixelsHeight * 4);
gl.readPixels(x_1, y_1, pixelsWidth, pixelsHeight, gl.RGBA, gl.UNSIGNED_BYTE, this._bigBuf);
gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, pixelsWidth, pixelsHeight, gl.RGBA, gl.UNSIGNED_BYTE, this._bigBuf);
}
else {
gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, x_1, y_1, pixelsWidth, pixelsHeight);
}
renderer.bindShader(shader);
renderer.state.setBlendMode(PIXI.BLEND_MODES.NORMAL);
if (shader.uniforms.mapMatrix) {
var mapMatrix = this._tempMatrix;
mapMatrix.a = bounds.width / rt.width / spriteBounds.width;
if (flipX) {
mapMatrix.a = -mapMatrix.a;
mapMatrix.tx = (bounds.x - x_1) / rt.width - (spriteBounds.x + spriteBounds.width) * mapMatrix.a;
}
else {
mapMatrix.tx = (bounds.x - x_1) / rt.width - spriteBounds.x * mapMatrix.a;
}
mapMatrix.d = bounds.height / rt.height / spriteBounds.height;
if (flipY) {
mapMatrix.d = -mapMatrix.d;
mapMatrix.ty = (bounds.y - y_1) / rt.height - (spriteBounds.y + spriteBounds.height) * mapMatrix.d;
}
else {
mapMatrix.ty = (bounds.y - y_1) / rt.height - spriteBounds.y * mapMatrix.d;
}
shader.uniforms.mapMatrix = mapMatrix.toArray(true);
}
this._renderInner(sprite, shader);
};
PictureRenderer.prototype._renderInner = function (sprite, shader) {
var renderer = this.renderer;
if (shader.tilingMode > 0) {
this._renderWithShader(sprite, shader.tilingMode === 1, shader);
}
else {
this._renderSprite(sprite, shader);
}
};
PictureRenderer.prototype._renderWithShader = function (ts, isSimple, shader) {
var quad = shader.tempQuad;
var renderer = this.renderer;
renderer.bindVao(quad.vao);
var vertices = quad.vertices;
var _width = ts._width;
var _height = ts._height;
var _anchorX = ts._anchor._x;
var _anchorY = ts._anchor._y;
var w0 = _width * (1 - _anchorX);
var w1 = _width * -_anchorX;
var h0 = _height * (1 - _anchorY);
var h1 = _height * -_anchorY;
var wt = ts.transform.worldTransform;
var a = wt.a;
var b = wt.b;
var c = wt.c;
var d = wt.d;
var tx = wt.tx;
var ty = wt.ty;
vertices[0] = (a * w1) + (c * h1) + tx;
vertices[1] = (d * h1) + (b * w1) + ty;
vertices[2] = (a * w0) + (c * h1) + tx;
vertices[3] = (d * h1) + (b * w0) + ty;
vertices[4] = (a * w0) + (c * h0) + tx;
vertices[5] = (d * h0) + (b * w0) + ty;
vertices[6] = (a * w1) + (c * h0) + tx;
vertices[7] = (d * h0) + (b * w1) + ty;
vertices = quad.uvs;
vertices[0] = vertices[6] = -ts.anchor.x;
vertices[1] = vertices[3] = -ts.anchor.y;
vertices[2] = vertices[4] = 1.0 - ts.anchor.x;
vertices[5] = vertices[7] = 1.0 - ts.anchor.y;
quad.upload();
var tex = ts._texture;
var lt = ts.tileTransform.localTransform;
var uv = ts.uvTransform;
var mapCoord = uv.mapCoord;
var uClampFrame = uv.uClampFrame;
var uClampOffset = uv.uClampOffset;
var w = tex.width;
var h = tex.height;
var W = _width;
var H = _height;
var tempMat = this._tempMatrix2;
tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H);
tempMat.invert();
if (isSimple) {
tempMat.append(mapCoord);
}
else {
shader.uniforms.uMapCoord = mapCoord.toArray(true);
shader.uniforms.uClampFrame = uClampFrame;
shader.uniforms.uClampOffset = uClampOffset;
}
shader.uniforms.uTransform = tempMat.toArray(true);
var color = this._tempColor;
var alpha = ts.worldAlpha;
PIXI.utils.hex2rgb(ts.tint, color);
color[0] *= alpha;
color[1] *= alpha;
color[2] *= alpha;
color[3] = alpha;
shader.uniforms.uColor = color;
renderer.bindTexture(tex, 0, true);
quad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0);
};
PictureRenderer.prototype._renderSprite = function (sprite, shader) {
var renderer = this.renderer;
var quad = shader.tempQuad;
renderer.bindVao(quad.vao);
var uvs = sprite.texture._uvs;
var vertices = quad.vertices;
var vd = sprite.vertexData;
for (var i = 0; i < 8; i++) {
quad.vertices[i] = vd[i];
}
quad.uvs[0] = uvs.x0;
quad.uvs[1] = uvs.y0;
quad.uvs[2] = uvs.x1;
quad.uvs[3] = uvs.y1;
quad.uvs[4] = uvs.x2;
quad.uvs[5] = uvs.y2;
quad.uvs[6] = uvs.x3;
quad.uvs[7] = uvs.y3;
quad.upload();
var frame = sprite.texture.frame;
var base = sprite.texture.baseTexture;
var clamp = this._tempClamp;
var eps = 0.5 / base.resolution;
clamp[0] = (frame.x + eps) / base.width;
clamp[1] = (frame.y + eps) / base.height;
clamp[2] = (frame.x + frame.width - eps) / base.width;
clamp[3] = (frame.y + frame.height - eps) / base.height;
shader.uniforms.uTextureClamp = clamp;
var color = this._tempColor;
PIXI.utils.hex2rgb(sprite.tint, color);
var alpha = sprite.worldAlpha;
color[0] *= alpha;
color[1] *= alpha;
color[2] *= alpha;
color[3] = alpha;
shader.uniforms.uColor = color;
renderer.bindTexture(base, 0, true);
quad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0);
};
PictureRenderer.prototype._isSimpleSprite = function (ts) {
var renderer = this.renderer;
var tex = ts._texture;
var baseTex = tex.baseTexture;
var isSimple = baseTex.isPowerOfTwo && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;
if (isSimple) {
if (!baseTex._glTextures[renderer.CONTEXT_UID]) {
if (baseTex.wrapMode === PIXI.WRAP_MODES.CLAMP) {
baseTex.wrapMode = PIXI.WRAP_MODES.REPEAT;
}
}
else {
isSimple = baseTex.wrapMode !== PIXI.WRAP_MODES.CLAMP;
}
}
return isSimple;
};
return PictureRenderer;
}(PIXI.ObjectRenderer));
extras.PictureRenderer = PictureRenderer;
PIXI.WebGLRenderer.registerPlugin('picture', PictureRenderer);
PIXI.CanvasRenderer.registerPlugin('picture', PIXI.CanvasSpriteRenderer);
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
var PictureSprite = (function (_super) {
__extends(PictureSprite, _super);
function PictureSprite(texture) {
_super.call(this, texture);
this.pluginName = 'picture';
}
return PictureSprite;
}(PIXI.Sprite));
extras.PictureSprite = PictureSprite;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var extras;
(function (extras) {
var PictureTilingSprite = (function (_super) {
__extends(PictureTilingSprite, _super);
function PictureTilingSprite(texture) {
_super.call(this, texture);
this.pluginName = 'picture';
}
return PictureTilingSprite;
}(extras.TilingSprite));
extras.PictureTilingSprite = PictureTilingSprite;
})(extras = PIXI.extras || (PIXI.extras = {}));
})(PIXI || (PIXI = {}));
//# sourceMappingURL=pixi-picture.js.map

887
www/js/libs/pixi-tilemap.js Normal file
View file

@ -0,0 +1,887 @@
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var CanvasTileRenderer = (function () {
function CanvasTileRenderer(renderer) {
this.tileAnim = [0, 0];
this.dontUseTransform = false;
this.renderer = renderer;
this.tileAnim = [0, 0];
}
return CanvasTileRenderer;
}());
tilemap.CanvasTileRenderer = CanvasTileRenderer;
PIXI.CanvasRenderer.registerPlugin('tilemap', CanvasTileRenderer);
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var CompositeRectTileLayer = (function (_super) {
__extends(CompositeRectTileLayer, _super);
function CompositeRectTileLayer(zIndex, bitmaps, useSquare, texPerChild) {
var _this = _super.call(this) || this;
_this.shadowColor = new Float32Array([0.0, 0.0, 0.0, 0.5]);
_this.modificationMarker = 0;
_this._globalMat = null;
_this._tempScale = null;
_this.initialize.apply(_this, arguments);
return _this;
}
CompositeRectTileLayer.prototype.updateTransform = function () {
_super.prototype.displayObjectUpdateTransform.call(this);
};
CompositeRectTileLayer.prototype.initialize = function (zIndex, bitmaps, useSquare, texPerChild) {
this.z = this.zIndex = zIndex;
this.useSquare = useSquare;
this.texPerChild = texPerChild || 16;
if (bitmaps) {
this.setBitmaps(bitmaps);
}
};
CompositeRectTileLayer.prototype.setBitmaps = function (bitmaps) {
var texPerChild = this.texPerChild;
var len1 = this.children.length;
var len2 = Math.ceil(bitmaps.length / texPerChild);
var i;
for (i = 0; i < len1; i++) {
this.children[i].textures = bitmaps.slice(i * texPerChild, (i + 1) * texPerChild);
}
for (i = len1; i < len2; i++) {
this.addChild(new tilemap.RectTileLayer(this.zIndex, bitmaps.slice(i * texPerChild, (i + 1) * texPerChild)));
}
};
CompositeRectTileLayer.prototype.clear = function () {
for (var i = 0; i < this.children.length; i++)
this.children[i].clear();
this.modificationMarker = 0;
};
CompositeRectTileLayer.prototype.addRect = function (num, u, v, x, y, tileWidth, tileHeight) {
if (this.children[num] && this.children[num].textures)
this.children[num].addRect(0, u, v, x, y, tileWidth, tileHeight);
};
CompositeRectTileLayer.prototype.addFrame = function (texture_, x, y, animX, animY) {
var texture;
var layer = null, ind = 0;
var children = this.children;
if (typeof texture_ === "number") {
var childIndex = texture_ / this.texPerChild >> 0;
layer = children[childIndex];
if (!layer) {
layer = children[0];
if (!layer) {
return false;
}
ind = 0;
}
else {
ind = texture_ % this.texPerChild;
}
texture = layer.textures[ind];
}
else if (typeof texture_ === "string") {
texture = PIXI.Texture.fromImage(texture_);
}
else {
texture = texture_;
for (var i = 0; i < children.length; i++) {
var child = children[i];
var tex = child.textures;
for (var j = 0; j < tex.length; j++) {
if (tex[j].baseTexture == texture.baseTexture) {
layer = child;
ind = j;
break;
}
}
if (layer) {
break;
}
}
if (!layer) {
for (i = 0; i < children.length; i++) {
var child = children[i];
if (child.textures.length < this.texPerChild) {
layer = child;
ind = child.textures.length;
child.textures.push(texture);
break;
}
}
if (!layer) {
children.push(layer = new tilemap.RectTileLayer(this.zIndex, texture));
ind = 0;
}
}
}
layer.addRect(ind, texture.frame.x, texture.frame.y, x, y, texture.frame.width, texture.frame.height, animX, animY);
return true;
};
;
CompositeRectTileLayer.prototype.renderCanvas = function (renderer) {
if (!renderer.plugins.tilemap.dontUseTransform) {
var wt = this.worldTransform;
renderer.context.setTransform(wt.a, wt.b, wt.c, wt.d, wt.tx * renderer.resolution, wt.ty * renderer.resolution);
}
var layers = this.children;
for (var i = 0; i < layers.length; i++)
layers[i].renderCanvas(renderer);
};
;
CompositeRectTileLayer.prototype.renderWebGL = function (renderer) {
var gl = renderer.gl;
var shader = renderer.plugins.tilemap.getShader(this.useSquare);
renderer.setObjectRenderer(renderer.plugins.tilemap);
renderer.bindShader(shader);
this._globalMat = this._globalMat || new PIXI.Matrix();
renderer._activeRenderTarget.projectionMatrix.copy(this._globalMat).append(this.worldTransform);
shader.uniforms.projectionMatrix = this._globalMat.toArray(true);
shader.uniforms.shadowColor = this.shadowColor;
if (this.useSquare) {
var tempScale = this._tempScale = (this._tempScale || [0, 0]);
tempScale[0] = this._globalMat.a >= 0 ? 1 : -1;
tempScale[1] = this._globalMat.d < 0 ? 1 : -1;
var ps = shader.uniforms.pointScale = tempScale;
shader.uniforms.projectionScale = Math.abs(this.worldTransform.a) * renderer.resolution;
}
var af = shader.uniforms.animationFrame = renderer.plugins.tilemap.tileAnim;
var layers = this.children;
for (var i = 0; i < layers.length; i++)
layers[i].renderWebGL(renderer, this.useSquare);
};
CompositeRectTileLayer.prototype.isModified = function (anim) {
var layers = this.children;
if (this.modificationMarker != layers.length) {
return true;
}
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
if (layer.modificationMarker != layer.pointsBuf.length ||
anim && layer.hasAnim) {
return true;
}
}
return false;
};
CompositeRectTileLayer.prototype.clearModify = function () {
var layers = this.children;
this.modificationMarker = layers.length;
for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
layer.modificationMarker = layer.pointsBuf.length;
}
};
return CompositeRectTileLayer;
}(PIXI.Container));
tilemap.CompositeRectTileLayer = CompositeRectTileLayer;
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var GraphicsLayer = (function (_super) {
__extends(GraphicsLayer, _super);
function GraphicsLayer(zIndex) {
var _this = _super.call(this) || this;
_this.z = _this.zIndex = zIndex;
return _this;
}
GraphicsLayer.prototype.renderCanvas = function (renderer) {
var wt = null;
if (renderer.plugins.tilemap.dontUseTransform) {
wt = this.transform.worldTransform;
this.transform.worldTransform = PIXI.Matrix.IDENTITY;
}
renderer.plugins.graphics.render(this);
if (renderer.plugins.tilemap.dontUseTransform) {
this.transform.worldTransform = wt;
}
renderer.context.globalAlpha = 1.0;
};
GraphicsLayer.prototype.renderWebGL = function (renderer) {
if (!this._webGL[renderer.CONTEXT_UID])
this.dirty = true;
_super.prototype.renderWebGL.call(this, renderer);
};
GraphicsLayer.prototype.isModified = function (anim) {
return false;
};
GraphicsLayer.prototype.clearModify = function () {
};
return GraphicsLayer;
}(PIXI.Graphics));
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var RectTileLayer = (function (_super) {
__extends(RectTileLayer, _super);
function RectTileLayer(zIndex, texture) {
var _this = _super.call(this) || this;
_this.z = 0;
_this.zIndex = 0;
_this.pointsBuf = [];
_this._tempSize = new Float32Array([0, 0]);
_this._tempTexSize = 1;
_this.modificationMarker = 0;
_this.hasAnim = false;
_this.vbId = 0;
_this.vbBuffer = null;
_this.vbArray = null;
_this.vbInts = null;
_this.initialize(zIndex, texture);
return _this;
}
RectTileLayer.prototype.initialize = function (zIndex, textures) {
if (!textures) {
textures = [];
}
else if (!(textures instanceof Array) && textures.baseTexture) {
textures = [textures];
}
this.textures = textures;
this.z = this.zIndex = zIndex;
this.visible = false;
};
RectTileLayer.prototype.clear = function () {
this.pointsBuf.length = 0;
this.modificationMarker = 0;
this.hasAnim = false;
};
RectTileLayer.prototype.renderCanvas = function (renderer) {
if (this.textures.length === 0)
return;
var points = this.pointsBuf;
renderer.context.fillStyle = '#000000';
for (var i = 0, n = points.length; i < n; i += 9) {
var x1 = points[i], y1 = points[i + 1];
var x2 = points[i + 2], y2 = points[i + 3];
var w = points[i + 4];
var h = points[i + 5];
x1 += points[i + 6] * renderer.plugins.tilemap.tileAnim[0];
y1 += points[i + 7] * renderer.plugins.tilemap.tileAnim[1];
var textureId = points[i + 8];
if (textureId >= 0) {
renderer.context.drawImage(this.textures[textureId].baseTexture.source, x1, y1, w, h, x2, y2, w, h);
}
else {
renderer.context.globalAlpha = 0.5;
renderer.context.fillRect(x2, y2, w, h);
renderer.context.globalAlpha = 1;
}
}
};
RectTileLayer.prototype.addRect = function (textureId, u, v, x, y, tileWidth, tileHeight, animX, animY) {
if (animX === void 0) { animX = 0; }
if (animY === void 0) { animY = 0; }
var pb = this.pointsBuf;
this.hasAnim = this.hasAnim || animX > 0 || animY > 0;
if (tileWidth == tileHeight) {
pb.push(u);
pb.push(v);
pb.push(x);
pb.push(y);
pb.push(tileWidth);
pb.push(tileHeight);
pb.push(animX | 0);
pb.push(animY | 0);
pb.push(textureId);
}
else {
var i;
if (tileWidth % tileHeight === 0) {
for (i = 0; i < tileWidth / tileHeight; i++) {
pb.push(u + i * tileHeight);
pb.push(v);
pb.push(x + i * tileHeight);
pb.push(y);
pb.push(tileHeight);
pb.push(tileHeight);
pb.push(animX | 0);
pb.push(animY | 0);
pb.push(textureId);
}
}
else if (tileHeight % tileWidth === 0) {
for (i = 0; i < tileHeight / tileWidth; i++) {
pb.push(u);
pb.push(v + i * tileWidth);
pb.push(x);
pb.push(y + i * tileWidth);
pb.push(tileWidth);
pb.push(tileWidth);
pb.push(animX | 0);
pb.push(animY | 0);
pb.push(textureId);
}
}
else {
pb.push(u);
pb.push(v);
pb.push(x);
pb.push(y);
pb.push(tileWidth);
pb.push(tileHeight);
pb.push(animX | 0);
pb.push(animY | 0);
pb.push(textureId);
}
}
};
;
RectTileLayer.prototype.renderWebGL = function (renderer, useSquare) {
if (useSquare === void 0) { useSquare = false; }
var points = this.pointsBuf;
if (points.length === 0)
return;
var rectsCount = points.length / 9;
var tile = renderer.plugins.tilemap;
var gl = renderer.gl;
if (!useSquare) {
tile.checkIndexBuffer(rectsCount);
}
var shader = tile.getShader(useSquare);
var textures = this.textures;
if (textures.length === 0)
return;
var len = textures.length;
if (this._tempTexSize < shader.maxTextures) {
this._tempTexSize = shader.maxTextures;
this._tempSize = new Float32Array(2 * shader.maxTextures);
}
for (var i = 0; i < len; i++) {
if (!textures[i] || !textures[i].valid)
return;
var texture = textures[i].baseTexture;
}
tile.bindTextures(renderer, shader, textures);
var vb = tile.getVb(this.vbId);
if (!vb) {
vb = tile.createVb(useSquare);
this.vbId = vb.id;
this.vbBuffer = null;
this.modificationMarker = 0;
}
var vao = vb.vao;
renderer.bindVao(vao);
var vertexBuf = vb.vb;
vertexBuf.bind();
var vertices = rectsCount * shader.vertPerQuad;
if (vertices === 0)
return;
if (this.modificationMarker != vertices) {
this.modificationMarker = vertices;
var vs = shader.stride * vertices;
if (!this.vbBuffer || this.vbBuffer.byteLength < vs) {
var bk = shader.stride;
while (bk < vs) {
bk *= 2;
}
this.vbBuffer = new ArrayBuffer(bk);
this.vbArray = new Float32Array(this.vbBuffer);
this.vbInts = new Uint32Array(this.vbBuffer);
vertexBuf.upload(this.vbBuffer, 0, true);
}
var arr = this.vbArray, ints = this.vbInts;
var sz = 0;
var textureId, shiftU, shiftV;
if (useSquare) {
for (i = 0; i < points.length; i += 9) {
textureId = (points[i + 8] >> 2);
shiftU = 1024 * (points[i + 8] & 1);
shiftV = 1024 * ((points[i + 8] >> 1) & 1);
arr[sz++] = points[i + 2];
arr[sz++] = points[i + 3];
arr[sz++] = points[i + 0] + shiftU;
arr[sz++] = points[i + 1] + shiftV;
arr[sz++] = points[i + 4];
arr[sz++] = points[i + 6];
arr[sz++] = points[i + 7];
arr[sz++] = textureId;
}
}
else {
var tint = -1;
for (i = 0; i < points.length; i += 9) {
var eps = 0.5;
textureId = (points[i + 8] >> 2);
shiftU = 1024 * (points[i + 8] & 1);
shiftV = 1024 * ((points[i + 8] >> 1) & 1);
var x = points[i + 2], y = points[i + 3];
var w = points[i + 4], h = points[i + 5];
var u = points[i] + shiftU, v = points[i + 1] + shiftV;
var animX = points[i + 6], animY = points[i + 7];
arr[sz++] = x;
arr[sz++] = y;
arr[sz++] = u;
arr[sz++] = v;
arr[sz++] = u + eps;
arr[sz++] = v + eps;
arr[sz++] = u + w - eps;
arr[sz++] = v + h - eps;
arr[sz++] = animX;
arr[sz++] = animY;
arr[sz++] = textureId;
arr[sz++] = x + w;
arr[sz++] = y;
arr[sz++] = u + w;
arr[sz++] = v;
arr[sz++] = u + eps;
arr[sz++] = v + eps;
arr[sz++] = u + w - eps;
arr[sz++] = v + h - eps;
arr[sz++] = animX;
arr[sz++] = animY;
arr[sz++] = textureId;
arr[sz++] = x + w;
arr[sz++] = y + h;
arr[sz++] = u + w;
arr[sz++] = v + h;
arr[sz++] = u + eps;
arr[sz++] = v + eps;
arr[sz++] = u + w - eps;
arr[sz++] = v + h - eps;
arr[sz++] = animX;
arr[sz++] = animY;
arr[sz++] = textureId;
arr[sz++] = x;
arr[sz++] = y + h;
arr[sz++] = u;
arr[sz++] = v + h;
arr[sz++] = u + eps;
arr[sz++] = v + eps;
arr[sz++] = u + w - eps;
arr[sz++] = v + h - eps;
arr[sz++] = animX;
arr[sz++] = animY;
arr[sz++] = textureId;
}
}
vertexBuf.upload(arr, 0, true);
}
if (useSquare)
gl.drawArrays(gl.POINTS, 0, vertices);
else
gl.drawElements(gl.TRIANGLES, rectsCount * 6, gl.UNSIGNED_SHORT, 0);
};
return RectTileLayer;
}(PIXI.Container));
tilemap.RectTileLayer = RectTileLayer;
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var rectShaderFrag = "varying vec2 vTextureCoord;\nvarying vec4 vFrame;\nvarying float vTextureId;\nuniform vec4 shadowColor;\nuniform sampler2D uSamplers[%count%];\nuniform vec2 uSamplerSize[%count%];\n\nvoid main(void){\n vec2 textureCoord = clamp(vTextureCoord, vFrame.xy, vFrame.zw);\n float textureId = floor(vTextureId + 0.5);\n\n vec4 color;\n %forloop%\n gl_FragColor = color;\n}";
var rectShaderVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aFrame;\nattribute vec2 aAnim;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform vec2 animationFrame;\n\nvarying vec2 vTextureCoord;\nvarying float vTextureId;\nvarying vec4 vFrame;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vec2 anim = aAnim * animationFrame;\n vTextureCoord = aTextureCoord + anim;\n vFrame = aFrame + vec4(anim, anim);\n vTextureId = aTextureId;\n}\n";
var TilemapShader = (function (_super) {
__extends(TilemapShader, _super);
function TilemapShader(gl, maxTextures, shaderVert, shaderFrag) {
var _this = _super.call(this, gl, shaderVert, shaderFrag) || this;
_this.maxTextures = 0;
_this.maxTextures = maxTextures;
tilemap.shaderGenerator.fillSamplers(_this, _this.maxTextures);
return _this;
}
return TilemapShader;
}(PIXI.Shader));
tilemap.TilemapShader = TilemapShader;
var RectTileShader = (function (_super) {
__extends(RectTileShader, _super);
function RectTileShader(gl, maxTextures) {
var _this = _super.call(this, gl, maxTextures, rectShaderVert, tilemap.shaderGenerator.generateFragmentSrc(maxTextures, rectShaderFrag)) || this;
_this.vertSize = 11;
_this.vertPerQuad = 4;
_this.stride = _this.vertSize * 4;
tilemap.shaderGenerator.fillSamplers(_this, _this.maxTextures);
return _this;
}
RectTileShader.prototype.createVao = function (renderer, vb) {
var gl = renderer.gl;
return renderer.createVao()
.addIndex(this.indexBuffer)
.addAttribute(vb, this.attributes.aVertexPosition, gl.FLOAT, false, this.stride, 0)
.addAttribute(vb, this.attributes.aTextureCoord, gl.FLOAT, false, this.stride, 2 * 4)
.addAttribute(vb, this.attributes.aFrame, gl.FLOAT, false, this.stride, 4 * 4)
.addAttribute(vb, this.attributes.aAnim, gl.FLOAT, false, this.stride, 8 * 4)
.addAttribute(vb, this.attributes.aTextureId, gl.FLOAT, false, this.stride, 10 * 4);
};
return RectTileShader;
}(TilemapShader));
tilemap.RectTileShader = RectTileShader;
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var shaderGenerator;
(function (shaderGenerator) {
function fillSamplers(shader, maxTextures) {
var sampleValues = [];
for (var i = 0; i < maxTextures; i++) {
sampleValues[i] = i;
}
shader.bind();
shader.uniforms.uSamplers = sampleValues;
var samplerSize = [];
for (i = 0; i < maxTextures; i++) {
samplerSize.push(1.0 / 2048);
samplerSize.push(1.0 / 2048);
}
shader.uniforms.uSamplerSize = samplerSize;
}
shaderGenerator.fillSamplers = fillSamplers;
function generateFragmentSrc(maxTextures, fragmentSrc) {
return fragmentSrc.replace(/%count%/gi, maxTextures + "")
.replace(/%forloop%/gi, this.generateSampleSrc(maxTextures));
}
shaderGenerator.generateFragmentSrc = generateFragmentSrc;
function generateSampleSrc(maxTextures) {
var src = '';
src += '\n';
src += '\n';
src += 'if(vTextureId <= -1.0) {';
src += '\n\tcolor = shadowColor;';
src += '\n}';
for (var i = 0; i < maxTextures; i++) {
src += '\nelse ';
if (i < maxTextures - 1) {
src += 'if(textureId == ' + i + '.0)';
}
src += '\n{';
src += '\n\tcolor = texture2D(uSamplers[' + i + '], textureCoord * uSamplerSize[' + i + ']);';
src += '\n}';
}
src += '\n';
src += '\n';
return src;
}
shaderGenerator.generateSampleSrc = generateSampleSrc;
})(shaderGenerator = tilemap.shaderGenerator || (tilemap.shaderGenerator = {}));
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var squareShaderVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec2 aAnim;\nattribute float aTextureId;\nattribute float aSize;\n\nuniform mat3 projectionMatrix;\nuniform vec2 samplerSize;\nuniform vec2 animationFrame;\nuniform float projectionScale;\n\nvarying vec2 vTextureCoord;\nvarying float vSize;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition + aSize * 0.5, 1.0)).xy, 0.0, 1.0);\n gl_PointSize = aSize * projectionScale;\n vTextureCoord = aTextureCoord + aAnim * animationFrame;\n vTextureId = aTextureId;\n vSize = aSize;\n}\n";
var squareShaderFrag = "\nvarying vec2 vTextureCoord;\nvarying float vSize;\nvarying float vTextureId;\n\nuniform vec4 shadowColor;\nuniform sampler2D uSamplers[%count%];\nuniform vec2 uSamplerSize[%count%];\nuniform vec2 pointScale;\n\nvoid main(void){\n float margin = 0.5 / vSize;\n vec2 pointCoord = (gl_PointCoord - 0.5) * pointScale + 0.5;\n vec2 clamped = vec2(clamp(pointCoord.x, margin, 1.0 - margin), clamp(pointCoord.y, margin, 1.0 - margin));\n vec2 textureCoord = pointCoord * vSize + vTextureCoord;\n float textureId = vTextureId;\n vec4 color;\n %forloop%\n gl_FragColor = color;\n}\n\n";
var SquareTileShader = (function (_super) {
__extends(SquareTileShader, _super);
function SquareTileShader(gl, maxTextures) {
var _this = _super.call(this, gl, maxTextures, squareShaderVert, tilemap.shaderGenerator.generateFragmentSrc(maxTextures, squareShaderFrag)) || this;
_this.vertSize = 8;
_this.vertPerQuad = 1;
_this.stride = _this.vertSize * 4;
_this.maxTextures = maxTextures;
tilemap.shaderGenerator.fillSamplers(_this, _this.maxTextures);
return _this;
}
SquareTileShader.prototype.createVao = function (renderer, vb) {
var gl = renderer.gl;
return renderer.createVao()
.addIndex(this.indexBuffer)
.addAttribute(vb, this.attributes.aVertexPosition, gl.FLOAT, false, this.stride, 0)
.addAttribute(vb, this.attributes.aTextureCoord, gl.FLOAT, false, this.stride, 2 * 4)
.addAttribute(vb, this.attributes.aSize, gl.FLOAT, false, this.stride, 4 * 4)
.addAttribute(vb, this.attributes.aAnim, gl.FLOAT, false, this.stride, 5 * 4)
.addAttribute(vb, this.attributes.aTextureId, gl.FLOAT, false, this.stride, 7 * 4);
};
;
return SquareTileShader;
}(tilemap.TilemapShader));
tilemap.SquareTileShader = SquareTileShader;
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap) {
var glCore = PIXI.glCore;
function _hackSubImage(tex, sprite, clearBuffer, clearWidth, clearHeight) {
var gl = tex.gl;
var baseTex = sprite.texture.baseTexture;
if (clearBuffer && clearWidth > 0 && clearHeight > 0) {
gl.texSubImage2D(gl.TEXTURE_2D, 0, sprite.position.x, sprite.position.y, clearWidth, clearHeight, tex.format, tex.type, clearBuffer);
}
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);
gl.texSubImage2D(gl.TEXTURE_2D, 0, sprite.position.x, sprite.position.y, tex.format, tex.type, baseTex.source);
}
var TileRenderer = (function (_super) {
__extends(TileRenderer, _super);
function TileRenderer(renderer) {
var _this = _super.call(this, renderer) || this;
_this.vbs = {};
_this.indices = new Uint16Array(0);
_this.lastTimeCheck = 0;
_this.tileAnim = [0, 0];
_this.maxTextures = 4;
_this.texLoc = [];
return _this;
}
TileRenderer.prototype.onContextChange = function () {
var gl = this.renderer.gl;
var maxTextures = this.maxTextures;
this.rectShader = new tilemap.RectTileShader(gl, maxTextures);
this.squareShader = new tilemap.SquareTileShader(gl, maxTextures);
this.checkIndexBuffer(2000);
this.rectShader.indexBuffer = this.indexBuffer;
this.squareShader.indexBuffer = this.indexBuffer;
this.vbs = {};
this.glTextures = [];
this.boundSprites = [];
this.initBounds();
};
TileRenderer.prototype.initBounds = function () {
var gl = this.renderer.gl;
var tempCanvas = document.createElement('canvas');
tempCanvas.width = 2048;
tempCanvas.height = 2048;
for (var i = 0; i < this.maxTextures; i++) {
var rt = PIXI.RenderTexture.create(2048, 2048);
rt.baseTexture.premultipliedAlpha = true;
rt.baseTexture.scaleMode = TileRenderer.SCALE_MODE;
rt.baseTexture.wrapMode = PIXI.WRAP_MODES.CLAMP;
this.renderer.textureManager.updateTexture(rt);
this.glTextures.push(rt);
var bs = [];
for (var j = 0; j < 4; j++) {
var spr = new PIXI.Sprite();
spr.position.x = 1024 * (j & 1);
spr.position.y = 1024 * (j >> 1);
bs.push(spr);
}
this.boundSprites.push(bs);
}
};
TileRenderer.prototype.bindTextures = function (renderer, shader, textures) {
var bounds = this.boundSprites;
var glts = this.glTextures;
var len = textures.length;
var maxTextures = this.maxTextures;
if (len > 4 * maxTextures) {
return;
}
var doClear = TileRenderer.DO_CLEAR;
if (doClear && !this._clearBuffer) {
this._clearBuffer = new Uint8Array(1024 * 1024 * 4);
}
var i;
for (i = 0; i < len; i++) {
var texture = textures[i];
if (!texture || !textures[i].valid)
continue;
var bs = bounds[i >> 2][i & 3];
if (!bs.texture ||
bs.texture.baseTexture !== texture.baseTexture) {
bs.texture = texture;
var glt = glts[i >> 2];
renderer.bindTexture(glt, 0, true);
if (doClear) {
_hackSubImage(glt.baseTexture._glTextures[renderer.CONTEXT_UID], bs, this._clearBuffer, 1024, 1024);
}
else {
_hackSubImage(glt.baseTexture._glTextures[renderer.CONTEXT_UID], bs);
}
}
}
this.texLoc.length = 0;
for (i = 0; i < maxTextures; i++) {
this.texLoc.push(renderer.bindTexture(glts[i], i, true));
}
shader.uniforms.uSamplers = this.texLoc;
};
TileRenderer.prototype.checkLeaks = function () {
var now = Date.now();
var old = now - 10000;
if (this.lastTimeCheck < old ||
this.lastTimeCheck > now) {
this.lastTimeCheck = now;
var vbs = this.vbs;
for (var key in vbs) {
if (vbs[key].lastTimeAccess < old) {
this.removeVb(key);
}
}
}
};
;
TileRenderer.prototype.start = function () {
this.renderer.state.setBlendMode(PIXI.BLEND_MODES.NORMAL);
};
TileRenderer.prototype.getVb = function (id) {
this.checkLeaks();
var vb = this.vbs[id];
if (vb) {
vb.lastAccessTime = Date.now();
return vb;
}
return null;
};
TileRenderer.prototype.createVb = function (useSquare) {
var id = ++TileRenderer.vbAutoincrement;
var shader = this.getShader(useSquare);
var gl = this.renderer.gl;
var vb = PIXI.glCore.GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);
var stuff = {
id: id,
vb: vb,
vao: shader.createVao(this.renderer, vb),
lastTimeAccess: Date.now(),
useSquare: useSquare,
shader: shader
};
this.vbs[id] = stuff;
return stuff;
};
TileRenderer.prototype.removeVb = function (id) {
if (this.vbs[id]) {
this.vbs[id].vb.destroy();
this.vbs[id].vao.destroy();
delete this.vbs[id];
}
};
TileRenderer.prototype.checkIndexBuffer = function (size) {
var totalIndices = size * 6;
var indices = this.indices;
if (totalIndices <= indices.length) {
return;
}
var len = indices.length || totalIndices;
while (len < totalIndices) {
len <<= 1;
}
indices = new Uint16Array(len);
this.indices = indices;
for (var i = 0, j = 0; i + 5 < indices.length; i += 6, j += 4) {
indices[i + 0] = j + 0;
indices[i + 1] = j + 1;
indices[i + 2] = j + 2;
indices[i + 3] = j + 0;
indices[i + 4] = j + 2;
indices[i + 5] = j + 3;
}
if (this.indexBuffer) {
this.indexBuffer.upload(indices);
}
else {
var gl = this.renderer.gl;
this.indexBuffer = glCore.GLBuffer.createIndexBuffer(gl, this.indices, gl.STATIC_DRAW);
}
};
TileRenderer.prototype.getShader = function (useSquare) {
return useSquare ? this.squareShader : this.rectShader;
};
TileRenderer.prototype.destroy = function () {
_super.prototype.destroy.call(this);
this.rectShader.destroy();
this.squareShader.destroy();
this.rectShader = null;
this.squareShader = null;
};
;
return TileRenderer;
}(PIXI.ObjectRenderer));
TileRenderer.vbAutoincrement = 0;
TileRenderer.SCALE_MODE = PIXI.SCALE_MODES.LINEAR;
TileRenderer.DO_CLEAR = false;
tilemap.TileRenderer = TileRenderer;
PIXI.WebGLRenderer.registerPlugin('tilemap', TileRenderer);
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
var PIXI;
(function (PIXI) {
var tilemap;
(function (tilemap_1) {
var ZLayer = (function (_super) {
__extends(ZLayer, _super);
function ZLayer(tilemap, zIndex) {
var _this = _super.call(this) || this;
_this._lastAnimationFrame = -1;
_this.tilemap = tilemap;
_this.z = zIndex;
return _this;
}
ZLayer.prototype.clear = function () {
var layers = this.children;
for (var i = 0; i < layers.length; i++)
layers[i].clear();
this._previousLayers = 0;
};
ZLayer.prototype.cacheIfDirty = function () {
var tilemap = this.tilemap;
var layers = this.children;
var modified = this._previousLayers != layers.length;
this._previousLayers = layers.length;
var buf = this.canvasBuffer;
var tempRender = this._tempRender;
if (!buf) {
buf = this.canvasBuffer = document.createElement('canvas');
tempRender = this._tempRender = new PIXI.CanvasRenderer(100, 100, { view: buf });
tempRender.context = tempRender.rootContext;
tempRender.plugins.tilemap.dontUseTransform = true;
}
if (buf.width != tilemap._layerWidth ||
buf.height != tilemap._layerHeight) {
buf.width = tilemap._layerWidth;
buf.height = tilemap._layerHeight;
modified = true;
}
var i;
if (!modified) {
for (i = 0; i < layers.length; i++) {
if (layers[i].isModified(this._lastAnimationFrame != tilemap.animationFrame)) {
modified = true;
break;
}
}
}
this._lastAnimationFrame = tilemap.animationFrame;
if (modified) {
if (tilemap._hackRenderer) {
tilemap._hackRenderer(tempRender);
}
tempRender.context.clearRect(0, 0, buf.width, buf.height);
for (i = 0; i < layers.length; i++) {
layers[i].clearModify();
layers[i].renderCanvas(tempRender);
}
}
this.layerTransform = this.worldTransform;
for (i = 0; i < layers.length; i++) {
this.layerTransform = layers[i].worldTransform;
break;
}
};
;
ZLayer.prototype.renderCanvas = function (renderer) {
this.cacheIfDirty();
var wt = this.layerTransform;
renderer.context.setTransform(wt.a, wt.b, wt.c, wt.d, wt.tx * renderer.resolution, wt.ty * renderer.resolution);
var tilemap = this.tilemap;
renderer.context.drawImage(this.canvasBuffer, 0, 0);
};
;
return ZLayer;
}(PIXI.Container));
tilemap_1.ZLayer = ZLayer;
})(tilemap = PIXI.tilemap || (PIXI.tilemap = {}));
})(PIXI || (PIXI = {}));
//# sourceMappingURL=pixi-tilemap.js.map

40318
www/js/libs/pixi.js Normal file

File diff suppressed because it is too large Load diff

9
www/js/main.js Normal file
View file

@ -0,0 +1,9 @@
//=============================================================================
// main.js
//=============================================================================
PluginManager.setup($plugins);
window.onload = function() {
SceneManager.run(Scene_Boot);
};

3716
www/js/plugins.js Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,17 @@
//=============================================================================
// -------------- / N---------------------.js
//=============================================================================
/*:ja
* @plugindesc -----------------------------------------------------------
* @---------------------
*
* @help このプラグインにはプラグインコマンドはありません
*/
/*:en
* @plugindesc -----------------------------------------------------------
* @---------------------
*
* @help This plugin does not provide plugin commands.
*/

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,292 @@
//=============================================================================
// AdditionalDescription.js
// ----------------------------------------------------------------------------
// (C)2016 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 2.0.1 2020/10/17 キーコードの仕様を撤廃
// 英語ヘルプを作成
// 2.0.0 2020/10/17 初期表示時に追加テキストの方が表示される設定を追加
// プラグインの型指定機能に対応
// 1.1.4 2017/01/12 メモ欄の値が空で設定された場合にエラーが発生するかもしれない問題を修正
// 1.1.3 2016/09/20 説明文の文字に「>」「<」を表示できるようエスケープ処理を追加
// 1.1.2 2016/09/07 同じ説明文のアイテムが連続していたときに切り替えメッセージが表示されない問題を修正
// 1.1.1 2016/09/06 親のウィンドウがアクティブなときのみ操作できるよう修正
// 1.1.0 2016/09/01 マウス操作、タッチ操作でも切り替えられる機能を追加
// 切り替え中にキャンセルしたときに描画内容が一部残ってしまう不具合を修正
// 1.0.0 2016/09/01 初版
// ----------------------------------------------------------------------------
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc AdditionalDescription
* @author triacontane
*
* @param ButtonName
* @desc The name of the button to switch help.
* @default shift
* @type combo
* @option shift
* @option control
* @option tab
*
* @param ChangePage
* @desc Page change sign string that appears in the lower right corner of the window.
* @default Push Shift
*
* @param ValidTouch
* @desc You can also switch windows by touching or left-clicking the help window.
* @default true
* @type boolean
*
* @param InitialReverse
* @desc The page is displayed in the initial view with the pages switched.
* @default false
* @type boolean
*
* @help You can add a second page to the help window
* to display any information you want.
* Replace it with the specified key.
*
* Please write the following in the notes section of the item/skill database.
* <ADDescription:sampleText> # The string "sampleText" is displayed.
* <ADScript:sampleScript> # The evaluation result of "sampleScript" is displayed.
*
* In both cases, a set of control characters are available.
* In addition, the target data can be referenced in the script by a local variable called "item".
* Database information such as consumption MP and price can be displayed dynamically.
*/
/*:ja
* @plugindesc ヘルプ説明追加プラグイン
* @author トリアコンタン
*
* @param ButtonName
* @text ボタン名
* @desc ヘルプを切り替えるボタン名です
* @default shift
* @type combo
* @option shift
* @option control
* @option tab
*
* @param ChangePage
* @text ページ切り替え
* @desc ウィンドウの右下に表示されるページ切り替えサイン文字列です制御文字が使用できます
* @default Push Shift
*
* @param ValidTouch
* @text タッチ操作有効
* @desc ヘルプウィンドウをタッチ or 左クリックすることでもウィンドウを切り替えることができます
* @default true
* @type boolean
*
* @param InitialReverse
* @text 初期状態で反転
* @desc 初期表示でページ切り替えされた状態で表示されます
* @default false
* @type boolean
*
* @help ヘルプウィンドウに2ページ目を追加して好きな情報を表示できます
* 指定されたキーで入れ替えます
*
* アイテムスキルのデータベースのメモ欄に以下の通り記述してください
* <AD説明:sampleText> # 文字列sampleTextが表示されます
* <ADDescription:sampleText> # 同上
* <ADスクリプト:sampleScript> #sampleScriptの評価結果が表示されます
* <ADScript:sampleScript> # 同上
*
* いずれも制御文字が一通り使用できます
* またスクリプト中ではitemというローカル変数で対象データを参照できます
* 消費MPや価格などのデータベース情報を動的に表示できます
*
* このプラグインにはプラグインコマンドはありません
*
* 利用規約
* 作者に無断で改変再配布が可能で利用形態商用18禁利用等
* についても制限はありません
* このプラグインはもうあなたのものです
*/
(function() {
'use strict';
var pluginName = 'AdditionalDescription';
var metaTagPrefix = 'AD';
var createPluginParameter = function(pluginName) {
var paramReplacer = function(key, value) {
if (value === 'null') {
return value;
}
if (value[0] === '"' && value[value.length - 1] === '"') {
return value;
}
try {
return JSON.parse(value);
} catch (e) {
return value;
}
};
var parameter = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer));
PluginManager.setParameters(pluginName, parameter);
return parameter;
};
var param = createPluginParameter(pluginName);
var getMetaValue = function(object, name) {
var metaTagName = metaTagPrefix + (name ? name : '');
return object.meta.hasOwnProperty(metaTagName) ? object.meta[metaTagName] : undefined;
};
var getMetaValues = function(object, names) {
if (!Array.isArray(names)) return getMetaValue(object, names);
for (var i = 0, n = names.length; i < n; i++) {
var value = getMetaValue(object, names[i]);
if (value !== undefined) return value;
}
return undefined;
};
//=============================================================================
// Window_Selectable
// 自分自身への参照をヘルプウィンドウに渡します。
//=============================================================================
var _Window_Selectable_setHelpWindow = Window_Selectable.prototype.setHelpWindow;
Window_Selectable.prototype.setHelpWindow = function(helpWindow) {
_Window_Selectable_setHelpWindow.apply(this, arguments);
this._helpWindow.setParentWindow(this);
};
//=============================================================================
// Window_Help
// 追加ヘルプ情報の保持と表示
//=============================================================================
var _Window_Help_initialize = Window_Help.prototype.initialize;
Window_Help.prototype.initialize = function(numLines) {
_Window_Help_initialize.apply(this, arguments);
this._parentWindows = [];
};
var _Window_Help_setItem = Window_Help.prototype.setItem;
Window_Help.prototype.setItem = function(item) {
this._anotherText = null;
this._item = item;
this._itemExist = true;
if (item) {
this.setAnother();
}
_Window_Help_setItem.apply(this, arguments);
this._originalText = this._text;
this._anotherTextVisible = false;
this._item = null;
this._itemExist = false;
if (param.InitialReverse) {
this.toggleDesc();
}
};
var _Window_Help_setText = Window_Help.prototype.setText;
Window_Help.prototype.setText = function(text) {
if (this._text === text) {
this.refresh();
}
_Window_Help_setText.apply(this, arguments);
};
Window_Help.prototype.setParentWindow = function(parentWindow) {
if (!this._parentWindows.contains(parentWindow)) {
this._parentWindows.push(parentWindow);
}
};
Window_Help.prototype.setAnother = function() {
this.setAnotherDescription();
if (this._anotherText === null) {
this.setAnotherScript();
}
};
Window_Help.prototype.setAnotherScript = function() {
var item = this._item;
var value = getMetaValues(item, ['スクリプト', 'Script']);
if (value) {
try {
this._anotherText = String(eval(this.convertEscapeCharacters(value)));
} catch (e) {
console.error(e.stack);
}
}
};
Window_Help.prototype.setAnotherDescription = function() {
var item = this._item;
var value = getMetaValues(item, ['説明', 'Description']);
if (value) {
this._anotherText = this.convertEscapeCharacters(value);
}
};
var _Window_Help_refresh = Window_Help.prototype.refresh;
Window_Help.prototype.refresh = function() {
_Window_Help_refresh.apply(this, arguments);
this.refreshChangePage();
};
Window_Help.prototype.refreshChangePage = function() {
if (param.ChangePage && this._anotherText && this._itemExist) {
var width = this.drawTextEx(param.ChangePage, 0, this.contents.height);
var x = this.contentsWidth() - width;
var y = this.contentsHeight() - this.lineHeight();
this.drawTextEx(param.ChangePage, x, y);
} else {
this._anotherText = null;
this._originalText = null;
}
};
var _Window_Help_update = Window_Help.prototype.update;
Window_Help.prototype.update = function() {
if (this.hasOwnProperty('update')) {
_Window_Help_update.apply(this, arguments);
} else {
Window_Base.prototype.update.call(this);
}
if (this.isOpen() && this.visible) {
this.updateAnotherDesc();
}
};
Window_Help.prototype.updateAnotherDesc = function() {
if (this._anotherText && this.isAnotherTriggered() && this.isAnyParentActive()) {
SoundManager.playCursor();
this.toggleDesc();
}
};
Window_Help.prototype.toggleDesc = function() {
this._anotherTextVisible = !this._anotherTextVisible;
this._itemExist = true;
this.setText(this._anotherTextVisible ? this._anotherText : this._originalText);
this._itemExist = false;
};
Window_Help.prototype.isAnotherTriggered = function() {
return Input.isTriggered(param.ButtonName) ||
(this.isTouchedInsideFrame() && TouchInput.isTriggered() && param.ValidTouch);
};
Window_Help.prototype.isAnyParentActive = function() {
return this._parentWindows.some(function(win) {
return win.active;
});
};
Window_Help.prototype.isTouchedInsideFrame = Window_Selectable.prototype.isTouchedInsideFrame;
})();

View file

@ -0,0 +1,355 @@
//=============================================================================
// AdjustPictureGraphical.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015 Triacontane
// This plugin is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.1 2016/01/24 ピクチャが回転しているときも位置を把握できるよう修正
// 1.1.0 2015/12/26 グリッドの表示機能とグリッドにスナップ機能を追加
// Ctrl+Cで座標をコピーできる機能を追加
// 任意のマップを読み込んでテストする機能を追加
// 1.0.3 2015/12/20 ピクチャのボタン化プラグインとの競合を解消
// 1.0.2 2015/11/23 競合防止のため、タッチ関連の処理をSprite_Pictureに定義
// 1.0.1 2015/11/21 ピクチャ番号を出力するよう機能修正
// コンソールにログを出す機能を追加
// 1.0.0 2015/11/20 初版
// ----------------------------------------------------------------------------
// [Blog] : http://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc Plugin that adjust picture to graphical
* @author triacontane
*
* @param GridSize
* @desc View grid line
* @default 48
*
* @param TestMapId
* @desc Event test map id
* @default -1
*
* @help Plugin that adjust picture to graphical.
* Drag and drop on test screen.
* this is support plugin. No impact for game.
* Start for Event Test(Ctrl+R)
*
* Caution!
* When you set status 'on' this plugin at Plugin Manager,
* you have to save project(Ctrl+S) before test
*
* This plugin is released under the MIT License.
*/
/*:ja
* @plugindesc ピクチャのグラフィカルな位置調整プラグイン
* パラメータを変更したらプロジェクトの保存Ctrl+S
* @author トリアコンタン
*
* @param グリッドサイズ
* @desc ピクチャ調整中に指定サイズでグリッドを表示します0を指定すると非表示になります
* @default 48
*
* @param テストマップID
* @desc 任意のマップをイベントテストの舞台に設定できます
* @default -1
*
* @help イベントコマンドのテスト時にピクチャの表示位置を
* ドラッグドロップで微調整できます
* 左上のタイトルバーに選択したピクチャの座標が表示されるので
* テスト画面を表示させつつピクチャの座標を調整してください
* なおイベントコマンドのテスト以外では機能しません
* イベントコマンドのテストはイベントエディタからイベントコマンドを
* 選択して右クリックテストCtrl+Rで実行できます
*
* 注意
* プラグインマネージャーから当プラグインを有効にしたら
* テストを行う前にプロジェクトの保存Ctrl+Sを行ってください
*
* このプラグインにはプラグインコマンドはありません
*
* 利用規約
* 作者に無断で改変再配布が可能で利用形態商用18禁利用等
* についても制限はありません
* このプラグインはもうあなたのものです
*/
(function () {
'use strict';
// イベントテスト時以外は一切の機能を無効
if (!DataManager.isEventTest())return;
var pluginName = 'AdjustPictureGraphical';
//=============================================================================
// ローカル関数
// プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
//=============================================================================
var getParamNumber = function(paramNames, min, max) {
var value = getParamOther(paramNames);
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return (parseInt(value, 10) || 0).clamp(min, max);
};
var getParamOther = function(paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) {
var name = PluginManager.parameters(pluginName)[paramNames[i]];
if (name) return name;
}
return null;
};
//=============================================================================
// Input
// [c]を追加定義します。
//=============================================================================
Input.keyMapper[67] = 'copy';
//=============================================================================
// DataManager
// テスト用マップの読み込みを追加定義します。
//=============================================================================
var _DataManager_setupEventTest = DataManager.setupEventTest;
DataManager.setupEventTest = function() {
_DataManager_setupEventTest.call(this);
var mapId = getParamNumber(['TestMapId', 'テストマップID'], -1, 9999);
if (mapId > 0) $gamePlayer.reserveTransfer(mapId, 8, 6);
};
//=============================================================================
// Game_Picture
// ピクチャを掴んだ場合に移動を中断します。
//=============================================================================
Game_Picture.prototype.resetMove = function(x, y) {
this._x = x;
this._y = y;
this._duration = 0;
};
//=============================================================================
// Game_Screen
// 最後に選択したピクチャの座標を保存します。
//=============================================================================
var _Game_Screen_initialize = Game_Screen.prototype.initialize;
Game_Screen.prototype.initialize = function() {
_Game_Screen_initialize.call(this);
this._lastPictureX = null;
this._lastPictureY = null;
this._copyCount = 0;
this._infoPicture = '';
this._infoHelp = 'Shift:ウィンドウ表示切替 Ctrl+マウス:グリッドにスナップ Ctrl+C:座標コピー ';
this._infoCopy = '';
this._documentTitle = '';
};
var _Game_Screen_updatePictures = Game_Screen.prototype.updatePictures;
Game_Screen.prototype.updatePictures = function() {
_Game_Screen_updatePictures.call(this);
if (Utils.isNwjs() && Input.isPressed('control') && Input.isTriggered('copy')) {
if (this._lastPictureX == null || this._lastPictureY == null) return;
var clipboard = require('nw.gui').Clipboard.get();
var copyValue = '';
if (this._copyCount % 2 === 0) {
copyValue = this._lastPictureX.toString();
this._infoCopy = ' X座標[' + copyValue + ']をコピーしました。';
} else {
copyValue = this._lastPictureY.toString();
this._infoCopy = ' Y座標[' + copyValue + ']をコピーしました。';
}
clipboard.set(copyValue, 'text');
this._copyCount++;
}
var docTitle = this._infoHelp + this._infoPicture + this._infoCopy;
if (docTitle !== this._documentTitle) {
document.title = docTitle;
this._documentTitle = docTitle;
}
};
//=============================================================================
// Scene_Map
// テストイベント時の特別な処理
//=============================================================================
var _Scene_Map_update = Scene_Map.prototype.update;
Scene_Map.prototype.update = function() {
if (!$gameMap.isEventRunning()) this.updateEventTest();
_Scene_Map_update.call(this);
};
Scene_Map.prototype.updateEventTest = function() {
this._spriteset.checkDragPictures();
if (Input.isTriggered('shift')) {
if (!this._messageWindow.isOpen()) {
this._messageWindow.open();
} else {
this._messageWindow.close();
}
}
};
Scene_Map.prototype.isMapTouchOk = function() {
return false;
};
//=============================================================================
// Spriteset_Base
// 配下のピクチャから掴んでいるものを探します。
//=============================================================================
Spriteset_Base.prototype.checkDragPictures = function() {
this._pictureContainer.children.reverse().some(function(picture) {
return picture.checkDrag();
}, this);
this._pictureContainer.children.reverse();
};
var _Spriteset_Base_createLowerLayer = Spriteset_Base.prototype.createLowerLayer;
Spriteset_Base.prototype.createLowerLayer = function() {
_Spriteset_Base_createLowerLayer.call(this);
this.createGridSprite();
};
Spriteset_Base.prototype.createGridSprite = function() {
var size = getParamNumber(['GridSize', 'グリッドサイズ'], 0, Math.max(this.width, this.height));
if (size === 0) return;
this._gridSprite = new Sprite();
this._gridSprite.setFrame(0, 0, this.width, this.height);
var bitmap = new Bitmap(this.width, this.height);
for (var x = 0; x < this.width; x += size) {
bitmap.fillRect(x, 0, 1, this.height, 'rgba(255,255,255,1.0)');
}
for (var y = 0; y < this.height; y += size) {
bitmap.fillRect(0, y, this.width, 1, 'rgba(255,255,255,1.0)');
}
this._gridSprite.bitmap = bitmap;
this.addChild(this._gridSprite);
};
//=============================================================================
// Sprite_Picture
// テストイベント時にピクチャを掴みます。
//=============================================================================
var _Sprite_Picture_initialize = Sprite_Picture.prototype.initialize;
Sprite_Picture.prototype.initialize = function(pictureId) {
_Sprite_Picture_initialize.call(this, pictureId);
this._holding = false;
this._dx = 0;
this._dy = 0;
};
Sprite_Picture.prototype.checkDrag = function() {
var picture = this.picture();
if (picture != null) {
if (this.updateDragMove()) {
var result = 'PictureNum:[' + this._pictureId + '] X:[' + this.x + '] Y:[' + this.y + ']';
$gameScreen._lastPictureX = this.x;
$gameScreen._lastPictureY = this.y;
$gameScreen._infoPicture = result;
$gameScreen._infoCopy = '';
if (!this._holding) console.log(result);
picture.resetMove(this.x, this.y);
return true;
}
}
return false;
};
Sprite_Picture.prototype.updateDragMove = function() {
if (this.isTriggered() || (this._holding && TouchInput.isPressed())) {
if (!this._holding) this.hold();
var x = TouchInput.x - this._dx;
var y = TouchInput.y - this._dy;
if (Input.isPressed('control')) {
var size = getParamNumber(['GridSize', 'グリッドサイズ'], 0, Math.max(this.width, this.height));
if (size !== 0) {
x % size > size / 2 ? x += size - x % size : x -= x % size;
y % size > size / 2 ? y += size - y % size : y -= y % size;
}
}
this.move(x, y);
return true;
} else if (this._holding) {
this.release();
return true;
}
return false;
};
Sprite_Picture.prototype.hold = function() {
this._holding = true;
this._dx = TouchInput.x - this.x;
this._dy = TouchInput.y - this.y;
this.setBlendColor([255,255,255,192]);
};
Sprite_Picture.prototype.release = function() {
this._holding = false;
this.setBlendColor([0,0,0,0]);
};
//=============================================================================
// Sprite_Picture
// タッチ操作を可能にする共通部分
//=============================================================================
Sprite_Picture.prototype.screenWidth = function() {
return (this.width || 0) * this.scale.x;
};
Sprite_Picture.prototype.screenHeight = function() {
return (this.height || 0) * this.scale.y;
};
Sprite_Picture.prototype.screenX = function() {
return (this.x || 0) - this.anchor.x * this.screenWidth();
};
Sprite_Picture.prototype.screenY = function() {
return (this.y || 0) - this.anchor.y * this.screenHeight();
};
Sprite_Picture.prototype.minX = function() {
var width = this.screenWidth();
return Math.min(this.screenX(), this.screenX() + width);
};
Sprite_Picture.prototype.minY = function() {
var height = this.screenHeight();
return Math.min(this.screenY(), this.screenY() + height);
};
Sprite_Picture.prototype.maxX = function() {
var width = this.screenWidth();
return Math.max(this.screenX(), this.screenX() + width);
};
Sprite_Picture.prototype.maxY = function() {
var height = this.screenHeight();
return Math.max(this.screenY(), this.screenY() + height);
};
Sprite_Picture.prototype.isTouchPosInRect = function () {
var dx = TouchInput.x - this.x;
var dy = TouchInput.y - this.y;
var sin = Math.sin(-this.rotation);
var cos = Math.cos(-this.rotation);
var rx = this.x + Math.floor(dx * cos + dy * -sin);
var ry = this.y + Math.floor(dx * sin + dy * cos);
return (rx >= this.minX() && rx <= this.maxX() &&
ry >= this.minY() && ry <= this.maxY());
};
Sprite_Picture.prototype.isTouchable = function() {
return this.bitmap != null && this.visible && this.scale.x !== 0 && this.scale.y !== 0;
};
Sprite_Picture.prototype.isTriggered = function() {
return this.isTouchEvent(TouchInput.isTriggered);
};
Sprite_Picture.prototype.isTouchEvent = function(triggerFunc) {
return this.isTouchable() && triggerFunc.call(TouchInput) && this.isTouchPosInRect();
};
})();

View file

@ -0,0 +1,450 @@
//=============================================================================
// AnotherNewGame.js
// ----------------------------------------------------------------------------
// (C) 2015 Triacontane
// This plugin is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 3.0.0 2020/03/08 アナザーニューゲームコマンドを複数登録できるよう修正。以前のバージョンと互換性がありません。
// 2.0.0 2019/03/19 アナザーロード時に場所移動せず、セーブ位置から開始できる機能を追加
// アナザーニューゲーム時に自動でONになるスイッチを追加
// パラメータの型指定機能に対応
// 1.4.0 2017/06/18 アナザーニューゲームの追加位置を指定できる機能を追加
// 1.3.0 2017/05/27 ニューゲームを非表示にできる機能を追加
// 1.2.4 2017/05/23 プラグインコマンドのヘルプを修正
// 1.2.3 2017/01/25 同一サーバで同プラグインを適用した複数のゲームを公開する際に、設定が重複するのを避けるために管理番号を追加
// 1.2.2 2016/12/10 アナザーニューゲームをロードした際に、ロード元でイベントが実行中だった場合に続きが実行されてしまう現象を修正
// 1.2.1 2016/11/23 遠景タイトルプラグインParallaxTitle.jsと連携する設定を追加
// 1.2.0 2016/11/22 アナザーニューゲームを選択した際に、フェードアウトしなくなる設定を追加
// 1.1.0 2016/03/29 fftfanttさんからご提供いただいたコードを反映させ、アナザーニューゲーム選択時に
// 既存のセーブファイルをロードする機能を追加
// 1.0.1 2015/11/10 プラグイン適用中にセーブできなくなる不具合を修正
// 1.0.0 2015/11/07 初版
// ----------------------------------------------------------------------------
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc アナザーニューゲーム追加プラグイン
* @author トリアコンタン
*
* @param anotherDataList
* @text アナザーニューゲームリスト
* @desc アナザーニューゲームのコマンド一覧です
* @default []
* @type struct<COMMAND>[]
*
* @param manageNumber
* @text 管理番号
* @desc 同一サーバ内に複数のゲームを配布する場合のみゲームごとに異なる値を設定してください(RPGアツマールは対象外)
* @default
*
* @help バージョン3.0.0は以前のバージョンと互換性がありません
*
* タイトル画面のウィンドウの一番下にもう一つのニューゲームを追加します
* 選択するとニューゲームとは別に指定したマップに遷移します
* クリア後のおまけやCG回想モードスタッフクレジットミニゲーム隠し要素など
* 使い手次第で様々な用途に使えます
*
* 選択肢はあらかじめ非表示あるいは選択禁止にしておくことができます
* これらはプラグインコマンドから解除でき解除状態はセーブファイルを
* 超えてゲーム全体で共有されます解除した状態を再度禁止にすることもできます
*
* 設定はファイルAnotherNewGameMk2.rpgsaveに保存されます
*
* プラグインコマンド詳細
* イベントコマンドプラグインコマンドから実行
*
* ANG_VISIBLE 1 # [1]番目のアナザーニューゲームを表示にする
* ANG_ENABLE 1 # [1]番目のアナザーニューゲームを選択可能にする
* ANG_HIDDEN 1 # [1]番目のアナザーニューゲームを非表示にする
* ANG_DISABLE 1 # [1]番目のアナザーニューゲームを選択禁止にする
*
* 使用例1番目に登録したアナザーニューゲームを表示にする場合
* ANG_VISIBLE 1
*
* ANG_NEWGAME_HIDDEN # ニューゲームを非表示にする
* ANG_NEWGAME_VISIBLE # ニューゲームを表示にする
*
* ニューゲームを非表示にする機能はゲームが開始できなくなる場合が
* あるので注意して使用してください
*
* 利用規約
* 作者に無断で改変再配布が可能で利用形態商用18禁利用等
* についても制限はありません
* このプラグインはもうあなたのものです
*/
/*~struct~COMMAND:
* @param name
* @text コマンド名称
* @desc タイトル画面に表示されるコマンド名です
* @default Another New Game
*
* @param mapId
* @text マップID
* @desc 移動先のマップIDです0を指定した場合場所移動しません
* @default 1
* @type number
*
* @param mapX
* @text X座標
* @desc 移動先のX座標です
* @default 1
* @type number
*
* @param mapY
* @text Y座標
* @desc 移動先のY座標です自然数
* @default 1
* @type number
*
* @param hidden
* @text デフォルト非表示
* @desc デフォルトで選択肢を非表示にしますプラグインコマンドで有効化できます
* @default false
* @type boolean
*
* @param disable
* @text デフォルト使用禁止
* @desc デフォルトで選択肢を選択禁止にしますプラグインコマンドで有効化できます
* @default false
* @type boolean
*
* @param addPosition
* @text 追加位置
* @desc アナザーニューゲームのコマンド追加位置です(1:ニューゲームの上2:コンティニューの上3:オプションの上)
* @default 0
* @type select
* @option オプションの下
* @value 0
* @option ニューゲームの上
* @value 1
* @option コンティニューの上
* @value 2
* @option オプションの上
* @value 3
*
* @param switchId
* @text 連動スイッチ番号
* @desc アナザーニューゲーム開始時に自動でONになるスイッチを指定できます
* @default 0
* @type switch
*
* @param fileLoad
* @text ファイルロード
* @desc アナザーニューゲーム選択時にロード画面に遷移して既存セーブデータをロードします
* @default false
* @type boolean
*
* @param noFadeout
* @text フェードアウト無効
* @desc アナザーニューゲーム選択時にオーディオや画面がフェードアウトしなくなります
* @default false
* @type boolean
*/
(function() {
var localExtraStageIndex = -1;
var createPluginParameter = function(pluginName) {
var paramReplacer = function(key, value) {
if (value === 'null') {
return value;
}
if (value[0] === '"' && value[value.length - 1] === '"') {
return value;
}
try {
return JSON.parse(value);
} catch (e) {
return value;
}
};
var parameter = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer));
PluginManager.setParameters(pluginName, parameter);
return parameter;
};
var parameters = createPluginParameter('AnotherNewGame');
parameters.anotherDataList = parameters.anotherDataList || [];
/**
* Convert escape characters.(require any window object)
* @param text Target text
* @returns {String} Converted text
*/
var convertEscapeCharacters = function(text) {
var windowLayer = SceneManager._scene._windowLayer;
return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text.toString()) : text;
};
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
var index = args[0] ? parseInt(convertEscapeCharacters(args[0])) - 1 : 0;
switch (command.toUpperCase()) {
case 'ANG_VISIBLE' :
ANGSettingManager.setVisible(index, true);
ANGSettingManager.save();
break;
case 'ANG_ENABLE' :
ANGSettingManager.setEnable(index, true);
ANGSettingManager.save();
break;
case 'ANG_HIDDEN' :
ANGSettingManager.setVisible(index, false);
ANGSettingManager.save();
break;
case 'ANG_DISABLE' :
ANGSettingManager.setEnable(index, false);
ANGSettingManager.save();
break;
case 'ANG_NEWGAME_HIDDEN' :
ANGSettingManager.newGameHidden = true;
ANGSettingManager.save();
break;
case 'ANG_NEWGAME_VISIBLE' :
ANGSettingManager.newGameHidden = false;
ANGSettingManager.save();
break;
}
};
//=============================================================================
// Game_Map
// アナザーニューゲームのロード時に実行していたイベントを中断します。
//=============================================================================
Game_Map.prototype.abortInterpreter = function() {
if (this.isEventRunning()) {
this._interpreter.command115();
}
};
//=============================================================================
// Scene_Title
// アナザーニューゲームの選択時の処理を追加定義します。
//=============================================================================
var _Scene_Title_create = Scene_Title.prototype.create;
Scene_Title.prototype.create = function() {
ANGSettingManager.loadData();
_Scene_Title_create.call(this);
};
var _Scene_Title_commandContinue = Scene_Title.prototype.commandContinue;
Scene_Title.prototype.commandContinue = function() {
_Scene_Title_commandContinue.call(this);
localExtraStageIndex = -1;
};
var _Scene_Title_commandNewGameSecond = Scene_Title.prototype.commandNewGameSecond;
Scene_Title.prototype.commandNewGameSecond = function(index) {
if (_Scene_Title_commandNewGameSecond) {
_Scene_Title_commandNewGameSecond.apply(this, arguments);
}
var command = parameters.anotherDataList[index];
if (command.noFadeout) {
this._noFadeout = true;
}
if (!command.fileLoad) {
var preMapId = $dataSystem.startMapId;
var preStartX = $dataSystem.startX;
var preStartY = $dataSystem.startY;
var newMapId = command.mapId;
if (newMapId > 0) {
$dataSystem.startMapId = newMapId;
$dataSystem.startX = command.mapX || 1;
$dataSystem.startY = command.mapY || 1;
}
this.commandNewGame();
$dataSystem.startMapId = preMapId;
$dataSystem.startX = preStartX;
$dataSystem.startY = preStartY;
var switchId = command.switchId;
if (switchId > 0) {
$gameSwitches.setValue(switchId, true);
}
} else {
this.commandContinue();
localExtraStageIndex = index;
}
};
var _Scene_Title_createCommandWindow = Scene_Title.prototype.createCommandWindow;
Scene_Title.prototype.createCommandWindow = function() {
_Scene_Title_createCommandWindow.call(this);
parameters.anotherDataList.forEach(function(command, index) {
if (ANGSettingManager.isVisible(index)) {
this._commandWindow.setHandler('nameGame2_' + index, this.commandNewGameSecond.bind(this, index));
}
}, this);
};
Scene_Title.prototype.fadeOutAll = function() {
if (!this._noFadeout) {
Scene_Base.prototype.fadeOutAll.apply(this, arguments);
}
};
//=============================================================================
// Scene_Load
// ロード成功時にアナザーポイントに移動します。
//=============================================================================
var _Scene_Load_onLoadSuccess = Scene_Load.prototype.onLoadSuccess;
Scene_Load.prototype.onLoadSuccess = function() {
_Scene_Load_onLoadSuccess.call(this);
if (localExtraStageIndex >= 0) {
var command = parameters.anotherDataList[localExtraStageIndex];
var mapId = command.mapId;
if (mapId > 0) {
var x = command.mapX || 1;
var y = command.mapY || 1;
$gamePlayer.reserveTransfer(mapId, x, y);
}
$gameMap.abortInterpreter();
DataManager.selectSavefileForNewGame();
var switchId = command.switchId;
if (switchId > 0) {
$gameSwitches.setValue(switchId, true);
}
}
};
//=============================================================================
// Window_TitleCommand
// アナザーニューゲームのこ選択肢を追加定義しますが。
//=============================================================================
var _Window_TitleCommand_makeCommandList = Window_TitleCommand.prototype.makeCommandList;
Window_TitleCommand.prototype.makeCommandList = function() {
_Window_TitleCommand_makeCommandList.call(this);
parameters.anotherDataList.forEach(function(command, index) {
if (ANGSettingManager.isVisible(index)) {
this.makeAnotherNewGameCommand(command, index);
}
}, this);
if (ANGSettingManager.newGameHidden) {
this.eraseCommandNewGame();
}
};
Window_TitleCommand.prototype.makeAnotherNewGameCommand = function(command, index) {
this.addCommand(command.name, 'nameGame2_' + index, ANGSettingManager.isEnable(index));
var addPosition = command.addPosition;
if (addPosition > 0) {
var anotherCommand = this._list.pop();
this._list.splice(addPosition - 1, 0, anotherCommand);
}
};
Window_TitleCommand.prototype.eraseCommandNewGame = function() {
this._list = this._list.filter(function(command) {
return command.symbol !== 'newGame';
});
};
var _Window_TitleCommand_updatePlacement = Window_TitleCommand.prototype.updatePlacement;
Window_TitleCommand.prototype.updatePlacement = function() {
_Window_TitleCommand_updatePlacement.call(this);
var addSize = this._list.length - 3;
if (addSize > 0) {
this.y += addSize * this.itemHeight() / 2;
}
};
//=============================================================================
// ANGManager
// アナザーニューゲームの設定ファイルのセーブとロードを定義します。
//=============================================================================
function ANGSettingManager() {
throw new Error('This is a static class');
}
ANGSettingManager._fileId = -1001;
ANGSettingManager._visible = [];
ANGSettingManager._enable = [];
ANGSettingManager.newGameHidden = false;
ANGSettingManager.make = function() {
var info = {};
info.visible = this._visible;
info.enable = this._enable;
info.newGameHidden = this.newGameHidden;
return info;
};
ANGSettingManager.isVisible = function(index) {
if (this._visible[index] !== undefined) {
return this._visible[index];
} else {
return !parameters.anotherDataList[index].hidden;
}
};
ANGSettingManager.setVisible = function(index, value) {
this._visible[index] = value;
};
ANGSettingManager.isEnable = function(index) {
if (this._enable[index] !== undefined) {
return this._enable[index];
} else {
return !parameters.anotherDataList[index].disable;
}
};
ANGSettingManager.setEnable = function(index, value) {
this._enable[index] = value;
};
ANGSettingManager.loadData = function() {
var info = this.load();
this._visible = info.visible || [];
this._enable = info.enable || [];
this.newGameHidden = !!info.newGameHidden;
};
ANGSettingManager.load = function() {
var json;
try {
json = StorageManager.load(this._fileId);
} catch (e) {
console.error(e);
return [];
}
if (json) {
return JSON.parse(json);
} else {
return [];
}
};
ANGSettingManager.save = function() {
var info = ANGSettingManager.make();
StorageManager.save(this._fileId, JSON.stringify(info));
};
//=============================================================================
// StorageManager
// アナザーニューゲームの設定ファイルのパス取得処理を追加定義します。
//=============================================================================
var _StorageManager_localFilePath = StorageManager.localFilePath;
StorageManager.localFilePath = function(savefileId) {
if (savefileId === ANGSettingManager._fileId) {
return this.localFileDirectoryPath() + 'AnotherNewGameMk2.rpgsave';
} else {
return _StorageManager_localFilePath.call(this, savefileId);
}
};
var _StorageManager_webStorageKey = StorageManager.webStorageKey;
StorageManager.webStorageKey = function(savefileId) {
if (savefileId === ANGSettingManager._fileId) {
return 'RPG AnotherNewGame Mk2' + parameters.manageNumber;
} else {
return _StorageManager_webStorageKey.call(this, savefileId);
}
};
})();

View file

@ -0,0 +1,637 @@
//=============================================================================
// AudioStreaming.js
// MIT License (C) 2019 くらむぼん
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// 2019/06/02 ループタグの指定範囲が全長を超えた場合のループ処理を修正
// 2019/06/02 デコード結果がない場合にエラーになるのを修正
// 2019/06/15 Windows7のFirefoxでストリーミングが無効なバグの場合、フォールバック
// 2019/06/16 暗号化音声ファイル対応
// 2019/06/22 Safariでサンプルレート800022050に対応
// 2019/06/27 Safariで一部音声が二重に流れることがある不具合を修正
// 2019/06/29 Cordovaで動作するように修正
// 2019/10/20 ループタグがない場合に二周目以降の先頭が途切れることがある不具合を修正
//=============================================================================
/*:
* @plugindesc Load audio faster and use only ogg files.
* @author krmbn0576
*
* @param mode
* @type select
* @option Enable
* @value 10
* @option Enable, and measure performance
* @value 11
* @option Disable
* @value 00
* @option Disable, and measure performance
* @value 01
* @desc Sets whether audio streaming is enabled, and whether measure performance.
* @default 10
*
* @param deleteM4a
* @type boolean
* @text Delete all m4a files
* @desc Delete all m4a files the next time you playtest. Backup your files before execute.
* @default false
*
* @help
* Load audio faster by audio streaming whether on browsers or on standalones.
* Use only ogg files to play the audio such as BGM and SE.
* You need no longer to prepare m4a files.
*
* Usage:
* Locate stbvorbis_stream.js, stbvorbis_stream_asm.js, and this plugin in plugins directory.
* Turn ON Only this plugin, but DO NOT register the others to plugin manager.
*
*
* License:
* MIT License
*
* Library:
* ogg decoder - stbvorbis.js (C) Hajime Hoshi, krmbn0576
* https://github.com/hajimehoshi/stbvorbis.js
*/
/*:ja
* @plugindesc 音声読み込みを高速化しoggファイルのみを使用します
* @author くらむぼん
*
* @param mode
* @type select
* @option 有効
* @value 10
* @option 有効読み込み速度を計測する
* @value 11
* @option 無効
* @value 00
* @option 無効読み込み速度を計測する
* @value 01
* @text モード
* @desc このプラグインを有効にするかどうか読み込み速度を計測するかどうかを設定します
* @default 10
*
* @param deleteM4a
* @type boolean
* @text m4aファイルを消去
* @desc 次にテストプレイを開始した時すべてのm4aファイルを削除します念の為バックアップを取った上でご活用ください
* @default false
*
* @help
* 音声ストリーミングにより音声読み込みを高速化します
* BGMや効果音などの音声ファイルにoggファイルのみを使用します
* 本プラグインを入れている場合m4aファイルを用意しなくても音声を再生できます
*
* 使い方
* pluginsフォルダに本プラグインとstbvorbis_stream.jsとstbvorbis_stream_asm.jsを配置してください
* 3つのうち本プラグインだけをプラグイン管理でONに設定してください
* 他のつはOFFでも構いませんしプラグイン管理に登録しなくても構いません
*
*
* ライセンス
* このプラグインを利用する時は作者名をプラグインから削除しないでください
* それ以外の制限はありませんお好きなようにどうぞ
*
* 使用ライブラリ
* oggデコーダー - stbvorbis.js (C) Hajime Hoshi, くらむぼん
* https://github.com/hajimehoshi/stbvorbis.js
*/
if (function() {
'use strict';
const parameters = PluginManager.parameters('AudioStreaming');
const enabled = parameters['mode'][0] === '1';
const measured = parameters['mode'][1] === '1';
const deleteM4a = parameters['deleteM4a'] === 'true';
const isTest =
location.search
.slice(1)
.split('&')
.contains('test') ||
(typeof window.nw !== 'undefined' &&
nw.App.argv.length > 0 &&
nw.App.argv[0].split('&').contains('test'));
if (deleteM4a && isTest && Utils.isNwjs()) {
const exec = require('child_process').exec;
let messages, success, failure;
if (navigator.language.contains('ja')) {
messages = [
'すべてのm4aファイルを削除しますか',
'本当に削除しますか?念のため、先にプロジェクトフォルダのバックアップをとっておくことをおすすめします。',
'こうかいしませんね?'
];
success = 'すべてのm4aファイルを削除しました。';
failure = 'm4aファイルの削除中にエラーが発生しました。 ';
} else {
messages = [
'Delete all m4a files?',
'Are you sure?',
'This cannot be undone. Are you really, REALLY sure?'
];
success = 'All m4a files have been deleted.';
failure = 'Error occured while deleting m4a files.';
}
if (messages.every(message => confirm(message))) {
const command =
process.platform === 'win32'
? 'del /s *.m4a'
: 'find . -name "*.m4a" -delete';
exec(command, error => alert(error ? failure : success));
}
}
if (measured) {
const div = document.createElement('div');
div.style.backgroundColor = 'AliceBlue';
div.style.position = 'fixed';
div.style.left = 0;
div.style.bottom = 0;
document.body.appendChild(div);
const updateInfo = info => {
const decodeEndTime = Date.now();
const content = `
name: ${info.url.split('/').pop()}<br>
mode: ${enabled ? 'streaming' : 'legacy'}<br>
load time: ${info.loadEndTime - info.loadStartTime}ms<br>
decode time: ${decodeEndTime - info.loadEndTime}ms<br>`;
if (div.innerHTML !== content) div.innerHTML = content;
div.style.zIndex = 11;
};
const _SceneManager_updateManagers = SceneManager.updateManagers;
SceneManager.updateManagers = function() {
const _WebAudio__load = WebAudio.prototype._load;
WebAudio.prototype._load = function(url) {
_WebAudio__load.apply(this, arguments);
this._info = { url, loadStartTime: Date.now() };
this.addLoadListener(() => updateInfo(this._info));
};
const _WebAudio__readLoopComments =
WebAudio.prototype._readLoopComments;
WebAudio.prototype._readLoopComments = function() {
this._info.loadEndTime = this._info.loadEndTime || Date.now();
_WebAudio__readLoopComments.apply(this, arguments);
};
SceneManager.updateManagers = _SceneManager_updateManagers;
SceneManager.updateManagers.apply(this, arguments);
};
}
return enabled;
}()) {
PluginManager.loadScript('stbvorbis_stream.js');
AudioManager.audioFileExt = function() {
return '.ogg';
};
fetch('').catch(_ => window.cordova = window.cordova || true);
if (window.ResourceHandler) {
ResourceHandler.fetchWithRetry = async function(
method,
url,
_retryCount = 0
) {
let retry;
try {
const response = await (!window.cordova ?
fetch(url, { credentials: 'same-origin' }) :
new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.responseType = 'blob';
xhr.onload = () => resolve(new Response(xhr.response, { status: xhr.status }));
xhr.onerror = reject;
xhr.open('GET', url);
xhr.send();
})
);
if (response.ok) {
switch (method) {
case 'stream':
if (response.body) {
return response.body.getReader();
}
const value = new Uint8Array(await response.arrayBuffer());
return {
_done: false,
read() {
if (!this._done) {
this._done = true;
return Promise.resolve({ done: false, value });
} else {
return Promise.resolve({ done: true });
}
}
};
case 'arrayBuffer':
case 'blob':
case 'formData':
case 'json':
case 'text':
return await response[method]();
default:
return Promise.reject(new Error('method not allowed'));
}
} else if (response.status < 500) {
// client error
retry = false;
} else {
// server error
retry = true;
}
} catch (error) {
if (Utils.isNwjs() || window.cordova) {
// local file error
retry = false;
} else {
// network error
retry = true;
}
}
if (!retry) {
const error = new Error('Failed to load: ' + url);
SceneManager.catchException(error);
throw error;
} else if (_retryCount < this._defaultRetryInterval.length) {
await new Promise(resolve =>
setTimeout(resolve, this._defaultRetryInterval[_retryCount])
);
return this.fetchWithRetry(method, url, _retryCount + 1);
} else {
if (this._reloaders.length === 0) {
Graphics.printLoadingError(url);
SceneManager.stop();
}
return new Promise(resolve =>
this._reloaders.push(() =>
resolve(this.fetchWithRetry(method, url, 0))
)
);
}
};
}
WebAudio.prototype.clear = function() {
this.stop();
this._chunks = [];
this._gainNode = null;
this._pannerNode = null;
this._totalTime = 0;
this._sampleRate = 0;
this._loopStart = 0;
this._loopLength = 0;
this._startTime = 0;
this._volume = 1;
this._pitch = 1;
this._pan = 0;
this._loadedTime = 0;
this._offset = 0;
this._loadListeners = [];
this._stopListeners = [];
this._hasError = false;
this._autoPlay = false;
this._isReady = false;
this._isPlaying = false;
this._loop = false;
};
WebAudio.prototype._load = async function(url) {
if (WebAudio._context) {
if (Decrypter.hasEncryptedAudio) {
url = Decrypter.extToEncryptExt(url);
}
const reader = await ResourceHandler.fetchWithRetry('stream', url);
this._loading(reader);
}
};
WebAudio.prototype._loading = async function(reader) {
try {
const decode = stbvorbis.decodeStream(result => this._onDecode(result));
while (true) {
const { done, value } = await reader.read();
if (done) {
decode({ eof: true });
return;
}
let array = value;
if (Decrypter.hasEncryptedAudio) {
array = Decrypter.decryptUint8Array(array);
}
this._readLoopComments(array);
decode({ data: array, eof: false });
}
} catch (error) {
console.error(error);
const autoPlay = this._autoPlay;
const loop = this._loop;
const pos = this.seek();
this.initialize(this._url);
if (autoPlay) {
this.play(loop, pos);
}
}
};
WebAudio.prototype._onDecode = function(result) {
if (result.error) {
console.error(result.error);
return;
}
if (result.eof) {
this._totalTime = this._loadedTime;
if (this._loopLength === 0) {
this._loopStart = 0;
this._loopLength = this._totalTime;
if (this._loop) {
this._createSourceNodes();
}
} else if (this._totalTime < this._loopStart + this._loopLength) {
this._loopLength = this._totalTime - this._loopStart;
if (this._loop) {
this._createSourceNodes();
}
}
if (this._totalTime <= this.seek()) {
this.stop();
}
return;
}
if (result.data[0].length === 0) {
return;
}
let buffer;
try {
buffer = WebAudio._context.createBuffer(
result.data.length,
result.data[0].length,
result.sampleRate
);
} catch (error) {
if (8000 <= result.sampleRate && result.sampleRate < 22050) {
result.sampleRate *= 3;
for (let i = 0; i < result.data.length; i++) {
const old = result.data[i];
result.data[i] = new Float32Array(result.data[i].length * 3);
for (let j = 0; j < old.length; j++) {
result.data[i][j * 3] = old[j];
result.data[i][j * 3 + 1] = old[j];
result.data[i][j * 3 + 2] = old[j];
}
}
buffer = WebAudio._context.createBuffer(
result.data.length,
result.data[0].length,
result.sampleRate
);
} else {
throw error;
}
}
for (let i = 0; i < result.data.length; i++) {
if (buffer.copyToChannel) {
buffer.copyToChannel(result.data[i], i);
} else {
buffer.getChannelData(i).set(result.data[i]);
}
}
const chunk = { buffer, sourceNode: null, when: this._loadedTime };
this._chunks.push(chunk);
this._loadedTime += buffer.duration;
this._createSourceNode(chunk);
if (!this._isReady && this._loadedTime >= this._offset) {
this._isReady = true;
this._onLoad();
}
};
Object.defineProperty(WebAudio.prototype, 'pitch', {
get: function() {
return this._pitch;
},
set: function(value) {
if (this._pitch !== value) {
this._pitch = value;
if (this.isPlaying()) {
this.play(this._loop, 0);
}
}
},
configurable: true
});
WebAudio.prototype.isReady = function() {
return this._isReady;
};
WebAudio.prototype.isPlaying = function() {
return this._isPlaying;
};
WebAudio.prototype.play = function(loop, offset) {
this._autoPlay = true;
this._loop = loop;
this._offset = offset || 0;
if (this._loop && this._loopLength > 0) {
while (this._offset >= this._loopStart + this._loopLength) {
this._offset -= this._loopLength;
}
}
if (this.isReady()) {
this._startPlaying();
}
};
WebAudio.prototype.stop = function() {
const wasPlaying = this.isPlaying();
this._isPlaying = false;
this._autoPlay = false;
this._removeNodes();
if (this._stopListeners && wasPlaying) {
this._stopListeners.forEach(listener => listener());
this._stopListeners.length = 0;
}
};
WebAudio.prototype.seek = function() {
if (WebAudio._context && this.isPlaying()) {
let pos =
(WebAudio._context.currentTime - this._startTime) * this._pitch;
if (this._loop && this._loopLength > 0) {
while (pos >= this._loopStart + this._loopLength) {
pos -= this._loopLength;
}
}
return pos;
} else {
return 0;
}
};
WebAudio.prototype._startPlaying = function() {
this._isPlaying = true;
this._startTime =
WebAudio._context.currentTime - this._offset / this._pitch;
this._removeNodes();
this._createNodes();
this._connectNodes();
this._createSourceNodes();
};
WebAudio.prototype._calcSourceNodeParams = function(chunk) {
const currentTime = WebAudio._context.currentTime;
const chunkEnd = chunk.when + chunk.buffer.duration;
const pos = this.seek();
let when, offset, duration;
if (this._loop && this._loopLength) {
const loopEnd = this._loopStart + this._loopLength;
if (pos <= chunk.when) {
when = currentTime + (chunk.when - pos) / this._pitch;
} else if (pos <= (window.AudioContext ? chunkEnd : chunkEnd - 0.0001)) {
when = currentTime;
offset = pos - chunk.when;
} else if (this._loopStart <= pos) {
when =
currentTime +
(chunk.when - pos + this._loopLength) / this._pitch;
} else {
return;
}
if (this._loopStart <= pos && chunk.when < this._loopStart) {
if (!offset) {
when += (this._loopStart - chunk.when) / this._pitch;
offset = this._loopStart - chunk.when;
}
if (chunk.buffer.duration <= offset) {
return;
}
}
if (loopEnd < chunkEnd) {
if (!offset) {
offset = 0;
}
duration = loopEnd - chunk.when - offset;
if (duration <= 0) {
return;
}
}
} else {
if (pos <= chunk.when) {
when = currentTime + (chunk.when - pos) / this._pitch;
} else if (pos <= (window.AudioContext ? chunkEnd : chunkEnd - 0.0001)) {
when = currentTime;
offset = pos - chunk.when;
} else {
return;
}
}
return { when, offset, duration };
};
WebAudio.prototype._createSourceNode = function(chunk) {
if (!this.isPlaying() || !chunk) {
return;
}
if (chunk.sourceNode) {
chunk.sourceNode.onended = null;
chunk.sourceNode.stop();
chunk.sourceNode = null;
}
const params = this._calcSourceNodeParams(chunk);
if (!params) {
if (!this._reservedSeName && this._loopLength) {
this._chunks[this._chunks.indexOf(chunk)] = null;
}
return;
}
const { when, offset, duration } = params;
const context = WebAudio._context;
const sourceNode = context.createBufferSource();
sourceNode.onended = _ => {
this._createSourceNode(chunk);
if (this._totalTime && this._totalTime <= this.seek()) {
this.stop();
}
};
sourceNode.buffer = chunk.buffer;
sourceNode.playbackRate.setValueAtTime(this._pitch, context.currentTime);
sourceNode.connect(this._gainNode);
sourceNode.start(when, offset, duration);
chunk.sourceNode = sourceNode;
};
WebAudio.prototype._createSourceNodes = function() {
this._chunks.forEach(chunk => this._createSourceNode(chunk));
};
WebAudio.prototype._createNodes = function() {
const context = WebAudio._context;
this._gainNode = context.createGain();
this._gainNode.gain.setValueAtTime(this._volume, context.currentTime);
this._pannerNode = context.createPanner();
this._pannerNode.panningModel = 'equalpower';
this._updatePanner();
};
WebAudio.prototype._connectNodes = function() {
this._gainNode.connect(this._pannerNode);
this._pannerNode.connect(WebAudio._masterGainNode);
};
WebAudio.prototype._removeNodes = function() {
if (this._chunks) {
this._chunks
.filter(chunk => chunk && chunk.sourceNode)
.forEach(chunk => {
chunk.sourceNode.onended = null;
chunk.sourceNode.stop();
chunk.sourceNode = null;
});
}
this._gainNode = null;
this._pannerNode = null;
};
WebAudio.prototype._onLoad = function() {
if (this._autoPlay) {
this.play(this._loop, this._offset);
}
this._loadListeners.forEach(listener => listener());
this._loadListeners.length = 0;
};
WebAudio.prototype._readLoopComments = function(array) {
if (this._sampleRate === 0) {
this._readOgg(array);
if (this._loopLength > 0 && this._sampleRate > 0) {
this._loopStart /= this._sampleRate;
this._loopLength /= this._sampleRate;
}
}
};
Decrypter.decryptUint8Array = function(uint8Array) {
const ref = this.SIGNATURE + this.VER + this.REMAIN;
for (let i = 0; i < this._headerlength; i++) {
if (uint8Array[i] !== parseInt('0x' + ref.substr(i * 2, 2), 16)) {
return uint8Array;
}
}
uint8Array = new Uint8Array(uint8Array.buffer, this._headerlength);
this.readEncryptionkey();
for (var i = 0; i < this._headerlength; i++) {
uint8Array[i] = uint8Array[i] ^ parseInt(this._encryptionKey[i], 16);
}
return uint8Array;
};
}

View file

@ -0,0 +1,518 @@
//=============================================================================
// AutomaticState.js
// ----------------------------------------------------------------------------
// Copyright (c) 2015-2017 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.4.0 2017/09/13 自動ステート対象をアクター、敵キャラIDで限定するときに複数指定できる機能を追加
// 1.3.1 2017/08/06 メモリ上にロードされていないアクターの自動ステートチェックが実行されるとエラーになる現象を修正
// 処理の軽量化
// 1.3.0 2017/07/21 パーティの並び順で自動ステートを付与する機能を追加
// 1.2.5 2017/05/27 競合の可能性のある記述Objectクラスへのプロパティ追加をリファクタリング
// 1.2.4 2017/05/27 全回復の直後に自動ステートが解除されてしまう問題を修正
// 1.2.3 2017/02/16 1.2.0以降、下限MPの設定が無効になっていた問題を修正
// 1.2.2 2017/02/07 端末依存の記述を削除
// 1.2.1 2017/01/17 1.2.0でスイッチの項目が正しく機能しなかった問題を修正
// 1.2.0 2017/01/14 ステート自動付与の条件に計算式を適用できる機能を追加
// 処理の軽量化
// 1.1.2 2016/06/03 スペルミス修正
// 1.1.1 2016/05/23 条件式で割合を算出する際に端数を切り捨てるよう修正
// 1.1.0 2016/05/22 複数の条件を適用できるよう修正
// 1.0.2 2016/04/30 アクターと敵キャラ限定のオートステートが一部正しく機能していなかった問題を修正
// 1.0.1 2016/02/14 オートステートの追加時にメッセージを表示する仕様を追加
// 1.0.0 2016/02/08 初版
// ----------------------------------------------------------------------------
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc ステート自動付与プラグイン
* @author トリアコンタン
*
* @help AutomaticState.js
*
* 条件を満たしている間指定したステートを付与します
* ステートのメモ欄に以下の書式で条件を入力してください
*
* メモ欄書式ステートIDには制御文字を利用できます
*
* 1. 自動付与ステートの条件
* <AS上限HP:HPの割合[百分率]>
* 指定したHP(割合)を上回っている>=対象ステートを付与する
* <AS下限HP:HPの割合[百分率]>
* 指定したHP(割合)を下回っている<=対象ステートを付与する
* <AS上限MP:MPの割合[百分率]>
* 指定したMP(割合)を上回っている>=対象ステートを付与する
* <AS下限MP:MPの割合[百分率]>
* 指定したMP(割合)を下回っている<=対象ステートを付与する
* <AS上限TP:TPの割合[百分率]>
* 指定したMP(割合)を上回っている>=対象ステートを付与する
* <AS下限TP:TPの割合[百分率]>
* 指定したMP(割合)を下回っている<=対象ステートを付与する
* <AS武器装備:武器ID>
* 指定した武器を装備している間対象ステートを付与する
* <AS防具装備:防具ID>
* 指定した武器を装備している間対象ステートを付与する
* <ASスイッチ:スイッチID>
* 指定したスイッチがONになっている間対象ステートを付与する
* <AS計算式:JS計算式>
* 指定したJavaScript計算式がtrueの間対象ステートを付与する
* <AS並び順:インデックス>
* 並び順(1)が指定した値と一致する間対象ステートを付与する
*
* 計算式中で不等号を使いたい場合以下のように記述してください
* < &lt;
* > &gt;
* <AS計算式:\v[2] &gt; 1> // 変数[2]が1より大きい場合
*
* 2. 自動付与ステートの対象
* <ASアクター:アクターID>
* ステート自動付与の対象を指定したアクターのみに設定する
* IDの指定がない場合全てのアクターに有効になる
* 複数のアクターを指定したい場合数値をカンマで区切る
* <ASアクター:1,2,3>
*
* <AS敵キャラ:敵キャラID>
* ステート自動付与の対象を指定した敵キャラのみに設定する
* IDの指定がない場合全ての敵キャラに有効になる
* 複数の敵キャラを指定したい場合数値をカンマで区切る
* <AS敵キャラ:1,2,3>
*
* 複数の条件が指定された場合は全ての条件を満たした場合のみ
* ステートが付与されます
*
* スクリプト
* 自動付与ステートが有効になったときに所定のメッセージを表示する場合
* $gameSystem.automaticStateAddMessage = true;
*
* 自動付与ステートが有効になったときに所定のメッセージを表示しない場合
* $gameSystem.automaticStateAddMessage = false;
*
* 利用規約
* 作者に無断で改変再配布が可能で利用形態商用18禁利用等
* についても制限はありません
* このプラグインはもうあなたのものです
*/
(function () {
'use strict';
var metaTagPrefix = 'AS';
var getArgNumber = function (arg, min, max) {
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return (parseInt(convertEscapeCharacters(arg)) || 0).clamp(min, max);
};
var convertEscapeCharacters = function(text) {
if (text == null || text === true) text = '';
text = text.replace(/&gt;?/gi, '>');
text = text.replace(/&lt;?/gi, '<');
text = text.replace(/\\/g, '\x1b');
text = text.replace(/\x1b\x1b/g, '\\');
text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
return $gameVariables.value(parseInt(arguments[1]));
}.bind(this));
text = text.replace(/\x1bN\[(\d+)\]/gi, function() {
var actor = parseInt(arguments[1]) >= 1 ? $gameActors.actor(parseInt(arguments[1])) : null;
return actor ? actor.name() : '';
}.bind(this));
text = text.replace(/\x1bP\[(\d+)\]/gi, function() {
var actor = parseInt(arguments[1]) >= 1 ? $gameParty.members()[parseInt(arguments[1]) - 1] : null;
return actor ? actor.name() : '';
}.bind(this));
text = text.replace(/\x1bG/gi, TextManager.currencyUnit);
return text;
};
var isEmpty = function(that) {
return Object.keys(that).length <= 0;
};
var iterate = function(that, handler) {
Object.keys(that).forEach(function(key, index) {
handler.call(that, key, that[key], index);
});
};
//=============================================================================
// Game_System
// 自動付与ステートのメッセージ表示フラグを定義します。
//=============================================================================
var _Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
_Game_System_initialize.apply(this, arguments);
this.automaticStateAddMessage = null;
};
//=============================================================================
// Game_BattlerBase
// 自動付与ステートの更新処理を定義します。
//=============================================================================
Game_BattlerBase.prototype.updateAutomaticState = function() {
DataManager.iterateAutomaticState(function(state) {
if (!state || isEmpty(state.meta)) return;
var stateId = state.id;
var result = this.isAutomaticValid(state);
if (result === null) return;
if (result) {
if (!this.isStateAffected(stateId) && this.isStateAddable(stateId)) {
this.addState(stateId);
if ($gameSystem.automaticStateAddMessage) this.showAddedStates();
this._result.deleteAddedStates(stateId);
}
} else {
if (this.isStateAffected(stateId)) {
this.removeState(stateId);
this._result.deleteRemovedStates(stateId);
}
}
}.bind(this));
};
Game_BattlerBase.prototype.showAddedStates = function() {
};
Game_BattlerBase.prototype.isAutomaticValid = function(state, result) {
this._automaticTargetState = state;
if (this.isAutoStateBattler()) {
result = true;
} else {
return false;
}
var switchId = this.getStateMetaNumber(0, 1);
if (switchId !== null) {
if ($gameSwitches.value(switchId)) {
result = true;
} else {
return false;
}
}
var formula = this.getStateMetaString(1);
if (formula !== null) {
if (eval(formula)) {
result = true;
} else {
return false;
}
}
var upperLimitHp = this.getStateMetaNumber(2, 0, 100);
if (upperLimitHp !== null) {
if (Math.floor(this.hpRate() * 100) >= upperLimitHp) {
result = true;
} else {
return false;
}
}
var lowerLimitHp = this.getStateMetaNumber(3, 0, 100);
if (lowerLimitHp !== null) {
if (Math.floor(this.hpRate() * 100) <= lowerLimitHp) {
result = true;
} else {
return false;
}
}
var upperLimitMp = this.getStateMetaNumber(4, 0, 100);
if (upperLimitMp !== null) {
if (Math.floor(this.mpRate() * 100) >= upperLimitMp) {
result = true;
} else {
return false;
}
}
var lowerLimitMp = this.getStateMetaNumber(5, 0, 100);
if (lowerLimitMp !== null) {
if (Math.floor(this.mpRate() * 100) <= lowerLimitMp) {
result = true;
} else {
return false;
}
}
var upperLimitTp = this.getStateMetaNumber(6, 0, 100);
if (upperLimitTp !== null) {
if (Math.floor(this.tpRate() * 100) >= upperLimitTp) {
result = true;
} else {
return false;
}
}
var lowerLimitTp = this.getStateMetaNumber(7, 0, 100);
if (lowerLimitTp !== null) {
if (Math.floor(this.tpRate() * 100) <= lowerLimitTp) {
result = true;
} else {
return false;
}
}
var unitIndex = this.getStateMetaNumber(12, 0);
if (unitIndex !== null) {
if (this.index() === unitIndex - 1) {
result = true;
} else {
return false;
}
}
return result;
};
Game_BattlerBase.prototype.index = function() {
return 0;
};
Game_BattlerBase.prototype.getStateMetaNumber = function(tagIndex, min, max) {
var value = this._automaticTargetState.meta[DataManager.getAutomaticTagName(tagIndex)];
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return value !== undefined ? getArgNumber(value, min, max) : null;
};
Game_BattlerBase.prototype.getStateMetaString = function(tagIndex) {
var value = this._automaticTargetState.meta[DataManager.getAutomaticTagName(tagIndex)];
return value !== undefined ? convertEscapeCharacters(value) : null;
};
Game_BattlerBase.prototype.isAutoStateBattler = function() {
if (this.isStateMetaInfo(this.getOppositeBattlerCheckTagIndex())) {
return false;
}
var battlerIdValue = this.getStateMetaString(this.getBattlerCheckTagIndex());
if (!battlerIdValue) {
return true;
}
var batterId = this.getBattlerId();
return battlerIdValue.split(',').some(function(stateTargetIdText) {
return batterId === parseInt(stateTargetIdText);
});
};
Game_BattlerBase.prototype.isStateMetaInfo = function(tagIndex) {
return this._automaticTargetState.meta.hasOwnProperty(DataManager.getAutomaticTagName(tagIndex));
};
var _Game_BattlerBase_setHp = Game_BattlerBase.prototype.setHp;
Game_BattlerBase.prototype.setHp = function(hp) {
_Game_BattlerBase_setHp.apply(this, arguments);
this.updateAutomaticState();
};
var _Game_BattlerBase_setMp = Game_BattlerBase.prototype.setMp;
Game_BattlerBase.prototype.setMp = function(mp) {
_Game_BattlerBase_setMp.apply(this, arguments);
this.updateAutomaticState();
};
var _Game_BattlerBase_setTp = Game_BattlerBase.prototype.setTp;
Game_BattlerBase.prototype.setTp = function(tp) {
_Game_BattlerBase_setTp.apply(this, arguments);
this.updateAutomaticState();
};
var _Game_BattlerBase_recoverAll = Game_BattlerBase.prototype.recoverAll;
Game_BattlerBase.prototype.recoverAll = function() {
_Game_BattlerBase_recoverAll.apply(this, arguments);
this.updateAutomaticState();
};
Game_BattlerBase.prototype.getBattlerId = function() {
return 0;
};
Game_BattlerBase.prototype.getBattlerCheckTagIndex = function() {
return 0;
};
Game_BattlerBase.prototype.getOppositeBattlerCheckTagIndex = function() {
return 0;
};
//=============================================================================
// Game_Actors
// データが存在するかどうかを返します。
//=============================================================================
Game_Actors.prototype.isExistData = function(actorId) {
return !!this._data[actorId];
};
//=============================================================================
// Game_Actor
// 自動付与ステートの更新処理を定義します。
//=============================================================================
Game_Actor.prototype.updateAutomaticState = function() {
if (!$gameActors.isExistData(this._actorId)) return;
Game_BattlerBase.prototype.updateAutomaticState.call(this);
};
Game_Actor.prototype.isAutomaticValid = function(state) {
this._automaticTargetState = state;
var result = null;
var weaponId = this.getStateMetaNumber(10, 1);
if (weaponId !== null) {
if (this.hasWeapon($dataWeapons[weaponId])) {
result = true;
} else {
return false;
}
}
var armorId = this.getStateMetaNumber(11, 1);
if (armorId !== null) {
if (this.hasArmor($dataArmors[armorId])) {
result = true;
} else {
return false;
}
}
return Game_BattlerBase.prototype.isAutomaticValid.call(this, state, result);
};
var _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
Game_Actor.prototype.changeEquip = function(slotId, item) {
_Game_Actor_changeEquip.apply(this, arguments);
this.updateAutomaticState();
};
Game_Actor.prototype.getBattlerId = function() {
return this._actorId;
};
Game_Actor.prototype.getBattlerCheckTagIndex = function() {
return 8;
};
Game_Actor.prototype.getOppositeBattlerCheckTagIndex = function() {
return Game_Enemy.prototype.getBattlerCheckTagIndex.call(this);
};
//=============================================================================
// Game_Enemy
// 自動付与ステートの更新処理を定義します。
//=============================================================================
Game_Enemy.prototype.getBattlerId = function() {
return this._enemyId;
};
Game_Enemy.prototype.getBattlerCheckTagIndex = function() {
return 9;
};
Game_Enemy.prototype.getOppositeBattlerCheckTagIndex = function() {
return Game_Actor.prototype.getBattlerCheckTagIndex.call(this);
};
//=============================================================================
// Game_Party
// 全てのアクターの自動付与ステートを更新します。
//=============================================================================
Game_Party.prototype.requestUpdateAutomaticState = function() {
this._requestUpdateAutomaticState = true;
};
Game_Party.prototype.updateAutomaticState = function() {
this.members().forEach(function(actor) {
actor.updateAutomaticState();
});
this._lastUpdateFrameAutomaticState = Graphics.frameCount;
};
Game_Party.prototype.updateAutomaticStateIfRequested = function() {
var coolTime = (this._lastUpdateFrameAutomaticState + 10 > Graphics.frameCount);
if (this._requestUpdateAutomaticState && !coolTime) {
this.updateAutomaticState();
this._requestUpdateAutomaticState = false;
}
};
var _Game_Party_swapOrder = Game_Party.prototype.swapOrder;
Game_Party.prototype.swapOrder = function(index1, index2) {
_Game_Party_swapOrder.apply(this, arguments);
this.updateAutomaticState();
};
//=============================================================================
// Game_Map
// 場所移動時に自動付与ステートを更新します。
//=============================================================================
var _Game_Map_refreshIfNeeded = Game_Map.prototype.refreshIfNeeded;
Game_Map.prototype.refreshIfNeeded = function() {
_Game_Map_refreshIfNeeded.apply(this, arguments);
$gameParty.updateAutomaticStateIfRequested();
};
var _Game_Map_setup = Game_Map.prototype.setup;
Game_Map.prototype.setup = function(mapId) {
_Game_Map_setup.apply(this, arguments);
$gameParty.updateAutomaticState();
};
var _Game_Map_refresh = Game_Map.prototype.refresh;
Game_Map.prototype.refresh = function() {
_Game_Map_refresh.apply(this, arguments);
$gameParty.requestUpdateAutomaticState();
};
//=============================================================================
// Game_ActionResult
// ステート付与、解除時のメッセージを抑制します。
//=============================================================================
Game_ActionResult.prototype.deleteRemovedStates = function(stateId) {
iterate(this.removedStates, function(key, value, index) {
if (value === stateId) this.removedStates.splice(index, 1);
}.bind(this));
};
Game_ActionResult.prototype.deleteAddedStates = function(stateId) {
iterate(this.addedStates, function(key, value, index) {
if (value === stateId) this.addedStates.splice(index, 1);
}.bind(this));
};
//=============================================================================
// DataManager
// データベースのロード時に自動付与ステートのみを抽出します。
//=============================================================================
DataManager._automaticTagNames = [
'スイッチ',
'計算式',
'上限HP',
'下限HP',
'上限MP',
'下限MP',
'上限TP',
'下限TP',
'アクター',
'敵キャラ',
'武器装備',
'防具装備',
'並び順'
];
var _DataManager_onLoad = DataManager.onLoad;
DataManager.onLoad = function(object) {
_DataManager_onLoad.apply(this, arguments);
if (object === $dataStates) {
this.setupAutomaticState();
}
};
DataManager.setupAutomaticState = function() {
this._automaticStates = $dataStates.filter(function(state) {
return this._automaticTagNames.some(function(tagName) {
return state && !!state.meta[metaTagPrefix + tagName];
})
}.bind(this));
};
DataManager.iterateAutomaticState = function(callBackFunc) {
this._automaticStates.forEach(callBackFunc);
};
DataManager.getAutomaticTagName = function(index) {
return metaTagPrefix + this._automaticTagNames[index];
};
})();

View file

@ -0,0 +1,647 @@
//=============================================================================
// BB_CustomSaveWindow.js
// Copyright (c) 2016 BB ENTERTAINMENT
//=============================================================================
/*:
* @plugindesc セーブウインドウ改造プラグイン
* @author ビービー
*
*
* @param OutsideFrameColor
* @desc 外枠の色を指定テキストカラー031
* デフォルト0
* @default 0
*
* @param OutsideFrameOpacity
* @desc 外枠の透明度を指定0255
* デフォルト64
* @default 64
*
* @param InsideFrameColor
* @desc 内枠の色を指定テキストカラー031
* デフォルト0
* @default 0
*
* @param InsideFrameOpacity
* @desc 内枠の透明度を指定0255
* デフォルト64
* @default 64
*
* @param MaxItem
* @desc 内枠の数を指定14
* デフォルト40で非表示
* @default 4
*
* @param Item0
* @desc ファイルID右に表示される項目 0=非表示 1=タイトル 2=プレイ時間 3=マップ名 4=所持金 5=セーブ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
* @default 1
*
* @param Item0Length
* @desc ファイルID右に表示される項目の横幅Item5(右上に表示される項目)に影響
* @default 300
*
* @param Item1title
* @desc 右下に表示される項目のタイトル
* デフォルトプレイ時間
* @default プレイ時間
*
* @param Item1
* @desc 右下に表示される項目 0=非表示 1=タイトル 2=プレイ時間 3=マップ名
* 4=所持金 5=セーブ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
* @default 2
*
* @param Item2title
* @desc 中央右に表示される項目のタイトル
* デフォルト現在地
* @default 現在地
*
* @param Item2
* @desc 中央右に表示される項目 0=非表示 1=タイトル 2=プレイ時間 3=マップ名
* 4=所持金 5=セーブ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
* デフォルト3
* @default 3
*
* @param Item3title
* @desc 中央下に表示される項目のタイトル
* デフォルト所持金
* @default 所持金
*
* @param Item3
* @desc 中央下に表示される項 0=非表示 1=タイトル 2=プレイ時間 3=マップ名
* 4=所持金 5=セーブ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
* デフォルト4
* @default 4
*
* @param Item4title
* @desc 中央に表示される項目のタイトル
* デフォルトセーブ回数
* @default セーブ回数
*
* @param Item4
* @desc 中央に表示される項目 0=非表示 1=タイトル 2=プレイ時間 3=マップ名
* 4=所持金 5=セーブ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
* デフォルト5
* @default 5
*
* @param Item5
* @desc 右上に表示される項目 0=非表示 1=タイトル 2=プレイ時間 3=マップ名
* 4=所持金 5=セーブ回数 6=変数項1 7=変数項2 8=変数項3 9=変数項4
* デフォルト6
* @default 6
*
* @param ItemValue1
* @desc 変数項目1に入れる変数のID
* デフォルト1
* @default 1
*
* @param ItemValue2
* @desc 変数項目2に入れる変数のID
* デフォルト2
* @default 2
*
* @param ItemValue3
* @desc 変数項目3に入れる変数のID
* デフォルト3
* @default 3
*
* @param ItemValue4
* @desc 変数項目4に入れる変数のID
* デフォルト4
* @default 4
*
* @param ItemValue1unit
* @desc 変数項目1の単位
* デフォルト無し
* @default
*
* @param ItemValue2unit
* @desc 変数項目2の単位
* デフォルト無し
* @default
*
* @param ItemValue3unit
* @desc 変数項目3の単位
* デフォルト無し
* @default
*
* @param ItemValue4unit
* @desc 変数項目4の単位
* デフォルト無し
* @default
*
* @param TitleFramelength1
* @desc 項目1のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
* @default 110
*
* @param TitleFramelength2
* @desc 項目2のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
* @default 110
*
* @param TitleFramelength3
* @desc 項目3のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
* @default 110
*
* @param TitleFramelength4
* @desc 項目4のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
* @default 110
*
* @param CharacterPositionY
* @desc キャラクターグラフィックのy座標=6 中央=12 =20
* デフォルト6
* @default 6
*
* @param LevelPositionY
* @desc レベルのy座標=72 =23
* デフォルト23
* @default 23
*
* @param LevelOnOff
* @desc レベルを表示するかしないかを指定0非表示1表示
* デフォルト1
* @default 1
*
* @help プラグインの説明
*
* 各パラメータの説明
* プラグイン内より少しだけ詳しくパラメータの説明をしていきます
*
* OutsideFrameColor
* 外枠の色をテキストカラーの031で指定できます
* デフォルト0
*
* OutsideFrameOpacity
* 外枠の透明度を0255の数値で指定できます0透明255不透明
* デフォルト64
*
* InsideFrameColor
* 内枠の色をテキストカラーの031で指定できます
* デフォルト0
*
* InsideFrameOpacity
* 内枠の透明度を0255の数値で指定できます0透明255不透明
* デフォルト64
*
* MaxItem
* 内枠の数を0から4のあいだで指定できます
* デフォルト40で非表示
*
* Item0
* ファイルID右に表示される項目を09の数字で指定します
* 0非表示
* 1ゲームタイトル
* 2プレイ時間
* 3マップ名
* 4所持金自動で通貨単位も表示されます
* 5セーブ回数
* 6パラメータのItemValue1で指定した変数の値パラメータのItemValue1unitで単位を指定できます
* 7パラメータのItemValue2で指定した変数の値パラメータのItemValue2unitで単位を指定できます
* 8パラメータのItemValue3で指定した変数の値パラメータのItemValue3unitで単位を指定できます
* 9パラメータのItemValue4で指定した変数の値パラメータのItemValue4unitで単位を指定できます
*
* Item0Length
* ファイルID右に表示される項目の横幅を指定できますItem5(右上に表示される項目)に影響
* 指定したサイズより文字列の幅が大きい場合指定したサイズに自動で文字幅が縮小されます
* default 300
*
* Item1title
* 右下に表示される項目のタイトルを好きな文字列で指定できます
* デフォルトプレイ時間
*
* Item1
* 右下に表示される項目を09の数字で指定します
* デフォルト2
*
* Item2title
* 中央右に表示される項目のタイトルを好きな文字列で指定できます
* デフォルト現在地
*
* Item2
* 中央右に表示される項目を09の数字で指定します
* デフォルト3
*
* Item3title
* 中央下に表示される項目のタイトルを好きな文字列で指定できます
* デフォルト所持金
*
* Item3
* 中央下に表示される項を09の数字で指定します
* デフォルト4
*
* Item4title
* 中央に表示される項目のタイトルを好きな文字列で指定できます
* デフォルトセーブ回数
*
* Item4
* 中央に表示される項目を09の数字で指定します
* デフォルト5
*
* Item5
* 右上に表示される項目を09の数字で指定します
* デフォルト6
*
* ItemValue1
* 変数項目1に入れる変数のIDを指定します
* デフォルト1
*
* ItemValue2
* 変数項目2に入れる変数のIDを指定します
* デフォルト2
*
* ItemValue3
* 変数項目3に入れる変数のIDを指定します
* デフォルト3
*
* ItemValue4
* 変数項目4に入れる変数のIDを指定します
* デフォルト4
*
* ItemValue1unit
* 変数項目1の単位を指定します
* デフォルト無し
*
* ItemValue2unit
* 変数項目2の単位を指定します
* デフォルト無し
*
* ItemValue3unit
* 変数項目3の単位を指定します
* デフォルト無し
*
* ItemValue4unit
* 変数項目4の単位を指定します
* デフォルト無し
*
* TitleFramelength1
* 項目1のタイトル枠の横幅を0274のあいだから指定します
* 文字数*20+10で文字の幅と同じ幅の枠を描画できます
* 指定した枠幅より文字幅がはみ出る場合自動で文字幅が縮小されます
* デフォルト1105文字
*
* TitleFramelength2
* 項目2のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
*
* TitleFramelength3
* 項目3のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
*
* TitleFramelength4
* 項目4のタイトル枠の横幅文字数*20+10(0274)
* デフォルト110
*
* CharacterPositionY
* キャラクターグラフィックのy座標を指定します
* 下の方に表示したい場合は6中央あたりなら12 上の方なら20が目安です
* デフォルト6
*
* LevelPositionY
* レベルのy座標を指定します下の方なら72上の方なら23が目安です
* レベルの表示はキャラクターグラフィックより手前に表示されます
* デフォルト23
*
* LevelOnOff
* レベルを表示するかしないかを指定0非表示1表示
* デフォルト1
*
*
* 変数に文字列を代入する方法
* 変数に文字列を代入するには
* イベントコマンドの"タブ1"にある"ゲーム進行"内の"変数の操作"を実行し
* 代入したい変数を選び代入にチェックを入れ
* スクリプトに書き込みます
* このとき ' この記号ではじめと終わりを挟むのを忘れないでください
* ' この記号はキーボードが半角英数のときにshiftを押しながらで打てます
*
* BB ENTERTAINMENT BLOGにて画像付きで解説しています
* 記事http://bb-entertainment-blog.blogspot.jp/2016/11/blog-post_27.html#more
*
* バージョン
* 1.0.2 2016/12/01 レベルの表示非表示を切り替えるパラメータを追加
* 1.0.1 2016/11/29 ヘルプを追記
* 1.0.0 2016/11/27 初版
*
* 利用規約
* このプラグインはMITライセンスのもとで公開されています
* Copyright (c) 2016 BB ENTERTAINMENT
* Released under the MIT License.
* http://opensource.org/licenses/mit-license.php
*
* コンタクト
* BB ENTERTAINMENT Twitter: https://twitter.com/BB_ENTER/
* BB ENTERTAINMENT BLOG : http://bb-entertainment-blog.blogspot.jp/
*/
(function() {
'use strict';
//-----------------------------------------------------------------------------
// プラグインパラメータ管理
//-----------------------------------------------------------------------------
var parameters = PluginManager.parameters('BB_CustomSaveWindow');
var BBSWInFC = Number(parameters['InsideFrameColor']);
var BBSWInFO = Number(parameters['InsideFrameOpacity']);
var BBSWOutFC = Number(parameters['OutsideFrameColor']);
var BBSWOutFO = Number(parameters['OutsideFrameOpacity']);
var BBSWMaxItem = Number(parameters['MaxItem']);
var BBSWItem0 = Number(parameters['Item0']);
var BBSWItem0L = Number(parameters['Item0Length']);
var BBSWItem1T = String(parameters['Item1title']);
var BBSWItem1 = Number(parameters['Item1']);
var BBSWItem2T = String(parameters['Item2title']);
var BBSWItem2 = Number(parameters['Item2']);
var BBSWItem3T = String(parameters['Item3title']);
var BBSWItem3 = Number(parameters['Item3']);
var BBSWItem4T = String(parameters['Item4title']);
var BBSWItem4 = Number(parameters['Item4']);
var BBSWItem5 = Number(parameters['Item5']);
var BBSWV1 = Number(parameters['ItemValue1']);
var BBSWV2 = Number(parameters['ItemValue2']);
var BBSWV3 = Number(parameters['ItemValue3']);
var BBSWV4 = Number(parameters['ItemValue4']);
var BBSWV1u = String(parameters['ItemValue1unit']);
var BBSWV2u = String(parameters['ItemValue2unit']);
var BBSWV3u = String(parameters['ItemValue3unit']);
var BBSWV4u = String(parameters['ItemValue4unit']);
var BBSWTF1 = Number(parameters['TitleFramelength1']);
var BBSWTF2 = Number(parameters['TitleFramelength2']);
var BBSWTF3 = Number(parameters['TitleFramelength3']);
var BBSWTF4 = Number(parameters['TitleFramelength4']);
var BBSWCPY = Number(parameters['CharacterPositionY']);
var BBSWLPY = Number(parameters['LevelPositionY']);
var BBSWLOO = Number(parameters['LevelOnOff']);
//-----------------------------------------------------------------------------
// セーブデータに名前を定義
//-----------------------------------------------------------------------------
var _DataManager_makeSavefileInfo = DataManager.makeSavefileInfo;
DataManager.makeSavefileInfo = function() {
var info = {};
info.globalId = this._globalId;
info.title = $dataSystem.gameTitle;
info.characters = $gameParty.charactersForSavefile();
info.faces = $gameParty.facesForSavefile();
info.playtime = $gameSystem.playtimeText();
info.timestamp = Date.now();
//add--------------------------------------------------------------------------
info.mapname = $gameMap.displayName();
info.gold = $gameParty._gold;
info.savecount = $gameSystem._saveCount;
info.value1 = $gameVariables.value(BBSWV1);
info.value2 = $gameVariables.value(BBSWV2);
info.value3 = $gameVariables.value(BBSWV3);
info.value4 = $gameVariables.value(BBSWV4);
if ($gameParty.size() == 1) {
info.level1 = $gameParty.members()[0].level;}
if ($gameParty.size() == 2) {
info.level1 = $gameParty.members()[0].level;
info.level2 = $gameParty.members()[1].level;}
if ($gameParty.size() == 3) {
info.level1 = $gameParty.members()[0].level;
info.level2 = $gameParty.members()[1].level;
info.level3 = $gameParty.members()[2].level;}
if ($gameParty.size() >= 4) {
info.level1 = $gameParty.members()[0].level;
info.level2 = $gameParty.members()[1].level;
info.level3 = $gameParty.members()[2].level;
info.level4 = $gameParty.members()[3].level;}
//-----------------------------------------------------------------------------
return info;
};
var _Window_SavefileList_prototype_drawItem = Window_SavefileList.prototype.drawItem;
Window_SavefileList.prototype.drawItem = function(index) {
var id = index + 1;
var valid = DataManager.isThisGameFile(id);
var info = DataManager.loadSavefileInfo(id);
var rect = this.itemRectForText(index);
//add--------------------------------------------------------------------------
this.contents.fontSize = 20;
this.contents.paintOpacity = BBSWInFO;
this.contents.fillRect(rect.x - 5, rect.y + 2, rect.width + 10, 2, this.textColor(BBSWInFC));
this.contents.fillRect(rect.x - 5, rect.y + 100, rect.width + 10, 2, this.textColor(BBSWInFC));
this.contents.fillRect(rect.x - 5, rect.y + 4, 2, rect.height - 7, this.textColor(BBSWInFC));
this.contents.fillRect(rect.x + 771, rect.y + 4, 2, rect.height - 7, this.textColor(BBSWInFC));
this.contents.fillRect(rect.x - 3, rect.y + 4, rect.width + 6, 28, this.textColor(BBSWInFC));
this.contents.paintOpacity = BBSWOutFO;
if (BBSWMaxItem >= 0) {
}
if (BBSWMaxItem >= 1) {
this.contents.fillRect(rect.x + 490, rect.y + 70, BBSWTF1, 26, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 490, rect.y + 68, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 490, rect.y + 96, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 764, rect.y + 70, 2, 26, this.textColor(BBSWOutFC));
} if (BBSWMaxItem >= 2) {
this.contents.fillRect(rect.x + 490, rect.y + 37, BBSWTF2, 26, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 490, rect.y + 35, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 490, rect.y + 63, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 764, rect.y + 37, 2, 26, this.textColor(BBSWOutFC));
} if (BBSWMaxItem >= 3) {
this.contents.fillRect(rect.x + 210, rect.y + 70, BBSWTF3, 26, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 210, rect.y + 68, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 210, rect.y + 96, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 484, rect.y + 70, 2, 26, this.textColor(BBSWOutFC));
} if (BBSWMaxItem >= 4) {
this.contents.fillRect(rect.x + 210, rect.y + 37, BBSWTF4, 26, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 210, rect.y + 35, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 210, rect.y + 63, 276, 2, this.textColor(BBSWOutFC));
this.contents.fillRect(rect.x + 484, rect.y + 37, 2, 26, this.textColor(BBSWOutFC));
}
this.contents.paintOpacity = 255;
//-----------------------------------------------------------------------------
this.resetTextColor();
if (this._mode === 'load') {
this.changePaintOpacity(valid);
}
this.drawFileId(id, rect.x, rect.y);
if (info) {
this.changePaintOpacity(valid);
this.drawContents(info, rect, valid);
this.changePaintOpacity(true);
}
};
var _Window_SavefileList_prototype_drawContents = Window_SavefileList.prototype.drawContents;
Window_SavefileList.prototype.drawContents = function(info, rect, valid) {
var bottom = rect.y + rect.height;
if (rect.width >= 420) {
//項目0------------------------------------------------------------------------
if (BBSWItem0 == 1) {
this.drawText(info.title, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 2) {
this.drawText(info.playtime, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 3) {
this.drawText(info.mapname, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 4) {
this.drawText(info.gold + TextManager.currencyUnit, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 5) {
this.drawText(info.savecount, rect.x + 142, rect.y, 312);
} else if (BBSWItem0 == 6) {
this.drawText(info.value1 + BBSWV1u, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 7) {
this.drawText(info.value2 + BBSWV2u, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 8) {
this.drawText(info.value3 + BBSWV3u, rect.x + 142, rect.y, BBSWItem0L);
} else if (BBSWItem0 == 9) {
this.drawText(info.value4 + BBSWV4u, rect.x + 142, rect.y, BBSWItem0L);
} else {
}
//-----------------------------------------------------------------------------
if (valid) {
//this.drawPartyCharacters(info, rect.x + 25, bottom - BBSWCPY);//-6 -12 -20
//レベル表示-------------------------------------------------------------------
if (BBSWLOO == 1) {
this.contents.fontSize = 16;
this.drawText(TextManager.levelA + " " + info.level1, rect.x + 5, rect.y + BBSWLPY, 40);//72 23
if (info.characters.length == 2) {
this.drawText(TextManager.levelA + " " + info.level2, rect.x + 5 + 48, rect.y + BBSWLPY, 40);}
if (info.characters.length == 3) {
this.drawText(TextManager.levelA + " " + info.level2, rect.x + 5 + 48, rect.y + BBSWLPY, 40);
this.drawText(TextManager.levelA + " " + info.level3, rect.x + 5 + 48 + 48, rect.y + BBSWLPY, 40);}
if (info.characters.length >= 4) {
this.drawText(TextManager.levelA + " " + info.level2, rect.x + 5 + 48, rect.y + BBSWLPY, 40);
this.drawText(TextManager.levelA + " " + info.level3, rect.x + 5 + 48 + 48, rect.y + BBSWLPY, 40);
this.drawText(TextManager.levelA + " " + info.level4, rect.x + 5 + 48 + 48 + 48, rect.y + BBSWLPY, 40);}
this.contents.fontSize = 20;
}
//-----------------------------------------------------------------------------
}
}
var lineHeight = this.lineHeight();
var y2 = bottom - lineHeight;
if (y2 >= lineHeight) {
//項目1 右下-------------------------------------------------------------------
this.drawText(BBSWItem1T, rect.x + 495, y2 - 2, BBSWTF1 - 10);
if (BBSWItem1 == 1) {
this.drawText(info.title, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');//rect.x - 7, y2 - 2, rect.width
} else if (BBSWItem1 == 2) {
this.drawText(info.playtime, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 3) {
this.drawText(info.mapname, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 4) {
this.drawText(info.gold + TextManager.currencyUnit, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 5) {
this.drawText(info.savecount, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 6) {
this.drawText(info.value1 + BBSWV1u, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 7) {
this.drawText(info.value2 + BBSWV2u, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 8) {
this.drawText(info.value3 + BBSWV3u, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else if (BBSWItem1 == 9) {
this.drawText(info.value4 + BBSWV4u, rect.x + 495 + BBSWTF1, y2 - 2, 266 - BBSWTF1, 'right');
} else {
}
//-----------------------------------------------------------------------------
//項目2 右上-------------------------------------------------------------------
this.drawText(BBSWItem2T, rect.x + 495, y2 - 34, BBSWTF2 - 10);
if (BBSWItem2 == 1) {
this.drawText(info.title, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');//rect.x - 7, y2 - 34, rect.width
} else if (BBSWItem2 == 2) {
this.drawText(info.playtime, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 3) {
this.drawText(info.mapname, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 4) {
this.drawText(info.gold + TextManager.currencyUnit, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 5) {
this.drawText(info.savecount, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 6) {
this.drawText(info.value1 + BBSWV1u, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 7) {
this.drawText(info.value2 + BBSWV2u, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 8) {
this.drawText(info.value3 + BBSWV3u, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else if (BBSWItem2 == 9) {
this.drawText(info.value4 + BBSWV4u, rect.x + 495 + BBSWTF2, y2 - 34, 266 - BBSWTF2, 'right');
} else {
}
//-----------------------------------------------------------------------------
//項目3 左下-------------------------------------------------------------------
this.drawText(BBSWItem3T, rect.x + 215, y2 - 2, BBSWTF3 - 10);
if (BBSWItem3 == 1) {
this.drawText(info.title, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');//rect.x - 287, y2 - 2, rect.width
} else if (BBSWItem3 == 2) {
this.drawText(info.playtime, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 3) {
this.drawText(info.mapname, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 4) {
this.drawText(info.gold + TextManager.currencyUnit, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 5) {
this.drawText(info.savecount, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 6) {
this.drawText(info.value1 + BBSWV1u, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 7) {
this.drawText(info.value2 + BBSWV2u, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 8) {
this.drawText(info.value3 + BBSWV3u, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else if (BBSWItem3 == 9) {
this.drawText(info.value4 + BBSWV4u, rect.x + 215 + BBSWTF3, y2 - 2, 266 - BBSWTF3, 'right');
} else {
}
//-----------------------------------------------------------------------------
//項目4 左上-------------------------------------------------------------------
this.drawText(BBSWItem4T, rect.x + 215, y2 - 34, BBSWTF4 - 10);
if (BBSWItem4 == 1) {
this.drawText(info.title, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');//rect.x - 287, y2 - 34, rect.width
} else if (BBSWItem4 == 2) {
this.drawText(info.playtime, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 3) {
this.drawText(info.mapname, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 4) {
this.drawText(info.gold + TextManager.currencyUnit, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 5) {
this.drawText(info.savecount, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 6) {
this.drawText(info.value1 + BBSWV1u, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 7) {
this.drawText(info.value2 + BBSWV2u, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 8) {
this.drawText(info.value3 + BBSWV3u, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else if (BBSWItem4 == 9) {
this.drawText(info.value4 + BBSWV4u, rect.x + 215 + BBSWTF4, y2 - 34, 266 - BBSWTF4, 'right');
} else {
}
//-----------------------------------------------------------------------------
//項目5 上部-------------------------------------------------------------------
var L5 = 609 - BBSWItem0L;
if (BBSWItem5 == 1) {
this.drawText(info.title, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');//rect.x + 455, rect.y, 312,
} else if (BBSWItem5 == 2) {
this.drawText(info.playtime, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 3) {
this.drawText(info.mapname, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 4) {
this.drawText(info.gold + TextManager.currencyUnit, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 5) {
this.drawText(info.savecount, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 6) {
this.drawText(info.value1 + BBSWV1u, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 7) {
this.drawText(info.value2 + BBSWV2u, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 8) {
this.drawText(info.value3 + BBSWV3u, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else if (BBSWItem5 == 9) {
this.drawText(info.value4 + BBSWV4u, rect.x + 160 + BBSWItem0L, rect.y, L5, 'right');
} else {
}
//-----------------------------------------------------------------------------
}
};
var _Window_SavefileList_prototype_drawFileId = Window_SavefileList.prototype.drawFileId;
Window_SavefileList.prototype.drawFileId = function(id, x, y) {
this.drawText(TextManager.file + ' ' + id, x, y, 120);
};
})();

View file

@ -0,0 +1,39 @@
//=============================================================================
// BB_StatusMinus999.jp
// Copyright (c) 2016 BB ENTERTAINMENT
//=============================================================================
/*:
* @plugindesc HPとMP以外のステータスの下限を-999にします
* @author ビービー
*
* @help プラグインの説明
* HPとMP以外のステータスの下限を-999にします
* HPの下限は1MPの下限は0です
*
* 利用規約
* このプラグインはMITライセンスのもとで公開されています
* Copyright (c) 2016 BB ENTERTAINMENT
* Released under the MIT License.
* http://opensource.org/licenses/mit-license.php
*
* コンタクト
* BB ENTERTAINMENT Twitter: https://twitter.com/BB_ENTER/
* BB ENTERTAINMENT BLOG : http://bb-entertainment-blog.blogspot.jp/
*/
(function() {
var _Game_BattlerBase_prototype_paramMin = Game_BattlerBase.prototype.paramMin;
Game_BattlerBase.prototype.paramMin = function(paramId) {
if (paramId === 0) {
return 1; // MHP
} else if (paramId === 1) {
return 0; // MMP
} else {
return -999;
}
};
})();

View file

@ -0,0 +1,230 @@
//=============================================================================
// BackUpDatabase.js
// ----------------------------------------------------------------------------
// (C)2015-2018 Triacontane
// This software is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.1.1 2018/05/13 1.1.0でエラーになる問題を修正
// 1.1.0 2018/05/13 バックアップフォルダを時間単位で作成できる機能を追加
// 1.0.0 2018/04/21 初版
// ----------------------------------------------------------------------------
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc BackUpDatabasePlugin
* @author triacontane
*
* @param backUpPath
* @desc ファイルの出力パスです相対パス絶対パスが利用できます
* @default /backup
*
* @param includeSave
* @desc セーブデータが含まれているフォルダもバックアップの対象にします
* @default false
* @type boolean
*
* @param timeUnit
* @desc 有効にすると時間単位でフォルダを作成します無効にすると日付単位でフォルダを作成します
* @default false
* @type boolean
*
* @help BackUpDatabase.js
*
* ゲームを起動するたびにデータフォルダ一式を所定の場所にコピーします
* フォルダは日付ごとに蓄積され上限はありません
* このプラグインは通常のテストプレー時のみ効果があります
* 通常プレー戦闘テストイベントテストブラウザプレーでは何もしません
*
* なおプラグインの動作テストは十分に行っていますが
* 当プラグインは問題発生時のプロジェクトの復元を常に保証するものではありません
*
* This plugin is released under the MIT License.
*/
/*:ja
* @plugindesc データバックアッププラグイン
* @author トリアコンタン
*
* @param backUpPath
* @text バックアップパス
* @desc ファイルの出力パスです相対パス絶対パスが利用できます
* @default /backup
*
* @param includeSave
* @text セーブデータも含む
* @desc セーブデータが含まれているフォルダもバックアップの対象にします
* @default false
* @type boolean
*
* @param timeUnit
* @text 時間単位でフォルダ作成
* @desc 有効にすると時間単位でフォルダを作成します無効にすると日付単位でフォルダを作成します
* @default false
* @type boolean
*
* @help BackUpDatabase.js
*
* ゲームを起動するたびにデータフォルダ一式を所定の場所にコピーします
* フォルダは日付ごとに蓄積され上限はありません
* このプラグインは通常のテストプレー時のみ効果があります
* 通常プレー戦闘テストイベントテストブラウザプレーでは何もしません
*
* なおプラグインの動作テストは十分に行っていますが
* 当プラグインは問題発生時のプロジェクトの復元を常に保証するものではありません
*
* このプラグインにはプラグインコマンドはありません
*
* 利用規約
* 作者に無断で改変再配布が可能で利用形態商用18禁利用等
* についても制限はありません
* このプラグインはもうあなたのものです
*/
(function() {
'use strict';
if (!Utils.isNwjs()) {
return;
}
/**
* Create plugin parameter. param[paramName] ex. param.commandPrefix
* @param pluginName plugin name(EncounterSwitchConditions)
* @returns {Object} Created parameter
*/
var createPluginParameter = function(pluginName) {
var paramReplacer = function(key, value) {
if (value === 'null') {
return value;
}
if (value[0] === '"' && value[value.length - 1] === '"') {
return value;
}
try {
return JSON.parse(value);
} catch (e) {
return value;
}
};
var parameter = JSON.parse(JSON.stringify(PluginManager.parameters(pluginName), paramReplacer));
PluginManager.setParameters(pluginName, parameter);
return parameter;
};
var param = createPluginParameter('BackUpDatabase');
var node = {
fs : require('fs'),
path: require('path')
};
//=============================================================================
// SceneManager
// バックアップ処理を呼び出します。
//=============================================================================
var _SceneManager_initialize = SceneManager.initialize;
SceneManager.initialize = function() {
_SceneManager_initialize.apply(this, arguments);
DataManager.backupAllData();
};
//=============================================================================
// DataManager
// バックアップを実行します。
//=============================================================================
DataManager.backupAllData = function() {
if (!Utils.isOptionValid('test') || this.isBattleTest() || this.isEventTest()) {
return;
}
this.backupDataBase();
this.backupRpgProject();
if (param.includeSave) {
this.backupSaveData();
}
};
DataManager.backupDataBase = function() {
var targetPath = StorageManager.makeBackupDirectory('data');
var originalPath = StorageManager.localDataDirectoryPath();
StorageManager.copyAllFiles(originalPath, targetPath);
};
DataManager.backupRpgProject = function() {
var targetPath = StorageManager.getBackupRoot();
var originalPath = StorageManager.getProjectRoot() + '/';
StorageManager.copyFile(originalPath, targetPath, 'Game.rpgproject');
};
DataManager.backupSaveData = function() {
var targetPath = StorageManager.makeBackupDirectory('save');
var originalPath = StorageManager.localFileDirectoryPath();
StorageManager.copyAllFiles(originalPath, targetPath);
};
//=============================================================================
// StorageManager
// バックアップに必要なファイルアクセス処理を提供します。
//=============================================================================
StorageManager.copyAllFiles = function(originalPath, targetPath) {
var copyFile = this.copyFile.bind(this, originalPath, targetPath);
node.fs.readdir(originalPath, function(error, list) {
if (error || !list) {
console.warn(error);
return;
}
list.forEach(function(fileName) {
copyFile(fileName);
});
});
};
StorageManager.copyFile = function(originalPath, targetPath, fileName) {
node.fs.createReadStream(originalPath + fileName).pipe(node.fs.createWriteStream(targetPath + fileName));
};
StorageManager.getProjectRoot = function() {
return node.path.dirname(process.mainModule.filename);
};
StorageManager.localDataDirectoryPath = function() {
return node.path.join(this.getProjectRoot(), 'data/');
};
StorageManager.getBackupRoot = function() {
var filePath = param.backUpPath;
if (!filePath.match(/^[A-Z]:/)) {
filePath = node.path.join(this.getProjectRoot(), filePath);
}
return filePath.match(/\/$/) ? filePath : filePath + '/';
};
StorageManager.getBackupPath = function(prefix) {
var date = new Date();
return `${prefix}_${date.getFullYear()}-${(date.getMonth() + 1).padZero(2)}-${date.getDate().padZero(2)}${this.getBackupTimePath()}/`;
};
StorageManager.getBackupTimePath = function() {
if (!param.timeUnit) {
return '';
}
var date = new Date();
return `_${date.getHours().padZero(2)}${date.getMinutes().padZero(2)}${date.getSeconds().padZero(2)}`;
};
StorageManager.makeBackupDirectory = function(type) {
var filePath = this.getBackupRoot();
this.makeDirectoryIfNeed(filePath);
filePath += this.getBackupPath(type);
this.makeDirectoryIfNeed(filePath);
return filePath;
};
StorageManager.makeDirectoryIfNeed = function(dirPath) {
if (!node.fs.existsSync(dirPath)) {
node.fs.mkdirSync(dirPath);
}
};
})();

Some files were not shown because too many files have changed in this diff Show more