mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'balance_tweaks' into 'master'
Balance tweaks See merge request veloren/veloren!3257
This commit is contained in:
commit
c6066d7f3f
@ -114,6 +114,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Creatures will now defend their pets
|
- Creatures will now defend their pets
|
||||||
- [WorldGen] Change path colors
|
- [WorldGen] Change path colors
|
||||||
- Render item drops instead of placeholder textures
|
- Render item drops instead of placeholder textures
|
||||||
|
- Arthropods are rebalanced
|
||||||
|
- Slight hat item rebalance (hats are more specialized and befitting of their rarity rank)
|
||||||
|
- Harvester boss buffed in stats
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
@ -186,6 +186,8 @@
|
|||||||
secondary: "common.abilities.custom.tidalwarrior.totem_wave",
|
secondary: "common.abilities.custom.tidalwarrior.totem_wave",
|
||||||
abilities: [],
|
abilities: [],
|
||||||
),
|
),
|
||||||
|
// Note: Consider making a ranking system once we get more entities
|
||||||
|
// TODO: Make all purple item droppers have purple CR and a unique skillset
|
||||||
Custom("Quad Med Quick"): (
|
Custom("Quad Med Quick"): (
|
||||||
primary: "common.abilities.custom.quadmedquick.triplestrike",
|
primary: "common.abilities.custom.quadmedquick.triplestrike",
|
||||||
secondary: "common.abilities.custom.quadmedquick.dash",
|
secondary: "common.abilities.custom.quadmedquick.dash",
|
||||||
@ -279,30 +281,41 @@
|
|||||||
secondary: "common.abilities.custom.theropodbasic.dash",
|
secondary: "common.abilities.custom.theropodbasic.dash",
|
||||||
abilities: [],
|
abilities: [],
|
||||||
),
|
),
|
||||||
Custom("Arthropod Basic"): (
|
// Arthropods
|
||||||
primary: "common.abilities.custom.arthropodbasic.singlestrike",
|
Custom("Antlion"): (
|
||||||
secondary: "common.abilities.custom.arthropodbasic.ensnaringweb",
|
primary: "common.abilities.custom.arthropods.antlion.singlestrike",
|
||||||
|
secondary: "common.abilities.custom.arthropods.antlion.charge",
|
||||||
abilities: [],
|
abilities: [],
|
||||||
),
|
),
|
||||||
Custom("Arthropod Leap"): (
|
Custom("Black Widow"): (
|
||||||
primary: "common.abilities.custom.arthropodbasic.singlestrike",
|
primary: "common.abilities.custom.arthropods.blackwidow.singlestrike",
|
||||||
secondary: "common.abilities.custom.arthropodbasic.ensnaringweb",
|
secondary: "common.abilities.custom.arthropods.blackwidow.ensnaringwebs",
|
||||||
abilities: [
|
abilities: [
|
||||||
(None, "common.abilities.custom.arthropodbasic.leap"),
|
(None, "common.abilities.custom.arthropods.blackwidow.poisonball"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Custom("Arthropod Ranged"): (
|
Custom("Horn Beetle"): (
|
||||||
primary: "common.abilities.custom.arthropodranged.singlestrike",
|
primary: "common.abilities.custom.arthropods.hornbeetle.singlestrike",
|
||||||
secondary: "common.abilities.custom.arthropodranged.ensnaringweb",
|
secondary: "common.abilities.custom.arthropods.hornbeetle.harden",
|
||||||
abilities: [
|
abilities: [
|
||||||
(None, "common.abilities.custom.arthropodranged.poisonball"),
|
(None, "common.abilities.custom.arthropods.hornbeetle.leap"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Custom("Arthropod Charge"): (
|
Custom("Tarantula"): (
|
||||||
primary: "common.abilities.custom.arthropodcharge.singlestrike",
|
primary: "common.abilities.custom.arthropods.tarantula.singlestrike",
|
||||||
secondary: "common.abilities.custom.arthropodcharge.charge",
|
secondary: "common.abilities.custom.arthropods.tarantula.ensnaringwebs",
|
||||||
abilities: [],
|
abilities: [
|
||||||
|
(None, "common.abilities.custom.arthropods.tarantula.leap"),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
|
Custom("Weevil"): (
|
||||||
|
primary: "common.abilities.custom.arthropods.weevil.singlestrike",
|
||||||
|
secondary: "common.abilities.custom.arthropods.weevil.harden",
|
||||||
|
abilities: [
|
||||||
|
(None, "common.abilities.custom.arthropods.weevil.threadshot"),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
/// TODO: Organize the rest into further catagories and give purple tier droppers+ custom skillsets
|
||||||
Custom("Turret"): (
|
Custom("Turret"): (
|
||||||
primary: "common.abilities.custom.turret.arrows",
|
primary: "common.abilities.custom.turret.arrows",
|
||||||
secondary: "common.abilities.custom.turret.arrows",
|
secondary: "common.abilities.custom.turret.arrows",
|
||||||
|
@ -2,27 +2,27 @@ DashMelee(
|
|||||||
energy_cost: 0,
|
energy_cost: 0,
|
||||||
melee_constructor: (
|
melee_constructor: (
|
||||||
kind: Stab(
|
kind: Stab(
|
||||||
damage: 12.0,
|
damage: 15.0,
|
||||||
poise: 25.0,
|
poise: 20.0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
energy_regen: 0.0,
|
energy_regen: 0.0,
|
||||||
),
|
),
|
||||||
scaled: Some(Stab(
|
scaled: Some(Stab(
|
||||||
damage: 50.0,
|
damage: 60.0,
|
||||||
poise: 100.0,
|
poise: 45.0,
|
||||||
knockback: 30.0,
|
knockback: 25.0,
|
||||||
energy_regen: 0.0,
|
energy_regen: 0.0,
|
||||||
)),
|
)),
|
||||||
range: 5.0,
|
range: 5.0,
|
||||||
angle: 90.0,
|
angle: 90.0,
|
||||||
),
|
),
|
||||||
energy_drain: 0,
|
energy_drain: 0,
|
||||||
forward_speed: 5.0,
|
forward_speed: 3.0,
|
||||||
buildup_duration: 0.3,
|
buildup_duration: 0.3,
|
||||||
charge_duration: 4.0,
|
charge_duration: 4.0,
|
||||||
swing_duration: 0.1,
|
swing_duration: 0.1,
|
||||||
recover_duration: 0.4,
|
recover_duration: 0.4,
|
||||||
ori_modifier: 0.3,
|
ori_modifier: 0.1,
|
||||||
charge_through: false,
|
charge_through: false,
|
||||||
is_interruptible: false,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -0,0 +1,34 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 37,
|
||||||
|
damage_increase: 0,
|
||||||
|
base_poise_damage: 27.5,
|
||||||
|
poise_damage_increase: 0,
|
||||||
|
knockback: 9.0,
|
||||||
|
range: 3.0,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 0.7,
|
||||||
|
base_swing_duration: 0.1,
|
||||||
|
hit_timing: 0.5,
|
||||||
|
base_recover_duration: 0.4,
|
||||||
|
forward_movement: 1.0,
|
||||||
|
damage_kind: Crushing,
|
||||||
|
damage_effect: Some(Buff((
|
||||||
|
kind: Ensnared,
|
||||||
|
dur_secs: 6.0,
|
||||||
|
strength: DamageFraction(0.1),
|
||||||
|
chance: 0.6,
|
||||||
|
))),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
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.8,
|
||||||
|
)
|
@ -1,8 +1,8 @@
|
|||||||
SpriteSummon(
|
SpriteSummon(
|
||||||
buildup_duration: 0.6,
|
buildup_duration: 0.5,
|
||||||
cast_duration: 0.4,
|
cast_duration: 0.4,
|
||||||
recover_duration: 0.3,
|
recover_duration: 0.3,
|
||||||
sprite: EnsnaringWeb,
|
sprite: EnsnaringWeb,
|
||||||
summon_distance: (0, 8),
|
summon_distance: (0, 10),
|
||||||
sparseness: 0.67,
|
sparseness: 0.76,
|
||||||
)
|
)
|
@ -1,19 +1,19 @@
|
|||||||
BasicRanged(
|
BasicRanged(
|
||||||
energy_cost: 0,
|
energy_cost: 0,
|
||||||
buildup_duration: 0.8,
|
buildup_duration: 0.6,
|
||||||
recover_duration: 0.35,
|
recover_duration: 0.35,
|
||||||
projectile: Poisonball(
|
projectile: Poisonball(
|
||||||
damage: 26.0,
|
damage: 25.0,
|
||||||
radius: 5.0,
|
radius: 3.0,
|
||||||
energy_regen: 0,
|
energy_regen: 0,
|
||||||
min_falloff: 0.5,
|
min_falloff: 0.2,
|
||||||
),
|
),
|
||||||
projectile_body: Object(SpitPoison),
|
projectile_body: Object(SpitPoison),
|
||||||
/*projectile_light: Some(LightEmitter {
|
/*projectile_light: Some(LightEmitter {
|
||||||
col: (1.0, 0.75, 0.11).into(),
|
col: (1.0, 0.75, 0.11).into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),*/
|
}),*/
|
||||||
projectile_speed: 70.0,
|
projectile_speed: 260.0,
|
||||||
num_projectiles: 3,
|
num_projectiles: 3,
|
||||||
projectile_spread: 0.2,
|
projectile_spread: 0.3,
|
||||||
)
|
)
|
@ -2,11 +2,11 @@ ComboMelee(
|
|||||||
stage_data: [
|
stage_data: [
|
||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 60,
|
base_damage: 25,
|
||||||
damage_increase: 0,
|
damage_increase: 0,
|
||||||
base_poise_damage: 28,
|
base_poise_damage: 16,
|
||||||
poise_damage_increase: 0,
|
poise_damage_increase: 0,
|
||||||
knockback: 3.0,
|
knockback: 2.0,
|
||||||
range: 3.0,
|
range: 3.0,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
base_buildup_duration: 0.4,
|
base_buildup_duration: 0.4,
|
||||||
@ -14,12 +14,12 @@ ComboMelee(
|
|||||||
hit_timing: 0.5,
|
hit_timing: 0.5,
|
||||||
base_recover_duration: 0.4,
|
base_recover_duration: 0.4,
|
||||||
forward_movement: 1.0,
|
forward_movement: 1.0,
|
||||||
damage_kind: Crushing,
|
damage_kind: Piercing,
|
||||||
damage_effect: Some(Buff((
|
damage_effect: Some(Buff((
|
||||||
kind: Poisoned,
|
kind: Poisoned,
|
||||||
dur_secs: 10.0,
|
dur_secs: 7.0,
|
||||||
strength: DamageFraction(1.0),
|
strength: DamageFraction(0.6),
|
||||||
chance: 1.0,
|
chance: 0.4,
|
||||||
))),
|
))),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -30,5 +30,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.7,
|
ori_modifier: 0.8,
|
||||||
)
|
)
|
@ -0,0 +1,9 @@
|
|||||||
|
SelfBuff(
|
||||||
|
buildup_duration: 0.4,
|
||||||
|
cast_duration: 0.8,
|
||||||
|
recover_duration: 0.3,
|
||||||
|
buff_kind: ProtectingWard,
|
||||||
|
buff_strength: 1.5,
|
||||||
|
buff_duration: Some(10.0),
|
||||||
|
energy_cost: 0,
|
||||||
|
)
|
@ -6,8 +6,8 @@ LeapMelee(
|
|||||||
recover_duration: 0.2,
|
recover_duration: 0.2,
|
||||||
melee_constructor: (
|
melee_constructor: (
|
||||||
kind: Bash(
|
kind: Bash(
|
||||||
damage: 120.0,
|
damage: 30.0,
|
||||||
poise: 60.0,
|
poise: 20.0,
|
||||||
knockback: 4.0,
|
knockback: 4.0,
|
||||||
energy_regen: 0.0,
|
energy_regen: 0.0,
|
||||||
),
|
),
|
||||||
@ -15,5 +15,5 @@ LeapMelee(
|
|||||||
angle: 180.0,
|
angle: 180.0,
|
||||||
),
|
),
|
||||||
forward_leap_strength: 40.0,
|
forward_leap_strength: 40.0,
|
||||||
vertical_leap_strength: 10.0,
|
vertical_leap_strength: 7.5,
|
||||||
)
|
)
|
@ -0,0 +1,28 @@
|
|||||||
|
ComboMelee(
|
||||||
|
stage_data: [
|
||||||
|
(
|
||||||
|
stage: 1,
|
||||||
|
base_damage: 27,
|
||||||
|
damage_increase: 0,
|
||||||
|
base_poise_damage: 20,
|
||||||
|
poise_damage_increase: 0,
|
||||||
|
knockback: 5.0,
|
||||||
|
range: 3.0,
|
||||||
|
angle: 60.0,
|
||||||
|
base_buildup_duration: 0.4,
|
||||||
|
base_swing_duration: 0.1,
|
||||||
|
hit_timing: 0.5,
|
||||||
|
base_recover_duration: 0.4,
|
||||||
|
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.5,
|
||||||
|
)
|
@ -1,8 +1,8 @@
|
|||||||
SpriteSummon(
|
SpriteSummon(
|
||||||
buildup_duration: 0.6,
|
buildup_duration: 0.5,
|
||||||
cast_duration: 0.4,
|
cast_duration: 0.4,
|
||||||
recover_duration: 0.3,
|
recover_duration: 0.3,
|
||||||
sprite: EnsnaringWeb,
|
sprite: EnsnaringWeb,
|
||||||
summon_distance: (0, 8),
|
summon_distance: (0, 9),
|
||||||
sparseness: 0.67,
|
sparseness: 0.8,
|
||||||
)
|
)
|
19
assets/common/abilities/custom/arthropods/tarantula/leap.ron
Normal file
19
assets/common/abilities/custom/arthropods/tarantula/leap.ron
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
LeapMelee(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 0.5,
|
||||||
|
movement_duration: 0.4,
|
||||||
|
swing_duration: 0.075,
|
||||||
|
recover_duration: 0.2,
|
||||||
|
melee_constructor: (
|
||||||
|
kind: Bash(
|
||||||
|
damage: 35.0,
|
||||||
|
poise: 30.0,
|
||||||
|
knockback: 1.0,
|
||||||
|
energy_regen: 0.0,
|
||||||
|
),
|
||||||
|
range: 4.5,
|
||||||
|
angle: 180.0,
|
||||||
|
),
|
||||||
|
forward_leap_strength: 25.0,
|
||||||
|
vertical_leap_strength: 10.0,
|
||||||
|
)
|
@ -2,9 +2,9 @@ ComboMelee(
|
|||||||
stage_data: [
|
stage_data: [
|
||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 70,
|
base_damage: 30,
|
||||||
damage_increase: 0,
|
damage_increase: 0,
|
||||||
base_poise_damage: 28,
|
base_poise_damage: 21,
|
||||||
poise_damage_increase: 0,
|
poise_damage_increase: 0,
|
||||||
knockback: 3.0,
|
knockback: 3.0,
|
||||||
range: 3.0,
|
range: 3.0,
|
||||||
@ -14,12 +14,12 @@ ComboMelee(
|
|||||||
hit_timing: 0.5,
|
hit_timing: 0.5,
|
||||||
base_recover_duration: 0.4,
|
base_recover_duration: 0.4,
|
||||||
forward_movement: 1.0,
|
forward_movement: 1.0,
|
||||||
damage_kind: Crushing,
|
damage_kind: Piercing,
|
||||||
damage_effect: Some(Buff((
|
damage_effect: Some(Buff((
|
||||||
kind: Poisoned,
|
kind: Poisoned,
|
||||||
dur_secs: 10.0,
|
dur_secs: 9.0,
|
||||||
strength: DamageFraction(1.0),
|
strength: DamageFraction(0.7),
|
||||||
chance: 1.0,
|
chance: 0.8,
|
||||||
))),
|
))),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -30,5 +30,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.7,
|
ori_modifier: 0.8,
|
||||||
)
|
)
|
@ -0,0 +1,9 @@
|
|||||||
|
SelfBuff(
|
||||||
|
buildup_duration: 0.4,
|
||||||
|
cast_duration: 0.8,
|
||||||
|
recover_duration: 0.3,
|
||||||
|
buff_kind: ProtectingWard,
|
||||||
|
buff_strength: 1.2,
|
||||||
|
buff_duration: Some(10.0),
|
||||||
|
energy_cost: 0,
|
||||||
|
)
|
@ -2,9 +2,9 @@ ComboMelee(
|
|||||||
stage_data: [
|
stage_data: [
|
||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 40,
|
base_damage: 22,
|
||||||
damage_increase: 0,
|
damage_increase: 0,
|
||||||
base_poise_damage: 15,
|
base_poise_damage: 14,
|
||||||
poise_damage_increase: 0,
|
poise_damage_increase: 0,
|
||||||
knockback: 3.0,
|
knockback: 3.0,
|
||||||
range: 3.0,
|
range: 3.0,
|
||||||
@ -15,12 +15,6 @@ ComboMelee(
|
|||||||
base_recover_duration: 0.4,
|
base_recover_duration: 0.4,
|
||||||
forward_movement: 1.0,
|
forward_movement: 1.0,
|
||||||
damage_kind: Crushing,
|
damage_kind: Crushing,
|
||||||
damage_effect: Some(Buff((
|
|
||||||
kind: Poisoned,
|
|
||||||
dur_secs: 10.0,
|
|
||||||
strength: DamageFraction(1.0),
|
|
||||||
chance: 1.0,
|
|
||||||
))),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
@ -30,5 +24,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.7,
|
ori_modifier: 0.6,
|
||||||
)
|
)
|
@ -0,0 +1,19 @@
|
|||||||
|
BasicBeam(
|
||||||
|
buildup_duration: 0.2,
|
||||||
|
recover_duration: 0.2,
|
||||||
|
beam_duration: 1.0,
|
||||||
|
damage: 0.6,
|
||||||
|
tick_rate: 15.0,
|
||||||
|
range: 30.0,
|
||||||
|
max_angle: 1.0,
|
||||||
|
damage_effect: Some(Buff((
|
||||||
|
kind: Frozen,
|
||||||
|
dur_secs: 4.0,
|
||||||
|
strength: DamageFraction(1.0),
|
||||||
|
chance: 1.0,
|
||||||
|
))),
|
||||||
|
energy_regen: 0.0,
|
||||||
|
energy_drain: 0,
|
||||||
|
ori_rate: 0.95,
|
||||||
|
specifier: WebStrand,
|
||||||
|
)
|
@ -3,7 +3,7 @@ BasicRanged(
|
|||||||
buildup_duration: 0.5,
|
buildup_duration: 0.5,
|
||||||
recover_duration: 0.8,
|
recover_duration: 0.8,
|
||||||
projectile: ExplodingPumpkin(
|
projectile: ExplodingPumpkin(
|
||||||
damage: 20.0,
|
damage: 25.0,
|
||||||
knockback: 25.0,
|
knockback: 25.0,
|
||||||
radius: 5.0,
|
radius: 5.0,
|
||||||
min_falloff: 0.6,
|
min_falloff: 0.6,
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
BasicBeam(
|
BasicBeam(
|
||||||
buildup_duration: 0.5,
|
buildup_duration: 0.7,
|
||||||
recover_duration: 0.5,
|
recover_duration: 0.6,
|
||||||
beam_duration: 1.0,
|
beam_duration: 1.0,
|
||||||
damage: 4.0,
|
damage: 6.0,
|
||||||
tick_rate: 1.5,
|
tick_rate: 1.5,
|
||||||
range: 20.0,
|
range: 20.0,
|
||||||
max_angle: 15.0,
|
max_angle: 15.0,
|
||||||
damage_effect: Some(Buff((
|
damage_effect: Some(Buff((
|
||||||
kind: Burning,
|
kind: Burning,
|
||||||
dur_secs: 10.0,
|
dur_secs: 10.0,
|
||||||
strength: DamageFraction(0.5),
|
strength: DamageFraction(1.0),
|
||||||
chance: 0.25,
|
chance: 1.0,
|
||||||
))),
|
))),
|
||||||
energy_regen: 0,
|
energy_regen: 0,
|
||||||
energy_drain: 0,
|
energy_drain: 0,
|
||||||
ori_rate: 0.2,
|
ori_rate: 0.3,
|
||||||
specifier: Flamethrower,
|
specifier: Flamethrower,
|
||||||
)
|
)
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
BasicMelee(
|
BasicMelee(
|
||||||
energy_cost: 0,
|
energy_cost: 0,
|
||||||
buildup_duration: 0.7,
|
buildup_duration: 0.6,
|
||||||
swing_duration: 0.1,
|
swing_duration: 0.1,
|
||||||
recover_duration: 0.6,
|
recover_duration: 0.6,
|
||||||
melee_constructor: (
|
melee_constructor: (
|
||||||
kind: Slash(
|
kind: Slash(
|
||||||
damage: 7.0,
|
damage: 14.0,
|
||||||
poise: 10.0,
|
poise: 10.0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
energy_regen: 0.0,
|
energy_regen: 0.0,
|
||||||
|
@ -14,6 +14,6 @@ BasicBeam(
|
|||||||
))),
|
))),
|
||||||
energy_regen: 0,
|
energy_regen: 0,
|
||||||
energy_drain: 0,
|
energy_drain: 0,
|
||||||
ori_rate: 0.2,
|
ori_rate: 0.5,
|
||||||
specifier: Cultist,
|
specifier: Cultist,
|
||||||
)
|
)
|
||||||
|
@ -12,6 +12,12 @@ BasicMelee(
|
|||||||
),
|
),
|
||||||
range: 5.0,
|
range: 5.0,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
|
damage_effect: Some(Buff((
|
||||||
|
kind: Crippled,
|
||||||
|
dur_secs: 10.0,
|
||||||
|
strength: Value(0.5),
|
||||||
|
chance: 1.0,
|
||||||
|
))),
|
||||||
),
|
),
|
||||||
ori_modifier: 1.0,
|
ori_modifier: 1.0,
|
||||||
)
|
)
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
name: Name("Gnarling Chieftain"),
|
name: Name("Gnarling Chieftain"),
|
||||||
body: RandomWith("gnarling"),
|
body: RandomWith("gnarling"),
|
||||||
alignment: Alignment(Enemy),
|
alignment: Alignment(Enemy),
|
||||||
loot: LootTable("common.loot_tables.dungeon.tier-0.boss"),
|
loot: LootTable("common.loot_tables.dungeon.tier-0.chieftain"),
|
||||||
inventory: (
|
inventory: (
|
||||||
loadout: Inline((
|
loadout: Inline((
|
||||||
inherit: Asset("common.loadout.dungeon.gnarling.chieftain"),
|
inherit: Asset("common.loadout.dungeon.gnarling.chieftain"),
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
name: Name("Harvester"),
|
name: Name("Harvester"),
|
||||||
body: RandomWith("harvester"),
|
body: RandomWith("harvester"),
|
||||||
alignment: Alignment(Enemy),
|
alignment: Alignment(Enemy),
|
||||||
loot: LootTable("common.loot_tables.dungeon.tier-0.boss"),
|
loot: LootTable("common.loot_tables.dungeon.tier-0.harvester"),
|
||||||
inventory: (
|
inventory: (
|
||||||
loadout: FromBody,
|
loadout: FromBody,
|
||||||
),
|
),
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
name: Automatic,
|
name: Automatic,
|
||||||
body: RandomWith("antlion"),
|
body: RandomWith("antlion"),
|
||||||
alignment: Alignment(Enemy),
|
alignment: Alignment(Enemy),
|
||||||
loot: LootTable("common.loot_tables.creature.arthropod.carapace"),
|
loot: LootTable("common.loot_tables.creature.arthropod.antlion"),
|
||||||
inventory: (
|
inventory: (
|
||||||
loadout: FromBody,
|
loadout: FromBody,
|
||||||
),
|
),
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
body_type: Male,
|
body_type: Male,
|
||||||
))),
|
))),
|
||||||
alignment: Alignment(Enemy),
|
alignment: Alignment(Enemy),
|
||||||
loot: LootTable("common.loot_tables.creature.quad_medium.ice"),
|
loot: LootTable("common.loot_tables.creature.quad_medium.roshwalr"),
|
||||||
inventory: (
|
inventory: (
|
||||||
loadout: FromBody,
|
loadout: FromBody,
|
||||||
),
|
),
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
name: Automatic,
|
name: Automatic,
|
||||||
body: RandomWith("tarantula"),
|
body: RandomWith("tarantula"),
|
||||||
alignment: Alignment(Enemy),
|
alignment: Alignment(Enemy),
|
||||||
loot: LootTable("common.loot_tables.creature.arthropod.web"),
|
loot: LootTable("common.loot_tables.creature.arthropod.tarantula"),
|
||||||
inventory: (
|
inventory: (
|
||||||
loadout: FromBody,
|
loadout: FromBody,
|
||||||
),
|
),
|
||||||
|
@ -4,11 +4,10 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("Merchant"),
|
kind: Head("Merchant"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(6.0)),
|
protection: Some(Normal(5.0)),
|
||||||
poise_resilience: Some(Normal(4.0)),
|
poise_resilience: Some(Normal(2.0)),
|
||||||
energy_max: Some(12.0),
|
energy_max: Some(11.0),
|
||||||
energy_reward: Some(0.25),
|
energy_reward: Some(0.065),
|
||||||
crit_power: Some(0.015),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: Epic,
|
quality: Epic,
|
||||||
|
@ -4,9 +4,7 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("BambooTwig"),
|
kind: Head("BambooTwig"),
|
||||||
stats: (
|
stats: (
|
||||||
poise_resilience: Some(Normal(2.0)),
|
energy_reward: Some(0.033),
|
||||||
energy_reward: Some(0.06),
|
|
||||||
crit_power: Some(0.005),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: Common,
|
quality: Common,
|
||||||
|
@ -4,7 +4,7 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("Red"),
|
kind: Head("Red"),
|
||||||
stats: (
|
stats: (
|
||||||
crit_power: Some(0.08),
|
crit_power: Some(0.008),
|
||||||
stealth: Some(0.15),
|
stealth: Some(0.15),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -4,7 +4,7 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("Thief"),
|
kind: Head("Thief"),
|
||||||
stats: (
|
stats: (
|
||||||
crit_power: Some(0.07),
|
crit_power: Some(0.006),
|
||||||
stealth: Some(0.18),
|
stealth: Some(0.18),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -7,8 +7,7 @@ ItemDef(
|
|||||||
protection: Some(Normal(12.0)),
|
protection: Some(Normal(12.0)),
|
||||||
poise_resilience: Some(Normal(2.0)),
|
poise_resilience: Some(Normal(2.0)),
|
||||||
energy_max: Some(5.0),
|
energy_max: Some(5.0),
|
||||||
energy_reward: Some(0.05),
|
crit_power: Some(0.03),
|
||||||
crit_power: Some(0.01),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: Epic,
|
quality: Epic,
|
||||||
|
@ -6,7 +6,7 @@ ItemDef(
|
|||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(5.0)),
|
protection: Some(Normal(5.0)),
|
||||||
poise_resilience: Some(Normal(-1.0)),
|
poise_resilience: Some(Normal(-1.0)),
|
||||||
crit_power: Some(0.007),
|
crit_power: Some(0.014),
|
||||||
stealth: Some(0.35),
|
stealth: Some(0.35),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -4,9 +4,8 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("Hood"),
|
kind: Head("Hood"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(6.0)),
|
protection: Some(Normal(3.0)),
|
||||||
poise_resilience: Some(Normal(1.0)),
|
crit_power: Some(0.021),
|
||||||
crit_power: Some(0.01),
|
|
||||||
stealth: Some(0.22),
|
stealth: Some(0.22),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -4,10 +4,9 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("DarkHood"),
|
kind: Head("DarkHood"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(7.0)),
|
protection: Some(Normal(6.0)),
|
||||||
poise_resilience: Some(Normal(1.0)),
|
poise_resilience: Some(Normal(1.0)),
|
||||||
crit_power: Some(0.008),
|
stealth: Some(0.2),
|
||||||
stealth: Some(0.15),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: Moderate,
|
quality: Moderate,
|
||||||
|
@ -4,10 +4,9 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("Mitre"),
|
kind: Head("Mitre"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(4.0)),
|
poise_resilience: Some(Normal(1.5)),
|
||||||
energy_max: Some(8.0),
|
energy_max: Some(7.0),
|
||||||
energy_reward: Some(0.1),
|
energy_reward: Some(0.06),
|
||||||
crit_power: Some(0.01),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: High,
|
quality: High,
|
||||||
|
@ -6,7 +6,7 @@ ItemDef(
|
|||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(9.0)),
|
protection: Some(Normal(9.0)),
|
||||||
poise_resilience: Some(Normal(3.0)),
|
poise_resilience: Some(Normal(3.0)),
|
||||||
crit_power: Some(0.01),
|
crit_power: Some(0.073),
|
||||||
stealth: Some(-0.5),
|
stealth: Some(-0.5),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -5,7 +5,7 @@ ItemDef(
|
|||||||
kind: Head("Straw"),
|
kind: Head("Straw"),
|
||||||
stats: (
|
stats: (
|
||||||
energy_max: Some(4.0),
|
energy_max: Some(4.0),
|
||||||
energy_reward: Some(0.04),
|
energy_reward: Some(0.02),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: Common,
|
quality: Common,
|
||||||
|
@ -4,12 +4,9 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("WanderersHat"),
|
kind: Head("WanderersHat"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(3.0)),
|
|
||||||
poise_resilience: Some(Normal(1.0)),
|
poise_resilience: Some(Normal(1.0)),
|
||||||
energy_max: Some(1.0),
|
crit_power: Some(0.033),
|
||||||
energy_reward: Some(0.02),
|
stealth: Some(0.2),
|
||||||
crit_power: Some(0.01),
|
|
||||||
stealth: Some(0.05),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: High,
|
quality: High,
|
||||||
|
@ -5,11 +5,10 @@ ItemDef(
|
|||||||
kind: Head("WingedCoronet"),
|
kind: Head("WingedCoronet"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(2.0)),
|
protection: Some(Normal(2.0)),
|
||||||
poise_resilience: Some(Normal(0.0)),
|
energy_max: Some(4.0),
|
||||||
energy_max: Some(8.0),
|
energy_reward: Some(0.037),
|
||||||
energy_reward: Some(0.05),
|
|
||||||
crit_power: Some(0.015),
|
crit_power: Some(0.015),
|
||||||
stealth: Some(0.5),
|
stealth: Some(0.18),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: High,
|
quality: High,
|
||||||
|
@ -5,10 +5,8 @@ ItemDef(
|
|||||||
kind: Head("Pirate"),
|
kind: Head("Pirate"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(4.0)),
|
protection: Some(Normal(4.0)),
|
||||||
poise_resilience: Some(Normal(1.0)),
|
energy_reward: Some(0.025),
|
||||||
energy_max: Some(1.0),
|
crit_power: Some(0.1),
|
||||||
energy_reward: Some(0.015),
|
|
||||||
crit_power: Some(0.02),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: High,
|
quality: High,
|
||||||
|
@ -4,11 +4,10 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Head("Witch"),
|
kind: Head("Witch"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(4.0)),
|
protection: Some(Normal(2.0)),
|
||||||
poise_resilience: Some(Normal(3.0)),
|
poise_resilience: Some(Normal(1.5)),
|
||||||
energy_max: Some(12.0),
|
energy_max: Some(8.0),
|
||||||
energy_reward: Some(0.4),
|
energy_reward: Some(0.084),
|
||||||
crit_power: Some(0.01),
|
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
quality: Epic,
|
quality: Epic,
|
||||||
|
@ -9,6 +9,6 @@ ItemDef(
|
|||||||
flicker_thousandths: 600,
|
flicker_thousandths: 600,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
quality: Legendary,
|
quality: High,
|
||||||
tags: [Utility],
|
tags: [Utility],
|
||||||
)
|
)
|
||||||
|
@ -4,7 +4,7 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Chest("Arthropod"),
|
kind: Chest("Arthropod"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(100.0)),
|
protection: Some(Normal(60.0)),
|
||||||
poise_resilience: Some(Normal(1.0)),
|
poise_resilience: Some(Normal(1.0)),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -4,7 +4,7 @@ ItemDef(
|
|||||||
kind: Armor((
|
kind: Armor((
|
||||||
kind: Chest("QuadrupedLowShell"),
|
kind: Chest("QuadrupedLowShell"),
|
||||||
stats: (
|
stats: (
|
||||||
protection: Some(Normal(750.0)),
|
protection: Some(Normal(320.0)),
|
||||||
poise_resilience: Some(Normal(0.0)),
|
poise_resilience: Some(Normal(0.0)),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ItemDef(
|
ItemDef(
|
||||||
name: "Arthropod Leap",
|
name: "Antlion",
|
||||||
description: "testing123",
|
description: "testing123",
|
||||||
kind: Tool((
|
kind: Tool((
|
||||||
kind: Natural,
|
kind: Natural,
|
||||||
@ -15,7 +15,7 @@ ItemDef(
|
|||||||
buff_strength: 1.0,
|
buff_strength: 1.0,
|
||||||
)),
|
)),
|
||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: Epic,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: Some(Custom("Arthropod Leap")),
|
ability_spec: Some(Custom("Antlion")),
|
||||||
)
|
)
|
@ -1,5 +1,5 @@
|
|||||||
ItemDef(
|
ItemDef(
|
||||||
name: "Arthropod Basic",
|
name: "Black Widow",
|
||||||
description: "testing123",
|
description: "testing123",
|
||||||
kind: Tool((
|
kind: Tool((
|
||||||
kind: Natural,
|
kind: Natural,
|
||||||
@ -15,7 +15,7 @@ ItemDef(
|
|||||||
buff_strength: 1.0,
|
buff_strength: 1.0,
|
||||||
)),
|
)),
|
||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: Epic,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: Some(Custom("Arthropod Basic")),
|
ability_spec: Some(Custom("Black Widow")),
|
||||||
)
|
)
|
@ -0,0 +1,21 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Cave Spider",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool((
|
||||||
|
kind: Natural,
|
||||||
|
hands: Two,
|
||||||
|
stats: Direct((
|
||||||
|
equip_time_secs: 0.01,
|
||||||
|
power: 0.6,
|
||||||
|
effect_power: 1.0,
|
||||||
|
speed: 0.6,
|
||||||
|
crit_chance: 0.1,
|
||||||
|
range: 0.8,
|
||||||
|
energy_efficiency: 1.0,
|
||||||
|
buff_strength: 0.9,
|
||||||
|
)),
|
||||||
|
)),
|
||||||
|
quality: Moderate,
|
||||||
|
tags: [],
|
||||||
|
ability_spec: Some(Custom("Black Widow")),
|
||||||
|
)
|
@ -1,5 +1,5 @@
|
|||||||
ItemDef(
|
ItemDef(
|
||||||
name: "Arthropod Charge",
|
name: "Horn Beetle",
|
||||||
description: "testing123",
|
description: "testing123",
|
||||||
kind: Tool((
|
kind: Tool((
|
||||||
kind: Natural,
|
kind: Natural,
|
||||||
@ -15,7 +15,7 @@ ItemDef(
|
|||||||
buff_strength: 1.0,
|
buff_strength: 1.0,
|
||||||
)),
|
)),
|
||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: High,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: Some(Custom("Arthropod Charge")),
|
ability_spec: Some(Custom("Horn Beetle")),
|
||||||
)
|
)
|
@ -0,0 +1,21 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Leaf Beetle",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool((
|
||||||
|
kind: Natural,
|
||||||
|
hands: Two,
|
||||||
|
stats: Direct((
|
||||||
|
equip_time_secs: 0.01,
|
||||||
|
power: 0.86,
|
||||||
|
effect_power: 1.0,
|
||||||
|
speed: 0.86,
|
||||||
|
crit_chance: 0.1,
|
||||||
|
range: 1.0,
|
||||||
|
energy_efficiency: 1.0,
|
||||||
|
buff_strength: 0.875,
|
||||||
|
)),
|
||||||
|
)),
|
||||||
|
quality: High,
|
||||||
|
tags: [],
|
||||||
|
ability_spec: Some(Custom("Antlion")),
|
||||||
|
)
|
@ -0,0 +1,21 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Moss Crawler",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool((
|
||||||
|
kind: Natural,
|
||||||
|
hands: Two,
|
||||||
|
stats: Direct((
|
||||||
|
equip_time_secs: 0.01,
|
||||||
|
power: 0.72,
|
||||||
|
effect_power: 1.0,
|
||||||
|
speed: 0.72,
|
||||||
|
crit_chance: 0.1,
|
||||||
|
range: 0.8,
|
||||||
|
energy_efficiency: 1.0,
|
||||||
|
buff_strength: 0.6,
|
||||||
|
)),
|
||||||
|
)),
|
||||||
|
quality: Moderate,
|
||||||
|
tags: [],
|
||||||
|
ability_spec: Some(Custom("Weevil")),
|
||||||
|
)
|
@ -1,5 +1,5 @@
|
|||||||
ItemDef(
|
ItemDef(
|
||||||
name: "Arthropod Ranged",
|
name: "Tarantula",
|
||||||
description: "testing123",
|
description: "testing123",
|
||||||
kind: Tool((
|
kind: Tool((
|
||||||
kind: Natural,
|
kind: Natural,
|
||||||
@ -15,7 +15,7 @@ ItemDef(
|
|||||||
buff_strength: 1.0,
|
buff_strength: 1.0,
|
||||||
)),
|
)),
|
||||||
)),
|
)),
|
||||||
quality: Low,
|
quality: Epic,
|
||||||
tags: [],
|
tags: [],
|
||||||
ability_spec: Some(Custom("Arthropod Ranged")),
|
ability_spec: Some(Custom("Tarantula")),
|
||||||
)
|
)
|
21
assets/common/items/npc_weapons/unique/arthropods/weevil.ron
Normal file
21
assets/common/items/npc_weapons/unique/arthropods/weevil.ron
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Weevil",
|
||||||
|
description: "testing123",
|
||||||
|
kind: Tool((
|
||||||
|
kind: Natural,
|
||||||
|
hands: Two,
|
||||||
|
stats: Direct((
|
||||||
|
equip_time_secs: 0.01,
|
||||||
|
power: 1.0,
|
||||||
|
effect_power: 1.0,
|
||||||
|
speed: 1.0,
|
||||||
|
crit_chance: 0.1,
|
||||||
|
range: 1.0,
|
||||||
|
energy_efficiency: 1.0,
|
||||||
|
buff_strength: 1.0,
|
||||||
|
)),
|
||||||
|
)),
|
||||||
|
quality: High,
|
||||||
|
tags: [],
|
||||||
|
ability_spec: Some(Custom("Weevil")),
|
||||||
|
)
|
3
assets/common/loot_tables/creature/arthropod/antlion.ron
Normal file
3
assets/common/loot_tables/creature/arthropod/antlion.ron
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[
|
||||||
|
(1.0, ItemQuantity("common.items.crafting_ing.hide.carapace", 2, 5)),
|
||||||
|
]
|
@ -0,0 +1,3 @@
|
|||||||
|
[
|
||||||
|
(1.0, ItemQuantity("common.items.crafting_ing.sticky_thread", 2, 5)),
|
||||||
|
]
|
@ -1,4 +1,4 @@
|
|||||||
[
|
[
|
||||||
(1.0, Item("common.items.crafting_ing.hide.rugged_hide")),
|
(1.0, Item("common.items.crafting_ing.hide.animal_hide")),
|
||||||
(1.0, Item("common.items.crafting_ing.animal_misc.icy_fang")),
|
(1.0, ItemQuantity("common.items.crafting_ing.animal_misc.icy_fang", 1, 2)),
|
||||||
]
|
]
|
@ -0,0 +1,4 @@
|
|||||||
|
[
|
||||||
|
(1.0, Item("common.items.crafting_ing.hide.rugged_hide")),
|
||||||
|
(1.0, ItemQuantity("common.items.crafting_ing.animal_misc.icy_fang", 1, 2)),
|
||||||
|
]
|
9
assets/common/loot_tables/dungeon/tier-0/harvester.ron
Normal file
9
assets/common/loot_tables/dungeon/tier-0/harvester.ron
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[
|
||||||
|
// Weapons
|
||||||
|
(5.0, LootTable("common.loot_tables.weapons.tier-3")),
|
||||||
|
// Armor
|
||||||
|
(5.0, LootTable("common.loot_tables.armor.tier-3")),
|
||||||
|
// Misc
|
||||||
|
(3.0, Item("common.items.armor.misc.neck.scratched")),
|
||||||
|
(2.0, Item("common.items.lantern.pumpkin")),
|
||||||
|
]
|
@ -6,5 +6,5 @@
|
|||||||
// Nothing
|
// Nothing
|
||||||
(2.0, Nothing),
|
(2.0, Nothing),
|
||||||
// Placeholder Drop Location
|
// Placeholder Drop Location
|
||||||
(1.0, Item("common.items.crafting_ing.sticky_thread")),
|
(1.0, Item("common.items.crafting_ing.leather.simple_leather")),
|
||||||
]
|
]
|
||||||
|
@ -1233,7 +1233,7 @@
|
|||||||
),
|
),
|
||||||
black_widow: (
|
black_widow: (
|
||||||
keyword: "black_widow",
|
keyword: "black_widow",
|
||||||
generic: "Blackwidow"
|
generic: "Black Widow"
|
||||||
),
|
),
|
||||||
antlion: (
|
antlion: (
|
||||||
keyword: "antlion",
|
keyword: "antlion",
|
||||||
|
@ -74,6 +74,7 @@ const int DRIP = 32;
|
|||||||
const int TORNADO = 33;
|
const int TORNADO = 33;
|
||||||
const int DEATH = 34;
|
const int DEATH = 34;
|
||||||
const int ENERGY_BUFFING = 35;
|
const int ENERGY_BUFFING = 35;
|
||||||
|
const int WEB_STRAND = 36;
|
||||||
|
|
||||||
// meters per second squared (acceleration)
|
// meters per second squared (acceleration)
|
||||||
const float earth_gravity = 9.807;
|
const float earth_gravity = 9.807;
|
||||||
@ -579,6 +580,16 @@ void main() {
|
|||||||
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
|
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case WEB_STRAND:
|
||||||
|
f_reflect = 0.0;
|
||||||
|
perp_axis = normalize(cross(inst_dir, vec3(0.0, 0.0, 1.0)));
|
||||||
|
attr = Attr(
|
||||||
|
inst_dir * percent(),
|
||||||
|
vec3(1.0, 1.0, 50.0),
|
||||||
|
vec4(vec3(2.0), 1),
|
||||||
|
spin_in_axis(perp_axis, asin(inst_dir.z / length(inst_dir)) + PI / 2.0)
|
||||||
|
);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
attr = Attr(
|
attr = Attr(
|
||||||
linear_motion(
|
linear_motion(
|
||||||
|
@ -31,6 +31,7 @@ SpawnEntry (
|
|||||||
(2, (1, 1, "common.entity.wild.peaceful.hirdrasil")),
|
(2, (1, 1, "common.entity.wild.peaceful.hirdrasil")),
|
||||||
(2, (1, 1, "common.entity.wild.peaceful.truffler")),
|
(2, (1, 1, "common.entity.wild.peaceful.truffler")),
|
||||||
(2, (1, 1, "common.entity.wild.peaceful.leaf_beetle")),
|
(2, (1, 1, "common.entity.wild.peaceful.leaf_beetle")),
|
||||||
|
(2, (1, 1, "common.entity.wild.aggressive.weevil")),
|
||||||
],
|
],
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
day_period: [Morning, Noon, Evening],
|
day_period: [Morning, Noon, Evening],
|
||||||
|
@ -10,6 +10,7 @@ SpawnEntry (
|
|||||||
(1, (1, 1, "common.entity.wild.aggressive.deadwood")),
|
(1, (1, 1, "common.entity.wild.aggressive.deadwood")),
|
||||||
(1, (1, 1, "common.entity.wild.aggressive.saber")),
|
(1, (1, 1, "common.entity.wild.aggressive.saber")),
|
||||||
(1, (1, 1, "common.entity.wild.aggressive.weevil")),
|
(1, (1, 1, "common.entity.wild.aggressive.weevil")),
|
||||||
|
(1, (1, 1, "common.entity.wild.peaceful.leaf_beetle")),
|
||||||
],
|
],
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
day_period: [Night, Morning, Noon, Evening],
|
day_period: [Night, Morning, Noon, Evening],
|
||||||
|
@ -9,7 +9,7 @@ SpawnEntry (
|
|||||||
(1, (1, 1, "common.entity.wild.aggressive.icedrake")),
|
(1, (1, 1, "common.entity.wild.aggressive.icedrake")),
|
||||||
(1, (1, 3, "common.entity.wild.aggressive.snow_raptor")),
|
(1, (1, 3, "common.entity.wild.aggressive.snow_raptor")),
|
||||||
(1, (1, 3, "common.entity.wild.aggressive.roshwalr")),
|
(1, (1, 3, "common.entity.wild.aggressive.roshwalr")),
|
||||||
(5, (1, 5, "common.entity.wild.peaceful.penguin")),
|
(5, (5, 20, "common.entity.wild.peaceful.penguin")),
|
||||||
],
|
],
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
day_period: [Night, Morning, Noon, Evening],
|
day_period: [Night, Morning, Noon, Evening],
|
||||||
|
@ -54,4 +54,5 @@ pub enum FrontendSpecifier {
|
|||||||
ClayGolem,
|
ClayGolem,
|
||||||
Bubbles,
|
Bubbles,
|
||||||
Frost,
|
Frost,
|
||||||
|
WebStrand,
|
||||||
}
|
}
|
||||||
|
@ -687,7 +687,7 @@ impl Body {
|
|||||||
biped_large::Species::Tidalwarrior => 1600,
|
biped_large::Species::Tidalwarrior => 1600,
|
||||||
biped_large::Species::Yeti => 1200,
|
biped_large::Species::Yeti => 1200,
|
||||||
biped_large::Species::Minotaur => 3000,
|
biped_large::Species::Minotaur => 3000,
|
||||||
biped_large::Species::Harvester => 500,
|
biped_large::Species::Harvester => 1500,
|
||||||
biped_large::Species::Blueoni => 240,
|
biped_large::Species::Blueoni => 240,
|
||||||
biped_large::Species::Redoni => 240,
|
biped_large::Species::Redoni => 240,
|
||||||
biped_large::Species::Huskbrute => 800,
|
biped_large::Species::Huskbrute => 800,
|
||||||
|
@ -596,19 +596,33 @@ fn default_main_tool(body: &Body) -> Item {
|
|||||||
)),
|
)),
|
||||||
},
|
},
|
||||||
Body::Arthropod(arthropod) => match arthropod.species {
|
Body::Arthropod(arthropod) => match arthropod.species {
|
||||||
arthropod::Species::Hornbeetle
|
arthropod::Species::Hornbeetle | arthropod::Species::Stagbeetle => {
|
||||||
| arthropod::Species::Stagbeetle
|
Some(Item::new_from_asset_expect(
|
||||||
| arthropod::Species::Antlion => Some(Item::new_from_asset_expect(
|
"common.items.npc_weapons.unique.arthropods.hornbeetle",
|
||||||
"common.items.npc_weapons.unique.arthropodcharge",
|
))
|
||||||
|
},
|
||||||
|
arthropod::Species::Cavespider => Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.arthropods.cavespider",
|
||||||
)),
|
)),
|
||||||
arthropod::Species::Cavespider | arthropod::Species::Blackwidow => Some(
|
arthropod::Species::Sandcrawler | arthropod::Species::Mosscrawler => {
|
||||||
Item::new_from_asset_expect("common.items.npc_weapons.unique.arthropodranged"),
|
Some(Item::new_from_asset_expect(
|
||||||
),
|
"common.items.npc_weapons.unique.arthropods.mosscrawler",
|
||||||
arthropod::Species::Weevil | arthropod::Species::Tarantula => Some(
|
))
|
||||||
Item::new_from_asset_expect("common.items.npc_weapons.unique.arthropodleap"),
|
},
|
||||||
|
arthropod::Species::Moltencrawler | arthropod::Species::Weevil => Some(
|
||||||
|
Item::new_from_asset_expect("common.items.npc_weapons.unique.arthropods.weevil"),
|
||||||
),
|
),
|
||||||
|
arthropod::Species::Blackwidow => Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.arthropods.blackwidow",
|
||||||
|
)),
|
||||||
|
arthropod::Species::Tarantula => Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.arthropods.tarantula",
|
||||||
|
)),
|
||||||
|
arthropod::Species::Antlion => Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.arthropods.antlion",
|
||||||
|
)),
|
||||||
_ => Some(Item::new_from_asset_expect(
|
_ => Some(Item::new_from_asset_expect(
|
||||||
"common.items.npc_weapons.unique.arthropodbasic",
|
"common.items.npc_weapons.unique.arthropods.leafbeetle",
|
||||||
)),
|
)),
|
||||||
},
|
},
|
||||||
Body::BipedLarge(biped_large) => match (biped_large.species, biped_large.body_type) {
|
Body::BipedLarge(biped_large) => match (biped_large.species, biped_large.body_type) {
|
||||||
|
@ -238,7 +238,7 @@ impl ProjectileConstructor {
|
|||||||
CombatEffect::Buff(CombatBuff {
|
CombatEffect::Buff(CombatBuff {
|
||||||
kind: BuffKind::Poisoned,
|
kind: BuffKind::Poisoned,
|
||||||
dur_secs: 5.0,
|
dur_secs: 5.0,
|
||||||
strength: CombatBuffStrength::DamageFraction(0.2 * buff_strength),
|
strength: CombatBuffStrength::DamageFraction(0.8 * buff_strength),
|
||||||
chance: 1.0,
|
chance: 1.0,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
@ -1805,10 +1805,10 @@ impl<'a> AgentData<'a> {
|
|||||||
"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" => Tactic::Theropod,
|
||||||
"Arthropod Basic" => Tactic::ArthropodBasic,
|
// Arthropods
|
||||||
"Arthropod Charge" => Tactic::ArthropodCharge,
|
"Antlion" => Tactic::ArthropodMelee,
|
||||||
"Arthropod Ranged" => Tactic::ArthropodRanged,
|
"Tarantula" | "Horn Beetle" => Tactic::ArthropodAmbush,
|
||||||
"Arthropod Leap" => Tactic::ArthropodLeap,
|
"Weevil" | "Black Widow" => Tactic::ArthropodRanged,
|
||||||
"Theropod Charge" => Tactic::CircleCharge {
|
"Theropod Charge" => Tactic::CircleCharge {
|
||||||
radius: 6,
|
radius: 6,
|
||||||
circle_time: 1,
|
circle_time: 1,
|
||||||
@ -2102,21 +2102,14 @@ impl<'a> AgentData<'a> {
|
|||||||
Tactic::Theropod => {
|
Tactic::Theropod => {
|
||||||
self.handle_theropod_attack(agent, controller, &attack_data, tgt_data, read_data)
|
self.handle_theropod_attack(agent, controller, &attack_data, tgt_data, read_data)
|
||||||
},
|
},
|
||||||
Tactic::ArthropodBasic => self.handle_arthropod_basic_attack(
|
Tactic::ArthropodMelee => self.handle_arthropod_melee_attack(
|
||||||
agent,
|
agent,
|
||||||
controller,
|
controller,
|
||||||
&attack_data,
|
&attack_data,
|
||||||
tgt_data,
|
tgt_data,
|
||||||
read_data,
|
read_data,
|
||||||
),
|
),
|
||||||
Tactic::ArthropodCharge => self.handle_arthropod_charge_attack(
|
Tactic::ArthropodAmbush => self.handle_arthropod_ambush_attack(
|
||||||
agent,
|
|
||||||
controller,
|
|
||||||
&attack_data,
|
|
||||||
tgt_data,
|
|
||||||
read_data,
|
|
||||||
),
|
|
||||||
Tactic::ArthropodLeap => self.handle_arthropod_leap_attack(
|
|
||||||
agent,
|
agent,
|
||||||
controller,
|
controller,
|
||||||
&attack_data,
|
&attack_data,
|
||||||
|
@ -10,7 +10,7 @@ use common::{
|
|||||||
InputKind,
|
InputKind,
|
||||||
},
|
},
|
||||||
path::TraversalConfig,
|
path::TraversalConfig,
|
||||||
states::utils::StageSection,
|
states::{self_buff, sprite_summon, utils::StageSection},
|
||||||
terrain::Block,
|
terrain::Block,
|
||||||
util::Dir,
|
util::Dir,
|
||||||
vol::ReadVol,
|
vol::ReadVol,
|
||||||
@ -1861,42 +1861,6 @@ impl<'a> AgentData<'a> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_arthropod_basic_attack(
|
|
||||||
&self,
|
|
||||||
agent: &mut Agent,
|
|
||||||
controller: &mut Controller,
|
|
||||||
attack_data: &AttackData,
|
|
||||||
tgt_data: &TargetData,
|
|
||||||
read_data: &ReadData,
|
|
||||||
) {
|
|
||||||
agent.action_state.timer += read_data.dt.0;
|
|
||||||
if agent.action_state.timer > 7.0
|
|
||||||
&& attack_data.dist_sqrd < (2.0 * attack_data.min_attack_dist).powi(2)
|
|
||||||
{
|
|
||||||
controller.inputs.move_dir = Vec2::zero();
|
|
||||||
controller.push_basic_input(InputKind::Secondary);
|
|
||||||
// Reset timer
|
|
||||||
if matches!(self.char_state, CharacterState::SpriteSummon(c) if matches!(c.stage_section, StageSection::Recover))
|
|
||||||
{
|
|
||||||
agent.action_state.timer = 0.0;
|
|
||||||
}
|
|
||||||
} else if attack_data.angle < 90.0
|
|
||||||
&& attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2)
|
|
||||||
{
|
|
||||||
controller.inputs.move_dir = Vec2::zero();
|
|
||||||
controller.push_basic_input(InputKind::Primary);
|
|
||||||
} else {
|
|
||||||
self.path_toward_target(
|
|
||||||
agent,
|
|
||||||
controller,
|
|
||||||
tgt_data.pos.0,
|
|
||||||
read_data,
|
|
||||||
Path::Partial,
|
|
||||||
None,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn handle_arthropod_ranged_attack(
|
pub fn handle_arthropod_ranged_attack(
|
||||||
&self,
|
&self,
|
||||||
agent: &mut Agent,
|
agent: &mut Agent,
|
||||||
@ -1907,16 +1871,19 @@ impl<'a> AgentData<'a> {
|
|||||||
) {
|
) {
|
||||||
agent.action_state.timer += read_data.dt.0;
|
agent.action_state.timer += read_data.dt.0;
|
||||||
if agent.action_state.timer > 6.0
|
if agent.action_state.timer > 6.0
|
||||||
&& attack_data.dist_sqrd < (2.0 * attack_data.min_attack_dist).powi(2)
|
&& attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2)
|
||||||
{
|
{
|
||||||
controller.inputs.move_dir = Vec2::zero();
|
controller.inputs.move_dir = Vec2::zero();
|
||||||
controller.push_basic_input(InputKind::Secondary);
|
controller.push_basic_input(InputKind::Secondary);
|
||||||
// Reset timer
|
// Reset timer
|
||||||
if matches!(self.char_state, CharacterState::SpriteSummon(c) if matches!(c.stage_section, StageSection::Recover))
|
if matches!(self.char_state,
|
||||||
|
CharacterState::SpriteSummon(sprite_summon::Data { stage_section, .. })
|
||||||
|
| CharacterState::SelfBuff(self_buff::Data { stage_section, .. })
|
||||||
|
if matches!(stage_section, StageSection::Recover))
|
||||||
{
|
{
|
||||||
agent.action_state.timer = 0.0;
|
agent.action_state.timer = 0.0;
|
||||||
}
|
}
|
||||||
} else if attack_data.dist_sqrd < (3.0 * attack_data.min_attack_dist).powi(2)
|
} else if attack_data.dist_sqrd < (2.5 * attack_data.min_attack_dist).powi(2)
|
||||||
&& attack_data.angle < 90.0
|
&& attack_data.angle < 90.0
|
||||||
{
|
{
|
||||||
controller.inputs.move_dir = (tgt_data.pos.0 - self.pos.0)
|
controller.inputs.move_dir = (tgt_data.pos.0 - self.pos.0)
|
||||||
@ -1986,7 +1953,7 @@ impl<'a> AgentData<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_arthropod_leap_attack(
|
pub fn handle_arthropod_ambush_attack(
|
||||||
&self,
|
&self,
|
||||||
agent: &mut Agent,
|
agent: &mut Agent,
|
||||||
controller: &mut Controller,
|
controller: &mut Controller,
|
||||||
@ -2002,18 +1969,21 @@ impl<'a> AgentData<'a> {
|
|||||||
controller.inputs.move_dir = Vec2::zero();
|
controller.inputs.move_dir = Vec2::zero();
|
||||||
controller.push_basic_input(InputKind::Secondary);
|
controller.push_basic_input(InputKind::Secondary);
|
||||||
// Reset timer
|
// Reset timer
|
||||||
if matches!(self.char_state, CharacterState::SpriteSummon(c) if matches!(c.stage_section, StageSection::Recover))
|
if matches!(self.char_state,
|
||||||
|
CharacterState::SpriteSummon(sprite_summon::Data { stage_section, .. })
|
||||||
|
| CharacterState::SelfBuff(self_buff::Data { stage_section, .. })
|
||||||
|
if matches!(stage_section, StageSection::Recover))
|
||||||
{
|
{
|
||||||
agent.action_state.timer = 0.0;
|
agent.action_state.timer = 0.0;
|
||||||
}
|
}
|
||||||
} else if attack_data.angle < 90.0
|
} else if attack_data.angle < 90.0
|
||||||
&& attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2)
|
&& attack_data.dist_sqrd < attack_data.min_attack_dist.powi(2)
|
||||||
{
|
{
|
||||||
controller.inputs.move_dir = Vec2::zero();
|
controller.inputs.move_dir = Vec2::zero();
|
||||||
controller.push_basic_input(InputKind::Primary);
|
controller.push_basic_input(InputKind::Primary);
|
||||||
} else if rng.gen_bool(0.01)
|
} else if rng.gen_bool(0.01)
|
||||||
&& attack_data.angle < 15.0
|
&& attack_data.angle < 60.0
|
||||||
&& attack_data.dist_sqrd < (6.0 * attack_data.min_attack_dist).powi(2)
|
&& attack_data.dist_sqrd > (2.0 * attack_data.min_attack_dist).powi(2)
|
||||||
{
|
{
|
||||||
controller.push_basic_input(InputKind::Ability(0));
|
controller.push_basic_input(InputKind::Ability(0));
|
||||||
} else {
|
} else {
|
||||||
@ -2028,7 +1998,7 @@ impl<'a> AgentData<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_arthropod_charge_attack(
|
pub fn handle_arthropod_melee_attack(
|
||||||
&self,
|
&self,
|
||||||
agent: &mut Agent,
|
agent: &mut Agent,
|
||||||
controller: &mut Controller,
|
controller: &mut Controller,
|
||||||
@ -2041,13 +2011,13 @@ impl<'a> AgentData<'a> {
|
|||||||
{
|
{
|
||||||
// If already charging, keep charging if not in recover
|
// If already charging, keep charging if not in recover
|
||||||
controller.push_basic_input(InputKind::Secondary);
|
controller.push_basic_input(InputKind::Secondary);
|
||||||
} else if attack_data.dist_sqrd > (5.0 * attack_data.min_attack_dist).powi(2) {
|
} else if attack_data.dist_sqrd > (2.5 * attack_data.min_attack_dist).powi(2) {
|
||||||
// Charges at target if they are far enough away
|
// Charges at target if they are far enough away
|
||||||
if attack_data.angle < 60.0 {
|
if attack_data.angle < 60.0 {
|
||||||
controller.push_basic_input(InputKind::Secondary);
|
controller.push_basic_input(InputKind::Secondary);
|
||||||
}
|
}
|
||||||
} else if attack_data.angle < 90.0
|
} else if attack_data.angle < 90.0
|
||||||
&& attack_data.dist_sqrd < (1.5 * attack_data.min_attack_dist).powi(2)
|
&& attack_data.dist_sqrd < attack_data.min_attack_dist.powi(2)
|
||||||
{
|
{
|
||||||
controller.inputs.move_dir = Vec2::zero();
|
controller.inputs.move_dir = Vec2::zero();
|
||||||
controller.push_basic_input(InputKind::Primary);
|
controller.push_basic_input(InputKind::Primary);
|
||||||
|
@ -101,10 +101,9 @@ pub enum Tactic {
|
|||||||
BirdLargeBreathe,
|
BirdLargeBreathe,
|
||||||
BirdLargeFire,
|
BirdLargeFire,
|
||||||
BirdLargeBasic,
|
BirdLargeBasic,
|
||||||
ArthropodCharge,
|
ArthropodMelee,
|
||||||
ArthropodBasic,
|
|
||||||
ArthropodRanged,
|
ArthropodRanged,
|
||||||
ArthropodLeap,
|
ArthropodAmbush,
|
||||||
|
|
||||||
// Specific species tactics
|
// Specific species tactics
|
||||||
Mindflayer,
|
Mindflayer,
|
||||||
|
@ -503,7 +503,8 @@ impl SfxMgr {
|
|||||||
},
|
},
|
||||||
beam::FrontendSpecifier::ClayGolem
|
beam::FrontendSpecifier::ClayGolem
|
||||||
| beam::FrontendSpecifier::Bubbles
|
| beam::FrontendSpecifier::Bubbles
|
||||||
| beam::FrontendSpecifier::Frost => {},
|
| beam::FrontendSpecifier::Frost
|
||||||
|
| beam::FrontendSpecifier::WebStrand => {},
|
||||||
},
|
},
|
||||||
Outcome::BreakBlock { pos, .. } => {
|
Outcome::BreakBlock { pos, .. } => {
|
||||||
let sfx_trigger_item = triggers.get_key_value(&SfxEvent::BreakBlock);
|
let sfx_trigger_item = triggers.get_key_value(&SfxEvent::BreakBlock);
|
||||||
|
@ -86,6 +86,7 @@ pub enum ParticleMode {
|
|||||||
Tornado = 33,
|
Tornado = 33,
|
||||||
Death = 34,
|
Death = 34,
|
||||||
EnergyBuffing = 35,
|
EnergyBuffing = 35,
|
||||||
|
WebStrand = 36,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ParticleMode {
|
impl ParticleMode {
|
||||||
|
@ -842,6 +842,17 @@ impl ParticleMgr {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
beam::FrontendSpecifier::WebStrand => {
|
||||||
|
self.particles.resize_with(self.particles.len() + 1, || {
|
||||||
|
Particle::new_directed(
|
||||||
|
beam.properties.duration,
|
||||||
|
time,
|
||||||
|
ParticleMode::WebStrand,
|
||||||
|
pos.0,
|
||||||
|
pos.0 + *ori.look_dir() * range,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
},
|
||||||
beam::FrontendSpecifier::Bubbles => {
|
beam::FrontendSpecifier::Bubbles => {
|
||||||
let mut rng = thread_rng();
|
let mut rng = thread_rng();
|
||||||
let (from, to) = (Vec3::<f32>::unit_z(), *ori.look_dir());
|
let (from, to) = (Vec3::<f32>::unit_z(), *ori.look_dir());
|
||||||
|
@ -468,11 +468,10 @@ pub fn apply_caves_supplement<'a>(
|
|||||||
_ => "common.entity.wild.aggressive.batfox",
|
_ => "common.entity.wild.aggressive.batfox",
|
||||||
}
|
}
|
||||||
} else if cave_depth < 120.0 {
|
} else if cave_depth < 120.0 {
|
||||||
match dynamic_rng.gen_range(0..6) {
|
match dynamic_rng.gen_range(0..5) {
|
||||||
0 => "common.entity.wild.aggressive.rocksnapper",
|
0 => "common.entity.wild.aggressive.rocksnapper",
|
||||||
1 => "common.entity.wild.aggressive.cave_salamander",
|
1 => "common.entity.wild.aggressive.cave_salamander",
|
||||||
2 => "common.entity.wild.aggressive.cave_spider",
|
2 => "common.entity.wild.aggressive.cave_spider",
|
||||||
3 => "common.entity.wild.aggressive.antlion",
|
|
||||||
4 => "common.entity.wild.peaceful.crawler_molten",
|
4 => "common.entity.wild.peaceful.crawler_molten",
|
||||||
_ => "common.entity.wild.aggressive.asp",
|
_ => "common.entity.wild.aggressive.asp",
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user