330 Commits

Author SHA1 Message Date
elb
b8765f634f Repair Broken rules ( white base items mostly) (#88)
* Repair Broken rules  ( white base items mostly)

* Removed double find stat check
2025-03-13 18:48:18 +02:00
Arto Simonyan
844439002c Panel Manager Improvements (#85)
* 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
2025-03-04 08:09:22 +09:00
joffreybesos
4a7e782343 panels (#84) 2025-03-01 22:00:50 +09:00
CarlPoppa1
d2da4b1919 Add BodyLoc1 and BodyLoc2 as an array in item Type struct (#77)
* 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>
2025-02-28 22:01:13 +09:00
elb
4204d68f23 Performance upgrade? (#83)
* Performance upgrade?

* update monster to be on 200ms since 250ms will skip to 300
2025-02-27 17:04:16 +02:00
joffreybesos
7d37526163 Added waypoint pattern scan (#80)
Co-authored-by: Arto Simonyan <artosimonyan@protonmail.com>
2025-02-23 21:01:16 +02:00
elb
fd7f7ba8a4 Pattern Scanner for missing FPS (#82) 2025-02-23 20:59:23 +02:00
elb
5455fd9772 Fix broken negative stats, update some stat description (#79)
* 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
2025-02-21 18:11:27 +02:00
elb
438f80b911 Added WidgetStates + ActiveWeaponSlot (#62) 2025-02-19 20:15:33 +09:00
elb
1aa957dd96 Linking Item.LevelReq to stat(92) stat.LevelRequire + nip parser, Upped item levelreq (#78)
* 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.
2025-02-17 19:28:27 +02:00
davidfvsilva
700af20844 fix: act 5 barbarians are good boys (#75) 2025-02-17 21:07:46 +09:00
Sorc
b3d88b84b9 Remove [level] example in pickit rules (#72)
Co-authored-by: Sorc <>
2025-02-17 21:07:03 +09:00
elb
120c2ba144 Prefix,Suffix,LevelReq Socketed items on bases, bodyloc, Merc equipment (#74)
* 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
2025-02-16 23:02:03 +02:00
Arto Simonyan
09dfe3c65d Add more item flags (#69)
* Add more item flags

- Add more item flags
- Modify some of the stat strings

* fix ethereal

* Rename flag
2025-02-09 01:08:58 +02:00
elb
415ac29ab1 Chat Open menu + additions to IsMenuOpen() (#71) 2025-01-19 18:32:31 +02:00
elb
8bce23b039 fix missing stats (#68)
Credits to gogigogi1  thanks!
2025-01-06 03:50:39 +02:00
Arto Simonyan
591fbf1605 Add Stat names (#67)
* Add Stat names

* Return actual stat name with value

* Remove one of the methods
2024-12-30 13:47:02 +02:00
elb
2924189fe8 Added Entrance/Stairs unittype5 table lvlwrap.txt (#64) 2024-12-23 20:06:15 +02:00
Arto Simonyan
8203394c9f Revert "Update missing itemstat offset (#65)" (#66)
This reverts commit 5eae82b847.
2024-12-23 19:51:50 +02:00
elb
5eae82b847 Update missing itemstat offset (#65) 2024-12-23 16:59:01 +02:00
elb
8a1f7e1a17 Extracting more data from object.txt for interactions (#63)
* 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.
2024-12-21 20:25:11 +02:00
elb
444f4b0e9b Added a few OpenMenus, also HasMerc() (#60)
* 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.
2024-12-20 17:50:33 +09:00
Héctor Giménez
bfd86a6535 Revert "Added more OpenMenus (#58)" (#59)
This reverts commit 7f2eb8b8f1.
2024-12-18 22:17:39 +09:00
elb
7f2eb8b8f1 Added more OpenMenus (#58) 2024-12-18 22:08:14 +09:00
Hector
04f45d3069 Regenerate code from txts 2024-12-16 16:27:30 +01:00
elb
de6942b464 Remove baal tentacles from grid
Prevent pathing issue in baal chamber
2024-12-17 00:24:04 +09:00
Carl Poppa
7ac45c0182 Fix levelreq 2024-12-17 00:23:50 +09:00
elb
77bf135bf8 New quest offset and structure
Credits to gogigogi1
2024-12-17 00:23:14 +09:00
elb
889fa020f2 Lastgamename/lastgamepassword (#56)
* Lastgamename/lastgamepassword

Credits to Gogigogi1

* Remove //outdated ckm

* Removing offset since we have direct address
2024-12-12 18:16:29 +02:00
elb
823a0a05b0 player.go Corpse offset (#53) 2024-12-08 00:39:19 +02:00
elb
89a1b3ca26 IsCorpse Offset (#52)
Update corpse offset
2024-12-07 23:52:22 +02:00
elb
aecd76dcb7 TZ online 2024-12-07 15:26:15 +09:00
elb
7a98fc5117 Class offset updated 2024-12-07 15:26:15 +09:00
elb
1cf22f10cd wpList, LoadingScreen, GetSelectedCharacterName
Credits to gogigogi1
2024-12-07 15:26:15 +09:00
Héctor Giménez
bd7e8656b8 update addresses 2024-12-07 03:14:59 +09:00
joffreybesos
2270b7c621 fixed following patch (#50) 2024-12-06 15:54:59 +09:00
elb
2eeee0cf1f Npc/Monsters Mode and Portals destination + optimization (#49)
* 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
2024-12-01 22:54:57 +09:00
Héctor Giménez
b2c710dc5c fix necro revive and proper locate items from cube 2024-11-07 21:56:02 +09:00
Héctor Giménez
c699e0c53a add decoy and necro revives as pet 2024-11-06 21:48:43 +09:00
elb
7523a5caed added modes to object (update) (#46)
* 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
2024-10-05 11:47:06 +09:00
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
Héctor Giménez
ab7163d111 calculate inventory matrix based on current inv items - fix 2024-10-02 23:13:17 +09:00
Héctor Giménez
df4ef2965a calculate inventory matrix based on current inv items 2024-09-29 22:20:43 +09:00
elb
9020cc396e Added States for monsters and corpses (#43) 2024-09-29 20:32:19 +09:00
Arto Simonyan
8239f1bbe4 Add Crafted Quality String (#42) 2024-09-14 17:10:07 +03:00
TDL
7b42e27aba Added extra item info (#41) 2024-09-10 23:04:47 +09:00
Héctor Giménez
9842199c15 add items FindByID 2024-09-03 20:39:32 +09:00
Héctor Giménez
792ff69790 remove collisiongrid, it doesnt belongs to this project 2024-09-03 20:39:16 +09:00
Arto Simonyan
7ec2f584f5 Refactor Checks (#39)
- Refactor IsInLobby
- Refactor IsInCharacterCreationScreen
- Refactor IsInCharacterSelectionScreen
2024-08-26 15:38:00 +03:00
Farmith
ddeb350bee new questptr (#38) 2024-08-23 21:16:21 +03:00