Adds new cultist armors, defines loadouts for dungeons

This commit is contained in:
Snowram 2020-11-21 13:29:43 +01:00 committed by Joshua Barretto
parent 8fd2e4537d
commit 0737c71749
52 changed files with 783 additions and 134 deletions

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlock cape",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Back("Warlock"),
stats: (
protection: Normal(4.0)),
)
),
quality: Moderate,
)

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlord cape",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Back("Warlord"),
stats: (
protection: Normal(4.0)),
)
),
quality: Moderate,
)

View File

@ -5,8 +5,8 @@ ItemDef(
(
kind: Belt("Assassin"),
stats: (
protection: Normal(1.0)
),
protection: Normal(2.0)
),
)
),
quality: Moderate,

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlock Belt",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Belt("Warlock"),
stats: (
protection: Normal(8.0)
),
)
),
quality: Moderate,
)

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlord Belt",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Belt("Warlord"),
stats: (
protection: Normal(8.0)
),
)
),
quality: Moderate,
)

View File

@ -5,8 +5,8 @@ ItemDef(
(
kind: Chest("Assassin"),
stats: (
protection: Normal(6.0)
),
protection: Normal(15.0)
),
)
),
quality: Moderate,

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlock Vest",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Chest("Warlock"),
stats: (
protection: Normal(40.0)
),
)
),
quality: Moderate,
)

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlord Cuirass",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Chest("Warlord"),
stats: (
protection: Normal(40.0)
),
)
),
quality: Moderate,
)

View File

@ -5,8 +5,8 @@ ItemDef(
(
kind: Foot("Assassin"),
stats: (
protection: Normal(1.0)
),
protection: Normal(4.0)
),
)
),
quality: Moderate,

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlock Slippers",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Foot("Warlock"),
stats: (
protection: Normal(8.0)
),
)
),
quality: Moderate,
)

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlord Feet",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Foot("Warlord"),
stats: (
protection: Normal(8.0)
),
)
),
quality: Moderate,
)

View File

@ -5,8 +5,8 @@ ItemDef(
(
kind: Hand("Assassin"),
stats: (
protection: Normal(2.0)
),
protection: Normal(6.0)
),
)
),
quality: Moderate,

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlock Gloves",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Hand("Warlock"),
stats: (
protection: Normal(15.0)),
)
),
quality: Common,
)

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlord Handguards",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Hand("Warlord"),
stats: (
protection: Normal(15.0)),
)
),
quality: Common,
)

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlock",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Head("Warlock"),
stats: (
protection: Normal(10.0)),
)
),
quality: Common,
)

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlord Helmet",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Head("Warlord"),
stats: (
protection: Normal(10.0)),
)
),
quality: Common,
)

View File

@ -5,8 +5,8 @@ ItemDef(
(
kind: Pants("Assassin"),
stats: (
protection: Normal(5.0)
),
protection: Normal(10.0)
),
)
),
quality: Moderate,

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlock Kilt",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Pants("Warlock"),
stats: (
protection: Normal(30.0)
),
)
),
quality: Moderate,
)

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Warlord Legguards",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Pants("Warlord"),
stats: (
protection: Normal(30.0)
),
)
),
quality: Moderate,
)

View File

@ -5,8 +5,8 @@ ItemDef(
(
kind: Shoulder("Assassin"),
stats: (
protection: Normal(3.0)
),
protection: Normal(8.0)
),
)
),
quality: Moderate,

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlock Shoulders",
description: "Belong to a mighty warlock.",
kind: Armor(
(
kind: Shoulder("Warlock"),
stats: (
protection: Normal(22.0)),
)
),
quality: Common,
)

View File

@ -0,0 +1,12 @@
ItemDef(
name: "Warlord Shoulderguards",
description: "Belong to a mighty warlord.",
kind: Armor(
(
kind: Shoulder("Warlord"),
stats: (
protection: Normal(22.0)),
)
),
quality: Common,
)

View File

@ -1198,6 +1198,56 @@
"voxel.armor.shoulder.bonerattler_right",
(0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2,
),
//Warlord Set
Armor(Chest("Warlord")): VoxTrans(
"voxel.armor.chest.warlord",
(0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2,
),
Armor(Pants("Warlord")): VoxTrans(
"voxel.armor.pants.warlord",
(0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2,
),
Armor(Belt("Warlord")): VoxTrans(
"voxel.armor.belt.warlord",
(0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4,
),
Armor(Foot("Warlord")): VoxTrans(
"voxel.armor.foot.warlord",
(0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1,
),
Armor(Hand("Warlord")): VoxTrans(
"voxel.armor.hand.warlord_right",
(0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0,
),
Armor(Shoulder("Warlord")): VoxTrans(
"voxel.armor.shoulder.warlord_right",
(0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2,
),
//Warlock Set
Armor(Chest("Warlock")): VoxTrans(
"voxel.armor.chest.warlock",
(0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2,
),
Armor(Pants("Warlock")): VoxTrans(
"voxel.armor.pants.warlock",
(0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2,
),
Armor(Belt("Warlock")): VoxTrans(
"voxel.armor.belt.warlock",
(0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4,
),
Armor(Foot("Warlock")): VoxTrans(
"voxel.armor.foot.warlock",
(0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1,
),
Armor(Hand("Warlock")): VoxTrans(
"voxel.armor.hand.warlock_right",
(0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0,
),
Armor(Shoulder("Warlock")): VoxTrans(
"voxel.armor.shoulder.warlock_right",
(0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2,
),
//misc
Armor(Pants("Hunting")): VoxTrans(
"voxel.armor.pants.grayscale",
@ -1232,6 +1282,14 @@
"voxel.armor.back.backpack-0",
(0.0, 0.0, 0.0), (-90.0, 0.0, 0.0), 1.0,
),
Armor(Back("Warlord")): VoxTrans(
"voxel.armor.back.warlord",
(0.0, 0.0, 0.0), (-90.0, 0.0, 0.0), 1.0,
),
Armor(Back("Warlock")): VoxTrans(
"voxel.armor.back.warlock",
(0.0, 0.0, 0.0), (-90.0, 0.0, 0.0), 1.0,
),
// Rings
Armor(Ring("Ring0")): VoxTrans(
"voxel.armor.ring.simple_purp-0",

BIN
assets/voxygen/voxel/armor/back/warlock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/back/warlord.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/belt/warlock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/belt/warlord.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/chest/warlock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/chest/warlord.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/foot/warlock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/foot/warlord.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/hand/warlock_left.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/hand/warlock_right.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/hand/warlord_left.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/hand/warlord_right.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/head/warlock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/head/warlord.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pants/warlock.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/pants/warlord.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/shoulder/warlock_left.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/shoulder/warlock_right.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/shoulder/warlord_left.vox (Stored with Git LFS) Normal file

Binary file not shown.

BIN
assets/voxygen/voxel/armor/shoulder/warlord_right.vox (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -4,41 +4,49 @@
color: None
),
map: {
"Short0": (
vox_spec: ("armor.back.short-0", (-5.0, -1.0, -11.0)),
color: None
),
"Admin": (
vox_spec: ("armor.back.admin", (-5.0, -1.0, -11.0)),
color: None
),
"DungPurp0": (
vox_spec: ("armor.back.dung_purp-0", (-5.0, -1.0, -14.0)),
color: None
),
"Short1": (
vox_spec: ("armor.back.short-1", (-5.0, -1.0, -11.0)),
color: None
),
"Short2": (
vox_spec: ("armor.back.short-2", (-5.0, -1.0, -11.0)),
color: None
),
"Backpack0": (
vox_spec: ("armor.back.backpack-0", (-7.0, -5.0, -10.0)),
color: None
),
"BackpackBlue0": (
vox_spec: ("armor.back.backpack-grey", (-7.0, -5.0, -10.0)),
color: Some((76, 72, 178))
),
"VeloriteMage0": (
vox_spec: ("armor.back.velorite_battlemage", (-5.0, -1.0, -14.0)),
color: None
),
"LeatherBlue0": (
vox_spec: ("armor.back.leather_blue-0", (-5.0, -1.0, -11.0)),
color: None
),
"Short0": (
vox_spec: ("armor.back.short-0", (-5.0, -1.0, -11.0)),
color: None
),
"Admin": (
vox_spec: ("armor.back.admin", (-5.0, -1.0, -11.0)),
color: None
),
"DungPurp0": (
vox_spec: ("armor.back.dung_purp-0", (-5.0, -1.0, -14.0)),
color: None
),
"Short1": (
vox_spec: ("armor.back.short-1", (-5.0, -1.0, -11.0)),
color: None
),
"Short2": (
vox_spec: ("armor.back.short-2", (-5.0, -1.0, -11.0)),
color: None
),
"Backpack0": (
vox_spec: ("armor.back.backpack-0", (-7.0, -5.0, -10.0)),
color: None
),
"BackpackBlue0": (
vox_spec: ("armor.back.backpack-grey", (-7.0, -5.0, -10.0)),
color: Some((76, 72, 178))
),
"VeloriteMage0": (
vox_spec: ("armor.back.velorite_battlemage", (-5.0, -1.0, -14.0)),
color: None
),
"LeatherBlue0": (
vox_spec: ("armor.back.leather_blue-0", (-5.0, -1.0, -11.0)),
color: None
),
"Warlord": (
vox_spec: ("armor.back.warlord", (-5.0, -1.0, -14.0)),
color: None
),
"Warlock": (
vox_spec: ("armor.back.warlock", (-5.0, -1.5, -15.5)),
color: None
),
},
))

View File

@ -87,6 +87,14 @@
"VeloriteMage0": (
vox_spec: ("armor.belt.velorite_battlemage", (-5.0, -3.5, 2.0)),
color: None
),
),
"Warlord":(
vox_spec: ("armor.belt.warlord", (-4.0, -3.5, 1.0)),
color: None
),
"Warlock":(
vox_spec: ("armor.belt.warlock", (-4.0, -3.0, 2.0)),
color: None
),
},
))

View File

@ -88,27 +88,27 @@
"WorkerPurple0": (
vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)),
color: Some((64, 47, 56))
),
),
"WorkerPurple1": (
vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)),
color: Some((64, 47, 56))
),
),
"WorkerYellow0": (
vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)),
color: Some((184, 132, 40))
),
),
"WorkerYellow1": (
vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)),
color: Some((184, 132, 40))
),
color: Some((184, 132, 40))
),
"WorkerOrange0": (
vox_spec: ("armor.chest.worker_white-0", (-7.0, -3.5, 2.0)),
color: Some((135, 82, 67))
),
),
"WorkerOrange1": (
vox_spec: ("armor.chest.shirt_white-0", (-7.0, -3.5, 2.0)),
color: Some((135, 82, 67))
),
),
"Druid": (
vox_spec: ("armor.chest.druid", (-7.0, -3.5, 2.0)),
color: None
@ -153,7 +153,14 @@
"VeloriteMage0": (
vox_spec: ("armor.chest.velorite_battlemage", (-7.0, -3.5, 0.5)),
color: None
),
),
"Warlord": (
vox_spec: ("armor.chest.warlord", (-7.0, -3.5, -0.5)),
color: None
),
"Warlock": (
vox_spec: ("armor.chest.warlock", (-7.0, -3.5, 0.5)),
color: None
),
},
)
)
))

View File

@ -1,4 +1,4 @@
((
((
default: (
vox_spec: ("armor.foot.foot_none", (-2.5, -3.5, -2.0)),
color: None
@ -11,7 +11,7 @@
"Assassin": (
vox_spec: ("armor.foot.assa", (-2.5, -3.5, -2.0)),
color: None
),
),
"Jester": (
vox_spec: ("armor.foot.dark_jester-elf_shoe", (-2.5, -3.0, -2.0)),
color: None
@ -83,6 +83,14 @@
"VeloriteMage0": (
vox_spec: ("armor.foot.velorite_battlemage", (-2.5, -3.5, -2.0)),
color: None
),
),
"Warlord": (
vox_spec: ("armor.foot.warlord", (-2.5, -3.5, -2.0)),
color: None
),
"Warlock": (
vox_spec: ("armor.foot.warlock", (-2.5, -3.5, -2.0)),
color: None
),
},
))

View File

@ -190,5 +190,25 @@
color: None
)
),
"Warlord": (
left: (
vox_spec: ("armor.hand.warlord_left", (-3.0, -2.0, -5.0)),
color: None
),
right: (
vox_spec: ("armor.hand.warlord_right", (-2.0, -2.0, -5.0)),
color: None
)
),
"Warlock": (
left: (
vox_spec: ("armor.hand.warlock_left", (-4.5, -3.5, -5.0)),
color: None
),
right: (
vox_spec: ("armor.hand.warlock_right", (-2.5, -3.5, -5.0)),
color: None
)
),
},
))

View File

@ -31,7 +31,7 @@
"Kimono": (
vox_spec: ("armor.pants.cloth_red_kimono", (-5.0, -3.5, 0.0)),
color: None
),
),
"PlateGreen0": (
vox_spec: ("armor.pants.plate_green-0", (-5.0, -3.5, 1.0)),
color: None
@ -67,7 +67,7 @@
"CultistPurple": (
vox_spec: ("armor.pants.cultist", (-5.0, -3.5, 1.0)),
color: Some((30, 0, 64))
),
),
"Steel0": (
vox_spec: ("armor.pants.steel-0", (-6.0, -4.5, 1.0)),
color: None
@ -101,12 +101,20 @@
color: None
),
"VeloriteMage0": (
vox_spec: ("armor.pants.velorite_battlemage", (-6.0, -3.5, -2.0)),
color: None
),
"LeatherBlue0": (
vox_spec: ("armor.pants.leather_blue-0", (-5.0, -3.5, 1.0)),
color: None
),
vox_spec: ("armor.pants.velorite_battlemage", (-6.0, -3.5, -2.0)),
color: None
),
"LeatherBlue0": (
vox_spec: ("armor.pants.leather_blue-0", (-5.0, -3.5, 1.0)),
color: None
),
"Warlord": (
vox_spec: ("armor.pants.warlord", (-6.0, -4.5, -2.0)),
color: None
),
"Warlock": (
vox_spec: ("armor.pants.warlock", (-5.0, -4.0, -2.0)),
color: None
),
},
))

View File

@ -170,7 +170,7 @@
vox_spec: ("armor.shoulder.twigsflowers_shoulder_right", (-1.5, -5.0, 0.0)),
color: None
),
),
),
"ClothBlue1": (
left: (
vox_spec: ("armor.shoulder.cloth_blue_left-1", (-4.0, -2.5, -0.5)),
@ -240,7 +240,7 @@
vox_spec: ("armor.shoulder.leather_strips_right", (-2.0, -2.5, -2.0)),
color: None
)
),
),
"DruidShoulder": (
left: (
vox_spec: ("armor.shoulder.druid_left", (-4.0, -4.5 , -3.0)),
@ -281,5 +281,25 @@
color: None
)
),
"Warlord": (
left: (
vox_spec: ("armor.shoulder.warlord_left", (-8.0, -3.5 , -2.5)),
color: None
),
right: (
vox_spec: ("armor.shoulder.warlord_right", (-1.0, -3.5 , -2.5)),
color: None
)
),
"Warlock": (
left: (
vox_spec: ("armor.shoulder.warlock_left", (-6.0, -4.0 , -2.0)),
color: None
),
right: (
vox_spec: ("armor.shoulder.warlock_left", (0.0, -4.0, -2.0)),
color: None
)
),
},
))

View File

@ -30,8 +30,14 @@ use rand::Rng;
#[derive(Copy, Clone)]
pub enum LoadoutConfig {
Guard,
Cultist,
Villager,
Outcast,
Highwayman,
Bandit,
CultistNovice,
CultistAcolyte,
Warlord,
Warlock,
}
pub struct LoadoutBuilder(Loadout);
@ -89,27 +95,187 @@ impl LoadoutBuilder {
config: Option<LoadoutConfig>,
) -> Self {
let loadout = if let Some(config) = config {
let active_item = if let Some(ItemKind::Tool(_)) = main_tool.as_ref().map(|i| i.kind())
{
main_tool.map(|item| ItemConfig::from((item, map)))
} else {
Some(ItemConfig {
// We need the empty item so npcs can attack
item: Item::new_from_asset_expect("common.items.weapons.empty.empty"),
ability1: Some(CharacterAbility::default()),
ability2: None,
ability3: None,
block_ability: None,
dodge_ability: None,
})
};
use LoadoutConfig::*;
match config {
Guard => Loadout {
active_item: None,
active_item,
second_item: None,
shoulder: None,
chest: None,
belt: None,
hand: None,
pants: None,
foot: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.chain",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.steel_0",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.steel_0",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.steel_0",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.steel_0",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.steel_0",
)),
back: None,
ring: None,
neck: None,
lantern: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
Cultist => Loadout {
active_item: None,
Outcast => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.cloth_purple_0",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.cloth_purple_0",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.cloth_purple_0",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.cloth_purple_0",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.cloth_purple_0",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.cloth_purple_0",
)),
back: None,
ring: None,
neck: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
Highwayman => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.leather_0",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.leather_0",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.leather_0",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.leather_0",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.leather_0",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.leather_0",
)),
back: None,
ring: None,
neck: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
Bandit => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.assassin",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.assassin",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.assassin",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.assassin",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.assassin",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.assassin",
)),
back: None,
ring: None,
neck: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
CultistNovice => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.steel_0",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.steel_0",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.steel_0",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.steel_0",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.steel_0",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.steel_0",
)),
back: Some(Item::new_from_asset_expect(
"common.items.armor.back.dungeon_purple-0",
)),
ring: None,
neck: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
CultistAcolyte => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.cultist_shoulder_purple",
@ -142,10 +308,78 @@ impl LoadoutBuilder {
head: None,
tabard: None,
},
Warlord => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.warlord",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.warlord",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.warlord",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.warlord",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.warlord",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.warlord",
)),
back: Some(Item::new_from_asset_expect(
"common.items.armor.back.warlord",
)),
ring: None,
neck: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
Warlock => Loadout {
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.warlock",
)),
chest: Some(Item::new_from_asset_expect(
"common.items.armor.chest.warlock",
)),
belt: Some(Item::new_from_asset_expect(
"common.items.armor.belt.warlock",
)),
hand: Some(Item::new_from_asset_expect(
"common.items.armor.hand.warlock",
)),
pants: Some(Item::new_from_asset_expect(
"common.items.armor.pants.warlock",
)),
foot: Some(Item::new_from_asset_expect(
"common.items.armor.foot.warlock",
)),
back: Some(Item::new_from_asset_expect(
"common.items.armor.back.warlock",
)),
ring: None,
neck: None,
lantern: match rand::thread_rng().gen_range(0, 3) {
0 => Some(Item::new_from_asset_expect("common.items.lantern.black_0")),
_ => None,
},
glider: None,
head: None,
tabard: None,
},
Villager => {
if is_giant {
Loadout {
active_item: None,
active_item,
second_item: None,
shoulder: Some(Item::new_from_asset_expect(
"common.items.armor.shoulder.plate_0",
@ -179,7 +413,7 @@ impl LoadoutBuilder {
}
} else {
Loadout {
active_item: None,
active_item,
second_item: None,
shoulder: None,
chest: Some(Item::new_from_asset_expect(

View File

@ -587,88 +587,106 @@ impl Floor {
//.do_if(is_giant, |e| e.into_giant())
.with_body(comp::Body::Humanoid(comp::humanoid::Body::random()))
.with_alignment(comp::Alignment::Enemy)
.with_config(common::loadout_builder::LoadoutConfig::Cultist)
.with_config(common::loadout_builder::LoadoutConfig::CultistAcolyte)
.with_loot_drop(comp::Item::new_from_asset_expect(chosen))
.with_level(dynamic_rng.gen_range(
(room.difficulty as f32).powf(1.25) + 3.0,
(room.difficulty as f32).powf(1.5) + 4.0,
).round() as u32);
let entity = match room.difficulty {
0 => entity.with_name("Outcast").with_main_tool(
0 => entity.with_name("Outcast")
.with_config(common::loadout_builder::LoadoutConfig::Outcast)
.with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 6) {
0 => "common.items.npc_weapons.axe.malachite_axe-0",
1 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
2 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0",
4 => "common.items.npc_weapons.staff.cultist_staff",
_ => "common.items.npc_weapons.bow.horn_longbow-0",
0 => "common.items.weapons.axe.starter_axe",
1 => "common.items.weapons.sword.starter_sword",
2 => "common.items.weapons.sword.starter_sword",
3 => "common.items.weapons.hammer.starter_hammer",
4 => "common.items.weapons.staff.starter_staff",
_ => "common.items.weapons.bow.starter_bow",
},
),
),
1 => entity.with_name("Highwayman").with_main_tool(
1 => entity.with_name("Highwayman")
.with_config(common::loadout_builder::LoadoutConfig::Highwayman)
.with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 6) {
0 => "common.items.npc_weapons.axe.malachite_axe-0",
1 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
2 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0",
4 => "common.items.npc_weapons.staff.cultist_staff",
_ => "common.items.npc_weapons.bow.horn_longbow-0",
0 => "common.items.weapons.axe.worn_iron_axe-0",
1 => "common.items.weapons.sword.zweihander_sword_0",
2 => "common.items.weapons.sword.zweihander_sword_0",
3 => "common.items.weapons.hammer.worn_iron_hammer-0",
4 => "common.items.weapons.staff.bone_staff",
_ => "common.items.weapons.bow.wood_shortbow-1",
},
),
),
2 => entity.with_name("Bandit").with_main_tool(
2 => entity.with_name("Bandit")
.with_config(common::loadout_builder::LoadoutConfig::Bandit)
.with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 6) {
0 => "common.items.npc_weapons.axe.malachite_axe-0",
1 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
2 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0",
4 => "common.items.npc_weapons.staff.cultist_staff",
_ => "common.items.npc_weapons.bow.horn_longbow-0",
0 => "common.items.weapons.axe.bronze_axe-0",
1 => "common.items.weapons.sword.greatsword_2h_simple-0",
2 => "common.items.weapons.sword.cultist_purp_2h-0",
3 => "common.items.weapons.hammer.bronze_hammer-0",
4 => "common.items.weapons.staff.bone_staff",
_ => "common.items.weapons.bow.wood_longbow-0",
},
),
),
3 => entity.with_name("Cultist Novice").with_main_tool(
3 => entity.with_name("Cultist Novice")
.with_config(common::loadout_builder::LoadoutConfig::CultistNovice)
.with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 6) {
0 => "common.items.npc_weapons.axe.malachite_axe-0",
1 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
2 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0",
4 => "common.items.npc_weapons.staff.cultist_staff",
_ => "common.items.npc_weapons.bow.horn_longbow-0",
0 => "common.items.weapons.axe.steel_axe-0",
1 => "common.items.weapons.sword.long_2h_orn-0",
2 => "common.items.weapons.sword.long_2h_orn-0",
3 => "common.items.weapons.hammer.cobalt_hammer-0",
4 => "common.items.weapons.staff.amethyst_staff",
_ => "common.items.weapons.bow.horn_longbow-0",
},
),
),
4 => entity.with_name("Cultist Acolyte").with_main_tool(
4 => entity.with_name("Cultist Acolyte")
.with_config(common::loadout_builder::LoadoutConfig::CultistAcolyte)
.with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 6) {
0 => "common.items.npc_weapons.axe.malachite_axe-0",
1 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
2 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0",
4 => "common.items.npc_weapons.staff.cultist_staff",
_ => "common.items.npc_weapons.bow.horn_longbow-0",
0 => "common.items.weapons.axe.malachite_axe-0",
1 => "common.items.weapons.sword.cultist_purp_2h-0",
2 => "common.items.weapons.sword.cultist_purp_2h-0",
3 => "common.items.weapons.hammer.cultist_purp_2h-0",
4 => "common.items.weapons.staff.cultist_staff",
_ => "common.items.weapons.bow.horn_longbow-0",
},
),
),
5 => entity.with_name("Cultist Elite").with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 6) {
0 => "common.items.npc_weapons.axe.malachite_axe-0",
1 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
2 => "common.items.npc_weapons.sword.cultist_purp_2h-0",
3 => "common.items.npc_weapons.hammer.cultist_purp_2h-0",
4 => "common.items.npc_weapons.staff.cultist_staff",
_ => "common.items.npc_weapons.bow.horn_longbow-0",
},
5 => match dynamic_rng.gen_range(0, 6) {
0 => entity.with_name("Cultist Warlock")
.with_config(common::loadout_builder::LoadoutConfig::Warlock)
.with_main_tool(
comp::Item::new_from_asset_expect("common.items.npc_weapons.staff.cultist_staff"),
),
),
_ => entity.with_name("Cultist Warlord")
.with_config(common::loadout_builder::LoadoutConfig::Warlord)
.with_main_tool(
comp::Item::new_from_asset_expect(
match dynamic_rng.gen_range(0, 5) {
0 => "common.items.weapons.axe.malachite_axe-0",
1 => "common.items.weapons.sword.cultist_purp_2h-0",
2 => "common.items.weapons.sword.cultist_purp_2h-0",
3 => "common.items.weapons.hammer.cultist_purp_2h-0",
_ => "common.items.weapons.bow.horn_longbow-0",
},
),
),
},
_ => entity.with_name("Humanoid").with_main_tool(
comp::Item::new_from_asset_expect(
"common.items.npc_weapons.bow.horn_longbow-0",
"common.items.weapons.bow.horn_longbow-0",
),
),
};