mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
initial balance
This commit is contained in:
parent
858fbe1a6c
commit
e06ebf3507
@ -29,8 +29,8 @@ ComboMelee(
|
||||
forward_movement: 1.0,
|
||||
),
|
||||
],
|
||||
initial_energy_gain: 25,
|
||||
max_energy_gain: 175,
|
||||
initial_energy_gain: 0,
|
||||
max_energy_gain: 0,
|
||||
energy_increase: 30,
|
||||
speed_increase: 0.0,
|
||||
max_speed_increase: 0.0,
|
||||
|
@ -10,7 +10,7 @@ ComboMelee(
|
||||
range: 3.5,
|
||||
angle: 50.0,
|
||||
base_buildup_duration: 0.4,
|
||||
base_swing_duration: 0.08,
|
||||
base_swing_duration: 0.06,
|
||||
base_recover_duration: 0.5,
|
||||
forward_movement: 2.5,
|
||||
),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Chest("AdletBow"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(12.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Chest("AdletSpear"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(12.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Foot("Adlet"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Hand("AdletBow"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Hand("AdletSpear"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Head("AdletBow"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Head("AdletSpear"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Pants("AdletBow"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Pants("AdletSpear"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Belt("Adlet"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(10.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Foot("Gnarling"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(1.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Hand("Gnarling"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(1.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Head("Gnarling"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(1.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Pants("Gnarling"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(1.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Belt("Gnarling"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(1.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Chest("Haniwa"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(28.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Foot("Haniwa"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(20.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Hand("Haniwa"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(20.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Head("Haniwa"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(20.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Pants("Haniwa"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(20.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Chest("Myrmidon"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(36.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Foot("Myrmidon"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(25.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Hand("Myrmidon"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(25.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Head("Myrmidon"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(25.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Pants("Myrmidon"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(25.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Belt("Myrmidon"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(25.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Chest("Sahagin"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(18.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Foot("Sahagin"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(14.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Hand("Sahagin"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(14.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Head("Sahagin"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(14.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Pants("Sahagin"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(14.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -4,7 +4,7 @@ ItemDef(
|
||||
kind: Armor((
|
||||
kind: Belt("Sahagin"),
|
||||
stats: (
|
||||
protection: Normal(2.0),
|
||||
protection: Normal(14.0),
|
||||
poise_resilience: Normal(1.0),
|
||||
),
|
||||
)),
|
||||
|
@ -5,10 +5,10 @@ ItemDef(
|
||||
(
|
||||
kind: Bow,
|
||||
stats: (
|
||||
equip_time_millis: 200,
|
||||
power: 0.8,
|
||||
equip_time_millis: 0,
|
||||
power: 0.7,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
speed: 0.5
|
||||
),
|
||||
)
|
||||
),
|
@ -5,8 +5,8 @@ ItemDef(
|
||||
(
|
||||
kind: Staff,
|
||||
stats: (
|
||||
equip_time_millis: 200,
|
||||
power: 0.8,
|
||||
equip_time_millis: 0,
|
||||
power: 0.7,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
@ -5,8 +5,8 @@ ItemDef(
|
||||
(
|
||||
kind: Spear,
|
||||
stats: (
|
||||
equip_time_millis: 250,
|
||||
power: 1.0,
|
||||
equip_time_millis: 0,
|
||||
power: 0.7,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Adlet Bow",
|
||||
description: "Strips of leather are wrapped around the handle.",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Bow,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 0.3,
|
||||
poise_strength: 0.8,
|
||||
speed: 0.5
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Moderate,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Gnoll Staff",
|
||||
description: "eekum bokum",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Staff,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 0.3,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Wooden Spear",
|
||||
description: "Testing",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Spear,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 0.3,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Adlet Bow",
|
||||
description: "Strips of leather are wrapped around the handle.",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Bow,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.4,
|
||||
poise_strength: 0.8,
|
||||
speed: 0.5
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Moderate,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Gnoll Staff",
|
||||
description: "eekum bokum",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Staff,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.4,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Wooden Spear",
|
||||
description: "Testing",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Spear,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.4,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Adlet Bow",
|
||||
description: "Strips of leather are wrapped around the handle.",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Bow,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.1,
|
||||
poise_strength: 0.8,
|
||||
speed: 0.5
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Moderate,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Gnoll Staff",
|
||||
description: "eekum bokum",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Staff,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.7,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Wooden Spear",
|
||||
description: "Testing",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Spear,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.7,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Adlet Bow",
|
||||
description: "Strips of leather are wrapped around the handle.",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Bow,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 0.3,
|
||||
poise_strength: 0.8,
|
||||
speed: 0.5
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Moderate,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Gnoll Staff",
|
||||
description: "eekum bokum",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Staff,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.1,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
@ -0,0 +1,16 @@
|
||||
ItemDef(
|
||||
name: "Wooden Spear",
|
||||
description: "Testing",
|
||||
kind: Tool(
|
||||
(
|
||||
kind: Spear,
|
||||
stats: (
|
||||
equip_time_millis: 0,
|
||||
power: 1.1,
|
||||
poise_strength: 0.8,
|
||||
speed: 1.0
|
||||
),
|
||||
)
|
||||
),
|
||||
quality: Low,
|
||||
)
|
BIN
assets/voxygen/voxel/armor/chest/steel-0.vox
(Stored with Git LFS)
BIN
assets/voxygen/voxel/armor/chest/steel-0.vox
(Stored with Git LFS)
Binary file not shown.
@ -705,6 +705,7 @@
|
||||
vox_spec: ("armor.empty", (-3.0, -3.5, 1.0)),
|
||||
color: None
|
||||
),
|
||||
//BIPEDLARGE
|
||||
"common.items.npc_weapons.hammer.ogre_hammer": (
|
||||
vox_spec: ("weapon.hammer.2hhammer_ogre", (-5.0, -5.5, -7.0)),
|
||||
color: None
|
||||
@ -753,19 +754,64 @@
|
||||
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.spear.wooden_spear": (
|
||||
//BIPEDSMALL
|
||||
"common.items.npc_weapons.biped_small.gnarling.wooden_spear": (
|
||||
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.weapon.spear.adlet": (
|
||||
vox_spec: ("weapon.spear.adlet", (-0.5, -3.0, -5.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.bow.adlet": (
|
||||
"common.items.npc_weapons.biped_small.gnarling.adlet_bow": (
|
||||
vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.staff.gnoll": (
|
||||
"common.items.npc_weapons.biped_small.gnarling.gnoll_staff": (
|
||||
vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.adlet.wooden_spear": (
|
||||
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.adlet.adlet_bow": (
|
||||
vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.adlet.gnoll_staff": (
|
||||
vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.sahagin.wooden_spear": (
|
||||
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.sahagin.adlet_bow": (
|
||||
vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.sahagin.gnoll_staff": (
|
||||
vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.haniwa.wooden_spear": (
|
||||
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.haniwa.adlet_bow": (
|
||||
vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.haniwa.gnoll_staff": (
|
||||
vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.myrmidon.wooden_spear": (
|
||||
vox_spec: ("weapon.spear.sahagin", (-1.5, -3.0, -5.0)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.myrmidon.adlet_bow": (
|
||||
vox_spec: ("weapon.bow.adlet", (-0.5, -5.5, -9.5)),
|
||||
color: None
|
||||
),
|
||||
"common.items.npc_weapons.biped_small.myrmidon.gnoll_staff": (
|
||||
vox_spec: ("weapon.staff.gnoll", (-2.5, -3.0, -4.0)),
|
||||
color: None
|
||||
),
|
||||
|
@ -135,7 +135,7 @@
|
||||
color: Some((57, 81, 132))
|
||||
),
|
||||
"Steel0": (
|
||||
vox_spec: ("armor.chest.steel-0", (-5.0, -4.5, 2.0)),
|
||||
vox_spec: ("armor.chest.steel-0", (-8.0, -4.5, 2.0)),
|
||||
color: None
|
||||
),
|
||||
"PlateLeather": (
|
||||
|
@ -370,7 +370,14 @@ impl Body {
|
||||
biped_large::Species::Yeti => 2000,
|
||||
_ => 1000,
|
||||
},
|
||||
Body::BipedSmall(_) => 10000,
|
||||
Body::BipedSmall(biped_small) => match biped_small.species {
|
||||
biped_small::Species::Gnarling => 300,
|
||||
biped_small::Species::Adlet => 400,
|
||||
biped_small::Species::Sahagin => 500,
|
||||
biped_small::Species::Haniwa => 900,
|
||||
biped_small::Species::Myrmidon => 1000,
|
||||
_ => 600,
|
||||
},
|
||||
Body::Object(object) => match object {
|
||||
object::Body::TrainingDummy => 10000,
|
||||
object::Body::Crossbow => 800,
|
||||
|
@ -139,10 +139,7 @@ impl ProjectileConstructor {
|
||||
ignore_group: true,
|
||||
}
|
||||
},
|
||||
Frostball {
|
||||
damage,
|
||||
radius,
|
||||
} => {
|
||||
Frostball { damage, radius } => {
|
||||
let damage = AttackDamage::new(
|
||||
Damage {
|
||||
source: DamageSource::Explosion,
|
||||
@ -152,9 +149,7 @@ impl ProjectileConstructor {
|
||||
);
|
||||
let attack = Attack::default().with_damage(damage);
|
||||
let explosion = Explosion {
|
||||
effects: vec![
|
||||
RadiusEffect::Attack(attack),
|
||||
],
|
||||
effects: vec![RadiusEffect::Attack(attack)],
|
||||
radius,
|
||||
reagent: Some(Reagent::Blue),
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
use crate::{combat::Attack, effect::Effect, comp::item::Reagent};
|
||||
use crate::{combat::Attack, comp::item::Reagent, effect::Effect};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
|
@ -2,7 +2,7 @@ use crate::{
|
||||
comp::{
|
||||
inventory::slot::EquipSlot,
|
||||
item::{Hands, ItemKind, Tool, ToolKind},
|
||||
quadruped_low, quadruped_medium,
|
||||
biped_large, biped_small, quadruped_low, quadruped_medium,
|
||||
skills::Skill,
|
||||
theropod, Body, CharacterAbility, CharacterState, LoadoutManip, StateUpdate,
|
||||
},
|
||||
@ -67,13 +67,22 @@ impl Body {
|
||||
quadruped_medium::Species::Panda => 90.0,
|
||||
quadruped_medium::Species::Bear => 90.0,
|
||||
},
|
||||
Body::BipedSmall(_) => 80.0,
|
||||
Body::BirdMedium(_) => 80.0,
|
||||
Body::BipedLarge(body) => match body.species {
|
||||
biped_large::Species::Slysaurok => 100.0,
|
||||
biped_large::Species::Occultsaurok => 100.0,
|
||||
biped_large::Species::Mightysaurok => 100.0,
|
||||
biped_large::Species::Mindflayer => 90.0,
|
||||
biped_large::Species::Minotaur => 90.0,
|
||||
_ => 80.0,
|
||||
}, Body::BirdMedium(_) => 80.0,
|
||||
Body::FishMedium(_) => 80.0,
|
||||
Body::Dragon(_) => 250.0,
|
||||
Body::BirdSmall(_) => 75.0,
|
||||
Body::FishSmall(_) => 60.0,
|
||||
Body::BipedLarge(_) => 75.0,
|
||||
Body::BipedSmall(biped_small) => match biped_small.species {
|
||||
biped_small::Species::Haniwa => 65.0,
|
||||
_ => 80.0,
|
||||
},
|
||||
Body::Object(_) => 0.0,
|
||||
Body::Golem(_) => 60.0,
|
||||
Body::Theropod(_) => 135.0,
|
||||
|
@ -571,12 +571,7 @@ pub fn handle_respawn(server: &Server, entity: EcsEntity) {
|
||||
}
|
||||
|
||||
#[allow(clippy::blocks_in_if_conditions)]
|
||||
pub fn handle_explosion(
|
||||
server: &Server,
|
||||
pos: Vec3<f32>,
|
||||
explosion: Explosion,
|
||||
owner: Option<Uid>,
|
||||
) {
|
||||
pub fn handle_explosion(server: &Server, pos: Vec3<f32>, explosion: Explosion, owner: Option<Uid>) {
|
||||
// Go through all other entities
|
||||
let ecs = &server.state.ecs();
|
||||
|
||||
|
@ -96,9 +96,9 @@ impl Animation for AlphaAnimation {
|
||||
-4.0 + -s_a.grip / 2.0 + move2 * -5.0,
|
||||
);
|
||||
next.upper_torso.orientation =
|
||||
Quaternion::rotation_z(move1base * 0.5 + move2 * -0.7);
|
||||
Quaternion::rotation_z(move1 * 0.5 + move2 * -0.7);
|
||||
next.lower_torso.orientation =
|
||||
Quaternion::rotation_z(move1base * -0.5 + move2 * 0.7);
|
||||
Quaternion::rotation_z(move1 * -0.5 + move2 * 0.7);
|
||||
next.control_l.orientation =
|
||||
Quaternion::rotation_x(PI / 2.0 + move1 * -0.5 + move2 * 1.5)
|
||||
* Quaternion::rotation_y(-0.2);
|
||||
@ -108,7 +108,7 @@ impl Animation for AlphaAnimation {
|
||||
* Quaternion::rotation_z(0.0);
|
||||
|
||||
next.control.orientation =
|
||||
Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -1.5)
|
||||
Quaternion::rotation_x(-0.2 + move1 * 0.5 + move2 * -2.0)
|
||||
* Quaternion::rotation_y(-0.1 + move1 * -0.5 + move2 * 1.0);
|
||||
},
|
||||
Some(ToolKind::HammerSimple) => {
|
||||
|
@ -25,7 +25,7 @@ impl Animation for DashAnimation {
|
||||
#[allow(clippy::single_match)] // TODO: Pending review in #587
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
(active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency,
|
||||
(_active_tool_kind, _second_tool_kind, velocity, _global_time, stage_section, acc_vel): Self::Dependency,
|
||||
anim_time: f64,
|
||||
rate: &mut f32,
|
||||
s_a: &SkeletonAttr,
|
||||
|
@ -191,7 +191,7 @@ impl Animation for ShootAnimation {
|
||||
);
|
||||
},
|
||||
Some(ToolKind::Unique(UniqueKind::WendigoMagic)) => {
|
||||
let (move1base, move2base, move3) = match stage_section {
|
||||
let (move1base, _move2base, move3) = match stage_section {
|
||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.25), 0.0, 0.0),
|
||||
Some(StageSection::Swing) => (1.0, anim_time as f32, 0.0),
|
||||
Some(StageSection::Recover) => (1.0, 1.0, (anim_time as f32).powi(4)),
|
||||
|
@ -63,7 +63,6 @@ impl Animation for DashAnimation {
|
||||
let pullback = 1.0 - move4;
|
||||
let move1abs = move1base * pullback;
|
||||
let move2abs = move2base * pullback;
|
||||
let move3abs = move2base * pullback;
|
||||
|
||||
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1);
|
||||
next.head.orientation = Quaternion::rotation_x(move1abs * 0.6)
|
||||
|
@ -26,13 +26,13 @@ impl Animation for IdleAnimation {
|
||||
let mut next = (*skeleton).clone();
|
||||
let slow = (anim_time as f32 * 4.0).sin();
|
||||
|
||||
next.foot_l.scale = Vec3::one() / 11.0;
|
||||
next.foot_r.scale = Vec3::one() / 11.0;
|
||||
next.foot_l.scale = Vec3::one()*s_a.scaler / 11.0;
|
||||
next.foot_r.scale = Vec3::one()*s_a.scaler / 11.0;
|
||||
|
||||
next.chest.scale = Vec3::one() / 11.0;
|
||||
next.chest.scale = Vec3::one()*s_a.scaler / 11.0;
|
||||
next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + slow * -0.1);
|
||||
|
||||
next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3) / 11.0;
|
||||
next.chest.position = Vec3::new(0.0, s_a.chest.0, s_a.chest.1 + slow * 0.3)*s_a.scaler / 11.0;
|
||||
next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1);
|
||||
next.main.position = Vec3::new(2.0, -3.0, -3.0);
|
||||
next.main.orientation = Quaternion::rotation_y(-0.5) * Quaternion::rotation_z(1.57);
|
||||
@ -40,8 +40,8 @@ impl Animation for IdleAnimation {
|
||||
next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1);
|
||||
next.hand_l.position = Vec3::new(-s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1);
|
||||
next.hand_r.position = Vec3::new(s_a.hand.0, s_a.hand.1, s_a.hand.2 + slow * -0.1);
|
||||
next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2) / 11.0;
|
||||
next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2) / 11.0;
|
||||
next.foot_l.position = Vec3::new(-s_a.foot.0, s_a.foot.1, s_a.foot.2)*s_a.scaler / 11.0;
|
||||
next.foot_r.position = Vec3::new(s_a.foot.0, s_a.foot.1, s_a.foot.2)*s_a.scaler / 11.0;
|
||||
|
||||
next
|
||||
}
|
||||
|
@ -75,6 +75,7 @@ pub struct SkeletonAttr {
|
||||
hand: (f32, f32, f32),
|
||||
foot: (f32, f32, f32),
|
||||
grip: (f32, f32, f32),
|
||||
scaler: f32,
|
||||
}
|
||||
|
||||
impl<'a> std::convert::TryFrom<&'a comp::Body> for SkeletonAttr {
|
||||
@ -98,6 +99,7 @@ impl Default for SkeletonAttr {
|
||||
hand: (0.0, 0.0, 0.0),
|
||||
foot: (0.0, 0.0, 0.0),
|
||||
grip: (0.0, 0.0, 0.0),
|
||||
scaler: 0.0,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -190,6 +192,18 @@ impl<'a> From<&'a Body> for SkeletonAttr {
|
||||
(Haniwa, _) => (0.0, 0.5, 8.0),
|
||||
(Myrmidon, _) => (0.0, 0.0, 8.0),
|
||||
},
|
||||
scaler: match (body.species, body.body_type) {
|
||||
(Gnome, _) => 1.0,
|
||||
(Sahagin, _) => 1.3,
|
||||
(Adlet, _) => 1.2,
|
||||
(Gnarling, _) => 1.0,
|
||||
(Mandragora, _) => 1.0,
|
||||
(Kappa, _) => 1.0,
|
||||
(Cactid, _) => 1.0,
|
||||
(Gnoll, _) => 1.0,
|
||||
(Haniwa, _) => 1.4,
|
||||
(Myrmidon, _) => 1.5,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -89,9 +89,9 @@ impl Animation for RunAnimation {
|
||||
.sin()
|
||||
* 0.1,
|
||||
);
|
||||
next.chest.scale = Vec3::one() / 11.0;
|
||||
next.foot_l.scale = Vec3::one() / 11.0;
|
||||
next.foot_r.scale = Vec3::one() / 11.0;
|
||||
next.chest.scale = Vec3::one()*s_a.scaler / 11.0;
|
||||
next.foot_l.scale = Vec3::one()*s_a.scaler / 11.0;
|
||||
next.foot_r.scale = Vec3::one()*s_a.scaler / 11.0;
|
||||
next.head.position = Vec3::new(0.0, -1.0 + s_a.head.0, s_a.head.1 + short * 0.1);
|
||||
next.head.orientation =
|
||||
Quaternion::rotation_z(tilt * -2.5 + head_look.x * 0.2 - short * 0.02)
|
||||
@ -101,7 +101,7 @@ impl Animation for RunAnimation {
|
||||
0.0,
|
||||
s_a.chest.0,
|
||||
s_a.chest.1 + 1.0 * speednorm + shortalt * -0.8,
|
||||
) / 11.0;
|
||||
)*s_a.scaler / 11.0;
|
||||
next.chest.orientation = Quaternion::rotation_z(short * 0.06 + tilt * -0.6)
|
||||
* Quaternion::rotation_y(tilt * 1.6)
|
||||
* Quaternion::rotation_x(shortalter * 0.035 + speednorm * -0.4 + (tilt.abs()));
|
||||
@ -140,7 +140,7 @@ impl Animation for RunAnimation {
|
||||
s_a.foot.2
|
||||
+ (1.0 - sideabs) * (2.0 * speednorm + ((footvertl * -1.1 * speednorm).max(-1.0)))
|
||||
+ side * ((footvertsl * 1.5).max(-1.0)),
|
||||
) / 11.0;
|
||||
)*s_a.scaler / 11.0;
|
||||
next.foot_l.orientation = Quaternion::rotation_x(
|
||||
(1.0 - sideabs) * (-0.2 * speednorm + foothoril * -0.9 * speednorm) + sideabs * -0.5,
|
||||
) * Quaternion::rotation_y(
|
||||
@ -155,7 +155,7 @@ impl Animation for RunAnimation {
|
||||
s_a.foot.2
|
||||
+ (1.0 - sideabs) * (2.0 * speednorm + ((footvertr * -1.1 * speednorm).max(-1.0)))
|
||||
+ side * ((footvertsr * -1.5).max(-1.0)),
|
||||
) / 11.0;
|
||||
)*s_a.scaler / 11.0;
|
||||
next.foot_r.orientation = Quaternion::rotation_x(
|
||||
(1.0 - sideabs) * (-0.2 * speednorm + foothorir * -0.9 * speednorm) + sideabs * -0.5,
|
||||
) * Quaternion::rotation_y(
|
||||
|
@ -54,10 +54,7 @@ impl Animation for ShootAnimation {
|
||||
let speednorm = speed / 9.4;
|
||||
let speednormcancel = 1.0 - speednorm;
|
||||
|
||||
next.foot_l.scale = Vec3::one() / 11.0;
|
||||
next.foot_r.scale = Vec3::one() / 11.0;
|
||||
|
||||
next.chest.scale = Vec3::one() / 11.0;
|
||||
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);
|
||||
@ -65,7 +62,7 @@ impl Animation for ShootAnimation {
|
||||
0.0,
|
||||
s_a.chest.0,
|
||||
s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5,
|
||||
) / 11.0;
|
||||
)*s_a.scaler / 11.0;
|
||||
|
||||
next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1);
|
||||
|
||||
|
@ -44,10 +44,7 @@ impl Animation for WieldAnimation {
|
||||
let speednorm = speed / 9.4;
|
||||
let speednormcancel = 1.0 - speednorm;
|
||||
|
||||
next.foot_l.scale = Vec3::one() / 11.0;
|
||||
next.foot_r.scale = Vec3::one() / 11.0;
|
||||
|
||||
next.chest.scale = Vec3::one() / 11.0;
|
||||
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);
|
||||
@ -55,7 +52,7 @@ impl Animation for WieldAnimation {
|
||||
0.0,
|
||||
s_a.chest.0,
|
||||
s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5,
|
||||
) / 11.0;
|
||||
)*s_a.scaler / 11.0;
|
||||
|
||||
next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1);
|
||||
|
||||
|
@ -16,7 +16,7 @@ impl Animation for RunAnimation {
|
||||
fn update_skeleton_inner(
|
||||
skeleton: &Self::Skeleton,
|
||||
(velocity, orientation, last_ori, _global_time, avg_vel, acc_vel): Self::Dependency,
|
||||
anim_time: f64,
|
||||
_anim_time: f64,
|
||||
rate: &mut f32,
|
||||
s_a: &SkeletonAttr,
|
||||
) -> Self::Skeleton {
|
||||
|
@ -2691,6 +2691,37 @@ impl FigureMgr {
|
||||
skeleton_attr,
|
||||
)
|
||||
},
|
||||
CharacterState::ChargedRanged(s) => {
|
||||
let stage_time = s.timer.as_secs_f64();
|
||||
|
||||
let stage_progress = match s.stage_section {
|
||||
StageSection::Buildup => {
|
||||
stage_time / s.static_data.buildup_duration.as_secs_f64()
|
||||
},
|
||||
StageSection::Recover => {
|
||||
stage_time / s.static_data.recover_duration.as_secs_f64()
|
||||
},
|
||||
|
||||
_ => 0.0,
|
||||
};
|
||||
anim::biped_small::ShootAnimation::update_skeleton(
|
||||
&target_base,
|
||||
(
|
||||
active_tool_kind,
|
||||
vel.0,
|
||||
ori,
|
||||
state.last_ori,
|
||||
time,
|
||||
state.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_f64();
|
||||
|
||||
|
@ -416,10 +416,12 @@ impl Scene {
|
||||
Some(Reagent::Blue) => Rgb::new(0.15, 0.4, 1.0),
|
||||
Some(Reagent::Green) => Rgb::new(0.0, 1.0, 0.0),
|
||||
Some(Reagent::Purple) => Rgb::new(0.7, 0.0, 1.0),
|
||||
Some(Reagent::Red) => if *is_attack {
|
||||
Rgb::new(1.0, 0.5, 0.0)
|
||||
} else {
|
||||
Rgb::new(1.0, 0.0, 0.0)
|
||||
Some(Reagent::Red) => {
|
||||
if *is_attack {
|
||||
Rgb::new(1.0, 0.5, 0.0)
|
||||
} else {
|
||||
Rgb::new(1.0, 0.0, 0.0)
|
||||
}
|
||||
},
|
||||
Some(Reagent::Yellow) => Rgb::new(1.0, 1.0, 0.0),
|
||||
None => Rgb::new(1.0, 0.5, 0.0),
|
||||
|
@ -619,10 +619,12 @@ impl Floor {
|
||||
)
|
||||
.with_loot_drop(comp::Item::new_from_asset_expect(chosen))
|
||||
.with_main_tool(comp::Item::new_from_asset_expect(
|
||||
match dynamic_rng.gen_range(0..3) {
|
||||
0 => "common.items.npc_weapons.spear.wooden_spear",
|
||||
1 => "common.items.npc_weapons.staff.gnoll",
|
||||
_ => "common.items.npc_weapons.bow.adlet",
|
||||
match dynamic_rng.gen_range(0..5) {
|
||||
0 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear",
|
||||
1 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear",
|
||||
2 => "common.items.npc_weapons.biped_small.gnarling.wooden_spear",
|
||||
3 => "common.items.npc_weapons.biped_small.gnarling.gnoll_staff",
|
||||
_ => "common.items.npc_weapons.biped_small.gnarling.adlet_bow",
|
||||
},
|
||||
)),
|
||||
1 => entity
|
||||
@ -639,10 +641,12 @@ impl Floor {
|
||||
)
|
||||
.with_loot_drop(comp::Item::new_from_asset_expect(chosen))
|
||||
.with_main_tool(comp::Item::new_from_asset_expect(
|
||||
match dynamic_rng.gen_range(0..3) {
|
||||
0 => "common.items.npc_weapons.spear.wooden_spear",
|
||||
1 => "common.items.npc_weapons.staff.gnoll",
|
||||
_ => "common.items.npc_weapons.bow.adlet",
|
||||
match dynamic_rng.gen_range(0..5) {
|
||||
0 => "common.items.npc_weapons.biped_small.adlet.wooden_spear",
|
||||
1 => "common.items.npc_weapons.biped_small.adlet.wooden_spear",
|
||||
2 => "common.items.npc_weapons.biped_small.adlet.wooden_spear",
|
||||
3 => "common.items.npc_weapons.biped_small.adlet.gnoll_staff",
|
||||
_ => "common.items.npc_weapons.biped_small.adlet.adlet_bow",
|
||||
},
|
||||
)),
|
||||
2 => entity
|
||||
@ -659,12 +663,14 @@ impl Floor {
|
||||
)
|
||||
.with_loot_drop(comp::Item::new_from_asset_expect(chosen))
|
||||
.with_main_tool(comp::Item::new_from_asset_expect(
|
||||
match dynamic_rng.gen_range(0..3) {
|
||||
0 => "common.items.npc_weapons.spear.wooden_spear",
|
||||
1 => "common.items.npc_weapons.staff.gnoll",
|
||||
_ => "common.items.npc_weapons.bow.adlet",
|
||||
},
|
||||
)),
|
||||
match dynamic_rng.gen_range(0..5) {
|
||||
0 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear",
|
||||
1 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear",
|
||||
2 => "common.items.npc_weapons.biped_small.sahagin.wooden_spear",
|
||||
3 => "common.items.npc_weapons.biped_small.sahagin.gnoll_staff",
|
||||
_ => "common.items.npc_weapons.biped_small.sahagin.adlet_bow",
|
||||
},
|
||||
)),
|
||||
3 => entity
|
||||
.with_body(comp::Body::BipedSmall(
|
||||
comp::biped_small::Body::random_with(
|
||||
@ -679,10 +685,12 @@ impl Floor {
|
||||
)
|
||||
.with_loot_drop(comp::Item::new_from_asset_expect(chosen))
|
||||
.with_main_tool(comp::Item::new_from_asset_expect(
|
||||
match dynamic_rng.gen_range(0..3) {
|
||||
0 => "common.items.npc_weapons.spear.wooden_spear",
|
||||
1 => "common.items.npc_weapons.staff.gnoll",
|
||||
_ => "common.items.npc_weapons.bow.adlet",
|
||||
match dynamic_rng.gen_range(0..5) {
|
||||
0 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear",
|
||||
1 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear",
|
||||
2 => "common.items.npc_weapons.biped_small.haniwa.wooden_spear",
|
||||
3 => "common.items.npc_weapons.biped_small.haniwa.gnoll_staff",
|
||||
_ => "common.items.npc_weapons.biped_small.haniwa.adlet_bow",
|
||||
},
|
||||
)),
|
||||
4 => entity
|
||||
@ -699,12 +707,14 @@ impl Floor {
|
||||
)
|
||||
.with_loot_drop(comp::Item::new_from_asset_expect(chosen))
|
||||
.with_main_tool(comp::Item::new_from_asset_expect(
|
||||
match dynamic_rng.gen_range(0..3) {
|
||||
0 => "common.items.npc_weapons.spear.wooden_spear",
|
||||
1 => "common.items.npc_weapons.staff.gnoll",
|
||||
_ => "common.items.npc_weapons.bow.adlet",
|
||||
},
|
||||
)),
|
||||
match dynamic_rng.gen_range(0..5) {
|
||||
0 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear",
|
||||
1 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear",
|
||||
2 => "common.items.npc_weapons.biped_small.myrmidon.wooden_spear",
|
||||
3 => "common.items.npc_weapons.biped_small.myrmidon.gnoll_staff",
|
||||
_ => "common.items.npc_weapons.biped_small.myrmidon.adlet_bow",
|
||||
},
|
||||
)),
|
||||
5 => match dynamic_rng.gen_range(0..6) {
|
||||
0 => entity
|
||||
.with_body(comp::Body::BipedSmall(
|
||||
|
Loading…
Reference in New Issue
Block a user