project(mixins): Misc

This commit is contained in:
Owain van Brakel
2022-06-21 13:13:56 +02:00
parent 76109e3502
commit c6b74a216b
2 changed files with 45 additions and 19 deletions

View File

@@ -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);
}
}
/**

View File

@@ -131,6 +131,7 @@ public abstract class RSNPCMixin implements RSNPC
return;
}
setDead(false);
client.getCallbacks().postDeferred(new NpcChanged(this, oldComposition));
}
}