mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Initial turret implementation
This commit is contained in:
parent
3cb6a5592d
commit
775224983b
15
assets/common/abilities/unique/turret/basic.ron
Normal file
15
assets/common/abilities/unique/turret/basic.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
BasicRanged(
|
||||||
|
energy_cost: 0,
|
||||||
|
buildup_duration: 500,
|
||||||
|
recover_duration: 300,
|
||||||
|
projectile: Arrow(
|
||||||
|
damage: 200.0,
|
||||||
|
knockback: 5.0,
|
||||||
|
energy_regen: 100,
|
||||||
|
),
|
||||||
|
projectile_body: Object(ArrowTurret),
|
||||||
|
projectile_light: None,
|
||||||
|
projectile_gravity: Some(Gravity(0.1)),
|
||||||
|
projectile_speed: 100.0,
|
||||||
|
can_continue: true,
|
||||||
|
)
|
@ -132,6 +132,11 @@
|
|||||||
secondary: "common.abilities.unique.theropodbird.triplestrike",
|
secondary: "common.abilities.unique.theropodbird.triplestrike",
|
||||||
abilities: [],
|
abilities: [],
|
||||||
),
|
),
|
||||||
|
Unique(Turret): (
|
||||||
|
primary: "common.abilities.unique.turret.basic",
|
||||||
|
secondary: "common.abilities.unique.turret.basic",
|
||||||
|
skills: [],
|
||||||
|
),
|
||||||
Debug: (
|
Debug: (
|
||||||
primary: "common.abilities.debug.forwardboost",
|
primary: "common.abilities.debug.forwardboost",
|
||||||
secondary: "common.abilities.debug.upboost",
|
secondary: "common.abilities.debug.upboost",
|
||||||
|
15
assets/common/items/npc_weapons/unique/turret.ron
Normal file
15
assets/common/items/npc_weapons/unique/turret.ron
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
ItemDef(
|
||||||
|
name: "Turret",
|
||||||
|
description: "Turret weapon",
|
||||||
|
kind: Tool(
|
||||||
|
(
|
||||||
|
kind: Unique(Turret),
|
||||||
|
stats: (
|
||||||
|
equip_time_millis: 10,
|
||||||
|
power: 1.00,
|
||||||
|
speed: 1.00,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
quality: Low,
|
||||||
|
)
|
BIN
assets/voxygen/voxel/object/crossbow.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/object/crossbow.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -377,4 +377,16 @@
|
|||||||
central: ("object.steak"),
|
central: ("object.steak"),
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
|
Crossbow: (
|
||||||
|
bone0: (
|
||||||
|
offset: (-18.0, -15.5, 0.0),
|
||||||
|
central: ("object.crossbow"),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
ArrowTurret: (
|
||||||
|
bone0: (
|
||||||
|
offset: (-1.5, -6.5, -1.5),
|
||||||
|
central: ("weapon.projectile.turret-arrow"),
|
||||||
|
)
|
||||||
|
),
|
||||||
})
|
})
|
BIN
assets/voxygen/voxel/weapon/projectile/turret-arrow.vox
(Stored with Git LFS)
Normal file
BIN
assets/voxygen/voxel/weapon/projectile/turret-arrow.vox
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -70,6 +70,8 @@ make_case_elim!(
|
|||||||
BoltNature = 60,
|
BoltNature = 60,
|
||||||
MeatDrop = 61,
|
MeatDrop = 61,
|
||||||
Steak = 62,
|
Steak = 62,
|
||||||
|
Crossbow = 63,
|
||||||
|
ArrowTurret = 64,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -80,7 +82,7 @@ impl Body {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const ALL_OBJECTS: [Body; 63] = [
|
pub const ALL_OBJECTS: [Body; 65] = [
|
||||||
Body::Arrow,
|
Body::Arrow,
|
||||||
Body::Bomb,
|
Body::Bomb,
|
||||||
Body::Scarecrow,
|
Body::Scarecrow,
|
||||||
@ -144,6 +146,8 @@ pub const ALL_OBJECTS: [Body; 63] = [
|
|||||||
Body::BoltNature,
|
Body::BoltNature,
|
||||||
Body::MeatDrop,
|
Body::MeatDrop,
|
||||||
Body::Steak,
|
Body::Steak,
|
||||||
|
Body::Crossbow,
|
||||||
|
Body::ArrowTurret,
|
||||||
];
|
];
|
||||||
|
|
||||||
impl From<Body> for super::Body {
|
impl From<Body> for super::Body {
|
||||||
@ -216,6 +220,8 @@ impl Body {
|
|||||||
Body::BoltNature => "bolt_nature",
|
Body::BoltNature => "bolt_nature",
|
||||||
Body::MeatDrop => "meat_drop",
|
Body::MeatDrop => "meat_drop",
|
||||||
Body::Steak => "steak",
|
Body::Steak => "steak",
|
||||||
|
Body::Crossbow => "crossbow",
|
||||||
|
Body::ArrowTurret => "arrow_turret",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -295,4 +295,5 @@ pub enum UniqueKind {
|
|||||||
QuadSmallBasic,
|
QuadSmallBasic,
|
||||||
TheropodBasic,
|
TheropodBasic,
|
||||||
TheropodBird,
|
TheropodBird,
|
||||||
|
Turret,
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ use crate::comp::{
|
|||||||
slot::{ArmorSlot, EquipSlot},
|
slot::{ArmorSlot, EquipSlot},
|
||||||
},
|
},
|
||||||
item::{Item, ItemKind},
|
item::{Item, ItemKind},
|
||||||
quadruped_low, quadruped_medium, theropod, Body,
|
object, quadruped_low, quadruped_medium, theropod, Body,
|
||||||
};
|
};
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
|
|
||||||
@ -227,6 +227,14 @@ impl LoadoutBuilder {
|
|||||||
));
|
));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Body::Object(object) => match object {
|
||||||
|
object::Body::Crossbow => {
|
||||||
|
main_tool = Some(Item::new_from_asset_expect(
|
||||||
|
"common.items.npc_weapons.unique.turret",
|
||||||
|
));
|
||||||
|
},
|
||||||
|
_ => {},
|
||||||
|
},
|
||||||
_ => {},
|
_ => {},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ impl Body {
|
|||||||
Body::BirdSmall(_) => 75.0,
|
Body::BirdSmall(_) => 75.0,
|
||||||
Body::FishSmall(_) => 60.0,
|
Body::FishSmall(_) => 60.0,
|
||||||
Body::BipedLarge(_) => 75.0,
|
Body::BipedLarge(_) => 75.0,
|
||||||
Body::Object(_) => 40.0,
|
Body::Object(_) => 0.0,
|
||||||
Body::Golem(_) => 60.0,
|
Body::Golem(_) => 60.0,
|
||||||
Body::Theropod(_) => 135.0,
|
Body::Theropod(_) => 135.0,
|
||||||
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
Body::QuadrupedLow(quadruped_low) => match quadruped_low.species {
|
||||||
@ -116,7 +116,7 @@ impl Body {
|
|||||||
Body::BirdSmall(_) => 35.0,
|
Body::BirdSmall(_) => 35.0,
|
||||||
Body::FishSmall(_) => 10.0,
|
Body::FishSmall(_) => 10.0,
|
||||||
Body::BipedLarge(_) => 12.0,
|
Body::BipedLarge(_) => 12.0,
|
||||||
Body::Object(_) => 5.0,
|
Body::Object(_) => 0.0,
|
||||||
Body::Golem(_) => 8.0,
|
Body::Golem(_) => 8.0,
|
||||||
Body::Theropod(theropod) => match theropod.species {
|
Body::Theropod(theropod) => match theropod.species {
|
||||||
theropod::Species::Archaeos => 2.5,
|
theropod::Species::Archaeos => 2.5,
|
||||||
|
1566
common/sys/src/agent.rs
Normal file
1566
common/sys/src/agent.rs
Normal file
File diff suppressed because it is too large
Load Diff
@ -884,7 +884,7 @@ impl Settlement {
|
|||||||
.with_body(match dynamic_rng.gen_range(0..5) {
|
.with_body(match dynamic_rng.gen_range(0..5) {
|
||||||
_ if is_dummy => {
|
_ if is_dummy => {
|
||||||
is_human = false;
|
is_human = false;
|
||||||
object::Body::TrainingDummy.into()
|
object::Body::Crossbow.into()
|
||||||
},
|
},
|
||||||
0 => {
|
0 => {
|
||||||
let species = match dynamic_rng.gen_range(0..3) {
|
let species = match dynamic_rng.gen_range(0..3) {
|
||||||
@ -916,9 +916,9 @@ impl Settlement {
|
|||||||
comp::Body::Humanoid(humanoid::Body::random())
|
comp::Body::Humanoid(humanoid::Body::random())
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.with_agency(!is_dummy)
|
.with_agency(true) // TEMPORARY
|
||||||
.with_alignment(if is_dummy {
|
.with_alignment(if is_dummy {
|
||||||
comp::Alignment::Passive
|
comp::Alignment::Enemy // TEMPORARY
|
||||||
} else if is_human {
|
} else if is_human {
|
||||||
comp::Alignment::Npc
|
comp::Alignment::Npc
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user