Merge pull request #10796 from Nightfirecat/revert-magic-boost-imbued-heart-timer
Revert "timers plugin: Improve imbued heart detection"
This commit is contained in:
@@ -25,7 +25,6 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.timers;
|
package net.runelite.client.plugins.timers;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -44,12 +43,10 @@ import net.runelite.api.ItemID;
|
|||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
import net.runelite.api.NpcID;
|
import net.runelite.api.NpcID;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.Skill;
|
|
||||||
import net.runelite.api.Varbits;
|
import net.runelite.api.Varbits;
|
||||||
import net.runelite.api.WorldType;
|
import net.runelite.api.WorldType;
|
||||||
import net.runelite.api.coords.WorldPoint;
|
import net.runelite.api.coords.WorldPoint;
|
||||||
import net.runelite.api.events.AnimationChanged;
|
import net.runelite.api.events.AnimationChanged;
|
||||||
import net.runelite.api.events.StatChanged;
|
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.client.events.ConfigChanged;
|
import net.runelite.client.events.ConfigChanged;
|
||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
@@ -115,9 +112,6 @@ public class TimersPlugin extends Plugin
|
|||||||
private static final Pattern HALF_TELEBLOCK_PATTERN = Pattern.compile("<col=4f006f>A Tele Block spell has been cast on you by (.+)\\. It will expire in 2 minutes, 30 seconds\\.</col>");
|
private static final Pattern HALF_TELEBLOCK_PATTERN = Pattern.compile("<col=4f006f>A Tele Block spell has been cast on you by (.+)\\. It will expire in 2 minutes, 30 seconds\\.</col>");
|
||||||
private static final Pattern DIVINE_POTION_PATTERN = Pattern.compile("You drink some of your divine (.+) potion\\.");
|
private static final Pattern DIVINE_POTION_PATTERN = Pattern.compile("You drink some of your divine (.+) potion\\.");
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
static final int IMBUED_HEART_MIN_CERTAIN_BOOST_LEVEL = 40; // Before this level, other effects can grant boosts of equal amounts
|
|
||||||
|
|
||||||
private TimerTimer freezeTimer;
|
private TimerTimer freezeTimer;
|
||||||
private int freezeTime = -1; // time frozen, in game ticks
|
private int freezeTime = -1; // time frozen, in game ticks
|
||||||
|
|
||||||
@@ -898,24 +892,6 @@ public class TimersPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
public void onStatChanged(StatChanged statChanged)
|
|
||||||
{
|
|
||||||
if (statChanged.getSkill() != Skill.MAGIC || !config.showImbuedHeart())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int magicLevel = statChanged.getLevel();
|
|
||||||
final int boostAmount = statChanged.getBoostedLevel() - magicLevel;
|
|
||||||
final int heartBoost = 1 + (magicLevel / 10);
|
|
||||||
|
|
||||||
if (magicLevel >= IMBUED_HEART_MIN_CERTAIN_BOOST_LEVEL && boostAmount == heartBoost)
|
|
||||||
{
|
|
||||||
createGameTimer(IMBUEDHEART);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private TimerTimer createGameTimer(final GameTimer timer)
|
private TimerTimer createGameTimer(final GameTimer timer)
|
||||||
{
|
{
|
||||||
removeGameTimer(timer);
|
removeGameTimer(timer);
|
||||||
|
|||||||
@@ -31,11 +31,8 @@ import com.google.inject.testing.fieldbinder.BoundFieldModule;
|
|||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Experience;
|
|
||||||
import net.runelite.api.Skill;
|
|
||||||
import net.runelite.api.WorldType;
|
import net.runelite.api.WorldType;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.StatChanged;
|
|
||||||
import net.runelite.client.game.ItemManager;
|
import net.runelite.client.game.ItemManager;
|
||||||
import net.runelite.client.game.SpriteManager;
|
import net.runelite.client.game.SpriteManager;
|
||||||
import net.runelite.client.ui.overlay.infobox.InfoBox;
|
import net.runelite.client.ui.overlay.infobox.InfoBox;
|
||||||
@@ -45,10 +42,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
@@ -142,44 +136,4 @@ public class TimersPluginTest
|
|||||||
TimerTimer infoBox = (TimerTimer) captor.getValue();
|
TimerTimer infoBox = (TimerTimer) captor.getValue();
|
||||||
assertEquals(GameTimer.DMM_FULLTB, infoBox.getTimer());
|
assertEquals(GameTimer.DMM_FULLTB, infoBox.getTimer());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@Test
|
|
||||||
public void testImbuedHeartBoost()
|
|
||||||
{
|
|
||||||
when(timersConfig.showImbuedHeart()).thenReturn(true);
|
|
||||||
StatChanged event;
|
|
||||||
|
|
||||||
// The following simulates imbued heart boosts at low magic levels, but should not create an imbued heart timer
|
|
||||||
// because it is ambiguous what caused the boost. (Magic essences and potions can create similar boost amounts)
|
|
||||||
for (int level = 1; level < TimersPlugin.IMBUED_HEART_MIN_CERTAIN_BOOST_LEVEL; level++)
|
|
||||||
{
|
|
||||||
event = new StatChanged(Skill.MAGIC, 0, level, level + 1 + (level / 10));
|
|
||||||
timersPlugin.onStatChanged(event);
|
|
||||||
verify(infoBoxManager, never()).addInfoBox(any());
|
|
||||||
}
|
|
||||||
|
|
||||||
// The following simulates magic essence and magic potion boosts and should not create an imbued heart timer
|
|
||||||
for (int level = TimersPlugin.IMBUED_HEART_MIN_CERTAIN_BOOST_LEVEL; level <= Experience.MAX_REAL_LEVEL; level++)
|
|
||||||
{
|
|
||||||
event = new StatChanged(Skill.MAGIC, 0, level, level + 3); // Magic essence
|
|
||||||
timersPlugin.onStatChanged(event);
|
|
||||||
verify(infoBoxManager, never()).addInfoBox(any());
|
|
||||||
|
|
||||||
event = new StatChanged(Skill.MAGIC, 0, level, level + 4);
|
|
||||||
timersPlugin.onStatChanged(event);
|
|
||||||
verify(infoBoxManager, never()).addInfoBox(any());
|
|
||||||
}
|
|
||||||
|
|
||||||
// The following simulates a real imbued heart magic boost and should create imbued heart timers
|
|
||||||
for (int level = TimersPlugin.IMBUED_HEART_MIN_CERTAIN_BOOST_LEVEL, i = 0; level <= Experience.MAX_REAL_LEVEL; level++, i++)
|
|
||||||
{
|
|
||||||
event = new StatChanged(Skill.MAGIC, 0, level, level + 1 + (level / 10));
|
|
||||||
timersPlugin.onStatChanged(event);
|
|
||||||
|
|
||||||
ArgumentCaptor<InfoBox> captor = ArgumentCaptor.forClass(InfoBox.class);
|
|
||||||
verify(infoBoxManager, times(i + 1)).addInfoBox(captor.capture());
|
|
||||||
TimerTimer infoBox = (TimerTimer) captor.getValue();
|
|
||||||
assertEquals(GameTimer.IMBUEDHEART, infoBox.getTimer());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user