Jump to content
Dustloop Forums

Recommended Posts

  • 2 weeks later...
Posted

After spending a week(?) staring at BBScript, trying to figure out how meter gain and cooldowns work, here are my findings:
As far as I can tell:

  • Meter Gain is handled by four commands: "tensionGainOnConnect", "addTension", "addTensionUnscaled", and "tensionUsage"
  • "tensionGainOnConnect"
    Translates to percentages as "tensionGainOnConnect" * 12 / 100
    This command is used for describing general meter gain
  • "addTension"
    Translates to percentages as "addTension" * 5 / 100
    This command is used for describing meter gain on startup, such as a Skill activating
  • "addTensionUnscaled"
    Translates to percentages as "addTensionUnscaled" / 100
    This command is used for describing Ultimate Skill meter gain
  • "tensionUsage"
    Translates to percentages as "tensionUsage" / 100
    This command is used for describing general meter loss

 

  • Cooldowns are handled differently for projectiles compared to non-projectiles
  • All skills have a subroutine defined as "AbilityCoolDown_%s" where %s can be "N", "6", "4", or "2", to describe which cooldown it will take
    Projectiles have additional subroutines in "AbilityCoolDown_%s_DAMAGE" and "AbilityCoolDown_%s_ON_FINALIZE" to describe what should happen on contact and on despawn respectively
  • Cooldowns always have a set delay of 3 frames, where they don't start counting until the third frame, e.g:
    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
    Where  is when the cooldown is available,  is the initial activation, and  is during the cooldown for a move with cooldown "2; 20"
  • There are two commands cooldowns are set by: "storeValue: Mem(%s), Val(%s)" and "skillCooldown: %s, %s"
  • "storeValue: Mem(%s), Val(%s)"
    First %s is the memory cell to call, second %s is the cooldown to set
    Used for projectiles to override the cooldowns which are set to 999 upon activation
  • "skillCooldown: %s, %s"
    First %s is the ID of the cooldown (0 = 5S, 1 = 6S, 2 = 2S, 3 = 4S), second %s is the cooldown to set
    Used for all Skills. Simple cooldowns only use this, while complex (and especially projectiles) use it in addition to the former
Posted

And I immediately found a contradiction because someone decided to go put the cooldown scripts in an EF file for a projectile and now I have to account for that.

Posted

I now think meter gain scaling is on a per-hit basis, not a per move basis. Was testing with Eustace, [2]8H by itself is should be 2.0; 4.8, 1.2 meter, but in practice it comes out to 7% with 3F of walking (16 units of unknown scale per frame) to tick it to 8%.

 

Well, it's either that or it's that subsequent hits are scaled differently, in which case, Cygames, why?

Posted

This is the meter gain script for skills: BBS_CMNEF

beginSubroutine: s32'cmnSpecialAttackGauge'
    modifyVar: (ADD), Mem(423), Val(1)
    ifOperation: (IS_EQUAL), Mem(423), Val(1)
        modifyVar2: (MOD), Mem(418), Val(10000)
        ifOperation: (DIV), Mem(Tmp), Val(1000)
            tensionGainOnConnect: 40
        endIf: 
        else: 
            tensionGainOnConnect: 60
        endElse: 
    endIf: 
    ifOperation: (IS_GREATER_OR_EQUAL), Mem(423), Val(2)
        tensionGainOnConnect: 10
    endIf: 
    ifOperation: (IS_GREATER_OR_EQUAL), Mem(423), Val(6)
        tensionGainOnConnect: 5
    endIf: 
endSubroutine: 

 

From what I can tell, this reads:

def cmnSpecialAttackGauge:
  hitCount += 1
  if hitCount == 1:
    math.mod(var2, 10000)
    if attackType == "projectile":
      tensionGain = 40
    else:
      tensionGain = 60
  elif hitCount >= 2 and hitCount <= 5:
    tensionGain = 10
  elif hitCount >= 6:
    tensionGain = 5

 

Which kind of makes sense? But also mostly doesn't?

Posted

I no longer believe that is fully correct... Eustace Spreadshot did 2; 4, 0, 1 for its hits, so the last two were less than 1% each

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
  • Upcoming Events

    No upcoming events found
×
×
  • Create New...