This is a small mutator I've started to create based on conversations with other Wikiers on my Freefall page.
Captain Kewl's Journal held many good notes and thoughts on the subject. He was offering his source code as well but I thought it would be a good exercise for me beyond what work I've done with Freefall, so I started from scratch.
I've taken a lot of code from various bits of the Translocator. Actually the grapple weapon looks exactly like the TransLauncher? when you hold it. I haven't gone as far as to actually make my own models/animation for the grapple. The "hook" bit of the grapple is just a 90 degree rotated TransBeacon? and the "rope" is a modified LinkBeamEffect?. The "hook" that way looks pretty good IMHO, like a techno-esque electromagnet.
I avoided having to subclass any PlayerController code like I did with Freefall in a effort of Maintaining Compatibility. I did this by making sure the Velocity Vector was specifically only introduced on the server side. I'm not sure what kind of effect this will have on laggy network games. I will have to do more testing.
My next task is to get the Bots to play with the grapple. Like Captain Kewl said it's just a matter of modifying the TransLauncher AI code.
The best part is so far it works with Freefall!
You may download it for your own pleasure here: http://www.lloydslounge.org/grapple/grapple.umod (version 100, 4/18/03)
Also feel free to use the source: http://www.lloydslounge.org/grapple/grapple.zip (also version 100, 4/18/03)
(4/18/03) Currently I'm elbows-deep in a platform game I'm making from scratch so I'm not sure when I'm going to get a chance (or the inkling) to work on this again.
- My subclassed LinkBeamEffect only lasts 3 seconds in network games. Even with lifespan set to 0.0 or any other number. No clue so far on this one. The grapple has now been programmed to only last three seconds which actually seems to work well with gameplay.
- The "pull" is somewhat jittery once the grapple connects. I believe it's the client trying to move the player pre-emptively and the server correcting it although I'm not sure where Velocity is being added on the client side.
- The grapple "line" can go through walls (the grapple "hook" cannot). I fixed this by doing a FastTrace() every Tick but besides being wasteful it's not entirely accurate so I took it out. Perhaps subclassing LinkBeamChild's Touch() method? (haha function, you can tell I'm a Java programmer)
- AI Support. Worked a bit on this so the bots actually use the hook but to not much effect. They still use it like a Translocator!
- New models/sounds for the weapon/hook.