This commit is contained in:
wuwenbo 2026-06-08 14:36:36 +08:00
commit 1363d7c2e0
67 changed files with 12543 additions and 8395 deletions

View File

@ -1,5 +1,5 @@
{
"nextId": 319,
"nextId": 321,
"bugs": [
{
"id": 2,
@ -2185,31 +2185,31 @@
"id": 221,
"title": "勇仪击杀妹红火焰",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779334800767,
"updatedAt": 1779334800767
"updatedAt": 1780834548370
},
{
"id": 222,
"title": "觉沉默自己人",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779336165687,
"updatedAt": 1779336165687
"updatedAt": 1780834546198
},
{
"id": 223,
"title": "海里遗迹别往陆地上顶",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779341208210,
"updatedAt": 1779341208210
"updatedAt": 1780834544577
},
{
"id": 224,
@ -2245,31 +2245,31 @@
"id": 227,
"title": "待机房: 对话功能 玩家加入房间提醒铃声 游戏中的回合等待时间设定 铃声on/off设定 游戏中: 对话提醒铃声 轮到主控回合提醒铃声",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779346198583,
"updatedAt": 1779346198583
"updatedAt": 1780834522151
},
{
"id": 228,
"title": "移动的时候镜头弹回bug",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779346438551,
"updatedAt": 1779346438551
"updatedAt": 1780834519851
},
{
"id": 229,
"title": "有人加房间 音效 / 聊天发言音效",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779349729970,
"updatedAt": 1779349729970
"updatedAt": 1780834516056
},
{
"id": 230,
@ -2305,11 +2305,11 @@
"id": 233,
"title": "沉默导致巨人战船能反击",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779368747897,
"updatedAt": 1779368747897
"updatedAt": 1780834508426
},
{
"id": 234,
@ -2325,11 +2325,11 @@
"id": 235,
"title": "学者牛狼 重置满月",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779372358837,
"updatedAt": 1779372358837
"updatedAt": 1780834494590
},
{
"id": 236,
@ -2355,11 +2355,11 @@
"id": 238,
"title": "云存档",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779378856829,
"updatedAt": 1779378856829
"updatedAt": 1780834491384
},
{
"id": 239,
@ -2595,21 +2595,21 @@
"id": 262,
"title": "话说什么时候恋升级不可视 升个级还能被人看到(",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779539151076,
"updatedAt": 1779539151076
"updatedAt": 1780834468659
},
{
"id": 263,
"title": "咲夜/妹红的Lv3 技能描述问题",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779597876284,
"updatedAt": 1779597876284
"updatedAt": 1780834466823
},
{
"id": 264,
@ -2625,11 +2625,11 @@
"id": 265,
"title": "热插拔",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"createdAt": 1779610731847,
"updatedAt": 1779610731847
"updatedAt": 1780834460491
},
{
"id": 266,
@ -2710,12 +2710,12 @@
"id": 273,
"title": "回合倒计时到了还没有选择城市升级 会被吞",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780060817975,
"updatedAt": 1780060817975
"updatedAt": 1780822721696
},
{
"id": 274,
@ -2842,12 +2842,12 @@
"id": 285,
"title": "再遗迹上升级单位后,还显示可以挖遗迹",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780128904233,
"updatedAt": 1780128904233
"updatedAt": 1780834348397
},
{
"id": 286,
@ -2941,12 +2941,12 @@
"id": 294,
"title": "芙兰禁果升级没了",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780243962013,
"updatedAt": 1780243962013
"updatedAt": 1780818827322
},
{
"id": 295,
@ -2974,12 +2974,12 @@
"id": 297,
"title": "隐身移动无视ZOC要说明",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780295495335,
"updatedAt": 1780295495335
"updatedAt": 1780822954903
},
{
"id": 298,
@ -2996,12 +2996,12 @@
"id": 299,
"title": "这个召唤出来就能获取敌人视野算不算BUG",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780321172773,
"updatedAt": 1780321172773
"updatedAt": 1780834166396
},
{
"id": 300,
@ -3062,12 +3062,12 @@
"id": 305,
"title": "还有掉线重连后的聊天回响这个已经出现了2次了",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780506821068,
"updatedAt": 1780506821068
"updatedAt": 1780834737368
},
{
"id": 306,
@ -3205,12 +3205,34 @@
"id": 318,
"title": "云存档",
"description": "",
"status": "open",
"status": "fixed",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780764609902,
"updatedAt": 1780764609902
"updatedAt": 1780818333382
},
{
"id": 319,
"title": "连升两级城市 联机 会bug",
"description": "",
"status": "open",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780822732851,
"updatedAt": 1780822732851
},
{
"id": 320,
"title": "tab键要直接定位对应单位到中间",
"description": "",
"status": "open",
"priority": "medium",
"module": "",
"longTerm": false,
"createdAt": 1780823065049,
"updatedAt": 1780823065049
}
]
}

View File

@ -1,5 +1,5 @@
{
"nextId": 16,
"nextId": 18,
"suggestions": [
{
"id": 1,
@ -135,6 +135,24 @@
"module": "",
"createdAt": 1780765191488,
"updatedAt": 1780765191488
},
{
"id": 16,
"title": "回合金来源详细显示",
"description": "",
"status": "open",
"module": "",
"createdAt": 1780810088717,
"updatedAt": 1780810088717
},
{
"id": 17,
"title": "护眼模式开发",
"description": "",
"status": "open",
"module": "",
"createdAt": 1780833588503,
"updatedAt": 1780833588503
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -0,0 +1,104 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="730.000000pt" height="600.000000pt" viewBox="0 0 730.000000 600.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,600.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M0 3405 l0 -2595 650 0 650 0 0 -405 0 -405 160 0 160 0 0 410 c0
226 2 410 3 410 2 0 75 7 163 15 405 39 771 117 1162 247 101 33 185 59 187
56 2 -2 72 -167 155 -368 83 -200 152 -366 155 -368 5 -6 284 109 291 119 2 4
-63 171 -146 370 -82 200 -150 368 -150 373 0 6 49 34 108 61 388 181 837 480
1187 790 l119 106 288 -288 288 -288 112 113 113 112 -283 283 c-155 155 -282
288 -282 294 0 7 39 56 88 110 303 340 574 742 779 1158 41 83 78 149 83 148
5 -2 172 -70 371 -153 199 -82 365 -148 369 -145 15 9 122 287 114 294 -5 4
-171 74 -369 156 -198 81 -362 149 -364 151 -2 2 24 85 57 186 130 391 208
757 247 1162 8 88 15 161 15 163 0 1 185 3 410 3 l410 0 0 160 0 160 -3650 0
-3650 0 0 -2595z m250 1870 l0 -405 -85 0 -85 0 0 405 0 405 85 0 85 0 0 -405z
m5900 382 c0 -12 -9 -101 -20 -197 -86 -760 -345 -1481 -757 -2110 -374 -571
-843 -1041 -1409 -1413 -637 -419 -1330 -670 -2119 -768 -153 -19 -236 -22
-842 -26 l-673 -5 0 2271 0 2271 2910 0 2910 0 0 -23z m-5900 -1602 l0 -485
-85 0 -85 0 0 485 0 485 85 0 85 0 0 -485z m0 -1295 l0 -480 -85 0 -85 0 0
480 0 480 85 0 85 0 0 -480z m0 -1221 l0 -399 -85 0 -85 0 0 403 0 402 85 -3
85 -3 0 -400z"/>
<path d="M2711 5409 c-199 -34 -414 -235 -497 -465 -28 -75 -30 -142 -10 -257
26 -146 1 -152 -125 -30 -116 112 -124 127 -109 207 21 115 -15 214 -110 299
-110 99 -280 123 -405 56 -38 -20 -40 -21 -120 -4 -115 24 -304 17 -395 -16
-92 -32 -163 -104 -180 -181 -15 -66 -1 -142 32 -177 28 -31 49 -23 78 32 30
56 43 67 88 67 71 0 116 -43 237 -225 52 -77 159 -218 239 -314 80 -96 146
-180 146 -187 0 -20 -26 -24 -138 -24 -73 1 -120 6 -147 17 -99 39 -163 24
-267 -60 -117 -96 -249 -313 -300 -492 -32 -114 -32 -306 0 -419 31 -108 98
-235 176 -332 66 -82 114 -127 296 -275 249 -203 370 -331 432 -456 l41 -82 8
-158 c4 -87 8 -161 9 -165 1 -21 19 -3 39 40 55 119 66 260 30 378 -54 175
-140 284 -434 554 -244 224 -384 404 -435 561 -35 107 -33 258 4 384 35 119
76 203 119 252 44 48 192 121 263 129 30 4 138 -6 284 -26 137 -19 283 -33
350 -34 110 -1 118 0 168 28 107 60 187 178 217 322 9 44 14 125 14 224 -1
223 23 309 126 455 62 88 129 145 229 195 82 42 95 45 165 45 71 0 84 -4 174
-47 129 -62 196 -108 286 -193 149 -141 247 -286 400 -588 165 -328 252 -447
371 -505 49 -24 66 -27 155 -27 104 0 212 18 242 41 32 23 -1 38 -100 45 -57
4 -124 17 -176 34 -73 23 -92 34 -137 81 -65 67 -163 260 -223 444 -161 487
-444 771 -831 833 -134 22 -217 27 -279 16z m-984 -251 c53 -25 116 -85 142
-136 37 -72 40 -162 5 -162 -23 0 -64 -46 -64 -74 0 -13 12 -38 26 -55 20 -24
24 -37 19 -61 -14 -66 -131 -187 -223 -231 -39 -19 -44 -20 -66 -6 -13 9 -48
51 -79 94 -30 43 -99 128 -154 188 -191 214 -191 242 -1 109 123 -87 197 -112
249 -84 23 13 55 73 64 121 14 74 -50 162 -117 162 -19 0 -55 -18 -102 -50
-39 -28 -82 -54 -95 -58 -26 -8 -226 64 -272 98 -34 25 -110 33 -149 17 -16
-7 -44 -28 -60 -47 -35 -39 -39 -29 -10 27 11 21 40 53 66 71 113 78 257 94
393 46 95 -34 114 -34 161 4 74 59 175 69 267 27z m457 -694 c25 -10 19 -46
-20 -109 -101 -168 -186 -235 -301 -235 -65 0 -113 23 -113 54 0 20 9 29 45
45 27 12 86 60 148 119 56 54 113 106 127 115 24 17 84 22 114 11z"/>
<path d="M2750 5084 c-135 -36 -245 -153 -322 -341 -31 -75 -32 -84 -38 -273
l-7 -195 -43 -100 c-49 -115 -82 -166 -138 -217 -111 -100 -294 -109 -622 -31
-82 20 -121 24 -178 20 -224 -17 -382 -212 -382 -472 0 -104 21 -190 72 -294
51 -106 171 -234 373 -395 303 -243 391 -357 556 -721 l23 -50 9 91 c11 107
-2 186 -53 328 -53 144 -92 186 -345 376 -124 92 -257 201 -305 250 -134 134
-188 259 -192 443 -2 71 1 88 21 120 32 52 106 115 171 146 49 23 68 25 170
26 112 0 117 -1 185 -35 l70 -35 145 1 c221 1 306 30 415 141 58 59 122 172
150 263 11 35 20 116 25 225 19 393 140 598 338 571 178 -24 377 -234 567
-601 222 -427 313 -524 568 -611 113 -38 186 -41 284 -10 45 15 84 30 87 35 3
4 -38 13 -90 20 -53 7 -117 19 -143 27 -144 42 -367 258 -506 489 -27 44 -78
143 -115 220 -80 168 -156 274 -294 410 -109 108 -181 154 -281 180 -72 18
-103 18 -175 -1z"/>
<path d="M2745 4722 c-62 -42 -114 -103 -140 -166 -31 -73 -9 -87 52 -33 64
56 85 67 133 67 95 0 186 -93 355 -365 186 -299 246 -359 421 -420 63 -22 94
-23 94 -4 0 5 -31 43 -69 85 -94 103 -158 197 -247 366 -151 285 -242 396
-377 463 -42 21 -95 39 -119 42 -38 4 -50 0 -103 -35z"/>
<path d="M2646 4441 c-16 -11 -42 -39 -58 -62 -57 -86 -27 -158 63 -146 68 9
97 -7 204 -112 123 -121 192 -175 270 -212 61 -30 119 -37 130 -18 4 6 -27 43
-68 82 -81 77 -146 159 -220 274 -117 182 -232 252 -321 194z"/>
<path d="M2571 4043 c-5 -10 -25 -49 -46 -88 -100 -191 -183 -248 -420 -290
-137 -25 -134 -23 -100 -52 104 -86 149 -98 249 -63 255 88 440 330 363 478
-20 36 -32 40 -46 15z"/>
<path d="M2706 3819 c-15 -11 -53 -55 -85 -97 -94 -124 -168 -187 -274 -237
-51 -24 -99 -50 -106 -59 -33 -40 40 -82 124 -72 134 15 254 83 315 177 66
103 102 227 81 282 -13 32 -20 33 -55 6z"/>
<path d="M2859 3738 c-14 -26 -5 -118 15 -157 48 -92 432 -344 646 -424 201
-75 369 -90 474 -43 63 28 67 42 10 37 -94 -8 -391 143 -684 348 -338 236
-379 261 -424 261 -16 0 -30 -8 -37 -22z"/>
<path d="M1453 3670 c-48 -11 -96 -43 -120 -80 -42 -61 -22 -192 49 -335 66
-129 133 -204 298 -331 58 -45 128 -108 157 -140 106 -119 111 -124 127 -118
38 15 3 127 -77 243 -16 24 -92 109 -168 188 -148 155 -212 240 -230 306 -20
74 10 190 63 244 l32 33 -50 -1 c-27 -1 -63 -4 -81 -9z"/>
<path d="M1680 3667 c-45 -23 -54 -58 -42 -165 14 -116 39 -171 124 -267 97
-110 148 -200 148 -261 0 -13 4 -24 9 -24 14 0 53 112 58 170 6 67 -7 101 -74
192 -61 81 -90 147 -110 247 -23 117 -48 141 -113 108z"/>
<path d="M2803 3493 c-22 -8 -14 -68 13 -109 64 -96 284 -298 505 -464 161
-121 282 -185 366 -195 60 -7 103 4 103 26 0 22 -86 100 -215 194 -226 165
-483 357 -600 448 -107 85 -148 108 -172 100z"/>
<path d="M2700 3349 c-63 -69 -51 -100 142 -365 251 -344 386 -497 481 -546
46 -23 147 -31 154 -12 17 48 -683 954 -736 954 -7 0 -25 -14 -41 -31z"/>
<path d="M2182 3201 c-70 -70 -112 -138 -112 -182 0 -36 32 -82 73 -104 20
-10 39 -17 42 -14 2 3 -5 33 -16 67 -23 68 -20 104 6 82 8 -7 20 -31 27 -53
13 -43 69 -107 93 -107 19 0 19 -1 -6 89 -23 82 -28 168 -15 244 12 67 -8 63
-92 -22z"/>
<path d="M2540 3245 c-16 -20 -1 -63 132 -375 209 -490 313 -675 399 -710 62
-26 61 15 -3 205 -92 275 -332 722 -462 863 -33 35 -47 39 -66 17z"/>
<path d="M2397 3194 c-15 -15 -6 -84 27 -220 44 -180 85 -389 136 -694 42
-258 55 -316 70 -325 17 -11 60 47 78 104 21 69 23 298 3 411 -39 222 -121
494 -194 641 -40 80 -44 84 -77 87 -20 2 -39 0 -43 -4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -121,13 +121,72 @@
background: #fff;
margin-top: 12px;
}
.style-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 12px;
margin-top: 14px;
}
.style-card,
.style-rule {
border: 1px solid var(--line);
border-radius: 8px;
background: #fbfdff;
padding: 12px;
}
.style-card figure { margin: 0; }
.style-card img {
display: block;
width: 100%;
aspect-ratio: 4 / 3;
object-fit: cover;
background: #e2e8f0;
border: 1px solid var(--line);
border-radius: 6px;
}
.style-card.symbol img {
object-fit: contain;
padding: 10px;
background: #eef2f7;
}
.style-card h3,
.style-rule h3 {
color: #0f766e;
font-size: 14px;
margin: 8px 0 5px;
}
.style-card p,
.style-rule p {
color: var(--muted);
font-size: 13px;
margin: 0;
}
.style-tag {
display: inline-block;
margin-top: 8px;
border: 1px solid rgba(15,118,110,.24);
border-radius: 999px;
color: #0f766e;
font-size: 12px;
font-weight: 700;
padding: 2px 8px;
}
.style-rule-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
margin-top: 14px;
}
@media (max-width: 980px) {
.spec-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.wonder-layout { grid-template-columns: 1fr; }
.style-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.style-rule-grid { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
.spec-grid { grid-template-columns: 1fr; }
.ref-grid { grid-template-columns: 1fr; }
.style-grid { grid-template-columns: 1fr; }
}
</style>
</head>
@ -153,6 +212,7 @@
<a href="#war">战争</a>
<a href="#culture">文化</a>
<a href="#explore">探索</a>
<a href="#style">强风格参考</a>
</nav>
<section id="global" class="doc-section note">
@ -626,6 +686,140 @@
</div>
</section>
<section id="style" class="doc-section">
<h2>强风格参考:把维京味推满</h2>
<p class="lead">以下参考图不要求逐一还原到某个奇观,而是给美术提供一组“视觉调味板”:强剪影、强色块、强符号、强神话感。正式 Sprite 仍应保持小体量、透明底、等距 3/4 俯视,但可以从这些图里吸收更鲜明的维京识别点。</p>
<div class="style-rule-grid">
<article class="style-rule">
<h3>可以大胆吸收</h3>
<p>红白条纹帆、黑白乌鸦旗、红黄蓝圆盾、蛇形/龙头木雕、黑木屋顶、彩绘符文线、焦黑木材与冰冷蓝灰阴影。这些元素能在小图尺寸下快速读出维京文明。</p>
</article>
<article class="style-rule">
<h3>只取气氛,不画成插画</h3>
<p>葬礼火光、奥丁狂猎、极光、暴风云、海上远航可以提供配色和情绪,但不要把单格奇观画成横向大场景。火、云、极光最多作为小范围背光或旗帜/屋顶边缘色。</p>
</article>
<article class="style-rule">
<h3>刻板印象的边界</h3>
<p>角盔、毛皮、夸张武器可以作为少量装饰或宣传感来源,尤其适合战争/财富奇观的辅件;不要让它们替代真实主体,比如环形堡、船葬、木板教堂、草皮长屋。</p>
</article>
</div>
<div class="style-grid">
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-01-bayeux-striped-sail.jpg" alt="贝叶挂毯风格的维京船和条纹帆参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Vikings_sailing2.jpg">条纹帆剪影</a></h3>
<p>红、黄、白条纹帆远看非常醒目,适合贸易、财富、探索三张里区分长船用途。</p>
<span class="style-tag">帆面色块</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-02-draken-sail.jpg" alt="Draken Harald Harfagre 长船升帆参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Seilet_heises_ombord_i_%22Draken_Harald_H%C3%A5rfagre%22_ved_Fjellsk%C3%A5lnes_i_Osterfjorden.jpg">现代复原长船</a></h3>
<p>可提炼高桅杆、弧形船体、密集绳索和红白帆,注意在 Sprite 中只保留大形。</p>
<span class="style-tag">长船轮廓</span>
</article>
<article class="style-card symbol">
<figure>
<img src="assets/viking-wonders/style-03-raven-banner.svg" alt="乌鸦旗参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Raven_Banner_2.svg">乌鸦旗符号</a></h3>
<p>黑旗白纹或白旗黑纹都很适合插在议会、环形堡、贸易港边缘,少量使用即可。</p>
<span class="style-tag">旗帜符号</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-04-funeral-viking.jpg" alt="Frank Dicksee 维京葬礼绘画参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:El_funeral_de_un_vikingo,_por_Frank_Dicksee.jpg">维京葬礼戏剧感</a></h3>
<p>适合财富奇观吸收“船葬、火光、仪式性”的配色,但不要画成海上插画。</p>
<span class="style-tag">船葬火光</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-05-wild-hunt.jpg" alt="Peter Nicolai Arbo 奥丁狂猎绘画参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:La_caza_salvaje_de_Od%C3%ADn,_por_Peter_Nicolai_Arbo.jpg">奥丁狂猎气氛</a></h3>
<p>冷蓝、黑影、血红点缀能强化神话感。可用于战争奇观的旗帜、阴影和高对比边缘。</p>
<span class="style-tag">神话高反差</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-06-borgund-church.jpg" alt="Borgund 木板教堂参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:2018_Borgund_Stave_Church.jpg">黑木板教堂</a></h3>
<p>比乌尔内斯更有强剪影:多层尖屋顶、黑木、龙头檐角,适合作文化奇观造型强化。</p>
<span class="style-tag">建筑剪影</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-07-shield-wall.jpg" alt="维京盾墙和圆盾配色参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Viking_reenactment_at_Arrowe_Park_1.png">彩色圆盾墙</a></h3>
<p>红、黄、蓝、黑白圆盾可以作为环形堡、议会场、贸易港的边缘小色块。</p>
<span class="style-tag">圆盾色块</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-08-jelling-colored.jpg" alt="彩绘耶灵符文石参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Jelling_viking_stone_1.JPG">彩绘耶灵石</a></h3>
<p>红底、蓝纹、白线能让知识奇观不只是灰石头;可把彩绘线保留为关键识别点。</p>
<span class="style-tag">符文彩绘</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-09-colored-runestone.jpg" alt="彩色符文石纹样参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:U_871_%C3%96lsta_(PNG_version).png">高饱和符文线</a></h3>
<p>适合提炼“红石面 + 蓝色缠绕纹 + 浅色符文”的图标化语言,远看更有装饰性。</p>
<span class="style-tag">红蓝纹样</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-10-dragon-mount.jpg" alt="哥特兰龙形金属构件参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Gotland_reliquary_dragon_mount_(DIG_25656).jpg">龙兽金属件</a></h3>
<p>可转化为船首、檐角、旗杆头或门楣装饰,给小建筑加一个“兽头端点”。</p>
<span class="style-tag">龙头端点</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-11-horning-plank.jpg" alt="Hørning 木板兽纹雕刻参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:H%C3%B8rning_plank_(DMR-167913).jpg">木板兽纹雕刻</a></h3>
<p>适合文化、知识奇观局部细节;在 Sprite 中可简化为浅色线刻,不必画复杂花纹。</p>
<span class="style-tag">木雕纹样</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-12-aurora-norway.jpg" alt="挪威极光色彩参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Northern_Lights_at_Lauklines_Norway.jpg">极光冷色调</a></h3>
<p>可作为全维京文明的冷色辅助:蓝绿高光、紫黑阴影、低饱和雪地或海岸边缘。</p>
<span class="style-tag">冷光配色</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-13-horned-bronze.jpg" alt="带角头盔青铜小像参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Man_with_horned_helmet_Grevensv%C3%A6nge_Nationalmuseet.jpg">角盔古物符号</a></h3>
<p>这是可用的“强记忆点”,但更适合作为小雕像、柱头、战旗图案,不建议变成主体建筑。</p>
<span class="style-tag">刻板符号</span>
</article>
<article class="style-card">
<figure>
<img src="assets/viking-wonders/style-14-stereotype-helmets.jpg" alt="现代维京角盔刻板印象参考">
</figure>
<h3><a href="https://commons.wikimedia.org/wiki/File:Viking_Helmets.jpg">现代角盔刻板印象</a></h3>
<p>可参考皮革、铁灰、角白、红布的配色组合;只建议用于装饰性辅件或宣传风格。</p>
<span class="style-tag">民俗化味道</span>
</article>
</div>
<div class="search-block">进一步搜索词:<code>Viking art concept longship red sail</code><code>Norse mythology art Odin wild hunt</code><code>Viking shield wall colorful round shields</code><code>stave church dragon head roof</code><code>Viking runestone painted reconstruction</code><code>Assassin's Creed Valhalla Viking settlement concept art</code><code>Northgard Viking building art</code><code>God of War Norse architecture concept art</code></div>
</section>
<section class="doc-section note">
<h2>交付检查</h2>
<ol class="rule-list">

Binary file not shown.

View File

@ -1,4 +1,4 @@
21044%$#@!True%$#@!攻击移动%$#@!%$#@!%$#@!%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!False%$#@!False%$#@!True%$#@!%$#@!%$#@!!@#$%21045%$#@!True%$#@!主动移动%$#@!%$#@!%$#@!%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!False%$#@!False%$#@!True%$#@!%$#@!%$#@!!@#$%21046%$#@!True%$#@!**<主动移动>**或**<攻击移动>**时对周围1格范围造成溅射伤害。%$#@!%$#@!%$#@!%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!%$#@!SkillDataAssets SkillInfoList[18] SkillDesc!@#$%21047%$#@!True%$#@![版本 V0.7.3c]
21048%$#@!True%$#@![版本 V0.7.3c]
发布日期:26.6.7
本次对0.7.3版本中发现的部分问题和bug进行修补。其余bug及各种小型错误我们仍在持续修复中。
@ -20,4 +20,97 @@
15.修复了棋子状态栏特殊状态超过9层后数字排版显示错误的bug
16.修复了竹林狼上校进入港口后血量上限出错的bug
17.修复了芙兰朵露的能力"禁果"在升级时层数丢失的bug
18.修复了犬走椛附近的学者转化了敌方单位后也会赋予“异端烙印”的bug%$#@!%$#@!%$#@!%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!%$#@!VersionConfig Versions[0] Description!@#$%
18.修复了犬走椛附近的学者转化了敌方单位后也会赋予“异端烙印”的bug
19.修复了1个可能导致联机不同步问题的bug%$#@![版本 V0.7.3c]
發布日期:26.6.7
本次對0.7.3版本中發現的部分問題和bug進行修補。其餘bug及各種小型錯誤我們仍在持續修復中。
---------[bug修復與優化]-------------
1.修復了部分會導致船隻出現在陸地的bug
2.修復了部分會導致已經死亡的單位圖像錯誤殘留的bug
3.修復了[車]職階英雄在敵方城市中心能獲得要塞防禦加成的bug
4.修復了[車]職階英雄在被動移動時也會產生濺射傷害的bug
5.修復了移動濺射在被動移動(如被擠開)也會生效的bug完善了描述
6.修復了勇儀推人致死結果貼圖錯誤
7.修復了洩矢諏訪子創造禦射宮司大人時會重置和平奇觀計數的bug
8.優化了頂部資訊欄金幣顯示排版問題
9.優化了多個視窗重疊時,快捷鍵“右鍵”及"Esc"關閉視窗的順序
10.修復了間諜攻擊隱身單位佔據的城市中心時出錯(反復播放攻擊動畫)的bug
11.修復了城牆建造後城市中心的單位沒有立刻刷新狀態的bug
12.修復了竹林狼上校血量較低時受到攻擊後不會反擊的bug
13.修復了古明地戀的能力"拉薩之舞"會給盟友也賦予"恐懼"的bug
14.修復部分描述文案錯誤和圖示錯誤
15.修復了棋子狀態欄特殊狀態超過9層後數字排版顯示錯誤的bug
16.修復了竹林狼上校進入港口後血量上限出錯的bug
17.修復了芙蘭朵露的能力"禁果"在升級時層數丟失的bug
18.修復了犬走椛附近的學者轉化了敵方單位後也會賦予“異端烙印”的bug
19.修復了1個可能導致聯機不同步問題的bug%$#@![Version V0.7.3c]
Release Date: 26.6.7
This update fixes some issues and bugs found in version 0.7.3. Other bugs and minor errors are still being fixed.
---------[Bug Fixes and Improvements]-------------
1. Fixed some bugs that could cause ships to appear on land.
2. Fixed some bugs that could leave incorrect images of dead units behind.
3. Fixed a bug where [Chariot] class heroes could gain Fortress defense bonuses in enemy City Centers.
4. Fixed a bug where [Chariot] class heroes also dealt Splash Damage during passive movement.
5. Fixed a bug where movement Splash Damage could also trigger during passive movement (such as being pushed away), and improved the description.
6. Fixed incorrect result textures when Yuugi pushed a unit to death.
7. Fixed a bug where Suwako Moriya creating Lord Mishaguji would reset the Peace Wonder count.
8. Improved Gold display layout in the top info bar.
9. Improved the order in which the "Right Click" and "Esc" shortcuts close overlapping windows.
10. Fixed a bug when a Spy attacked a stealthed unit occupying a City Center, causing attack animations to replay repeatedly.
11. Fixed a bug where the unit in a City Center did not refresh its status immediately after Walls were built.
12. Fixed a bug where Bamboo Forest Wolf Colonel would not counterattack after being attacked at low HP.
13. Fixed a bug where Koishi Komeiji's ability "Rasa Dance" also applied "Fear" to allies.
14. Fixed some incorrect descriptions and icons.
15. Fixed a number layout display error when special statuses in the unit status bar exceeded 9 stacks.
16. Fixed a bug where Bamboo Forest Wolf Colonel's max HP became incorrect after entering a Harbor.
17. Fixed a bug where Flandre's ability "Forbidden Fruit" lost stacks on level up.
18. Fixed a bug where scholars near Momiji Inubashiri would also apply "Heretic Brand" after converting enemy units.
19. Fixed a bug that could cause multiplayer desync.%$#@![バージョン V0.7.3c]
リリース日:26.6.7
今回は0.7.3バージョンで発見された一部の問題とbugを修正しました。その他のbugや各種小さな不具合は引き続き修正中です。
---------[bug修正と最適化]-------------
1.一部の船が陸地に出現するbugを修正
2.死亡済みユニットの画像が誤って残ることがあるbugを修正
3.[車]職階ヒーローが敵都市中心で要塞防御ボーナスを得られるbugを修正
4.[車]職階ヒーローが受動移動時にもスプラッシュダメージを発生させるbugを修正
5.移動スプラッシュが受動移動(押し出しなど)でも発動するbugを修正し、説明を改善
6.勇儀が押し出しでユニットを倒した際の結果画像の誤りを修正
7.洩矢諏訪子が御射宮司大人を生成する際、平和遺産カウントがリセットされるbugを修正
8.上部情報バーのゴールド表示レイアウトを最適化
9.複数ウィンドウが重なっている時、ショートカット「右クリック」と"Esc"でウィンドウを閉じる順序を最適化
10.スパイが都市中心を占拠しているステルスユニットを攻撃した際にエラー(攻撃アニメーションの反復再生)が発生するbugを修正
11.城壁建設後、都市中心のユニット状態が即時更新されないbugを修正
12.竹林狼大佐が低HP時に攻撃を受けても反撃しないbugを修正
13.古明地こいしの能力"ラサの舞"が味方にも"恐怖"を付与するbugを修正
14.一部の説明文とアイコンの誤りを修正
15.ユニット状態バーの特殊状態が9層を超えた後、数字レイアウト表示が崩れるbugを修正
16.竹林狼大佐が港に入った後、最大HPが誤るbugを修正
17.フランドールの能力"禁果"がレベルアップ時にスタックを失うbugを修正
18.犬走椛付近の学者が敵ユニットを転化した後にも"異端の烙印"を付与するbugを修正
19.マルチプレイの同期ズレを引き起こす可能性があるbugを1件修正%$#@![버전 V0.7.3c]
출시일:26.6.7
이번 업데이트에서는 0.7.3 버전에서 발견된 일부 문제와 bug를 수정했습니다. 그 외 bug와 여러 작은 오류도 계속 수정 중입니다.
---------[bug 수정 및 최적화]-------------
1. 일부 선박이 육지에 나타날 수 있는 bug 수정
2. 이미 사망한 유닛의 이미지가 잘못 남을 수 있는 bug 수정
3. [전차] 클래스 영웅이 적 도시 중심에서 요새 방어 보너스를 받을 수 있는 bug 수정
4. [전차] 클래스 영웅이 수동 이동 중에도 범위 공격 피해를 발생시키는 bug 수정
5. 이동 범위 피해가 수동 이동(밀려남 등)에서도 발동하는 bug를 수정하고 설명 개선
6. 유기가 밀쳐서 유닛을 처치했을 때 결과 이미지가 잘못 표시되는 문제 수정
7. 모리야 스와코가 미샤구지 님을 생성할 때 평화 불가사의 카운트가 초기화되는 bug 수정
8. 상단 정보바의 골드 표시 배치 최적화
9. 여러 창이 겹쳤을 때 단축키 "우클릭" 및 "Esc"로 창을 닫는 순서 최적화
10. 스파이가 도시 중심을 점거한 은신 유닛을 공격할 때 오류(공격 애니메이션 반복 재생)가 발생하는 bug 수정
11. 성벽 건설 후 도시 중심의 유닛 상태가 즉시 갱신되지 않는 bug 수정
12. 대나무숲 늑대 대령이 HP가 낮을 때 공격을 받아도 반격하지 않는 bug 수정
13. 고메이지 코이시의 능력 "라사의 춤"이 아군에게도 "공포"를 부여하는 bug 수정
14. 일부 설명 문구와 아이콘 오류 수정
15. 유닛 상태바의 특수 상태가 9중첩을 초과한 뒤 숫자 배치 표시가 잘못되는 bug 수정
16. 대나무숲 늑대 대령이 항구에 들어간 후 최대 HP가 잘못되는 bug 수정
17. 플랑드르의 능력 "금단의 과실"이 레벨업 시 중첩을 잃는 bug 수정
18. 이누바시리 모미지 근처의 학자가 적 유닛을 전환한 뒤에도 "이단의 낙인"을 부여하는 bug 수정
19. 멀티플레이 동기화 오류를 일으킬 수 있는 bug 1건 수정%$#@!False%$#@!False%$#@!False%$#@!%$#@!False%$#@!False%$#@!False%$#@!%$#@!!@#$%

File diff suppressed because one or more lines are too long

View File

@ -19931,6 +19931,7 @@
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiMovePlusSkill] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill/YuugiMoveSkillFormatter] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiPushResult] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiPushSkill/YuugiPushSkillFormatter] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiPushSkill] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.SkillBase/SkillBaseFormatter] Analyse Type References in Custom Attribute References...
@ -22882,6 +22883,7 @@
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiMovePlusSkill] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill/YuugiMoveSkillFormatter] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiPushResult] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiPushSkill/YuugiPushSkillFormatter] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.YuugiPushSkill] Analyse Type References in Custom Attribute References...
[Info][OPS.OBF][OnAnalyse_Assemblies] [[Assembly-CSharp] Logic.Skill.SkillBase/SkillBaseFormatter] Analyse Type References in Custom Attribute References...
@ -26980,6 +26982,7 @@
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiMoveSkill/YuugiMoveSkillFormatter::.ctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiMoveSkill::.ctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiMoveSkill::.cctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiPushResult::.ctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiPushSkill/YuugiPushSkillFormatter::.ctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiPushSkill::.ctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
[Info][OPS.OBF][OnAnalyse_Assemblies] Skip Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiPushSkill::.cctor()] Because of compatibility component: .Net Framework - Compatibility : Is Special.
@ -38579,6 +38582,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiDashSkill] :
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiMovePlusSkill] :
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill] :
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a new Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiPushResult] :
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiPushSkill] :
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Namespace [[Assembly-CSharp] Logic.Skill.SkillBase] :
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Namespace [[Assembly-CSharp] Logic.Skill.ISkill] :
@ -38802,8 +38806,8 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] UIOutsideTutorListRowMono] : bdy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] SetTextColor] : cc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] UnitySourceGeneratedAssemblyMonoScriptTypes_v1] : cg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a new Type Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0] : ex
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a new Type Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1] : fi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0] : ex
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1] : fi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] TH1_UI.View.Outside.RoomNameInputValidator] : ggi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] TH1_UI.View.Outside.UIOutsideAboutStaffLineMono] : cd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] TH1_UI.View.Outside.UIOutsideAboutStaffTitleLineMono] : ce
@ -39592,7 +39596,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.StompSkill] : fou
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SuperDashSkill/<>c__DisplayClass3_0] : czi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SuperDashSkill] : fow
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a new Type Name [[Assembly-CSharp] Logic.Skill.SurpriseSkill/<>c__DisplayClass4_0] : pk
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SurpriseSkill/<>c__DisplayClass4_0] : pk
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SurpriseSkill] : foz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SuwakoAttackAllySkill] : eds
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SuwakoAttackProSkill] : edt
@ -39637,6 +39641,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.YuugiDashSkill] : ivk
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.YuugiMovePlusSkill] : ivl
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill] : iyl
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a new Type Name [[Assembly-CSharp] Logic.Skill.YuugiPushResult] : bgi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.YuugiPushSkill] : jkg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.SkillBase] : fpx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found a looked up Type Name [[Assembly-CSharp] Logic.Skill.ISkill] : ha
@ -40302,7 +40307,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopSettingView::<OnInit>b__16_0()] : izn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopSettingView::<OnInit>b__16_1()] : jbm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopSettingView::<OnInit>b__16_2()] : jjf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::<TopBarAnim>b__0()] : ru
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::<TopBarAnim>b__0()] : ru
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::OnInit()] : uo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SetContent()] : dzf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::UpdateAllInstant()] : eef
@ -40313,9 +40318,13 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::UpdateCulture()] : jsy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::UpdateFaith()] : ept
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::TopBarAnim(TMPro.TextMeshProUGUI,System.Int32,System.Int32,System.Single,TH1_UI.View.Top.UITopTopBarView/TopBarPanelType)] : bff
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::CancelTopBarAnim()] : zw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SelfCheckCoinText()] : zx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::CancelTopBarAnim()] : zw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SelfCheckCoinText()] : zx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::UpdateCoinPerTurn()] : eqb
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::RebuildCoinPanelLayout()] : bpx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SetTopBarAnimText(TMPro.TextMeshProUGUI,System.Int32,TH1_UI.View.Top.UITopTopBarView/TopBarPanelType)] : dfp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SetCoinText(System.Int32)] : dfq
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::RebuildTopBarLayout(UnityEngine.RectTransform[])] : dgd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopWinView::OnInit()] : uo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopWinView::OnMatchStart()] : bat
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopWinView::SetContent()] : bau
@ -41273,6 +41282,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanel::<InitializeButtons>b__40_1()] : pz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanel::<InitializeButtons>b__40_2()] : qa
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanel::<InitializeButtons>b__40_3()] : ty
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] UnityEngine.Color TH1_UI.HintUI.HeroHintPanelCommonCircleMono::get_DefaultActionBgColor()] : dge
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanelCommonCircleMono::SetContent(SkillType,RuntimeData.UnitFullType)] : jvo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanelCommonCircleMono::SetContent(Logic.Action.CommonActionId)] : jvp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanelCommonCircleMono::ResetContent()] : jvq
@ -41321,12 +41331,14 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoTask::CanCloseByEsc()] : jcy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] TH1_UI.Controller.Base.IViewControllerInterface TH1_UI.Core.UIInfoTask::GetViewController()] : jcz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoTask::CancelMapHighlights()] : jda
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoTask::IsShow()] : dgf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager/<>c__DisplayClass4_0::<StartNewTask>b__0()] : bov
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnMatchStart()] : hjn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnMatchEnd()] : bow
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::StartNewTask(TH1_UI.Core.UIInfoTask)] : exg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::HideCurTask()] : exh
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoManager::TryCloseCurTaskByEsc()] : jdb
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoManager::TryHandleCurTaskByEsc()] : dgg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnChoiceHeroInfo()] : dgq
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnTaskCompleted(TH1_UI.Core.UIInfoTask)] : ins
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::Update()] : exj
@ -41856,7 +41868,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateGridMap()] : bgg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateCityMap()] : bgh
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::UpdateCityInfoAllCoinTech()] : eum
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateUnitMap()] : bgi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateUnitMap(System.Boolean)] : dgh
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RepairUnitRenderersToData(RuntimeData.MapData,System.Collections.Generic.List`1<System.UInt32>,System.Collections.Generic.List`1<System.UInt32>)] : jqs
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateProjectileMap()] : bgj
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::FirstRenderMap()] : bgk
@ -44081,6 +44093,8 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.InputLogic::ShouldIgnoreClick(UnityEngine.GameObject)] : biy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.InputLogic::LockInput()] : biz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.InputLogic::UnlockInput()] : bja
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.InputLogic::IsCancelShortcutDown()] : dgi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.InputLogic::TryHandleCancelShortcut(System.Boolean)] : dhc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.InputLogic::Update()] : bjc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.InputLogic::SimulateButtonClick(UnityEngine.UI.Button)] : bjf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.InputLogic::OnTabAction()] : jhu
@ -44260,8 +44274,10 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.UnitLogic::CheckIsSelfPlayer(RuntimeData.MapData,System.UInt32)] : bnz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.UnitLogic::MoveTo(RuntimeData.MapData,RuntimeData.PlayerData,RuntimeData.UnitData,RuntimeData.GridData)] : gze
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.UnitLogic::MoveToLogic(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.GridData,MoveType,System.Collections.Generic.List`1<UnityEngine.Vector2Int>)] : jmm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.UnitLogic::CanCounterByRules(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] : dlm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.UnitLogic::CanCounter(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] : boa
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.UnitLogic::Attack(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&)] : gzd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void Logic.UnitLogic::Attack(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&,Logic.Skill.YuugiPushResult&)] : fcl
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] Logic.SettlementInfo Logic.UnitLogic::DamageSettlement(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32,Logic.DamageType)] : boc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Int32 Logic.UnitLogic::RecoverHealth_Legacy(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32)] : dby
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Int32 Logic.UnitLogic::RecoverHealth(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32,Logic.HealType)] : dbz
@ -44423,6 +44439,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::AddLevel(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32)] : bax
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Single Logic.Skill.FlandreBuffSkill::GetAttackAdditionParam(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] : jzg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.FlandreBuffSkill::ReservedOnTransform(RuntimeData.UnitData,RuntimeData.UnitFullType)] : izf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::NewSkillOnTransform(System.Collections.Generic.List`1<Logic.Skill.SkillBase>)] : bpk
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::OnAnyUnitCreate(RuntimeData.MapData,RuntimeData.IdentifierBase,RuntimeData.UnitData)] : mqt
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Int32 Logic.Skill.FlandreBuffSkill::GetSharedFlandreBuffLevel(RuntimeData.MapData)] : mqu
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::SyncFlandreBuffLevel(RuntimeData.MapData,System.Int32)] : mqv
@ -44579,6 +44596,8 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.KomeijiRiderKillSkill::BeforeDamageOther(RuntimeData.MapData,Logic.SettlementInfo)] : dcg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.KomeijiRiderTransSkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.KomeijiRiderTransSkill::OnDamageOther(RuntimeData.MapData,Logic.SettlementInfo)] : feb
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Skill.KomeijiRiderTransSkill::ReportBoatOnLandTransform(RuntimeData.MapData,Logic.SettlementInfo,RuntimeData.UnitFullType,System.String)] : dpf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.String Logic.Skill.KomeijiRiderTransSkill::FormatUnitFullType(RuntimeData.UnitFullType)] : dro
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.LaevatainPreySkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.LaevatainPreySkill::OnDamaged(RuntimeData.MapData,Logic.SettlementInfo)] : jzj
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.LaevatainSkill::GetSkillType()] : bps
@ -44942,13 +44961,13 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.SuperHideSkill::OnTurnStart(RuntimeData.IdentifierBase,RuntimeData.MapData)] : glg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.SuperHideSkill::OnDamaged(RuntimeData.MapData,Logic.SettlementInfo)] : jzj
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.SuperHideSkill::IsInvisible(RuntimeData.UnitData,RuntimeData.MapData)] : bqv
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void Logic.Skill.SurpriseSkill/<>c__DisplayClass4_0::<RefreshOriginVisualAfterAttack>b__0()] : zy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Skill.SurpriseSkill/<>c__DisplayClass4_0::<RefreshOriginVisualAfterAttack>b__0()] : zy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.SurpriseSkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.SurpriseSkill::IsLimitTargetCounterAttack(RuntimeData.UnitData,RuntimeData.MapData)] : kox
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Void Logic.Skill.SurpriseSkill::AfterActiveAttackOther(RuntimeData.MapData,Logic.AttackInfo)] : dca
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void Logic.Skill.SurpriseSkill::RefreshOriginVisualAfterAttack(RuntimeData.MapData,RuntimeData.UnitData)] : bcc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.SurpriseSkill::IsEnemyTerritoryOrAdjacent(RuntimeData.MapData,RuntimeData.GridData,System.UInt32)] : bcd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.SurpriseSkill::IsEnemyTerritory(RuntimeData.MapData,RuntimeData.GridData,System.UInt32)] : bpo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Skill.SurpriseSkill::RefreshOriginVisualAfterAttack(RuntimeData.MapData,RuntimeData.UnitData)] : bcc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.SurpriseSkill::IsEnemyTerritoryOrAdjacent(RuntimeData.MapData,RuntimeData.GridData,System.UInt32)] : bcd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.SurpriseSkill::IsEnemyTerritory(RuntimeData.MapData,RuntimeData.GridData,System.UInt32)] : bpo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.SuwakoAttackAllySkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.SuwakoAttackProSkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.SuwakoAttackSkill::GetSkillType()] : bps
@ -45037,7 +45056,10 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.YuugiMoveSkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Single Logic.Skill.YuugiMoveSkill::GetAttackAdditionParam(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] : jzg
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] SkillType Logic.Skill.YuugiPushSkill::GetSkillType()] : bps
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::YuugiPushAttack(RuntimeData.UnitData,RuntimeData.UnitData,RuntimeData.MapData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&,System.Boolean&)] : kap
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::YuugiPushAttack(RuntimeData.UnitData,RuntimeData.UnitData,RuntimeData.MapData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&,Logic.Skill.YuugiPushResult&)] : fuc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void Logic.Skill.YuugiPushSkill::TryCreateBonePile(RuntimeData.MapData,RuntimeData.PlayerData,RuntimeData.CityData,RuntimeData.CityData,RuntimeData.UnitData,RuntimeData.GridData,RuntimeData.UnitFullType)] : fvq
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::TryGetBonePileReviveType(RuntimeData.UnitData,RuntimeData.UnitFullType&)] : ggx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::YuugiPushRepositionWithoutMoveSideEffects(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.GridData)] : ggy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::CanCounterForPush(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] : fcq
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Collections.Generic.List`1<RuntimeData.GridData> Logic.Skill.SkillBase::RentAroundBuf()] : ddi
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Skill.SkillBase::ReturnAroundBuf()] : ddj
@ -45640,11 +45662,13 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::ReportBoatUnitOnLandBeforeAction(Logic.Action.CommonActionParams)] : mrt
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::ReportUnitRendererMismatchBeforeAction(Logic.Action.CommonActionParams)] : mru
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendPreviousActionsLog(System.Text.StringBuilder,RuntimeData.MapData)] : mrv
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendRecentActionsLog(System.Text.StringBuilder,RuntimeData.MapData,System.Int32)] : eme
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendActionNetDataLog(System.Text.StringBuilder,Logic.AI.ActionNetData)] : mrw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendBoatUnitsOnLandLog(System.Text.StringBuilder,RuntimeData.MapData)] : mrx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendRendererOnlyUnitsLog(System.Text.StringBuilder,RuntimeData.MapData,TH1Renderer.MapRenderer)] : mry
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendDataOnlyUnitsLog(System.Text.StringBuilder,RuntimeData.MapData,TH1Renderer.MapRenderer)] : mrz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendUnitDataLog(System.Text.StringBuilder,RuntimeData.MapData,RuntimeData.UnitData)] : mzb
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::ReportUnitAttackRendererMissingAfterKill(Logic.Action.CommonActionParams,Logic.Action.CommonActionId,TH1_Anim.FragmentType,System.Int32,System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean,RuntimeData.GridData,RuntimeData.GridData,TH1_Renderer.UnitRenderer,TH1_Renderer.UnitRenderer)] : eoy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AfterExecute(Logic.Action.CommonActionParams)] : hap
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::CheckCan(Logic.Action.CommonActionParams)] : fcn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::CheckShow(Logic.Action.CommonActionParams,ShowType&)] : hxc
@ -45670,6 +45694,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.UnitPassiveMoveAction::Execute(Logic.Action.CommonActionParams)] : guo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.UnitPassiveMoveAction::CheckCan(Logic.Action.CommonActionParams)] : fcn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.UnitPassiveMoveAction::CheckShow(Logic.Action.CommonActionParams,ShowType&)] : hxc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActiveAttackActionRecorder::MarkStarted(RuntimeData.MapData,RuntimeData.PlayerData)] : ezr
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActiveAttackActionRecorder::MarkStarted(RuntimeData.MapData,RuntimeData.UnitData)] : ftf
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.UnitAttackAction::Execute(Logic.Action.CommonActionParams)] : guo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.UnitAttackAction::CheckCan(Logic.Action.CommonActionParams)] : fcn
@ -45707,7 +45732,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.BuyCultureCardAction::CheckCan(Logic.Action.CommonActionParams)] : fcn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.BuyCultureCardAction::CheckShow(Logic.Action.CommonActionParams,ShowType&)] : hxc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<AddDamageStep>b__0()] : ftw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<AddDamageStep>g__RunVisual|1()] : bpx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<AddDamageStep>g__RunVisual|1()] : ghc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] Logic.Action.ActionVisualEventCollector Logic.Action.ActionVisualEventCollector::get_Current()] : fxb
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector::set_Current(Logic.Action.ActionVisualEventCollector)] : fxu
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Action.ActionVisualEventCollector::get_MainTargetKilledBeforeAttack()] : gex
@ -45795,9 +45820,9 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitAction::CheckShow(Logic.Action.CommonActionParams,ShowType&)] : hxc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] Logic.Action.ActionShowState Logic.Action.TrainUnitAction::CheckShowState(Logic.Action.CommonActionParams)] : fcp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::CheckGiantHasColdTime(Logic.Action.CommonActionParams)] : eyj
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::TryGetHeroReviveInfo(Logic.Action.CommonActionParams,System.Int32&,System.Int32&,System.Int32&)] : bqm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::TryGetHeroReviveInfo(Logic.Action.CommonActionParams,System.Int32&,System.Int32&,System.Int32&)] : bqm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Int32 Logic.Action.TrainUnitActionTrainHero::GetCost(Logic.Action.CommonActionParams)] : emn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::CanPayHeroReviveCulture(Logic.Action.CommonActionParams)] : csp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::CanPayHeroReviveCulture(Logic.Action.CommonActionParams)] : csp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::CheckHeroReachMaxCount(Logic.Action.CommonActionParams)] : kbt
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::Execute(Logic.Action.CommonActionParams)] : guo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Method Name [[Assembly-CSharp] System.Boolean Logic.Action.TrainUnitActionTrainHero::CheckCan(Logic.Action.CommonActionParams)] : fcn
@ -46591,19 +46616,19 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Action`1<ScenarioPack> UIOutsideTutorListRowMono/<>c__DisplayClass6_0::onButtonClick] : izv
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] UIOutsideTutorListRowMono UIOutsideTutorListRowMono/<>c__DisplayClass6_0::<>4__this] : izw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Action`1<UIOutsideTutorListRowMono> UIOutsideTutorListRowMono/<>c__DisplayClass6_0::onButtonClick2] : izx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0::animVersion] : cuy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0::<>4__this] : cze
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] TMPro.TextMeshProUGUI TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::text] : dba
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::tmp] : dbc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Boolean TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::finalCheck] : dbd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/TopBarPanelType TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::panel] : dbe
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::CS$<>8__locals1] : dbs
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.String TH1_UI.View.Top.UITopTopBarView::TopBarAnimTimerMessage] : dbt
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::CoinSelfCheckInterval] : dbu
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView::_topBarAnimVersion] : dbv
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Boolean TH1_UI.View.Top.UITopTopBarView::_coinAnimActive] : dbw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::_coinAnimEndTime] : dbx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::_nextCoinSelfCheckTime] : dfn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0::animVersion] : cuy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0::<>4__this] : cze
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TMPro.TextMeshProUGUI TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::text] : dba
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::tmp] : dbc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/TopBarPanelType TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::panel] : dbe
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Boolean TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::finalCheck] : dbd
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::CS$<>8__locals1] : dbs
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.String TH1_UI.View.Top.UITopTopBarView::TopBarAnimTimerMessage] : dbt
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::CoinSelfCheckInterval] : dbu
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView::_topBarAnimVersion] : dbv
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Boolean TH1_UI.View.Top.UITopTopBarView::_coinAnimActive] : dbw
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::_coinAnimEndTime] : dbx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::_nextCoinSelfCheckTime] : dfn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] UnityEngine.Color TH1_UI.View.Top.UITopWinView::_winTextColor] : eoz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] UnityEngine.Color TH1_UI.View.Top.UITopWinView::_loseTextColor] : epm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] UnityEngine.Color TH1_UI.View.Top.UITopWinView::_winTopbarColor] : epo
@ -48529,13 +48554,18 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1Renderer.GridRenderer Logic.Skill.StompSkill/<>c__DisplayClass2_1::ro] : joy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] Logic.Skill.StompSkill/<>c__DisplayClass2_0 Logic.Skill.StompSkill/<>c__DisplayClass2_1::CS$<>8__locals1] : jqn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.SuperDashSkill/<>c__DisplayClass3_0::unitRenderer] : jqo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.SurpriseSkill/<>c__DisplayClass4_0::unitRenderer] : dfo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.SurpriseSkill/<>c__DisplayClass4_0::unitRenderer] : dfo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] RuntimeData.UnitData Logic.Skill.SuwakoHebiSkill/<>c__DisplayClass4_0::newUnit1] : ivo
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] RuntimeData.MapData Logic.Skill.SuwakoHebiSkill/<>c__DisplayClass4_0::map] : ihp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] RuntimeData.UnitData Logic.Skill.SuwakoHebiSkill/<>c__DisplayClass4_0::newUnit2] : ivp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Collections.Generic.List`1<UnityEngine.Vector2Int> Logic.Skill.UtsuhoDelayActSkill::Path] : jpz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.VampireProSkill/<>c__DisplayClass2_0::unitRenderer] : jqx
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.VampireSkill/<>c__DisplayClass3_0::unitRenderer] : jqy
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushResult::Pushed] : ghh
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushResult::TargetKilledAfterPush] : glc
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] RuntimeData.GridData Logic.Skill.YuugiPushResult::OriginGridBeforePush] : gns
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] RuntimeData.GridData Logic.Skill.YuugiPushResult::TargetGridBeforePush] : gzn
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found new Field Name [[Assembly-CSharp] RuntimeData.GridData Logic.Skill.YuugiPushResult::TargetGridAfterPush] : hjz
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Collections.Generic.Dictionary`2<System.Type,System.UInt16> Logic.Skill.SkillBase/SkillBaseFormatter::__typeToTag] : gth
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Collections.Generic.List`1<System.Collections.Generic.List`1<RuntimeData.GridData>> Logic.Skill.SkillBase::_aroundBufPool] : jtp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Int32 Logic.Skill.SkillBase::_poolTop] : jtq
@ -48759,6 +48789,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Text.StringBuilder Logic.Action.ActionLogicBase::_sharedRendererUnitMismatchLogBuilder] : nci
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::_boatUnitOnLandDiagnosticFailedLogged] : ncj
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::_unitRendererMismatchDiagnosticFailedLogged] : nck
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::_unitAttackRendererMissingAfterKillDiagnosticFailedLogged] : frb
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] System.Int32 Logic.Action.ActionLogicBase::MaxRendererUnitMismatchLogCount] : ncl
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] RuntimeData.GridData Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::targetGrid] : gzm
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Field Name [[Assembly-CSharp] Logic.Action.ActionVisualEventCollector Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<>4__this] : gzo
@ -49199,6 +49230,7 @@
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Property Name [[Assembly-CSharp] System.UInt64 TH1_UI.View.Bottom.UIBottomNetRowMono::MemberId()] : iwe
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Property Name [[Assembly-CSharp] UnityEngine.Canvas TH1_UI.View.Base.View::ViewCanvas()] : fnp
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Property Name [[Assembly-CSharp] System.Boolean TH1_UI.HintUI.HeroHintPanel::IsPinned()] : kef
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Property Name [[Assembly-CSharp] UnityEngine.Color TH1_UI.HintUI.HeroHintPanelCommonCircleMono::DefaultActionBgColor()] : frv
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Property Name [[Assembly-CSharp] UnityEngine.GameObject TH1_UI.Core.BaseUIView`1::Instance()] : fig
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found looked up Property Name [[Assembly-CSharp] TData TH1_UI.Core.BaseUIView`1::Data()] : fih
[Info][OPS.OBF][OnFindMemberNames_Assemblies] Found group Property Name [[Assembly-CSharp] System.String TH1_UI.Core.BaseUIView`1::PrefabPath()] :
@ -50850,6 +50882,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiMovePlusSkill] to
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Type [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill]
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill] to
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiPushResult] to
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Type [[Assembly-CSharp] Logic.Skill.YuugiPushSkill]
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type Namespace [[Assembly-CSharp] Logic.Skill.YuugiPushSkill] to
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type Namespace [[Assembly-CSharp] Logic.Skill.SkillBase] to
@ -52302,6 +52335,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type [[Assembly-CSharp] Logic.Skill.YuugiMovePlusSkill] to ivl
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Type [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill]
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type [[Assembly-CSharp] Logic.Skill.YuugiMoveSkill] to iyl
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type [[Assembly-CSharp] Logic.Skill.YuugiPushResult] to bgi
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Type [[Assembly-CSharp] Logic.Skill.YuugiPushSkill]
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type [[Assembly-CSharp] Logic.Skill.YuugiPushSkill] to jkg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Type [[Assembly-CSharp] Logic.Skill.SkillBase] to fpx
@ -53010,6 +53044,10 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::CancelTopBarAnim()] to zw
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SelfCheckCoinText()] to zx
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::UpdateCoinPerTurn()] to eqb
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::RebuildCoinPanelLayout()] to bpx
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SetTopBarAnimText(TMPro.TextMeshProUGUI,System.Int32,TH1_UI.View.Top.UITopTopBarView/TopBarPanelType)] to dfp
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::SetCoinText(System.Int32)] to dfq
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopTopBarView::RebuildTopBarLayout(UnityEngine.RectTransform[])] to dgd
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopWinView::OnInit()] to uo
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopWinView::OnMatchStart()] to bat
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.View.Top.UITopWinView::SetContent()] to bau
@ -53967,6 +54005,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanel::<InitializeButtons>b__40_1()] to pz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanel::<InitializeButtons>b__40_2()] to qa
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanel::<InitializeButtons>b__40_3()] to ty
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] UnityEngine.Color TH1_UI.HintUI.HeroHintPanelCommonCircleMono::get_DefaultActionBgColor()] to dge
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanelCommonCircleMono::SetContent(SkillType,RuntimeData.UnitFullType)] to jvo
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanelCommonCircleMono::SetContent(Logic.Action.CommonActionId)] to jvp
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.HintUI.HeroHintPanelCommonCircleMono::ResetContent()] to jvq
@ -54034,12 +54073,14 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoTask::CanCloseByEsc()] to jcy
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] TH1_UI.Controller.Base.IViewControllerInterface TH1_UI.Core.UIInfoTask::GetViewController()] to jcz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoTask::CancelMapHighlights()] to jda
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoTask::IsShow()] to dgf
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager/<>c__DisplayClass4_0::<StartNewTask>b__0()] to bov
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnMatchStart()] to hjn
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnMatchEnd()] to bow
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::StartNewTask(TH1_UI.Core.UIInfoTask)] to exg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::HideCurTask()] to exh
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoManager::TryCloseCurTaskByEsc()] to jdb
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean TH1_UI.Core.UIInfoManager::TryHandleCurTaskByEsc()] to dgg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnChoiceHeroInfo()] to dgq
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::OnTaskCompleted(TH1_UI.Core.UIInfoTask)] to ins
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_UI.Core.UIInfoManager::Update()] to exj
@ -55443,7 +55484,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateGridMap()] to bgg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateCityMap()] to bgh
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::UpdateCityInfoAllCoinTech()] to eum
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateUnitMap()] to bgi
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateUnitMap(System.Boolean)] to dgh
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RepairUnitRenderersToData(RuntimeData.MapData,System.Collections.Generic.List`1<System.UInt32>,System.Collections.Generic.List`1<System.UInt32>)] to jqs
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::RenderUpdateProjectileMap()] to bgj
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1Renderer.MapRenderer::FirstRenderMap()] to bgk
@ -57805,7 +57846,6 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Method [[Assembly-CSharp] System.Void TH1_Core.Managers.EventManager::Publish`1(T)]
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Method [[Assembly-CSharp] System.Void TH1_Core.Managers.EventManager::Publish`1(T)]
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Method [[Assembly-CSharp] System.Void TH1_Core.Managers.EventManager::Publish`1(T)]
[Info][OPS.OBF][OnObfuscate_Assemblies] Update Reference Method [[Assembly-CSharp] System.Void TH1_Core.Managers.EventManager::Publish`1(T)]
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_Core.Managers.EventManager::Publish`1(T)] to fcv
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void TH1_Core.Managers.PresentationManager/<>c__DisplayClass34_0::<EnqueueSkillEffect>b__0()] to bln
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean TH1_Core.Managers.PresentationManager::get_Busy()] to gya
@ -58100,6 +58140,8 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.InputLogic::ShouldIgnoreClick(UnityEngine.GameObject)] to biy
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.InputLogic::LockInput()] to biz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.InputLogic::UnlockInput()] to bja
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.InputLogic::IsCancelShortcutDown()] to dgi
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.InputLogic::TryHandleCancelShortcut(System.Boolean)] to dhc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.InputLogic::Update()] to bjc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.InputLogic::SimulateButtonClick(UnityEngine.UI.Button)] to bjf
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.InputLogic::OnTabAction()] to jhu
@ -58280,8 +58322,10 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.UnitLogic::CheckIsSelfPlayer(RuntimeData.MapData,System.UInt32)] to bnz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.UnitLogic::MoveTo(RuntimeData.MapData,RuntimeData.PlayerData,RuntimeData.UnitData,RuntimeData.GridData)] to gze
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.UnitLogic::MoveToLogic(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.GridData,MoveType,System.Collections.Generic.List`1<UnityEngine.Vector2Int>)] to jmm
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.UnitLogic::CanCounterByRules(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] to dlm
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.UnitLogic::CanCounter(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] to boa
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.UnitLogic::Attack(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&)] to gzd
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.UnitLogic::Attack(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&,Logic.Skill.YuugiPushResult&)] to fcl
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] Logic.SettlementInfo Logic.UnitLogic::DamageSettlement(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32,Logic.DamageType)] to boc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Int32 Logic.UnitLogic::RecoverHealth_Legacy(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32)] to dby
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Int32 Logic.UnitLogic::RecoverHealth(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32,Logic.HealType)] to dbz
@ -58443,6 +58487,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::AddLevel(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData,System.Int32)] to bax
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Single Logic.Skill.FlandreBuffSkill::GetAttackAdditionParam(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] to jzg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Skill.FlandreBuffSkill::ReservedOnTransform(RuntimeData.UnitData,RuntimeData.UnitFullType)] to izf
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::NewSkillOnTransform(System.Collections.Generic.List`1<Logic.Skill.SkillBase>)] to bpk
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::OnAnyUnitCreate(RuntimeData.MapData,RuntimeData.IdentifierBase,RuntimeData.UnitData)] to mqt
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Int32 Logic.Skill.FlandreBuffSkill::GetSharedFlandreBuffLevel(RuntimeData.MapData)] to mqu
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.FlandreBuffSkill::SyncFlandreBuffLevel(RuntimeData.MapData,System.Int32)] to mqv
@ -58599,6 +58644,8 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.KomeijiRiderKillSkill::BeforeDamageOther(RuntimeData.MapData,Logic.SettlementInfo)] to dcg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] SkillType Logic.Skill.KomeijiRiderTransSkill::GetSkillType()] to bps
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.KomeijiRiderTransSkill::OnDamageOther(RuntimeData.MapData,Logic.SettlementInfo)] to feb
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.KomeijiRiderTransSkill::ReportBoatOnLandTransform(RuntimeData.MapData,Logic.SettlementInfo,RuntimeData.UnitFullType,System.String)] to dpf
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.String Logic.Skill.KomeijiRiderTransSkill::FormatUnitFullType(RuntimeData.UnitFullType)] to dro
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] SkillType Logic.Skill.LaevatainPreySkill::GetSkillType()] to bps
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.LaevatainPreySkill::OnDamaged(RuntimeData.MapData,Logic.SettlementInfo)] to jzj
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] SkillType Logic.Skill.LaevatainSkill::GetSkillType()] to bps
@ -59057,7 +59104,10 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] SkillType Logic.Skill.YuugiMoveSkill::GetSkillType()] to bps
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Single Logic.Skill.YuugiMoveSkill::GetAttackAdditionParam(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] to jzg
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] SkillType Logic.Skill.YuugiPushSkill::GetSkillType()] to bps
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::YuugiPushAttack(RuntimeData.UnitData,RuntimeData.UnitData,RuntimeData.MapData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&,System.Boolean&)] to kap
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::YuugiPushAttack(RuntimeData.UnitData,RuntimeData.UnitData,RuntimeData.MapData,System.Int32&,System.Int32&,TH1_Anim.FragmentType&,Logic.Skill.YuugiPushResult&)] to fuc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.YuugiPushSkill::TryCreateBonePile(RuntimeData.MapData,RuntimeData.PlayerData,RuntimeData.CityData,RuntimeData.CityData,RuntimeData.UnitData,RuntimeData.GridData,RuntimeData.UnitFullType)] to fvq
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::TryGetBonePileReviveType(RuntimeData.UnitData,RuntimeData.UnitFullType&)] to ggx
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::YuugiPushRepositionWithoutMoveSideEffects(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.GridData)] to ggy
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushSkill::CanCounterForPush(RuntimeData.MapData,RuntimeData.UnitData,RuntimeData.UnitData)] to fcq
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Collections.Generic.List`1<RuntimeData.GridData> Logic.Skill.SkillBase::RentAroundBuf()] to ddi
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Skill.SkillBase::ReturnAroundBuf()] to ddj
@ -59762,11 +59812,13 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::ReportBoatUnitOnLandBeforeAction(Logic.Action.CommonActionParams)] to mrt
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::ReportUnitRendererMismatchBeforeAction(Logic.Action.CommonActionParams)] to mru
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendPreviousActionsLog(System.Text.StringBuilder,RuntimeData.MapData)] to mrv
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendRecentActionsLog(System.Text.StringBuilder,RuntimeData.MapData,System.Int32)] to eme
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendActionNetDataLog(System.Text.StringBuilder,Logic.AI.ActionNetData)] to mrw
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendBoatUnitsOnLandLog(System.Text.StringBuilder,RuntimeData.MapData)] to mrx
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendRendererOnlyUnitsLog(System.Text.StringBuilder,RuntimeData.MapData,TH1Renderer.MapRenderer)] to mry
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendDataOnlyUnitsLog(System.Text.StringBuilder,RuntimeData.MapData,TH1Renderer.MapRenderer)] to mrz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AppendUnitDataLog(System.Text.StringBuilder,RuntimeData.MapData,RuntimeData.UnitData)] to mzb
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::ReportUnitAttackRendererMissingAfterKill(Logic.Action.CommonActionParams,Logic.Action.CommonActionId,TH1_Anim.FragmentType,System.Int32,System.Int32,System.Boolean,System.Boolean,System.Boolean,System.Boolean,RuntimeData.GridData,RuntimeData.GridData,TH1_Renderer.UnitRenderer,TH1_Renderer.UnitRenderer)] to eoy
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionLogicBase::AfterExecute(Logic.Action.CommonActionParams)] to hap
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::CheckCan(Logic.Action.CommonActionParams)] to fcn
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::CheckShow(Logic.Action.CommonActionParams,ShowType&)] to hxc
@ -59792,6 +59844,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.UnitPassiveMoveAction::Execute(Logic.Action.CommonActionParams)] to guo
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.UnitPassiveMoveAction::CheckCan(Logic.Action.CommonActionParams)] to fcn
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.UnitPassiveMoveAction::CheckShow(Logic.Action.CommonActionParams,ShowType&)] to hxc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActiveAttackActionRecorder::MarkStarted(RuntimeData.MapData,RuntimeData.PlayerData)] to ezr
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActiveAttackActionRecorder::MarkStarted(RuntimeData.MapData,RuntimeData.UnitData)] to ftf
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.UnitAttackAction::Execute(Logic.Action.CommonActionParams)] to guo
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.UnitAttackAction::CheckCan(Logic.Action.CommonActionParams)] to fcn
@ -59829,7 +59882,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.BuyCultureCardAction::CheckCan(Logic.Action.CommonActionParams)] to fcn
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.BuyCultureCardAction::CheckShow(Logic.Action.CommonActionParams,ShowType&)] to hxc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<AddDamageStep>b__0()] to ftw
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<AddDamageStep>g__RunVisual|1()] to bpx
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<AddDamageStep>g__RunVisual|1()] to ghc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] Logic.Action.ActionVisualEventCollector Logic.Action.ActionVisualEventCollector::get_Current()] to fxb
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Void Logic.Action.ActionVisualEventCollector::set_Current(Logic.Action.ActionVisualEventCollector)] to fxu
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Method [[Assembly-CSharp] System.Boolean Logic.Action.ActionVisualEventCollector::get_MainTargetKilledBeforeAttack()] to gex
@ -60760,8 +60813,8 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0::<>4__this] to cze
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] TMPro.TextMeshProUGUI TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::text] to dba
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Int32 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::tmp] to dbc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::finalCheck] to dbd
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/TopBarPanelType TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::panel] to dbe
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::finalCheck] to dbd
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_0 TH1_UI.View.Top.UITopTopBarView/<>c__DisplayClass32_1::CS$<>8__locals1] to dbs
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.String TH1_UI.View.Top.UITopTopBarView::TopBarAnimTimerMessage] to dbt
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Single TH1_UI.View.Top.UITopTopBarView::CoinSelfCheckInterval] to dbu
@ -62857,6 +62910,11 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Collections.Generic.List`1<UnityEngine.Vector2Int> Logic.Skill.UtsuhoDelayActSkill::Path] to jpz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.VampireProSkill/<>c__DisplayClass2_0::unitRenderer] to jqx
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] TH1_Renderer.UnitRenderer Logic.Skill.VampireSkill/<>c__DisplayClass3_0::unitRenderer] to jqy
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushResult::Pushed] to ghh
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean Logic.Skill.YuugiPushResult::TargetKilledAfterPush] to glc
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] RuntimeData.GridData Logic.Skill.YuugiPushResult::OriginGridBeforePush] to gns
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] RuntimeData.GridData Logic.Skill.YuugiPushResult::TargetGridBeforePush] to gzn
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] RuntimeData.GridData Logic.Skill.YuugiPushResult::TargetGridAfterPush] to hjz
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Collections.Generic.Dictionary`2<System.Type,System.UInt16> Logic.Skill.SkillBase/SkillBaseFormatter::__typeToTag] to gth
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Collections.Generic.List`1<System.Collections.Generic.List`1<RuntimeData.GridData>> Logic.Skill.SkillBase::_aroundBufPool] to jtp
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Int32 Logic.Skill.SkillBase::_poolTop] to jtq
@ -63099,6 +63157,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Text.StringBuilder Logic.Action.ActionLogicBase::_sharedRendererUnitMismatchLogBuilder] to nci
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::_boatUnitOnLandDiagnosticFailedLogged] to ncj
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::_unitRendererMismatchDiagnosticFailedLogged] to nck
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Boolean Logic.Action.ActionLogicBase::_unitAttackRendererMissingAfterKillDiagnosticFailedLogged] to frb
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] System.Int32 Logic.Action.ActionLogicBase::MaxRendererUnitMismatchLogCount] to ncl
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] RuntimeData.GridData Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::targetGrid] to gzm
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Field [[Assembly-CSharp] Logic.Action.ActionVisualEventCollector Logic.Action.ActionVisualEventCollector/<>c__DisplayClass19_0::<>4__this] to gzo
@ -63524,6 +63583,7 @@
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] System.UInt64 TH1_UI.View.Bottom.UIBottomNetRowMono::MemberId()] to iwe
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] UnityEngine.Canvas TH1_UI.View.Base.View::ViewCanvas()] to fnp
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] System.Boolean TH1_UI.HintUI.HeroHintPanel::IsPinned()] to kef
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] UnityEngine.Color TH1_UI.HintUI.HeroHintPanelCommonCircleMono::DefaultActionBgColor()] to frv
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] UnityEngine.GameObject TH1_UI.Core.BaseUIView`1::Instance()] to fig
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] TData TH1_UI.Core.BaseUIView`1::Data()] to fih
[Info][OPS.OBF][OnObfuscate_Assemblies] Rename Property [[Assembly-CSharp] System.String TH1_UI.Core.BaseUIView`1::PrefabPath()] to fnq
@ -65164,7 +65224,7 @@
[Debug][OPS.OBF][Setup] Load Pipeline
[Info][OPS.OBF][OnPostBuild] Process component Post Process Unity MonoBehaviour Assets
[Info][OPS.OBF][OnPostBuild] Assets are not bundled. Obfuscating globalgamemanagers.assets file.
[Info][OPS.OBF][OnPostBuild] Obfuscating globalgamemanagers.assets file 'C:\TH1\Pack\073b\TOHOTOPIA_Data\globalgamemanagers.assets'.
[Info][OPS.OBF][OnPostBuild] Obfuscating globalgamemanagers.assets file 'C:\TH1\Pack\073c2\TOHOTOPIA_Data\globalgamemanagers.assets'.
[Debug][OPS.OBF][OnPostBuild] Loaded globalgamemanagers.assets file successfully.
[Debug][OPS.OBF][OnPostBuild] Obfuscated '97' MonoScripts in assets file 'globalgamemanagers.assets'.
[Debug][OPS.OBF][OnPostBuild] Updated globalgamemanagers.assets file successfully.

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 25f7d650ef2514540891e85cf328a886
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.5, y: 0.2}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: b28f467319eb85a46b834365dd93ad56
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.5, y: 0.2}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 9930db58dbe26ab4c8b3c862c51b2999
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.5, y: 0.2}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: ee928b3f798b800448ec52d63de08b48
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.5, y: 0.2}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 2fadee5f9527254429555ad06caed85e
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.5, y: 0.2}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 202394abfaa82cb4caa7bd19e3b54013
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 9b210c925aaa8744b82f485780a45bb7
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 3a608d9c82276524ea9a4f60dad07766
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: 45e0b72d50ef7c548950f6fdd04764c6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: cc4d6c59bf20e74409af14c4b8a7110c
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2537,7 +2537,7 @@ MonoBehaviour:
- SkillType: 169
SkillViewType: 2
SkillName: "\u5C71\u4E2D\u7684\u5343\u91CC\u773C"
SkillDesc: "\u79FB\u52A8\u65F6\uFF0C\u83B7\u5F973\u683C\u8303\u56F4\u5185\u6240\u6709\u654C\u65B9\u7684\u89C6\u91CE"
SkillDesc: "**<\u79FB\u52A8>**\u6216**<\u51FA\u6218>**\u65F6\uFF0C\u83B7\u5F973\u683C\u8303\u56F4\u5185\u6240\u6709\u654C\u65B9\u7684\u89C6\u91CE"
NotShow: 0
ShowOnUnitMono: 0
SkillIcon: {fileID: 21300000, guid: 78fd7fd8e97b3964eacaca72adfd6b28, type: 3}
@ -3087,7 +3087,7 @@ MonoBehaviour:
- SkillType: 218
SkillViewType: 4
SkillName: "\u9690\u8EAB"
SkillDesc: "\u5BF9\u654C\u65B9\u4E0D\u53EF\u89C1\u3002\u654C\u65B9\u79FB\u52A8\u81F3\u8BE5\u5355\u4F4D\u6240\u5904\u4F4D\u7F6E\uFF0C\u6216\u4E3B\u52A8\u6D88\u8017\u884C\u52A8\u70B9\u65F6\uFF0C\u7834\u9664\u8BE5\u72B6\u6001\u3002"
SkillDesc: "\u5BF9\u654C\u65B9\u4E0D\u53EF\u89C1\uFF0C\u79FB\u52A8\u65E0\u89C6**<\u654C\u65B9\u63A7\u5236>**\u3002\u654C\u65B9\u79FB\u52A8\u81F3\u8BE5\u5355\u4F4D\u6240\u5904\u4F4D\u7F6E\uFF0C\u6216\u4E3B\u52A8\u6D88\u8017\u884C\u52A8\u70B9\u65F6\uFF0C\u7834\u9664\u8BE5\u72B6\u6001\u3002"
NotShow: 0
ShowOnUnitMono: 1
SkillIcon: {fileID: 21300000, guid: 8e314acefd44f074686b4a3c9e972ca7, type: 3}

View File

@ -17,7 +17,7 @@ MonoBehaviour:
- MajorVersion: 0
MinorVersion: 7
PatchVersion: 3
Description: "[\u7248\u672C V0.7.3c]\n\u53D1\u5E03\u65E5\u671F:26.6.7\n\u672C\u6B21\u5BF90.7.3\u7248\u672C\u4E2D\u53D1\u73B0\u7684\u90E8\u5206\u95EE\u9898\u548Cbug\u8FDB\u884C\u4FEE\u8865\u3002\u5176\u4F59bug\u53CA\u5404\u79CD\u5C0F\u578B\u9519\u8BEF\u6211\u4EEC\u4ECD\u5728\u6301\u7EED\u4FEE\u590D\u4E2D\u3002\n\n---------[bug\u4FEE\u590D\u4E0E\u4F18\u5316]-------------\n1.\u4FEE\u590D\u4E86\u90E8\u5206\u4F1A\u5BFC\u81F4\u8239\u53EA\u51FA\u73B0\u5728\u9646\u5730\u7684bug\n2.\u4FEE\u590D\u4E86\u90E8\u5206\u4F1A\u5BFC\u81F4\u5DF2\u7ECF\u6B7B\u4EA1\u7684\u5355\u4F4D\u56FE\u50CF\u9519\u8BEF\u6B8B\u7559\u7684bug\n3.\u4FEE\u590D\u4E86[\u8F66]\u804C\u9636\u82F1\u96C4\u5728\u654C\u65B9\u57CE\u5E02\u4E2D\u5FC3\u80FD\u83B7\u5F97\u8981\u585E\u9632\u5FA1\u52A0\u6210\u7684bug\n4.\u4FEE\u590D\u4E86[\u8F66]\u804C\u9636\u82F1\u96C4\u5728\u88AB\u52A8\u79FB\u52A8\u65F6\u4E5F\u4F1A\u4EA7\u751F\u6E85\u5C04\u4F24\u5BB3\u7684bug\n5.\u4FEE\u590D\u4E86\u79FB\u52A8\u6E85\u5C04\u5728\u88AB\u52A8\u79FB\u52A8(\u5982\u88AB\u6324\u5F00)\u4E5F\u4F1A\u751F\u6548\u7684bug\uFF0C\u5B8C\u5584\u4E86\u63CF\u8FF0\n6.\u4FEE\u590D\u4E86\u52C7\u4EEA\u63A8\u4EBA\u81F4\u6B7B\u7ED3\u679C\u8D34\u56FE\u9519\u8BEF\n7.\u4FEE\u590D\u4E86\u6D29\u77E2\u8BF9\u8BBF\u5B50\u521B\u9020\u5FA1\u5C04\u5BAB\u53F8\u5927\u4EBA\u65F6\u4F1A\u91CD\u7F6E\u548C\u5E73\u5947\u89C2\u8BA1\u6570\u7684bug\n8.\u4F18\u5316\u4E86\u9876\u90E8\u4FE1\u606F\u680F\u91D1\u5E01\u663E\u793A\u6392\u7248\u95EE\u9898\n9.\u4F18\u5316\u4E86\u591A\u4E2A\u7A97\u53E3\u91CD\u53E0\u65F6\uFF0C\u5FEB\u6377\u952E\u201C\u53F3\u952E\u201D\u53CA\"Esc\"\u5173\u95ED\u7A97\u53E3\u7684\u987A\u5E8F\n10.\u4FEE\u590D\u4E86\u95F4\u8C0D\u653B\u51FB\u9690\u8EAB\u5355\u4F4D\u5360\u636E\u7684\u57CE\u5E02\u4E2D\u5FC3\u65F6\u51FA\u9519(\u53CD\u590D\u64AD\u653E\u653B\u51FB\u52A8\u753B)\u7684bug\n11.\u4FEE\u590D\u4E86\u57CE\u5899\u5EFA\u9020\u540E\u57CE\u5E02\u4E2D\u5FC3\u7684\u5355\u4F4D\u6CA1\u6709\u7ACB\u523B\u5237\u65B0\u72B6\u6001\u7684bug\n12.\u4FEE\u590D\u4E86\u7AF9\u6797\u72FC\u4E0A\u6821\u8840\u91CF\u8F83\u4F4E\u65F6\u53D7\u5230\u653B\u51FB\u540E\u4E0D\u4F1A\u53CD\u51FB\u7684bug\n13.\u4FEE\u590D\u4E86\u53E4\u660E\u5730\u604B\u7684\u80FD\u529B\"\u62C9\u8428\u4E4B\u821E\"\u4F1A\u7ED9\u76DF\u53CB\u4E5F\u8D4B\u4E88\"\u6050\u60E7\"\u7684bug\n14.\u4FEE\u590D\u90E8\u5206\u63CF\u8FF0\u6587\u6848\u9519\u8BEF\u548C\u56FE\u6807\u9519\u8BEF\n15.\u4FEE\u590D\u4E86\u68CB\u5B50\u72B6\u6001\u680F\u7279\u6B8A\u72B6\u6001\u8D85\u8FC79\u5C42\u540E\u6570\u5B57\u6392\u7248\u663E\u793A\u9519\u8BEF\u7684bug\n16.\u4FEE\u590D\u4E86\u7AF9\u6797\u72FC\u4E0A\u6821\u8FDB\u5165\u6E2F\u53E3\u540E\u8840\u91CF\u4E0A\u9650\u51FA\u9519\u7684bug\n17.\u4FEE\u590D\u4E86\u8299\u5170\u6735\u9732\u7684\u80FD\u529B\"\u7981\u679C\"\u5728\u5347\u7EA7\u65F6\u5C42\u6570\u4E22\u5931\u7684bug\n18.\u4FEE\u590D\u4E86\u72AC\u8D70\u691B\u9644\u8FD1\u7684\u5B66\u8005\u8F6C\u5316\u4E86\u654C\u65B9\u5355\u4F4D\u540E\u4E5F\u4F1A\u8D4B\u4E88\u201C\u5F02\u7AEF\u70D9\u5370\u201D\u7684bug\n"
Description: "[\u7248\u672C V0.7.3c]\n\u53D1\u5E03\u65E5\u671F:26.6.7\n\u672C\u6B21\u5BF90.7.3\u7248\u672C\u4E2D\u53D1\u73B0\u7684\u90E8\u5206\u95EE\u9898\u548Cbug\u8FDB\u884C\u4FEE\u8865\u3002\u5176\u4F59bug\u53CA\u5404\u79CD\u5C0F\u578B\u9519\u8BEF\u6211\u4EEC\u4ECD\u5728\u6301\u7EED\u4FEE\u590D\u4E2D\u3002\n\n---------[bug\u4FEE\u590D\u4E0E\u4F18\u5316]-------------\n1.\u4FEE\u590D\u4E86\u90E8\u5206\u4F1A\u5BFC\u81F4\u8239\u53EA\u51FA\u73B0\u5728\u9646\u5730\u7684bug\n2.\u4FEE\u590D\u4E86\u90E8\u5206\u4F1A\u5BFC\u81F4\u5DF2\u7ECF\u6B7B\u4EA1\u7684\u5355\u4F4D\u56FE\u50CF\u9519\u8BEF\u6B8B\u7559\u7684bug\n3.\u4FEE\u590D\u4E86[\u8F66]\u804C\u9636\u82F1\u96C4\u5728\u654C\u65B9\u57CE\u5E02\u4E2D\u5FC3\u80FD\u83B7\u5F97\u8981\u585E\u9632\u5FA1\u52A0\u6210\u7684bug\n4.\u4FEE\u590D\u4E86[\u8F66]\u804C\u9636\u82F1\u96C4\u5728\u88AB\u52A8\u79FB\u52A8\u65F6\u4E5F\u4F1A\u4EA7\u751F\u6E85\u5C04\u4F24\u5BB3\u7684bug\n5.\u4FEE\u590D\u4E86\u79FB\u52A8\u6E85\u5C04\u5728\u88AB\u52A8\u79FB\u52A8(\u5982\u88AB\u6324\u5F00)\u4E5F\u4F1A\u751F\u6548\u7684bug\uFF0C\u5B8C\u5584\u4E86\u63CF\u8FF0\n6.\u4FEE\u590D\u4E86\u52C7\u4EEA\u63A8\u4EBA\u81F4\u6B7B\u7ED3\u679C\u8D34\u56FE\u9519\u8BEF\n7.\u4FEE\u590D\u4E86\u6D29\u77E2\u8BF9\u8BBF\u5B50\u521B\u9020\u5FA1\u5C04\u5BAB\u53F8\u5927\u4EBA\u65F6\u4F1A\u91CD\u7F6E\u548C\u5E73\u5947\u89C2\u8BA1\u6570\u7684bug\n8.\u4F18\u5316\u4E86\u9876\u90E8\u4FE1\u606F\u680F\u91D1\u5E01\u663E\u793A\u6392\u7248\u95EE\u9898\n9.\u4F18\u5316\u4E86\u591A\u4E2A\u7A97\u53E3\u91CD\u53E0\u65F6\uFF0C\u5FEB\u6377\u952E\u201C\u53F3\u952E\u201D\u53CA\"Esc\"\u5173\u95ED\u7A97\u53E3\u7684\u987A\u5E8F\n10.\u4FEE\u590D\u4E86\u95F4\u8C0D\u653B\u51FB\u9690\u8EAB\u5355\u4F4D\u5360\u636E\u7684\u57CE\u5E02\u4E2D\u5FC3\u65F6\u51FA\u9519(\u53CD\u590D\u64AD\u653E\u653B\u51FB\u52A8\u753B)\u7684bug\n11.\u4FEE\u590D\u4E86\u57CE\u5899\u5EFA\u9020\u540E\u57CE\u5E02\u4E2D\u5FC3\u7684\u5355\u4F4D\u6CA1\u6709\u7ACB\u523B\u5237\u65B0\u72B6\u6001\u7684bug\n12.\u4FEE\u590D\u4E86\u7AF9\u6797\u72FC\u4E0A\u6821\u8840\u91CF\u8F83\u4F4E\u65F6\u53D7\u5230\u653B\u51FB\u540E\u4E0D\u4F1A\u53CD\u51FB\u7684bug\n13.\u4FEE\u590D\u4E86\u53E4\u660E\u5730\u604B\u7684\u80FD\u529B\"\u62C9\u8428\u4E4B\u821E\"\u4F1A\u7ED9\u76DF\u53CB\u4E5F\u8D4B\u4E88\"\u6050\u60E7\"\u7684bug\n14.\u4FEE\u590D\u90E8\u5206\u63CF\u8FF0\u6587\u6848\u9519\u8BEF\u548C\u56FE\u6807\u9519\u8BEF\n15.\u4FEE\u590D\u4E86\u68CB\u5B50\u72B6\u6001\u680F\u7279\u6B8A\u72B6\u6001\u8D85\u8FC79\u5C42\u540E\u6570\u5B57\u6392\u7248\u663E\u793A\u9519\u8BEF\u7684bug\n16.\u4FEE\u590D\u4E86\u7AF9\u6797\u72FC\u4E0A\u6821\u8FDB\u5165\u6E2F\u53E3\u540E\u8840\u91CF\u4E0A\u9650\u51FA\u9519\u7684bug\n17.\u4FEE\u590D\u4E86\u8299\u5170\u6735\u9732\u7684\u80FD\u529B\"\u7981\u679C\"\u5728\u5347\u7EA7\u65F6\u5C42\u6570\u4E22\u5931\u7684bug\n18.\u4FEE\u590D\u4E86\u72AC\u8D70\u691B\u9644\u8FD1\u7684\u5B66\u8005\u8F6C\u5316\u4E86\u654C\u65B9\u5355\u4F4D\u540E\u4E5F\u4F1A\u8D4B\u4E88\u201C\u5F02\u7AEF\u70D9\u5370\u201D\u7684bug\n19.\u4FEE\u590D\u4E861\u4E2A\u53EF\u80FD\u5BFC\u81F4\u8054\u673A\u4E0D\u540C\u6B65\u95EE\u9898\u7684bug"
FourthVersion: 2
- MajorVersion: 0
MinorVersion: 7

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@ MonoBehaviour:
- MajorVersion: 0
MinorVersion: 7
PatchVersion: 3
Description: 21047
Description: 21048
FourthVersion: 2
- MajorVersion: 0
MinorVersion: 7

View File

@ -16,7 +16,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &3369529437648498102
RectTransform:
m_ObjectHideFlags: 0
@ -33,9 +33,9 @@ RectTransform:
- {fileID: 7092583663453124079}
m_Father: {fileID: 5696276800239901883}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 303.625, y: -65.1825}
m_SizeDelta: {x: 607.25, y: 43.455}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &112244135394377585
@ -3265,6 +3265,81 @@ MonoBehaviour:
ID: 19970
FontID: 0
TextCfg: []
--- !u!1 &2147218136568909365
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 30729354997989145}
- component: {fileID: 9113857191366558664}
- component: {fileID: 6984619658563640737}
m_Layer: 5
m_Name: Checkmark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &30729354997989145
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2147218136568909365}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 658871014494389642}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9113857191366558664
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2147218136568909365}
m_CullTransparentMesh: 1
--- !u!114 &6984619658563640737
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2147218136568909365}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &2236821514687541758
GameObject:
m_ObjectHideFlags: 0
@ -5663,6 +5738,82 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls: []
m_IsOn: 1
--- !u!1 &4426585446817112898
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 658871014494389642}
- component: {fileID: 3295917545248632269}
- component: {fileID: 5923338074031092289}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &658871014494389642
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4426585446817112898}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 30729354997989145}
m_Father: {fileID: 3704352190866025673}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 16.7251, y: -21.3}
m_SizeDelta: {x: 33.4501, y: 33.4501}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3295917545248632269
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4426585446817112898}
m_CullTransparentMesh: 1
--- !u!114 &5923338074031092289
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4426585446817112898}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4440741658872348074
GameObject:
m_ObjectHideFlags: 0
@ -7258,10 +7409,10 @@ RectTransform:
- {fileID: 603160032551523338}
- {fileID: 4825613289536336405}
- {fileID: 4460091514545068348}
- {fileID: 2390420273624154980}
- {fileID: 5696276800239901883}
- {fileID: 3062756649991778002}
- {fileID: 1573632891455071784}
- {fileID: 2390420273624154980}
- {fileID: 5696276800239901883}
- {fileID: 3496751746037152682}
- {fileID: 8831681276842060352}
m_Father: {fileID: 2610502756674231369}
@ -9282,6 +9433,92 @@ MonoBehaviour:
LineSpacing: 0
ApplyParagraphSpacing: 0
ParagraphSpacing: 0
--- !u!1 &7436476549043759169
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3704352190866025673}
- component: {fileID: 1237265283340828924}
m_Layer: 5
m_Name: EnhancedMoveToggle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3704352190866025673
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7436476549043759169}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 658871014494389642}
- {fileID: 3295712704347107709}
m_Father: {fileID: 5696276800239901883}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 6, y: 43.455}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1237265283340828924
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7436476549043759169}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 5923338074031092289}
toggleTransition: 1
graphic: {fileID: 6984619658563640737}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 1
--- !u!1 &7721772225024868457
GameObject:
m_ObjectHideFlags: 0
@ -9464,6 +9701,7 @@ MonoBehaviour:
CityBorderAlwaysToggle: {fileID: 7449948995218195977}
ConfirmNextTurnToggle: {fileID: 1128881828376385442}
EyeComfortToggle: {fileID: 0}
EnhancedMoveHighlightToggle: {fileID: 0}
MoreLanguageModule: {fileID: 7088314466326854064}
NowUsingLanguageText: {fileID: 9109790349295146539}
ManageButton: {fileID: 266385876390542388}
@ -9589,7 +9827,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 6801890359025387631}
m_Direction: 2
m_Value: 1.0000004
m_Size: 0.82319
m_Size: 0.82319003
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -9845,6 +10083,140 @@ MonoBehaviour:
LineSpacing: 0
ApplyParagraphSpacing: 0
ParagraphSpacing: 0
--- !u!1 &7948877279219961476
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3295712704347107709}
- component: {fileID: 3335261381471773101}
- component: {fileID: 8901676568130412473}
m_Layer: 5
m_Name: Label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3295712704347107709
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7948877279219961476}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3704352190866025673}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 175.00412, y: -0.0000076293945}
m_SizeDelta: {x: 270.3742, y: -0.000015259}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3335261381471773101
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7948877279219961476}
m_CullTransparentMesh: 1
--- !u!114 &8901676568130412473
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7948877279219961476}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u66F4\u8BE6\u7EC6\u7684\u79FB\u52A8\u63D0\u793A"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8e119f168f1a6b745be02ef19f51610f, type: 2}
m_sharedMaterial: {fileID: -8081454072124122709, guid: 8e119f168f1a6b745be02ef19f51610f, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4285217601
m_fontColor: {r: 0.25490198, g: 0.23137257, b: 0.41960788, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 1
m_fontSizeMax: 24
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &8172300913548266578
GameObject:
m_ObjectHideFlags: 0
@ -10741,11 +11113,12 @@ RectTransform:
- {fileID: 3353149732663546376}
- {fileID: 8056850586413961774}
- {fileID: 370407285292912275}
- {fileID: 3704352190866025673}
m_Father: {fileID: 1451539500624979695}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 313.6242, y: -464.6576}
m_AnchoredPosition: {x: 313.6242, y: -552.9389}
m_SizeDelta: {x: 607.2484, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7594668559876856041

View File

@ -597,6 +597,90 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a0de7e2305a8b26499a423ab61697c3c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &898898689167669069
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6573826360943682236}
- component: {fileID: 2567258527909591649}
m_Layer: 0
m_Name: Position1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &6573826360943682236
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 898898689167669069}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1.47, y: 3.44, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 641976967840805971}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &2567258527909591649
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 898898689167669069}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: 202394abfaa82cb4caa7bd19e3b54013, type: 3}
m_Color: {r: 0.12941177, g: 0.227451, b: 0.32941177, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 10.19, y: 10.77}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &970079508605738289
GameObject:
m_ObjectHideFlags: 0
@ -626,7 +710,8 @@ Transform:
m_LocalPosition: {x: 0, y: -5.1, z: 0.05}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 641976967840805971}
m_Father: {fileID: 1494252107283779432}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &9084278705876525244
@ -1138,6 +1223,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &2716246064298866650
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2501604658032590976}
- component: {fileID: 550015965690221394}
m_Layer: 0
m_Name: Position4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &2501604658032590976
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2716246064298866650}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1.56, y: 1.45, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 641976967840805971}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &550015965690221394
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2716246064298866650}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: 9b210c925aaa8744b82f485780a45bb7, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 10.19, y: 10.77}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &3235984118526805420
GameObject:
m_ObjectHideFlags: 0
@ -1343,6 +1512,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &3619024365208232629
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6101610988374954367}
- component: {fileID: 5165592827435462852}
m_Layer: 0
m_Name: Position2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &6101610988374954367
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3619024365208232629}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1.54, y: 1.45, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 641976967840805971}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &5165592827435462852
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3619024365208232629}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: 9b210c925aaa8744b82f485780a45bb7, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 10.19, y: 10.77}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &3664915955038210357
GameObject:
m_ObjectHideFlags: 0
@ -1842,6 +2095,41 @@ Transform:
- {fileID: 6893524809116217944}
m_Father: {fileID: 1494252107283779432}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5132932311652543693
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 641976967840805971}
m_Layer: 0
m_Name: MoveHighlightTypeGroup
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &641976967840805971
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5132932311652543693}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6573826360943682236}
- {fileID: 6101610988374954367}
- {fileID: 4819842482440304220}
- {fileID: 2501604658032590976}
m_Father: {fileID: 2882006479987597949}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5173421504329575485
GameObject:
m_ObjectHideFlags: 0
@ -2094,6 +2382,90 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &5449716245615185455
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4819842482440304220}
- component: {fileID: 4472136651175246220}
m_Layer: 0
m_Name: Position3
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &4819842482440304220
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5449716245615185455}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1.59, y: 3.44, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 641976967840805971}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &4472136651175246220
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5449716245615185455}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: 202394abfaa82cb4caa7bd19e3b54013, type: 3}
m_Color: {r: 0.12941177, g: 0.227451, b: 0.32941177, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 10.19, y: 10.77}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &6101333789081341136
GameObject:
m_ObjectHideFlags: 0

View File

@ -39,6 +39,21 @@ public enum ChessType {None,King,Queen,Bishop,Knight,Rook,PawnWarrior,PawnArcher
public enum MoveAttackType { None,Move,Attack,MoveToPort,MoveAshore,Ally,MoveTeleport,AttackGround}
[Flags]
public enum MoveHighlightType
{
None = 0,
Slow = 1 << 0,
Enemy = 1 << 1,
Boat = 1 << 2,
Ashore = 1 << 3,
Sanae = 1 << 4,
Teleport = 1 << 5,
Momiji = 1 << 6,
Yuugi = 1 << 7,
Road = 1 << 8,
}
public enum CityLevelUpActionType{None,Explorer,Workshop,CityWall,CityWealth,Expand,Population,Park,BigGuy}
public enum CityActionType{None,BuildCityWall}

View File

@ -2527,7 +2527,7 @@ namespace Logic.Action
//Step #2 处理逻辑计算提前存储anim使用到的数据
bool targetCanNotBeKilled = !actionParams.TargetUnitData.CanBeKilled(actionParams.MapData);
Main.UnitLogic.Attack(actionParams.MapData, actionParams.UnitData, actionParams.TargetUnitData, out var attackDmg,out var counterDmg,out var fragmentType);
Main.UnitLogic.Attack(actionParams.MapData, actionParams.UnitData, actionParams.TargetUnitData, out var attackDmg,out var counterDmg,out var fragmentType, out var yuugiPushResult);
var originKilledByAttack = originAliveBeforeAttack && !actionParams.UnitData.IsAlive();
var targetKilledByAttack = targetAliveBeforeAttack && !actionParams.TargetUnitData.IsAlive();
@ -2571,18 +2571,20 @@ namespace Logic.Action
return false;
}
//Step #3-1 检测YuugiPush是否发生了推动origin移动到了targetGrid的位置
var originGridAfter = actionParams.UnitData.Grid(Main.MapData);
//Step #3-1 检测YuugiPush是否发生了推动。推击致死时 target 已经从数据层移除,
//不能再靠 target 当前 grid 推断,必须使用 YuugiPushSkill 返回的移动结果。
var targetGridAfter = actionParams.TargetUnitData.Grid(Main.MapData);
bool pushed = originGridAfter != null && originGridAfter.Id != originGrid.Id && originGridAfter.Id == targetGrid.Id;
bool pushed = yuugiPushResult is { Pushed: true, TargetGridAfterPush: not null };
if (pushed && targetGridAfter == null)
targetGridAfter = yuugiPushResult.TargetGridAfterPush;
//如果在视野,播放动画
if (Main.MapData?.PlayerMap?.SelfPlayerData?.Sight != null &&
(Main.MapData.PlayerMap.SelfPlayerData.Sight.CheckIsInSight(originGrid.Id) ||
Main.MapData.PlayerMap.SelfPlayerData.Sight.CheckIsInSight(targetGrid.Id)))
{
//如果发生了推动,先播放双方的移动动画,再播放攻击动画
//推击保证不会击杀target所以targetGridAfter!=null可以正确区分推击和MoveKill
//如果发生了推动,先播放双方的移动动画,再播放攻击动画
//推击可能致死targetGridAfter 可能来自存活单位的当前格,也可能来自 YuugiPushResult 中记录的死亡格。
if (pushed && targetGridAfter != null)
{
//target往后退一格的移动动画
@ -2634,7 +2636,7 @@ namespace Logic.Action
actionParams.UnitData.Player(actionParams.MapData)?.Sight.UpdateSightByPath(actionParams.UnitData,originPlayer,targetGrid.Pos.V2(),actionParams.MapData);
//如果YuugiPush推动发生了攻击者也移动了需要更新视野
else if(pushed)
actionParams.UnitData.Player(actionParams.MapData)?.Sight.UpdateSightByPath(actionParams.UnitData,originPlayer,targetGrid.Pos.V2(),actionParams.MapData);
originPlayer?.Sight.UpdateSightByPath(actionParams.UnitData,originPlayer,targetGrid.Pos.V2(),actionParams.MapData);
//Step #5 更新攻击前后两个格子的显示比如学者攻击了在城市里的角色那么城市里会有fire

View File

@ -24,6 +24,7 @@ namespace TH1_Logic.Chat
private const int MaxStorageCount = 999;
private const int TrimCount = 900;
private const float DuplicateContentWindowSeconds = 0.5f;
/// <summary>
/// ChatItems 发生变化时触发UI 层订阅此回调来刷新显示。
@ -36,36 +37,79 @@ namespace TH1_Logic.Chat
var lobby = LobbyManager.Instance.Lobby;
if (lobby == null || !lobby.IsInLobby()) return;
var senderId = lobby.GetSelfMemberId();
var filteredMessage = BannedWordFilter.Filter(message, BannedTextContext.Chat, senderId);
var item = new ChatItem();
item.Hash = System.Guid.NewGuid().GetHashCode();
item.SenderId = lobby.GetSelfMemberId();
item.Message = BannedWordFilter.Filter(message, BannedTextContext.Chat, item.SenderId);
item.SenderId = senderId;
item.Message = filteredMessage;
item.Time = Time.time;
ChatItems.Add(item);
_chatItems[item.Hash] = item;
if (!TryAddChatItem(item, "SendChatItem")) return;
if (lobby.IsLobbyOwner()) GameNetSender.Instance.BroadcastChatMessage(item);
else GameNetSender.Instance.SendChatMessage(item);
TrimIfNeeded();
Debug.Log($"[ChatManager] SendChatItem: \"{message}\", total={ChatItems.Count}, listeners={OnChatUpdated?.GetInvocationList()?.Length ?? 0}");
OnChatUpdated?.Invoke();
}
public void ReceiveChatItem(ChatItem newItem)
{
if (newItem == null || _chatItems.ContainsKey(newItem.Hash)) return;
if (newItem == null) return;
if (_chatItems.ContainsKey(newItem.Hash))
{
Debug.Log($"[ChatManager] ReceiveChatItem ignored duplicate hash: hash={newItem.Hash}, sender={newItem.SenderId}");
return;
}
newItem.Message = BannedWordFilter.Filter(newItem.Message, BannedTextContext.Chat, newItem.SenderId);
newItem.Time = Time.time;
ChatItems.Add(newItem);
_chatItems[newItem.Hash] = newItem;
if (LobbyManager.Instance.Lobby.IsLobbyOwner()) GameNetSender.Instance.BroadcastChatMessage(newItem);
TrimIfNeeded();
if (!TryAddChatItem(newItem, "ReceiveChatItem")) return;
var lobby = LobbyManager.Instance.Lobby;
if (lobby != null && lobby.IsLobbyOwner()) GameNetSender.Instance.BroadcastChatMessage(newItem);
OnChatUpdated?.Invoke();
}
private bool TryAddChatItem(ChatItem item, string source)
{
if (item == null) return false;
if (_chatItems.ContainsKey(item.Hash))
{
Debug.Log($"[ChatManager] {source} ignored duplicate hash: hash={item.Hash}, sender={item.SenderId}");
return false;
}
if (IsRecentDuplicateContent(item.SenderId, item.Message))
{
Debug.LogWarning($"[ChatManager] {source} ignored duplicate content: sender={item.SenderId}, message=\"{item.Message}\"");
return false;
}
ChatItems.Add(item);
_chatItems[item.Hash] = item;
TrimIfNeeded();
return true;
}
private bool IsRecentDuplicateContent(ulong senderId, string message)
{
var now = Time.time;
for (int i = ChatItems.Count - 1; i >= 0; i--)
{
var item = ChatItems[i];
if (item == null) continue;
if (now - item.Time > DuplicateContentWindowSeconds) break;
if (item.SenderId == senderId && string.Equals(item.Message, message, StringComparison.Ordinal))
return true;
}
return false;
}
private void TrimIfNeeded()
{
if (ChatItems.Count <= MaxStorageCount) return;

View File

@ -84,6 +84,11 @@ namespace TH1_Logic.Config
{
Config.SecondaryLanguage = MultilingualType.EN;
}
if (!Config.EnhancedMoveHighlightConfigMigrated)
{
Config.EnhancedMoveHighlightEnabled = true;
Config.EnhancedMoveHighlightConfigMigrated = true;
}
VisualSpriteResolver.SetTheme(Config.EyeComfortModeEnabled ? VisualTheme.EyeComfort : VisualTheme.Default);
}
@ -238,6 +243,12 @@ namespace TH1_Logic.Config
// 护眼模式:仅影响本地视觉资源替换,不参与存档、战斗逻辑或联网同步。
[SerializeField]
private bool _eyeComfortModeEnabled;
// 显示详细移动提示:仅影响本地移动高亮的特殊图标/特殊主框,不影响移动合法性。
[SerializeField]
private bool _enhancedMoveHighlightEnabled;
// 老配置迁移标记:缺失该字段的旧配置默认打开详细移动提示。
[SerializeField]
private bool _enhancedMoveHighlightConfigMigrated;
private bool _isChanged;
public bool IsChanged => _isChanged;
@ -368,6 +379,28 @@ namespace TH1_Logic.Config
}
}
public bool EnhancedMoveHighlightEnabled
{
get => _enhancedMoveHighlightEnabled;
set
{
if (_enhancedMoveHighlightEnabled == value) return;
_isChanged = true;
_enhancedMoveHighlightEnabled = value;
}
}
public bool EnhancedMoveHighlightConfigMigrated
{
get => _enhancedMoveHighlightConfigMigrated;
set
{
if (_enhancedMoveHighlightConfigMigrated == value) return;
_isChanged = true;
_enhancedMoveHighlightConfigMigrated = value;
}
}
public GameConfig()
{
@ -384,6 +417,8 @@ namespace TH1_Logic.Config
_alwaysShowCityBorder = false;
_confirmBeforeNextTurn = false;
_eyeComfortModeEnabled = false;
_enhancedMoveHighlightEnabled = true;
_enhancedMoveHighlightConfigMigrated = true;
}
// ── Mod 优先级配置接口 ──

View File

@ -61,6 +61,12 @@ namespace Logic
private const int SmoothIterations = 3; //平滑次数
private const float NearbyEnemyCapitalRateForRealPlayer = 0.15f;
private const int NearbyEnemyCapitalDistance = 3;
private const int SeaStartStarfishRadius = 2;
private const int SeaStartStarfishMinCount = 4;
private const int SeaStartFishRadius = 1;
private const int SeaStartExtraFishCount = 2;
private const int SeaStartOuterFishRadius = 2;
private const int SeaStartOuterFishExtraCount = 3;
private uint _width, _height;
private List<MapPosition> _tribes;
//用来避免treasure连着生成
@ -510,6 +516,7 @@ namespace Logic
var player = city.Player(mapData);
if (grid == null) continue;
if(player == null) continue;
var isSeaStartBeforeTerrainControl = IsSeaStartBeforeTerrainControl(player, grid);
dir8 = new List<Vector2>()
{
Vector2.up, Vector2.down, Vector2.left, Vector2.right, Vector2.up + Vector2.right,
@ -734,9 +741,162 @@ namespace Logic
//Debug.Log($"新增后有{count}个{resource}");
}
}
if (isSeaStartBeforeTerrainControl)
{
EnsureSeaStartResourceCount(
mapData,
grid,
ResourceType.Starfish,
SeaStartStarfishRadius,
SeaStartStarfishMinCount,
SeaStartStarfishRadius);
AddSeaStartResource(mapData, grid, ResourceType.Fish, SeaStartFishRadius, SeaStartExtraFishCount);
PlaceSeaStartResource(
mapData,
grid,
ResourceType.Fish,
SeaStartOuterFishRadius,
SeaStartOuterFishExtraCount,
SeaStartOuterFishRadius,
false);
}
}
}
private bool IsSeaStartBeforeTerrainControl(PlayerData player, GridData centerGrid)
{
if (player == null || centerGrid == null) return false;
if (!IsOriginalLand(centerGrid.Pos.X, centerGrid.Pos.Y)) return true;
if (!Table.Instance.PlayerDataAssets.GetLandformCount(TerrainType.Land, player.CivEnum, out var landCount))
return false;
if (landCount <= 0) return false;
return CountOriginalLandAround(centerGrid, 1) < landCount;
}
private int CountOriginalLandAround(GridData centerGrid, int radius)
{
var count = 0;
for (int x = centerGrid.Pos.X - radius; x <= centerGrid.Pos.X + radius; x++)
for (int y = centerGrid.Pos.Y - radius; y <= centerGrid.Pos.Y + radius; y++)
{
if (x == centerGrid.Pos.X && y == centerGrid.Pos.Y) continue;
if (!IsOriginalLand(x, y)) continue;
count++;
}
return count;
}
private bool IsOriginalLand(int x, int y)
{
if (x < 0 || y < 0 || x >= (int)_width || y >= (int)_height) return false;
return _heightMap[x, y] > _landThreshold;
}
private void EnsureSeaStartResourceCount(
MapData mapData,
GridData centerGrid,
ResourceType resource,
int radius,
int minCount,
int preferredMinDistance)
{
var needCount = minCount - CountResourceAround(mapData, centerGrid, resource, radius);
if (needCount <= 0) return;
PlaceSeaStartResource(mapData, centerGrid, resource, radius, needCount, preferredMinDistance, resource == ResourceType.Starfish);
}
private void AddSeaStartResource(MapData mapData, GridData centerGrid, ResourceType resource, int radius, int addCount)
{
if (addCount <= 0) return;
PlaceSeaStartResource(mapData, centerGrid, resource, radius, addCount, 0, false);
}
private int CountResourceAround(MapData mapData, GridData centerGrid, ResourceType resource, int radius)
{
var count = 0;
for (int x = centerGrid.Pos.X - radius; x <= centerGrid.Pos.X + radius; x++)
for (int y = centerGrid.Pos.Y - radius; y <= centerGrid.Pos.Y + radius; y++)
{
if (x == centerGrid.Pos.X && y == centerGrid.Pos.Y) continue;
if (Mathf.Max(Mathf.Abs(x - centerGrid.Pos.X), Mathf.Abs(y - centerGrid.Pos.Y)) > radius) continue;
if (!mapData.GridMap.GetGridDataByPos(x, y, out var grid)) continue;
if (grid.Resource == resource) count++;
}
return count;
}
private int PlaceSeaStartResource(
MapData mapData,
GridData centerGrid,
ResourceType resource,
int radius,
int addCount,
int preferredMinDistance,
bool allowReplaceFish)
{
var preferredNone = new List<GridData>();
var fallbackNone = new List<GridData>();
var preferredFish = new List<GridData>();
var fallbackFish = new List<GridData>();
for (int x = centerGrid.Pos.X - radius; x <= centerGrid.Pos.X + radius; x++)
for (int y = centerGrid.Pos.Y - radius; y <= centerGrid.Pos.Y + radius; y++)
{
if (x == centerGrid.Pos.X && y == centerGrid.Pos.Y) continue;
var distance = Mathf.Max(Mathf.Abs(x - centerGrid.Pos.X), Mathf.Abs(y - centerGrid.Pos.Y));
if (distance > radius) continue;
if (!mapData.GridMap.GetGridDataByPos(x, y, out var grid)) continue;
if (!CanPlaceSeaStartResource(grid)) continue;
var isPreferred = distance >= preferredMinDistance;
if (grid.Resource == ResourceType.None)
{
if (isPreferred) preferredNone.Add(grid);
else fallbackNone.Add(grid);
}
else if (allowReplaceFish && resource != ResourceType.Fish && grid.Resource == ResourceType.Fish)
{
if (isPreferred) preferredFish.Add(grid);
else fallbackFish.Add(grid);
}
}
var placed = 0;
placed += PlaceSeaStartResourceInCandidates(preferredNone, resource, addCount - placed);
placed += PlaceSeaStartResourceInCandidates(fallbackNone, resource, addCount - placed);
placed += PlaceSeaStartResourceInCandidates(preferredFish, resource, addCount - placed);
placed += PlaceSeaStartResourceInCandidates(fallbackFish, resource, addCount - placed);
return placed;
}
private bool CanPlaceSeaStartResource(GridData grid)
{
if (grid == null) return false;
if (grid.Terrain == TerrainType.Land) return false;
if (grid.Resource is ResourceType.Tower or ResourceType.CityCenter or ResourceType.Treasure) return false;
return true;
}
private int PlaceSeaStartResourceInCandidates(List<GridData> candidates, ResourceType resource, int maxCount)
{
if (maxCount <= 0 || candidates.Count == 0) return 0;
ShuffleList(candidates);
var placed = 0;
foreach (var grid in candidates)
{
if (placed >= maxCount) break;
if (grid.Resource == resource) continue;
grid.Resource = resource;
placed++;
}
return placed;
}
private bool HasTower(int x, int y)
{
if (x == 0 && y == 0) return true;

View File

@ -40,6 +40,7 @@ namespace Logic
// 当前被半透的城市格 Id(0 = 无),用来保底恢复
private uint _fadeCityGridId = 0;
private uint _fadeUnitInfoUnitId = 0;
// 保底:把上一次半透处理过的城市恢复正常透明度。任何状态切换前都应调用
private void ClearCityFadeIfAny()
@ -53,6 +54,18 @@ namespace Logic
_fadeCityGridId = 0;
}
private void ClearUnitInfoFadeIfAny()
{
if (_fadeUnitInfoUnitId == 0) return;
if (MapRenderer.Instance != null
&& MapRenderer.Instance.ROUnitMap.TryGetValue(_fadeUnitInfoUnitId, out var roUnit))
{
roUnit.SetInfoGroupAlpha(1.0f);
roUnit.SetCitySelectionSpriteAlpha(1.0f);
}
_fadeUnitInfoUnitId = 0;
}
// 检测 clickedGrid 是否正好在某城市的"正上方 1/2 格"(城市在 clickedGrid 的 -1-1 / -2-2 位置),
// 命中则对该城市应用 fade。z >= h 的房子半透
private void TryApplyCityFadeForClickedGrid(GridData clickedGrid)
@ -77,10 +90,22 @@ namespace Logic
return true;
}
private void TryApplyUnitInfoFadeForSelectedCity(GridData selectedGrid)
{
if (selectedGrid == null || !selectedGrid.CityOnGrid(_mapData, out _)) return;
if (!_mapData.GridMap.GetGridDataByPos(selectedGrid.Pos.X - 1, selectedGrid.Pos.Y - 1, out var belowGrid)) return;
if (!belowGrid.MainSelfPlayerVisibleUnit(out var unitData)) return;
if (!MapRenderer.Instance.ROUnitMap.TryGetValue(unitData.Id, out var roUnit)) return;
roUnit.SetInfoGroupAlpha(0.1f);
roUnit.SetCitySelectionSpriteAlpha(0.3f);
_fadeUnitInfoUnitId = unitData.Id;
}
public void CancelAllHighlight() //专门用来应对BottomInfoUI的CloseButton的函数点击close的时候先调用这个函数通知interaction处理好信息再关闭bottominfo
{
//保底:恢复所有被半透的城市
ClearCityFadeIfAny();
ClearUnitInfoFadeIfAny();
foreach (var gridData in Main.MapData.GridMap.GridList)
{
@ -128,7 +153,7 @@ namespace Logic
}
}
public void OnTileClicked(MapData mapData,GridData gridData)
public void OnTileClicked(MapData mapData, GridData gridData, bool forceCameraCenter = false)
{
MapRecordManager.Instance.RecordGridData = gridData;
AudioManager.Instance.PlayAudio("SFX/UNIT_click",0,0,false);
@ -169,12 +194,13 @@ namespace Logic
if (roUnit.IsSelectHighlight)
{
//切换相机镜头
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData);
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData, forceCameraCenter);
CancelAllHighlight();
MapRenderer.Instance.ROGridMap[gridData.Id].SetSelectHighlight(true);
//检测点击格"下方 1/2 格"是否有城市,有则对其建筑应用 fade
TryApplyCityFadeForClickedGrid(gridData);
TryApplyUnitInfoFadeForSelectedCity(gridData);
//如果点击格属于某城市领土,对应城市中心播放弹跳动画
if (_mapData.GetCityDataByTerritoryGid(gridData.Id, out var city))
@ -239,7 +265,7 @@ namespace Logic
var selectUnit = MapRenderer.Instance.SelectUnitData;
CancelAllHighlight();
Main.UnitLogic.MoveTo(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData, selectUnit, gridData);
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData);
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData, forceCameraCenter);
EventManager.Publish(new HideUIInfoGridInfo() { });
if (selectUnit.IsAlive() &&
@ -257,7 +283,7 @@ namespace Logic
//播放弹动动画
roUnit.AnimManager.EnqueueAnim(UnitAtomAnimType.Bounce,UnitAtomAnimDataFactory.Create(UnitAtomAnimType.Bounce));
//切换相机镜头
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData);
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData, forceCameraCenter);
CancelAllHighlight();
MapRenderer.Instance.ROUnitMap[unitData.Id].SetSelectHighlight(true);
MapRenderer.Instance.SelectUnitData = unitData;
@ -287,7 +313,7 @@ namespace Logic
CancelAllHighlight();
Main.UnitLogic.MoveTo(Main.MapData,Main.MapData.PlayerMap.SelfPlayerData, MapRenderer.Instance.SelectUnitData, gridData);
//切换相机镜头
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData);
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData, forceCameraCenter);
EventManager.Publish(new HideUIInfoGridInfo() { });
if (MapRenderer.Instance.SelectUnitData.IsAlive() &&
@ -322,12 +348,13 @@ namespace Logic
else if (!roGrid.IsSelectHighlight)
{
//切换相机镜头
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData);
MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData, forceCameraCenter);
CancelAllHighlight();
MapRenderer.Instance.ROGridMap[gridData.Id].SetSelectHighlight(true);
//检测点击格"下方 1/2 格"是否有城市,有则对其建筑应用 fade
TryApplyCityFadeForClickedGrid(gridData);
TryApplyUnitInfoFadeForSelectedCity(gridData);
if (_mapData.GetCityDataByTerritoryGid(gridData.Id, out var city))
{

View File

@ -1185,6 +1185,27 @@ namespace Logic
}
//-------- 查询 --------//
public bool HasRoadForUnitOnGrid(MapData mapData, GridData gridData, UnitData unitData)
{
if (mapData == null || gridData == null || unitData == null) return false;
bool hasRoad = gridData.Feature == TerrainFeature.Road;
//水面格(浅海/深海只有Bridge才算有road加成避免LandAndWater单位在带road属性的水格上错误吃到加成
if (gridData.Terrain is TerrainType.ShallowSea or TerrainType.DeepSea
&& gridData.Resource != ResourceType.Bridge)
hasRoad = false;
//这里要特殊处理永远亭的bamboo move
if (unitData.GetSkill(SkillType.BAMBOOMOVE, out var _) && gridData.Vegetation == Vegetation.Trees)
hasRoad = true;
//这里要特殊处理Moriya 的moriyamove
if (unitData.GetSkill(SkillType.MORIYAROAD, out var _)
&& gridData.Feature == TerrainFeature.Mountain
&& gridData.HasBuilding())
hasRoad = true;
return hasRoad;
}
public bool HasRoadForUnit(MapData mapData, GridData gridDataA,GridData gridDataB ,UnitData unitData)
{
if (gridDataA.Resource == ResourceType.Port || gridDataB.Resource == ResourceType.Port) return false;
@ -1196,27 +1217,8 @@ namespace Logic
if (GridBHasPlayer && !mapData.SameUnion(gridBPlayerData.Id , unitPlayerId))
return false;
var OriginHasRoad = gridDataA.Feature == TerrainFeature.Road;
var TargetHasRoad = gridDataB.Feature == TerrainFeature.Road;
//水面格(浅海/深海只有Bridge才算有road加成避免LandAndWater单位在带road属性的水格上错误吃到加成
if (gridDataA.Terrain is TerrainType.ShallowSea or TerrainType.DeepSea
&& gridDataA.Resource != ResourceType.Bridge)
OriginHasRoad = false;
if (gridDataB.Terrain is TerrainType.ShallowSea or TerrainType.DeepSea
&& gridDataB.Resource != ResourceType.Bridge)
TargetHasRoad = false;
//这里要特殊处理永远亭的bamboo move
if (unitData.GetSkill(SkillType.BAMBOOMOVE, out var _))
{
if (gridDataA.Vegetation == Vegetation.Trees) OriginHasRoad = true;
if (gridDataB.Vegetation == Vegetation.Trees) TargetHasRoad = true;
}
//这里要特殊处理Moriya 的moriyamove
if (unitData.GetSkill(SkillType.MORIYAROAD, out var _))
{
if (gridDataA.Feature == TerrainFeature.Mountain && gridDataA.HasBuilding()) OriginHasRoad = true;
if (gridDataB.Feature == TerrainFeature.Mountain && gridDataB.HasBuilding()) TargetHasRoad = true;
}
var OriginHasRoad = HasRoadForUnitOnGrid(mapData, gridDataA, unitData);
var TargetHasRoad = HasRoadForUnitOnGrid(mapData, gridDataB, unitData);
return OriginHasRoad && TargetHasRoad;
}

View File

@ -31,8 +31,12 @@ namespace Logic.Skill
public override void OnSelfCreated(MapData mapData, UnitData self)
{
// 单位首次训练出来时添加5层KaguyaFrenchForeverBuff持续1回合
self?.AddSkill_Legacy(SkillType.KAGUYAFRENCHFOREVERBUFF, mapData, false, 1, true, 5, false, SpecialAddSkillType.Normal, self.Id);
if (self == null) return;
// Initial wolf Forever stacks should not expire.
self.AddSkill_Legacy(SkillType.KAGUYAFRENCHFOREVERBUFF, mapData, true, 0, true, 5, false, SpecialAddSkillType.Normal, self.Id);
if (self.GetSkill(SkillType.KAGUYAFRENCHFOREVERBUFF, out var foreverBuff))
foreverBuff.SetPermanent(true);
}
public override bool ReservedOnTransform(UnitData self, UnitFullType fullType)

View File

@ -38,7 +38,6 @@ namespace Logic.Skill
public override void OnMove(UnitData self, GridData grid, MapData mapData, MoveType moveType, List<Vector2Int> path = null)
{
if (mapData == null || self == null || grid == null) return;
if (moveType == MoveType.PassiveMove) return;
if (!self.IsValidOnMap(mapData, grid)) return;
if (!mapData.GetPlayerDataByUnitId(self.Id, out var selfPlayer)) return;

View File

@ -17,6 +17,25 @@ using UnityEngine;
namespace Logic.Skill
{
/// <summary>
/// YuugiPush 专用的本次攻击结果。普通攻击不使用这个对象。
/// 这里保存的是逻辑结算前后的关键格子,供 UnitAttackAction 在目标死亡、
/// 攻击者被反击杀死等情况下仍能播放正确的推击动画。
/// </summary>
public class YuugiPushResult
{
/// <summary>本次是否真的发生了推击位移。</summary>
public bool Pushed;
/// <summary>target 是否在被推到 TargetGridAfterPush 后被本次推击伤害击杀。</summary>
public bool TargetKilledAfterPush;
/// <summary>攻击开始前 self 所在格。</summary>
public GridData OriginGridBeforePush;
/// <summary>攻击开始前 target 所在格,也是 self 推击后前进到的格子。</summary>
public GridData TargetGridBeforePush;
/// <summary>target 被推到的格子target 死亡后数据层会移除单位,所以动画层必须缓存这个格子。</summary>
public GridData TargetGridAfterPush;
}
public partial class YuugiPushSkill : SkillBase
{
public YuugiPushSkill()
@ -32,16 +51,34 @@ namespace Logic.Skill
}
/// <summary>
/// 推击攻击逻辑纯数据动画由UnitAttackAction.Execute负责
/// 勇仪推击的权威数据规则,动画由 UnitAttackAction.Execute 按 YuugiPushResult 播放。
///
/// 预期矩阵:
/// 1. canPush = true 且不致死:
/// target: targetGrid -> nextGridself: selfGrid -> targetGrid
/// 然后在移动后的格子上结算伤害。target 存活且满足反击规则时,从 nextGrid 反击。
/// 2. canPush = true 且致死:
/// 仍然必须先执行同样的推击位移target 死在 nextGridself 停在 targetGrid。
/// 动画层必须播放 target 后退、self 前进,然后在 nextGrid 播放死亡;
/// 绝不能退化成普通 MoveKill也不能因为 target 死亡后无 grid 而丢掉动画。
/// 注意:这两个位移是本次攻击内部的站位调整,不是独立移动行为;
/// 它们不触发 BeforeMove/OnMove/OnAnyUnitMove避免 STOMP、GridRadiation 等移动副作用
/// 抢在 PushAttack 伤害前杀死目标。但仍必须处理 BoatToLand/LandToBoat 形态合法化。
/// 3. canPush = false
/// 背后有单位、越界、地形/港口不合法等都会进入该分支;不发生任何推击位移,
/// 伤害使用基础伤害 +2。target 存活且满足反击规则时,按普通攻击反击。
/// 4. canPush = false 且致死:
/// self 能合法进入 targetGrid 时走普通 MoveKill不能进入时走 NotMoveKill。
/// 两者都必须清理 target renderer避免死亡单位贴图残留。
/// </summary>
/// <returns>true表示推击已执行false表示不满足推击条件应走普通攻击</returns>
/// <returns>true 表示推击规则已接管本次攻击false 表示不满足推击技能前置条件,应走普通攻击。</returns>
public bool YuugiPushAttack(UnitData self, UnitData target, MapData map,
out int outAttackDmg, out int outCounterDmg, out FragmentType outFragmentType, out bool outPushed)
out int outAttackDmg, out int outCounterDmg, out FragmentType outFragmentType, out YuugiPushResult outResult)
{
outAttackDmg = 0;
outCounterDmg = 0;
outFragmentType = FragmentType.Attack;
outPushed = false;
outResult = null;
if (self == null || target == null) return false;
var fullType = new UnitFullType();
@ -65,86 +102,99 @@ namespace Logic.Skill
// 使用 CheckUnitAbleForGrid_OfflineStatus 而非 CheckLandTypeForGrid:
// 前者会对 LandAndPort 单位检查港口归属(必须同联盟),后者只看地形 LandType。
// 之前用纯 LandType 判定会让勇仪(LandAndPort)合法走进敌方港口。
// self 只需要能进入 targetGrid被推到 nextGrid 的是 target不要求 self 也能进入 nextGrid。
// 因此岸边推船只允许 targetGrid 是桥、陆地、我方/盟友港口等 self 合法格,不能隔着普通海格推船。
bool canPush = nextGrid != null && !nextGrid.RealUnit(map, out _)
&& Main.UnitLogic.CheckUnitAbleForGrid_OfflineStatus(map, targetPlayer, target, nextGrid)
&& Main.UnitLogic.CheckUnitAbleForGrid_RealTimeStatus(map, target, nextGrid)
&& Main.UnitLogic.CheckUnitAbleForGrid_OfflineStatus(map, player, self, targetGrid)
&& Main.UnitLogic.CheckUnitAbleForGrid_OfflineStatus(map, player, self, nextGrid);
&& Main.UnitLogic.CheckUnitCanEnterGridByDiplomacyStatus(map, self, targetGrid);
// 能推→无额外伤害;不能推→+2伤害
int actualDmg = canPush ? dmg : dmg + 2;
// 只有能推动且实际伤害不会击杀,才走推人
if (canPush && actualDmg < target.Health)
if (canPush)
{
// 推击:先移动数据,再攻击,可能有反击
outPushed = true;
if (!Main.UnitLogic.MoveToLogic(map, target, nextGrid, MoveType.PushMove))
// 推击:无论是否击杀,都先执行 target 后退和 self 前进。是否死亡只决定后续攻击 fragment。
outResult = new YuugiPushResult
{
Pushed = true,
OriginGridBeforePush = selfGrid,
TargetGridBeforePush = targetGrid,
TargetGridAfterPush = nextGrid,
};
if (!YuugiPushRepositionWithoutMoveSideEffects(map, target, nextGrid))
{
LogSystem.LogError($"YuugiPush target move failed. self={self.Id}, target={target.Id}, from={targetGrid.Id}, to={nextGrid.Id}");
outPushed = false;
outResult = null;
return false;
}
if (!target.IsValidOnMap(map) || !target.IsAlive() || !map.GetGridDataByUnitId(target.Id, out var targetGridAfterMove) || targetGridAfterMove.Id != nextGrid.Id)
{
LogSystem.LogError($"YuugiPush aborted after target move. self={self.Id}, target={target.Id}, expectedTargetGrid={nextGrid.Id}");
outPushed = false;
outResult = null;
return true;
}
if (!self.IsValidOnMap(map) || !self.IsAlive())
{
LogSystem.LogError($"YuugiPush aborted: self invalid after target move. self={self.Id}, target={target.Id}");
outPushed = false;
outResult = null;
return true;
}
if (targetGrid.RealUnit(map, out var targetGridOccupant) && targetGridOccupant.Id != self.Id)
{
LogSystem.LogError($"YuugiPush aborted: target origin grid occupied after push. self={self.Id}, target={target.Id}, grid={targetGrid.Id}, occupant={targetGridOccupant.Id}");
outPushed = false;
outResult = null;
return true;
}
if (!Main.UnitLogic.MoveToLogic(map, self, targetGrid, MoveType.AttackMove))
if (!YuugiPushRepositionWithoutMoveSideEffects(map, self, targetGrid))
{
LogSystem.LogError($"YuugiPush self move failed. self={self.Id}, target={target.Id}, to={targetGrid.Id}");
outPushed = false;
outResult = null;
return true;
}
if (!self.IsValidOnMap(map) || !self.IsAlive() || !map.GetGridDataByUnitId(self.Id, out var selfGridAfterMove) || selfGridAfterMove.Id != targetGrid.Id)
{
LogSystem.LogError($"YuugiPush aborted after self move. self={self.Id}, target={target.Id}, expectedSelfGrid={targetGrid.Id}");
outPushed = false;
outResult = null;
return true;
}
if (!target.IsValidOnMap(map) || !target.IsAlive() || !map.GetGridDataByUnitId(target.Id, out targetGridAfterMove) || targetGridAfterMove.Id != nextGrid.Id)
{
LogSystem.LogError($"YuugiPush aborted before damage. self={self.Id}, target={target.Id}, expectedTargetGrid={nextGrid.Id}");
outPushed = false;
outResult = null;
return true;
}
var cDmg = Table.Instance.CalcCounterDamage(map, self, target);
// 使用 push 专用反击判定:绕开通用 CanCounter 中 dmg1 重算导致的误判秒杀问题。
// push 分支入口已保证 actualDmg < target.Health不可能秒杀所以跳过该检查
// 推击的伤害在移动前已经确定,反击只应在结算后 target 仍存活时判断
// 其余合法限制(联盟/IsLimit*CounterAttack/视野/距离)仍然保留。
bool canCounter = CanCounterForPush(map, self, target);
outAttackDmg = dmg;
Main.UnitLogic.DamageSettlement(map, self, target, dmg, DamageType.PushAttack);
outResult.TargetKilledAfterPush = !target.IsAlive();
if (canCounter && target.IsAlive() && self.IsAlive())
{
outCounterDmg = cDmg;
Main.UnitLogic.DamageSettlement(map, target, self, cDmg, DamageType.CounterAttack);
outFragmentType = !self.IsAlive() ? FragmentType.AttackAndCounterDie : FragmentType.AttackAndCounter;
}
else if (!target.IsAlive())
{
outFragmentType = FragmentType.NotMoveKill;
TryCreateBonePile(map, player, city, targetCity, target, targetGrid, fullType);
}
}
else
{
// 不能推动、或伤害足以击杀:直接攻击(含可能的+2
outPushed = false;
outAttackDmg = actualDmg;
var cDmg = Table.Instance.CalcCounterDamage(map, self, target);
bool canCounter = Main.UnitLogic.CanCounterByRules(map, self, target);
@ -156,13 +206,26 @@ namespace Logic.Skill
Main.UnitLogic.DamageSettlement(map, target, self, cDmg, DamageType.CounterAttack);
outFragmentType = !self.IsAlive() ? FragmentType.AttackAndCounterDie : FragmentType.AttackAndCounter;
}
else if (!target.IsAlive() && Main.UnitLogic.CheckUnitAbleForGrid_OfflineStatus(map, player, self, targetGrid))
else if (!target.IsAlive() && Main.UnitLogic.CheckUnitAbleForGrid_RealTimeStatus(map, self, targetGrid))
{
outFragmentType = FragmentType.MoveKill;
Main.UnitLogic.MoveToLogic(map, self, targetGrid, MoveType.AttackMove);
// 击杀英雄不生成骨堆
if (!target.TreatedAsHero(map, target))
TryCreateBonePile(map, player, city, targetCity, target, targetGrid, fullType);
}
else if (!target.IsAlive())
{
outFragmentType = FragmentType.NotMoveKill;
}
}
return true;
}
private static void TryCreateBonePile(MapData map, PlayerData player, CityData city, CityData targetCity, UnitData target, GridData targetGrid, UnitFullType fullType)
{
// 击杀英雄不生成骨堆。骨堆围绕被攻击者原格生成,保持旧逻辑位置,避免推击致死占用 nextGrid。
if (target.TreatedAsHero(map, target)) return;
if (!TryGetBonePileReviveType(target, out var reviveType)) return;
var aroundBuf = RentAroundBuf();
map.GridMap.GetAroundGridData(1, 1, targetGrid, aroundBuf);
var randomList = new List<GridData>();
@ -171,37 +234,63 @@ namespace Logic.Skill
if (grid == targetGrid) continue;
if (grid.RealUnit(map,out _)) continue;
if(!map.CheckLandTypeForGrid(fullType, grid))continue;
if(!map.CheckLandTypeForGrid(reviveType, grid))continue;
randomList.Add(grid);
}
ReturnAroundBuf();
if (randomList.Count > 0)
{
if (randomList.Count <= 0) return;
var index = map.Net.GetRandom(map).Next(0, randomList.Count - 1);
if (map.AddUnitData(randomList[index].Id, city.Id, fullType, out var bone))
{
if (!map.AddUnitData(randomList[index].Id, city.Id, fullType, out var bone)) return;
bone.GetSkill(SkillType.BonePile, out var skill);
var bonePile = skill as BonePileSkill;
if (bonePile != null)
{
bonePile.TargetType = target.UnitFullType;
bonePile.TargetType = reviveType;
bonePile.TargetCityId = targetCity.Id;
}
bone.Health = Mathf.Max(1, UnitData.CeilPositiveToInt(bone.GetMaxHealth() / 4f));
var boneGrid = bone.Grid(map);
if (boneGrid != null)
{
if (boneGrid == null) return;
var sightRadius = boneGrid.Feature == TerrainFeature.Mountain ? 2 : 1;
Main.PlayerLogic.UpdateSightByRadius_LogicView(map, player, boneGrid, sightRadius);
}
}
}
}
}
else if (!target.IsAlive())
private static bool TryGetBonePileReviveType(UnitData target, out UnitFullType reviveType)
{
outFragmentType = FragmentType.NotMoveKill;
reviveType = target.UnitFullType;
var targetLandType = target.GetLandType();
if (targetLandType is not (LandType.WaterAndAshore or LandType.WaterOnly)) return true;
// 船形态只是上水后的外壳,骨堆复生必须使用船里携带的原单位形态。
// 是否能落在具体骨堆格,由 TryCreateBonePile 的候选格筛选统一检查。
var carryType = target.CarryUnitFullType;
if (carryType.UnitType == UnitType.None) return false;
reviveType = carryType;
return true;
}
private static bool YuugiPushRepositionWithoutMoveSideEffects(MapData map, UnitData unit, GridData grid)
{
if (map == null || unit == null || grid == null) return false;
if (grid.RealUnit(map, out var occupant) && occupant.Id != unit.Id) return false;
if (unit.GetLandType() == LandType.WaterAndAshore && grid.Terrain == TerrainType.Land)
{
var carryType = unit.CarryUnitFullType;
if (carryType.UnitType == UnitType.None || !map.CheckLandTypeForGrid(carryType, grid)) return false;
}
map.SetUnitIdToGridId(unit.Id, grid.Id);
// YuugiPush 的位移属于同一次攻击的站位调整:不能触发移动技能副作用,
// 但必须保持水陆形态与最终格子一致,避免船停陆地或陆地形态停港口。
if (unit.GetLandType() == LandType.LandAndPort && grid.Resource == ResourceType.Port)
Main.UnitLogic.LandToBoat(map, unit);
else if (unit.GetLandType() == LandType.WaterAndAshore && grid.Terrain == TerrainType.Land)
Main.UnitLogic.BoatToLand(map, unit);
return true;
}

View File

@ -114,6 +114,9 @@ namespace Logic
bool[,] NormalReachMap;//常规计算
bool[,] MomijiHunterReachMap; //专门给momijiHunter 用的 判断一个格子如果不是hunter周围还是否有行动力抵达。如果一个角色没有momijihunter技能这个就没用
bool[,] FinalReachMap;//最终整合reachMap将常规计算和momijiHunter整合在一起判定在常规移动下哪些格子可以抵达哪些不可以抵达
bool[,] MoveSlowMap;//最优移动路径进入该格时是否经过慢速地形
bool[,] MomijiMap;//通过MomijiHunter额外移动力保留的格子
bool[,] YuugiMap;//通过YuugiDash额外延伸的格子
// 供外部查询FinalReachMap需在CalcUnitMoveInfo之后调用
public bool IsFinalReachable(int x, int y) => FinalReachMap[x, y];
@ -121,6 +124,8 @@ namespace Logic
bool[,] TransMap;//在常规移动之外,额外赋予的特殊可传送格子
bool[,] SanaeMap;//在常规移动之外,额外赋予的特殊可抵达格子
bool[,] EnemyControlMap;//敌方控制区标记,仅用于移动高亮表现
bool[,] MoveAttackCandidateMap;//移动/攻击高亮候选去重用避免展示入口重复分配HashSet
// 复用的临时集合
private List<GridData> _aroundBuf;
@ -137,9 +142,14 @@ namespace Logic
NormalReachMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
MomijiHunterReachMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
FinalReachMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
MoveSlowMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
MomijiMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
YuugiMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
TransMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
SanaeMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
EnemyControlMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
MoveAttackCandidateMap = new bool[Table.Instance.MaxMapSize,Table.Instance.MaxMapSize];
}
@ -329,10 +339,16 @@ namespace Logic
}
public void Attack(MapData mapData, UnitData unit1, UnitData unit2, out int attackDmg,out int counterDmg,out FragmentType fragmentType)
{
Attack(mapData, unit1, unit2, out attackDmg, out counterDmg, out fragmentType, out _);
}
public void Attack(MapData mapData, UnitData unit1, UnitData unit2, out int attackDmg,out int counterDmg,out FragmentType fragmentType, out YuugiPushResult yuugiPushResult)
{
attackDmg = 0;
counterDmg = 0;
fragmentType = FragmentType.Attack;
yuugiPushResult = null;
if (mapData == null || unit1 == null || unit2 == null) return;
if (!unit1.IsValidOnMap(mapData) || !unit2.IsValidOnMap(mapData)) return;
if (!mapData.GetPlayerDataByUnitId(unit1.Id, out var player1)) return;
@ -345,7 +361,7 @@ namespace Logic
if (unit1.GetSkill(SkillType.YuugiPush, out var yuugiPushSkill))
{
var push = yuugiPushSkill as YuugiPushSkill;
if (push != null && push.YuugiPushAttack(unit1, unit2, mapData, out attackDmg, out counterDmg, out fragmentType, out _))
if (push != null && push.YuugiPushAttack(unit1, unit2, mapData, out attackDmg, out counterDmg, out fragmentType, out yuugiPushResult))
{
unit1.ClearActionPoint();
return;
@ -402,7 +418,7 @@ namespace Logic
attackInfo.IsKill = true;
fragmentType = FragmentType.NotMoveKill;
//处理MoveKill的情况
if (unit1.IsCanMoveKill(mapData) && attackDistance <= 1 && CheckUnitAbleForGrid_OfflineStatus(mapData, player1, unit1, grid2) && !grid2.RealUnit(mapData,out _))
if (unit1.IsCanMoveKill(mapData) && attackDistance <= 1 && CheckUnitAbleForGrid_RealTimeStatus(mapData, unit1, grid2) && !grid2.RealUnit(mapData,out _))
{
Main.UnitLogic. MoveToLogic(mapData, unit1, grid2, MoveType.AttackMove);
//如果杀了人且可以移动过去动画类型就是Movekill
@ -907,6 +923,7 @@ namespace Logic
foreach (var targetGridData in mapData.GridMap.GridList)
{
int i = targetGridData.Pos.X, j = targetGridData.Pos.Y;
EnemyControlMap[i, j] = false;
if (playerData.Sight.CheckIsInSight(targetGridData.Id))
{
@ -1044,11 +1061,11 @@ namespace Logic
}
//Step #3 将所有敌人的控制区的costMap设置为999
if(!unitData.IsIgnoreZOC())
bool applyEnemyControlCost = !unitData.IsIgnoreZOC();
foreach (UnitData B in mapData.UnitMap.UnitList)
{
if (!B.IsAlive()) continue;
//不具备ZOC能力的单位不产生控制区
//不具备ZOC能力的单位不产生控制区
if (!B.HasZOC()) continue;
mapData.GetPlayerDataByUnitId(B.Id, out var playerDataB);
mapData.GetGridDataByUnitId(B.Id, out var gridDataB);
@ -1060,8 +1077,12 @@ namespace Logic
foreach (var targetGridData in _aroundBuf)
{
int x = targetGridData.Pos.X, y = targetGridData.Pos.Y;
EnemyControlMap[x, y] = true;
if (applyEnemyControlCost)
MovementCostMap[x, y] = (MovementCostMap[x, y] < 0) ? -1 : 999;
}
EnemyControlMap[gridDataB.Pos.X, gridDataB.Pos.Y] = true;
if (applyEnemyControlCost)
MovementCostMap[gridDataB.Pos.X,gridDataB.Pos.Y] = 999;
}
@ -1083,6 +1104,9 @@ namespace Logic
MovementRemainMap[i, j] = -999;
MoveRealCostMap[i, j] = 999;
NormalReachMap[i, j] = false;
MoveSlowMap[i, j] = false;
MomijiMap[i, j] = false;
YuugiMap[i, j] = false;
TransMap[i, j] = false;
SanaeMap[i, j] = false;
MomijiHunterReachMap[i, j] = false;
@ -1094,6 +1118,9 @@ namespace Logic
MovementRemainMap[gridData.Pos.X,gridData.Pos.Y] = unitData.FinalMoveRange(mapData);
NormalReachMap[gridData.Pos.X, gridData.Pos.Y] = true;
MoveRealCostMap[gridData.Pos.X, gridData.Pos.Y] = 0;
MoveSlowMap[gridData.Pos.X, gridData.Pos.Y] = false;
MomijiMap[gridData.Pos.X, gridData.Pos.Y] = false;
YuugiMap[gridData.Pos.X, gridData.Pos.Y] = false;
//Step #6然后进行SPFA更新最短路
Queue<uint> q = new Queue<uint>();
@ -1111,12 +1138,16 @@ namespace Logic
foreach (var gridDataY in _aroundBuf)
{
float cost = MovementCostMap[gridDataY.Pos.X, gridDataY.Pos.Y];
bool isSlowMove = cost > 1f && cost < 900f;
//如果不可达区
if (cost <= 0)continue;
//如果是陆地单位看是否需要减去道路或者桥梁的行动力加成。道路是非敌人领地才行并且目标不是耗光所有cost的港口或者敌占区
if ((unitData.GetLandType() is LandType.LandAndPort or LandType.LandOnly or LandType.LandAndWater) &&
Main.PlayerLogic.HasRoadForUnit(mapData, gridDataX, gridDataY, unitData) && cost < 900)
{
cost = 0.5f;
isSlowMove = false;
}
//如果能够发生更新
if (MovementRemainMap[gridDataX.Pos.X, gridDataX.Pos.Y] - cost > MovementRemainMap[gridDataY.Pos.X, gridDataY.Pos.Y])
@ -1124,6 +1155,7 @@ namespace Logic
MovementRemainMap[gridDataY.Pos.X, gridDataY.Pos.Y] = MovementRemainMap[gridDataX.Pos.X, gridDataX.Pos.Y] - cost;
NormalReachMap[gridDataY.Pos.X, gridDataY.Pos.Y] = true;
MoveRealCostMap[gridDataY.Pos.X, gridDataY.Pos.Y] = cost;
MoveSlowMap[gridDataY.Pos.X, gridDataY.Pos.Y] = isSlowMove;
//如果xy不再队列里并且还剩余有行动力就加入队列
if (!q.Contains(gridDataY.Id) && MovementRemainMap[gridDataY.Pos.X, gridDataY.Pos.Y] > 0.1f)
q.Enqueue(gridDataY.Id);
@ -1190,6 +1222,8 @@ namespace Logic
// 有敌方单位没有DashPro就不能继续延伸
if (!hasDashPro) break;
}
if (!FinalReachMap[nx, ny])
YuugiMap[nx, ny] = true;
FinalReachMap[nx, ny] = true;
// 为Dash格子设置递减的remain值保证路径搜索能形成递减序列
float dashRemain = baseRemain - step;
@ -1313,6 +1347,8 @@ namespace Logic
if (playerA.Id != playerB.Id && mapData.SameUnionOrJustBreakUnion(playerA.Id, playerB.Id)) continue;
}
// 早苗乘风图标只标记普通移动本来不能抵达、由乘风额外给到的格子。
if (NormalReachMap[newVec.x, newVec.y]) continue;
SanaeMap[newVec.x, newVec.y] = true;
}
}
@ -1349,6 +1385,8 @@ namespace Logic
mapData.GridMap.GetGridDataByV2(new Vector2(i,j),out var tmpGrid) ? tmpGrid : null);
//如果剩余行动力 减去亏欠的移动力再加上上一次移动过来的realcost仍然>=0那么说明这个格子是仍然可以抵达的
MomijiHunterReachMap[i, j] = (MovementRemainMap[i, j] + MoveRealCostMap[i, j] - floor) > 0.1f;
if (MomijiHunterReachMap[i, j] && floor <= 0.1f)
MomijiMap[i, j] = true;
}
for (int i = 0; i < width; i++)
@ -1465,8 +1503,10 @@ namespace Logic
//如果常规移动不可达直接return
if (!FinalReachMap[gridDataB.Pos.X, gridDataB.Pos.Y]) return MoveAttackType.None;
//下港口
if (gridDataB.Terrain == TerrainType.ShallowSea && unitDataA.GetLandType() == LandType.LandAndPort)
//下港口。桥梁也是浅海格,但应按普通陆路移动处理,不能显示上船图标。
if (gridDataB.Terrain == TerrainType.ShallowSea
&& gridDataB.Resource == ResourceType.Port
&& unitDataA.GetLandType() == LandType.LandAndPort)
return MoveAttackType.MoveToPort;
//上岸
if (gridDataB.Terrain == TerrainType.Land && unitDataA.GetLandType() == LandType.WaterAndAshore)
@ -1476,6 +1516,182 @@ namespace Logic
return MoveAttackType.None;
}
public MoveHighlightType GetMoveHighlightTypes(MapData mapData, UnitData unitData, GridData targetGridData, MoveAttackType moveAttackType)
{
if (mapData == null || unitData == null || targetGridData == null)
return MoveHighlightType.None;
int x = targetGridData.Pos.X;
int y = targetGridData.Pos.Y;
if (x < 0 || y < 0 || x >= mapData.MapConfig.Width || y >= mapData.MapConfig.Height)
return MoveHighlightType.None;
MoveHighlightType types = MoveHighlightType.None;
switch (moveAttackType)
{
case MoveAttackType.MoveToPort:
types |= MoveHighlightType.Boat;
break;
case MoveAttackType.MoveAshore:
types |= MoveHighlightType.Ashore;
break;
case MoveAttackType.MoveTeleport:
types |= MoveHighlightType.Teleport;
break;
}
if (SanaeMap[x, y])
types |= MoveHighlightType.Sanae;
if (EnemyControlMap[x, y])
types |= MoveHighlightType.Enemy;
if (MomijiMap[x, y])
types |= MoveHighlightType.Momiji;
if (YuugiMap[x, y])
types |= MoveHighlightType.Yuugi;
if (moveAttackType == MoveAttackType.Move && MoveSlowMap[x, y])
types |= MoveHighlightType.Slow;
if (moveAttackType is MoveAttackType.Move or MoveAttackType.MoveToPort or MoveAttackType.MoveAshore
&& Main.PlayerLogic.HasRoadForUnitOnGrid(mapData, targetGridData, unitData)
&& (targetGridData.Terrain == TerrainType.Land || targetGridData.Resource == ResourceType.Bridge))
types |= MoveHighlightType.Road;
return types;
}
public void CollectMoveAttackCandidateGrids(MapData mapData, UnitData unitData, List<GridData> buffer)
{
buffer?.Clear();
if (mapData == null || unitData == null || buffer == null) return;
if (!mapData.GetGridDataByUnitId(unitData.Id, out var originGrid)) return;
if (!mapData.GetPlayerDataByUnitId(unitData.Id, out var playerData)) return;
ClearMoveAttackCandidateMap(mapData);
if (unitData.GetActionPoint(ActionPointType.Move) > 0)
{
foreach (var gridData in mapData.GridMap.GridList)
{
int x = gridData.Pos.X, y = gridData.Pos.Y;
if (!FinalReachMap[x, y] && !TransMap[x, y] && !SanaeMap[x, y]) continue;
AddMoveAttackCandidateGrid(mapData, originGrid, gridData, buffer);
}
}
if (unitData.GetActionPoint(ActionPointType.Attack) <= 0) return;
int attackRange = unitData.GetAttackRange(mapData);
foreach (var gridData in mapData.GridMap.GridList)
{
if (mapData.GridMap.CalcDistance(originGrid, gridData) > attackRange) continue;
AddMoveAttackCandidateGrid(mapData, originGrid, gridData, buffer);
}
if (!HasKanakoBattlefieldAttack(unitData)) return;
_aroundBuf2 ??= new List<GridData>();
foreach (var tmpUnit in mapData.UnitMap.UnitList)
{
if (!IsKanakoBattlefieldAnchor(mapData, playerData, tmpUnit)) continue;
_aroundBuf2.Clear();
mapData.GridMap.GetAroundGridDataSet_NOCENTER(1, 1, tmpUnit.Grid(mapData), _aroundBuf2);
foreach (var tmpGrid in _aroundBuf2)
AddMoveAttackCandidateGrid(mapData, originGrid, tmpGrid, buffer);
}
}
public bool HasMoveTargetFromMoveInfo(MapData mapData, UnitData unitData, PlayerData playerData)
{
if (mapData == null || unitData == null || playerData == null) return false;
if (unitData.GetActionPoint(ActionPointType.Move) <= 0) return false;
if (!mapData.GetGridDataByUnitId(unitData.Id, out var originGrid)) return false;
bool hasUtsuhoBase = unitData.GetSkill(SkillType.UtsuhoBase, out var _);
foreach (var targetGridData in mapData.GridMap.GridList)
{
if (targetGridData.Id == originGrid.Id) continue;
if (!hasUtsuhoBase && !playerData.Sight.CheckIsInSight(targetGridData.Id)) continue;
int x = targetGridData.Pos.X, y = targetGridData.Pos.Y;
if (!FinalReachMap[x, y] && !TransMap[x, y] && !SanaeMap[x, y]) continue;
var sig = CheckUnitCanMoveOrAttack(mapData, unitData, targetGridData);
if (sig is MoveAttackType.Move or MoveAttackType.MoveToPort or MoveAttackType.MoveAshore or MoveAttackType.MoveTeleport)
return true;
if (sig == MoveAttackType.None && hasUtsuhoBase && FinalReachMap[x, y])
return true;
}
return false;
}
public bool HasAttackTargetFromMoveInfo(MapData mapData, UnitData unitData, PlayerData playerData, GridData originGrid)
{
if (mapData == null || unitData == null || playerData == null || originGrid == null) return false;
if (unitData.GetActionPoint(ActionPointType.Attack) <= 0) return false;
_aroundBuf ??= new List<GridData>();
_aroundBuf.Clear();
int attackRange = unitData.GetAttackRange(mapData);
mapData.GridMap.GetAroundGridDataSet_NOCENTER(attackRange, attackRange, originGrid, _aroundBuf);
foreach (var targetGridData in _aroundBuf)
{
if (!playerData.Sight.CheckIsInSight(targetGridData.Id)) continue;
var sig = CheckUnitCanMoveOrAttack(mapData, unitData, targetGridData);
if (sig is MoveAttackType.Attack or MoveAttackType.Ally or MoveAttackType.AttackGround)
return true;
}
if (!HasKanakoBattlefieldAttack(unitData)) return false;
foreach (var targetGridData in mapData.GridMap.GridList)
{
if (!playerData.Sight.CheckIsInSight(targetGridData.Id)) continue;
if (!targetGridData.VisibleUnit(mapData, playerData, out var targetUnit)) continue;
if (!targetUnit.Player(mapData, out var targetPlayer)) continue;
if (mapData.SameUnionOrJustBreakUnion(playerData.Id, targetPlayer.Id)) continue;
if (CheckUnitCanMoveOrAttack(mapData, unitData, targetGridData) == MoveAttackType.Attack)
return true;
}
return false;
}
private void ClearMoveAttackCandidateMap(MapData mapData)
{
foreach (var gridData in mapData.GridMap.GridList)
MoveAttackCandidateMap[gridData.Pos.X, gridData.Pos.Y] = false;
}
private void AddMoveAttackCandidateGrid(MapData mapData, GridData originGrid, GridData gridData, List<GridData> buffer)
{
if (mapData == null || originGrid == null || gridData == null || buffer == null) return;
if (gridData.Id == originGrid.Id) return;
int x = gridData.Pos.X, y = gridData.Pos.Y;
if (x < 0 || y < 0 || x >= mapData.MapConfig.Width || y >= mapData.MapConfig.Height) return;
if (MoveAttackCandidateMap[x, y]) return;
MoveAttackCandidateMap[x, y] = true;
buffer.Add(gridData);
}
private static bool HasKanakoBattlefieldAttack(UnitData unitData)
{
return unitData != null
&& unitData.GetSkill(SkillType.KANAKOBATTLEFIELDPRO, out var _)
&& unitData.GetSkill(SkillType.KANAKOSITTING, out var _);
}
private static bool IsKanakoBattlefieldAnchor(MapData mapData, PlayerData playerData, UnitData unitData)
{
if (mapData == null || playerData == null || unitData == null) return false;
if (unitData.Player(mapData) != playerData) return false;
if (unitData.UnitType == UnitType.MoriyaHebi && unitData.UnitLevel < 3) return false;
if (unitData.GiantType == GiantType.None && unitData.UnitType != UnitType.MoriyaHebi) return false;
if (!unitData.Grid(mapData, out var gridData)) return false;
return gridData.Feature == TerrainFeature.Mountain;
}
//默认在调用这个函数前已经调用了 CalcUnitMoveInfo(A),计算好了。不组合使用是不行的
public MoveAttackType GetMovePath(MapData map, Vector2Int start, Vector2Int end,out List<Vector2Int> path)
{
@ -1869,6 +2085,8 @@ namespace Logic
if (!mapData.GetPlayerDataByUnitId(unitData.Id, out var playerData))
return false;
if (!CheckUnitCanEnterGridByDiplomacyStatus(mapData, unitData, gridData))
return false;
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType, unitData.GiantType,unitData.UnitLevel,
out var unitInfo))
return false;
@ -1935,6 +2153,17 @@ namespace Logic
return true;
}
public bool CheckUnitCanEnterGridByDiplomacyStatus(MapData mapData, UnitData unitData, GridData gridData)
{
if (mapData == null || unitData == null || gridData == null) return false;
if (gridData.Resource != ResourceType.CityCenter) return true;
if (!gridData.CityOnGrid(mapData, out var cityData)) return true;
if (!mapData.GetPlayerDataByCityId(cityData.Id, out var cityPlayer)) return true;
if (!mapData.GetPlayerDataByUnitId(unitData.Id, out var unitPlayer)) return false;
if (cityPlayer.Id == unitPlayer.Id) return true;
return !mapData.SameUnionOrJustBreakUnion(cityPlayer.Id, unitPlayer.Id);
}

View File

@ -7,6 +7,7 @@ using Logic;
using Logic.AI;
using Logic.CrashSight;
using NUnit.Framework;
using TH1_Logic.Config;
using TH1_Logic.Core;
using TH1Resource;
using Unity.IO.LowLevel.Unsafe;
@ -32,6 +33,7 @@ namespace TH1Renderer
public bool IsSelectHighlight = false;
public bool IsMoveHighlight = false;
public bool IsAttackHighlight = false;
public MoveHighlightType MoveHighlightTypes { get; private set; } = MoveHighlightType.None;
//--------- 瞬间更新的动画 --------
@ -67,10 +69,27 @@ namespace TH1Renderer
_cityBorderDownRight,
_selectHighlight,
_moveHighlight,
_moveHighlightTypeGroup,
_attackHighlight,
_effect,
_RODebugText;
private TextMeshPro _debugText;
private readonly GameObject[] _moveHighlightTypeSlots = new GameObject[4];
private readonly SpriteRenderer[] _moveHighlightTypeRenderers = new SpriteRenderer[4];
private SpriteRenderer _moveHighlightRenderer;
private Sprite _defaultMoveHighlightSprite;
private Color _defaultMoveHighlightColor = Color.white;
private static readonly MoveHighlightType[] MoveHighlightDisplayOrder =
{
MoveHighlightType.Slow,
MoveHighlightType.Road,
MoveHighlightType.Boat,
MoveHighlightType.Ashore,
MoveHighlightType.Sanae,
MoveHighlightType.Teleport,
MoveHighlightType.Momiji,
MoveHighlightType.Yuugi,
};
public int x, y;
string forcesName, civName;
@ -299,6 +318,13 @@ namespace TH1Renderer
_cityBorderDownRight = _ROGrid.transform.Find("CityBorderDownRight").gameObject;
_selectHighlight = _ROGrid.transform.Find("SelectHighlight").gameObject;
_moveHighlight = _ROGrid.transform.Find("MoveHighlight").gameObject;
_moveHighlightRenderer = _moveHighlight.GetComponent<SpriteRenderer>();
if (_moveHighlightRenderer != null)
{
_defaultMoveHighlightSprite = _moveHighlightRenderer.sprite;
_defaultMoveHighlightColor = _moveHighlightRenderer.color;
}
InitMoveHighlightTypeGroup();
_attackHighlight = _ROGrid.transform.Find("AttackHighlight").gameObject;
_effect = _ROGrid.transform.Find("Effect").gameObject;
@ -431,9 +457,118 @@ namespace TH1Renderer
public void RenderUpdataHighlight()
{
UpdateMoveHighlightSprite();
_moveHighlight.SetActive(IsMoveHighlight);
_attackHighlight.SetActive(IsAttackHighlight);
_selectHighlight.SetActive(IsSelectHighlight);
UpdateMoveHighlightTypeSlots();
}
private void UpdateMoveHighlightSprite()
{
if (_moveHighlightRenderer == null)
return;
if (IsMoveHighlight
&& IsEnhancedMoveHighlightEnabled()
&& (MoveHighlightTypes & MoveHighlightType.Enemy) != 0
&& TryGetMoveHighlightVisual(MoveHighlightType.Enemy, out var enemyVisual)
&& enemyVisual.Sprite != null)
{
_moveHighlightRenderer.sprite = enemyVisual.Sprite;
_moveHighlightRenderer.color = enemyVisual.Color;
return;
}
_moveHighlightRenderer.sprite = _defaultMoveHighlightSprite;
_moveHighlightRenderer.color = _defaultMoveHighlightColor;
}
private void InitMoveHighlightTypeGroup()
{
var group = _ROGrid.transform.Find("MoveHighlightTypeGroup")
?? _ROGrid.transform.Find("MoveHiglightTypeGroup")
?? _ROGrid.transform.Find("MoveHighlight/MoveHighlightTypeGroup")
?? _ROGrid.transform.Find("MoveHighlight/MoveHiglightTypeGroup");
if (group == null)
return;
_moveHighlightTypeGroup = group.gameObject;
for (int i = 0; i < _moveHighlightTypeSlots.Length; i++)
{
int index = i + 1;
var slot = group.Find($"Position{index}")
?? group.Find($"Pos{index}")
?? group.Find(index.ToString());
if (slot == null && i < group.childCount)
slot = group.GetChild(i);
if (slot == null)
continue;
_moveHighlightTypeSlots[i] = slot.gameObject;
_moveHighlightTypeRenderers[i] = slot.GetComponent<SpriteRenderer>();
_moveHighlightTypeSlots[i].SetActive(false);
}
_moveHighlightTypeGroup.SetActive(false);
}
private void UpdateMoveHighlightTypeSlots()
{
if (_moveHighlightTypeGroup == null)
return;
if (!IsMoveHighlight || !IsEnhancedMoveHighlightEnabled() || MoveHighlightTypes == MoveHighlightType.None)
{
_moveHighlightTypeGroup.SetActive(false);
for (int i = 0; i < _moveHighlightTypeSlots.Length; i++)
if (_moveHighlightTypeSlots[i] != null)
_moveHighlightTypeSlots[i].SetActive(false);
return;
}
_moveHighlightTypeGroup.SetActive(true);
int slotIndex = 0;
foreach (var type in MoveHighlightDisplayOrder)
{
if ((MoveHighlightTypes & type) == 0)
continue;
if (slotIndex >= _moveHighlightTypeSlots.Length)
break;
var slot = _moveHighlightTypeSlots[slotIndex];
var renderer = _moveHighlightTypeRenderers[slotIndex];
if (slot == null || renderer == null)
{
slotIndex++;
continue;
}
if (!TryGetMoveHighlightVisual(type, out var visual) || visual.Sprite == null)
{
continue;
}
renderer.sprite = visual.Sprite;
renderer.color = visual.Color;
slot.SetActive(true);
slotIndex++;
}
for (int i = slotIndex; i < _moveHighlightTypeSlots.Length; i++)
if (_moveHighlightTypeSlots[i] != null)
_moveHighlightTypeSlots[i].SetActive(false);
}
private static bool TryGetMoveHighlightVisual(MoveHighlightType type, out MoveHighlightVisual visual)
{
visual = default;
var visuals = ResourceCache.Instance?.SpriteCache?.MoveHighlightVisuals;
return visuals != null && visuals.TryGetValue(type, out visual);
}
private static bool IsEnhancedMoveHighlightEnabled()
{
return ConfigManager.Instance?.Config?.EnhancedMoveHighlightEnabled ?? true;
}
public void SetSelectHighlight(bool v)
@ -447,8 +582,14 @@ namespace TH1Renderer
public void SetMoveHighlight(bool v)
{
if (IsMoveHighlight == v) return;
SetMoveHighlight(v, MoveHighlightType.None);
}
public void SetMoveHighlight(bool v, MoveHighlightType types)
{
if (IsMoveHighlight == v && MoveHighlightTypes == types) return;
IsMoveHighlight = v;
MoveHighlightTypes = v ? types : MoveHighlightType.None;
MapRenderer.Instance.HighlightGridIdSet.Add(_gridId);
MapRenderer.Instance.HighlightGridIdSetRenderMark = true;
}

View File

@ -632,6 +632,21 @@ namespace TH1Renderer
ROGridMap[gridData.Id].UpdateBorder();
}
public void RefreshAllHighlights()
{
if (ROGridMap != null)
{
foreach (var gridRenderer in ROGridMap.Values)
gridRenderer.RenderUpdataHighlight();
}
if (ROUnitMap != null)
{
foreach (var unitRenderer in ROUnitMap.Values)
unitRenderer.RenderUpdataHighlight();
}
}
private void RenderUpdateCityBuildings(uint cityId) //更新主城建筑的渲染
{
Main.MapData.GetGridIdByCityId(cityId, out var gridId);
@ -644,37 +659,14 @@ namespace TH1Renderer
bool ret = false;
Main.UnitLogic.CalcUnitMoveInfo(Main.MapData, uid);
Main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData);
Main.MapData.GetGridDataByUnitId(uid, out var gridData);
Main.MapData.GetPlayerDataByUnitId(uid, out var playerData);
//unitLogic.DebugOutputMoveInfo();
int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,unitData.UnitLevel,out var info)?info.MoveRange:0) * 3 + 1,
unitData.GetAttackRange(Main.MapData) * 2);
if (unitData == null || playerData == null) return false;
//Step #2 遍历所有范围内格子逐个判定是attack move还是别的
//Step #2 - 1 如果有citytransport或者是allytransport或者moriyaknightmove要把r设置为全图大小
if(unitData.IsCanTransport())
r = (int)(_mapData.MapConfig.Width > _mapData.MapConfig.Height ? _mapData.MapConfig.Width : _mapData.MapConfig.Height);
var targetGridDataList = Main.MapData.GridMap.GetAroundGridDataSet_NOCENTER(r,r,gridData);
//Step #2 - 2 特殊处理kanako
if (unitData.GetSkill(SkillType.KANAKOBATTLEFIELDPRO, out var _) &&
unitData.GetSkill(SkillType.KANAKOSITTING, out var _))
{
foreach (var tmpunit in Main.MapData.UnitMap.UnitList)
if(tmpunit.Player(Main.MapData) == playerData &&
(tmpunit.GiantType != GiantType.None || tmpunit.UnitType == UnitType.MoriyaHebi))
{
if (tmpunit.UnitType == UnitType.MoriyaHebi && tmpunit.UnitLevel < 3) continue;
if (tmpunit.Grid(Main.MapData).Feature != TerrainFeature.Mountain) continue;
var tmpSet = Main.MapData.GridMap.GetAroundGridDataSet_NOCENTER(1,1,tmpunit.Grid(Main.MapData));
foreach(var tmpGrid in tmpSet)
targetGridDataList.Add(tmpGrid);
}
}
_aroundBuf ??= new List<GridData>();
Main.UnitLogic.CollectMoveAttackCandidateGrids(Main.MapData, unitData, _aroundBuf);
bool hasUtsuhoBase = unitData.GetSkill(SkillType.UtsuhoBase, out var _);
foreach(var targetGridData in targetGridDataList)
foreach(var targetGridData in _aroundBuf)
{
//如果不在视野 跳过UtsuhoBase无视视野限制
if (!hasUtsuhoBase && !playerData.Sight.CheckIsInSight(targetGridData.Id)) continue;
@ -686,7 +678,8 @@ namespace TH1Renderer
if ((sig is MoveAttackType.Move or MoveAttackType.MoveToPort or MoveAttackType.MoveAshore or MoveAttackType.MoveTeleport) && unitData.GetActionPoint(ActionPointType.Move) > 0)
{
ret = true;
ROGridMap[targetGridData.Id].SetMoveHighlight(true);
var highlightTypes = Main.UnitLogic.GetMoveHighlightTypes(Main.MapData, unitData, targetGridData, sig);
ROGridMap[targetGridData.Id].SetMoveHighlight(true, highlightTypes);
}
//如果是攻击目标且unit的AP>0
if (sig == MoveAttackType.Attack && unitData.GetActionPoint(ActionPointType.Attack) > 0 && !unitData.IsLimitSelfAttack(Main.MapData))
@ -730,7 +723,8 @@ namespace TH1Renderer
&& Main.UnitLogic.IsFinalReachable(targetGridData.Pos.X, targetGridData.Pos.Y))
{
ret = true;
ROGridMap[targetGridData.Id].SetMoveHighlight(true);
var highlightTypes = Main.UnitLogic.GetMoveHighlightTypes(Main.MapData, unitData, targetGridData, MoveAttackType.Move);
ROGridMap[targetGridData.Id].SetMoveHighlight(true, highlightTypes);
}
}
@ -748,39 +742,8 @@ namespace TH1Renderer
Main.MapData.GetPlayerDataByUnitId(uid, out var playerData);
if (unitData == null || gridData == null || playerData == null) return false;
if (unitData.GetActionPoint(ActionPointType.Attack) <= 0 && unitData.GetActionPoint(ActionPointType.Move) <= 0) return false;
//unitLogic.DebugOutputMoveInfo();
int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,unitData.UnitLevel,out var info)?info.MoveRange:0) * 2,
Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,unitData.UnitLevel,out var info2)?info2.AttackRange:0);
_aroundBuf ??= new List<GridData>();
_aroundBuf.Clear();
Main.MapData.GridMap.GetAroundGridDataSet_NOCENTER(r,r,gridData, _aroundBuf);
bool hasUtsuhoBase2 = unitData.GetSkill(SkillType.UtsuhoBase, out var _);
foreach(var targetGridData in _aroundBuf)
{
//如果不在视野 跳过UtsuhoBase无视视野限制
if (!hasUtsuhoBase2 && !playerData.Sight.CheckIsInSight(targetGridData.Id)) continue;
var sig = Main.UnitLogic.CheckUnitCanMoveOrAttack(Main.MapData, unitData, targetGridData);
//如果是移动目标且unit的MP>0
if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort ||
sig == MoveAttackType.MoveAshore) && unitData.GetActionPoint(ActionPointType.Move) > 0)
return true;
//如果是攻击目标且unit的AP>0
if (sig == MoveAttackType.Attack && unitData.GetActionPoint(ActionPointType.Attack) > 0 && !unitData.IsLimitSelfAttack(Main.MapData))
return true;
//如果是Ally目标且unit的AP>0
if (sig == MoveAttackType.Ally && unitData.GetActionPoint(ActionPointType.Attack) > 0 )
return true;
//如果是AttackGround且unit的AP>0
if (sig == MoveAttackType.AttackGround && unitData.GetActionPoint(ActionPointType.Attack) > 0 )
return true;
// UtsuhoBase特殊处理移动范围内有单位的格子也视为有目标
if (sig == MoveAttackType.None && unitData.GetSkill(SkillType.UtsuhoBase, out var _)
&& unitData.GetActionPoint(ActionPointType.Move) > 0
&& Main.UnitLogic.IsFinalReachable(targetGridData.Pos.X, targetGridData.Pos.Y))
return true;
}
return false;
if (Main.UnitLogic.HasMoveTargetFromMoveInfo(Main.MapData, unitData, playerData)) return true;
return Main.UnitLogic.HasAttackTargetFromMoveInfo(Main.MapData, unitData, playerData, gridData);
}
//返回一个Unit是否当前可以占领遗迹/城市/收集starfish
public bool CheckUnitHasSpecialUnitActionTarget(uint uid)

View File

@ -92,6 +92,8 @@ namespace TH1_Renderer
//------- Status Area ---------//
private UnitStatusArea _statusArea;
private float _infoGroupAlpha = 1.0f;
private float _citySelectionSpriteAlpha = 1.0f;
//--------------- AnimManager ----------------
public UnitAnimManager AnimManager;
@ -285,6 +287,55 @@ namespace TH1_Renderer
_ROUnit.SetActive(true);
}
public void SetInfoGroupAlpha(float alpha)
{
_infoGroupAlpha = Mathf.Clamp01(alpha);
if (_unitMono?.InfoGroup != null)
{
var canvasGroup = _unitMono.InfoGroup.GetComponent<CanvasGroup>();
if (canvasGroup == null)
canvasGroup = _unitMono.InfoGroup.gameObject.AddComponent<CanvasGroup>();
canvasGroup.alpha = _infoGroupAlpha;
}
SetGraphicAlpha(_unitMono?.ChessBG, _infoGroupAlpha);
SetGraphicAlpha(_unitMono?.ChessImg, _infoGroupAlpha);
}
public void SetCitySelectionSpriteAlpha(float alpha)
{
_citySelectionSpriteAlpha = Mathf.Clamp01(alpha);
ApplySpriteAlpha();
}
private static void SetGraphicAlpha(Graphic graphic, float alpha)
{
if (graphic == null) return;
var color = graphic.color;
color.a = alpha;
graphic.color = color;
}
private void ApplySpriteAlpha()
{
if (_unitMono?.SpriteRenderer == null) return;
var baseAlpha = 1.0f;
var mapData = Main.MapData;
if (mapData != null
&& mapData.PlayerMap != null
&& _unitData != null
&& _playerData != null
&& _unitData.IsHideState(mapData)
&& mapData.SameUnion(_playerData.Id, mapData.PlayerMap.SelfPlayerId))
{
baseAlpha = 0.5f;
}
var color = _unitMono.SpriteRenderer.color;
color.a = Mathf.Min(baseAlpha, _citySelectionSpriteAlpha);
_unitMono.SpriteRenderer.color = color;
}
public void Update()
{
if (_unitMono != null)
@ -425,6 +476,8 @@ namespace TH1_Renderer
if (_unitMono.ChessBG != null)
_unitMono.ChessBG.color = col;
_unitMono.UnitInfoBG.color = col;
if (!Mathf.Approximately(_infoGroupAlpha, 1.0f))
SetInfoGroupAlpha(_infoGroupAlpha);
@ -579,12 +632,7 @@ namespace TH1_Renderer
{
if (isSelfOrAlly)
{
var color = _unitMono.SpriteRenderer.color;
if (!Mathf.Approximately(color.a, 0.5f))
{
color.a = 0.5f;
_unitMono.SpriteRenderer.color = color;
}
ApplySpriteAlpha();
}
else
{
@ -604,9 +652,7 @@ namespace TH1_Renderer
{
// 己方/盟友显示但半透明0.5f
InstantShow();
var color = _unitMono.SpriteRenderer.color;
color.a = 0.5f;
_unitMono.SpriteRenderer.color = color;
ApplySpriteAlpha();
}
else
{
@ -618,9 +664,7 @@ namespace TH1_Renderer
{
// 退出HideState恢复显示视野系统会决定最终显隐
InstantShow();
var color = _unitMono.SpriteRenderer.color;
color.a = 1f;
_unitMono.SpriteRenderer.color = color;
ApplySpriteAlpha();
}
}

View File

@ -9,6 +9,18 @@ using Logic;
namespace TH1Resource
{
public readonly struct MoveHighlightVisual
{
public readonly Sprite Sprite;
public readonly Color Color;
public MoveHighlightVisual(Sprite sprite, Color color)
{
Sprite = sprite;
Color = color;
}
}
public class SpriteCache
{
public Dictionary<string, Sprite> GroundSprites = new();
@ -48,6 +60,7 @@ namespace TH1Resource
public Sprite CommonBG_CircleGrey;
public Sprite CommonBG_CircleBlue;
public Sprite CommonBG_CircleGreen;
public Dictionary<MoveHighlightType, MoveHighlightVisual> MoveHighlightVisuals = new();
//-------- GridVFX 相关 --------
@ -126,6 +139,36 @@ namespace TH1Resource
CommonBG_CircleGrey = Resources.Load<Sprite>("TH1UI/Common/CommonBG/CommonCircleGrey");
CommonBG_CircleBlue = Resources.Load<Sprite>("TH1UI/Common/CommonBG/CommonCircleBlue");
CommonBG_CircleGreen = Resources.Load<Sprite>("TH1UI/Common/CommonBG/CommonCircleGreen");
Color moveHighlightRed = new Color(1f, 0.35f, 0.35f, 1f);
Color moveHighlightDeepBlue = new Color(0.12f, 0.34f, 0.9f, 1f);
Color moveHighlightGreen = new Color(0.35f, 0.9f, 0.45f, 1f);
MoveHighlightVisuals[MoveHighlightType.Slow] = new MoveHighlightVisual(
Resources.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialSlow"),
moveHighlightRed);
MoveHighlightVisuals[MoveHighlightType.Enemy] = new MoveHighlightVisual(
Resources.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_Enemy"),
Color.white);
MoveHighlightVisuals[MoveHighlightType.Boat] = new MoveHighlightVisual(
Resources.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialBoat"),
moveHighlightDeepBlue);
MoveHighlightVisuals[MoveHighlightType.Ashore] = new MoveHighlightVisual(
Resources.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialAshore"),
moveHighlightDeepBlue);
MoveHighlightVisuals[MoveHighlightType.Sanae] = new MoveHighlightVisual(
Resources.Load<Sprite>("TH1UI/Icon/SkillIcon/Moriya/Skill_SanaeWindX"),
moveHighlightGreen);
MoveHighlightVisuals[MoveHighlightType.Teleport] = new MoveHighlightVisual(
Resources.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialTeleport"),
moveHighlightDeepBlue);
MoveHighlightVisuals[MoveHighlightType.Momiji] = new MoveHighlightVisual(
Resources.Load<Sprite>("TH1UI/Icon/SkillIcon/Moriya/Skill_MOMIJIHUNTER"),
moveHighlightGreen);
MoveHighlightVisuals[MoveHighlightType.Yuugi] = new MoveHighlightVisual(
Resources.Load<Sprite>("TH1UI/Icon/SkillIcon/Skill_YuugiDash"),
moveHighlightGreen);
MoveHighlightVisuals[MoveHighlightType.Road] = new MoveHighlightVisual(
Resources.Load<Sprite>("ArtResources/TH1Common/GridMoveHightlight_SpecialRoad"),
moveHighlightGreen);
//-------- GridVFX --------
GridVFXDie = Resources.Load<Sprite>("ArtResources/TH1VFX/TH1VFX_Die");

View File

@ -281,7 +281,7 @@ namespace TH1_UI.View.Bottom
if (grid == null) return;
// Tab 切换单位前先清掉所有 attack/ally 高亮,避免目标 unit 被当作技能目标释放技能
Main.Instance.MapInteractionLogic.CancelAllHighlight();
Main.Instance.MapInteractionLogic.OnTileClicked(Main.MapData,grid);
Main.Instance.MapInteractionLogic.OnTileClicked(Main.MapData, grid, forceCameraCenter: true);
}
public void CloseView()
{

View File

@ -28,6 +28,7 @@ namespace TH1_UI.View.Top
public Toggle CityBorderAlwaysToggle;
public Toggle ConfirmNextTurnToggle;
public Toggle EyeComfortToggle;
public Toggle EnhancedMoveHighlightToggle;
// MoreLanguage 模块:仅在 LanguageOptionGroup 选中索引 5 (moreLanguage) 时显示
public GameObject MoreLanguageModule;
@ -85,6 +86,18 @@ namespace TH1_UI.View.Top
EyeComfortToggle.onValueChanged.AddListener(OnEyeComfortToggleChanged);
}
if (EnhancedMoveHighlightToggle == null)
{
EnhancedMoveHighlightToggle = FindToggleInChildren("EnhancedMoveToggle")
?? FindToggleInChildren("EnhancedMoveHighlightToggle");
}
if (EnhancedMoveHighlightToggle != null)
{
EnhancedMoveHighlightToggle.onValueChanged.RemoveAllListeners();
EnhancedMoveHighlightToggle.onValueChanged.AddListener(OnEnhancedMoveHighlightToggleChanged);
}
if (ManageButton != null)
{
ManageButton.onClick.RemoveAllListeners();
@ -121,6 +134,12 @@ namespace TH1_UI.View.Top
MapRenderer.Instance?.RefreshVisualTheme();
}
private void OnEnhancedMoveHighlightToggleChanged(bool isOn)
{
ConfigManager.Instance.Config.EnhancedMoveHighlightEnabled = isOn;
MapRenderer.Instance?.RefreshAllHighlights();
}
public void RefreshLanguageOption()
{
var lan = MultilingualManager.Instance.GetCurLanguage();
@ -331,6 +350,7 @@ namespace TH1_UI.View.Top
RefreshCityBorderAlwaysToggle();
RefreshConfirmNextTurnToggle();
RefreshEyeComfortToggle();
RefreshEnhancedMoveHighlightToggle();
}
public void RefreshKeyMomentToggle()
@ -373,6 +393,14 @@ namespace TH1_UI.View.Top
}
}
public void RefreshEnhancedMoveHighlightToggle()
{
if (EnhancedMoveHighlightToggle != null)
{
EnhancedMoveHighlightToggle.SetIsOnWithoutNotify(ConfigManager.Instance.Config.EnhancedMoveHighlightEnabled);
}
}
public void CloseView()
{
//AudioManager.Instance.StopMusic();

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff