diff --git a/assets/common/items/boss_drops/exp_flask.ron b/assets/common/items/boss_drops/exp_flask.ron index fc36dd1d64..9e88c3a247 100644 --- a/assets/common/items/boss_drops/exp_flask.ron +++ b/assets/common/items/boss_drops/exp_flask.ron @@ -1,9 +1,11 @@ ItemDef( name: "Flask of Velorite Dust", - description: "Increases Exp by 250\n\nTake with plenty of water\n\n", + description: "Increases Exp by 250\n\nTake with plenty of water", kind: Consumable( kind: "PotionExp", - effect: Xp(250), + effect: [ + Xp(250), + ] ), quality: High, ) diff --git a/assets/common/items/boss_drops/potions.ron b/assets/common/items/boss_drops/potions.ron index 8c584b6c5c..528d0b2e88 100644 --- a/assets/common/items/boss_drops/potions.ron +++ b/assets/common/items/boss_drops/potions.ron @@ -1,12 +1,21 @@ ItemDef( name: "Potent Potion", - description: "A potent healing potion.\n\nRestores 100 health on use.\n\n", + description: "A potent healing potion.\n\nRestores 100 health on use", kind: Consumable( kind: "Potion", - effect: Health(( - amount: 1000, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 1000.0, + duration: Some(( + secs: 1, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: High, ) diff --git a/assets/common/items/boss_drops/xp_potion.ron b/assets/common/items/boss_drops/xp_potion.ron index ad804f5063..eeb78ea21e 100644 --- a/assets/common/items/boss_drops/xp_potion.ron +++ b/assets/common/items/boss_drops/xp_potion.ron @@ -1,9 +1,11 @@ ItemDef( name: "Potion of Skill", - description: "Provides 250 XP to the drinker\n\n", + description: "Provides 250 XP to the drinker", kind: Consumable( kind: "Potion", - effect: Xp(250), - ), + effect: [ + Xp(250), + ] + ), quality: High, ) diff --git a/assets/common/items/consumable/potion_big.ron b/assets/common/items/consumable/potion_big.ron index c9b252dd1c..f16bab60e6 100644 --- a/assets/common/items/consumable/potion_big.ron +++ b/assets/common/items/consumable/potion_big.ron @@ -3,10 +3,19 @@ ItemDef( description: "Restores 100 Health", kind: Consumable( kind: "PotionLarge", - effect: Health(( - amount: 1000, - cause: Item, - )), + effect: [ + Buff(( + kind: Potion, + data: ( + strength: 1000.0, + duration: Some(( + secs: 1, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/consumable/potion_med.ron b/assets/common/items/consumable/potion_med.ron index c844aad72c..2c3167d58b 100644 --- a/assets/common/items/consumable/potion_med.ron +++ b/assets/common/items/consumable/potion_med.ron @@ -3,10 +3,19 @@ ItemDef( description: "Restores 70 Health", kind: Consumable( kind: "PotionMed", - effect: Health(( - amount: 700, - cause: Item, - )), + effect: [ + Buff(( + kind: Potion, + data: ( + strength: 700.0, + duration: Some(( + secs: 1, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/consumable/potion_minor.ron b/assets/common/items/consumable/potion_minor.ron index 5deff1c2f9..f829d67b1e 100644 --- a/assets/common/items/consumable/potion_minor.ron +++ b/assets/common/items/consumable/potion_minor.ron @@ -3,10 +3,19 @@ ItemDef( description: "Restores 50 Health", kind: Consumable( kind: "PotionMinor", - effect: Health(( - amount: 500, - cause: Item, - )), + effect: [ + Buff(( + kind: Potion, + data: ( + strength: 500.0, + duration: Some(( + secs: 1, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/apple.ron b/assets/common/items/food/apple.ron index 4e067b53cb..31e294f3f3 100644 --- a/assets/common/items/food/apple.ron +++ b/assets/common/items/food/apple.ron @@ -1,12 +1,21 @@ ItemDef( name: "Apple", - description: "Restores 10 Health\n\nRed and juicy", + description: "Restores 10 Health over 20 seconds\n\nRed and juicy", kind: Consumable( kind: "Apple", - effect: Health(( - amount: 100, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 5.0, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/apple_mushroom_curry.ron b/assets/common/items/food/apple_mushroom_curry.ron index b90bccdbdf..281c228969 100644 --- a/assets/common/items/food/apple_mushroom_curry.ron +++ b/assets/common/items/food/apple_mushroom_curry.ron @@ -1,12 +1,21 @@ ItemDef( name: "Mushroom Curry", - description: "Restores 120 Health\n\nWho could say no to that?", + description: "Restores 120 Health over 20 seconds\n\nWho could say no to that?", kind: Consumable( kind: "AppleShroomCurry", - effect: Health(( - amount: 1200, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 60.0, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Moderate, ) diff --git a/assets/common/items/food/apple_stick.ron b/assets/common/items/food/apple_stick.ron index 05d4195b48..f975c0c1a2 100644 --- a/assets/common/items/food/apple_stick.ron +++ b/assets/common/items/food/apple_stick.ron @@ -1,12 +1,21 @@ ItemDef( name: "Apple Stick", - description: "Restores 25 Health\n\nThe stick makes it easier to carry!", + description: "Restores 25 Health over 20 seconds\n\nThe stick makes it easier to carry!", kind: Consumable( kind: "AppleStick", - effect: Health(( - amount: 250, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 12.5, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/cheese.ron b/assets/common/items/food/cheese.ron index 13d4e14c13..182bf88b38 100644 --- a/assets/common/items/food/cheese.ron +++ b/assets/common/items/food/cheese.ron @@ -1,12 +1,21 @@ ItemDef( name: "Dwarven Cheese", - description: "Restores 15 Health\n\nAromatic and nutritious", + description: "Restores 15 Health over 20 seconds\n\nAromatic and nutritious", kind: Consumable( kind: "Cheese", - effect: Health(( - amount: 150, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 7.5, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/coconut.ron b/assets/common/items/food/coconut.ron index 26d0311604..1032ed6f57 100644 --- a/assets/common/items/food/coconut.ron +++ b/assets/common/items/food/coconut.ron @@ -1,12 +1,21 @@ ItemDef( name: "Coconut", - description: "Restores 20 health\n\nReliable source of water and fat", + description: "Restores 20 health over 20 seconds\n\nReliable source of water and fat", kind: Consumable( kind: "Coconut", - effect: Health(( - amount: 200, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 10.0, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/mushroom.ron b/assets/common/items/food/mushroom.ron index 1d18ba8d4c..08b26aed8a 100644 --- a/assets/common/items/food/mushroom.ron +++ b/assets/common/items/food/mushroom.ron @@ -1,12 +1,21 @@ ItemDef( name: "Mushroom", - description: "Restores 5 Health\n\nHopefully this one is not poisonous", + description: "Restores 5 Health over 10 seconds\n\nHopefully this one is not poisonous", kind: Consumable( kind: "Mushroom", - effect: Health(( - amount: 50, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 5.0, + duration: Some(( + secs: 10, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/mushroom_stick.ron b/assets/common/items/food/mushroom_stick.ron index 1a035e5529..174e83ee26 100644 --- a/assets/common/items/food/mushroom_stick.ron +++ b/assets/common/items/food/mushroom_stick.ron @@ -1,12 +1,21 @@ ItemDef( name: "Mushroom Stick", - description: "Restores 20 Health\n\nRoasted mushrooms on a stick for easy carrying.", + description: "Restores 20 Health over 20 seconds\n\nRoasted mushrooms on a stick for easy carrying", kind: Consumable( kind: "MushroomStick", - effect: Health(( - amount: 200, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 10.0, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Common, ) diff --git a/assets/common/items/food/sunflower_icetea.ron b/assets/common/items/food/sunflower_icetea.ron index d299d18933..fa97fc2580 100644 --- a/assets/common/items/food/sunflower_icetea.ron +++ b/assets/common/items/food/sunflower_icetea.ron @@ -1,12 +1,21 @@ ItemDef( name: "Sunflower Ice Tea", - description: "Restores 50 Health\n\nBrewed from freshly shelled sunflower seeds.", + description: "Restores 50 Health over 20 seconds\n\nBrewed from freshly shelled sunflower seeds", kind: Consumable( kind: "SunflowerTea", - effect: Health(( - amount: 500, - cause: Item, - )), + effect: [ + Buff(( + kind: Saturation, + data: ( + strength: 25.0, + duration: Some(( + secs: 20, + nanos: 0, + )), + ), + cat_ids: [Natural], + )), + ] ), quality: Moderate, ) diff --git a/assets/common/items/ore/velorite.ron b/assets/common/items/ore/velorite.ron index f0e572f32a..bfb3c50b37 100644 --- a/assets/common/items/ore/velorite.ron +++ b/assets/common/items/ore/velorite.ron @@ -3,7 +3,9 @@ ItemDef( description: "Increases Exp by 20\n\nJust a slight touch makes you feel the knowledge of ancient times", kind: Consumable( kind: "Velorite", - effect: Xp(20), - ), - quality: High, + effect: [ + Xp(20), + ] + ), + quality: High, ) diff --git a/assets/common/items/ore/veloritefrag.ron b/assets/common/items/ore/veloritefrag.ron index 8c8199b00d..76042b4a03 100644 --- a/assets/common/items/ore/veloritefrag.ron +++ b/assets/common/items/ore/veloritefrag.ron @@ -3,7 +3,9 @@ ItemDef( description: "Increases Exp by 10\n\nSmall runes sparkle on its surface", kind: Consumable( kind: "VeloriteFrag", - effect: Xp(10), + effect: [ + Xp(10), + ] ), - quality: Moderate, + quality: Moderate, ) diff --git a/assets/common/recipe_book.ron b/assets/common/recipe_book.ron index 171716fe70..80ad9b5e4d 100644 --- a/assets/common/recipe_book.ron +++ b/assets/common/recipe_book.ron @@ -6,7 +6,7 @@ // Ore and more "velorite_frag": (("common.items.ore.veloritefrag", 2), [("common.items.ore.velorite", 1), ("common.items.crafting_tools.craftsman_hammer", 0)]), //Potions - "potion_s": (("common.items.consumable.potion_minor", 1), [("common.items.crafting_ing.empty_vial", 1), ("common.items.ore.veloritefrag", 2)]), + "potion_s": (("common.items.consumable.potion_minor", 1), [("common.items.crafting_ing.empty_vial", 1), ("common.items.food.apple", 4), ("common.items.crafting_ing.honey", 1)]), "potion_m": (("common.items.consumable.potion_med", 1), [("common.items.consumable.potion_minor", 2), ("common.items.ore.veloritefrag", 4)]), "collar_basic": (("common.items.utility.collar", 1), [("common.items.crafting_ing.leather_scraps", 5), ("common.items.crafting_ing.shiny_gem", 1)]), "bomb_coconut": (("common.items.utility.bomb", 1), [("common.items.crafting_ing.stones", 10), ("common.items.food.coconut", 2), ("common.items.ore.veloritefrag", 2), ("common.items.crafting_tools.mortar_pestle", 0)]), diff --git a/assets/voxygen/audio/sfx.ron b/assets/voxygen/audio/sfx.ron index 91d6b5b3ee..fd826c758e 100644 --- a/assets/voxygen/audio/sfx.ron +++ b/assets/voxygen/audio/sfx.ron @@ -65,7 +65,7 @@ ], threshold: 0.5, ), - Glide: ( + Glide: ( files: [ // Event Missing or not implemented? ], @@ -383,6 +383,30 @@ ], threshold: 0.3, ), + Inventory(Consumed("PotionMed")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.liquid", + ], + threshold: 0.3, + ), + Inventory(Consumed("PotionLarge")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.liquid", + ], + threshold: 0.3, + ), + Inventory(Consumed("PotionExp")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.liquid", + ], + threshold: 0.3, + ), + Inventory(Consumed("SunflowerTea")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.liquid", + ], + threshold: 0.3, + ), Inventory(Consumed("Apple")): ( files: [ "voxygen.audio.sfx.inventory.consumable.apple", @@ -401,6 +425,42 @@ ], threshold: 0.3, ), + Inventory(Consumed("AppleShroomCurry")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("AppleStick")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("Coconut")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("MushroomStick")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("Velorite")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), + Inventory(Consumed("VeloriteFrag")): ( + files: [ + "voxygen.audio.sfx.inventory.consumable.food", + ], + threshold: 0.3, + ), Explosion: ( files: [ // in code diff --git a/assets/voxygen/element/icons/de_buffs/buff_potion_0.png b/assets/voxygen/element/icons/de_buffs/buff_potion_0.png new file mode 100644 index 0000000000..7841b4d6ed --- /dev/null +++ b/assets/voxygen/element/icons/de_buffs/buff_potion_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e61d80856e9aa65dbc042fa4744918eb93ffac385b7850d7bcfc588438b1d095 +size 2139 diff --git a/assets/voxygen/element/icons/de_buffs/buff_saturation_0.png b/assets/voxygen/element/icons/de_buffs/buff_saturation_0.png new file mode 100644 index 0000000000..31ccab8c08 --- /dev/null +++ b/assets/voxygen/element/icons/de_buffs/buff_saturation_0.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be3c24efae2f8e2f2ce3ca4fd25a91be850bb3fa51141f3c33c2f94193fb80d5 +size 1517 diff --git a/assets/voxygen/i18n/de_DE.ron b/assets/voxygen/i18n/de_DE.ron index 8448b4dc39..24e269ead1 100644 --- a/assets/voxygen/i18n/de_DE.ron +++ b/assets/voxygen/i18n/de_DE.ron @@ -1,5 +1,5 @@ /// Translation document instructions -/// +/// /// In order to keep localization documents readible please follow the following /// rules: /// - separate the string map sections using a commentary describing the purpose @@ -120,7 +120,7 @@ Dies ist eine frühe Alpha. Ihr werdet auf Bugs, unfertiges Gameplay und Mechani Für konstruktives Feedback und Bug-Reports könnt Ihr uns via Reddit, Gitlab oder unseren Discord Server kontaktieren. -Veloren hat die GPL 3 Open-Source Lizenz. Das heißt Ihr könnt es kostenlos spielen, +Veloren hat die GPL 3 Open-Source Lizenz. Das heißt Ihr könnt es kostenlos spielen, aber auch modifizieren (solange die Mods auch die selbe Lizenz tragen) und das Spiel an andere weiterschicken. Veloren ist ein Non-Profit Community Projekt und jeder Mitarbeiter entwickelt es als Hobby in seiner Freizeit. @@ -164,7 +164,7 @@ https://account.veloren.net. "hud.quests": "Quests", "hud.you_died": "Ihr seid gestorben.", "hud.waypoint_saved": "Wegpunkt gesichert", - + "hud.press_key_to_show_keybindings_fmt": "[{key}] Tastenbelegung", "hud.press_key_to_toggle_lantern_fmt": "[{key}] Laterne", "hud.press_key_to_show_debug_info_fmt": "Drückt {key} um die Debug-Info zu zeigen", @@ -172,13 +172,13 @@ https://account.veloren.net. "hud.press_key_to_toggle_debug_info_fmt": "Drückt {key} um die Debug-Info zu zeigen", // Chat outputs - "hud.chat.online_msg": "[{name}] ist jetzt online.", - "hud.chat.offline_msg": "{name} ist jetzt offline.", - "hud.chat.loot_msg": "Ihr erhaltet [{item}]", + "hud.chat.online_msg": "[{name}] ist jetzt online.", + "hud.chat.offline_msg": "{name} ist jetzt offline.", + "hud.chat.loot_msg": "Ihr erhaltet [{item}]", "hud.chat.loot_fail": "Euer Inventar ist voll!", "hud.chat.goodbye": "Verbindung getrennt.", "hud.chat.connection_lost": "Verbindung unterbrochen. Trenne Verbindung in {time} Sekunden.", - + "hud.chat.default_death_msg": "[{name}] ist gestorben", "hud.chat.environmental_kill_msg": "[{name}] starb durch {environment}", "hud.chat.fall_kill_msg": "[{name}] starb durch Fallschaden", @@ -224,7 +224,7 @@ Um diese zu nutzen öffnet Euer Inventar mit 'B'. Doppelklickt den Gegenstand in Eurer Tasche, um diesen zu nutzen. -Um Items wegzuwerfen klickt sie einmal im Inventar an +Um Items wegzuwerfen klickt sie einmal im Inventar an und klickt dann außerhalb der Tasche. @@ -246,11 +246,11 @@ Viel Spaß in der Welt von Veloren, Abenteurer!"#, um unsere Dörfer herum aufgetaucht! -Versammelt einige Kämpfer, sucht etwas -Nahrung und besiegt ihre abscheulichen +Versammelt einige Kämpfer, sucht etwas +Nahrung und besiegt ihre abscheulichen Anführer und Akolyten. -Vielleicht könnt Ihr sogar einen ihrer +Vielleicht könnt Ihr sogar einen ihrer magischen Gegenstände ergattern?"#, // Inventory @@ -273,7 +273,7 @@ magischen Gegenstände ergattern?"#, "hud.bag.legs": "Beine", "hud.bag.feet": "Füße", "hud.bag.mainhand": "Haupthand", - "hud.bag.offhand": "Nebenhand", + "hud.bag.offhand": "Nebenhand", // Map and Questlog "hud.map.map_title": "Karte", @@ -292,7 +292,7 @@ magischen Gegenstände ergattern?"#, "hud.settings.custom_scaling": "Freie Skalierung", "hud.settings.crosshair": "Fadenkreuz", "hud.settings.transparency": "Transparenz", - "hud.settings.hotbar": "Hotbar", + "hud.settings.hotbar": "Hotbar", "hud.settings.toggle_shortcuts": "Tastenbelegung", "hud.settings.toggle_bar_experience": "Erfahrungsleiste", "hud.settings.scrolling_combat_text": "Aufsteigende Kampfwerte", @@ -300,7 +300,7 @@ magischen Gegenstände ergattern?"#, "hud.settings.cumulated_damage": "Addierter Schaden", "hud.settings.incoming_damage": "Erlittener Schaden", "hud.settings.cumulated_incoming_damage": "Addierter erlittener Schaden", - "hud.settings.speech_bubble": "Sprechblase", + "hud.settings.speech_bubble": "Sprechblase", "hud.settings.speech_bubble_dark_mode": "Dunkle Sprechblasen", "hud.settings.speech_bubble_icon": "Sprechblasen-Symbole", "hud.settings.energybar_numbers": "Zahlen auf Ressourcenanzeige", @@ -311,10 +311,10 @@ magischen Gegenstände ergattern?"#, "hud.settings.chat_character_name": "Characternamen im Chat", "hud.settings.buffs_mmap": "Zeige Buffs an der Mini-Map", "hud.settings.buffs_skillbar": "Zeige Buffs an der Fähigkeiten Leiste", - "hud.settings.cloud_rendering_mode.low": "Niedrig", + "hud.settings.cloud_rendering_mode.low": "Niedrig", "hud.settings.cloud_rendering_mode.medium": "Mittel", - "hud.settings.cloud_rendering_mode.minimal": "Minimal", - "hud.settings.cloud_rendering_mode.high": "Hoch", + "hud.settings.cloud_rendering_mode.minimal": "Minimal", + "hud.settings.cloud_rendering_mode.high": "Hoch", "hud.settings.pan_sensitivity": "Schwenk-Sensibilität", "hud.settings.zoom_sensitivity": "Zoom-Sensibilität", @@ -341,7 +341,7 @@ magischen Gegenstände ergattern?"#, "hud.settings.resolution": "Auflösung", "hud.settings.bit_depth": "Bittiefe", "hud.settings.refresh_rate": "Bildwiederholrate", - "hud.settings.fullscreen": "Vollbild", + "hud.settings.fullscreen": "Vollbild", "hud.settings.fullscreen_mode": "Vollbild-Modus", "hud.settings.fullscreen_mode.exclusive": "Exklusiv", "hud.settings.fullscreen_mode.borderless": "Rahmenlos", @@ -374,7 +374,7 @@ magischen Gegenstände ergattern?"#, "hud.social.account": "Account", "hud.spell": "Zauber", - + "hud.social.name" : "Name", "hud.social.level" : "Lvl", "hud.social.zone" : "Gebiet", @@ -401,13 +401,13 @@ magischen Gegenstände ergattern?"#, "hud.free_look_indicator": "Freie Sicht aktiv", "hud.auto_walk_indicator": "Automatisches Laufen aktiv", - + /// End HUD section /// Start GameInput section "gameinput.primary": "Linker mittlerer Slot", "gameinput.secondary": "Rechter mittlerer Slot", - "gameinput.slot1": "Hotbar Slot 1", + "gameinput.slot1": "Hotbar Slot 1", "gameinput.slot2": "Hotbar Slot 2", "gameinput.slot3": "Hotbar Slot 3", "gameinput.slot4": "Hotbar Slot 4", @@ -450,7 +450,7 @@ magischen Gegenstände ergattern?"#, "gameinput.charge": "Anstürmen", "gameinput.togglewield": "Waffe ziehen/wegstecken", "gameinput.interact": "Interagieren", - "gameinput.freelook": "Freie Sicht", + "gameinput.freelook": "Freie Sicht", "gameinput.autowalk": "Automatisch Laufen", "gameinput.dance": "Tanzen", "gameinput.declinegroupinvite": "Ablehnen", @@ -501,7 +501,7 @@ Willenskraft /// Start character window section - + /// Start Escape Menu Section "esc_menu.logout": "Ausloggen", @@ -510,14 +510,14 @@ Willenskraft /// Buffs and Debuffs "buff.remove": "Klicken zum Entfernen", - "buff.title.missing": "Fehlender Titel", - "buff.desc.missing": "Fehlende Beschreibung", + "buff.title.missing": "Fehlender Titel", + "buff.desc.missing": "Fehlende Beschreibung", // Buffs - "buff.title.heal_test": "HoT Buff Test", - "buff.desc.heal_test": "HoT Buff Test", - // Debuffs - "debuff.title.bleed_test": "Blutung", - "debuff.desc.bleed_test": "Fügt regelmäßig Schaden zu.", + "buff.title.heal": "HoT Buff Test", + "buff.desc.heal": "HoT Buff Test", + // Debuffs + "debuff.title.bleed": "Blutung", + "debuff.desc.bleed": "Fügt regelmäßig Schaden zu.", }, vector_map: { @@ -530,17 +530,17 @@ Willenskraft "NPCs mit demselben Level können unterschiedlich schwierig zu besiegen sein.", "Behaltet den Boden um euch im Blick! Dort gibt es Nahrung, Kisten und Anderes zu finden.", "Ist Euer Inventar voll mit Nahrung? Wertet es einfach durch Crafting auf!", - "Ihr sucht nach einem Abenteuer? Dungeons sind mit braunen Markierungen auf der Karte vermerkt!", + "Ihr sucht nach einem Abenteuer? Dungeons sind mit braunen Markierungen auf der Karte vermerkt!", "Vergesst nicht Eure Grafikeinstellungen anzupassen! Mit 'N' kommt ihr in die Einstellungen.", - "Zusammen kämpfen macht mehr Spaß! Drückt 'O' um Eure Mitspieler anzuzeigen.", + "Zusammen kämpfen macht mehr Spaß! Drückt 'O' um Eure Mitspieler anzuzeigen.", "Ein NPC mit einem Schädel unter seiner Lebensanzeige ist deutlich stärker als Ihr.", "Drückt 'J' um zu tanzen. Yeah!", "Verwendet 'L-Shift' um mit Eurem Gleiter den Himmel zu erobern!", "Veloren befindet sich noch in der Pre-Alpha Phase. Wir tun unser Bestes, um das Spielgefühl jeden Tag zu verbessern!", - "Ihr wünscht, Euch mit uns auszutauschen oder wollt unserem Entwickler-Team beitreten? Kommt doch einfach auf unseren Discord-Server!", - ], + "Ihr wünscht, Euch mit uns auszutauschen oder wollt unserem Entwickler-Team beitreten? Kommt doch einfach auf unseren Discord-Server!", + ], "npc.speech.villager_under_attack": [ - "Hilfe, ich werde angegriffen!", + "Hilfe, ich werde angegriffen!", ], } ) diff --git a/assets/voxygen/i18n/en.ron b/assets/voxygen/i18n/en.ron index cb540505d5..eb88b34d47 100644 --- a/assets/voxygen/i18n/en.ron +++ b/assets/voxygen/i18n/en.ron @@ -184,7 +184,7 @@ https://account.veloren.net."#, "hud.chat.pvp_ranged_kill_msg": "[{attacker}] shot [{victim}]", "hud.chat.pvp_explosion_kill_msg": "[{attacker}] blew up [{victim}]", "hud.chat.pvp_energy_kill_msg": "[{attacker}] killed [{victim}] with magic", - "hud.chat.pvp_other_kill_msg": "[{attacker}] killed [{victim}]", + "hud.chat.pvp_buff_kill_msg": "[{attacker}] killed [{victim}]", "hud.chat.npc_melee_kill_msg": "{attacker} killed [{victim}]", @@ -520,11 +520,15 @@ Protection "buff.title.missing": "Missing Title", "buff.desc.missing": "Missing Description", // Buffs - "buff.title.heal_test": "Heal Test", - "buff.desc.heal_test": "This is a test buff to test healing.", + "buff.title.heal": "Heal", + "buff.desc.heal": "Gain health over time.", + "buff.title.potion": "Potion", + "buff.desc.potion": "Drinking...", + "buff.title.saturation": "Saturation", + "buff.desc.saturation": "Gain health over time from consumables.", // Debuffs - "debuff.title.bleed_test": "Bleeding", - "debuff.desc.bleed_test": "Inflicts regular damage.", + "debuff.title.bleed": "Bleeding", + "debuff.desc.bleed": "Inflicts regular damage.", }, diff --git a/assets/voxygen/i18n/tr_TR.ron b/assets/voxygen/i18n/tr_TR.ron index 1eb7166a63..4de1f61798 100644 --- a/assets/voxygen/i18n/tr_TR.ron +++ b/assets/voxygen/i18n/tr_TR.ron @@ -1,5 +1,5 @@ /// Translation document instructions -/// +/// /// In order to keep localization documents readible please follow the following /// rules: /// - separate the string map sections using a commentary describing the purpose @@ -7,7 +7,7 @@ /// - prepend multi-line strings with a commentary /// - append one blank lines after a multi-line strings and two after sections /// -/// To add a new language in Veloren, just write an additional `.ron` file in +/// To add a new language in Veloren, just write an additional `.ron` file in /// `assets/voxygen/i18n` and that's it! /// /// WARNING: Localization files shall be saved in UTF-8 format without BOM @@ -164,7 +164,7 @@ bir hesap oluşturabilirsin."#, "hud.quests": "Görevler", "hud.you_died": "Öldün", "hud.waypoint_saved": "Yol noktası kaydedildi", - + "hud.press_key_to_show_keybindings_fmt": "Kontrolleri göstermek için {key}'e bas", "hud.press_key_to_toggle_lantern_fmt": "Fenerini yakıp söndürmek için [{key}]'e bas", "hud.press_key_to_show_debug_info_fmt": "Hata ayıklama bilgilerini göstermek için {key}'e bas", @@ -203,7 +203,7 @@ bir hesap oluşturabilirsin."#, "hud.sct.block": "BLOKLANDI", // Respawn message - "hud.press_key_to_respawn": r#"Ziyaret ettiğin en son kamp ateşinde yeniden doğmak için {key}'e bas."#, + "hud.press_key_to_respawn": r#"Ziyaret ettiğin en son kamp ateşinde yeniden doğmak için {key}'e bas."#, // Welcome message "hud.welcome": r#"Veloren Alfa sürümüne hoşgeldin!, @@ -250,7 +250,7 @@ dolu zindanlar belirdi. Birkaç yoldaş bul, yiyeceğini hazırla ve kült lideri ile onun yardımcılarını alt et. -Kim bilir? Belki onların tılsımlı +Kim bilir? Belki onların tılsımlı eşyalarını bile ele geçirebilirsin!"#, @@ -275,7 +275,7 @@ eşyalarını bile ele geçirebilirsin!"#, "hud.bag.feet": "Ayaklar", "hud.bag.mainhand": "Birincil", "hud.bag.offhand": "İkincil", - + // Map and Questlog "hud.map.map_title": "Harita", "hud.map.qlog_title": "Görevler", @@ -462,7 +462,7 @@ edince kapat"#, "gameinput.sneak": "Eğil", "gameinput.swimdown": "Aşağı Dal", "gameinput.swimup": "Yüzeye çık", - + /// End GameInput section @@ -508,7 +508,7 @@ Koruma /// Start character window section - + /// Start Escape Menu Section "esc_menu.logout": "Çıkış yap", @@ -520,11 +520,11 @@ Koruma "buff.title.missing": "İsim Yok", "buff.desc.missing": "Açıklama Yok", // Buffs - "buff.title.heal_test": "İyileştirme Testi", - "buff.desc.heal_test": "Bu etki iyileştirmeyi test etmek için.", + "buff.title.heal": "İyileştirme Testi", + "buff.desc.heal": "Bu etki iyileştirmeyi test etmek için.", // Debuffs - "debuff.title.bleed_test": "Kanama", - "debuff.desc.bleed_test": "Normal hasar verir.", + "debuff.title.bleed": "Kanama", + "debuff.desc.bleed": "Normal hasar verir.", }, vector_map: { diff --git a/assets/voxygen/voxel/sprite_manifest.ron b/assets/voxygen/voxel/sprite_manifest.ron index d3a876a2bd..0e7d3b07c4 100644 --- a/assets/voxygen/voxel/sprite_manifest.ron +++ b/assets/voxygen/voxel/sprite_manifest.ron @@ -1983,4 +1983,26 @@ Beehive: Some(( ], wind_sway: 0.1, )), +// Empty Flask +VialEmpty: Some(( + variations: [ + ( + model: "voxygen.voxel.object.potion_empty", + offset: (-5.0, -5.0, 0.0), + lod_axes: (1.0, 1.0, 1.0), + ), + ], + wind_sway: 0.0, +)), +// Minor Potion +PotionMinor: Some(( + variations: [ + ( + model: "voxygen.voxel.object.potion_red", + offset: (-5.0, -5.0, 0.0), + lod_axes: (1.0, 1.0, 1.0), + ), + ], + wind_sway: 0.0, +)), ) diff --git a/common/src/comp/body.rs b/common/src/comp/body.rs index b1348e4b42..77e0737474 100644 --- a/common/src/comp/body.rs +++ b/common/src/comp/body.rs @@ -276,7 +276,7 @@ impl Body { _ => 1000, }, Body::Object(_) => 10000, - Body::Golem(_) => 2560, + Body::Golem(_) => 2740, Body::Theropod(_) => 50, Body::QuadrupedLow(quadruped_low) => match quadruped_low.species { quadruped_low::Species::Crocodile => 600, diff --git a/common/src/comp/buff.rs b/common/src/comp/buff.rs index 08a489baf3..d54da80d44 100644 --- a/common/src/comp/buff.rs +++ b/common/src/comp/buff.rs @@ -10,11 +10,15 @@ use std::{cmp::Ordering, collections::HashMap, time::Duration}; pub enum BuffKind { /// Restores health/time for some period Regeneration, + /// Restores health/time for some period for consumables + Saturation, /// Lowers health over time for some duration Bleeding, /// Lower a creature's max health /// Currently placeholder buff to show other stuff is possible Cursed, + // Applied when drinking a potion + Potion, } impl BuffKind { @@ -22,14 +26,16 @@ impl BuffKind { pub fn is_buff(self) -> bool { match self { BuffKind::Regeneration { .. } => true, + BuffKind::Saturation { .. } => true, BuffKind::Bleeding { .. } => false, BuffKind::Cursed { .. } => false, + BuffKind::Potion { .. } => true, } } } // Struct used to store data relevant to a buff -#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] pub struct BuffData { pub strength: f32, pub duration: Option, @@ -97,7 +103,7 @@ pub enum BuffChange { RemoveById(Vec), /// Removes buffs of these categories (first vec is of categories of which /// all are required, second vec is of categories of which at least one is - /// required, third vec is of categories that will not be removed) + /// required, third vec is of categories that will not be removed) RemoveByCategory { all_required: Vec, any_required: Vec, @@ -121,7 +127,7 @@ impl Buff { }], data.duration, ), - BuffKind::Regeneration => ( + BuffKind::Regeneration | BuffKind::Saturation | BuffKind::Potion => ( vec![BuffEffect::HealthChangeOverTime { rate: data.strength, accumulated: 0.0, diff --git a/common/src/comp/inventory/item/mod.rs b/common/src/comp/inventory/item/mod.rs index e632a2b055..9e06a15b27 100644 --- a/common/src/comp/inventory/item/mod.rs +++ b/common/src/comp/inventory/item/mod.rs @@ -83,7 +83,7 @@ pub enum ItemKind { Glider(Glider), Consumable { kind: String, - effect: Effect, + effect: Vec, }, Throwable { kind: Throwable, @@ -337,6 +337,8 @@ impl Item { SpriteKind::Stones => "common.items.crafting_ing.stones", SpriteKind::Twigs => "common.items.crafting_ing.twigs", SpriteKind::ShinyGem => "common.items.crafting_ing.shiny_gem", + SpriteKind::VialEmpty => "common.items.crafting_ing.empty_vial", + SpriteKind::PotionMinor => "common.items.consumable.potion_minor", _ => return None, })) } diff --git a/common/src/comp/inventory/mod.rs b/common/src/comp/inventory/mod.rs index f24fcc3ae1..53804f81ee 100644 --- a/common/src/comp/inventory/mod.rs +++ b/common/src/comp/inventory/mod.rs @@ -260,8 +260,10 @@ impl Default for Inventory { slots: vec![None; 36], amount: 0, }; + inventory.push(Item::new_from_asset_expect( + "common.items.consumable.potion_minor", + )); inventory.push(Item::new_from_asset_expect("common.items.food.cheese")); - inventory.push(Item::new_from_asset_expect("common.items.food.apple")); inventory } } diff --git a/common/src/effect.rs b/common/src/effect.rs index 369fafb5ca..6bfdcb57a7 100644 --- a/common/src/effect.rs +++ b/common/src/effect.rs @@ -2,11 +2,20 @@ use crate::{combat, comp}; use serde::{Deserialize, Serialize}; /// An effect that may be applied to an entity -#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub enum Effect { Health(comp::HealthChange), Xp(i64), Damage(combat::Damage), + Buff(BuffEffect), +} + +/// A buff that may be applied to an entity +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct BuffEffect { + pub kind: comp::BuffKind, + pub data: comp::BuffData, + pub cat_ids: Vec, } impl Effect { @@ -15,6 +24,7 @@ impl Effect { Effect::Health(c) => format!("{:+} health", c.amount), Effect::Xp(n) => format!("{:+} exp", n), Effect::Damage(d) => format!("{:+}", d.value), + Effect::Buff(e) => format!("{:?} buff", e), } } @@ -29,6 +39,9 @@ impl Effect { Effect::Damage(damage) => { damage.interpolate_damage(modifier, 0.0); }, + Effect::Buff(effect) => { + effect.data.strength *= modifier; + }, } } } diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs index 40349525f9..53cb5a2ff8 100644 --- a/common/src/terrain/sprite.rs +++ b/common/src/terrain/sprite.rs @@ -102,6 +102,8 @@ make_case_elim!( Reed = 0x4C, Beehive = 0x4D, LargeCactus = 0x4E, + VialEmpty = 0x4F, + PotionMinor = 0x50, } ); @@ -184,6 +186,8 @@ impl SpriteKind { SpriteKind::ShinyGem => true, SpriteKind::Crate => true, SpriteKind::Beehive => true, + SpriteKind::VialEmpty => true, + SpriteKind::PotionMinor => true, _ => false, } } @@ -221,6 +225,8 @@ impl SpriteKind { | SpriteKind::DropGateBottom | SpriteKind::Door | SpriteKind::Beehive + | SpriteKind::PotionMinor + | SpriteKind::VialEmpty ) } } diff --git a/server/src/events/entity_manipulation.rs b/server/src/events/entity_manipulation.rs index 91717fd532..60d219892c 100644 --- a/server/src/events/entity_manipulation.rs +++ b/server/src/events/entity_manipulation.rs @@ -649,7 +649,7 @@ pub fn handle_explosion( if is_alive { effect.modify_strength(strength); - server.state().apply_effect(entity_b, effect, owner); + server.state().apply_effect(entity_b, effect.clone(), owner); // Apply energy change if let Some(owner) = owner_entity { if let Some(energy) = diff --git a/server/src/events/inventory_manip.rs b/server/src/events/inventory_manip.rs index bd20506e24..2bfa117a08 100644 --- a/server/src/events/inventory_manip.rs +++ b/server/src/events/inventory_manip.rs @@ -211,7 +211,7 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv } else if let Some(item) = inventory.take(slot) { match item.kind() { ItemKind::Consumable { kind, effect, .. } => { - maybe_effect = Some(*effect); + maybe_effect = Some(effect.clone()); Some(comp::InventoryUpdateEvent::Consumed(kind.clone())) }, ItemKind::Throwable { kind, .. } => { @@ -348,8 +348,10 @@ pub fn handle_inventory(server: &mut Server, entity: EcsEntity, manip: comp::Inv }; drop(inventories); - if let Some(effect) = maybe_effect { - state.apply_effect(entity, effect, None); + if let Some(effects) = maybe_effect { + for effect in effects { + state.apply_effect(entity, effect, None); + } } if let Some(event) = event { state.write_component(entity, comp::InventoryUpdate::new(event)); diff --git a/server/src/state_ext.rs b/server/src/state_ext.rs index 642c4d427c..ebcc7e4f02 100644 --- a/server/src/state_ext.rs +++ b/server/src/state_ext.rs @@ -71,8 +71,8 @@ pub trait StateExt { } impl StateExt for State { - fn apply_effect(&self, entity: EcsEntity, effect: Effect, source: Option) { - match effect { + fn apply_effect(&self, entity: EcsEntity, effects: Effect, source: Option) { + match effects { Effect::Health(change) => { self.ecs() .write_storage::() @@ -93,6 +93,19 @@ impl StateExt for State { .get_mut(entity) .map(|health| health.change_by(change)); }, + Effect::Buff(buff) => { + self.ecs() + .write_storage::() + .get_mut(entity) + .map(|buffs| { + buffs.insert(comp::Buff::new( + buff.kind, + buff.data, + buff.cat_ids, + comp::BuffSource::Item, + )) + }); + }, } } diff --git a/server/src/sys/terrain.rs b/server/src/sys/terrain.rs index ec12b0bb34..39fdcb37c2 100644 --- a/server/src/sys/terrain.rs +++ b/server/src/sys/terrain.rs @@ -138,7 +138,7 @@ impl<'a> System<'a> for Sys { body, ); } - stats.level.set_level(rand::thread_rng().gen_range(30, 35)); + stats.level.set_level(rand::thread_rng().gen_range(25, 30)); scale = 2.0 + rand::random::(); } diff --git a/voxygen/src/hud/buffs.rs b/voxygen/src/hud/buffs.rs index 1bd91eabc3..ad8aeed4cc 100644 --- a/voxygen/src/hud/buffs.rs +++ b/voxygen/src/hud/buffs.rs @@ -182,6 +182,8 @@ impl<'a> Widget for BuffsBar<'a> { }) as u32; // Percentage to determine which frame of the timer overlay is displayed let buff_img = match buff.kind { BuffKind::Regeneration { .. } => self.imgs.buff_plus_0, + BuffKind::Saturation { .. } => self.imgs.buff_saturation_0, + BuffKind::Potion { .. } => self.imgs.buff_potion_0, _ => self.imgs.missing_icon, }; let buff_widget = Image::new(buff_img).w_h(20.0, 20.0); @@ -204,9 +206,11 @@ impl<'a> Widget for BuffsBar<'a> { .set(id, ui); // Create Buff tooltip let title = match buff.kind { - BuffKind::Regeneration { .. } => { - localized_strings.get("buff.title.heal_test") + BuffKind::Regeneration { .. } => localized_strings.get("buff.title.heal"), + BuffKind::Saturation { .. } => { + localized_strings.get("buff.title.saturation") }, + BuffKind::Potion { .. } => localized_strings.get("buff.title.potion"), _ => localized_strings.get("buff.title.missing"), }; let remaining_time = if current_duration.is_none() { @@ -216,9 +220,11 @@ impl<'a> Widget for BuffsBar<'a> { }; let click_to_remove = format!("<{}>", &localized_strings.get("buff.remove")); let desc_txt = match buff.kind { - BuffKind::Regeneration { .. } => { - localized_strings.get("buff.desc.heal_test") + BuffKind::Regeneration { .. } => localized_strings.get("buff.desc.heal"), + BuffKind::Saturation { .. } => { + localized_strings.get("buff.desc.saturation") }, + BuffKind::Potion { .. } => localized_strings.get("buff.desc.potion"), _ => localized_strings.get("buff.desc.missing"), }; let desc = format!("{}\n\n{}\n\n{}", desc_txt, remaining_time, click_to_remove); @@ -296,9 +302,7 @@ impl<'a> Widget for BuffsBar<'a> { .set(id, ui); // Create Debuff tooltip let title = match debuff.kind { - BuffKind::Bleeding { .. } => { - localized_strings.get("debuff.title.bleed_test") - }, + BuffKind::Bleeding { .. } => localized_strings.get("debuff.title.bleed"), _ => localized_strings.get("buff.title.missing"), }; let remaining_time = if current_duration.is_none() { @@ -307,9 +311,7 @@ impl<'a> Widget for BuffsBar<'a> { format!("Remaining: {:.0}s", current_duration.unwrap().as_secs_f32()) }; let desc_txt = match debuff.kind { - BuffKind::Bleeding { .. } => { - localized_strings.get("debuff.desc.bleed_test") - }, + BuffKind::Bleeding { .. } => localized_strings.get("debuff.desc.bleed"), _ => localized_strings.get("debuff.desc.missing"), }; let desc = format!("{}\n\n{}", desc_txt, remaining_time); @@ -379,8 +381,10 @@ impl<'a> Widget for BuffsBar<'a> { }) as u32; let buff_img = match buff.kind { BuffKind::Regeneration { .. } => self.imgs.buff_plus_0, + BuffKind::Saturation { .. } => self.imgs.buff_saturation_0, BuffKind::Bleeding { .. } => self.imgs.debuff_bleed_0, BuffKind::Cursed { .. } => self.imgs.debuff_skull_0, + BuffKind::Potion { .. } => self.imgs.buff_potion_0, }; let buff_widget = Image::new(buff_img).w_h(40.0, 40.0); // Sort buffs into rows of 6 slots @@ -402,12 +406,12 @@ impl<'a> Widget for BuffsBar<'a> { .set(id, ui); // Create Buff tooltip let title = match buff.kind { - BuffKind::Regeneration { .. } => { - localized_strings.get("buff.title.heal_test") - }, - BuffKind::Bleeding { .. } => { - localized_strings.get("debuff.title.bleed_test") + BuffKind::Regeneration { .. } => localized_strings.get("buff.title.heal"), + BuffKind::Saturation { .. } => { + localized_strings.get("buff.title.saturation") }, + BuffKind::Potion { .. } => localized_strings.get("buff.title.potion"), + BuffKind::Bleeding { .. } => localized_strings.get("debuff.title.bleed"), _ => localized_strings.get("buff.title.missing"), }; let remaining_time = if current_duration.is_none() { @@ -417,12 +421,12 @@ impl<'a> Widget for BuffsBar<'a> { }; let click_to_remove = format!("<{}>", &localized_strings.get("buff.remove")); let desc_txt = match buff.kind { - BuffKind::Regeneration { .. } => { - localized_strings.get("buff.desc.heal_test") - }, - BuffKind::Bleeding { .. } => { - localized_strings.get("debuff.desc.bleed_test") + BuffKind::Regeneration { .. } => localized_strings.get("buff.desc.heal"), + BuffKind::Saturation { .. } => { + localized_strings.get("buff.desc.saturation") }, + BuffKind::Potion { .. } => localized_strings.get("buff.desc.potion"), + BuffKind::Bleeding { .. } => localized_strings.get("debuff.desc.bleed"), _ => localized_strings.get("buff.desc.missing"), }; let desc = if buff.is_buff { diff --git a/voxygen/src/hud/group.rs b/voxygen/src/hud/group.rs index 1d4d35d2c0..6e12c18fed 100644 --- a/voxygen/src/hud/group.rs +++ b/voxygen/src/hud/group.rs @@ -482,8 +482,10 @@ impl<'a> Widget for Group<'a> { }) as u32; // Percentage to determine which frame of the timer overlay is displayed let buff_img = match buff.kind { BuffKind::Regeneration { .. } => self.imgs.buff_plus_0, + BuffKind::Saturation { .. } => self.imgs.buff_saturation_0, BuffKind::Bleeding { .. } => self.imgs.debuff_bleed_0, BuffKind::Cursed { .. } => self.imgs.debuff_skull_0, + BuffKind::Potion { .. } => self.imgs.buff_potion_0, }; let buff_widget = Image::new(buff_img).w_h(15.0, 15.0); let buff_widget = if let Some(id) = prev_id { @@ -510,10 +512,13 @@ impl<'a> Widget for Group<'a> { // Create Buff tooltip let title = match buff.kind { BuffKind::Regeneration { .. } => { - localized_strings.get("buff.title.heal_test") + localized_strings.get("buff.title.heal") + }, + BuffKind::Saturation { .. } => { + localized_strings.get("buff.title.saturation") }, BuffKind::Bleeding { .. } => { - localized_strings.get("debuff.title.bleed_test") + localized_strings.get("debuff.title.bleed") }, _ => localized_strings.get("buff.title.missing"), }; @@ -527,10 +532,13 @@ impl<'a> Widget for Group<'a> { }; let desc_txt = match buff.kind { BuffKind::Regeneration { .. } => { - localized_strings.get("buff.desc.heal_test") + localized_strings.get("buff.desc.heal") + }, + BuffKind::Saturation { .. } => { + localized_strings.get("buff.desc.saturation") }, BuffKind::Bleeding { .. } => { - localized_strings.get("debuff.desc.bleed_test") + localized_strings.get("debuff.desc.bleed") }, _ => localized_strings.get("buff.desc.missing"), }; diff --git a/voxygen/src/hud/img_ids.rs b/voxygen/src/hud/img_ids.rs index fbb48033c0..48a42cd860 100644 --- a/voxygen/src/hud/img_ids.rs +++ b/voxygen/src/hud/img_ids.rs @@ -352,6 +352,8 @@ image_ids! { // Buffs buff_plus_0: "voxygen.element.icons.de_buffs.buff_plus_0", + buff_saturation_0: "voxygen.element.icons.de_buffs.buff_saturation_0", + buff_potion_0: "voxygen.element.icons.de_buffs.buff_potion_0", // Debuffs debuff_skull_0: "voxygen.element.icons.de_buffs.debuff_skull_0", diff --git a/voxygen/src/hud/overhead.rs b/voxygen/src/hud/overhead.rs index 6d2630b3ad..8d592a3501 100644 --- a/voxygen/src/hud/overhead.rs +++ b/voxygen/src/hud/overhead.rs @@ -243,8 +243,10 @@ impl<'a> Widget for Overhead<'a> { }) as u32; // Percentage to determine which frame of the timer overlay is displayed let buff_img = match buff.kind { BuffKind::Regeneration { .. } => self.imgs.buff_plus_0, + BuffKind::Saturation { .. } => self.imgs.buff_saturation_0, BuffKind::Bleeding { .. } => self.imgs.debuff_bleed_0, BuffKind::Cursed { .. } => self.imgs.debuff_skull_0, + BuffKind::Potion { .. } => self.imgs.buff_potion_0, }; let buff_widget = Image::new(buff_img).w_h(20.0, 20.0); // Sort buffs into rows of 5 slots diff --git a/world/src/site/settlement/building/archetype/house.rs b/world/src/site/settlement/building/archetype/house.rs index 3c679cc973..8f81b8eec4 100644 --- a/world/src/site/settlement/building/archetype/house.rs +++ b/world/src/site/settlement/building/archetype/house.rs @@ -537,7 +537,7 @@ impl Archetype for House { center_offset.x, center_offset.y, z + 100, - )) % 11 + )) % 12 { 0 => SpriteKind::Planter, 1 => SpriteKind::ChairSingle, @@ -554,6 +554,13 @@ impl Archetype for House { 7 => SpriteKind::DrawerSmall, 8 => SpriteKind::TableSide, 9 => SpriteKind::WardrobeSingle, + 10 => { + if dynamic_rng.gen_range(0, 10) == 0 { + SpriteKind::PotionMinor + } else { + SpriteKind::VialEmpty + } + }, _ => SpriteKind::Pot, };