Merge branch 'gnarlings' into 'master'

Gnarlings

See merge request veloren/veloren!3194
This commit is contained in:
Samuel Keiffer 2022-02-15 00:22:37 +00:00
commit 6c7c0eefae
148 changed files with 4684 additions and 405 deletions

View File

@ -63,16 +63,64 @@
secondary: "common.abilities.hammersimple.doublestrike",
abilities: [],
),
Custom("Axe Simple"): (
primary: "common.abilities.axesimple.doublestrike",
secondary: "common.abilities.axesimple.doublestrike",
// TODO: Later investigate if we want to make this back to a simple axe when more things need a simpler axe ability set
Custom("Gnarling Axe"): (
primary: "common.abilities.gnarling.axe.chop",
secondary: "common.abilities.gnarling.axe.chop",
abilities: [],
),
Custom("Dagger Simple"): (
primary: "common.abilities.daggersimple.singlestrike",
secondary: "common.abilities.daggersimple.singlestrike",
Custom("Gnarling Dagger"): (
primary: "common.abilities.gnarling.dagger.stab",
secondary: "common.abilities.gnarling.dagger.stab",
abilities: [],
),
Custom("Gnarling Blowgun"): (
primary: "common.abilities.gnarling.blowgun.dart",
secondary: "common.abilities.gnarling.blowgun.dart",
abilities: [],
),
Custom("Gnarling Chieftain"): (
primary: "common.abilities.gnarling.chieftain.flamestrike",
secondary: "common.abilities.gnarling.chieftain.firebarrage",
abilities: [
(None, "common.abilities.gnarling.chieftain.fireshockwave"),
(None, "common.abilities.gnarling.chieftain.redtotem"),
(None, "common.abilities.gnarling.chieftain.greentotem"),
(None, "common.abilities.gnarling.chieftain.whitetotem"),
],
),
Custom("Gnarling Totem Red"): (
primary: "common.abilities.gnarling.totem.red",
secondary: "common.abilities.gnarling.totem.red",
abilities: [],
),
Custom("Gnarling Totem Green"): (
primary: "common.abilities.gnarling.totem.green",
secondary: "common.abilities.gnarling.totem.green",
abilities: [],
),
Custom("Gnarling Totem White"): (
primary: "common.abilities.gnarling.totem.white",
secondary: "common.abilities.gnarling.totem.white",
abilities: [],
),
Custom("Deadwood"): (
primary: "common.abilities.custom.deadwood.lifestealbeam",
secondary: "common.abilities.custom.deadwood.dash",
abilities: [],
),
Custom("Mandragora"): (
primary: "common.abilities.custom.mandragora.basic",
secondary: "common.abilities.custom.mandragora.scream",
abilities: [],
),
Custom("Wood Golem"): (
primary: "common.abilities.custom.woodgolem.strike",
secondary: "common.abilities.custom.woodgolem.spin",
abilities: [
(None, "common.abilities.custom.woodgolem.shockwave")
],
),
Custom("Sword Simple"): (
primary: "common.abilities.swordsimple.doublestrike",
secondary: "common.abilities.swordsimple.dash",
@ -86,14 +134,17 @@
Custom("Bow Simple"): (
primary: "common.abilities.bowsimple.basic",
secondary: "common.abilities.bowsimple.basic",
abilities: [
],
abilities: [],
),
Tool(Blowgun): (
primary: "common.abilities.blowgun.basic",
secondary: "common.abilities.blowgun.basic",
abilities: [
],
Custom("Axe Simple"): (
primary: "common.abilities.axesimple.doublestrike",
secondary: "common.abilities.axesimple.doublestrike",
abilities: [],
),
Custom("Dagger Simple"): (
primary: "common.abilities.daggersimple.singlestrike",
secondary: "common.abilities.daggersimple.singlestrike",
abilities: [],
),
Tool(Dagger): (
primary: "common.abilities.dagger.tempbasic",

View File

@ -53,4 +53,4 @@ ComboMelee(
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 5.0,
angle: 120.0,
),
ori_modifier: 1.0,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 4.0,
angle: 45.0,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,28 @@
DashMelee(
energy_cost: 0,
melee_constructor: (
kind: Bash(
damage: 8.0,
poise: 25.0,
knockback: 4.0,
energy_regen: 0.0,
),
scaled: Some(Bash(
damage: 15.0,
poise: 0.0,
knockback: 17.0,
energy_regen: 0.0,
)),
range: 4,
angle: 45.0,
),
energy_drain: 0,
forward_speed: 3,
buildup_duration: 0.5,
charge_duration: 1.0,
swing_duration: 0.1,
recover_duration: 1.0,
ori_modifier: 0.1,
charge_through: true,
is_interruptible: false,
)

View File

@ -0,0 +1,14 @@
BasicBeam(
buildup_duration: 0.25,
recover_duration: 0.25,
beam_duration: 1,
damage: 3.0,
tick_rate: 2.0,
range: 25.0,
max_angle: 1.0,
damage_effect: Some(Lifesteal(0.15)),
energy_regen: 2.5,
energy_drain: 0,
ori_rate: 0.3,
specifier: LifestealBeam,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 4.0,
angle: 60.0,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,17 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.2,
swing_duration: 0.05,
recover_duration: 0.3,
melee_constructor: (
kind: Bash(
damage: 4,
poise: 5,
knockback: 0,
energy_regen: 0,
),
range: 3,
angle: 30,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,21 @@
SpinMelee(
buildup_duration: 0.5,
swing_duration: 0.3,
recover_duration: 0.5,
melee_constructor: (
kind: SonicWave(
damage: 5,
poise: 100,
knockback: 20,
),
range: 10,
angle: 360.0,
),
energy_cost: 0.0,
is_infinite: false,
movement_behavior: Stationary,
is_interruptible: false,
forward_speed: 0.0,
num_spins: 1,
specifier: None,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 5.0,
angle: 60.0,
),
ori_modifier: 1.0,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 0.8,
angle: 50.0,
),
ori_modifier: 1.0,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 5.0,
angle: 60.0,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,17 @@
Shockwave(
energy_cost: 0,
buildup_duration: 1.5,
swing_duration: 0.12,
recover_duration: 1.2,
damage: 20.0,
poise_damage: 30,
knockback: (strength: 30.0, direction: TowardsUp),
shockwave_angle: 90.0,
shockwave_vertical_angle: 90.0,
shockwave_speed: 15.0,
shockwave_duration: 2.0,
requires_ground: true,
move_efficiency: 0.0,
damage_kind: Crushing,
specifier: Ground,
)

View File

@ -0,0 +1,22 @@
SpinMelee(
buildup_duration: 0.35,
swing_duration: 0.3,
recover_duration: 0.2,
melee_constructor: (
kind: Bash(
damage: 15.0,
poise: 30.0,
knockback: 20.0,
energy_regen: 0.0,
),
range: 7.5,
angle: 360.0,
),
energy_cost: 0,
is_infinite: false,
movement_behavior: Stationary,
is_interruptible: false,
forward_speed: 0.0,
num_spins: 1,
specifier: None,
)

View File

@ -0,0 +1,17 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.8,
swing_duration: 0.1,
recover_duration: 0.5,
melee_constructor: (
kind: Bash(
damage: 10.0,
poise: 25.0,
knockback: 15.0,
energy_regen: 0.0,
),
range: 4.0,
angle: 45.0,
),
ori_modifier: 0.4,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 4.0,
angle: 20.0,
),
ori_modifier: 1.0,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 3.5,
angle: 20.0,
),
ori_modifier: 1.0,
)

View File

@ -31,4 +31,4 @@ ComboMelee(
scales_from_combo: 0,
is_interruptible: false,
ori_modifier: 0.7,
)
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 3.5,
angle: 15.0,
),
ori_modifier: 1.0,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 3.5,
angle: 20.0,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,17 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.2,
swing_duration: 0.05,
recover_duration: 0.3,
melee_constructor: (
kind: Slash(
damage: 6,
poise: 5,
knockback: 0,
energy_regen: 0,
),
range: 3,
angle: 30,
),
ori_modifier: 1.0,
)

View File

@ -3,13 +3,13 @@ BasicRanged(
buildup_duration: 0.5,
recover_duration: 0.3,
projectile: Arrow(
damage: 3.5,
knockback: 5.0,
energy_regen: 4.0,
damage: 4,
knockback: 0,
energy_regen: 0,
),
projectile_body: Object(Arrow),
projectile_body: Object(Dart),
projectile_light: None,
projectile_speed: 100.0,
projectile_speed: 80.0,
num_projectiles: 1,
projectile_spread: 0.0,
)

View File

@ -0,0 +1,15 @@
BasicRanged(
energy_cost: 0,
buildup_duration: 0.55,
recover_duration: 0.4,
projectile: Fireball(
damage: 9.0,
radius: 2.0,
energy_regen: 10.0,
min_falloff: 0.5,
),
projectile_body: Object(BoltFire),
projectile_speed: 25,
num_projectiles: 8,
projectile_spread: 0.125,
)

View File

@ -0,0 +1,17 @@
Shockwave(
energy_cost: 0,
buildup_duration: 0.65,
swing_duration: 0.1,
recover_duration: 0.4,
damage: 20,
poise_damage: 0,
knockback: ( strength: 25, direction: Away),
shockwave_angle: 360,
shockwave_vertical_angle: 90,
shockwave_speed: 10,
shockwave_duration: 1,
requires_ground: false,
move_efficiency: 0,
damage_kind: Energy,
specifier: Fire,
)

View File

@ -0,0 +1,23 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.4,
swing_duration: 0.1,
recover_duration: 0.3,
melee_constructor: (
kind: Bash(
damage: 8,
poise: 10,
knockback: 0,
energy_regen: 0,
),
range: 7.5,
angle: 60.0,
damage_effect: Some(Buff((
kind: Burning,
dur_secs: 10.0,
strength: DamageFraction(0.5),
chance: 0.5,
))),
),
ori_modifier: 0.7,
)

View File

@ -0,0 +1,15 @@
BasicSummon(
buildup_duration: 0.25,
cast_duration: 0.5,
recover_duration: 0.25,
summon_amount: 1,
summon_distance: (1, 4),
summon_info: (
body: Object(GnarlingTotemGreen),
scale: None,
has_health: true,
loadout_config: None,
skillset_config: None,
),
duration: None,
)

View File

@ -0,0 +1,15 @@
BasicSummon(
buildup_duration: 0.25,
cast_duration: 0.5,
recover_duration: 0.25,
summon_amount: 1,
summon_distance: (1, 4),
summon_info: (
body: Object(GnarlingTotemRed),
scale: None,
has_health: true,
loadout_config: None,
skillset_config: None,
),
duration: None,
)

View File

@ -0,0 +1,15 @@
BasicSummon(
buildup_duration: 0.25,
cast_duration: 0.5,
recover_duration: 0.25,
summon_amount: 1,
summon_distance: (1, 4),
summon_info: (
body: Object(GnarlingTotemWhite),
scale: None,
has_health: true,
loadout_config: None,
skillset_config: None,
),
duration: None,
)

View File

@ -0,0 +1,17 @@
BasicMelee(
energy_cost: 0,
buildup_duration: 0.1,
swing_duration: 0.05,
recover_duration: 0.25,
melee_constructor: (
kind: Stab(
damage: 4,
poise: 0,
knockback: 0,
energy_regen: 0,
),
range: 2,
angle: 15,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,24 @@
BasicAura(
buildup_duration: 0.25,
cast_duration: 0.5,
recover_duration: 0.25,
targets: InGroup,
auras: [
(
kind: Regeneration,
strength: 5,
duration: Some(5),
category: Magical,
),
(
kind: ProtectingWard,
strength: 0.50,
duration: Some(5),
category: Magical,
),
],
aura_duration: 2,
range: 50,
energy_cost: 0,
scales_with_combo: false,
)

View File

@ -0,0 +1,18 @@
BasicAura(
buildup_duration: 0.25,
cast_duration: 0.5,
recover_duration: 0.25,
targets: OutOfGroup,
auras: [
(
kind: Burning,
strength: 0.5,
duration: Some(5),
category: Magical,
),
],
aura_duration: 2,
range: 50,
energy_cost: 0,
scales_with_combo: false,
)

View File

@ -0,0 +1,18 @@
BasicAura(
buildup_duration: 0.25,
cast_duration: 0.5,
recover_duration: 0.25,
targets: InGroup,
auras: [
(
kind: Hastened,
strength: 0.5,
duration: Some(5),
category: Magical,
),
],
aura_duration: 2,
range: 50,
energy_cost: 0,
scales_with_combo: false,
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 4.5,
angle: 20.0,
),
ori_modifier: 1.0,
)

View File

@ -3,15 +3,17 @@ BasicAura(
cast_duration: 0.5,
recover_duration: 0.25,
targets: InGroup,
aura: (
kind: Regeneration,
strength: 0.2,
duration: Some(10.0),
category: Magical,
),
auras: [
(
kind: Regeneration,
strength: 0.2,
duration: Some(10.0),
category: Magical,
),
],
aura_duration: 1.0,
range: 25.0,
energy_cost: 20.0,
scales_with_combo: true,
specifier: HealingAura,
specifier: Some(HealingAura),
)

View File

@ -3,15 +3,17 @@ BasicAura(
cast_duration: 0.5,
recover_duration: 0.25,
targets: InGroup,
aura: (
kind: ProtectingWard,
strength: 0.20,
duration: Some(10.0),
category: Magical,
),
auras: [
(
kind: ProtectingWard,
strength: 0.20,
duration: Some(10.0),
category: Magical,
),
],
aura_duration: 1.0,
range: 25.0,
energy_cost: 40.0,
scales_with_combo: false,
specifier: WardingAura,
specifier: Some(WardingAura),
)

View File

@ -13,4 +13,5 @@ BasicMelee(
range: 3.0,
angle: 90.0,
),
ori_modifier: 1.0,
)

View File

@ -0,0 +1,15 @@
(
name: Name("Gnarling Chieftain"),
body: RandomWith("gnarling"),
alignment: Alignment(Enemy),
loadout: Extended(
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.chieftain")),
base_asset: Loadout("common.loadout.dungeon.gnarling.chieftain"),
inventory: [],
),
loot: LootTable("common.loot_tables.dungeon.tier-0.boss"),
meta: [
// Done for health reasons
SkillSetAsset("common.skillset.preset.rank5.fullskill"),
],
)

View File

@ -4,9 +4,9 @@
alignment: Alignment(Enemy),
loadout: Extended(
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.logger")),
base_asset: Loadout("common.loadout.dungeon.tier-0.logger"),
base_asset: Loadout("common.loadout.dungeon.gnarling.logger"),
inventory: [],
),
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
meta: [],
)
)

View File

@ -1,12 +1,12 @@
(
name: Name("Gnarling Chieftain"),
body: RandomWith("gnarling"),
EntityConfig (
name: Name("Mandragora"),
body: RandomWith("mandragora"),
alignment: Alignment(Enemy),
loadout: Extended(
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.chieftain")),
base_asset: Loadout("common.loadout.dungeon.tier-0.gnarling_chieftain"),
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.mandragora")),
base_asset: Loadout("common.loadout.dungeon.gnarling.mandragora"),
inventory: [],
),
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
meta: [],
)
)

View File

@ -4,9 +4,9 @@
alignment: Alignment(Enemy),
loadout: Extended(
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.mugger")),
base_asset: Loadout("common.loadout.dungeon.tier-0.mugger"),
base_asset: Loadout("common.loadout.dungeon.gnarling.mugger"),
inventory: [],
),
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
meta: [],
)
)

View File

@ -4,9 +4,9 @@
alignment: Alignment(Enemy),
loadout: Extended(
hands: TwoHanded(Item("common.items.npc_weapons.biped_small.gnarling.stalker")),
base_asset: Loadout("common.loadout.dungeon.tier-0.stalker"),
base_asset: Loadout("common.loadout.dungeon.gnarling.stalker"),
inventory: [],
),
loot: LootTable("common.loot_tables.dungeon.tier-0.enemy"),
meta: [],
)
)

View File

@ -1,8 +1,8 @@
(
name: Name("Deadwood"),
body: RandomWith("deadwood"),
EntityConfig (
name: Name("Wooden Golem"),
body: RandomWith("woodgolem"),
alignment: Alignment(Enemy),
loadout: FromBody,
loot: LootTable("common.loot_tables.dungeon.tier-0.miniboss"),
meta: [],
)
)

View File

@ -1,12 +1,12 @@
ItemDef(
name: "Gnarling Chieftain",
description: "Ceremonial attire used by members.",
description: "Only worn by the most spiritual of Gnarlings.",
kind: Armor((
kind: Chest("GnarlingChieftain"),
stats: (
protection: Some(Normal(2.0)),
poise_resilience: Some(Normal(1.0)),
energy_max: Some(2.7),
protection: Some(Normal(80.0)),
poise_resilience: Some(Normal(60.0)),
energy_max: Some(120.0),
energy_reward: Some(0.027),
crit_power: Some(0.025),
),

View File

@ -1,6 +1,6 @@
ItemDef(
name: "Gnarling Chieftain",
description: "Ceremonial attire used by members.",
description: "Only worn by the most spiritual of Gnarlings.",
kind: Armor((
kind: Foot("GnarlingChieftain"),
stats: (

View File

@ -1,6 +1,6 @@
ItemDef(
name: "Gnarling Chieftain",
description: "Ceremonial attire used by members..",
description: "Only worn by the most spiritual of Gnarlings.",
kind: Armor((
kind: Hand("GnarlingChieftain"),
stats: (

View File

@ -1,6 +1,6 @@
ItemDef(
name: "Gnarling Chieftain",
description: "Ceremonial attire used by members.",
description: "Only worn by the most spiritual of Gnarlings.",
kind: Armor((
kind: Head("GnarlingChieftain"),
stats: (

View File

@ -1,6 +1,6 @@
ItemDef(
name: "Gnarling Chieftain",
description: "Ceremonial attire used by members..",
description: "Only worn by the most spiritual of Gnarlings.",
kind: Armor((
kind: Pants("GnarlingChieftain"),
stats: (

View File

@ -1,6 +1,6 @@
ItemDef(
name: "Gnarling Chieftain",
description: "Ceremonial attire used by members.",
description: "Only worn by the most spiritual of Gnarlings.",
kind: Armor((
kind: Belt("GnarlingChieftain"),
stats: (

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Mandragora",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Chest("Mandragora"),
stats: (
protection: Some(Normal(26.0)),
poise_resilience: Some(Normal(4.0)),
energy_max: Some(3.4),
energy_reward: Some(0.81),
crit_power: Some(0.075),
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Mandragora",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Foot("Mandragora"),
stats: (
protection: Some(Normal(26.0)),
poise_resilience: Some(Normal(4.0)),
energy_max: Some(3.4),
energy_reward: Some(0.81),
crit_power: Some(0.075),
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Mandragora",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Hand("Mandragora"),
stats: (
protection: Some(Normal(26.0)),
poise_resilience: Some(Normal(4.0)),
energy_max: Some(3.4),
energy_reward: Some(0.81),
crit_power: Some(0.075),
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Mandragora",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Pants("Mandragora"),
stats: (
protection: Some(Normal(26.0)),
poise_resilience: Some(Normal(4.0)),
energy_max: Some(3.4),
energy_reward: Some(0.81),
crit_power: Some(0.075),
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,16 @@
ItemDef(
name: "Mandragora",
description: "Ceremonial attire used by members.",
kind: Armor((
kind: Belt("Mandragora"),
stats: (
protection: Some(Normal(26.0)),
poise_resilience: Some(Normal(4.0)),
energy_max: Some(3.4),
energy_reward: Some(0.81),
crit_power: Some(0.075),
),
)),
quality: Low,
tags: [],
)

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Wood Golem Armor",
description: "Yeet",
kind: Armor((
kind: Chest("Wood Golem"),
stats: (
protection: Some(Normal(60.0)),
poise_resilience: Some(Normal(60.0)),
),
)),
quality: Common,
tags: [],
)

View File

@ -6,10 +6,10 @@ ItemDef(
hands: Two,
stats: Direct((
equip_time_secs: 0.0,
power: 0.3,
effect_power: 0.8,
speed: 0.6,
crit_chance: 0.26764706,
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("Staff Simple")),
ability_spec: Some(Custom("Gnarling Chieftain")),
)

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Gnarling Green Totem",
description: "Yeet",
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: Low,
tags: [],
ability_spec: Some(Custom("Gnarling Totem Green")),
)

View File

@ -6,10 +6,10 @@ ItemDef(
hands: Two,
stats: Direct((
equip_time_secs: 0.0,
power: 0.3,
power: 1.0,
effect_power: 1.0,
speed: 1.0,
crit_chance: 0.12037037,
crit_chance: 0.1,
range: 1.0,
energy_efficiency: 1.0,
buff_strength: 1.0,
@ -17,5 +17,6 @@ ItemDef(
)),
quality: Low,
tags: [],
ability_spec: Some(Custom("Axe Simple")),
// TODO: Later investigate if we want to make this back to a simple axe when more things need a simpler axe ability set
ability_spec: Some(Custom("Gnarling Axe")),
)

View File

@ -17,5 +17,6 @@ ItemDef(
)),
quality: Low,
tags: [],
ability_spec: Some(Custom("Dagger Simple")),
// TODO: Later investigate if we want to make this back to a simple dagger when more things need a simpler dagger ability set
ability_spec: Some(Custom("Gnarling Dagger")),
)

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Gnarling Red Totem",
description: "Yeet",
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: Low,
tags: [],
ability_spec: Some(Custom("Gnarling Totem Red")),
)

View File

@ -17,5 +17,5 @@ ItemDef(
)),
quality: Low,
tags: [],
ability_spec: None,
ability_spec: Some(Custom("Gnarling Blowgun")),
)

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Gnarling White Totem",
description: "Yeet",
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: Low,
tags: [],
ability_spec: Some(Custom("Gnarling Totem White")),
)

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Mandragora",
description: "Testing",
kind: Tool((
kind: Natural,
hands: Two,
stats: Direct((
equip_time_secs: 0.0,
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: Low,
tags: [],
ability_spec: Some(Custom("Mandragora")),
)

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Deadwood",
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: Low,
tags: [],
ability_spec: Some(Custom("Deadwood")),
)

View File

@ -0,0 +1,21 @@
ItemDef(
name: "Wood Golem Fists",
description: "Yeet",
kind: Tool((
kind: Natural,
hands: Two,
stats: Direct((
equip_time_secs: 0.001,
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: Low,
tags: [],
ability_spec: Some(Custom("Wood Golem")),
)

View File

@ -0,0 +1,6 @@
({
Armor(Feet): Item("common.items.npc_armor.biped_small.mandragora.foot.mandragora"),
Armor(Hands): Item("common.items.npc_armor.biped_small.mandragora.hand.mandragora"),
Armor(Chest): Item("common.items.npc_armor.biped_small.mandragora.chest.mandragora"),
Armor(Legs): Item("common.items.npc_armor.biped_small.mandragora.pants.mandragora"),
})

BIN
assets/voxygen/element/de_buffs/buff_haste_0.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/gnarling.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/gnarling_bg.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/gnarling_hover.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/mindflayer.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/mindflayer_bg.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/mindflayer_hover.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/minotaur.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/minotaur_bg.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/element/ui/map/buttons/minotaur_hover.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -21,6 +21,8 @@
"buff.desc.protectingward": "You are protected, somewhat, from attacks.",
"buff.title.frenzied": "Frenzied",
"buff.desc.frenzied": "You are imbued with unnatural speed and can ignore minor injuries.",
"buff.title.hastened": "Hastened",
"buff.desc.hastened": "Your movements and attacks are faster.",
// Debuffs
"buff.title.bleed": "Bleeding",
"buff.desc.bleed": "Inflicts regular damage.",

View File

@ -31,6 +31,7 @@
"hud.map.change_map_mode": "Change Map Mode",
"hud.map.toggle_minimap_voxel": "Toggle Minimap Voxel View",
"hud.map.zoom_minimap_explanation": "Zoom in the Minimap to see\nthe area around you in higher detail",
"hud.map.gnarling": "Gnarling Fortification",
},

View File

@ -73,6 +73,7 @@ const int ICE_SPIKES = 31;
const int DRIP = 32;
const int TORNADO = 33;
const int DEATH = 34;
const int ENERGY_BUFFING = 35;
// meters per second squared (acceleration)
const float earth_gravity = 9.807;
@ -568,6 +569,16 @@ void main() {
spin_in_axis(vec3(rand6, rand7, rand8), percent() * 10 + 3 * rand9)
);
break;
case ENERGY_BUFFING:
f_reflect = 0.0;
spiral_radius = start_end(1 - pow(abs(rand5), 5), 1) * length(inst_dir);
attr = Attr(
spiral_motion(vec3(0, 0, rand3 + 1), spiral_radius, lifetime, abs(rand0), rand1 * 2 * PI) + vec3(0, 0, rand2),
vec3(6 * abs(rand4) * (1 - slow_start(2)) * pow(spiral_radius / length(inst_dir), 0.5)),
vec4(vec3(1.4), 1),
spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3)
);
break;
default:
attr = Attr(
linear_motion(

View File

@ -37,7 +37,7 @@
vox_spec: ("npc.gnarling.chieftain.chest", (-4.5, -3.5, -1.0)),
),
"Mandragora": (
vox_spec: ("npc.mandragora.male.chest", (-11.0, -11.0, -6.5)),
vox_spec: ("npc.mandragora.male.chest", (-11.0, -11.0, 0.0)),
),
"Kappa": (
vox_spec: ("npc.kappa.male.chest", (-6.5, -8.0, -7.0)),

View File

@ -1179,4 +1179,8 @@
vox_spec: ("weapon.biped_small.axe.strategian", (-0.5, -6.0, -4.0)),
color: None
),
"common.items.npc_weapons.biped_small.mandragora": (
vox_spec: ("armor.empty", (0.0, 0.0, 0.0)),
color: None
),
})

BIN
assets/voxygen/voxel/object/gnarling_totem_green.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/gnarling_totem_red.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/object/gnarling_totem_white.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -819,4 +819,44 @@
central: ("armor.empty"),
)
),
Dart: (
bone0: (
offset: (-0.5, -5.5, -1.5),
central: ("weapon.projectile.dart"),
),
bone1: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
)
),
GnarlingTotemRed: (
bone0: (
offset: (-6.0, -5.0, 0.0),
central: ("object.gnarling_totem_red"),
),
bone1: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
)
),
GnarlingTotemGreen: (
bone0: (
offset: (-9.0, -5.0, 0.0),
central: ("object.gnarling_totem_green"),
),
bone1: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
)
),
GnarlingTotemWhite: (
bone0: (
offset: (-8.0, -5.0, 0.0),
central: ("object.gnarling_totem_white"),
),
bone1: (
offset: (0.0, 0.0, 0.0),
central: ("armor.empty"),
)
),
})

Binary file not shown.

BIN
assets/voxygen/voxel/weapon/projectile/dart.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -16,7 +16,6 @@
/// 1) Set every probability to 0.0 and left one with any other number
/// and you will have map full of dungeons of same level
([
(0, 0.25),
(1, 0.20),
(2, 0.20),
(3, 0.15),

View File

@ -144,6 +144,7 @@ pub enum SiteKind {
Castle,
Cave,
Tree,
Gnarling,
}
#[derive(Debug, Clone, Serialize, Deserialize)]

View File

@ -207,6 +207,7 @@ lazy_static! {
BuffKind::Wet => "wet",
BuffKind::Ensnared => "ensnared",
BuffKind::Poisoned => "poisoned",
BuffKind::Hastened => "hastened",
};
let mut buff_parser = HashMap::new();
BuffKind::iter().for_each(|kind| {buff_parser.insert(string_from_buff(kind).to_string(), kind);});

View File

@ -394,6 +394,7 @@ pub enum CharacterAbility {
swing_duration: f32,
recover_duration: f32,
melee_constructor: MeleeConstructor,
ori_modifier: f32,
},
BasicRanged {
energy_cost: f32,
@ -551,12 +552,12 @@ pub enum CharacterAbility {
cast_duration: f32,
recover_duration: f32,
targets: combat::GroupTarget,
aura: aura::AuraBuffConstructor,
auras: Vec<aura::AuraBuffConstructor>,
aura_duration: f32,
range: f32,
energy_cost: f32,
scales_with_combo: bool,
specifier: aura::Specifier,
specifier: Option<aura::Specifier>,
},
Blink {
buildup_duration: f32,
@ -610,6 +611,7 @@ impl Default for CharacterAbility {
angle: 15.0,
damage_effect: None,
},
ori_modifier: 1.0,
}
}
}
@ -697,6 +699,7 @@ impl CharacterAbility {
ref mut swing_duration,
ref mut recover_duration,
ref mut melee_constructor,
ori_modifier: _,
} => {
*buildup_duration /= stats.speed;
*swing_duration /= stats.speed;
@ -961,13 +964,7 @@ impl CharacterAbility {
ref mut cast_duration,
ref mut recover_duration,
targets: _,
aura:
aura::AuraBuffConstructor {
kind: _,
ref mut strength,
duration: _,
category: _,
},
ref mut auras,
aura_duration: _,
ref mut range,
ref mut energy_cost,
@ -977,9 +974,18 @@ impl CharacterAbility {
*buildup_duration /= stats.speed;
*cast_duration /= stats.speed;
*recover_duration /= stats.speed;
// Do we want to make buff_strength affect this instead of power?
// Look into during modular weapon transition
*strength *= stats.power;
auras.iter_mut().for_each(
|aura::AuraBuffConstructor {
kind: _,
ref mut strength,
duration: _,
category: _,
}| {
// Do we want to make buff_strength affect this instead of power?
// Look into during modular weapon transition
*strength *= stats.power;
},
);
*range *= stats.range;
*energy_cost /= stats.energy_efficiency;
},
@ -1076,7 +1082,6 @@ impl CharacterAbility {
}
#[must_use = "method returns new ability and doesn't mutate the original value"]
#[warn(clippy::pedantic)]
pub fn adjusted_by_skills(mut self, skillset: &SkillSet, tool: Option<ToolKind>) -> Self {
match tool {
Some(ToolKind::Sword) => self.adjusted_by_sword_skills(skillset),
@ -1092,7 +1097,6 @@ impl CharacterAbility {
self
}
#[warn(clippy::pedantic)]
fn adjusted_by_mining_skills(&mut self, skillset: &SkillSet) {
use skills::MiningSkill::Speed;
@ -1114,7 +1118,6 @@ impl CharacterAbility {
}
}
#[warn(clippy::pedantic)]
fn adjusted_by_general_skills(&mut self, skillset: &SkillSet) {
if let CharacterAbility::Roll {
ref mut energy_cost,
@ -1236,7 +1239,6 @@ impl CharacterAbility {
}
}
#[warn(clippy::pedantic)]
fn adjusted_by_axe_skills(&mut self, skillset: &SkillSet) {
#![allow(clippy::enum_glob_use)]
use skills::{AxeSkill::*, Skill::Axe};
@ -1330,7 +1332,6 @@ impl CharacterAbility {
}
}
#[warn(clippy::pedantic)]
fn adjusted_by_hammer_skills(&mut self, skillset: &SkillSet) {
#![allow(clippy::enum_glob_use)]
use skills::{HammerSkill::*, Skill::Hammer};
@ -1433,7 +1434,6 @@ impl CharacterAbility {
}
}
#[warn(clippy::pedantic)]
fn adjusted_by_bow_skills(&mut self, skillset: &SkillSet) {
#![allow(clippy::enum_glob_use)]
use skills::{BowSkill::*, Skill::Bow};
@ -1534,7 +1534,6 @@ impl CharacterAbility {
}
}
#[warn(clippy::pedantic)]
fn adjusted_by_staff_skills(&mut self, skillset: &SkillSet) {
#![allow(clippy::enum_glob_use)]
use skills::{Skill::Staff, StaffSkill::*};
@ -1604,7 +1603,6 @@ impl CharacterAbility {
}
}
#[warn(clippy::pedantic)]
fn adjusted_by_sceptre_skills(&mut self, skillset: &SkillSet) {
#![allow(clippy::enum_glob_use)]
use skills::{SceptreSkill::*, Skill::Sceptre};
@ -1638,20 +1636,24 @@ impl CharacterAbility {
}
},
CharacterAbility::BasicAura {
ref mut aura,
ref mut auras,
ref mut range,
ref mut energy_cost,
specifier: aura::Specifier::HealingAura,
specifier: Some(aura::Specifier::HealingAura),
..
} => {
let modifiers = SKILL_MODIFIERS.sceptre_tree.healing_aura;
if let Ok(level) = skillset.skill_level(Sceptre(HHeal)) {
aura.strength *= modifiers.strength.powi(level.into());
auras.iter_mut().for_each(|ref mut aura| {
aura.strength *= modifiers.strength.powi(level.into());
});
}
if let Ok(level) = skillset.skill_level(Sceptre(HDuration)) {
if let Some(ref mut duration) = aura.duration {
*duration *= modifiers.duration.powi(level.into());
}
auras.iter_mut().for_each(|ref mut aura| {
if let Some(ref mut duration) = aura.duration {
*duration *= modifiers.duration.powi(level.into());
}
});
}
if let Ok(level) = skillset.skill_level(Sceptre(HRange)) {
*range *= modifiers.range.powi(level.into());
@ -1661,20 +1663,24 @@ impl CharacterAbility {
}
},
CharacterAbility::BasicAura {
ref mut aura,
ref mut auras,
ref mut range,
ref mut energy_cost,
specifier: aura::Specifier::WardingAura,
specifier: Some(aura::Specifier::WardingAura),
..
} => {
let modifiers = SKILL_MODIFIERS.sceptre_tree.warding_aura;
if let Ok(level) = skillset.skill_level(Sceptre(AStrength)) {
aura.strength *= modifiers.strength.powi(level.into());
auras.iter_mut().for_each(|ref mut aura| {
aura.strength *= modifiers.strength.powi(level.into());
});
}
if let Ok(level) = skillset.skill_level(Sceptre(ADuration)) {
if let Some(ref mut duration) = aura.duration {
*duration *= modifiers.duration.powi(level.into());
}
auras.iter_mut().for_each(|ref mut aura| {
if let Some(ref mut duration) = aura.duration {
*duration *= modifiers.duration.powi(level.into());
}
});
}
if let Ok(level) = skillset.skill_level(Sceptre(ARange)) {
*range *= modifiers.range.powi(level.into());
@ -1696,6 +1702,7 @@ impl From<(&CharacterAbility, AbilityInfo, &JoinData<'_>)> for CharacterState {
swing_duration,
recover_duration,
melee_constructor,
ori_modifier,
energy_cost: _,
} => CharacterState::BasicMelee(basic_melee::Data {
static_data: basic_melee::StaticData {
@ -1703,6 +1710,7 @@ impl From<(&CharacterAbility, AbilityInfo, &JoinData<'_>)> for CharacterState {
swing_duration: Duration::from_secs_f32(*swing_duration),
recover_duration: Duration::from_secs_f32(*recover_duration),
melee_constructor: *melee_constructor,
ori_modifier: *ori_modifier,
ability_info,
},
timer: Duration::default(),
@ -2080,7 +2088,7 @@ impl From<(&CharacterAbility, AbilityInfo, &JoinData<'_>)> for CharacterState {
cast_duration,
recover_duration,
targets,
aura,
auras,
aura_duration,
range,
energy_cost: _,
@ -2092,7 +2100,7 @@ impl From<(&CharacterAbility, AbilityInfo, &JoinData<'_>)> for CharacterState {
cast_duration: Duration::from_secs_f32(*cast_duration),
recover_duration: Duration::from_secs_f32(*recover_duration),
targets: *targets,
aura: *aura,
auras: auras.clone(),
aura_duration: Duration::from_secs_f32(*aura_duration),
range: *range,
ability_info,

View File

@ -484,6 +484,7 @@ pub struct ActionState {
pub counter: f32,
pub condition: bool,
pub int_counter: u8,
pub initialized: bool,
}
impl Agent {

View File

@ -58,7 +58,7 @@ pub enum AuraChange {
}
/// Used by the aura system to filter entities when applying an effect.
#[derive(Clone, Debug, Deserialize, Serialize)]
#[derive(Copy, Clone, Debug, Deserialize, Serialize)]
pub enum AuraTarget {
/// Targets the group of the entity specified by the `Uid`. This is useful
/// for auras which should only affect a player's party.

Some files were not shown because too many files have changed in this diff Show More