Jump to content

Transformation Sniffing/Interpreting


greatatlas
 Share

Recommended Posts

Hello, everyone!

I apparently lost my most recent copy of my work on the Transformation skill and handlers with fleta.cs back when my hard drive died. I could use some help!

For those who choose to assist, I would need you to simply (using Morrighan/Pale) start a packet sniff, find a quiet place and transform. If you're a DK, wait until the burn sets in, and then transform out. If you're any other group, wait a few seconds (make sure your Passive Defenses come online) and then transform out. End the packet sniff and then send me the text file output!

On another note, I wanted to run the ideas I have for implementation to you guys to see what you think.

Transformation requires 2 new Ops, 69A2 (currently dubbed ToggleSkill) and an oddball Op which doesn't really have a clear function, 7534.

  • ToggleSkill(??? id, short sid, byte v) enables or disables a skill (sid) for creature (id) based on (v). (v=1 to enable, =0 to disable)
    • Order may be irrelevant, but it seems that combat skills are enabled first, followed by passive defenses, followed by passive stats. (ie Control of Darkness, DNS/DHS/DMD, HoC/BoC/MoC)
    • Passive skills show no indicator of being enabled or disabled. Active skills (ie Control of Darkness) will have the "Use" button greyed out in the skill UI.
  • Op7534(byte a, byte b, byte c, byte d) does something, but I'm not sure what yet.
    • Called upon transforming.
    • Called upon exiting transformation while under ConditionsA.CancelDarkKnight.
    • Could be irrelevant to the transformation sequence due to variable stack placement and timing when tested.

Other issues that need to be tackled:

  • Determining when the player is eligible for transformation
    • If not: send Notice to player's client, send SkillStartSilentCancel to player's client.
  • Exiting the transformation calls StatUpdate 8 times, 4 identical private and 4 identical public calls.
  • Player's location is rounded to the nearest int before skills are enabled/transformation animation occurs (this is why on the actual server the player does look to teleport a small distance before the animation hits)
  • Accurate statistic growths and computation of transformation duration
  • Scripting of active transformation skills
  • Storage of the user's old statistics and title to be reverted to with or without the help of the user
  • Locating the animation file for each transformation
Edited by greatatlas
Link to comment
Share on other sites

Keep in mind that you don't have to do everything exactly like devCAT does. Just because there's a random packet somewhere, or 8 stat updates, doesn't mean you have to send all that as well if it's not actually necessary.

1 hour ago, greatatlas said:

Storage of the user's old statistics

You want to use stat mods for that, don't ever modify the stats directly^^

Link to comment
Share on other sites

So if the result is the same then we're good? Fine by me :)

About stat mods: it seems like there can only be one source of stat mods at a time. Should I be clearing them before I start adding more in case something like the base stat boost from your skill doesn't get applied due to a prior buff? (like a pet buff etc)

On that note, can I just clear the list of stat mods upon exiting the transformation? Where can I be keeping the timer for transformation stored, or can I declare the duration of the skill when I start it up? I could run it as a delayed debuff, but that only works for Dark Knight.

Is there a way I can keep track of the last transformation time, or should I just set the cooldown to 24 hours and somehow have the server dispatch a cooldown reset on all trans skills at 6am?

Edited by greatatlas
another q
Link to comment
Share on other sites

Not sure what you mean by clearing existing stat mods. You shouldn't just clear random stat mods from other sources, they could be anything. There is not one stat mod per source, but any number of stat mods for sources+idents, which you can conveniently remove all at once.

I don't remember a lot about these skill's implementations, so I can't tell you much about how to do what at the moment, since I don't know how the skill behaves. Whether the client cancels it on its own for example.

5 hours ago, greatatlas said:

Is there a way I can keep track of the last transformation time

Set a temp variable on Creature.Temp or Creature.Vars, or directly in Creature if it's important for packets and stuff.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...