AoE notifier

This commit is contained in:
sdburns1998
2019-06-06 17:41:43 +02:00
parent 55456cf9b1
commit c2009bfd02
3 changed files with 591 additions and 79 deletions

View File

@@ -35,6 +35,17 @@ import net.runelite.client.config.Stub;
@ConfigGroup("aoe")
public interface AoeWarningConfig extends Config
{
@ConfigItem(
keyName = "aoeNotifyAll",
name = "Notify for all AoE warnings",
description = "Configures whether or not AoE Projectile Warnings should trigger a notification",
position = 0
)
default boolean aoeNotifyAll()
{
return false;
}
@ConfigItem(
keyName = "overlayStub",
name = "Overlay",
@@ -105,144 +116,431 @@ public interface AoeWarningConfig extends Config
return new Stub();
}
@ConfigItem(
keyName = "lizardmanaoeStub",
name = "Lizardman Shamans",
description = "",
position = 7,
parent = "npcStub"
)
default Stub lizardmanaoeStub()
{
return new Stub();
}
@ConfigItem(
keyName = "lizardmanaoe",
name = "Lizardman Shamans",
description = "Configures whether or not AoE Projectile Warnings for Lizardman Shamans is displayed",
parent = "npcStub",
position = 7
parent = "lizardmanaoeStub",
position = 8
)
default boolean isShamansEnabled()
{
return true;
}
@ConfigItem(
keyName = "lizardmanaoenotify",
name = "Lizardman Shamans Notify",
description = "Configures whether or not AoE Projectile Warnings for Lizardman Shamans should trigger a notification",
parent = "lizardmanaoeStub",
position = 9,
hide = "aoeNotifyAll"
)
default boolean isShamansNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "archaeologistaoeStub",
name = "Crazy Archaeologist",
description = "",
position = 10,
parent = "npcStub"
)
default Stub archaeologistaoeStub()
{
return new Stub();
}
@ConfigItem(
keyName = "archaeologistaoe",
name = "Crazy Archaeologist",
description = "Configures whether or not AoE Projectile Warnings for Archaeologist is displayed",
parent = "npcStub",
position = 8
parent = "archaeologistaoeStub",
position = 11
)
default boolean isArchaeologistEnabled()
{
return true;
}
@ConfigItem(
keyName = "archaeologistaoenotify",
name = "Crazy Archaeologist Notify",
description = "Configures whether or not AoE Projectile Warnings for Crazy Archaeologist should trigger a notification",
parent = "archaeologistaoeStub",
position = 12,
hide = "aoeNotifyAll"
)
default boolean isArchaeologistNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "icedemonStub",
name = "Ice Demon",
description = "",
position = 13,
parent = "npcStub"
)
default Stub icedemonStub()
{
return new Stub();
}
@ConfigItem(
keyName = "icedemon",
name = "Ice Demon",
description = "Configures whether or not AoE Projectile Warnings for Ice Demon is displayed",
parent = "npcStub",
position = 9
parent = "icedemonStub",
position = 14
)
default boolean isIceDemonEnabled()
{
return true;
}
@ConfigItem(
keyName = "icedemonnotify",
name = "Ice Demon Notify",
description = "Configures whether or not AoE Projectile Warnings for Ice Demon should trigger a notification",
parent = "icedemonStub",
position = 15,
hide = "aoeNotifyAll"
)
default boolean isIceDemonNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "vasaStub",
name = "Vasa",
description = "",
position = 16,
parent = "npcStub"
)
default Stub vasaStub()
{
return new Stub();
}
@ConfigItem(
keyName = "vasa",
name = "Vasa",
description = "Configures whether or not AoE Projectile Warnings for Vasa is displayed",
parent = "npcStub",
position = 10
parent = "vasaStub",
position = 17
)
default boolean isVasaEnabled()
{
return true;
}
@ConfigItem(
keyName = "vasanotify",
name = "Vasa Notify",
description = "Configures whether or not AoE Projectile Warnings for Vasa should trigger a notification",
parent = "vasaStub",
position = 18,
hide = "aoeNotifyAll"
)
default boolean isVasaNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "tektonStub",
name = "Tekton",
description = "",
position = 19,
parent = "npcStub"
)
default Stub tektonStub()
{
return new Stub();
}
@ConfigItem(
keyName = "tekton",
name = "Tekton",
description = "Configures whether or not AoE Projectile Warnings for Tekton is displayed",
parent = "npcStub",
position = 11
parent = "tektonStub",
position = 20
)
default boolean isTektonEnabled()
{
return true;
}
@ConfigItem(
keyName = "tektonnotify",
name = "Tekton Notify",
description = "Configures whether or not AoE Projectile Warnings for Tekton should trigger a notification",
parent = "tektonStub",
position = 21,
hide = "aoeNotifyAll"
)
default boolean isTektonNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "vorkathStub",
name = "Vorkath",
description = "",
position = 22,
parent = "npcStub"
)
default Stub vorkathStub()
{
return new Stub();
}
@ConfigItem(
keyName = "vorkath",
name = "Vorkath",
description = "Configures whether or not AoE Projectile Warnings for Vorkath are displayed",
parent = "npcStub",
position = 12
parent = "vorkathStub",
position = 23
)
default boolean isVorkathEnabled()
{
return true;
}
@ConfigItem(
keyName = "vorkathotify",
name = "Vorkath Notify",
description = "Configures whether or not AoE Projectile Warnings for Vorkath should trigger a notification",
parent = "vorkathStub",
position = 24,
hide = "aoeNotifyAll"
)
default boolean isVorkathNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "galvekStub",
name = "Galvek",
description = "",
position = 25,
parent = "npcStub"
)
default Stub galvekStub()
{
return new Stub();
}
@ConfigItem(
keyName = "galvek",
name = "Galvek",
description = "Configures whether or not AoE Projectile Warnings for Galvek are displayed",
parent = "npcStub",
position = 13
parent = "galvekStub",
position = 26
)
default boolean isGalvekEnabled()
{
return true;
}
@ConfigItem(
keyName = "galveknotify",
name = "Galvek Notify",
description = "Configures whether or not AoE Projectile Warnings for Galvek should trigger a notification",
parent = "galvekStub",
position = 27,
hide = "aoeNotifyAll"
)
default boolean isGalvekNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "gargbossStub",
name = "Gargoyle Boss",
description = "",
position = 28,
parent = "npcStub"
)
default Stub gargbossStub()
{
return new Stub();
}
@ConfigItem(
keyName = "gargboss",
name = "Gargoyle Boss",
description = "Configs whether or not AoE Projectile Warnings for Dawn/Dusk are displayed",
parent = "npcStub",
position = 14
parent = "gargbossStub",
position = 29
)
default boolean isGargBossEnabled()
{
return true;
}
@ConfigItem(
keyName = "gargbossnotify",
name = "Gargoyle Boss Notify",
description = "Configures whether or not AoE Projectile Warnings for Gargoyle Bosses should trigger a notification",
parent = "gargbossStub",
position = 30,
hide = "aoeNotifyAll"
)
default boolean isGargBossNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "vetionStub",
name = "Vet'ion",
description = "",
position = 31,
parent = "npcStub"
)
default Stub vetionStub()
{
return new Stub();
}
@ConfigItem(
keyName = "vetion",
name = "Vet'ion",
description = "Configures whether or not AoE Projectile Warnings for Vet'ion are displayed",
parent = "npcStub",
position = 15
parent = "vetionStub",
position = 32
)
default boolean isVetionEnabled()
{
return true;
}
@ConfigItem(
keyName = "vetionnotify",
name = "Vet'ion Notify",
description = "Configures whether or not AoE Projectile Warnings for Vet'ion should trigger a notification",
parent = "vetionStub",
position = 33,
hide = "aoeNotifyAll"
)
default boolean isVetionNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "chaosfanaticStub",
name = "Chaos Fanatic",
description = "",
position = 34,
parent = "npcStub"
)
default Stub chaosfanaticStub()
{
return new Stub();
}
@ConfigItem(
keyName = "chaosfanatic",
name = "Chaos Fanatic",
description = "Configures whether or not AoE Projectile Warnings for Chaos Fanatic are displayed",
parent = "npcStub",
position = 16
parent = "chaosfanaticStub",
position = 35
)
default boolean isChaosFanaticEnabled()
{
return true;
}
@ConfigItem(
keyName = "chaosfanaticnotify",
name = "Chaos Fanatic Notify",
description = "Configures whether or not AoE Projectile Warnings for Chaos Fanatic should trigger a notification",
parent = "chaosfanaticStub",
position = 36,
hide = "aoeNotifyAll"
)
default boolean isChaosFanaticNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "olmStub",
name = "Olm",
description = "",
position = 37,
parent = "npcStub"
)
default Stub olmStub()
{
return new Stub();
}
@ConfigItem(
keyName = "olm",
name = "Olm",
description = "Configures whether or not AoE Projectile Warnings for The Great Olm are displayed",
parent = "npcStub",
position = 17
parent = "olmStub",
position = 38
)
default boolean isOlmEnabled()
{
return true;
}
@ConfigItem(
keyName = "olmnotify",
name = "Olm Notify",
description = "Configures whether or not AoE Projectile Warnings for Olm should trigger a notification",
parent = "olmStub",
position = 39,
hide = "aoeNotifyAll"
)
default boolean isOlmNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "olmBombStub",
name = "Bombs",
description = "",
position = 40,
parent = "olmStub"
)
default Stub olmBombsStub()
{
return new Stub();
}
@ConfigItem(
keyName = "bombDisplay",
name = "Olm Bombs",
description = "Display a timer and colour-coded AoE for Olm's crystal-phase bombs.",
parent = "npcStub",
position = 18
parent = "olmBombStub",
position = 41
)
default boolean bombDisplay()
{
@@ -250,59 +548,184 @@ public interface AoeWarningConfig extends Config
}
@ConfigItem(
keyName = "corp",
name = "Corporeal Beast",
description = "Configures whether or not AoE Projectile Warnings for the Corporeal Beast are displayed",
parent = "npcStub",
position = 19
keyName = "bombDisplaynotify",
name = "Olm Bombs Notify",
description = "Configures whether or not AoE Projectile Warnings for Olm Bombs should trigger a notification",
parent = "olmBombStub",
position = 42,
hide = "aoeNotifyAll"
)
default boolean isCorpEnabled()
default boolean bombDisplayNotifyEnabled()
{
return true;
return false;
}
@ConfigItem(
keyName = "wintertodt",
name = "Wintertodt Snow Fall",
description = "Configures whether or not AOE Projectile Warnings for the Wintertodt snow fall are displayed",
parent = "npcStub",
position = 20
keyName = "olmlightningStub",
name = "Lightning Trails",
description = "",
position = 43,
parent = "olmStub"
)
default boolean isWintertodtEnabled()
default Stub olmlightningStub()
{
return true;
}
@ConfigItem(
keyName = "isXarpusEnabled",
name = "Xarpus",
description = "Configures whether or not AOE Projectile Warnings for Xarpus are displayed",
parent = "npcStub",
position = 21
)
default boolean isXarpusEnabled()
{
return true;
return new Stub();
}
@ConfigItem(
keyName = "lightning",
name = "Olm Lightning Trails",
description = "Show Lightning Trails",
parent = "npcStub",
position = 22
parent = "olmlightningStub",
position = 44
)
default boolean LightningTrail()
{
return true;
}
@ConfigItem(
keyName = "lightningnotify",
name = "Olm Lightning Trails Notify",
description = "Configures whether or not AoE Projectile Warnings for Olm Lightning Trails should trigger a notification",
parent = "olmlightningStub",
position = 45,
hide = "aoeNotifyAll"
)
default boolean LightningTrailNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "corpStub",
name = "Corporeal Beast",
description = "",
position = 46,
parent = "npcStub"
)
default Stub corpStub()
{
return new Stub();
}
@ConfigItem(
keyName = "corp",
name = "Corporeal Beast",
description = "Configures whether or not AoE Projectile Warnings for the Corporeal Beast are displayed",
parent = "corpStub",
position = 47
)
default boolean isCorpEnabled()
{
return true;
}
@ConfigItem(
keyName = "corpnotify",
name = "Corporeal Beast Notify",
description = "Configures whether or not AoE Projectile Warnings for Corporeal Beast should trigger a notification",
parent = "corpStub",
position = 48,
hide = "aoeNotifyAll"
)
default boolean isCorpNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "wintertodtStub",
name = "Wintertodt",
description = "",
position = 49,
parent = "npcStub"
)
default Stub wintertodtStub()
{
return new Stub();
}
@ConfigItem(
keyName = "wintertodt",
name = "Wintertodt Snow Fall",
description = "Configures whether or not AOE Projectile Warnings for the Wintertodt snow fall are displayed",
parent = "wintertodtStub",
position = 50
)
default boolean isWintertodtEnabled()
{
return true;
}
@ConfigItem(
keyName = "wintertodtnotify",
name = "Wintertodt Snow Fall Notify",
description = "Configures whether or not AoE Projectile Warnings for Wintertodt Snow Fall Notify should trigger a notification",
parent = "wintertodtStub",
position = 51,
hide = "aoeNotifyAll"
)
default boolean isWintertodtNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "xarpusStub",
name = "Xarpus",
description = "",
position = 52,
parent = "npcStub"
)
default Stub xarpusStub()
{
return new Stub();
}
@ConfigItem(
keyName = "isXarpusEnabled",
name = "Xarpus",
description = "Configures whether or not AOE Projectile Warnings for Xarpus are displayed",
parent = "xarpusStub",
position = 53
)
default boolean isXarpusEnabled()
{
return true;
}
@ConfigItem(
keyName = "isXarpusEnablednotify",
name = "Xarpus Notify",
description = "Configures whether or not AoE Projectile Warnings for Xarpus should trigger a notification",
parent = "xarpusStub",
position = 54,
hide = "aoeNotifyAll"
)
default boolean isXarpusNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "addyDragsStub",
name = "Addy Drags",
description = "",
position = 55,
parent = "npcStub"
)
default Stub addyDragsStub()
{
return new Stub();
}
@ConfigItem(
keyName = "addyDrags",
name = "Addy Drags",
description = "Show Bad Areas",
parent = "npcStub",
position = 23
parent = "addyDragsStub",
position = 56
)
default boolean addyDrags()
{
@@ -310,25 +733,89 @@ public interface AoeWarningConfig extends Config
}
@ConfigItem(
keyName = "drake", name = "Drakes Breath",
keyName = "addyDragsnotify",
name = "Addy Drags Notify",
description = "Configures whether or not AoE Projectile Warnings for Addy Dragons should trigger a notification",
parent = "addyDragsStub",
position = 57,
hide = "aoeNotifyAll"
)
default boolean addyDragsNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "drakeStub",
name = "Drakes",
description = "",
position = 58,
parent = "npcStub"
)
default Stub drakeStub()
{
return new Stub();
}
@ConfigItem(
keyName = "drake",
name = "Drakes Breath",
description = "Configures if Drakes Breath tile markers are displayed",
parent = "npcStub",
position = 24
parent = "drakeStub",
position = 59
)
default boolean isDrakeEnabled()
{
return true;
}
@ConfigItem(
keyName = "drakenotify",
name = "Drakes Breath Notify",
description = "Configures whether or not AoE Projectile Warnings for Drakes Breath should trigger a notification",
parent = "drakeStub",
position = 60,
hide = "aoeNotifyAll"
)
default boolean isDrakeNotifyEnabled()
{
return false;
}
@ConfigItem(
keyName = "cerberusStub",
name = "Cerberus",
description = "",
position = 61,
parent = "npcStub"
)
default Stub cerberusStub()
{
return new Stub();
}
@ConfigItem(
keyName = "cerbFire",
name = "Cerberus Fire",
description = "Configures if Cerberus fire tile markers are displayed",
parent = "npcStub",
position = 25
parent = "cerberusStub",
position = 62
)
default boolean isCerbFireEnabled()
{
return true;
}
@ConfigItem(
keyName = "cerbFirenotify",
name = "Cerberus Fire Notify",
description = "Configures whether or not AoE Projectile Warnings for Cerberus his fire should trigger a notification",
parent = "cerberusStub",
position = 63,
hide = "aoeNotifyAll"
)
default boolean isCerbFireNotifyEnabled()
{
return false;
}
}

View File

@@ -74,10 +74,12 @@ public class AoeWarningOverlay extends Overlay
{
drawTile(graphics, point, new Color(0, 150, 200), 2, 150, 50);
}
for (WorldPoint point : plugin.getAcidTrail())
{
drawTile(graphics, point, new Color(69, 241, 44), 2, 150, 50);
}
for (WorldPoint point : plugin.getCrystalSpike())
{
drawTile(graphics, point, new Color(255, 0, 84), 2, 150, 50);

View File

@@ -52,6 +52,7 @@ import net.runelite.api.events.GameObjectSpawned;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ProjectileMoved;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
@@ -78,6 +79,9 @@ public class AoeWarningPlugin extends Plugin
@Inject
public AoeWarningConfig config;
@Inject
private Notifier notifier;
@Inject
private OverlayManager overlayManager;
@@ -138,11 +142,16 @@ public class AoeWarningPlugin extends Plugin
int projectileId = projectile.getId();
int projectileLifetime = config.delay() + (projectile.getRemainingCycles() * 20);
AoeProjectileInfo aoeProjectileInfo = AoeProjectileInfo.getById(projectileId);
if (aoeProjectileInfo != null && isConfigEnabledForProjectileId(projectileId))
if (aoeProjectileInfo != null && isConfigEnabledForProjectileId(projectileId, false))
{
LocalPoint targetPoint = event.getPosition();
AoeProjectile aoeProjectile = new AoeProjectile(Instant.now(), targetPoint, aoeProjectileInfo, projectileLifetime);
projectiles.put(projectile, aoeProjectile);
if (config.aoeNotifyAll() || isConfigEnabledForProjectileId(projectileId, true))
{
notifier.notify("AoE attack detected!");
}
}
}
@@ -156,6 +165,11 @@ public class AoeWarningPlugin extends Plugin
{
case ObjectID.CRYSTAL_BOMB:
bombs.put(bombLocation, new CrystalBomb(gameObject, client.getTickCount()));
if (config.aoeNotifyAll() || config.bombDisplayNotifyEnabled())
{
notifier.notify("Bomb!");
}
break;
case ObjectID.ACID_POOL:
AcidTrail.add(bombLocation);
@@ -208,6 +222,11 @@ public class AoeWarningPlugin extends Plugin
if (o.getId() == 1356)
{
LightningTrail.add(WorldPoint.fromLocal(client, o.getLocation()));
if (config.aoeNotifyAll() || config.LightningTrailNotifyEnabled())
{
notifier.notify("Lightning!");
}
}
}
}
@@ -250,7 +269,7 @@ public class AoeWarningPlugin extends Plugin
}
}
private boolean isConfigEnabledForProjectileId(int projectileId)
private boolean isConfigEnabledForProjectileId(int projectileId, boolean notify)
{
AoeProjectileInfo projectileInfo = AoeProjectileInfo.getById(projectileId);
if (projectileInfo == null)
@@ -258,57 +277,61 @@ public class AoeWarningPlugin extends Plugin
return false;
}
if (notify && config.aoeNotifyAll())
{
return true;
}
switch (projectileInfo)
{
case LIZARDMAN_SHAMAN_AOE:
return config.isShamansEnabled();
return notify ? config.isShamansNotifyEnabled() : config.isShamansEnabled();
case CRAZY_ARCHAEOLOGIST_AOE:
return config.isArchaeologistEnabled();
return notify ? config.isArchaeologistNotifyEnabled() : config.isArchaeologistEnabled();
case ICE_DEMON_RANGED_AOE:
case ICE_DEMON_ICE_BARRAGE_AOE:
return config.isIceDemonEnabled();
return notify ? config.isIceDemonNotifyEnabled() : config.isIceDemonEnabled();
case VASA_AWAKEN_AOE:
case VASA_RANGED_AOE:
return config.isVasaEnabled();
return notify ? config.isVasaNotifyEnabled() : config.isVasaEnabled();
case TEKTON_METEOR_AOE:
return config.isTektonEnabled();
return notify ? config.isTektonNotifyEnabled() : config.isTektonEnabled();
case VORKATH_BOMB:
case VORKATH_POISON_POOL:
case VORKATH_SPAWN:
case VORKATH_TICK_FIRE:
return config.isVorkathEnabled();
return notify ? config.isVorkathNotifyEnabled() : config.isVorkathEnabled();
case VETION_LIGHTNING:
return config.isVetionEnabled();
return notify ? config.isVetionNotifyEnabled() : config.isVetionEnabled();
case CHAOS_FANATIC:
return config.isChaosFanaticEnabled();
return notify ? config.isChaosFanaticNotifyEnabled() : config.isChaosFanaticEnabled();
case GALVEK_BOMB:
case GALVEK_MINE:
return config.isGalvekEnabled();
return notify ? config.isGalvekNotifyEnabled() : config.isGalvekEnabled();
case DAWN_FREEZE:
case DUSK_CEILING:
return config.isGargBossEnabled();
return notify ? config.isGargBossNotifyEnabled() : config.isGargBossEnabled();
case OLM_FALLING_CRYSTAL:
case OLM_BURNING:
case OLM_FALLING_CRYSTAL_TRAIL:
case OLM_ACID_TRAIL:
case OLM_FIRE_LINE:
return config.isOlmEnabled();
return notify ? config.isOlmNotifyEnabled() : config.isOlmEnabled();
case CORPOREAL_BEAST:
case CORPOREAL_BEAST_DARK_CORE:
return config.isCorpEnabled();
return notify ? config.isCorpNotifyEnabled() : config.isCorpEnabled();
case WINTERTODT_SNOW_FALL:
return config.isWintertodtEnabled();
return notify ? config.isWintertodtNotifyEnabled() : config.isWintertodtEnabled();
case XARPUS_POISON_AOE:
return config.isXarpusEnabled();
return notify ? config.isXarpusNotifyEnabled() : config.isXarpusEnabled();
case ADDY_DRAG_POISON:
return config.addyDrags();
return notify ? config.addyDragsNotifyEnabled() : config.addyDrags();
case DRAKE_BREATH:
return config.isDrakeEnabled();
return notify ? config.isDrakeNotifyEnabled() : config.isDrakeEnabled();
case CERB_FIRE:
return config.isCerbFireEnabled();
return notify ? config.isCerbFireNotifyEnabled() : config.isCerbFireEnabled();
}
return false;
}
}