From 2ff1edae28a72f943606bab869fb49a39bbd1fea Mon Sep 17 00:00:00 2001 From: Monty Marz Date: Wed, 3 Jun 2020 17:59:09 +0000 Subject: [PATCH] More item drops --- assets/common/items/apple.ron | 1 + assets/common/items/boss_drops/exp_flask.ron | 8 + assets/common/items/boss_drops/potions.ron | 2 +- assets/common/items/cheese.ron | 1 + assets/common/items/coconut.ron | 1 + assets/common/items/collar.ron | 1 + assets/common/items/mushroom.ron | 1 + assets/common/items/potion_big.ron | 12 + assets/common/items/potion_med.ron | 12 + assets/common/items/potion_minor.ron | 1 + assets/common/items/velorite.ron | 1 + assets/common/items/veloritefrag.ron | 1 + .../items/weapons/sword/cultist_purp_2h-0.ron | 10 + .../{ => sword}/greatsword_2h_dam-0.ron | 0 .../{ => sword}/greatsword_2h_dam-1.ron | 0 .../{ => sword}/greatsword_2h_dam-2.ron | 0 .../{ => sword}/greatsword_2h_fine-0.ron | 0 .../{ => sword}/greatsword_2h_fine-1.ron | 0 .../{ => sword}/greatsword_2h_fine-2.ron | 0 .../{ => sword}/greatsword_2h_orn-0.ron | 0 .../{ => sword}/greatsword_2h_orn-1.ron | 0 .../{ => sword}/greatsword_2h_orn-2.ron | 0 .../{ => sword}/greatsword_2h_simple-0.ron | 0 .../{ => sword}/greatsword_2h_simple-1.ron | 0 .../{ => sword}/greatsword_2h_simple-2.ron | 0 .../weapons/{ => sword}/long_2h_dam-0.ron | 0 .../weapons/{ => sword}/long_2h_dam-1.ron | 0 .../weapons/{ => sword}/long_2h_dam-2.ron | 0 .../weapons/{ => sword}/long_2h_dam-3.ron | 0 .../weapons/{ => sword}/long_2h_dam-4.ron | 0 .../weapons/{ => sword}/long_2h_dam-5.ron | 0 .../weapons/{ => sword}/long_2h_fine-0.ron | 0 .../weapons/{ => sword}/long_2h_fine-1.ron | 0 .../weapons/{ => sword}/long_2h_fine-2.ron | 0 .../weapons/{ => sword}/long_2h_fine-3.ron | 0 .../weapons/{ => sword}/long_2h_fine-4.ron | 0 .../weapons/{ => sword}/long_2h_fine-5.ron | 0 .../weapons/{ => sword}/long_2h_orn-0.ron | 0 .../weapons/{ => sword}/long_2h_orn-1.ron | 0 .../weapons/{ => sword}/long_2h_orn-2.ron | 0 .../weapons/{ => sword}/long_2h_orn-3.ron | 0 .../weapons/{ => sword}/long_2h_orn-4.ron | 0 .../weapons/{ => sword}/long_2h_orn-5.ron | 0 .../weapons/{ => sword}/long_2h_simple-0.ron | 0 .../weapons/{ => sword}/long_2h_simple-1.ron | 0 .../weapons/{ => sword}/long_2h_simple-2.ron | 0 .../weapons/{ => sword}/long_2h_simple-3.ron | 0 .../weapons/{ => sword}/long_2h_simple-4.ron | 0 .../weapons/{ => sword}/long_2h_simple-5.ron | 0 .../voxygen/element/misc_bg/temp_quest_bg.png | Bin 0 -> 87491 bytes assets/voxygen/i18n/de_DE.ron | 13 ++ assets/voxygen/i18n/en.ron | 13 ++ assets/voxygen/i18n/fr_FR.ron | 12 + assets/voxygen/i18n/it_IT.ron | 10 + assets/voxygen/i18n/pt_PT.ron | 12 + assets/voxygen/i18n/ru_RU.ron | 12 + assets/voxygen/i18n/tr_TR.ron | 12 + assets/voxygen/item_image_manifest.ron | 8 + .../humanoid_armor_shoulder_manifest.ron | 20 +- .../voxel/humanoid_main_weapon_manifest.ron | 6 +- assets/voxygen/voxel/object/potion_purp.vox | Bin 0 -> 1400 bytes .../voxel/weapon/sword/cultist_purp_2h-0.vox | Bin 0 -> 1656 bytes common/src/comp/inventory/item/mod.rs | 119 +++++++--- common/src/comp/inventory/item/tool.rs | 12 + common/src/comp/inventory/mod.rs | 2 +- server/src/events/entity_manipulation.rs | 175 +++++++++++++- .../2020-06-02-210738_inv_increase/down.sql | 41 ++++ .../2020-06-02-210738_inv_increase/up.sql | 58 +++++ voxygen/src/hud/img_ids.rs | 3 + voxygen/src/hud/minimap.rs | 2 - voxygen/src/hud/mod.rs | 219 ++++++------------ voxygen/src/hud/popup.rs | 93 ++++---- voxygen/src/hud/settings_window.rs | 34 +-- voxygen/src/hud/skillbar.rs | 120 +++++----- world/src/site/dungeon/mod.rs | 43 +++- 75 files changed, 763 insertions(+), 328 deletions(-) create mode 100644 assets/common/items/boss_drops/exp_flask.ron create mode 100644 assets/common/items/potion_big.ron create mode 100644 assets/common/items/potion_med.ron create mode 100644 assets/common/items/weapons/sword/cultist_purp_2h-0.ron rename assets/common/items/weapons/{ => sword}/greatsword_2h_dam-0.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_dam-1.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_dam-2.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_fine-0.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_fine-1.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_fine-2.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_orn-0.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_orn-1.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_orn-2.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_simple-0.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_simple-1.ron (100%) rename assets/common/items/weapons/{ => sword}/greatsword_2h_simple-2.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_dam-0.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_dam-1.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_dam-2.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_dam-3.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_dam-4.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_dam-5.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_fine-0.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_fine-1.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_fine-2.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_fine-3.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_fine-4.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_fine-5.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_orn-0.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_orn-1.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_orn-2.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_orn-3.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_orn-4.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_orn-5.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_simple-0.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_simple-1.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_simple-2.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_simple-3.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_simple-4.ron (100%) rename assets/common/items/weapons/{ => sword}/long_2h_simple-5.ron (100%) create mode 100644 assets/voxygen/element/misc_bg/temp_quest_bg.png create mode 100644 assets/voxygen/voxel/object/potion_purp.vox create mode 100644 assets/voxygen/voxel/weapon/sword/cultist_purp_2h-0.vox create mode 100644 server/src/migrations/2020-06-02-210738_inv_increase/down.sql create mode 100644 server/src/migrations/2020-06-02-210738_inv_increase/up.sql diff --git a/assets/common/items/apple.ron b/assets/common/items/apple.ron index f49626db5e..bf4a4faba3 100644 --- a/assets/common/items/apple.ron +++ b/assets/common/items/apple.ron @@ -7,5 +7,6 @@ Item( amount: 20, cause: Item, )), + amount: 20, ), ) diff --git a/assets/common/items/boss_drops/exp_flask.ron b/assets/common/items/boss_drops/exp_flask.ron new file mode 100644 index 0000000000..f8625daef7 --- /dev/null +++ b/assets/common/items/boss_drops/exp_flask.ron @@ -0,0 +1,8 @@ +Item( + name: "Flask of Velorite Dusk", + description: "Increases Exp by 250\n\nTake with plenty of water\n\n", + kind: Consumable( + kind: PotionExp, + effect: Xp(250), + ), +) diff --git a/assets/common/items/boss_drops/potions.ron b/assets/common/items/boss_drops/potions.ron index d73ddf4948..7c70ffa670 100644 --- a/assets/common/items/boss_drops/potions.ron +++ b/assets/common/items/boss_drops/potions.ron @@ -7,6 +7,6 @@ Item( amount: 100, cause: Item, )), - amount: 15, + amount: 10, ), ) diff --git a/assets/common/items/cheese.ron b/assets/common/items/cheese.ron index e7a9fef76f..3c563dfc27 100644 --- a/assets/common/items/cheese.ron +++ b/assets/common/items/cheese.ron @@ -7,5 +7,6 @@ Item( amount: 15, cause: Item, )), + amount: 20, ), ) diff --git a/assets/common/items/coconut.ron b/assets/common/items/coconut.ron index 3bd37115f9..a094eb6fb0 100644 --- a/assets/common/items/coconut.ron +++ b/assets/common/items/coconut.ron @@ -7,5 +7,6 @@ Item( amount: 30, cause: Item, )), + amount: 20, ), ) diff --git a/assets/common/items/collar.ron b/assets/common/items/collar.ron index 378fe47d56..9ec7edc59c 100644 --- a/assets/common/items/collar.ron +++ b/assets/common/items/collar.ron @@ -4,4 +4,5 @@ Item( kind: Utility( kind: Collar, ), + amount: 1, ) diff --git a/assets/common/items/mushroom.ron b/assets/common/items/mushroom.ron index c5ed02c43a..326a0bfa13 100644 --- a/assets/common/items/mushroom.ron +++ b/assets/common/items/mushroom.ron @@ -7,5 +7,6 @@ Item( amount: 10, cause: Item, )), + amount: 40, ), ) diff --git a/assets/common/items/potion_big.ron b/assets/common/items/potion_big.ron new file mode 100644 index 0000000000..2d709e607f --- /dev/null +++ b/assets/common/items/potion_big.ron @@ -0,0 +1,12 @@ +Item( + name: "Large Potion", + description: "Restores 100 Health\n\n", + kind: Consumable( + kind: PotionMinor, + effect: Health(( + amount: 100, + cause: Item, + )), + amount: 10, + ), +) diff --git a/assets/common/items/potion_med.ron b/assets/common/items/potion_med.ron new file mode 100644 index 0000000000..ec5c8845a1 --- /dev/null +++ b/assets/common/items/potion_med.ron @@ -0,0 +1,12 @@ +Item( + name: "Medium Potion", + description: "Restores 70 Health\n\n", + kind: Consumable( + kind: PotionMinor, + effect: Health(( + amount: 70, + cause: Item, + )), + amount: 10, + ), +) diff --git a/assets/common/items/potion_minor.ron b/assets/common/items/potion_minor.ron index 9d835fb242..bc1e471871 100644 --- a/assets/common/items/potion_minor.ron +++ b/assets/common/items/potion_minor.ron @@ -7,5 +7,6 @@ Item( amount: 50, cause: Item, )), + amount: 10, ), ) diff --git a/assets/common/items/velorite.ron b/assets/common/items/velorite.ron index 88ff4392b6..951c40eaa5 100644 --- a/assets/common/items/velorite.ron +++ b/assets/common/items/velorite.ron @@ -5,4 +5,5 @@ Item( kind: Velorite, effect: Xp(20), ), + amount: 10, ) diff --git a/assets/common/items/veloritefrag.ron b/assets/common/items/veloritefrag.ron index 31a2035bd2..07d5a4df40 100644 --- a/assets/common/items/veloritefrag.ron +++ b/assets/common/items/veloritefrag.ron @@ -5,4 +5,5 @@ Item( kind: VeloriteFrag, effect: Xp(10), ), + amount: 20, ) diff --git a/assets/common/items/weapons/sword/cultist_purp_2h-0.ron b/assets/common/items/weapons/sword/cultist_purp_2h-0.ron new file mode 100644 index 0000000000..869200b553 --- /dev/null +++ b/assets/common/items/weapons/sword/cultist_purp_2h-0.ron @@ -0,0 +1,10 @@ +Item( + name: "Magical Cultist Greatsword", + description: "Two-Hand Sword\n\nPower: 6-20\n\nThis belonged to an evil Cult Leader\n\n", + kind: Tool( + ( + kind: Sword(CultPurp0), + equip_time_millis: 500, + ) + ), +) diff --git a/assets/common/items/weapons/greatsword_2h_dam-0.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-0.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_dam-0.ron rename to assets/common/items/weapons/sword/greatsword_2h_dam-0.ron diff --git a/assets/common/items/weapons/greatsword_2h_dam-1.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-1.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_dam-1.ron rename to assets/common/items/weapons/sword/greatsword_2h_dam-1.ron diff --git a/assets/common/items/weapons/greatsword_2h_dam-2.ron b/assets/common/items/weapons/sword/greatsword_2h_dam-2.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_dam-2.ron rename to assets/common/items/weapons/sword/greatsword_2h_dam-2.ron diff --git a/assets/common/items/weapons/greatsword_2h_fine-0.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-0.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_fine-0.ron rename to assets/common/items/weapons/sword/greatsword_2h_fine-0.ron diff --git a/assets/common/items/weapons/greatsword_2h_fine-1.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-1.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_fine-1.ron rename to assets/common/items/weapons/sword/greatsword_2h_fine-1.ron diff --git a/assets/common/items/weapons/greatsword_2h_fine-2.ron b/assets/common/items/weapons/sword/greatsword_2h_fine-2.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_fine-2.ron rename to assets/common/items/weapons/sword/greatsword_2h_fine-2.ron diff --git a/assets/common/items/weapons/greatsword_2h_orn-0.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-0.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_orn-0.ron rename to assets/common/items/weapons/sword/greatsword_2h_orn-0.ron diff --git a/assets/common/items/weapons/greatsword_2h_orn-1.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-1.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_orn-1.ron rename to assets/common/items/weapons/sword/greatsword_2h_orn-1.ron diff --git a/assets/common/items/weapons/greatsword_2h_orn-2.ron b/assets/common/items/weapons/sword/greatsword_2h_orn-2.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_orn-2.ron rename to assets/common/items/weapons/sword/greatsword_2h_orn-2.ron diff --git a/assets/common/items/weapons/greatsword_2h_simple-0.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-0.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_simple-0.ron rename to assets/common/items/weapons/sword/greatsword_2h_simple-0.ron diff --git a/assets/common/items/weapons/greatsword_2h_simple-1.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-1.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_simple-1.ron rename to assets/common/items/weapons/sword/greatsword_2h_simple-1.ron diff --git a/assets/common/items/weapons/greatsword_2h_simple-2.ron b/assets/common/items/weapons/sword/greatsword_2h_simple-2.ron similarity index 100% rename from assets/common/items/weapons/greatsword_2h_simple-2.ron rename to assets/common/items/weapons/sword/greatsword_2h_simple-2.ron diff --git a/assets/common/items/weapons/long_2h_dam-0.ron b/assets/common/items/weapons/sword/long_2h_dam-0.ron similarity index 100% rename from assets/common/items/weapons/long_2h_dam-0.ron rename to assets/common/items/weapons/sword/long_2h_dam-0.ron diff --git a/assets/common/items/weapons/long_2h_dam-1.ron b/assets/common/items/weapons/sword/long_2h_dam-1.ron similarity index 100% rename from assets/common/items/weapons/long_2h_dam-1.ron rename to assets/common/items/weapons/sword/long_2h_dam-1.ron diff --git a/assets/common/items/weapons/long_2h_dam-2.ron b/assets/common/items/weapons/sword/long_2h_dam-2.ron similarity index 100% rename from assets/common/items/weapons/long_2h_dam-2.ron rename to assets/common/items/weapons/sword/long_2h_dam-2.ron diff --git a/assets/common/items/weapons/long_2h_dam-3.ron b/assets/common/items/weapons/sword/long_2h_dam-3.ron similarity index 100% rename from assets/common/items/weapons/long_2h_dam-3.ron rename to assets/common/items/weapons/sword/long_2h_dam-3.ron diff --git a/assets/common/items/weapons/long_2h_dam-4.ron b/assets/common/items/weapons/sword/long_2h_dam-4.ron similarity index 100% rename from assets/common/items/weapons/long_2h_dam-4.ron rename to assets/common/items/weapons/sword/long_2h_dam-4.ron diff --git a/assets/common/items/weapons/long_2h_dam-5.ron b/assets/common/items/weapons/sword/long_2h_dam-5.ron similarity index 100% rename from assets/common/items/weapons/long_2h_dam-5.ron rename to assets/common/items/weapons/sword/long_2h_dam-5.ron diff --git a/assets/common/items/weapons/long_2h_fine-0.ron b/assets/common/items/weapons/sword/long_2h_fine-0.ron similarity index 100% rename from assets/common/items/weapons/long_2h_fine-0.ron rename to assets/common/items/weapons/sword/long_2h_fine-0.ron diff --git a/assets/common/items/weapons/long_2h_fine-1.ron b/assets/common/items/weapons/sword/long_2h_fine-1.ron similarity index 100% rename from assets/common/items/weapons/long_2h_fine-1.ron rename to assets/common/items/weapons/sword/long_2h_fine-1.ron diff --git a/assets/common/items/weapons/long_2h_fine-2.ron b/assets/common/items/weapons/sword/long_2h_fine-2.ron similarity index 100% rename from assets/common/items/weapons/long_2h_fine-2.ron rename to assets/common/items/weapons/sword/long_2h_fine-2.ron diff --git a/assets/common/items/weapons/long_2h_fine-3.ron b/assets/common/items/weapons/sword/long_2h_fine-3.ron similarity index 100% rename from assets/common/items/weapons/long_2h_fine-3.ron rename to assets/common/items/weapons/sword/long_2h_fine-3.ron diff --git a/assets/common/items/weapons/long_2h_fine-4.ron b/assets/common/items/weapons/sword/long_2h_fine-4.ron similarity index 100% rename from assets/common/items/weapons/long_2h_fine-4.ron rename to assets/common/items/weapons/sword/long_2h_fine-4.ron diff --git a/assets/common/items/weapons/long_2h_fine-5.ron b/assets/common/items/weapons/sword/long_2h_fine-5.ron similarity index 100% rename from assets/common/items/weapons/long_2h_fine-5.ron rename to assets/common/items/weapons/sword/long_2h_fine-5.ron diff --git a/assets/common/items/weapons/long_2h_orn-0.ron b/assets/common/items/weapons/sword/long_2h_orn-0.ron similarity index 100% rename from assets/common/items/weapons/long_2h_orn-0.ron rename to assets/common/items/weapons/sword/long_2h_orn-0.ron diff --git a/assets/common/items/weapons/long_2h_orn-1.ron b/assets/common/items/weapons/sword/long_2h_orn-1.ron similarity index 100% rename from assets/common/items/weapons/long_2h_orn-1.ron rename to assets/common/items/weapons/sword/long_2h_orn-1.ron diff --git a/assets/common/items/weapons/long_2h_orn-2.ron b/assets/common/items/weapons/sword/long_2h_orn-2.ron similarity index 100% rename from assets/common/items/weapons/long_2h_orn-2.ron rename to assets/common/items/weapons/sword/long_2h_orn-2.ron diff --git a/assets/common/items/weapons/long_2h_orn-3.ron b/assets/common/items/weapons/sword/long_2h_orn-3.ron similarity index 100% rename from assets/common/items/weapons/long_2h_orn-3.ron rename to assets/common/items/weapons/sword/long_2h_orn-3.ron diff --git a/assets/common/items/weapons/long_2h_orn-4.ron b/assets/common/items/weapons/sword/long_2h_orn-4.ron similarity index 100% rename from assets/common/items/weapons/long_2h_orn-4.ron rename to assets/common/items/weapons/sword/long_2h_orn-4.ron diff --git a/assets/common/items/weapons/long_2h_orn-5.ron b/assets/common/items/weapons/sword/long_2h_orn-5.ron similarity index 100% rename from assets/common/items/weapons/long_2h_orn-5.ron rename to assets/common/items/weapons/sword/long_2h_orn-5.ron diff --git a/assets/common/items/weapons/long_2h_simple-0.ron b/assets/common/items/weapons/sword/long_2h_simple-0.ron similarity index 100% rename from assets/common/items/weapons/long_2h_simple-0.ron rename to assets/common/items/weapons/sword/long_2h_simple-0.ron diff --git a/assets/common/items/weapons/long_2h_simple-1.ron b/assets/common/items/weapons/sword/long_2h_simple-1.ron similarity index 100% rename from assets/common/items/weapons/long_2h_simple-1.ron rename to assets/common/items/weapons/sword/long_2h_simple-1.ron diff --git a/assets/common/items/weapons/long_2h_simple-2.ron b/assets/common/items/weapons/sword/long_2h_simple-2.ron similarity index 100% rename from assets/common/items/weapons/long_2h_simple-2.ron rename to assets/common/items/weapons/sword/long_2h_simple-2.ron diff --git a/assets/common/items/weapons/long_2h_simple-3.ron b/assets/common/items/weapons/sword/long_2h_simple-3.ron similarity index 100% rename from assets/common/items/weapons/long_2h_simple-3.ron rename to assets/common/items/weapons/sword/long_2h_simple-3.ron diff --git a/assets/common/items/weapons/long_2h_simple-4.ron b/assets/common/items/weapons/sword/long_2h_simple-4.ron similarity index 100% rename from assets/common/items/weapons/long_2h_simple-4.ron rename to assets/common/items/weapons/sword/long_2h_simple-4.ron diff --git a/assets/common/items/weapons/long_2h_simple-5.ron b/assets/common/items/weapons/sword/long_2h_simple-5.ron similarity index 100% rename from assets/common/items/weapons/long_2h_simple-5.ron rename to assets/common/items/weapons/sword/long_2h_simple-5.ron diff --git a/assets/voxygen/element/misc_bg/temp_quest_bg.png b/assets/voxygen/element/misc_bg/temp_quest_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e6504aab3cd43247ef35272ff06918480caaae2e GIT binary patch literal 87491 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

TIonEw5Sf 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 literal 0 HcmV?d00001 diff --git a/assets/voxygen/i18n/de_DE.ron b/assets/voxygen/i18n/de_DE.ron index 61c2979f4c..1682ff7a48 100644 --- a/assets/voxygen/i18n/de_DE.ron +++ b/assets/voxygen/i18n/de_DE.ron @@ -194,6 +194,18 @@ um dieses Fenster zu schließen? Drückt 'TAB'! Viel Spaß in der Welt von Veloren, Abenteurer!"#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! + + +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + // Inventory "hud.bag.inventory": "{playername}s Inventar", "hud.bag.stats_title": "{playername}s Werte", @@ -336,6 +348,7 @@ Viel Spaß in der Welt von Veloren, Abenteurer!"#, "gameinput.togglewield": "Waffe ziehen/wegstecken", "gameinput.interact": "Interagieren", "gameinput.freelook": "Freie Sicht", + "gameinput.dance": "Tanzen", /// End GameInput section diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron index 50feee86d7..e001d9ec97 100644 --- a/assets/voxygen/i18n/en.ron +++ b/assets/voxygen/i18n/en.ron @@ -190,6 +190,19 @@ Want to free your cursor to close this window? Press TAB! Enjoy your stay in the World of Veloren."#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! + + +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + + // Inventory "hud.bag.inventory": "{playername}'s Inventory", diff --git a/assets/voxygen/i18n/fr_FR.ron b/assets/voxygen/i18n/fr_FR.ron index c8490a09c5..75b4b7518a 100644 --- a/assets/voxygen/i18n/fr_FR.ron +++ b/assets/voxygen/i18n/fr_FR.ron @@ -153,6 +153,18 @@ Vous souhaitez libérer votre souris pour fermer cette fenêtre? Tapez sur TAB! Profitez de votre séjour dans le monde de Veloren."#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! + + +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + "hud.settings.general": "Général", "hud.settings.help_window": "Fenêtre d'aide", "hud.settings.debug_info": "Information de débogage", diff --git a/assets/voxygen/i18n/it_IT.ron b/assets/voxygen/i18n/it_IT.ron index 95e98e2841..9ed617662b 100644 --- a/assets/voxygen/i18n/it_IT.ron +++ b/assets/voxygen/i18n/it_IT.ron @@ -280,8 +280,18 @@ Vuoi sbloccare il cursore per chiudere questa finestra? Premi TAB! Goditi il tuo soggiorno nel Mondo di Veloren."#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + "hud.settings.general": "Generale", "hud.settings.none": "Nessuno", diff --git a/assets/voxygen/i18n/pt_PT.ron b/assets/voxygen/i18n/pt_PT.ron index 119e4f0d94..b97e2575b2 100644 --- a/assets/voxygen/i18n/pt_PT.ron +++ b/assets/voxygen/i18n/pt_PT.ron @@ -182,6 +182,18 @@ Quer libertar o mouse para fechar esta janela? Clique em TAB! Aprecie a sua estadia no mundo de Veloren."#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! + + +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + "hud.settings.general": "Geral", "hud.settings.none": "Nenhum", "hud.settings.press_behavior.toggle": "Alternar", diff --git a/assets/voxygen/i18n/ru_RU.ron b/assets/voxygen/i18n/ru_RU.ron index c82531a5fa..85736a18a5 100644 --- a/assets/voxygen/i18n/ru_RU.ron +++ b/assets/voxygen/i18n/ru_RU.ron @@ -179,6 +179,18 @@ https://account.veloren.net."#, Наслаждайтесь миром Veloren."#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! + + +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + // Inventory "hud.bag.inventory": "Инвентарь", diff --git a/assets/voxygen/i18n/tr_TR.ron b/assets/voxygen/i18n/tr_TR.ron index 54315e410d..fc29052e23 100644 --- a/assets/voxygen/i18n/tr_TR.ron +++ b/assets/voxygen/i18n/tr_TR.ron @@ -191,6 +191,18 @@ Bu pencereyi kapatmak için imlecini serbest bırakmak mı istiyorsun? TAB'a bas Veloren'in Dünyasında sana iyi eğlenceler!"#, +"hud.temp_quest_headline": r#"Please, help us Traveler!"#, +"hud.temp_quest_text": r#"Dungeons filled with evil cultists +have emerged all around our peaceful towns! + + +Gather some company, stack up on food +and defeat their vile leaders and acolytes. + + +Maybe you can even obtain one of their +magically infused items?"#, + // Inventory "hud.bag.inventory": "'in Envanteri", diff --git a/assets/voxygen/item_image_manifest.ron b/assets/voxygen/item_image_manifest.ron index 5c37fb24a5..fc165f4260 100644 --- a/assets/voxygen/item_image_manifest.ron +++ b/assets/voxygen/item_image_manifest.ron @@ -178,6 +178,10 @@ "voxel.weapon.sword.long_2h_fine-5", (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.5, ), + Tool(Sword(CultPurp0)): VoxTrans( + "voxel.weapon.sword.cultist_purp_2h-0", + (0.0, 0.0, 0.0), (-135.0, 90.0, 0.0), 1.5, + ), // Axes Tool(Axe(BasicAxe)): VoxTrans( "voxel.weapon.axe.rusty_2h", @@ -617,6 +621,10 @@ "voxel.object.potion_red", (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, ), + Consumable(PotionExp): VoxTrans( + "voxel.object.potion_turq", + (0.0, 0.0, 0.0), (-50.0, 30.0, 20.0), 0.8, + ), Consumable(Cheese): VoxTrans( "element.icons.item_cheese", (0.0, 0.0, 0.0), (-90.0, 90.0, 0.0), 0.9, diff --git a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron index b17c8672b3..44c3a23507 100644 --- a/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron +++ b/assets/voxygen/voxel/humanoid_armor_shoulder_manifest.ron @@ -63,51 +63,51 @@ ), Leather0: ( left: ( - vox_spec: ("armor.shoulder.leather_right-0", (-3.2, -3.5, 1.0)), + vox_spec: ("armor.shoulder.leather_right-0", (-3.2, -3.5, 0.0)), color: None ), right: ( - vox_spec: ("armor.shoulder.leather_right-0", (-1.8, -3.5, 1.0)), + vox_spec: ("armor.shoulder.leather_right-0", (-1.8, -3.5, 0.0)), color: None ) ), Leather1: ( left: ( - vox_spec: ("armor.shoulder.leather_right-1", (-3.6, -4.5, 1.0)), + vox_spec: ("armor.shoulder.leather_right-1", (-3.6, -4.5, 0.0)), color: None ), right: ( - vox_spec: ("armor.shoulder.leather_right-1", (-2.6, -4.5, 1.0)), + vox_spec: ("armor.shoulder.leather_right-1", (-2.6, -4.5, 0.0)), color: None ) ), ClothPurple0: ( left: ( - vox_spec: ("armor.shoulder.cloth_purple_right-0", (-3.2, -3.5, 1.0)), + vox_spec: ("armor.shoulder.cloth_purple_right-0", (-3.2, -3.5, 0.0)), color: None ), right: ( - vox_spec: ("armor.shoulder.cloth_purple_right-0", (-1.8, -3.5, 1.0)), + vox_spec: ("armor.shoulder.cloth_purple_right-0", (-1.8, -3.5, 0.0)), color: None ) ), ClothBlue0: ( left: ( - vox_spec: ("armor.shoulder.cloth_blue_left-0", (-3.2, -3.5, 1.0)), + vox_spec: ("armor.shoulder.cloth_blue_left-0", (-3.2, -3.5, 0.0)), color: None ), right: ( - vox_spec: ("armor.shoulder.cloth_blue_right-0", (-1.8, -3.5, 1.0)), + vox_spec: ("armor.shoulder.cloth_blue_right-0", (-1.8, -3.5, 0.0)), color: None ) ), ClothGreen0: ( left: ( - vox_spec: ("armor.shoulder.cloth_green_left-0", (-3.2, -3.5, 1.0)), + vox_spec: ("armor.shoulder.cloth_green_left-0", (-3.2, -3.5, 0.0)), color: None ), right: ( - vox_spec: ("armor.shoulder.cloth_green_right-0", (-1.8, -3.5, 1.0)), + vox_spec: ("armor.shoulder.cloth_green_right-0", (-1.8, -3.5, 0.0)), color: None ) ), diff --git a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron index accbe7d266..821c79343f 100644 --- a/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron +++ b/assets/voxygen/voxel/humanoid_main_weapon_manifest.ron @@ -52,7 +52,7 @@ color: None ), Sword(GreatswordOrn2): ( - vox_spec: ("weapon.sword.greatsword_2h_orn-2", (-1.0, -4.5, -7.5 )), + vox_spec: ("weapon.sword.greatsword_2h_orn-2", (-1.0, -4.5, -7.5)), color: None ), Sword(GreatswordFine0): ( @@ -162,6 +162,10 @@ Sword(LongFine5): ( vox_spec: ("weapon.sword.long_2h_fine-5", (-2.0, -4.5, -6.0)), color: None + ), + Sword(CultPurp0): ( + vox_spec: ("weapon.sword.cultist_purp_2h-0", (-2.0, -4.5, -7.5)), + color: None ), Axe(BasicAxe): ( vox_spec: ("weapon.axe.rusty_2h", (-1.5, -5.0, -4.0)), diff --git a/assets/voxygen/voxel/object/potion_purp.vox b/assets/voxygen/voxel/object/potion_purp.vox new file mode 100644 index 0000000000000000000000000000000000000000..e956e483f666da220467cb2d4a360640b1216a74 GIT binary patch literal 1400 zcmc)JU2Kz890u_JIfu=KO*2^6u?@T04Ou(G*oXU&ft_204hD|tgfbUmMqF)(rZEdN zjRva3Nv2~q0~2sgQYH`oylVHTy5iZmG#&6+eB62tk1H5q0R&Gq_{Cc`XBUs9yWkZ9JV$&eV% zH>}B6Sq$ITaGl}%GLs?EtVxrxvSB8rR%JCQ&6boDWHpH@$STrgNHlBGWUOqMNvXnw zR)rUoF1(<1VPfz0m%8&8%De06=s+|Y#e-?Vj&n<>wLQWgHXAaTept^H|Fu<*GcGcUM#jkQ-W=M#Ll zSFrq+Ai(;_kYH+*{o{fjw_v10Fy1RT!~TKRDg=ElL#h`ZGbBqY8dc9fsRBA>7-EA&(uw)@n>{-+&4o|#GrvOfqO{w#v1O5f~6}x`2F4>!Y4~HdC`Vz zw<@uWn*aUxx3sk2RQoI%o93`(;y5Z}mALV>;PwH*&M(t&yWJS89mlR6Nk}Y$@^Cp8 zPYbq|l;HVyC*W{6@WF;Swr!cl=*bgUH&TJSjg1H|<}l5>`uF`?^Q^u04`vY_1CE}a zN9=qGpC+&4iyw3OJ+~d7&7VDZH3zTPiw6Qo5#djmoZ$ZVf4|>-{=fcfoS$I+J9}Jf R4L)wn>R)LrzwyfJJkLSmUXVYRi~R9|R}3yV4MCJ3x(GKzLqm$`m0W8&W#mHEm@?+3 zH{6IQ1Vq|0g2q@2Nf@zOo8%m0GUkL>wKd0@@xE8R=*_q9qq((K_M)?W_WOR$InTdy z&$;yn4`&UCNKHlc0TwwPB~n)%4!Ip+vq&__CWnuNtBW)P+j~UWGN}x))TFZ2k}@QU z+0skO)*K^IPPWb{WA!O*pHUXEiLvR1Zu*o>bQCkOiC)*IEMl+YJYq-pDHF~9r#Oe$ z#1M&@R4QgkG^>tT(yU^|EGeRi*vv!|F`Q$Vof^gdbBKPWczQgY7-pS7PoNXStP|;pSCmZ*vreKX(TQQ!9=eB4 z46{zACl4r_7-sFId+Ee5>lAtlofu}lflh2R5tGlTK*ag2w$M+Q31qPe*l@j)+28+Ib}W;p^w zC6JJTG{r!M6Crb6#McN?P7CrwIoNtb5Zxq*jR=x@1m4dDMKvz$I~|Ykg(SQ?vk_J8 zg4%w;8xw+a_jqk>8hnj@WVh#`cshvm77zU0X~-MRM8SLxQW^x=7X(`e1ZA@Vd4aL8d(D%t^r5Gs#$aE*;pn38f;aCf}1a(tlPk(I>byCb%<64+@4ug0Bt1XQ&J;&MKDyR$yj_nq-RtbKezlPePG&F|%XsgY|z=<7be{~lIPF14!L|PbXo%`S4Usza(%e#iKyqy-qT22Ayu8tw{=``M-x{VLNUB=GlPLy99!v2qEQFmh*!C(+S z^Hn68;5S&yg4M4dz27SL*ME)k6vAmvb-Ug0csvgsKd|57&#`~2&KY&i;$QFcc&>9k LpLD*Re}F##cL Some(assets::load_expect_cloned("common.items.coconut")), BlockKind::Chest => Some(assets::load_expect_cloned( [ - "common.items.apple", + //miscellaneous "common.items.velorite", "common.items.veloritefrag", - "common.items.cheese", "common.items.potion_minor", "common.items.collar", + //swords "common.items.weapons.sword.starter_sword", - "common.items.weapons.axe.starter_axe", - "common.items.weapons.staff.staff_nature", - "common.items.weapons.hammer.starter_hammer", - "common.items.weapons.bow.starter_bow", - "common.items.weapons.staff.starter_staff", - "common.items.armor.belt.plate_0", - "common.items.armor.belt.leather_0", - "common.items.armor.chest.plate_green_0", - "common.items.armor.chest.leather_0", - "common.items.armor.foot.plate_0", - "common.items.armor.foot.leather_0", - "common.items.armor.pants.plate_green_0", - "common.items.armor.belt.leather_0", - "common.items.armor.shoulder.plate_0", - "common.items.armor.shoulder.leather_1", - "common.items.armor.shoulder.leather_0", - "common.items.armor.hand.leather_0", - "common.items.armor.hand.plate_0", "common.items.weapons.sword.wood_sword", "common.items.weapons.sword.short_sword_0", + "common.items.weapons.sword.greatsword_2h_simple-0", + "common.items.weapons.sword.greatsword_2h_simple-1", + "common.items.weapons.sword.greatsword_2h_simple-2", + "common.items.weapons.sword.long_2h_simple-0", + "common.items.weapons.sword.long_2h_simple-1", + "common.items.weapons.sword.long_2h_simple-2", + "common.items.weapons.sword.long_2h_simple-3", + "common.items.weapons.sword.long_2h_simple-4", + "common.items.weapons.sword.long_2h_simple-5", + "common.items.weapons.sword.greatsword_2h_dam-0", + "common.items.weapons.sword.greatsword_2h_dam-1", + "common.items.weapons.sword.greatsword_2h_dam-2", + "common.items.weapons.sword.greatsword_2h_orn-0", + "common.items.weapons.sword.greatsword_2h_orn-1", + "common.items.weapons.sword.greatsword_2h_orn-2", + "common.items.weapons.sword.long_2h_dam-0", + "common.items.weapons.sword.long_2h_dam-1", + "common.items.weapons.sword.long_2h_dam-2", + "common.items.weapons.sword.long_2h_dam-3", + "common.items.weapons.sword.long_2h_dam-4", + "common.items.weapons.sword.long_2h_dam-5", + "common.items.weapons.sword.long_2h_orn-0", + "common.items.weapons.sword.long_2h_orn-1", + "common.items.weapons.sword.long_2h_orn-2", + "common.items.weapons.sword.long_2h_orn-3", + "common.items.weapons.sword.long_2h_orn-4", + "common.items.weapons.sword.long_2h_orn-5", + "common.items.weapons.sword.long_2h_simple-0", + "common.items.weapons.sword.long_2h_simple-1", + "common.items.weapons.sword.long_2h_simple-2", + "common.items.weapons.sword.long_2h_simple-3", + "common.items.weapons.sword.long_2h_simple-4", + "common.items.weapons.sword.long_2h_simple-5", + //axes + "common.items.weapons.axe.starter_axe", + //staves + "common.items.weapons.staff.staff_nature", + "common.items.weapons.staff.starter_staff", + //hammers + "common.items.weapons.hammer.starter_hammer", + //bows + "common.items.weapons.bow.starter_bow", + //belts + "common.items.armor.belt.plate_0", + "common.items.armor.belt.steel_0", + "common.items.armor.belt.leather_0", + "common.items.armor.belt.leather_2", "common.items.armor.belt.cloth_blue_0", - "common.items.armor.chest.cloth_blue_0", - "common.items.armor.foot.cloth_blue_0", - "common.items.armor.pants.cloth_blue_0", - "common.items.armor.shoulder.cloth_blue_0", - "common.items.armor.hand.cloth_blue_0", "common.items.armor.belt.cloth_green_0", - "common.items.armor.chest.cloth_green_0", - "common.items.armor.foot.cloth_green_0", - "common.items.armor.pants.cloth_green_0", - "common.items.armor.shoulder.cloth_green_0", - "common.items.armor.hand.cloth_green_0", "common.items.armor.belt.cloth_purple_0", + //chests + "common.items.armor.chest.plate_green_0", + "common.items.armor.chest.leather_0", + "common.items.armor.chest.steel_0", + "common.items.armor.chest.leather_2", + "common.items.armor.chest.cloth_blue_0", + "common.items.armor.chest.cloth_green_0", "common.items.armor.chest.cloth_purple_0", + //shoes + "common.items.armor.foot.plate_0", + "common.items.armor.foot.steel_0", + "common.items.armor.foot.leather_0", + "common.items.armor.foot.leather_2", + "common.items.armor.foot.cloth_blue_0", + "common.items.armor.foot.cloth_green_0", "common.items.armor.foot.cloth_purple_0", + //pants + "common.items.armor.pants.plate_green_0", + "common.items.armor.pants.green_0", + "common.items.armor.pants.leather_0", + "common.items.armor.pants.steel_0", + "common.items.armor.pants.cloth_blue_0", + "common.items.armor.pants.cloth_green_0", "common.items.armor.pants.cloth_purple_0", + //shoulders + "common.items.armor.shoulder.plate_0", + "common.items.armor.shoulder.steel_0", + "common.items.armor.shoulder.leather_1", + "common.items.armor.shoulder.leather_0", + "common.items.armor.shoulder.leather_2", + "common.items.armor.shoulder.cloth_blue_0", + "common.items.armor.shoulder.cloth_green_0", "common.items.armor.shoulder.cloth_purple_0", + //gloves + "common.items.armor.hand.leather_0", + "common.items.armor.hand.leather_2", + "common.items.armor.hand.steel_0", + "common.items.armor.hand.plate_0", + "common.items.armor.hand.cloth_blue_0", + "common.items.armor.hand.cloth_green_0", "common.items.armor.hand.cloth_purple_0", + //rings "common.items.armor.ring.ring_0", + //capes "common.items.armor.back.short_0", + //necks "common.items.armor.neck.neck_0", ] .choose(&mut rand::thread_rng()) diff --git a/common/src/comp/inventory/item/tool.rs b/common/src/comp/inventory/item/tool.rs index c9423ebc9d..37d41b57aa 100644 --- a/common/src/comp/inventory/item/tool.rs +++ b/common/src/comp/inventory/item/tool.rs @@ -50,6 +50,7 @@ pub enum SwordKind { LongFine3, LongFine4, LongFine5, + CultPurp0, } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] pub enum AxeKind { @@ -137,6 +138,17 @@ impl Tool { use ToolKind::*; match self.kind { + Sword(SwordKind::CultPurp0) => vec![ + TripleStrike { + base_damage: 10, + needs_timing: false, + }, + DashMelee { + buildup_duration: Duration::from_millis(500), + recover_duration: Duration::from_millis(500), + base_damage: 20, + }, + ], Sword(_) => vec![ TripleStrike { base_damage: 5, diff --git a/common/src/comp/inventory/mod.rs b/common/src/comp/inventory/mod.rs index e7e126ed96..ef186d103f 100644 --- a/common/src/comp/inventory/mod.rs +++ b/common/src/comp/inventory/mod.rs @@ -299,7 +299,7 @@ impl Inventory { impl Default for Inventory { fn default() -> Inventory { let mut inventory = Inventory { - slots: vec![None; 18], + slots: vec![None; 36], amount: 0, }; inventory.push(assets::load_expect_cloned("common.items.cheese")); diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 45be81d287..d5a4336e24 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -10,6 +10,7 @@ use common::{ vol::{ReadVol, Vox}, }; use log::error; +use rand::seq::SliceRandom; use specs::{join::Join, Entity as EcsEntity, WorldExt}; use vek::Vec3; @@ -112,7 +113,179 @@ pub fn handle_destroy(server: &mut Server, entity: EcsEntity, cause: HealthSourc item_drops.remove(entity); item_drop.0 } else { - assets::load_expect_cloned::("common.items.cheese") + assets::load_expect_cloned::( + [ + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.collar", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.collar", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.collar", + "common.items.veloritefrag", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.collar", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.collar", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.cheese", + "common.items.mushroom", + "common.items.apple", + "common.items.collar", + "common.items.collar", + "common.items.collar", + "common.items.collar", + "common.items.collar", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.veloritefrag", + "common.items.velorite", + "common.items.armor.ring.ring_0", + "common.items.armor.neck.neck_0", + "common.items.mushroom", + "common.items.coconut", + "common.items.coconut", + "common.items.coconut", + "common.items.coconut", + "common.items.coconut", + "common.items.potion_minor", + "common.items.potion_minor", + "common.items.potion_minor", + "common.items.potion_minor", + "common.items.potion_minor", + "common.items.potion_minor", + "common.items.weapons.tool.broom", + "common.items.weapons.tool.shovel-1", + "common.items.weapons.staff.staff_nature", + "common.items.flowers.yellow", + "common.items.armor.pants.worker_blue_0", + "common.items.armor.chest.worker_yellow_0", + "common.items.armor.chest.worker_green_0", + "common.items.armor.chest.worker_orange_0", + "common.items.armor.back.short_0", + "common.items.weapons.staff.staff_nature", + "common.items.weapons.sword.starter_sword", + "common.items.weapons.axe.starter_axe", + "common.items.weapons.staff.staff_nature", + "common.items.weapons.hammer.starter_hammer", + "common.items.weapons.bow.starter_bow", + "common.items.weapons.staff.starter_staff", + "common.items.weapons.sword.starter_sword", + "common.items.weapons.axe.starter_axe", + "common.items.weapons.staff.staff_nature", + "common.items.weapons.hammer.starter_hammer", + "common.items.weapons.bow.starter_bow", + "common.items.weapons.staff.starter_staff", + "common.items.weapons.sword.starter_sword", + "common.items.weapons.axe.starter_axe", + "common.items.weapons.staff.staff_nature", + "common.items.weapons.hammer.starter_hammer", + "common.items.weapons.bow.starter_bow", + "common.items.weapons.staff.starter_staff", + "common.items.weapons.sword.greatsword_2h_simple-0", + "common.items.weapons.sword.greatsword_2h_simple-1", + "common.items.weapons.sword.greatsword_2h_simple-2", + "common.items.weapons.sword.long_2h_simple-0", + "common.items.weapons.sword.long_2h_simple-1", + "common.items.weapons.sword.long_2h_simple-2", + "common.items.weapons.sword.long_2h_simple-3", + "common.items.weapons.sword.long_2h_simple-4", + "common.items.weapons.sword.long_2h_simple-5", + ] + .choose(&mut rand::thread_rng()) + .unwrap(), + ) }; let _ = state.ecs().write_storage().insert(entity, item); diff --git a/server/src/migrations/2020-06-02-210738_inv_increase/down.sql b/server/src/migrations/2020-06-02-210738_inv_increase/down.sql new file mode 100644 index 0000000000..41343b5992 --- /dev/null +++ b/server/src/migrations/2020-06-02-210738_inv_increase/down.sql @@ -0,0 +1,41 @@ +-- This migration downgrades the capacity of existing player inventories from 36 to 18. ITEMS WILL BE REMOVED. +UPDATE + inventory +SET + items = json_object( + 'amount', + ( + SELECT + json_extract(items, '$.amount') + from + inventory + ), + 'slots', + json_remove( + ( + SELECT + json_extract(items, '$.slots') + from + inventory + ), + '$[35]', + '$[34]', + '$[33]', + '$[32]', + '$[31]', + '$[30]', + '$[29]', + '$[28]', + '$[27]', + '$[26]', + '$[25]', + '$[25]', + '$[24]', + '$[23]', + '$[22]', + '$[21]', + '$[20]', + '$[19]', + '$[18]' + ) + ); \ No newline at end of file diff --git a/server/src/migrations/2020-06-02-210738_inv_increase/up.sql b/server/src/migrations/2020-06-02-210738_inv_increase/up.sql new file mode 100644 index 0000000000..9d0bbedd37 --- /dev/null +++ b/server/src/migrations/2020-06-02-210738_inv_increase/up.sql @@ -0,0 +1,58 @@ +-- This migration updates the capacity of existing player inventories from 18 to 36 +UPDATE + inventory +SET + items = json_object( + 'amount', + ( + SELECT + json_extract(items, '$.amount') + from + inventory + ), + 'slots', + json_insert( + ( + SELECT + json_extract(items, '$.slots') + from + inventory + ), + '$[18]', + json("null"), + '$[19]', + json("null"), + '$[20]', + json("null"), + '$[21]', + json("null"), + '$[22]', + json("null"), + '$[23]', + json("null"), + '$[24]', + json("null"), + '$[25]', + json("null"), + '$[26]', + json("null"), + '$[27]', + json("null"), + '$[28]', + json("null"), + '$[29]', + json("null"), + '$[30]', + json("null"), + '$[31]', + json("null"), + '$[32]', + json("null"), + '$[33]', + json("null"), + '$[34]', + json("null"), + '$[35]', + json("null") + ) + ); \ No newline at end of file diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index c75bfa72cc..d16bfacb8b 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -94,6 +94,9 @@ image_ids! { ////////////////////////////////////////////////////////////////////////////////////////////////////// + + quest_bg: "voxygen.element.misc_bg.temp_quest_bg", + // Buttons settings: "voxygen.element.buttons.settings", diff --git a/voxygen/src/hud/minimap.rs b/voxygen/src/hud/minimap.rs index 6ba0ca821d..3895b114e1 100644 --- a/voxygen/src/hud/minimap.rs +++ b/voxygen/src/hud/minimap.rs @@ -22,8 +22,6 @@ widget_ids! { mmap_button, mmap_plus, mmap_minus, - zone_display_bg, - zone_display, grid, indicator } diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index 8372f0a171..ca5dd67841 100644 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -47,9 +47,8 @@ use crate::{ use client::{Client, Event as ClientEvent}; use common::{assets::load_expect, comp, terrain::TerrainChunk, vol::RectRasterableVol}; use conrod_core::{ - position::Relative, text::cursor::Index, - widget::{self, Button, Image, Rectangle, Text}, + widget::{self, Button, Image, Text}, widget_ids, Color, Colorable, Labelable, Positionable, Sizeable, Widget, }; use specs::{Join, WorldExt}; @@ -184,6 +183,14 @@ widget_ids! { // Free look indicator free_look_txt, free_look_bg, + + // Example Quest + quest_bg, + q_headline_bg, + q_headline, + q_text_bg, + q_text, + accept_button, } } @@ -439,9 +446,9 @@ pub struct Hud { rot_imgs: ImgsRot, new_messages: VecDeque, show: Show, - never_show: bool, - intro: bool, - intro_2: bool, + //never_show: bool, + //intro: bool, + //intro_2: bool, to_focus: Option>, force_ungrab: bool, force_chat_input: Option, @@ -495,8 +502,8 @@ impl Hud { fonts, ids, new_messages: VecDeque::new(), - intro: false, - intro_2: false, + //intro: false, + //intro_2: false, show: Show { help: false, intro: true, @@ -517,7 +524,7 @@ impl Hud { free_look: false, }, to_focus: None, - never_show: false, + //never_show: false, force_ungrab: false, force_chat_input: None, force_chat_cursor: None, @@ -1100,146 +1107,68 @@ impl Hud { } } - // Introduction Text - let intro_text = &self.voxygen_i18n.get("hud.welcome"); - if self.show.intro && !self.show.esc_menu && !self.intro_2 { + // Temporary Example Quest + if self.show.intro && !self.show.esc_menu { match global_state.settings.gameplay.intro_show { Intro::Show => { - Rectangle::fill_with( - [800.0 * 0.8, 850.0 * 0.8], - Color::Rgba(0.0, 0.0, 0.0, 0.80), - ) - .top_left_with_margins_on(ui_widgets.window, 180.0 * 0.8, 10.0 * 0.8) - .floating(true) - .set(self.ids.intro_bg, ui_widgets); - Text::new(intro_text) - .top_left_with_margins_on(self.ids.intro_bg, 10.0, 10.0) - .font_size(self.fonts.cyri.scale(16)) - .font_id(self.fonts.cyri.conrod_id) - .color(TEXT_COLOR) - .set(self.ids.intro_text, ui_widgets); - if Button::image(self.imgs.button) - .w_h(90.0, 35.0) - .mid_bottom_with_margin_on(self.ids.intro_bg, 10.0) - .label(&self.voxygen_i18n.get("common.close")) - .label_font_size(self.fonts.cyri.scale(16)) - .label_font_id(self.fonts.cyri.conrod_id) - .label_color(TEXT_COLOR) - .label_y(Relative::Scalar(4.0)) - .hover_image(self.imgs.button_hover) - .press_image(self.imgs.button_press) - .set(self.ids.intro_close, ui_widgets) - .was_clicked() - { - if self.never_show { - events.push(Event::Intro(Intro::Never)); - self.never_show = !self.never_show; - self.intro = false; - self.intro_2 = false; - } else { + if self.pulse > 20.0 { + self.show.want_grab = false; + let quest_headline = &self.voxygen_i18n.get("hud.temp_quest_headline"); + let quest_text = &self.voxygen_i18n.get("hud.temp_quest_text"); + Image::new(self.imgs.quest_bg) + .w_h(404.0, 858.0) + .middle_of(ui_widgets.window) + .set(self.ids.quest_bg, ui_widgets); + + Text::new(quest_headline) + .mid_top_with_margin_on(self.ids.quest_bg, 310.0) + .font_size(self.fonts.cyri.scale(30)) + .font_id(self.fonts.cyri.conrod_id) + .color(TEXT_BG) + .set(self.ids.q_headline_bg, ui_widgets); + Text::new(quest_headline) + .bottom_left_with_margins_on(self.ids.q_headline_bg, 1.0, 1.0) + .font_size(self.fonts.cyri.scale(30)) + .font_id(self.fonts.cyri.conrod_id) + .color(TEXT_COLOR) + .set(self.ids.q_headline, ui_widgets); + + Text::new(quest_text) + .down_from(self.ids.q_headline_bg, 40.0) + .font_size(self.fonts.cyri.scale(17)) + .font_id(self.fonts.cyri.conrod_id) + .color(TEXT_BG) + .set(self.ids.q_text_bg, ui_widgets); + Text::new(quest_text) + .bottom_left_with_margins_on(self.ids.q_text_bg, 1.0, 1.0) + .font_size(self.fonts.cyri.scale(17)) + .font_id(self.fonts.cyri.conrod_id) + .color(TEXT_COLOR) + .set(self.ids.q_text, ui_widgets); + + if Button::image(self.imgs.button) + .w_h(212.0, 52.0) + .hover_image(self.imgs.button_hover) + .press_image(self.imgs.button_press) + .mid_bottom_with_margin_on(self.ids.q_text_bg, -120.0) + .label(&self.voxygen_i18n.get("common.accept")) + .label_font_id(self.fonts.cyri.conrod_id) + .label_font_size(self.fonts.cyri.scale(22)) + .label_color(TEXT_COLOR) + .label_y(conrod_core::position::Relative::Scalar(1.0)) + .set(self.ids.accept_button, ui_widgets) + .was_clicked() + { self.show.intro = !self.show.intro; - self.intro = false; - self.intro_2 = false; + events.push(Event::Intro(Intro::Never)); + self.show.want_grab = true; } } - if Button::image(if self.never_show { - self.imgs.checkbox_checked - } else { - self.imgs.checkbox - }) - .w_h(20.0, 20.0) - .right_from(self.ids.intro_close, 10.0) - .hover_image(if self.never_show { - self.imgs.checkbox_checked_mo - } else { - self.imgs.checkbox_mo - }) - .press_image(self.imgs.checkbox_press) - .set(self.ids.intro_check, ui_widgets) - .was_clicked() - { - self.never_show = !self.never_show - }; - Text::new(&self.voxygen_i18n.get("hud.do_not_show_on_startup")) - .right_from(self.ids.intro_check, 10.0) - .font_size(self.fonts.cyri.scale(10)) - .font_id(self.fonts.cyri.conrod_id) - .color(TEXT_COLOR) - .set(self.ids.intro_check_text, ui_widgets); - // X-button - if Button::image(self.imgs.close_button) - .w_h(40.0, 40.0) - .hover_image(self.imgs.close_button_hover) - .press_image(self.imgs.close_button_press) - .top_right_with_margins_on(self.ids.intro_bg, 0.0, 0.0) - .color(Color::Rgba(1.0, 1.0, 1.0, 0.8)) - .set(self.ids.intro_close_4, ui_widgets) - .was_clicked() - { - if self.never_show { - events.push(Event::Intro(Intro::Never)); - self.never_show = !self.never_show; - self.intro = false; - self.intro_2 = false; - } else { - self.show.intro = !self.show.intro; - self.intro = false; - self.intro_2 = false; - } - }; }, Intro::Never => {}, } } - if self.intro_2 && !self.show.esc_menu { - Rectangle::fill_with([800.0, 850.0], Color::Rgba(0.0, 0.0, 0.0, 0.80)) - .top_left_with_margins_on(ui_widgets.window, 180.0, 10.0) - .floating(true) - .set(self.ids.intro_bg, ui_widgets); - Text::new(intro_text) - .top_left_with_margins_on(self.ids.intro_bg, 10.0, 10.0) - .font_size(self.fonts.cyri.scale(20)) - .font_id(self.fonts.cyri.conrod_id) - .color(TEXT_COLOR) - .set(self.ids.intro_text, ui_widgets); - if Button::image(self.imgs.button) - .w_h(100.0, 50.0) - .mid_bottom_with_margin_on(self.ids.intro_bg, 10.0) - .label(&self.voxygen_i18n.get("common.close")) - .label_font_size(self.fonts.cyri.scale(20)) - .label_font_id(self.fonts.cyri.conrod_id) - .label_color(TEXT_COLOR) - .hover_image(self.imgs.button_hover) - .press_image(self.imgs.button_press) - .set(self.ids.intro_close_3, ui_widgets) - .was_clicked() - { - self.intro_2 = false; - } - // X-button - if Button::image(self.imgs.close_button) - .w_h(40.0, 40.0) - .hover_image(self.imgs.close_button_hover) - .press_image(self.imgs.close_button_press) - .top_right_with_margins_on(self.ids.intro_bg, 0.0, 0.0) - .color(Color::Rgba(1.0, 1.0, 1.0, 0.8)) - .set(self.ids.intro_close_4, ui_widgets) - .was_clicked() - { - if self.never_show { - events.push(Event::Intro(Intro::Never)); - self.never_show = !self.never_show; - self.intro = false; - self.intro_2 = false; - } else { - self.show.intro = !self.show.intro; - self.intro = false; - self.intro_2 = false; - } - }; - } - // Display debug window. if global_state.settings.gameplay.toggle_debug { // Alpha Version @@ -1481,8 +1410,14 @@ impl Hud { } // Popup - Popup::new(&self.voxygen_i18n, client, &self.new_messages, &self.fonts) - .set(self.ids.popup, ui_widgets); + Popup::new( + &self.voxygen_i18n, + client, + &self.new_messages, + &self.fonts, + &self.show, + ) + .set(self.ids.popup, ui_widgets); // MiniMap match MiniMap::new( @@ -1569,6 +1504,7 @@ impl Hud { tooltip_manager, &mut self.slot_manager, &self.voxygen_i18n, + &self.show, ) .set(self.ids.skillbar, ui_widgets); } @@ -1682,9 +1618,6 @@ impl Hud { settings_window::Event::CrosshairTransp(crosshair_transp) => { events.push(Event::CrosshairTransp(crosshair_transp)); }, - settings_window::Event::Intro(intro_show) => { - events.push(Event::Intro(intro_show)); - }, settings_window::Event::AdjustMusicVolume(music_volume) => { events.push(Event::AdjustMusicVolume(music_volume)); }, diff --git a/voxygen/src/hud/popup.rs b/voxygen/src/hud/popup.rs index b2dc72e8fc..618cc5d570 100644 --- a/voxygen/src/hud/popup.rs +++ b/voxygen/src/hud/popup.rs @@ -1,3 +1,4 @@ +use super::Show; use crate::{i18n::VoxygenLocalization, ui::fonts::ConrodVoxygenFonts}; use client::{self, Client, Event as ClientEvent}; use common::msg::Notification; @@ -26,6 +27,7 @@ pub struct Popup<'a> { fonts: &'a ConrodVoxygenFonts, #[conrod(common_builder)] common: widget::CommonBuilder, + show: &'a Show, } /// Popup notifications for messages such as , Waypoint Saved, @@ -36,6 +38,7 @@ impl<'a> Popup<'a> { client: &'a Client, new_messages: &'a VecDeque, fonts: &'a ConrodVoxygenFonts, + show: &'a Show, ) -> Self { Self { voxygen_i18n, @@ -43,6 +46,7 @@ impl<'a> Popup<'a> { new_messages, fonts, common: widget::CommonBuilder::default(), + show, } } } @@ -173,27 +177,30 @@ impl<'a> Widget for Popup<'a> { } // Display info as popup - if let Some(info) = state.infos.front() { - let seconds = state.last_info_update.elapsed().as_secs_f32(); - let fade = if seconds < FADE_IN { - seconds / FADE_IN - } else if seconds < FADE_IN + FADE_HOLD { - 1.0 - } else { - (1.0 - (seconds - FADE_IN - FADE_HOLD) / FADE_OUT).max(0.0) - }; - Text::new(info) - .mid_top_with_margin_on(ui.window, 100.0) - .font_size(self.fonts.cyri.scale(20)) - .font_id(self.fonts.cyri.conrod_id) - .color(bg_color(fade)) - .set(state.ids.info_bg, ui); - Text::new(info) - .top_left_with_margins_on(state.ids.info_bg, -1.0, -1.0) - .font_size(self.fonts.cyri.scale(20)) - .font_id(self.fonts.cyri.conrod_id) - .color(info_color(fade)) - .set(state.ids.info_text, ui); + if !self.show.intro { + if let Some(info) = state.infos.front() { + let seconds = state.last_info_update.elapsed().as_secs_f32(); + let fade = if seconds < FADE_IN { + seconds / FADE_IN + } else if seconds < FADE_IN + FADE_HOLD { + 1.0 + } else { + (1.0 - (seconds - FADE_IN - FADE_HOLD) / FADE_OUT).max(0.0) + }; + + Text::new(info) + .mid_top_with_margin_on(ui.window, 100.0) + .font_size(self.fonts.cyri.scale(20)) + .font_id(self.fonts.cyri.conrod_id) + .color(bg_color(fade)) + .set(state.ids.info_bg, ui); + Text::new(info) + .top_left_with_margins_on(state.ids.info_bg, -1.0, -1.0) + .font_size(self.fonts.cyri.scale(20)) + .font_id(self.fonts.cyri.conrod_id) + .color(info_color(fade)) + .set(state.ids.info_text, ui); + } } // Get next message from queue @@ -207,27 +214,29 @@ impl<'a> Widget for Popup<'a> { } // Display message as popup - if let Some(message) = state.messages.front() { - let seconds = state.last_message_update.elapsed().as_secs_f32(); - let fade = if seconds < FADE_IN { - seconds / FADE_IN - } else if seconds < FADE_IN + FADE_HOLD { - 1.0 - } else { - (1.0 - (seconds - FADE_IN - FADE_HOLD) / FADE_OUT).max(0.0) - }; - Text::new(message) - .mid_top_with_margin_on(ui.window, 200.0) - .font_size(self.fonts.alkhemi.scale(70)) - .font_id(self.fonts.alkhemi.conrod_id) - .color(bg_color(fade)) - .set(state.ids.message_bg, ui); - Text::new(message) - .top_left_with_margins_on(state.ids.message_bg, -2.5, -2.5) - .font_size(self.fonts.alkhemi.scale(70)) - .font_id(self.fonts.alkhemi.conrod_id) - .color(message_color(fade)) - .set(state.ids.message_text, ui); + if !self.show.intro { + if let Some(message) = state.messages.front() { + let seconds = state.last_message_update.elapsed().as_secs_f32(); + let fade = if seconds < FADE_IN { + seconds / FADE_IN + } else if seconds < FADE_IN + FADE_HOLD { + 1.0 + } else { + (1.0 - (seconds - FADE_IN - FADE_HOLD) / FADE_OUT).max(0.0) + }; + Text::new(message) + .mid_top_with_margin_on(ui.window, 200.0) + .font_size(self.fonts.alkhemi.scale(70)) + .font_id(self.fonts.alkhemi.conrod_id) + .color(bg_color(fade)) + .set(state.ids.message_bg, ui); + Text::new(message) + .top_left_with_margins_on(state.ids.message_bg, -2.5, -2.5) + .font_size(self.fonts.alkhemi.scale(70)) + .font_id(self.fonts.alkhemi.conrod_id) + .color(message_color(fade)) + .set(state.ids.message_text, ui); + } } } } diff --git a/voxygen/src/hud/settings_window.rs b/voxygen/src/hud/settings_window.rs index c4f5643878..df81814a16 100644 --- a/voxygen/src/hud/settings_window.rs +++ b/voxygen/src/hud/settings_window.rs @@ -1,6 +1,6 @@ use super::{ - img_ids::Imgs, BarNumbers, CrosshairType, Intro, PressBehavior, ShortcutNumbers, Show, XpBar, - MENU_BG, TEXT_COLOR, + img_ids::Imgs, BarNumbers, CrosshairType, PressBehavior, ShortcutNumbers, Show, XpBar, MENU_BG, + TEXT_COLOR, }; use crate::{ i18n::{list_localizations, LanguageMetadata, VoxygenLocalization}, @@ -210,7 +210,6 @@ pub enum Event { ToggleShortcutNumbers(ShortcutNumbers), ChangeTab(SettingsTab), Close, - Intro(Intro), AdjustMousePan(u32), AdjustMouseZoom(u32), ToggleZoomInvert(bool), @@ -407,37 +406,10 @@ impl<'a> Widget for SettingsWindow<'a> { .graphics_for(state.ids.debug_button) .color(TEXT_COLOR) .set(state.ids.debug_button_label, ui); - // Tips - if Button::image(match self.global_state.settings.gameplay.intro_show { - Intro::Show => self.imgs.checkbox_checked, - Intro::Never => self.imgs.checkbox, - }) - .w_h(20.0, 20.0) - .down_from(state.ids.debug_button, 8.0) - .hover_image(match self.global_state.settings.gameplay.intro_show { - Intro::Show => self.imgs.checkbox_checked_mo, - Intro::Never => self.imgs.checkbox_mo, - }) - .press_image(self.imgs.checkbox_press) - .set(state.ids.tips_button, ui) - .was_clicked() - { - match self.global_state.settings.gameplay.intro_show { - Intro::Show => events.push(Event::Intro(Intro::Never)), - Intro::Never => events.push(Event::Intro(Intro::Show)), - } - }; - Text::new(&self.localized_strings.get("hud.settings.tips_on_startup")) - .right_from(state.ids.tips_button, 10.0) - .font_size(self.fonts.cyri.scale(14)) - .font_id(self.fonts.cyri.conrod_id) - .graphics_for(state.ids.button_help) - .color(TEXT_COLOR) - .set(state.ids.tips_button_label, ui); // Ui Scale Text::new(&self.localized_strings.get("hud.settings.ui_scale")) - .down_from(state.ids.tips_button, 20.0) + .down_from(state.ids.debug_button, 20.0) .font_size(self.fonts.cyri.scale(18)) .font_id(self.fonts.cyri.conrod_id) .color(TEXT_COLOR) diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 9c403286b9..ebb0403cf1 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -2,8 +2,8 @@ use super::{ hotbar, img_ids::{Imgs, ImgsRot}, item_imgs::ItemImgs, - slots, BarNumbers, ShortcutNumbers, XpBar, BLACK, CRITICAL_HP_COLOR, HP_COLOR, LOW_HP_COLOR, - MANA_COLOR, TEXT_COLOR, XP_COLOR, + slots, BarNumbers, ShortcutNumbers, Show, XpBar, BLACK, CRITICAL_HP_COLOR, HP_COLOR, + LOW_HP_COLOR, MANA_COLOR, TEXT_COLOR, XP_COLOR, }; use crate::{ i18n::VoxygenLocalization, @@ -135,6 +135,7 @@ pub struct Skillbar<'a> { #[conrod(common_builder)] common: widget::CommonBuilder, current_resource: ResourceType, + show: &'a Show, } impl<'a> Skillbar<'a> { @@ -155,6 +156,7 @@ impl<'a> Skillbar<'a> { tooltip_manager: &'a mut TooltipManager, slot_manager: &'a mut slots::SlotManager, localized_strings: &'a std::sync::Arc, + show: &'a Show, ) -> Self { Self { global_state, @@ -175,6 +177,7 @@ impl<'a> Skillbar<'a> { tooltip_manager, slot_manager, localized_strings, + show, } } } @@ -230,63 +233,64 @@ impl<'a> Widget for Skillbar<'a> { let localized_strings = self.localized_strings; // Level Up Message + if !self.show.intro { + let current_level = self.stats.level.level(); + const FADE_IN_LVL: f32 = 1.0; + const FADE_HOLD_LVL: f32 = 3.0; + const FADE_OUT_LVL: f32 = 2.0; + // Fade + // Check if no other popup is displayed and a new one is needed + if state.last_update_level.elapsed() + > Duration::from_secs_f32(FADE_IN_LVL + FADE_HOLD_LVL + FADE_OUT_LVL) + && state.last_level != current_level + { + // Update last_value + state.update(|s| s.last_level = current_level); + state.update(|s| s.last_update_level = Instant::now()); + }; - let current_level = self.stats.level.level(); - const FADE_IN_LVL: f32 = 1.0; - const FADE_HOLD_LVL: f32 = 3.0; - const FADE_OUT_LVL: f32 = 2.0; - // Fade - // Check if no other popup is displayed and a new one is needed - if state.last_update_level.elapsed() - > Duration::from_secs_f32(FADE_IN_LVL + FADE_HOLD_LVL + FADE_OUT_LVL) - && state.last_level != current_level - { - // Update last_value - state.update(|s| s.last_level = current_level); - state.update(|s| s.last_update_level = Instant::now()); - }; - - let seconds_level = state.last_update_level.elapsed().as_secs_f32(); - let fade_level = if current_level == 1 { - 0.0 - } else if seconds_level < FADE_IN_LVL { - seconds_level / FADE_IN_LVL - } else if seconds_level < FADE_IN_LVL + FADE_HOLD_LVL { - 1.0 - } else { - (1.0 - (seconds_level - FADE_IN_LVL - FADE_HOLD_LVL) / FADE_OUT_LVL).max(0.0) - }; - // Contents - Rectangle::fill_with([82.0 * 4.0, 40.0 * 4.0], color::TRANSPARENT) - .mid_top_with_margin_on(ui.window, 300.0) - .set(state.ids.level_align, ui); - let level_up_text = &localized_strings - .get("char_selection.level_fmt") - .replace("{level_nb}", &self.stats.level.level().to_string()); - Text::new(&level_up_text) - .middle_of(state.ids.level_align) - .font_size(self.fonts.cyri.scale(30)) - .font_id(self.fonts.cyri.conrod_id) - .color(Color::Rgba(0.0, 0.0, 0.0, fade_level)) - .set(state.ids.level_message_bg, ui); - Text::new(&level_up_text) - .bottom_left_with_margins_on(state.ids.level_message_bg, 2.0, 2.0) - .font_size(self.fonts.cyri.scale(30)) - .font_id(self.fonts.cyri.conrod_id) - .color(Color::Rgba(1.0, 1.0, 1.0, fade_level)) - .set(state.ids.level_message, ui); - Image::new(self.imgs.level_up) - .w_h(82.0 * 4.0, 9.0 * 4.0) - .mid_top_with_margin_on(state.ids.level_align, 0.0) - .color(Some(Color::Rgba(1.0, 1.0, 1.0, fade_level))) - .graphics_for(state.ids.level_align) - .set(state.ids.level_up, ui); - Image::new(self.imgs.level_down) - .w_h(82.0 * 4.0, 9.0 * 4.0) - .mid_bottom_with_margin_on(state.ids.level_align, 0.0) - .color(Some(Color::Rgba(1.0, 1.0, 1.0, fade_level))) - .graphics_for(state.ids.level_align) - .set(state.ids.level_down, ui); + let seconds_level = state.last_update_level.elapsed().as_secs_f32(); + let fade_level = if current_level == 1 { + 0.0 + } else if seconds_level < FADE_IN_LVL { + seconds_level / FADE_IN_LVL + } else if seconds_level < FADE_IN_LVL + FADE_HOLD_LVL { + 1.0 + } else { + (1.0 - (seconds_level - FADE_IN_LVL - FADE_HOLD_LVL) / FADE_OUT_LVL).max(0.0) + }; + // Contents + Rectangle::fill_with([82.0 * 4.0, 40.0 * 4.0], color::TRANSPARENT) + .mid_top_with_margin_on(ui.window, 300.0) + .set(state.ids.level_align, ui); + let level_up_text = &localized_strings + .get("char_selection.level_fmt") + .replace("{level_nb}", &self.stats.level.level().to_string()); + Text::new(&level_up_text) + .middle_of(state.ids.level_align) + .font_size(self.fonts.cyri.scale(30)) + .font_id(self.fonts.cyri.conrod_id) + .color(Color::Rgba(0.0, 0.0, 0.0, fade_level)) + .set(state.ids.level_message_bg, ui); + Text::new(&level_up_text) + .bottom_left_with_margins_on(state.ids.level_message_bg, 2.0, 2.0) + .font_size(self.fonts.cyri.scale(30)) + .font_id(self.fonts.cyri.conrod_id) + .color(Color::Rgba(1.0, 1.0, 1.0, fade_level)) + .set(state.ids.level_message, ui); + Image::new(self.imgs.level_up) + .w_h(82.0 * 4.0, 9.0 * 4.0) + .mid_top_with_margin_on(state.ids.level_align, 0.0) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, fade_level))) + .graphics_for(state.ids.level_align) + .set(state.ids.level_up, ui); + Image::new(self.imgs.level_down) + .w_h(82.0 * 4.0, 9.0 * 4.0) + .mid_bottom_with_margin_on(state.ids.level_align, 0.0) + .color(Some(Color::Rgba(1.0, 1.0, 1.0, fade_level))) + .graphics_for(state.ids.level_align) + .set(state.ids.level_down, ui); + } // Death message if self.stats.is_dead { if let Some(key) = self diff --git a/world/src/site/dungeon/mod.rs b/world/src/site/dungeon/mod.rs index a379b38209..4ab389312d 100644 --- a/world/src/site/dungeon/mod.rs +++ b/world/src/site/dungeon/mod.rs @@ -486,23 +486,50 @@ impl Floor { npc::get_npc_name(npc::NpcKind::Humanoid) )) .with_main_tool(assets::load_expect_cloned( - match rng.gen_range(0, 5) { - 0 => "common.items.weapons.sword.starter_sword", - 1 => "common.items.weapons.sword.short_sword_0", - 2 => "common.items.weapons.sword.wood_sword", - 3 => "common.items.weapons.sword.zweihander_sword_0", - _ => "common.items.weapons.hammer.hammer_1", + match rng.gen_range(0, 1) { + //Add more possible cult leader weapons here + _ => "common.items.weapons.sword.cultist_purp_2h-0", }, )) - .with_loot_drop(match rng.gen_range(0, 3) { + .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.sword.greatsword_2h_fine-0", + ), + 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", + ), _ => comp::Item::expect_from_asset( - "common.items.boss_drops.xp_potion", + "common.items.boss_drops.exp_flask", ), });