Files
d2go/pkg/memory/player_unit.go
elb 19376148b3 Added modes to player (#44)
* Added States for monsters and corpses

Now can properly identify if a corpse is interactable with a skill ( barbarian, necromancer)
Also getting states about monsters  : Exemple  Soul Killer with Conviction aura:   State  28 // conviction

Also can tell if monster has a state after you used a skill on it  Exemple:   State 56  Terror ( After using Barbarian skill Howl to fear )

Another Exemple  using Grief on Mephistos he now have  states :    2 poison
    52  Preventheal

will be very useful for further development.

* Added modes to player

Now accessible in koolo using : s.data.PlayerUnit.Mode

Those are Modes for player:
const Death: 0;
        const StandingOutsideTown: 1;
        const Walking: 2;
        const Running: 3;
        const GettingHit: 4;
        const StandingInTown: 5;
        const WalkingInTown: 6;
        const Attacking1: 7;
        const Attacking2: 8;
        const Blocking: 9;
        const CastingSkill: 10;
        const ThrowingItem: 11;
        const Kicking: 12;
        const UsingSkill1: 13;
        const UsingSkill2: 14;
        const UsingSkill3: 15;
        const UsingSkill4: 16;
        const Dead: 17;
        const SkillActionSequence: 18;
        const KnockedBack: 19;

* update Added alias(const) for player modes

can be used like this s.data.PlayerUnit.Mode == mode.StandingInTown
2024-10-03 07:29:40 +09:00

45 lines
886 B
Go

package memory
import (
"github.com/hectorgimenez/d2go/pkg/data"
"github.com/hectorgimenez/d2go/pkg/data/area"
"github.com/hectorgimenez/d2go/pkg/data/mode"
"github.com/hectorgimenez/d2go/pkg/data/stat"
"github.com/hectorgimenez/d2go/pkg/data/state"
)
type RawPlayerUnit struct {
data.UnitID
Address uintptr
Name string
IsMainPlayer bool
IsCorpse bool
Area area.ID
Position data.Position
IsHovered bool
States state.States
Stats stat.Stats
BaseStats stat.Stats
Mode mode.PlayerMode
}
type RawPlayerUnits []RawPlayerUnit
func (pu RawPlayerUnits) GetMainPlayer() RawPlayerUnit {
for _, p := range pu {
if p.IsMainPlayer {
return p
}
}
return RawPlayerUnit{}
}
func (pu RawPlayerUnits) GetCorpse() RawPlayerUnit {
for _, p := range pu {
if p.IsCorpse {
return p
}
}
return RawPlayerUnit{}
}