halloween npcs:

in forests, spawn harvester or dullahans or tricksters with custom halloween loot: facegourd, pumpkin_spice_brew, honeygourd
This commit is contained in:
flo666 2022-10-19 23:25:10 +02:00
parent 3b2eba1457
commit 1d98050f28
18 changed files with 294 additions and 0 deletions

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Name("Dullahan"),
body: RandomWith("dullahan"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.calendar.halloween.halloween_dullahan"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -0,0 +1,11 @@
#![enable(implicit_some)]
(
name: Name("Harvester"),
body: RandomWith("harvester"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.calendar.halloween.halloween_harvester"),
inventory: (
loadout: FromBody,
),
meta: [],
)

View File

@ -0,0 +1,24 @@
#![enable(implicit_some)]
(
name: Name("Trickster"),
body: RandomWith("draugr"),
alignment: Alignment(Enemy),
loot: LootTable("common.loot_tables.calendar.halloween.trickster"),
inventory: (
loadout: Inline((
inherit: Asset("common.loadout.calendar.halloween.trickster"),
active_hands: InHands((Choice([
(1, Item("common.items.weapons.tool.broom")),
(1, Item("common.items.weapons.tool.hoe")),
(1, Item("common.items.weapons.tool.pickaxe")),
(1, Item("common.items.weapons.tool.rake")),
(1, Item("common.items.weapons.tool.shovel-0")),
(1, Item("common.items.weapons.tool.shovel-1")),
]), None)),
)),
items: [
(10, "common.items.consumable.potion_big"),
],
),
meta: [],
)

View File

@ -0,0 +1,13 @@
ItemDef(
name: "Pumpkin Head.",
description: "Halloween attire.",
kind: Armor((
kind: Head,
stats: Direct((
energy_max: Some(4.0),
energy_reward: Some(0.04),
)),
)),
quality: Common,
tags: [],
)

View File

@ -0,0 +1,22 @@
ItemDef(
name: "Honeycorn",
description: "Sweeet",
kind: Consumable(
kind: Food,
effects: [
Buff((
kind: Saturation,
data: (
strength: 4.0,
duration: Some((
secs: 5,
nanos: 0,
)),
),
cat_ids: [Natural],
)),
]
),
quality: Common,
tags: [Food],
)

View File

@ -0,0 +1,22 @@
ItemDef(
name: "Pumpkin Spice Brew",
description: "Brewed from moldy pumpkins.",
kind: Consumable(
kind: Drink,
effects: [
Buff((
kind: Saturation,
data: (
strength: 10.0,
duration: Some((
secs: 5,
nanos: 0,
)),
),
cat_ids: [Natural],
)),
]
),
quality: Moderate,
tags: [Food],
)

View File

@ -0,0 +1,31 @@
#![enable(implicit_some)]
(
head: Choice([
(1, Item("common.items.armor.misc.head.bamboo_twig")),
(1, Item("common.items.armor.misc.head.boreal_warhelm")),
(1, Item("common.items.armor.misc.head.crown")),
(1, Item("common.items.armor.misc.head.facegourd")),
(1, Item("common.items.armor.misc.head.headband")),
(1, Item("common.items.armor.misc.head.helmet")),
(1, Item("common.items.armor.misc.head.hog_hood")),
(1, Item("common.items.armor.misc.head.hood")),
(1, Item("common.items.armor.misc.head.hood_dark")),
(1, Item("common.items.armor.misc.head.mitre")),
(1, Item("common.items.armor.misc.head.spikeguard")),
(1, Item("common.items.armor.misc.head.straw")),
(1, Item("common.items.armor.misc.head.wanderers_hat")),
(1, Item("common.items.armor.misc.head.winged_coronet")),
(1, Item("common.items.armor.misc.head.bandana.red")),
(1, Item("common.items.armor.misc.head.bandana.thief")),
]),
chest: Choice([
(1, Item("common.items.armor.leather_plate.chest")),
]),
legs: Choice([
(1, Item("common.items.armor.leather_plate.pants")),
]),
feet: Choice([
(1, Item("common.items.armor.misc.foot.sandals")),
(1, Item("common.items.armor.cloth_blue.foot")),
]),
)

View File

@ -0,0 +1,4 @@
[
(1.0, Item("common.items.food.pumpkin_spice_brew")),
(5.0, Item("common.items.food.honeycorn")),
]

View File

@ -0,0 +1,9 @@
[
// Weapons
(5.0, LootTable("common.loot_tables.weapons.tier-3")),
// Armor
(5.0, LootTable("common.loot_tables.armor.tier-3")),
// Misc
(2.0, Item("common.items.armor.misc.head.facegourd")),
(2.0, Item("common.items.lantern.pumpkin")),
]

View File

@ -0,0 +1,4 @@
[
(1.0, Item("common.items.food.pumpkin_spice_brew")),
(5.0, Item("common.items.food.honeycorn")),
]

View File

@ -2858,6 +2858,10 @@
"voxel.armor.misc.head.spikeguard",
(0.0, 0.0, 0.0), (-120.0, 210.0,15.0), 1.3,
),
Simple("common.items.armor.misc.head.facegourd"): VoxTrans(
"voxel.armor.misc.head.facegourd",
(0.0, 0.0, 0.0), (-120.0, 210.0,15.0), 1.3,
),
Simple("common.items.armor.misc.head.winged_coronet"): VoxTrans(
"voxel.armor.misc.head.winged_coronet",
(0.0, 0.0, 0.0), (-120.0, 210.0,15.0), 1.3,
@ -3129,6 +3133,14 @@
"voxel.object.sunflower_ice_tea",
(0.0, 0.0, 0.0), (-50.0, -60.0, -35.0), 0.9,
),
Simple("common.items.food.pumpkin_spice_brew"): VoxTrans(
"voxel.object.pumpkin_spice_brew",
(0.0, 0.0, 0.0), (-50.0, -60.0, -35.0), 0.9,
),
Simple("common.items.food.honeycorn"): VoxTrans(
"voxel.object.honeycorn",
(0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9,
),
Simple("common.items.food.carrot"): VoxTrans(
"voxel.sprite.carrot.carrot",
(0.0, 0.0, 0.0), (-20.0, 10.0, 20.0), 0.9,

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

Binary file not shown.

View File

@ -960,6 +960,55 @@
vox_spec: ("armor.misc.head.spikeguard", (-3.0, -5.0, 7.0)),
color: None
),
//
(Human, Female, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-4.0, -5.0, -1.0)),
color: None
),
(Human, Male, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-4.0, -5.0, -1.0)),
color: None
),
(Elf, Female, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-3.0, -5.0, -1.0)),
color: None
),
(Elf, Male, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-3.0, -5.0, -1.0)),
color: None
),
(Orc, Female, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-3.0, -3.0, -1.0)),
color: None
),
(Orc, Male, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-3.0, -6.0, 2.0)),
color: None
),
(Dwarf, Female, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-5.0, -4.0, -1.0)),
color: None
),
(Dwarf, Male, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-3.0, -3.0, -1.0)),
color: None
),
(Draugr, Female, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-6.0, -5.0, -1.0)),
color: None
),
(Draugr, Male, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-6.0, -5.0, 1.0)),
color: None
),
(Danari, Female, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-2.0, -5.0, 1.0)),
color: None
),
(Danari, Male, "common.items.armor.misc.head.facegourd"): (
vox_spec: ("armor.misc.head.facegourd", (-2.0, -5.0, -1.0)),
color: None
),
// Merchant Turban
(Human, Male, "common.items.armor.merchant.turban"): (
vox_spec: ("armor.merchant.turban", (-4.0, -7.0, -6.0)),

View File

@ -720,6 +720,7 @@
Simple("common.items.armor.misc.head.crown"): "voxel.armor.misc.head.crown",
Simple("common.items.armor.misc.head.mitre"): "voxel.armor.misc.head.mitre",
Simple("common.items.armor.misc.head.spikeguard"): "voxel.armor.misc.head.spikeguard",
Simple("common.items.armor.misc.head.facegourd"): "voxel.armor.misc.head.facegourd",
Simple("common.items.armor.misc.head.winged_coronet"): "voxel.armor.misc.head.winged_coronet",
Simple("common.items.armor.misc.head.boreal_warhelm"): "voxel.armor.misc.head.boreal_warhelm",
Simple("common.items.calendar.christmas.armor.misc.head.woolly_wintercap"): "voxel.armor.misc.head.woolly_wintercap",
@ -793,6 +794,8 @@
Simple("common.items.food.apple_stick"): "voxel.object.apple_stick",
Simple("common.items.food.mushroom_stick"): "voxel.object.mushroom_stick",
Simple("common.items.food.sunflower_icetea"): "voxel.object.sunflower_ice_tea",
Simple("common.items.food.pumpkin_spice_brew"): "voxel.object.pumpkin_spice_brew",
Simple("common.items.food.honeycorn"): "voxel.object.honeycorn",
Simple("common.items.food.carrot"): "voxel.sprite.carrot.carrot",
Simple("common.items.food.tomato"): "voxel.sprite.tomato.tomato",
Simple("common.items.food.lettuce"): "voxel.sprite.cabbage.cabbage",

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

Binary file not shown.

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

Binary file not shown.

View File

@ -0,0 +1,17 @@
SpawnEntry (
name: "Halloween NPCs",
note: "Search for them in forests.",
rules: [
Pack(
groups: [
(1, (1, 1, "common.entity.calendar.halloween.aggressive.halloween_harvester")),
(1, (4, 8, "common.entity.calendar.halloween.aggressive.halloween_dullahan")),
(1, (6, 10, "common.entity.calendar.halloween.aggressive.trickster")),
],
spawn_mode: Land,
calendar_events: Some([Halloween]),
day_period: [Night, Morning, Noon, Evening],
),
],
)

View File

@ -167,6 +167,10 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
"world.wildlife.spawn.calendar.christmas.tundra.core",
|c, _col| close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * 0.5,
),
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, _col| close(c.temp, CONFIG.snow_temp, 0.15) * BASE_DENSITY * 0.5,
),
// Snowy animals
("world.wildlife.spawn.tundra.snow", |c, col| {
close(c.temp, CONFIG.snow_temp, 0.3) * BASE_DENSITY * col.snow_cover as i32 as f32 * 1.0
@ -181,6 +185,15 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
* 1.0
},
),
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, col| {
close(c.temp, CONFIG.snow_temp, 0.3)
* BASE_DENSITY
* col.snow_cover as i32 as f32
* 1.0
},
),
// Forest animals
("world.wildlife.spawn.tundra.forest", |c, col| {
close(c.temp, CONFIG.snow_temp, 0.3) * col.tree_density * BASE_DENSITY * 1.4
@ -190,6 +203,10 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
"world.wildlife.spawn.calendar.christmas.tundra.forest",
|c, col| close(c.temp, CONFIG.snow_temp, 0.3) * col.tree_density * BASE_DENSITY * 1.4,
),
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, col| close(c.temp, CONFIG.snow_temp, 0.3) * col.tree_density * BASE_DENSITY * 1.4,
),
// **Taiga**
// Forest core animals
("world.wildlife.spawn.taiga.core_forest", |c, col| {
@ -202,6 +219,12 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
close(c.temp, CONFIG.snow_temp + 0.2, 0.2) * col.tree_density * BASE_DENSITY * 0.4
},
),
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, col| {
close(c.temp, CONFIG.snow_temp + 0.2, 0.2) * col.tree_density * BASE_DENSITY * 0.4
},
),
// Core animals
("world.wildlife.spawn.taiga.core", |c, _col| {
close(c.temp, CONFIG.snow_temp + 0.2, 0.2) * BASE_DENSITY * 1.0
@ -243,6 +266,16 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
* BASE_DENSITY
* 4.0
}),
// Temperate Rainforest animals event
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, _col| {
close(c.temp, CONFIG.temperate_temp + 0.1, 0.6)
* close(c.humidity, CONFIG.forest_hum, 0.6)
* BASE_DENSITY
* 4.0
},
),
// Water animals
("world.wildlife.spawn.temperate.water", |c, col| {
close(c.temp, CONFIG.temperate_temp, 1.0) * col.tree_density * BASE_DENSITY * 5.0
@ -262,6 +295,16 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
* BASE_DENSITY
* 8.0
}),
// Jungle animals event
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, _col| {
close(c.temp, CONFIG.tropical_temp + 0.2, 0.3)
* close(c.humidity, CONFIG.jungle_hum, 0.2)
* BASE_DENSITY
* 8.0
},
),
// **Tropical**
// Rare river animals
("world.wildlife.spawn.tropical.river_rare", |_c, col| {
@ -308,6 +351,16 @@ pub fn spawn_manifest() -> Vec<(&'static str, DensityFn)> {
* BASE_DENSITY
* 2.0
}),
// Tropical Rainforest animals event
(
"world.wildlife.spawn.calendar.halloween.halloween",
|c, _col| {
close(c.temp, CONFIG.tropical_temp + 0.1, 0.4)
* close(c.humidity, CONFIG.desert_hum, 0.4)
* BASE_DENSITY
* 2.0
},
),
// Rock animals
("world.wildlife.spawn.tropical.rock", |c, col| {
close(c.temp, CONFIG.tropical_temp + 0.1, 0.5) * col.rock_density * BASE_DENSITY * 5.0