Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ftStatusUniqProcessGlide.initStatus
- {
- int var0 = GetStatusKind
- if (var0 == 133) //Glide Action in Brawl
- {
- float var1 = GetLr
- float var2 = soKineticModuleImpl.getSumSpeed //Y speed
- float var3 = 1.7 //param
- SetFloat(0x21000005, var3)
- SetFloat(0x21000006, -var2)
- soKineticUtility.resetEnableEnergy(3, unk pointer, 22, var1 * var3)
- //params: Index, unk, unk, speed?
- soKineticUtility.clearUnableEnergy(2, unk pointer)
- soKineticUtility.clearUnableEnergy(0, unk pointer)
- soKineticUtility.clearUnableEnergy(1, unk pointer)
- soMotionModuleImpl.changeMotionRequest(0x3a?, 0, 90)
- soMotionModuleImpl.addPartialAnimChr(0x1, 0x3b, unk pointer, 0x0, 0, 0x0, 1)
- }
- }
- ftStatusUniqProcessGlide.execFixPos
- {
- ftUtil.getAirGroundTouchInfo //do I need this or can I just use air/ground status?
- if (grounded?) {
- }
- else {
- OffFlag(0x22000013)
- }
- }
- ftStatusUniqProcessGlide.exitStatus
- {
- soMotionModuleImpl.removePartialAnimChr(3?)
- }
- ftStatusUniqProcessGlide.execStatus
- {
- if (GetStatusKind == 133)
- {
- var0 = GetLr
- //r29 = Energy[0x3]
- var1 = GetFloat(0x21000004)
- var2 = GetFloat(0x21000007)
- var3 = soControllerModuleImpl.getStickAngle //Use sys 0xa with Global 0x20 and 0x30 for this
- if (var0 > 0)
- {
- var4 = var3 * 180/pi
- }
- else //instead of this nonsense, just multiply stickX by GetLr when calculating angle
- {
- tempVar0 = var3 * 180/pi
- tempVar1;
- if (tempVar0 > 0)
- {
- tempVar1 = 1
- }
- else
- {
- tempVar1 = -1
- }
- tempVar2 = 180 * tempVar1
- var4 = tempVar2 - tempVar3
- }
- var5 = stickMag
- if (var5 > 0.25) //param value
- {
- if (var4 >= 45 || var4 < -135)
- {
- var6 = 0.55 //param value
- }
- else
- {
- var6 = -(0.75) //param value
- }
- var7 = var6 * (stickMag - 0.25)/(1 - 0.25)
- if (var7 * var2 < 0)
- {
- var2 = 0
- }
- var2 += var7
- }
- else
- {
- //80872dbc
- if(isFlag(0x22000010))
- {
- if (var2 < 0)
- {
- var2 = 0
- }
- var2 += 1 //param 19
- }
- }
- var2 = ConstrainFloat(var2, -7, 7)
- SetFloat(0x21000007, var2)
- var1 += var2
- //note the above three commands are actually called in both logical paths, but to make code shorter they should be here.
- var1 = ConstrainFloat(var1, -70, 80)//params
- if (!isFlag(0x22000010))
- {
- //80872e7c
- var8 = GetFloat(0x21000005) - (0.04)(var1 / 90)
- if (isFlag(0x22000013))
- {
- var8 -= 0.01 //NOT a param
- }
- if (var8 < 0)
- {
- var8 = 0
- }
- //80872eec
- if (isFlag(0x22000012))
- {
- if (var1 > 0)
- {
- offFlag(0x22000012)
- }
- }
- else
- {
- var9 = -25 //param
- if (var1 < -var9)//if angle < -25
- {
- var8 += 0.03 * (var9 - var1) / (var9 - -70)
- //add horizontal speed
- }
- //retrospect:
- //0.03 is max additional horizontal speed when angle < -25
- //0.03 is the Index = 13 param (not index 9)
- }
- var10 = var0 * var8 //H speed
- var11 = var0 * var1 * pi/180 //angle * GetLr, radians
- var12 = var10 * sin(var11) //true horizontal
- var13 = var10 * cos(var11) //V factor before subtracting
- var14 = GetFloat(0x21000006) + 0.03 //param 9
- var14 = ConstrainFloat(f1, -0.6, 0.6) //param 10
- SetFloat(0x21000006, var14)
- var13 -= var14 //NOTE: var12 and var13 are X,Y speed now
- var15 = (var13)^2 + (var12)^2
- var16 = sqrt(var15)
- var17 = 2.2 //param
- if (var16 > var17)
- {
- var18 = var17 / var16
- var12 *= var18
- var13 *= var18
- }
- //NOTE: var12 and var13 are moved to r29 + 0x8, 0xC,
- //this is where it sets the kinetic speed!
- //Theoretical Code
- SetHSpeed(0x3, var12)
- SetVSpeed(0x3, var13)
- if (var16 < 0.7 || var8 <= 0) //0.7 is the param
- {
- onFlag(0x22000010)
- SetFloat(0x21000007, 0)
- }
- SetFloat(0x21000005, var8)
- }
- else //80873148
- {
- This never triggers, because when 0x22000010 is set it exits the glide
- }
- //80873338
- soMotionModuleImpl.setFrame(90 - var1)
- SetFloat(0x21000004, var1)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement