Jump to content

Dev Diary - Knock, Knock...

Number Six

Recommended Posts

  • Homecoming Team
10 hours ago, BillyMailman said:

Okay, I know the answer is probably completely useless, but the power math nerd in my heart has to ask: Why 38 distance 7 - - 19 / dup dup * * and not 45 distance - 19 / dup dup * * ? Is there some magic where the - operator is removing non-negatives and resulting in distance 7 - being a minimum of zero, and that's what stops the magnitude from going off to infinity? Because if so, that's both terrible that it clamps out negatives that way, and also a fantastic hack to prevent infinite magnitudes, even though the inner radius 7 should do that anyway. And if not, that just seems like a really odd way to do the subtraction.


Nothing quite so interesting. That expression is the result of several iterations of development to try out different rates of pull and find something that felt right. It started out with distance 7 -, using an assumption that the inner radius should be the starting point of the calculation, and everything was built up around that but left separate so it could be easily tweaked. By pure chance the final version of it ended up using a construct that made the outer radius be the starting point and ignored the inner entirely, but I didn't bother to simplify the expression.


The CoD parser tries to reformat it, but it's partly hampered by not being written to handle things like exponents. I not sure if UberGuy even knew the dup keyword was a thing until this power went in.


10 hours ago, BillyMailman said:

I look forward to the day when you're hopefully able to have the KB-to-KD IOs just change the vector stuff, so a KD-ified power doesn't still knock Clockwork backwards. Because that would be amazing if you could eventually make it happen


You might be interested to know that I speculated about this possibility when writing up the design for vectored knock. This is one of the extra notes or 'useful tricks':



KB -> KD enhancements like Overwhelming Force and Sudden Acceleration can be reimagined as zero-magnitude Knock procs that have a high priority. This has the advantage of always working regardless if other unehancable KB or KU procs apply on the same tick and cause magnitude stacking.
Effect {
        Tag "Knock"
        AttribMod {
                Attrib kKnock
                Aspect kCur
                Target kTarget
                Table "Melee_Ones"
                Scale 0
                StackType kReplace
                Flags IgnoreStrength IgnoreResistance
                Params Knock {
                    VecEnd Down
                    Priority 10
                    Vel 0
                    VelMag 0
                    Height 0
                    HeightMag 0


The way that works is by adding a proc to every activation of the power the enhancement is slotted in that does a mag 0 knock. That will normally do nothing at all, but because it has a Priority 10 downwards vector, the one thing it does is to override any other knock from that source entity on the same server tick and replace it with the higher priority down vector.


After some thought I came to the conclusion that while it's a neat trick, that wouldn't actually work for every case because some powers deal the knockback on a delay timer rather than right when the power hits, so this trick would miss converting those. Doing it properly will require some mechanism to override effect parameters of another power at activation time.

  • Like 1
Link to comment
Share on other sites

Ahhh, yeah. See, I was thinking something like what's in Bonfire/Whirlwind/Tornado/etc. with the ReduceIfKD tag, where knock powers would have one component at 100% chance with ReduceIfKD and the normal vector, and another component at a 0% chance with the same magnitude, tagged IncreaseIfKD and set to vector downwards. Then the KB-to-KD IO becomes purely the tag chance changes. It would mean KD-ifying things wouldn't actually change the magnitude, and a six-piece Sudden Acceleration wouldn't be a massive contradiction. And Bonfire/etc. just need their KD component set to something like -60% starting chance, or whatever, to still have the lower chance when KD'd.


I realize the crazy amount of work that would be needed to get that rigged up in every single player-usable power, of course, and hoped there was a less ridiculous way I wasn't seeing. Unfortunately, while you might be able to automate some of the changes, a lot of knockback powers also have complicated crap, have two knockback effects for PvE/PvP, etc., so probably a lot of it would need manual adjusting.


Ah, well. All of this is still damn awesome. Thanks again, Six!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Create New...