What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Tormiasz

Community Developer
Joined
Jun 16, 2014
Messages
701
Reaction score
5
Hello.
Is there any option in the API to detect talismaned mob? They are usually more dangerous than other mobs and should get higher weight (especially the fucker that creates spikes on the ground). I didn't found anything in Object Explorer
 
Best way to test things like this is go to normal or a place where you won't die and give a mob the talisman.

Here's a snippet from one of them:
Code:
ExplicitAffixes:
		Level: 1, Category: Daemon, InternalName: TalismanMonsterUnsetAmulet, DisplayName: Black Maw Talisman, IsHidden: False, IsPrefix: False, IsSuffix: False, Stats: Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Min: 0, Max: 0, Stat: 0, Values: 
		Level: 1, Category: TalismanBonus, InternalName: MonsterHasTalismanNormal, DisplayName: , IsHidden: False, IsPrefix: False, IsSuffix: False, Stats: Min: 30, Max: 30, Stat: BaseActorScalePosPct, Min: 450, Max: 450, Stat: MonsterLifePosPctFinalFromRarity, Min: 20, Max: 20, Stat: AttackAndCastSpeedPosPct, Min: 10, Max: 10, Stat: BaseMovementVelocityPosPct, Values: 30, 450, 20, 10
	_94: First: 0x0, Last: 0x0, End: 0x0, Allocator: 0x0

Your code in the CR could be something like:
Code:
// Mark anything with a talisman bonus affix super important to kill first.
if (m.ExplicitAffixes.Any(a => a.Category.Equals("TalismanBonus")))
{
	weight += 50;
}

Or, if you want to handle each based on talisman name instead,
Code:
// Mark anything with a talisman bonus affix super important to kill first.
if (m.ExplicitAffixes.Any(a => a.DisplayName.Equals("Black Maw Talisman")))
{
	weight += 10; // Hardly care about this type
}
else if (m.ExplicitAffixes.Any(a => a.DisplayName.Equals("Bonespire Talisman")))
{
	weight += 50; // These are super important to kill asap.
}
// Handle the reset, or just check to see if the DisplayName contains "Talisman" to catch all others

To see if you have the Bone Roil effect, you'd check under your player entry and the auras section in the LifeComponent:
Code:
		BaseAddress: -
		SubInfo: -
		Name: Bone Roil
		InternalName: talisman_degen
		Description: You are taking Physical Damage over time from the Bone Roil
		CasterId: -
		OwnerId: 0
		BuffType: 30
		TimeLeft: 00:00:02.8500000
		MaxTimeLeft: 00:00:03
		Charges: 0
		IsInvisible: False
		IsRemovable: False

Using the more updated buff system, the code would simply be:
Code:
if (LokiPoe.Me.HasBuff(BuffDefinitionsEnum.talisman_degen))
{
	// You're under the effect
}

If you want to code around trying to avoid the Bone Spire spikes themselves, it's a bit more work, but everything is already in place. Basically, you need to loop though the deployed objects for the monster, and check for that object type, which I logged as roughly "Metadata/Monsters/Daemon/TalismanT1SummonBonespireDaemon", so see if the Type contains "BonespireDaemon" to catch any variations.

I'll add a convenience property to the Actor class to simply the next bit of code, but all you'd do is:
Code:
foreach (var deployed in m.Components.ActorComponent.DeployedObjects.Where(d => d.Type.Contains("SummonBonespireDaemon")))
{
// You have access to the Position, so you can make assumptions about the size based on what you know in game visually, so move away to an anchor point or somewhere else to avoid getting destroyed by them
}

Hope that helps!
 
Thank you! IDK how did I miss that.

Now it can be added to OldRoutine :D
 
Back
Top