Compare commits

...

2 commits

Author SHA1 Message Date
16955065b6 v1.10 2025-02-19 09:58:23 -06:00
42991d550c O&M Images 2025-01-18 11:23:04 -06:00
42 changed files with 138330 additions and 41852 deletions

71
.gitignore vendored
View file

@ -35,38 +35,39 @@ psbpack.dat
Save*
# Images
!0213_sys.png_
!av.png_
!Balloon.png_
!button2.png_
!button3.png_
!button3_en.png_
!ButtonSet.png_
!button_overlay.png_
!dousei.png_
!Frame.png_
!gacha.png_
!IconSet.png_
!main.png_
!menu.png_
!menu2.png_
!msg_window.png_
!msg_window_550.png_
!msg_window_628.png_
!msg_window_option.png_
!name.png_
!number.png_
!result.png_
!review2.png_
!Shadow1.png_
!Shadow2.png_
!skill_tree.png_
!States.png_
!status_back.png_
!status_label.png_
!tree.png_
!Window.png_
!Window2.png_
!Window_.png_
!Window_sumi.png_
!play.png_
!Action_parfect.png
!Action_parfect_ss.png
!IconSet.png
!Title01_char_trial.png
!Title02_char.png
!BattlePic
!Estatus
!Event
!Shop
!LOGO.png
!Enm_30_01.png
!Enm_30_02.png
!Enm_30_03.png
!Enm_30_150_01.png
!Enm_30_150_02.png
!Enm_30_150_03.png
!UI_enmDP.png_
!UI_enmDP_s.png_
!UI_enmHP.png_
!UI_enmHP_s.png_
!BG_HstatusB_win.png_
!totalLv.png_
!totalnumber_100.png_
!C0_02.png_
!C3_battle01.png_
!CEPI_20.png_
!CEPI_21.png_
!CEPI_23.png_
!CEx_memory.png_
!Dungen00.png_
!Dungen01.png_
!Dungen02.png_
!EV_ScreenHideL_ss.png_
!EV_ScreenHideR_ss.png_
!Actor9_shop.png_
!LOGO.png_

File diff suppressed because it is too large Load diff

View file

@ -11381,7 +11381,7 @@
"walkAnime": false
}
],
"x": 12,
"x": 11,
"y": 9
},
{
@ -14087,6 +14087,86 @@
"はい"
]
},
{
"code": 111,
"indent": 1,
"parameters": [
1,
25,
0,
12,
1
]
},
{
"code": 111,
"indent": 2,
"parameters": [
0,
531,
1
]
},
{
"code": 357,
"indent": 3,
"parameters": [
"iii/iiiFadeSpeedChanger",
"FadeOutTask",
"フェードアウト(暗くする)処理",
{
"FadeTime": "60"
}
]
},
{
"code": 657,
"indent": 3,
"parameters": [
"フェード時間 = 60"
]
},
{
"code": 121,
"indent": 3,
"parameters": [
531,
531,
0
]
},
{
"code": 117,
"indent": 3,
"parameters": [
385
]
},
{
"code": 115,
"indent": 3,
"parameters": []
},
{
"code": 0,
"indent": 3,
"parameters": []
},
{
"code": 412,
"indent": 2,
"parameters": []
},
{
"code": 0,
"indent": 2,
"parameters": []
},
{
"code": 412,
"indent": 1,
"parameters": []
},
{
"code": 357,
"indent": 1,
@ -14125,7 +14205,8 @@
"parameters": [
1,
"いいえ"
]
],
"collapsed": true
},
{
"code": 0,
@ -23609,7 +23690,7 @@
},
{
"id": 38,
"name": "[WeponR]武器戻し",
"name": "[WeponR]武器戻し",
"note": "",
"pages": [
{
@ -23855,7 +23936,8 @@
"parameters": [
0,
"はい"
]
],
"collapsed": true
},
{
"code": 355,
@ -24181,6 +24263,219 @@
],
"x": 6,
"y": 4
},
{
"id": 39,
"name": "[check]LoveSakura",
"note": "",
"pages": [
{
"conditions": {
"actorId": 1,
"actorValid": false,
"itemId": 1,
"itemValid": false,
"selfSwitchCh": "A",
"selfSwitchValid": false,
"switch1Id": 1,
"switch1Valid": false,
"switch2Id": 1,
"switch2Valid": false,
"variableId": 25,
"variableValid": true,
"variableValue": 12
},
"directionFix": true,
"image": {
"tileId": 0,
"characterName": "!Chest",
"direction": 8,
"pattern": 0,
"characterIndex": 2
},
"list": [
{
"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": false
},
{
"conditions": {
"actorId": 1,
"actorValid": false,
"itemId": 1,
"itemValid": false,
"selfSwitchCh": "A",
"selfSwitchValid": false,
"switch1Id": 531,
"switch1Valid": true,
"switch2Id": 1,
"switch2Valid": false,
"variableId": 1,
"variableValid": false,
"variableValue": 0
},
"directionFix": false,
"image": {
"characterIndex": 0,
"characterName": "",
"direction": 2,
"pattern": 0,
"tileId": 0
},
"list": [
{
"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": false,
"through": false,
"trigger": 0,
"walkAnime": true
},
{
"conditions": {
"actorId": 1,
"actorValid": false,
"itemId": 1,
"itemValid": false,
"selfSwitchCh": "A",
"selfSwitchValid": false,
"switch1Id": 45,
"switch1Valid": true,
"switch2Id": 1,
"switch2Valid": false,
"variableId": 1,
"variableValid": false,
"variableValue": 0
},
"directionFix": false,
"image": {
"characterIndex": 0,
"characterName": "",
"direction": 2,
"pattern": 0,
"tileId": 0
},
"list": [
{
"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": false,
"through": false,
"trigger": 0,
"walkAnime": true
},
{
"conditions": {
"actorId": 1,
"actorValid": false,
"itemId": 1,
"itemValid": false,
"selfSwitchCh": "A",
"selfSwitchValid": false,
"switch1Id": 75,
"switch1Valid": true,
"switch2Id": 1,
"switch2Valid": false,
"variableId": 1,
"variableValid": false,
"variableValue": 0
},
"directionFix": false,
"image": {
"characterIndex": 0,
"characterName": "",
"direction": 2,
"pattern": 0,
"tileId": 0
},
"list": [
{
"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": false,
"through": false,
"trigger": 0,
"walkAnime": true
}
],
"x": 12,
"y": 9
}
]
}

View file

@ -6100,8 +6100,7 @@
0,
5,
0
],
"collapsed": true
]
},
{
"code": 205,
@ -6199,7 +6198,8 @@
0,
150,
0
]
],
"collapsed": true
},
{
"code": 205,

View file

@ -2957,8 +2957,7 @@
0,
2,
1
],
"collapsed": true
]
},
{
"code": 357,
@ -2996,7 +2995,7 @@
"クエスト詳細変更",
{
"VariableId": "256",
"DetailNote": "\"[目標更新]\\n玉子に話を聞きに行こう。\\n\\n------------------------------\\n牛侍のアンタに頼みがあるよ\\n\\nちぃと厄介な問題が発生してね……。\\nこのままじゃ商売に影響が出ちまう\\n\\nとにかく店で待ってるから話を聞きに来な\"",
"DetailNote": "\"[目標更新]\\n「湯処 煮卵」にいる玉子に話を聞きに行こう。\\n\\n------------------------------\\n牛侍のアンタに頼みがあるよ\\n\\nちぃと厄介な問題が発生してね……。\\nこのままじゃ商売に影響が出ちまう\\n\\nとにかく店で待ってるから話を聞きに来な\"",
"Detail": ""
}
]
@ -3012,7 +3011,7 @@
"code": 657,
"indent": 1,
"parameters": [
"詳細 = \"[目標更新]\\n玉子に話を聞きに行こう。\\n\\n-----------…"
"詳細 = \"[目標更新]\\n「湯処 煮卵」にいる玉子に話を聞きに行こ…"
]
},
{

View file

@ -4966,8 +4966,7 @@
0,
0,
0
],
"collapsed": true
]
},
{
"code": 231,
@ -5044,8 +5043,7 @@
{
"code": 411,
"indent": 0,
"parameters": [],
"collapsed": true
"parameters": []
},
{
"code": 231,

View file

@ -4114,14 +4114,24 @@
"characterIndex": 2
},
"list": [
{
"code": 357,
"indent": 0,
"parameters": [
"Message/MessageWindowPopup",
"POPUP_INVALID",
"フキダシ無効化",
{}
]
},
{
"code": 101,
"indent": 0,
"parameters": [
"",
0,
0,
2,
1,
1,
""
]
},
@ -4129,9 +4139,133 @@
"code": 401,
"indent": 0,
"parameters": [
"救済機能をONにしますか"
"*救済システムです。"
]
},
{
"code": 401,
"indent": 0,
"parameters": [
" 演歌ミニゲームを簡単にする機能を解放!"
]
},
{
"code": 401,
"indent": 0,
"parameters": [
" 解放しますか?"
]
},
{
"code": 102,
"indent": 0,
"parameters": [
[
"はい",
"いいえ"
],
1,
0,
2,
0
]
},
{
"code": 402,
"indent": 0,
"parameters": [
0,
"はい"
]
},
{
"code": 250,
"indent": 1,
"parameters": [
{
"name": "se_kagurasuzu",
"volume": 90,
"pitch": 100,
"pan": 0
}
]
},
{
"code": 357,
"indent": 1,
"parameters": [
"Message/MessageWindowPopup",
"POPUP_INVALID",
"フキダシ無効化",
{}
]
},
{
"code": 101,
"indent": 1,
"parameters": [
"",
0,
1,
2,
""
]
},
{
"code": 401,
"indent": 1,
"parameters": [
"*演歌の体力が増加しました!"
]
},
{
"code": 401,
"indent": 1,
"parameters": [
" 頑張ってください!"
]
},
{
"code": 121,
"indent": 1,
"parameters": [
153,
153,
1
]
},
{
"code": 121,
"indent": 1,
"parameters": [
154,
154,
0
]
},
{
"code": 0,
"indent": 1,
"parameters": []
},
{
"code": 402,
"indent": 0,
"parameters": [
1,
"いいえ"
]
},
{
"code": 0,
"indent": 1,
"parameters": []
},
{
"code": 404,
"indent": 0,
"parameters": []
},
{
"code": 0,
"indent": 0,

View file

@ -4983,8 +4983,38 @@
]
},
{
"code": 122,
"code": 111,
"indent": 0,
"parameters": [
0,
154,
0
]
},
{
"code": 122,
"indent": 1,
"parameters": [
177,
177,
0,
0,
999
]
},
{
"code": 0,
"indent": 1,
"parameters": []
},
{
"code": 411,
"indent": 0,
"parameters": []
},
{
"code": 122,
"indent": 1,
"parameters": [
177,
177,
@ -4993,6 +5023,16 @@
5
]
},
{
"code": 0,
"indent": 1,
"parameters": []
},
{
"code": 412,
"indent": 0,
"parameters": []
},
{
"code": 121,
"indent": 0,
@ -7173,6 +7213,15 @@
0
]
},
{
"code": 121,
"indent": 0,
"parameters": [
154,
154,
1
]
},
{
"code": 235,
"indent": 0,
@ -7753,6 +7802,15 @@
1
]
},
{
"code": 121,
"indent": 0,
"parameters": [
154,
154,
1
]
},
{
"code": 235,
"indent": 0,

File diff suppressed because it is too large Load diff

View file

@ -5944,8 +5944,7 @@
0,
0,
0
],
"collapsed": true
]
},
{
"code": 231,
@ -6022,8 +6021,7 @@
{
"code": 411,
"indent": 1,
"parameters": [],
"collapsed": true
"parameters": []
},
{
"code": 231,

View file

@ -314,9 +314,9 @@
1561,
1561,
1561,
1572,
1572,
1572,
1561,
1561,
1561,
1572,
1561,
1561,
@ -638,9 +638,9 @@
6278,
1536,
6279,
0,
0,
0,
6327,
1536,
6327,
0,
7815,
338,
@ -665,9 +665,9 @@
6276,
1536,
6277,
0,
0,
0,
6325,
1536,
6325,
0,
7813,
346,
@ -692,9 +692,9 @@
6284,
1536,
6285,
0,
0,
0,
6333,
1536,
6333,
0,
7821,
2667,
@ -7723,6 +7723,65 @@
"テンプレート生成 = false"
]
},
{
"code": 357,
"indent": 0,
"parameters": [
"System/EventReSpawn",
"MAKE",
"イベント生成",
{
"id": "6",
"x": "13",
"y": "9",
"xByVariableId": "0",
"yByVariableId": "0",
"template": "false"
}
]
},
{
"code": 657,
"indent": 0,
"parameters": [
"イベントID = 6"
]
},
{
"code": 657,
"indent": 0,
"parameters": [
"X座標 = 13"
]
},
{
"code": 657,
"indent": 0,
"parameters": [
"Y座標 = 9"
]
},
{
"code": 657,
"indent": 0,
"parameters": [
"X座標変数ID = 0"
]
},
{
"code": 657,
"indent": 0,
"parameters": [
"Y座標変数ID = 0"
]
},
{
"code": 657,
"indent": 0,
"parameters": [
"テンプレート生成 = false"
]
},
{
"code": 0,
"indent": 0,

View file

@ -3362,8 +3362,7 @@
0,
0,
2
],
"collapsed": true
]
},
{
"code": 357,
@ -3483,8 +3482,7 @@
{
"code": 411,
"indent": 0,
"parameters": [],
"collapsed": true
"parameters": []
},
{
"code": 357,
@ -4910,8 +4908,7 @@
{
"code": 411,
"indent": 0,
"parameters": [],
"collapsed": true
"parameters": []
},
{
"code": 357,
@ -9859,7 +9856,8 @@
"parameters": [
1,
"速度変更"
]
],
"collapsed": true
},
{
"code": 111,
@ -9932,7 +9930,8 @@
"parameters": [
2,
"リズム変更(現在:\\V[418])"
]
],
"collapsed": true
},
{
"code": 111,

View file

@ -7076,7 +7076,7 @@
},
{
"id": 7,
"name": "[EV]狐鼓_処理",
"name": "[EV]演歌_処理",
"note": "",
"pages": [
{

8905
data/Map259.json Normal file

File diff suppressed because it is too large Load diff

14472
data/Map260.json Normal file

File diff suppressed because it is too large Load diff

23131
data/Map261.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -25,8 +25,8 @@
"name": "MainStage",
"order": 79,
"parentId": 0,
"scrollX": 1073.4545454545455,
"scrollY": 916.3636363636364
"scrollX": 1088.5714285714284,
"scrollY": 640.2857142857142
},
{
"id": 4,
@ -39,12 +39,12 @@
},
{
"id": 5,
"expanded": true,
"expanded": false,
"name": "遊郭",
"order": 98,
"parentId": 3,
"scrollX": 1258,
"scrollY": 838,
"scrollX": 1257.4285714285713,
"scrollY": 633.4285714285714,
"quick": false
},
{
@ -58,12 +58,12 @@
},
{
"id": 7,
"expanded": false,
"expanded": true,
"name": "Home",
"order": 193,
"parentId": 0,
"scrollX": 1009,
"scrollY": 822
"scrollX": 904.2857142857142,
"scrollY": 619.7142857142857
},
{
"id": 8,
@ -71,14 +71,14 @@
"name": "ホーム画面",
"order": 194,
"parentId": 7,
"scrollX": 1002.75,
"scrollY": 609
"scrollX": 1129,
"scrollY": 823
},
{
"id": 9,
"expanded": false,
"name": "[NEW_GAME]_index",
"order": 254,
"order": 257,
"parentId": 0,
"scrollX": 1246.909090909091,
"scrollY": 804,
@ -88,7 +88,7 @@
"id": 10,
"expanded": false,
"name": "Tutorial 裏山",
"order": 255,
"order": 258,
"parentId": 9,
"scrollX": 816,
"scrollY": 800
@ -100,13 +100,13 @@
"order": 81,
"parentId": 13,
"scrollX": 1160.5714285714284,
"scrollY": 652.2857142857142
"scrollY": 654
},
{
"id": 12,
"expanded": true,
"name": "H_026_遊郭クエスト",
"order": 219,
"order": 220,
"parentId": 111,
"scrollX": 1131,
"scrollY": 619.5
@ -142,7 +142,7 @@
"id": 16,
"expanded": false,
"name": "template",
"order": 256,
"order": 259,
"parentId": 0,
"scrollX": 1458.5454545454545,
"scrollY": 904.3636363636364
@ -217,8 +217,8 @@
"name": "城下町(へいみん)",
"order": 91,
"parentId": 3,
"scrollX": 1090.909090909091,
"scrollY": 898.909090909091
"scrollX": 917.9999999999999,
"scrollY": 619.7142857142857
},
{
"id": 25,
@ -285,7 +285,7 @@
},
{
"id": 32,
"expanded": true,
"expanded": false,
"name": "ケモノ山(入口)",
"order": 119,
"parentId": 6,
@ -296,10 +296,10 @@
"id": 33,
"expanded": false,
"name": "Capter_select",
"order": 199,
"order": 200,
"parentId": 0,
"scrollX": 1257.8181818181818,
"scrollY": 898.909090909091,
"scrollX": 1038,
"scrollY": 747,
"quick": false
},
{
@ -324,7 +324,7 @@
"id": 36,
"expanded": false,
"name": "index_material",
"order": 257,
"order": 260,
"parentId": 0,
"scrollX": 1030,
"scrollY": 724
@ -378,19 +378,19 @@
"id": 42,
"expanded": true,
"name": "H_003_遊郭シナリオ",
"order": 205,
"order": 206,
"parentId": 113,
"scrollX": 832,
"scrollY": 624
},
{
"id": 43,
"expanded": false,
"expanded": true,
"name": "E_Hシーン",
"order": 201,
"order": 202,
"parentId": 0,
"scrollX": 843.75,
"scrollY": 570.75,
"scrollX": 1263,
"scrollY": 831,
"quick": false
},
{
@ -406,7 +406,7 @@
"id": 45,
"expanded": false,
"name": "H_001_裏山",
"order": 203,
"order": 204,
"parentId": 113,
"scrollX": 843.75,
"scrollY": 570.75
@ -469,10 +469,10 @@
"id": 52,
"expanded": true,
"name": "H_002_刀処裏手",
"order": 204,
"order": 205,
"parentId": 113,
"scrollX": 1287,
"scrollY": 845
"scrollX": 1129,
"scrollY": 823
},
{
"id": 53,
@ -532,7 +532,7 @@
"id": 59,
"expanded": true,
"name": "H_051-55_遊郭_松",
"order": 241,
"order": 243,
"parentId": 78,
"scrollX": 998,
"scrollY": 794
@ -541,7 +541,7 @@
"id": 60,
"expanded": true,
"name": "H_004_ケモ山終幕",
"order": 206,
"order": 207,
"parentId": 113,
"scrollX": 896,
"scrollY": 640
@ -559,16 +559,16 @@
"id": 62,
"expanded": true,
"name": "H_00567_平民(東)_究極",
"order": 215,
"order": 216,
"parentId": 111,
"scrollX": 1678.6666666666667,
"scrollY": 545.3333333333334
"scrollX": 1145,
"scrollY": 857
},
{
"id": 63,
"expanded": true,
"name": "H_050_遊郭_初回",
"order": 240,
"order": 242,
"parentId": 78,
"scrollX": 893.25,
"scrollY": 596.25
@ -586,7 +586,7 @@
"id": 65,
"expanded": true,
"name": "H_066-70_遊郭_草",
"order": 244,
"order": 246,
"parentId": 78,
"scrollX": 1246.909090909091,
"scrollY": 804
@ -595,7 +595,7 @@
"id": 66,
"expanded": true,
"name": "H_056-60_遊郭_竹",
"order": 242,
"order": 244,
"parentId": 78,
"scrollX": 1112.25,
"scrollY": 631.5
@ -604,14 +604,14 @@
"id": 67,
"expanded": true,
"name": "H_061-65_遊郭_菊",
"order": 243,
"order": 245,
"parentId": 78,
"scrollX": 835.3333333333334,
"scrollY": 560
},
{
"id": 68,
"expanded": true,
"expanded": false,
"name": "D2_サイ河",
"order": 128,
"parentId": 88,
@ -685,7 +685,7 @@
"id": 76,
"expanded": false,
"name": "開発室",
"order": 200,
"order": 201,
"parentId": 33,
"scrollX": 1002.75,
"scrollY": 609,
@ -695,7 +695,7 @@
"id": 77,
"expanded": true,
"name": "H_031_[cos]ばにぃ",
"order": 224,
"order": 226,
"parentId": 80,
"scrollX": 879.3333333333334,
"scrollY": 508
@ -704,7 +704,7 @@
"id": 78,
"expanded": false,
"name": "E_遊郭",
"order": 239,
"order": 241,
"parentId": 43,
"scrollX": 1112.25,
"scrollY": 631.5
@ -713,16 +713,16 @@
"id": 79,
"expanded": true,
"name": "H_010_湯処",
"order": 207,
"order": 208,
"parentId": 113,
"scrollX": 832,
"scrollY": 624
},
{
"id": 80,
"expanded": true,
"expanded": false,
"name": "E_衣装H",
"order": 223,
"order": 225,
"parentId": 43,
"scrollX": 1350,
"scrollY": 914.4
@ -767,7 +767,7 @@
"id": 85,
"expanded": false,
"name": "H_011_サイ河終幕",
"order": 208,
"order": 209,
"parentId": 113,
"scrollX": 832,
"scrollY": 640
@ -893,7 +893,7 @@
"id": 99,
"expanded": true,
"name": "E_095_[cos]心病",
"order": 238,
"order": 240,
"parentId": 80,
"scrollX": 832,
"scrollY": 624
@ -912,7 +912,7 @@
"id": 101,
"expanded": false,
"name": "gas_import",
"order": 258,
"order": 261,
"parentId": 0,
"scrollX": 1458.5454545454545,
"scrollY": 904.3636363636364,
@ -1003,7 +1003,7 @@
"id": 111,
"expanded": false,
"name": "E_SubH",
"order": 214,
"order": 215,
"parentId": 43,
"scrollX": 1602,
"scrollY": 994.8
@ -1012,16 +1012,16 @@
"id": 112,
"expanded": false,
"name": "H_014_平民(西)_八尺",
"order": 216,
"order": 217,
"parentId": 111,
"scrollX": 832,
"scrollY": 624
"scrollX": 1062.857142857143,
"scrollY": 666.8571428571428
},
{
"id": 113,
"expanded": false,
"name": "E_MainH",
"order": 202,
"order": 203,
"parentId": 43,
"scrollX": 1246.909090909091,
"scrollY": 804
@ -1039,7 +1039,7 @@
"id": 115,
"expanded": true,
"name": "H_033_[cos]水着",
"order": 226,
"order": 228,
"parentId": 80,
"scrollX": 1010.5714285714286,
"scrollY": 644.5714285714286
@ -1066,14 +1066,14 @@
"id": 118,
"expanded": false,
"name": "H_021_オソレ峠 忌鳥の巣",
"order": 209,
"order": 210,
"parentId": 113,
"scrollX": 1246.909090909091,
"scrollY": 804
},
{
"id": 119,
"expanded": true,
"expanded": false,
"name": "過去ADV",
"order": 36,
"parentId": 235,
@ -1498,7 +1498,7 @@
"id": 166,
"expanded": true,
"name": "H_032_[cos]逆ばにぃ",
"order": 225,
"order": 227,
"parentId": 80,
"scrollX": 1252,
"scrollY": 822
@ -1507,7 +1507,7 @@
"id": 167,
"expanded": false,
"name": "E_H74_路地裏",
"order": 249,
"order": 251,
"parentId": 208,
"scrollX": 0,
"scrollY": 0,
@ -1560,7 +1560,7 @@
},
{
"id": 173,
"expanded": true,
"expanded": false,
"name": "D5_桜馬1F",
"order": 167,
"parentId": 172,
@ -1650,7 +1650,7 @@
},
{
"id": 183,
"expanded": false,
"expanded": true,
"name": "D5_桜馬3F",
"order": 176,
"parentId": 172,
@ -1668,7 +1668,7 @@
},
{
"id": 185,
"expanded": false,
"expanded": true,
"name": "桜馬城 東3",
"order": 179,
"parentId": 183,
@ -1677,7 +1677,7 @@
},
{
"id": 186,
"expanded": false,
"expanded": true,
"name": "D5_桜馬4F",
"order": 182,
"parentId": 172,
@ -1787,7 +1787,7 @@
"id": 198,
"expanded": true,
"name": "H_022_蛭敗北",
"order": 210,
"order": 211,
"parentId": 113,
"scrollX": 845.25,
"scrollY": 574.5
@ -1796,7 +1796,7 @@
"id": 199,
"expanded": false,
"name": "H_023 鋏ギロチン",
"order": 211,
"order": 212,
"parentId": 113,
"scrollX": 1074.75,
"scrollY": 586.5
@ -1805,7 +1805,7 @@
"id": 200,
"expanded": true,
"name": "H_024 御庭番房中術",
"order": 212,
"order": 213,
"parentId": 113,
"scrollX": 1302.5454545454545,
"scrollY": 950.1818181818182
@ -1857,9 +1857,9 @@
},
{
"id": 206,
"expanded": false,
"expanded": true,
"name": "E_個別H",
"order": 246,
"order": 248,
"parentId": 43,
"scrollX": 891.3333333333334,
"scrollY": 542
@ -1868,7 +1868,7 @@
"id": 207,
"expanded": false,
"name": "E_演歌個別",
"order": 247,
"order": 249,
"parentId": 206,
"scrollX": 843.75,
"scrollY": 559.5
@ -1877,16 +1877,16 @@
"id": 208,
"expanded": false,
"name": "E_希来里個別",
"order": 248,
"order": 250,
"parentId": 206,
"scrollX": 891.3333333333334,
"scrollY": 542
},
{
"id": 209,
"expanded": true,
"expanded": false,
"name": "E_玉子個別",
"order": 252,
"order": 254,
"parentId": 206,
"scrollX": 1350,
"scrollY": 914.4
@ -1913,7 +1913,7 @@
"id": 212,
"expanded": true,
"name": "H_014_八尺(後)",
"order": 217,
"order": 218,
"parentId": 112,
"scrollX": 1390.2857142857142,
"scrollY": 791.1428571428571
@ -1996,15 +1996,15 @@
"name": "ギャラリー(CG)",
"order": 197,
"parentId": 7,
"scrollX": 1583,
"scrollY": 1072,
"scrollX": 1263,
"scrollY": 1271,
"quick": false
},
{
"id": 222,
"expanded": true,
"name": "E_035_[cos]忍びの装い",
"order": 228,
"order": 230,
"parentId": 80,
"scrollX": 1179,
"scrollY": 749
@ -2049,16 +2049,16 @@
"id": 227,
"expanded": true,
"name": "H_027 狐の慰め",
"order": 220,
"order": 221,
"parentId": 111,
"scrollX": 987.75,
"scrollY": 608.25
"scrollX": 1212,
"scrollY": 823
},
{
"id": 228,
"expanded": false,
"name": "H_097 堕橘花",
"order": 221,
"order": 222,
"parentId": 111,
"scrollX": 1602,
"scrollY": 994.8
@ -2067,7 +2067,7 @@
"id": 229,
"expanded": true,
"name": "H_015_遊郭_八尺",
"order": 218,
"order": 219,
"parentId": 112,
"scrollX": 1131,
"scrollY": 619.5
@ -2076,7 +2076,7 @@
"id": 230,
"expanded": true,
"name": "H_098 丸呑み",
"order": 245,
"order": 247,
"parentId": 78,
"scrollX": 989.25,
"scrollY": 571.5
@ -2143,8 +2143,8 @@
"name": "Epilouge ケモノ山",
"order": 127,
"parentId": 6,
"scrollX": 1638,
"scrollY": 907
"scrollX": 1638.8571428571427,
"scrollY": 773.1428571428571
},
{
"id": 238,
@ -2179,7 +2179,7 @@
"id": 241,
"expanded": true,
"name": "H_025 枝切敗北",
"order": 213,
"order": 214,
"parentId": 113,
"scrollX": 810,
"scrollY": 462.6666666666667
@ -2188,7 +2188,7 @@
"id": 242,
"expanded": true,
"name": "H_037_[cos]けものふく",
"order": 230,
"order": 232,
"parentId": 80,
"scrollX": 908.25,
"scrollY": 573.75
@ -2207,7 +2207,7 @@
"id": 244,
"expanded": true,
"name": "E_041_[cos]冥途服",
"order": 234,
"order": 236,
"parentId": 80,
"scrollX": 1125,
"scrollY": 746
@ -2225,7 +2225,7 @@
"id": 246,
"expanded": true,
"name": "E_043_[cos]ぼでぃP",
"order": 236,
"order": 238,
"parentId": 80,
"scrollX": 1228.5,
"scrollY": 680.25
@ -2234,7 +2234,7 @@
"id": 247,
"expanded": false,
"name": "H_039_[cos]びきにA",
"order": 232,
"order": 234,
"parentId": 80,
"scrollX": 1014,
"scrollY": 640
@ -2243,7 +2243,7 @@
"id": 248,
"expanded": false,
"name": "E_044_[cos]韋駄天",
"order": 237,
"order": 239,
"parentId": 80,
"scrollX": 1002.75,
"scrollY": 609.75
@ -2254,15 +2254,15 @@
"name": "ギャラリー(CG)_体験版",
"order": 198,
"parentId": 221,
"scrollX": 1316.7272727272727,
"scrollY": 916.3636363636364,
"scrollX": 1313,
"scrollY": 917,
"quick": false
},
{
"id": 250,
"expanded": true,
"name": "E_H75_遊郭厨房",
"order": 250,
"order": 252,
"parentId": 208,
"scrollX": 896.25,
"scrollY": 564,
@ -2272,7 +2272,7 @@
"id": 251,
"expanded": true,
"name": "H_75_希来里好感度2後半",
"order": 251,
"order": 253,
"parentId": 250,
"scrollX": 891.3333333333334,
"scrollY": 542
@ -2281,7 +2281,7 @@
"id": 252,
"expanded": true,
"name": "H_034_[cos]Mビキニ",
"order": 227,
"order": 229,
"parentId": 80,
"scrollX": 1179,
"scrollY": 749
@ -2290,7 +2290,7 @@
"id": 253,
"expanded": true,
"name": "E_036_[cos]対魔すぅつ",
"order": 229,
"order": 231,
"parentId": 80,
"scrollX": 1179,
"scrollY": 749
@ -2299,7 +2299,7 @@
"id": 254,
"expanded": true,
"name": "H_038_[cos]びぃすともぅど",
"order": 231,
"order": 233,
"parentId": 80,
"scrollX": 1179,
"scrollY": 749
@ -2308,17 +2308,17 @@
"id": 255,
"expanded": false,
"name": "H_090_山田",
"order": 222,
"order": 224,
"parentId": 111,
"scrollX": 1602,
"scrollY": 994.8,
"scrollX": 1059.4285714285713,
"scrollY": 653.1428571428571,
"quick": false
},
{
"id": 256,
"expanded": true,
"name": "E_042_[cos]ろいやる桜",
"order": 235,
"order": 237,
"parentId": 80,
"scrollX": 1125,
"scrollY": 746
@ -2327,7 +2327,7 @@
"id": 257,
"expanded": true,
"name": "H_040_[cos]どらごん桜",
"order": 233,
"order": 235,
"parentId": 80,
"scrollX": 1125,
"scrollY": 746
@ -2336,9 +2336,37 @@
"id": 258,
"expanded": false,
"name": "E_玉子_個人3",
"order": 253,
"order": 255,
"parentId": 209,
"scrollX": 843.75,
"scrollY": 559.5
},
{
"id": 259,
"expanded": false,
"name": "H_098 通り鬼(UPD)",
"order": 223,
"parentId": 111,
"scrollX": 1045.7142857142856,
"scrollY": 653.1428571428571
},
{
"id": 260,
"expanded": false,
"name": "E_桜_個人UPD",
"order": 256,
"parentId": 206,
"scrollX": 1263,
"scrollY": 831
},
{
"id": 261,
"expanded": false,
"name": "UPD_ギャラリー",
"order": 199,
"parentId": 7,
"scrollX": 1263,
"scrollY": 831,
"quick": false
}
]

View file

@ -119,7 +119,7 @@
"pitch": 100,
"volume": 90
},
"editMapId": 9,
"editMapId": 18,
"elements": [
"",
"物理",
@ -153,7 +153,7 @@
"衣服",
"お守り"
],
"gameTitle": "桜御前(ver1.09)",
"gameTitle": "桜御前(ver1.10)",
"gameoverMe": {
"name": "Gameover1",
"pan": 0,
@ -416,7 +416,7 @@
"",
"[Menu]shortcutOn",
"[Menu]Hst立ち絵動き",
"",
"[Menu]Hst立ち絵切り替えsw",
"[HOME]演歌在住Sw",
"[HOME]希来里在住Sw",
"[HOME]玉子在住Sw",
@ -516,7 +516,7 @@
"Dungen_滑り処理中",
"Dungen_救済Sys",
"Gozen_救済Sys",
"",
"Gozen_演歌爆発(体力増加)",
"Dungen_ドボン中",
"Dungen_幕裏ダッシュ中",
"△Dungen_装備判定(幕裏)",
@ -747,7 +747,7 @@
"EH_082_ぬらり3",
"EH_083_ぬらり4",
"",
"",
"EH_085_桜個別",
"",
"",
"",
@ -803,9 +803,9 @@
"",
"",
"",
"",
"",
"",
"[UPD]AnimeNumList",
"[UPD]サムネ非表示",
"[UPD](すけべ目録)サブコマンド非表示",
"",
"",
"",
@ -893,7 +893,7 @@
"",
"",
"[確認]山田H",
"",
"[確認]桜H",
"",
"",
"",
@ -1588,11 +1588,11 @@
"",
"",
"",
"",
"",
"",
"",
"",
"[UPD]EList_index",
"[UPD]Cmn_EサムネID",
"[UPD]animeselect",
"[UPD]Eanime_index",
"[UPD]check_サムネ",
"",
"Ev_PicScreenL",
"Ev_PicScreenR",
@ -1638,9 +1638,9 @@
"",
"",
"",
"",
"",
"",
"[UPD]Yukaku演出番号格納",
"[UPD]オナニー番号",
"[UPD]桜ギャラリー用番号",
"",
"",
"[劇]キャラX",
@ -1648,9 +1648,9 @@
"[劇]FilterParam",
"",
"",
"",
"",
"",
"[特殊]長押しカウント",
"[特殊]カウント状況",
"[特殊]桜シーン管理",
"",
"",
"[Gallary]マップBGM",
@ -1675,7 +1675,7 @@
"",
""
],
"versionId": 16107237,
"versionId": 26647018,
"victoryMe": {
"name": "ME_wa_Vic",
"pan": 0,

View file

@ -133,5 +133,6 @@
"Yukaku_kusa_lv2_n": "\\}【必要条件:\\I[237]Lv7 \\I[220]Lv2】",
"Yukaku_kusa_lv3": "Lv3にほん接吻",
"Yukaku_kusa_lv3_n": "\\}【必要条件:\\I[237]Lv9 \\I[220]Lv3】",
"UPD_ElistHelp": "解放済みのHシーンリストです。実際のシーンはギャラリーから確認してください。\nオマケとして動きを確認することができます。",
"__last__": ""
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
img/pictures/LOGO.png_ Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,740 @@
//=============================================================================
// PictureCallCommon.js
// ----------------------------------------------------------------------------
// (C)2015 Triacontane
// This plugin is released under the MIT License.
// http://opensource.org/licenses/mit-license.php
// ----------------------------------------------------------------------------
// Version
// 1.6.2 2024/12/10 1.6.1の修正で拡大率をマイナスに設定したピクチャのタッチイベントが発生しなくなっていた問題を修正
// 1.6.1 2024/06/04 ボタンピクチャを極めて小さい拡大率(負の値への移動も含む)で表示しようとするとエラーになる場合がある問題を修正
// 1.6.0 2023/11/16 プラグインコマンドを「ピクチャの操作拡張プラグイン」が提供する一括指定機能に対応させました。
// 1.5.1 2023/06/12 ピクチャイベント解除時に指定した番号以外の番号のピクチャイベントも一緒に解除される可能性がある問題を修正
// 1.5.0 2023/04/22 ピクチャイベントを発生させる際、透過部分に反応するかどうかを設定できる機能を追加
// 1.4.0 2022/10/22 DTextPicture.jsと組み合わせたとき、フレームウィンドウをクリックイベントの範囲に含めるよう変更
// 1.3.1 2022/05/19 ヘルプ微修正
// 1.3.0 2022/04/14 ピクチャクリック時に変数を操作する機能および任意スクリプトを実行する機能を追加
// 1.2.2 2021/11/07 異なるピクチャのトリガーを同一フレームで同時に満たした場合、すべてのタッチ処理が実行されるよう修正
// 1.2.1 2021/10/08 トリガー種別がマウスが重なった場合のとき無効スイッチ中に条件を満たしていると、無効スイッチがOFFになった瞬間にイベントが発生してしまう問題を修正
// 1.2.0 2021/05/20 APNGピクチャプラグインと組み合わせたときにAPNGピクチャをボタン化できるよう修正ただし透過色は考慮されない
// 1.1.2 2021/04/08 トリガー「マウスをピクチャ内で移動した場合」がマウスを押していないと反応しない問題を修正
// 1.1.1 2020/12/21 スクリプト$gameScreen.showPictureを使って未キャッシュのピクチャを表示しようとすると画像が表示されなくなる問題を修正
// セーブデータロード時にエラーになる問題を修正
// 1.1.0 2020/12/20 イベントごとに無効スイッチを指定できる機能を追加
// 1.0.0 2020/12/17 MZ版として新規作成
// ----------------------------------------------------------------------------
// [Blog] : https://triacontane.blogspot.jp/
// [Twitter]: https://twitter.com/triacontane/
// [GitHub] : https://github.com/triacontane/
//=============================================================================
/*:
* @plugindesc ピクチャのボタン化プラグイン
* @target MZ
* @url https://github.com/triacontane/RPGMakerMV/tree/mz_master/PictureCallCommon.js
* @base PluginCommonBase
* @author トリアコンタン
*
* @param PictureIdVariable
* @text ピクチャ番号の変数
* @desc 最後にイベントが発生したピクチャ番号を格納する変数IDです
* @default 0
* @type variable
*
* @param InvalidSwitchId
* @text 無効スイッチ
* @desc 指定した番号のスイッチがONになっている場合すべてのピクチャイベントが無効になります
* @default 0
* @type switch
*
* @param FlickDistance
* @text フリック有効距離
* @desc フリック判定が有効になる距離(ピクセル数)です
* @default 60
* @type number
*
* @param FlickTimeVariable
* @text フリック時間の変数
* @desc フリック判定が有効になるまでに掛かったフレーム数を格納する変数IDですこの値が小さいほど速いフリックです
* @default 0
* @type variable
*
* @param FlickDegreeVariable
* @text フリック角度の変数
* @desc フリック判定が有効になったときのフリック方向を度数法で格納する変数IDです
* @default 0
* @type variable
*
* @command ADD_PICTURE_EVENT
* @text ピクチャイベント登録
* @desc ピクチャ操作で発生するイベントを登録します
*
* @arg pictureId
* @text ピクチャ番号
* @desc 操作対象のピクチャ番号です
* @default 1
* @type number
*
* @arg commonEventId
* @text コモンイベント番号
* @desc イベント発生時に呼び出すコモンイベントです
* @default 0
* @type common_event
*
* @arg switchId
* @text スイッチ番号
* @desc イベント発生時にONになるスイッチです
* @default 0
* @type switch
*
* @arg variableId
* @text 変数番号
* @desc イベント発生時に値が加減される変数です
* @default 0
* @type variable
*
* @arg operationType
* @parent variableId
* @text 操作種別
* @desc イベント発生時に指定した変数の操作種別です
* @default 0
* @type select
* @option 代入
* @value 0
* @option 加算
* @value 1
* @option 減算
* @value 2
* @option 乗算
* @value 3
* @option 除算
* @value 4
* @option 剰余
* @value 5
*
* @arg operand
* @parent variableId
* @text オペランド
* @desc イベント発生時に指定した変数の操作値です
* @default 0
* @type number
* @min -99999999
*
* @arg script
* @text スクリプト
* @desc イベント発生時に実行されるスクリプトです
* @type multiline_string
*
* @arg buttonBind
* @text ボタンバインド
* @desc イベント発生時に押したことになるボタンです
* @default
* @type combo
* @option ok
* @option shift
* @option control
* @option escape
* @option left
* @option up
* @option right
* @option down
* @option pageup
* @option pagedown
*
* @arg triggerType
* @text トリガー種別
* @desc トリガーとなるマウスタッチ操作の種別です
* @default 1
* @type select
* @option 1:クリックした場合
* @value 1
* @option 2:右クリックした場合
* @value 2
* @option 3:長押しした場合
* @value 3
* @option 4:マウスをピクチャに重ねた場合
* @value 4
* @option 5:マウスをピクチャから放した場合
* @value 5
* @option 6:クリックを解放リリースした場合
* @value 6
* @option 7:クリックした場合かつ長押しの際の繰り返しを考慮
* @value 7
* @option 8:クリックしている間ずっと
* @value 8
* @option 9:ホイールクリックした場合PCの場合のみ有効
* @value 9
* @option 10:ダブルクリックした場合
* @value 10
* @option 11:マウスをピクチャ内で移動した場合
* @value 11
* @option 12:マウスを押しつつピクチャ内で移動した場合
* @value 12
* @option 13:フリック(マウス押下状態で指定距離以上動かす)した場合
* @value 13
*
* @arg invalidSwitchId
* @text 無効スイッチ
* @desc 指定した番号のスイッチがONになっている場合ピクチャイベントが無効になります
* @default 0
* @type switch
*
* @command SET_PICTURE_PREFERENCE
* @text ピクチャ設定
* @desc ピクチャイベントの設定を変更します
*
* @arg pictureId
* @text ピクチャ番号
* @desc 変更対象のピクチャ番号です
* @default 1
* @type number
*
* @arg includeOpacityZero
* @text 透過部分も含む
* @desc ピクチャの透明部分にも反応するかどうかです
* @default false
* @type boolean
*
* @command REMOVE_PICTURE_EVENT
* @text ピクチャイベント解除
* @desc 登録したピクチャイベントを解除します
*
* @arg pictureId
* @text ピクチャ番号
* @desc 操作対象のピクチャ番号です
* @default 1
* @type number
*
* @help PictureCallCommon.js
*
* ピクチャに対する様々なマウス操作に反応してコモンイベント実行や
* スイッチ制御ができますこれをピクチャイベントと呼びます
* 一度登録したピクチャイベントはピクチャを消去しても有効です
* 解除は専用のプラグインコマンドから可能です
*
* 各マウス操作についてピクチャの透明部分には反応しません
*
* ピクチャイベントはマップ画面でも戦闘画面でも
* 他のイベントや状況の制限を受けずに速やかに並列実行されます
* またピクチャイベントが発生した瞬間のフレームでは他のクリック処理は
* 無効となりタッチによるマップ移動やメッセージ送り等は行われません
*
* 利用規約
* 作者に無断で改変再配布が可能で利用形態商用18禁利用等
* についても制限はありません
* このプラグインはもうあなたのものです
*/
(function () {
"use strict";
const script = document.currentScript;
const param = PluginManagerEx.createParameter(script);
PluginManagerEx.registerCommand(script, "ADD_PICTURE_EVENT", (args) => {
if ($gameScreen.iteratePictures) {
$gameScreen.iteratePictures($gameScreen.addPictureEvent, [
args.pictureId,
args.triggerType,
args,
]);
} else {
$gameScreen.addPictureEvent(args.pictureId, args.triggerType, args);
}
});
PluginManagerEx.registerCommand(script, "REMOVE_PICTURE_EVENT", (args) => {
if ($gameScreen.iteratePictures) {
$gameScreen.iteratePictures($gameScreen.removePictureEvent, [
args.pictureId,
]);
} else {
$gameScreen.removePictureEvent(args.pictureId);
}
});
PluginManagerEx.registerCommand(script, "SET_PICTURE_PREFERENCE", (args) => {
if ($gameScreen.iteratePictures) {
$gameScreen.iteratePictures($gameScreen.setPicturePreference, [
args.pictureId,
args,
]);
} else {
$gameScreen.setPicturePreference(args.pictureId, args);
}
});
//=============================================================================
// Game_System
// ロード時にピクチャ関連メンバを初期化します。
//=============================================================================
const _Game_System_onAfterLoad = Game_System.prototype.onAfterLoad;
Game_System.prototype.onAfterLoad = function () {
_Game_System_onAfterLoad.apply(this, arguments);
$gameScreen.initPictureEventMap();
};
//=============================================================================
// Game_Screen
// ピクチャに対応するコモンイベント呼び出し用のID配列を追加定義します。
//=============================================================================
const _Game_Screen_initialize = Game_Screen.prototype.initialize;
Game_Screen.prototype.initialize = function () {
_Game_Screen_initialize.apply(this, arguments);
this.initPictureEventMap();
};
Game_Screen.prototype.initPictureEventMap = function () {
if (!this._pictureEventMap) {
this._pictureEventMap = new Game_PictureEventMap();
}
};
Game_Screen.prototype.addPictureEvent = function (pictureId, trigger, param) {
const realPictureId = this.realPictureId(pictureId);
this._pictureEventMap.append(realPictureId, trigger, param);
};
Game_Screen.prototype.removePictureEvent = function (
pictureId,
trigger = null
) {
const realPictureId = this.realPictureId(pictureId);
if (trigger === null) {
this._pictureEventMap.removeById(realPictureId);
} else {
this._pictureEventMap.remove(realPictureId, trigger);
}
};
Game_Screen.prototype.findPictureEvent = function (pictureId, trigger) {
const realPictureId = this.realPictureId(pictureId);
return this._pictureEventMap.find(realPictureId, trigger);
};
Game_Screen.prototype.setPicturePreference = function (pictureId, param) {
const realPictureId = this.realPictureId(pictureId);
this._pictureEventMap.setPreference(realPictureId, param);
};
Game_Screen.prototype.getPicturePreference = function (pictureId) {
const realPictureId = this.realPictureId(pictureId);
return this._pictureEventMap.getPreference(realPictureId);
};
Game_Screen.prototype.disConvertPositionX = function (x) {
const unshiftX = x - this.zoomX() * (1 - this.zoomScale());
return Math.round(unshiftX / this.zoomScale());
};
Game_Screen.prototype.disConvertPositionY = function (y) {
const unshiftY = y - this.zoomY() * (1 - this.zoomScale());
return Math.round(unshiftY / this.zoomScale());
};
Game_Troop.prototype.setupDynamicCommon =
Game_Map.prototype.setupDynamicCommon;
Game_Troop.prototype.setupDynamicInterpreter =
Game_Map.prototype.setupDynamicInterpreter;
const _Game_Troop_setup = Game_Troop.prototype.setup;
Game_Troop.prototype.setup = function (troopId) {
_Game_Troop_setup.apply(this, arguments);
if (!this._dynamicEvents) {
this._dynamicEvents = [];
}
};
Game_Troop.prototype.updateDynamicEvents = function () {
this._dynamicEvents.forEach((interpreter) => interpreter.update());
};
if (!Scene_Battle.prototype.hasOwnProperty("updateDynamicEvents")) {
const _Scene_Battle_updateBattleProcess =
Scene_Battle.prototype.updateBattleProcess;
Scene_Battle.prototype.updateBattleProcess = function () {
_Scene_Battle_updateBattleProcess.apply(this, arguments);
this.updateDynamicEvents();
};
Scene_Battle.prototype.updateDynamicEvents = function () {
$gameTroop.updateDynamicEvents();
};
}
/**
* Game_PictureEventMap
* ピクチャイベントの登録状態を管理するマップです
*/
class Game_PictureEventMap {
constructor() {
this._map = {};
this._preference = {};
}
append(pictureId, trigger, option) {
this._map[this.generateKey(pictureId, trigger)] = option;
}
find(pictureId, trigger) {
return this._map[this.generateKey(pictureId, trigger)];
}
remove(pictureId, trigger) {
delete this._map[this.generateKey(pictureId, trigger)];
}
removeById(pictureId) {
const regExp = new RegExp(`^${pictureId}\:`);
Object.keys(this._map).forEach((key) => {
if (key.match(regExp)) {
delete this._map[key];
}
});
}
generateKey(pictureId, trigger) {
return `${pictureId}:${trigger}`;
}
setPreference(pictureId, option) {
this._preference[pictureId] = option;
}
getPreference(pictureId) {
return this._preference[pictureId];
}
}
window.Game_PictureEventMap = Game_PictureEventMap;
//=============================================================================
// Sprite_Picture
// ピクチャのタッチ状態からのコモンイベント呼び出し予約を追加定義します。
//=============================================================================
const _Sprite_Picture_initialize = Sprite_Picture.prototype.initialize;
Sprite_Picture.prototype.initialize = function (pictureId) {
_Sprite_Picture_initialize.call(this, pictureId);
this._touch = new PictureTouch(this, pictureId);
};
const _Sprite_update = Sprite_Picture.prototype.update;
Sprite_Picture.prototype.update = function () {
_Sprite_update.apply(this, arguments);
if (
this.picture() &&
this._touch &&
!$gameSwitches.value(param.InvalidSwitchId)
) {
this._touch.update();
}
};
const _Spriteset_Base_update = Spriteset_Base.prototype.update;
Spriteset_Base.prototype.update = function () {
_Spriteset_Base_update.apply(this, arguments);
TouchInput.suppressIfNeed();
};
/**
* PictureTouch
* ピクチャのタッチ状態を管理します
*/
class PictureTouch {
constructor(picture, id) {
this._picture = picture;
this._pictureId = id;
this._handlers = [];
this._handlers[1] = () => this.isTouchEvent(TouchInput.isTriggered);
this._handlers[2] = () => this.isTouchEvent(TouchInput.isCancelled);
this._handlers[3] = () => this.isTouchEvent(TouchInput.isLongPressed);
this._handlers[4] = () => this._onMouse;
this._handlers[5] = () => this._outMouse;
this._handlers[6] = () => this.isTouchEvent(TouchInput.isReleased);
this._handlers[7] = () => this.isTouchEvent(TouchInput.isRepeated);
this._handlers[8] = () => this.isTouchEvent(TouchInput.isPressed);
this._handlers[9] = () => this.isTouchEvent(TouchInput.isWheelTriggered);
this._handlers[10] = () =>
this.isTouchEvent(TouchInput.isDoubleTriggered);
this._handlers[11] = () => this.isTouchEvent(TouchInput.isHovered);
this._handlers[12] = () => this.isTouchEvent(TouchInput.isMoved);
this._handlers[13] = () => this._flick;
this._onMouse = false;
this._outMouse = false;
this._wasOnMouse = false;
this._flick = false;
this._interpreter = new Game_Interpreter();
}
update() {
this.updateFlick();
this.updatePictureTouch();
this.updateMouseMove();
}
updatePictureTouch() {
if (SceneManager.isNextScene(Scene_Battle)) {
return;
}
this._handlers.forEach((handler, trigger) => {
if (this.isValidTrigger(handler, trigger)) {
const eventData = this.findPictureEvent(this._pictureId, trigger);
this.fireTouchEvent(eventData, trigger);
}
});
}
updateMouseMove() {
if (this.isOnPicturePos()) {
if (!this._wasOnMouse) {
this._outMouse = false;
this._onMouse = true;
this._wasOnMouse = true;
}
} else if (this._wasOnMouse) {
this._outMouse = true;
this._wasOnMouse = false;
this._onMouse = false;
}
}
updateFlick() {
this._flick = false;
const data = TouchInput.createFlickData();
if (!data) {
return;
}
if (
data.distance >= param.FlickDistance &&
this.isOnPicturePos(data.start.x, data.start.y)
) {
this._flick = true;
if (param.FlickTimeVariable) {
$gameVariables.setValue(param.FlickTimeVariable, data.time);
}
if (param.FlickDegreeVariable) {
$gameVariables.setValue(param.FlickDegreeVariable, data.degree);
}
}
}
isValidTrigger(handler, trigger) {
const eventData = this.findPictureEvent(this._pictureId, trigger);
return (
eventData &&
!$gameSwitches.value(eventData.invalidSwitchId) &&
handler &&
handler.call(this)
);
}
findPictureEvent(pictureId, trigger) {
return $gameScreen.findPictureEvent(pictureId, trigger);
}
fireTouchEvent(eventData, trigger) {
TouchInput.requestSuppress();
if (trigger === 3) {
TouchInput._pressedTime = -60;
}
if (trigger === 4) {
this._onMouse = false;
}
if (trigger === 5) {
this._outMouse = false;
}
this.applyTouchEvent(eventData);
}
applyTouchEvent(eventData) {
if (eventData.switchId) {
$gameSwitches.setValue(eventData.switchId, true);
}
if (eventData.variableId) {
this._interpreter.operateVariable(
eventData.variableId,
eventData.operationType,
eventData.operand
);
}
if (eventData.script) {
try {
eval(eventData.script);
} catch (e) {
console.error("Error Script:" + eventData.script);
PluginManagerEx.throwError(e.message, script);
}
}
if (eventData.buttonBind) {
Input.bindKeyState(eventData.buttonBind);
}
if (eventData.commonEventId) {
if ($gameParty.inBattle()) {
$gameTroop.setupDynamicCommon(eventData.commonEventId);
} else {
$gameMap.setupDynamicCommon(eventData.commonEventId);
}
}
if (param.PictureIdVariable > 0) {
$gameVariables.setValue(param.PictureIdVariable, this._pictureId);
}
}
isOnPicturePos(x = TouchInput.x, y = TouchInput.y) {
const pic = this._picture;
if (
!pic.bitmap ||
!pic.bitmap.isReady() ||
pic.scale.x === 0 ||
pic.scale.y === 0
) {
return false;
}
if (this.isTouchPosInFrameWindow(x, y)) {
return true;
}
if (Math.abs(pic.scale.x) < 0.01 || Math.abs(pic.scale.y) < 0.01) {
return false;
}
const dx = this.getTouchScreenX(x) - pic.x;
const dy = this.getTouchScreenY(y) - pic.y;
const sin = Math.sin(-pic.rotation);
const cos = Math.cos(-pic.rotation);
const bx =
Math.floor(dx * cos + dy * -sin) / pic.scale.x +
pic.anchor.x * pic.width;
const by =
Math.floor(dx * sin + dy * cos) / pic.scale.y +
pic.anchor.y * pic.height;
const preference = $gameScreen.getPicturePreference(this._pictureId);
if (pic._apngSprite || preference?.includeOpacityZero) {
return (
bx >= 0 &&
by >= 0 &&
bx <= pic.bitmap.width &&
by <= pic.bitmap.height
);
}
return pic.bitmap.getAlphaPixel(bx, by) !== 0;
}
// for DTextPicture.js
isTouchPosInFrameWindow(x, y) {
if (!this._picture._frameWindow) {
return false;
}
const frame = this._picture._frameWindow;
const sx = this.getTouchScreenX(x);
const sy = this.getTouchScreenY(y);
return (
frame.x <= sx &&
frame.x + frame.width >= sx &&
frame.y <= sy &&
frame.y + frame.height >= sy
);
}
isTouchEvent(triggerFunc) {
return triggerFunc.call(TouchInput) && this.isOnPicturePos();
}
getTouchScreenX(x) {
return $gameScreen.disConvertPositionX(x);
}
getTouchScreenY(y) {
return $gameScreen.disConvertPositionY(y);
}
}
//=============================================================================
// Input
// ピクチャクリックをキー入力に紐付けます。
//=============================================================================
Input._bindKeyStateFrames = new Map();
Input.bindKeyState = function (name) {
this._currentState[name] = true;
this._bindKeyStateFrames.set(name, 5);
};
const _Input_update = Input.update;
Input.update = function () {
_Input_update.apply(this, arguments);
this._updateBindKeyState();
};
Input._updateBindKeyState = function () {
this._bindKeyStateFrames.forEach(function (frame, keyName) {
frame--;
if (frame === 0 || !this._currentState[keyName]) {
this._currentState[keyName] = false;
this._bindKeyStateFrames.delete(keyName);
} else {
this._bindKeyStateFrames.set(keyName, frame);
}
}, this);
};
//=============================================================================
// TouchInput
// ホイールクリック、ダブルクリック等を実装
//=============================================================================
const _TouchInput__createNewState = TouchInput._createNewState;
TouchInput._createNewState = function () {
const state = _TouchInput__createNewState.apply(this, arguments);
state.wheelTriggered = false;
state.doubleTriggered = false;
return state;
};
TouchInput.requestSuppress = function () {
this._requestSuppress = true;
};
TouchInput.suppressIfNeed = function () {
if (this._requestSuppress) {
this._currentState = this._createNewState();
this._requestSuppress = false;
}
};
TouchInput.isWheelTriggered = function () {
return this._currentState.wheelTriggered;
};
TouchInput.isDoubleTriggered = function () {
return this._currentState.doubleTriggered;
};
TouchInput.createFlickData = function () {
if (!this.isPressed()) {
return null;
}
const data = {};
const dx = this._x - this._triggerX;
const dy = this._y - this._triggerY;
data.distance = Math.round(Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)));
data.time = this._pressedTime;
data.degree = Math.round(((Math.atan2(dy, -dx) + Math.PI) * 180) / Math.PI);
data.start = new Point(this._triggerX, this._triggerY);
data.end = new Point(this._x, this._y);
return data;
};
const _TouchInput_onMiddleButtonDown = TouchInput._onMiddleButtonDown;
TouchInput._onMiddleButtonDown = function (event) {
_TouchInput_onMiddleButtonDown.apply(this, arguments);
const x = Graphics.pageToCanvasX(event.pageX);
const y = Graphics.pageToCanvasY(event.pageY);
if (Graphics.isInsideCanvas(x, y)) {
this._newState.wheelTriggered = true;
}
};
const _TouchInput_onTrigger = TouchInput._onTrigger;
TouchInput._onTrigger = function (x, y) {
const prevDate = this._date;
_TouchInput_onTrigger.apply(this, arguments);
if (this._date - prevDate < 300) {
this._newState.doubleTriggered = true;
}
};
})();