* Panel Manager Improvements
- Now maps instead of slices for easy traverse
- Function for easy and safe traverse of paths
- Removed constant updates of Panel Manager to reduce usage. It will now be called on demand.
- Updated some functions to use the new Panel Manager.
* Remove unused struct members
* Added IsDismissalModalPresent (error popup)
* Correct function return for char select screen and dismissal modal
* Add error checking to IsDismissableModalPresent
* Added BodyLocs to type struct
To hold array of BodyLoc1 and BodyLoc2 from itemtypes.txt
* Updated itemtype template to import BodyLoc1 and BodyLoc2 as an array
* New generated itemtypes.go with BodyLocs array
* Use LocationType instead of string for BodyLocs
* Added missing ItemTypes declaration
---------
Co-authored-by: CarlPoppa <hilikus99@protonmail.com>
* Fix broken negative stats, update some stat description
* ###
* #2
* curses is necro, frw on armor is velocity percent ( unused)
* Update rules to accept negative value
fix a bug with unique grand charm tz
[name] == grandcharm && [quality] == unique # ([fireresist] + [coldresist] + [lightresist]) >= -75
Single stat rules like [coldresist] >= -75 require the stat to exist
expressions like ([fireresist] + [coldresist] + [lightresist]) >= -75 treat missing stats as 0
Unidentified items with any stat requirements need identification first
* LevelReq + identifiedName added for all Crafted items
* Fix issue with rule.go
* Update stat throw damage and basename: GrandCharm -- Grand Charm
* Adjusting rule for ItemLevelReq = 0
* update rule again
* Linking Item.LevelReq to stat(92) stat.LevelRequire . Update nip parser
* LevelReq for upgraded items
LevelReq is now accurate for upgraded and double upgraded set/unique items
Fixed an issue with levelreq not working with socketed jewels on items.
* Prefix,Suffix, Socketed with base, bodyloc, Merc equipment
Will add better description later:
Item that has socketed items now display their linked runes/jewels/gems in accurate order
Rare prefix, rare suffix id
Magic prefix1,2,3 magic suffix1,2,3
Prefix1 also used to tell wich runeword it is
Spirit 20635, cta 20519 , infinity 20566 see : getlocalestring.txt
Mercenary equipment now displaying in inventory list . Also has custom location : mercenary instead of equipped
Bodyloc :
// Body locations
LocNone LocationType = "none"
LocHead LocationType = "head"
LocNeck LocationType = "neck"
LocTorso LocationType = "torso"
LocLeftArm LocationType = "left_arm"
LocRightArm LocationType = "right_arm"
LocLeftRing LocationType = "left_ring"
LocRightRing LocationType = "right_ring"
LocBelt LocationType = "belt"
LocFeet LocationType = "feet"
LocGloves LocationType = "gloves"
LocLeftArmSecondary LocationType = "left_arm_secondary"
LocRightArmSecondary LocationType = "right_arm_secondary"
Note that if you begin game on secondary slot it will be left_arm then primary will be left_arm_secondary (inversed): With pr 62 (activeweaponslot) we will be able to solve this potential issue.
* small optimization
* Socketed items to base from pointer
new helper functions.
AutoAffix offset.
* remove helpers fnc, flag isEquipped to HasBeenEquipped
* Runewords names mapped
* helper function not needed
* Optimization
* adjust pre-allocations
* readd removed itemloc comment
* Addex prefix/suffix to rules .nip
new structure:
[Type], [Quality],[Class], [Name], [Flag], [Color], [Prefix], [Suffix] # Stats
Exemple : [name] == ring && [quality] == rare && [suffix] == 174 #
Any magic ring with suffix 'of The Apprentice' ( 10 faster cast rate)
Will be useful for trophy items with fool/cruel [prefix] == 1416 [prefix] == 1273
* LevelReq + Affixes mapping rare/magic/base/runewords. Nip parser LevelReq
* Unique and set items mapping + LevelReq
* Extracting more data from object.txt for interactions
Description struct {
ID int
Name string
SizeX int
SizeY int
HasCollision bool
Left int
Top int
Width int
Height int
Xoffset int
Yoffset int
}
* levelreq readded
* formatting in one line.
* wpList, LoadingScreen, GetSelectedCharacterName
Credits to gogigogi1
* Class offset updated
* TZ online
* IsCorpse Offset
* Added a few OpenMenus, also HasMerc()
PortraitsShown,BeltRows,QuestLog,MercInventory,NewStats
then func HasMerc() return true if we have merc.
* 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
* added modes to object
0 = Object idle
1 = Object operating
2 = Object opened
3 = Object special 1 ?? to be determined what it does exactly
4 = Object special 2 ?? to be determined what it does exactly
5 = Object special 3 ?? to be determined what it does exactly
6 = Object special 4 ?? to be determined what it does exactly
7 = Object special 5 ?? to be determined what it does exactly
* update object mode strings
* Update object_mode.go
* Update object_mode.go
* update object modes again. accurate now
* Added IsSealBoss() for Chaos Run
* Npc/Monster Modes and Portals destination
also IsEscapingType() Monster cannot be attacked when airborne or hide in water (NpcMode 8)
* Npc/Monster Modes and Portals destination
also IsEscapingType() Monster cannot be attacked when airborne or hide in water (NpcMode 8)
* Optimized monsters.go and object.go
also catapults have been added to ignore list
* Tz Frigid Higland ingores added
* 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
* added modes to object
0 = Object idle
1 = Object operating
2 = Object opened
3 = Object special 1 ?? to be determined what it does exactly
4 = Object special 2 ?? to be determined what it does exactly
5 = Object special 3 ?? to be determined what it does exactly
6 = Object special 4 ?? to be determined what it does exactly
7 = Object special 5 ?? to be determined what it does exactly
* update object mode strings
* Update object_mode.go
* Update object_mode.go
* update object modes again. accurate now
* 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