Because I'm 100% sure I won't be able to update my AoBs, here's a guide how to make them yourself. These refer to my AoBs, and not phren's.
1. Download the game swf file using any method.
2. Open it in SoThink
3. On the 'Resources' panel to your right, open the Action folder. If you can't see the Resources panel, check to see if it's disabled in the View tab at the top. If it is, enable it.
4. Making the bullet hack
In the Action folder, go to the Bullet file. Go to: function handleHit
It should contain a simple switch statement, with a default case. Right at the end of the default case, you should see something like this:
environment.removeBullet(this);Great! Now, if we change the "this" part, the bullet won't be removed.
Go to the Raw Data, and search for function handleHit
Inside it, search for removeBullet. You should see something like this:
//60 fd 07
_as3_getlex GameplayObject::environment
//4f e5 03 00
_as3_callpropvoid marksmanTick(param count:0)
//60 fd 07
_as3_getlex GameplayObject::environment
//d0
_as3_getlocal <0>
//4f 93 04 01
_as3_callpropvoid removeBullet(param count:1)
//10 2c 00 00
_as3_jump offset: 44
//10 28 00 00
_as3_jump offset: 40
From that, we only need a small piece:
//60 fd 07
_as3_getlex GameplayObject::environment
//4f e5 03 00
_as3_callpropvoid marksmanTick(param count:0)
//60 fd 07
_as3_getlex GameplayObject::environment
//d0
_as3_getlocal <0>
//4f 93 04 01
_as3_callpropvoid removeBullet(param count:1)
60 fd 07 4f e5 03 00 60 fd 07 d0 4f 93 04 01
d0, local0, if left undefined refers to "this"; you don't need to know the details about the word "this", but isn't that what we agreed to change? Now, let's escape the function before anything we don't want happening will happen.
60 fd 07 4f e5 03 00 60 fd 07 d0 4f 93 04 01 =>
60 fd 07 4f e5 03 00 60 fd 07 47 4f 93 04 01
Now what will happen is the removeBullet function would've never occurred! Yay~
5. Making the auto-fire and fire-rate hack:
In the Action folder, go to the Player file. Search for Mouse.isDown. You should see something like this:
if (Mouse.isDown)
{
if (this.fireCooldown <= 0)Since there's already an explanation on if statements in the tutorial section, I'll skip the details and go straight to AoB making.
In Raw Data, search for function update() (that is the function the statements we want changed are)
//60 99 03
_as3_getlex ShadowLib.Input::Mouse
//66 98 0e
_as3_getproperty isDown
//12 1c 00 00
_as3_iffalse offset: 28
//d0
_as3_getlocal <0>
//66 fb 08
_as3_getproperty Player::fireCooldown
//24 00
_as3_pushbyte 0
//0d 12 00 00
_as3_ifnle offset: 18
60 99 03 66 98 0e 12 1c 00 00 d0 66 fb 08 24 00 0d 12 00 00 =>
60 99 03 66 98 0e 12 00 00 00 d0 66 fb 08 24 00 0d 00 00 00
[hr:3ipd76u4][/hr:3ipd76u4]
If you don't want to know how to do it and just want the AoBs, check the ends of point 5 and 6.
Enjoy.