mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Agent tactic refactoring
Lower theropods spawns clippy, changelog review response
This commit is contained in:
parent
1cf0aff5ef
commit
aad9734055
@ -56,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Variable dungeon difficulty
|
- Variable dungeon difficulty
|
||||||
- Aurora Borealis (localised entirely within the kitchen)
|
- Aurora Borealis (localised entirely within the kitchen)
|
||||||
- Block-based voxel lighting
|
- Block-based voxel lighting
|
||||||
|
- Animals now have customized attacks and AI
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ ComboMelee(
|
|||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 100,
|
base_damage: 100,
|
||||||
max_damage: 100,
|
max_damage: 100,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -15,9 +15,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 0,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 120,
|
base_damage: 120,
|
||||||
max_damage: 140,
|
max_damage: 120,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 80,
|
base_damage: 80,
|
||||||
max_damage: 110,
|
max_damage: 80,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 170,
|
max_damage: 130,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -13,5 +13,5 @@ DashMelee(
|
|||||||
swing_duration: 100,
|
swing_duration: 100,
|
||||||
recover_duration: 800,
|
recover_duration: 800,
|
||||||
infinite_charge: true,
|
infinite_charge: true,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 100,
|
base_damage: 100,
|
||||||
max_damage: 120,
|
max_damage: 100,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 4.5,
|
range: 4.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 80,
|
base_damage: 80,
|
||||||
max_damage: 110,
|
max_damage: 80,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 170,
|
max_damage: 130,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -13,5 +13,5 @@ DashMelee(
|
|||||||
swing_duration: 100,
|
swing_duration: 100,
|
||||||
recover_duration: 500,
|
recover_duration: 500,
|
||||||
infinite_charge: true,
|
infinite_charge: true,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 100,
|
base_damage: 100,
|
||||||
max_damage: 120,
|
max_damage: 100,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 2.0,
|
knockback: 2.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 170,
|
max_damage: 130,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 2.0,
|
knockback: 2.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 170,
|
max_damage: 130,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 2.0,
|
knockback: 2.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -42,8 +42,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 4,
|
stage: 4,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 170,
|
max_damage: 130,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 8.0,
|
knockback: 8.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -54,9 +54,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -13,6 +13,6 @@ BasicRanged(
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
}),*/
|
}),*/
|
||||||
projectile_gravity: Some(Gravity(5.0)),
|
projectile_gravity: Some(Gravity(5.0)),
|
||||||
projectile_speed: 60.0,
|
projectile_speed: 70.0,
|
||||||
can_continue: true,
|
can_continue: true,
|
||||||
)
|
)
|
@ -4,7 +4,7 @@ ComboMelee(
|
|||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 60,
|
base_damage: 60,
|
||||||
max_damage: 60,
|
max_damage: 60,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -15,9 +15,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 100,
|
base_damage: 100,
|
||||||
max_damage: 120,
|
max_damage: 100,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 120,
|
base_damage: 120,
|
||||||
max_damage: 140,
|
max_damage: 120,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 170,
|
max_damage: 130,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -4,7 +4,7 @@ ComboMelee(
|
|||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 120,
|
base_damage: 120,
|
||||||
max_damage: 120,
|
max_damage: 120,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -15,9 +15,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 120,
|
base_damage: 120,
|
||||||
max_damage: 140,
|
max_damage: 120,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 120,
|
base_damage: 120,
|
||||||
max_damage: 140,
|
max_damage: 120,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 120,
|
base_damage: 120,
|
||||||
max_damage: 140,
|
max_damage: 120,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
DashMelee(
|
DashMelee(
|
||||||
energy_cost: 0,
|
energy_cost: 0,
|
||||||
base_damage: 150,
|
base_damage: 150,
|
||||||
max_damage: 150,
|
max_damage: 190,
|
||||||
base_knockback: 8.0,
|
base_knockback: 8.0,
|
||||||
max_knockback: 25.0,
|
max_knockback: 25.0,
|
||||||
range: 4.0,
|
range: 4.0,
|
||||||
@ -13,5 +13,5 @@ DashMelee(
|
|||||||
swing_duration: 100,
|
swing_duration: 100,
|
||||||
recover_duration: 1100,
|
recover_duration: 1100,
|
||||||
infinite_charge: true,
|
infinite_charge: true,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 100,
|
base_damage: 100,
|
||||||
max_damage: 120,
|
max_damage: 100,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 80,
|
base_damage: 80,
|
||||||
max_damage: 110,
|
max_damage: 80,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -28,9 +28,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 100,
|
base_damage: 100,
|
||||||
max_damage: 120,
|
max_damage: 100,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 8.0,
|
knockback: 8.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 80,
|
base_damage: 80,
|
||||||
max_damage: 110,
|
max_damage: 80,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 8.0,
|
knockback: 8.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -28,9 +28,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
DashMelee(
|
DashMelee(
|
||||||
energy_cost: 0,
|
energy_cost: 0,
|
||||||
base_damage: 130,
|
base_damage: 130,
|
||||||
max_damage: 130,
|
max_damage: 150,
|
||||||
base_knockback: 8.0,
|
base_knockback: 8.0,
|
||||||
max_knockback: 15.0,
|
max_knockback: 15.0,
|
||||||
range: 2.0,
|
range: 2.0,
|
||||||
@ -13,5 +13,5 @@ DashMelee(
|
|||||||
swing_duration: 100,
|
swing_duration: 100,
|
||||||
recover_duration: 500,
|
recover_duration: 500,
|
||||||
infinite_charge: true,
|
infinite_charge: true,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 150,
|
base_damage: 150,
|
||||||
max_damage: 170,
|
max_damage: 150,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 150,
|
base_damage: 150,
|
||||||
max_damage: 170,
|
max_damage: 150,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 150,
|
base_damage: 150,
|
||||||
max_damage: 170,
|
max_damage: 150,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 0,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -4,7 +4,7 @@ ComboMelee(
|
|||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 30,
|
base_damage: 30,
|
||||||
max_damage: 30,
|
max_damage: 30,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 3.5,
|
range: 3.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -15,9 +15,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -4,7 +4,7 @@ ComboMelee(
|
|||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 150,
|
base_damage: 150,
|
||||||
max_damage: 150,
|
max_damage: 150,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 7.5,
|
range: 7.5,
|
||||||
angle: 60.0,
|
angle: 60.0,
|
||||||
@ -15,9 +15,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 170,
|
base_damage: 170,
|
||||||
max_damage: 190,
|
max_damage: 170,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 7.5,
|
range: 7.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 190,
|
base_damage: 190,
|
||||||
max_damage: 210,
|
max_damage: 190,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 5.5,
|
range: 5.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 230,
|
base_damage: 230,
|
||||||
max_damage: 250,
|
max_damage: 230,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 5.5,
|
range: 5.5,
|
||||||
angle: 30.0,
|
angle: 30.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -4,7 +4,7 @@ ComboMelee(
|
|||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 150,
|
base_damage: 150,
|
||||||
max_damage: 150,
|
max_damage: 150,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 5.0,
|
knockback: 5.0,
|
||||||
range: 5.5,
|
range: 5.5,
|
||||||
angle: 5.0,
|
angle: 5.0,
|
||||||
@ -15,9 +15,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
@ -3,8 +3,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 1,
|
stage: 1,
|
||||||
base_damage: 170,
|
base_damage: 170,
|
||||||
max_damage: 190,
|
max_damage: 170,
|
||||||
damage_increase: 10,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 4.5,
|
range: 4.5,
|
||||||
angle: 5.0,
|
angle: 5.0,
|
||||||
@ -16,8 +16,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 2,
|
stage: 2,
|
||||||
base_damage: 190,
|
base_damage: 190,
|
||||||
max_damage: 210,
|
max_damage: 190,
|
||||||
damage_increase: 15,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 4.0,
|
range: 4.0,
|
||||||
angle: 10.0,
|
angle: 10.0,
|
||||||
@ -29,8 +29,8 @@ ComboMelee(
|
|||||||
(
|
(
|
||||||
stage: 3,
|
stage: 3,
|
||||||
base_damage: 230,
|
base_damage: 230,
|
||||||
max_damage: 250,
|
max_damage: 230,
|
||||||
damage_increase: 20,
|
damage_increase: 0,
|
||||||
knockback: 10.0,
|
knockback: 10.0,
|
||||||
range: 4.0,
|
range: 4.0,
|
||||||
angle: 10.0,
|
angle: 10.0,
|
||||||
@ -41,9 +41,9 @@ ComboMelee(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
initial_energy_gain: 0,
|
initial_energy_gain: 0,
|
||||||
max_energy_gain: 100,
|
max_energy_gain: 0,
|
||||||
energy_increase: 20,
|
energy_increase: 0,
|
||||||
speed_increase: 0.05,
|
speed_increase: 0.0,
|
||||||
max_speed_increase: 1.8,
|
max_speed_increase: 1.0,
|
||||||
is_interruptible: true,
|
is_interruptible: false,
|
||||||
)
|
)
|
||||||
|
@ -168,13 +168,11 @@ impl LoadoutBuilder {
|
|||||||
));
|
));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species {
|
Body::QuadrupedSmall(_) => {
|
||||||
_ => {
|
|
||||||
main_tool = Some(Item::new_from_asset_expect(
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
"common.items.npc_weapons.unique.quadsmallbasic",
|
"common.items.npc_weapons.unique.quadsmallbasic",
|
||||||
));
|
));
|
||||||
},
|
},
|
||||||
},
|
|
||||||
Body::Theropod(theropod) => match theropod.species {
|
Body::Theropod(theropod) => match theropod.species {
|
||||||
theropod::Species::Sandraptor
|
theropod::Species::Sandraptor
|
||||||
| theropod::Species::Snowraptor
|
| theropod::Species::Snowraptor
|
||||||
|
@ -212,7 +212,7 @@ pub fn handle_forced_movement(
|
|||||||
// Multiply decreasing amount linearly over time (with average of 1)
|
// Multiply decreasing amount linearly over time (with average of 1)
|
||||||
* 2.0 * progress
|
* 2.0 * progress
|
||||||
// Apply inputted movement directions with some efficiency
|
// Apply inputted movement directions with some efficiency
|
||||||
+ (data.inputs.look_dir.try_normalized().unwrap_or_default()/* + update.vel.0.xy()*/)
|
+ (data.inputs.look_dir.try_normalized().unwrap_or_default())
|
||||||
.try_normalized()
|
.try_normalized()
|
||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
// Multiply by forward leap strength
|
// Multiply by forward leap strength
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -25,12 +25,19 @@ impl Animation for DashAnimation {
|
|||||||
) -> Self::Skeleton {
|
) -> Self::Skeleton {
|
||||||
let mut next = (*skeleton).clone();
|
let mut next = (*skeleton).clone();
|
||||||
|
|
||||||
let (movement1base, chargemovementbase, movement2base, movement3) = match stage_section {
|
let (movement1base, chargemovementbase, movement2base, movement3, legtell) =
|
||||||
Some(StageSection::Buildup) => ((anim_time as f32).powf(0.5), 0.0, 0.0, 0.0),
|
match stage_section {
|
||||||
Some(StageSection::Charge) => (1.0, 1.0, 0.0, 0.0),
|
Some(StageSection::Buildup) => (
|
||||||
Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(4.0), 0.0),
|
(anim_time as f32).powf(0.5),
|
||||||
Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32),
|
0.0,
|
||||||
_ => (0.0, 0.0, 0.0, 0.0),
|
0.0,
|
||||||
|
0.0,
|
||||||
|
(anim_time as f32),
|
||||||
|
),
|
||||||
|
Some(StageSection::Charge) => (1.0, 1.0, 0.0, 0.0, 0.0),
|
||||||
|
Some(StageSection::Swing) => (1.0, 1.0, (anim_time as f32).powf(4.0), 0.0, 1.0),
|
||||||
|
Some(StageSection::Recover) => (1.0, 1.0, 1.0, anim_time as f32, 1.0),
|
||||||
|
_ => (0.0, 0.0, 0.0, 0.0, 0.0),
|
||||||
};
|
};
|
||||||
let pullback = 1.0 - movement3;
|
let pullback = 1.0 - movement3;
|
||||||
let subtract = global_time - timer;
|
let subtract = global_time - timer;
|
||||||
@ -43,6 +50,8 @@ impl Animation for DashAnimation {
|
|||||||
//let movement2 = mirror * movement2base * pullback;
|
//let movement2 = mirror * movement2base * pullback;
|
||||||
let movement1abs = movement1base * pullback;
|
let movement1abs = movement1base * pullback;
|
||||||
let movement2abs = movement2base * pullback;
|
let movement2abs = movement2base * pullback;
|
||||||
|
let legtwitch = (legtell * 6.0).sin() * pullback;
|
||||||
|
let legswing = legtell * pullback;
|
||||||
let short = (((1.0)
|
let short = (((1.0)
|
||||||
/ (0.72
|
/ (0.72
|
||||||
+ 0.28 * ((anim_time as f32 * 16.0 as f32 + PI * 0.25).sin()).powf(2.0 as f32)))
|
+ 0.28 * ((anim_time as f32 * 16.0 as f32 + PI * 0.25).sin()).powf(2.0 as f32)))
|
||||||
@ -71,35 +80,43 @@ impl Animation for DashAnimation {
|
|||||||
next.tail.orientation = Quaternion::rotation_x(
|
next.tail.orientation = Quaternion::rotation_x(
|
||||||
0.15 + movement1abs * -0.4 + movement2abs * 0.2 + chargemovementbase * 0.2,
|
0.15 + movement1abs * -0.4 + movement2abs * 0.2 + chargemovementbase * 0.2,
|
||||||
) * Quaternion::rotation_z(shortalt * 0.15);
|
) * Quaternion::rotation_z(shortalt * 0.15);
|
||||||
if let Some(stage_section) = stage_section {
|
if legtell > 0.0 {
|
||||||
match stage_section {
|
if mirror.is_sign_positive() {
|
||||||
StageSection::Buildup => {
|
next.leg_fl.orientation = Quaternion::rotation_x(legswing * 1.1);
|
||||||
if mirror == 1.0 {
|
|
||||||
next.leg_fl.orientation = Quaternion::rotation_x(movement1abs * 0.8);
|
|
||||||
|
|
||||||
next.foot_fl.orientation =
|
next.foot_fl.orientation =
|
||||||
Quaternion::rotation_x(movement1abs * -0.8 + twitch1 * 0.5);
|
Quaternion::rotation_x(legswing * -1.1 + legtwitch * 0.5);
|
||||||
next.leg_bl.orientation = Quaternion::rotation_x(movement1abs * 0.8);
|
next.leg_bl.orientation = Quaternion::rotation_x(legswing * 1.1);
|
||||||
|
|
||||||
next.foot_bl.orientation =
|
next.foot_bl.orientation =
|
||||||
Quaternion::rotation_x(movement1abs * -0.8 + twitch1 * 0.5);
|
Quaternion::rotation_x(legswing * -1.1 + legtwitch * 0.5);
|
||||||
|
|
||||||
|
next.leg_fr.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
|
||||||
|
next.foot_fr.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
|
||||||
|
next.leg_br.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
|
||||||
|
next.foot_br.orientation = Quaternion::rotation_x(0.0);
|
||||||
} else {
|
} else {
|
||||||
next.leg_fr.orientation = Quaternion::rotation_x(movement1abs * 0.8);
|
next.leg_fl.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
|
||||||
|
next.foot_fl.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
next.leg_bl.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
|
||||||
|
next.foot_bl.orientation = Quaternion::rotation_x(0.0);
|
||||||
|
|
||||||
|
next.leg_fr.orientation = Quaternion::rotation_x(legswing * 1.1);
|
||||||
|
|
||||||
next.foot_fr.orientation =
|
next.foot_fr.orientation =
|
||||||
Quaternion::rotation_x(movement1abs * -0.8 + twitch1 * 0.5);
|
Quaternion::rotation_x(legswing * -1.1 + legtwitch * 0.5);
|
||||||
|
|
||||||
next.leg_br.orientation = Quaternion::rotation_x(movement1abs * 0.8);
|
next.leg_br.orientation = Quaternion::rotation_x(legswing * 1.1);
|
||||||
|
|
||||||
next.foot_br.orientation =
|
next.foot_br.orientation =
|
||||||
Quaternion::rotation_x(movement1abs * -0.8 + twitch1 * 0.5);
|
Quaternion::rotation_x(legswing * -1.1 + legtwitch * 0.5);
|
||||||
}
|
}
|
||||||
},
|
};
|
||||||
_ => {},
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1439,8 +1439,8 @@ impl FigureMgr {
|
|||||||
},
|
},
|
||||||
_ => 0.0,
|
_ => 0.0,
|
||||||
};
|
};
|
||||||
match s.stage {
|
{
|
||||||
_ => anim::quadruped_small::AlphaAnimation::update_skeleton(
|
anim::quadruped_small::AlphaAnimation::update_skeleton(
|
||||||
&target_base,
|
&target_base,
|
||||||
(
|
(
|
||||||
vel.0.magnitude(),
|
vel.0.magnitude(),
|
||||||
@ -1451,7 +1451,7 @@ impl FigureMgr {
|
|||||||
stage_progress,
|
stage_progress,
|
||||||
&mut state_animation_rate,
|
&mut state_animation_rate,
|
||||||
skeleton_attr,
|
skeleton_attr,
|
||||||
),
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
CharacterState::Sit { .. } => {
|
CharacterState::Sit { .. } => {
|
||||||
|
@ -37,11 +37,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let scatter: &[Entry<R>] = &[
|
let scatter: &[Entry<R>] = &[
|
||||||
// Tundra pack ennemies
|
// Tundra snow pack ennemies
|
||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 4) {
|
.with_body(match rng.gen_range(0, 3) {
|
||||||
0 => quadruped_medium::Body::random_with(
|
0 => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Frostfang,
|
&quadruped_medium::Species::Frostfang,
|
||||||
@ -50,11 +50,31 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
1 => {
|
1 => {
|
||||||
theropod::Body::random_with(rng, &theropod::Species::Snowraptor).into()
|
theropod::Body::random_with(rng, &theropod::Species::Snowraptor).into()
|
||||||
},
|
},
|
||||||
2 => quadruped_medium::Body::random_with(
|
_ => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Roshwalr,
|
&quadruped_medium::Species::Roshwalr,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
|
})
|
||||||
|
.with_alignment(Alignment::Enemy)
|
||||||
|
},
|
||||||
|
group_size: 1..4,
|
||||||
|
is_underwater: false,
|
||||||
|
get_density: |c, col| {
|
||||||
|
close(c.temp, CONFIG.snow_temp, 0.3)
|
||||||
|
* BASE_DENSITY
|
||||||
|
* col.snow_cover as i32 as f32
|
||||||
|
* 1.0
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// Tundra solitary ennemies
|
||||||
|
Entry {
|
||||||
|
make_entity: |pos, rng| {
|
||||||
|
EntityInfo::at(pos)
|
||||||
|
.with_body(match rng.gen_range(0, 2) {
|
||||||
|
0 => {
|
||||||
|
theropod::Body::random_with(rng, &theropod::Species::Snowraptor).into()
|
||||||
|
},
|
||||||
_ => quadruped_medium::Body::random_with(
|
_ => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Grolgar,
|
&quadruped_medium::Species::Grolgar,
|
||||||
@ -63,11 +83,24 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
})
|
})
|
||||||
.with_alignment(Alignment::Enemy)
|
.with_alignment(Alignment::Enemy)
|
||||||
},
|
},
|
||||||
group_size: 1..4,
|
group_size: 1..2,
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
get_density: |c, _col| close(c.temp, CONFIG.snow_temp, 0.3) * BASE_DENSITY * 1.0,
|
get_density: |c, _col| close(c.temp, CONFIG.snow_temp, 0.3) * BASE_DENSITY * 1.0,
|
||||||
},
|
},
|
||||||
// Tundra rare solitary ennemies
|
// Tundra rare solitary ennemies
|
||||||
|
Entry {
|
||||||
|
make_entity: |pos, rng| {
|
||||||
|
EntityInfo::at(pos)
|
||||||
|
.with_body(
|
||||||
|
theropod::Body::random_with(rng, &theropod::Species::Snowraptor).into(),
|
||||||
|
)
|
||||||
|
.with_alignment(Alignment::Enemy)
|
||||||
|
},
|
||||||
|
group_size: 1..2,
|
||||||
|
is_underwater: false,
|
||||||
|
get_density: |c, _col| close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * 0.5,
|
||||||
|
},
|
||||||
|
// Tundra rare solitary ennemies
|
||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
@ -142,7 +175,23 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
get_density: |c, _col| close(c.temp, CONFIG.snow_temp + 0.2, 0.6) * BASE_DENSITY * 5.0,
|
get_density: |c, _col| close(c.temp, CONFIG.snow_temp + 0.2, 0.6) * BASE_DENSITY * 5.0,
|
||||||
},
|
},
|
||||||
// Temperate pack ennemies
|
// Tundra rock solitary ennemies
|
||||||
|
Entry {
|
||||||
|
make_entity: |pos, rng| {
|
||||||
|
EntityInfo::at(pos)
|
||||||
|
.with_body(
|
||||||
|
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Rocksnapper)
|
||||||
|
.into(),
|
||||||
|
)
|
||||||
|
.with_alignment(Alignment::Enemy)
|
||||||
|
},
|
||||||
|
group_size: 1..2,
|
||||||
|
is_underwater: false,
|
||||||
|
get_density: |c, col| {
|
||||||
|
close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * col.rock * 1.0
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// Temperate solitary ennemies
|
||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
@ -165,7 +214,9 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
},
|
},
|
||||||
group_size: 1..2,
|
group_size: 1..2,
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
get_density: |c, _col| close(c.temp, CONFIG.temperate_temp, 0.35) * BASE_DENSITY * 1.0,
|
get_density: |c, col| {
|
||||||
|
close(c.temp, CONFIG.temperate_temp, 0.35) * col.tree_density * BASE_DENSITY * 1.0
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// Temperate pack wild
|
// Temperate pack wild
|
||||||
Entry {
|
Entry {
|
||||||
@ -237,7 +288,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 15) {
|
.with_body(match rng.gen_range(0, 13) {
|
||||||
0 => quadruped_small::Body {
|
0 => quadruped_small::Body {
|
||||||
species: quadruped_small::Species::Fox,
|
species: quadruped_small::Species::Fox,
|
||||||
body_type: quadruped_small::BodyType::Male,
|
body_type: quadruped_small::BodyType::Male,
|
||||||
@ -255,47 +306,40 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
.into(),
|
.into(),
|
||||||
4 => quadruped_small::Body::random_with(
|
4 => quadruped_small::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_small::Species::Porcupine,
|
&quadruped_small::Species::Skunk,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
5 => quadruped_small::Body::random_with(
|
5 => quadruped_small::Body::random_with(
|
||||||
rng,
|
|
||||||
&quadruped_small::Species::Skunk,
|
|
||||||
)
|
|
||||||
.into(),
|
|
||||||
6 => quadruped_small::Body::random_with(
|
|
||||||
rng,
|
rng,
|
||||||
&quadruped_small::Species::Raccoon,
|
&quadruped_small::Species::Raccoon,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
7 => bird_medium::Body::random_with(rng, &bird_medium::Species::Cockatrice)
|
6 => quadruped_medium::Body::random_with(
|
||||||
.into(),
|
|
||||||
8 => quadruped_medium::Body::random_with(
|
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Catoblepas,
|
&quadruped_medium::Species::Catoblepas,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
9 => quadruped_small::Body::random_with(
|
7 => quadruped_small::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_small::Species::Turtle,
|
&quadruped_small::Species::Turtle,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
10 => quadruped_medium::Body::random_with(
|
8 => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Hirdrasil,
|
&quadruped_medium::Species::Hirdrasil,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
11 => quadruped_medium::Body::random_with(
|
9 => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Kelpie,
|
&quadruped_medium::Species::Kelpie,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
12 => quadruped_small::Body::random_with(
|
10 => quadruped_small::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_small::Species::Truffler,
|
&quadruped_small::Species::Truffler,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
13 => quadruped_medium::Body::random_with(
|
11 => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Donkey,
|
&quadruped_medium::Species::Donkey,
|
||||||
)
|
)
|
||||||
@ -321,15 +365,13 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 4) {
|
.with_body(match rng.gen_range(0, 3) {
|
||||||
0 => {
|
0 => {
|
||||||
biped_large::Body::random_with(rng, &biped_large::Species::Ogre).into()
|
biped_large::Body::random_with(rng, &biped_large::Species::Ogre).into()
|
||||||
},
|
},
|
||||||
1 => {
|
1 => {
|
||||||
biped_large::Body::random_with(rng, &biped_large::Species::Troll).into()
|
biped_large::Body::random_with(rng, &biped_large::Species::Troll).into()
|
||||||
},
|
},
|
||||||
2 => biped_large::Body::random_with(rng, &biped_large::Species::Dullahan)
|
|
||||||
.into(),
|
|
||||||
_ => biped_large::Body::random_with(rng, &biped_large::Species::Cyclops)
|
_ => biped_large::Body::random_with(rng, &biped_large::Species::Cyclops)
|
||||||
.into(),
|
.into(),
|
||||||
})
|
})
|
||||||
@ -337,7 +379,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
},
|
},
|
||||||
group_size: 1..2,
|
group_size: 1..2,
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
get_density: |c, _col| close(c.temp, CONFIG.temperate_temp, 0.8) * BASE_DENSITY * 0.1,
|
get_density: |c, _col| close(c.temp, CONFIG.temperate_temp, 0.8) * BASE_DENSITY * 0.08,
|
||||||
},
|
},
|
||||||
// Temperate river wildlife
|
// Temperate river wildlife
|
||||||
Entry {
|
Entry {
|
||||||
@ -365,7 +407,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
get_density: |_c, col| {
|
get_density: |_c, col| {
|
||||||
close(col.temp, CONFIG.temperate_temp, 0.6)
|
close(col.temp, CONFIG.temperate_temp, 0.6)
|
||||||
* if col.water_dist.map(|d| d < 10.0).unwrap_or(false) {
|
* if col.water_dist.map(|d| d < 10.0).unwrap_or(false) {
|
||||||
0.003
|
0.001
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
}
|
}
|
||||||
@ -415,22 +457,16 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 4) {
|
.with_body(match rng.gen_range(0, 2) {
|
||||||
0 => {
|
0 => {
|
||||||
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Maneater)
|
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Maneater)
|
||||||
.into()
|
.into()
|
||||||
},
|
},
|
||||||
1 => quadruped_medium::Body::random_with(
|
_ => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Tiger,
|
&quadruped_medium::Species::Tiger,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
2 => theropod::Body::random_with(rng, &theropod::Species::Odonto).into(),
|
|
||||||
_ => quadruped_low::Body::random_with(
|
|
||||||
rng,
|
|
||||||
&quadruped_low::Species::Rocksnapper,
|
|
||||||
)
|
|
||||||
.into(),
|
|
||||||
})
|
})
|
||||||
.with_alignment(Alignment::Enemy)
|
.with_alignment(Alignment::Enemy)
|
||||||
},
|
},
|
||||||
@ -440,20 +476,50 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
|
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
|
||||||
* close(c.humidity, CONFIG.jungle_hum, 0.3)
|
* close(c.humidity, CONFIG.jungle_hum, 0.3)
|
||||||
* BASE_DENSITY
|
* BASE_DENSITY
|
||||||
* 4.0
|
* 3.0
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// Jungle rare solitary wild
|
||||||
|
Entry {
|
||||||
|
make_entity: |pos, rng| {
|
||||||
|
EntityInfo::at(pos)
|
||||||
|
.with_body(match rng.gen_range(0, 4) {
|
||||||
|
0 => theropod::Body::random_with(rng, &theropod::Species::Odonto).into(),
|
||||||
|
1 => {
|
||||||
|
biped_large::Body::random_with(rng, &biped_large::Species::Mightysaurok)
|
||||||
|
.into()
|
||||||
|
},
|
||||||
|
2 => {
|
||||||
|
biped_large::Body::random_with(rng, &biped_large::Species::Occultsaurok)
|
||||||
|
.into()
|
||||||
|
},
|
||||||
|
_ => biped_large::Body::random_with(rng, &biped_large::Species::Slysaurok)
|
||||||
|
.into(),
|
||||||
|
})
|
||||||
|
.with_alignment(Alignment::Enemy)
|
||||||
|
},
|
||||||
|
group_size: 1..2,
|
||||||
|
is_underwater: false,
|
||||||
|
get_density: |c, _col| {
|
||||||
|
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
|
||||||
|
* close(c.humidity, CONFIG.jungle_hum, 0.3)
|
||||||
|
* BASE_DENSITY
|
||||||
|
* 1.0
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// Jungle solitary wild
|
// Jungle solitary wild
|
||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 3) {
|
.with_body(match rng.gen_range(0, 4) {
|
||||||
0 => bird_medium::Body::random_with(rng, &bird_medium::Species::Parrot)
|
0 => bird_medium::Body::random_with(rng, &bird_medium::Species::Parrot)
|
||||||
.into(),
|
.into(),
|
||||||
1 => {
|
1 => {
|
||||||
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Monitor)
|
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Monitor)
|
||||||
.into()
|
.into()
|
||||||
},
|
},
|
||||||
|
2 => bird_medium::Body::random_with(rng, &bird_medium::Species::Cockatrice)
|
||||||
|
.into(),
|
||||||
_ => {
|
_ => {
|
||||||
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Tortoise)
|
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Tortoise)
|
||||||
.into()
|
.into()
|
||||||
@ -474,19 +540,10 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 2) {
|
.with_body(
|
||||||
// WE GROW 'EM BIG 'ERE
|
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Alligator)
|
||||||
0 => quadruped_low::Body::random_with(
|
|
||||||
rng,
|
|
||||||
&quadruped_low::Species::Crocodile,
|
|
||||||
)
|
|
||||||
.into(),
|
.into(),
|
||||||
_ => quadruped_low::Body::random_with(
|
|
||||||
rng,
|
|
||||||
&quadruped_low::Species::Alligator,
|
|
||||||
)
|
)
|
||||||
.into(),
|
|
||||||
})
|
|
||||||
.with_alignment(Alignment::Enemy)
|
.with_alignment(Alignment::Enemy)
|
||||||
},
|
},
|
||||||
group_size: 1..3,
|
group_size: 1..3,
|
||||||
@ -494,7 +551,7 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
get_density: |_c, col| {
|
get_density: |_c, col| {
|
||||||
close(col.temp, CONFIG.tropical_temp + 0.2, 0.5)
|
close(col.temp, CONFIG.tropical_temp + 0.2, 0.5)
|
||||||
* if col.water_dist.map(|d| d < 10.0).unwrap_or(false) {
|
* if col.water_dist.map(|d| d < 10.0).unwrap_or(false) {
|
||||||
0.0002
|
0.0001
|
||||||
} else {
|
} else {
|
||||||
0.0
|
0.0
|
||||||
}
|
}
|
||||||
@ -564,58 +621,42 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(
|
.with_body(match rng.gen_range(0, 2) {
|
||||||
quadruped_medium::Body::random_with(
|
0 => quadruped_medium::Body::random_with(
|
||||||
|
rng,
|
||||||
|
&quadruped_medium::Species::Zebra,
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
|
_ => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Antelope,
|
&quadruped_medium::Species::Antelope,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
)
|
})
|
||||||
.with_alignment(Alignment::Wild)
|
.with_alignment(Alignment::Wild)
|
||||||
},
|
},
|
||||||
group_size: 3..8,
|
group_size: 3..7,
|
||||||
is_underwater: false,
|
is_underwater: false,
|
||||||
get_density: |c, _col| {
|
get_density: |c, _col| {
|
||||||
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
|
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
|
||||||
* close(c.humidity, CONFIG.desert_hum, 0.4)
|
* close(c.humidity, CONFIG.desert_hum, 0.4)
|
||||||
* BASE_DENSITY
|
* BASE_DENSITY
|
||||||
* 1.0
|
* 0.8
|
||||||
},
|
|
||||||
},
|
|
||||||
// Desert pack enemy
|
|
||||||
Entry {
|
|
||||||
make_entity: |pos, rng| {
|
|
||||||
EntityInfo::at(pos)
|
|
||||||
.with_body(
|
|
||||||
theropod::Body::random_with(rng, &theropod::Species::Sandraptor).into(),
|
|
||||||
)
|
|
||||||
.with_alignment(Alignment::Enemy)
|
|
||||||
},
|
|
||||||
group_size: 3..5,
|
|
||||||
is_underwater: false,
|
|
||||||
get_density: |c, _col| {
|
|
||||||
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
|
|
||||||
* close(c.humidity, CONFIG.desert_hum, 0.4)
|
|
||||||
* BASE_DENSITY
|
|
||||||
* 1.0
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// Desert solitary enemies
|
// Desert solitary enemies
|
||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
EntityInfo::at(pos)
|
EntityInfo::at(pos)
|
||||||
.with_body(match rng.gen_range(0, 5) {
|
.with_body(match rng.gen_range(0, 2) {
|
||||||
0 => quadruped_medium::Body::random_with(
|
0 => quadruped_medium::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_medium::Species::Bonerattler,
|
&quadruped_medium::Species::Bonerattler,
|
||||||
)
|
)
|
||||||
.into(),
|
.into(),
|
||||||
2 => theropod::Body::random_with(rng, &theropod::Species::Archaeos).into(),
|
1 => {
|
||||||
3 => quadruped_low::Body::random_with(
|
theropod::Body::random_with(rng, &theropod::Species::Sandraptor).into()
|
||||||
rng,
|
},
|
||||||
&quadruped_low::Species::Lavadrake,
|
|
||||||
)
|
|
||||||
.into(),
|
|
||||||
_ => quadruped_low::Body::random_with(
|
_ => quadruped_low::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_low::Species::Sandshark,
|
&quadruped_low::Species::Sandshark,
|
||||||
@ -633,6 +674,50 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
* 1.5
|
* 1.5
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
// Desert rare solitary enemies
|
||||||
|
Entry {
|
||||||
|
make_entity: |pos, rng| {
|
||||||
|
EntityInfo::at(pos)
|
||||||
|
.with_body(match rng.gen_range(0, 2) {
|
||||||
|
0 => quadruped_low::Body::random_with(
|
||||||
|
rng,
|
||||||
|
&quadruped_low::Species::Lavadrake,
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
|
_ => theropod::Body::random_with(rng, &theropod::Species::Archaeos).into(),
|
||||||
|
})
|
||||||
|
.with_alignment(Alignment::Enemy)
|
||||||
|
},
|
||||||
|
group_size: 1..2,
|
||||||
|
is_underwater: false,
|
||||||
|
get_density: |c, _col| {
|
||||||
|
close(c.temp, CONFIG.desert_temp + 0.2, 0.3)
|
||||||
|
* close(c.humidity, CONFIG.desert_hum, 0.5)
|
||||||
|
* BASE_DENSITY
|
||||||
|
* 0.2
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// Desert river solitary wild
|
||||||
|
Entry {
|
||||||
|
make_entity: |pos, rng| {
|
||||||
|
EntityInfo::at(pos)
|
||||||
|
.with_body(
|
||||||
|
quadruped_low::Body::random_with(rng, &quadruped_low::Species::Crocodile)
|
||||||
|
.into(),
|
||||||
|
)
|
||||||
|
.with_alignment(Alignment::Enemy)
|
||||||
|
},
|
||||||
|
group_size: 1..3,
|
||||||
|
is_underwater: false,
|
||||||
|
get_density: |_c, col| {
|
||||||
|
close(col.temp, CONFIG.desert_temp + 0.2, 0.3)
|
||||||
|
* if col.water_dist.map(|d| d < 10.0).unwrap_or(false) {
|
||||||
|
0.0001
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
// Desert solitary wild
|
// Desert solitary wild
|
||||||
Entry {
|
Entry {
|
||||||
make_entity: |pos, rng| {
|
make_entity: |pos, rng| {
|
||||||
@ -657,6 +742,11 @@ pub fn apply_wildlife_supplement<'a, R: Rng>(
|
|||||||
body_type: quadruped_low::BodyType::Male,
|
body_type: quadruped_low::BodyType::Male,
|
||||||
}
|
}
|
||||||
.into(),
|
.into(),
|
||||||
|
4 => quadruped_small::Body::random_with(
|
||||||
|
rng,
|
||||||
|
&quadruped_small::Species::Porcupine,
|
||||||
|
)
|
||||||
|
.into(),
|
||||||
_ => quadruped_small::Body::random_with(
|
_ => quadruped_small::Body::random_with(
|
||||||
rng,
|
rng,
|
||||||
&quadruped_small::Species::Gecko,
|
&quadruped_small::Species::Gecko,
|
||||||
|
Loading…
Reference in New Issue
Block a user