diff --git a/assets/common/cave_scatter.ron b/assets/common/cave_scatter.ron index 524ef2ff57..85cc78cfb2 100644 --- a/assets/common/cave_scatter.ron +++ b/assets/common/cave_scatter.ron @@ -7,6 +7,5 @@ (120, Mushroom), (8, ShinyGem), (15, Chest), - (2, Crate), - (0.25, Scarecrow), + (2, Crate), ] diff --git a/assets/common/items/armor/back/leather_adventurer.ron b/assets/common/items/armor/back/leather_adventurer.ron new file mode 100644 index 0000000000..75b55045d4 --- /dev/null +++ b/assets/common/items/armor/back/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Cape", + description: "'Tightly packed pieces of leather to endure all weather.'", + kind: Armor( + ( + kind: Back("Short2"), + stats: ( + protection: Normal(0.2), + ), + ) + ), +) diff --git a/assets/common/items/armor/back/short_0.ron b/assets/common/items/armor/back/short_0.ron index c53d6418dd..aefa27f930 100644 --- a/assets/common/items/armor/back/short_0.ron +++ b/assets/common/items/armor/back/short_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Back("Short0"), stats: ( - protection: Normal(0.2), + protection: Normal(0.3), ), ) ), diff --git a/assets/common/items/armor/belt/bonerattler.ron b/assets/common/items/armor/belt/bonerattler.ron new file mode 100644 index 0000000000..808e808942 --- /dev/null +++ b/assets/common/items/armor/belt/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Belt", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Belt("Bonerattler"), + stats: ( + protection: Normal(0.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/belt/leather_adventurer.ron b/assets/common/items/armor/belt/leather_adventurer.ron new file mode 100644 index 0000000000..fb17f34099 --- /dev/null +++ b/assets/common/items/armor/belt/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Belt", + description: "'Tightly packed pieces of leather to endure all weather.'", + kind: Armor( + ( + kind: Belt("Leather2"), + stats: ( + protection: Normal(1.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/belt/tarasque.ron b/assets/common/items/armor/belt/tarasque.ron new file mode 100644 index 0000000000..848722dd4a --- /dev/null +++ b/assets/common/items/armor/belt/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Belt", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Belt("Tarasque"), + stats: ( + protection: Normal(0.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/chest/bonerattler.ron b/assets/common/items/armor/chest/bonerattler.ron new file mode 100644 index 0000000000..ddc4e00e75 --- /dev/null +++ b/assets/common/items/armor/chest/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Cuirass", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Chest("Bonerattler"), + stats: ( + protection: Normal(25.0), + ), + ) + ), +) \ No newline at end of file diff --git a/assets/common/items/armor/chest/leather_adventurer.ron b/assets/common/items/armor/chest/leather_adventurer.ron new file mode 100644 index 0000000000..a2c90a5f69 --- /dev/null +++ b/assets/common/items/armor/chest/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Chest", + description: "'Tightly packed pieces of leather to endure all weather.'", + kind: Armor( + ( + kind: Chest("Leather2"), + stats: ( + protection: Normal(6.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/chest/tarasque.ron b/assets/common/items/armor/chest/tarasque.ron new file mode 100644 index 0000000000..ef73a183e7 --- /dev/null +++ b/assets/common/items/armor/chest/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Cuirass", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Chest("Tarasque"), + stats: ( + protection: Normal(25.0), + ), + ) + ), +) \ No newline at end of file diff --git a/assets/common/items/armor/foot/bonerattler.ron b/assets/common/items/armor/foot/bonerattler.ron new file mode 100644 index 0000000000..8226749815 --- /dev/null +++ b/assets/common/items/armor/foot/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Boots", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Foot("Bonerattler"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/foot/leather_adventurer.ron b/assets/common/items/armor/foot/leather_adventurer.ron new file mode 100644 index 0000000000..1b4dea02cd --- /dev/null +++ b/assets/common/items/armor/foot/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Kickers", + description: "'Tightly packed pieces of leather to endure all weather.", + kind: Armor( + ( + kind: Foot("Leather2"), + stats: ( + protection: Normal(2.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/foot/tarasque.ron b/assets/common/items/armor/foot/tarasque.ron new file mode 100644 index 0000000000..11ad855d63 --- /dev/null +++ b/assets/common/items/armor/foot/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Boots", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Foot("Tarasque"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/hand/bonerattler.ron b/assets/common/items/armor/hand/bonerattler.ron new file mode 100644 index 0000000000..46d6816db8 --- /dev/null +++ b/assets/common/items/armor/hand/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Gauntlets", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Hand("Bonerattler"), + stats: ( + protection: Normal(10.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/hand/leather_adventurer.ron b/assets/common/items/armor/hand/leather_adventurer.ron new file mode 100644 index 0000000000..4989e08539 --- /dev/null +++ b/assets/common/items/armor/hand/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Gauntlets", + description: "'Tightly packed pieces of leather to endure all weather.'", + kind: Armor( + ( + kind: Hand("Leather2"), + stats: ( + protection: Normal(4.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/hand/tarasque.ron b/assets/common/items/armor/hand/tarasque.ron new file mode 100644 index 0000000000..b45f0e558a --- /dev/null +++ b/assets/common/items/armor/hand/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Gauntlets", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Hand("Tarasque"), + stats: ( + protection: Normal(10.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/neck/neck_0.ron b/assets/common/items/armor/neck/neck_0.ron index 14b1138acd..12c315a85a 100644 --- a/assets/common/items/armor/neck/neck_0.ron +++ b/assets/common/items/armor/neck/neck_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Neck("Neck0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/neck/neck_1.ron b/assets/common/items/armor/neck/neck_1.ron index 8f231cc3ce..a6b3f8d919 100644 --- a/assets/common/items/armor/neck/neck_1.ron +++ b/assets/common/items/armor/neck/neck_1.ron @@ -5,7 +5,7 @@ Item( ( kind: Neck("Neck1"), stats: ( - protection: Normal(0.5), + protection: Normal(2.0), ), ) ), diff --git a/assets/common/items/armor/pants/bonerattler.ron b/assets/common/items/armor/pants/bonerattler.ron new file mode 100644 index 0000000000..17dcc30fe5 --- /dev/null +++ b/assets/common/items/armor/pants/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Chausses", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Pants("Bonerattler"), + stats: ( + protection: Normal(20.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/pants/leather_adventurer.ron b/assets/common/items/armor/pants/leather_adventurer.ron new file mode 100644 index 0000000000..994cd00036 --- /dev/null +++ b/assets/common/items/armor/pants/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Pantalons", + description: "'Tightly packed pieces of leather to endure all weather.'", + kind: Armor( + ( + kind: Pants("Leather2"), + stats: ( + protection: Normal(8.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/pants/tarasque.ron b/assets/common/items/armor/pants/tarasque.ron new file mode 100644 index 0000000000..12e61dc342 --- /dev/null +++ b/assets/common/items/armor/pants/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Chausses", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Pants("Tarasque"), + stats: ( + protection: Normal(20.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/shoulder/bonerattler.ron b/assets/common/items/armor/shoulder/bonerattler.ron new file mode 100644 index 0000000000..892e762b45 --- /dev/null +++ b/assets/common/items/armor/shoulder/bonerattler.ron @@ -0,0 +1,12 @@ +Item( + name: "Bonerattler Shoulder Pad", + description: "Made from the strongest bones.", + kind: Armor( + ( + kind: Shoulder("Bonerattler"), + stats: ( + protection: Normal(15.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/shoulder/cloth_blue_0.ron b/assets/common/items/armor/shoulder/cloth_blue_0.ron index 30a8d609ca..f4a94d3830 100644 --- a/assets/common/items/armor/shoulder/cloth_blue_0.ron +++ b/assets/common/items/armor/shoulder/cloth_blue_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothBlue0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/cloth_blue_1.ron b/assets/common/items/armor/shoulder/cloth_blue_1.ron index 4cd8b91535..4914b0a328 100644 --- a/assets/common/items/armor/shoulder/cloth_blue_1.ron +++ b/assets/common/items/armor/shoulder/cloth_blue_1.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothBlue1"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/cloth_green_0.ron b/assets/common/items/armor/shoulder/cloth_green_0.ron index c9c89d70e2..ff3bdcac2a 100644 --- a/assets/common/items/armor/shoulder/cloth_green_0.ron +++ b/assets/common/items/armor/shoulder/cloth_green_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothGreen0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/cloth_purple_0.ron b/assets/common/items/armor/shoulder/cloth_purple_0.ron index 8cede44f9d..1de3f3abec 100644 --- a/assets/common/items/armor/shoulder/cloth_purple_0.ron +++ b/assets/common/items/armor/shoulder/cloth_purple_0.ron @@ -5,7 +5,7 @@ Item( ( kind: Shoulder("ClothPurple0"), stats: ( - protection: Normal(0.0), + protection: Normal(1.0), ), ) ), diff --git a/assets/common/items/armor/shoulder/leather_adventurer.ron b/assets/common/items/armor/shoulder/leather_adventurer.ron new file mode 100644 index 0000000000..8fe773a58d --- /dev/null +++ b/assets/common/items/armor/shoulder/leather_adventurer.ron @@ -0,0 +1,12 @@ +Item( + name: "Agile Guards", + description: "'Tightly packed pieces of leather to endure all weather.'", + kind: Armor( + ( + kind: Shoulder("Leather2"), + stats: ( + protection: Normal(6.0), + ), + ) + ), +) diff --git a/assets/common/items/armor/shoulder/tarasque.ron b/assets/common/items/armor/shoulder/tarasque.ron new file mode 100644 index 0000000000..8afbfb9fcf --- /dev/null +++ b/assets/common/items/armor/shoulder/tarasque.ron @@ -0,0 +1,12 @@ +Item( + name: "Tarasque Shoulder Pad", + description: "As strong as a tarasque shell.", + kind: Armor( + ( + kind: Shoulder("Tarasque"), + stats: ( + protection: Normal(15.0), + ), + ) + ), +) diff --git a/assets/common/items/boss_drops/lantern.ron b/assets/common/items/boss_drops/lantern.ron index 26228ef77d..85b829d6ca 100644 --- a/assets/common/items/boss_drops/lantern.ron +++ b/assets/common/items/boss_drops/lantern.ron @@ -4,8 +4,8 @@ Item( kind: Lantern( ( kind: "Blue0", - color: (r: 220, g: 220, b: 255), - strength_thousandths: 6500, + color: (r: 128, g: 26, b: 255), + strength_thousandths: 8500, flicker_thousandths: 300, ), ), diff --git a/assets/common/items/debug/cultist_purp_2h_boss-0.ron b/assets/common/items/debug/cultist_purp_2h_boss-0.ron new file mode 100644 index 0000000000..bdae5745c0 --- /dev/null +++ b/assets/common/items/debug/cultist_purp_2h_boss-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Admin Greatsword", + description: "Shouldn't this be a hammer?", + kind: Tool( + ( + kind: Sword("CultPurp0"), + stats: ( + equip_time_millis: 0, + power: 1000.0, + ), + ) + ), +) diff --git a/assets/common/items/lantern/black_0.ron b/assets/common/items/lantern/black_0.ron index 1b948eca89..9eb9156099 100644 --- a/assets/common/items/lantern/black_0.ron +++ b/assets/common/items/lantern/black_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Black0", - color: (r: 255, g: 190, b: 75), + color: (r: 255, g: 128, b: 26), strength_thousandths: 3000, flicker_thousandths: 300, ), diff --git a/assets/common/items/lantern/blue_0.ron b/assets/common/items/lantern/blue_0.ron index 31231f9e47..a9e88083ed 100644 --- a/assets/common/items/lantern/blue_0.ron +++ b/assets/common/items/lantern/blue_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Blue0", - color: (r: 64, g: 127, b: 153), + color: (r: 255, g: 128, b: 26), strength_thousandths: 4000, flicker_thousandths: 250, ), diff --git a/assets/common/items/lantern/green_0.ron b/assets/common/items/lantern/green_0.ron index 6675d3ff77..8ccb9a38df 100644 --- a/assets/common/items/lantern/green_0.ron +++ b/assets/common/items/lantern/green_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Green0", - color: (r: 192, g: 255, b: 76), + color: (r: 255, g: 128, b: 26), strength_thousandths: 4000, flicker_thousandths: 500, ), diff --git a/assets/common/items/lantern/red_0.ron b/assets/common/items/lantern/red_0.ron index 47ee0b73ba..f320f8afbc 100644 --- a/assets/common/items/lantern/red_0.ron +++ b/assets/common/items/lantern/red_0.ron @@ -4,7 +4,7 @@ Item( kind: Lantern( ( kind: "Red0", - color: (r: 255, g: 127, b: 51), + color: (r: 255, g: 128, b: 26), strength_thousandths: 3500, flicker_thousandths: 1000, ), diff --git a/assets/common/items/npc_armor/back/dungeon_purple-0.ron b/assets/common/items/npc_armor/back/dungeon_purple-0.ron new file mode 100644 index 0000000000..325c85adcb --- /dev/null +++ b/assets/common/items/npc_armor/back/dungeon_purple-0.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Cape", + description: "Smells like dark magic and candles.", + kind: Armor( + ( + kind: Back("DungPurp0"), + stats: ( + protection: Normal(1.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/belt/cultist_belt.ron b/assets/common/items/npc_armor/belt/cultist_belt.ron new file mode 100644 index 0000000000..6b856636c6 --- /dev/null +++ b/assets/common/items/npc_armor/belt/cultist_belt.ron @@ -0,0 +1,12 @@ +Item( + name: "Cultist Belt", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Belt("Cultist"), + stats: ( + protection: Normal(0.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/cultist_chest_purple.ron b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron new file mode 100644 index 0000000000..ed500e8f1f --- /dev/null +++ b/assets/common/items/npc_armor/chest/cultist_chest_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Chest", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Chest("CultistPurple"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_green_0.ron b/assets/common/items/npc_armor/chest/worker_green_0.ron new file mode 100644 index 0000000000..fa343fddb7 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_green_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Green Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerGreen0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_green_1.ron b/assets/common/items/npc_armor/chest/worker_green_1.ron new file mode 100644 index 0000000000..23b84137cf --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_green_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Green Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerGreen1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_orange_0.ron b/assets/common/items/npc_armor/chest/worker_orange_0.ron new file mode 100644 index 0000000000..bc07617dcf --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_orange_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Orange Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerOrange0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_orange_1.ron b/assets/common/items/npc_armor/chest/worker_orange_1.ron new file mode 100644 index 0000000000..6c605d452c --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_orange_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Orange Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerOrange1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_purple_0.ron b/assets/common/items/npc_armor/chest/worker_purple_0.ron new file mode 100644 index 0000000000..6a234e994e --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_purple_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerPurple0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_purple_1.ron b/assets/common/items/npc_armor/chest/worker_purple_1.ron new file mode 100644 index 0000000000..35bcc56647 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_purple_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerPurple1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_red_0.ron b/assets/common/items/npc_armor/chest/worker_red_0.ron new file mode 100644 index 0000000000..bbee3cbc2a --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_red_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Red Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerRed0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_red_1.ron b/assets/common/items/npc_armor/chest/worker_red_1.ron new file mode 100644 index 0000000000..4b0966ee51 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_red_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Red Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerRed1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_yellow_0.ron b/assets/common/items/npc_armor/chest/worker_yellow_0.ron new file mode 100644 index 0000000000..d59b94169c --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_yellow_0.ron @@ -0,0 +1,12 @@ +Item( + name: "Yellow Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerYellow0"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/chest/worker_yellow_1.ron b/assets/common/items/npc_armor/chest/worker_yellow_1.ron new file mode 100644 index 0000000000..d8db355878 --- /dev/null +++ b/assets/common/items/npc_armor/chest/worker_yellow_1.ron @@ -0,0 +1,12 @@ +Item( + name: "Yellow Worker Shirt", + description: "Was used by a farmer, until recently.", + kind: Armor( + ( + kind: Chest("WorkerYellow1"), + stats: ( + protection: Normal(80.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/foot/cultist_boots.ron b/assets/common/items/npc_armor/foot/cultist_boots.ron new file mode 100644 index 0000000000..da1de15c1a --- /dev/null +++ b/assets/common/items/npc_armor/foot/cultist_boots.ron @@ -0,0 +1,12 @@ +Item( + name: "Cultist Boots", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Foot("Cultist"), + stats: ( + protection: Normal(1.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/hand/cultist_hands_purple.ron b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron new file mode 100644 index 0000000000..220c1fab77 --- /dev/null +++ b/assets/common/items/npc_armor/hand/cultist_hands_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Gloves", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Hand("CultistPurple"), + stats: ( + protection: Normal(2.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/pants/cultist_legs_purple.ron b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron new file mode 100644 index 0000000000..0eaf1e95ab --- /dev/null +++ b/assets/common/items/npc_armor/pants/cultist_legs_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Skirt", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Pants("CultistPurple"), + stats: ( + protection: Normal(10.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron new file mode 100644 index 0000000000..ccf9691a7d --- /dev/null +++ b/assets/common/items/npc_armor/shoulder/cultist_shoulder_purple.ron @@ -0,0 +1,12 @@ +Item( + name: "Purple Cultist Mantle", + description: "Ceremonial attire used by members.", + kind: Armor( + ( + kind: Shoulder("CultistPurple"), + stats: ( + protection: Normal(5.0), + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/axe/malachite_axe-0.ron b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron new file mode 100644 index 0000000000..c639db3dd8 --- /dev/null +++ b/assets/common/items/npc_weapons/axe/malachite_axe-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Malachite Axe", + description: "An axe infused with malachite.", + kind: Tool( + ( + kind: Axe("MalachiteAxe0"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/axe/starter_axe.ron b/assets/common/items/npc_weapons/axe/starter_axe.ron new file mode 100644 index 0000000000..ccdd0c527c --- /dev/null +++ b/assets/common/items/npc_weapons/axe/starter_axe.ron @@ -0,0 +1,13 @@ +Item( + name: "Notched Axe", + description: "Every dent tells the story of a chopped tree.", + kind: Tool( + ( + kind: Axe("BasicAxe"), + stats: ( + equip_time_millis: 400, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/bow/horn_longbow-0.ron b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron new file mode 100644 index 0000000000..6c055bfa3e --- /dev/null +++ b/assets/common/items/npc_weapons/bow/horn_longbow-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Horn Bow", + description: "You don't recognize the creature these horns belong to.", + kind: Tool( + ( + kind: Bow("HornLongbow0"), + stats: ( + equip_time_millis: 400, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/dagger/starter_dagger.ron b/assets/common/items/npc_weapons/dagger/starter_dagger.ron new file mode 100644 index 0000000000..9d24de8e09 --- /dev/null +++ b/assets/common/items/npc_weapons/dagger/starter_dagger.ron @@ -0,0 +1,13 @@ +Item( + name: "Rusty Dagger", + description: "Easily concealed.", + kind: Tool( + ( + kind: Dagger("BasicDagger"), + stats: ( + equip_time_millis: 300, + power: 1.00, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/empty/empty.ron b/assets/common/items/npc_weapons/empty/empty.ron new file mode 100644 index 0000000000..489101c9f0 --- /dev/null +++ b/assets/common/items/npc_weapons/empty/empty.ron @@ -0,0 +1,13 @@ +Item( + name: "Empty", + description: "You expected a description?", + kind: Tool ( + ( + kind: Empty, + stats: ( + equip_time_millis: 200, + power: 1.00, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron new file mode 100644 index 0000000000..d384a3eb88 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/cultist_purp_2h-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Magical Cultist Warhammer", + description: "This belonged to an evil Cult Leader.", + kind: Tool( + ( + kind: Hammer("CultPurp0"), + stats: ( + equip_time_millis: 500, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/hammer/starter_hammer.ron b/assets/common/items/npc_weapons/hammer/starter_hammer.ron new file mode 100644 index 0000000000..e871d6cc38 --- /dev/null +++ b/assets/common/items/npc_weapons/hammer/starter_hammer.ron @@ -0,0 +1,13 @@ +Item( + name: "Sturdy Old Hammer", + description: "'Property of...' The rest is missing.", + kind: Tool( + ( + kind: Hammer("BasicHammer"), + stats: ( + equip_time_millis: 500, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/shield/shield_1.ron b/assets/common/items/npc_weapons/shield/shield_1.ron new file mode 100644 index 0000000000..6fe9c4a971 --- /dev/null +++ b/assets/common/items/npc_weapons/shield/shield_1.ron @@ -0,0 +1,13 @@ +Item( + name: "A Tattered Targe", + description: "Should withstand a few more hits, hopefully...", + kind: Tool ( + ( + kind: Shield("BasicShield"), + stats: ( + equip_time_millis: 400, + power: 1.00, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/staff/bone_staff.ron b/assets/common/items/npc_weapons/staff/bone_staff.ron new file mode 100644 index 0000000000..a5675f2690 --- /dev/null +++ b/assets/common/items/npc_weapons/staff/bone_staff.ron @@ -0,0 +1,13 @@ +Item( + name: "Bone Staff", + description: "There's a red gem suspended in the bones.", + kind: Tool( + ( + kind: Staff("BoneStaff"), + stats: ( + equip_time_millis: 300, + power: 0.8, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/staff/cultist_staff.ron b/assets/common/items/npc_weapons/staff/cultist_staff.ron new file mode 100644 index 0000000000..f4ebacea3f --- /dev/null +++ b/assets/common/items/npc_weapons/staff/cultist_staff.ron @@ -0,0 +1,13 @@ +Item( + name: "Cultist Staff", + description: "The fire gives off no heat.", + kind: Tool( + ( + kind: Staff("CultistStaff"), + stats: ( + equip_time_millis: 300, + power: 0.8, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron new file mode 100644 index 0000000000..19bcd0369e --- /dev/null +++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Magical Cultist Greatsword", + description: "This belonged to an evil Cult Leader.", + kind: Tool( + ( + kind: Sword("CultPurp0"), + stats: ( + equip_time_millis: 500, + power: 0.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron new file mode 100644 index 0000000000..085690bc07 --- /dev/null +++ b/assets/common/items/npc_weapons/sword/cultist_purp_2h_boss-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Magical Cultist Greatsword", + description: "This belonged to an evil Cult Leader.", + kind: Tool( + ( + kind: Sword("CultPurp0"), + stats: ( + equip_time_millis: 500, + power: 1.0, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/starter_sword.ron b/assets/common/items/npc_weapons/sword/starter_sword.ron new file mode 100644 index 0000000000..5eef68dca3 --- /dev/null +++ b/assets/common/items/npc_weapons/sword/starter_sword.ron @@ -0,0 +1,13 @@ +Item( + name: "Battered Sword", + description: "Held together by Rust and hope.", + kind: Tool( + ( + kind: Sword("BasicSword"), + stats: ( + equip_time_millis: 300, + power: 0.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron new file mode 100644 index 0000000000..35819b476e --- /dev/null +++ b/assets/common/items/npc_weapons/sword/zweihander_sword_0.ron @@ -0,0 +1,13 @@ +Item( + name: "Sturdy Zweihander", + description: "It's a big sword, and sharp too.", + kind: Tool( + ( + kind: Sword("Zweihander0"), + stats: ( + equip_time_millis: 500, + power: 0.2, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/broom.ron b/assets/common/items/npc_weapons/tool/broom.ron new file mode 100644 index 0000000000..dfb46a6da7 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/broom.ron @@ -0,0 +1,13 @@ +Item( + name: "Broom", + description: "It's beginning to fall apart.", + kind: Tool ( + ( + kind: Farming("Broom"), + stats: ( + equip_time_millis: 400, + power: 1.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/fishing_rod.ron b/assets/common/items/npc_weapons/tool/fishing_rod.ron new file mode 100644 index 0000000000..0768f74587 --- /dev/null +++ b/assets/common/items/npc_weapons/tool/fishing_rod.ron @@ -0,0 +1,13 @@ +Item( + name: "Fishing Rod", + description: "Smells of fish.", + kind: Tool ( + ( + kind: Farming("FishingRod0"), + stats: ( + equip_time_millis: 400, + power: 1.5, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/hoe.ron b/assets/common/items/npc_weapons/tool/hoe.ron new file mode 100644 index 0000000000..7c66734bbf --- /dev/null +++ b/assets/common/items/npc_weapons/tool/hoe.ron @@ -0,0 +1,13 @@ +Item( + name: "Hoe", + description: "It's stained with dirt.", + kind: Tool ( + ( + kind: Farming("Hoe0"), + stats: ( + equip_time_millis: 400, + power: 1.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/pickaxe.ron b/assets/common/items/npc_weapons/tool/pickaxe.ron new file mode 100644 index 0000000000..303be8c20b --- /dev/null +++ b/assets/common/items/npc_weapons/tool/pickaxe.ron @@ -0,0 +1,13 @@ +Item( + name: "Pickaxe", + description: "It has a chipped edge.", + kind: Tool ( + ( + kind: Farming("Pickaxe0"), + stats: ( + equip_time_millis: 400, + power: 1.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/pitchfork.ron b/assets/common/items/npc_weapons/tool/pitchfork.ron new file mode 100644 index 0000000000..3ddc68a41b --- /dev/null +++ b/assets/common/items/npc_weapons/tool/pitchfork.ron @@ -0,0 +1,13 @@ +Item( + name: "Pitchfork", + description: "One of the prongs is broken.", + kind: Tool ( + ( + kind: Farming("Pitchfork"), + stats: ( + equip_time_millis: 400, + power: 1.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/rake.ron b/assets/common/items/npc_weapons/tool/rake.ron new file mode 100644 index 0000000000..774edea21e --- /dev/null +++ b/assets/common/items/npc_weapons/tool/rake.ron @@ -0,0 +1,13 @@ +Item( + name: "Rake", + description: "Held together with twine.", + kind: Tool ( + ( + kind: Farming("Rake"), + stats: ( + equip_time_millis: 400, + power: 1.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/shovel-0.ron b/assets/common/items/npc_weapons/tool/shovel-0.ron new file mode 100644 index 0000000000..77e7dc26eb --- /dev/null +++ b/assets/common/items/npc_weapons/tool/shovel-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Shovel", + description: "It's covered in manure.", + kind: Tool ( + ( + kind: Farming("Shovel0"), + stats: ( + equip_time_millis: 400, + power: 1.50, + ), + ) + ), +) diff --git a/assets/common/items/npc_weapons/tool/shovel-1.ron b/assets/common/items/npc_weapons/tool/shovel-1.ron new file mode 100644 index 0000000000..ab4f5aae8f --- /dev/null +++ b/assets/common/items/npc_weapons/tool/shovel-1.ron @@ -0,0 +1,13 @@ +Item( + name: "Shovel", + description: "It's been recently cleaned.", + kind: Tool ( + ( + kind: Farming("Shovel1"), + stats: ( + equip_time_millis: 400, + power: 1.50, + ), + ) + ), +) diff --git a/assets/common/items/weapons/bow/nature_ore_longbow-0.ron b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron new file mode 100644 index 0000000000..170d018d34 --- /dev/null +++ b/assets/common/items/weapons/bow/nature_ore_longbow-0.ron @@ -0,0 +1,13 @@ +Item( + name: "Velorite Bow", + description: "Infused with Velorite power.", + kind: Tool( + ( + kind: Bow("NatureOreLongbow"), + stats: ( + equip_time_millis: 400, + power: 2.00, + ), + ) + ), +) diff --git a/assets/common/items/weapons/bow/wood_shortbow-0.ron b/assets/common/items/weapons/bow/wood_shortbow-0.ron index 6cddcfbff2..c655669510 100644 --- a/assets/common/items/weapons/bow/wood_shortbow-0.ron +++ b/assets/common/items/weapons/bow/wood_shortbow-0.ron @@ -6,7 +6,7 @@ Item( kind: Bow("WoodShortbow0"), stats: ( equip_time_millis: 400, - power: 0.75, + power: 1.0, ), ) ), diff --git a/assets/common/items/weapons/staff/sceptre_velorite_0.ron b/assets/common/items/weapons/staff/sceptre_velorite_0.ron new file mode 100644 index 0000000000..e3fbad60ff --- /dev/null +++ b/assets/common/items/weapons/staff/sceptre_velorite_0.ron @@ -0,0 +1,13 @@ +Item( + name: "Velorite Sceptre", + description: "Heals your allies with the mystical Velorite aura.", + kind: Tool( + ( + kind: Staff("SceptreVelorite"), + stats: ( + equip_time_millis: 400, + power: 2.0, + ), + ) + ), +) diff --git a/assets/common/items/weapons/sword/wood_sword.ron b/assets/common/items/weapons/sword/wood_sword.ron index dc985ebae6..a8b9d3a140 100644 --- a/assets/common/items/weapons/sword/wood_sword.ron +++ b/assets/common/items/weapons/sword/wood_sword.ron @@ -1,12 +1,12 @@ Item( - name: "Wooden Training Sword", + name: "Wooden Sword", description: "It's not sharp.", kind: Tool( ( kind: Sword("WoodTraining"), stats: ( equip_time_millis: 400, - power: 0.50, + power: 1.0, ), ) ), diff --git a/assets/common/loot_table.ron b/assets/common/loot_table.ron deleted file mode 100644 index f0a98900c7..0000000000 --- a/assets/common/loot_table.ron +++ /dev/null @@ -1,234 +0,0 @@ -[ - // All loot rates go here - // food - (3, "common.items.food.cheese"), - (3, "common.items.food.apple"), - (3, "common.items.food.mushroom"), - (1, "common.items.food.coconut"), - // miscellaneous - (0.4, "common.items.ore.velorite"), - (0.6, "common.items.ore.veloritefrag"), - (0.1, "common.items.consumable.potion_minor"), - (0.01, "common.items.utility.collar"), - (0.01, "common.items.utility.bomb_pile"), - (0.1, "common.items.utility.bomb"), - // crafting ingredients - (2, "common.items.crafting_ing.leather_scraps"), - (1, "common.items.crafting_ing.empty_vial"), - // swords - (0.1, "common.items.weapons.sword.starter_sword"), - (0.1, "common.items.weapons.sword.wood_sword"), - (0.1, "common.items.weapons.sword.short_sword_0"), - (0.06, "common.items.weapons.sword.greatsword_2h_dam-0"), - (0.06, "common.items.weapons.sword.greatsword_2h_dam-1"), - (0.06, "common.items.weapons.sword.greatsword_2h_dam-2"), - (0.03, "common.items.weapons.sword.greatsword_2h_simple-0"), - (0.03, "common.items.weapons.sword.greatsword_2h_simple-1"), - (0.03, "common.items.weapons.sword.greatsword_2h_simple-2"), - (0.01, "common.items.weapons.sword.greatsword_2h_orn-0"), - (0.01, "common.items.weapons.sword.greatsword_2h_orn-1"), - (0.01, "common.items.weapons.sword.greatsword_2h_orn-2"), - (0.04, "common.items.weapons.sword.long_2h_dam-0"), - (0.04, "common.items.weapons.sword.long_2h_dam-1"), - (0.04, "common.items.weapons.sword.long_2h_dam-2"), - (0.04, "common.items.weapons.sword.long_2h_dam-3"), - (0.04, "common.items.weapons.sword.long_2h_dam-4"), - (0.04, "common.items.weapons.sword.long_2h_dam-5"), - (0.02, "common.items.weapons.sword.long_2h_simple-0"), - (0.02, "common.items.weapons.sword.long_2h_simple-1"), - (0.02, "common.items.weapons.sword.long_2h_simple-2"), - (0.02, "common.items.weapons.sword.long_2h_simple-3"), - (0.02, "common.items.weapons.sword.long_2h_simple-4"), - (0.02, "common.items.weapons.sword.long_2h_simple-5"), - (0.007, "common.items.weapons.sword.long_2h_orn-0"), - (0.007, "common.items.weapons.sword.long_2h_orn-1"), - (0.007, "common.items.weapons.sword.long_2h_orn-2"), - (0.007, "common.items.weapons.sword.long_2h_orn-3"), - (0.007, "common.items.weapons.sword.long_2h_orn-4"), - (0.007, "common.items.weapons.sword.long_2h_orn-5"), - (0.01, "common.items.weapons.sword.zweihander_sword_0"), - // axes - (0.10, "common.items.weapons.axe.starter_axe"), - (0.10, "common.items.weapons.axe.orc_axe-0"), - (0.04, "common.items.weapons.axe.worn_iron_axe-0"), - (0.04, "common.items.weapons.axe.worn_iron_axe-1"), - (0.04, "common.items.weapons.axe.worn_iron_axe-2"), - (0.04, "common.items.weapons.axe.worn_iron_axe-3"), - (0.04, "common.items.weapons.axe.worn_iron_axe-4"), - (0.10, "common.items.weapons.axe.bronze_axe-0"), - (0.10, "common.items.weapons.axe.bronze_axe-1"), - (0.03, "common.items.weapons.axe.iron_axe-0"), - (0.03, "common.items.weapons.axe.iron_axe-1"), - (0.03, "common.items.weapons.axe.iron_axe-2"), - (0.03, "common.items.weapons.axe.iron_axe-3"), - (0.03, "common.items.weapons.axe.iron_axe-4"), - (0.03, "common.items.weapons.axe.iron_axe-5"), - (0.03, "common.items.weapons.axe.iron_axe-6"), - (0.03, "common.items.weapons.axe.iron_axe-7"), - (0.03, "common.items.weapons.axe.iron_axe-8"), - (0.03, "common.items.weapons.axe.iron_axe-9"), - (0.02, "common.items.weapons.axe.steel_axe-0"), - (0.02, "common.items.weapons.axe.steel_axe-1"), - (0.02, "common.items.weapons.axe.steel_axe-2"), - (0.02, "common.items.weapons.axe.steel_axe-3"), - (0.02, "common.items.weapons.axe.steel_axe-4"), - (0.02, "common.items.weapons.axe.steel_axe-5"), - (0.02, "common.items.weapons.axe.steel_axe-6"), - (0.01, "common.items.weapons.axe.bloodsteel_axe-0"), - (0.01, "common.items.weapons.axe.bloodsteel_axe-1"), - (0.01, "common.items.weapons.axe.bloodsteel_axe-2"), - (0.01, "common.items.weapons.axe.cobalt_axe-0"), - (0.01, "common.items.weapons.axe.malachite_axe-0"), - // healing staff - (0.8, "common.items.weapons.staff.staff_nature"), - // staves - (0.50, "common.items.weapons.staff.starter_staff"), - (0.35, "common.items.weapons.staff.bone_staff"), - (0.15, "common.items.weapons.staff.amethyst_staff"), - //(0.01, "common.items.weapons.staff.cultist_staff"), - // hammers - (0.05, "common.items.weapons.hammer.starter_hammer"), - (0.05, "common.items.weapons.hammer.wood_hammer-0"), - (0.05, "common.items.weapons.hammer.flimsy_hammer"), - (0.05, "common.items.weapons.hammer.stone_hammer-0"), - (0.05, "common.items.weapons.hammer.stone_hammer-1"), - (0.05, "common.items.weapons.hammer.stone_hammer-2"), - (0.05, "common.items.weapons.hammer.stone_hammer-3"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), - (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), - (0.05, "common.items.weapons.hammer.bronze_hammer-0"), - (0.05, "common.items.weapons.hammer.bronze_hammer-1"), - (0.03, "common.items.weapons.hammer.iron_hammer-0"), - (0.03, "common.items.weapons.hammer.iron_hammer-1"), - (0.03, "common.items.weapons.hammer.iron_hammer-2"), - (0.03, "common.items.weapons.hammer.iron_hammer-3"), - (0.03, "common.items.weapons.hammer.iron_hammer-4"), - (0.03, "common.items.weapons.hammer.iron_hammer-5"), - (0.03, "common.items.weapons.hammer.iron_hammer-6"), - (0.03, "common.items.weapons.hammer.iron_hammer-7"), - (0.03, "common.items.weapons.hammer.iron_hammer-8"), - (0.02, "common.items.weapons.hammer.steel_hammer-0"), - (0.02, "common.items.weapons.hammer.steel_hammer-1"), - (0.02, "common.items.weapons.hammer.steel_hammer-2"), - (0.02, "common.items.weapons.hammer.steel_hammer-3"), - (0.02, "common.items.weapons.hammer.steel_hammer-4"), - (0.02, "common.items.weapons.hammer.steel_hammer-5"), - (0.01, "common.items.weapons.hammer.cobalt_hammer-0"), - (0.01, "common.items.weapons.hammer.cobalt_hammer-1"), - (0.01, "common.items.weapons.hammer.runic_hammer"), - (0.01, "common.items.weapons.hammer.ramshead_hammer"), - (0.01, "common.items.weapons.hammer.mjolnir"), - // bows - (0.20, "common.items.weapons.bow.starter_bow"), - (0.15, "common.items.weapons.bow.wood_shortbow-0"), - (0.15, "common.items.weapons.bow.wood_shortbow-1"), - (0.10, "common.items.weapons.bow.leafy_shortbow-0"), - (0.10, "common.items.weapons.bow.wood_longbow-0"), - (0.10, "common.items.weapons.bow.wood_longbow-1"), - (0.08, "common.items.weapons.bow.leafy_longbow-0"), - (0.05, "common.items.weapons.bow.horn_longbow-0"), - (0.03, "common.items.weapons.bow.iron_longbow-0"), - (0.01, "common.items.weapons.bow.rare_longbow"), - // belts - (0.17, "common.items.armor.belt.cloth_blue_0"), - (0.17, "common.items.armor.belt.cloth_green_0"), - (0.17, "common.items.armor.belt.cloth_purple_0"), - (0.08, "common.items.armor.belt.druid"), - (0.06, "common.items.armor.belt.leather_0"), - (0.06, "common.items.armor.belt.leather_2"), - (0.02, "common.items.armor.belt.twig"), - (0.02, "common.items.armor.belt.twigsflowers"), - (0.02, "common.items.armor.belt.twigsleaves"), - (0.03, "common.items.armor.belt.plate_0"), - (0.01, "common.items.armor.belt.steel_0"), - // chests - (0.08, "common.items.armor.chest.cloth_blue_0"), - (0.08, "common.items.armor.chest.cloth_green_0"), - (0.08, "common.items.armor.chest.cloth_purple_0"), - (0.025, "common.items.armor.chest.worker_green_0"), - (0.025, "common.items.armor.chest.worker_green_1"), - (0.025, "common.items.armor.chest.worker_orange_0"), - (0.025, "common.items.armor.chest.worker_orange_1"), - (0.025, "common.items.armor.chest.worker_purple_0"), - (0.025, "common.items.armor.chest.worker_purple_1"), - (0.025, "common.items.armor.chest.worker_red_0"), - (0.025, "common.items.armor.chest.worker_red_1"), - (0.025, "common.items.armor.chest.worker_yellow_0"), - (0.025, "common.items.armor.chest.worker_yellow_1"), - (0.08, "common.items.armor.chest.druid"), - (0.06, "common.items.armor.chest.leather_0"), - (0.06, "common.items.armor.chest.leather_2"), - (0.02, "common.items.armor.chest.twig"), - (0.02, "common.items.armor.chest.twigsflowers"), - (0.02, "common.items.armor.chest.twigsleaves"), - (0.03, "common.items.armor.chest.plate_green_0"), - (0.01, "common.items.armor.chest.steel_0"), - // shoes - (0.15, "common.items.armor.foot.cloth_blue_0"), - (0.15, "common.items.armor.foot.cloth_green_0"), - (0.15, "common.items.armor.foot.cloth_purple_0"), - (0.08, "common.items.armor.foot.druid"), - (0.06, "common.items.armor.foot.leather_0"), - (0.06, "common.items.armor.foot.leather_2"), - (0.02, "common.items.armor.foot.twig"), - (0.02, "common.items.armor.foot.twigsflowers"), - (0.02, "common.items.armor.foot.twigsleaves"), - (0.03, "common.items.armor.foot.plate_0"), - (0.01, "common.items.armor.foot.steel_0"), - // pants - (0.125, "common.items.armor.pants.cloth_blue_0"), - (0.125, "common.items.armor.pants.cloth_green_0"), - (0.125, "common.items.armor.pants.cloth_purple_0"), - (0.125, "common.items.armor.pants.worker_blue_0"), - (0.08, "common.items.armor.pants.druid"), - (0.04, "common.items.armor.pants.leather_0"), - (0.04, "common.items.armor.pants.leather_2"), - (0.04, "common.items.armor.pants.hunting"), - (0.02, "common.items.armor.pants.twig"), - (0.02, "common.items.armor.pants.twigsflowers"), - (0.02, "common.items.armor.pants.twigsleaves"), - (0.03, "common.items.armor.pants.plate_green_0"), - (0.01, "common.items.armor.pants.steel_0"), - // shoulders - (0.125, "common.items.armor.shoulder.cloth_blue_0"), - (0.125, "common.items.armor.shoulder.cloth_blue_1"), - (0.125, "common.items.armor.shoulder.cloth_green_0"), - (0.125, "common.items.armor.shoulder.cloth_purple_0"), - (0.06, "common.items.armor.shoulder.druidshoulder"), - (0.06, "common.items.armor.shoulder.leather_strips"), - (0.04, "common.items.armor.shoulder.leather_0"), - (0.04, "common.items.armor.shoulder.leather_1"), - (0.04, "common.items.armor.shoulder.leather_2"), - (0.01, "common.items.armor.shoulder.twigs"), - (0.01, "common.items.armor.shoulder.twigsflowers"), - (0.01, "common.items.armor.shoulder.twigsleaves"), - (0.01, "common.items.armor.shoulder.leather_iron_0"), - (0.01, "common.items.armor.shoulder.leather_iron_1"), - (0.01, "common.items.armor.shoulder.leather_iron_2"), - (0.01, "common.items.armor.shoulder.leather_iron_3"), - (0.015, "common.items.armor.shoulder.plate_0"), - (0.015, "common.items.armor.shoulder.iron_spikes"), - (0.01, "common.items.armor.shoulder.steel_0"), - //gloves - (0.17, "common.items.armor.hand.cloth_blue_0"), - (0.17, "common.items.armor.hand.cloth_green_0"), - (0.17, "common.items.armor.hand.cloth_purple_0"), - (0.08, "common.items.armor.hand.druid"), - (0.06, "common.items.armor.hand.leather_0"), - (0.06, "common.items.armor.hand.leather_2"), - (0.02, "common.items.armor.hand.twig"), - (0.02, "common.items.armor.hand.twigsflowers"), - (0.02, "common.items.armor.hand.twigsleaves"), - (0.03, "common.items.armor.hand.plate_0"), - (0.01, "common.items.armor.hand.steel_0"), - // rings - (0.6, "common.items.armor.ring.ring_0"), - // capes - (0.6, "common.items.armor.back.short_0"), - (0.7, "common.items.armor.back.short_1"), - // necks - (0.6, "common.items.armor.neck.neck_0"), - (0.4, "common.items.armor.neck.neck_1"), -] diff --git a/assets/common/loot_tables/loot_table.ron b/assets/common/loot_tables/loot_table.ron new file mode 100644 index 0000000000..9504a3ce9d --- /dev/null +++ b/assets/common/loot_tables/loot_table.ron @@ -0,0 +1,4 @@ +[ + // Fallback loot table + (1, "common.items.food.mushroom"), +] diff --git a/assets/common/loot_tables/loot_table_animal_parts.ron b/assets/common/loot_tables/loot_table_animal_parts.ron new file mode 100644 index 0000000000..6358ba4cbe --- /dev/null +++ b/assets/common/loot_tables/loot_table_animal_parts.ron @@ -0,0 +1,3 @@ +[ + (2, "common.items.crafting_ing.leather_scraps"), +] diff --git a/assets/common/loot_tables/loot_table_armor_cloth.ron b/assets/common/loot_tables/loot_table_armor_cloth.ron new file mode 100644 index 0000000000..5640a27b42 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_cloth.ron @@ -0,0 +1,38 @@ +[ + // belts + (0.33, "common.items.armor.belt.cloth_blue_0"), + (0.33, "common.items.armor.belt.cloth_green_0"), + (0.33, "common.items.armor.belt.cloth_purple_0"), + // chests + (0.08, "common.items.armor.chest.cloth_blue_0"), + (0.08, "common.items.armor.chest.cloth_green_0"), + (0.08, "common.items.armor.chest.cloth_purple_0"), + (0.08, "common.items.armor.chest.worker_green_0"), + (0.08, "common.items.armor.chest.worker_green_1"), + (0.08, "common.items.armor.chest.worker_orange_0"), + (0.08, "common.items.armor.chest.worker_orange_1"), + (0.08, "common.items.armor.chest.worker_purple_0"), + (0.08, "common.items.armor.chest.worker_purple_1"), + (0.08, "common.items.armor.chest.worker_red_0"), + (0.08, "common.items.armor.chest.worker_red_1"), + (0.08, "common.items.armor.chest.worker_yellow_0"), + (0.08, "common.items.armor.chest.worker_yellow_1"), + // shoes + (0.33, "common.items.armor.foot.cloth_blue_0"), + (0.33, "common.items.armor.foot.cloth_green_0"), + (0.33, "common.items.armor.foot.cloth_purple_0"), + // pants + (0.25, "common.items.armor.pants.cloth_blue_0"), + (0.25, "common.items.armor.pants.cloth_green_0"), + (0.25, "common.items.armor.pants.cloth_purple_0"), + (0.25, "common.items.armor.pants.worker_blue_0"), + // shoulders + (0.25, "common.items.armor.shoulder.cloth_blue_0"), + (0.25, "common.items.armor.shoulder.cloth_blue_1"), + (0.25, "common.items.armor.shoulder.cloth_green_0"), + (0.25, "common.items.armor.shoulder.cloth_purple_0"), + //gloves + (0.33, "common.items.armor.hand.cloth_blue_0"), + (0.33, "common.items.armor.hand.cloth_green_0"), + (0.33, "common.items.armor.hand.cloth_purple_0"), +] diff --git a/assets/common/loot_tables/loot_table_armor_heavy.ron b/assets/common/loot_tables/loot_table_armor_heavy.ron new file mode 100644 index 0000000000..66afe487b8 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_heavy.ron @@ -0,0 +1,21 @@ +[ + // belts + (0.67, "common.items.armor.belt.plate_0"), + (0.33, "common.items.armor.belt.steel_0"), + // chests + (0.67, "common.items.armor.chest.plate_green_0"), + (0.33, "common.items.armor.chest.steel_0"), + // shoes + (0.67, "common.items.armor.foot.plate_0"), + (0.33, "common.items.armor.foot.steel_0"), + // pants + (0.67, "common.items.armor.pants.plate_green_0"), + (0.66, "common.items.armor.pants.steel_0"), + // shoulders + (0.40, "common.items.armor.shoulder.plate_0"), + (0.37, "common.items.armor.shoulder.iron_spikes"), + (0.33, "common.items.armor.shoulder.steel_0"), + //gloves + (0.67, "common.items.armor.hand.plate_0"), + (0.33, "common.items.armor.hand.steel_0"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_light.ron b/assets/common/loot_tables/loot_table_armor_light.ron new file mode 100644 index 0000000000..e25ec5760c --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_light.ron @@ -0,0 +1,27 @@ +[ + // belts + (0.50, "common.items.armor.belt.leather_0"), + (0.50, "common.items.armor.belt.leather_2"), + // chests + (0.50, "common.items.armor.chest.leather_0"), + (0.50, "common.items.armor.chest.leather_2"), + // shoes + (0.50, "common.items.armor.foot.leather_0"), + (0.50, "common.items.armor.foot.leather_2"), + // pants + (0.33, "common.items.armor.pants.leather_0"), + (0.33, "common.items.armor.pants.leather_2"), + (0.33, "common.items.armor.pants.hunting"), + // shoulders + (0.10, "common.items.armor.shoulder.leather_strips"), + (0.20, "common.items.armor.shoulder.leather_0"), + (0.20, "common.items.armor.shoulder.leather_1"), + (0.20, "common.items.armor.shoulder.leather_2"), + (0.07, "common.items.armor.shoulder.leather_iron_0"), + (0.07, "common.items.armor.shoulder.leather_iron_1"), + (0.07, "common.items.armor.shoulder.leather_iron_2"), + (0.07, "common.items.armor.shoulder.leather_iron_3"), + //gloves + (0.50, "common.items.armor.hand.leather_0"), + (0.50, "common.items.armor.hand.leather_2"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_misc.ron b/assets/common/loot_tables/loot_table_armor_misc.ron new file mode 100644 index 0000000000..26bebecd6d --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_misc.ron @@ -0,0 +1,10 @@ +[ + // rings + (0.50, "common.items.armor.ring.ring_0"), + // capes + (0.25, "common.items.armor.back.short_0"), + (0.25, "common.items.armor.back.short_1"), + // necks + (0.25, "common.items.armor.neck.neck_0"), + +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_armor_nature.ron b/assets/common/loot_tables/loot_table_armor_nature.ron new file mode 100644 index 0000000000..fa371a7938 --- /dev/null +++ b/assets/common/loot_tables/loot_table_armor_nature.ron @@ -0,0 +1,32 @@ +[ + // belts + (0.40, "common.items.armor.belt.druid"), + (0.20, "common.items.armor.belt.twig"), + (0.20, "common.items.armor.belt.twigsflowers"), + (0.20, "common.items.armor.belt.twigsleaves"), + // chests + (0.40, "common.items.armor.chest.druid"), + (0.20, "common.items.armor.chest.twig"), + (0.20, "common.items.armor.chest.twigsflowers"), + (0.20, "common.items.armor.chest.twigsleaves"), + // shoes + (0.40, "common.items.armor.foot.druid"), + (0.20, "common.items.armor.foot.twig"), + (0.20, "common.items.armor.foot.twigsflowers"), + (0.20, "common.items.armor.foot.twigsleaves"), + // pants + (0.40, "common.items.armor.pants.druid"), + (0.20, "common.items.armor.pants.twig"), + (0.20, "common.items.armor.pants.twigsflowers"), + (0.20, "common.items.armor.pants.twigsleaves"), + // shoulders + (0.40, "common.items.armor.shoulder.druidshoulder"), + (0.20, "common.items.armor.shoulder.twigs"), + (0.20, "common.items.armor.shoulder.twigsflowers"), + (0.20, "common.items.armor.shoulder.twigsleaves"), + //gloves + (0.40, "common.items.armor.hand.druid"), + (0.20, "common.items.armor.hand.twig"), + (0.20, "common.items.armor.hand.twigsflowers"), + (0.20, "common.items.armor.hand.twigsleaves"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_boss_cultist-leader.ron b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron new file mode 100644 index 0000000000..3fa2f313b8 --- /dev/null +++ b/assets/common/loot_tables/loot_table_boss_cultist-leader.ron @@ -0,0 +1,16 @@ +[ + // armor + (1, "common.items.armor.belt.cultist_belt"), + (1, "common.items.armor.chest.cultist_chest_purple"), + (1, "common.items.armor.foot.cultist_boots"), + (1, "common.items.armor.hand.cultist_hands_purple"), + (1, "common.items.armor.pants.cultist_legs_purple"), + (1, "common.items.armor.shoulder.cultist_shoulder_purple"), + (1, "common.items.armor.back.dungeon_purple-0"), + // weapons + (1, "common.items.weapons.staff.cultist_staff"), + (1, "common.items.weapons.hammer.cultist_purp_2h-0"), + (1, "common.items.weapons.sword.cultist_purp_2h-0"), + // misc + (1, "common.items.boss_drops.lantern"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_cave_large.ron b/assets/common/loot_tables/loot_table_cave_large.ron new file mode 100644 index 0000000000..7d5133c374 --- /dev/null +++ b/assets/common/loot_tables/loot_table_cave_large.ron @@ -0,0 +1,56 @@ +[ + // Misc + (0.25, "common.items.armor.neck.neck_1"), + // swords + (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-0"), + (0.08, "common.items.weapons.sword.long_2h_orn-1"), + (0.08, "common.items.weapons.sword.long_2h_orn-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-3"), + (0.08, "common.items.weapons.sword.long_2h_orn-4"), + (0.08, "common.items.weapons.sword.long_2h_orn-5"), + (0.20, "common.items.weapons.sword.zweihander_sword_0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-2"), + // axes + (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), + (0.30, "common.items.weapons.axe.cobalt_axe-0"), + (0.10, "common.items.weapons.axe.malachite_axe-0"), + (0.04, "common.items.weapons.axe.iron_axe-7"), + (0.04, "common.items.weapons.axe.iron_axe-8"), + (0.04, "common.items.weapons.axe.iron_axe-9"), + (0.04, "common.items.weapons.axe.steel_axe-0"), + (0.04, "common.items.weapons.axe.steel_axe-1"), + (0.04, "common.items.weapons.axe.steel_axe-2"), + (0.04, "common.items.weapons.axe.steel_axe-3"), + (0.04, "common.items.weapons.axe.steel_axe-4"), + (0.04, "common.items.weapons.axe.steel_axe-5"), + (0.04, "common.items.weapons.axe.steel_axe-6"), + // healing staff + (0.5, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.bone_staff"), + (1.00, "common.items.weapons.staff.amethyst_staff"), + (0.1, "common.items.weapons.staff.sceptre_velorite_0"), + // hammers + (0.30, "common.items.weapons.hammer.cobalt_hammer-0"), + (0.30, "common.items.weapons.hammer.cobalt_hammer-1"), + (0.15, "common.items.weapons.hammer.runic_hammer"), + (0.15, "common.items.weapons.hammer.ramshead_hammer"), + (0.04, "common.items.weapons.hammer.iron_hammer-7"), + (0.04, "common.items.weapons.hammer.iron_hammer-8"), + (0.05, "common.items.weapons.hammer.steel_hammer-0"), + (0.05, "common.items.weapons.hammer.steel_hammer-1"), + (0.05, "common.items.weapons.hammer.steel_hammer-2"), + (0.05, "common.items.weapons.hammer.steel_hammer-3"), + (0.05, "common.items.weapons.hammer.steel_hammer-4"), + (0.05, "common.items.weapons.hammer.steel_hammer-5"), + // bows + (0.1, "common.items.weapons.bow.nature_ore_longbow-0"), + + +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_consumables.ron b/assets/common/loot_tables/loot_table_consumables.ron new file mode 100644 index 0000000000..f4dfab8089 --- /dev/null +++ b/assets/common/loot_tables/loot_table_consumables.ron @@ -0,0 +1,14 @@ +[ + // potions + (1, "common.items.consumable.potion_minor"), + (0.1, "common.items.consumable.potion_med"), + (0.01, "common.items.consumable.potion_big"), + // bombs + (0.6, "common.items.utility.bomb"), + (0.2, "common.items.utility.bomb_pile"), + // velorite + (1, "common.items.ore.veloritefrag"), + (0.5, "common.items.ore.velorite"), + // misc + (0.1, "common.items.utility.collar"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_crafting.ron b/assets/common/loot_tables/loot_table_crafting.ron new file mode 100644 index 0000000000..0e7185ff68 --- /dev/null +++ b/assets/common/loot_tables/loot_table_crafting.ron @@ -0,0 +1,7 @@ +[ + // crafting ingredients + (2, "common.items.crafting_ing.leather_scraps"), + (1, "common.items.crafting_ing.empty_vial"), + (0.10, "common.items.crafting_ing.shiny_gem"), + +] diff --git a/assets/common/loot_tables/loot_table_cultists.ron b/assets/common/loot_tables/loot_table_cultists.ron new file mode 100644 index 0000000000..750e241f21 --- /dev/null +++ b/assets/common/loot_tables/loot_table_cultists.ron @@ -0,0 +1,206 @@ +[ + // Food + // simple + (3, "common.items.food.cheese"), + (3, "common.items.food.apple"), + (3, "common.items.food.mushroom"), + (3, "common.items.food.coconut"), + // crafted + (0.5, "common.items.food.apple_mushroom_curry"), + (0.5, "common.items.food.apple_stick"), + (0.5, "common.items.food.mushroom_stick"), + // Misc + (0.25, "common.items.armor.neck.neck_1"), + // Heavy Armour + // belts + (0.5, "common.items.armor.belt.plate_0"), + (0.3, "common.items.armor.belt.steel_0"), + // chests + (0.5, "common.items.armor.chest.plate_green_0"), + (0.3, "common.items.armor.chest.steel_0"), + // shoes + (0.5, "common.items.armor.foot.plate_0"), + (0.3, "common.items.armor.foot.steel_0"), + // pants + (0.5, "common.items.armor.pants.plate_green_0"), + (0.3, "common.items.armor.pants.steel_0"), + // shoulders + (0.40, "common.items.armor.shoulder.plate_0"), + (0.37, "common.items.armor.shoulder.iron_spikes"), + (0.33, "common.items.armor.shoulder.steel_0"), + //gloves + (0.67, "common.items.armor.hand.plate_0"), + (0.33, "common.items.armor.hand.steel_0"), + //Light Armour + // belts + (0.50, "common.items.armor.belt.leather_0"), + (0.50, "common.items.armor.belt.leather_2"), + // chests + (0.50, "common.items.armor.chest.leather_0"), + (0.50, "common.items.armor.chest.leather_2"), + // shoes + (0.50, "common.items.armor.foot.leather_0"), + (0.50, "common.items.armor.foot.leather_2"), + // pants + (0.33, "common.items.armor.pants.leather_0"), + (0.33, "common.items.armor.pants.leather_2"), + (0.33, "common.items.armor.pants.hunting"), + // shoulders + (0.6, "common.items.armor.shoulder.leather_strips"), + (0.4, "common.items.armor.shoulder.leather_0"), + (0.4, "common.items.armor.shoulder.leather_1"), + (0.4, "common.items.armor.shoulder.leather_2"), + (0.3, "common.items.armor.shoulder.leather_iron_0"), + (0.3, "common.items.armor.shoulder.leather_iron_1"), + (0.3, "common.items.armor.shoulder.leather_iron_2"), + (0.3, "common.items.armor.shoulder.leather_iron_3"), + //gloves + (0.50, "common.items.armor.hand.leather_0"), + (0.50, "common.items.armor.hand.leather_2"), + // Common Weapons + // swords + (0.4, "common.items.weapons.sword.wood_sword"), + (0.3, "common.items.weapons.sword.long_2h_dam-0"), + (0.3, "common.items.weapons.sword.long_2h_dam-1"), + (0.3, "common.items.weapons.sword.long_2h_dam-2"), + (0.3, "common.items.weapons.sword.long_2h_dam-3"), + (0.3, "common.items.weapons.sword.long_2h_dam-4"), + (0.3, "common.items.weapons.sword.long_2h_dam-5"), + (0.25, "common.items.weapons.sword.short_sword_0"), + (0.1, "common.items.weapons.sword.greatsword_2h_dam-0"), + (0.1, "common.items.weapons.sword.greatsword_2h_dam-1"), + (0.1, "common.items.weapons.sword.greatsword_2h_dam-2"), + // axes + (0.20, "common.items.weapons.axe.orc_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // hammers + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-1"), + (0.10, "common.items.weapons.hammer.stone_hammer-2"), + (0.10, "common.items.weapons.hammer.stone_hammer-3"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), + // bows + (0.25, "common.items.weapons.bow.wood_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-1"), + // Uncommon Weapons + // swords + (0.05, "common.items.weapons.sword.long_2h_simple-0"), + (0.05, "common.items.weapons.sword.long_2h_simple-1"), + (0.05, "common.items.weapons.sword.long_2h_simple-2"), + (0.05, "common.items.weapons.sword.long_2h_simple-3"), + (0.05, "common.items.weapons.sword.long_2h_simple-4"), + (0.05, "common.items.weapons.sword.long_2h_simple-5"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-0"), + (0.06, "common.items.weapons.sword.long_2h_fine-1"), + (0.06, "common.items.weapons.sword.long_2h_fine-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-3"), + (0.06, "common.items.weapons.sword.long_2h_fine-4"), + (0.06, "common.items.weapons.sword.long_2h_fine-5"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-0"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"), + // axes + (0.15, "common.items.weapons.axe.bronze_axe-0"), + (0.15, "common.items.weapons.axe.bronze_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-0"), + (0.04, "common.items.weapons.axe.iron_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-2"), + (0.04, "common.items.weapons.axe.iron_axe-3"), + (0.04, "common.items.weapons.axe.iron_axe-4"), + (0.04, "common.items.weapons.axe.iron_axe-5"), + (0.04, "common.items.weapons.axe.iron_axe-6"), + (0.04, "common.items.weapons.axe.iron_axe-7"), + (0.04, "common.items.weapons.axe.iron_axe-8"), + (0.04, "common.items.weapons.axe.iron_axe-9"), + (0.04, "common.items.weapons.axe.steel_axe-0"), + (0.04, "common.items.weapons.axe.steel_axe-1"), + (0.04, "common.items.weapons.axe.steel_axe-2"), + (0.04, "common.items.weapons.axe.steel_axe-3"), + (0.04, "common.items.weapons.axe.steel_axe-4"), + (0.04, "common.items.weapons.axe.steel_axe-5"), + (0.04, "common.items.weapons.axe.steel_axe-6"), + // healing staff + (0.5, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.bone_staff"), + // hammers + (0.15, "common.items.weapons.hammer.bronze_hammer-0"), + (0.15, "common.items.weapons.hammer.bronze_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-0"), + (0.04, "common.items.weapons.hammer.iron_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-2"), + (0.04, "common.items.weapons.hammer.iron_hammer-3"), + (0.04, "common.items.weapons.hammer.iron_hammer-4"), + (0.04, "common.items.weapons.hammer.iron_hammer-5"), + (0.04, "common.items.weapons.hammer.iron_hammer-6"), + (0.04, "common.items.weapons.hammer.iron_hammer-7"), + (0.04, "common.items.weapons.hammer.iron_hammer-8"), + (0.05, "common.items.weapons.hammer.steel_hammer-0"), + (0.05, "common.items.weapons.hammer.steel_hammer-1"), + (0.05, "common.items.weapons.hammer.steel_hammer-2"), + (0.05, "common.items.weapons.hammer.steel_hammer-3"), + (0.05, "common.items.weapons.hammer.steel_hammer-4"), + (0.05, "common.items.weapons.hammer.steel_hammer-5"), + // bows + (0.30, "common.items.weapons.bow.leafy_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-1"), + (0.20, "common.items.weapons.bow.leafy_longbow-0"), + // Rare Weapons + // swords + (0.08, "common.items.weapons.sword.long_2h_orn-0"), + (0.08, "common.items.weapons.sword.long_2h_orn-1"), + (0.08, "common.items.weapons.sword.long_2h_orn-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-3"), + (0.08, "common.items.weapons.sword.long_2h_orn-4"), + (0.08, "common.items.weapons.sword.long_2h_orn-5"), + (0.20, "common.items.weapons.sword.zweihander_sword_0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-2"), + // axes + (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), + (0.30, "common.items.weapons.axe.cobalt_axe-0"), + (0.10, "common.items.weapons.axe.malachite_axe-0"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.amethyst_staff"), + // hammers + (0.01, "common.items.weapons.hammer.cobalt_hammer-0"), + (0.01, "common.items.weapons.hammer.cobalt_hammer-1"), + (0.01, "common.items.weapons.hammer.runic_hammer"), + (0.1, "common.items.weapons.hammer.ramshead_hammer"), + (0.001, "common.items.weapons.hammer.mjolnir"), + // bows + (0.6, "common.items.weapons.bow.horn_longbow-0"), + (0.2, "common.items.weapons.bow.iron_longbow-0"), + (0.10, "common.items.weapons.bow.rare_longbow"), + // cultist set + (0.1, "common.items.armor.belt.cultist_belt"), + (0.01, "common.items.armor.chest.cultist_chest_purple"), + (0.01, "common.items.armor.foot.cultist_boots"), + (0.01, "common.items.armor.hand.cultist_hands_purple"), + (0.01, "common.items.armor.pants.cultist_legs_purple"), + (0.01, "common.items.armor.shoulder.cultist_shoulder_purple"), + (0.005, "common.items.armor.back.dungeon_purple-0"), + (0.1, "common.items.boss_drops.exp_flask"), + (0.2, "common.items.boss_drops.potions"), + +] diff --git a/assets/common/loot_tables/loot_table_food.ron b/assets/common/loot_tables/loot_table_food.ron new file mode 100644 index 0000000000..c9db9c6578 --- /dev/null +++ b/assets/common/loot_tables/loot_table_food.ron @@ -0,0 +1,11 @@ +[ + // simple + (3, "common.items.food.cheese"), + (3, "common.items.food.apple"), + (3, "common.items.food.mushroom"), + (1, "common.items.food.coconut"), + // crafted + (0.05, "common.items.food.apple_mushroom_curry"), + (0.10, "common.items.food.apple_stick"), + (0.10, "common.items.food.mushroom_stick"), +] diff --git a/assets/common/loot_tables/loot_table_humanoids.ron b/assets/common/loot_tables/loot_table_humanoids.ron new file mode 100644 index 0000000000..5b25815f1c --- /dev/null +++ b/assets/common/loot_tables/loot_table_humanoids.ron @@ -0,0 +1,25 @@ +[ + // Crafting Ingredients + (1, "common.items.crafting_ing.empty_vial"), + (0.10, "common.items.crafting_ing.shiny_gem"), + // Consumables + (0.2, "common.items.consumable.potion_minor"), + // Utility + (0.05, "common.items.utility.collar"), + // Food + (1, "common.items.food.coconut"), + (0.05, "common.items.food.apple_mushroom_curry"), + (0.10, "common.items.food.apple_stick"), + (0.10, "common.items.food.mushroom_stick"), + // Weapons + (0.15, "common.items.weapons.sword.wood_sword"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + (0.25, "common.items.weapons.staff.staff_nature"), + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-0"), +] diff --git a/assets/common/loot_tables/loot_table_rocks.ron b/assets/common/loot_tables/loot_table_rocks.ron new file mode 100644 index 0000000000..e29e50f7f2 --- /dev/null +++ b/assets/common/loot_tables/loot_table_rocks.ron @@ -0,0 +1,6 @@ +[ + (1, "common.items.crafting_ing.stones"), + (0.10, "common.items.crafting_ing.shiny_gem"), + (0.10, "common.items.ore.velorite"), + (0.20, "common.items.ore.veloritefrag"), +] diff --git a/assets/common/loot_tables/loot_table_villager.ron b/assets/common/loot_tables/loot_table_villager.ron new file mode 100644 index 0000000000..d2eb0f8d25 --- /dev/null +++ b/assets/common/loot_tables/loot_table_villager.ron @@ -0,0 +1,37 @@ +[ + // Crafting Ingredients + (1, "common.items.crafting_ing.empty_vial"), + (0.10, "common.items.crafting_ing.shiny_gem"), + // Consumables + (0.2, "common.items.consumable.potion_minor"), + // Armour + (1, "common.items.armor.chest.worker_green_0"), + (1, "common.items.armor.chest.worker_green_1"), + (1, "common.items.armor.chest.worker_orange_0"), + (1, "common.items.armor.chest.worker_orange_1"), + (1, "common.items.armor.chest.worker_purple_0"), + (1, "common.items.armor.chest.worker_purple_1"), + (1, "common.items.armor.chest.worker_red_0"), + (1, "common.items.armor.chest.worker_red_1"), + (1, "common.items.armor.chest.worker_yellow_0"), + (1, "common.items.armor.chest.worker_yellow_1"), + (1, "common.items.armor.pants.worker_blue_0"), + // Utility + (0.05, "common.items.utility.collar"), + // Food + (0.5, "common.items.food.coconut"), + (0.05, "common.items.food.apple_mushroom_curry"), + (0.10, "common.items.food.apple_stick"), + (0.10, "common.items.food.mushroom_stick"), + // Weapons + (0.15, "common.items.weapons.sword.wood_sword"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + (0.25, "common.items.weapons.staff.staff_nature"), + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-0"), +] diff --git a/assets/common/loot_tables/loot_table_weapon_common.ron b/assets/common/loot_tables/loot_table_weapon_common.ron new file mode 100644 index 0000000000..0ba12913f2 --- /dev/null +++ b/assets/common/loot_tables/loot_table_weapon_common.ron @@ -0,0 +1,43 @@ +[ + // swords + (0.15, "common.items.weapons.sword.starter_sword"), + (0.15, "common.items.weapons.sword.wood_sword"), + (0.07, "common.items.weapons.sword.long_2h_dam-0"), + (0.07, "common.items.weapons.sword.long_2h_dam-1"), + (0.07, "common.items.weapons.sword.long_2h_dam-2"), + (0.07, "common.items.weapons.sword.long_2h_dam-3"), + (0.07, "common.items.weapons.sword.long_2h_dam-4"), + (0.07, "common.items.weapons.sword.long_2h_dam-5"), + (0.10, "common.items.weapons.sword.short_sword_0"), + (0.06, "common.items.weapons.sword.greatsword_2h_dam-0"), + (0.06, "common.items.weapons.sword.greatsword_2h_dam-1"), + (0.06, "common.items.weapons.sword.greatsword_2h_dam-2"), + // axes + (0.30, "common.items.weapons.axe.starter_axe"), + (0.20, "common.items.weapons.axe.orc_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-0"), + (0.10, "common.items.weapons.axe.worn_iron_axe-1"), + (0.10, "common.items.weapons.axe.worn_iron_axe-2"), + (0.10, "common.items.weapons.axe.worn_iron_axe-3"), + (0.10, "common.items.weapons.axe.worn_iron_axe-4"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.starter_staff"), + // hammers + (0.15, "common.items.weapons.hammer.starter_hammer"), + (0.15, "common.items.weapons.hammer.flimsy_hammer"), + (0.10, "common.items.weapons.hammer.wood_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-0"), + (0.10, "common.items.weapons.hammer.stone_hammer-1"), + (0.10, "common.items.weapons.hammer.stone_hammer-2"), + (0.10, "common.items.weapons.hammer.stone_hammer-3"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-0"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-1"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-2"), + (0.05, "common.items.weapons.hammer.worn_iron_hammer-3"), + // bows + (0.50, "common.items.weapons.bow.starter_bow"), + (0.25, "common.items.weapons.bow.wood_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_shortbow-1"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_weapon_rare.ron b/assets/common/loot_tables/loot_table_weapon_rare.ron new file mode 100644 index 0000000000..df5fa2a126 --- /dev/null +++ b/assets/common/loot_tables/loot_table_weapon_rare.ron @@ -0,0 +1,33 @@ +[ + // swords + (0.08, "common.items.weapons.sword.long_2h_orn-0"), + (0.08, "common.items.weapons.sword.long_2h_orn-1"), + (0.08, "common.items.weapons.sword.long_2h_orn-2"), + (0.08, "common.items.weapons.sword.long_2h_orn-3"), + (0.08, "common.items.weapons.sword.long_2h_orn-4"), + (0.08, "common.items.weapons.sword.long_2h_orn-5"), + (0.20, "common.items.weapons.sword.zweihander_sword_0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_orn-2"), + // axes + (0.20, "common.items.weapons.axe.bloodsteel_axe-0"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-1"), + (0.20, "common.items.weapons.axe.bloodsteel_axe-2"), + (0.30, "common.items.weapons.axe.cobalt_axe-0"), + (0.10, "common.items.weapons.axe.malachite_axe-0"), + // healing staff + (0.25, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.amethyst_staff"), + // hammers + (0.30, "common.items.weapons.hammer.cobalt_hammer-0"), + (0.30, "common.items.weapons.hammer.cobalt_hammer-1"), + (0.15, "common.items.weapons.hammer.runic_hammer"), + (0.15, "common.items.weapons.hammer.ramshead_hammer"), + (0.10, "common.items.weapons.hammer.mjolnir"), + // bows + (0.60, "common.items.weapons.bow.horn_longbow-0"), + (0.30, "common.items.weapons.bow.iron_longbow-0"), + (0.10, "common.items.weapons.bow.rare_longbow"), +] \ No newline at end of file diff --git a/assets/common/loot_tables/loot_table_weapon_uncommon.ron b/assets/common/loot_tables/loot_table_weapon_uncommon.ron new file mode 100644 index 0000000000..7211863eb4 --- /dev/null +++ b/assets/common/loot_tables/loot_table_weapon_uncommon.ron @@ -0,0 +1,68 @@ +[ + // swords + (0.05, "common.items.weapons.sword.long_2h_simple-0"), + (0.05, "common.items.weapons.sword.long_2h_simple-1"), + (0.05, "common.items.weapons.sword.long_2h_simple-2"), + (0.05, "common.items.weapons.sword.long_2h_simple-3"), + (0.05, "common.items.weapons.sword.long_2h_simple-4"), + (0.05, "common.items.weapons.sword.long_2h_simple-5"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-0"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-1"), + (0.10, "common.items.weapons.sword.greatsword_2h_simple-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-0"), + (0.06, "common.items.weapons.sword.long_2h_fine-1"), + (0.06, "common.items.weapons.sword.long_2h_fine-2"), + (0.06, "common.items.weapons.sword.long_2h_fine-3"), + (0.06, "common.items.weapons.sword.long_2h_fine-4"), + (0.06, "common.items.weapons.sword.long_2h_fine-5"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-0"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-1"), + (0.07, "common.items.weapons.sword.greatsword_2h_fine-2"), + // axes + (0.15, "common.items.weapons.axe.bronze_axe-0"), + (0.15, "common.items.weapons.axe.bronze_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-0"), + (0.04, "common.items.weapons.axe.iron_axe-1"), + (0.04, "common.items.weapons.axe.iron_axe-2"), + (0.04, "common.items.weapons.axe.iron_axe-3"), + (0.04, "common.items.weapons.axe.iron_axe-4"), + (0.04, "common.items.weapons.axe.iron_axe-5"), + (0.04, "common.items.weapons.axe.iron_axe-6"), + (0.04, "common.items.weapons.axe.iron_axe-7"), + (0.04, "common.items.weapons.axe.iron_axe-8"), + (0.04, "common.items.weapons.axe.iron_axe-9"), + (0.04, "common.items.weapons.axe.steel_axe-0"), + (0.04, "common.items.weapons.axe.steel_axe-1"), + (0.04, "common.items.weapons.axe.steel_axe-2"), + (0.04, "common.items.weapons.axe.steel_axe-3"), + (0.04, "common.items.weapons.axe.steel_axe-4"), + (0.04, "common.items.weapons.axe.steel_axe-5"), + (0.04, "common.items.weapons.axe.steel_axe-6"), + // healing staff + (0.5, "common.items.weapons.staff.staff_nature"), + // staves + (1.00, "common.items.weapons.staff.bone_staff"), + // hammers + (0.15, "common.items.weapons.hammer.bronze_hammer-0"), + (0.15, "common.items.weapons.hammer.bronze_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-0"), + (0.04, "common.items.weapons.hammer.iron_hammer-1"), + (0.04, "common.items.weapons.hammer.iron_hammer-2"), + (0.04, "common.items.weapons.hammer.iron_hammer-3"), + (0.04, "common.items.weapons.hammer.iron_hammer-4"), + (0.04, "common.items.weapons.hammer.iron_hammer-5"), + (0.04, "common.items.weapons.hammer.iron_hammer-6"), + (0.04, "common.items.weapons.hammer.iron_hammer-7"), + (0.04, "common.items.weapons.hammer.iron_hammer-8"), + (0.05, "common.items.weapons.hammer.steel_hammer-0"), + (0.05, "common.items.weapons.hammer.steel_hammer-1"), + (0.05, "common.items.weapons.hammer.steel_hammer-2"), + (0.05, "common.items.weapons.hammer.steel_hammer-3"), + (0.05, "common.items.weapons.hammer.steel_hammer-4"), + (0.05, "common.items.weapons.hammer.steel_hammer-5"), + // bows + (0.30, "common.items.weapons.bow.leafy_shortbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-0"), + (0.25, "common.items.weapons.bow.wood_longbow-1"), + (0.20, "common.items.weapons.bow.leafy_longbow-0"), +] \ No newline at end of file diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index 7e4d6b66d1..7277199e25 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -1,17 +1,35 @@ { - "crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 10), ("common.items.crafting_ing.stones", 10)]), - "mortar_pestle": (("common.items.crafting_tools.mortar_pestle", 1), [("common.items.crafting_ing.stones", 6), ("common.items.food.coconut", 2), ("common.items.crafting_tools.craftsman_hammer", 0)]), + // Tools + "crafting_hammer": (("common.items.crafting_tools.craftsman_hammer", 1),[("common.items.crafting_ing.twigs", 14), ("common.items.crafting_ing.stones", 12)]), + "mortar_pestle": (("common.items.crafting_tools.mortar_pestle", 1), [("common.items.crafting_ing.stones", 6), ("common.items.food.coconut", 2), ("common.items.crafting_tools.craftsman_hammer", 0)]), + // Ore and more "velorite_frag": (("common.items.ore.veloritefrag", 2), [("common.items.ore.velorite", 1), ("common.items.crafting_tools.craftsman_hammer", 0)]), + //Potions "potion_s": (("common.items.consumable.potion_minor", 1), [("common.items.crafting_ing.empty_vial", 1), ("common.items.ore.veloritefrag", 2)]), "potion_m": (("common.items.consumable.potion_med", 1), [("common.items.consumable.potion_minor", 2), ("common.items.ore.veloritefrag", 4)]), "collar_basic": (("common.items.utility.collar", 1), [("common.items.crafting_ing.leather_scraps", 5), ("common.items.crafting_ing.shiny_gem", 1)]), - "bomb_coconut": (("common.items.utility.bomb", 1), [("common.items.crafting_ing.stones", 10), ("common.items.food.coconut", 2), ("common.items.ore.veloritefrag", 2), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_blue": (("common.items.utility.firework_blue", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_green": (("common.items.utility.firework_green", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_purple": (("common.items.utility.firework_purple", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_red": (("common.items.utility.firework_red", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "firework_yellow": (("common.items.utility.firework_yellow", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), - "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 10), ("common.items.food.coconut", 1), ("common.items.food.apple", 5), ("common.items.crafting_tools.mortar_pestle", 0)]), - "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 1), ("common.items.food.apple", 3)]), - "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 1), ("common.items.food.mushroom", 5)]), -} + "bomb_coconut": (("common.items.utility.bomb", 1), [("common.items.crafting_ing.stones", 10), ("common.items.food.coconut", 2), ("common.items.ore.veloritefrag", 2), ("common.items.crafting_tools.mortar_pestle", 0)]), + // Firework + "firework_blue": (("common.items.utility.firework_blue", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_green": (("common.items.utility.firework_green", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_purple": (("common.items.utility.firework_purple", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_red": (("common.items.utility.firework_red", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + "firework_yellow": (("common.items.utility.firework_yellow", 1), [("common.items.crafting_ing.twigs", 1), ("common.items.crafting_ing.stones", 1), ("common.items.food.coconut", 1), ("common.items.ore.veloritefrag", 1), ("common.items.crafting_tools.mortar_pestle", 0)]), + // Food + "apple_shroom_curry": (("common.items.food.apple_mushroom_curry", 1), [("common.items.food.mushroom", 8), ("common.items.food.coconut", 1), ("common.items.food.apple", 4), ("common.items.crafting_tools.mortar_pestle", 0)]), + "apples_stick": (("common.items.food.apple_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.apple", 2)]), + "mushroom_stick": (("common.items.food.mushroom_stick", 1),[("common.items.crafting_ing.twigs", 2), ("common.items.food.mushroom", 3)]), + // Weapons + "velorite_sceptre": (("common.items.weapons.staff.sceptre_velorite_0", 1),[("common.items.crafting_ing.twigs", 20), ("common.items.ore.veloritefrag", 10), ("common.items.crafting_ing.shiny_gem", 4), ("common.items.crafting_tools.craftsman_hammer", 0)]), + // Enhanced starting weapons + "better bow": (("common.items.weapons.bow.wood_shortbow-0", 1), [("common.items.crafting_ing.leather_scraps", 8),("common.items.crafting_ing.twigs", 4), ("common.items.crafting_ing.stones", 0)]), + "better sword": (("common.items.weapons.sword.wood_sword", 1), [("common.items.crafting_ing.leather_scraps", 4),("common.items.crafting_ing.twigs", 8), ("common.items.crafting_ing.stones", 0)]), + // Adventurer/Beginner Leather Set + "adventure back": (("common.items.armor.back.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 4)]), + "adventure belt": (("common.items.armor.belt.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 2)]), + "adventure chest": (("common.items.armor.chest.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 12)]), + "adventure feet": (("common.items.armor.foot.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 6)]), + "adventure hands": (("common.items.armor.hand.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 4)]), + "adventure pants": (("common.items.armor.pants.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 8)]), + "adventure shoulder": (("common.items.armor.shoulder.leather_adventurer", 1),[("common.items.crafting_ing.leather_scraps", 12)]), +} diff --git a/assets/voxygen/element/frames/banner_bot.png b/assets/voxygen/element/frames/banner_bot.png new file mode 100644 index 0000000000..b1dbcfe112 --- /dev/null +++ b/assets/voxygen/element/frames/banner_bot.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:576f306f0770c69588da97bd135d5ba1ac4ff347a5bee562cc92951e25bc3399 +size 1638 diff --git a/assets/voxygen/element/icons/female.png b/assets/voxygen/element/icons/female.png deleted file mode 100644 index 405f424205..0000000000 --- a/assets/voxygen/element/icons/female.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44b79da769deb373b40aab595bbab076c4102f1f387eafe88bb760a47c301f5e -size 19028 diff --git a/assets/voxygen/element/icons/item_leather1.png b/assets/voxygen/element/icons/item_leather1.png new file mode 100644 index 0000000000..a96818e076 --- /dev/null +++ b/assets/voxygen/element/icons/item_leather1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea821ab4ee7dd73c59a7300b213d8515265dcca290fa4e2532a8009c7ce741d1 +size 1739 diff --git a/assets/voxygen/element/icons/male.png b/assets/voxygen/element/icons/male.png deleted file mode 100644 index 17dbbdeac1..0000000000 --- a/assets/voxygen/element/icons/male.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f940f7e84784c5de5a9a56b4fc91c7ad1687465f3dfe3618a908652bd6df2e31 -size 18428 diff --git a/assets/voxygen/i18n/de_DE.ron b/assets/voxygen/i18n/de_DE.ron index 04e6bffe0f..f5ce2fa8f8 100644 --- a/assets/voxygen/i18n/de_DE.ron +++ b/assets/voxygen/i18n/de_DE.ron @@ -152,7 +152,8 @@ https://account.veloren.net. "hud.you_died": "Ihr seid gestorben.", "hud.waypoint_saved": "Wegpunkt gesichert", - "hud.press_key_to_show_keybindings_fmt": "Drückt {key} um die Tastenbelegung zu zeigen", + "hud.press_key_to_show_keybindings_fmt": "[{key}] Tastenbelegung", + "hud.press_key_to_toggle_lantern_fmt": "[{key}] Laterne", "hud.press_key_to_show_debug_info_fmt": "Drückt {key} um die Debug-Info zu zeigen", "hud.press_key_to_toggle_keybindings_fmt": "Drückt {key} um die Tastenbelegung zu zeigen", "hud.press_key_to_toggle_debug_info_fmt": "Drückt {key} um die Debug-Info zu zeigen", diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron index a499419b08..8e95b9df7d 100644 --- a/assets/voxygen/i18n/en.ron +++ b/assets/voxygen/i18n/en.ron @@ -152,7 +152,8 @@ https://account.veloren.net."#, "hud.you_died": "You Died", "hud.waypoint_saved": "Waypoint Saved", - "hud.press_key_to_show_keybindings_fmt": "Press {key} to show keybindings", + "hud.press_key_to_show_keybindings_fmt": "[{key}] Keybindings", + "hud.press_key_to_toggle_lantern_fmt": "[{key}] Lantern", "hud.press_key_to_show_debug_info_fmt": "Press {key} to show debug info", "hud.press_key_to_toggle_keybindings_fmt": "Press {key} to toggle keybindings", "hud.press_key_to_toggle_debug_info_fmt": "Press {key} to toggle debug info", @@ -357,7 +358,7 @@ magically infused items?"#, "hud.spell": "Spells", - "hud.free_look_indicator": "Free look active", + "hud.free_look_indicator": "Free look active. Press {key} to disable.", "hud.auto_walk_indicator": "Auto walk active", /// End HUD section @@ -418,7 +419,7 @@ magically infused items?"#, "gameinput.declinegroupinvite": "Decline Group Invite", "gameinput.crafting": "Crafting", "gameinput.sneak": "Sneak", - "gameinput.swimdown": "Dive downwards", + "gameinput.swimdown": "Swim downwards", "gameinput.swimup": "Swim upwards", /// End GameInput section @@ -482,7 +483,7 @@ Protection "You can type /group or /g to only chat with players in your current group.", "To send private messages type /tell followed by a player name and your message.", "NPCs with the same level can have a different difficulty.", - "Look at the ground for food, chests and other loot!", + "Keep an eye out for food, chests and other loot spread all around the world!", "Inventory filled with food? Try crafting better food from it!", "Wondering what's there to do? Dungeons are marked with brown spots on the map!", "Don't forget to adjust the graphics for your system. Press 'N' to open the settings.", diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index 77d2638409..3ccf57427c 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -44,6 +44,10 @@ "voxel.weapon.bow.longbow_rare", (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, ), + Tool(Bow("NatureOreLongbow")): VoxTrans( + "voxel.weapon.bow.longbow_ore_nature-0", + (0.0, 0.0, 0.0), (90.0, 90.0, 0.0), 1.0, + ), // Daggers Tool(Dagger("BasicDagger")): VoxTrans( "voxel.weapon.dagger.dagger_rusty", @@ -505,6 +509,10 @@ Tool(Staff("Sceptre")): VoxTrans( "voxel.weapon.staff.wood-nature", (1.0, -1.0, 0.0), (-310., 90.0, 0.0), 1.2, + ), + Tool(Staff("SceptreVelorite")): VoxTrans( + "voxel.weapon.staff.ore-nature", + (1.0, -1.0, 0.0), (-310., 90.0, 0.0), 1.15, ), // Shields Tool(Shield("BasicShield")): VoxTrans( @@ -1011,6 +1019,56 @@ "voxel.armor.shoulder.twigsflowers_shoulder_right", (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, ), + //Tarasque Set + Armor(Chest("Tarasque")): VoxTrans( + "voxel.armor.chest.tarasque", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants("Tarasque")): VoxTrans( + "voxel.armor.pants.tarasque", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt("Tarasque")): VoxTrans( + "voxel.armor.belt.tarasque", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4, + ), + Armor(Foot("Tarasque")): VoxTrans( + "voxel.armor.foot.tarasque", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand("Tarasque")): VoxTrans( + "voxel.armor.hand.tarasque_right", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder("Tarasque")): VoxTrans( + "voxel.armor.shoulder.tarasque_right", + (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, + ), + //Bonerattler Set + Armor(Chest("Bonerattler")): VoxTrans( + "voxel.armor.chest.bonerattler", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Pants("Bonerattler")): VoxTrans( + "voxel.armor.pants.bonerattler", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.2, + ), + Armor(Belt("Bonerattler")): VoxTrans( + "voxel.armor.belt.bonerattler", + (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.4, + ), + Armor(Foot("Bonerattler")): VoxTrans( + "voxel.armor.foot.bonerattler", + (0.0, 0.0, 0.0), (-95.0, 140.0, 0.0), 1.1, + ), + Armor(Hand("Bonerattler")): VoxTrans( + "voxel.armor.hand.bonerattler_right", + (0.0, -1.0, 0.0), (-90.0, 135.0, 0.0), 1.0, + ), + Armor(Shoulder("Bonerattler")): VoxTrans( + "voxel.armor.shoulder.bonerattler_right", + (0.0, 0.0, 0.0), (-90.0, 130.0, 0.0), 1.2, + ), //misc Armor(Pants("Hunting")): VoxTrans( "voxel.armor.pants.grayscale", @@ -1021,7 +1079,7 @@ "voxel.armor.back.short-0", (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.0, ), - Armor(Back("Short1")): VoxTrans( + Armor(Back("Short1")): VoxTrans( "voxel.armor.back.short-1", (0.0, -2.0, 0.0), (-90.0, 180.0, 0.0), 1.0, ), @@ -1033,6 +1091,10 @@ "voxel.armor.back.dung_purp-0", (0.0, 0.0, 0.0), (-90.0, 180.0, 0.0), 1.0, ), + Armor(Back("Short2")): VoxTrans( + "voxel.armor.back.short-2", + (0.0, -2.0, 0.0), (-90.0, 180.0, 0.0), 1.0, + ), // Rings Armor(Ring("Ring0")): Png( "element.icons.ring-0", diff --git a/assets/voxygen/voxel/armor/back/short-2.vox b/assets/voxygen/voxel/armor/back/short-2.vox new file mode 100644 index 0000000000..5b36780184 --- /dev/null +++ b/assets/voxygen/voxel/armor/back/short-2.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fd947f3506bbd98522206ca650575d998ebc1314dd529e65ff580628bbc846f +size 1368 diff --git a/assets/voxygen/voxel/armor/belt/bonerattler.vox b/assets/voxygen/voxel/armor/belt/bonerattler.vox new file mode 100644 index 0000000000..5a07ba7dd1 --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f042fc608dbf4b0184fbc888effe47b280ea8de07b46855e7b97c1eb6d9344 +size 1460 diff --git a/assets/voxygen/voxel/armor/belt/tarasque.vox b/assets/voxygen/voxel/armor/belt/tarasque.vox new file mode 100644 index 0000000000..6ed66156c9 --- /dev/null +++ b/assets/voxygen/voxel/armor/belt/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b582508130116bc82a57c86f8b2f038f46e053f0bae3b04b73883df12cf58a5 +size 1472 diff --git a/assets/voxygen/voxel/armor/chest/bonerattler.vox b/assets/voxygen/voxel/armor/chest/bonerattler.vox new file mode 100644 index 0000000000..d516e45bd8 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:340ef35d35982e51f1d11bd0990bbf3e512aad52332026ccc138a81205faef54 +size 2624 diff --git a/assets/voxygen/voxel/armor/chest/tarasque.vox b/assets/voxygen/voxel/armor/chest/tarasque.vox new file mode 100644 index 0000000000..833d657b28 --- /dev/null +++ b/assets/voxygen/voxel/armor/chest/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04b8bc823e3692bec955eb8994d1ce22025500e38adfaabf7d103cfb8dc6a6d5 +size 2944 diff --git a/assets/voxygen/voxel/armor/foot/bonerattler.vox b/assets/voxygen/voxel/armor/foot/bonerattler.vox new file mode 100644 index 0000000000..c6c00b3719 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6acc4e7c074ecfe9280151b8d81541c5310d4ec3d001284ae3e9f19e176ca224 +size 1480 diff --git a/assets/voxygen/voxel/armor/foot/tarasque.vox b/assets/voxygen/voxel/armor/foot/tarasque.vox new file mode 100644 index 0000000000..d07b797f44 --- /dev/null +++ b/assets/voxygen/voxel/armor/foot/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4be8dfb78ff2f0bdcc2c38dbcb8cf72cae1c5e84b29c64fa3239231e5d154e5 +size 1480 diff --git a/assets/voxygen/voxel/armor/hand/bonerattler_left.vox b/assets/voxygen/voxel/armor/hand/bonerattler_left.vox new file mode 100644 index 0000000000..915741468d --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/bonerattler_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5840f02a522774c8999ccded69b20f5de4104ad673bbba744cb03899deb49f4 +size 1240 diff --git a/assets/voxygen/voxel/armor/hand/bonerattler_right.vox b/assets/voxygen/voxel/armor/hand/bonerattler_right.vox new file mode 100644 index 0000000000..3e95dcbe63 --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/bonerattler_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db096bedf5ddf4412b30c005674bcb114f1c64eb6e59450f4cd8d383bf95e9c7 +size 1240 diff --git a/assets/voxygen/voxel/armor/hand/tarasque_left.vox b/assets/voxygen/voxel/armor/hand/tarasque_left.vox new file mode 100644 index 0000000000..d17f99af53 --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/tarasque_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1467490474a15d5fe6f26c09aeac7462e1507ecc1d79058bb2bdf5047d5bed8c +size 55771 diff --git a/assets/voxygen/voxel/armor/hand/tarasque_right.vox b/assets/voxygen/voxel/armor/hand/tarasque_right.vox new file mode 100644 index 0000000000..cf510c8d5f --- /dev/null +++ b/assets/voxygen/voxel/armor/hand/tarasque_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b3814791c774ed2c6ff4eedb808a8c014b7016254800a7eb8c5716433dd7c52 +size 1288 diff --git a/assets/voxygen/voxel/armor/pants/bonerattler.vox b/assets/voxygen/voxel/armor/pants/bonerattler.vox new file mode 100644 index 0000000000..829aab954a --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/bonerattler.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a1a9485d0833834849a49f53bbf92b61ee2744f0500e6d80951ac1f8617133 +size 1896 diff --git a/assets/voxygen/voxel/armor/pants/tarasque.vox b/assets/voxygen/voxel/armor/pants/tarasque.vox new file mode 100644 index 0000000000..8c3d65b9e1 --- /dev/null +++ b/assets/voxygen/voxel/armor/pants/tarasque.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6379161840e44f2c6eb7c1f858a40907dd109b396741fb9f40b7a2a249c7bd +size 2008 diff --git a/assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox b/assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox new file mode 100644 index 0000000000..c5570493ed --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/bonerattler_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcdc7b084add4b4bf3933a4df56eeefa406c9cfb2f389aca26f71e53f66b70cd +size 1388 diff --git a/assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox b/assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox new file mode 100644 index 0000000000..c5570493ed --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/bonerattler_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcdc7b084add4b4bf3933a4df56eeefa406c9cfb2f389aca26f71e53f66b70cd +size 1388 diff --git a/assets/voxygen/voxel/armor/shoulder/tarasque_left.vox b/assets/voxygen/voxel/armor/shoulder/tarasque_left.vox new file mode 100644 index 0000000000..3247ec5e8a --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/tarasque_left.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:676346dbb34ab576bd882b9eeae9d07b0325806783779e8b25807471e6aa5713 +size 55999 diff --git a/assets/voxygen/voxel/armor/shoulder/tarasque_right.vox b/assets/voxygen/voxel/armor/shoulder/tarasque_right.vox new file mode 100644 index 0000000000..5ac2a29065 --- /dev/null +++ b/assets/voxygen/voxel/armor/shoulder/tarasque_right.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daf3f9d27f98bf0665e7e836365044a3c215c2a6f34f4036340f36c9377684c3 +size 1516 diff --git a/assets/voxygen/voxel/humanoid_armor_back_manifest.ron b/assets/voxygen/voxel/humanoid_armor_back_manifest.ron index 7b31c4591d..8ab7638b62 100644 --- a/assets/voxygen/voxel/humanoid_armor_back_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_back_manifest.ron @@ -20,5 +20,9 @@ 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 + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron index 1ddab8aa04..bfa38ec946 100644 --- a/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_belt_manifest.ron @@ -76,5 +76,13 @@ vox_spec: ("armor.belt.twigsflowers_belt", (-4.0, -3.5, -1.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.belt.tarasque", (-5.0, -3.5, 2.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.belt.bonerattler", (-5.0, -4.5, 2.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron index 93eb3a18a7..c17403b4e2 100644 --- a/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_chest_manifest.ron @@ -134,6 +134,14 @@ vox_spec: ("armor.chest.leather-2", (-7.0, -3.5, 2.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.chest.tarasque", (-8.0, -4.5, 2.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.chest.bonerattler", (-7.0, -4.5, 2.0)), + color: None + ), }, ) ) diff --git a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron index ca038be44d..b2432b066d 100644 --- a/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_foot_manifest.ron @@ -72,5 +72,13 @@ vox_spec: ("armor.foot.twigsflowers_foot", (-2.5, -3.5, -2.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.foot.tarasque", (-2.5, -3.5, -2.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.foot.bonerattler", (-2.5, -3.5, -2.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron index 109dbace12..9cf0fa7a07 100644 --- a/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_hand_manifest.ron @@ -160,5 +160,25 @@ color: None ) ), + "Tarasque": ( + left: ( + vox_spec: ("armor.hand.tarasque_left", (-2.5, -2.5, -2.5)), + color: None + ), + right: ( + vox_spec: ("armor.hand.tarasque_right", (-2.5, -2.5, -2.5)), + color: None + ) + ), + "Bonerattler": ( + left: ( + vox_spec: ("armor.hand.bonerattler_left", (-1.5, -1.5, -2.5)), + color: None + ), + right: ( + vox_spec: ("armor.hand.bonerattler_right", (-1.5, -1.5, -2.5)), + color: None + ) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron index bb15cc6876..9b8e94c453 100644 --- a/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_pants_manifest.ron @@ -92,5 +92,13 @@ vox_spec: ("armor.pants.twigsflowers_pants", (-6.0, -3.5, 0.0)), color: None ), + "Tarasque":( + vox_spec: ("armor.pants.tarasque", (-6.0, -4.5, 1.0)), + color: None + ), + "Bonerattler":( + vox_spec: ("armor.pants.bonerattler", (-5.0, -3.5, 1.0)), + color: None + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron index 873a88adc3..7f9fbc7fb6 100644 --- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron @@ -249,7 +249,27 @@ right: ( vox_spec: ("armor.shoulder.druid_right", (-2.0, -4.5, -3.0)), color: None - ), - ), + ) + ), + "Tarasque": ( + left: ( + vox_spec: ("armor.shoulder.tarasque_left", (-5.0, -3.5 , 0.0)), + color: None + ), + right: ( + vox_spec: ("armor.shoulder.tarasque_right", (-0.0, -3.5, 0.0)), + color: None + ) + ), + "Bonerattler": ( + left: ( + vox_spec: ("armor.shoulder.bonerattler_left", (-4.0, -3.5 , 1.0)), + color: None + ), + right: ( + vox_spec: ("armor.shoulder.bonerattler_right", (-1.0, -3.5, 1.0)), + color: None + ) + ), }, )) diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index 96bec81511..8e9d389fee 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -484,6 +484,10 @@ vox_spec: ("weapon.bow.longbow_rare", (-2.0, -6.0, -2.5)), color: None ), + Bow("NatureOreLongbow"): ( + vox_spec: ("weapon.bow.longbow_ore_nature-0", (-2.0, -4.0, -4.5)), + color: None + ), // Farming Equipment Farming("Broom"): ( vox_spec: ("weapon.tool.broom-0", (-1.5, -4.0, -4.0)), @@ -543,10 +547,14 @@ color: None ), // Healing staff - Staff("Sceptre"): ( + Staff("Sceptre"): ( vox_spec: ("weapon.staff.wood-nature", (-1.0, -6.0, -5.0)), color: None ), + Staff("SceptreVelorite"): ( + vox_spec: ("weapon.staff.ore-nature", (-2.0, -6.0, -5.0)), + color: None + ), // Misc Debug("Boost"): ( vox_spec: ("weapon.tool.broom_belzeshrub_purple", (-3.0, -4.0, -4.0)), diff --git a/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox b/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox index 6666e45ec9..11f387ffdc 100644 --- a/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox +++ b/assets/voxygen/voxel/sprite/furniture/hanging_sign-0.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9d01dd0c592aec309008561e5ec826e618fad10a22b05b8a0e3d19a24e84d77 -size 4484 +oid sha256:8e5ebf2bf30d37f6fdf116dab27f5d4bef7a4259741e625eb13b49ff4f084116 +size 2832 diff --git a/assets/voxygen/voxel/sprite/misc/street_lamp.vox b/assets/voxygen/voxel/sprite/misc/street_lamp.vox index 6f738e8bb5..ec36daeb42 100644 --- a/assets/voxygen/voxel/sprite/misc/street_lamp.vox +++ b/assets/voxygen/voxel/sprite/misc/street_lamp.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5909211edd73fe743f81ae280aaf2e6022a3e5d0430a7c79509479401a01dac0 -size 4776 +oid sha256:976da129142c18f06cdf0f4f89d50f328ba9a374985560d22fa1ae944843b0e4 +size 3608 diff --git a/assets/voxygen/voxel/sprite/rocks/rock-0.vox b/assets/voxygen/voxel/sprite/rocks/rock-0.vox index bd0c85c9be..062fafca92 100644 --- a/assets/voxygen/voxel/sprite/rocks/rock-0.vox +++ b/assets/voxygen/voxel/sprite/rocks/rock-0.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:219f3cfd7e310284e17397a59441cfc79d27281ca09bea8a4740eee4173dab89 -size 1336 +oid sha256:2dc006d7dfc9adda49c235d03a7b80a7bf4ae1adc98b54d1311afc9047f6ae99 +size 1328 diff --git a/assets/voxygen/voxel/sprite/rocks/rock-1.vox b/assets/voxygen/voxel/sprite/rocks/rock-1.vox index ca13137003..4e2e1b8afe 100644 --- a/assets/voxygen/voxel/sprite/rocks/rock-1.vox +++ b/assets/voxygen/voxel/sprite/rocks/rock-1.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c9365b3ddee1c873a9dbbe0a9e5c86280561562e14cda6540235d9d58bc58d0 -size 1936 +oid sha256:c999ddcf716d52cb7304fccbb15e5d5446f8f67eea04732273f2afc650f9775a +size 1916 diff --git a/assets/voxygen/voxel/sprite/rocks/rock-2.vox b/assets/voxygen/voxel/sprite/rocks/rock-2.vox index 42466dd089..5af72d4a4b 100644 --- a/assets/voxygen/voxel/sprite/rocks/rock-2.vox +++ b/assets/voxygen/voxel/sprite/rocks/rock-2.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64e5992e0833d6f22ffb833e83ee967b1edb55d52414d45ce3afada7b0fc8e82 -size 1368 +oid sha256:80f106402224ca6fc0d38614afe86d1f7365690fbe5a55d1bbef791d4e0e2c7a +size 1356 diff --git a/assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox b/assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox new file mode 100644 index 0000000000..f9186b9d80 --- /dev/null +++ b/assets/voxygen/voxel/weapon/bow/longbow_ore_nature-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbd385cd0e9ddf48650149b82de277e258f599c9b6ce6054a6f13c3b2d697538 +size 1756 diff --git a/assets/voxygen/voxel/weapon/staff/ore-nature.vox b/assets/voxygen/voxel/weapon/staff/ore-nature.vox new file mode 100644 index 0000000000..772fee747a --- /dev/null +++ b/assets/voxygen/voxel/weapon/staff/ore-nature.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f6949d842517a5fb70205f613c239ca3a9e32744cda67e5d4d9e16af8a99638 +size 1680 diff --git a/assets/voxygen/voxel/weapon/staff/wood-nature.vox b/assets/voxygen/voxel/weapon/staff/wood-nature.vox index cfb29487b3..772fee747a 100644 --- a/assets/voxygen/voxel/weapon/staff/wood-nature.vox +++ b/assets/voxygen/voxel/weapon/staff/wood-nature.vox @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d170f609ca3ec724429acdefb3c076f334265a9bed58d644bfb4e202e91ca94 -size 1448 +oid sha256:5f6949d842517a5fb70205f613c239ca3a9e32744cda67e5d4d9e16af8a99638 +size 1680 diff --git a/common/src/comp/agent.rs b/common/src/comp/agent.rs index 22322b6df0..218d12240d 100644 --- a/common/src/comp/agent.rs +++ b/common/src/comp/agent.rs @@ -1,8 +1,11 @@ -use crate::{comp::Body, path::Chaser, sync::Uid}; +use crate::{ + comp::{critter, humanoid, quadruped_low, quadruped_medium, quadruped_small, Body}, + path::Chaser, + sync::Uid, +}; use specs::{Component, Entity as EcsEntity}; use specs_idvs::IdvStorage; use vek::*; - #[derive(Copy, Clone, Debug, PartialEq)] pub enum Alignment { /// Wild animals and gentle giants @@ -15,6 +18,8 @@ pub enum Alignment { Tame, /// Pets you've tamed with a collar Owned(Uid), + /// Passive objects like training dummies + Passive, } impl Alignment { @@ -22,8 +27,13 @@ impl Alignment { pub fn hostile_towards(self, other: Alignment) -> bool { match (self, other) { (Alignment::Enemy, Alignment::Enemy) => false, - (Alignment::Enemy, _) => true, + (Alignment::Enemy, Alignment::Wild) => false, + (Alignment::Wild, Alignment::Enemy) => false, + (Alignment::Wild, Alignment::Wild) => false, + (Alignment::Npc, Alignment::Wild) => false, + (Alignment::Npc, Alignment::Enemy) => true, (_, Alignment::Enemy) => true, + (Alignment::Enemy, _) => true, _ => false, } } @@ -35,8 +45,11 @@ impl Alignment { (Alignment::Owned(a), Alignment::Owned(b)) if a == b => true, (Alignment::Npc, Alignment::Npc) => true, (Alignment::Npc, Alignment::Tame) => true, + (Alignment::Enemy, Alignment::Wild) => true, + (Alignment::Wild, Alignment::Enemy) => true, (Alignment::Tame, Alignment::Npc) => true, (Alignment::Tame, Alignment::Tame) => true, + (_, Alignment::Passive) => true, _ => false, } } @@ -53,25 +66,69 @@ impl Component for Alignment { #[derive(Clone, Debug, Default)] pub struct Psyche { - pub aggro: f32, // 0.0 = always flees, 1.0 = always attacks + pub aggro: f32, // 0.0 = always flees, 1.0 = always attacks, 0.5 = flee at 50% health } - impl<'a> From<&'a Body> for Psyche { fn from(body: &'a Body) -> Self { Self { aggro: match body { - Body::Humanoid(_) => 0.5, - Body::QuadrupedSmall(_) => 0.35, - Body::QuadrupedMedium(_) => 0.5, - Body::QuadrupedLow(_) => 0.65, + Body::Humanoid(humanoid) => match humanoid.species { + humanoid::Species::Danari => 0.9, + humanoid::Species::Dwarf => 0.9, + humanoid::Species::Elf => 0.95, + humanoid::Species::Human => 0.95, + humanoid::Species::Orc => 1.0, + humanoid::Species::Undead => 1.0, + }, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Pig => 0.5, + quadruped_small::Species::Fox => 0.4, + quadruped_small::Species::Sheep => 0.5, + quadruped_small::Species::Boar => 1.0, + quadruped_small::Species::Jackalope => 0.4, + quadruped_small::Species::Skunk => 0.8, + quadruped_small::Species::Cat => 0.2, + quadruped_small::Species::Batfox => 0.7, + quadruped_small::Species::Raccoon => 0.4, + quadruped_small::Species::Quokka => 0.7, + quadruped_small::Species::Dodarock => 0.9, + quadruped_small::Species::Holladon => 1.0, + quadruped_small::Species::Hyena => 0.4, + quadruped_small::Species::Rabbit => 0.1, + quadruped_small::Species::Truffler => 0.8, + quadruped_small::Species::Frog => 0.6, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Tuskram => 0.8, + quadruped_medium::Species::Frostfang => 0.9, + quadruped_medium::Species::Mouflon => 0.8, + quadruped_medium::Species::Catoblepas => 0.8, + _ => 1.0, + }, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 1.0, + quadruped_low::Species::Alligator => 1.0, + quadruped_low::Species::Salamander => 0.8, + quadruped_low::Species::Monitor => 0.9, + quadruped_low::Species::Asp => 0.9, + quadruped_low::Species::Tortoise => 1.0, + quadruped_low::Species::Rocksnapper => 1.0, + quadruped_low::Species::Pangolin => 0.6, + quadruped_low::Species::Maneater => 1.0, + }, Body::BirdMedium(_) => 1.0, - Body::BirdSmall(_) => 0.2, + Body::BirdSmall(_) => 0.4, Body::FishMedium(_) => 0.15, Body::FishSmall(_) => 0.0, Body::BipedLarge(_) => 1.0, - Body::Object(_) => 0.0, + Body::Object(_) => 1.0, Body::Golem(_) => 1.0, - Body::Critter(_) => 0.1, + Body::Critter(critter) => match critter.species { + critter::Species::Axolotl => 1.0, + critter::Species::Turtle => 1.0, + critter::Species::Fungome => 1.0, + _ => 0.4, + }, Body::Dragon(_) => 1.0, }, } diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index 6661bcc766..7d29f69412 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -148,7 +148,7 @@ impl Body { Body::Dragon(_) => 2.5, Body::BirdSmall(_) => 0.2, Body::FishSmall(_) => 0.2, - Body::BipedLarge(_) => 2.0, + Body::BipedLarge(_) => 3.0, Body::Golem(_) => 2.5, Body::QuadrupedLow(_) => 1.0, Body::Object(_) => 0.3, @@ -172,100 +172,286 @@ impl Body { Body::Dragon(_) => 5.0, Body::BirdSmall(_) => 0.4, Body::FishSmall(_) => 0.4, - Body::BipedLarge(_) => 4.0, + Body::BipedLarge(_) => 5.0, Body::Golem(_) => 5.0, Body::QuadrupedLow(_) => 0.5, Body::Object(_) => 0.6, } } + #[allow(unreachable_patterns)] pub fn base_health(&self) -> u32 { match self { - Body::Humanoid(_) => 520, - Body::QuadrupedSmall(_) => 440, - Body::QuadrupedMedium(_) => 720, - Body::BirdMedium(_) => 360, - Body::FishMedium(_) => 320, - Body::Dragon(_) => 2560, - Body::BirdSmall(_) => 240, - Body::FishSmall(_) => 200, - Body::BipedLarge(_) => 1440, - Body::Object(_) => 1000, - Body::Golem(_) => 1680, - Body::Critter(_) => 320, - Body::QuadrupedLow(_) => 640, + Body::Humanoid(_) => 400, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Boar => 360, + quadruped_small::Species::Batfox => 200, + quadruped_small::Species::Dodarock => 640, + quadruped_small::Species::Holladon => 500, + quadruped_small::Species::Hyena => 300, + quadruped_small::Species::Truffler => 360, + _ => 200, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 600, + quadruped_medium::Species::Saber => 400, + quadruped_medium::Species::Tiger => 400, + quadruped_medium::Species::Tuskram => 600, + quadruped_medium::Species::Lion => 800, + quadruped_medium::Species::Tarasque => 1200, + quadruped_medium::Species::Wolf => 400, + quadruped_medium::Species::Frostfang => 400, + quadruped_medium::Species::Mouflon => 500, + quadruped_medium::Species::Catoblepas => 1000, + quadruped_medium::Species::Bonerattler => 400, + _ => 400, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 50, + bird_medium::Species::Duck => 50, + bird_medium::Species::Goose => 60, + bird_medium::Species::Parrot => 60, + bird_medium::Species::Peacock => 60, + bird_medium::Species::Cockatrice => 400, + bird_medium::Species::Eagle => 400, + _ => 100, + }, + Body::FishMedium(_) => 50, + Body::Dragon(_) => 5000, + Body::BirdSmall(_) => 50, + Body::FishSmall(_) => 20, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 2500, + biped_large::Species::Cyclops => 2000, + biped_large::Species::Wendigo => 2000, + biped_large::Species::Troll => 1500, + biped_large::Species::Dullahan => 2000, + _ => 1000, + }, + Body::Object(_) => 10000, + Body::Golem(_) => 1500, + Body::Critter(_) => 50, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 600, + quadruped_low::Species::Alligator => 600, + quadruped_low::Species::Salamander => 400, + quadruped_low::Species::Monitor => 150, + quadruped_low::Species::Asp => 400, + quadruped_low::Species::Tortoise => 600, + quadruped_low::Species::Rocksnapper => 1000, + quadruped_low::Species::Pangolin => 80, + quadruped_low::Species::Maneater => 400, + _ => 200, + }, } } + #[allow(unreachable_patterns)] pub fn base_health_increase(&self) -> u32 { match self { Body::Humanoid(_) => 50, - Body::QuadrupedSmall(_) => 40, - Body::QuadrupedMedium(_) => 70, - Body::BirdMedium(_) => 40, - Body::FishMedium(_) => 30, - Body::Dragon(_) => 260, - Body::BirdSmall(_) => 20, - Body::FishSmall(_) => 20, - Body::BipedLarge(_) => 140, - Body::Object(_) => 0, - Body::Golem(_) => 170, - Body::Critter(_) => 30, - Body::QuadrupedLow(_) => 60, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Boar => 20, + quadruped_small::Species::Batfox => 10, + quadruped_small::Species::Dodarock => 30, + quadruped_small::Species::Holladon => 30, + quadruped_small::Species::Hyena => 20, + quadruped_small::Species::Truffler => 20, + _ => 10, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 30, + quadruped_medium::Species::Saber => 20, + quadruped_medium::Species::Tiger => 20, + quadruped_medium::Species::Tuskram => 30, + quadruped_medium::Species::Lion => 40, + quadruped_medium::Species::Tarasque => 60, + quadruped_medium::Species::Wolf => 20, + quadruped_medium::Species::Frostfang => 40, + quadruped_medium::Species::Mouflon => 30, + quadruped_medium::Species::Catoblepas => 50, + quadruped_medium::Species::Bonerattler => 30, + _ => 20, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 10, + bird_medium::Species::Duck => 10, + bird_medium::Species::Goose => 10, + bird_medium::Species::Parrot => 10, + bird_medium::Species::Peacock => 10, + bird_medium::Species::Cockatrice => 10, + bird_medium::Species::Eagle => 10, + _ => 20, + }, + Body::FishMedium(_) => 10, + Body::Dragon(_) => 500, + Body::BirdSmall(_) => 10, + Body::FishSmall(_) => 10, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 70, + biped_large::Species::Cyclops => 80, + biped_large::Species::Wendigo => 80, + biped_large::Species::Troll => 60, + biped_large::Species::Dullahan => 120, + _ => 100, + }, + Body::Object(_) => 10, + Body::Golem(_) => 150, + Body::Critter(_) => 20, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 20, + quadruped_low::Species::Alligator => 20, + quadruped_low::Species::Salamander => 10, + quadruped_low::Species::Monitor => 10, + quadruped_low::Species::Asp => 10, + quadruped_low::Species::Tortoise => 20, + quadruped_low::Species::Rocksnapper => 50, + quadruped_low::Species::Pangolin => 10, + quadruped_low::Species::Maneater => 30, + _ => 20, + }, } } + #[allow(unreachable_patterns)] pub fn base_exp(&self) -> u32 { match self { - Body::Humanoid(_) => 15, - Body::QuadrupedSmall(_) => 12, - Body::QuadrupedMedium(_) => 28, - Body::BirdMedium(_) => 10, - Body::FishMedium(_) => 8, - Body::Dragon(_) => 160, - Body::BirdSmall(_) => 5, - Body::FishSmall(_) => 4, - Body::BipedLarge(_) => 75, - Body::Object(_) => 0, + Body::Humanoid(_) => 5, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Boar => 6, + quadruped_small::Species::Batfox => 2, + quadruped_small::Species::Dodarock => 6, + quadruped_small::Species::Holladon => 8, + quadruped_small::Species::Hyena => 6, + quadruped_small::Species::Truffler => 6, + _ => 4, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 10, + quadruped_medium::Species::Saber => 8, + quadruped_medium::Species::Tiger => 8, + quadruped_medium::Species::Tuskram => 9, + quadruped_medium::Species::Lion => 10, + quadruped_medium::Species::Tarasque => 16, + quadruped_medium::Species::Wolf => 8, + quadruped_medium::Species::Frostfang => 9, + quadruped_medium::Species::Mouflon => 7, + quadruped_medium::Species::Catoblepas => 10, + quadruped_medium::Species::Bonerattler => 10, + _ => 6, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 2, + bird_medium::Species::Duck => 2, + bird_medium::Species::Goose => 4, + bird_medium::Species::Parrot => 4, + bird_medium::Species::Peacock => 5, + _ => 8, + }, + Body::FishMedium(_) => 2, + Body::Dragon(_) => 1000, + Body::BirdSmall(_) => 2, + Body::FishSmall(_) => 2, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 60, + biped_large::Species::Cyclops => 70, + biped_large::Species::Wendigo => 70, + biped_large::Species::Troll => 50, + biped_large::Species::Dullahan => 100, + _ => 100, + }, + Body::Object(_) => 1, Body::Golem(_) => 75, - Body::Critter(_) => 8, - Body::QuadrupedLow(_) => 24, + Body::Critter(_) => 2, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 10, + quadruped_low::Species::Alligator => 10, + quadruped_low::Species::Salamander => 6, + quadruped_low::Species::Monitor => 4, + quadruped_low::Species::Asp => 4, + quadruped_low::Species::Tortoise => 6, + quadruped_low::Species::Rocksnapper => 12, + quadruped_low::Species::Pangolin => 3, + quadruped_low::Species::Maneater => 14, + _ => 10, + }, } } + #[allow(unreachable_patterns)] pub fn base_exp_increase(&self) -> u32 { match self { - Body::Humanoid(_) => 3, - Body::QuadrupedSmall(_) => 2, - Body::QuadrupedMedium(_) => 6, - Body::BirdMedium(_) => 2, - Body::FishMedium(_) => 2, + Body::Humanoid(_) => 2, + Body::QuadrupedSmall(_) => 1, + Body::QuadrupedMedium(_) => 1, + Body::BirdMedium(_) => 1, + Body::FishMedium(_) => 1, Body::Dragon(_) => 32, Body::BirdSmall(_) => 1, Body::FishSmall(_) => 1, - Body::BipedLarge(_) => 15, + Body::BipedLarge(_) => 2, Body::Object(_) => 0, - Body::Golem(_) => 15, - Body::Critter(_) => 2, - Body::QuadrupedLow(_) => 5, + Body::Golem(_) => 5, + Body::Critter(_) => 1, + Body::QuadrupedLow(_) => 1, } } + #[allow(unreachable_patterns)] pub fn base_dmg(&self) -> u32 { match self { - Body::Humanoid(_) => 60, - Body::QuadrupedSmall(_) => 80, - Body::QuadrupedMedium(_) => 120, - Body::BirdMedium(_) => 70, - Body::FishMedium(_) => 60, - Body::Dragon(_) => 900, - Body::BirdSmall(_) => 50, - Body::FishSmall(_) => 30, - Body::BipedLarge(_) => 360, + Body::Humanoid(_) => 50, + Body::QuadrupedSmall(quadruped_small) => match quadruped_small.species { + quadruped_small::Species::Dodarock => 30, + quadruped_small::Species::Hyena => 40, + _ => 20, + }, + Body::QuadrupedMedium(quadruped_medium) => match quadruped_medium.species { + quadruped_medium::Species::Grolgar => 50, + quadruped_medium::Species::Lion => 60, + quadruped_medium::Species::Tarasque => 70, + quadruped_medium::Species::Mouflon => 30, + quadruped_medium::Species::Catoblepas => 20, + quadruped_medium::Species::Bonerattler => 50, + _ => 40, + }, + Body::BirdMedium(bird_medium) => match bird_medium.species { + bird_medium::Species::Chicken => 10, + bird_medium::Species::Duck => 10, + bird_medium::Species::Goose => 10, + bird_medium::Species::Parrot => 20, + bird_medium::Species::Peacock => 40, + bird_medium::Species::Cockatrice => 60, + bird_medium::Species::Eagle => 60, + _ => 30, + }, + Body::FishMedium(_) => 10, + Body::Dragon(_) => 5000, + Body::BirdSmall(_) => 10, + Body::FishSmall(_) => 10, + Body::BipedLarge(biped_large) => match biped_large.species { + biped_large::Species::Ogre => 60, + biped_large::Species::Cyclops => 60, + biped_large::Species::Wendigo => 60, + biped_large::Species::Troll => 60, + biped_large::Species::Dullahan => 80, + _ => 60, + }, Body::Object(_) => 0, - Body::Golem(_) => 360, - Body::Critter(_) => 70, - Body::QuadrupedLow(_) => 110, + Body::Golem(_) => 250, + Body::Critter(_) => 10, + Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { + quadruped_low::Species::Crocodile => 50, + quadruped_low::Species::Alligator => 50, + quadruped_low::Species::Salamander => 30, + quadruped_low::Species::Monitor => 30, + quadruped_low::Species::Asp => 35, + quadruped_low::Species::Tortoise => 10, + quadruped_low::Species::Rocksnapper => 80, + quadruped_low::Species::Pangolin => 10, + quadruped_low::Species::Maneater => 40, + _ => 20, + }, } } diff --git a/common/src/comp/damage.rs b/common/src/comp/damage.rs index a1ad714ce0..05cd6919a4 100644 --- a/common/src/comp/damage.rs +++ b/common/src/comp/damage.rs @@ -22,8 +22,9 @@ impl Damage { match self.source { DamageSource::Melee => { // Critical hit + let mut critdamage = 0.0; if rand::random() { - self.healthchange *= 1.2; + critdamage = self.healthchange * 0.3; } // Block if block { @@ -33,6 +34,9 @@ impl Damage { let damage_reduction = loadout.get_damage_reduction(); self.healthchange *= 1.0 - damage_reduction; + // Critical damage applies after armor for melee + self.healthchange += critdamage; + // Min damage if (damage_reduction - 1.0).abs() > f32::EPSILON && self.healthchange > -10.0 { self.healthchange = -10.0; @@ -57,10 +61,6 @@ impl Damage { } }, DamageSource::Explosion => { - // Critical hit - if rand::random() { - self.healthchange *= 1.2; - } // Block if block { self.healthchange *= 1.0 - BLOCK_EFFICIENCY diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index 4a66786a8d..b4164ac03c 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -10,6 +10,7 @@ use crate::{ lottery::Lottery, terrain::{Block, BlockKind}, }; +use rand::prelude::*; use serde::{Deserialize, Serialize}; use specs::{Component, FlaggedStorage}; use specs_idvs::IdvStorage; @@ -144,6 +145,7 @@ impl Item { } pub fn try_reclaim_from_block(block: Block) -> Option { + let mut rng = rand::thread_rng(); match block.kind() { BlockKind::Apple => Some(assets::load_expect_cloned("common.items.food.apple")), BlockKind::Mushroom => Some(assets::load_expect_cloned("common.items.food.mushroom")), @@ -171,7 +173,27 @@ impl Item { BlockKind::ShortGrass => Some(assets::load_expect_cloned("common.items.grasses.short")), BlockKind::Coconut => Some(assets::load_expect_cloned("common.items.food.coconut")), BlockKind::Chest => { - let chosen = assets::load_expect::>("common.loot_table"); + let chosen = match rng.gen_range(0, 5) { + 0 => { + assets::load_expect::>("common.loot_tables.loot_table_food") + }, + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_crafting", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }; + let chosen = chosen.choose(); + Some(assets::load_expect_cloned(chosen)) + }, + BlockKind::Crate => { + let chosen = + assets::load_expect::>("common.loot_tables.loot_table_food"); let chosen = chosen.choose(); Some(assets::load_expect_cloned(chosen)) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index 335807ad3c..ca0edf991b 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -227,8 +227,27 @@ impl Tool { buildup_duration: Duration::from_millis(0), recover_duration: Duration::from_millis(1000), base_healthchange: (150.0 * self.base_power()) as i32, - range: 10.0, - max_angle: 45.0, + range: 100.0, + max_angle: 90.0, + }, + ] + } else if kind == "SceptreVelorite" { + vec![ + BasicMelee { + energy_cost: 0, + buildup_duration: Duration::from_millis(0), + recover_duration: Duration::from_millis(300), + base_healthchange: (-10.0 * self.base_power()) as i32, + range: 5.0, + max_angle: 20.0, + }, + BasicMelee { + energy_cost: 350, + buildup_duration: Duration::from_millis(0), + recover_duration: Duration::from_millis(1000), + base_healthchange: (350.0 * self.base_power()) as i32, + range: 100.0, + max_angle: 90.0, }, ] } else { diff --git a/common/src/lottery.rs b/common/src/lottery.rs index 6e4546f88e..f25a5966b7 100644 --- a/common/src/lottery.rs +++ b/common/src/lottery.rs @@ -51,7 +51,7 @@ mod tests { use crate::{assets, comp::Item}; #[test] fn test_loot_table() { - let test = assets::load_expect::>("common.loot_table"); + let test = assets::load_expect::>("common.loot_tables.loot_table"); for (_, item) in test.iter() { assert!( diff --git a/common/src/sys/agent.rs b/common/src/sys/agent.rs index a2fed71eb3..d4a3960518 100644 --- a/common/src/sys/agent.rs +++ b/common/src/sys/agent.rs @@ -146,12 +146,12 @@ impl<'a> System<'a> for Sys { const AVG_FOLLOW_DIST: f32 = 6.0; const MAX_FOLLOW_DIST: f32 = 12.0; - const MAX_CHASE_DIST: f32 = 24.0; + const MAX_CHASE_DIST: f32 = 18.0; const LISTEN_DIST: f32 = 16.0; const SEARCH_DIST: f32 = 48.0; - const SIGHT_DIST: f32 = 128.0; - const MIN_ATTACK_DIST: f32 = 3.5; - const MAX_FLEE_DIST: f32 = 32.0; + const SIGHT_DIST: f32 = 80.0; + const MIN_ATTACK_DIST: f32 = 2.0; + const MAX_FLEE_DIST: f32 = 20.0; let scale = scales.get(entity).map(|s| s.0).unwrap_or(1.0); @@ -332,7 +332,8 @@ impl<'a> System<'a> for Sys { inputs.move_dir = Vec2::from(bearing) .try_normalized() .unwrap_or(Vec2::zero()) - * speed; + * speed + * 0.2; //Let small/slow animals flee slower than the player inputs.jump.set_state(bearing.z > 1.5); inputs.swimup.set_state(bearing.z > 0.5); inputs.swimdown.set_state(bearing.z < 0.5); diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index 19e5499dbd..5d7df5cc32 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -440,6 +440,7 @@ impl BlockKind { BlockKind::Stones => true, BlockKind::Twigs => true, BlockKind::ShinyGem => true, + BlockKind::Crate => true, _ => false, } } @@ -495,6 +496,7 @@ impl Block { | BlockKind::WardrobeSingle | BlockKind::WardrobeDouble | BlockKind::Pot + | BlockKind::Chest | BlockKind::DropGate | BlockKind::DropGateBottom | BlockKind::Door => Some(self.color[0] & 0b111), diff --git a/server/src/cmd.rs b/server/src/cmd.rs index 2d15bc6921..968da28e7d 100644 --- a/server/src/cmd.rs +++ b/server/src/cmd.rs @@ -619,6 +619,7 @@ fn handle_spawn( ); } else if let Some(group) = match alignment { comp::Alignment::Wild => None, + comp::Alignment::Passive => None, comp::Alignment::Enemy => Some(comp::group::ENEMY), comp::Alignment::Npc | comp::Alignment::Tame => { Some(comp::group::NPC) diff --git a/server/src/events/entity_creation.rs b/server/src/events/entity_creation.rs index 206136aadc..31600f7948 100644 --- a/server/src/events/entity_creation.rs +++ b/server/src/events/entity_creation.rs @@ -1,8 +1,8 @@ use crate::{sys, Server, StateExt}; use common::{ comp::{ - self, Agent, Alignment, Body, Gravity, Item, ItemDrop, LightEmitter, Loadout, Pos, - Projectile, Scale, Stats, Vel, WaypointArea, + self, Agent, Alignment, Body, Gravity, Item, ItemDrop, LightAnimation, LightEmitter, + Loadout, Pos, Projectile, Scale, Stats, Vel, WaypointArea, }, outcome::Outcome, util::Dir, @@ -40,6 +40,7 @@ pub fn handle_create_npc( ) { let group = match alignment { Alignment::Wild => None, + Alignment::Passive => None, Alignment::Enemy => Some(group::ENEMY), Alignment::Npc | Alignment::Tame => Some(group::NPC), // TODO: handle @@ -118,11 +119,16 @@ pub fn handle_create_waypoint(server: &mut Server, pos: Vec3) { .state .create_object(Pos(pos), comp::object::Body::CampfireLit) .with(LightEmitter { - col: Rgb::new(1.0, 0.65, 0.2), - strength: 5.0, + col: Rgb::new(1.0, 0.8, 0.0), + strength: 8.0, flicker: 1.0, animated: true, }) + .with(LightAnimation { + offset: Vec3::new(0.0, 0.0, 2.0), + col: Rgb::new(1.0, 0.8, 0.0), + strength: 8.0, + }) .with(WaypointArea::default()) .build(); } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index f03fa99906..63598b7077 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -1,4 +1,4 @@ -use crate::{client::Client, Server, SpawnPoint, StateExt}; +use crate::{client::Client, comp::quadruped_small, Server, SpawnPoint, StateExt}; use common::{ assets, comp::{ @@ -15,6 +15,7 @@ use common::{ vol::{ReadVol, Vox}, }; use comp::item::Reagent; +use rand::prelude::*; use specs::{join::Join, saveload::MarkerAllocator, Entity as EcsEntity, WorldExt}; use tracing::error; use vek::Vec3; @@ -182,21 +183,145 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc .write_storage::() .insert(entity, comp::CharacterState::default()); } else if state.ecs().read_storage::().contains(entity) { - // Replace npc with loot + // Decide for a loot drop before turning into a lootbag + let old_body = state.ecs().write_storage::().remove(entity); + let mut rng = rand::thread_rng(); + let drop = match old_body { + Some(common::comp::Body::Humanoid(_)) => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_humanoids", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_light", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_cloth", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_common", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_humanoids", + ), + }, + Some(common::comp::Body::QuadrupedSmall(quadruped_small)) => { + match quadruped_small.species { + quadruped_small::Species::Dodarock => match rng.gen_range(0, 6) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_rocks", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_rocks", + ), + }, + _ => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>( + "common.loot_tables.loot_table_food", + ), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + }, + } + }, + Some(common::comp::Body::QuadrupedMedium(_)) => match rng.gen_range(0, 4) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + }, + Some(common::comp::Body::BirdMedium(_)) => match rng.gen_range(0, 3) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + Some(common::comp::Body::BipedLarge(_)) => match rng.gen_range(0, 8) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_nature", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_heavy", + ), + 5 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 6 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_rare", + ), + _ => assets::load_expect::>( + "common.loot_tables.loot_table_cave_large", + ), + }, + Some(common::comp::Body::Golem(_)) => match rng.gen_range(0, 9) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 2 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_light", + ), + 3 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_heavy", + ), + 4 => assets::load_expect::>( + "common.loot_tables.loot_table_armor_misc", + ), + 5 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_common", + ), + 6 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_uncommon", + ), + 7 => assets::load_expect::>( + "common.loot_tables.loot_table_weapon_rare", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + Some(common::comp::Body::Critter(_)) => { + assets::load_expect::>("common.loot_tables.loot_table_animal_parts") + }, + Some(common::comp::Body::Dragon(_)) => { + assets::load_expect::>("common.loot_tables.loot_table_weapon_rare") + }, + Some(common::comp::Body::QuadrupedLow(_)) => match rng.gen_range(0, 3) { + 0 => assets::load_expect::>("common.loot_tables.loot_table_food"), + 1 => assets::load_expect::>( + "common.loot_tables.loot_table_animal_parts", + ), + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }, + _ => assets::load_expect::>("common.loot_tables.loot_table"), + }; + let drop = drop.choose(); + // Replace npc with lootbag containing drop let _ = state .ecs() .write_storage() .insert(entity, Body::Object(object::Body::Pouch)); - let mut item_drops = state.ecs().write_storage::(); let item = if let Some(item_drop) = item_drops.get(entity).cloned() { item_drops.remove(entity); item_drop.0 } else { - let chosen = assets::load_expect::>("common.loot_table"); - let chosen = chosen.choose(); - - assets::load_expect_cloned(chosen) + assets::load_expect_cloned(drop) }; let _ = state.ecs().write_storage().insert(entity, item); diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index 65277a7d9a..d64b73accf 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -2,7 +2,7 @@ use super::SysTimer; use crate::{chunk_generator::ChunkGenerator, client::Client, Tick}; use common::{ assets, - comp::{self, item, Alignment, CharacterAbility, ItemConfig, Player, Pos}, + comp::{self, bird_medium, item, Alignment, CharacterAbility, ItemConfig, Player, Pos}, event::{EventBus, ServerEvent}, generation::get_npc_name, msg::ServerMsg, @@ -158,16 +158,16 @@ impl<'a> System<'a> for Sys { shoulder: None, chest: Some(assets::load_expect_cloned( match rand::thread_rng().gen_range(0, 10) { - 0 => "common.items.armor.chest.worker_green_0", - 1 => "common.items.armor.chest.worker_green_1", - 2 => "common.items.armor.chest.worker_red_0", - 3 => "common.items.armor.chest.worker_red_1", - 4 => "common.items.armor.chest.worker_purple_0", - 5 => "common.items.armor.chest.worker_purple_1", - 6 => "common.items.armor.chest.worker_yellow_0", - 7 => "common.items.armor.chest.worker_yellow_1", - 8 => "common.items.armor.chest.worker_orange_0", - _ => "common.items.armor.chest.worker_orange_1", + 0 => "common.items.npc_armor.chest.worker_green_0", + 1 => "common.items.npc_armor.chest.worker_green_1", + 2 => "common.items.npc_armor.chest.worker_red_0", + 3 => "common.items.npc_armor.chest.worker_red_1", + 4 => "common.items.npc_armor.chest.worker_purple_0", + 5 => "common.items.npc_armor.chest.worker_purple_1", + 6 => "common.items.npc_armor.chest.worker_yellow_0", + 7 => "common.items.npc_armor.chest.worker_yellow_1", + 8 => "common.items.npc_armor.chest.worker_orange_0", + _ => "common.items.npc_armor.chest.worker_orange_1", }, )), belt: Some(assets::load_expect_cloned( @@ -194,25 +194,25 @@ impl<'a> System<'a> for Sys { active_item, second_item: None, shoulder: Some(assets::load_expect_cloned( - "common.items.armor.shoulder.cultist_shoulder_purple", + "common.items.npc_armor.shoulder.cultist_shoulder_purple", )), chest: Some(assets::load_expect_cloned( - "common.items.armor.chest.cultist_chest_purple", + "common.items.npc_armor.chest.cultist_chest_purple", )), belt: Some(assets::load_expect_cloned( - "common.items.armor.belt.cultist_belt", + "common.items.npc_armor.belt.cultist_belt", )), hand: Some(assets::load_expect_cloned( - "common.items.armor.hand.cultist_hands_purple", + "common.items.npc_armor.hand.cultist_hands_purple", )), pants: Some(assets::load_expect_cloned( - "common.items.armor.pants.cultist_legs_purple", + "common.items.npc_armor.pants.cultist_legs_purple", )), foot: Some(assets::load_expect_cloned( - "common.items.armor.foot.cultist_boots", + "common.items.npc_armor.foot.cultist_boots", )), back: Some(assets::load_expect_cloned( - "common.items.armor.back.dungeon_purple-0", + "common.items.npc_armor.back.dungeon_purple-0", )), ring: None, neck: None, @@ -223,6 +223,11 @@ impl<'a> System<'a> for Sys { _ => LoadoutBuilder::animal(entity.body).build(), }; + loadout = match body { + comp::Body::Humanoid(_) => loadout, + _ => LoadoutBuilder::animal(entity.body).build(), + }; + let mut scale = entity.scale; // TODO: Remove this and implement scaling or level depending on stuff like @@ -255,7 +260,7 @@ impl<'a> System<'a> for Sys { loadout = comp::Loadout { active_item: Some(comp::ItemConfig { item: assets::load_expect_cloned( - "common.items.weapons.sword.zweihander_sword_0", + "common.items.npc_weapons.sword.zweihander_sword_0", ), ability1: Some(CharacterAbility::BasicMelee { energy_cost: 0, @@ -307,7 +312,15 @@ impl<'a> System<'a> for Sys { .health .set_to(stats.health.maximum(), comp::HealthSource::Revive); - let can_speak = alignment == comp::Alignment::Npc; + let can_speak = match body { + comp::Body::Humanoid(_) => alignment == comp::Alignment::Npc, + comp::Body::BirdMedium(bird_medium) => match bird_medium.species { + // Parrots like to have a word in this, too... + bird_medium::Species::Parrot => alignment == comp::Alignment::Npc, + _ => false, + }, + _ => false, + }; // TODO: This code sets an appropriate base_damage for the enemy. This doesn't // work because the damage is now saved in an ability diff --git a/voxygen/src/hud/crafting.rs b/voxygen/src/hud/crafting.rs index 99c706a5dc..226dbec811 100644 --- a/voxygen/src/hud/crafting.rs +++ b/voxygen/src/hud/crafting.rs @@ -176,6 +176,7 @@ impl<'a> Widget for Crafting<'a> { // Alignment Rectangle::fill_with([136.0, 378.0], color::TRANSPARENT) .top_left_with_margins_on(ids.window_frame, 74.0, 5.0) + .scroll_kids_vertically() .set(ids.align_rec, ui); Rectangle::fill_with([274.0, 340.0], color::TRANSPARENT) .top_right_with_margins_on(ids.window, 74.0, 5.0) @@ -245,24 +246,20 @@ impl<'a> Widget for Crafting<'a> { { let output_text = format!("x{}", &recipe.output.1.to_string()); // Output Image + let (title, desc) = super::util::item_text(&recipe.output.0); Button::image( self.item_imgs .img_id_or_not_found_img((&recipe.output.0).into()), ) .w_h(55.0, 55.0) .middle_of(state.ids.output_img_frame) - .label(if recipe.output.1 > 1 {&output_text} else {""}) // Only show output amount for amounts > 1 + .label(&output_text) .label_color(TEXT_COLOR) .label_font_size(self.fonts.cyri.scale(14)) .label_font_id(self.fonts.cyri.conrod_id) .label_y(conrod_core::position::Relative::Scalar(-24.0)) .label_x(conrod_core::position::Relative::Scalar(24.0)) - .with_tooltip( - self.tooltip_manager, - recipe.output.0.name(), - recipe.output.0.description(), - &item_tooltip, - ) + .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip) .set(state.ids.output_img, ui); } }, @@ -314,24 +311,6 @@ impl<'a> Widget for Crafting<'a> { state.update(|s| s.selected_recipe = Some(name.clone())); } } - // Image BG - /*Rectangle::fill_with([10.0, 10.0], color::TRANSPARENT) - .w_h(20.0, 20.0) - .mid_left_of(state.ids.recipe_names[i]) - .set(state.ids.recipe_img_frame[i], ui); - //Item Image - Image::new( - self.item_imgs - .img_id_or_not_found_img((&recipe.output.0).into()), - ) - .w_h(18.0, 18.0) - .color( - can_perform - .then_some(Some(TEXT_COLOR)) - .unwrap_or(Some(TEXT_GRAY_COLOR)), - ) - .middle_of(state.ids.recipe_img_frame[i]) - .set(state.ids.recipe_img[i], ui);*/ } //Ingredients @@ -412,17 +391,16 @@ impl<'a> Widget for Crafting<'a> { }; frame.set(state.ids.ingredient_frame[i], ui); //Item Image - let title = item.name(); - let desc = item.description(); + let (title, desc) = super::util::item_text(&item); Button::image(self.item_imgs.img_id_or_not_found_img(item.into())) .w_h(22.0, 22.0) .middle_of(state.ids.ingredient_frame[i]) //.image_color(col) - .with_tooltip(self.tooltip_manager, title, desc, &item_tooltip) + .with_tooltip(self.tooltip_manager, title, &*desc, &item_tooltip) .set(state.ids.ingredient_img[i], ui); // Ingredients text and amount // Don't show inventory amounts above 999 to avoid the widget clipping - let over9k = "999+"; + let over9k = "99+"; let in_inv: &str = &self.inventory.item_count(item).to_string(); // Show Ingredients // Align "Required" Text below last ingredient @@ -446,7 +424,7 @@ impl<'a> Widget for Crafting<'a> { "{}x {} ({})", amount, item.name(), - if self.inventory.item_count(item) > 999 { + if self.inventory.item_count(item) > 99 { over9k } else { in_inv @@ -456,7 +434,7 @@ impl<'a> Widget for Crafting<'a> { Text::new(&input) .right_from(state.ids.ingredient_frame[i], 10.0) .font_id(self.fonts.cyri.conrod_id) - .font_size(self.fonts.cyri.scale(14)) + .font_size(self.fonts.cyri.scale(12)) .color(col) .set(state.ids.ingredients[i], ui); } diff --git a/voxygen/src/hud/hotbar.rs b/voxygen/src/hud/hotbar.rs index 21840f79af..9b615530d2 100644 --- a/voxygen/src/hud/hotbar.rs +++ b/voxygen/src/hud/hotbar.rs @@ -78,7 +78,7 @@ impl State { use common::comp::item::{tool::ToolKind, ItemKind}; if let ItemKind::Tool(kind) = kind { if let ToolKind::Staff(kind) = &kind.kind { - kind != "Sceptre" + kind != "Sceptre" && kind != "SceptreVelorite" } else if let ToolKind::Debug(kind) = &kind.kind { kind == "Boost" } else { diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 202aa2dc2b..b5a2bb8db8 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -192,6 +192,7 @@ widget_ids! { help, help_info, debug_info, + lantern_info, // Window Frames window_frame_0, @@ -430,6 +431,7 @@ impl Show { if !self.esc_menu { self.crafting = open; self.bag = open; + self.map = false; self.want_grab = !open; } } @@ -1582,9 +1584,9 @@ impl Hud { .replace("{key}", help_key.to_string().as_str()), ) .color(TEXT_COLOR) - .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) + .bottom_left_with_margins_on(ui_widgets.window, 210.0, 10.0) .font_id(self.fonts.cyri.conrod_id) - .font_size(self.fonts.cyri.scale(16)) + .font_size(self.fonts.cyri.scale(12)) .set(self.ids.help_info, ui_widgets); } // Info about Debug Shortcut @@ -1600,11 +1602,29 @@ impl Hud { .replace("{key}", toggle_debug_key.to_string().as_str()), ) .color(TEXT_COLOR) - .down_from(self.ids.help_info, 5.0) + .top_left_with_margins_on(ui_widgets.window, 5.0, 5.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(12)) .set(self.ids.debug_info, ui_widgets); } + // Lantern Key + if let Some(toggle_lantern_key) = global_state + .settings + .controls + .get_binding(GameInput::ToggleLantern) + { + Text::new( + &self + .voxygen_i18n + .get("hud.press_key_to_toggle_lantern_fmt") + .replace("{key}", toggle_lantern_key.to_string().as_str()), + ) + .color(TEXT_COLOR) + .up_from(self.ids.help_info, 2.0) + .font_id(self.fonts.cyri.conrod_id) + .font_size(self.fonts.cyri.scale(12)) + .set(self.ids.lantern_info, ui_widgets); + } } // Help Text @@ -1700,8 +1720,15 @@ impl Hud { { Some(bag::Event::Stats) => self.show.stats = !self.show.stats, Some(bag::Event::Close) => { + self.show.stats = false; self.show.bag(false); - self.force_ungrab = true; + self.show.crafting(false); + if !self.show.social { + self.show.want_grab = true; + self.force_ungrab = false; + } else { + self.force_ungrab = true + }; }, None => {}, } @@ -1775,8 +1802,15 @@ impl Hud { events.push(Event::CraftRecipe(r)); }, crafting::Event::Close => { + self.show.stats = false; self.show.crafting(false); - self.force_ungrab = true; + self.show.bag(false); + if !self.show.social { + self.show.want_grab = true; + self.force_ungrab = false; + } else { + self.force_ungrab = true + }; }, } } @@ -1860,6 +1894,8 @@ impl Hud { // Unpause the game if we are on singleplayer so that we can logout #[cfg(feature = "singleplayer")] global_state.unpause(); + self.show.want_grab = true; + self.force_ungrab = false; self.show.settings(false) }, @@ -1996,7 +2032,12 @@ impl Hud { match event { social::Event::Close => { self.show.social(false); - self.force_ungrab = true; + if !self.show.bag { + self.show.want_grab = true; + self.force_ungrab = false; + } else { + self.force_ungrab = true + }; }, social::Event::ChangeSocialTab(social_tab) => { self.show.open_social_tab(social_tab) @@ -2041,7 +2082,8 @@ impl Hud { { Some(spell::Event::Close) => { self.show.spell(false); - self.force_ungrab = true; + self.show.want_grab = true; + self.force_ungrab = false; }, None => {}, } @@ -2064,7 +2106,8 @@ impl Hud { match event { map::Event::Close => { self.show.map(false); - self.force_ungrab = true; + self.show.want_grab = true; + self.force_ungrab = false; }, map::Event::MapZoom(map_zoom) => { events.push(Event::MapZoom(map_zoom)); @@ -2109,20 +2152,36 @@ impl Hud { } // Free look indicator - if self.show.free_look { - Text::new(&self.voxygen_i18n.get("hud.free_look_indicator")) + if let Some(freelook_key) = global_state + .settings + .controls + .get_binding(GameInput::FreeLook) + { + if self.show.free_look { + Text::new( + &self + .voxygen_i18n + .get("hud.free_look_indicator") + .replace("{key}", freelook_key.to_string().as_str()), + ) .color(TEXT_BG) - .mid_top_with_margin_on(ui_widgets.window, 100.0) + .mid_top_with_margin_on(ui_widgets.window, 130.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(20)) .set(self.ids.free_look_bg, ui_widgets); - Text::new(&self.voxygen_i18n.get("hud.free_look_indicator")) + Text::new( + &self + .voxygen_i18n + .get("hud.free_look_indicator") + .replace("{key}", freelook_key.to_string().as_str()), + ) .color(KILL_COLOR) .top_left_with_margins_on(self.ids.free_look_bg, -1.0, -1.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(20)) .set(self.ids.free_look_txt, ui_widgets); - } + } + }; // Auto walk indicator if self.show.auto_walk { diff --git a/voxygen/src/hud/overhead.rs b/voxygen/src/hud/overhead.rs index 78d6161f79..25bdc5e06a 100644 --- a/voxygen/src/hud/overhead.rs +++ b/voxygen/src/hud/overhead.rs @@ -155,7 +155,9 @@ impl<'a> Widget for Overhead<'a> { let hp_percentage = self.stats.health.current() as f64 / self.stats.health.maximum() as f64 * 100.0; let level_comp = self.stats.level.level() as i64 - self.own_level as i64; - let name_y = if hp_percentage.abs() > 99.9 { + let health_current = (self.stats.health.current() / 10) as f64; + let health_max = (self.stats.health.maximum() / 10) as f64; + let name_y = if (health_current - health_max).abs() < 1e-6 { MANA_BAR_Y + 20.0 } else if level_comp > 9 { MANA_BAR_Y + 38.0 @@ -163,6 +165,18 @@ impl<'a> Widget for Overhead<'a> { MANA_BAR_Y + 32.0 }; let font_size = if hp_percentage.abs() > 99.9 { 24 } else { 20 }; + // Show K for numbers above 10^3 and truncate them + // Show M for numbers above 10^6 and truncate them + let health_cur_txt = match health_current as u32 { + 0..=999 => format!("{:.0}", health_current.max(1.0)), + 1000..=999999 => format!("{:.0}K", (health_current / 1000.0).max(1.0)), + _ => format!("{:.0}M", (health_current as f64 / 1.0e6).max(1.0)), + }; + let health_max_txt = match health_max as u32 { + 0..=999 => format!("{:.0}", health_max.max(1.0)), + 1000..=999999 => format!("{:.0}K", (health_max / 1000.0).max(1.0)), + _ => format!("{:.0}M", (health_max as f64 / 1.0e6).max(1.0)), + }; // Name Text::new(&self.name) .font_id(self.fonts.cyri.conrod_id) @@ -176,6 +190,8 @@ impl<'a> Widget for Overhead<'a> { .font_size(font_size) .color(if self.in_group { GROUP_MEMBER + /*} else if targets player { //TODO: Add a way to see if the entity is trying to attack the player, their pet(s) or a member of their group and recolour their nametag accordingly + DEFAULT_NPC*/ } else { DEFAULT_NPC }) @@ -363,12 +379,7 @@ impl<'a> Widget for Overhead<'a> { })) .parent(id) .set(state.ids.health_bar, ui); - let mut txt = format!( - "{}/{}", - (self.stats.health.current() / 10).max(1) as u32, /* Don't show 0 health for - * living entities */ - self.stats.health.maximum() / 10 as u32, - ); + let mut txt = format!("{}/{}", health_cur_txt, health_max_txt); if self.stats.is_dead { txt = self.voxygen_i18n.get("hud.group.dead").to_string() }; diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 907ac4a5af..08e106cc27 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -700,6 +700,7 @@ impl<'a> Widget for Skillbar<'a> { Some(ToolKind::Bow(_)) => self.imgs.bow_m2, Some(ToolKind::Staff(kind)) => match kind.as_ref() { "Sceptre" => self.imgs.heal_0, + "SceptreVelorite" => self.imgs.heal_0, _ => self.imgs.staff_m2, }, Some(ToolKind::Debug(kind)) => match kind.as_ref() { @@ -726,6 +727,13 @@ impl<'a> Widget for Skillbar<'a> { Color::Rgba(0.3, 0.3, 0.3, 0.8) } }, + "SceptreVelorite" => { + if self.energy.current() as f64 >= 400.0 { + Color::Rgba(1.0, 1.0, 1.0, 1.0) + } else { + Color::Rgba(0.3, 0.3, 0.3, 0.8) + } + }, _ => Color::Rgba(1.0, 1.0, 1.0, 1.0), }, _ => Color::Rgba(1.0, 1.0, 1.0, 1.0), diff --git a/voxygen/src/hud/social.rs b/voxygen/src/hud/social.rs index 77e0a15372..82d570a15b 100644 --- a/voxygen/src/hud/social.rs +++ b/voxygen/src/hud/social.rs @@ -125,7 +125,6 @@ impl<'a> Widget for Social<'a> { fn update(self, args: widget::UpdateArgs) -> Self::Event { let widget::UpdateArgs { state, ui, .. } = args; - let mut events = Vec::new(); let button_tooltip = Tooltip::new({ // Edge images [t, b, r, l] @@ -268,20 +267,27 @@ impl<'a> Widget for Social<'a> { } // Online Tab if let SocialTab::Online = self.show.social_tab { + let players = self.client.player_list.iter().filter(|(_, p)| p.is_online); + let count = players.clone().count(); + let height = if count > 1 { + count as f64 - 1.0 + 20.0 * count as f64 - 1.0 + } else { + 1.0 + }; // Content Alignments Rectangle::fill_with([270.0, 346.0], color::TRANSPARENT) .mid_top_with_margin_on(state.ids.frame, 74.0) .scroll_kids_vertically() .set(state.ids.online_align, ui); - Rectangle::fill_with([133.0, 346.0], color::TRANSPARENT) + Rectangle::fill_with([133.0, height], color::TRANSPARENT) .top_left_with_margins_on(state.ids.online_align, 0.0, 0.0) .crop_kids() .set(state.ids.names_align, ui); - Rectangle::fill_with([39.0, 346.0], color::TRANSPARENT) + Rectangle::fill_with([39.0, height], color::TRANSPARENT) .right_from(state.ids.names_align, 2.0) .crop_kids() .set(state.ids.levels_align, ui); - Rectangle::fill_with([94.0, 346.0], color::TRANSPARENT) + Rectangle::fill_with([94.0, height], color::TRANSPARENT) .right_from(state.ids.levels_align, 2.0) .crop_kids() .set(state.ids.zones_align, ui); @@ -332,15 +338,13 @@ impl<'a> Widget for Social<'a> { // Sort widgets by zone alphabetically } // Online Text - let players = self.client.player_list.iter().filter(|(_, p)| p.is_online); - let count = players.clone().count(); Text::new(&self.localized_strings.get("hud.social.online")) .bottom_left_with_margins_on(state.ids.frame, 18.0, 10.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(14)) .color(TEXT_COLOR) .set(state.ids.online_txt, ui); - Text::new(&(count - 1).to_string()) + Text::new(&count.to_string()) .right_from(state.ids.online_txt, 5.0) .font_id(self.fonts.cyri.conrod_id) .font_size(self.fonts.cyri.scale(14)) diff --git a/voxygen/src/menu/char_selection/ui.rs b/voxygen/src/menu/char_selection/ui.rs index 526df2c80c..a3fd267cc1 100644 --- a/voxygen/src/menu/char_selection/ui.rs +++ b/voxygen/src/menu/char_selection/ui.rs @@ -44,9 +44,11 @@ widget_ids! { // Background and logo charlist_bg, charlist_frame, + charlist_bottom, + selection_bot, charlist_alignment, selection_scrollbar, - creation_bg, + creation_bot, creation_frame, creation_alignment, server_name_text, @@ -180,8 +182,6 @@ widget_ids! { image_ids! { struct Imgs { - charlist_frame: "voxygen.element.frames.window_4", - server_frame: "voxygen.element.frames.server_frame", // Info Window info_frame: "voxygen.element.frames.info_frame", @@ -192,6 +192,7 @@ image_ids! { delete_button_press: "voxygen.element.buttons.x_red_press", + frame_bot: "voxygen.element.frames.banner_bot", selection: "voxygen.element.frames.selection", selection_hover: "voxygen.element.frames.selection_hover", selection_press: "voxygen.element.frames.selection_press", @@ -210,8 +211,6 @@ image_ids! { staff: "voxygen.element.icons.staff", // Species Icons - male: "voxygen.element.icons.male", - female: "voxygen.element.icons.female", human_m: "voxygen.element.icons.human_m", human_f: "voxygen.element.icons.human_f", orc_m: "voxygen.element.icons.orc_m", @@ -224,6 +223,7 @@ image_ids! { elf_f: "voxygen.element.icons.elf_f", danari_m: "voxygen.element.icons.danari_m", danari_f: "voxygen.element.icons.danari_f", + //unknown: "voxygen.element.icons.missing_icon_grey", // Icon Borders icon_border: "voxygen.element.buttons.border", icon_border_mo: "voxygen.element.buttons.border_mo", @@ -447,6 +447,7 @@ impl CharSelectionUi { }) .title_font_size(self.fonts.cyri.scale(15)) .desc_font_size(self.fonts.cyri.scale(10)) + .parent(ui_widgets.window) .font_id(self.fonts.cyri.conrod_id) .title_text_color(TEXT_COLOR) .desc_text_color(TEXT_COLOR_2); @@ -600,26 +601,21 @@ impl CharSelectionUi { }; // Background for Server Frame - Rectangle::fill_with([386.0, 95.0], color::rgba(0.0, 0.0, 0.0, 0.9)) + Rectangle::fill_with([400.0, 95.0], color::rgba(0.0, 0.0, 0.0, 0.8)) .top_left_with_margins_on(ui_widgets.window, 30.0, 30.0) .set(self.ids.server_frame_bg, ui_widgets); - Image::new(self.imgs.server_frame) - .w_h(400.0, 100.0) - .color(Some(UI_MAIN)) - .middle_of(self.ids.server_frame_bg) - .set(self.ids.server_frame, ui_widgets); // Background for Char List - Rectangle::fill_with([386.0, 788.0], color::rgba(0.0, 0.0, 0.0, 0.8)) - .down_from(self.ids.server_frame_bg, 20.0) - .set(self.ids.charlist_bg, ui_widgets); - Image::new(self.imgs.charlist_frame) - .w_h(400.0, 800.0) - .middle_of(self.ids.charlist_bg) - .color(Some(UI_MAIN)) + Rectangle::fill_with([400.0, 800.0], color::rgba(0.0, 0.0, 0.0, 0.8)) + .down_from(self.ids.server_frame_bg, 5.0) .set(self.ids.charlist_frame, ui_widgets); - Rectangle::fill_with([386.0, 783.0], color::TRANSPARENT) - .middle_of(self.ids.charlist_bg) + Image::new(self.imgs.frame_bot) + .w_h(400.0, 48.0) + .down_from(self.ids.charlist_frame, 0.0) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8))) + .set(self.ids.selection_bot, ui_widgets); + Rectangle::fill_with([386.0, 800.0], color::TRANSPARENT) + .mid_top_with_margin_on(self.ids.charlist_frame, 2.0) .scroll_kids() .scroll_kids_vertically() .set(self.ids.charlist_alignment, ui_widgets); @@ -951,21 +947,21 @@ impl CharSelectionUi { // Window Rectangle::fill_with( - [386.0, ui_widgets.win_h - ui_widgets.win_h * 0.2], + [400.0, ui_widgets.win_h - ui_widgets.win_h * 0.15], color::rgba(0.0, 0.0, 0.0, 0.8), ) .top_left_with_margins_on(ui_widgets.window, 30.0, 30.0) - .set(self.ids.creation_bg, ui_widgets); - Image::new(self.imgs.charlist_frame) - .w_h(400.0, ui_widgets.win_h - ui_widgets.win_h * 0.19) - .middle_of(self.ids.creation_bg) - .color(Some(UI_MAIN)) - .set(self.ids.charlist_frame, ui_widgets); + .set(self.ids.creation_frame, ui_widgets); + Image::new(self.imgs.frame_bot) + .w_h(400.0, 48.0) + .down_from(self.ids.creation_frame, 0.0) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, 0.8))) + .set(self.ids.creation_bot, ui_widgets); Rectangle::fill_with( - [386.0, ui_widgets.win_h - ui_widgets.win_h * 0.19], + [386.0, ui_widgets.win_h - ui_widgets.win_h * 0.15], color::TRANSPARENT, ) - .middle_of(self.ids.creation_bg) + .mid_top_with_margin_on(self.ids.creation_frame, 10.0) .scroll_kids_vertically() .set(self.ids.creation_alignment, ui_widgets); Scrollbar::y_axis(self.ids.creation_alignment) @@ -974,19 +970,29 @@ impl CharSelectionUi { .rgba(0.33, 0.33, 0.33, 1.0) .set(self.ids.selection_scrollbar, ui_widgets); - // Male/Female/Species Icons - Text::new(&self.voxygen_i18n.get("char_selection.character_creation")) - .mid_top_with_margin_on(self.ids.creation_alignment, 10.0) - .font_size(self.fonts.cyri.scale(24)) - .font_id(self.fonts.cyri.conrod_id) - .color(TEXT_COLOR) - .set(self.ids.bodyspecies_text, ui_widgets); + // BodyType/Species Icons + let body_m_ico = match body.species { + humanoid::Species::Human => self.imgs.human_m, + humanoid::Species::Orc => self.imgs.orc_m, + humanoid::Species::Dwarf => self.imgs.dwarf_m, + humanoid::Species::Elf => self.imgs.elf_m, + humanoid::Species::Undead => self.imgs.undead_m, + humanoid::Species::Danari => self.imgs.danari_m, + }; + let body_f_ico = match body.species { + humanoid::Species::Human => self.imgs.human_f, + humanoid::Species::Orc => self.imgs.orc_f, + humanoid::Species::Dwarf => self.imgs.dwarf_f, + humanoid::Species::Elf => self.imgs.elf_f, + humanoid::Species::Undead => self.imgs.undead_f, + humanoid::Species::Danari => self.imgs.danari_f, + }; // Alignment Rectangle::fill_with([140.0, 72.0], color::TRANSPARENT) .mid_top_with_margin_on(self.ids.creation_alignment, 60.0) .set(self.ids.creation_buttons_alignment_1, ui_widgets); - // Male - Image::new(self.imgs.male) + // Bodytype M + Image::new(body_m_ico) .w_h(70.0, 70.0) .top_left_with_margins_on(self.ids.creation_buttons_alignment_1, 0.0, 0.0) .set(self.ids.male, ui_widgets); @@ -1004,8 +1010,8 @@ impl CharSelectionUi { body.body_type = humanoid::BodyType::Male; body.validate(); } - // Female - Image::new(self.imgs.female) + // Bodytype F + Image::new(body_f_ico) .w_h(70.0, 70.0) .top_right_with_margins_on(self.ids.creation_buttons_alignment_1, 0.0, 0.0) .set(self.ids.female, ui_widgets); diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index f01ba9ec65..eb2ac72d2c 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -1022,9 +1022,6 @@ impl Scene { // Render the skybox. renderer.render_skybox(&self.skybox.model, global, &self.skybox.locals, lod); - // Render particle effects. - self.particle_mgr.render(renderer, scene_data, global, lod); - self.terrain.render_translucent( renderer, global, @@ -1034,6 +1031,9 @@ impl Scene { scene_data.sprite_render_distance, ); + // Render particle effects. + self.particle_mgr.render(renderer, scene_data, global, lod); + renderer.render_post_process( &self.postprocess.model, &global.globals, diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index 47cde9862b..e045467285 100644 --- a/voxygen/src/scene/terrain.rs +++ b/voxygen/src/scene/terrain.rs @@ -2109,7 +2109,7 @@ impl Terrain { make_models( (BlockKind::HangingSign, 0), "voxygen.voxel.sprite.furniture.hanging_sign-0", - Vec3::new(-3.5, -28.0, -4.0), + Vec3::new(-3.5, -16.0, 0.0), Vec3::one(), ), // WallLamp diff --git a/voxygen/src/session.rs b/voxygen/src/session.rs index c01bce33d0..f83a6d3583 100644 --- a/voxygen/src/session.rs +++ b/voxygen/src/session.rs @@ -1146,7 +1146,7 @@ impl PlayState for SessionState { } /// Max distance an entity can be "targeted" -const MAX_TARGET_RANGE: f32 = 30.0; +const MAX_TARGET_RANGE: f32 = 300.0; /// Calculate what the cursor is pointing at within the 3d scene #[allow(clippy::type_complexity)] fn under_cursor( diff --git a/world/src/layer/mod.rs b/world/src/layer/mod.rs index d358e6286e..c47c7336da 100644 --- a/world/src/layer/mod.rs +++ b/world/src/layer/mod.rs @@ -2,7 +2,7 @@ use crate::{ column::ColumnSample, sim::SimChunk, util::{RandomField, Sampler}, - IndexRef, + IndexRef, CONFIG, }; use common::{ assets, comp, @@ -29,7 +29,7 @@ pub struct Colors { fn close(x: f32, tgt: f32, falloff: f32) -> f32 { (1.0 - (x - tgt).abs() / falloff).max(0.0).powf(0.5) } - +const MUSH_FACT: f32 = 0.0001; // To balance everything around the mushroom spawning rate pub fn apply_scatter_to<'a>( wpos2d: Vec2, mut get_column: impl FnMut(Vec2) -> Option<&'a ColumnSample<'a>>, @@ -39,32 +39,110 @@ pub fn apply_scatter_to<'a>( ) { use BlockKind::*; #[allow(clippy::type_complexity)] + // TODO: Add back all sprites we had before let scatter: &[(_, bool, fn(&SimChunk) -> (f32, Option<(f32, f32)>))] = &[ // (density, Option<(wavelen, threshold)>) + // Flowers (BlueFlower, false, |c| { ( - close(c.temp, -0.3, 0.7).min(close(c.humidity, 0.6, 0.35)) * 0.05, - Some((48.0, 0.6)), + close(c.temp, 0.1, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.01, + Some((48.0, 0.2)), ) }), (PinkFlower, false, |c| { ( - close(c.temp, 0.15, 0.5).min(close(c.humidity, 0.6, 0.35)) * 0.05, - Some((48.0, 0.6)), + close(c.temp, 0.2, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.01, + Some((48.0, 0.2)), ) }), - (DeadBush, false, |c| { + (PurpleFlower, false, |c| { ( - close(c.temp, 0.8, 0.3).min(close(c.humidity, 0.0, 0.4)) * 0.015, + close(c.temp, 0.3, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.01, + Some((48.0, 0.2)), + ) + }), + (RedFlower, false, |c| { + ( + close(c.temp, 0.5, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.01, + Some((48.0, 0.2)), + ) + }), + (WhiteFlower, false, |c| { + ( + close(c.temp, 0.0, 0.3).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.01, + Some((48.0, 0.2)), + ) + }), + (YellowFlower, false, |c| { + ( + close(c.temp, 0.3, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.01, + Some((48.0, 0.2)), + ) + }), + // Herbs and Spices + (LingonBerry, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, None, ) }), + (LeafyPlant, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + None, + ) + }), + (Fern, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) + * MUSH_FACT + * 0.5, + Some((48.0, 0.4)), + ) + }), + (Blueberry, false, |c| { + ( + close(c.temp, CONFIG.temperate_temp, 0.5).min(close( + c.humidity, + CONFIG.forest_hum, + 0.35, + )) * MUSH_FACT + * 0.3, + None, + ) + }), + // Collecable Objects + // Only spawn twigs in temperate forests (Twigs, false, |c| { - ((c.tree_density - 0.5).max(0.0) * 0.0025, None) + ((c.tree_density - 0.5).max(0.0) * MUSH_FACT * 0.5, None) }), (Stones, false, |c| { - ((c.rockiness - 0.5).max(0.0) * 0.005, None) + ((c.rockiness - 0.5).max(0.0) * MUSH_FACT * 0.5, None) }), + // Don't spawn Mushrooms in snowy regions + (Mushroom, false, |c| { + ( + close(c.temp, 0.3, 0.4).min(close(c.humidity, CONFIG.forest_hum, 0.35)) * MUSH_FACT, + None, + ) + }), + // Grass (ShortGrass, false, |c| { ( close(c.temp, 0.3, 0.4).min(close(c.humidity, 0.6, 0.35)) * 0.05, @@ -79,16 +157,117 @@ pub fn apply_scatter_to<'a>( }), (LongGrass, false, |c| { ( - close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.05, + close(c.temp, 0.4, 0.4).min(close(c.humidity, 0.8, 0.2)) * 0.08, Some((48.0, 0.1)), ) }), - (GrassSnow, false, |c| { + // Jungle Sprites + (LongGrass, false, |c| { ( - close(c.temp, -0.4, 0.4).min(close(c.rockiness, 0.0, 0.5)) * 0.1, - Some((48.0, 0.6)), + close(c.temp, CONFIG.tropical_temp, 0.4).min(close( + c.humidity, + CONFIG.jungle_hum, + 0.6, + )) * 0.08, + Some((60.0, 5.0)), ) }), + /*(WheatGreen, false, |c| { + ( + close(c.temp, 0.4, 0.2).min(close(c.humidity, CONFIG.forest_hum, 0.1)) + * MUSH_FACT + * 0.001, + None, + ) + }),*/ + (GrassSnow, false, |c| { + ( + close(c.temp, CONFIG.snow_temp - 0.2, 0.4).min(close( + c.humidity, + CONFIG.forest_hum, + 0.5, + )) * 0.01, + Some((48.0, 0.2)), + ) + }), + // Desert Plants + (DeadBush, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.3, + )) * MUSH_FACT + * 0.1, + None, + ) + }), + (LargeCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.1, + None, + ) + }), + /*(BarrelCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.1, + None, + ) + }), + (RoundCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.1, + None, + ) + }), + (ShortCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.1, + None, + ) + }), + (MedFlatCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.1, + None, + ) + }), + (ShortFlatCactus, false, |c| { + ( + close(c.temp, CONFIG.desert_temp + 0.2, 0.3).min(close( + c.humidity, + CONFIG.desert_hum, + 0.2, + )) * MUSH_FACT + * 0.1, + None, + ) + }),*/ ]; for y in 0..vol.size_xy().y as i32 { @@ -329,7 +508,7 @@ pub fn apply_caves_to<'a>( } } } - +#[allow(clippy::eval_order_dependence)] pub fn apply_caves_supplement<'a>( rng: &mut impl Rng, wpos2d: Vec2, @@ -368,56 +547,45 @@ pub fn apply_caves_supplement<'a>( let difficulty = cave_depth / 200.0; // Scatter things in caves - if RandomField::new(index.seed).chance(wpos2d.into(), 0.00005 * difficulty) + if RandomField::new(index.seed).chance(wpos2d.into(), 0.000005 * difficulty) && cave_base < surface_z as i32 - 40 { + let is_hostile: bool; let entity = EntityInfo::at(Vec3::new( wpos2d.x as f32, wpos2d.y as f32, cave_base as f32, )) - .with_alignment(comp::Alignment::Enemy) .with_body(match rng.gen_range(0, 6) { 0 => { - let species = match rng.gen_range(0, 2) { + is_hostile = false; + let species = match rng.gen_range(0, 4) { 0 => comp::quadruped_small::Species::Truffler, - _ => comp::quadruped_small::Species::Hyena, + 1 => comp::quadruped_small::Species::Dodarock, + 2 => comp::quadruped_small::Species::Holladon, + _ => comp::quadruped_small::Species::Batfox, }; comp::quadruped_small::Body::random_with(rng, &species).into() }, 1 => { - let species = match rng.gen_range(0, 3) { + is_hostile = true; + let species = match rng.gen_range(0, 5) { 0 => comp::quadruped_medium::Species::Tarasque, - 1 => comp::quadruped_medium::Species::Frostfang, _ => comp::quadruped_medium::Species::Bonerattler, }; comp::quadruped_medium::Body::random_with(rng, &species).into() }, 2 => { - let species = match rng.gen_range(0, 3) { - 0 => comp::quadruped_low::Species::Maneater, + is_hostile = true; + let species = match rng.gen_range(0, 4) { 1 => comp::quadruped_low::Species::Rocksnapper, _ => comp::quadruped_low::Species::Salamander, }; comp::quadruped_low::Body::random_with(rng, &species).into() }, 3 => { - let species = match rng.gen_range(0, 3) { - 0 => comp::critter::Species::Fungome, - 1 => comp::critter::Species::Axolotl, - _ => comp::critter::Species::Rat, - }; - comp::critter::Body::random_with(rng, &species).into() - }, - 4 => { - #[allow(clippy::match_single_binding)] - let species = match rng.gen_range(0, 1) { - _ => comp::golem::Species::StoneGolem, - }; - comp::golem::Body::random_with(rng, &species).into() - }, - _ => { - let species = match rng.gen_range(0, 4) { + is_hostile = true; + let species = match rng.gen_range(0, 8) { 0 => comp::biped_large::Species::Ogre, 1 => comp::biped_large::Species::Cyclops, 2 => comp::biped_large::Species::Wendigo, @@ -425,6 +593,19 @@ pub fn apply_caves_supplement<'a>( }; comp::biped_large::Body::random_with(rng, &species).into() }, + _ => { + is_hostile = false; + let species = match rng.gen_range(0, 5) { + 0 => comp::critter::Species::Fungome, + _ => comp::critter::Species::Rat, + }; + comp::critter::Body::random_with(rng, &species).into() + }, + }) + .with_alignment(if is_hostile { + comp::Alignment::Enemy + } else { + comp::Alignment::Wild }) .with_automatic_name(); diff --git a/world/src/lib.rs b/world/src/lib.rs index 6a1a6e954d..80670bbd64 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -105,6 +105,7 @@ impl World { pub fn sample_blocks(&self) -> BlockGen { BlockGen::new(ColumnGen::new(&self.sim)) } #[allow(clippy::or_fun_call)] // TODO: Pending review in #587 + #[allow(clippy::eval_order_dependence)] pub fn generate_chunk( &self, index: IndexRef, @@ -205,9 +206,9 @@ impl World { let mut rng = rand::thread_rng(); // Apply layers (paths, caves, etc.) + layer::apply_caves_to(chunk_wpos2d, sample_get, &mut chunk, index); layer::apply_scatter_to(chunk_wpos2d, sample_get, &mut chunk, index, sim_chunk); layer::apply_paths_to(chunk_wpos2d, sample_get, &mut chunk, index); - layer::apply_caves_to(chunk_wpos2d, sample_get, &mut chunk, index); // Apply site generation sim_chunk.sites.iter().for_each(|site| { @@ -236,15 +237,61 @@ impl World { && sim_chunk.chaos < 0.5 && !sim_chunk.is_underwater() { + // TODO: REFACTOR: Define specific alignments in a config file instead of here + let is_hostile: bool; + let is_giant = rng.gen_range(0, 8) == 0; + let quadmed = comp::Body::QuadrupedMedium(quadruped_medium::Body::random()); // Not all of them are hostile so we have to do the rng here + let quadlow = comp::Body::QuadrupedLow(quadruped_low::Body::random()); // Not all of them are hostile so we have to do the rng here let entity = EntityInfo::at(gen_entity_pos()) - .with_alignment(comp::Alignment::Wild) - .do_if(rng.gen_range(0, 8) == 0, |e| e.into_giant()) + .do_if(is_giant, |e| e.into_giant()) .with_body(match rng.gen_range(0, 5) { - 0 => comp::Body::QuadrupedMedium(quadruped_medium::Body::random()), - 1 => comp::Body::BirdMedium(bird_medium::Body::random()), - 2 => comp::Body::Critter(critter::Body::random()), - 3 => comp::Body::QuadrupedLow(quadruped_low::Body::random()), - _ => comp::Body::QuadrupedSmall(quadruped_small::Body::random()), + 0 => { + match quadmed { + comp::Body::QuadrupedMedium(quadruped_medium) => { + match quadruped_medium.species { + quadruped_medium::Species::Catoblepas => is_hostile = false, + quadruped_medium::Species::Mouflon => is_hostile = false, + quadruped_medium::Species::Tuskram => is_hostile = false, + _ => is_hostile = true, + } + }, + _ => is_hostile = true, + }; + quadmed + }, + 1 => { + is_hostile = false; + comp::Body::BirdMedium(bird_medium::Body::random()) + }, + 2 => { + is_hostile = false; + comp::Body::Critter(critter::Body::random()) + }, + 3 => { + match quadlow { + comp::Body::QuadrupedLow(quadruped_low) => { + match quadruped_low.species { + quadruped_low::Species::Crocodile => is_hostile = true, + quadruped_low::Species::Alligator => is_hostile = true, + quadruped_low::Species::Maneater => is_hostile = true, + _ => is_hostile = false, + } + }, + _ => is_hostile = false, + }; + quadlow + }, + _ => { + is_hostile = false; + comp::Body::QuadrupedSmall(quadruped_small::Body::random()) + }, + }) + .with_alignment(if is_hostile { + comp::Alignment::Enemy + } else if is_giant { + comp::Alignment::Npc + } else { + comp::Alignment::Wild }) .with_automatic_name(); diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index 4b3fe2f8a7..5ec09e375e 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -12,6 +12,7 @@ use common::{ astar::Astar, comp, generation::{ChunkSupplement, EntityInfo}, + lottery::Lottery, npc, store::{Id, Store}, terrain::{Block, BlockKind, Structure, TerrainChunkSize}, @@ -460,6 +461,13 @@ impl Floor { && !tile_is_pillar { // Bad + let chosen = + assets::load_expect::>(match rng.gen_range(0, 5) { + 0 => "common.loot_tables.loot_table_humanoids", + 1 => "common.loot_tables.loot_table_armor_misc", + _ => "common.loot_tables.loot_table_cultists", + }); + let chosen = chosen.choose(); let entity = EntityInfo::at( tile_wcenter.map(|e| e as f32) // Randomly displace them a little @@ -471,13 +479,14 @@ impl Floor { .with_alignment(comp::Alignment::Enemy) .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_automatic_name() + .with_loot_drop(assets::load_expect_cloned(chosen)) .with_main_tool(assets::load_expect_cloned(match rng.gen_range(0, 6) { - 0 => "common.items.weapons.axe.starter_axe", - 1 => "common.items.weapons.sword.starter_sword", - 2 => "common.items.weapons.sword.short_sword_0", - 3 => "common.items.weapons.hammer.hammer_1", - 4 => "common.items.weapons.staff.starter_staff", - _ => "common.items.weapons.bow.starter_bow", + 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", })); supplement.add_entity(entity); @@ -498,65 +507,28 @@ impl Floor { boss_spawn_tile + if boss_tile_is_pillar { 1 } else { 0 }; if tile_pos == boss_spawn_tile && tile_wcenter.xy() == wpos2d { + let chosen = assets::load_expect::>( + "common.loot_tables.loot_table_boss_cultist-leader", + ); + let chosen = chosen.choose(); let entity = EntityInfo::at(tile_wcenter.map(|e| e as f32)) .with_scale(4.0) .with_level(rng.gen_range(75, 100)) .with_alignment(comp::Alignment::Enemy) .with_body(comp::Body::Humanoid(comp::humanoid::Body::random())) .with_name(format!( - "{}, Cult Leader", + "Cult Leader {}", npc::get_npc_name(npc::NpcKind::Humanoid) )) .with_main_tool(assets::load_expect_cloned( match rng.gen_range(0, 1) { - //Add more possible cult leader weapons here - _ => "common.items.weapons.sword.cultist_purp_2h-0", + //Add more possible cult leader npc_weapons here + _ => { + "common.items.npc_weapons.sword.cultist_purp_2h_boss-0" + }, }, )) - .with_loot_drop(match rng.gen_range(0, 20) { - 0 => comp::Item::expect_from_asset( - "common.items.boss_drops.lantern", - ), - 1 => comp::Item::expect_from_asset( - "common.items.boss_drops.potions", - ), - 2 => comp::Item::expect_from_asset( - "common.items.armor.belt.cultist_belt", - ), - 3 => comp::Item::expect_from_asset( - "common.items.armor.chest.cultist_chest_purple", - ), - 4 => comp::Item::expect_from_asset( - "common.items.armor.foot.cultist_boots", - ), - 5 => comp::Item::expect_from_asset( - "common.items.armor.hand.cultist_hands_purple", - ), - 6 => comp::Item::expect_from_asset( - "common.items.armor.pants.cultist_legs_purple", - ), - 7 => comp::Item::expect_from_asset( - "common.items.armor.shoulder.cultist_shoulder_purple", - ), - 8 => comp::Item::expect_from_asset( - "common.items.weapons.staff.cultist_staff", - ), - 9 => comp::Item::expect_from_asset( - "common.items.weapons.sword.greatsword_2h_fine-1", - ), - 10 => comp::Item::expect_from_asset( - "common.items.weapons.sword.greatsword_2h_fine-2", - ), - 11 => comp::Item::expect_from_asset( - "common.items.weapons.sword.cultist_purp_2h-0", - ), - 12 => comp::Item::expect_from_asset( - "common.items.armor.back.dungeon_purple-0", - ), - _ => comp::Item::expect_from_asset( - "common.items.boss_drops.exp_flask", - ), - }); + .with_loot_drop(assets::load_expect_cloned(chosen)); supplement.add_entity(entity); } @@ -656,7 +628,7 @@ impl Floor { self.tiles.get(tile_pos) { let room = &self.rooms[*room]; - if RandomField::new(room.seed).chance(Vec3::from(pos), room.loot_density) { + if RandomField::new(room.seed).chance(Vec3::from(pos), room.loot_density * 0.5) { BlockMask::new(Block::new(BlockKind::Chest, Rgb::white()), 1) } else { empty diff --git a/world/src/site/settlement/building/archetype/house.rs b/world/src/site/settlement/building/archetype/house.rs index aa15f844e8..daecf45a11 100644 --- a/world/src/site/settlement/building/archetype/house.rs +++ b/world/src/site/settlement/building/archetype/house.rs @@ -535,6 +535,7 @@ impl Archetype for House { .noise .chance(Vec3::new(center_offset.x, center_offset.y, z), 0.2) { + let mut rng = rand::thread_rng(); let furniture = match self.noise.get(Vec3::new( center_offset.x, center_offset.y, @@ -545,7 +546,13 @@ impl Archetype for House { 1 => BlockKind::ChairSingle, 2 => BlockKind::ChairDouble, 3 => BlockKind::CoatRack, - 4 => BlockKind::Crate, + 4 => { + if rng.gen_range(0, 8) == 0 { + BlockKind::Chest + } else { + BlockKind::Crate + } + }, 6 => BlockKind::DrawerMedium, 7 => BlockKind::DrawerSmall, 8 => BlockKind::TableSide, diff --git a/world/src/site/settlement/mod.rs b/world/src/site/settlement/mod.rs index 50d22b3c52..196f574bad 100644 --- a/world/src/site/settlement/mod.rs +++ b/world/src/site/settlement/mod.rs @@ -897,7 +897,7 @@ impl Settlement { }) .with_agency(!is_dummy) .with_alignment(if is_dummy { - comp::Alignment::Wild + comp::Alignment::Passive } else if is_human { comp::Alignment::Npc } else { @@ -906,14 +906,14 @@ impl Settlement { .do_if(is_human && rng.gen(), |entity| { entity.with_main_tool(assets::load_expect_cloned( match rng.gen_range(0, 7) { - 0 => "common.items.weapons.tool.broom", - 1 => "common.items.weapons.tool.hoe", - 2 => "common.items.weapons.tool.pickaxe", - 3 => "common.items.weapons.tool.pitchfork", - 4 => "common.items.weapons.tool.rake", - 5 => "common.items.weapons.tool.shovel-0", - _ => "common.items.weapons.tool.shovel-1", - //_ => "common.items.weapons.bow.starter_bow", TODO: Re-Add this when we have a better way of distributing weapons here + 0 => "common.items.npc_weapons.tool.broom", + 1 => "common.items.npc_weapons.tool.hoe", + 2 => "common.items.npc_weapons.tool.pickaxe", + 3 => "common.items.npc_weapons.tool.pitchfork", + 4 => "common.items.npc_weapons.tool.rake", + 5 => "common.items.npc_weapons.tool.shovel-0", + _ => "common.items.npc_weapons.tool.shovel-1", + //_ => "common.items.npc_weapons.bow.starter_bow", TODO: Re-Add this when we have a better way of distributing npc_weapons here }, )) }) diff --git a/world/src/util/random.rs b/world/src/util/random.rs index 15eb502188..aaf6b208e3 100644 --- a/world/src/util/random.rs +++ b/world/src/util/random.rs @@ -10,7 +10,7 @@ impl RandomField { pub const fn new(seed: u32) -> Self { Self { seed } } pub fn chance(&self, pos: Vec3, chance: f32) -> bool { - (self.get(pos) % (1 << 10)) as f32 / ((1 << 10) as f32) < chance + (self.get(pos) % (1 << 16)) as f32 / ((1 << 16) as f32) < chance } }