diff --git a/assets/common/abilities/ability_set_manifest.ron b/assets/common/abilities/ability_set_manifest.ron index b3b32f0b4f..ba01f355a5 100644 --- a/assets/common/abilities/ability_set_manifest.ron +++ b/assets/common/abilities/ability_set_manifest.ron @@ -745,4 +745,26 @@ secondary: Simple(None, "common.abilities.empty.basic"), abilities: [], ), + // Adlets + // TODO: Do we want to eventually convert these to simple variants of weapons? + Custom("Adlet Hunter"): ( + primary: "common.abilities.adlet.hunter.stab", + secondary: "common.abilities.adlet.hunter.throw", + abilities: [], + ), + Custom("Adlet Icepicker"): ( + primary: "common.abilities.adlet.icepicker.spike", + secondary: "common.abilities.adlet.icepicker.leap", + abilities: [], + ), + Custom("Adlet Tracker"): ( + primary: "common.abilities.adlet.tracker.arrow", + secondary: "common.abilities.adlet.tracker.trap", + abilities: [], + ), + // Custom("Adlet Alpha"): ( + // primary: "common.abilities.adlet.alpha", + // secondary: "common.abilities.adlet.alpha", + // abilities: [], + // ), }) diff --git a/assets/common/abilities/adlet/hunter/stab.ron b/assets/common/abilities/adlet/hunter/stab.ron new file mode 100644 index 0000000000..46827ce974 --- /dev/null +++ b/assets/common/abilities/adlet/hunter/stab.ron @@ -0,0 +1,17 @@ +BasicMelee( + energy_cost: 0, + buildup_duration: 0.15, + swing_duration: 0.05, + recover_duration: 0.55, + melee_constructor: ( + kind: Stab( + damage: 10, + poise: 5, + knockback: 0, + energy_regen: 0, + ), + range: 5, + angle: 5, + ), + ori_modifier: 1.0, +) diff --git a/assets/common/abilities/adlet/hunter/throw.ron b/assets/common/abilities/adlet/hunter/throw.ron new file mode 100644 index 0000000000..4f5d0d1d87 --- /dev/null +++ b/assets/common/abilities/adlet/hunter/throw.ron @@ -0,0 +1,15 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.8, + recover_duration: 0.8, + projectile: Arrow( + damage: 16, + knockback: 0, + energy_regen: 0, + ), + projectile_body: Object(AdletSpear), + projectile_light: None, + projectile_speed: 40.0, + num_projectiles: 1, + projectile_spread: 0.0, +) diff --git a/assets/common/abilities/adlet/icepicker/leap.ron b/assets/common/abilities/adlet/icepicker/leap.ron new file mode 100644 index 0000000000..59dc111fe7 --- /dev/null +++ b/assets/common/abilities/adlet/icepicker/leap.ron @@ -0,0 +1,19 @@ +LeapMelee( + energy_cost: 0.0, + buildup_duration: 0.6, + movement_duration: 0.2, + swing_duration: 0.1, + recover_duration: 0.3, + melee_constructor: ( + kind: Stab( + damage: 20, + poise: 20, + knockback: 0, + energy_regen: 0, + ), + range: 4, + angle: 30, + ), + forward_leap_strength: 18, + vertical_leap_strength: 8, +) diff --git a/assets/common/abilities/adlet/icepicker/spike.ron b/assets/common/abilities/adlet/icepicker/spike.ron new file mode 100644 index 0000000000..3ed89aada9 --- /dev/null +++ b/assets/common/abilities/adlet/icepicker/spike.ron @@ -0,0 +1,17 @@ +BasicMelee( + energy_cost: 0, + buildup_duration: 0.4, + swing_duration: 0.1, + recover_duration: 0.45, + melee_constructor: ( + kind: Stab( + damage: 12, + poise: 10, + knockback: 0, + energy_regen: 0, + ), + range: 3, + angle: 15, + ), + ori_modifier: 1.0, +) diff --git a/assets/common/abilities/adlet/tracker/arrow.ron b/assets/common/abilities/adlet/tracker/arrow.ron new file mode 100644 index 0000000000..12c767ca34 --- /dev/null +++ b/assets/common/abilities/adlet/tracker/arrow.ron @@ -0,0 +1,15 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.6, + recover_duration: 0.4, + projectile: Arrow( + damage: 12, + knockback: 0, + energy_regen: 0, + ), + projectile_body: Object(Arrow), + projectile_light: None, + projectile_speed: 100.0, + num_projectiles: 1, + projectile_spread: 0.0, +) diff --git a/assets/common/abilities/adlet/tracker/trap.ron b/assets/common/abilities/adlet/tracker/trap.ron new file mode 100644 index 0000000000..eb89f6ba28 --- /dev/null +++ b/assets/common/abilities/adlet/tracker/trap.ron @@ -0,0 +1,12 @@ +BasicRanged( + energy_cost: 0, + buildup_duration: 0.75, + recover_duration: 0.75, + projectile: Trap( + damage: 25, + ), + projectile_body: Object(Snowball), + projectile_speed: 10.0, + num_projectiles: 1, + projectile_spread: 0.0, +) diff --git a/assets/common/items/npc_weapons/biped_small/adlet/hunter.ron b/assets/common/items/npc_weapons/biped_small/adlet/hunter.ron index b44ff0ba1e..201ecef4be 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/hunter.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/hunter.ron @@ -5,11 +5,11 @@ ItemDef( kind: Spear, hands: Two, stats: ( - equip_time_secs: 0.0, - power: 1.05, + equip_time_secs: 0.1, + power: 1.0, effect_power: 1.0, - speed: 0.75, - crit_chance: 0.07589286, + speed: 1.0, + crit_chance: 0.1, range: 1.0, energy_efficiency: 1.0, buff_strength: 1.0, @@ -17,5 +17,5 @@ ItemDef( )), quality: Low, tags: [], - ability_spec: None, + ability_spec: Some(Custom("Adlet Hunter")), ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/biped_small/adlet/icepicker.ron b/assets/common/items/npc_weapons/biped_small/adlet/icepicker.ron index 8cc7147596..ce4731aae5 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/icepicker.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/icepicker.ron @@ -1,15 +1,15 @@ ItemDef( - name: "Icepicker Axe", + name: "Icepicker Pick", description: "", kind: Tool(( - kind: Axe, + kind: Pick, hands: Two, stats: ( - equip_time_secs: 0.0, - power: 0.7, - effect_power: 0.8, - speed: 0.7, - crit_chance: 0.05059524, + equip_time_secs: 0.1, + 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, @@ -17,5 +17,5 @@ ItemDef( )), quality: Low, tags: [], - ability_spec: Some(Custom("Axe Simple")), + ability_spec: Some(Custom("Adlet Icepicker")), ) \ No newline at end of file diff --git a/assets/common/items/npc_weapons/biped_small/adlet/tracker.ron b/assets/common/items/npc_weapons/biped_small/adlet/tracker.ron index 6bce3d66e8..189ff272e3 100644 --- a/assets/common/items/npc_weapons/biped_small/adlet/tracker.ron +++ b/assets/common/items/npc_weapons/biped_small/adlet/tracker.ron @@ -6,16 +6,16 @@ ItemDef( hands: Two, stats: ( equip_time_secs: 0.0, - power: 1.05, - effect_power: 0.8, - speed: 0.4, - crit_chance: 0.08406594, + 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: Moderate, + quality: Low, tags: [], - ability_spec: Some(Custom("Bow Simple")), + ability_spec: Some(Custom("Adlet Tracker")), ) \ No newline at end of file diff --git a/assets/voxygen/voxel/object_manifest.ron b/assets/voxygen/voxel/object_manifest.ron index c21739a238..bc46c0668e 100644 --- a/assets/voxygen/voxel/object_manifest.ron +++ b/assets/voxygen/voxel/object_manifest.ron @@ -919,4 +919,14 @@ central: ("armor.empty"), ) ), + AdletSpear: ( + bone0: ( + offset: (-12.5, -12.5, 0.0), + central: ("weapon.projectile.adlet-spear"), + ), + bone1: ( + offset: (0.0, 0.0, 0.0), + central: ("armor.empty"), + ) + ), }) diff --git a/assets/voxygen/voxel/weapon/projectile/adlet-spear.vox b/assets/voxygen/voxel/weapon/projectile/adlet-spear.vox new file mode 100644 index 0000000000..fdd2d0bd3e --- /dev/null +++ b/assets/voxygen/voxel/weapon/projectile/adlet-spear.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c691f98dee4882cbca0e81ca89998259369f55c49b03b6f43d5b546d69b93bc8 +size 1288 diff --git a/common/src/comp/body/object.rs b/common/src/comp/body/object.rs index f0983ee475..1e410b2c26 100644 --- a/common/src/comp/body/object.rs +++ b/common/src/comp/body/object.rs @@ -104,6 +104,7 @@ make_case_elim!( SpectralSwordSmall = 89, SpectralSwordLarge = 90, LaserBeam = 91, + AdletSpear = 92, } ); @@ -114,7 +115,7 @@ impl Body { } } -pub const ALL_OBJECTS: [Body; 92] = [ +pub const ALL_OBJECTS: [Body; 93] = [ Body::Arrow, Body::Bomb, Body::Scarecrow, @@ -207,6 +208,7 @@ pub const ALL_OBJECTS: [Body; 92] = [ Body::BarrelOrgan, Body::IceBomb, Body::LaserBeam, + Body::AdletSpear, ]; impl From
for super::Body { @@ -308,6 +310,7 @@ impl Body { Body::SpectralSwordSmall => "spectral_sword_small", Body::SpectralSwordLarge => "spectral_sword_large", Body::LaserBeam => "laser_beam", + Body::AdletSpear => "adlet_spear", } } @@ -332,7 +335,8 @@ impl Body { | Body::Dart | Body::DagonBomb | Body::SpectralSwordSmall - | Body::SpectralSwordLarge => 500.0, + | Body::SpectralSwordLarge + | Body::AdletSpear => 500.0, Body::Bomb => 2000.0, // I have no idea what it's supposed to be Body::Crate => 300.0, // let's say it's a lot of wood and maybe some contents Body::Scarecrow => 900.0, @@ -427,6 +431,7 @@ impl Body { Body::GnarlingTotemRed | Body::GnarlingTotemGreen | Body::GnarlingTotemWhite => 100.0, Body::IceBomb => 12298.0, // 2.5 m diamter but ice Body::LaserBeam => 80000.0, + Body::AdletSpear => 1.5, }; Mass(m) @@ -434,9 +439,12 @@ impl Body { pub fn dimensions(&self) -> Vec3