Add rank, friends, fishing, and camp treasure with T2 studio models and skill presentation.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"inactiveParent": true,
|
||||
"disabledAnimator": true,
|
||||
"reenabledSampling": true,
|
||||
"hiddenUnit": true,
|
||||
"warnings": 0
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"realAccountRestored": true,
|
||||
"coinsCandyLevelShotsRosterFormationUnchanged": true,
|
||||
"playMode": "stopped",
|
||||
"scene": "Assets/Scenes/Boot.unity",
|
||||
"sceneDirty": false,
|
||||
"gameView": [
|
||||
1080,
|
||||
1920
|
||||
],
|
||||
"isolatedPort": 18085,
|
||||
"isolatedServerStopped": true,
|
||||
"developmentPort8080Healthy": true,
|
||||
"postfixConsoleCursor": 350546,
|
||||
"postfixConsoleErrors": 0,
|
||||
"postfixConsoleWarnings": 0
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"cases": [
|
||||
{
|
||||
"stage": 1,
|
||||
"traceHashExact": true,
|
||||
"outcomeExact": true,
|
||||
"rewardExact": true,
|
||||
"statsExact": true
|
||||
},
|
||||
{
|
||||
"stage": 2,
|
||||
"traceHashExact": true,
|
||||
"outcomeExact": true,
|
||||
"rewardExact": true,
|
||||
"statsExact": true
|
||||
},
|
||||
{
|
||||
"stage": 3,
|
||||
"traceHashExact": true,
|
||||
"outcomeExact": true,
|
||||
"rewardExact": true,
|
||||
"statsExact": true
|
||||
},
|
||||
{
|
||||
"stage": 4,
|
||||
"traceHashExact": true,
|
||||
"outcomeExact": true,
|
||||
"rewardExact": true,
|
||||
"statsExact": true
|
||||
},
|
||||
{
|
||||
"stage": 5,
|
||||
"traceHashExact": true,
|
||||
"outcomeExact": true,
|
||||
"rewardExact": true,
|
||||
"statsExact": true
|
||||
}
|
||||
],
|
||||
"finalWalletRosterFormationExact": true,
|
||||
"repeatClearNoReward": true
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"status": "pass",
|
||||
"authoritative": true,
|
||||
"finalStateExact": true,
|
||||
"animatorWarnings": 0,
|
||||
"errors": 0
|
||||
}
|
||||
@@ -0,0 +1,973 @@
|
||||
{
|
||||
"battles": [
|
||||
{
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"level": 2,
|
||||
"result": {
|
||||
"chest": 0,
|
||||
"configVersion": "greenfield-1-2787887803fd",
|
||||
"defeated": 9,
|
||||
"durability": 10,
|
||||
"duration": 64.15,
|
||||
"firstClear": true,
|
||||
"id": "first-day-command-9",
|
||||
"leaks": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"logicVersion": 1,
|
||||
"reward": {
|
||||
"balls": 3,
|
||||
"candy": 40,
|
||||
"coins": 80
|
||||
},
|
||||
"rulesVersion": 3,
|
||||
"stageId": 1,
|
||||
"stats": [
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 16.04,
|
||||
"healing": 0.0,
|
||||
"pet": 0,
|
||||
"skills": 8,
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 775.96,
|
||||
"healing": 0.0,
|
||||
"pet": 1,
|
||||
"skills": 7,
|
||||
"slot": 1
|
||||
}
|
||||
],
|
||||
"traceHash": "134ea42cbb43ac95049c5fd27797134f5184f8cf52cc36d2516f3552e001b912",
|
||||
"won": true
|
||||
},
|
||||
"shots": 2,
|
||||
"stage": 1
|
||||
},
|
||||
{
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"level": 2,
|
||||
"result": {
|
||||
"configVersion": "greenfield-1-2787887803fd",
|
||||
"defeated": 9,
|
||||
"durability": 10,
|
||||
"duration": 64.3,
|
||||
"firstClear": true,
|
||||
"id": "first-day-command-18",
|
||||
"leaks": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"logicVersion": 1,
|
||||
"reward": {
|
||||
"balls": 3,
|
||||
"candy": 50,
|
||||
"coins": 90
|
||||
},
|
||||
"rulesVersion": 3,
|
||||
"stageId": 2,
|
||||
"stats": [
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 15.0,
|
||||
"healing": 0.0,
|
||||
"pet": 0,
|
||||
"skills": 8,
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 838.65,
|
||||
"healing": 0.0,
|
||||
"pet": 1,
|
||||
"skills": 7,
|
||||
"slot": 1
|
||||
}
|
||||
],
|
||||
"traceHash": "11b1bc2504da5de50cc683b82fc9257645d9229c743f79201bf6130598f0e574",
|
||||
"won": true
|
||||
},
|
||||
"shots": 2,
|
||||
"stage": 2
|
||||
},
|
||||
{
|
||||
"formation": [
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"level": 3,
|
||||
"result": {
|
||||
"chest": 1,
|
||||
"configVersion": "greenfield-1-2787887803fd",
|
||||
"defeated": 9,
|
||||
"durability": 10,
|
||||
"duration": 76.55,
|
||||
"firstClear": true,
|
||||
"id": "first-day-command-23",
|
||||
"leaks": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"logicVersion": 1,
|
||||
"reward": {
|
||||
"balls": 3,
|
||||
"candy": 60,
|
||||
"coins": 100
|
||||
},
|
||||
"rulesVersion": 3,
|
||||
"stageId": 3,
|
||||
"stats": [
|
||||
{
|
||||
"absorbed": 64.0,
|
||||
"damage": 321.2,
|
||||
"healing": 0.0,
|
||||
"pet": 0,
|
||||
"skills": 10,
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 260.4,
|
||||
"healing": 0.0,
|
||||
"pet": 1,
|
||||
"skills": 4,
|
||||
"slot": 2
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 191.2,
|
||||
"healing": 170.0,
|
||||
"pet": 2,
|
||||
"skills": 18,
|
||||
"slot": 1
|
||||
}
|
||||
],
|
||||
"traceHash": "698b4a6bca55d662c25e24400225f49b7fe45313006574829e2dedb797a2f94d",
|
||||
"won": true
|
||||
},
|
||||
"shots": 2,
|
||||
"stage": 3
|
||||
},
|
||||
{
|
||||
"formation": [
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"level": 4,
|
||||
"result": {
|
||||
"configVersion": "greenfield-1-2787887803fd",
|
||||
"defeated": 9,
|
||||
"durability": 10,
|
||||
"duration": 74.3,
|
||||
"firstClear": true,
|
||||
"id": "first-day-command-28",
|
||||
"leaks": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"logicVersion": 1,
|
||||
"reward": {
|
||||
"balls": 3,
|
||||
"candy": 70,
|
||||
"coins": 110
|
||||
},
|
||||
"rulesVersion": 3,
|
||||
"stageId": 4,
|
||||
"stats": [
|
||||
{
|
||||
"absorbed": 46.0,
|
||||
"damage": 257.4,
|
||||
"healing": 0.0,
|
||||
"pet": 0,
|
||||
"skills": 10,
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 364.1,
|
||||
"healing": 0.0,
|
||||
"pet": 1,
|
||||
"skills": 4,
|
||||
"slot": 2
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 279.4,
|
||||
"healing": 122.0,
|
||||
"pet": 2,
|
||||
"skills": 13,
|
||||
"slot": 1
|
||||
}
|
||||
],
|
||||
"traceHash": "e835b75654fbe68b87a0e0369d6cdfd7389a4f2a6bb37223695c3e637852c66d",
|
||||
"won": true
|
||||
},
|
||||
"shots": 2,
|
||||
"stage": 4
|
||||
},
|
||||
{
|
||||
"formation": [
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
-1,
|
||||
2,
|
||||
-1
|
||||
],
|
||||
"level": 5,
|
||||
"result": {
|
||||
"chest": 2,
|
||||
"configVersion": "greenfield-1-2787887803fd",
|
||||
"defeated": 8,
|
||||
"durability": 5,
|
||||
"duration": 87.10000000000001,
|
||||
"firstClear": true,
|
||||
"id": "first-day-command-33",
|
||||
"leaks": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"logicVersion": 1,
|
||||
"reward": {
|
||||
"balls": 5,
|
||||
"candy": 100,
|
||||
"coins": 200
|
||||
},
|
||||
"rulesVersion": 3,
|
||||
"stageId": 5,
|
||||
"stats": [
|
||||
{
|
||||
"absorbed": 78.0,
|
||||
"damage": 313.3,
|
||||
"healing": 0.0,
|
||||
"pet": 0,
|
||||
"skills": 11,
|
||||
"slot": 0
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 279.5,
|
||||
"healing": 0.0,
|
||||
"pet": 1,
|
||||
"skills": 3,
|
||||
"slot": 2
|
||||
},
|
||||
{
|
||||
"absorbed": 0.0,
|
||||
"damage": 305.9,
|
||||
"healing": 280.0,
|
||||
"pet": 2,
|
||||
"skills": 25,
|
||||
"slot": 4
|
||||
}
|
||||
],
|
||||
"traceHash": "d26d25c5f159375339d2d2f3090b871db56e41c7f049efd1259d4891906d9fca",
|
||||
"won": true
|
||||
},
|
||||
"shots": 2,
|
||||
"stage": 5
|
||||
}
|
||||
],
|
||||
"final": {
|
||||
"ballRecoveryUnix": 1900040000,
|
||||
"balls": 62,
|
||||
"campInteractions": 0,
|
||||
"campLayout": [
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"candy": 110,
|
||||
"captureCount": 0,
|
||||
"captureTutorialDone": true,
|
||||
"challengeBadges": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"challengeBestMs": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"challengeRankAt": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"chestDailyClaimed": 0,
|
||||
"chests": [
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"cleared": true,
|
||||
"clearedStages": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"coins": 720,
|
||||
"dailyClaimed": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"dailyDay": 21991,
|
||||
"dailyProgress": [
|
||||
2,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"decorations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"duplicateStreak": 0,
|
||||
"fishBest": 0,
|
||||
"fishPlayed": 0,
|
||||
"formation": [
|
||||
0,
|
||||
-1,
|
||||
1,
|
||||
-1,
|
||||
2,
|
||||
-1
|
||||
],
|
||||
"friendBlocked": [],
|
||||
"friendIds": [],
|
||||
"friendIn": [],
|
||||
"friendOut": [],
|
||||
"giftFrom": [],
|
||||
"giftSent": [],
|
||||
"goalClaimed": true,
|
||||
"lastBattle": "first-day-command-35",
|
||||
"lastCandy": 20,
|
||||
"lastCoins": 40,
|
||||
"lastShot": "first-day-command-4",
|
||||
"level": 5,
|
||||
"mails": [
|
||||
{
|
||||
"body": "欢迎和伙伴一起开启冒险!\n这份小小补给可用于弹珠发射和伙伴训练,请在有效期内领取。",
|
||||
"claimed": true,
|
||||
"expired": false,
|
||||
"expiresAt": 1900644800,
|
||||
"mailId": "welcome_supply_v1",
|
||||
"read": true,
|
||||
"reward": {
|
||||
"balls": 5,
|
||||
"candy": 20,
|
||||
"coins": 0,
|
||||
"tickets": 0
|
||||
},
|
||||
"sentAt": 1900040000,
|
||||
"title": "欢迎来到小镇"
|
||||
},
|
||||
{
|
||||
"body": "冒险首通、每日任务和七日登录都有独立奖励。\n邮件附件只有点击领取后才会到账;没有附件的通知只需阅读。",
|
||||
"claimed": false,
|
||||
"expired": false,
|
||||
"expiresAt": 1900644800,
|
||||
"mailId": "camp_notice_v1",
|
||||
"read": false,
|
||||
"reward": {
|
||||
"balls": 0,
|
||||
"candy": 0,
|
||||
"coins": 0,
|
||||
"tickets": 0
|
||||
},
|
||||
"sentAt": 1900040000,
|
||||
"title": "营地来信"
|
||||
}
|
||||
],
|
||||
"pendingAim": 0,
|
||||
"pendingBattle": "",
|
||||
"pendingFish": "",
|
||||
"pendingShot": "",
|
||||
"restPet": 0,
|
||||
"revision": 33,
|
||||
"schema": 14,
|
||||
"selectedStage": 5,
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shopBought": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shots": 2,
|
||||
"signinClaimed": [
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"signinDays": 1,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"storyRankAt": 1900040195,
|
||||
"tickets": 0,
|
||||
"treasurePlayed": 0,
|
||||
"treasureSeen": []
|
||||
},
|
||||
"initial": {
|
||||
"ballRecoveryUnix": 1900040000,
|
||||
"balls": 20,
|
||||
"campInteractions": 0,
|
||||
"campLayout": [
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"candy": 0,
|
||||
"captureCount": 0,
|
||||
"captureTutorialDone": false,
|
||||
"challengeBadges": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"challengeBestMs": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"challengeRankAt": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"chestDailyClaimed": 0,
|
||||
"chests": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"cleared": false,
|
||||
"clearedStages": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"coins": 0,
|
||||
"dailyClaimed": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"dailyDay": 21991,
|
||||
"dailyProgress": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"decorations": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"duplicateStreak": 0,
|
||||
"fishBest": 0,
|
||||
"fishPlayed": 0,
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"friendBlocked": [],
|
||||
"friendIds": [],
|
||||
"friendIn": [],
|
||||
"friendOut": [],
|
||||
"giftFrom": [],
|
||||
"giftSent": [],
|
||||
"goalClaimed": false,
|
||||
"lastBattle": "",
|
||||
"lastCandy": 0,
|
||||
"lastCoins": 0,
|
||||
"lastShot": "",
|
||||
"level": 1,
|
||||
"mails": [
|
||||
{
|
||||
"body": "欢迎和伙伴一起开启冒险!\n这份小小补给可用于弹珠发射和伙伴训练,请在有效期内领取。",
|
||||
"claimed": false,
|
||||
"expired": false,
|
||||
"expiresAt": 1900644800,
|
||||
"mailId": "welcome_supply_v1",
|
||||
"read": false,
|
||||
"reward": {
|
||||
"balls": 5,
|
||||
"candy": 20,
|
||||
"coins": 0,
|
||||
"tickets": 0
|
||||
},
|
||||
"sentAt": 1900040000,
|
||||
"title": "欢迎来到小镇"
|
||||
},
|
||||
{
|
||||
"body": "冒险首通、每日任务和七日登录都有独立奖励。\n邮件附件只有点击领取后才会到账;没有附件的通知只需阅读。",
|
||||
"claimed": false,
|
||||
"expired": false,
|
||||
"expiresAt": 1900644800,
|
||||
"mailId": "camp_notice_v1",
|
||||
"read": false,
|
||||
"reward": {
|
||||
"balls": 0,
|
||||
"candy": 0,
|
||||
"coins": 0,
|
||||
"tickets": 0
|
||||
},
|
||||
"sentAt": 1900040000,
|
||||
"title": "营地来信"
|
||||
}
|
||||
],
|
||||
"pendingAim": 0,
|
||||
"pendingBattle": "",
|
||||
"pendingFish": "",
|
||||
"pendingShot": "",
|
||||
"restPet": 0,
|
||||
"revision": 1,
|
||||
"schema": 14,
|
||||
"selectedStage": 1,
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shopBought": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shots": 0,
|
||||
"signinClaimed": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"signinDays": 1,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"storyRankAt": 0,
|
||||
"tickets": 0,
|
||||
"treasurePlayed": 0,
|
||||
"treasureSeen": []
|
||||
},
|
||||
"injectedClock": true,
|
||||
"operations": [
|
||||
{
|
||||
"action": "shot.begin",
|
||||
"balls": 19,
|
||||
"candy": 0,
|
||||
"coins": 0,
|
||||
"level": 1,
|
||||
"shots": 0
|
||||
},
|
||||
{
|
||||
"action": "shot.finish",
|
||||
"balls": 19,
|
||||
"candy": 20,
|
||||
"coins": 40,
|
||||
"level": 1,
|
||||
"shots": 1
|
||||
},
|
||||
{
|
||||
"action": "capture",
|
||||
"balls": 19,
|
||||
"candy": 20,
|
||||
"coins": 40,
|
||||
"level": 1,
|
||||
"shots": 1
|
||||
},
|
||||
{
|
||||
"action": "shot.begin",
|
||||
"balls": 18,
|
||||
"candy": 20,
|
||||
"coins": 40,
|
||||
"level": 1,
|
||||
"shots": 1
|
||||
},
|
||||
{
|
||||
"action": "shot.finish",
|
||||
"balls": 18,
|
||||
"candy": 40,
|
||||
"coins": 80,
|
||||
"level": 1,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "train",
|
||||
"balls": 18,
|
||||
"candy": 10,
|
||||
"coins": 80,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "stage.select",
|
||||
"balls": 18,
|
||||
"candy": 10,
|
||||
"coins": 80,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "autoDeploy",
|
||||
"balls": 18,
|
||||
"candy": 10,
|
||||
"coins": 80,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.begin",
|
||||
"balls": 18,
|
||||
"candy": 10,
|
||||
"coins": 80,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.finish",
|
||||
"balls": 21,
|
||||
"candy": 50,
|
||||
"coins": 160,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "goal.claim",
|
||||
"balls": 26,
|
||||
"candy": 50,
|
||||
"coins": 160,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "mail.claimAll",
|
||||
"balls": 31,
|
||||
"candy": 70,
|
||||
"coins": 160,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "signin.claim",
|
||||
"balls": 41,
|
||||
"candy": 70,
|
||||
"coins": 160,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "shop.buy",
|
||||
"balls": 46,
|
||||
"candy": 70,
|
||||
"coins": 160,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "chest.open",
|
||||
"balls": 48,
|
||||
"candy": 100,
|
||||
"coins": 220,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "stage.select",
|
||||
"balls": 48,
|
||||
"candy": 100,
|
||||
"coins": 220,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "autoDeploy",
|
||||
"balls": 48,
|
||||
"candy": 100,
|
||||
"coins": 220,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.begin",
|
||||
"balls": 48,
|
||||
"candy": 100,
|
||||
"coins": 220,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.finish",
|
||||
"balls": 51,
|
||||
"candy": 150,
|
||||
"coins": 310,
|
||||
"level": 2,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "train",
|
||||
"balls": 51,
|
||||
"candy": 90,
|
||||
"coins": 310,
|
||||
"level": 3,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "stage.select",
|
||||
"balls": 51,
|
||||
"candy": 90,
|
||||
"coins": 310,
|
||||
"level": 3,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "autoDeploy",
|
||||
"balls": 51,
|
||||
"candy": 90,
|
||||
"coins": 310,
|
||||
"level": 3,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.begin",
|
||||
"balls": 51,
|
||||
"candy": 90,
|
||||
"coins": 310,
|
||||
"level": 3,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.finish",
|
||||
"balls": 54,
|
||||
"candy": 150,
|
||||
"coins": 410,
|
||||
"level": 3,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "train",
|
||||
"balls": 54,
|
||||
"candy": 60,
|
||||
"coins": 410,
|
||||
"level": 4,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "stage.select",
|
||||
"balls": 54,
|
||||
"candy": 60,
|
||||
"coins": 410,
|
||||
"level": 4,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "autoDeploy",
|
||||
"balls": 54,
|
||||
"candy": 60,
|
||||
"coins": 410,
|
||||
"level": 4,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.begin",
|
||||
"balls": 54,
|
||||
"candy": 60,
|
||||
"coins": 410,
|
||||
"level": 4,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.finish",
|
||||
"balls": 57,
|
||||
"candy": 130,
|
||||
"coins": 520,
|
||||
"level": 4,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "train",
|
||||
"balls": 57,
|
||||
"candy": 10,
|
||||
"coins": 520,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "stage.select",
|
||||
"balls": 57,
|
||||
"candy": 10,
|
||||
"coins": 520,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "autoDeploy",
|
||||
"balls": 57,
|
||||
"candy": 10,
|
||||
"coins": 520,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.begin",
|
||||
"balls": 57,
|
||||
"candy": 10,
|
||||
"coins": 520,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.finish",
|
||||
"balls": 62,
|
||||
"candy": 110,
|
||||
"coins": 720,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.begin",
|
||||
"balls": 62,
|
||||
"candy": 110,
|
||||
"coins": 720,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
},
|
||||
{
|
||||
"action": "battle.finish",
|
||||
"balls": 62,
|
||||
"candy": 110,
|
||||
"coins": 720,
|
||||
"level": 5,
|
||||
"shots": 2
|
||||
}
|
||||
],
|
||||
"repeatClearNoReward": true,
|
||||
"seededResources": false,
|
||||
"status": "pass"
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
{
|
||||
"kind": "guide",
|
||||
"status": "pass",
|
||||
"operations": [
|
||||
{
|
||||
"action": "shot",
|
||||
"before": {
|
||||
"coins": 0,
|
||||
"candy": 0,
|
||||
"balls": 20,
|
||||
"tickets": 0,
|
||||
"level": 1,
|
||||
"shots": 0,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
]
|
||||
},
|
||||
"after": {
|
||||
"coins": 40,
|
||||
"candy": 20,
|
||||
"balls": 19,
|
||||
"tickets": 1,
|
||||
"level": 1,
|
||||
"shots": 1,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"action": "shot",
|
||||
"before": {
|
||||
"coins": 40,
|
||||
"candy": 20,
|
||||
"balls": 19,
|
||||
"tickets": 0,
|
||||
"level": 1,
|
||||
"shots": 1,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
]
|
||||
},
|
||||
"after": {
|
||||
"coins": 80,
|
||||
"candy": 40,
|
||||
"balls": 18,
|
||||
"tickets": 0,
|
||||
"level": 1,
|
||||
"shots": 2,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"step": "guide complete",
|
||||
"updatedUtc": "2026-10-21T14:44:01.2279718Z",
|
||||
"current": {
|
||||
"coins": 80,
|
||||
"candy": 10,
|
||||
"balls": 18,
|
||||
"tickets": 0,
|
||||
"level": 2,
|
||||
"shots": 2,
|
||||
"stages": [
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"shards": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"formation": [
|
||||
0,
|
||||
1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
]
|
||||
},
|
||||
"shortage": "发射弹珠,补足训练糖果",
|
||||
"ready": "用糖果做一次共享训练",
|
||||
"trained": "布阵并完成教学关 1-1"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,46 @@
|
||||
# G3 新账号至 1-5 验收
|
||||
|
||||
2026-10-21。新账号以初始20枚弹珠、岩团团和火喵出发,教学捕捉获得芽芽,使用正常奖励、训练和推荐布阵,通过最新技能规则的1-1~1-5。无需普通随机捕捉、T2或注入资源。本轮不调整战斗数值。
|
||||
|
||||
## 路径与结果
|
||||
|
||||
两次零度发射共得糖果40、金币80;第一发的券用于教学芽芽。先训练至Lv.2完成1-1,再领取教学目标、欢迎邮件、第1日签到、商店免费补给和1-1掉落的绿野补给箱。此后用通关收益依次训练至Lv.3/4/5,全程三只伙伴均为T1。
|
||||
|
||||
| 关卡 | 训练等级 | 布阵(每条路线前/后) | 服务端逻辑时长 | 击退 | 剩余耐久 |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1-1 | 2 | 岩团团/火喵 | 64.15秒 | 9/9 | 10/10 |
|
||||
| 1-2 | 2 | 岩团团/火喵 | 64.30秒 | 9/9 | 10/10 |
|
||||
| 1-3 | 3 | 岩团团/芽芽;火喵/空 | 76.55秒 | 9/9 | 10/10 |
|
||||
| 1-4 | 4 | 岩团团/芽芽;火喵/空 | 74.30秒 | 9/9 | 10/10 |
|
||||
| 1-5 | 5 | 岩团团/空;火喵/空;芽芽/空 | 87.10秒 | 8/9 | 5/10 |
|
||||
|
||||
客户端最后事件时钟比服务端总时长少一个50ms tick,非回放偏差。真实UI使用2倍速,最早结算时间约束仍生效。
|
||||
|
||||
最终金币 **720**、糖果 **110**、弹珠 **62**、券 **0**,Lv.5、发射数2。训练共花糖果300。未领取每日任务、每日宝箱、1-3碎片自选箱及1-5大礼箱;这不是首日全部资源上限。没有普通捕捉或进化开销,不能据此断言所有抽取/消费选择都同样顺畅。
|
||||
|
||||
## 修复
|
||||
|
||||
1. 教学捕捉后仅有20糖果时,旧引导直接要求训练,但训练需30。`MainHudView.GuideTask`现在根据服务端训练费用和实际余额提示:糖果不足且有弹珠→先发射补糖果;弹珠也不足→免费补给;够用→训练;训练后→布阵。复用原JSON/Prefab骨架,真实新账号验证20→40→训练后10糖果的文案切换和显示。
|
||||
2. 隐藏的敌人/模型仍逐帧调用`Animator.Play/Update`,产生大量警告。`BattleSkillPresentation.Animate`跳过未激活或禁用的Animator;恢复显示后按绝对战斗时钟采样,不改逻辑事件。实际Prefab隐藏父节点、禁用/重启Animator和隐藏单位检查通过。修复后真实新账号实播1-1,权威终态一致,Animator警告和错误均为0。
|
||||
|
||||
## 证据与复验
|
||||
|
||||
- [FirstFive/ui_run.json](FirstFive/ui_run.json):18085隔离数据库、新注册账号、真实EventSystem射线点击,覆盖发射、教学捕捉、训练、选关、推荐布阵、五场完整权威战斗和首通奖励。UI路径没有注入时钟、随机数或存档。
|
||||
- [FirstFive/server_run.json](FirstFive/server_run.json):`first_day_tests`在独立临时数据库经相同业务命令推进,仅推进测试时钟越过播放等待。没有预置钱包/拥有/通关状态;额外重打1-5,钱包和宝箱不增加。
|
||||
- [FirstFive/parity.json](FirstFive/parity.json):五份轨迹SHA256、胜负、耐久、击退、奖励、统计和最终钱包/伙伴/阵容一致。
|
||||
- `FirstFive/ui_guide.json`、`animation_lifecycle.json`、`postfix_battle.json`:两处修复的专项回执;`VerifyG3.Domain`另覆盖零弹珠和训练费用变化。
|
||||
- CTest四组通过:权威战斗、技能样例、原玩法事务、首日推进;Python技能契约8项通过;Unity编译完成。
|
||||
- 截图:`AIClient/Assets/Screenshots/first_five_formation{1..5}.png`、`first_five_result{1..5}.png`、`first_five_guide_shortage.png`/`first_five_guide_ready.png`。已目视检查三路布阵、结算和新文案。
|
||||
- [FirstFive/cleanup.json](FirstFive/cleanup.json):原账号与端点恢复,金币/糖果/等级/发射数/伙伴/阵容不变;退出Play,Boot无脏状态,Game View 1080×1920。18085进程按可执行路径/端口/数据库核对后关闭,8080健康且未重启;修复后日志游标350529~350546无新增警告/错误。
|
||||
|
||||
```powershell
|
||||
cmake --build AIServer/build-g1 --config Release --target first_day_tests
|
||||
AIServer/build-g1/Release/first_day_tests.exe Tools/output/first_five/server_run.json
|
||||
ctest --test-dir AIServer/build-g1 -C Release --output-on-failure
|
||||
```
|
||||
|
||||
UI:启动独立`127.0.0.1:18085`,数据库仅置于`Tools/output/first_five/`;Pipeline在Boot Play Mode运行`VerifyFirstFive.Begin`,从`ui_run.json`轮询完成,再`Cleanup`恢复原账号。`BeginGuide`/`AnimationLifecycle`/`BeginBattleSmoke`是专项入口;`BeginBattleSmoke`接在`BeginGuide`后运行,异步状态写入同目录。每批结束先`Cleanup`再退出Play,不对真实端点或活动中账号启动验收。
|
||||
|
||||
## 后续
|
||||
|
||||
首日前五关未发现资源硬卡点;1-5已有损失,保留当前数值进入试玩。仍需真人首次操作、微信真机帧率/内存/首屏加载、主包与热更资源体积实测。本轮未构建或发布Player,不构成微信性能达标证据。
|
||||
Reference in New Issue
Block a user