PDA

View Full Version : Resurrection Reworked (with Confirmation box)


Derision
08-29-2008, 02:34 PM
This patch reworks the Resurrection system to use the three related Opcodes, so you
get the confirmation box detailing how much % XP you will get back and allowing you
to accept or decline.

The patch is against the code from SVN, which presented a few issues. First of all I
ran the diff in Linux and it has Carriage Returns at the end of each line for some reason,
so I have included two versions of the patch. The one that diff spat out:

www.rama.demon.co.uk/rez.patch

And one which I removed the CRs from the ends of each line.

www.rama.demon.co.uk/rez-nocr.patch

If you are not running the SVN source as it was a couple of hours ago, the patch likely
won't apply, so I also included a full source tree:

www.rama.demon.co.uk/SVN-REZ.tar.gz

You will need to recompile world as the size of the Rez struct has changed and it is referenced there

The three opcodes for your patch_Titanium.conf are:


OP_RezzComplete=0x4b05
OP_RezzRequest=0x1035
OP_RezzAnswer=0x6219



I've tested various rez spells (and Necro convergence), multiple corpses in a zone, etc, and also tested on both Titanium and 6.2. Let me know if something doesn't work right (confirmation that it works for you would also be nice :) )

Angelox
08-29-2008, 04:00 PM
Thanks for the full source tree post, that's always the easiest way for me.

Derision
08-29-2008, 04:14 PM
Thanks for the full source tree post, that's always the easiest way for me.

No problem Angelox. When the Nightly builds are working and everyone has the latest source, the easiest way of applying my patches under Linux is to cd to the your Source tree and do patch -p0 <path to patch file>. Let me know if you get it to work. I always worry when I release large patches in case I missed something when packaging it up :)

KLS
08-29-2008, 07:22 PM
Official SVN is up finally, I'll get this stuff all worked on getting added in the next day or so.

Andrew80k
08-29-2008, 07:58 PM
Official SVN is up finally, I'll get this stuff all worked on getting added in the next day or so.

Woo hoo! Thanks, KLS!

cavedude
08-29-2008, 08:25 PM
I am not sure if this code introduced this bug or it existed before (I'm going to test now) But, it seems that the caster of the rezz can loot the corpse of the player. No other players, grouped or not can loot, however. Basically:

1. Player dies, gets sent to bind point in another zone.
2. Cleric rezzes, player gets confirmation box, and the actual spell works as intended.
3. After the player is summoned, he loots his corpse, but leaves items on it.
4. The cleric can also loot that corpse, which they should not be able to. No other players can loot the corpse, which is correct.

That was the only procedure I tested before getting called away. I am not sure if the cleric can always loot the corpse, or only after the corpse has been looted. Either way, it's a pretty major problem. What if the player gets attacked again while looting, and the cleric is an asshole, type of deal.

Derision
08-29-2008, 08:56 PM
I just compiled and installed an unpatched copy of 1127. Without Rezzing a player corpse, if I have #gm off, I can't loot a player corpse, with #gm on, I can loot it, so I don't think this is my code causing this.

cavedude
08-29-2008, 09:03 PM
Shit, I had my GM flag up! Sorry about that ;)

Derision
08-29-2008, 09:07 PM
Shit, I had my GM flag up! Sorry about that ;)

NP Cavedude :)

Angelox
08-31-2008, 01:51 PM
This is working fine, as anything else you fix does :)
Just tested it out in a few different ways
thanks!

trevius
09-01-2008, 05:21 AM
Ya, this code is awesome! I even tried rezzing a player while they were zoning and they got the rez box after they zoned. As soon as they clicked accept, they corpse was no longer rezzable. I also tried not accepting the rez and it kept the corpse rezzable as it should. I don't think it gets any better than that :)

So_1337
09-03-2008, 12:11 PM
The rez box works absolutely perfectly. You did a fantastic job, and I feel that this is one of the biggest things that has been missing from EQEmu for the longest time. This and fizzles actually taking mana, and both have been fixed recently!

I do have one humble request, though; would this code be easily applied to other spells requiring confirmation boxes? The two I can think of off the top of my head are Necromancer Sacrifice and Wizard Translocate spells. Would be nice to see all of these sewn up while the code's being looked at.

Great work as always, you continue to produce nothing but quality. Can't wait for your quest::popup code to go in, will be nice to greet new players on my server with those instead of trying to cram all the important stuff into the MOTD =)

Derision
09-03-2008, 12:30 PM
I do have one humble request, though; would this code be easily applied to other spells requiring confirmation boxes? The two I can think of off the top of my head are Necromancer Sacrifice and Wizard Translocate spells. Would be nice to see all of these sewn up while the code's being looked at.


This will be a bit harder, because as far as I know, the opcodes/structs for these two examples are unknown for both 6.2 and Titanium, whereas for Rez, I had the 6.2 opcodes already, and an almost correct struct to start from.

It's not totally impossible though. Given the text of the message that appears in the confirmation box if this can be related to a string in eqstr_us.txt, then I could use IDA to find the routines in eqgame.exe that produces the popup and reverse out the opcode that produces it from that. The struct will probably be the hardest part.

I'll add it to my list of things to look at.

Derision
09-03-2008, 02:03 PM
Damn, I hate you So_1337 :) I was planning on doing some work on tasks, but I couldn't get this translocate etc, stuff out of my head!

http://www.rama.demon.co.uk/translocate.jpg

Turns out it wasn't so hard to find they key elements. Getting the opcode was easy, and deciphering enough of the disassembly to guess at they key elements of the struct (SpellID and Caster name) wasn't so bad. So I can send the confirmation box for Translocate, and get the response back from the client (it uses the same opcode coming back). Although not strictly necessary to implement the confirmation box, I'll see if I can decipher the return packet from the client and see if there is an 'OP_TranslocateComplete' opcode that makes the client zone you like OP_RezzComplete.

Does anyone know what text the client displays on live when you accept a Translocate ?

So_1337
09-03-2008, 02:10 PM
Damn you are good. Sorry to distract you, but your turn-around time is nil, so it doesn't seem you'll be on a detour for long!

I don't know that there even is any text when you accept one, I believe you just begin zoning. None of that "You regain some experience from resurrection." stuff. Other people see "Soandso fades away" when it's cast, but nothing special when the person accepts. And that's all handled in the spell effect already.