fix_salamander_and_elbst

This commit is contained in:
flo 2022-09-13 17:32:53 +00:00 committed by Joshua Yanovski
parent aea4aca057
commit dc688bccb9
54 changed files with 384 additions and 134 deletions

View File

@ -271,6 +271,11 @@
secondary: "common.abilities.custom.theropodbasic.triplestrike", secondary: "common.abilities.custom.theropodbasic.triplestrike",
abilities: [], abilities: [],
), ),
Custom("Theropod Small"): (
primary: "common.abilities.custom.theropodsmall.triplestrike",
secondary: "common.abilities.custom.theropodsmall.triplestrike",
abilities: [],
),
Custom("Theropod Bird"): ( Custom("Theropod Bird"): (
primary: "common.abilities.custom.theropodbird.triplestrike", primary: "common.abilities.custom.theropodbird.triplestrike",
secondary: "common.abilities.custom.theropodbird.triplestrike", secondary: "common.abilities.custom.theropodbird.triplestrike",

View File

@ -0,0 +1,60 @@
ComboMelee(
stage_data: [
(
stage: 1,
base_damage: 30.0,
damage_increase: 0,
base_poise_damage: 17.5,
poise_damage_increase: 0,
knockback: 3.0,
range: 4.5,
angle: 30.0,
base_buildup_duration: 1.3,
base_swing_duration: 0.15,
hit_timing: 0.5,
base_recover_duration: 0.5,
forward_movement: 1.0,
damage_kind: Crushing,
),
(
stage: 2,
base_damage: 30.0,
damage_increase: 0,
base_poise_damage: 20.5,
poise_damage_increase: 0,
knockback: 3.0,
range: 4.5,
angle: 30.0,
base_buildup_duration: 0.2,
base_swing_duration: 0.15,
hit_timing: 0.5,
base_recover_duration: 0.3,
forward_movement: 1.0,
damage_kind: Crushing,
),
(
stage: 3,
base_damage: 30.0,
damage_increase: 0,
base_poise_damage: 22.5,
poise_damage_increase: 0,
knockback: 25.0,
range: 5.5,
angle: 30.0,
base_buildup_duration: 0.4,
base_swing_duration: 0.125,
hit_timing: 0.5,
base_recover_duration: 1.6,
forward_movement: 1.0,
damage_kind: Crushing,
),
],
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,
)

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Automatic,
body: RandomWith("reefsnapper"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.quad_low.reefsnapper"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Automatic,
body: RandomWith("rootsnapper"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.creature.quad_low.rootsnapper"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -2,8 +2,8 @@
( (
name: Name("Elbst"), name: Name("Elbst"),
body: Exact(QuadrupedLow(( body: Exact(QuadrupedLow((
species: Salamander, species: Elbst,
body_type: Female, body_type: Male,
))), ))),
alignment: Alignment(Wild), alignment: Alignment(Wild),
loot: LootTable("common.loot_tables.creature.quad_low.elbst"), loot: LootTable("common.loot_tables.creature.quad_low.elbst"),
@ -11,4 +11,4 @@
loadout: FromBody, loadout: FromBody,
), ),
meta: [], meta: [],
) )

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Theropod Small",
description: "testing123",
kind: Tool((
kind: Natural,
hands: Two,
stats: (
equip_time_secs: 0.01,
power: 1.0,
effect_power: 1.0,
speed: 1.0,
crit_chance: 0.0625,
range: 1.0,
energy_efficiency: 1.0,
buff_strength: 1.0,
),
)),
quality: Low,
tags: [],
ability_spec: Some(Custom("Theropod Small")),
)

View File

@ -0,0 +1,5 @@
[
(2.0, Item("common.items.food.meat.tough_raw")),
(3.0, Item("common.items.crafting_ing.hide.carapace")),
(1.0, Item("common.items.crafting_ing.coral_branch")),
]

View File

@ -0,0 +1,5 @@
[
(2.0, Item("common.items.food.meat.tough_raw")),
(3.0, Item("common.items.crafting_ing.hide.carapace")),
(1.0, Item("common.items.crafting_ing.animal_misc.lively_vine")),
]

View File

@ -1185,6 +1185,10 @@
keyword: "salamander", keyword: "salamander",
generic: "Salamander" generic: "Salamander"
), ),
elbst: (
keyword: "elbst",
generic: "Elbst"
),
monitor: ( monitor: (
keyword: "monitor", keyword: "monitor",
generic: "Monitor" generic: "Monitor"

BIN
assets/voxygen/voxel/npc/elbst/male/chest.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/foot_br.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/foot_fr.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/head_lower.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/head_upper.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/jaw.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/tail_front.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/npc/elbst/male/tail_rear.vox (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -184,27 +184,79 @@
(Salamander, Female): ( (Salamander, Female): (
upper: ( upper: (
offset: (-6.5, 0.0, -2.0), offset: (-6.5, 0.0, -2.0),
central: ("npc.salamander.female.head_upper"), central: ("npc.salamander.male.head_upper"),
), ),
lower: ( lower: (
offset: (-4.5, -2.0, -3.0), offset: (-4.5, -1.5, -3.0),
central: ("npc.salamander.female.head_lower"), central: ("npc.salamander.male.head_lower"),
), ),
jaw: ( jaw: (
offset: (-6.5, 0.0, -3.5,), offset: (-6.5, 0.0, -3.0),
central: ("npc.salamander.female.jaw"), central: ("npc.salamander.male.jaw"),
), ),
chest: ( chest: (
offset: (-6.5, -8.5, -3.0), offset: (-6.5, -8.5, -3.0),
central: ("npc.salamander.female.chest"), central: ("npc.salamander.male.chest"),
), ),
tail_rear: ( tail_rear: (
offset: (-3.5, -13.0, -2.5), offset: (-3.5, -13.0, -3.0),
central: ("npc.salamander.female.tail_rear"), central: ("npc.salamander.male.tail_rear"),
),
tail_front: (
offset: (-4.5, -9.0, -3.0),
central: ("npc.salamander.male.tail_front"),
),
),
(Elbst, Male): (
upper: (
offset: (-9.5, 0.0, -2.0),
central: ("npc.elbst.male.head_upper"),
),
lower: (
offset: (-4.5, -1.5, -3.0),
central: ("npc.elbst.male.head_lower"),
),
jaw: (
offset: (-6.5, 0.0, -2.0),
central: ("npc.elbst.male.jaw"),
),
chest: (
offset: (-8.5, -8.5, -3.0),
central: ("npc.elbst.male.chest"),
),
tail_rear: (
offset: (-6.5, -13.0, -2.5),
central: ("npc.elbst.male.tail_rear"),
), ),
tail_front: ( tail_front: (
offset: (-5.5, -8.0, -3.0), offset: (-5.5, -8.0, -3.0),
central: ("npc.salamander.female.tail_front"), central: ("npc.elbst.male.tail_front"),
),
),
(Elbst, Female): (
upper: (
offset: (-9.5, 0.0, -2.0),
central: ("npc.elbst.male.head_upper"),
),
lower: (
offset: (-4.5, -1.5, -3.0),
central: ("npc.elbst.male.head_lower"),
),
jaw: (
offset: (-6.5, 0.0, -2.0),
central: ("npc.elbst.male.jaw"),
),
chest: (
offset: (-8.5, -8.5, -3.0),
central: ("npc.elbst.male.chest"),
),
tail_rear: (
offset: (-6.5, -13.0, -2.5),
central: ("npc.elbst.male.tail_rear"),
),
tail_front: (
offset: (-5.5, -8.0, -3.0),
central: ("npc.elbst.male.tail_front"),
), ),
), ),
(Monitor, Male): ( (Monitor, Male): (
@ -470,15 +522,15 @@
), ),
(Reefsnapper, Male): ( (Reefsnapper, Male): (
upper: ( upper: (
offset: (-3.5, 1.5, -4.0), offset: (-3.5, -2.5, -6.0),
central: ("npc.reefsnapper.male.head_upper"), central: ("npc.reefsnapper.male.head_upper"),
), ),
lower: ( lower: (
offset: (-3.5, -1.0, -6.0), offset: (-3.5, -3.0, -6.0),
central: ("npc.reefsnapper.male.head_lower"), central: ("npc.reefsnapper.male.head_lower"),
), ),
jaw: ( jaw: (
offset: (-4.5, 7.0, -5.0), offset: (-4.5, 4.0, -4.0),
central: ("npc.reefsnapper.male.jaw"), central: ("npc.reefsnapper.male.jaw"),
), ),
chest: ( chest: (
@ -496,15 +548,15 @@
), ),
(Reefsnapper, Female): ( (Reefsnapper, Female): (
upper: ( upper: (
offset: (-3.5, 1.5, -4.0), offset: (-3.5, -2.5, -6.0),
central: ("npc.reefsnapper.male.head_upper"), central: ("npc.reefsnapper.male.head_upper"),
), ),
lower: ( lower: (
offset: (-3.5, -1.0, -6.0), offset: (-3.5, -3.0, -6.0),
central: ("npc.reefsnapper.male.head_lower"), central: ("npc.reefsnapper.male.head_lower"),
), ),
jaw: ( jaw: (
offset: (-4.5, 7.0, -5.0), offset: (-4.5, 4.0, -4.0),
central: ("npc.reefsnapper.male.jaw"), central: ("npc.reefsnapper.male.jaw"),
), ),
chest: ( chest: (

View File

@ -128,19 +128,55 @@
(Salamander, Female): ( (Salamander, Female): (
front_left: ( front_left: (
offset: (-6.0, 0.0, -3.0), offset: (-6.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_fr", false), lateral: ("npc.salamander.male.foot_fr", false),
), ),
front_right: ( front_right: (
offset: (0.0, 0.0, -3.0), offset: (0.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_fr", false), lateral: ("npc.salamander.male.foot_fr", false),
), ),
back_left: ( back_left: (
offset: (-7.5, 0.0, -3.0), offset: (-7.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_br", false), lateral: ("npc.salamander.male.foot_br", false),
),
back_right: (
offset: (-0.0, 0.0, -3.0),
lateral: ("npc.salamander.male.foot_br", false),
),
),
(Elbst, Male): (
front_left: (
offset: (-6.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_fr", false),
),
back_left: (
offset: (-8.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_br", false),
), ),
back_right: ( back_right: (
offset: (0.0, 0.0, -3.0), offset: (0.0, 0.0, -3.0),
lateral: ("npc.salamander.female.foot_br", false), lateral: ("npc.elbst.male.foot_br", false),
),
),
(Elbst, Female): (
front_left: (
offset: (-6.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_fr", false),
),
front_right: (
offset: (0.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_fr", false),
),
back_left: (
offset: (-8.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_br", false),
),
back_right: (
offset: (0.0, 0.0, -3.0),
lateral: ("npc.elbst.male.foot_br", false),
), ),
), ),
(Monitor, Male): ( (Monitor, Male): (
@ -325,11 +361,11 @@
), ),
(Reefsnapper, Male): ( (Reefsnapper, Male): (
front_left: ( front_left: (
offset: (-12.0, 0.0, -10.0), offset: (-12.0, -9.0, -10.0),
lateral: ("npc.reefsnapper.male.foot_fr", false), lateral: ("npc.reefsnapper.male.foot_fr", false),
), ),
front_right: ( front_right: (
offset: (-3.0, 0.0, -10.0), offset: (-3.0, -9.0, -10.0),
lateral: ("npc.reefsnapper.male.foot_fr", false), lateral: ("npc.reefsnapper.male.foot_fr", false),
), ),
back_left: ( back_left: (
@ -343,11 +379,11 @@
), ),
(Reefsnapper, Female): ( (Reefsnapper, Female): (
front_left: ( front_left: (
offset: (-12.0, 0.0, -10.0), offset: (-12.0, -9.0, -10.0),
lateral: ("npc.reefsnapper.male.foot_fr", false), lateral: ("npc.reefsnapper.male.foot_fr", false),
), ),
front_right: ( front_right: (
offset: (-3.0, 0.0, -10.0), offset: (-3.0, -9.0, -10.0),
lateral: ("npc.reefsnapper.male.foot_fr", false), lateral: ("npc.reefsnapper.male.foot_fr", false),
), ),
back_left: ( back_left: (

View File

@ -7,7 +7,7 @@ SpawnEntry (
// Casual // Casual
(2, (1, 1, "common.entity.wild.peaceful.camel")), (2, (1, 1, "common.entity.wild.peaceful.camel")),
(2, (1, 1, "common.entity.wild.peaceful.sand_hare")), (2, (1, 1, "common.entity.wild.peaceful.sand_hare")),
(2, (1, 1, "common.entity.wild.peaceful.sand_salamander")), (2, (1, 1, "common.entity.wild.peaceful.salamander")),
(2, (1, 1, "common.entity.wild.peaceful.gecko")), (2, (1, 1, "common.entity.wild.peaceful.gecko")),
// Rare // Rare
(1, (1, 1, "common.entity.wild.peaceful.crawler_sand")), (1, (1, 1, "common.entity.wild.peaceful.crawler_sand")),

View File

@ -0,0 +1,16 @@
SpawnEntry (
name: "Desert rocky animals.",
note: "Search for the rocks in desert and you will find them.",
rules: [
Pack(
groups: [
(1, (1, 1, "common.entity.wild.aggressive.rocksnapper")),
(1, (1, 1, "common.entity.wild.aggressive.dodarock")),
(2, (1, 3, "common.entity.wild.peaceful.gecko")),
(2, (1, 2, "common.entity.wild.peaceful.sand_hare")),
],
spawn_mode: Land,
day_period: [Night, Morning, Noon, Evening],
),
],
)

View File

@ -13,6 +13,7 @@ SpawnEntry (
(1, (1, 1, "common.entity.wild.aggressive.horn_beetle")), (1, (1, 1, "common.entity.wild.aggressive.horn_beetle")),
(1, (1, 1, "common.entity.wild.aggressive.stag_beetle")), (1, (1, 1, "common.entity.wild.aggressive.stag_beetle")),
(1, (1, 1, "common.entity.wild.peaceful.crawler_moss")), (1, (1, 1, "common.entity.wild.peaceful.crawler_moss")),
(1, (1, 1, "common.entity.wild.aggressive.rootsnapper")),
], ],
spawn_mode: Land, spawn_mode: Land,
day_period: [Morning, Noon, Evening], day_period: [Morning, Noon, Evening],

View File

@ -5,7 +5,7 @@ SpawnEntry (
Pack( Pack(
groups: [ groups: [
(5, (1, 1, "common.entity.wild.peaceful.beaver")), (5, (1, 1, "common.entity.wild.peaceful.beaver")),
(5, (1, 1, "common.entity.wild.peaceful.river_salamander")), (5, (1, 1, "common.entity.wild.peaceful.elbst")),
(5, (1, 1, "common.entity.wild.peaceful.duck")), (5, (1, 1, "common.entity.wild.peaceful.duck")),
(1, (1, 1, "common.entity.wild.peaceful.kelpie")), (1, (1, 1, "common.entity.wild.peaceful.kelpie")),
(1, (1, 1, "common.entity.wild.aggressive.hakulaq")), (1, (1, 1, "common.entity.wild.aggressive.hakulaq")),

View File

@ -4,7 +4,8 @@ SpawnEntry (
rules: [ rules: [
Pack( Pack(
groups: [ groups: [
(1, (1, 3, "common.entity.wild.aggressive.sea_crocodile")), (3, (1, 3, "common.entity.wild.aggressive.sea_crocodile")),
(1, (1, 1, "common.entity.wild.aggressive.reefsnapper")),
], ],
spawn_mode: Water, spawn_mode: Water,
day_period: [Night, Morning, Noon, Evening], day_period: [Night, Morning, Noon, Evening],

View File

@ -4,10 +4,10 @@ SpawnEntry (
rules: [ rules: [
Pack( Pack(
groups: [ groups: [
(1, (1, 1, "common.entity.wild.aggressive.dodarock")), (1, (1, 3, "common.entity.wild.peaceful.gecko")),
], ],
spawn_mode: Land, spawn_mode: Land,
day_period: [Night, Morning, Noon, Evening], day_period: [Night, Morning, Noon, Evening],
), ),
], ],
) )

View File

@ -4,10 +4,11 @@ SpawnEntry (
rules: [ rules: [
Pack( Pack(
groups: [ groups: [
(1, (1, 1, "common.entity.wild.aggressive.rocksnapper")), (1, (1, 1, "common.entity.wild.peaceful.jackalope")),
(1, (1, 1, "common.entity.wild.peaceful.arctic_hare")),
], ],
spawn_mode: Land, spawn_mode: Land,
day_period: [Night, Morning, Noon, Evening], day_period: [Night, Morning, Noon, Evening],
), ),
], ],
) )

View File

@ -231,7 +231,7 @@ impl<'a> From<&'a Body> for Psyche {
_ => 0.3, _ => 0.3,
}, },
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
quadruped_low::Species::Salamander => 0.2, quadruped_low::Species::Salamander | quadruped_low::Species::Elbst => 0.2,
quadruped_low::Species::Monitor => 0.3, quadruped_low::Species::Monitor => 0.3,
quadruped_low::Species::Pangolin => 0.6, quadruped_low::Species::Pangolin => 0.6,
quadruped_low::Species::Tortoise => 0.2, quadruped_low::Species::Tortoise => 0.2,

View File

@ -312,6 +312,7 @@ impl Body {
quadruped_low::Species::Monitor => 100.0, quadruped_low::Species::Monitor => 100.0,
quadruped_low::Species::Pangolin => 100.0, quadruped_low::Species::Pangolin => 100.0,
quadruped_low::Species::Salamander => 65.0, quadruped_low::Species::Salamander => 65.0,
quadruped_low::Species::Elbst => 65.0,
quadruped_low::Species::Tortoise => 200.0, quadruped_low::Species::Tortoise => 200.0,
_ => 200.0, _ => 200.0,
}, },
@ -480,6 +481,7 @@ impl Body {
quadruped_low::Species::Sandshark => Vec3::new(2.1, 4.3, 1.7), quadruped_low::Species::Sandshark => Vec3::new(2.1, 4.3, 1.7),
quadruped_low::Species::Basilisk => Vec3::new(2.7, 6.0, 2.9), quadruped_low::Species::Basilisk => Vec3::new(2.7, 6.0, 2.9),
quadruped_low::Species::Salamander => Vec3::new(1.7, 4.0, 1.3), quadruped_low::Species::Salamander => Vec3::new(1.7, 4.0, 1.3),
quadruped_low::Species::Elbst => Vec3::new(1.7, 4.0, 1.3),
quadruped_low::Species::Tortoise => Vec3::new(1.7, 2.7, 1.5), quadruped_low::Species::Tortoise => Vec3::new(1.7, 2.7, 1.5),
_ => Vec3::new(1.0, 1.6, 1.3), _ => Vec3::new(1.0, 1.6, 1.3),
}, },

View File

@ -58,6 +58,7 @@ make_case_elim!(
Rocksnapper = 16, Rocksnapper = 16,
Rootsnapper = 17, Rootsnapper = 17,
Reefsnapper = 18, Reefsnapper = 18,
Elbst = 19,
} }
); );
@ -70,6 +71,7 @@ pub struct AllSpecies<SpeciesMeta> {
pub sea_crocodile: SpeciesMeta, pub sea_crocodile: SpeciesMeta,
pub alligator: SpeciesMeta, pub alligator: SpeciesMeta,
pub salamander: SpeciesMeta, pub salamander: SpeciesMeta,
pub elbst: SpeciesMeta,
pub monitor: SpeciesMeta, pub monitor: SpeciesMeta,
pub asp: SpeciesMeta, pub asp: SpeciesMeta,
pub tortoise: SpeciesMeta, pub tortoise: SpeciesMeta,
@ -97,6 +99,7 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
Species::SeaCrocodile => &self.sea_crocodile, Species::SeaCrocodile => &self.sea_crocodile,
Species::Alligator => &self.alligator, Species::Alligator => &self.alligator,
Species::Salamander => &self.salamander, Species::Salamander => &self.salamander,
Species::Elbst => &self.elbst,
Species::Monitor => &self.monitor, Species::Monitor => &self.monitor,
Species::Asp => &self.asp, Species::Asp => &self.asp,
Species::Tortoise => &self.tortoise, Species::Tortoise => &self.tortoise,
@ -116,11 +119,12 @@ impl<'a, SpeciesMeta> core::ops::Index<&'a Species> for AllSpecies<SpeciesMeta>
} }
} }
pub const ALL_SPECIES: [Species; 19] = [ pub const ALL_SPECIES: [Species; 20] = [
Species::Crocodile, Species::Crocodile,
Species::SeaCrocodile, Species::SeaCrocodile,
Species::Alligator, Species::Alligator,
Species::Salamander, Species::Salamander,
Species::Elbst,
Species::Monitor, Species::Monitor,
Species::Asp, Species::Asp,
Species::Tortoise, Species::Tortoise,

View File

@ -585,7 +585,8 @@ fn default_main_tool(body: &Body) -> Item {
quadruped_low::Species::Crocodile quadruped_low::Species::Crocodile
| quadruped_low::Species::SeaCrocodile | quadruped_low::Species::SeaCrocodile
| quadruped_low::Species::Alligator | quadruped_low::Species::Alligator
| quadruped_low::Species::Salamander => Some(Item::new_from_asset_expect( | quadruped_low::Species::Salamander
| quadruped_low::Species::Elbst => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.quadlowtail", "common.items.npc_weapons.unique.quadlowtail",
)), )),
quadruped_low::Species::Monitor | quadruped_low::Species::Pangolin => Some( quadruped_low::Species::Monitor | quadruped_low::Species::Pangolin => Some(
@ -616,6 +617,9 @@ fn default_main_tool(body: &Body) -> Item {
theropod::Species::Yale => Some(Item::new_from_asset_expect( theropod::Species::Yale => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.theropodcharge", "common.items.npc_weapons.unique.theropodcharge",
)), )),
theropod::Species::Dodarock => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.theropodsmall",
)),
_ => Some(Item::new_from_asset_expect( _ => Some(Item::new_from_asset_expect(
"common.items.npc_weapons.unique.theropodbasic", "common.items.npc_weapons.unique.theropodbasic",
)), )),

View File

@ -90,7 +90,9 @@ pub fn is_mountable(mount: &Body, rider: Option<&Body>) -> bool {
}, },
Body::QuadrupedLow(body) => matches!( Body::QuadrupedLow(body) => matches!(
body.species, body.species,
quadruped_low::Species::Salamander | quadruped_low::Species::Tortoise quadruped_low::Species::Salamander
| quadruped_low::Species::Elbst
| quadruped_low::Species::Tortoise
), ),
_ => false, _ => false,
} }

View File

@ -117,6 +117,7 @@ impl Body {
quadruped_low::Species::SeaCrocodile => 120.0, quadruped_low::Species::SeaCrocodile => 120.0,
quadruped_low::Species::Alligator => 110.0, quadruped_low::Species::Alligator => 110.0,
quadruped_low::Species::Salamander => 85.0, quadruped_low::Species::Salamander => 85.0,
quadruped_low::Species::Elbst => 85.0,
quadruped_low::Species::Monitor => 160.0, quadruped_low::Species::Monitor => 160.0,
quadruped_low::Species::Asp => 110.0, quadruped_low::Species::Asp => 110.0,
quadruped_low::Species::Tortoise => 60.0, quadruped_low::Species::Tortoise => 60.0,

View File

@ -948,7 +948,9 @@ impl<'a> AgentData<'a> {
"Quad Low Tail" | "Husk Brute" => Tactic::TailSlap, "Quad Low Tail" | "Husk Brute" => Tactic::TailSlap,
"Quad Low Quick" => Tactic::QuadLowQuick, "Quad Low Quick" => Tactic::QuadLowQuick,
"Quad Low Basic" => Tactic::QuadLowBasic, "Quad Low Basic" => Tactic::QuadLowBasic,
"Theropod Basic" | "Theropod Bird" => Tactic::Theropod, "Theropod Basic" | "Theropod Bird" | "Theropod Small" => {
Tactic::Theropod
},
// Arthropods // Arthropods
"Antlion" => Tactic::ArthropodMelee, "Antlion" => Tactic::ArthropodMelee,
"Tarantula" | "Horn Beetle" => Tactic::ArthropodAmbush, "Tarantula" | "Horn Beetle" => Tactic::ArthropodAmbush,

View File

@ -148,14 +148,14 @@ impl Default for SkeletonAttr {
impl<'a> From<&'a Body> for SkeletonAttr { impl<'a> From<&'a Body> for SkeletonAttr {
fn from(body: &'a Body) -> Self { fn from(body: &'a Body) -> Self {
use comp::quadruped_low::{BodyType::*, Species::*}; use comp::quadruped_low::Species::*;
Self { Self {
head_upper: match (body.species, body.body_type) { head_upper: match (body.species, body.body_type) {
(Crocodile, _) => (1.5, 2.0), (Crocodile, _) => (1.5, 2.0),
(SeaCrocodile, _) => (1.5, 2.0), (SeaCrocodile, _) => (1.5, 2.0),
(Alligator, _) => (0.5, 2.0), (Alligator, _) => (0.5, 2.0),
(Salamander, Male) => (0.5, 2.5), (Salamander, _) => (0.5, 1.0),
(Salamander, Female) => (0.5, 1.0), (Elbst, _) => (0.5, 1.0),
(Monitor, _) => (5.5, 3.0), (Monitor, _) => (5.5, 3.0),
(Asp, _) => (4.5, 10.5), (Asp, _) => (4.5, 10.5),
(Tortoise, _) => (5.0, 1.0), (Tortoise, _) => (5.0, 1.0),
@ -176,8 +176,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (8.0, 0.0), (Crocodile, _) => (8.0, 0.0),
(SeaCrocodile, _) => (8.0, 0.0), (SeaCrocodile, _) => (8.0, 0.0),
(Alligator, _) => (9.0, 0.25), (Alligator, _) => (9.0, 0.25),
(Salamander, Male) => (9.0, 0.0), (Salamander, _) => (9.0, 0.0),
(Salamander, Female) => (9.0, 0.0), (Elbst, _) => (9.0, 0.0),
(Monitor, _) => (7.0, 0.0), (Monitor, _) => (7.0, 0.0),
(Asp, _) => (6.0, -2.5), (Asp, _) => (6.0, -2.5),
(Tortoise, _) => (12.0, -3.5), (Tortoise, _) => (12.0, -3.5),
@ -198,8 +198,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (2.5, -3.0), (Crocodile, _) => (2.5, -3.0),
(SeaCrocodile, _) => (2.5, -3.0), (SeaCrocodile, _) => (2.5, -3.0),
(Alligator, _) => (2.5, -2.0), (Alligator, _) => (2.5, -2.0),
(Salamander, Male) => (0.0, -2.0), (Salamander, _) => (0.5, -1.0),
(Salamander, Female) => (0.5, -1.0), (Elbst, _) => (0.5, -1.0),
(Monitor, _) => (3.0, -1.0), (Monitor, _) => (3.0, -1.0),
(Asp, _) => (2.0, -2.0), (Asp, _) => (2.0, -2.0),
(Tortoise, _) => (-3.5, -2.0), (Tortoise, _) => (-3.5, -2.0),
@ -220,8 +220,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (0.0, 5.0), (Crocodile, _) => (0.0, 5.0),
(SeaCrocodile, _) => (0.0, 5.0), (SeaCrocodile, _) => (0.0, 5.0),
(Alligator, _) => (0.0, 5.0), (Alligator, _) => (0.0, 5.0),
(Salamander, Male) => (0.0, 5.0), (Salamander, _) => (0.0, 5.0),
(Salamander, Female) => (0.0, 5.0), (Elbst, _) => (0.0, 5.0),
(Monitor, _) => (0.0, 5.0), (Monitor, _) => (0.0, 5.0),
(Asp, _) => (0.0, 8.0), (Asp, _) => (0.0, 8.0),
(Tortoise, _) => (0.0, 11.0), (Tortoise, _) => (0.0, 11.0),
@ -242,8 +242,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (-12.5, -1.0), (Crocodile, _) => (-12.5, -1.0),
(SeaCrocodile, _) => (-12.5, -1.0), (SeaCrocodile, _) => (-12.5, -1.0),
(Alligator, _) => (-13.0, -1.0), (Alligator, _) => (-13.0, -1.0),
(Salamander, Male) => (-8.0, 0.0), (Salamander, _) => (-6.5, 0.0),
(Salamander, Female) => (-6.5, 0.0), (Elbst, _) => (-6.5, 0.0),
(Monitor, _) => (-12.0, 0.0), (Monitor, _) => (-12.0, 0.0),
(Asp, _) => (-14.0, -2.0), (Asp, _) => (-14.0, -2.0),
(Tortoise, _) => (-10.0, -1.5), (Tortoise, _) => (-10.0, -1.5),
@ -264,8 +264,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (-6.0, 0.0), (Crocodile, _) => (-6.0, 0.0),
(SeaCrocodile, _) => (-6.0, 0.0), (SeaCrocodile, _) => (-6.0, 0.0),
(Alligator, _) => (-5.0, 0.0), (Alligator, _) => (-5.0, 0.0),
(Salamander, Male) => (-7.5, 0.0), (Salamander, _) => (-7.5, 0.0),
(Salamander, Female) => (-7.0, 0.0), (Elbst, _) => (-7.0, 0.0),
(Monitor, _) => (-6.5, 0.0), (Monitor, _) => (-6.5, 0.0),
(Asp, _) => (-6.0, -2.0), (Asp, _) => (-6.0, -2.0),
(Tortoise, _) => (-13.0, -3.5), (Tortoise, _) => (-13.0, -3.5),
@ -286,8 +286,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (3.5, 6.0, -1.0), (Crocodile, _) => (3.5, 6.0, -1.0),
(SeaCrocodile, _) => (3.5, 6.0, -1.0), (SeaCrocodile, _) => (3.5, 6.0, -1.0),
(Alligator, _) => (4.5, 4.25, -1.0), (Alligator, _) => (4.5, 4.25, -1.0),
(Salamander, Male) => (5.0, 5.0, -2.0), (Salamander, _) => (5.0, 4.5, -2.0),
(Salamander, Female) => (5.0, 4.5, -2.0), (Elbst, _) => (5.0, 4.5, -2.0),
(Monitor, _) => (3.0, 5.0, 0.0), (Monitor, _) => (3.0, 5.0, 0.0),
(Asp, _) => (1.5, 4.0, -1.0), (Asp, _) => (1.5, 4.0, -1.0),
(Tortoise, _) => (5.5, 6.5, -3.0), (Tortoise, _) => (5.5, 6.5, -3.0),
@ -308,8 +308,8 @@ impl<'a> From<&'a Body> for SkeletonAttr {
(Crocodile, _) => (3.5, -6.0, -1.0), (Crocodile, _) => (3.5, -6.0, -1.0),
(SeaCrocodile, _) => (3.5, -6.0, -1.0), (SeaCrocodile, _) => (3.5, -6.0, -1.0),
(Alligator, _) => (4.5, -5.5, -1.0), (Alligator, _) => (4.5, -5.5, -1.0),
(Salamander, Male) => (4.0, -6.0, -2.0), (Salamander, _) => (3.0, -6.0, -2.0),
(Salamander, Female) => (3.0, -6.0, -2.0), (Elbst, _) => (3.0, -6.0, -2.0),
(Monitor, _) => (2.5, -6.5, 0.0), (Monitor, _) => (2.5, -6.5, 0.0),
(Asp, _) => (2.5, -5.5, -1.0), (Asp, _) => (2.5, -5.5, -1.0),
(Tortoise, _) => (5.5, -11.5, -3.0), (Tortoise, _) => (5.5, -11.5, -3.0),
@ -331,54 +331,56 @@ impl<'a> From<&'a Body> for SkeletonAttr {
_ => (0.0, 1.0), _ => (0.0, 1.0),
}, },
scaler: match (body.species, body.body_type) { scaler: match (body.species, body.body_type) {
(Crocodile, _) => 1.05, (Crocodile, _) => (1.05),
(SeaCrocodile, _) => 1.05, (SeaCrocodile, _) => (1.05),
(Alligator, _) => 1.12, (Alligator, _) => (1.12),
(Salamander, _) => 1.12, (Salamander, _) => (1.12),
(Monitor, _) => 0.9, (Elbst, _) => (1.12),
(Asp, _) => 1.12, (Monitor, _) => (0.9),
(Rocksnapper, _) => 1.12, (Asp, _) => (1.12),
(Rootsnapper, _) => 1.12, (Rocksnapper, _) => (1.12),
(Reefsnapper, _) => 1.12, (Rootsnapper, _) => (1.12),
(Hakulaq, _) => 1.05, (Reefsnapper, _) => (1.12),
(Dagon, _) => 1.05, (Hakulaq, _) => (1.05),
(Pangolin, _) => 1.05, (Dagon, _) => (1.05),
(Maneater, _) => 1.12, (Pangolin, _) => (1.05),
(Lavadrake, _) => 1.12, (Maneater, _) => (1.12),
(Icedrake, _) => 1.12, (Lavadrake, _) => (1.12),
(Basilisk, _) => 1.3, (Icedrake, _) => (1.12),
_ => 0.9, (Basilisk, _) => (1.3),
_ => (0.9),
}, },
tempo: match (body.species, body.body_type) { tempo: match (body.species, body.body_type) {
(Crocodile, _) => 0.7, (Crocodile, _) => (0.7),
(SeaCrocodile, _) => 0.7, (SeaCrocodile, _) => (0.7),
(Alligator, _) => 0.7, (Alligator, _) => (0.7),
(Salamander, _) => 0.85, (Salamander, _) => (0.85),
(Monitor, _) => 1.4, (Elbst, _) => (0.85),
(Tortoise, _) => 0.7, (Monitor, _) => (1.4),
(Rocksnapper, _) => 0.7, (Tortoise, _) => (0.7),
(Rootsnapper, _) => 0.7, (Rocksnapper, _) => (0.7),
(Reefsnapper, _) => 0.7, (Rootsnapper, _) => (0.7),
(Hakulaq, _) => 1.2, (Reefsnapper, _) => (0.7),
(Dagon, _) => 1.2, (Hakulaq, _) => (1.2),
(Pangolin, _) => 1.15, (Dagon, _) => (1.2),
(Maneater, _) => 0.9, (Pangolin, _) => (1.15),
(Lavadrake, _) => 1.1, (Maneater, _) => (0.9),
(Icedrake, _) => 1.1, (Lavadrake, _) => (1.1),
(Basilisk, _) => 0.8, (Icedrake, _) => (1.1),
_ => 1.0, (Basilisk, _) => (0.8),
_ => (1.0),
}, },
} }
} }
} }
fn mount_point(body: &Body) -> Vec3<f32> { fn mount_point(body: &Body) -> Vec3<f32> {
use comp::quadruped_low::{BodyType::*, Species::*}; use comp::quadruped_low::Species::*;
match (body.species, body.body_type) { match (body.species, body.body_type) {
(Crocodile, _) => (0.0, 4.5, -2.0), (Crocodile, _) => (0.0, 4.5, -2.0),
(SeaCrocodile, _) => (0.0, 4.5, -2.0), (SeaCrocodile, _) => (0.0, 4.5, -2.0),
(Alligator, _) => (0.0, 4.25, -2.0), (Alligator, _) => (0.0, 4.25, -2.0),
(Salamander, Male) => (0.0, 5.0, -1.0), (Salamander, _) => (0.0, 5.0, -1.0),
(Salamander, Female) => (0.0, 5.0, -1.0), (Elbst, _) => (0.0, 5.0, -1.0),
(Monitor, _) => (0.0, 2.0, -2.0), (Monitor, _) => (0.0, 2.0, -2.0),
(Asp, _) => (0.0, 2.0, 0.0), (Asp, _) => (0.0, 2.0, 0.0),
(Tortoise, _) => (0.0, -7.0, -1.0), (Tortoise, _) => (0.0, -7.0, -1.0),

View File

@ -838,8 +838,8 @@ fn apply_entity_spawns<R: Rng>(canvas: &mut Canvas, wpos: Vec3<i32>, biome: &Bio
(biome.leafy + 0.05) * 0.5, (biome.leafy + 0.05) * 0.5,
), ),
( (
Some("common.entity.wild.peaceful.tortoise"), Some("common.entity.wild.aggressive.rootsnapper"),
(biome.leafy + 0.05) * 0.35, (biome.leafy + 0.05) * 0.05,
), ),
( (
Some("common.entity.wild.peaceful.axolotl"), Some("common.entity.wild.peaceful.axolotl"),
@ -872,7 +872,7 @@ fn apply_entity_spawns<R: Rng>(canvas: &mut Canvas, wpos: Vec3<i32>, biome: &Bio
// Dusty biome // Dusty biome
( (
Some("common.entity.wild.aggressive.dodarock"), Some("common.entity.wild.aggressive.dodarock"),
(biome.dusty.max(biome.barren) + 0.05) * 0.35, (biome.dusty.max(biome.barren) + 0.05) * 0.05,
), ),
( (
Some("common.entity.wild.aggressive.cave_spider"), Some("common.entity.wild.aggressive.cave_spider"),

View File

@ -340,6 +340,10 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
("world.wildlife.spawn.desert.hot", |c, _col| { ("world.wildlife.spawn.desert.hot", |c, _col| {
close(c.temp, CONFIG.desert_temp + 0.2, 0.3) * BASE_DENSITY * 3.8 close(c.temp, CONFIG.desert_temp + 0.2, 0.3) * BASE_DENSITY * 3.8
}), }),
// Rock animals
("world.wildlife.spawn.desert.rock", |c, col| {
close(c.temp, CONFIG.desert_temp + 0.2, 0.2) * col.rock_density * BASE_DENSITY * 5.0
}),
] ]
} }