Giter Club home page Giter Club logo

potions's Issues

Lack of DisplayNameComponent can cause log spam in PotionClientSystem

If at present you give emptyVial with Potions running you get a broken icon image in the toolbar (as there is no texture - I suspect emptyvial.prefab is obsolete and should be deleted) followed by massive log spam as seemingly a tooltip preparation piece fails to find a display name for the broken vial, causing NPEs over and over.

Can fix by simply adding a DisplayName block to that prefab, but instead we should really null harden PotionClientSystem.setItemTooltip() so this can't happen, then maybe delete emptyvial.prefab

17:14:20.877 [main] ERROR o.t.e.event.internal.EventSystemImpl - Failed to invoke event
java.lang.NullPointerException: null
	at org.terasology.potions.system.PotionClientSystem.setItemTooltip(PotionClientSystem.java:44)
	at org.terasology.potions.system.PotionClientSystemMethodAccess.invoke(Unknown Source)
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:506)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendStandardEvent(EventSystemImpl.java:269)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:260)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:145)
	at org.terasology.rendering.nui.layers.ingame.inventory.ItemCell$1.get(ItemCell.java:58)
	at org.terasology.rendering.nui.layers.ingame.inventory.ItemCell$1.get(ItemCell.java:47)
	at org.terasology.rendering.nui.widgets.UIList.getList(UIList.java:132)
	at org.terasology.rendering.nui.layers.ingame.inventory.ItemIcon.getTooltip(ItemIcon.java:158)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:401)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:368)
	at org.terasology.rendering.nui.layers.ingame.inventory.ItemCell.onDraw(ItemCell.java:111)
	at org.terasology.rendering.nui.layers.ingame.inventory.InventoryCell.onDraw(InventoryCell.java:97)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392)
	at org.terasology.rendering.nui.layouts.FlowLayout.onDraw(FlowLayout.java:57)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392)
	at org.terasology.rendering.nui.layouts.relative.RelativeLayout.onDraw(RelativeLayout.java:78)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392)
	at org.terasology.rendering.nui.layers.hud.CoreHudWidget.onDraw(CoreHudWidget.java:60)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392)
	at org.terasology.rendering.nui.layers.hud.HUDScreenLayer.onDraw(HUDScreenLayer.java:162)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawStyledWidget(CanvasImpl.java:406)
	at org.terasology.rendering.nui.internal.CanvasImpl.drawWidget(CanvasImpl.java:392)
	at org.terasology.rendering.nui.internal.NUIManagerInternal.render(NUIManagerInternal.java:476)
	at org.terasology.engine.modes.StateIngame.renderUserInterface(StateIngame.java:235)
	at org.terasology.engine.modes.StateIngame.render(StateIngame.java:219)
	at org.terasology.engine.subsystem.lwjgl.LwjglGraphics.postUpdate(LwjglGraphics.java:189)
	at org.terasology.engine.TerasologyEngine.tick(TerasologyEngine.java:441)
	at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:397)
	at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:373)
	at org.terasology.engine.Terasology.main(Terasology.java:153)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Reduce/Remove Fall Damage for Jump Speed Potions

When the jump speed potions (such as JumpSpeed Potion, MegaJump Potion, Rage Potion, Ninja Potion) are activated, the player unmistakably gains an ability to jump higher.
However, this ends up dealing a huge amount of fall damage to the player with every jump. This fall damage is too high for a player to enjoy the newly gained abilities via the said potions, thus the player may choose to opt out of using them even after spending some amount of trouble obtaining them.

What can be done is to either completely eliminate the fall damage(not advisable) or reduce it to a great extent i.e. have a fractional multiplier to reduce the damage proportionately for all cases. It is advisable to look at other games which have a similar potion or tool which gives the players such an ability to jump higher and devise a solution to the issue accordingly.

To try the potions: Enable the Potions module and start the game in the JS or Core Gameplay game modes and then use 'give' command in the console to obtain the potions.

Implement missing potion effect

Following from last GCI a lot of potions have missing effects.

Simply pulling the info off the wiki it seems that the following potions are not working.

  • AllSpeedPotion
  • CombatPotion
  • ExplosivePotion
  • HealthBoostPotion
  • JumpSpeedPotion
  • MobilityPotion
  • PoisonPotion
  • RagePotion
  • RegenPotion
  • ResistPhysicalPotion
  • SlowWalkPotion
  • SwimSpeedPotion
  • UltimatePotion

They will need the appropriate effects implemented before they work. It's also probably wise to update the test plan if needed when they are implemented.

Add "durability" to potion bottles

Currently, when a potion is drunk, the original bottle is destroyed. A nice extension to the potion drinking system would be to allow for a bottle to be used multiple times before discarded. In other words, if a health potion were to be drunk, an empty potion bottle would be returned as long as the remaining durability was high enough.

We likely need one or two new components for this, and tweaking of a few systems. Probably also need add defaults and modify the potion crafting system in Alchemy.

So we need at least the following:

  • Name of the old potion bottle's prefab.
  • Durability of the potion bottle.
  • Durability cost per potion drink.
  • Is the potion bottle unbreakable?

Update test plan for next release

Not that we're really doing releases yet, but I figured this would be a good habit to start: document changes that will result in needed adjustments in the test plan. Usually we'd probably do something like this later in a release cycle while reviewing the pending milestone for changes needed (unless of cause authors themselves update the test plan as they go along, which is naturally preferred)

  • #25 - adds the BlindWalk potion. Has two effects, the walk speed reduction works, but blindness is not yet implemented (possible dependency on MovingBlocks/Terasology#2449)

(pinging @xrtariq2594 for reference, @nihal111 too if he ends up merging a potion or two)

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/40083022-update-test-plan-for-next-release?utm_campaign=plugin&utm_content=tracker%2F6706249&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F6706249&utm_medium=issues&utm_source=github).

Fix Health Boost Potion

The Health Boost Potion is supposed to increase the user's base max health by 50% for 30 seconds. But right now what it ends up doing is reducing health. See:

image
image
A good place to start could be trying to understand how the various Potion Authority Systems work and how the effect: "TEMP_MAX_HEALTH_BOOST" fits in there.
To try the potions: Enable the Potions module and start the game in the JS or Core Gameplay game modes and then use 'give' command in the console to obtain the potions.

Fix Juggernaut Potion (Restrict Walking)

The Juggernaut potion is supposed to restrict the Player's movements in exchange for damage resistance for 10 seconds.
Currently the potion does restrict jumping but the player is still free to walk around.

To fix: Either render the player completely immobile or reduce the walking speed to a very minimal amount (see Immobility potion).

To try the potions: Enable the Potions module and start the game in the JS or Core Gameplay game modes and then use 'give' command in the console to obtain the potions.

Give Visual Effect to Poison and Hemlock Potions

Currently, when the Poison and Hemlock Potions are used, what happens is that the health of the player starts decreasing at the specified rate without any issues.
However, what we want is to notify the player in the form of a visual indicator that the poison is still active and is reducing the heath of the player.
One Way to do this is by adding particle effects to the player model. Implementation of such an effect can be found in LightAndShadow.
image
image

To try the potions: Enable the Potions module and start the game in the JS or Core Gameplay game modes and then use 'give' command in the console to obtain the potions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.