Compare commits
18 commits
luneraria/
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55effca874 | ||
|
|
7b86973197 | ||
|
|
542a9646c8 | ||
|
|
cbff678290 | ||
|
|
fb5c92dd37 | ||
|
|
e756a90f4c | ||
|
|
b79bf5c3d2 | ||
|
|
82066d17a6 | ||
|
|
8e4b52f4ab | ||
|
|
2e05cbe08f | ||
|
|
526672ff9d | ||
|
|
2de8689d9a | ||
|
|
dd78c8dbfe | ||
|
|
c144a96706 | ||
|
|
9e253f4a19 | ||
|
|
805f5754c9 | ||
|
|
02c8839285 | ||
|
|
60992f1091 |
|
|
@ -265,11 +265,11 @@
|
||||||
"props": []
|
"props": []
|
||||||
},
|
},
|
||||||
"inputs_sha256": {
|
"inputs_sha256": {
|
||||||
"tools/meshy/g07/figure.json": "6d7066a42c7c4b71ad6f7bb7569311cc7210156fde9a7fadc0eddc5bd6a00c7f",
|
"tools/meshy/g07/figure.json": "b33bf1f6580bc1d683354f04956442869727699e01c7456cfc8fdcfc879a9f42",
|
||||||
"assets-source/meshy/g07/aschenwerfer-skelett.glb": "d9b311fdc33d18df89dcdd3a88be879079ac40d48f9e14d8ded90ed4c532be7f",
|
"assets-source/meshy/g07/aschenwerfer-skelett.glb": "d9b311fdc33d18df89dcdd3a88be879079ac40d48f9e14d8ded90ed4c532be7f",
|
||||||
"assets-source/meshy/g07/aschenwerfer-animationen.glb": "6211206d4df5bfc3dee511cca1a92f31a8a19a23986265d30f169339589f7e11"
|
"assets-source/meshy/g07/aschenwerfer-animationen.glb": "6211206d4df5bfc3dee511cca1a92f31a8a19a23986265d30f169339589f7e11"
|
||||||
},
|
},
|
||||||
"source_sha256": "4d5cdab415e4bfa97abe420f7457d4e1cddd67b9a76c23ccb6f9313a2fd8ea4e",
|
"source_sha256": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
"removed_modifiers": 0,
|
"removed_modifiers": 0,
|
||||||
"kind": "skinned",
|
"kind": "skinned",
|
||||||
"fps": 24.0,
|
"fps": 24.0,
|
||||||
|
|
@ -486,6 +486,6 @@
|
||||||
"meshes_without_uv": [],
|
"meshes_without_uv": [],
|
||||||
"triangles": 25282,
|
"triangles": 25282,
|
||||||
"fbx": "Assets/Luneraria/Art/Characters/aschenwerfer.fbx",
|
"fbx": "Assets/Luneraria/Art/Characters/aschenwerfer.fbx",
|
||||||
"fbx_bytes": 3234540,
|
"fbx_bytes": 3232540,
|
||||||
"ok": true
|
"ok": true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
491
Assets/Luneraria/Art/Characters/basaltbastion_meshy.export.json
Normal file
|
|
@ -0,0 +1,491 @@
|
||||||
|
{
|
||||||
|
"id": "basaltbastion_meshy",
|
||||||
|
"group": "Characters",
|
||||||
|
"source": "tools/meshy/build_figure.py",
|
||||||
|
"exporter_version": 11,
|
||||||
|
"blender": "5.2.2 LTS",
|
||||||
|
"fbx_settings": {
|
||||||
|
"use_selection": true,
|
||||||
|
"use_visible": false,
|
||||||
|
"use_active_collection": false,
|
||||||
|
"global_scale": 1.0,
|
||||||
|
"apply_unit_scale": true,
|
||||||
|
"apply_scale_options": "FBX_SCALE_UNITS",
|
||||||
|
"axis_forward": "Y",
|
||||||
|
"axis_up": "Z",
|
||||||
|
"bake_space_transform": false,
|
||||||
|
"object_types": [
|
||||||
|
"ARMATURE",
|
||||||
|
"EMPTY",
|
||||||
|
"MESH"
|
||||||
|
],
|
||||||
|
"use_mesh_modifiers": true,
|
||||||
|
"use_mesh_modifiers_render": true,
|
||||||
|
"mesh_smooth_type": "OFF",
|
||||||
|
"use_subsurf": false,
|
||||||
|
"use_mesh_edges": false,
|
||||||
|
"use_tspace": false,
|
||||||
|
"use_triangles": false,
|
||||||
|
"colors_type": "LINEAR",
|
||||||
|
"prioritize_active_color": true,
|
||||||
|
"use_custom_props": false,
|
||||||
|
"add_leaf_bones": false,
|
||||||
|
"primary_bone_axis": "Y",
|
||||||
|
"secondary_bone_axis": "X",
|
||||||
|
"use_armature_deform_only": true,
|
||||||
|
"armature_nodetype": "NULL",
|
||||||
|
"bake_anim": true,
|
||||||
|
"bake_anim_use_all_bones": true,
|
||||||
|
"bake_anim_use_nla_strips": false,
|
||||||
|
"bake_anim_use_all_actions": true,
|
||||||
|
"bake_anim_force_startend_keying": true,
|
||||||
|
"bake_anim_step": 1.0,
|
||||||
|
"bake_anim_simplify_factor": 0.0,
|
||||||
|
"path_mode": "STRIP",
|
||||||
|
"embed_textures": false,
|
||||||
|
"batch_mode": "OFF"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"check": "turn_applied",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "units_metric",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "METRIC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "unit_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_negative_scale",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "object_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "mesh_names_unique",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Basaltbastion_meshyBody_LOD0', 'Basaltbastion_meshyBody_LOD1']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "material_slots_filled",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "normals_unit_length",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_blend_shapes",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "triangles_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25178 fbx / 25178 godot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "one_armature",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Basaltbastion_meshyRig']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "single_root_bone",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone_name",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_count_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25 / 25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names_portable",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "skinned_meshes_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "clips_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "required_clips_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_mesh_names",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_triangles",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25178 / 25178"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_materials",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_bones",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_clips",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['ability', 'attack_a', 'attack_b', 'death', 'hit', 'idle', 'walk']"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"generator": {
|
||||||
|
"clips": {
|
||||||
|
"idle": {
|
||||||
|
"source": "Idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"walk": {
|
||||||
|
"source": "Slow_Orc_Walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
132.0
|
||||||
|
],
|
||||||
|
"seconds": 2.7917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"attack_a": {
|
||||||
|
"source": "Right_Hand_Sword_Slash",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
36
|
||||||
|
],
|
||||||
|
"seconds": 1.0417,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.4051
|
||||||
|
},
|
||||||
|
"attack_b": {
|
||||||
|
"source": "Punch_Forward_with_Both_Fists",
|
||||||
|
"frames": [
|
||||||
|
18,
|
||||||
|
56
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.4737
|
||||||
|
},
|
||||||
|
"hit": {
|
||||||
|
"source": "Hit_Reaction",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ability": {
|
||||||
|
"source": "Charged_Ground_Slam",
|
||||||
|
"frames": [
|
||||||
|
6,
|
||||||
|
64
|
||||||
|
],
|
||||||
|
"seconds": 1.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.7292
|
||||||
|
},
|
||||||
|
"death": {
|
||||||
|
"source": "dying_backwards",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
52.80000305175781
|
||||||
|
],
|
||||||
|
"seconds": 2.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0099,
|
||||||
|
"palette_gains": {
|
||||||
|
"rock": [
|
||||||
|
0.7852,
|
||||||
|
0.8903,
|
||||||
|
1.0126
|
||||||
|
],
|
||||||
|
"metal": [
|
||||||
|
1.8682,
|
||||||
|
1.5742,
|
||||||
|
0.7485
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": 0.009999999776482582,
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 20185,
|
||||||
|
"lod1_triangles": 4993,
|
||||||
|
"lod1_vertices": 2485,
|
||||||
|
"welded_triangles": 20185,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
},
|
||||||
|
"props": []
|
||||||
|
},
|
||||||
|
"inputs_sha256": {
|
||||||
|
"tools/meshy/g04/figure.json": "892798e08fced79757056488cf500ddf03f64582987a3e1e64addb9e2c90abbf",
|
||||||
|
"assets-source/meshy/g04/basaltbastion-skelett.glb": "b11b840bfae8bd157c1155945d4964ca31f7c36fc3043c2442c28e8ffc1f4807",
|
||||||
|
"assets-source/meshy/g04/basaltbastion-animationen.glb": "5e3dc878f1ac1de23f25cedf5e694f4f60a10929bebec6b0e38f6b86f8c79cfa"
|
||||||
|
},
|
||||||
|
"source_sha256": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
|
"removed_modifiers": 0,
|
||||||
|
"kind": "skinned",
|
||||||
|
"fps": 24.0,
|
||||||
|
"objects": 3,
|
||||||
|
"meshes": {
|
||||||
|
"Basaltbastion_meshyBody_LOD0": {
|
||||||
|
"mesh": "Basaltbastion_meshyBody_LOD0",
|
||||||
|
"triangles": 20185,
|
||||||
|
"vertices": 28837,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Basaltbastion"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-1.003,
|
||||||
|
0.0,
|
||||||
|
-0.4388
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
1.003,
|
||||||
|
1.764,
|
||||||
|
0.4388
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Basaltbastion_meshyBody_LOD1": {
|
||||||
|
"mesh": "Basaltbastion_meshyBody_LOD1",
|
||||||
|
"triangles": 4993,
|
||||||
|
"vertices": 2485,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Basaltbastion"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-1.0001,
|
||||||
|
-0.0,
|
||||||
|
-0.4387
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
1.0016,
|
||||||
|
1.7637,
|
||||||
|
0.4402
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"armatures": {
|
||||||
|
"Basaltbastion_meshyRig": {
|
||||||
|
"bones": [
|
||||||
|
"Root",
|
||||||
|
"Hips",
|
||||||
|
"Spine02",
|
||||||
|
"Spine01",
|
||||||
|
"Spine",
|
||||||
|
"neck",
|
||||||
|
"Head",
|
||||||
|
"head_end",
|
||||||
|
"headfront",
|
||||||
|
"LeftShoulder",
|
||||||
|
"LeftArm",
|
||||||
|
"LeftForeArm",
|
||||||
|
"LeftHand",
|
||||||
|
"RightShoulder",
|
||||||
|
"RightArm",
|
||||||
|
"RightForeArm",
|
||||||
|
"RightHand",
|
||||||
|
"LeftUpLeg",
|
||||||
|
"LeftLeg",
|
||||||
|
"LeftFoot",
|
||||||
|
"LeftToeBase",
|
||||||
|
"RightUpLeg",
|
||||||
|
"RightLeg",
|
||||||
|
"RightFoot",
|
||||||
|
"RightToeBase"
|
||||||
|
],
|
||||||
|
"roots": [
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"empties": {},
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-1.003,
|
||||||
|
-0.0,
|
||||||
|
-0.4388
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
1.003,
|
||||||
|
1.764,
|
||||||
|
0.4402
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"name": "ability",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
29.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.7292
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_a",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
25.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0417,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.4051
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_b",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.4737
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "death",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
53.0
|
||||||
|
],
|
||||||
|
"seconds": 2.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hit",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
12.0
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
67.0
|
||||||
|
],
|
||||||
|
"seconds": 2.7917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"expected_from_godot": {
|
||||||
|
"triangles": 25178,
|
||||||
|
"bones": 25,
|
||||||
|
"clips": [
|
||||||
|
"idle",
|
||||||
|
"walk",
|
||||||
|
"attack_a",
|
||||||
|
"attack_b",
|
||||||
|
"hit",
|
||||||
|
"ability",
|
||||||
|
"death"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"meshes_with_ngons": {},
|
||||||
|
"meshes_without_uv": [],
|
||||||
|
"triangles": 25178,
|
||||||
|
"fbx": "Assets/Luneraria/Art/Characters/basaltbastion_meshy.fbx",
|
||||||
|
"fbx_bytes": 3435820,
|
||||||
|
"ok": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d504fe7aa8bb746b2a01a860fa68558d
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Characters/basaltbastion_meshy.fbx
Normal file
337
Assets/Luneraria/Art/Characters/basaltbastion_meshy.fbx.meta
Normal file
|
|
@ -0,0 +1,337 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: aa5734da897ea44808385f37d34070bf
|
||||||
|
ModelImporter:
|
||||||
|
serializedVersion: 24300
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
materials:
|
||||||
|
materialImportMode: 2
|
||||||
|
materialName: 0
|
||||||
|
materialSearch: 1
|
||||||
|
materialLocation: 1
|
||||||
|
searchTexturesGlobally: 0
|
||||||
|
animations:
|
||||||
|
legacyGenerateAnimations: 4
|
||||||
|
bakeSimulation: 0
|
||||||
|
resampleCurves: 0
|
||||||
|
optimizeGameObjects: 0
|
||||||
|
removeConstantScaleCurves: 0
|
||||||
|
motionNodeName:
|
||||||
|
animationImportErrors:
|
||||||
|
animationImportWarnings:
|
||||||
|
animationRetargetingWarnings:
|
||||||
|
animationDoRetargetingWarnings: 0
|
||||||
|
importAnimatedCustomProperties: 0
|
||||||
|
importConstraints: 0
|
||||||
|
animationCompression: 0
|
||||||
|
animationRotationError: 0.5
|
||||||
|
animationPositionError: 0.5
|
||||||
|
animationScaleError: 0.5
|
||||||
|
animationWrapMode: 0
|
||||||
|
extraExposedTransformPaths: []
|
||||||
|
extraUserProperties: []
|
||||||
|
clipAnimations:
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: ability
|
||||||
|
takeName: Basaltbastion_meshyRig|ability
|
||||||
|
internalID: -5495293919160781032
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 29
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.6034925
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_a
|
||||||
|
takeName: Basaltbastion_meshyRig|attack_a
|
||||||
|
internalID: 1565449223295100875
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 25
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.38888356
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_b
|
||||||
|
takeName: Basaltbastion_meshyRig|attack_b
|
||||||
|
internalID: 3972096498202774343
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 24
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.4737
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: death
|
||||||
|
takeName: Basaltbastion_meshyRig|death
|
||||||
|
internalID: -4724392375424077161
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 53
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: hit
|
||||||
|
takeName: Basaltbastion_meshyRig|hit
|
||||||
|
internalID: -4714297317412057206
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 12
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: idle
|
||||||
|
takeName: Basaltbastion_meshyRig|idle
|
||||||
|
internalID: 9093657477581702130
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 96
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: walk
|
||||||
|
takeName: Basaltbastion_meshyRig|walk
|
||||||
|
internalID: -1455650782467671261
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 67
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
isReadable: 1
|
||||||
|
meshes:
|
||||||
|
lODScreenPercentages:
|
||||||
|
- 0.25
|
||||||
|
- 0.01
|
||||||
|
globalScale: 1
|
||||||
|
meshCompression: 0
|
||||||
|
addColliders: 0
|
||||||
|
useSRGBMaterialColor: 1
|
||||||
|
sortHierarchyByName: 1
|
||||||
|
importPhysicalCameras: 1
|
||||||
|
importVisibility: 0
|
||||||
|
importBlendShapes: 0
|
||||||
|
importCameras: 0
|
||||||
|
importLights: 0
|
||||||
|
nodeNameCollisionStrategy: 1
|
||||||
|
fileIdsGeneration: 2
|
||||||
|
swapUVChannels: 0
|
||||||
|
generateSecondaryUV: 0
|
||||||
|
useFileUnits: 1
|
||||||
|
keepQuads: 0
|
||||||
|
weldVertices: 1
|
||||||
|
bakeAxisConversion: 1
|
||||||
|
preserveHierarchy: 0
|
||||||
|
skinWeightsMode: 0
|
||||||
|
maxBonesPerVertex: 4
|
||||||
|
minBoneWeight: 0.001
|
||||||
|
optimizeBones: 1
|
||||||
|
generateMeshLods: 0
|
||||||
|
meshLodGenerationFlags: 0
|
||||||
|
maximumMeshLod: -1
|
||||||
|
meshOptimizationFlags: -1
|
||||||
|
indexFormat: 0
|
||||||
|
secondaryUVAngleDistortion: 8
|
||||||
|
secondaryUVAreaDistortion: 15.000001
|
||||||
|
secondaryUVHardAngle: 88
|
||||||
|
secondaryUVMarginMethod: 1
|
||||||
|
secondaryUVMinLightmapResolution: 40
|
||||||
|
secondaryUVMinObjectScale: 1
|
||||||
|
secondaryUVPackMargin: 4
|
||||||
|
useFileScale: 1
|
||||||
|
strictVertexDataChecks: 0
|
||||||
|
tangentSpace:
|
||||||
|
normalSmoothAngle: 60
|
||||||
|
normalImportMode: 0
|
||||||
|
tangentImportMode: 3
|
||||||
|
normalCalculationMode: 4
|
||||||
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||||
|
blendShapeNormalImportMode: 1
|
||||||
|
normalSmoothingSource: 0
|
||||||
|
referencedClips: []
|
||||||
|
importAnimation: 1
|
||||||
|
humanDescription:
|
||||||
|
serializedVersion: 3
|
||||||
|
human: []
|
||||||
|
skeleton: []
|
||||||
|
armTwist: 0.5
|
||||||
|
foreArmTwist: 0.5
|
||||||
|
upperLegTwist: 0.5
|
||||||
|
legTwist: 0.5
|
||||||
|
armStretch: 0.05
|
||||||
|
legStretch: 0.05
|
||||||
|
feetSpacing: 0
|
||||||
|
globalScale: 1
|
||||||
|
rootMotionBoneName:
|
||||||
|
hasTranslationDoF: 0
|
||||||
|
hasExtraRoot: 0
|
||||||
|
skeletonHasParents: 1
|
||||||
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||||
|
autoGenerateAvatarMappingIfUnspecified: 1
|
||||||
|
animationType: 2
|
||||||
|
humanoidOversampling: 1
|
||||||
|
avatarSetup: 1
|
||||||
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||||
|
importBlendShapeDeformPercent: 1
|
||||||
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||||
|
additionalBone: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
596
Assets/Luneraria/Art/Characters/brunhild.export.json
Normal file
|
|
@ -0,0 +1,596 @@
|
||||||
|
{
|
||||||
|
"id": "brunhild",
|
||||||
|
"group": "Characters",
|
||||||
|
"source": "tools/meshy/build_figure.py",
|
||||||
|
"exporter_version": 11,
|
||||||
|
"blender": "5.2.2 LTS",
|
||||||
|
"fbx_settings": {
|
||||||
|
"use_selection": true,
|
||||||
|
"use_visible": false,
|
||||||
|
"use_active_collection": false,
|
||||||
|
"global_scale": 1.0,
|
||||||
|
"apply_unit_scale": true,
|
||||||
|
"apply_scale_options": "FBX_SCALE_UNITS",
|
||||||
|
"axis_forward": "Y",
|
||||||
|
"axis_up": "Z",
|
||||||
|
"bake_space_transform": false,
|
||||||
|
"object_types": [
|
||||||
|
"ARMATURE",
|
||||||
|
"EMPTY",
|
||||||
|
"MESH"
|
||||||
|
],
|
||||||
|
"use_mesh_modifiers": true,
|
||||||
|
"use_mesh_modifiers_render": true,
|
||||||
|
"mesh_smooth_type": "OFF",
|
||||||
|
"use_subsurf": false,
|
||||||
|
"use_mesh_edges": false,
|
||||||
|
"use_tspace": false,
|
||||||
|
"use_triangles": false,
|
||||||
|
"colors_type": "LINEAR",
|
||||||
|
"prioritize_active_color": true,
|
||||||
|
"use_custom_props": false,
|
||||||
|
"add_leaf_bones": false,
|
||||||
|
"primary_bone_axis": "Y",
|
||||||
|
"secondary_bone_axis": "X",
|
||||||
|
"use_armature_deform_only": true,
|
||||||
|
"armature_nodetype": "NULL",
|
||||||
|
"bake_anim": true,
|
||||||
|
"bake_anim_use_all_bones": true,
|
||||||
|
"bake_anim_use_nla_strips": false,
|
||||||
|
"bake_anim_use_all_actions": true,
|
||||||
|
"bake_anim_force_startend_keying": true,
|
||||||
|
"bake_anim_step": 1.0,
|
||||||
|
"bake_anim_simplify_factor": 0.0,
|
||||||
|
"path_mode": "STRIP",
|
||||||
|
"embed_textures": false,
|
||||||
|
"batch_mode": "OFF"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"check": "turn_applied",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "units_metric",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "METRIC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "unit_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_negative_scale",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "object_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "mesh_names_unique",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['BrunhildBody_LOD0', 'BrunhildBody_LOD1', 'BrunhildSpeer_LOD0', 'BrunhildSpeer_LOD1']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "material_slots_filled",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "normals_unit_length",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_blend_shapes",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "triangles_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "28706 fbx / 28706 godot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "one_armature",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['BrunhildRig']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "single_root_bone",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone_name",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_count_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25 / 25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names_portable",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "skinned_meshes_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "clips_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "required_clips_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_mesh_names",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_triangles",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "28706 / 28706"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_materials",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_bones",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_clips",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['ability', 'attack_a', 'attack_b', 'death', 'hit', 'idle', 'ultimate', 'walk']"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"generator": {
|
||||||
|
"clips": {
|
||||||
|
"idle": {
|
||||||
|
"source": "Idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"walk": {
|
||||||
|
"source": "Walk_Fight_Forward",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
40.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"attack_a": {
|
||||||
|
"source": "Thrust_Slash",
|
||||||
|
"frames": [
|
||||||
|
4,
|
||||||
|
30
|
||||||
|
],
|
||||||
|
"seconds": 0.9583,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.516
|
||||||
|
},
|
||||||
|
"attack_b": {
|
||||||
|
"source": "Charged_Upward_Slash",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
45
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.5556
|
||||||
|
},
|
||||||
|
"hit": {
|
||||||
|
"source": "Hit_Reaction",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
14
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ability": {
|
||||||
|
"source": "Over_Shoulder_Throw",
|
||||||
|
"frames": [
|
||||||
|
50,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.64
|
||||||
|
},
|
||||||
|
"death": {
|
||||||
|
"source": "Shot_and_Fall_Backward",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
84.0
|
||||||
|
],
|
||||||
|
"seconds": 2.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ultimate": {
|
||||||
|
"source": "Basic_Jump",
|
||||||
|
"frames": [
|
||||||
|
20,
|
||||||
|
80
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.775
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0,
|
||||||
|
"palette_gains": {},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": 0.009999999776482582,
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 20663,
|
||||||
|
"lod1_triangles": 4999,
|
||||||
|
"lod1_vertices": 2468,
|
||||||
|
"welded_triangles": 20663,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
},
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"name": "BrunhildSpeer",
|
||||||
|
"triangles": 2545,
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0,
|
||||||
|
"palette_gains": {},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 2545,
|
||||||
|
"lod1_triangles": 499,
|
||||||
|
"lod1_vertices": 252,
|
||||||
|
"welded_triangles": 2545,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"inputs_sha256": {
|
||||||
|
"tools/meshy/brunhild/figure.json": "19ccf5ca996bba99f8681c8b02ce221f7700175f7d66b820c5a953017e2305d9",
|
||||||
|
"assets-source/meshy/brunhild/brunhild-skelett.glb": "f089ffcec953c76f03997cdc19f3eb2f126b7199e9698e4e0a9d5654fca1dd18",
|
||||||
|
"assets-source/meshy/brunhild/brunhild-animationen.glb": "aca3433fec67155457f05046880e30772f9fba21ff1789912acf700f26ca7bfc",
|
||||||
|
"assets-source/meshy/brunhild/brunhild-speer.glb": "a7637375a32752913dc3929fe099d3c6e2e5d75a0f0665d0244af1637459f364"
|
||||||
|
},
|
||||||
|
"source_sha256": "5a0df3fc4ab4228c0b631a038098db9e79c833ae69ddd2457a8062eb1b493283",
|
||||||
|
"removed_modifiers": 0,
|
||||||
|
"kind": "skinned",
|
||||||
|
"fps": 24.0,
|
||||||
|
"objects": 5,
|
||||||
|
"meshes": {
|
||||||
|
"BrunhildBody_LOD0": {
|
||||||
|
"mesh": "BrunhildBody_LOD0",
|
||||||
|
"triangles": 20663,
|
||||||
|
"vertices": 28942,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Brunhild"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.4473,
|
||||||
|
0.0,
|
||||||
|
-0.2325
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.4473,
|
||||||
|
1.8,
|
||||||
|
0.2325
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BrunhildSpeer_LOD0": {
|
||||||
|
"mesh": "BrunhildSpeer_LOD0",
|
||||||
|
"triangles": 2545,
|
||||||
|
"vertices": 3856,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_BrunhildSpeer"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
0.1895,
|
||||||
|
0.7103,
|
||||||
|
-0.6358
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.5065,
|
||||||
|
1.2324,
|
||||||
|
1.2914
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BrunhildBody_LOD1": {
|
||||||
|
"mesh": "BrunhildBody_LOD1",
|
||||||
|
"triangles": 4999,
|
||||||
|
"vertices": 2468,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Brunhild"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.4478,
|
||||||
|
0.0007,
|
||||||
|
-0.2335
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.4466,
|
||||||
|
1.8008,
|
||||||
|
0.2343
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BrunhildSpeer_LOD1": {
|
||||||
|
"mesh": "BrunhildSpeer_LOD1",
|
||||||
|
"triangles": 499,
|
||||||
|
"vertices": 252,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_BrunhildSpeer"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
0.189,
|
||||||
|
0.7108,
|
||||||
|
-0.6379
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.5086,
|
||||||
|
1.2317,
|
||||||
|
1.2931
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"armatures": {
|
||||||
|
"BrunhildRig": {
|
||||||
|
"bones": [
|
||||||
|
"Root",
|
||||||
|
"Hips",
|
||||||
|
"Spine02",
|
||||||
|
"Spine01",
|
||||||
|
"Spine",
|
||||||
|
"neck",
|
||||||
|
"Head",
|
||||||
|
"head_end",
|
||||||
|
"headfront",
|
||||||
|
"LeftShoulder",
|
||||||
|
"LeftArm",
|
||||||
|
"LeftForeArm",
|
||||||
|
"LeftHand",
|
||||||
|
"RightShoulder",
|
||||||
|
"RightArm",
|
||||||
|
"RightForeArm",
|
||||||
|
"RightHand",
|
||||||
|
"LeftUpLeg",
|
||||||
|
"LeftLeg",
|
||||||
|
"LeftFoot",
|
||||||
|
"LeftToeBase",
|
||||||
|
"RightUpLeg",
|
||||||
|
"RightLeg",
|
||||||
|
"RightFoot",
|
||||||
|
"RightToeBase"
|
||||||
|
],
|
||||||
|
"roots": [
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"empties": {},
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.4478,
|
||||||
|
0.0,
|
||||||
|
-0.6379
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.5086,
|
||||||
|
1.8008,
|
||||||
|
1.2931
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"name": "ability",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_a",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
23.0
|
||||||
|
],
|
||||||
|
"seconds": 0.9583,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.516
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_b",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.5556
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "death",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
58.0
|
||||||
|
],
|
||||||
|
"seconds": 2.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hit",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
12.0
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ultimate",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
31.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.775
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
31.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"expected_from_godot": {
|
||||||
|
"triangles": 28706,
|
||||||
|
"bones": 25,
|
||||||
|
"clips": [
|
||||||
|
"idle",
|
||||||
|
"walk",
|
||||||
|
"attack_a",
|
||||||
|
"attack_b",
|
||||||
|
"hit",
|
||||||
|
"ability",
|
||||||
|
"death",
|
||||||
|
"ultimate"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"meshes_with_ngons": {},
|
||||||
|
"meshes_without_uv": [],
|
||||||
|
"triangles": 28706,
|
||||||
|
"fbx": "Assets/Luneraria/Art/Characters/brunhild.fbx",
|
||||||
|
"fbx_bytes": 3796828,
|
||||||
|
"ok": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76fa6bac90ff045589eba33ed23ef0dd
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Characters/brunhild.fbx
Normal file
373
Assets/Luneraria/Art/Characters/brunhild.fbx.meta
Normal file
|
|
@ -0,0 +1,373 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 29d894f788c5f4fbbacf819091c19542
|
||||||
|
ModelImporter:
|
||||||
|
serializedVersion: 24300
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
materials:
|
||||||
|
materialImportMode: 2
|
||||||
|
materialName: 0
|
||||||
|
materialSearch: 1
|
||||||
|
materialLocation: 1
|
||||||
|
searchTexturesGlobally: 0
|
||||||
|
animations:
|
||||||
|
legacyGenerateAnimations: 4
|
||||||
|
bakeSimulation: 0
|
||||||
|
resampleCurves: 0
|
||||||
|
optimizeGameObjects: 0
|
||||||
|
removeConstantScaleCurves: 0
|
||||||
|
motionNodeName:
|
||||||
|
animationImportErrors:
|
||||||
|
animationImportWarnings:
|
||||||
|
animationRetargetingWarnings:
|
||||||
|
animationDoRetargetingWarnings: 0
|
||||||
|
importAnimatedCustomProperties: 0
|
||||||
|
importConstraints: 0
|
||||||
|
animationCompression: 0
|
||||||
|
animationRotationError: 0.5
|
||||||
|
animationPositionError: 0.5
|
||||||
|
animationScaleError: 0.5
|
||||||
|
animationWrapMode: 0
|
||||||
|
extraExposedTransformPaths: []
|
||||||
|
extraUserProperties: []
|
||||||
|
clipAnimations:
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: ability
|
||||||
|
takeName: BrunhildRig|ability
|
||||||
|
internalID: 3282932801577121271
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 24
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.64
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_a
|
||||||
|
takeName: BrunhildRig|attack_a
|
||||||
|
internalID: -4088893210095135303
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 23
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.5384535
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_b
|
||||||
|
takeName: BrunhildRig|attack_b
|
||||||
|
internalID: -3393105429929367649
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 24
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.5556
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: death
|
||||||
|
takeName: BrunhildRig|death
|
||||||
|
internalID: -575409383583182742
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 58
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: hit
|
||||||
|
takeName: BrunhildRig|hit
|
||||||
|
internalID: 4649535545551490279
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 12
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: idle
|
||||||
|
takeName: BrunhildRig|idle
|
||||||
|
internalID: -7637435868926338065
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 96
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: ultimate
|
||||||
|
takeName: BrunhildRig|ultimate
|
||||||
|
internalID: 7528617810713444434
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 31
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.5999845
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: walk
|
||||||
|
takeName: BrunhildRig|walk
|
||||||
|
internalID: -759485606388579005
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 31
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
isReadable: 1
|
||||||
|
meshes:
|
||||||
|
lODScreenPercentages:
|
||||||
|
- 0.25
|
||||||
|
- 0.01
|
||||||
|
globalScale: 1
|
||||||
|
meshCompression: 0
|
||||||
|
addColliders: 0
|
||||||
|
useSRGBMaterialColor: 1
|
||||||
|
sortHierarchyByName: 1
|
||||||
|
importPhysicalCameras: 1
|
||||||
|
importVisibility: 0
|
||||||
|
importBlendShapes: 0
|
||||||
|
importCameras: 0
|
||||||
|
importLights: 0
|
||||||
|
nodeNameCollisionStrategy: 1
|
||||||
|
fileIdsGeneration: 2
|
||||||
|
swapUVChannels: 0
|
||||||
|
generateSecondaryUV: 0
|
||||||
|
useFileUnits: 1
|
||||||
|
keepQuads: 0
|
||||||
|
weldVertices: 1
|
||||||
|
bakeAxisConversion: 1
|
||||||
|
preserveHierarchy: 0
|
||||||
|
skinWeightsMode: 0
|
||||||
|
maxBonesPerVertex: 4
|
||||||
|
minBoneWeight: 0.001
|
||||||
|
optimizeBones: 1
|
||||||
|
generateMeshLods: 0
|
||||||
|
meshLodGenerationFlags: 0
|
||||||
|
maximumMeshLod: -1
|
||||||
|
meshOptimizationFlags: -1
|
||||||
|
indexFormat: 0
|
||||||
|
secondaryUVAngleDistortion: 8
|
||||||
|
secondaryUVAreaDistortion: 15.000001
|
||||||
|
secondaryUVHardAngle: 88
|
||||||
|
secondaryUVMarginMethod: 1
|
||||||
|
secondaryUVMinLightmapResolution: 40
|
||||||
|
secondaryUVMinObjectScale: 1
|
||||||
|
secondaryUVPackMargin: 4
|
||||||
|
useFileScale: 1
|
||||||
|
strictVertexDataChecks: 0
|
||||||
|
tangentSpace:
|
||||||
|
normalSmoothAngle: 60
|
||||||
|
normalImportMode: 0
|
||||||
|
tangentImportMode: 3
|
||||||
|
normalCalculationMode: 4
|
||||||
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||||
|
blendShapeNormalImportMode: 1
|
||||||
|
normalSmoothingSource: 0
|
||||||
|
referencedClips: []
|
||||||
|
importAnimation: 1
|
||||||
|
humanDescription:
|
||||||
|
serializedVersion: 3
|
||||||
|
human: []
|
||||||
|
skeleton: []
|
||||||
|
armTwist: 0.5
|
||||||
|
foreArmTwist: 0.5
|
||||||
|
upperLegTwist: 0.5
|
||||||
|
legTwist: 0.5
|
||||||
|
armStretch: 0.05
|
||||||
|
legStretch: 0.05
|
||||||
|
feetSpacing: 0
|
||||||
|
globalScale: 1
|
||||||
|
rootMotionBoneName:
|
||||||
|
hasTranslationDoF: 0
|
||||||
|
hasExtraRoot: 0
|
||||||
|
skeletonHasParents: 1
|
||||||
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||||
|
autoGenerateAvatarMappingIfUnspecified: 1
|
||||||
|
animationType: 2
|
||||||
|
humanoidOversampling: 1
|
||||||
|
avatarSetup: 1
|
||||||
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||||
|
importBlendShapeDeformPercent: 1
|
||||||
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||||
|
additionalBone: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -169,32 +169,32 @@
|
||||||
"height": 1.3865,
|
"height": 1.3865,
|
||||||
"leg_x": 0.4311,
|
"leg_x": 0.4311,
|
||||||
"weapon_z": 1.1316,
|
"weapon_z": 1.1316,
|
||||||
"tip_y": -1.2943,
|
"tip_y": -0.9734,
|
||||||
"back_y": 1.232,
|
"back_y": 0.9266,
|
||||||
"bow_x": 0.9306,
|
"bow_x": 0.9306,
|
||||||
"bow_y": 0.0911
|
"bow_y": 0.0685
|
||||||
},
|
},
|
||||||
"rig_scale": 0.9671,
|
"rig_scale": 0.9671,
|
||||||
"weights": {
|
"weights": {
|
||||||
"Pelvis": 3922,
|
"Pelvis": 4782,
|
||||||
"Spine": 1159,
|
"Spine": 1616,
|
||||||
"Weapon": 9305,
|
"Weapon": 7790,
|
||||||
"Gear": 823,
|
"Gear": 957,
|
||||||
"Draw": 0,
|
"Draw": 0,
|
||||||
"Bolt": 0,
|
"Bolt": 0,
|
||||||
"Quarrel": 284,
|
"Quarrel": 227,
|
||||||
"Limb.L": 221,
|
"Limb.L": 325,
|
||||||
"LimbTip.L": 397,
|
"LimbTip.L": 387,
|
||||||
"Limb.R": 190,
|
"Limb.R": 249,
|
||||||
"LimbTip.R": 428,
|
"LimbTip.R": 417,
|
||||||
"Thigh.L": 2413,
|
"Thigh.L": 2435,
|
||||||
"Shin.L": 2104,
|
"Shin.L": 1968,
|
||||||
"Tarsus.L": 598,
|
"Tarsus.L": 759,
|
||||||
"Foot.L": 647,
|
"Foot.L": 588,
|
||||||
"Thigh.R": 2289,
|
"Thigh.R": 2309,
|
||||||
"Shin.R": 2128,
|
"Shin.R": 1993,
|
||||||
"Tarsus.R": 709,
|
"Tarsus.R": 873,
|
||||||
"Foot.R": 649
|
"Foot.R": 591
|
||||||
},
|
},
|
||||||
"clips": {
|
"clips": {
|
||||||
"ability": {
|
"ability": {
|
||||||
|
|
@ -261,12 +261,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"inputs_sha256": {
|
"inputs_sha256": {
|
||||||
"tools/meshy/build_figure.py": "4d5cdab415e4bfa97abe420f7457d4e1cddd67b9a76c23ccb6f9313a2fd8ea4e",
|
"tools/meshy/build_figure.py": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
"tools/meshy/g06/figure.json": "157eeb4a1737ba23381fdf7665b73756b6a7427b02fe8074a1e15d206d15c81e",
|
"tools/meshy/g06/figure.json": "00719cd095645ea43c939560bd946d9ff688dfc7f6f2ac9de3b84e4c57736993",
|
||||||
"assets-source/meshy/g06/glasballiste-modell.glb": "1e7efc1943c3c622e122f68d9dc954c3ae262a13eed66fecf1c8b26d97bcbb5a",
|
"assets-source/meshy/g06/glasballiste-modell.glb": "1e7efc1943c3c622e122f68d9dc954c3ae262a13eed66fecf1c8b26d97bcbb5a",
|
||||||
"assets-source/meshy/g06/glasballiste-rig-phase19.blend": "3fae885ac47e031fc6cadd6fb5010774405548eca9a5d96e7e1a4859e7f7d590"
|
"assets-source/meshy/g06/glasballiste-rig-phase19.blend": "3fae885ac47e031fc6cadd6fb5010774405548eca9a5d96e7e1a4859e7f7d590"
|
||||||
},
|
},
|
||||||
"source_sha256": "e67cdc167c162edddaa8e7d03f92e4574bf1c04ff0bbc60727ca49691e4d0b80",
|
"source_sha256": "ff14c7425b5099b580fbd66aedc4d983d6433679f495092006d358c30e9b6123",
|
||||||
"removed_modifiers": 0,
|
"removed_modifiers": 0,
|
||||||
"kind": "skinned",
|
"kind": "skinned",
|
||||||
"fps": 24.0,
|
"fps": 24.0,
|
||||||
|
|
@ -300,12 +300,12 @@
|
||||||
"min": [
|
"min": [
|
||||||
-0.9194,
|
-0.9194,
|
||||||
0.0,
|
0.0,
|
||||||
-1.232
|
-0.9266
|
||||||
],
|
],
|
||||||
"max": [
|
"max": [
|
||||||
0.9306,
|
0.9306,
|
||||||
1.3865,
|
1.3865,
|
||||||
1.2943
|
0.9734
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -335,14 +335,14 @@
|
||||||
],
|
],
|
||||||
"bounds_unity": {
|
"bounds_unity": {
|
||||||
"min": [
|
"min": [
|
||||||
-0.9115,
|
-0.9116,
|
||||||
-0.0,
|
-0.0002,
|
||||||
-1.2321
|
-0.9272
|
||||||
],
|
],
|
||||||
"max": [
|
"max": [
|
||||||
0.9199,
|
0.92,
|
||||||
1.389,
|
1.389,
|
||||||
1.2979
|
0.9769
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -380,13 +380,13 @@
|
||||||
"bounds_unity": {
|
"bounds_unity": {
|
||||||
"min": [
|
"min": [
|
||||||
-0.9194,
|
-0.9194,
|
||||||
-0.0,
|
-0.0002,
|
||||||
-1.2321
|
-0.9272
|
||||||
],
|
],
|
||||||
"max": [
|
"max": [
|
||||||
0.9306,
|
0.9306,
|
||||||
1.389,
|
1.389,
|
||||||
1.2979
|
0.9769
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"clips": [
|
"clips": [
|
||||||
|
|
@ -478,6 +478,6 @@
|
||||||
"meshes_without_uv": [],
|
"meshes_without_uv": [],
|
||||||
"triangles": 25392,
|
"triangles": 25392,
|
||||||
"fbx": "Assets/Luneraria/Art/Characters/glasballiste_meshy.fbx",
|
"fbx": "Assets/Luneraria/Art/Characters/glasballiste_meshy.fbx",
|
||||||
"fbx_bytes": 2783260,
|
"fbx_bytes": 2784988,
|
||||||
"ok": true
|
"ok": true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -260,11 +260,11 @@
|
||||||
"props": []
|
"props": []
|
||||||
},
|
},
|
||||||
"inputs_sha256": {
|
"inputs_sha256": {
|
||||||
"tools/meshy/g09/figure.json": "b8fbf09467fb1a5bb4d21f460e3fb461036b271ef572b2763f2f83de95ed00a4",
|
"tools/meshy/g09/figure.json": "422b877a0bdea26ef5686a13501e79137bc54ed0769e1c05ccd1fc1e6f551c8e",
|
||||||
"assets-source/meshy/g09/herdhueter-skelett.glb": "713603b1de0beb153981506678d6715307b5b251e9354fbcda2658a86660c0c4",
|
"assets-source/meshy/g09/herdhueter-skelett.glb": "713603b1de0beb153981506678d6715307b5b251e9354fbcda2658a86660c0c4",
|
||||||
"assets-source/meshy/g09/herdhueter-animationen.glb": "c7a5c7338c29a2eb316fe650ca3b708ea533c8d84c07f9fa9d865351eefcce6b"
|
"assets-source/meshy/g09/herdhueter-animationen.glb": "c7a5c7338c29a2eb316fe650ca3b708ea533c8d84c07f9fa9d865351eefcce6b"
|
||||||
},
|
},
|
||||||
"source_sha256": "4d5cdab415e4bfa97abe420f7457d4e1cddd67b9a76c23ccb6f9313a2fd8ea4e",
|
"source_sha256": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
"removed_modifiers": 0,
|
"removed_modifiers": 0,
|
||||||
"kind": "skinned",
|
"kind": "skinned",
|
||||||
"fps": 24.0,
|
"fps": 24.0,
|
||||||
|
|
@ -481,6 +481,6 @@
|
||||||
"meshes_without_uv": [],
|
"meshes_without_uv": [],
|
||||||
"triangles": 25139,
|
"triangles": 25139,
|
||||||
"fbx": "Assets/Luneraria/Art/Characters/herdhueter.fbx",
|
"fbx": "Assets/Luneraria/Art/Characters/herdhueter.fbx",
|
||||||
"fbx_bytes": 3170028,
|
"fbx_bytes": 3166988,
|
||||||
"ok": true
|
"ok": true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -265,11 +265,11 @@
|
||||||
"props": []
|
"props": []
|
||||||
},
|
},
|
||||||
"inputs_sha256": {
|
"inputs_sha256": {
|
||||||
"tools/meshy/g08/figure.json": "dcc6a39adf61d5815555a7abc2f99e3da6b493a0e47c65e21bf1d2e8553b961b",
|
"tools/meshy/g08/figure.json": "fa9ab63b81d91063a41be5bfd06e8b3fbcef2fc38b06ff65eee5da6e495189f7",
|
||||||
"assets-source/meshy/g08/kraterrufer-skelett.glb": "b2bd4f91696195b1afeb8a8d7b6fe777eb59785257100654f56fb71e4936923f",
|
"assets-source/meshy/g08/kraterrufer-skelett.glb": "b2bd4f91696195b1afeb8a8d7b6fe777eb59785257100654f56fb71e4936923f",
|
||||||
"assets-source/meshy/g08/kraterrufer-animationen.glb": "cb303a4a5023804e81c28af464cbcb69bb22171ece826c3b5d84023452a085b8"
|
"assets-source/meshy/g08/kraterrufer-animationen.glb": "cb303a4a5023804e81c28af464cbcb69bb22171ece826c3b5d84023452a085b8"
|
||||||
},
|
},
|
||||||
"source_sha256": "4d5cdab415e4bfa97abe420f7457d4e1cddd67b9a76c23ccb6f9313a2fd8ea4e",
|
"source_sha256": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
"removed_modifiers": 0,
|
"removed_modifiers": 0,
|
||||||
"kind": "skinned",
|
"kind": "skinned",
|
||||||
"fps": 24.0,
|
"fps": 24.0,
|
||||||
|
|
@ -486,6 +486,6 @@
|
||||||
"meshes_without_uv": [],
|
"meshes_without_uv": [],
|
||||||
"triangles": 25500,
|
"triangles": 25500,
|
||||||
"fbx": "Assets/Luneraria/Art/Characters/kraterrufer.fbx",
|
"fbx": "Assets/Luneraria/Art/Characters/kraterrufer.fbx",
|
||||||
"fbx_bytes": 3339692,
|
"fbx_bytes": 3337532,
|
||||||
"ok": true
|
"ok": true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -261,14 +261,15 @@
|
||||||
"lod1_vertices": 2505,
|
"lod1_vertices": 2505,
|
||||||
"welded_triangles": 20145,
|
"welded_triangles": 20145,
|
||||||
"lod0_screen": 0.2
|
"lod0_screen": 0.2
|
||||||
}
|
},
|
||||||
|
"props": []
|
||||||
},
|
},
|
||||||
"inputs_sha256": {
|
"inputs_sha256": {
|
||||||
"tools/meshy/g03/figure.json": "6934efc31f06faeafa189ba5f399b66d1c6662871aa9fce0e6b6c44a1add9dd8",
|
"tools/meshy/g03/figure.json": "e42f13c9f70259afabc6cae4a4517b7ed5921b12639e3d52119136204de11a58",
|
||||||
"assets-source/meshy/g03/schlackenwacht-skelett.glb": "0c6477bdcb262c36b5df2d7de1580742ea2dc6f51aa7259ef4273c97f9bb7b29",
|
"assets-source/meshy/g03/schlackenwacht-skelett.glb": "0c6477bdcb262c36b5df2d7de1580742ea2dc6f51aa7259ef4273c97f9bb7b29",
|
||||||
"assets-source/meshy/g03/schlackenwacht-animationen.glb": "fdde8ad1b5ef713d4df1beb2c307054e1c83eaf552c8ddd986b11698aa159ec4"
|
"assets-source/meshy/g03/schlackenwacht-animationen.glb": "fdde8ad1b5ef713d4df1beb2c307054e1c83eaf552c8ddd986b11698aa159ec4"
|
||||||
},
|
},
|
||||||
"source_sha256": "9eb17a4e3dc7029b7031f3be85f6676877c521788835137eb199c352c5b35aa4",
|
"source_sha256": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
"removed_modifiers": 0,
|
"removed_modifiers": 0,
|
||||||
"kind": "skinned",
|
"kind": "skinned",
|
||||||
"fps": 24.0,
|
"fps": 24.0,
|
||||||
|
|
@ -485,6 +486,6 @@
|
||||||
"meshes_without_uv": [],
|
"meshes_without_uv": [],
|
||||||
"triangles": 25142,
|
"triangles": 25142,
|
||||||
"fbx": "Assets/Luneraria/Art/Characters/schlackenwacht.fbx",
|
"fbx": "Assets/Luneraria/Art/Characters/schlackenwacht.fbx",
|
||||||
"fbx_bytes": 3268972,
|
"fbx_bytes": 3266956,
|
||||||
"ok": true
|
"ok": true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
486
Assets/Luneraria/Art/Characters/sonnenesse.export.json
Normal file
|
|
@ -0,0 +1,486 @@
|
||||||
|
{
|
||||||
|
"id": "sonnenesse",
|
||||||
|
"group": "Characters",
|
||||||
|
"source": "tools/meshy/build_figure.py",
|
||||||
|
"exporter_version": 11,
|
||||||
|
"blender": "5.2.2 LTS",
|
||||||
|
"fbx_settings": {
|
||||||
|
"use_selection": true,
|
||||||
|
"use_visible": false,
|
||||||
|
"use_active_collection": false,
|
||||||
|
"global_scale": 1.0,
|
||||||
|
"apply_unit_scale": true,
|
||||||
|
"apply_scale_options": "FBX_SCALE_UNITS",
|
||||||
|
"axis_forward": "Y",
|
||||||
|
"axis_up": "Z",
|
||||||
|
"bake_space_transform": false,
|
||||||
|
"object_types": [
|
||||||
|
"ARMATURE",
|
||||||
|
"EMPTY",
|
||||||
|
"MESH"
|
||||||
|
],
|
||||||
|
"use_mesh_modifiers": true,
|
||||||
|
"use_mesh_modifiers_render": true,
|
||||||
|
"mesh_smooth_type": "OFF",
|
||||||
|
"use_subsurf": false,
|
||||||
|
"use_mesh_edges": false,
|
||||||
|
"use_tspace": false,
|
||||||
|
"use_triangles": false,
|
||||||
|
"colors_type": "LINEAR",
|
||||||
|
"prioritize_active_color": true,
|
||||||
|
"use_custom_props": false,
|
||||||
|
"add_leaf_bones": false,
|
||||||
|
"primary_bone_axis": "Y",
|
||||||
|
"secondary_bone_axis": "X",
|
||||||
|
"use_armature_deform_only": true,
|
||||||
|
"armature_nodetype": "NULL",
|
||||||
|
"bake_anim": true,
|
||||||
|
"bake_anim_use_all_bones": true,
|
||||||
|
"bake_anim_use_nla_strips": false,
|
||||||
|
"bake_anim_use_all_actions": true,
|
||||||
|
"bake_anim_force_startend_keying": true,
|
||||||
|
"bake_anim_step": 1.0,
|
||||||
|
"bake_anim_simplify_factor": 0.0,
|
||||||
|
"path_mode": "STRIP",
|
||||||
|
"embed_textures": false,
|
||||||
|
"batch_mode": "OFF"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"check": "turn_applied",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "units_metric",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "METRIC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "unit_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_negative_scale",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "object_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "mesh_names_unique",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['SonnenesseBody_LOD0', 'SonnenesseBody_LOD1']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "material_slots_filled",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "normals_unit_length",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_blend_shapes",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "triangles_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25460 fbx / 25460 godot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "one_armature",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['SonnenesseRig']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "single_root_bone",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone_name",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_count_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25 / 25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names_portable",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "skinned_meshes_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "clips_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "required_clips_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_mesh_names",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_triangles",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25460 / 25460"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_materials",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_bones",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_clips",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['ability', 'attack_a', 'attack_b', 'death', 'hit', 'idle', 'walk']"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"generator": {
|
||||||
|
"clips": {
|
||||||
|
"idle": {
|
||||||
|
"source": "Idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"walk": {
|
||||||
|
"source": "Slow_Orc_Walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
132.0
|
||||||
|
],
|
||||||
|
"seconds": 2.7917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"attack_a": {
|
||||||
|
"source": "mage_soell_cast",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
54.400001525878906
|
||||||
|
],
|
||||||
|
"seconds": 1.0833,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.3585
|
||||||
|
},
|
||||||
|
"attack_b": {
|
||||||
|
"source": "Over_Shoulder_Throw",
|
||||||
|
"frames": [
|
||||||
|
4,
|
||||||
|
30
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.6538
|
||||||
|
},
|
||||||
|
"hit": {
|
||||||
|
"source": "Hit_Reaction",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ability": {
|
||||||
|
"source": "Charged_Spell_Cast",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
64.0
|
||||||
|
],
|
||||||
|
"seconds": 1.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.9961
|
||||||
|
},
|
||||||
|
"death": {
|
||||||
|
"source": "dying_backwards",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
52.80000305175781
|
||||||
|
],
|
||||||
|
"seconds": 2.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0355,
|
||||||
|
"palette_gains": {
|
||||||
|
"metal": [
|
||||||
|
1.6395,
|
||||||
|
1.5468,
|
||||||
|
0.8649
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": 0.009999999776482582,
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 20463,
|
||||||
|
"lod1_triangles": 4997,
|
||||||
|
"lod1_vertices": 2452,
|
||||||
|
"welded_triangles": 20463,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
},
|
||||||
|
"props": []
|
||||||
|
},
|
||||||
|
"inputs_sha256": {
|
||||||
|
"tools/meshy/g10/figure.json": "f0b3a72d68b713b168444c318abee3ad1400c902f304b1fb0a8f2c2a96f693ab",
|
||||||
|
"assets-source/meshy/g10/sonnenesse-skelett.glb": "103c4ef8eda9f180343938a69e2950a0dc554eed436ef5ebc1536b35fc1f887a",
|
||||||
|
"assets-source/meshy/g10/sonnenesse-animationen.glb": "9f9b4495a0edf06f59860c2df95ba247d112654cfefa6ec5c6340298c5ba46d6"
|
||||||
|
},
|
||||||
|
"source_sha256": "c933c6a13c2938f90f3eb063bcabb98ffddd9ab2deb55e808c32009ab2965bf3",
|
||||||
|
"removed_modifiers": 0,
|
||||||
|
"kind": "skinned",
|
||||||
|
"fps": 24.0,
|
||||||
|
"objects": 3,
|
||||||
|
"meshes": {
|
||||||
|
"SonnenesseBody_LOD0": {
|
||||||
|
"mesh": "SonnenesseBody_LOD0",
|
||||||
|
"triangles": 20463,
|
||||||
|
"vertices": 26659,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Sonnenesse"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.8575,
|
||||||
|
0.0,
|
||||||
|
-0.4866
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.8575,
|
||||||
|
1.6,
|
||||||
|
0.4866
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SonnenesseBody_LOD1": {
|
||||||
|
"mesh": "SonnenesseBody_LOD1",
|
||||||
|
"triangles": 4997,
|
||||||
|
"vertices": 2452,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Sonnenesse"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.8579,
|
||||||
|
0.0,
|
||||||
|
-0.4875
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.8576,
|
||||||
|
1.6021,
|
||||||
|
0.4878
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"armatures": {
|
||||||
|
"SonnenesseRig": {
|
||||||
|
"bones": [
|
||||||
|
"Root",
|
||||||
|
"Hips",
|
||||||
|
"Spine02",
|
||||||
|
"Spine01",
|
||||||
|
"Spine",
|
||||||
|
"neck",
|
||||||
|
"Head",
|
||||||
|
"head_end",
|
||||||
|
"headfront",
|
||||||
|
"LeftShoulder",
|
||||||
|
"LeftArm",
|
||||||
|
"LeftForeArm",
|
||||||
|
"LeftHand",
|
||||||
|
"RightShoulder",
|
||||||
|
"RightArm",
|
||||||
|
"RightForeArm",
|
||||||
|
"RightHand",
|
||||||
|
"LeftUpLeg",
|
||||||
|
"LeftLeg",
|
||||||
|
"LeftFoot",
|
||||||
|
"LeftToeBase",
|
||||||
|
"RightUpLeg",
|
||||||
|
"RightLeg",
|
||||||
|
"RightFoot",
|
||||||
|
"RightToeBase"
|
||||||
|
],
|
||||||
|
"roots": [
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"empties": {},
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.8579,
|
||||||
|
0.0,
|
||||||
|
-0.4875
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.8576,
|
||||||
|
1.6021,
|
||||||
|
0.4878
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"name": "ability",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
34.0
|
||||||
|
],
|
||||||
|
"seconds": 1.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.9961
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_a",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
26.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0833,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.3585
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_b",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.6538
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "death",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
53.0
|
||||||
|
],
|
||||||
|
"seconds": 2.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hit",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
12.0
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
67.0
|
||||||
|
],
|
||||||
|
"seconds": 2.7917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"expected_from_godot": {
|
||||||
|
"triangles": 25460,
|
||||||
|
"bones": 25,
|
||||||
|
"clips": [
|
||||||
|
"idle",
|
||||||
|
"walk",
|
||||||
|
"attack_a",
|
||||||
|
"attack_b",
|
||||||
|
"hit",
|
||||||
|
"ability",
|
||||||
|
"death"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"meshes_with_ngons": {},
|
||||||
|
"meshes_without_uv": [],
|
||||||
|
"triangles": 25460,
|
||||||
|
"fbx": "Assets/Luneraria/Art/Characters/sonnenesse.fbx",
|
||||||
|
"fbx_bytes": 3377708,
|
||||||
|
"ok": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e4871156306b94333a6fd61ab018ef14
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Characters/sonnenesse.fbx
Normal file
337
Assets/Luneraria/Art/Characters/sonnenesse.fbx.meta
Normal file
|
|
@ -0,0 +1,337 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f
|
||||||
|
ModelImporter:
|
||||||
|
serializedVersion: 24300
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
materials:
|
||||||
|
materialImportMode: 2
|
||||||
|
materialName: 0
|
||||||
|
materialSearch: 1
|
||||||
|
materialLocation: 1
|
||||||
|
searchTexturesGlobally: 0
|
||||||
|
animations:
|
||||||
|
legacyGenerateAnimations: 4
|
||||||
|
bakeSimulation: 0
|
||||||
|
resampleCurves: 0
|
||||||
|
optimizeGameObjects: 0
|
||||||
|
removeConstantScaleCurves: 0
|
||||||
|
motionNodeName:
|
||||||
|
animationImportErrors:
|
||||||
|
animationImportWarnings:
|
||||||
|
animationRetargetingWarnings:
|
||||||
|
animationDoRetargetingWarnings: 0
|
||||||
|
importAnimatedCustomProperties: 0
|
||||||
|
importConstraints: 0
|
||||||
|
animationCompression: 0
|
||||||
|
animationRotationError: 0.5
|
||||||
|
animationPositionError: 0.5
|
||||||
|
animationScaleError: 0.5
|
||||||
|
animationWrapMode: 0
|
||||||
|
extraExposedTransformPaths: []
|
||||||
|
extraUserProperties: []
|
||||||
|
clipAnimations:
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: ability
|
||||||
|
takeName: SonnenesseRig|ability
|
||||||
|
internalID: -9146920348169335592
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 34
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.70311284
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_a
|
||||||
|
takeName: SonnenesseRig|attack_a
|
||||||
|
internalID: -3688867435692848977
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 26
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.33093327
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_b
|
||||||
|
takeName: SonnenesseRig|attack_b
|
||||||
|
internalID: -137194745704746687
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 24
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.6538
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: death
|
||||||
|
takeName: SonnenesseRig|death
|
||||||
|
internalID: -6426894262445047678
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 53
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: hit
|
||||||
|
takeName: SonnenesseRig|hit
|
||||||
|
internalID: -21289445226624713
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 12
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: idle
|
||||||
|
takeName: SonnenesseRig|idle
|
||||||
|
internalID: -7105414130795900942
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 96
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: walk
|
||||||
|
takeName: SonnenesseRig|walk
|
||||||
|
internalID: -6137465070068673883
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 67
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
isReadable: 1
|
||||||
|
meshes:
|
||||||
|
lODScreenPercentages:
|
||||||
|
- 0.25
|
||||||
|
- 0.01
|
||||||
|
globalScale: 1
|
||||||
|
meshCompression: 0
|
||||||
|
addColliders: 0
|
||||||
|
useSRGBMaterialColor: 1
|
||||||
|
sortHierarchyByName: 1
|
||||||
|
importPhysicalCameras: 1
|
||||||
|
importVisibility: 0
|
||||||
|
importBlendShapes: 0
|
||||||
|
importCameras: 0
|
||||||
|
importLights: 0
|
||||||
|
nodeNameCollisionStrategy: 1
|
||||||
|
fileIdsGeneration: 2
|
||||||
|
swapUVChannels: 0
|
||||||
|
generateSecondaryUV: 0
|
||||||
|
useFileUnits: 1
|
||||||
|
keepQuads: 0
|
||||||
|
weldVertices: 1
|
||||||
|
bakeAxisConversion: 1
|
||||||
|
preserveHierarchy: 0
|
||||||
|
skinWeightsMode: 0
|
||||||
|
maxBonesPerVertex: 4
|
||||||
|
minBoneWeight: 0.001
|
||||||
|
optimizeBones: 1
|
||||||
|
generateMeshLods: 0
|
||||||
|
meshLodGenerationFlags: 0
|
||||||
|
maximumMeshLod: -1
|
||||||
|
meshOptimizationFlags: -1
|
||||||
|
indexFormat: 0
|
||||||
|
secondaryUVAngleDistortion: 8
|
||||||
|
secondaryUVAreaDistortion: 15.000001
|
||||||
|
secondaryUVHardAngle: 88
|
||||||
|
secondaryUVMarginMethod: 1
|
||||||
|
secondaryUVMinLightmapResolution: 40
|
||||||
|
secondaryUVMinObjectScale: 1
|
||||||
|
secondaryUVPackMargin: 4
|
||||||
|
useFileScale: 1
|
||||||
|
strictVertexDataChecks: 0
|
||||||
|
tangentSpace:
|
||||||
|
normalSmoothAngle: 60
|
||||||
|
normalImportMode: 0
|
||||||
|
tangentImportMode: 3
|
||||||
|
normalCalculationMode: 4
|
||||||
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||||
|
blendShapeNormalImportMode: 1
|
||||||
|
normalSmoothingSource: 0
|
||||||
|
referencedClips: []
|
||||||
|
importAnimation: 1
|
||||||
|
humanDescription:
|
||||||
|
serializedVersion: 3
|
||||||
|
human: []
|
||||||
|
skeleton: []
|
||||||
|
armTwist: 0.5
|
||||||
|
foreArmTwist: 0.5
|
||||||
|
upperLegTwist: 0.5
|
||||||
|
legTwist: 0.5
|
||||||
|
armStretch: 0.05
|
||||||
|
legStretch: 0.05
|
||||||
|
feetSpacing: 0
|
||||||
|
globalScale: 1
|
||||||
|
rootMotionBoneName:
|
||||||
|
hasTranslationDoF: 0
|
||||||
|
hasExtraRoot: 0
|
||||||
|
skeletonHasParents: 1
|
||||||
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||||
|
autoGenerateAvatarMappingIfUnspecified: 1
|
||||||
|
animationType: 2
|
||||||
|
humanoidOversampling: 1
|
||||||
|
avatarSetup: 1
|
||||||
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||||
|
importBlendShapeDeformPercent: 1
|
||||||
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||||
|
additionalBone: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
703
Assets/Luneraria/Art/Characters/sylvara.export.json
Normal file
|
|
@ -0,0 +1,703 @@
|
||||||
|
{
|
||||||
|
"id": "sylvara",
|
||||||
|
"group": "Characters",
|
||||||
|
"source": "tools/meshy/build_figure.py",
|
||||||
|
"exporter_version": 11,
|
||||||
|
"blender": "5.2.2 LTS",
|
||||||
|
"fbx_settings": {
|
||||||
|
"use_selection": true,
|
||||||
|
"use_visible": false,
|
||||||
|
"use_active_collection": false,
|
||||||
|
"global_scale": 1.0,
|
||||||
|
"apply_unit_scale": true,
|
||||||
|
"apply_scale_options": "FBX_SCALE_UNITS",
|
||||||
|
"axis_forward": "Y",
|
||||||
|
"axis_up": "Z",
|
||||||
|
"bake_space_transform": false,
|
||||||
|
"object_types": [
|
||||||
|
"ARMATURE",
|
||||||
|
"EMPTY",
|
||||||
|
"MESH"
|
||||||
|
],
|
||||||
|
"use_mesh_modifiers": true,
|
||||||
|
"use_mesh_modifiers_render": true,
|
||||||
|
"mesh_smooth_type": "OFF",
|
||||||
|
"use_subsurf": false,
|
||||||
|
"use_mesh_edges": false,
|
||||||
|
"use_tspace": false,
|
||||||
|
"use_triangles": false,
|
||||||
|
"colors_type": "LINEAR",
|
||||||
|
"prioritize_active_color": true,
|
||||||
|
"use_custom_props": false,
|
||||||
|
"add_leaf_bones": false,
|
||||||
|
"primary_bone_axis": "Y",
|
||||||
|
"secondary_bone_axis": "X",
|
||||||
|
"use_armature_deform_only": true,
|
||||||
|
"armature_nodetype": "NULL",
|
||||||
|
"bake_anim": true,
|
||||||
|
"bake_anim_use_all_bones": true,
|
||||||
|
"bake_anim_use_nla_strips": false,
|
||||||
|
"bake_anim_use_all_actions": true,
|
||||||
|
"bake_anim_force_startend_keying": true,
|
||||||
|
"bake_anim_step": 1.0,
|
||||||
|
"bake_anim_simplify_factor": 0.0,
|
||||||
|
"path_mode": "STRIP",
|
||||||
|
"embed_textures": false,
|
||||||
|
"batch_mode": "OFF"
|
||||||
|
},
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"check": "turn_applied",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "units_metric",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "METRIC"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "unit_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "1.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_negative_scale",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "object_scale_1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "mesh_names_unique",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['SylvaraBody_LOD0', 'SylvaraBody_LOD1', 'SylvaraSichelL_LOD0', 'SylvaraSichelL_LOD1', 'SylvaraSichelR_LOD0', 'SylvaraSichelR_LOD1']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "material_slots_filled",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "normals_unit_length",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "no_blend_shapes",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "{}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "triangles_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "30782 fbx / 30782 godot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "one_armature",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['SylvaraRig']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "single_root_bone",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone_name",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['Root']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_count_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "25 / 25"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names_portable",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "skinned_meshes_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "clips_match_godot",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "required_clips_present",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_mesh_names",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_triangles",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "30782 / 30782"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_materials",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_bones",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "roundtrip_clips",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['ability', 'attack_a', 'attack_b', 'death', 'hit', 'idle', 'leap', 'ultimate', 'walk']"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"generator": {
|
||||||
|
"clips": {
|
||||||
|
"idle": {
|
||||||
|
"source": "Idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"walk": {
|
||||||
|
"source": "Run_02",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
16.799999237060547
|
||||||
|
],
|
||||||
|
"seconds": 0.75,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"attack_a": {
|
||||||
|
"source": "Left_Slash",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"seconds": 0.9167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.4125
|
||||||
|
},
|
||||||
|
"attack_b": {
|
||||||
|
"source": "Right_Hand_Sword_Slash",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
36
|
||||||
|
],
|
||||||
|
"seconds": 0.9167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.331
|
||||||
|
},
|
||||||
|
"hit": {
|
||||||
|
"source": "Hit_Reaction",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
20
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ability": {
|
||||||
|
"source": "Over_Shoulder_Throw",
|
||||||
|
"frames": [
|
||||||
|
50,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.64
|
||||||
|
},
|
||||||
|
"death": {
|
||||||
|
"source": "dying_backwards",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
52.80000305175781
|
||||||
|
],
|
||||||
|
"seconds": 2.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"leap": {
|
||||||
|
"source": "Run_and_Leap",
|
||||||
|
"frames": [
|
||||||
|
30,
|
||||||
|
64
|
||||||
|
],
|
||||||
|
"seconds": 0.7083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ultimate": {
|
||||||
|
"source": "Double_Blade_Spin",
|
||||||
|
"frames": [
|
||||||
|
10,
|
||||||
|
62
|
||||||
|
],
|
||||||
|
"seconds": 1.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.7356
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0001,
|
||||||
|
"palette_gains": {},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": 0.009999999776482582,
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 20709,
|
||||||
|
"lod1_triangles": 4999,
|
||||||
|
"lod1_vertices": 2483,
|
||||||
|
"welded_triangles": 20709,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
},
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"name": "SylvaraSichelR",
|
||||||
|
"triangles": 2039,
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0036,
|
||||||
|
"palette_gains": {},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 2039,
|
||||||
|
"lod1_triangles": 498,
|
||||||
|
"lod1_vertices": 252,
|
||||||
|
"welded_triangles": 2039,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SylvaraSichelL",
|
||||||
|
"triangles": 2039,
|
||||||
|
"textures": "shared",
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 2039,
|
||||||
|
"lod1_triangles": 498,
|
||||||
|
"lod1_vertices": 252,
|
||||||
|
"welded_triangles": 2039,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"inputs_sha256": {
|
||||||
|
"tools/meshy/sylvara/figure.json": "e4e1e7825da9f46de29cd7929ca5c6556d7e5499dc435eed3a2620f0ffaef7a4",
|
||||||
|
"assets-source/meshy/sylvara/sylvara-skelett.glb": "804b57fe084907ae262dd79bf5c4fb6d76cba854cee97b97d1454d13cb96ee6c",
|
||||||
|
"assets-source/meshy/sylvara/sylvara-animationen.glb": "07a35bc2d0ae302aade82dfd813088990b6c005a67440f0dba467f6feceb3fd8",
|
||||||
|
"assets-source/meshy/sylvara/sylvara-sichel.glb": "ba1ca8b506b65732c534c05c9e0814595c649a5061599d32e615780f8c917e30"
|
||||||
|
},
|
||||||
|
"source_sha256": "e057f399ecb829cccfce78983c8dce2be2904c58d4e60e6c2c1ade5681cc60d8",
|
||||||
|
"removed_modifiers": 0,
|
||||||
|
"kind": "skinned",
|
||||||
|
"fps": 24.0,
|
||||||
|
"objects": 7,
|
||||||
|
"meshes": {
|
||||||
|
"SylvaraBody_LOD0": {
|
||||||
|
"mesh": "SylvaraBody_LOD0",
|
||||||
|
"triangles": 20709,
|
||||||
|
"vertices": 24339,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Sylvara"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.4455,
|
||||||
|
-0.0,
|
||||||
|
-0.2036
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.4455,
|
||||||
|
1.75,
|
||||||
|
0.2036
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SylvaraSichelR_LOD0": {
|
||||||
|
"mesh": "SylvaraSichelR_LOD0",
|
||||||
|
"triangles": 2039,
|
||||||
|
"vertices": 3357,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_SylvaraSichel"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
0.2745,
|
||||||
|
0.9098,
|
||||||
|
-0.0177
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.7444,
|
||||||
|
1.1783,
|
||||||
|
0.6007
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SylvaraSichelL_LOD0": {
|
||||||
|
"mesh": "SylvaraSichelL_LOD0",
|
||||||
|
"triangles": 2039,
|
||||||
|
"vertices": 3357,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_SylvaraSichel"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": true,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.5021,
|
||||||
|
0.7858,
|
||||||
|
-0.0161
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
-0.0143,
|
||||||
|
1.0206,
|
||||||
|
0.6024
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SylvaraBody_LOD1": {
|
||||||
|
"mesh": "SylvaraBody_LOD1",
|
||||||
|
"triangles": 4999,
|
||||||
|
"vertices": 2483,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Sylvara"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.4439,
|
||||||
|
-0.0001,
|
||||||
|
-0.2046
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.4453,
|
||||||
|
1.7502,
|
||||||
|
0.203
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SylvaraSichelR_LOD1": {
|
||||||
|
"mesh": "SylvaraSichelR_LOD1",
|
||||||
|
"triangles": 498,
|
||||||
|
"vertices": 252,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_SylvaraSichel"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
0.2733,
|
||||||
|
0.9098,
|
||||||
|
-0.0188
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.7436,
|
||||||
|
1.1775,
|
||||||
|
0.6008
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"SylvaraSichelL_LOD1": {
|
||||||
|
"mesh": "SylvaraSichelL_LOD1",
|
||||||
|
"triangles": 498,
|
||||||
|
"vertices": 252,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_SylvaraSichel"
|
||||||
|
],
|
||||||
|
"uv_layers": [
|
||||||
|
"UVMap"
|
||||||
|
],
|
||||||
|
"color_attributes": [],
|
||||||
|
"active_color": null,
|
||||||
|
"custom_normals": false,
|
||||||
|
"normals_unit_length": true,
|
||||||
|
"bad_normals": 0,
|
||||||
|
"degenerate_triangles": 0,
|
||||||
|
"shape_keys": 0,
|
||||||
|
"skinned": true,
|
||||||
|
"scale": [
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0
|
||||||
|
],
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.503,
|
||||||
|
0.7869,
|
||||||
|
-0.0172
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
-0.015,
|
||||||
|
1.0201,
|
||||||
|
0.6025
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"armatures": {
|
||||||
|
"SylvaraRig": {
|
||||||
|
"bones": [
|
||||||
|
"Root",
|
||||||
|
"Hips",
|
||||||
|
"Spine02",
|
||||||
|
"Spine01",
|
||||||
|
"Spine",
|
||||||
|
"neck",
|
||||||
|
"Head",
|
||||||
|
"head_end",
|
||||||
|
"headfront",
|
||||||
|
"LeftShoulder",
|
||||||
|
"LeftArm",
|
||||||
|
"LeftForeArm",
|
||||||
|
"LeftHand",
|
||||||
|
"RightShoulder",
|
||||||
|
"RightArm",
|
||||||
|
"RightForeArm",
|
||||||
|
"RightHand",
|
||||||
|
"LeftUpLeg",
|
||||||
|
"LeftLeg",
|
||||||
|
"LeftFoot",
|
||||||
|
"LeftToeBase",
|
||||||
|
"RightUpLeg",
|
||||||
|
"RightLeg",
|
||||||
|
"RightFoot",
|
||||||
|
"RightToeBase"
|
||||||
|
],
|
||||||
|
"roots": [
|
||||||
|
"Root"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"empties": {},
|
||||||
|
"bounds_unity": {
|
||||||
|
"min": [
|
||||||
|
-0.503,
|
||||||
|
-0.0001,
|
||||||
|
-0.2046
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.7444,
|
||||||
|
1.7502,
|
||||||
|
0.6025
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"name": "ability",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_a",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
22.0
|
||||||
|
],
|
||||||
|
"seconds": 0.9167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.4125
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_b",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
22.0
|
||||||
|
],
|
||||||
|
"seconds": 0.9167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.331
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "death",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
53.0
|
||||||
|
],
|
||||||
|
"seconds": 2.2083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hit",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
12.0
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "leap",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
17.0
|
||||||
|
],
|
||||||
|
"seconds": 0.7083,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ultimate",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
34.0
|
||||||
|
],
|
||||||
|
"seconds": 1.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.7356
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
18.0
|
||||||
|
],
|
||||||
|
"seconds": 0.75,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"expected_from_godot": {
|
||||||
|
"triangles": 30782,
|
||||||
|
"bones": 25,
|
||||||
|
"clips": [
|
||||||
|
"idle",
|
||||||
|
"walk",
|
||||||
|
"attack_a",
|
||||||
|
"attack_b",
|
||||||
|
"hit",
|
||||||
|
"ability",
|
||||||
|
"death",
|
||||||
|
"leap",
|
||||||
|
"ultimate"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"meshes_with_ngons": {},
|
||||||
|
"meshes_without_uv": [],
|
||||||
|
"triangles": 30782,
|
||||||
|
"fbx": "Assets/Luneraria/Art/Characters/sylvara.fbx",
|
||||||
|
"fbx_bytes": 3895276,
|
||||||
|
"ok": true
|
||||||
|
}
|
||||||
7
Assets/Luneraria/Art/Characters/sylvara.export.json.meta
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2682cb9fe0d9d4c699bfdd6a74dae754
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Characters/sylvara.fbx
Normal file
402
Assets/Luneraria/Art/Characters/sylvara.fbx.meta
Normal file
|
|
@ -0,0 +1,402 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6ec31d870bd7f4b71b9810cb0a14ba9a
|
||||||
|
ModelImporter:
|
||||||
|
serializedVersion: 24300
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
materials:
|
||||||
|
materialImportMode: 2
|
||||||
|
materialName: 0
|
||||||
|
materialSearch: 1
|
||||||
|
materialLocation: 1
|
||||||
|
searchTexturesGlobally: 0
|
||||||
|
animations:
|
||||||
|
legacyGenerateAnimations: 4
|
||||||
|
bakeSimulation: 0
|
||||||
|
resampleCurves: 0
|
||||||
|
optimizeGameObjects: 0
|
||||||
|
removeConstantScaleCurves: 0
|
||||||
|
motionNodeName:
|
||||||
|
animationImportErrors:
|
||||||
|
animationImportWarnings:
|
||||||
|
animationRetargetingWarnings:
|
||||||
|
animationDoRetargetingWarnings: 0
|
||||||
|
importAnimatedCustomProperties: 0
|
||||||
|
importConstraints: 0
|
||||||
|
animationCompression: 0
|
||||||
|
animationRotationError: 0.5
|
||||||
|
animationPositionError: 0.5
|
||||||
|
animationScaleError: 0.5
|
||||||
|
animationWrapMode: 0
|
||||||
|
extraExposedTransformPaths: []
|
||||||
|
extraUserProperties: []
|
||||||
|
clipAnimations:
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: ability
|
||||||
|
takeName: SylvaraRig|ability
|
||||||
|
internalID: -4503705687715001949
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 24
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.64
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_a
|
||||||
|
takeName: SylvaraRig|attack_a
|
||||||
|
internalID: -1919402484897520342
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 22
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.44998363
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: attack_b
|
||||||
|
takeName: SylvaraRig|attack_b
|
||||||
|
internalID: 3192667631615220872
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 22
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.3610778
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: death
|
||||||
|
takeName: SylvaraRig|death
|
||||||
|
internalID: -5948886425661693005
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 53
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: hit
|
||||||
|
takeName: SylvaraRig|hit
|
||||||
|
internalID: -6666208762527400351
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 12
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: idle
|
||||||
|
takeName: SylvaraRig|idle
|
||||||
|
internalID: 2006597815458582218
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 96
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: leap
|
||||||
|
takeName: SylvaraRig|leap
|
||||||
|
internalID: 6552078401007846946
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 17
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: ultimate
|
||||||
|
takeName: SylvaraRig|ultimate
|
||||||
|
internalID: 2887585251524934922
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 34
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 0
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events:
|
||||||
|
- time: 0.51923484
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: walk
|
||||||
|
takeName: SylvaraRig|walk
|
||||||
|
internalID: -4974581367025399602
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 18
|
||||||
|
wrapMode: 0
|
||||||
|
orientationOffsetY: 0
|
||||||
|
level: 0
|
||||||
|
cycleOffset: 0
|
||||||
|
loop: 0
|
||||||
|
hasAdditiveReferencePose: 0
|
||||||
|
loopTime: 1
|
||||||
|
loopBlend: 0
|
||||||
|
loopBlendOrientation: 0
|
||||||
|
loopBlendPositionY: 0
|
||||||
|
loopBlendPositionXZ: 0
|
||||||
|
keepOriginalOrientation: 0
|
||||||
|
keepOriginalPositionY: 1
|
||||||
|
keepOriginalPositionXZ: 0
|
||||||
|
heightFromFeet: 0
|
||||||
|
mirror: 0
|
||||||
|
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||||
|
curves: []
|
||||||
|
events: []
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
isReadable: 1
|
||||||
|
meshes:
|
||||||
|
lODScreenPercentages:
|
||||||
|
- 0.25
|
||||||
|
- 0.01
|
||||||
|
globalScale: 1
|
||||||
|
meshCompression: 0
|
||||||
|
addColliders: 0
|
||||||
|
useSRGBMaterialColor: 1
|
||||||
|
sortHierarchyByName: 1
|
||||||
|
importPhysicalCameras: 1
|
||||||
|
importVisibility: 0
|
||||||
|
importBlendShapes: 0
|
||||||
|
importCameras: 0
|
||||||
|
importLights: 0
|
||||||
|
nodeNameCollisionStrategy: 1
|
||||||
|
fileIdsGeneration: 2
|
||||||
|
swapUVChannels: 0
|
||||||
|
generateSecondaryUV: 0
|
||||||
|
useFileUnits: 1
|
||||||
|
keepQuads: 0
|
||||||
|
weldVertices: 1
|
||||||
|
bakeAxisConversion: 1
|
||||||
|
preserveHierarchy: 0
|
||||||
|
skinWeightsMode: 0
|
||||||
|
maxBonesPerVertex: 4
|
||||||
|
minBoneWeight: 0.001
|
||||||
|
optimizeBones: 1
|
||||||
|
generateMeshLods: 0
|
||||||
|
meshLodGenerationFlags: 0
|
||||||
|
maximumMeshLod: -1
|
||||||
|
meshOptimizationFlags: -1
|
||||||
|
indexFormat: 0
|
||||||
|
secondaryUVAngleDistortion: 8
|
||||||
|
secondaryUVAreaDistortion: 15.000001
|
||||||
|
secondaryUVHardAngle: 88
|
||||||
|
secondaryUVMarginMethod: 1
|
||||||
|
secondaryUVMinLightmapResolution: 40
|
||||||
|
secondaryUVMinObjectScale: 1
|
||||||
|
secondaryUVPackMargin: 4
|
||||||
|
useFileScale: 1
|
||||||
|
strictVertexDataChecks: 0
|
||||||
|
tangentSpace:
|
||||||
|
normalSmoothAngle: 60
|
||||||
|
normalImportMode: 0
|
||||||
|
tangentImportMode: 3
|
||||||
|
normalCalculationMode: 4
|
||||||
|
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||||
|
blendShapeNormalImportMode: 1
|
||||||
|
normalSmoothingSource: 0
|
||||||
|
referencedClips: []
|
||||||
|
importAnimation: 1
|
||||||
|
humanDescription:
|
||||||
|
serializedVersion: 3
|
||||||
|
human: []
|
||||||
|
skeleton: []
|
||||||
|
armTwist: 0.5
|
||||||
|
foreArmTwist: 0.5
|
||||||
|
upperLegTwist: 0.5
|
||||||
|
legTwist: 0.5
|
||||||
|
armStretch: 0.05
|
||||||
|
legStretch: 0.05
|
||||||
|
feetSpacing: 0
|
||||||
|
globalScale: 1
|
||||||
|
rootMotionBoneName:
|
||||||
|
hasTranslationDoF: 0
|
||||||
|
hasExtraRoot: 0
|
||||||
|
skeletonHasParents: 1
|
||||||
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||||
|
autoGenerateAvatarMappingIfUnspecified: 1
|
||||||
|
animationType: 2
|
||||||
|
humanoidOversampling: 1
|
||||||
|
avatarSetup: 1
|
||||||
|
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||||
|
importBlendShapeDeformPercent: 1
|
||||||
|
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||||
|
additionalBone: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
246
Assets/Luneraria/Art/Generated/basaltbastion_meshy.controller
Normal file
|
|
@ -0,0 +1,246 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1107 &-6811216099093985071
|
||||||
|
AnimatorStateMachine:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_ChildStates:
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -2709338179651766100}
|
||||||
|
m_Position: {x: 200, y: 0, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1735361140140776544}
|
||||||
|
m_Position: {x: 235, y: 65, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -4370220345468990606}
|
||||||
|
m_Position: {x: 270, y: 130, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 3813406096338511602}
|
||||||
|
m_Position: {x: 305, y: 195, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 9082682921124757256}
|
||||||
|
m_Position: {x: 340, y: 260, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1782638191720012098}
|
||||||
|
m_Position: {x: 375, y: 325, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 2921820919237067307}
|
||||||
|
m_Position: {x: 410, y: 390, z: 0}
|
||||||
|
m_ChildStateMachines: []
|
||||||
|
m_AnyStateTransitions: []
|
||||||
|
m_EntryTransitions: []
|
||||||
|
m_StateMachineTransitions: {}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||||
|
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||||
|
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||||
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
|
m_DefaultState: {fileID: -2709338179651766100}
|
||||||
|
--- !u!1102 &-4370220345468990606
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_a
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 1565449223295100875, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-2709338179651766100
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: idle
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 9093657477581702130, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!91 &9100000
|
||||||
|
AnimatorController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: basaltbastion_meshy
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters: []
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_StateMachine: {fileID: -6811216099093985071}
|
||||||
|
m_Mask: {fileID: 0}
|
||||||
|
m_Motions: []
|
||||||
|
m_Behaviours: []
|
||||||
|
m_BlendingMode: 0
|
||||||
|
m_SyncedLayerIndex: -1
|
||||||
|
m_DefaultWeight: 0
|
||||||
|
m_IKPass: 0
|
||||||
|
m_SyncedLayerAffectsTiming: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
--- !u!1102 &1735361140140776544
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ability
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -5495293919160781032, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1782638191720012098
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: hit
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -4714297317412057206, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &2921820919237067307
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: walk
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -1455650782467671261, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &3813406096338511602
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_b
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 3972096498202774343, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &9082682921124757256
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: death
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -4724392375424077161, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a456a0a7fa6d34b699183f75137f8f86
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 9100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
275
Assets/Luneraria/Art/Generated/brunhild.controller
Normal file
|
|
@ -0,0 +1,275 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1102 &-9220055677375747029
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: walk
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -759485606388579005, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-4719041364407145157
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: death
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -575409383583182742, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-3340885724969997654
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ultimate
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7528617810713444434, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!91 &9100000
|
||||||
|
AnimatorController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: brunhild
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters: []
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_StateMachine: {fileID: 4919687160989328924}
|
||||||
|
m_Mask: {fileID: 0}
|
||||||
|
m_Motions: []
|
||||||
|
m_Behaviours: []
|
||||||
|
m_BlendingMode: 0
|
||||||
|
m_SyncedLayerIndex: -1
|
||||||
|
m_DefaultWeight: 0
|
||||||
|
m_IKPass: 0
|
||||||
|
m_SyncedLayerAffectsTiming: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
--- !u!1102 &604826683839612195
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ability
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 3282932801577121271, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &3419020185831067391
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_a
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -4088893210095135303, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4117362530366511861
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: hit
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 4649535545551490279, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4353629903250305412
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_b
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -3393105429929367649, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1107 &4919687160989328924
|
||||||
|
AnimatorStateMachine:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_ChildStates:
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 6833392093826740936}
|
||||||
|
m_Position: {x: 200, y: 0, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 604826683839612195}
|
||||||
|
m_Position: {x: 235, y: 65, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 3419020185831067391}
|
||||||
|
m_Position: {x: 270, y: 130, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4353629903250305412}
|
||||||
|
m_Position: {x: 305, y: 195, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -4719041364407145157}
|
||||||
|
m_Position: {x: 340, y: 260, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4117362530366511861}
|
||||||
|
m_Position: {x: 375, y: 325, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -3340885724969997654}
|
||||||
|
m_Position: {x: 410, y: 390, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -9220055677375747029}
|
||||||
|
m_Position: {x: 445, y: 455, z: 0}
|
||||||
|
m_ChildStateMachines: []
|
||||||
|
m_AnyStateTransitions: []
|
||||||
|
m_EntryTransitions: []
|
||||||
|
m_StateMachineTransitions: {}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||||
|
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||||
|
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||||
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
|
m_DefaultState: {fileID: 6833392093826740936}
|
||||||
|
--- !u!1102 &6833392093826740936
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: idle
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -7637435868926338065, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
8
Assets/Luneraria/Art/Generated/brunhild.controller.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f779b941008d48fea9cfb256567bb9d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 9100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
246
Assets/Luneraria/Art/Generated/sonnenesse.controller
Normal file
|
|
@ -0,0 +1,246 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1107 &-6058062776808327719
|
||||||
|
AnimatorStateMachine:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_ChildStates:
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4809146559760871790}
|
||||||
|
m_Position: {x: 200, y: 0, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4217487180802081924}
|
||||||
|
m_Position: {x: 235, y: 65, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 169161326647216058}
|
||||||
|
m_Position: {x: 270, y: 130, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -3355519416394762264}
|
||||||
|
m_Position: {x: 305, y: 195, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 5171706077710693211}
|
||||||
|
m_Position: {x: 340, y: 260, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -5424410042088221771}
|
||||||
|
m_Position: {x: 375, y: 325, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 8472560047695422486}
|
||||||
|
m_Position: {x: 410, y: 390, z: 0}
|
||||||
|
m_ChildStateMachines: []
|
||||||
|
m_AnyStateTransitions: []
|
||||||
|
m_EntryTransitions: []
|
||||||
|
m_StateMachineTransitions: {}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||||
|
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||||
|
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||||
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
|
m_DefaultState: {fileID: 4809146559760871790}
|
||||||
|
--- !u!1102 &-5424410042088221771
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: hit
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -21289445226624713, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-3355519416394762264
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_b
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -137194745704746687, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!91 &9100000
|
||||||
|
AnimatorController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: sonnenesse
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters: []
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_StateMachine: {fileID: -6058062776808327719}
|
||||||
|
m_Mask: {fileID: 0}
|
||||||
|
m_Motions: []
|
||||||
|
m_Behaviours: []
|
||||||
|
m_BlendingMode: 0
|
||||||
|
m_SyncedLayerIndex: -1
|
||||||
|
m_DefaultWeight: 0
|
||||||
|
m_IKPass: 0
|
||||||
|
m_SyncedLayerAffectsTiming: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
--- !u!1102 &169161326647216058
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_a
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -3688867435692848977, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4217487180802081924
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ability
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -9146920348169335592, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4809146559760871790
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: idle
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -7105414130795900942, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &5171706077710693211
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: death
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -6426894262445047678, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &8472560047695422486
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: walk
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -6137465070068673883, guid: 04bd9b7cb5ca94d5193b6bb045ad3f7f, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a6aed2254a9e24da1bd5e51c687e445c
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 9100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
304
Assets/Luneraria/Art/Generated/sylvara.controller
Normal file
|
|
@ -0,0 +1,304 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1102 &-8263460516112938798
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: walk
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -4974581367025399602, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1107 &-7487683440626816043
|
||||||
|
AnimatorStateMachine:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_ChildStates:
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -2376582923454785072}
|
||||||
|
m_Position: {x: 200, y: 0, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 8373015746321733221}
|
||||||
|
m_Position: {x: 235, y: 65, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -4146940425522892775}
|
||||||
|
m_Position: {x: 270, y: 130, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4268394846306323914}
|
||||||
|
m_Position: {x: 305, y: 195, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 2992695161437185625}
|
||||||
|
m_Position: {x: 340, y: 260, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -638290553263424564}
|
||||||
|
m_Position: {x: 375, y: 325, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 6638643318457833971}
|
||||||
|
m_Position: {x: 410, y: 390, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -6911695650363282165}
|
||||||
|
m_Position: {x: 445, y: 455, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -8263460516112938798}
|
||||||
|
m_Position: {x: 480, y: 520, z: 0}
|
||||||
|
m_ChildStateMachines: []
|
||||||
|
m_AnyStateTransitions: []
|
||||||
|
m_EntryTransitions: []
|
||||||
|
m_StateMachineTransitions: {}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_AnyStatePosition: {x: 50, y: 20, z: 0}
|
||||||
|
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||||
|
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||||
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
|
m_DefaultState: {fileID: -2376582923454785072}
|
||||||
|
--- !u!1102 &-6911695650363282165
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ultimate
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 2887585251524934922, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-4146940425522892775
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_a
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -1919402484897520342, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-2376582923454785072
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: idle
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 2006597815458582218, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-638290553263424564
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: hit
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -6666208762527400351, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!91 &9100000
|
||||||
|
AnimatorController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: sylvara
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters: []
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_StateMachine: {fileID: -7487683440626816043}
|
||||||
|
m_Mask: {fileID: 0}
|
||||||
|
m_Motions: []
|
||||||
|
m_Behaviours: []
|
||||||
|
m_BlendingMode: 0
|
||||||
|
m_SyncedLayerIndex: -1
|
||||||
|
m_DefaultWeight: 0
|
||||||
|
m_IKPass: 0
|
||||||
|
m_SyncedLayerAffectsTiming: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
--- !u!1102 &2992695161437185625
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: death
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -5948886425661693005, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4268394846306323914
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: attack_b
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 3192667631615220872, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &6638643318457833971
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: leap
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 6552078401007846946, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &8373015746321733221
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ability
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions: []
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: -4503705687715001949, guid: 6ec31d870bd7f4b71b9810cb0a14ba9a, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
8
Assets/Luneraria/Art/Generated/sylvara.controller.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a9f7e924f692041b38fc5703d10e1cec
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 9100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-basaltbastion-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 7.5 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0d36246861f5e495c9a37eebff823d05
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-basaltbastion-normal-2k.png
Normal file
|
After Width: | Height: | Size: 6.3 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fb23cd5309e9a4cc280eaf1093b8e477
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 1
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-basaltbastion-orm-2k.png
Normal file
|
After Width: | Height: | Size: 4.1 MiB |
117
Assets/Luneraria/Art/Textures/ai-basaltbastion-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ced81c900c77948e38af00218f6fe9b5
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhild-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhild-albedo-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0dbeeb8c48f344e64962b71d5e9fcca1
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhild-normal-2k.png
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhild-normal-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f701c67235f354e4dac0ee3235b94b3d
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 1
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhild-orm-2k.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhild-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1722b2d9a084347b8845372bf878a61f
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
After Width: | Height: | Size: 6.8 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ed6f51893270d4a81a491e1b895a5815
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhildspeer-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 5.2 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 336afb236cf9f438dae9687f76420327
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhildspeer-normal-2k.png
Normal file
|
After Width: | Height: | Size: 5 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9b19528e38c1f468a8dfb54927968778
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 1
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhildspeer-orm-2k.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhildspeer-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf3a5ed7600ba42349191e05cfe011e8
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
After Width: | Height: | Size: 5.6 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1fadc4bab123948b3b3f54a2fe52173a
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sonnenesse-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 7.3 MiB |
117
Assets/Luneraria/Art/Textures/ai-sonnenesse-albedo-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a8d89482b31b946289ecd7628b8840a8
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sonnenesse-normal-2k.png
Normal file
|
After Width: | Height: | Size: 6.3 MiB |
117
Assets/Luneraria/Art/Textures/ai-sonnenesse-normal-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9c1740c7144b44bb8a0008a61f4e21e5
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 1
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sonnenesse-orm-2k.png
Normal file
|
After Width: | Height: | Size: 3.8 MiB |
117
Assets/Luneraria/Art/Textures/ai-sonnenesse-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 29aa5535e9c7246318d8345583175348
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvara-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 5.9 MiB |
117
Assets/Luneraria/Art/Textures/ai-sylvara-albedo-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f1bc24b849964290904cc174a86981f
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvara-normal-2k.png
Normal file
|
After Width: | Height: | Size: 5.8 MiB |
117
Assets/Luneraria/Art/Textures/ai-sylvara-normal-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c8632afd5853d44d982ae859be8956e1
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 1
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvara-orm-2k.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
117
Assets/Luneraria/Art/Textures/ai-sylvara-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d8311d476a8454de69778369b6523d29
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvara_blutmond-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 6.4 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a6874598666524dfaa83369fe4e3bf2a
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvarasichel-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 6 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e6cf36fcdead84dd2a220b270e74b1df
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvarasichel-normal-2k.png
Normal file
|
After Width: | Height: | Size: 5.6 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a2ec696a4b29947e7bc1e9500caca183
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 1
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-sylvarasichel-orm-2k.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
117
Assets/Luneraria/Art/Textures/ai-sylvarasichel-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 19438d2ac4c6d4ca392685991f987ed5
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 0
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
After Width: | Height: | Size: 6.5 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5d8c0f56d849d484db5734f49a273a4b
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 13
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
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: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
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: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 4
|
||||||
|
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: 4
|
||||||
|
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: []
|
||||||
|
customData:
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spriteCustomMetadata:
|
||||||
|
entries: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -55,9 +55,23 @@ namespace Luneraria.Core
|
||||||
public static readonly OrderedMap<string, HeroSpec> Heroes = Ordered(
|
public static readonly OrderedMap<string, HeroSpec> Heroes = Ordered(
|
||||||
new HeroSpec { Id = "held_ringborke", Name = "Ringborke", Title = "Wächterin der Wurzeln", Model = "w04", Cost = 260, RoleText = "Front / Schutz", Provisional = true, Summary = "Hält die Front, heilt sich selbst und schützt nahe Verbündete.", Base = new UnitDef { MaxHp = 2200.0, Damage = 34.0, AttackType = 1, ArmorType = 1, AttackRange = 1.4, Speed = 2.4, Ability = "w04" } },
|
new HeroSpec { Id = "held_ringborke", Name = "Ringborke", Title = "Wächterin der Wurzeln", Model = "w04", Cost = 260, RoleText = "Front / Schutz", Provisional = true, Summary = "Hält die Front, heilt sich selbst und schützt nahe Verbündete.", Base = new UnitDef { MaxHp = 2200.0, Damage = 34.0, AttackType = 1, ArmorType = 1, AttackRange = 1.4, Speed = 2.4, Ability = "w04" } },
|
||||||
new HeroSpec { Id = "held_quellgeflecht", Name = "Quellgeflecht", Title = "Hüterin der Quelle", Model = "w10", Cost = 260, RoleText = "Unterstützung / Heilung", Provisional = true, Summary = "Heilt Verbündete in 4,5 m und stärkt die Armee im Gefecht.", Base = new UnitDef { MaxHp = 1300.0, Damage = 28.0, AttackType = 2, ArmorType = 2, AttackRange = 4.5, Speed = 2.0, Ability = "w10" } },
|
new HeroSpec { Id = "held_quellgeflecht", Name = "Quellgeflecht", Title = "Hüterin der Quelle", Model = "w10", Cost = 260, RoleText = "Unterstützung / Heilung", Provisional = true, Summary = "Heilt Verbündete in 4,5 m und stärkt die Armee im Gefecht.", Base = new UnitDef { MaxHp = 1300.0, Damage = 28.0, AttackType = 2, ArmorType = 2, AttackRange = 4.5, Speed = 2.0, Ability = "w10" } },
|
||||||
new HeroSpec { Id = "held_funkenlanze", Name = "Funkenlanze", Title = "Schützin des Glutpakts", Model = "g05", Cost = 260, RoleText = "Fernkampf / Schaden", Provisional = true, Summary = "Hoher Einzelschaden aus der zweiten Reihe.", Base = new UnitDef { MaxHp = 950.0, Damage = 46.0, AttackType = 1, ArmorType = 0, AttackRange = 6.0, Speed = 2.0, Ability = "g05" } }
|
new HeroSpec { Id = "held_funkenlanze", Name = "Funkenlanze", Title = "Schützin des Glutpakts", Model = "g05", Cost = 260, RoleText = "Fernkampf / Schaden", Provisional = true, Summary = "Hoher Einzelschaden aus der zweiten Reihe.", Base = new UnitDef { MaxHp = 950.0, Damage = 46.0, AttackType = 1, ArmorType = 0, AttackRange = 6.0, Speed = 2.0, Ability = "g05" } },
|
||||||
|
// H1 (not in the Godot reference): first hero of the champions concept, docs/luneraria/CHAMPIONS-KONZEPT.md.
|
||||||
|
new HeroSpec { Id = "held_sylvara", Name = "Sylvara", Title = "Die Mondklinge", Model = "sylvara", Cost = 260, RoleText = "Assassine / Nahkampf", Provisional = false, Summary = "Springt in die zweite Reihe, wirft Sicheln und wirbelt mit dem Mondsicheltanz durch Gruppen.",
|
||||||
|
PassiveText = "Mondsprung: einmal pro Kampf auf den nächsten Fernkämpfer oder Unterstützer in 8 m, der höchstens 2 Begleiter in 3 m hat. Der erste Treffer danach macht 150 % Schaden; Mondschleier schützt 4 s mit 25 % ihrer Lebenspunkte.",
|
||||||
|
AbilityText = "Sichelwurf: ab 4 s alle 6 s 90 % Schaden an ihrem Ziel und bis zu 2 weiteren Gegnern in 2,5 m.",
|
||||||
|
UltimateName = "Mondsicheltanz", UltimateText = "Einmal pro Kampf, frühestens nach 2 s: 220 % Schaden an bis zu 5 Gegnern in 5 m, die 2 s um 30 % verlangsamt werden; danach Mondschleier. Wann er ausgelöst wird, legst du in der Planung fest.", Base = new UnitDef { MaxHp = 1450.0, Damage = 42.0, AttackType = 0, ArmorType = 0, AttackRange = 1.2, Speed = 2.8, Ability = "sylvara", AbilityDescription = "Mondsprung auf ungeschützte Fernkämpfer · Sichelwurf alle 6 s · Ultimate Mondsicheltanz nach Planungsregel." } },
|
||||||
|
// H2: Brunhild, the second hero of the champions concept.
|
||||||
|
new HeroSpec { Id = "held_brunhild", Name = "Brunhild", Title = "Die Walküre", Model = "brunhild", Cost = 260, RoleText = "Heldenjägerin / Nahkampf", Provisional = false, Summary = "Markiert mit dem Speer, stürzt sich auf Helden und betäubt mit dem Walkürensturz.",
|
||||||
|
PassiveText = "Heldenjägerin: +25 % Schaden gegen Helden und Angriffschampions.",
|
||||||
|
AbilityText = "Speerwurf: ab 3 s alle 6 s 120 % Schaden am fernsten Gegner in 7 m; er ist 4 s markiert und nimmt 15 % mehr Schaden.",
|
||||||
|
UltimateName = "Walkürensturz", UltimateText = "Einmal pro Kampf, frühestens nach 2 s: Sprung auf ihr Ziel (ein Held oder der markierte Gegner zuerst), 200 % Schaden an allen Gegnern in 3 m und 1 s Betäubung (Bosse sind immun); danach Walkürenschild (30 % ihrer Lebenspunkte, 5 s). Wann sie springt, legst du in der Planung fest.",
|
||||||
|
Base = new UnitDef { MaxHp = 2000.0, Damage = 42.0, AttackType = 1, ArmorType = 1, AttackRange = 2.0, Speed = 2.4, Ability = "brunhild", AbilityDescription = "Heldenjägerin · Speerwurf markiert alle 6 s · Ultimate Walkürensturz nach Planungsregel." } }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/// <summary>Heroes of the Godot reference; ContentTests compares exactly these, later heroes follow them.</summary>
|
||||||
|
public static readonly string[] ReferenceHeroes = { "held_ringborke", "held_quellgeflecht", "held_funkenlanze" };
|
||||||
|
|
||||||
public static readonly int[] LevelXp = { 0, 120, 280, 480, 720, 1000, 1320, 1680, 2080, 2520 };
|
public static readonly int[] LevelXp = { 0, 120, 280, 480, 720, 1000, 1320, 1680, 2080, 2520 };
|
||||||
public static readonly int[] TalentLevels = { 3, 6 };
|
public static readonly int[] TalentLevels = { 3, 6 };
|
||||||
|
|
||||||
|
|
@ -78,18 +92,70 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
new[] { new TalentOption("durchschlag", "Durchschlag", "Einzelziel: jeder 4. Treffer ×2,1 statt ×1,5."), new TalentOption("splitterschuss", "Splitterschuss", "Fläche: jeder 4. Treffer zusätzlich 45 % an bis zu 3 Gegner in 2 m.") },
|
new[] { new TalentOption("durchschlag", "Durchschlag", "Einzelziel: jeder 4. Treffer ×2,1 statt ×1,5."), new TalentOption("splitterschuss", "Splitterschuss", "Fläche: jeder 4. Treffer zusätzlich 45 % an bis zu 3 Gegner in 2 m.") },
|
||||||
new[] { new TalentOption("fernsicht", "Fernsicht", "+1,5 m Reichweite."), new TalentOption("glutsalve", "Glutsalve", "+20 % Angriffstempo.") }
|
new[] { new TalentOption("fernsicht", "Fernsicht", "+1,5 m Reichweite."), new TalentOption("glutsalve", "Glutsalve", "+20 % Angriffstempo.") }
|
||||||
|
} },
|
||||||
|
{ "held_sylvara", new[]
|
||||||
|
{
|
||||||
|
new[] { new TalentOption("mondsilber", "Mondsilber", "Einzelziel: Der Sichelwurf trifft nur das Ziel, dafür mit 200 % statt 90 % Schaden."), new TalentOption("sichelsturm", "Sichelsturm", "Fläche: Der Sichelwurf trifft bis zu 5 statt 3 Gegner in 3,5 m.") },
|
||||||
|
new[] { new TalentOption("neumond", "Neumond", "+20 % Angriffstempo."), new TalentOption("vollmond", "Vollmond", "Mondsicheltanz: bis zu 7 statt 5 Ziele, 280 % statt 220 % Schaden.") }
|
||||||
|
} },
|
||||||
|
{ "held_brunhild", new[]
|
||||||
|
{
|
||||||
|
new[] { new TalentOption("walkuerenblut", "Walkürenblut", "Einzelziel: Der Speerwurf macht gegen Helden und Champions doppelten Schaden."), new TalentOption("speerregen", "Speerregen", "Fläche: Der Speerwurf trifft die drei fernsten Gegner in 7 m.") },
|
||||||
|
new[] { new TalentOption("rabenschwinge", "Rabenschwinge", "+20 % Angriffstempo."), new TalentOption("goetterdaemmerung", "Götterdämmerung", "Walkürensturz: 2 s Betäubung in 4 m statt 1 s in 3 m.") }
|
||||||
} }
|
} }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// H1: cosmetic skins per hero (docs/luneraria/CHAMPIONS-KONZEPT.md, skin system). The
|
||||||
|
/// standard look is "" and not listed. A skin swaps materials (AI_Sylvara -> AI_Sylvara_Blutmond);
|
||||||
|
/// silhouette, weapon type and team accent stay, the rules never read it.
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Dictionary<string, TalentOption[]> HeroSkins = new Dictionary<string, TalentOption[]>
|
||||||
|
{
|
||||||
|
{ "held_sylvara", new[] { new TalentOption("blutmond", "Blutmond", "Variante: rote Klingen und Runen, dunkelrotes Tuch, nachgedunkeltes Silber.") } },
|
||||||
|
{ "held_brunhild", new[] { new TalentOption("eiswalkuere", "Eiswalküre", "Variante: eisblauer Umhang und Federn statt Rot, frostiges Gold.") } },
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// H1: trigger rules of a hero's ultimate, chosen in planning; the first is the default.
|
||||||
|
/// Heroes without an entry have no ultimate. The rule decides when the single charge per
|
||||||
|
/// combat phase is released; the combat itself stays automatic.
|
||||||
|
/// </summary>
|
||||||
|
public static readonly Dictionary<string, TalentOption[]> UltimateRules = new Dictionary<string, TalentOption[]>
|
||||||
|
{
|
||||||
|
{ "held_sylvara", new[]
|
||||||
|
{
|
||||||
|
new TalentOption("gruppe", "Gruppe", "Sobald mindestens 3 Gegner in 4 m stehen."),
|
||||||
|
new TalentOption("zweite_reihe", "Zweite Reihe", "Sobald ein Fernkämpfer oder Unterstützer in 5 m steht."),
|
||||||
|
new TalentOption("notfall", "Notfall", "Wenn Sylvara unter 40 % Leben fällt und ein Gegner in 4 m steht."),
|
||||||
|
new TalentOption("sofort", "Sofort", "Beim ersten Gegner in 4 m."),
|
||||||
|
} },
|
||||||
|
{ "held_brunhild", new[]
|
||||||
|
{
|
||||||
|
new TalentOption("gruppe", "Gruppe", "Sobald mindestens 3 Gegner in 4 m um ihr Ziel stehen."),
|
||||||
|
new TalentOption("held", "Heldenjagd", "Sobald ein gegnerischer Held oder Angriffschampion in 7 m steht."),
|
||||||
|
new TalentOption("notfall", "Notfall", "Wenn Brunhild unter 40 % Leben fällt und ein Gegner in 7 m steht."),
|
||||||
|
new TalentOption("sofort", "Sofort", "Beim ersten Gegner in 7 m."),
|
||||||
|
} },
|
||||||
|
};
|
||||||
|
|
||||||
public static readonly OrderedMap<string, ItemSpec> Items = Ordered(
|
public static readonly OrderedMap<string, ItemSpec> Items = Ordered(
|
||||||
new ItemSpec { Id = "basaltschild", Name = "Basaltschild", Cost = 180, Text = "+350 Lebenspunkte", HpFlat = 350.0 },
|
new ItemSpec { Id = "basaltschild", Name = "Basaltschild", Cost = 180, Text = "+350 Lebenspunkte", HpFlat = 350.0 },
|
||||||
new ItemSpec { Id = "glutklinge", Name = "Glutklinge", Cost = 180, Text = "+18 % Schaden", Damage = 0.18 },
|
new ItemSpec { Id = "glutklinge", Name = "Glutklinge", Cost = 180, Text = "+18 % Schaden", Damage = 0.18 },
|
||||||
new ItemSpec { Id = "rankenmantel", Name = "Rankenmantel", Cost = 200, Text = "+10 % Schadensminderung", Reduction = 0.1 },
|
new ItemSpec { Id = "rankenmantel", Name = "Rankenmantel", Cost = 200, Text = "+10 % Schadensminderung", Reduction = 0.1 },
|
||||||
new ItemSpec { Id = "funkenfokus", Name = "Funkenfokus", Cost = 200, Text = "+15 % Angriffstempo", AttackSpeed = 0.15 },
|
new ItemSpec { Id = "funkenfokus", Name = "Funkenfokus", Cost = 200, Text = "+15 % Angriffstempo", AttackSpeed = 0.15 },
|
||||||
new ItemSpec { Id = "quellamulett", Name = "Quellamulett", Cost = 220, Text = "Regeneriert 1,5 % der Lebenspunkte pro Sekunde", Regen = 0.015 },
|
new ItemSpec { Id = "quellamulett", Name = "Quellamulett", Cost = 220, Text = "Regeneriert 1,5 % der Lebenspunkte pro Sekunde", Regen = 0.015 },
|
||||||
new ItemSpec { Id = "kristallsplitter", Name = "Kristallsplitter", Cost = 260, Text = "Jeder Treffer: 25 % an bis zu 2 Gegner in 1,5 m · ab Stufe 3", Splash = 0.25, MinLevel = 3 }
|
new ItemSpec { Id = "kristallsplitter", Name = "Kristallsplitter", Cost = 260, Text = "Jeder Treffer: 25 % an bis zu 2 Gegner in 1,5 m · ab Stufe 3", Splash = 0.25, MinLevel = 3 },
|
||||||
|
// S2 recipes (extended rules only; Dota 2 / League of Legends): two items plus a fee become one stronger item.
|
||||||
|
new ItemSpec { Id = "bollwerk", Name = "Bollwerk", Cost = 500, Text = "Rezept: Basaltschild + Rankenmantel + 120 · +600 Lebenspunkte, +15 % Schadensminderung", HpFlat = 600.0, Reduction = 0.15, Parts = new[] { "basaltschild", "rankenmantel" }, RecipeFee = 120 },
|
||||||
|
new ItemSpec { Id = "glutsturm", Name = "Glutsturm", Cost = 520, Text = "Rezept: Glutklinge + Funkenfokus + 140 · +25 % Schaden, +22 % Angriffstempo", Damage = 0.25, AttackSpeed = 0.22, Parts = new[] { "glutklinge", "funkenfokus" }, RecipeFee = 140 },
|
||||||
|
new ItemSpec { Id = "quellherz", Name = "Quellherz", Cost = 520, Text = "Rezept: Quellamulett + Basaltschild + 120 · +450 Lebenspunkte, regeneriert 2,2 % pro Sekunde", HpFlat = 450.0, Regen = 0.022, Parts = new[] { "quellamulett", "basaltschild" }, RecipeFee = 120 },
|
||||||
|
new ItemSpec { Id = "splitterkrone", Name = "Splitterkrone", Cost = 600, Text = "Rezept: Kristallsplitter + Glutklinge + 160 · +20 % Schaden; jeder Treffer 35 % an bis zu 2 Gegner in 1,5 m · ab Stufe 5", Damage = 0.20, Splash = 0.35, MinLevel = 5, Parts = new[] { "kristallsplitter", "glutklinge" }, RecipeFee = 160 }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/// <summary>Items of the Godot reference; ContentTests compares exactly these, the S2 recipes follow them.</summary>
|
||||||
|
public static readonly string[] ReferenceItems = { "basaltschild", "glutklinge", "rankenmantel", "funkenfokus", "quellamulett", "kristallsplitter" };
|
||||||
|
|
||||||
public static readonly OrderedMap<string, ChampionSpec> Champions = Ordered(
|
public static readonly OrderedMap<string, ChampionSpec> Champions = Ordered(
|
||||||
new ChampionSpec { Id = "ch_schutz", Name = "Rostschieber", RoleText = "Schutz", Model = "s02", Cost = 150, Base = "s02", Text = "Schildträger: startet mit Schild, gibt alle 6 s bis zu 4 Verbündeten in 4 m einen Schild von 120.", ViewScale = 1.25 },
|
new ChampionSpec { Id = "ch_schutz", Name = "Rostschieber", RoleText = "Schutz", Model = "s02", Cost = 150, Base = "s02", Text = "Schildträger: startet mit Schild, gibt alle 6 s bis zu 4 Verbündeten in 4 m einen Schild von 120.", ViewScale = 1.25 },
|
||||||
new ChampionSpec { Id = "ch_druck", Name = "Dunstsänger", RoleText = "Druck auf Unterstützer", Model = "s03", Cost = 150, Base = "s03", Text = "Sucht Unterstützer und Fernkämpfer und verlangsamt deren Angriffe.", ViewScale = 1.25, Priority = "support" },
|
new ChampionSpec { Id = "ch_druck", Name = "Dunstsänger", RoleText = "Druck auf Unterstützer", Model = "s03", Cost = 150, Base = "s03", Text = "Sucht Unterstützer und Fernkämpfer und verlangsamt deren Angriffe.", ViewScale = 1.25, Priority = "support" },
|
||||||
|
|
@ -98,7 +164,7 @@ namespace Luneraria.Core
|
||||||
|
|
||||||
/// <summary>Base troop id to role; iteration order matters for RoleOf (first match).</summary>
|
/// <summary>Base troop id to role; iteration order matters for RoleOf (first match).</summary>
|
||||||
public static readonly OrderedMap<string, string> MatchRoles = Pairs("g01", "melee", "g03", "front", "g05", "ranged", "g07", "splash", "g09", "support", "w01", "melee", "w03", "front", "w05", "ranged", "w07", "splash", "w09", "support");
|
public static readonly OrderedMap<string, string> MatchRoles = Pairs("g01", "melee", "g03", "front", "g05", "ranged", "g07", "splash", "g09", "support", "w01", "melee", "w03", "front", "w05", "ranged", "w07", "splash", "w09", "support");
|
||||||
public static readonly OrderedMap<string, string> HeroRoles = Pairs("held_ringborke", "front", "held_quellgeflecht", "support", "held_funkenlanze", "ranged");
|
public static readonly OrderedMap<string, string> HeroRoles = Pairs("held_ringborke", "front", "held_quellgeflecht", "support", "held_funkenlanze", "ranged", "held_sylvara", "melee", "held_brunhild", "melee");
|
||||||
public static readonly string[] RowOrder = { "front", "melee", "splash", "ranged", "support" };
|
public static readonly string[] RowOrder = { "front", "melee", "splash", "ranged", "support" };
|
||||||
public static readonly string[] BotNames = { "Eichrufer", "Aschenzunge", "Quellwächter", "Glutfaust", "Moosauge", "Basaltherz", "Rindenkrone", "Funkenschritt" };
|
public static readonly string[] BotNames = { "Eichrufer", "Aschenzunge", "Quellwächter", "Glutfaust", "Moosauge", "Basaltherz", "Rindenkrone", "Funkenschritt" };
|
||||||
public static readonly string[] WavesMelee = { "e01", "e02", "e05" };
|
public static readonly string[] WavesMelee = { "e01", "e02", "e05" };
|
||||||
|
|
@ -115,5 +181,14 @@ namespace Luneraria.Core
|
||||||
new BotProfile { Name = "teamhilfe", Front = 0.3, Melee = 0.2, Ranged = 0.25, Splash = 0.1, Support = 0.15, UpgradeFrom = 6, SupportLane = 0.22, Hero = "held_quellgeflecht", HeroRound = 4, Items = new[] { "quellamulett", "rankenmantel", "basaltschild" }, TalentChoices = new[] { 1, 0 }, Champion = "ch_schutz" },
|
new BotProfile { Name = "teamhilfe", Front = 0.3, Melee = 0.2, Ranged = 0.25, Splash = 0.1, Support = 0.15, UpgradeFrom = 6, SupportLane = 0.22, Hero = "held_quellgeflecht", HeroRound = 4, Items = new[] { "quellamulett", "rankenmantel", "basaltschild" }, TalentChoices = new[] { 1, 0 }, Champion = "ch_schutz" },
|
||||||
new BotProfile { Name = "bossjagd", Front = 0.35, Melee = 0.25, Ranged = 0.2, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.1, Hero = "held_ringborke", HeroRound = 3, Items = new[] { "glutklinge", "basaltschild", "rankenmantel" }, TalentChoices = new[] { 1, 1 }, Champion = "ch_belagerung", BossFrom = 5, BossTroops = 5 }
|
new BotProfile { Name = "bossjagd", Front = 0.35, Melee = 0.25, Ranged = 0.2, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.1, Hero = "held_ringborke", HeroRound = 3, Items = new[] { "glutklinge", "basaltschild", "rankenmantel" }, TalentChoices = new[] { 1, 1 }, Champion = "ch_belagerung", BossFrom = 5, BossTroops = 5 }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// H1: profiles outside the seed rotation (adding them there would change every reference
|
||||||
|
/// bot match). Usable as a fixed profile per slot (MatchOptions.Profiles, balance runs).
|
||||||
|
/// </summary>
|
||||||
|
public static readonly OrderedMap<string, BotProfile> ExtraBotProfiles = Ordered(
|
||||||
|
new BotProfile { Name = "assassine", Front = 0.3, Melee = 0.25, Ranged = 0.25, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.0, Hero = "held_sylvara", HeroRound = 3, Items = new[] { "glutklinge", "funkenfokus", "basaltschild" }, TalentChoices = new[] { 1, 0 }, Champion = "" },
|
||||||
|
new BotProfile { Name = "walkuere", Front = 0.3, Melee = 0.25, Ranged = 0.25, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.0, Hero = "held_brunhild", HeroRound = 3, Items = new[] { "glutklinge", "basaltschild", "funkenfokus" }, TalentChoices = new[] { 0, 1 }, Champion = "" }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,10 @@ namespace Luneraria.Core
|
||||||
public double DamageBonus;
|
public double DamageBonus;
|
||||||
public double ReductionBonus;
|
public double ReductionBonus;
|
||||||
public double AttackSpeedBonus;
|
public double AttackSpeedBonus;
|
||||||
|
/// <summary>Heroes with an ultimate (H1): the trigger rule chosen in planning, "" = none.</summary>
|
||||||
|
public string UltimateRule = "";
|
||||||
|
/// <summary>H1: cosmetic skin of a hero ("" = standard); the view swaps materials, the rules never read it.</summary>
|
||||||
|
public string Skin = "";
|
||||||
// Attack champions.
|
// Attack champions.
|
||||||
public string ChampionId = "";
|
public string ChampionId = "";
|
||||||
public string Priority = "";
|
public string Priority = "";
|
||||||
|
|
@ -65,6 +69,11 @@ namespace Luneraria.Core
|
||||||
public string RoleText = "";
|
public string RoleText = "";
|
||||||
public bool Provisional;
|
public bool Provisional;
|
||||||
public string Summary = "";
|
public string Summary = "";
|
||||||
|
/// <summary>H1 heroes describe their own kit; reference heroes show the ability of their troop model.</summary>
|
||||||
|
public string PassiveText = "";
|
||||||
|
public string AbilityText = "";
|
||||||
|
public string UltimateName = "";
|
||||||
|
public string UltimateText = "";
|
||||||
/// <summary>Level-1 values without items and talents.</summary>
|
/// <summary>Level-1 values without items and talents.</summary>
|
||||||
public UnitDef Base = new UnitDef();
|
public UnitDef Base = new UnitDef();
|
||||||
}
|
}
|
||||||
|
|
@ -96,6 +105,11 @@ namespace Luneraria.Core
|
||||||
public double Regen;
|
public double Regen;
|
||||||
public double Splash;
|
public double Splash;
|
||||||
public int MinLevel = 1;
|
public int MinLevel = 1;
|
||||||
|
/// <summary>S2 recipe items (extended rules): the two items it is made of and the fee on top; Cost is the sum.</summary>
|
||||||
|
public string[] Parts = new string[0];
|
||||||
|
public int RecipeFee;
|
||||||
|
|
||||||
|
public bool IsRecipe { get { return Parts.Length > 0; } }
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class ChampionSpec
|
public sealed class ChampionSpec
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,59 @@ namespace Luneraria.Core
|
||||||
public double OuterTowerFraction = 0.35;
|
public double OuterTowerFraction = 0.35;
|
||||||
public double TowerSideOffset = 3.4;
|
public double TowerSideOffset = 3.4;
|
||||||
|
|
||||||
|
// S1: extended rules (MatchOptions.Extended; the reference rules ignore all of these).
|
||||||
|
/// <summary>Legion TD 2: a booked attack champion raises the booker's income by cost / this, for good.</summary>
|
||||||
|
public int ChampionIncomeDivisor = 12;
|
||||||
|
/// <summary>S3: share of a champion's bounty the defenders get under the extended rules (Legion TD 2: less than the send costs).</summary>
|
||||||
|
public double ChampionBountyShare = 0.5;
|
||||||
|
/// <summary>Dota 2 barracks: waves of a team on a lane whose enemy inner tower fell get stronger.</summary>
|
||||||
|
public double BarracksBoost = 0.25;
|
||||||
|
public int BarracksExtraMonsters = 1;
|
||||||
|
/// <summary>Dota 2 buyback, adapted: a fallen hero starts the next combat exhausted, unless bought back.</summary>
|
||||||
|
public double ExhaustedHp = 0.6;
|
||||||
|
public int BuybackBase = 60;
|
||||||
|
public int BuybackPerLevel = 20;
|
||||||
|
/// <summary>League of Legends dragon souls: each grotto victory blesses the team, up to the soul.</summary>
|
||||||
|
public double BlessingStep = 0.04;
|
||||||
|
public int BlessingMax = 4;
|
||||||
|
/// <summary>Moon soul (all stacks): heroes regenerate this share of their health per second.</summary>
|
||||||
|
public double SoulRegen = 0.01;
|
||||||
|
|
||||||
|
// S2: extended rules.
|
||||||
|
/// <summary>Dota 2 glyph: a planned lane's towers turn invulnerable for this long once one falls below half health.</summary>
|
||||||
|
public double GlyphSeconds = 5.0;
|
||||||
|
public double GlyphThreshold = 0.5;
|
||||||
|
public int GlyphCooldown = 4;
|
||||||
|
/// <summary>Legion TD 2 king: Ancient levels bought by the team's players; price per level, attack and repair per level.</summary>
|
||||||
|
public int CoreLevelMax = 3;
|
||||||
|
public int CoreLevelPrice = 150;
|
||||||
|
public double[] CoreDamage = { 0.0, 45.0, 75.0, 110.0 };
|
||||||
|
public double CoreRange = 7.5;
|
||||||
|
public double CoreRepair = 1000.0;
|
||||||
|
|
||||||
|
// S3: neutral camps (League of Legends buff camps) under the extended rules.
|
||||||
|
/// <summary>A guardian stands at the middle of every lane in rounds divisible by this.</summary>
|
||||||
|
public int CampEvery = 3;
|
||||||
|
public double CampHp = 1500.0;
|
||||||
|
public double CampDamage = 30.0;
|
||||||
|
public double CampRange = 2.5;
|
||||||
|
/// <summary>Units within this distance decide which team takes a fallen guardian.</summary>
|
||||||
|
public double CampClaimRadius = 8.0;
|
||||||
|
/// <summary>Combats a lane buff lasts; Glutsegen damage, Mondschild shield share, Beute gold per player.</summary>
|
||||||
|
public int CampBuffRounds = 2;
|
||||||
|
public double CampDamageBuff = 0.10;
|
||||||
|
public double CampShieldBuff = 0.10;
|
||||||
|
public int CampLootGold = 50;
|
||||||
|
/// <summary>S3 wards (Dota 2): price and rounds a ward watches its lane.</summary>
|
||||||
|
public int WardCost = 40;
|
||||||
|
public int WardRounds = 3;
|
||||||
|
|
||||||
public static LuneBalance Default() { return new LuneBalance(); }
|
public static LuneBalance Default() { return new LuneBalance(); }
|
||||||
|
|
||||||
|
public int CoreUpgradeCost(int level) { return CoreLevelPrice * (level + 1); }
|
||||||
|
|
||||||
|
public int BuybackCost(int level) { return BuybackBase + BuybackPerLevel * level; }
|
||||||
|
|
||||||
public int RoundIncome(int roundNumber)
|
public int RoundIncome(int roundNumber)
|
||||||
{
|
{
|
||||||
return BaseIncome + GdMath.Min(IncomeGrowthCap, IncomePerRound * GdMath.Max(0, roundNumber - 1));
|
return BaseIncome + GdMath.Min(IncomeGrowthCap, IncomePerRound * GdMath.Max(0, roundNumber - 1));
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,51 @@ namespace Luneraria.Core
|
||||||
return ContentData.Talents[heroId];
|
return ContentData.Talents[heroId];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>H1: delay before an ultimate may fire in a combat phase.</summary>
|
||||||
|
public const double UltimateDelay = 2.0;
|
||||||
|
|
||||||
|
/// <summary>H1: trigger rules of the hero's ultimate (first = default); empty without an ultimate.</summary>
|
||||||
|
public static TalentOption[] UltimateRulesOf(string heroId)
|
||||||
|
{
|
||||||
|
TalentOption[] rules;
|
||||||
|
return ContentData.UltimateRules.TryGetValue(heroId ?? "", out rules) ? rules : new TalentOption[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool HasUltimate(string heroId) { return UltimateRulesOf(heroId).Length > 0; }
|
||||||
|
|
||||||
|
/// <summary>H1: cosmetic skins of a hero besides the standard look.</summary>
|
||||||
|
public static TalentOption[] SkinsOf(string heroId)
|
||||||
|
{
|
||||||
|
TalentOption[] skins;
|
||||||
|
return ContentData.HeroSkins.TryGetValue(heroId ?? "", out skins) ? skins : new TalentOption[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ValidSkin(string heroId, string skin)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(skin))
|
||||||
|
return true;
|
||||||
|
foreach (TalentOption option in SkinsOf(heroId))
|
||||||
|
{
|
||||||
|
if (option.Id == skin)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>The rule a hero's ultimate follows: the chosen one if valid, else the default, "" without ultimate.</summary>
|
||||||
|
public static string UltimateRuleFor(HeroState hero)
|
||||||
|
{
|
||||||
|
TalentOption[] rules = UltimateRulesOf(hero.HeroId);
|
||||||
|
if (rules.Length == 0)
|
||||||
|
return "";
|
||||||
|
foreach (TalentOption rule in rules)
|
||||||
|
{
|
||||||
|
if (rule.Id == hero.Ultimate)
|
||||||
|
return rule.Id;
|
||||||
|
}
|
||||||
|
return rules[0].Id;
|
||||||
|
}
|
||||||
|
|
||||||
public static int LevelFor(int xp)
|
public static int LevelFor(int xp)
|
||||||
{
|
{
|
||||||
int level = 1;
|
int level = 1;
|
||||||
|
|
@ -85,8 +130,10 @@ namespace Luneraria.Core
|
||||||
reduction += 0.15;
|
reduction += 0.15;
|
||||||
if (hero.Talents.Contains("fernsicht"))
|
if (hero.Talents.Contains("fernsicht"))
|
||||||
definition.AttackRange = definition.AttackRange + 1.5;
|
definition.AttackRange = definition.AttackRange + 1.5;
|
||||||
if (hero.Talents.Contains("glutsalve"))
|
if (hero.Talents.Contains("glutsalve") || hero.Talents.Contains("neumond") || hero.Talents.Contains("rabenschwinge"))
|
||||||
attackSpeed += 0.20;
|
attackSpeed += 0.20;
|
||||||
|
definition.UltimateRule = UltimateRuleFor(hero);
|
||||||
|
definition.Skin = ValidSkin(hero.HeroId, hero.Skin) ? hero.Skin ?? "" : "";
|
||||||
definition.Talents = new List<string>(hero.Talents);
|
definition.Talents = new List<string>(hero.Talents);
|
||||||
definition.DamageBonus = damageBonus;
|
definition.DamageBonus = damageBonus;
|
||||||
definition.ReductionBonus = reduction;
|
definition.ReductionBonus = reduction;
|
||||||
|
|
|
||||||
|
|
@ -571,6 +571,7 @@ namespace Luneraria.Core
|
||||||
player.Gold = row.Gold;
|
player.Gold = row.Gold;
|
||||||
player.Ready = row.Ready;
|
player.Ready = row.Ready;
|
||||||
player.Earned = row.Earned;
|
player.Earned = row.Earned;
|
||||||
|
player.IncomeBonus = row.IncomeBonus;
|
||||||
player.Spent = row.Spent;
|
player.Spent = row.Spent;
|
||||||
player.NextSeq = row.NextSeq;
|
player.NextSeq = row.NextSeq;
|
||||||
player.Roster = new List<RosterEntry>();
|
player.Roster = new List<RosterEntry>();
|
||||||
|
|
@ -621,6 +622,16 @@ namespace Luneraria.Core
|
||||||
MatchState.Boss.NextAvailableRound = source.NextAvailableRound;
|
MatchState.Boss.NextAvailableRound = source.NextAvailableRound;
|
||||||
MatchState.Boss.SettledRound = source.SettledRound;
|
MatchState.Boss.SettledRound = source.SettledRound;
|
||||||
MatchState.Boss.Claim = source.Claim != null ? source.Claim.Clone() : null;
|
MatchState.Boss.Claim = source.Claim != null ? source.Claim.Clone() : null;
|
||||||
|
if (source.Blessing != null && source.Blessing.Length == 2)
|
||||||
|
MatchState.Boss.Blessing = (int[])source.Blessing.Clone();
|
||||||
|
if (source.GlyphReady != null && source.GlyphReady.Length == 2)
|
||||||
|
MatchState.Boss.GlyphReady = (int[])source.GlyphReady.Clone();
|
||||||
|
if (source.CoreLevel != null && source.CoreLevel.Length == 2)
|
||||||
|
MatchState.Boss.CoreLevel = (int[])source.CoreLevel.Clone();
|
||||||
|
if (source.CampBuff != null && source.CampBuff.Length == 6)
|
||||||
|
MatchState.Boss.CampBuff = (int[])source.CampBuff.Clone();
|
||||||
|
if (source.Wards != null && source.Wards.Length == 6)
|
||||||
|
MatchState.Boss.Wards = (int[])source.Wards.Clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ApplyLobby(List<LobbyEntry> entries)
|
public void ApplyLobby(List<LobbyEntry> entries)
|
||||||
|
|
@ -697,6 +708,10 @@ namespace Luneraria.Core
|
||||||
unit.DeathTime = elapsed;
|
unit.DeathTime = elapsed;
|
||||||
unit.Alive = (flags & 1) != 0;
|
unit.Alive = (flags & 1) != 0;
|
||||||
unit.InRange = (flags & 2) != 0;
|
unit.InRange = (flags & 2) != 0;
|
||||||
|
// H1: leap and ultimate counters ride in the flag bits (8 bits each, compared for change only).
|
||||||
|
unit.LeapSerial = (flags >> 2) & 0xFF;
|
||||||
|
unit.UltimateSerial = (flags >> 10) & 0xFF;
|
||||||
|
unit.NetStunned = (flags & (1 << 18)) != 0;
|
||||||
unit.AttackProgress = data[baseIndex + 7];
|
unit.AttackProgress = data[baseIndex + 7];
|
||||||
unit.HitCount = (int)data[baseIndex + 8];
|
unit.HitCount = (int)data[baseIndex + 8];
|
||||||
unit.AttackSerial = (int)data[baseIndex + 9];
|
unit.AttackSerial = (int)data[baseIndex + 9];
|
||||||
|
|
@ -717,6 +732,13 @@ namespace Luneraria.Core
|
||||||
building.Hp = buildingHp[index];
|
building.Hp = buildingHp[index];
|
||||||
building.Alive = building.Hp > 0.0;
|
building.Alive = building.Hp > 0.0;
|
||||||
}
|
}
|
||||||
|
for (int team = 0; team < 2 && buildingHp.Length >= buildings.Count + 4; team++)
|
||||||
|
{
|
||||||
|
int lane = (int)buildingHp[buildings.Count + team * 2] - 1;
|
||||||
|
float left = buildingHp[buildings.Count + team * 2 + 1];
|
||||||
|
combat.GlyphLane[team] = lane >= 0 && lane < 3 ? LuneMap.Lanes[lane] : "";
|
||||||
|
combat.GlyphUntil[team] = lane >= 0 ? combat.Elapsed + left : -1.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -799,7 +821,7 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
if (!unit.IsMobile())
|
if (!unit.IsMobile())
|
||||||
continue;
|
continue;
|
||||||
int flags = (unit.Alive ? 1 : 0) | (unit.InRange ? 2 : 0);
|
int flags = (unit.Alive ? 1 : 0) | (unit.InRange ? 2 : 0) | ((unit.LeapSerial & 0xFF) << 2) | ((unit.UltimateSerial & 0xFF) << 10) | (unit.Stunned() ? 1 << 18 : 0);
|
||||||
data.Add(unit.Id);
|
data.Add(unit.Id);
|
||||||
data.Add((float)unit.Position.X);
|
data.Add((float)unit.Position.X);
|
||||||
data.Add((float)unit.Position.Y);
|
data.Add((float)unit.Position.Y);
|
||||||
|
|
@ -820,7 +842,19 @@ namespace Luneraria.Core
|
||||||
public float[] BuildingHpArray()
|
public float[] BuildingHpArray()
|
||||||
{
|
{
|
||||||
IReadOnlyList<BuildingDef> buildings = MatchState.Map.Buildings;
|
IReadOnlyList<BuildingDef> buildings = MatchState.Map.Buildings;
|
||||||
var data = new float[buildings.Count];
|
// S4: four more values after the buildings carry the running glyph of each team (lane
|
||||||
|
// index + 1, seconds left) so guests see the glyph ring; older guests ignore them.
|
||||||
|
var data = new float[buildings.Count + 4];
|
||||||
|
LuneCombat glyphs = MatchState.Phase == Phase.Combat ? MatchState.Combat : null;
|
||||||
|
for (int team = 0; team < 2 && glyphs != null; team++)
|
||||||
|
{
|
||||||
|
double left = glyphs.GlyphUntil[team] - glyphs.Elapsed;
|
||||||
|
if (glyphs.GlyphLane[team].Length > 0 && left > 0.0)
|
||||||
|
{
|
||||||
|
data[buildings.Count + team * 2] = LuneMap.LaneIndex(glyphs.GlyphLane[team]) + 1;
|
||||||
|
data[buildings.Count + team * 2 + 1] = (float)left;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (int index = 0; index < buildings.Count; index++)
|
for (int index = 0; index < buildings.Count; index++)
|
||||||
{
|
{
|
||||||
double hp;
|
double hp;
|
||||||
|
|
@ -854,7 +888,12 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
NextAvailableRound = MatchState.Boss.NextAvailableRound,
|
NextAvailableRound = MatchState.Boss.NextAvailableRound,
|
||||||
SettledRound = MatchState.Boss.SettledRound,
|
SettledRound = MatchState.Boss.SettledRound,
|
||||||
Claim = MatchState.Boss.Claim != null ? MatchState.Boss.Claim.Clone() : null
|
Claim = MatchState.Boss.Claim != null ? MatchState.Boss.Claim.Clone() : null,
|
||||||
|
Blessing = (int[])MatchState.Boss.Blessing.Clone(),
|
||||||
|
GlyphReady = (int[])MatchState.Boss.GlyphReady.Clone(),
|
||||||
|
CoreLevel = (int[])MatchState.Boss.CoreLevel.Clone(),
|
||||||
|
CampBuff = (int[])MatchState.Boss.CampBuff.Clone(),
|
||||||
|
Wards = (int[])MatchState.Boss.Wards.Clone()
|
||||||
};
|
};
|
||||||
if (MatchState.Combat != null)
|
if (MatchState.Combat != null)
|
||||||
state.DestroyedCores.AddRange(MatchState.Combat.DestroyedCores);
|
state.DestroyedCores.AddRange(MatchState.Combat.DestroyedCores);
|
||||||
|
|
@ -869,6 +908,7 @@ namespace Luneraria.Core
|
||||||
Gold = player.Gold,
|
Gold = player.Gold,
|
||||||
Ready = player.Ready,
|
Ready = player.Ready,
|
||||||
Earned = player.Earned,
|
Earned = player.Earned,
|
||||||
|
IncomeBonus = player.IncomeBonus,
|
||||||
Spent = player.Spent,
|
Spent = player.Spent,
|
||||||
NextSeq = player.NextSeq,
|
NextSeq = player.NextSeq,
|
||||||
Hero = player.Hero != null ? player.Hero.Clone() : null,
|
Hero = player.Hero != null ? player.Hero.Clone() : null,
|
||||||
|
|
@ -927,7 +967,7 @@ namespace Luneraria.Core
|
||||||
|
|
||||||
MatchOptions PublicOptions()
|
MatchOptions PublicOptions()
|
||||||
{
|
{
|
||||||
var options = new MatchOptions { Seed = MatchState != null ? MatchState.SeedValue : 1, HumanSlot = LocalSlot };
|
var options = new MatchOptions { Seed = MatchState != null ? MatchState.SeedValue : 1, HumanSlot = LocalSlot, Extended = MatchState != null && MatchState.Extended };
|
||||||
if (MatchState != null)
|
if (MatchState != null)
|
||||||
{
|
{
|
||||||
foreach (Player player in MatchState.Players)
|
foreach (Player player in MatchState.Players)
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ namespace Luneraria.Core
|
||||||
public Draft Draft;
|
public Draft Draft;
|
||||||
/// <summary>Undo stack size of the receiving seat (0 for others).</summary>
|
/// <summary>Undo stack size of the receiving seat (0 for others).</summary>
|
||||||
public int Undo;
|
public int Undo;
|
||||||
|
/// <summary>S1: permanent champion income (public, like the champion bookings).</summary>
|
||||||
|
public int IncomeBonus;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Public state of the match for one seat (rpc_state).</summary>
|
/// <summary>Public state of the match for one seat (rpc_state).</summary>
|
||||||
|
|
|
||||||
|
|
@ -18,14 +18,24 @@ namespace Luneraria.Core
|
||||||
// A match may fix the profile per slot (balance runs); otherwise a seed-based rotation.
|
// A match may fix the profile per slot (balance runs); otherwise a seed-based rotation.
|
||||||
if (match.BotProfiles.Count == 6)
|
if (match.BotProfiles.Count == 6)
|
||||||
return match.BotProfiles[slot];
|
return match.BotProfiles[slot];
|
||||||
IReadOnlyList<string> names = ContentData.BotProfiles.Keys;
|
// S1: with extended rules the rotation also holds the profiles of later heroes (Sylvara).
|
||||||
return names[(slot * 7 + match.SeedValue) % names.Count];
|
if (!match.Extended)
|
||||||
|
{
|
||||||
|
IReadOnlyList<string> reference = ContentData.BotProfiles.Keys;
|
||||||
|
return reference[(slot * 7 + match.SeedValue) % reference.Count];
|
||||||
|
}
|
||||||
|
var names = new List<string>(ContentData.BotProfiles.Keys);
|
||||||
|
names.AddRange(ContentData.ExtraBotProfiles.Keys);
|
||||||
|
// S3 fix: with seven profiles the reference step 7 gave every seat the same profile.
|
||||||
|
return names[(slot * 5 + match.SeedValue) % names.Count];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Plan(LuneMatch match, int slot, string profileName = "")
|
public static void Plan(LuneMatch match, int slot, string profileName = "")
|
||||||
{
|
{
|
||||||
string name = string.IsNullOrEmpty(profileName) ? ProfileFor(match, slot) : profileName;
|
string name = string.IsNullOrEmpty(profileName) ? ProfileFor(match, slot) : profileName;
|
||||||
BotProfile profile = ContentData.BotProfiles[name];
|
BotProfile profile;
|
||||||
|
if (!ContentData.BotProfiles.TryGetValue(name, out profile))
|
||||||
|
profile = ContentData.ExtraBotProfiles[name];
|
||||||
Player player = match.Players[slot];
|
Player player = match.Players[slot];
|
||||||
List<string> ids = match.BaseIds(player.Bund);
|
List<string> ids = match.BaseIds(player.Bund);
|
||||||
var roles = new Dictionary<string, string>();
|
var roles = new Dictionary<string, string>();
|
||||||
|
|
@ -35,6 +45,17 @@ namespace Luneraria.Core
|
||||||
// Items and champions are planned before the army so the roster cannot drain the reserve.
|
// Items and champions are planned before the army so the roster cannot drain the reserve.
|
||||||
PlanItems(match, slot, profile, 110);
|
PlanItems(match, slot, profile, 110);
|
||||||
PlanChampion(match, slot, profile);
|
PlanChampion(match, slot, profile);
|
||||||
|
// S2 team actions come before the army too, so a threatened base gets its Ancient level.
|
||||||
|
if (match.Extended)
|
||||||
|
PlanTeam(match, slot);
|
||||||
|
// S3 (extended rules): from its hero round a bot saves for the hero instead of buying troops
|
||||||
|
// (the reference bots spend everything and recruit around round 11).
|
||||||
|
if (match.Extended && player.Draft.Hero == null && match.RoundNumber >= profile.HeroRound && player.Draft.Roster.Count >= 3)
|
||||||
|
{
|
||||||
|
PlanBoss(match, slot, profile);
|
||||||
|
match.SetReady(slot);
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (int guard = 0; guard < 40; guard++)
|
for (int guard = 0; guard < 40; guard++)
|
||||||
{
|
{
|
||||||
List<RosterEntry> roster = player.Draft.Roster;
|
List<RosterEntry> roster = player.Draft.Roster;
|
||||||
|
|
@ -74,6 +95,9 @@ namespace Luneraria.Core
|
||||||
match.Submit(slot, Command.HeroBuy(profile.Hero));
|
match.Submit(slot, Command.HeroBuy(profile.Hero));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// S1: buy an exhausted hero back while the army keeps a reserve.
|
||||||
|
if (hero.Exhausted && match.Extended && player.Draft.Gold >= match.BuybackCost(hero) + 150)
|
||||||
|
match.Submit(slot, Command.Buyback());
|
||||||
int level = LuneContent.LevelFor(hero.Xp);
|
int level = LuneContent.LevelFor(hero.Xp);
|
||||||
for (int tier = 0; tier < LuneContent.TalentLevels.Length; tier++)
|
for (int tier = 0; tier < LuneContent.TalentLevels.Length; tier++)
|
||||||
{
|
{
|
||||||
|
|
@ -82,9 +106,60 @@ namespace Luneraria.Core
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// S2 team actions (extended rules only): hold the glyph for the own lane when one of its
|
||||||
|
/// towers is below 60 %, and raise the Ancient once the base is under threat.
|
||||||
|
/// </summary>
|
||||||
|
static void PlanTeam(LuneMatch match, int slot)
|
||||||
|
{
|
||||||
|
Player player = match.Players[slot];
|
||||||
|
if (match.RoundNumber >= match.Boss.GlyphReady[player.Team])
|
||||||
|
{
|
||||||
|
foreach (BuildingDef definition in match.Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == player.Team && definition.Lane == player.Lane && definition.Tier != "core"
|
||||||
|
&& match.BuildingHp[definition.Id] > 0.0 && match.BuildingHp[definition.Id] < definition.MaxHp * 0.6)
|
||||||
|
{
|
||||||
|
match.Submit(slot, Command.Glyph(player.Lane));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int level = match.Boss.CoreLevel[player.Team] + player.Draft.CoreInvest;
|
||||||
|
bool threatened = false;
|
||||||
|
foreach (BuildingDef definition in match.Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == player.Team && definition.Tier == "inner" && match.BuildingHp[definition.Id] <= 0.0)
|
||||||
|
threatened = true;
|
||||||
|
}
|
||||||
|
if (threatened && level < match.Balance.CoreLevelMax && player.Draft.Gold >= match.Balance.CoreUpgradeCost(level))
|
||||||
|
match.Submit(slot, Command.CoreUpgrade());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>S2: both own towers of the player's lane stand above 70 % (an extra grotto hunter leaves only a safe lane).</summary>
|
||||||
|
static bool LaneSafe(LuneMatch match, Player player)
|
||||||
|
{
|
||||||
|
foreach (BuildingDef definition in match.Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == player.Team && definition.Lane == player.Lane && (definition.Tier == "outer" || definition.Tier == "inner")
|
||||||
|
&& match.BuildingHp[definition.Id] < definition.MaxHp * 0.7)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static void PlanItems(LuneMatch match, int slot, BotProfile profile, int reserve)
|
static void PlanItems(LuneMatch match, int slot, BotProfile profile, int reserve)
|
||||||
{
|
{
|
||||||
HeroState hero = match.Players[slot].Draft.Hero;
|
HeroState hero = match.Players[slot].Draft.Hero;
|
||||||
|
// S2 recipes: combine owned parts first (frees a slot), one per planning.
|
||||||
|
if (hero != null && match.Extended)
|
||||||
|
{
|
||||||
|
foreach (ItemSpec recipe in ContentData.Items.Values)
|
||||||
|
{
|
||||||
|
if (recipe.IsRecipe && match.Players[slot].Draft.Gold >= recipe.RecipeFee + reserve && match.Submit(slot, Command.ItemBuy(recipe.Id)).Ok)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (hero == null || hero.Items.Count >= LuneContent.ItemSlots)
|
if (hero == null || hero.Items.Count >= LuneContent.ItemSlots)
|
||||||
return;
|
return;
|
||||||
foreach (string itemId in profile.Items)
|
foreach (string itemId in profile.Items)
|
||||||
|
|
@ -140,14 +215,18 @@ namespace Luneraria.Core
|
||||||
string lane = WeakestLane(match, 1 - player.Team);
|
string lane = WeakestLane(match, 1 - player.Team);
|
||||||
match.Submit(slot, Command.BossLaneChoice(lane));
|
match.Submit(slot, Command.BossLaneChoice(lane));
|
||||||
}
|
}
|
||||||
if (!profile.HuntsBoss || match.RoundNumber < profile.BossFrom || !match.GrottoAvailable())
|
// S2 (extended rules): mid players also hunt the boss from round 8, so the Mondsegen of S1 really happens.
|
||||||
|
bool hunts = profile.HuntsBoss || (match.Extended && LuneMap.LaneIndex(player.Lane) == 1 && LaneSafe(match, player));
|
||||||
|
int from = profile.HuntsBoss ? profile.BossFrom : 8;
|
||||||
|
int troops = profile.HuntsBoss ? profile.BossTroops : 5;
|
||||||
|
if (!hunts || match.RoundNumber < from || !match.GrottoAvailable())
|
||||||
return;
|
return;
|
||||||
List<RosterEntry> roster = player.Draft.Roster;
|
List<RosterEntry> roster = player.Draft.Roster;
|
||||||
if (roster.Count < profile.BossTroops)
|
if (roster.Count < troops)
|
||||||
return;
|
return;
|
||||||
var picks = new List<RosterEntry>(roster);
|
var picks = new List<RosterEntry>(roster);
|
||||||
GdMath.SortStable(picks, (a, b) => a.Invested == b.Invested ? a.Seq < b.Seq : a.Invested > b.Invested);
|
GdMath.SortStable(picks, (a, b) => a.Invested == b.Invested ? a.Seq < b.Seq : a.Invested > b.Invested);
|
||||||
int keep = GdMath.Min(profile.BossTroops - 1, picks.Count);
|
int keep = GdMath.Min(troops - 1, picks.Count);
|
||||||
picks.RemoveRange(keep, picks.Count - keep);
|
picks.RemoveRange(keep, picks.Count - keep);
|
||||||
HeroState hero = player.Draft.Hero;
|
HeroState hero = player.Draft.Hero;
|
||||||
// The boss formula is public. Lanchester estimate: total HP x total damage of the
|
// The boss formula is public. Lanchester estimate: total HP x total damage of the
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ namespace Luneraria.Core
|
||||||
public string BuildingId = "";
|
public string BuildingId = "";
|
||||||
public int Xp;
|
public int Xp;
|
||||||
public List<string> XpHeroes = new List<string>();
|
public List<string> XpHeroes = new List<string>();
|
||||||
|
/// <summary>S3 camp guardians: the team that takes the camp, -1 for none.</summary>
|
||||||
|
public int ClaimTeam = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -56,6 +58,10 @@ namespace Luneraria.Core
|
||||||
public int GrottoActiveTeam = -1;
|
public int GrottoActiveTeam = -1;
|
||||||
/// <summary>none, success or failed.</summary>
|
/// <summary>none, success or failed.</summary>
|
||||||
public string GrottoOutcome = "none";
|
public string GrottoOutcome = "none";
|
||||||
|
/// <summary>S2 glyph per team: the held lane ("" none), when its towers stop being invulnerable, whether it fired.</summary>
|
||||||
|
public readonly string[] GlyphLane = { "", "" };
|
||||||
|
public readonly double[] GlyphUntil = { -1.0, -1.0 };
|
||||||
|
public readonly bool[] GlyphUsed = new bool[2];
|
||||||
|
|
||||||
int _nextId = 1;
|
int _nextId = 1;
|
||||||
readonly int[] _teamCount = new int[3];
|
readonly int[] _teamCount = new int[3];
|
||||||
|
|
@ -287,14 +293,16 @@ namespace Luneraria.Core
|
||||||
foreach (LuneUnit unit in living)
|
foreach (LuneUnit unit in living)
|
||||||
{
|
{
|
||||||
if (unit.IsMobile())
|
if (unit.IsMobile())
|
||||||
AbilityStep(unit, living);
|
AbilityStep(unit, living, gates);
|
||||||
}
|
}
|
||||||
foreach (LuneUnit unit in living)
|
foreach (LuneUnit unit in living)
|
||||||
{
|
{
|
||||||
if (unit.IsMobile() || unit.Kind == "tower")
|
if (unit.IsMobile() || unit.Kind == "tower" || (unit.Kind == "core" && unit.Def.Damage > 0.0))
|
||||||
{
|
{
|
||||||
bool keep = unit.Target != null && unit.Target.Alive;
|
bool keep = unit.Target != null && unit.Target.Alive;
|
||||||
if (keep || (Steps + unit.TeamIndex) % Retarget == 0)
|
if (unit.LeapTarget != null)
|
||||||
|
unit.Target = unit.LeapTarget;
|
||||||
|
else if (keep || (Steps + unit.TeamIndex) % Retarget == 0)
|
||||||
unit.Target = ChooseTarget(unit, living, gates);
|
unit.Target = ChooseTarget(unit, living, gates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -314,7 +322,8 @@ namespace Luneraria.Core
|
||||||
unit.Position = next;
|
unit.Position = next;
|
||||||
if (heading.LengthSquared() > 0.000001)
|
if (heading.LengthSquared() > 0.000001)
|
||||||
unit.Facing = GdMath.Atan2(heading.X, heading.Y);
|
unit.Facing = GdMath.Atan2(heading.X, heading.Y);
|
||||||
if (unit.Zone == "lane")
|
unit.LeapTarget = null;
|
||||||
|
if (unit.Zone == "lane" && unit.Kind != "camp")
|
||||||
UpdateProgress(unit, plan.Value);
|
UpdateProgress(unit, plan.Value);
|
||||||
}
|
}
|
||||||
foreach (LuneUnit unit in living)
|
foreach (LuneUnit unit in living)
|
||||||
|
|
@ -347,10 +356,40 @@ namespace Luneraria.Core
|
||||||
RecordDeath(unit);
|
RecordDeath(unit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TriggerGlyphs();
|
||||||
UpdateGrotto();
|
UpdateGrotto();
|
||||||
CheckEnd();
|
CheckEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>S2: a tower of the glyph lane is invulnerable while its team's glyph runs.</summary>
|
||||||
|
public bool Glyphed(LuneUnit unit)
|
||||||
|
{
|
||||||
|
if (unit.Kind != "tower" || unit.Team > 1)
|
||||||
|
return false;
|
||||||
|
return GlyphLane[unit.Team].Length > 0 && unit.Lane == GlyphLane[unit.Team] && Elapsed < GlyphUntil[unit.Team] - 0.000001;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>S2 (Dota 2 glyph): the first time a tower of the held lane is below the threshold, the glyph fires.</summary>
|
||||||
|
void TriggerGlyphs()
|
||||||
|
{
|
||||||
|
for (int team = 0; team < 2; team++)
|
||||||
|
{
|
||||||
|
if (GlyphLane[team].Length == 0 || GlyphUsed[team])
|
||||||
|
continue;
|
||||||
|
IReadOnlyList<LuneUnit> buildings = Buildings.Values;
|
||||||
|
for (int i = 0; i < buildings.Count; i++)
|
||||||
|
{
|
||||||
|
LuneUnit tower = buildings[i];
|
||||||
|
if (tower.Alive && tower.Kind == "tower" && tower.Team == team && tower.Lane == GlyphLane[team] && tower.Hp < tower.MaxHp * Balance.GlyphThreshold)
|
||||||
|
{
|
||||||
|
GlyphUsed[team] = true;
|
||||||
|
GlyphUntil[team] = Elapsed + Balance.GlyphSeconds;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Expeditions fight each other first; the boss wakes when at most one team remains.</summary>
|
/// <summary>Expeditions fight each other first; the boss wakes when at most one team remains.</summary>
|
||||||
void UpdateGrotto()
|
void UpdateGrotto()
|
||||||
{
|
{
|
||||||
|
|
@ -391,7 +430,8 @@ namespace Luneraria.Core
|
||||||
bool mobileAlive = !GrottoResolved;
|
bool mobileAlive = !GrottoResolved;
|
||||||
foreach (LuneUnit unit in Units)
|
foreach (LuneUnit unit in Units)
|
||||||
{
|
{
|
||||||
if (unit.Alive && unit.IsMobile() && unit.Zone == "lane")
|
// S3: a camp guardian alone does not hold the combat open.
|
||||||
|
if (unit.Alive && unit.IsMobile() && unit.Zone == "lane" && unit.Kind != "camp")
|
||||||
{
|
{
|
||||||
mobileAlive = true;
|
mobileAlive = true;
|
||||||
break;
|
break;
|
||||||
|
|
@ -430,6 +470,7 @@ namespace Luneraria.Core
|
||||||
switch (unit.Kind)
|
switch (unit.Kind)
|
||||||
{
|
{
|
||||||
case "monster": xp = 12 + RoundNumber; break;
|
case "monster": xp = 12 + RoundNumber; break;
|
||||||
|
case "camp": xp = 30 + 2 * RoundNumber; break;
|
||||||
case "champion": xp = 30 + 2 * RoundNumber; break;
|
case "champion": xp = 30 + 2 * RoundNumber; break;
|
||||||
case "boss": xp = LuneContent.BossXp; break;
|
case "boss": xp = LuneContent.BossXp; break;
|
||||||
case "troop":
|
case "troop":
|
||||||
|
|
@ -444,9 +485,35 @@ namespace Luneraria.Core
|
||||||
ev.XpHeroes.Add(other.PersistentUid);
|
ev.XpHeroes.Add(other.PersistentUid);
|
||||||
}
|
}
|
||||||
ev.Xp = xp;
|
ev.Xp = xp;
|
||||||
|
if (unit.Kind == "camp")
|
||||||
|
ev.ClaimTeam = CampClaim(unit);
|
||||||
Events.Add(ev);
|
Events.Add(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// S3: the team with more living units near a fallen guardian takes the camp, on equal
|
||||||
|
/// numbers the one with more health there; an exact tie (mirrored armies) takes nothing.
|
||||||
|
/// Units dying in the same step do not count (health above zero), so order never decides.
|
||||||
|
/// </summary>
|
||||||
|
int CampClaim(LuneUnit camp)
|
||||||
|
{
|
||||||
|
var count = new int[2];
|
||||||
|
var health = new double[2];
|
||||||
|
foreach (LuneUnit other in Units)
|
||||||
|
{
|
||||||
|
if (other.Hp > 0.0 && other.Team < 2 && other.IsMobile() && other.Zone == camp.Zone && other.Position.DistanceTo(camp.Position) <= Balance.CampClaimRadius)
|
||||||
|
{
|
||||||
|
count[other.Team]++;
|
||||||
|
health[other.Team] += other.Hp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count[0] != count[1])
|
||||||
|
return count[0] > count[1] ? 0 : 1;
|
||||||
|
if (Math.Abs(health[0] - health[1]) > 0.5)
|
||||||
|
return health[0] > health[1] ? 0 : 1;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------- targeting and movement
|
// ---------------------------------------------------------------- targeting and movement
|
||||||
static bool Hostile(LuneUnit unit, LuneUnit other)
|
static bool Hostile(LuneUnit unit, LuneUnit other)
|
||||||
{
|
{
|
||||||
|
|
@ -460,11 +527,11 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
if (!current.IsBuilding() || BuildingAttackable(current, gates))
|
if (!current.IsBuilding() || BuildingAttackable(current, gates))
|
||||||
{
|
{
|
||||||
if (unit.Kind != "tower" || unit.Position.DistanceTo(current.Position) <= unit.AttackRange())
|
if (!unit.IsStationary() || unit.Position.DistanceTo(current.Position) <= unit.AttackRange())
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
double radius = unit.Kind == "tower" ? unit.AttackRange() : Balance.AggroRadius;
|
double radius = unit.IsStationary() ? unit.AttackRange() : Balance.AggroRadius;
|
||||||
LuneUnit best = null;
|
LuneUnit best = null;
|
||||||
double bestDistance = double.PositiveInfinity;
|
double bestDistance = double.PositiveInfinity;
|
||||||
string priority = unit.Def.Priority;
|
string priority = unit.Def.Priority;
|
||||||
|
|
@ -502,7 +569,7 @@ namespace Luneraria.Core
|
||||||
bestDistance = d;
|
bestDistance = d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (best != null || unit.Kind == "tower")
|
if (best != null || unit.IsStationary())
|
||||||
return best;
|
return best;
|
||||||
// Buildings: nearby attackable ones; at the end of a lane the whole base is in reach.
|
// Buildings: nearby attackable ones; at the end of a lane the whole base is in reach.
|
||||||
for (int i = 0; i < buildings.Count; i++)
|
for (int i = 0; i < buildings.Count; i++)
|
||||||
|
|
@ -543,6 +610,10 @@ namespace Luneraria.Core
|
||||||
/// </summary>
|
/// </summary>
|
||||||
KeyValuePair<Vec2, double> PlanMove(LuneUnit unit, List<LuneUnit> living, double dt)
|
KeyValuePair<Vec2, double> PlanMove(LuneUnit unit, List<LuneUnit> living, double dt)
|
||||||
{
|
{
|
||||||
|
if (unit.LeapTarget != null)
|
||||||
|
return new KeyValuePair<Vec2, double>(LeapLanding(unit, unit.LeapTarget), unit.Progress);
|
||||||
|
if (unit.Kind == "camp")
|
||||||
|
return new KeyValuePair<Vec2, double>(unit.Position, unit.Progress);
|
||||||
double stepLength = unit.Speed() * Balance.MarchSpeedFactor * unit.MovementFactor() * dt;
|
double stepLength = unit.Speed() * Balance.MarchSpeedFactor * unit.MovementFactor() * dt;
|
||||||
Vec2 goal = unit.Position;
|
Vec2 goal = unit.Position;
|
||||||
double travel = 0.0;
|
double travel = 0.0;
|
||||||
|
|
@ -642,7 +713,7 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
unit.InRange = false;
|
unit.InRange = false;
|
||||||
LuneUnit target = unit.Target;
|
LuneUnit target = unit.Target;
|
||||||
if (target == null || !target.Alive || unit.Kind == "core")
|
if (target == null || !target.Alive || (unit.Kind == "core" && unit.Def.Damage <= 0.0))
|
||||||
{
|
{
|
||||||
unit.AttackProgress = 0.0;
|
unit.AttackProgress = 0.0;
|
||||||
return;
|
return;
|
||||||
|
|
@ -659,7 +730,7 @@ namespace Luneraria.Core
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
unit.InRange = true;
|
unit.InRange = true;
|
||||||
double interval = unit.Kind == "tower" ? Balance.TowerAttackInterval : 1.0;
|
double interval = unit.IsBuilding() ? Balance.TowerAttackInterval : 1.0;
|
||||||
unit.AttackProgress += dt * unit.AttackSpeedFactor() / interval;
|
unit.AttackProgress += dt * unit.AttackSpeedFactor() / interval;
|
||||||
while (unit.AttackProgress >= 1.0 - 0.000001)
|
while (unit.AttackProgress >= 1.0 - 0.000001)
|
||||||
{
|
{
|
||||||
|
|
@ -676,6 +747,13 @@ namespace Luneraria.Core
|
||||||
}
|
}
|
||||||
if (unit.HitCount % 3 == 0 && unit.HasTalent("stammschlag"))
|
if (unit.HitCount % 3 == 0 && unit.HasTalent("stammschlag"))
|
||||||
damage *= 1.6;
|
damage *= 1.6;
|
||||||
|
if (unit.Ability() == "brunhild" && HeroLike(target))
|
||||||
|
damage *= BrunhildHunter;
|
||||||
|
if (unit.LeapStrike)
|
||||||
|
{
|
||||||
|
damage *= SylvaraLeapStrike;
|
||||||
|
unit.LeapStrike = false;
|
||||||
|
}
|
||||||
if (target.IsBuilding())
|
if (target.IsBuilding())
|
||||||
damage *= unit.Def.SiegeFactor;
|
damage *= unit.Def.SiegeFactor;
|
||||||
QueueDamage(target, target.Mitigated(damage, unit.Def.AttackType), gates);
|
QueueDamage(target, target.Mitigated(damage, unit.Def.AttackType), gates);
|
||||||
|
|
@ -694,6 +772,8 @@ namespace Luneraria.Core
|
||||||
// The building gate applies to every source: ranged, splash, DoT and abilities.
|
// The building gate applies to every source: ranged, splash, DoT and abilities.
|
||||||
if (target.IsBuilding() && !BuildingAttackable(target, gates))
|
if (target.IsBuilding() && !BuildingAttackable(target, gates))
|
||||||
return;
|
return;
|
||||||
|
if (Glyphed(target))
|
||||||
|
return;
|
||||||
double current;
|
double current;
|
||||||
_pendingDamage.TryGetValue(target.Id, out current);
|
_pendingDamage.TryGetValue(target.Id, out current);
|
||||||
_pendingDamage[target.Id] = current + amount;
|
_pendingDamage[target.Id] = current + amount;
|
||||||
|
|
@ -730,6 +810,12 @@ namespace Luneraria.Core
|
||||||
case "e08":
|
case "e08":
|
||||||
unit.GrantShield(unit.MaxHp * 0.20);
|
unit.GrantShield(unit.MaxHp * 0.20);
|
||||||
break;
|
break;
|
||||||
|
case "sylvara":
|
||||||
|
unit.AbilityReady = SylvaraFirstThrow;
|
||||||
|
break;
|
||||||
|
case "brunhild":
|
||||||
|
unit.AbilityReady = BrunhildFirstSpear;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -778,8 +864,12 @@ namespace Luneraria.Core
|
||||||
_pendingDots.Add(new PendingDot { Unit = target, Family = family, Damage = damage, Duration = duration, AttackType = attackType });
|
_pendingDots.Add(new PendingDot { Unit = target, Family = family, Damage = damage, Duration = duration, AttackType = attackType });
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbilityStep(LuneUnit unit, List<LuneUnit> living)
|
void AbilityStep(LuneUnit unit, List<LuneUnit> living, Dictionary<string, bool> gates)
|
||||||
{
|
{
|
||||||
|
if (unit.Ability() == "sylvara")
|
||||||
|
SylvaraStep(unit, gates);
|
||||||
|
else if (unit.Ability() == "brunhild")
|
||||||
|
BrunhildStep(unit, gates);
|
||||||
double regen = unit.Def.Regen;
|
double regen = unit.Def.Regen;
|
||||||
if (regen > 0.0 && unit.Hp < unit.MaxHp)
|
if (regen > 0.0 && unit.Hp < unit.MaxHp)
|
||||||
QueueHeal(unit, unit.MaxHp * regen * Balance.SimStep);
|
QueueHeal(unit, unit.MaxHp * regen * Balance.SimStep);
|
||||||
|
|
@ -883,6 +973,12 @@ namespace Luneraria.Core
|
||||||
success = victims.Count > 0;
|
success = victims.Count > 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "sylvara":
|
||||||
|
success = SylvaraThrow(unit, gates);
|
||||||
|
break;
|
||||||
|
case "brunhild":
|
||||||
|
success = BrunhildSpear(unit, gates);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
|
|
@ -891,6 +987,224 @@ namespace Luneraria.Core
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------- H1 hero kits
|
||||||
|
public const double SylvaraLeapRange = 8.0;
|
||||||
|
public const double SylvaraLeapStrike = 1.5;
|
||||||
|
public const double SylvaraFirstThrow = 4.0;
|
||||||
|
public const double SylvaraThrowRange = 6.0;
|
||||||
|
/// <summary>The leap only targets back-row enemies with at most this many allies within 3 m.</summary>
|
||||||
|
public const int SylvaraLeapGuards = 2;
|
||||||
|
/// <summary>Mondschleier: shield after the leap and after the ultimate, share of max HP, for 4 s.</summary>
|
||||||
|
public const double SylvaraVeil = 0.25;
|
||||||
|
public const double SylvaraDance = 2.2;
|
||||||
|
public const double SylvaraFullMoon = 2.8;
|
||||||
|
/// <summary>Back-row enemies: the leap and the "zweite_reihe" rule look for these.</summary>
|
||||||
|
public const double BackRowRange = 3.0;
|
||||||
|
|
||||||
|
static bool BackRow(LuneUnit other) { return other.IsMobile() && other.AttackRange() >= BackRowRange - 0.000001; }
|
||||||
|
|
||||||
|
List<LuneUnit> NearbyMobile(LuneUnit unit, double radius, int maximum)
|
||||||
|
{
|
||||||
|
List<LuneUnit> result = Nearby(unit, false, unit.Position, radius, 1000);
|
||||||
|
result.RemoveAll(other => !other.IsMobile());
|
||||||
|
if (result.Count > maximum)
|
||||||
|
result.RemoveRange(maximum, result.Count - maximum);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Mobile allies of the target within 3 m of it (its guards against a leap).</summary>
|
||||||
|
int Guards(LuneUnit unit, LuneUnit target)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
foreach (LuneUnit other in NearMobile(target.Position, 3.0, new[] { target.Team }))
|
||||||
|
{
|
||||||
|
if (other != target && other.Alive && other.Zone == target.Zone && other.Position.DistanceTo(target.Position) <= 3.0 + 0.000001)
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Lands 0.9 m in front of the target, on the side the unit comes from.</summary>
|
||||||
|
static Vec2 LeapLanding(LuneUnit unit, LuneUnit target)
|
||||||
|
{
|
||||||
|
Vec2 away = unit.Position - target.Position;
|
||||||
|
if (away.LengthSquared() < 0.000001)
|
||||||
|
away = unit.Team == 0 ? Vec2.Right : Vec2.Left;
|
||||||
|
Vec2 landing = target.Position + away.Normalized() * 0.9;
|
||||||
|
landing.X = (float)GdMath.Clamp(landing.X, -LuneMap.HalfExtent, LuneMap.HalfExtent);
|
||||||
|
landing.Y = (float)GdMath.Clamp(landing.Y, -LuneMap.HalfExtent, LuneMap.HalfExtent);
|
||||||
|
return landing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Mondsprung (passive, once per combat): the first back-row enemy within 8 m draws the
|
||||||
|
/// leap; she lands next to it, takes it as target and strikes the first hit at 150 %.
|
||||||
|
/// Mondsicheltanz (ultimate, once per combat after 2 s): released by the planned rule.
|
||||||
|
/// Both decide on the state at the start of the step; the landing is applied with the moves.
|
||||||
|
/// </summary>
|
||||||
|
void SylvaraStep(LuneUnit unit, Dictionary<string, bool> gates)
|
||||||
|
{
|
||||||
|
bool leaping = false;
|
||||||
|
if (!unit.LeapUsed)
|
||||||
|
{
|
||||||
|
foreach (LuneUnit other in NearbyMobile(unit, SylvaraLeapRange, 1000))
|
||||||
|
{
|
||||||
|
if (BackRow(other) && !other.IsBoss() && Guards(unit, other) <= SylvaraLeapGuards)
|
||||||
|
{
|
||||||
|
_pendingShields.Add(new PendingShield { Unit = unit, Amount = unit.MaxHp * SylvaraVeil, Duration = 4.0 });
|
||||||
|
unit.LeapUsed = true;
|
||||||
|
unit.LeapTarget = other;
|
||||||
|
unit.LeapStrike = true;
|
||||||
|
unit.LeapSerial += 1;
|
||||||
|
leaping = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// The dance waits for the landing: in the leap step she still stands at her old place.
|
||||||
|
if (leaping || unit.UltimateUsed || string.IsNullOrEmpty(unit.Def.UltimateRule) || unit.CombatTime + 0.000001 < LuneContent.UltimateDelay)
|
||||||
|
return;
|
||||||
|
bool release = false;
|
||||||
|
switch (unit.Def.UltimateRule)
|
||||||
|
{
|
||||||
|
case "gruppe":
|
||||||
|
release = NearbyMobile(unit, 4.0, 3).Count >= 3;
|
||||||
|
break;
|
||||||
|
case "zweite_reihe":
|
||||||
|
release = NearbyMobile(unit, 5.0, 1000).Exists(BackRow);
|
||||||
|
break;
|
||||||
|
case "notfall":
|
||||||
|
release = unit.Hp < unit.MaxHp * 0.4 && NearbyMobile(unit, 4.0, 1).Count > 0;
|
||||||
|
break;
|
||||||
|
case "sofort":
|
||||||
|
release = NearbyMobile(unit, 4.0, 1).Count > 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!release)
|
||||||
|
return;
|
||||||
|
bool full = unit.HasTalent("vollmond");
|
||||||
|
double damage = unit.Def.Damage * (1.0 + unit.DamageBonus()) * (full ? SylvaraFullMoon : SylvaraDance);
|
||||||
|
_pendingShields.Add(new PendingShield { Unit = unit, Amount = unit.MaxHp * SylvaraVeil, Duration = 4.0 });
|
||||||
|
foreach (LuneUnit victim in NearbyMobile(unit, 5.0, full ? 7 : 5))
|
||||||
|
{
|
||||||
|
QueueDamage(victim, victim.Mitigated(damage, unit.Def.AttackType), gates);
|
||||||
|
AddEffect(victim, "moon_mark", "movement_slow", 0.30, 2.0);
|
||||||
|
}
|
||||||
|
unit.UltimateUsed = true;
|
||||||
|
unit.UltimateSerial += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Sichelwurf (every 6 s): 90 % to the target and up to 2 more enemies within 2.5 m of it.</summary>
|
||||||
|
bool SylvaraThrow(LuneUnit unit, Dictionary<string, bool> gates)
|
||||||
|
{
|
||||||
|
LuneUnit primary = unit.Target;
|
||||||
|
if (primary == null || !Hostile(unit, primary) || !primary.IsMobile() || unit.Position.DistanceTo(primary.Position) > SylvaraThrowRange)
|
||||||
|
return false;
|
||||||
|
double damage = unit.Def.Damage * (1.0 + unit.DamageBonus());
|
||||||
|
if (unit.HasTalent("mondsilber"))
|
||||||
|
{
|
||||||
|
QueueDamage(primary, primary.Mitigated(damage * 2.0, unit.Def.AttackType), gates);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool storm = unit.HasTalent("sichelsturm");
|
||||||
|
var victims = new List<LuneUnit> { primary };
|
||||||
|
victims.AddRange(Nearby(unit, false, primary.Position, storm ? 3.5 : 2.5, storm ? 4 : 2, primary));
|
||||||
|
foreach (LuneUnit victim in victims)
|
||||||
|
QueueDamage(victim, victim.Mitigated(damage * 0.9, unit.Def.AttackType), gates);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// H2 Brunhild
|
||||||
|
public const double BrunhildFirstSpear = 3.0;
|
||||||
|
public const double BrunhildSpearRange = 7.0;
|
||||||
|
public const double BrunhildHunter = 1.25;
|
||||||
|
public const double BrunhildShield = 0.30;
|
||||||
|
|
||||||
|
static bool HeroLike(LuneUnit unit) { return unit.Kind == "hero" || unit.Kind == "champion"; }
|
||||||
|
|
||||||
|
/// <summary>Enemies within the radius, farthest first (ties by id), mobile only.</summary>
|
||||||
|
List<LuneUnit> Farthest(LuneUnit unit, double radius, int maximum)
|
||||||
|
{
|
||||||
|
List<LuneUnit> result = NearbyMobile(unit, radius, 1000);
|
||||||
|
result.Reverse();
|
||||||
|
GdMath.SortStable(result, (a, b) =>
|
||||||
|
{
|
||||||
|
double ad = a.Position.DistanceTo(unit.Position);
|
||||||
|
double bd = b.Position.DistanceTo(unit.Position);
|
||||||
|
return GdMath.IsEqualApprox(ad, bd) ? a.Id < b.Id : ad > bd;
|
||||||
|
});
|
||||||
|
if (result.Count > maximum)
|
||||||
|
result.RemoveRange(maximum, result.Count - maximum);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Speerwurf: 120 % to the farthest enemy in 7 m (Speerregen: three), marked 4 s (+15 % damage taken).</summary>
|
||||||
|
bool BrunhildSpear(LuneUnit unit, Dictionary<string, bool> gates)
|
||||||
|
{
|
||||||
|
List<LuneUnit> victims = Farthest(unit, BrunhildSpearRange, unit.HasTalent("speerregen") ? 3 : 1);
|
||||||
|
if (victims.Count == 0)
|
||||||
|
return false;
|
||||||
|
double damage = unit.Def.Damage * (1.0 + unit.DamageBonus()) * 1.2;
|
||||||
|
foreach (LuneUnit victim in victims)
|
||||||
|
{
|
||||||
|
double hit = damage * (HeroLike(victim) ? BrunhildHunter * (unit.HasTalent("walkuerenblut") ? 2.0 : 1.0) : 1.0);
|
||||||
|
QueueDamage(victim, victim.Mitigated(hit, unit.Def.AttackType), gates);
|
||||||
|
AddEffect(victim, "valkyrie_mark", "vulnerable", 0.15, 4.0);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Walkürensturz (once per combat after 2 s, by the planned rule): she leaps to her target
|
||||||
|
/// (an enemy hero or champion in 7 m first, then the marked enemy, then her current target),
|
||||||
|
/// deals 200 % to every enemy within 3 m of it and stuns them 1 s (Götterdämmerung: 2 s in
|
||||||
|
/// 4 m); bosses are not stunned. Decided on the state at the start of the step.
|
||||||
|
/// </summary>
|
||||||
|
void BrunhildStep(LuneUnit unit, Dictionary<string, bool> gates)
|
||||||
|
{
|
||||||
|
if (unit.UltimateUsed || string.IsNullOrEmpty(unit.Def.UltimateRule) || unit.CombatTime + 0.000001 < LuneContent.UltimateDelay)
|
||||||
|
return;
|
||||||
|
List<LuneUnit> reach = NearbyMobile(unit, BrunhildSpearRange, 1000);
|
||||||
|
if (reach.Count == 0)
|
||||||
|
return;
|
||||||
|
LuneUnit target = reach.Find(HeroLike) ?? reach.Find(other => other.Effects.ContainsKey("valkyrie_mark"))
|
||||||
|
?? (unit.Target != null && reach.Contains(unit.Target) ? unit.Target : reach[0]);
|
||||||
|
bool full = unit.HasTalent("goetterdaemmerung");
|
||||||
|
double radius = full ? 4.0 : 3.0;
|
||||||
|
bool release = false;
|
||||||
|
switch (unit.Def.UltimateRule)
|
||||||
|
{
|
||||||
|
case "gruppe":
|
||||||
|
release = Nearby(unit, false, target.Position, 4.0, 1000).FindAll(other => other.IsMobile()).Count >= 3;
|
||||||
|
break;
|
||||||
|
case "held":
|
||||||
|
release = HeroLike(target);
|
||||||
|
break;
|
||||||
|
case "notfall":
|
||||||
|
release = unit.Hp < unit.MaxHp * 0.4;
|
||||||
|
break;
|
||||||
|
case "sofort":
|
||||||
|
release = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!release)
|
||||||
|
return;
|
||||||
|
double damage = unit.Def.Damage * (1.0 + unit.DamageBonus()) * 2.0;
|
||||||
|
foreach (LuneUnit victim in Nearby(unit, false, target.Position, radius, 1000))
|
||||||
|
{
|
||||||
|
if (!victim.IsMobile())
|
||||||
|
continue;
|
||||||
|
QueueDamage(victim, victim.Mitigated(damage * (HeroLike(victim) ? BrunhildHunter : 1.0), unit.Def.AttackType), gates);
|
||||||
|
if (!victim.IsBoss())
|
||||||
|
AddEffect(victim, "valkyrie_stun", "stun", 1.0, full ? 2.0 : 1.0);
|
||||||
|
}
|
||||||
|
// Walkürenschild: after the leap she is shielded like Sylvara after hers.
|
||||||
|
_pendingShields.Add(new PendingShield { Unit = unit, Amount = unit.MaxHp * BrunhildShield, Duration = 5.0 });
|
||||||
|
unit.LeapTarget = target;
|
||||||
|
unit.UltimateUsed = true;
|
||||||
|
unit.UltimateSerial += 1;
|
||||||
|
}
|
||||||
|
|
||||||
void OnHit(LuneUnit unit, LuneUnit primary, List<LuneUnit> living, Dictionary<string, bool> gates)
|
void OnHit(LuneUnit unit, LuneUnit primary, List<LuneUnit> living, Dictionary<string, bool> gates)
|
||||||
{
|
{
|
||||||
string ability = unit.Ability();
|
string ability = unit.Ability();
|
||||||
|
|
|
||||||
163
Assets/Luneraria/Core/Simulation/LuneFog.cs
Normal file
|
|
@ -0,0 +1,163 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Luneraria.Core
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// S3 fog of war (Dota 2 vision and wards, extended rules). It only decides what a viewer's
|
||||||
|
/// team sees; the simulation never reads it, so the rules and every replay stay the same.
|
||||||
|
/// In combat an enemy unit is visible within reach of an own living unit, an own living
|
||||||
|
/// building or one of the team's wards (a ward watches the middle of its lane). In planning,
|
||||||
|
/// enemy armies show only on scouted lanes: a ward there, or the enemy's outer tower of that
|
||||||
|
/// lane has fallen. Neutral units (camp guardians, the grotto boss) are always visible.
|
||||||
|
/// </summary>
|
||||||
|
public static class LuneFog
|
||||||
|
{
|
||||||
|
public const double UnitSight = 9.0;
|
||||||
|
public const double BuildingSight = 10.0;
|
||||||
|
public const double WardSight = 12.0;
|
||||||
|
|
||||||
|
struct Source
|
||||||
|
{
|
||||||
|
public Vec2 At;
|
||||||
|
public double Radius;
|
||||||
|
public string Zone;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>The lane is scouted for the team in planning (ward, fallen enemy outer tower, or a ward in the own draft).</summary>
|
||||||
|
public static bool LaneScouted(LuneMatch match, int team, string lane, Draft ownDraft = null)
|
||||||
|
{
|
||||||
|
int index = LuneMap.LaneIndex(lane);
|
||||||
|
if (index < 0)
|
||||||
|
return false;
|
||||||
|
if (match.Boss.Wards[team * 3 + index] > 0)
|
||||||
|
return true;
|
||||||
|
if (ownDraft != null && ownDraft.WardLanes.Contains(lane))
|
||||||
|
return true;
|
||||||
|
foreach (BuildingDef definition in match.Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == 1 - team && definition.Lane == lane && definition.Tier == "outer")
|
||||||
|
return match.BuildingHp[definition.Id] <= 0.0;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Planning (S3): the enemy's committed army on the lanes the team has scouted, as the
|
||||||
|
/// match will field it (troops and heroes, lane owner first). The planning preview shows
|
||||||
|
/// these; unscouted lanes show nothing of the enemy. Empty without the extended rules.
|
||||||
|
/// </summary>
|
||||||
|
public static List<LuneMatch.ArmyEntry> ScoutedEnemies(LuneMatch match, int team, Draft ownDraft = null)
|
||||||
|
{
|
||||||
|
var result = new List<LuneMatch.ArmyEntry>();
|
||||||
|
if (match == null || !match.Extended || team < 0 || team > 1)
|
||||||
|
return result;
|
||||||
|
int enemy = 1 - team;
|
||||||
|
foreach (string lane in LuneMap.Lanes)
|
||||||
|
{
|
||||||
|
if (!LaneScouted(match, team, lane, ownDraft))
|
||||||
|
continue;
|
||||||
|
for (int slot = enemy * 3; slot < enemy * 3 + 3; slot++)
|
||||||
|
{
|
||||||
|
foreach (LuneMatch.ArmyEntry entry in match.ArmyEntries(slot))
|
||||||
|
{
|
||||||
|
if (entry.Lane == lane)
|
||||||
|
result.Add(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Middle of a lane, where a ward watches.</summary>
|
||||||
|
public static Vec2 WardPoint(LuneMatch match, string lane)
|
||||||
|
{
|
||||||
|
return match.Map.LanePoint(0, lane, match.Map.LanePaths[lane].Length * 0.5, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// S4: everything that gives the team sight in the shown combat (or planning preview):
|
||||||
|
/// own living units, own standing buildings (from the match, so the planning preview has
|
||||||
|
/// them too) and the team's wards. Each as point, radius and zone.
|
||||||
|
/// </summary>
|
||||||
|
public static List<KeyValuePair<Vec2, double>> Vision(LuneMatch match, LuneCombat shown, int team, string zone = "lane")
|
||||||
|
{
|
||||||
|
var result = new List<KeyValuePair<Vec2, double>>();
|
||||||
|
if (match == null || team < 0 || team > 1)
|
||||||
|
return result;
|
||||||
|
if (shown != null)
|
||||||
|
{
|
||||||
|
foreach (LuneUnit unit in shown.Units)
|
||||||
|
{
|
||||||
|
if (unit.Team == team && unit.Alive && unit.IsMobile() && unit.Zone == zone)
|
||||||
|
result.Add(new KeyValuePair<Vec2, double>(unit.Position, UnitSight));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (zone == "lane")
|
||||||
|
{
|
||||||
|
foreach (BuildingDef definition in match.Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == team && match.BuildingHp[definition.Id] > 0.0)
|
||||||
|
result.Add(new KeyValuePair<Vec2, double>(definition.Position, BuildingSight));
|
||||||
|
}
|
||||||
|
foreach (string lane in LuneMap.Lanes)
|
||||||
|
{
|
||||||
|
if (match.Boss.Wards[team * 3 + LuneMap.LaneIndex(lane)] > 0)
|
||||||
|
result.Add(new KeyValuePair<Vec2, double>(WardPoint(match, lane), WardSight));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ids of the enemy units the team cannot see in the shown combat (the live combat, or
|
||||||
|
/// the planning preview when planning). Empty without the extended rules or for team -1.
|
||||||
|
/// </summary>
|
||||||
|
public static HashSet<int> Hidden(LuneMatch match, LuneCombat shown, int team, bool planning, Draft ownDraft = null)
|
||||||
|
{
|
||||||
|
var hidden = new HashSet<int>();
|
||||||
|
if (match == null || shown == null || !match.Extended || team < 0 || team > 1)
|
||||||
|
return hidden;
|
||||||
|
if (planning)
|
||||||
|
{
|
||||||
|
foreach (LuneUnit unit in shown.Units)
|
||||||
|
{
|
||||||
|
if (unit.Team == 1 - team && unit.IsMobile() && (unit.Zone != "lane" || !LaneScouted(match, team, unit.Lane, ownDraft)))
|
||||||
|
hidden.Add(unit.Id);
|
||||||
|
}
|
||||||
|
return hidden;
|
||||||
|
}
|
||||||
|
var sources = new List<Source>();
|
||||||
|
foreach (LuneUnit unit in shown.Units)
|
||||||
|
{
|
||||||
|
if (unit.Team != team || !unit.Alive)
|
||||||
|
continue;
|
||||||
|
if (unit.IsMobile())
|
||||||
|
sources.Add(new Source { At = unit.Position, Radius = UnitSight, Zone = unit.Zone });
|
||||||
|
else if (unit.IsBuilding())
|
||||||
|
sources.Add(new Source { At = unit.Position, Radius = BuildingSight, Zone = "lane" });
|
||||||
|
}
|
||||||
|
foreach (string lane in LuneMap.Lanes)
|
||||||
|
{
|
||||||
|
if (match.Boss.Wards[team * 3 + LuneMap.LaneIndex(lane)] > 0)
|
||||||
|
sources.Add(new Source { At = WardPoint(match, lane), Radius = WardSight, Zone = "lane" });
|
||||||
|
}
|
||||||
|
foreach (LuneUnit unit in shown.Units)
|
||||||
|
{
|
||||||
|
if (unit.Team != 1 - team || !unit.IsMobile())
|
||||||
|
continue;
|
||||||
|
bool seen = false;
|
||||||
|
foreach (Source source in sources)
|
||||||
|
{
|
||||||
|
if (source.Zone == unit.Zone && unit.Position.DistanceTo(source.At) <= source.Radius)
|
||||||
|
{
|
||||||
|
seen = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!seen)
|
||||||
|
hidden.Add(unit.Id);
|
||||||
|
}
|
||||||
|
return hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Luneraria/Core/Simulation/LuneFog.cs.meta
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c7893fc71c204c29bacd289a276d0be5
|
||||||
|
|
@ -21,6 +21,8 @@ namespace Luneraria.Core
|
||||||
public int RoundNumber = 1;
|
public int RoundNumber = 1;
|
||||||
public Phase Phase = Phase.Planning;
|
public Phase Phase = Phase.Planning;
|
||||||
public int Winner = Ongoing;
|
public int Winner = Ongoing;
|
||||||
|
/// <summary>S1: extended rules (MatchOptions.Extended); false keeps the reference rules exactly.</summary>
|
||||||
|
public bool Extended;
|
||||||
public string EndNote = "";
|
public string EndNote = "";
|
||||||
public readonly List<Player> Players = new List<Player>();
|
public readonly List<Player> Players = new List<Player>();
|
||||||
/// <summary>Building HP between combats, in map order.</summary>
|
/// <summary>Building HP between combats, in map order.</summary>
|
||||||
|
|
@ -46,6 +48,12 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
options = options ?? new MatchOptions();
|
options = options ?? new MatchOptions();
|
||||||
SeedValue = options.Seed;
|
SeedValue = options.Seed;
|
||||||
|
Extended = options.Extended;
|
||||||
|
Boss.Blessing = new int[2];
|
||||||
|
Boss.GlyphReady = new[] { 1, 1 };
|
||||||
|
Boss.CoreLevel = new int[2];
|
||||||
|
Boss.CampBuff = new int[6];
|
||||||
|
Boss.Wards = new int[6];
|
||||||
RoundNumber = 1;
|
RoundNumber = 1;
|
||||||
Phase = Phase.Planning;
|
Phase = Phase.Planning;
|
||||||
Winner = Ongoing;
|
Winner = Ongoing;
|
||||||
|
|
@ -251,6 +259,8 @@ namespace Luneraria.Core
|
||||||
ItemSpec item;
|
ItemSpec item;
|
||||||
if (!ContentData.Items.TryGetValue(itemId, out item))
|
if (!ContentData.Items.TryGetValue(itemId, out item))
|
||||||
return Result(false, "Unbekanntes Item.");
|
return Result(false, "Unbekanntes Item.");
|
||||||
|
if (item.IsRecipe)
|
||||||
|
return Combine(hero, draft, item);
|
||||||
if (hero.Items.Contains(itemId))
|
if (hero.Items.Contains(itemId))
|
||||||
return Result(false, item.Name + " trägt dein Held bereits; Items sind einzigartig.");
|
return Result(false, item.Name + " trägt dein Held bereits; Items sind einzigartig.");
|
||||||
if (hero.Items.Count >= LuneContent.ItemSlots)
|
if (hero.Items.Count >= LuneContent.ItemSlots)
|
||||||
|
|
@ -291,6 +301,86 @@ namespace Luneraria.Core
|
||||||
hero.Talents.Add(option.Id);
|
hero.Talents.Add(option.Id);
|
||||||
return Result(true, "Talent " + option.Name + " gewählt.");
|
return Result(true, "Talent " + option.Name + " gewählt.");
|
||||||
}
|
}
|
||||||
|
case "ultimate_rule":
|
||||||
|
{
|
||||||
|
if (hero == null || !LuneContent.HasUltimate(hero.HeroId))
|
||||||
|
return Result(false, "Dein Held hat kein Ultimate.");
|
||||||
|
string rule = command.TypeId ?? "";
|
||||||
|
foreach (TalentOption option in LuneContent.UltimateRulesOf(hero.HeroId))
|
||||||
|
{
|
||||||
|
if (option.Id == rule)
|
||||||
|
{
|
||||||
|
hero.Ultimate = rule;
|
||||||
|
return Result(true, "Ultimate-Auslöser: " + option.Name + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Result(false, "Unbekannter Ultimate-Auslöser.");
|
||||||
|
}
|
||||||
|
case "hero_skin":
|
||||||
|
{
|
||||||
|
if (hero == null)
|
||||||
|
return Result(false, "Skins benötigen einen Helden.");
|
||||||
|
string skin = command.TypeId ?? "";
|
||||||
|
if (!LuneContent.ValidSkin(hero.HeroId, skin))
|
||||||
|
return Result(false, "Unbekannter Skin.");
|
||||||
|
hero.Skin = skin;
|
||||||
|
return Result(true, skin.Length == 0 ? "Standard-Aussehen gewählt." : "Skin gewählt.");
|
||||||
|
}
|
||||||
|
case "glyph":
|
||||||
|
{
|
||||||
|
if (!Extended)
|
||||||
|
return Result(false, "Die Glyphe gibt es nur mit erweiterten Regeln.");
|
||||||
|
string lane = command.Lane ?? "";
|
||||||
|
if (lane.Length > 0 && LuneMap.LaneIndex(lane) < 0)
|
||||||
|
return Result(false, "Unbekannte Lane.");
|
||||||
|
if (lane.Length > 0 && RoundNumber < Boss.GlyphReady[player.Team])
|
||||||
|
return Result(false, string.Format("Die Glyphe ist ab Runde {0} wieder bereit.", Boss.GlyphReady[player.Team]));
|
||||||
|
draft.GlyphLane = lane;
|
||||||
|
return Result(true, lane.Length == 0 ? "Glyphe zurückgenommen." : "Glyphe für " + LuneMap.LaneNames[lane] + " bereitgehalten.");
|
||||||
|
}
|
||||||
|
case "ward":
|
||||||
|
{
|
||||||
|
if (!Extended)
|
||||||
|
return Result(false, "Späher gibt es nur mit erweiterten Regeln.");
|
||||||
|
string lane = command.Lane ?? "";
|
||||||
|
int index = LuneMap.LaneIndex(lane);
|
||||||
|
if (index < 0)
|
||||||
|
return Result(false, "Unbekannte Lane.");
|
||||||
|
if (draft.WardLanes.Contains(lane))
|
||||||
|
return Result(false, "Auf dieser Lane steht schon dein Späher.");
|
||||||
|
if (draft.Gold < Balance.WardCost)
|
||||||
|
return Result(false, string.Format("Es fehlen {0} Gold.", Balance.WardCost - draft.Gold));
|
||||||
|
draft.Gold -= Balance.WardCost;
|
||||||
|
draft.WardLanes.Add(lane);
|
||||||
|
return Result(true, "Späher auf " + LuneMap.LaneNames[lane] + " gesetzt (" + Balance.WardRounds + " Runden).");
|
||||||
|
}
|
||||||
|
case "core_upgrade":
|
||||||
|
{
|
||||||
|
if (!Extended)
|
||||||
|
return Result(false, "Ancient-Stufen gibt es nur mit erweiterten Regeln.");
|
||||||
|
int level = Boss.CoreLevel[player.Team] + draft.CoreInvest;
|
||||||
|
if (level >= Balance.CoreLevelMax)
|
||||||
|
return Result(false, "Der Ancient hat die höchste Stufe.");
|
||||||
|
int cost = Balance.CoreUpgradeCost(level);
|
||||||
|
if (draft.Gold < cost)
|
||||||
|
return Result(false, string.Format("Es fehlen {0} Gold.", cost - draft.Gold));
|
||||||
|
draft.Gold -= cost;
|
||||||
|
draft.CoreInvest += 1;
|
||||||
|
return Result(true, string.Format("Ancient auf Stufe {0} gestärkt ({1} Gold).", level + 1, cost));
|
||||||
|
}
|
||||||
|
case "buyback":
|
||||||
|
{
|
||||||
|
if (!Extended)
|
||||||
|
return Result(false, "Rückkauf gibt es nur mit erweiterten Regeln.");
|
||||||
|
if (hero == null || !hero.Exhausted)
|
||||||
|
return Result(false, "Dein Held ist nicht erschöpft.");
|
||||||
|
int cost = BuybackCost(hero);
|
||||||
|
if (draft.Gold < cost)
|
||||||
|
return Result(false, string.Format("Es fehlen {0} Gold.", cost - draft.Gold));
|
||||||
|
draft.Gold -= cost;
|
||||||
|
hero.Exhausted = false;
|
||||||
|
return Result(true, string.Format("Held für {0} Gold zurückgekauft.", cost));
|
||||||
|
}
|
||||||
case "champion_book":
|
case "champion_book":
|
||||||
{
|
{
|
||||||
string championId = command.ChampionId ?? "";
|
string championId = command.ChampionId ?? "";
|
||||||
|
|
@ -408,19 +498,40 @@ namespace Luneraria.Core
|
||||||
Booking committed = booking.Clone();
|
Booking committed = booking.Clone();
|
||||||
committed.DeployRound = RoundNumber + 1;
|
committed.DeployRound = RoundNumber + 1;
|
||||||
player.Bookings.Add(committed);
|
player.Bookings.Add(committed);
|
||||||
|
// S1 (Legion TD 2): sending raises the own income for good.
|
||||||
|
if (Extended)
|
||||||
|
player.IncomeBonus += ChampionIncome(booking.Cost);
|
||||||
}
|
}
|
||||||
BossClaim claim = Boss.Claim;
|
BossClaim claim = Boss.Claim;
|
||||||
if (claim != null && claim.ChooserSlot == player.Slot && draft.BossLane.Length > 0)
|
if (claim != null && claim.ChooserSlot == player.Slot && draft.BossLane.Length > 0)
|
||||||
claim.Lane = draft.BossLane;
|
claim.Lane = draft.BossLane;
|
||||||
player.Undo.Clear();
|
player.Undo.Clear();
|
||||||
}
|
}
|
||||||
|
if (Extended)
|
||||||
|
CommitTeamActions();
|
||||||
Combat = new LuneCombat(Map, Balance, RoundNumber);
|
Combat = new LuneCombat(Map, Balance, RoundNumber);
|
||||||
foreach (BuildingDef definition in Map.Buildings)
|
foreach (BuildingDef definition in Map.Buildings)
|
||||||
{
|
{
|
||||||
if (BuildingHp[definition.Id] > 0.0)
|
if (BuildingHp[definition.Id] > 0.0)
|
||||||
Combat.AddBuilding(definition, BuildingHp[definition.Id]);
|
{
|
||||||
|
LuneUnit building = Combat.AddBuilding(definition, BuildingHp[definition.Id]);
|
||||||
|
int level = Extended && definition.Tier == "core" ? Boss.CoreLevel[definition.Team] : 0;
|
||||||
|
if (level > 0)
|
||||||
|
{
|
||||||
|
// S2 (Legion TD 2 king): the Ancient shoots at attackers in its reach.
|
||||||
|
building.Def.Damage = Balance.CoreDamage[GdMath.Min(level, Balance.CoreDamage.Length - 1)];
|
||||||
|
building.Def.AttackRange = Balance.CoreRange;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Extended)
|
||||||
|
{
|
||||||
|
for (int team = 0; team < 2; team++)
|
||||||
|
Combat.GlyphLane[team] = _glyphLane[team];
|
||||||
}
|
}
|
||||||
SpawnWaves();
|
SpawnWaves();
|
||||||
|
if (Extended)
|
||||||
|
SpawnCamps();
|
||||||
SpawnChampions();
|
SpawnChampions();
|
||||||
SpawnDeployedBoss();
|
SpawnDeployedBoss();
|
||||||
SpawnArmies();
|
SpawnArmies();
|
||||||
|
|
@ -459,6 +570,10 @@ namespace Luneraria.Core
|
||||||
}
|
}
|
||||||
if (hero.Talents.Count > LuneContent.TalentLevels.Length)
|
if (hero.Talents.Count > LuneContent.TalentLevels.Length)
|
||||||
return false;
|
return false;
|
||||||
|
if (!string.IsNullOrEmpty(hero.Ultimate) && LuneContent.UltimateRuleFor(hero) != hero.Ultimate)
|
||||||
|
return false;
|
||||||
|
if (!LuneContent.ValidSkin(hero.HeroId, hero.Skin))
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return draft.NewBookings.Count <= LuneContent.MaxBookings;
|
return draft.NewBookings.Count <= LuneContent.MaxBookings;
|
||||||
}
|
}
|
||||||
|
|
@ -470,16 +585,226 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
foreach (string lane in LuneMap.Lanes)
|
foreach (string lane in LuneMap.Lanes)
|
||||||
{
|
{
|
||||||
for (int index = 0; index < wave.Count; index++)
|
List<UnitDef> lineup = Extended && BarracksBroken(team, lane) ? Reinforced(wave) : wave;
|
||||||
|
for (int index = 0; index < lineup.Count; index++)
|
||||||
{
|
{
|
||||||
int row = index / 3;
|
int row = index / 3;
|
||||||
double lateral = ((double)(index % 3) - 1.0) * 1.3;
|
double lateral = ((double)(index % 3) - 1.0) * 1.3;
|
||||||
Combat.Spawn("monster", team, lane, wave[index].Clone(), 11.0 - (double)row * 1.4, lateral);
|
Combat.Spawn("monster", team, lane, lineup[index].Clone(), 11.0 - (double)row * 1.4, lateral);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------- S3 extended rules
|
||||||
|
public static readonly string[] CampNames = { "Glutwächter", "Mondwächter", "Goldwächter" };
|
||||||
|
public static readonly string[] CampBuffNames = { "Glutsegen", "Mondschild", "Beute" };
|
||||||
|
|
||||||
|
/// <summary>S3: a camp round (League of Legends buff camps) has a guardian in the middle of every lane.</summary>
|
||||||
|
public bool CampRound(int round) { return Extended && round > 0 && round % GdMath.Max(1, Balance.CampEvery) == 0; }
|
||||||
|
|
||||||
|
public int CampBuffLeft(int team, string lane) { return Boss.CampBuff[team * 3 + LuneMap.LaneIndex(lane)]; }
|
||||||
|
|
||||||
|
/// <summary>A neutral guardian scaled like the waves of the round; the model is the Bruchhirsch.</summary>
|
||||||
|
public UnitDef CampDefinition(string lane)
|
||||||
|
{
|
||||||
|
UnitDef definition = DataCatalog.GetEnemy("e07");
|
||||||
|
definition.DisplayName = CampNames[LuneMap.LaneIndex(lane)];
|
||||||
|
definition.MaxHp = Balance.CampHp * LuneWaves.Strength(Balance, RoundNumber, Balance.WaveHpGrowth);
|
||||||
|
definition.Damage = Balance.CampDamage * LuneWaves.Strength(Balance, RoundNumber, Balance.WaveDamageGrowth);
|
||||||
|
definition.AttackRange = Balance.CampRange;
|
||||||
|
definition.Speed = 0.0;
|
||||||
|
definition.Bounty = 0;
|
||||||
|
definition.IsBoss = false;
|
||||||
|
definition.ViewScale = 1.35;
|
||||||
|
definition.Ability = "";
|
||||||
|
return definition;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpawnCamps()
|
||||||
|
{
|
||||||
|
if (!CampRound(RoundNumber))
|
||||||
|
return;
|
||||||
|
foreach (string lane in LuneMap.Lanes)
|
||||||
|
{
|
||||||
|
double middle = Map.LanePaths[lane].Length * 0.5;
|
||||||
|
LuneUnit camp = Combat.Spawn("camp", LuneCombat.Neutral, lane, CampDefinition(lane), middle, 0.0);
|
||||||
|
camp.Position = Map.LanePoint(0, lane, middle, 0.0);
|
||||||
|
camp.PreviousPosition = camp.Position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Camp buffs on the army: Glutsegen (top) raises damage; Mondschild (mid) is applied as a shield at spawn.</summary>
|
||||||
|
UnitDef Buffed(UnitDef definition, int team)
|
||||||
|
{
|
||||||
|
if (Boss.CampBuff[team * 3] > 0)
|
||||||
|
definition.Damage *= 1.0 + Balance.CampDamageBuff;
|
||||||
|
return definition;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CampShield(LuneUnit unit)
|
||||||
|
{
|
||||||
|
if (Extended && unit.Team < 2 && Boss.CampBuff[unit.Team * 3 + 1] > 0)
|
||||||
|
unit.GrantShield(unit.MaxHp * Balance.CampShieldBuff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Settlement of the camps: running buffs lose a combat, then every claimed camp gives its
|
||||||
|
/// lane's buff to the team that took it (Beute pays at once).
|
||||||
|
/// </summary>
|
||||||
|
void SettleCamps(int[] gains)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < Boss.CampBuff.Length; i++)
|
||||||
|
Boss.CampBuff[i] = GdMath.Max(0, Boss.CampBuff[i] - 1);
|
||||||
|
for (int i = 0; i < Boss.Wards.Length; i++)
|
||||||
|
Boss.Wards[i] = GdMath.Max(0, Boss.Wards[i] - 1);
|
||||||
|
foreach (CombatEvent ev in Combat.Events)
|
||||||
|
{
|
||||||
|
if (ev.Kind != "camp" || ev.ClaimTeam < 0)
|
||||||
|
continue;
|
||||||
|
int lane = LuneMap.LaneIndex(ev.Lane);
|
||||||
|
if (lane == 2)
|
||||||
|
{
|
||||||
|
for (int slot = ev.ClaimTeam * 3; slot < ev.ClaimTeam * 3 + 3; slot++)
|
||||||
|
gains[slot] += Balance.CampLootGold;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Boss.CampBuff[ev.ClaimTeam * 3 + lane] = Balance.CampBuffRounds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------- S2 extended rules
|
||||||
|
readonly string[] _glyphLane = { "", "" };
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Team actions of the drafts (S2): the glyph lane of the first player in slot order who
|
||||||
|
/// holds one, and the Ancient levels all players of a team bought (capped; the excess is
|
||||||
|
/// refunded). Each level repairs the Ancient by CoreRepair.
|
||||||
|
/// </summary>
|
||||||
|
void CommitTeamActions()
|
||||||
|
{
|
||||||
|
for (int team = 0; team < 2; team++)
|
||||||
|
{
|
||||||
|
_glyphLane[team] = "";
|
||||||
|
for (int slot = team * 3; slot < team * 3 + 3; slot++)
|
||||||
|
{
|
||||||
|
Player player = Players[slot];
|
||||||
|
// S3 wards: a new ward watches its lane for WardRounds combats.
|
||||||
|
foreach (string lane in player.Draft.WardLanes)
|
||||||
|
{
|
||||||
|
int index = team * 3 + LuneMap.LaneIndex(lane);
|
||||||
|
Boss.Wards[index] = GdMath.Max(Boss.Wards[index], Balance.WardRounds);
|
||||||
|
}
|
||||||
|
if (_glyphLane[team].Length == 0 && player.Draft.GlyphLane.Length > 0 && RoundNumber >= Boss.GlyphReady[team])
|
||||||
|
_glyphLane[team] = player.Draft.GlyphLane;
|
||||||
|
for (int i = 0; i < player.Draft.CoreInvest; i++)
|
||||||
|
{
|
||||||
|
int level = Boss.CoreLevel[team];
|
||||||
|
if (level >= Balance.CoreLevelMax)
|
||||||
|
{
|
||||||
|
player.Gold += Balance.CoreUpgradeCost(level - 1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Boss.CoreLevel[team] = level + 1;
|
||||||
|
foreach (BuildingDef definition in Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == team && definition.Tier == "core" && BuildingHp[definition.Id] > 0.0)
|
||||||
|
BuildingHp[definition.Id] = GdMath.Min(definition.MaxHp, BuildingHp[definition.Id] + Balance.CoreRepair);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>S2 recipe (Dota 2 / League of Legends): both parts and the fee become the recipe item, freeing a slot.</summary>
|
||||||
|
CommandResult Combine(HeroState hero, Draft draft, ItemSpec item)
|
||||||
|
{
|
||||||
|
if (!Extended)
|
||||||
|
return Result(false, "Rezepte gibt es nur mit erweiterten Regeln.");
|
||||||
|
if (hero.Items.Contains(item.Id))
|
||||||
|
return Result(false, item.Name + " trägt dein Held bereits; Items sind einzigartig.");
|
||||||
|
foreach (string part in item.Parts)
|
||||||
|
{
|
||||||
|
if (!hero.Items.Contains(part))
|
||||||
|
return Result(false, item.Name + " braucht " + string.Join(" und ", Array.ConvertAll(item.Parts, p => ContentData.Items[p].Name)) + ".");
|
||||||
|
}
|
||||||
|
if (LuneContent.LevelFor(hero.Xp) < item.MinLevel)
|
||||||
|
return Result(false, string.Format("{0} erfordert Stufe {1}.", item.Name, item.MinLevel));
|
||||||
|
if (draft.Gold < item.RecipeFee)
|
||||||
|
return Result(false, string.Format("Es fehlen {0} Gold.", item.RecipeFee - draft.Gold));
|
||||||
|
draft.Gold -= item.RecipeFee;
|
||||||
|
int at = hero.Items.IndexOf(item.Parts[0]);
|
||||||
|
foreach (string part in item.Parts)
|
||||||
|
{
|
||||||
|
hero.Items.Remove(part);
|
||||||
|
hero.FreshItems.Remove(part);
|
||||||
|
}
|
||||||
|
hero.Items.Insert(GdMath.Min(at, hero.Items.Count), item.Id);
|
||||||
|
return Result(true, item.Name + " geschmiedet.");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------- S1 extended rules
|
||||||
|
/// <summary>Legion TD 2: income a booked champion adds for good.</summary>
|
||||||
|
public int ChampionIncome(int cost) { return cost / GdMath.Max(1, Balance.ChampionIncomeDivisor); }
|
||||||
|
|
||||||
|
/// <summary>S3: the defenders' bounty of a champion (halved under the extended rules).</summary>
|
||||||
|
public int ChampionBountyFor(int bounty) { return Extended ? (int)Math.Floor(bounty * Balance.ChampionBountyShare) : bounty; }
|
||||||
|
|
||||||
|
public int BuybackCost(HeroState hero) { return Balance.BuybackCost(LuneContent.LevelFor(hero.Xp)); }
|
||||||
|
|
||||||
|
/// <summary>Dota 2 barracks: the enemy inner tower of this lane has fallen, so this team's waves there are reinforced.</summary>
|
||||||
|
public bool BarracksBroken(int team, string lane)
|
||||||
|
{
|
||||||
|
foreach (BuildingDef definition in Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == 1 - team && definition.Lane == lane && definition.Tier == "inner")
|
||||||
|
return BuildingHp[definition.Id] <= 0.0;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>The wave stronger by BarracksBoost and longer by extra copies of its first monster.</summary>
|
||||||
|
List<UnitDef> Reinforced(List<UnitDef> wave)
|
||||||
|
{
|
||||||
|
var result = new List<UnitDef>();
|
||||||
|
foreach (UnitDef monster in wave)
|
||||||
|
{
|
||||||
|
UnitDef strong = monster.Clone();
|
||||||
|
strong.MaxHp *= 1.0 + Balance.BarracksBoost;
|
||||||
|
strong.Damage *= 1.0 + Balance.BarracksBoost;
|
||||||
|
result.Add(strong);
|
||||||
|
}
|
||||||
|
for (int extra = 0; extra < Balance.BarracksExtraMonsters && result.Count > 0; extra++)
|
||||||
|
result.Insert(0, result[0].Clone());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>League of Legends dragon souls: Mondsegen stacks raise health and damage; the soul adds hero regeneration.</summary>
|
||||||
|
UnitDef Blessed(UnitDef definition, int team, string kind)
|
||||||
|
{
|
||||||
|
int stacks = GdMath.Min(Boss.Blessing[team], Balance.BlessingMax);
|
||||||
|
if (stacks <= 0)
|
||||||
|
return definition;
|
||||||
|
double factor = 1.0 + Balance.BlessingStep * stacks;
|
||||||
|
definition.MaxHp *= factor;
|
||||||
|
definition.Damage *= factor;
|
||||||
|
if (stacks >= Balance.BlessingMax && kind == "hero")
|
||||||
|
definition.Regen += Balance.SoulRegen;
|
||||||
|
return definition;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>S1: an exhausted hero starts its combat with ExhaustedHp of its health.</summary>
|
||||||
|
void Exhaust(LuneUnit unit)
|
||||||
|
{
|
||||||
|
if (!Extended || unit.Kind != "hero" || unit.OwnerSlot < 0)
|
||||||
|
return;
|
||||||
|
HeroState hero = Players[unit.OwnerSlot].Hero;
|
||||||
|
if (hero != null && hero.Exhausted && hero.Uid == unit.PersistentUid)
|
||||||
|
unit.Hp = unit.MaxHp * Balance.ExhaustedHp;
|
||||||
|
}
|
||||||
|
|
||||||
void SpawnChampions()
|
void SpawnChampions()
|
||||||
{
|
{
|
||||||
for (int team = 0; team < 2; team++)
|
for (int team = 0; team < 2; team++)
|
||||||
|
|
@ -494,6 +819,8 @@ namespace Luneraria.Core
|
||||||
if (booking.DeployRound == RoundNumber && booking.Lane == lane)
|
if (booking.DeployRound == RoundNumber && booking.Lane == lane)
|
||||||
{
|
{
|
||||||
UnitDef definition = LuneContent.ChampionDefinition(booking.ChampionId, RoundNumber, Balance);
|
UnitDef definition = LuneContent.ChampionDefinition(booking.ChampionId, RoundNumber, Balance);
|
||||||
|
if (Extended)
|
||||||
|
definition.Bounty = ChampionBountyFor(definition.Bounty);
|
||||||
Combat.Spawn("champion", team, lane, definition, 13.0, ((double)(index % 3) - 1.0) * 1.4, slot, booking.Uid);
|
Combat.Spawn("champion", team, lane, definition, 13.0, ((double)(index % 3) - 1.0) * 1.4, slot, booking.Uid);
|
||||||
index += 1;
|
index += 1;
|
||||||
}
|
}
|
||||||
|
|
@ -595,7 +922,10 @@ namespace Luneraria.Core
|
||||||
ArmyEntry entry = ordered[index];
|
ArmyEntry entry = ordered[index];
|
||||||
int row = index / 4;
|
int row = index / 4;
|
||||||
double lateral = ((double)(index % 4) - 1.5) * 1.2;
|
double lateral = ((double)(index % 4) - 1.5) * 1.2;
|
||||||
Combat.Spawn(entry.Kind, team, lane, entry.Definition, GdMath.Max(0.4, 7.2 - (double)row * 1.5), lateral, entry.Slot, entry.Uid);
|
LuneUnit spawned = Combat.Spawn(entry.Kind, team, lane, Extended ? Buffed(Blessed(entry.Definition, team, entry.Kind), team) : entry.Definition,
|
||||||
|
GdMath.Max(0.4, 7.2 - (double)row * 1.5), lateral, entry.Slot, entry.Uid);
|
||||||
|
Exhaust(spawned);
|
||||||
|
CampShield(spawned);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -613,7 +943,9 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
ArmyEntry entry = ordered[index];
|
ArmyEntry entry = ordered[index];
|
||||||
Vec2 at = entryPoint - inward * (double)(index / 3) * 1.2 + across * ((double)(index % 3) - 1.0) * 1.1;
|
Vec2 at = entryPoint - inward * (double)(index / 3) * 1.2 + across * ((double)(index % 3) - 1.0) * 1.1;
|
||||||
Combat.SpawnAt(entry.Kind, team, Grotto, entry.Definition, at, entry.Slot, entry.Uid);
|
LuneUnit spawned = Combat.SpawnAt(entry.Kind, team, Grotto, Extended ? Buffed(Blessed(entry.Definition, team, entry.Kind), team) : entry.Definition, at, entry.Slot, entry.Uid);
|
||||||
|
Exhaust(spawned);
|
||||||
|
CampShield(spawned);
|
||||||
expedition = true;
|
expedition = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -698,10 +1030,27 @@ namespace Luneraria.Core
|
||||||
if (player.Hero != null && xpGain.TryGetValue(player.Hero.Uid, out gained))
|
if (player.Hero != null && xpGain.TryGetValue(player.Hero.Uid, out gained))
|
||||||
player.Hero.Xp += gained;
|
player.Hero.Xp += gained;
|
||||||
}
|
}
|
||||||
|
if (Extended)
|
||||||
|
{
|
||||||
|
// S2 (Dota 2 glyph): only a glyph that fired goes on cooldown.
|
||||||
|
for (int team = 0; team < 2; team++)
|
||||||
|
{
|
||||||
|
if (Combat.GlyphUsed[team])
|
||||||
|
Boss.GlyphReady[team] = RoundNumber + 1 + Balance.GlyphCooldown;
|
||||||
|
}
|
||||||
|
// S1 (Dota 2 buyback, adapted): a hero that fell is exhausted for the next combat.
|
||||||
|
foreach (LuneUnit unit in Combat.Units)
|
||||||
|
{
|
||||||
|
if (unit.Kind == "hero" && unit.OwnerSlot >= 0 && Players[unit.OwnerSlot].Hero != null && Players[unit.OwnerSlot].Hero.Uid == unit.PersistentUid)
|
||||||
|
Players[unit.OwnerSlot].Hero.Exhausted = !unit.Alive;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Extended)
|
||||||
|
SettleCamps(gains);
|
||||||
int income = Balance.RoundIncome(RoundNumber);
|
int income = Balance.RoundIncome(RoundNumber);
|
||||||
foreach (Player player in Players)
|
foreach (Player player in Players)
|
||||||
{
|
{
|
||||||
int total = gains[player.Slot] + (Combat.DestroyedCores.Count > 0 ? 0 : income);
|
int total = gains[player.Slot] + (Combat.DestroyedCores.Count > 0 ? 0 : income + (Extended ? player.IncomeBonus : 0));
|
||||||
player.Gold += total;
|
player.Gold += total;
|
||||||
player.Earned += total;
|
player.Earned += total;
|
||||||
// Deployed bookings are consumed; they never return as property.
|
// Deployed bookings are consumed; they never return as property.
|
||||||
|
|
@ -772,6 +1121,10 @@ namespace Luneraria.Core
|
||||||
Boss.Claim = new BossClaim { Team = team, WonRound = fought, DeployRound = fought + 1, ChooserSlot = chooser, Lane = Players[chooser].Lane };
|
Boss.Claim = new BossClaim { Team = team, WonRound = fought, DeployRound = fought + 1, ChooserSlot = chooser, Lane = Players[chooser].Lane };
|
||||||
Boss.NextAvailableRound = fought + 1 + LuneContent.BossLockRounds;
|
Boss.NextAvailableRound = fought + 1 + LuneContent.BossLockRounds;
|
||||||
BossLog.Add(new BossLogEntry { Round = fought, Event = "won", Team = team, Chooser = chooser });
|
BossLog.Add(new BossLogEntry { Round = fought, Event = "won", Team = team, Chooser = chooser });
|
||||||
|
// S1 (League of Legends dragon souls): each conquest blesses the team for good.
|
||||||
|
if (Extended)
|
||||||
|
Boss.Blessing[team] = GdMath.Min(Balance.BlessingMax, Boss.Blessing[team] + 1);
|
||||||
|
// (S2 glyph cooldowns are settled in Settle.)
|
||||||
result = "won";
|
result = "won";
|
||||||
}
|
}
|
||||||
else if (Combat.GrottoOutcome == "failed")
|
else if (Combat.GrottoOutcome == "failed")
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
/// <summary>Attack type (row) against armour type (column): Klinge, Durchschlag, Impuls.</summary>
|
/// <summary>Attack type (row) against armour type (column): Klinge, Durchschlag, Impuls.</summary>
|
||||||
public static readonly double[,] DamageMatrix = { { 1.30, 0.75, 1.00 }, { 1.00, 1.30, 0.75 }, { 0.75, 1.00, 1.30 } };
|
public static readonly double[,] DamageMatrix = { { 1.30, 0.75, 1.00 }, { 1.00, 1.30, 0.75 }, { 0.75, 1.00, 1.30 } };
|
||||||
public static readonly string[] MobileKinds = { "troop", "hero", "monster", "champion", "boss" };
|
public static readonly string[] MobileKinds = { "troop", "hero", "monster", "champion", "boss", "camp" };
|
||||||
|
|
||||||
/// <summary>Sequential per combat, assigned in spawn order (deterministic).</summary>
|
/// <summary>Sequential per combat, assigned in spawn order (deterministic).</summary>
|
||||||
public int Id;
|
public int Id;
|
||||||
|
|
@ -67,15 +67,32 @@ namespace Luneraria.Core
|
||||||
/// <summary>The grotto boss waits while two expeditions still fight each other.</summary>
|
/// <summary>The grotto boss waits while two expeditions still fight each other.</summary>
|
||||||
public bool Dormant;
|
public bool Dormant;
|
||||||
public double AuraReady = 4.0;
|
public double AuraReady = 4.0;
|
||||||
|
// H1 hero kit: Sylvara's leap (once per combat) and the ultimate charge (once per combat).
|
||||||
|
public bool LeapUsed;
|
||||||
|
/// <summary>Set for the one step of a leap: the unit lands next to this target.</summary>
|
||||||
|
public LuneUnit LeapTarget;
|
||||||
|
/// <summary>The first hit after a leap deals extra damage.</summary>
|
||||||
|
public bool LeapStrike;
|
||||||
|
public bool UltimateUsed;
|
||||||
// Presentation-only counters; never read by the rules.
|
// Presentation-only counters; never read by the rules.
|
||||||
public int AttackSerial;
|
public int AttackSerial;
|
||||||
public int AbilitySerial;
|
public int AbilitySerial;
|
||||||
|
public int LeapSerial;
|
||||||
|
public int UltimateSerial;
|
||||||
|
/// <summary>S4: stunned as reported by the host's frame (guests have no effects); presentation only.</summary>
|
||||||
|
public bool NetStunned;
|
||||||
|
|
||||||
|
/// <summary>Stunned for the view: the own effect on the host, the frame flag on a guest.</summary>
|
||||||
|
public bool ShowsStun() { return NetStunned || Stunned(); }
|
||||||
public double HitFlash;
|
public double HitFlash;
|
||||||
public bool InRange;
|
public bool InRange;
|
||||||
public double DeathTime = -1.0;
|
public double DeathTime = -1.0;
|
||||||
|
|
||||||
public bool IsBuilding() { return Kind == "tower" || Kind == "core"; }
|
public bool IsBuilding() { return Kind == "tower" || Kind == "core"; }
|
||||||
|
|
||||||
|
/// <summary>Buildings and S3 camp guardians stay where they are and only fight in reach.</summary>
|
||||||
|
public bool IsStationary() { return IsBuilding() || Kind == "camp"; }
|
||||||
|
|
||||||
public bool IsMobile() { return Array.IndexOf(MobileKinds, Kind) >= 0; }
|
public bool IsMobile() { return Array.IndexOf(MobileKinds, Kind) >= 0; }
|
||||||
|
|
||||||
public double AttackRange() { return Def.AttackRange; }
|
public double AttackRange() { return Def.AttackRange; }
|
||||||
|
|
@ -91,7 +108,8 @@ namespace Luneraria.Core
|
||||||
public double Mitigated(double raw, int attackType)
|
public double Mitigated(double raw, int attackType)
|
||||||
{
|
{
|
||||||
double value = GdMath.Max(0.0, raw) * DamageMatrix[GdMath.Clamp(attackType, 0, 2), ArmorType()];
|
double value = GdMath.Max(0.0, raw) * DamageMatrix[GdMath.Clamp(attackType, 0, 2), ArmorType()];
|
||||||
return value * (1.0 - DamageReduction());
|
// H2: a unit marked by Brunhild's spear takes more damage ("vulnerable"; 0 for everyone else).
|
||||||
|
return value * (1.0 - DamageReduction()) * (1.0 + StrongestEffect("vulnerable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Applies an already mitigated amount through the shield.</summary>
|
/// <summary>Applies an already mitigated amount through the shield.</summary>
|
||||||
|
|
@ -197,8 +215,13 @@ namespace Luneraria.Core
|
||||||
return GdMath.Min(0.35, result + Def.ReductionBonus);
|
return GdMath.Min(0.35, result + Def.ReductionBonus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>H2: Brunhild's stun stops attacks and movement for its duration.</summary>
|
||||||
|
public bool Stunned() { return StrongestEffect("stun") > 0.0; }
|
||||||
|
|
||||||
public double AttackSpeedFactor()
|
public double AttackSpeedFactor()
|
||||||
{
|
{
|
||||||
|
if (Stunned())
|
||||||
|
return 0.0;
|
||||||
double slowing = StrongestEffect("attack_slow") * (IsBoss() ? 0.5 : 1.0);
|
double slowing = StrongestEffect("attack_slow") * (IsBoss() ? 0.5 : 1.0);
|
||||||
double bonus = Def.AttackSpeedBonus;
|
double bonus = Def.AttackSpeedBonus;
|
||||||
return 1.0 + GdMath.Clamp(StrongestEffect("attack_speed") - slowing + bonus, -0.25, 0.5);
|
return 1.0 + GdMath.Clamp(StrongestEffect("attack_speed") - slowing + bonus, -0.25, 0.5);
|
||||||
|
|
@ -210,6 +233,8 @@ namespace Luneraria.Core
|
||||||
|
|
||||||
public double MovementFactor()
|
public double MovementFactor()
|
||||||
{
|
{
|
||||||
|
if (Stunned())
|
||||||
|
return 0.0;
|
||||||
return 1.0 - GdMath.Min(0.35, StrongestEffect("movement_slow") * (IsBoss() ? 0.5 : 1.0));
|
return 1.0 - GdMath.Min(0.35, StrongestEffect("movement_slow") * (IsBoss() ? 0.5 : 1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,12 @@ namespace Luneraria.Core
|
||||||
public bool Fresh;
|
public bool Fresh;
|
||||||
/// <summary>Items bought in the current planning (full refund on sale).</summary>
|
/// <summary>Items bought in the current planning (full refund on sale).</summary>
|
||||||
public List<string> FreshItems = new List<string>();
|
public List<string> FreshItems = new List<string>();
|
||||||
|
/// <summary>Trigger rule of the ultimate (H1), "" = the hero's default rule.</summary>
|
||||||
|
public string Ultimate = "";
|
||||||
|
/// <summary>H1: cosmetic skin ("" = standard), chosen freely in planning, visible to everyone.</summary>
|
||||||
|
public string Skin = "";
|
||||||
|
/// <summary>S1 (extended rules): fell in the last combat; starts the next one weakened unless bought back.</summary>
|
||||||
|
public bool Exhausted;
|
||||||
|
|
||||||
public HeroState Clone()
|
public HeroState Clone()
|
||||||
{
|
{
|
||||||
|
|
@ -69,10 +75,17 @@ namespace Luneraria.Core
|
||||||
public List<Booking> NewBookings = new List<Booking>();
|
public List<Booking> NewBookings = new List<Booking>();
|
||||||
/// <summary>Lane chosen by the boss chooser in this planning, "" if unchanged.</summary>
|
/// <summary>Lane chosen by the boss chooser in this planning, "" if unchanged.</summary>
|
||||||
public string BossLane = "";
|
public string BossLane = "";
|
||||||
|
/// <summary>S2: lane the player holds the team glyph ready for, "" = none.</summary>
|
||||||
|
public string GlyphLane = "";
|
||||||
|
/// <summary>S2: Ancient levels this player buys in this planning.</summary>
|
||||||
|
public int CoreInvest;
|
||||||
|
/// <summary>S3: lanes the player places a ward on in this planning.</summary>
|
||||||
|
public List<string> WardLanes = new List<string>();
|
||||||
|
|
||||||
public Draft Clone()
|
public Draft Clone()
|
||||||
{
|
{
|
||||||
var copy = new Draft { Gold = Gold, NextSeq = NextSeq, BossLane = BossLane, Hero = Hero != null ? Hero.Clone() : null };
|
var copy = new Draft { Gold = Gold, NextSeq = NextSeq, BossLane = BossLane, GlyphLane = GlyphLane, CoreInvest = CoreInvest, Hero = Hero != null ? Hero.Clone() : null,
|
||||||
|
WardLanes = new List<string>(WardLanes) };
|
||||||
foreach (RosterEntry entry in Roster)
|
foreach (RosterEntry entry in Roster)
|
||||||
copy.Roster.Add(entry.Clone());
|
copy.Roster.Add(entry.Clone());
|
||||||
foreach (Booking booking in NewBookings)
|
foreach (Booking booking in NewBookings)
|
||||||
|
|
@ -100,6 +113,8 @@ namespace Luneraria.Core
|
||||||
public int NextSeq;
|
public int NextSeq;
|
||||||
public Draft Draft;
|
public Draft Draft;
|
||||||
public List<Draft> Undo = new List<Draft>();
|
public List<Draft> Undo = new List<Draft>();
|
||||||
|
/// <summary>S1 (extended rules): permanent income from booked attack champions (Legion TD 2).</summary>
|
||||||
|
public int IncomeBonus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class BossClaim
|
public sealed class BossClaim
|
||||||
|
|
@ -120,6 +135,16 @@ namespace Luneraria.Core
|
||||||
public BossClaim Claim;
|
public BossClaim Claim;
|
||||||
/// <summary>Round whose settlement was already applied (idempotence), 0 = none.</summary>
|
/// <summary>Round whose settlement was already applied (idempotence), 0 = none.</summary>
|
||||||
public int SettledRound;
|
public int SettledRound;
|
||||||
|
/// <summary>S1 (extended rules): Mondsegen stacks per team from grotto victories (League of Legends dragon souls).</summary>
|
||||||
|
public int[] Blessing = new int[2];
|
||||||
|
/// <summary>S2 (extended rules): first round each team's glyph can be held again (Dota 2).</summary>
|
||||||
|
public int[] GlyphReady = { 1, 1 };
|
||||||
|
/// <summary>S2 (extended rules): Ancient level per team, 0..3 (Legion TD 2 king upgrades).</summary>
|
||||||
|
public int[] CoreLevel = new int[2];
|
||||||
|
/// <summary>S3 (extended rules): combats left of the camp buffs, index team × 3 + lane (top Glutsegen, mid Mondschild).</summary>
|
||||||
|
public int[] CampBuff = new int[6];
|
||||||
|
/// <summary>S3 (extended rules): rounds left of each team's ward per lane (team × 3 + lane).</summary>
|
||||||
|
public int[] Wards = new int[6];
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class BossLogEntry
|
public sealed class BossLogEntry
|
||||||
|
|
@ -179,6 +204,12 @@ namespace Luneraria.Core
|
||||||
public List<string> Bunds = new List<string>();
|
public List<string> Bunds = new List<string>();
|
||||||
/// <summary>Optional fixed bot profile per slot (balance runs).</summary>
|
/// <summary>Optional fixed bot profile per slot (balance runs).</summary>
|
||||||
public List<string> Profiles = new List<string>();
|
public List<string> Profiles = new List<string>();
|
||||||
|
/// <summary>
|
||||||
|
/// S1: extended rules after Legion TD 2, Dota 2 and League of Legends (champion income,
|
||||||
|
/// barracks, exhaustion and buyback, Mondsegen) and bots that may pick the heroes after
|
||||||
|
/// the reference. False = the reference rules of the port (golden replays, fingerprints).
|
||||||
|
/// </summary>
|
||||||
|
public bool Extended;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Bot-private notes per slot, derived only from its own actions and public outcomes.</summary>
|
/// <summary>Bot-private notes per slot, derived only from its own actions and public outcomes.</summary>
|
||||||
|
|
@ -232,5 +263,17 @@ namespace Luneraria.Core
|
||||||
public static Command ChampionBook(string championId, string lane = null) { return new Command { Type = "champion_book", ChampionId = championId, Lane = lane }; }
|
public static Command ChampionBook(string championId, string lane = null) { return new Command { Type = "champion_book", ChampionId = championId, Lane = lane }; }
|
||||||
public static Command ChampionCancel(string uid) { return new Command { Type = "champion_cancel", Uid = uid }; }
|
public static Command ChampionCancel(string uid) { return new Command { Type = "champion_cancel", Uid = uid }; }
|
||||||
public static Command BossLaneChoice(string lane) { return new Command { Type = "boss_lane", Lane = lane }; }
|
public static Command BossLaneChoice(string lane) { return new Command { Type = "boss_lane", Lane = lane }; }
|
||||||
|
/// <summary>H1: trigger rule of the hero's ultimate; the rule id travels in TypeId.</summary>
|
||||||
|
public static Command UltimateRule(string rule) { return new Command { Type = "ultimate_rule", TypeId = rule }; }
|
||||||
|
/// <summary>H1: cosmetic skin of the hero ("" = standard); the skin id travels in TypeId.</summary>
|
||||||
|
public static Command HeroSkin(string skin) { return new Command { Type = "hero_skin", TypeId = skin }; }
|
||||||
|
/// <summary>S1: buys an exhausted hero back to full strength for the next combat.</summary>
|
||||||
|
public static Command Buyback() { return new Command { Type = "buyback" }; }
|
||||||
|
/// <summary>S2: hold the team glyph for a lane in the coming combat ("" withdraws it).</summary>
|
||||||
|
public static Command Glyph(string lane) { return new Command { Type = "glyph", Lane = lane }; }
|
||||||
|
/// <summary>S2: buy the next Ancient level for the team.</summary>
|
||||||
|
public static Command CoreUpgrade() { return new Command { Type = "core_upgrade" }; }
|
||||||
|
/// <summary>S3: place a ward on a lane (fog of war).</summary>
|
||||||
|
public static Command Ward(string lane) { return new Command { Type = "ward", Lane = lane }; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -213,6 +213,34 @@ namespace Luneraria.EditorTools
|
||||||
Directory.CreateDirectory(Folder + "/Units");
|
Directory.CreateDirectory(Folder + "/Units");
|
||||||
foreach (KeyValuePair<string, Material> pair in imported)
|
foreach (KeyValuePair<string, Material> pair in imported)
|
||||||
Add(set, pair.Key, Create(Folder + "/Units/" + pair.Key + ".mat", UnitSpec(pair.Key, pair.Value)), null, null);
|
Add(set, pair.Key, Create(Folder + "/Units/" + pair.Key + ".mat", UnitSpec(pair.Key, pair.Value)), null, null);
|
||||||
|
SkinMaterials(set, imported);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// H1 skins (variant stage): tools/meshy/skin_variant.py writes a recoloured albedo
|
||||||
|
/// ai-<figure>_<skin>-albedo-2k.png beside the maps of a Meshy figure. Each becomes a
|
||||||
|
/// Surface material AI_<Figure>_<Skin> with the standard normal and ORM maps;
|
||||||
|
/// LuneMaterialSet.Dress takes it for heroes that carry the skin.
|
||||||
|
/// </summary>
|
||||||
|
static void SkinMaterials(LuneMaterialSet set, SortedDictionary<string, Material> imported)
|
||||||
|
{
|
||||||
|
foreach (KeyValuePair<string, Material> pair in imported)
|
||||||
|
{
|
||||||
|
if (UnitFamily(pair.Key) != "authored")
|
||||||
|
continue;
|
||||||
|
string stem = Textures + "/ai-" + pair.Key.Substring(3).ToLowerInvariant();
|
||||||
|
foreach (string path in Directory.GetFiles(Textures, Path.GetFileName(stem) + "_*-albedo-2k.png").OrderBy(p => p, StringComparer.Ordinal))
|
||||||
|
{
|
||||||
|
string file = Path.GetFileName(path);
|
||||||
|
string skin = file.Substring(Path.GetFileName(stem).Length + 1, file.Length - Path.GetFileName(stem).Length - 1 - "-albedo-2k.png".Length);
|
||||||
|
if (skin.Length == 0 || skin.Contains("_"))
|
||||||
|
continue;
|
||||||
|
string name = LuneMaterialSet.SkinKey(pair.Key, skin);
|
||||||
|
Spec spec = UnitSpec(pair.Key, pair.Value);
|
||||||
|
spec.UvAlbedo = Map(Textures + "/" + file, TextureImporterType.Default, true);
|
||||||
|
Add(set, name, Create(Folder + "/Units/" + name + ".mat", spec), null, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Plain Surface material of a figure: imported colour, roughness and emission plus the family's set.</summary>
|
/// <summary>Plain Surface material of a figure: imported colour, roughness and emission plus the family's set.</summary>
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,8 @@ namespace Luneraria.EditorTools
|
||||||
library.BoltLight[team] = LuneMaterialFactory.TeamLight[team];
|
library.BoltLight[team] = LuneMaterialFactory.TeamLight[team];
|
||||||
}
|
}
|
||||||
library.HeroRing = Marker("Ring_Hero", LuneMaterialFactory.Hex("f2c96b"), 2.2f, false);
|
library.HeroRing = Marker("Ring_Hero", LuneMaterialFactory.Hex("f2c96b"), 2.2f, false);
|
||||||
|
library.MoonBurst = Marker("Ring_MoonBurst", LuneMaterialFactory.Hex("8fb8ff"), 4f, false);
|
||||||
|
library.FogOverlay = FogMaterial();
|
||||||
for (int team = 0; team < 2; team++)
|
for (int team = 0; team < 2; team++)
|
||||||
{
|
{
|
||||||
library.OwnerRing[team] = Marker("Ring_Owner_" + team, LuneMaterialFactory.TeamColor[team], 3f, false);
|
library.OwnerRing[team] = Marker("Ring_Owner_" + team, LuneMaterialFactory.TeamColor[team], 3f, false);
|
||||||
|
|
@ -179,6 +181,24 @@ namespace Luneraria.EditorTools
|
||||||
return existing;
|
return existing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>S4: the fog of war overlay material (night blue, alpha from the grid's vertices).</summary>
|
||||||
|
static Material FogMaterial()
|
||||||
|
{
|
||||||
|
string path = LuneMaterialFactory.Folder + "/Markers/Fog_Overlay.mat";
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
||||||
|
Shader shader = Shader.Find("Luneraria/FogOverlay");
|
||||||
|
var material = AssetDatabase.LoadAssetAtPath<Material>(path);
|
||||||
|
if (material == null)
|
||||||
|
{
|
||||||
|
material = new Material(shader);
|
||||||
|
AssetDatabase.CreateAsset(material, path);
|
||||||
|
}
|
||||||
|
material.shader = shader;
|
||||||
|
material.SetColor("_Color", new Color(.03f, .04f, .08f, 1f));
|
||||||
|
EditorUtility.SetDirty(material);
|
||||||
|
return material;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Unshaded marker colour (Godot _flat with emission energy); bars draw on top.</summary>
|
/// <summary>Unshaded marker colour (Godot _flat with emission energy); bars draw on top.</summary>
|
||||||
static Material Marker(string name, Color srgb, float energy, bool onTop)
|
static Material Marker(string name, Color srgb, float energy, bool onTop)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -185,6 +185,18 @@ MonoBehaviour:
|
||||||
Neutral: {fileID: 2100000, guid: 48235766686d249dfb6f4463f7a554c7, type: 2}
|
Neutral: {fileID: 2100000, guid: 48235766686d249dfb6f4463f7a554c7, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
Rot: {fileID: 0}
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Basaltbastion
|
||||||
|
Neutral: {fileID: 2100000, guid: 2844b8628dab84e70bea79fbffa9958f, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Brunhild
|
||||||
|
Neutral: {fileID: 2100000, guid: 86538db76bda54b19acbf73c7e1e6432, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_BrunhildSpeer
|
||||||
|
Neutral: {fileID: 2100000, guid: 683e7a7f8c9ff4bafbe24e22287ad674, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
- Key: AI_Funkenlanze
|
- Key: AI_Funkenlanze
|
||||||
Neutral: {fileID: 2100000, guid: d5a88e3321a884b30bd8a8606b78090d, type: 2}
|
Neutral: {fileID: 2100000, guid: d5a88e3321a884b30bd8a8606b78090d, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
|
|
@ -217,6 +229,18 @@ MonoBehaviour:
|
||||||
Neutral: {fileID: 2100000, guid: 93a8cf8007ee9440bb5da876affb71ff, type: 2}
|
Neutral: {fileID: 2100000, guid: 93a8cf8007ee9440bb5da876affb71ff, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
Rot: {fileID: 0}
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Sonnenesse
|
||||||
|
Neutral: {fileID: 2100000, guid: 5b981266cd95f494096dd602cad81f3d, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Sylvara
|
||||||
|
Neutral: {fileID: 2100000, guid: 00ddb73ac97f84f3aa8a67f370518a03, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_SylvaraSichel
|
||||||
|
Neutral: {fileID: 2100000, guid: 865f4661bd87d4a2898d8136100264bf, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
- Key: BB_Basalt
|
- Key: BB_Basalt
|
||||||
Neutral: {fileID: 2100000, guid: 37c64b9b93d784d8ba407e7c9682aae4, type: 2}
|
Neutral: {fileID: 2100000, guid: 37c64b9b93d784d8ba407e7c9682aae4, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
|
|
@ -729,3 +753,19 @@ MonoBehaviour:
|
||||||
Neutral: {fileID: 2100000, guid: 09c239a4cf52e4af4969869c24b078ff, type: 2}
|
Neutral: {fileID: 2100000, guid: 09c239a4cf52e4af4969869c24b078ff, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
Rot: {fileID: 0}
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Brunhild_Eiswalkuere
|
||||||
|
Neutral: {fileID: 2100000, guid: 8058295d8bee34a8b831603ad53f5501, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_BrunhildSpeer_Eiswalkuere
|
||||||
|
Neutral: {fileID: 2100000, guid: 40b5dbee4b87547ef9b92e96deeb30a6, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Sylvara_Blutmond
|
||||||
|
Neutral: {fileID: 2100000, guid: aa1c3bf7df6bd46ddbe3d0c8051d5b82, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_SylvaraSichel_Blutmond
|
||||||
|
Neutral: {fileID: 2100000, guid: fda7007d8c5bb46db9bf32c4940caab8, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
|
|
||||||
31
Assets/Luneraria/Materials/Markers/Fog_Overlay.mat
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Fog_Overlay
|
||||||
|
m_Shader: {fileID: 4800000, guid: 7633b9f391704a8f84ae742a82128282, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs: []
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats: []
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 0.03, g: 0.04, b: 0.08, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
8
Assets/Luneraria/Materials/Markers/Fog_Overlay.mat.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7846e5bf0b03a456ab8720cbca2c8d9d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
33
Assets/Luneraria/Materials/Markers/Ring_MoonBurst.mat
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Ring_MoonBurst
|
||||||
|
m_Shader: {fileID: 4800000, guid: 5674755340f3b446aad7884cd0870a4f, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 1
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs: []
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _Cull: 0
|
||||||
|
- _ZTest: 4
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 1.0987095, g: 1.9172809, b: 4, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c79261fd1aa5e42479782d3bac53f7ba
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
68
Assets/Luneraria/Materials/Units/AI_Basaltbastion.mat
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: AI_Basaltbastion
|
||||||
|
m_Shader: {fileID: 4800000, guid: 9809bd5750e264586bd30e14a6f1bd4e, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 0
|
||||||
|
m_EnableInstancingVariants: 1
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _AlbedoMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 0d36246861f5e495c9a37eebff823d05, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: fb23cd5309e9a4cc280eaf1093b8e477, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OrmMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: ced81c900c77948e38af00218f6fe9b5, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _StoneMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 2e11a30a0df8143ab84722ec0a116b6d, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _Cull: 2
|
||||||
|
- _Energy: 1
|
||||||
|
- _Flicker: 0
|
||||||
|
- _Glow: 1.25
|
||||||
|
- _Metallic: 1
|
||||||
|
- _Mode: 0
|
||||||
|
- _NormalStrength: 1
|
||||||
|
- _ObjectSpace: 0
|
||||||
|
- _Quality: 1
|
||||||
|
- _Relief: 0.016
|
||||||
|
- _Rim: 0.35
|
||||||
|
- _Roughness: 1
|
||||||
|
- _Seed: 0
|
||||||
|
- _ShadowNormalScale: 0
|
||||||
|
- _StoneScale: 1
|
||||||
|
- _UvMaps: 1
|
||||||
|
- _VertexColor: 0
|
||||||
|
m_Colors:
|
||||||
|
- _AlbedoMean: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _OrmMean: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _RimColor: {r: 0.8, g: 0.86, b: 1, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2844b8628dab84e70bea79fbffa9958f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||