more spots

This commit is contained in:
jshipsey 2021-09-01 03:58:19 -04:00
parent 8d377d6cf2
commit 523a15e5cc
64 changed files with 850 additions and 52 deletions

View File

@ -0,0 +1,13 @@
EntityConfig (
name: Name("Gnome"),
body: RandomWith("gnome"),
alignment: Alignment(Wild),
loot: LootTable("common.loot_tables.dungeon.tier-4.enemy"),
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")),
meta: [
LoadoutAsset("common.loadout.spots.gnome"),
],
)

View File

@ -8,6 +8,6 @@ EntityConfig (
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")),
meta: [
LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"),
LoadoutAsset("common.loadout.spot.gnome"),
],
)

View File

@ -0,0 +1,24 @@
EntityConfig (
name: Name("Pirate"),
body: Exact(Humanoid(Body(
species: Human,
body_type: Female,
hair_style: 2,
beard: 0,
eyes: 0,
accessory: 0,
hair_color: 0,
skin: 0,
eye_color: 0,
))),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.biped_large.saurok"),
hands: Paired(Item("common.items.weapons.sword_1h.iron-2")),
meta: [
SkillSetAsset("common.skillset.dungeon.tier-5.sword"),
LoadoutAsset("common.loadout.spots.pirate"),
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Belt",
description: "",
kind: Armor((
kind: Belt("Pirate"),
stats: (
protection: Normal(8.0),
poise_resilience: Normal(1.0),
energy_max: 20,
energy_reward: 0.025,
crit_power: 0.02,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Jacket",
description: "",
kind: Armor((
kind: Chest("Pirate"),
stats: (
protection: Normal(48.0),
poise_resilience: Normal(6.0),
energy_max: 135,
energy_reward: 0.135,
crit_power: 0.125,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Boots",
description: "",
kind: Armor((
kind: Foot("Pirate"),
stats: (
protection: Normal(16.0),
poise_resilience: Normal(2.0),
energy_max: 45,
energy_reward: 0.045,
crit_power: 0.04,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Gloves",
description: "",
kind: Armor((
kind: Hand("Pirate"),
stats: (
protection: Normal(16.0),
poise_resilience: Normal(2.0),
energy_max: 45,
energy_reward: 0.045,
crit_power: 0.04,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Hat",
description: "",
kind: Armor((
kind: Head("Pirate"),
stats: (
protection: Normal(32.0),
poise_resilience: Normal(5.0),
energy_max: 90,
energy_reward: 0.1,
crit_power: 0.08,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Pants",
description: "",
kind: Armor((
kind: Pants("Pirate"),
stats: (
protection: Normal(32.0),
poise_resilience: Normal(4.0),
energy_max: 90,
energy_reward: 0.1,
crit_power: 0.08,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -0,0 +1,19 @@
ItemDef(
name: "Pirate Mantle",
description: "",
kind: Armor((
kind: Shoulder("Pirate"),
stats: (
protection: Normal(32.0),
poise_resilience: Normal(5.0),
energy_max: 90,
energy_reward: 0.1,
crit_power: 0.08,
stealth: 0.0,
),
)),
quality: Epic,
tags: [
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -14,6 +14,6 @@ ItemDef(
)),
quality: Epic,
tags: [
Cultist,
],
)

View File

@ -0,0 +1,17 @@
ItemDef(
name: "Gnarling",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Chest("Gnome"),
stats: (
protection: Normal(2.0),
poise_resilience: Normal(1.0),
energy_max: 0,
energy_reward: 0.0,
crit_power: 0.0,
stealth: 0.0,
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,17 @@
ItemDef(
name: "Gnome",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Foot("Gnome"),
stats: (
protection: Normal(1.0),
poise_resilience: Normal(1.0),
energy_max: 0,
energy_reward: 0.0,
crit_power: 0.0,
stealth: 0.0,
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,17 @@
ItemDef(
name: "Gnome",
description: "Ceremonial attire used by members..",
kind: Armor((
kind: Hand("Gnome"),
stats: (
protection: Normal(1.0),
poise_resilience: Normal(1.0),
energy_max: 0,
energy_reward: 0.0,
crit_power: 0.0,
stealth: 0.0,
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,17 @@
ItemDef(
name: "Gnome",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Head("Gnome"),
stats: (
protection: Normal(1.0),
poise_resilience: Normal(1.0),
energy_max: 0,
energy_reward: 0.0,
crit_power: 0.0,
stealth: 0.0,
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,17 @@
ItemDef(
name: "Gnome",
description: "Ceremonial attire used by members..",
kind: Armor((
kind: Pants("Gnome"),
stats: (
protection: Normal(1.0),
poise_resilience: Normal(1.0),
energy_max: 0,
energy_reward: 0.0,
crit_power: 0.0,
stealth: 0.0,
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,17 @@
ItemDef(
name: "Gnarling",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Belt("Gnarling"),
stats: (
protection: Normal(1.0),
poise_resilience: Normal(1.0),
energy_max: 0,
energy_reward: 0.0,
crit_power: 0.0,
stealth: 0.0,
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,7 @@
({
Armor(Head): Item("common.items.npc_armor.biped_small.gnome.head.gnome"),
Armor(Feet): Item("common.items.npc_armor.biped_small.gnome.foot.gnome"),
Armor(Hands): Item("common.items.npc_armor.biped_small.gnome.hand.gnome"),
Armor(Chest): Item("common.items.npc_armor.biped_small.gnome.chest.gnome"),
Armor(Legs): Item("common.items.npc_armor.biped_small.gnome.pants.gnome"),
})

View File

@ -0,0 +1,10 @@
({
Armor(Head): Item("common.items.armor.pirate.hat"),
Armor(Chest): Item("common.items.armor.pirate.chest"),
Armor(Shoulders): Item("common.items.armor.pirate.shoulder"),
Armor(Belt): Item("common.items.armor.pirate.belt"),
Armor(Hands): Item("common.items.armor.pirate.hand"),
Armor(Legs): Item("common.items.armor.pirate.pants"),
Armor(Feet): Item("common.items.armor.pirate.foot"),
Lantern: Item("common.items.lantern.black_0"),
})

BIN
assets/voxygen/voxel/armor/pirate/belt.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pirate/chest.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pirate/foot.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pirate/hand.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pirate/hat.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pirate/pants.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pirate/shoulder.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -100,6 +100,14 @@
vox_spec: ("armor.savage.belt", (-4.0, -4.0, 1.0)),
color: None
),
"Witch":(
vox_spec: ("armor.witch.belt", (-4.0, -3.5, -2.0)),
color: None
),
"Pirate":(
vox_spec: ("armor.pirate.belt", (-4.0, -4.0, 2.5)),
color: None
),
"Linen":(
vox_spec: ("armor.cloth.linen.belt", (-4.0, -4.0, 0.0)),
color: None
@ -112,10 +120,6 @@
vox_spec: ("armor.cloth.silken.belt", (-4.0, -3.5, -3.0)),
color: None
),
"Witch":(
vox_spec: ("armor.witch.belt", (-4.0, -3.5, -3.0)),
color: None
),
"Druid":(
vox_spec: ("armor.cloth.druid.belt", (-4.0, -4.0, -0.5)),
color: None

View File

@ -170,6 +170,14 @@
vox_spec: ("armor.hide.savage.chest", (-7.0, -4.0, 1.0)),
color: None
),
"Witch": (
vox_spec: ("armor.witch.chest", (-7.0, -4.0, 2.0)),
color: None
),
"Pirate": (
vox_spec: ("armor.pirate.chest", (-7.0, -4.0, 2.0)),
color: None
),
"Linen": (
vox_spec: ("armor.cloth.linen.chest", (-7.0, -4.0, 2.0)),
color: None
@ -182,10 +190,6 @@
vox_spec: ("armor.cloth.silken.chest", (-7.0, -4.0, 1.0)),
color: None
),
"Witch": (
vox_spec: ("armor.witch.chest", (-7.0, -4.0, 1.0)),
color: None
),
"Druid": (
vox_spec: ("armor.cloth.druid.chest", (-7.0, -4.0, 2.0)),
color: None

View File

@ -100,6 +100,14 @@
vox_spec: ("armor.savage.foot", (-2.5, -3.5, -2.0)),
color: None
),
"Witch": (
vox_spec: ("armor.witch.foot", (-2.5, -3.5, -2.0)),
color: None
),
"Pirate": (
vox_spec: ("armor.pirate.foot", (-2.5, -3.5, -2.0)),
color: None
),
"Linen": (
vox_spec: ("armor.cloth.linen.foot", (-2.5, -3.5, -2.0)),
color: None
@ -112,10 +120,6 @@
vox_spec: ("armor.cloth.silken.foot", (-2.5, -3.5, -2.0)),
color: None
),
"Witch": (
vox_spec: ("armor.witch.foot", (-2.5, -3.5, -2.0)),
color: None
),
"Druid": (
vox_spec: ("armor.cloth.druid.foot", (-2.5, -3.5, -2.0)),
color: None

View File

@ -220,6 +220,26 @@
color: None
)
),
"Witch": (
left: (
vox_spec: ("armor.witch.hand", (-2.5, -2.5, -4.0)),
color: None
),
right: (
vox_spec: ("armor.witch.hand", (-1.5, -2.5, -4.0)),
color: None
)
),
"Pirate": (
left: (
vox_spec: ("armor.pirate.hand", (-2.5, -2.5, -4.0)),
color: None
),
right: (
vox_spec: ("armor.pirate.hand", (-1.5, -2.5, -4.0)),
color: None
)
),
"Linen": (
left: (
vox_spec: ("armor.cloth.linen.hand", (-1.5, -2.0, -3.0)),
@ -250,16 +270,6 @@
color: None
)
),
"Witch": (
left: (
vox_spec: ("armor.witch.hand", (-2.5, -2.5, -4.0)),
color: None
),
right: (
vox_spec: ("armor.witch.hand", (-1.5, -2.5, -4.0)),
color: None
)
),
"Druid": (
left: (
vox_spec: ("armor.cloth.druid.hand", (-2.5, -1.0, -3.0)),

View File

@ -32,5 +32,9 @@
vox_spec: ("armor.witch.hat", (-2.0, -2.0, 5.0)),
color: None
),
(Human, "Pirate"): (
vox_spec: ("armor.pirate.hat", (-2.0, -2.0, 5.0)),
color: None
),
}
))

View File

@ -128,6 +128,14 @@
vox_spec: ("armor.savage.pants", (-5.0, -4.0, 0.5)),
color: None
),
"Witch": (
vox_spec: ("armor.witch.pants", (-5.0, -4.0, 0.5)),
color: None
),
"Pirate": (
vox_spec: ("armor.pirate.pants", (-5.0, -4.0, 1.5)),
color: None
),
"Linen": (
vox_spec: ("armor.cloth.linen.pants", (-5.0, -4.0, 0.5)),
color: None
@ -140,10 +148,6 @@
vox_spec: ("armor.cloth.silken.pants", (-5.0, -4.0, 0.5)),
color: None
),
"Witch": (
vox_spec: ("armor.witch.pants", (-5.0, -4.0, 0.5)),
color: None
),
"Druid": (
vox_spec: ("armor.cloth.druid.pants", (-5.0, -4.0, 0.5)),
color: None

View File

@ -301,6 +301,26 @@
color: None
)
),
"Witch": (
left: (
vox_spec: ("armor.witch.shoulder", (-5.0, -4.0 , -2.0)),
color: None
),
right: (
vox_spec: ("armor.witch.shoulder", (-1.0, -4.0 , -2.0)),
color: None
)
),
"Pirate": (
left: (
vox_spec: ("armor.pirate.shoulder", (-5.0, -4.0 , -2.0)),
color: None
),
right: (
vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)),
color: None
)
),
"Linen": (
left: (
vox_spec: ("armor.cloth.linen.shoulder", (-3.5, -4.0 , -1.0)),
@ -331,16 +351,6 @@
color: None
)
),
"Witch": (
left: (
vox_spec: ("armor.witch.shoulder", (-5.0, -4.0 , -2.0)),
color: None
),
right: (
vox_spec: ("armor.witch.shoulder", (-1.0, -4.0, -2.0)),
color: None
)
),
"Druid": (
left: (
vox_spec: ("armor.cloth.druid.shoulder", (-4.5, -4.0 , -3.5)),

View File

@ -0,0 +1,12 @@
#![enable(unwrap_newtypes)]
[
(
specifier: "world.structure.natural.arch",
center: (32, 14, 10)
),
(
specifier: "world.structure.natural.arch-1",
center: (14, 12, 10)
),
]

View File

@ -0,0 +1,8 @@
#![enable(unwrap_newtypes)]
[
(
specifier: "world.structure.natural.big_mushroom",
center: (12, 12, 4),
),
]

View File

@ -3,6 +3,6 @@
[
(
specifier: "world.structure.natural.shipwreck",
center: (32, 14, 6),
center: (32, 14, 16),
),
]

View File

@ -0,0 +1,8 @@
#![enable(unwrap_newtypes)]
[
(
specifier: "world.structure.natural.igloo",
center: (13, 10, 2),
),
]

View File

@ -0,0 +1,16 @@
#![enable(unwrap_newtypes)]
[
(
specifier: "world.structure.natural.pirate_hideout",
center: (32, 27, 5),
custom_indices: {
12: Sprite(Cauldron),
10: Sprite(WitchWindow),
44: Filled(GlowingRock, (r: 54, g: 180, b: 64)),
8: Filled(Air, (r: 255, g: 255, b: 255)),
249: Sprite(PotionMinor),
251: Sprite(Ember),
},
),
]

View File

@ -0,0 +1,8 @@
#![enable(unwrap_newtypes)]
[
(
specifier: "world.structure.natural.wolf_burrow",
center: (10, 10, 0),
),
]

BIN
assets/world/structure/natural/arch-1.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/world/structure/natural/arch.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/world/structure/natural/big_mushroom.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/world/structure/natural/dock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/world/structure/natural/igloo.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/world/structure/natural/pirate_hideout.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/world/structure/natural/wolf_burrow.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -7,6 +7,7 @@ SpawnEntry (
// Casual
(5, (1, 1, "common.entity.wild.aggressive.asp")),
(5, (1, 1, "common.entity.wild.aggressive.tiger")),
(5, (1, 1, "common.entity.wild.aggressive.maneater")),
// Rare
(1, (1, 1, "common.entity.wild.aggressive.sunlizard")),
(1, (1, 1, "common.entity.wild.aggressive.odonto")),

View File

@ -0,0 +1,29 @@
{
"traceEvents": [
{ "pid":1, "tid":1, "ts":1630269013191680.5, "dur":3328.3233642578125, "ph":"X", "name":"frame" },
{ "pid":1, "tid":1, "ts":1630269013191706.3, "dur":303.9836883544922, "ph":"X", "name":"shadow_pass" },
{ "pid":1, "tid":1, "ts":1630269013191707, "dur":301.361083984375, "ph":"X", "name":"direcred_terrain_shadows" },
{ "pid":1, "tid":1, "ts":1630269013192009.5, "dur":0.476837158203125, "ph":"X", "name":"direcred_figure_shadows" },
{ "pid":1, "tid":1, "ts":1630269013192013, "dur":378.3702850341797, "ph":"X", "name":"point shadows" },
{ "pid":1, "tid":1, "ts":1630269013192023.8, "dur":58.41255187988281, "ph":"X", "name":"point shadow face-0 pass" },
{ "pid":1, "tid":1, "ts":1630269013192089.5, "dur":51.975250244140625, "ph":"X", "name":"point shadow face-1 pass" },
{ "pid":1, "tid":1, "ts":1630269013192147.8, "dur":63.419342041015625, "ph":"X", "name":"point shadow face-2 pass" },
{ "pid":1, "tid":1, "ts":1630269013192217.3, "dur":53.16734313964844, "ph":"X", "name":"point shadow face-3 pass" },
{ "pid":1, "tid":1, "ts":1630269013192276.5, "dur":52.928924560546875, "ph":"X", "name":"point shadow face-4 pass" },
{ "pid":1, "tid":1, "ts":1630269013192336.3, "dur":53.40576171875, "ph":"X", "name":"point shadow face-5 pass" },
{ "pid":1, "tid":1, "ts":1630269013192413, "dur":1714.944839477539, "ph":"X", "name":"first_pass" },
{ "pid":1, "tid":1, "ts":1630269013192414, "dur":5.9604644775390625, "ph":"X", "name":"figures" },
{ "pid":1, "tid":1, "ts":1630269013192421.5, "dur":1319.6468353271484, "ph":"X", "name":"terrain" },
{ "pid":1, "tid":1, "ts":1630269013193741, "dur":1.1920928955078125, "ph":"X", "name":"figures" },
{ "pid":1, "tid":1, "ts":1630269013193742.8, "dur":270.60508728027344, "ph":"X", "name":"lod_terrain" },
{ "pid":1, "tid":1, "ts":1630269013194015.3, "dur":2.6226043701171875, "ph":"X", "name":"skybox" },
{ "pid":1, "tid":1, "ts":1630269013194018.8, "dur":96.55952453613281, "ph":"X", "name":"sprites" },
{ "pid":1, "tid":1, "ts":1630269013194116, "dur":0, "ph":"X", "name":"fluid" },
{ "pid":1, "tid":1, "ts":1630269013194117, "dur":9.298324584960938, "ph":"X", "name":"particles" },
{ "pid":1, "tid":1, "ts":1630269013194127.5, "dur":0.476837158203125, "ph":"X", "name":"debug" },
{ "pid":1, "tid":1, "ts":1630269013194140.5, "dur":681.8771362304688, "ph":"X", "name":"second_pass" },
{ "pid":1, "tid":1, "ts":1630269013194832.5, "dur":174.2839813232422, "ph":"X", "name":"third_pass" },
{ "pid":1, "tid":1, "ts":1630269013194832.5, "dur":162.8398895263672, "ph":"X", "name":"postprocess" },
{ "pid":1, "tid":1, "ts":1630269013194995.8, "dur":10.251998901367188, "ph":"X", "name":"ui" }
]
}

View File

@ -0,0 +1,29 @@
{
"traceEvents": [
{ "pid":1, "tid":1, "ts":1630269023577148, "dur":4250.049591064453, "ph":"X", "name":"frame" },
{ "pid":1, "tid":1, "ts":1630269023577172.8, "dur":403.1658172607422, "ph":"X", "name":"shadow_pass" },
{ "pid":1, "tid":1, "ts":1630269023577172.8, "dur":401.2584686279297, "ph":"X", "name":"direcred_terrain_shadows" },
{ "pid":1, "tid":1, "ts":1630269023577574.3, "dur":1.1920928955078125, "ph":"X", "name":"direcred_figure_shadows" },
{ "pid":1, "tid":1, "ts":1630269023577578.3, "dur":264.4062042236328, "ph":"X", "name":"point shadows" },
{ "pid":1, "tid":1, "ts":1630269023577588.5, "dur":32.66334533691406, "ph":"X", "name":"point shadow face-0 pass" },
{ "pid":1, "tid":1, "ts":1630269023577629.8, "dur":36.716461181640625, "ph":"X", "name":"point shadow face-1 pass" },
{ "pid":1, "tid":1, "ts":1630269023577672.3, "dur":36.95487976074219, "ph":"X", "name":"point shadow face-2 pass" },
{ "pid":1, "tid":1, "ts":1630269023577716.8, "dur":36.716461181640625, "ph":"X", "name":"point shadow face-3 pass" },
{ "pid":1, "tid":1, "ts":1630269023577760, "dur":36.95487976074219, "ph":"X", "name":"point shadow face-4 pass" },
{ "pid":1, "tid":1, "ts":1630269023577803.8, "dur":36.716461181640625, "ph":"X", "name":"point shadow face-5 pass" },
{ "pid":1, "tid":1, "ts":1630269023577865, "dur":2552.9861450195313, "ph":"X", "name":"first_pass" },
{ "pid":1, "tid":1, "ts":1630269023577865, "dur":8.106231689453125, "ph":"X", "name":"figures" },
{ "pid":1, "tid":1, "ts":1630269023577873.3, "dur":2041.3398742675781, "ph":"X", "name":"terrain" },
{ "pid":1, "tid":1, "ts":1630269023579915, "dur":0, "ph":"X", "name":"figures" },
{ "pid":1, "tid":1, "ts":1630269023579916, "dur":269.17457580566406, "ph":"X", "name":"lod_terrain" },
{ "pid":1, "tid":1, "ts":1630269023580185.3, "dur":3.5762786865234375, "ph":"X", "name":"skybox" },
{ "pid":1, "tid":1, "ts":1630269023580189.5, "dur":215.05355834960938, "ph":"X", "name":"sprites" },
{ "pid":1, "tid":1, "ts":1630269023580405.5, "dur":0.7152557373046875, "ph":"X", "name":"fluid" },
{ "pid":1, "tid":1, "ts":1630269023580406.8, "dur":9.5367431640625, "ph":"X", "name":"particles" },
{ "pid":1, "tid":1, "ts":1630269023580416.8, "dur":0, "ph":"X", "name":"debug" },
{ "pid":1, "tid":1, "ts":1630269023580429.3, "dur":780.1055908203125, "ph":"X", "name":"second_pass" },
{ "pid":1, "tid":1, "ts":1630269023581218.5, "dur":177.14500427246094, "ph":"X", "name":"third_pass" },
{ "pid":1, "tid":1, "ts":1630269023581219.3, "dur":165.46249389648438, "ph":"X", "name":"postprocess" },
{ "pid":1, "tid":1, "ts":1630269023581385.3, "dur":10.251998901367188, "ph":"X", "name":"ui" }
]
}

View File

@ -0,0 +1,29 @@
{
"traceEvents": [
{ "pid":1, "tid":1, "ts":1630269361805281.3, "dur":3715.038299560547, "ph":"X", "name":"frame" },
{ "pid":1, "tid":1, "ts":1630269361805304.5, "dur":231.5044403076172, "ph":"X", "name":"shadow_pass" },
{ "pid":1, "tid":1, "ts":1630269361805306.3, "dur":227.21290588378906, "ph":"X", "name":"direcred_terrain_shadows" },
{ "pid":1, "tid":1, "ts":1630269361805534, "dur":2.1457672119140625, "ph":"X", "name":"direcred_figure_shadows" },
{ "pid":1, "tid":1, "ts":1630269361805538.5, "dur":198.12583923339844, "ph":"X", "name":"point shadows" },
{ "pid":1, "tid":1, "ts":1630269361805549.8, "dur":20.9808349609375, "ph":"X", "name":"point shadow face-0 pass" },
{ "pid":1, "tid":1, "ts":1630269361805578, "dur":27.418136596679688, "ph":"X", "name":"point shadow face-1 pass" },
{ "pid":1, "tid":1, "ts":1630269361805611.8, "dur":24.557113647460938, "ph":"X", "name":"point shadow face-2 pass" },
{ "pid":1, "tid":1, "ts":1630269361805642.5, "dur":28.6102294921875, "ph":"X", "name":"point shadow face-3 pass" },
{ "pid":1, "tid":1, "ts":1630269361805678.8, "dur":24.7955322265625, "ph":"X", "name":"point shadow face-4 pass" },
{ "pid":1, "tid":1, "ts":1630269361805710, "dur":24.7955322265625, "ph":"X", "name":"point shadow face-5 pass" },
{ "pid":1, "tid":1, "ts":1630269361805761.3, "dur":1124.3820190429688, "ph":"X", "name":"first_pass" },
{ "pid":1, "tid":1, "ts":1630269361805761.3, "dur":26.702880859375, "ph":"X", "name":"figures" },
{ "pid":1, "tid":1, "ts":1630269361805788, "dur":515.4609680175781, "ph":"X", "name":"terrain" },
{ "pid":1, "tid":1, "ts":1630269361806304, "dur":2.1457672119140625, "ph":"X", "name":"figures" },
{ "pid":1, "tid":1, "ts":1630269361806307.5, "dur":325.91819763183594, "ph":"X", "name":"lod_terrain" },
{ "pid":1, "tid":1, "ts":1630269361806633.8, "dur":30.279159545898438, "ph":"X", "name":"skybox" },
{ "pid":1, "tid":1, "ts":1630269361806664.5, "dur":208.37783813476563, "ph":"X", "name":"sprites" },
{ "pid":1, "tid":1, "ts":1630269361806873.3, "dur":0, "ph":"X", "name":"fluid" },
{ "pid":1, "tid":1, "ts":1630269361806874.8, "dur":8.821487426757813, "ph":"X", "name":"particles" },
{ "pid":1, "tid":1, "ts":1630269361806883.5, "dur":1.6689300537109375, "ph":"X", "name":"debug" },
{ "pid":1, "tid":1, "ts":1630269361806898, "dur":1932.8594207763672, "ph":"X", "name":"second_pass" },
{ "pid":1, "tid":1, "ts":1630269361808839.5, "dur":154.4952392578125, "ph":"X", "name":"third_pass" },
{ "pid":1, "tid":1, "ts":1630269361808839.5, "dur":153.06472778320313, "ph":"X", "name":"postprocess" },
{ "pid":1, "tid":1, "ts":1630269361808993.3, "dur":0, "ph":"X", "name":"ui" }
]
}

View File

@ -0,0 +1,116 @@
use super::{
super::{vek::*, Animation},
BipedSmallSkeleton, SkeletonAttr,
};
use common::{comp::item::ToolKind, states::utils::StageSection};
use std::f32::consts::PI;
pub struct BeamAnimation;
type BeamAnimationDependency = (
Option<ToolKind>,
Vec3<f32>,
Vec3<f32>,
Vec3<f32>,
f32,
Vec3<f32>,
f32,
Option<StageSection>,
f32,
);
impl Animation for BeamAnimation {
type Dependency<'a> = BeamAnimationDependency;
type Skeleton = BipedSmallSkeleton;
#[cfg(feature = "use-dyn-lib")]
const UPDATE_FN: &'static [u8] = b"biped_small_beam\0";
#[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_beam")]
fn update_skeleton_inner<'a>(
skeleton: &Self::Skeleton,
(
_active_tool_kind,
velocity,
_orientation,
_last_ori,
_global_time,
_avg_vel,
_acc_vel,
stage_section,
_timer,
): Self::Dependency<'a>,
anim_time: f32,
_rate: &mut f32,
s_a: &SkeletonAttr,
) -> Self::Skeleton {
let mut next = (*skeleton).clone();
let speed = Vec2::<f32>::from(velocity).magnitude();
let fast = (anim_time * 10.0).sin();
let fastalt = (anim_time * 10.0 + PI / 2.0).sin();
let speednorm = speed / 9.4;
let speednormcancel = 1.0 - speednorm;
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel);
next.head.orientation = Quaternion::rotation_x(0.45 * speednorm)
* Quaternion::rotation_y(fast * 0.07 * speednormcancel);
next.chest.position = Vec3::new(
0.0,
s_a.chest.0,
s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5,
);
next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1);
next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1);
next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel)
* Quaternion::rotation_z(fast * 0.15 * speednormcancel);
next.main.position = Vec3::new(0.0, 0.0, 0.0);
next.main.orientation = Quaternion::rotation_x(0.0);
next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2);
next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2);
next.hand_l.orientation = Quaternion::rotation_x(0.0);
next.hand_r.orientation = Quaternion::rotation_x(0.0);
let (move1base, move2base, move3) = match stage_section {
Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0),
Some(StageSection::Action) => (1.0, (anim_time * 4.0).sin(), 0.0),
Some(StageSection::Recover) => (1.0, 1.0, anim_time),
_ => (0.0, 0.0, 0.0),
};
let pullback = 1.0 - move3;
let move1abs = move1base * pullback;
next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0);
next.control_r.position = Vec3::new(
7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0,
-4.0 + move1abs * 0.0,
3.0 + move1abs * 10.0,
);
next.control.position = Vec3::new(
-5.0,
-1.0 + s_a.grip.2,
-2.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 5.0,
);
next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1abs * 0.8)
* Quaternion::rotation_y(-0.3)
* Quaternion::rotation_z(-0.3);
next.control_r.orientation =
Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2 + move1abs * 0.8)
* Quaternion::rotation_y(-0.4 + s_a.grip.0 * 0.2 + move1abs * 0.8)
* Quaternion::rotation_z(-0.0 + move1abs * 2.0 + move2base * 0.6);
next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * -0.6)
* Quaternion::rotation_y(-0.2 * speednorm + move1abs * 0.8)
* Quaternion::rotation_z(0.5 + move1abs * 0.6);
next
}
}

View File

@ -1,4 +1,5 @@
pub mod alpha;
pub mod beam;
pub mod dash;
pub mod idle;
pub mod run;
@ -8,8 +9,8 @@ pub mod wield;
// Reexports
pub use self::{
alpha::AlphaAnimation, dash::DashAnimation, idle::IdleAnimation, run::RunAnimation,
shoot::ShootAnimation, stunned::StunnedAnimation, wield::WieldAnimation,
alpha::AlphaAnimation, beam::BeamAnimation, dash::DashAnimation, idle::IdleAnimation,
run::RunAnimation, shoot::ShootAnimation, stunned::StunnedAnimation, wield::WieldAnimation,
};
use super::{make_bone, vek::*, FigureBoneData, Offsets, Skeleton};

View File

@ -55,13 +55,14 @@ impl Animation for RollAnimation {
Some(StageSection::Recover) => (1.0, 1.0, anim_time.powf(0.75)),
_ => (0.0, 0.0, 0.0),
};
let movement1 = movement1base * (1.0 - movement3);
let pullback = 1.0 - movement3;
let movement1 = movement1base * pullback;
next.head.position = Vec3::new(
0.0,
s_a.head.0 + 3.0 * movement1,
s_a.head.0 + 1.5 * movement1,
s_a.head.1 - 1.0 * movement1,
);
next.head.orientation = Quaternion::rotation_x(-0.75 * movement1base + 0.75 * movement2);
next.head.orientation = Quaternion::rotation_x(-0.3 * movement1);
next.chest.position = Vec3::new(0.0, s_a.chest.0, -9.5 * movement1 + s_a.chest.1);
next.chest.orientation = Quaternion::rotation_x(-0.2 * movement1);

View File

@ -2893,6 +2893,37 @@ impl FigureMgr {
skeleton_attr,
)
},
CharacterState::RepeaterRanged(s) => {
let stage_time = s.timer.as_secs_f32();
let stage_progress = match s.stage_section {
StageSection::Buildup => {
stage_time / s.static_data.buildup_duration.as_secs_f32()
},
StageSection::Recover => {
stage_time / s.static_data.recover_duration.as_secs_f32()
},
_ => 0.0,
};
anim::biped_small::ShootAnimation::update_skeleton(
&target_base,
(
active_tool_kind,
rel_vel,
ori * anim::vek::Vec3::<f32>::unit_y(),
state.last_ori * anim::vek::Vec3::<f32>::unit_y(),
time,
rel_avg_vel,
state.acc_vel,
Some(s.stage_section),
state.state_time,
),
stage_progress,
&mut state_animation_rate,
skeleton_attr,
)
},
CharacterState::BasicRanged(s) => {
let stage_time = s.timer.as_secs_f32();
@ -2924,6 +2955,36 @@ impl FigureMgr {
skeleton_attr,
)
},
CharacterState::BasicBeam(s) => {
let stage_time = s.timer.as_secs_f32();
let stage_progress = match s.stage_section {
StageSection::Buildup => {
stage_time / s.static_data.buildup_duration.as_secs_f32()
},
StageSection::Action => s.timer.as_secs_f32(),
StageSection::Recover => {
stage_time / s.static_data.recover_duration.as_secs_f32()
},
_ => 0.0,
};
anim::biped_small::BeamAnimation::update_skeleton(
&target_base,
(
active_tool_kind,
rel_vel,
ori * anim::vek::Vec3::<f32>::unit_y(),
state.last_ori * anim::vek::Vec3::<f32>::unit_y(),
time,
rel_avg_vel,
state.acc_vel,
Some(s.stage_section),
state.state_time,
),
stage_progress,
&mut state_animation_rate,
skeleton_attr,
)
},
CharacterState::ComboMelee(s) => {
let stage_index = (s.stage - 1) as usize;
let stage_time = s.timer.as_secs_f32();

View File

@ -37,6 +37,10 @@ pub enum Spot {
MyrmidonTemple,
GnarlingTotem,
WitchHouse,
PirateHideout,
BigMushroom,
WolfBurrow,
Igloo,
//BanditCamp,
//EnchantedRock,
//TowerRuin,
@ -50,6 +54,7 @@ pub enum Spot {
LionRock,
TreeStumpForest,
DesertBones,
Arch,
AirshipCrash,
FruitTree,
Shipwreck,
@ -77,6 +82,34 @@ impl Spot {
},
false,
);
Self::generate_spots(
Spot::Igloo,
world,
100.0,
|g, c| {
g < 0.5
&& !c.near_cliffs()
&& !c.river.near_water()
&& !c.path.0.is_way()
&& c.sites.is_empty()
&& matches!(c.get_biome(), Snowland)
},
false,
);
Self::generate_spots(
Spot::PirateHideout,
world,
3.0,
|g, c| {
g < 0.25
&& !c.near_cliffs()
&& !c.river.near_water()
&& !c.path.0.is_way()
&& c.sites.is_empty()
&& matches!(c.get_biome(), Forest | Jungle)
},
false,
);
Self::generate_spots(
Spot::DwarvenGrave,
world,
@ -162,6 +195,20 @@ impl Spot {
},
false,
);
Self::generate_spots(
Spot::WolfBurrow,
world,
10.0,
|g, c| {
g < 0.25
&& !c.near_cliffs()
&& !c.river.near_water()
&& !c.path.0.is_way()
&& c.sites.is_empty()
&& matches!(c.get_biome(), Forest | Grassland)
},
false,
);
Self::generate_spots(
Spot::TreeStumpForest,
world,
@ -190,6 +237,20 @@ impl Spot {
},
false,
);
Self::generate_spots(
Spot::Arch,
world,
2.0,
|g, c| {
g < 0.25
&& !c.near_cliffs()
&& !c.river.near_water()
&& !c.path.0.is_way()
&& c.sites.is_empty()
&& matches!(c.get_biome(), Desert)
},
false,
);
Self::generate_spots(
Spot::AirshipCrash,
world,
@ -218,6 +279,20 @@ impl Spot {
},
true,
);
Self::generate_spots(
Spot::BigMushroom,
world,
20.0,
|g, c| {
g < 0.25
&& !c.near_cliffs()
&& !c.river.near_water()
&& !c.path.0.is_way()
&& c.sites.is_empty()
&& matches!(c.get_biome(), Forest)
},
true,
);
Self::generate_spots(
Spot::Shipwreck,
world,
@ -342,6 +417,24 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) {
(0..3, "common.entity.wild.peaceful.frog"),
],
},
Spot::Igloo => SpotConfig {
base_structures: Some("spots_general.igloo"),
entity_radius: 2.0,
entities: &[
(3..5, "common.entity.dungeon.tier-1.spear"),
(3..5, "common.entity.dungeon.tier-1.bow"),
(2..3, "common.entity.dungeon.tier-1.staff"),
],
},
Spot::PirateHideout => SpotConfig {
base_structures: Some("spots_general.pirate_hideout"),
entity_radius: 70.0,
entities: &[
(12..16, "common.entity.spot.pirate"),
(2..4, "common.entity.wild.peaceful.parrot"),
(4..6, "common.entity.wild.peaceful.rat"),
],
},
Spot::GnarlingTotem => SpotConfig {
base_structures: Some("spots_grasslands.gnarling_totem"),
entity_radius: 30.0,
@ -357,16 +450,26 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) {
entity_radius: 20.0,
entities: &[(5..8, "common.entity.wild.aggressive.lion")],
},
Spot::WolfBurrow => SpotConfig {
base_structures: Some("spots_savannah.wolf_burrow"),
entity_radius: 0.2,
entities: &[(5..8, "common.entity.wild.aggressive.wolf")],
},
Spot::TreeStumpForest => SpotConfig {
base_structures: Some("trees.oak_stumps"),
entity_radius: 30.0,
entities: &[(0..2, "common.entity.wild.aggressive.deadwood")],
},
Spot::DesertBones => SpotConfig {
base_structures: Some("trees.quirky_dry"),
base_structures: Some("spots.bones"),
entity_radius: 40.0,
entities: &[(4..9, "common.entity.wild.aggressive.hyena")],
},
Spot::Arch => SpotConfig {
base_structures: Some("spots.arch"),
entity_radius: 50.0,
entities: &[(2..3, "common.entity.wild.aggressive.ngoubou")],
},
Spot::AirshipCrash => SpotConfig {
base_structures: Some("trees.airship_crash"),
entity_radius: 20.0,
@ -377,6 +480,11 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) {
entity_radius: 2.0,
entities: &[(0..2, "common.entity.wild.peaceful.bear")],
},
Spot::BigMushroom => SpotConfig {
base_structures: Some("spots.big-mushroom"),
entity_radius: 40.0,
entities: &[(7..10, "common.entity.spot.gnome.spear")],
},
Spot::Shipwreck => SpotConfig {
base_structures: Some("spots.water.shipwreck"),
entity_radius: 2.0,