mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
more gnarling weapons
This commit is contained in:
parent
7f928d0bc0
commit
1fac6359de
@ -65,7 +65,12 @@
|
|||||||
),
|
),
|
||||||
Custom("Axe Simple"): (
|
Custom("Axe Simple"): (
|
||||||
primary: "common.abilities.axesimple.doublestrike",
|
primary: "common.abilities.axesimple.doublestrike",
|
||||||
secondary: "common.abilities.axesimple.dash",
|
secondary: "common.abilities.axesimple.doublestrike",
|
||||||
|
abilities: [],
|
||||||
|
),
|
||||||
|
Custom("Dagger Simple"): (
|
||||||
|
primary: "common.abilities.daggersimple.singlestrike",
|
||||||
|
secondary: "common.abilities.daggersimple.singlestrike",
|
||||||
abilities: [],
|
abilities: [],
|
||||||
),
|
),
|
||||||
Custom("Sword Simple"): (
|
Custom("Sword Simple"): (
|
||||||
@ -84,6 +89,12 @@
|
|||||||
abilities: [
|
abilities: [
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Tool(Blowgun): (
|
||||||
|
primary: "common.abilities.blowgun.basic",
|
||||||
|
secondary: "common.abilities.blowgun.basic",
|
||||||
|
abilities: [
|
||||||
|
],
|
||||||
|
),
|
||||||
Tool(Dagger): (
|
Tool(Dagger): (
|
||||||
primary: "common.abilities.dagger.tempbasic",
|
primary: "common.abilities.dagger.tempbasic",
|
||||||
secondary: "common.abilities.dagger.tempbasic",
|
secondary: "common.abilities.dagger.tempbasic",
|
||||||
@ -268,6 +279,11 @@
|
|||||||
(None, "common.abilities.custom.harvester.explodingpumpkin"),
|
(None, "common.abilities.custom.harvester.explodingpumpkin"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Custom("Oni"): (
|
||||||
|
primary: "common.abilities.custom.oni.dash",
|
||||||
|
secondary: "common.abilities.custom.oni.doublestrike",
|
||||||
|
abilities: [],
|
||||||
|
),
|
||||||
Custom("Bird Large Breathe"): (
|
Custom("Bird Large Breathe"): (
|
||||||
primary: "common.abilities.custom.birdlargebreathe.firebomb",
|
primary: "common.abilities.custom.birdlargebreathe.firebomb",
|
||||||
secondary: "common.abilities.custom.birdlargebreathe.triplestrike",
|
secondary: "common.abilities.custom.birdlargebreathe.triplestrike",
|
||||||
|
@ -2,18 +2,18 @@ ComboMelee(
|
|||||||
stage_data: [
|
stage_data: [
|
||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 9.0,
|
base_damage: 8.0,
|
||||||
damage_increase: 1.0,
|
damage_increase: 1.0,
|
||||||
base_poise_damage: 0,
|
base_poise_damage: 15,
|
||||||
poise_damage_increase: 0,
|
poise_damage_increase: 0,
|
||||||
knockback: 4.0,
|
knockback: 8.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 50.0,
|
angle: 50.0,
|
||||||
base_buildup_duration: 0.6,
|
base_buildup_duration: 0.4,
|
||||||
base_swing_duration: 0.12,
|
base_swing_duration: 0.08,
|
||||||
hit_timing: 0.5,
|
hit_timing: 0.5,
|
||||||
base_recover_duration: 0.6,
|
base_recover_duration: 0.5,
|
||||||
forward_movement: 3.5,
|
forward_movement: 2.5,
|
||||||
damage_kind: Slashing,
|
damage_kind: Slashing,
|
||||||
damage_effect: Some(Buff((
|
damage_effect: Some(Buff((
|
||||||
kind: Bleeding,
|
kind: Bleeding,
|
||||||
@ -24,18 +24,18 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 13.0,
|
base_damage: 10.0,
|
||||||
damage_increase: 1.5,
|
damage_increase: 1.5,
|
||||||
base_poise_damage: 0,
|
base_poise_damage: 20,
|
||||||
poise_damage_increase: 0,
|
poise_damage_increase: 0,
|
||||||
knockback: 16.0,
|
knockback: 12.0,
|
||||||
range: 5.5,
|
range: 3.5,
|
||||||
angle: 15.0,
|
angle: 30.0,
|
||||||
base_buildup_duration: 0.5,
|
base_buildup_duration: 0.7,
|
||||||
base_swing_duration: 0.15,
|
base_swing_duration: 0.1,
|
||||||
hit_timing: 0.5,
|
hit_timing: 0.5,
|
||||||
base_recover_duration: 1.2,
|
base_recover_duration: 0.7,
|
||||||
forward_movement: 4.5,
|
forward_movement: 2.0,
|
||||||
damage_kind: Slashing,
|
damage_kind: Slashing,
|
||||||
damage_effect: Some(Buff((
|
damage_effect: Some(Buff((
|
||||||
kind: Bleeding,
|
kind: Bleeding,
|
||||||
@ -52,5 +52,5 @@ ComboMelee(
|
|||||||
max_speed_increase: 0.0,
|
max_speed_increase: 0.0,
|
||||||
scales_from_combo: 0,
|
scales_from_combo: 0,
|
||||||
is_interruptible: false,
|
is_interruptible: false,
|
||||||
ori_modifier: 0.6,
|
ori_modifier: 0.7,
|
||||||
)
|
)
|
||||||
|
15
assets/common/abilities/blowgun/basic.ron
Normal file
15
assets/common/abilities/blowgun/basic.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
BasicRanged(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 0.5,
|
||||||
|
recover_duration: 0.3,
|
||||||
|
projectile: Arrow(
|
||||||
|
damage: 3.5,
|
||||||
|
knockback: 5.0,
|
||||||
|
energy_regen: 4.0,
|
||||||
|
),
|
||||||
|
projectile_body: Object(Arrow),
|
||||||
|
projectile_light: None,
|
||||||
|
projectile_speed: 100.0,
|
||||||
|
num_projectiles: 1,
|
||||||
|
projectile_spread: 0.0,
|
||||||
|
)
|
56
assets/common/abilities/custom/oni/doublestrike.ron
Normal file
56
assets/common/abilities/custom/oni/doublestrike.ron
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 9.0,
|
||||||
|
damage_increase: 1.0,
|
||||||
|
base_poise_damage: 0,
|
||||||
|
poise_damage_increase: 0,
|
||||||
|
knockback: 4.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 50.0,
|
||||||
|
base_buildup_duration: 0.6,
|
||||||
|
base_swing_duration: 0.12,
|
||||||
|
hit_timing: 0.5,
|
||||||
|
base_recover_duration: 0.6,
|
||||||
|
forward_movement: 3.5,
|
||||||
|
damage_kind: Slashing,
|
||||||
|
damage_effect: Some(Buff((
|
||||||
|
kind: Bleeding,
|
||||||
|
dur_secs: 10.0,
|
||||||
|
strength: DamageFraction(0.1),
|
||||||
|
chance: 0.1,
|
||||||
|
))),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
stage: 2,
|
||||||
|
base_damage: 13.0,
|
||||||
|
damage_increase: 1.5,
|
||||||
|
base_poise_damage: 0,
|
||||||
|
poise_damage_increase: 0,
|
||||||
|
knockback: 16.0,
|
||||||
|
range: 5.5,
|
||||||
|
angle: 15.0,
|
||||||
|
base_buildup_duration: 0.5,
|
||||||
|
base_swing_duration: 0.15,
|
||||||
|
hit_timing: 0.5,
|
||||||
|
base_recover_duration: 1.2,
|
||||||
|
forward_movement: 4.5,
|
||||||
|
damage_kind: Slashing,
|
||||||
|
damage_effect: Some(Buff((
|
||||||
|
kind: Bleeding,
|
||||||
|
dur_secs: 10.0,
|
||||||
|
strength: DamageFraction(0.1),
|
||||||
|
chance: 0.1,
|
||||||
|
))),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 0.0,
|
||||||
|
scales_from_combo: 0,
|
||||||
|
is_interruptible: false,
|
||||||
|
ori_modifier: 0.6,
|
||||||
|
)
|
34
assets/common/abilities/daggersimple/singlestrike.ron
Normal file
34
assets/common/abilities/daggersimple/singlestrike.ron
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 2.0,
|
||||||
|
damage_increase: 1.0,
|
||||||
|
base_poise_damage: 8,
|
||||||
|
poise_damage_increase: 0,
|
||||||
|
knockback: 8.0,
|
||||||
|
range: 3.5,
|
||||||
|
angle: 50.0,
|
||||||
|
base_buildup_duration: 0.1,
|
||||||
|
base_swing_duration: 0.05,
|
||||||
|
hit_timing: 0.5,
|
||||||
|
base_recover_duration: 0.05,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
damage_kind: Slashing,
|
||||||
|
damage_effect: Some(Buff((
|
||||||
|
kind: Bleeding,
|
||||||
|
dur_secs: 10.0,
|
||||||
|
strength: DamageFraction(0.1),
|
||||||
|
chance: 0.1,
|
||||||
|
))),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
initial_energy_gain: 0,
|
||||||
|
max_energy_gain: 0,
|
||||||
|
energy_increase: 0,
|
||||||
|
speed_increase: 0.0,
|
||||||
|
max_speed_increase: 0.0,
|
||||||
|
scales_from_combo: 0,
|
||||||
|
is_interruptible: false,
|
||||||
|
ori_modifier: 0.7,
|
||||||
|
)
|
@ -5,7 +5,7 @@ EntityConfig (
|
|||||||
|
|
||||||
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
|
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
|
||||||
|
|
||||||
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.adlet_bow")),
|
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.axe")),
|
||||||
|
|
||||||
meta: [
|
meta: [
|
||||||
LoadoutAsset("common.loadout.dungeon.tier-0.logger"),
|
LoadoutAsset("common.loadout.dungeon.tier-0.logger"),
|
||||||
|
@ -5,7 +5,7 @@ EntityConfig (
|
|||||||
|
|
||||||
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
|
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
|
||||||
|
|
||||||
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.wooden_spear")),
|
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.dagger")),
|
||||||
|
|
||||||
meta: [
|
meta: [
|
||||||
LoadoutAsset("common.loadout.dungeon.tier-0.mugger"),
|
LoadoutAsset("common.loadout.dungeon.tier-0.mugger"),
|
||||||
|
@ -17,5 +17,5 @@ ItemDef(
|
|||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: Low,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: Some(Custom("Axe Simple")),
|
ability_spec: Some(Custom("Oni")),
|
||||||
)
|
)
|
@ -1,21 +0,0 @@
|
|||||||
ItemDef(
|
|
||||||
name: "Adlet Bow",
|
|
||||||
description: "Strips of leather are wrapped around the handle.",
|
|
||||||
kind: Tool((
|
|
||||||
kind: Bow,
|
|
||||||
hands: Two,
|
|
||||||
stats: Direct((
|
|
||||||
equip_time_secs: 0.0,
|
|
||||||
power: 0.3,
|
|
||||||
effect_power: 0.8,
|
|
||||||
speed: 0.5,
|
|
||||||
crit_chance: 0.13541667,
|
|
||||||
range: 1.0,
|
|
||||||
energy_efficiency: 1.0,
|
|
||||||
buff_strength: 1.0,
|
|
||||||
)),
|
|
||||||
)),
|
|
||||||
quality: Moderate,
|
|
||||||
tags: [],
|
|
||||||
ability_spec: None,
|
|
||||||
)
|
|
@ -1,8 +1,8 @@
|
|||||||
ItemDef(
|
ItemDef(
|
||||||
name: "Wooden Spear",
|
name: "Gnarling Logger Axe",
|
||||||
description: "Testing",
|
description: "Testing",
|
||||||
kind: Tool((
|
kind: Tool((
|
||||||
kind: Spear,
|
kind: Axe,
|
||||||
hands: Two,
|
hands: Two,
|
||||||
stats: Direct((
|
stats: Direct((
|
||||||
equip_time_secs: 0.0,
|
equip_time_secs: 0.0,
|
||||||
@ -17,5 +17,5 @@ ItemDef(
|
|||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: Low,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: None,
|
ability_spec: Some(Custom("Axe Simple")),
|
||||||
)
|
)
|
@ -1,15 +1,15 @@
|
|||||||
ItemDef(
|
ItemDef(
|
||||||
name: "Gnoll Staff",
|
name: "Gnarling Mugger Dagger",
|
||||||
description: "eekum bokum",
|
description: "Testing",
|
||||||
kind: Tool((
|
kind: Tool((
|
||||||
kind: Staff,
|
kind: Dagger,
|
||||||
hands: Two,
|
hands: Two,
|
||||||
stats: Direct((
|
stats: Direct((
|
||||||
equip_time_secs: 0.0,
|
equip_time_secs: 0.0,
|
||||||
power: 0.3,
|
power: 0.3,
|
||||||
effect_power: 0.8,
|
effect_power: 1.0,
|
||||||
speed: 0.6,
|
speed: 1.0,
|
||||||
crit_chance: 0.26764706,
|
crit_chance: 0.12037037,
|
||||||
range: 1.0,
|
range: 1.0,
|
||||||
energy_efficiency: 1.0,
|
energy_efficiency: 1.0,
|
||||||
buff_strength: 1.0,
|
buff_strength: 1.0,
|
||||||
@ -17,5 +17,5 @@ ItemDef(
|
|||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: Low,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: Some(Custom("Staff Simple")),
|
ability_spec: Some(Custom("Dagger Simple")),
|
||||||
)
|
)
|
@ -820,6 +820,10 @@
|
|||||||
keyword: "parrot",
|
keyword: "parrot",
|
||||||
generic: "Parrot"
|
generic: "Parrot"
|
||||||
),
|
),
|
||||||
|
penguin: (
|
||||||
|
keyword: "penguin",
|
||||||
|
generic: "Penguin"
|
||||||
|
),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
biped_large: (
|
biped_large: (
|
||||||
|
@ -1112,7 +1112,15 @@
|
|||||||
color: None
|
color: None
|
||||||
),
|
),
|
||||||
"common.items.npc_weapons.biped_small.gnarling.blowgun": (
|
"common.items.npc_weapons.biped_small.gnarling.blowgun": (
|
||||||
vox_spec: ("weapon.biped_small.blowgun", (-2.5, -2.5, -4.0)),
|
vox_spec: ("weapon.biped_small.blowgun", (-2.5, -2.5, -1.5)),
|
||||||
|
color: None
|
||||||
|
),
|
||||||
|
"common.items.npc_weapons.biped_small.gnarling.axe": (
|
||||||
|
vox_spec: ("weapon.biped_small.axe.axe", (-0.5, -3.0, -4.0)),
|
||||||
|
color: None
|
||||||
|
),
|
||||||
|
"common.items.npc_weapons.biped_small.gnarling.dagger": (
|
||||||
|
vox_spec: ("weapon.biped_small.dagger", (-0.5, -4.5, -0.0)),
|
||||||
color: None
|
color: None
|
||||||
),
|
),
|
||||||
"common.items.npc_weapons.biped_small.adlet.gnoll_staff": (
|
"common.items.npc_weapons.biped_small.adlet.gnoll_staff": (
|
||||||
|
@ -191,8 +191,36 @@
|
|||||||
central: ("npc.parrot.male.torso"),
|
central: ("npc.parrot.male.torso"),
|
||||||
),
|
),
|
||||||
tail: (
|
tail: (
|
||||||
offset: (-1.5, -4.5, -1.5),
|
offset: (-2.5, -4.5, -1.5),
|
||||||
central: ("npc.parrot.male.tail"),
|
central: ("npc.parrot.male.tail"),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
(Penguin, Male): (
|
||||||
|
head: (
|
||||||
|
offset: (-1.5, -2.0, -2.0),
|
||||||
|
central: ("npc.penguin.male.head"),
|
||||||
|
),
|
||||||
|
torso: (
|
||||||
|
offset: (-3.5, -4.0, -5.5),
|
||||||
|
central: ("npc.penguin.male.torso"),
|
||||||
|
),
|
||||||
|
tail: (
|
||||||
|
offset: (-2.5, -4.5, -1.5),
|
||||||
|
central: ("npc.penguin.male.tail"),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
(Penguin, Female): (
|
||||||
|
head: (
|
||||||
|
offset: (-1.5, -2.0, -2.0),
|
||||||
|
central: ("npc.penguin.male.head"),
|
||||||
|
),
|
||||||
|
torso: (
|
||||||
|
offset: (-3.5, -4.0, -5.5),
|
||||||
|
central: ("npc.penguin.male.torso"),
|
||||||
|
),
|
||||||
|
tail: (
|
||||||
|
offset: (-2.5, -4.5, -1.5),
|
||||||
|
central: ("npc.penguin.male.tail"),
|
||||||
|
)
|
||||||
|
),
|
||||||
})
|
})
|
@ -251,4 +251,40 @@
|
|||||||
lateral: ("npc.parrot.male.leg_r"),
|
lateral: ("npc.parrot.male.leg_r"),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
(Penguin, Male): (
|
||||||
|
wing_l: (
|
||||||
|
offset: (-0.5, -1.5, -8.0),
|
||||||
|
lateral: ("npc.penguin.male.wing"),
|
||||||
|
),
|
||||||
|
wing_r: (
|
||||||
|
offset: (-0.5, -1.5, -8.0),
|
||||||
|
lateral: ("npc.penguin.male.wing"),
|
||||||
|
),
|
||||||
|
foot_l: (
|
||||||
|
offset: (-2.5, 0.0, -6.0),
|
||||||
|
lateral: ("npc.penguin.male.leg_r"),
|
||||||
|
),
|
||||||
|
foot_r: (
|
||||||
|
offset: (-2.5, 0.0, -6.0),
|
||||||
|
lateral: ("npc.penguin.male.leg_r"),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
(Penguin, Female): (
|
||||||
|
wing_l: (
|
||||||
|
offset: (-0.5, -1.5, -8.0),
|
||||||
|
lateral: ("npc.penguin.male.wing"),
|
||||||
|
),
|
||||||
|
wing_r: (
|
||||||
|
offset: (-0.5, -1.5, -8.0),
|
||||||
|
lateral: ("npc.penguin.male.wing"),
|
||||||
|
),
|
||||||
|
foot_l: (
|
||||||
|
offset: (-2.5, 0.0, -6.0),
|
||||||
|
lateral: ("npc.penguin.male.leg_r"),
|
||||||
|
),
|
||||||
|
foot_r: (
|
||||||
|
offset: (-2.5, 0.0, -6.0),
|
||||||
|
lateral: ("npc.penguin.male.leg_r"),
|
||||||
|
)
|
||||||
|
),
|
||||||
})
|
})
|
BIN
assets/voxygen/voxel/npc/penguin/male/head.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/penguin/male/head.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/penguin/male/leg_r.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/penguin/male/leg_r.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/penguin/male/tail.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/penguin/male/tail.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/penguin/male/torso.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/penguin/male/torso.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
assets/voxygen/voxel/npc/penguin/male/wing.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/npc/penguin/male/wing.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -198,6 +198,7 @@ impl Body {
|
|||||||
bird_medium::Species::Goose => 3.5, // ~✅ Swan geese are 2.8-3.5 kg
|
bird_medium::Species::Goose => 3.5, // ~✅ Swan geese are 2.8-3.5 kg
|
||||||
bird_medium::Species::Owl => 2.0,
|
bird_medium::Species::Owl => 2.0,
|
||||||
bird_medium::Species::Parrot => 2.0,
|
bird_medium::Species::Parrot => 2.0,
|
||||||
|
bird_medium::Species::Penguin => 8.0,
|
||||||
bird_medium::Species::Peacock => 5.0,
|
bird_medium::Species::Peacock => 5.0,
|
||||||
},
|
},
|
||||||
Body::BirdLarge(_) => 100.0,
|
Body::BirdLarge(_) => 100.0,
|
||||||
@ -692,6 +693,7 @@ impl Body {
|
|||||||
bird_medium::Species::Duck => 1,
|
bird_medium::Species::Duck => 1,
|
||||||
bird_medium::Species::Goose => 1,
|
bird_medium::Species::Goose => 1,
|
||||||
bird_medium::Species::Parrot => 1,
|
bird_medium::Species::Parrot => 1,
|
||||||
|
bird_medium::Species::Penguin => 1,
|
||||||
bird_medium::Species::Peacock => 1,
|
bird_medium::Species::Peacock => 1,
|
||||||
bird_medium::Species::Eagle => 1,
|
bird_medium::Species::Eagle => 1,
|
||||||
_ => 2,
|
_ => 2,
|
||||||
|
@ -41,6 +41,7 @@ make_case_elim!(
|
|||||||
Eagle = 4,
|
Eagle = 4,
|
||||||
Owl = 5,
|
Owl = 5,
|
||||||
Parrot = 6,
|
Parrot = 6,
|
||||||
|
Penguin = 7,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -56,6 +57,7 @@ pub struct AllSpecies<SpeciesMeta> {
|
|||||||
pub eagle: SpeciesMeta,
|
pub eagle: SpeciesMeta,
|
||||||
pub owl: SpeciesMeta,
|
pub owl: SpeciesMeta,
|
||||||
pub parrot: SpeciesMeta,
|
pub parrot: SpeciesMeta,
|
||||||
|
pub penguin: SpeciesMeta,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
|
impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta> {
|
||||||
@ -71,11 +73,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
|
|||||||
Species::Eagle => &self.eagle,
|
Species::Eagle => &self.eagle,
|
||||||
Species::Owl => &self.owl,
|
Species::Owl => &self.owl,
|
||||||
Species::Parrot => &self.parrot,
|
Species::Parrot => &self.parrot,
|
||||||
|
Species::Penguin => &self.penguin,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const ALL_SPECIES: [Species; 7] = [
|
pub const ALL_SPECIES: [Species; 8] = [
|
||||||
Species::Duck,
|
Species::Duck,
|
||||||
Species::Chicken,
|
Species::Chicken,
|
||||||
Species::Goose,
|
Species::Goose,
|
||||||
@ -83,6 +86,7 @@ pub const ALL_SPECIES: [Species; 7] = [
|
|||||||
Species::Eagle,
|
Species::Eagle,
|
||||||
Species::Owl,
|
Species::Owl,
|
||||||
Species::Parrot,
|
Species::Parrot,
|
||||||
|
Species::Penguin,
|
||||||
];
|
];
|
||||||
|
|
||||||
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
|
impl<'a, SpeciesMeta: 'a> IntoIterator for &'a AllSpecies<SpeciesMeta> {
|
||||||
|
@ -34,6 +34,14 @@ pub enum RtSimEntityKind {
|
|||||||
Merchant,
|
Merchant,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const BIRD_MEDIUM_ROSTER: &[comp::bird_medium::Species] = &[
|
||||||
|
// Disallows flightless birds
|
||||||
|
comp::bird_medium::Species::Duck,
|
||||||
|
comp::bird_medium::Species::Goose,
|
||||||
|
comp::bird_medium::Species::Parrot,
|
||||||
|
comp::bird_medium::Species::Eagle,
|
||||||
|
];
|
||||||
|
|
||||||
const BIRD_LARGE_ROSTER: &[comp::bird_large::Species] = &[
|
const BIRD_LARGE_ROSTER: &[comp::bird_large::Species] = &[
|
||||||
// Flame Wyvern not incuded until proper introduction
|
// Flame Wyvern not incuded until proper introduction
|
||||||
comp::bird_large::Species::Phoenix,
|
comp::bird_large::Species::Phoenix,
|
||||||
@ -60,7 +68,7 @@ impl Entity {
|
|||||||
// we want 5% airships, 45% birds, 50% humans
|
// we want 5% airships, 45% birds, 50% humans
|
||||||
x if x < 0.05 => comp::ship::Body::random_with(&mut self.rng(PERM_BODY)).into(),
|
x if x < 0.05 => comp::ship::Body::random_with(&mut self.rng(PERM_BODY)).into(),
|
||||||
x if x < 0.45 => {
|
x if x < 0.45 => {
|
||||||
let species = *(&comp::bird_medium::ALL_SPECIES)
|
let species = *BIRD_MEDIUM_ROSTER
|
||||||
.choose(&mut self.rng(PERM_SPECIES))
|
.choose(&mut self.rng(PERM_SPECIES))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
comp::bird_medium::Body::random_with(&mut self.rng(PERM_BODY), &species)
|
comp::bird_medium::Body::random_with(&mut self.rng(PERM_BODY), &species)
|
||||||
@ -782,6 +790,7 @@ fn bird_medium_config(body: comp::bird_medium::Body) -> &'static str {
|
|||||||
comp::bird_medium::Species::Eagle => "common.entity.wild.peaceful.eagle",
|
comp::bird_medium::Species::Eagle => "common.entity.wild.peaceful.eagle",
|
||||||
comp::bird_medium::Species::Owl => "common.entity.wild.peaceful.owl",
|
comp::bird_medium::Species::Owl => "common.entity.wild.peaceful.owl",
|
||||||
comp::bird_medium::Species::Parrot => "common.entity.wild.peaceful.parrot",
|
comp::bird_medium::Species::Parrot => "common.entity.wild.peaceful.parrot",
|
||||||
|
_ => unimplemented!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -826,7 +835,7 @@ mod tests {
|
|||||||
std::mem::drop(EntityInfo::at(dummy_pos).with_asset_expect(male_config));
|
std::mem::drop(EntityInfo::at(dummy_pos).with_asset_expect(male_config));
|
||||||
}
|
}
|
||||||
// Bird Medium test
|
// Bird Medium test
|
||||||
for bird_med_species in comp::bird_medium::ALL_SPECIES {
|
for bird_med_species in BIRD_MEDIUM_ROSTER {
|
||||||
let female_body = comp::bird_medium::Body {
|
let female_body = comp::bird_medium::Body {
|
||||||
species: bird_med_species,
|
species: bird_med_species,
|
||||||
body_type: comp::bird_medium::BodyType::Female,
|
body_type: comp::bird_medium::BodyType::Female,
|
||||||
|
@ -1743,7 +1743,7 @@ impl<'a> AgentData<'a> {
|
|||||||
if let Some(ability_spec) = item.ability_spec() {
|
if let Some(ability_spec) = item.ability_spec() {
|
||||||
match ability_spec {
|
match ability_spec {
|
||||||
AbilitySpec::Custom(spec) => match spec.as_str() {
|
AbilitySpec::Custom(spec) => match spec.as_str() {
|
||||||
"Axe Simple" | "Sword Simple" => Tactic::Sword,
|
"Axe Simple" | "Oni" | "Sword Simple" => Tactic::Sword,
|
||||||
"Staff Simple" => Tactic::Staff,
|
"Staff Simple" => Tactic::Staff,
|
||||||
"Bow Simple" => Tactic::Bow,
|
"Bow Simple" => Tactic::Bow,
|
||||||
"Stone Golem" => Tactic::StoneGolem,
|
"Stone Golem" => Tactic::StoneGolem,
|
||||||
|
@ -64,10 +64,15 @@ impl Animation for AlphaAnimation {
|
|||||||
let subtract = global_time - timer;
|
let subtract = global_time - timer;
|
||||||
let check = subtract - subtract.trunc();
|
let check = subtract - subtract.trunc();
|
||||||
let mirror = (check - 0.5).signum();
|
let mirror = (check - 0.5).signum();
|
||||||
let move1 = move1base * pullback * mirror;
|
let _move1 = move1base * pullback * mirror;
|
||||||
let move2 = move2base * pullback * mirror;
|
|
||||||
let move1abs = move1base * pullback;
|
let move1abs = move1base * pullback;
|
||||||
let move2abs = move2base * pullback;
|
let move2abs = move2base * pullback;
|
||||||
|
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.main.position = Vec3::new(0.0, 0.0, 0.0);
|
||||||
|
next.main.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
next.hand_l.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
next.hand_r.orientation = Quaternion::rotation_x(0.0);
|
||||||
match active_tool_kind {
|
match active_tool_kind {
|
||||||
Some(ToolKind::Spear) => {
|
Some(ToolKind::Spear) => {
|
||||||
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
|
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
|
||||||
@ -82,15 +87,6 @@ impl Animation for AlphaAnimation {
|
|||||||
next.pants.orientation = Quaternion::rotation_x(move1abs * 0.2 + move2abs * -0.3)
|
next.pants.orientation = Quaternion::rotation_x(move1abs * 0.2 + move2abs * -0.3)
|
||||||
* Quaternion::rotation_z(move1abs * -0.2 + move2abs * 0.2);
|
* Quaternion::rotation_z(move1abs * -0.2 + move2abs * 0.2);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0);
|
next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 2.0, -2.0);
|
||||||
next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0);
|
next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 2.0, 2.0);
|
||||||
|
|
||||||
@ -116,24 +112,60 @@ impl Animation for AlphaAnimation {
|
|||||||
next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel)
|
next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel)
|
||||||
* Quaternion::rotation_z(fast * 0.15 * speednormcancel);
|
* Quaternion::rotation_z(fast * 0.15 * speednormcancel);
|
||||||
},
|
},
|
||||||
Some(ToolKind::Natural) => {
|
Some(ToolKind::Axe) => {
|
||||||
next.hand_l.position = Vec3::new(
|
next.head.orientation = Quaternion::rotation_z(move1abs * 0.3 + move2abs * -0.6);
|
||||||
-s_a.hand.0,
|
next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0);
|
||||||
s_a.hand.1 + move1abs * 3.0 + move2abs * 3.0,
|
next.control_r.position = Vec3::new(
|
||||||
s_a.hand.2 + move1abs * 1.5,
|
9.0 + move1abs * -10.0 + s_a.grip.0 * 2.0,
|
||||||
);
|
-1.0 + move1abs * 2.0,
|
||||||
next.hand_r.position = Vec3::new(
|
move1abs * 3.0 - 2.0,
|
||||||
s_a.hand.0,
|
|
||||||
s_a.hand.1 + move1abs * 3.0 + move2abs * 3.0,
|
|
||||||
s_a.hand.2 + move1abs * 1.5,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
next.hand_l.orientation = Quaternion::rotation_x(1.7 + move1 * 1.3 + move2 * -2.4)
|
next.control.position = Vec3::new(
|
||||||
* Quaternion::rotation_y(-0.3 + move1abs * -0.35 + move2abs * 0.6);
|
-5.0 + move1abs * 5.0,
|
||||||
next.hand_r.orientation = Quaternion::rotation_x(1.7 - move1 * 1.3 + move2 * 2.4)
|
-1.0 + s_a.grip.2,
|
||||||
* Quaternion::rotation_y(0.3 + move1abs * -0.35 + move2abs * 0.6);
|
-1.0 + move1abs * 3.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0,
|
||||||
next.head.orientation = Quaternion::rotation_x(move1abs * 0.1 + move2abs * -0.2)
|
);
|
||||||
* Quaternion::rotation_y(move1 * 0.3 + move2 * -0.4);
|
|
||||||
|
next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move2abs * 1.0)
|
||||||
|
* Quaternion::rotation_y(-0.0)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
next.control_r.orientation =
|
||||||
|
Quaternion::rotation_x(0.5 + move1abs * 1.5 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_y(0.2 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
|
||||||
|
next.control.orientation = Quaternion::rotation_x(-0.3 + move2abs * -1.0)
|
||||||
|
* Quaternion::rotation_y(move1abs * -0.9 + move2abs * 2.0)
|
||||||
|
* Quaternion::rotation_z(-0.3);
|
||||||
|
},
|
||||||
|
Some(ToolKind::Dagger) => {
|
||||||
|
next.head.orientation = Quaternion::rotation_x(move1abs * 0.15 + move2abs * -0.15)
|
||||||
|
* Quaternion::rotation_z(move1abs * 0.15 + move2abs * -0.3);
|
||||||
|
next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0);
|
||||||
|
next.control_r.position = Vec3::new(
|
||||||
|
9.0 + move1abs * -7.0 + s_a.grip.0 * 2.0,
|
||||||
|
-1.0 + move1abs * 6.0,
|
||||||
|
-2.0,
|
||||||
|
);
|
||||||
|
|
||||||
|
next.control.position = Vec3::new(
|
||||||
|
-5.0 + move1abs * 5.0 + move2abs * 9.0,
|
||||||
|
-1.0 + move2abs * -3.0 + s_a.grip.2,
|
||||||
|
-1.0 + move1abs * 3.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0,
|
||||||
|
);
|
||||||
|
|
||||||
|
next.control_l.orientation = Quaternion::rotation_x(PI / 2.0)
|
||||||
|
* Quaternion::rotation_y(-0.0)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
next.control_r.orientation =
|
||||||
|
Quaternion::rotation_x(0.5 + move1abs * 1.5 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_y(0.2 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
|
||||||
|
next.control.orientation = Quaternion::rotation_x(-0.3 + move2abs * -1.0)
|
||||||
|
* Quaternion::rotation_y(move1abs * -0.4 + move2abs * 1.0)
|
||||||
|
* Quaternion::rotation_z(-0.3 + move2abs * -2.2);
|
||||||
},
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,37 @@ impl Animation for ShootAnimation {
|
|||||||
next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * 0.4)
|
next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * 0.4)
|
||||||
* Quaternion::rotation_y(0.5 * speednorm);
|
* Quaternion::rotation_y(0.5 * speednorm);
|
||||||
},
|
},
|
||||||
|
Some(ToolKind::Blowgun) => {
|
||||||
|
let (move1base, move2base, move3) = match stage_section {
|
||||||
|
Some(StageSection::Buildup) => (anim_time, 0.0, 0.0),
|
||||||
|
Some(StageSection::Action) => (1.0, anim_time.powf(0.25), 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;
|
||||||
|
let move2abs = move2base * pullback;
|
||||||
|
next.head.orientation = Quaternion::rotation_x(move1abs * 0.5 + move2abs * -0.7);
|
||||||
|
next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 3.0);
|
||||||
|
next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 0.0, 4.0);
|
||||||
|
|
||||||
|
next.control.position = Vec3::new(
|
||||||
|
0.0,
|
||||||
|
move1abs * -2.0 + move2abs * 1.0 + s_a.grip.2,
|
||||||
|
move1abs * 3.5 + move2abs * -2.0 + 4.0 - s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0,
|
||||||
|
);
|
||||||
|
|
||||||
|
next.control_l.orientation =
|
||||||
|
Quaternion::rotation_x(3.8 + move1abs * 0.4 + move2abs * -0.5)
|
||||||
|
* Quaternion::rotation_y(-0.3);
|
||||||
|
next.control_r.orientation = Quaternion::rotation_x(
|
||||||
|
3.5 + move1abs * 0.4 + move2abs * -0.5 + s_a.grip.0 * 0.2,
|
||||||
|
) * Quaternion::rotation_y(0.5 + s_a.grip.0 * 0.2);
|
||||||
|
|
||||||
|
next.control.orientation = Quaternion::rotation_x(
|
||||||
|
-2.2 + move1abs * 0.7 + move2abs * -0.2 + 0.5 * speednorm,
|
||||||
|
);
|
||||||
|
},
|
||||||
Some(ToolKind::Staff) => {
|
Some(ToolKind::Staff) => {
|
||||||
let (move1base, _move2base, move3) = match stage_section {
|
let (move1base, _move2base, move3) = match stage_section {
|
||||||
Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0),
|
Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0),
|
||||||
|
@ -60,7 +60,7 @@ impl Animation for WieldAnimation {
|
|||||||
* Quaternion::rotation_z(fast * 0.15 * speednormcancel);
|
* Quaternion::rotation_z(fast * 0.15 * speednormcancel);
|
||||||
|
|
||||||
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
next.main.position = Vec3::new(0.0, 0.0, 0.0);
|
||||||
next.main.orientation = Quaternion::rotation_x(0.0);
|
next.main.orientation = Quaternion::rotation_z(0.0);
|
||||||
|
|
||||||
next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2);
|
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_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2);
|
||||||
@ -95,7 +95,28 @@ impl Animation for WieldAnimation {
|
|||||||
|
|
||||||
next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm);
|
next.control.orientation = Quaternion::rotation_x(-1.35 + 0.5 * speednorm);
|
||||||
},
|
},
|
||||||
|
Some(ToolKind::Blowgun) => {
|
||||||
|
next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 3.0);
|
||||||
|
next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 0.0, 4.0);
|
||||||
|
|
||||||
|
next.control.position = Vec3::new(
|
||||||
|
0.0,
|
||||||
|
s_a.grip.2,
|
||||||
|
4.0 - s_a.grip.2 / 2.5
|
||||||
|
+ s_a.grip.0 * -2.0
|
||||||
|
+ fastacc * 0.5
|
||||||
|
+ fastalt * 0.1 * speednormcancel
|
||||||
|
+ speednorm * 4.0,
|
||||||
|
);
|
||||||
|
|
||||||
|
next.control_l.orientation =
|
||||||
|
Quaternion::rotation_x(3.8 + slow * 0.1) * Quaternion::rotation_y(-0.3);
|
||||||
|
next.control_r.orientation =
|
||||||
|
Quaternion::rotation_x(3.5 + slow * 0.1 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_y(0.5 + slow * 0.0 + s_a.grip.0 * 0.2);
|
||||||
|
|
||||||
|
next.control.orientation = Quaternion::rotation_x(-2.2 + 0.5 * speednorm);
|
||||||
|
},
|
||||||
Some(ToolKind::Bow) => {
|
Some(ToolKind::Bow) => {
|
||||||
next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 0.0);
|
next.control_l.position = Vec3::new(1.0 - s_a.grip.0 * 2.0, 0.0, 0.0);
|
||||||
next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0);
|
next.control_r.position = Vec3::new(-1.0 + s_a.grip.0 * 2.0, 6.0, -2.0);
|
||||||
@ -146,13 +167,51 @@ impl Animation for WieldAnimation {
|
|||||||
* Quaternion::rotation_y(-0.2 * speednorm)
|
* Quaternion::rotation_y(-0.2 * speednorm)
|
||||||
* Quaternion::rotation_z(0.5);
|
* Quaternion::rotation_z(0.5);
|
||||||
},
|
},
|
||||||
Some(ToolKind::Natural) => {
|
Some(ToolKind::Axe) => {
|
||||||
next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2);
|
next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0);
|
||||||
next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2);
|
next.control_r.position =
|
||||||
|
Vec3::new(9.0 + s_a.grip.0 * 2.0, -1.0, -2.0 + speednorm * -3.0);
|
||||||
|
|
||||||
next.hand_l.orientation =
|
next.control.position = Vec3::new(
|
||||||
Quaternion::rotation_x(1.7) * Quaternion::rotation_y(-0.3);
|
-5.0,
|
||||||
next.hand_r.orientation = Quaternion::rotation_x(1.7) * Quaternion::rotation_y(0.3);
|
-1.0 + s_a.grip.2,
|
||||||
|
-1.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + speednorm * 2.0,
|
||||||
|
);
|
||||||
|
|
||||||
|
next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + slow * 0.1)
|
||||||
|
* Quaternion::rotation_y(-0.0)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
next.control_r.orientation =
|
||||||
|
Quaternion::rotation_x(0.5 + slow * 0.1 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_y(0.2 + slow * 0.0 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
|
||||||
|
next.control.orientation = Quaternion::rotation_x(-0.3 + 0.2 * speednorm)
|
||||||
|
* Quaternion::rotation_y(-0.2 * speednorm)
|
||||||
|
* Quaternion::rotation_z(-0.3);
|
||||||
|
},
|
||||||
|
Some(ToolKind::Dagger) => {
|
||||||
|
next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0);
|
||||||
|
next.control_r.position =
|
||||||
|
Vec3::new(9.0 + s_a.grip.0 * 2.0, -1.0, -2.0 + speednorm * -3.0);
|
||||||
|
|
||||||
|
next.control.position = Vec3::new(
|
||||||
|
-5.0,
|
||||||
|
-1.0 + s_a.grip.2,
|
||||||
|
-1.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + speednorm * 2.0,
|
||||||
|
);
|
||||||
|
|
||||||
|
next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + slow * 0.1)
|
||||||
|
* Quaternion::rotation_y(-0.0)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
next.control_r.orientation =
|
||||||
|
Quaternion::rotation_x(0.5 + slow * 0.1 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_y(0.2 + slow * 0.0 + s_a.grip.0 * 0.2)
|
||||||
|
* Quaternion::rotation_z(-0.0);
|
||||||
|
|
||||||
|
next.control.orientation = Quaternion::rotation_x(-0.3 + 0.2 * speednorm)
|
||||||
|
* Quaternion::rotation_y(-0.2 * speednorm)
|
||||||
|
* Quaternion::rotation_z(-0.3);
|
||||||
},
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
}
|
}
|
||||||
|
@ -111,6 +111,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
|||||||
(Owl, Male) => (2.5, 5.0),
|
(Owl, Male) => (2.5, 5.0),
|
||||||
(Owl, Female) => (2.5, 7.0),
|
(Owl, Female) => (2.5, 7.0),
|
||||||
(Parrot, _) => (0.5, 4.5),
|
(Parrot, _) => (0.5, 4.5),
|
||||||
|
(Penguin, _) => (1.5, 6.0),
|
||||||
},
|
},
|
||||||
chest: match (body.species, body.body_type) {
|
chest: match (body.species, body.body_type) {
|
||||||
(Duck, _) => (0.0, 6.0),
|
(Duck, _) => (0.0, 6.0),
|
||||||
@ -122,6 +123,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
|||||||
(Owl, Male) => (0.0, 4.5),
|
(Owl, Male) => (0.0, 4.5),
|
||||||
(Owl, Female) => (0.0, 4.5),
|
(Owl, Female) => (0.0, 4.5),
|
||||||
(Parrot, _) => (0.0, 5.0),
|
(Parrot, _) => (0.0, 5.0),
|
||||||
|
(Penguin, _) => (0.0, 8.0),
|
||||||
},
|
},
|
||||||
tail: match (body.species, body.body_type) {
|
tail: match (body.species, body.body_type) {
|
||||||
(Duck, _) => (-5.0, 1.0),
|
(Duck, _) => (-5.0, 1.0),
|
||||||
@ -133,6 +135,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
|||||||
(Owl, Male) => (-6.0, -2.0),
|
(Owl, Male) => (-6.0, -2.0),
|
||||||
(Owl, Female) => (-6.0, -2.5),
|
(Owl, Female) => (-6.0, -2.5),
|
||||||
(Parrot, _) => (-8.0, -2.0),
|
(Parrot, _) => (-8.0, -2.0),
|
||||||
|
(Penguin, _) => (-3.0, -4.0),
|
||||||
},
|
},
|
||||||
wing: match (body.species, body.body_type) {
|
wing: match (body.species, body.body_type) {
|
||||||
(Duck, _) => (3.5, -0.5, 2.0),
|
(Duck, _) => (3.5, -0.5, 2.0),
|
||||||
@ -144,6 +147,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
|||||||
(Owl, Male) => (3.5, -5.5, 4.0),
|
(Owl, Male) => (3.5, -5.5, 4.0),
|
||||||
(Owl, Female) => (3.5, -6.0, 3.5),
|
(Owl, Female) => (3.5, -6.0, 3.5),
|
||||||
(Parrot, _) => (2.0, -4.5, 3.0),
|
(Parrot, _) => (2.0, -4.5, 3.0),
|
||||||
|
(Penguin, _) => (4.0, 0.5, 1.0),
|
||||||
},
|
},
|
||||||
foot: match (body.species, body.body_type) {
|
foot: match (body.species, body.body_type) {
|
||||||
(Duck, _) => (2.5, -2.0, 4.0),
|
(Duck, _) => (2.5, -2.0, 4.0),
|
||||||
@ -155,6 +159,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
|||||||
(Owl, Male) => (1.5, -2.5, 7.0),
|
(Owl, Male) => (1.5, -2.5, 7.0),
|
||||||
(Owl, Female) => (1.5, -3.0, 6.5),
|
(Owl, Female) => (1.5, -3.0, 6.5),
|
||||||
(Parrot, _) => (1.5, -3.0, 3.0),
|
(Parrot, _) => (1.5, -3.0, 3.0),
|
||||||
|
(Penguin, _) => (2.5, -2.0, 6.0),
|
||||||
},
|
},
|
||||||
feed: match (body.species, body.body_type) {
|
feed: match (body.species, body.body_type) {
|
||||||
(Chicken, _) => 1.2,
|
(Chicken, _) => 1.2,
|
||||||
@ -162,6 +167,7 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
|||||||
(Peacock, _) => 1.6,
|
(Peacock, _) => 1.6,
|
||||||
(Eagle, _) => 1.2,
|
(Eagle, _) => 1.2,
|
||||||
(Parrot, _) => 1.2,
|
(Parrot, _) => 1.2,
|
||||||
|
(Penguin, _) => 1.2,
|
||||||
_ => 1.0,
|
_ => 1.0,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -474,10 +474,10 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) {
|
|||||||
base_structures: Some("spots_grasslands.gnarling_totem"),
|
base_structures: Some("spots_grasslands.gnarling_totem"),
|
||||||
entity_radius: 30.0,
|
entity_radius: 30.0,
|
||||||
entities: &[
|
entities: &[
|
||||||
(15..20, "common.entity.dungeon.tier-0.mugger"),
|
(2..4, "common.entity.dungeon.tier-0.mugger"),
|
||||||
(15..20, "common.entity.dungeon.tier-0.stalker"),
|
(2..4, "common.entity.dungeon.tier-0.stalker"),
|
||||||
(15..20, "common.entity.dungeon.tier-0.logger"),
|
(2..4, "common.entity.dungeon.tier-0.logger"),
|
||||||
(15..20, "common.entity.dungeon.tier-0.chieftain"),
|
(1..2, "common.entity.dungeon.tier-0.chieftain"),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
Spot::GnarlingTree => SpotConfig {
|
Spot::GnarlingTree => SpotConfig {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user