geo indi spell info

Post Reply
dlsmd
Posts: 5
Joined: Mon Aug 06, 2012 1:19 am

geo indi spell info

Post by dlsmd » Mon Sep 15, 2014 12:44 am

GEO indi info has been found at lest for player
here is the info taken from windower files
the location is {ctype='unsigned char', label='Indi Buff', fn=e+{'indi'}}, -- 58

Code: Select all

enums.indi = {
    [0x5F] = 'Enemy Dark',
    [0x5E] = 'Enemy Light',
    [0x5D] = 'Enemy Water',
    [0x5C] = 'Enemy Lightning',
    [0x5B] = 'Enemy Earth',
    [0x5A] = 'Enemy Wind',
    [0x59] = 'Enemy Ice',
    [0x58] = 'Enemy Fire',
    [0x57] = 'Party Dark',
    [0x56] = 'Party Light',
    [0x55] = 'Party Water',
    [0x54] = 'Party Lightning',
    [0x53] = 'Party Earth',
    [0x52] = 'Party Wind',
    [0x51] = 'Party Ice',
    [0x50] = 'Party Fire',
    [0x00] = 'None',}

in binary the first 3 bits are the element the forth bit is target(buff/debuff) 0=ally 1=enemy the last 4 are unknown(beleaved to be size of the clourser)

-- Player update
-- Buff IDs go can over 0xFF, but in the packet each buff only takes up one byte.
-- To address that there's a 8 byte bitmask starting at 0x4C where each 2 bits
-- represent how much to add to the value in the respective byte.
fields.incoming[0x037] = L{
    {ctype='unsigned char[32]', label='Buff',               fn=buff},           -- 04
    {ctype='unsigned int',      label='Player',             fn=id},             -- 24
    {ctype='unsigned short',    label='_unknown1'},                             -- 28   Called "Flags" on the old dev wiki
    {ctype='unsigned char',     label='HP %',               fn=percent},        -- 29
    {ctype='unsigned char',     label='_unknown2'},                             -- 2A   May somehow be tied to current animation (old dev wiki)
    {ctype='unsigned char',     label='_unknown3'},                             -- 2B
    {ctype='unsigned char',     label='_unknown4'},                             -- 2C
    {ctype='unsigned char',     label='_unknown5'},                             -- 2D
    {ctype='unsigned char',     label='_unknown6'},                             -- 2E
    {ctype='unsigned char',     label='Status',             fn=status},         -- 30
    {ctype='unsigned char',     label='LS Color Red'},                          -- 31
    {ctype='unsigned char',     label='LS Color Green'},                        -- 32
    {ctype='unsigned char',     label='LS Color Blue'},                         -- 33
    {ctype='char[8]',           label='_unknown7'},                             -- 34   Player's pet index * 8?
    {ctype='unsigned int',      label='_unknown8'},                             -- 3C
    {ctype='unsigned int',      label='Timestamp',          fn=time},           -- 40
    {ctype='char[8]',           label='_unknown9'},                             -- 44
    {ctype='char[8]',           label='Bit Mask'},                              -- 4C
    {ctype='char[4]',           label='_unknown10'},                            -- 54
    {ctype='unsigned char',     label='Indi Buff',          fn=e+{'indi'}},     -- 58
    {ctype='char[3]',           label='_unknown11'},                            -- 59

dlsmd
Posts: 5
Joined: Mon Aug 06, 2012 1:19 am

Re: geo indi spell info

Post by dlsmd » Mon Sep 15, 2014 12:45 am

we have yet to find the clourser info for pet or npc

User avatar
kjLotus
Special Guest
Posts: 1813
Joined: Sun Jul 22, 2012 2:16 pm

Re: geo indi spell info

Post by kjLotus » Mon Sep 15, 2014 1:17 am

the pet's animation is entirely a modelid, you can find it by trying high end @costume (2700+)

bluesolarflare
Posts: 129
Joined: Wed May 27, 2015 4:23 pm

Re: geo indi spell info

Post by bluesolarflare » Wed Dec 05, 2018 8:15 pm

How would one go about implementing these buff ids in the core?

bluesolarflare
Posts: 129
Joined: Wed May 27, 2015 4:23 pm

Re: geo indi spell info

Post by bluesolarflare » Tue Dec 11, 2018 1:20 pm

Nvm I have it now...need to add the effect in charupdate packet based on status effect.
If anyone is interested in adding the indi GEO bubble to their character when the spell is cast, here is the code below. You will need to create a fake status effect called EFFECT_INDI_(name) like I have below and reference it in status_effects.sql, status_effects.h, and status.lua. Change the last digit at the end of the = sign to match what element as shown in the table in the original post. For this example I chose light for refresh

Add the following line to to char_update.cpp under the if statement for sneak attack towards the top

Code: Select all

    if (PChar->StatusEffectContainer->HasStatusEffect(EFFECT_INDI_REFRESH))
    {
        ref<uint8>(0x58) = 0x56;
    }
And to call via lua

Code: Select all

function onSpellCast(caster,target,spell)
    caster:addStatusEffectEx(EFFECT_INDI_REFRESH,EFFECT_REFRESH_II,5,0,30)
	return 0;	
end;
The simple code above will add the effect for 30 seconds at a potency of 5mp/tic

Post Reply