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 0000000000..4d54316f8c --- /dev/null +++ b/assets/voxygen/element/misc_bg/temp_quest_bg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25ace54152d7098180e0137a320ee36a94d321e4ddfb74ac8413455a2c5107f6 +size 87491 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 0000000000..09f41cd180 --- /dev/null +++ b/assets/voxygen/voxel/object/potion_purp.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cb819d8856638f8715d69fc0dc50aa7b54568f3ffcf71ab5a3298d53f398f4c +size 1400 diff --git a/assets/voxygen/voxel/weapon/sword/cultist_purp_2h-0.vox b/assets/voxygen/voxel/weapon/sword/cultist_purp_2h-0.vox new file mode 100644 index 0000000000..eed9afc8fa --- /dev/null +++ b/assets/voxygen/voxel/weapon/sword/cultist_purp_2h-0.vox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30cd5fd22372dfbc7467d1633f3d59fe93cf2619be438bc4063d29049a6e4979 +size 1656 diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index abefd6c13d..2cd5d53355 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -25,6 +25,7 @@ pub enum Consumable { Velorite, VeloriteFrag, PotionMinor, + PotionExp, } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] @@ -180,53 +181,111 @@ impl Item { BlockKind::Coconut => 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", ), });