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:
udx
2026-10-21 23:01:31 +08:00
co-authored by Cursor
parent 89e0fa246f
commit 079313fb06
677 changed files with 395371 additions and 9692 deletions
+1 -1
View File
@@ -17,7 +17,7 @@
"bone": "bone_0",
"seed": [0.335, 0.625, -0.31],
"fullDistance": 0.43,
"fadeDistance": 0.65
"fadeDistance": 0.65, "within": [[-0.025, 0.127, -0.344], [0.434, 0.727, -0.069]]
}
],
"outputDir": "Tools/output/companions/FireCat",
+48
View File
@@ -0,0 +1,48 @@
{
"schemaVersion": 1,
"targetTriangles": 2000,
"textureSize": 1024,
"cloudDestination": "https://3d.hunyuan.tencent.com",
"actors": [
{
"actor": "Hornlet",
"source": "Tools/output/enemy_3d/Hornlet/hornlet.glb",
"sourceSha256": "0371fee3c61f6f0f8d49a0c41123623627d2105c0454ed49bf879b7d046e696d",
"sourceTriangles": 50000,
"rig": "Tools/output/enemy_dgx/Hornlet/high_rig/rigged.glb",
"height": 0.5,
"prefab": "Hornlet_Enemy.prefab",
"recipe": "Config/Art/EnemyCharacters/Hornlet.json"
},
{
"actor": "Dashlet",
"source": "Tools/output/enemy_3d/Dashlet/dashlet.glb",
"sourceSha256": "acedfad853eff8c1c8a19f7d518bb61375d05c731373e8831c39a3a22b0fbaa6",
"sourceTriangles": 50000,
"rig": "Tools/output/enemy_dgx/Dashlet/high_rig/rigged.glb",
"height": 0.5,
"prefab": "Dashlet_Enemy.prefab",
"recipe": "Config/Art/EnemyCharacters/Dashlet.json"
},
{
"actor": "Shellhorn",
"source": "Tools/output/enemy_3d/Shellhorn/shellhorn.glb",
"sourceSha256": "7c14ceaf983d23ee7896a16af35081c0940ae9579bc84fc54df62cbaa567afb5",
"sourceTriangles": 50000,
"rig": "Tools/output/enemy_dgx/Shellhorn/high_rig/rigged.glb",
"height": 0.5,
"prefab": "Shellhorn_Enemy.prefab",
"recipe": "Config/Art/EnemyCharacters/Shellhorn.json"
},
{
"actor": "HornCaptain",
"source": "Tools/output/enemy_3d/HornCaptain/horncaptain_main.glb",
"sourceSha256": "ea31c34ffac3863a2e8970cfc87f25bc14d65f63977e8f31fee4dbf9d96afea8",
"sourceTriangles": 48236,
"rig": "Tools/output/enemy_dgx/HornCaptain/high_rig/rigged.glb",
"height": 0.6,
"prefab": "HornCaptain_Enemy.prefab",
"recipe": "Config/Art/EnemyCharacters/HornCaptain.json"
}
]
}
+249
View File
@@ -0,0 +1,249 @@
{
"schema": 1,
"bank": "Assets/Bundles/Combat/BattleSkillPresentation.prefab",
"soundIds": [
"FireCharge",
"FireLaunch",
"FireHit",
"RockHit",
"Shield",
"Heal",
"Slow",
"Lightning",
"EnemyHit"
],
"effects": [
{
"id": 5,
"name": "RockBallGuard",
"path": "Assets/Bundles/Combat/Partners/Vfx_RockBallGuard.prefab",
"poolSize": 4,
"loop": true,
"beam": false,
"ground": false,
"lifetime": 0.65
},
{
"id": 6,
"name": "FireCatFlare",
"path": "Assets/Bundles/Combat/Partners/Vfx_FireCatFlare.prefab",
"poolSize": 4,
"loop": false,
"beam": false,
"ground": false,
"lifetime": 0.65
},
{
"id": 7,
"name": "BudBudBloom",
"path": "Assets/Bundles/Combat/Partners/Vfx_BudBudBloom.prefab",
"poolSize": 4,
"loop": false,
"beam": false,
"ground": true,
"lifetime": 0.65
},
{
"id": 8,
"name": "SparkBirdBolt",
"path": "Assets/Bundles/Combat/Partners/Vfx_SparkBirdBolt.prefab",
"poolSize": 4,
"loop": false,
"beam": true,
"ground": false,
"lifetime": 0.22
},
{
"id": 9,
"name": "BubbleTurtleBubbles",
"path": "Assets/Bundles/Combat/Partners/Vfx_BubbleTurtleBubbles.prefab",
"poolSize": 4,
"loop": false,
"beam": false,
"ground": false,
"lifetime": 0.65
},
{
"id": 10,
"name": "RockRhinoQuake",
"path": "Assets/Bundles/Combat/Partners/Vfx_RockRhinoQuake.prefab",
"poolSize": 4,
"loop": false,
"beam": false,
"ground": true,
"lifetime": 0.65
},
{
"id": 11,
"name": "FlameLionBreath",
"path": "Assets/Bundles/Combat/Partners/Vfx_FlameLionBreath.prefab",
"poolSize": 4,
"loop": false,
"beam": false,
"ground": false,
"lifetime": 0.65
},
{
"id": 12,
"name": "VineSpriteVines",
"path": "Assets/Bundles/Combat/Partners/Vfx_VineSpriteVines.prefab",
"poolSize": 4,
"loop": false,
"beam": false,
"ground": true,
"lifetime": 0.65
},
{
"id": 13,
"name": "ThunderLeopardClaw",
"path": "Assets/Bundles/Combat/Partners/Vfx_ThunderLeopardClaw.prefab",
"poolSize": 4,
"loop": false,
"beam": true,
"ground": false,
"lifetime": 0.22
},
{
"id": 14,
"name": "TideWhaleTide",
"path": "Assets/Bundles/Combat/Partners/Vfx_TideWhaleTide.prefab",
"poolSize": 4,
"loop": true,
"beam": false,
"ground": false,
"lifetime": 0.65
}
],
"profiles": [
{
"pet": 0,
"actor": "RockBall",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 3,
"abilityEffect": 5,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 3,
"abilitySound": 4
},
{
"pet": 1,
"actor": "FireCat",
"chargeEffect": 0,
"projectileEffect": 1,
"hitEffect": 6,
"abilityEffect": 6,
"releaseEffect": -1,
"chargeSound": 0,
"launchSound": 1,
"hitSound": 2,
"abilitySound": -1
},
{
"pet": 2,
"actor": "BudBud",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 3,
"abilityEffect": 7,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 8,
"abilitySound": 5
},
{
"pet": 3,
"actor": "SparkBird",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 8,
"abilityEffect": 8,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 7,
"abilitySound": -1
},
{
"pet": 4,
"actor": "BubbleTurtle",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 3,
"abilityEffect": 9,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 8,
"abilitySound": 6
},
{
"pet": 5,
"actor": "RockRhino",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 3,
"abilityEffect": 10,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 3,
"abilitySound": 6
},
{
"pet": 6,
"actor": "FlameLion",
"chargeEffect": 0,
"projectileEffect": 1,
"hitEffect": 11,
"abilityEffect": 11,
"releaseEffect": 11,
"chargeSound": 0,
"launchSound": 1,
"hitSound": 2,
"abilitySound": -1
},
{
"pet": 7,
"actor": "VineSprite",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 3,
"abilityEffect": 12,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 8,
"abilitySound": 5
},
{
"pet": 8,
"actor": "ThunderLeopard",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 13,
"abilityEffect": 13,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 7,
"abilitySound": -1
},
{
"pet": 9,
"actor": "TideWhale",
"chargeEffect": -1,
"projectileEffect": 1,
"hitEffect": 3,
"abilityEffect": 14,
"releaseEffect": -1,
"chargeSound": -1,
"launchSound": -1,
"hitSound": 8,
"abilitySound": 4
}
]
}
+513
View File
@@ -0,0 +1,513 @@
{
"schemaVersion": 1,
"status": "runtime",
"runtimeEnabled": true,
"proposedBattleRules": 3,
"source": {
"path": "Config/Gameplay/greenfield.json",
"values": "resolve_from_frozen_gameplay_snapshot"
},
"clock": {
"tickMs": 50,
"cooldownRounding": "ceil",
"simulationUsesWallClock": false
},
"numeric": {
"hpScale": 1000,
"positionScale": 1000,
"factorScale": 10000,
"rounding": "explicit_integer_rules_v1"
},
"scheduling": {
"channel": "main_action",
"priorities": {
"ability": 100,
"basic": 10
},
"cooldownStarts": "cast_start",
"cancelRefund": "none",
"initialCooldownTicks": 0,
"interruptBeforeRelease": [
"death",
"hard_control"
],
"releasedProjectileSurvivesCaster": true
},
"projectile": {
"speedMmPerTick": 800,
"maxLifetimeTicks": 40,
"arrival": "ceil_distance_at_release",
"targetLost": "expire",
"retarget": false,
"collisionAuthority": "simulation"
},
"statuses": [
{
"id": "shield_main",
"merge": "max_remaining_replace_expiry",
"value": "flat_hp"
},
{
"id": "slow_main",
"merge": "min_factor_max_expiry",
"value": "remaining_speed_factor"
}
],
"templates": [
{
"id": "basic_melee",
"selector": "front_enemy_same_lane",
"delivery": "instant",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "damage",
"amount": "attack_scaled",
"scale": "one"
}
],
"timing": {
"releaseTicks": 9,
"recoveryTicks": 11
},
"parameters": {
"cooldown": "basic_cooldown",
"range": "basic_range",
"amount": "actor_attack"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "basic_ranged",
"selector": "front_enemy_same_lane",
"delivery": "projectile",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "damage",
"amount": "attack_scaled",
"scale": "one"
}
],
"timing": {
"releaseTicks": 6,
"recoveryTicks": 6
},
"parameters": {
"cooldown": "basic_cooldown",
"range": "basic_range",
"amount": "actor_attack"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "ability_burst",
"selector": "front_enemy_same_lane",
"delivery": "projectile",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "damage",
"amount": "attack_scaled",
"scale": "ability_value"
}
],
"timing": {
"releaseTicks": 8,
"recoveryTicks": 8
},
"parameters": {
"cooldown": "ability_cooldown",
"range": "ability_range",
"amount": "ability_value",
"targetCount": "ability_target_count"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "ability_chain",
"selector": "front_enemy_same_lane",
"delivery": "instant",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "damage",
"amount": "attack_scaled",
"scale": "ability_value"
}
],
"timing": {
"releaseTicks": 8,
"recoveryTicks": 8
},
"parameters": {
"cooldown": "ability_cooldown",
"range": "ability_range",
"amount": "ability_value",
"targetCount": "ability_target_count"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "ability_heal",
"selector": "lowest_hp_ratio_ally",
"delivery": "instant",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "heal",
"amount": "ability_value"
}
],
"timing": {
"releaseTicks": 8,
"recoveryTicks": 8
},
"parameters": {
"cooldown": "ability_cooldown",
"range": "ability_range",
"amount": "ability_value",
"targetCount": "ability_target_count",
"radius": "ability_radius"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "ability_shield",
"selector": "self",
"delivery": "instant",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "apply_status",
"statusId": "shield_main",
"value": "ability_value",
"duration": "ability_duration"
}
],
"timing": {
"releaseTicks": 0,
"recoveryTicks": 8
},
"parameters": {
"cooldown": "ability_cooldown",
"range": "ability_range",
"amount": "ability_value",
"targetCount": "ability_target_count",
"duration": "ability_duration"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "ability_slow",
"selector": "front_enemy_same_lane",
"delivery": "instant",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "apply_status",
"statusId": "slow_main",
"value": "ability_value",
"duration": "ability_duration"
}
],
"timing": {
"releaseTicks": 8,
"recoveryTicks": 8
},
"parameters": {
"cooldown": "ability_cooldown",
"range": "ability_range",
"amount": "ability_value",
"targetCount": "ability_target_count",
"duration": "ability_duration",
"bossScale": "boss_control_scale"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
},
{
"id": "enemy_melee",
"selector": "front_blocker_same_lane",
"delivery": "instant",
"actions": [
{
"id": "main",
"trigger": "delivery_hit",
"type": "damage",
"amount": "attack_scaled",
"scale": "one"
}
],
"timing": {
"releaseTicks": 6,
"recoveryTicks": 6
},
"parameters": {
"cooldown": "basic_cooldown",
"range": "basic_range",
"amount": "actor_attack"
},
"targetLost": "expire",
"channel": "main_action",
"snapshot": "caster_on_start_target_on_hit"
}
],
"skills": [
{
"id": "pet.0.basic",
"actorKind": "pet",
"actorId": 0,
"slot": "basic",
"sourcePointer": "/pets/0",
"template": "basic_melee",
"presentation": "rockball_basic"
},
{
"id": "pet.0.ability",
"actorKind": "pet",
"actorId": 0,
"slot": "ability",
"sourcePointer": "/pets/0",
"template": "ability_shield",
"presentation": "rockball_ability"
},
{
"id": "pet.1.basic",
"actorKind": "pet",
"actorId": 1,
"slot": "basic",
"sourcePointer": "/pets/1",
"template": "basic_ranged",
"presentation": "firecat_basic",
"timing": {
"releaseTicks": 9,
"recoveryTicks": 9
}
},
{
"id": "pet.1.ability",
"actorKind": "pet",
"actorId": 1,
"slot": "ability",
"sourcePointer": "/pets/1",
"template": "ability_burst",
"presentation": "firecat_ability",
"timing": {
"releaseTicks": 11,
"recoveryTicks": 11
}
},
{
"id": "pet.2.basic",
"actorKind": "pet",
"actorId": 2,
"slot": "basic",
"sourcePointer": "/pets/2",
"template": "basic_ranged",
"presentation": "prototype_basic_ranged"
},
{
"id": "pet.2.ability",
"actorKind": "pet",
"actorId": 2,
"slot": "ability",
"sourcePointer": "/pets/2",
"template": "ability_heal",
"presentation": "prototype_ability_heal"
},
{
"id": "pet.3.basic",
"actorKind": "pet",
"actorId": 3,
"slot": "basic",
"sourcePointer": "/pets/3",
"template": "basic_ranged",
"presentation": "prototype_basic_ranged"
},
{
"id": "pet.3.ability",
"actorKind": "pet",
"actorId": 3,
"slot": "ability",
"sourcePointer": "/pets/3",
"template": "ability_chain",
"presentation": "prototype_ability_chain"
},
{
"id": "pet.4.basic",
"actorKind": "pet",
"actorId": 4,
"slot": "basic",
"sourcePointer": "/pets/4",
"template": "basic_melee",
"presentation": "prototype_basic_melee"
},
{
"id": "pet.4.ability",
"actorKind": "pet",
"actorId": 4,
"slot": "ability",
"sourcePointer": "/pets/4",
"template": "ability_slow",
"presentation": "prototype_ability_slow"
},
{
"id": "pet.5.basic",
"actorKind": "pet",
"actorId": 5,
"slot": "basic",
"sourcePointer": "/pets/5",
"template": "basic_melee",
"presentation": "prototype_basic_melee"
},
{
"id": "pet.5.ability",
"actorKind": "pet",
"actorId": 5,
"slot": "ability",
"sourcePointer": "/pets/5",
"template": "ability_slow",
"presentation": "prototype_ability_slow"
},
{
"id": "pet.6.basic",
"actorKind": "pet",
"actorId": 6,
"slot": "basic",
"sourcePointer": "/pets/6",
"template": "basic_ranged",
"presentation": "prototype_basic_ranged"
},
{
"id": "pet.6.ability",
"actorKind": "pet",
"actorId": 6,
"slot": "ability",
"sourcePointer": "/pets/6",
"template": "ability_burst",
"presentation": "prototype_ability_burst"
},
{
"id": "pet.7.basic",
"actorKind": "pet",
"actorId": 7,
"slot": "basic",
"sourcePointer": "/pets/7",
"template": "basic_ranged",
"presentation": "prototype_basic_ranged"
},
{
"id": "pet.7.ability",
"actorKind": "pet",
"actorId": 7,
"slot": "ability",
"sourcePointer": "/pets/7",
"template": "ability_heal",
"presentation": "prototype_ability_heal"
},
{
"id": "pet.8.basic",
"actorKind": "pet",
"actorId": 8,
"slot": "basic",
"sourcePointer": "/pets/8",
"template": "basic_ranged",
"presentation": "prototype_basic_ranged"
},
{
"id": "pet.8.ability",
"actorKind": "pet",
"actorId": 8,
"slot": "ability",
"sourcePointer": "/pets/8",
"template": "ability_chain",
"presentation": "prototype_ability_chain"
},
{
"id": "pet.9.basic",
"actorKind": "pet",
"actorId": 9,
"slot": "basic",
"sourcePointer": "/pets/9",
"template": "basic_melee",
"presentation": "prototype_basic_melee"
},
{
"id": "pet.9.ability",
"actorKind": "pet",
"actorId": 9,
"slot": "ability",
"sourcePointer": "/pets/9",
"template": "ability_shield",
"presentation": "prototype_ability_shield"
},
{
"id": "enemy.0.basic",
"actorKind": "enemy",
"actorId": 0,
"slot": "basic",
"sourcePointer": "/enemies/0",
"template": "enemy_melee",
"presentation": "prototype_enemy_melee"
},
{
"id": "enemy.1.basic",
"actorKind": "enemy",
"actorId": 1,
"slot": "basic",
"sourcePointer": "/enemies/1",
"template": "enemy_melee",
"presentation": "prototype_enemy_melee"
},
{
"id": "enemy.2.basic",
"actorKind": "enemy",
"actorId": 2,
"slot": "basic",
"sourcePointer": "/enemies/2",
"template": "enemy_melee",
"presentation": "prototype_enemy_melee"
},
{
"id": "enemy.3.basic",
"actorKind": "enemy",
"actorId": 3,
"slot": "basic",
"sourcePointer": "/enemies/3",
"template": "enemy_melee",
"presentation": "prototype_enemy_melee"
},
{
"id": "enemy.4.basic",
"actorKind": "enemy",
"actorId": 4,
"slot": "basic",
"sourcePointer": "/enemies/4",
"template": "enemy_melee",
"presentation": "prototype_enemy_melee"
}
],
"logicVersion": 1,
"protocol": 1
}
+12
View File
@@ -0,0 +1,12 @@
{
"schema": 1,
"purpose": "isolated_firecat_rockball_vertical_slice",
"productionEnabled": false,
"maxTicks": 800,
"tier": 1,
"enemyType": 0,
"enemyHpScale": 2,
"enemyZ": [2800, 4000, 5200],
"elementsEnabled": false,
"notes": "Independent QA encounter; values resolve from the frozen gameplay and skill proposal inputs. No progression or reward protocol."
}
+37
View File
@@ -1019,6 +1019,43 @@
"chapter": "属性挑战"
}
],
"friends": {
"limit": 20,
"requestLimit": 20,
"blockLimit": 20,
"sendLimit": 5,
"receiveLimit": 5,
"gift": {
"coins": 20,
"candy": 0,
"balls": 0,
"tickets": 0
}
},
"fishing": {
"unlockStage": 1,
"ballCost": 1,
"dailyLimit": 5,
"duration": 20,
"grace": 3,
"fishCount": 8,
"windowMs": 900,
"tiers": [
{"minScore": 3, "reward": {"coins": 10, "candy": 0, "balls": 0, "tickets": 0}},
{"minScore": 5, "reward": {"coins": 20, "candy": 0, "balls": 0, "tickets": 0}},
{"minScore": 8, "reward": {"coins": 30, "candy": 5, "balls": 0, "tickets": 0}}
]
},
"treasure": {
"unlockStage": 1,
"dailyLimit": 3,
"events": ["旗杆下的硬币", "花盆边的纸包", "路灯旁的小袋"],
"bands": [
{"minClears": 1, "reward": {"coins": 10, "candy": 0, "balls": 0, "tickets": 0}},
{"minClears": 4, "reward": {"coins": 20, "candy": 0, "balls": 0, "tickets": 0}},
{"minClears": 10, "reward": {"coins": 30, "candy": 5, "balls": 0, "tickets": 0}}
]
},
"stages": [
{
"id": 1,