project(mixins): Misc
This commit is contained in:
@@ -24,6 +24,11 @@
|
||||
*/
|
||||
package net.runelite.mixins;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Polygon;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Set;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.Hitsplat;
|
||||
import net.runelite.api.NPC;
|
||||
@@ -37,14 +42,11 @@ import net.runelite.api.coords.WorldArea;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.ActorDeath;
|
||||
import net.runelite.api.events.AnimationChanged;
|
||||
import net.runelite.api.events.HitsplatApplied;
|
||||
import net.runelite.api.events.HealthBarUpdated;
|
||||
import net.runelite.api.events.GraphicChanged;
|
||||
import net.runelite.api.events.HealthBarUpdated;
|
||||
import net.runelite.api.events.HitsplatApplied;
|
||||
import net.runelite.api.events.InteractingChanged;
|
||||
import net.runelite.api.events.OverheadTextChanged;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Polygon;
|
||||
import java.awt.image.BufferedImage;
|
||||
import net.runelite.api.mixins.FieldHook;
|
||||
import net.runelite.api.mixins.Inject;
|
||||
import net.runelite.api.mixins.MethodHook;
|
||||
@@ -56,6 +58,7 @@ import net.runelite.rs.api.RSHealthBar;
|
||||
import net.runelite.rs.api.RSHealthBarDefinition;
|
||||
import net.runelite.rs.api.RSHealthBarUpdate;
|
||||
import net.runelite.rs.api.RSIterableNodeDeque;
|
||||
import net.runelite.rs.api.RSNPC;
|
||||
import net.runelite.rs.api.RSNode;
|
||||
|
||||
@Mixin(RSActor.class)
|
||||
@@ -64,6 +67,9 @@ public abstract class RSActorMixin implements RSActor
|
||||
@Shadow("client")
|
||||
private static RSClient client;
|
||||
|
||||
@Inject
|
||||
private final Set<Integer> combatInfoFilter = ImmutableSet.of(0, 2, 16, 17, 18, 19, 20, 21, 22);
|
||||
|
||||
@Inject
|
||||
private boolean dead;
|
||||
|
||||
@@ -230,7 +236,7 @@ public abstract class RSActorMixin implements RSActor
|
||||
int size = 1;
|
||||
if (this instanceof NPC)
|
||||
{
|
||||
NPCComposition composition = ((NPC)this).getComposition();
|
||||
NPCComposition composition = ((NPC) this).getComposition();
|
||||
if (composition != null && composition.getConfigs() != null)
|
||||
{
|
||||
composition = composition.transform();
|
||||
@@ -262,16 +268,35 @@ public abstract class RSActorMixin implements RSActor
|
||||
@MethodHook("addHealthBar")
|
||||
public void setCombatInfo(int combatInfoId, int gameCycle, int var3, int var4, int healthRatio, int health)
|
||||
{
|
||||
if (healthRatio == 0)
|
||||
{
|
||||
final ActorDeath event = new ActorDeath(this);
|
||||
client.getCallbacks().post(event);
|
||||
|
||||
this.setDead(true);
|
||||
}
|
||||
|
||||
final HealthBarUpdated event = new HealthBarUpdated(this, healthRatio);
|
||||
client.getCallbacks().post(event);
|
||||
|
||||
if (healthRatio == 0)
|
||||
{
|
||||
if (!isDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!combatInfoFilter.contains(combatInfoId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setDead(true);
|
||||
|
||||
final ActorDeath actorDeath = new ActorDeath(this);
|
||||
client.getCallbacks().post(actorDeath);
|
||||
}
|
||||
else if (healthRatio > 0)
|
||||
{
|
||||
if (this instanceof RSNPC && ((RSNPC) this).getId() == 319 && isDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setDead(false);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -131,6 +131,7 @@ public abstract class RSNPCMixin implements RSNPC
|
||||
return;
|
||||
}
|
||||
|
||||
setDead(false);
|
||||
client.getCallbacks().postDeferred(new NpcChanged(this, oldComposition));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user