Changing MP restore speed for ID - Printable Version +- Little Fighter Empire - Forums (https://lf-empire.de/forum) +-- Forum: Little Fighter 2 Zone (https://lf-empire.de/forum/forumdisplay.php?fid=7) +--- Forum: [2.0] Exe Editing (https://lf-empire.de/forum/forumdisplay.php?fid=43) +--- Thread: Changing MP restore speed for ID (/showthread.php?tid=9316) |
Changing MP restore speed for ID - bashscrazy - 07-22-2014 ======================================================================================================== ID of mp's restore speed 0041FB6D > 8B91 68030000 mov edx,dword ptr ds:[ecx+368] 0041FB73 . 8B92 F4060000 mov edx,dword ptr ds:[edx+6F4] 0041FB79 . 83FA 33 cmp edx,33←←←←←←←←←←←←←←id 51 Firzen 0041FB7C . 74 05 je short lf2.0041FB83 0041FB7E . 83FA 34 cmp edx,34←←←←←←←←←←←←←←id 52 Julian 0041FB81 . 75 05 jnz short lf2.0041FB88 0041FB83 > 99 cdq 0041FB84 . 2BC2 sub eax,edx 0041FB86 . D1F8 sar eax,1 ←←←←←←←←←←←←←←add some character's restore speed 0041FB88 > BA F4010000 mov edx,1F4 0041FB8D . 2BD0 sub edx,eax 0041FB8F . B8 1F85EB51 mov eax,51EB851F 0041FB94 . F7EA imul edx 0041FB96 . C1FA 05 sar edx,5 0041FB99 . 8BC2 mov eax,edx 0041FB9B . C1E8 1F shr eax,1F 0041FB9E . 8D5402 01 lea edx,dword ptr ds:[edx+eax+1]←←←←←←←←←←[edx+eax+X],X=basic restore speed of every character ======================================================================================================== I am aware of this from ADDRESS OF LF 2.0 HEX thread The addresses are a bit different in 2.0a like the first line is actually 0041FABD I modified this line 0041FB9E . 8D5402 01 lea edx,dword ptr ds:[edx+eax+1]←←←←←←←←←←[edx+eax+X],X=basic restore speed of every character The problem was I can't do negatives so 1 is the normal rate and 0 just doesnt regen at all at full health but it does regen when you lose like 100 hp or something. So I went to this line: 0041FB88 > BA F4010000 mov edx,1F4 1F4 is 500, I changed the decimal value to 1000 and mp regened faster. I put it at 393, 399, 400, there was no regeneration. At 401 there was some regen. At 100, mp drained really fast. So now I know I can make mp decrease by default and using the last line I can probably increase the number from 1 to a higher number and then some characters can have mp drainage while others restore by default. Only problem is I don't know how to change the restore speed to a specific ID. That way by default everyone's MP drops. But I can also make everyone have increased speed. Using both the draining method and the restore method can also result in slower mp restore speeds than the default base 1 speed. I hope you understand my question/problem? Thanks! RE: Changing MP restore speed for ID - A-Man - 07-22-2014 (07-22-2014, 05:35 PM)bashscrazy Wrote: 0041FB9E . 8D5402 01 lea edx,dword ptr ds:[edx+eax+1]←←←←←←←←←←[edx+eax+X],X=basic restore speed of every characterWhat the hell? Why would that X be the restore speed of every character? That's merely the address where the speed is stored, and shouldn't be anything other than that (someone correct me if I am wrong please). Did you try changing that one into something else? And if yes, then did it work? Edit: And how can sar possibly "add".. RE: Changing MP restore speed for ID - Boop - 07-22-2014 @A-MAN: http://stackoverflow.com/a/1658310 -Corrected. It's just the compiler being efficient. @bashscrazy: You are going about it all wrong. Mana regeneration is explained here: http://www.lf-empire.de/forum/showthread.php?tid=5835 the mana regen formula in lf2 is: (500-health)*0.01 + 1 if it is a special char then (500-health/2)*0.01 + 1 The 1F4 you are changing is the 500 in that equation. You won't really be able to solve this without writing your own code, at which point you may as well rewrite the mana regen algorithm to make more sense. Edit @A-MAN: you are right. The sar here is divide by 2. RE: Changing MP restore speed for ID - bashscrazy - 07-22-2014 Oh, oops! Thanks for the insight. RE: Changing MP restore speed for ID - A-Man - 07-22-2014 WOHO!.. interesting. Just to make sure I got it right: LEA's job is to get the address of some data. Since ptr DS:[] fetches data from a pointer/address, LEA reverses that by asking for the address of that data; thus the actual sums of edx, eax and 1 are stored in edx(?) RE: Changing MP restore speed for ID - Boop - 07-22-2014 (07-22-2014, 07:55 PM)A-MAN Wrote: thus the actual sums of edx, eax and 1 are stored in edx(?) Yes. To be honest, I doubt that a modern compiler, or at least one made by intel, would do this optimisation now days. RE: Changing MP restore speed for ID - Ikran Ahiyìk - 07-24-2014 One thing if not asked: Quote:mana is added every 3 TU's How to change this to something else, like 6 TU? RE: Changing MP restore speed for ID - Boop - 07-24-2014 It's these two lines: Code: 0041FA9C . 833D D40B4500 CMP DWORD PTR DS:[450BD4],0 So every time 450BD4 is 0 mana regens. 450BD4 goes 0,1,2,0,1,2 etc. This is the line that writes to it. Code: 0041D7DF . 8915 D00B4500 MOV DWORD PTR DS:[450BD0],EDX Why does EDX go 0,1,2? Too much effort to figure out :P. There is a MOV ECX 3 there. But if you change it, everything breaks. So yeah.... Good luck :P Edit: Just noticed, thats the wrong line. The correct one is near it, it has 450BD4 in the address, not 450BD0 RE: Changing MP restore speed for ID - A-Man - 07-24-2014 EDX might be a counter that adds MP every time it reaches a 0. It adds (I would've guessed decreases) 1 for every TU, and then reset to 2 when it reaches 0. I am not sure, but that's how I would've done it. RE: Changing MP restore speed for ID - Boop - 07-24-2014 What? The question is why does it stop at 3. EDX is a different thing in different places. The memory location 450BD4 is the "counter" that gets 1 added to it every TU. The question is how does this code work: Code: 0041D7A6 . 893D FC0B4500 MOV DWORD PTR DS:[450BFC],EDI Edit: Okay, it's easy enough. It is the MOV ECX,3 thing. If you change it to 6 it will indeed by 6 TU. You just need to make sure you change ECX back to 3 after doing the IDIV ECX or the exe crashes later. Here is an exe where mana regenerates every 100 TU : http://www.mediafire.com/download/oyjvv6m4b8z4tw5/lf2+100+TU.rar |