Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Basics.cpp : Defines the exported functions for the DLL application.
- //
- #include "stdafx.h"
- #include "SADXModLoader.h"
- #include "44mdlmodified.h"
- #include "44mdlorig.h"
- #include <cstdlib>
- DataPointer(int, EnemyBonus, 0x3B0F104);
- extern "C"
- {
- __declspec(dllexport) ModInfo SADXModInfo = { ModLoaderVer };
- //-------------------------------------------------------- SONIC THE HEDGEHOG --------------------------------------------------------------------------
- //OnFrame variables
- bool r = false;
- bool fall_after_roll = false;
- bool homing = false;
- bool in_air_after_homing = false;
- bool dashing = false;
- bool no_longer_dashing = false;
- bool was_on_trampoline = false;
- bool was_invincible_before = false;
- bool LightDash_SuperDash_ON = false;
- bool just_flipped = false;
- bool just_spindashed = false;
- bool no_light_attack = false;
- char balldata[] = { 0xBD, 0x20, 0, 0, 0 };
- char HangTimeCheckData[] = { 0x3B, 0x90, 0x9C, 0, 0, 0 };
- char LightDash_unNOP[] = { 0xC6, 0x06, 0x06, 0x33, 0xD2 };
- //char LightDashSpeed_unNOP[] = { 0xC7, 0x47, 0x38, 0, 0, 0, 0 }; //this controls the "NoRing LightDash" speed
- //char LightDashAnim_unNOP[] = { 0x66, 0xC7, 0x87, 0x24, 0x1, 0, 0, 0x40, 0 };
- char StompAnim[] = { 0x66, 0xC7, 0x87, 0x24, 0x01, 0, 0, 0x40, 0 };
- ObjectMaster *auraobj = nullptr;
- ObjectMaster *trailobj = nullptr;
- float ChaosBoostLv1 = 8.0f;
- float SuperDash = 8.0f;
- float SuperTornado = 16.0f;
- float LightDash_SuperDash = -1.0f;
- float Boost_SuperTornado = -1.0f;
- float LightAttackStatic = 0.0f;
- float LightAttackMoving = 10.0f;
- float SuperLightAttackMoving = 16.0f;
- // float TEST = 10.0f;
- // float LSStest1 = 3.0f;
- // float LSStest2 = 4.0f;
- int LightAttackTimer = 0;
- int HangTimeLikeHeroes = 0;
- int OldEnemyBonus;
- int SpeedShoesCount = 0;
- ObjectFunc(sub_441D50, 0x441D50);
- void SetSpeedShoes(ObjectMaster *obj)
- {
- SpeedShoesCount++;
- sub_441D50(obj);
- }
- ObjectFunc(sub_441D10, 0x441D10);
- void UnsetSpeedShoes(ObjectMaster *obj)
- {
- if (SpeedShoesCount > 0)
- SpeedShoesCount--;
- sub_441D10(obj);
- }
- void SetInvincible(ObjectMaster *obj)
- {
- was_invincible_before = true;
- RunObjectChildren(obj);
- }
- void UnsetInvincible(ObjectMaster *obj)
- {
- was_invincible_before = false;
- CheckThingButThenDeleteObject(obj);
- }
- //Sonic random homing sound | Shadow's Chaos Boost Lv1
- int sounds[]{ 762, 777, 778, 779 };
- void PlayHomingSound() { PlaySound(sounds[rand() % 4], 0, 0, 0); }
- __declspec(dllexport) void Init(const char *path, const HelperFunctions &helperFunctions)
- {
- WriteCall((void*)0x494BE7, PlayHomingSound);
- WriteCall((void*)0x4BA525, SetInvincible);
- WriteCall((void*)0x4BA537, UnsetInvincible);
- WriteData((void**)0x441E10, &SetSpeedShoes);
- WriteData((void**)0x441DEA, &UnsetSpeedShoes);
- };
- void __declspec(dllexport) OnFrame()
- {
- EntityData1* co1 = CharObj1Ptrs[0];
- CharObj2 *co2 = GetCharObj2(0);
- //SONIC'S ANIMATIONS
- //Sonic can animate the SuperAura
- WriteData((void*)0x55E95C, 0x90u, 6);
- //Anim data
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- ((AnimData_t*)0x3C56210)[18].TransitionSpeed = 0.1;
- ((AnimData_t*)0x3C56210)[64].TransitionSpeed = 0.25;
- ((AnimData_t*)0x3C56210)[64].AnimationSpeed = 1.5;
- ((AnimData_t*)0x3C56210)[12].AnimationSpeed = 0.415;
- ((AnimData_t*)0x3C56210)[13].AnimationSpeed = 0.415;
- ((AnimData_t*)0x3C56210)[14].AnimationSpeed = 0.15;
- ((AnimData_t*)0x3C56210)[40].AnimationSpeed = 1.25;
- ((AnimData_t*)0x3C56210)[42].AnimationSpeed = 1.0;
- ((AnimData_t*)0x3C56210)[31].TransitionSpeed = 0.125;
- PhysicsArray[Characters_Sonic].Run1 = 5.25;
- }
- //SONIC Top speed anim
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0 && (co1->Status & Status_Ground) == 1)
- {
- if (co2->Speed.x >= 13) (WriteData((short*)0x00495C27, (short)13));
- else (WriteData((short*)0x00495C27, (short)12));
- }
- //SONIC anim speed
- if (co2 == NULL) return;
- if (co2->Speed.x <= 2.3 && co2->Speed.x >= 1.3 && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0) ((AnimData_t*)0x3C56210)[11].AnimationSpeed = 0.9;
- else ((AnimData_t*)0x3C56210)[11].AnimationSpeed = 0.6225;
- //SONIC No jumpball when jumping
- //HMODULE hmodule = GetModuleHandle(L"CHRMODELS_orig");
- //NJS_OBJECT **___SONIC_OBJECTS = (NJS_OBJECT**)GetProcAddress(hmodule, "___SONIC_OBJECTS");
- //if (r && (co1->Status & Status_Ground) != Status_Ground) fall_after_roll = true;
- //if (ControllerPointers[0]->PressedButtons & Buttons_A) fall_after_roll = false;
- //if ((co1->Status & Status_Ground) == Status_Ground && CharObj1Ptrs[0]->Action == 5) fall_after_roll = true;
- //if ((co1->Status & Status_Ground) == Status_Ground && CharObj1Ptrs[0]->Action == 2) fall_after_roll = false;
- //if (co2 == NULL) return;
- //if (GetCharacterObject(0) && (CharObj1Ptrs[0]->Action == 4 || CharObj1Ptrs[0]->Action == 5 || fall_after_roll || CharObj1Ptrs[0]->Action == 14 || CharObj1Ptrs[0]->Action == 44)) (*___SONIC_OBJECTS[44] = object_0057BC44);
- //else (*___SONIC_OBJECTS[44] = object_0157BC44);
- //Sonic random homing trick
- //int anims[]{ 40, 42, 46, 70, 116, 117, 118, 119, 120 };
- int anims[]{ 40, 42, 46 };
- if (CharObj1Ptrs[0]->Action == 14)
- {
- homing = true;
- co2->AnimationThing.Index = 14;
- }
- if (homing && (co1->Status & Status_Ground) != Status_Ground) in_air_after_homing = true;
- if (homing && ((co1->Status & Status_Ground) == Status_Ground || co2->AnimationThing.Index == 0 || co2->AnimationThing.Index == 1 || co2->AnimationThing.Index == 2 || co2->AnimationThing.Index == 9 || co2->AnimationThing.Index == 10 || co2->AnimationThing.Index == 11 || co2->AnimationThing.Index == 12 || co2->AnimationThing.Index == 13 || co2->AnimationThing.Index == 31)) in_air_after_homing = false;
- if (!in_air_after_homing) homing = false;
- if (in_air_after_homing && CharObj1Ptrs[0]->Action == 8)
- {
- WriteData((void*)0x494AF9, 0x90, 5);
- co2->AnimationThing.Index = anims[rand() % 2];
- homing = false;
- in_air_after_homing = false;
- }
- if ((co1->Status & Status_Ground) == Status_Ground || homing) WriteData((void*)0x494AF9, balldata);
- //Anims better looks
- WriteData((short*)0x004984A3, (short)31);
- WriteData((short*)0x0049629E, (short)31);
- WriteData((short*)0x004962BF, (short)31);
- WriteData((void*)0x4960D9, 0x90, 7); // MESSES UP SPEED HIGHWAY LEVEL ENTRANCE (NOP)
- // Dash anim in air
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- if (CharObj1Ptrs[0]->Action == 12 && co2->Speed.x >= 5) dashing = true;
- if (CharObj1Ptrs[0]->Action != 12 || co2->Speed.x <= 4) dashing = false;
- if (dashing)
- {
- co2->AnimationThing.Index = 64;
- WriteData((short*)0x00494FDC, (short)64);
- WriteData((short*)0x00497CC0, (short)64);
- }
- if (co2->AnimationThing.Index == 17 || co2->AnimationThing.Index == 26 || co2->AnimationThing.Index == 40 || co2->AnimationThing.Index == 42) was_on_trampoline = true;
- if (!was_on_trampoline && CharObj1Ptrs[0]->Action == 12 && co2->Speed.x <= 4) no_longer_dashing = true;
- if (CharObj1Ptrs[0]->Action != 12 || co2->Speed.x >= 4 || was_on_trampoline) no_longer_dashing = false;
- if (co2->AnimationThing.Index != 17 || co2->AnimationThing.Index != 26 || co2->AnimationThing.Index != 40 || co2->AnimationThing.Index != 42) was_on_trampoline = false;
- if (no_longer_dashing)
- {
- co2->AnimationThing.Index = 18;
- WriteData((short*)0x494FDC, (short)18);
- WriteData((short*)0x497CC0, (short)18);
- }
- }
- //SpeedShoes New timer
- WriteData((short*)0x441CEF, (short)780);
- //NOP JumpCancel Action/Animation/HSpeed/VSpeed
- WriteData((void*)0x492F68, 0x90, 3);
- //WriteData((short*)0x492F7C, (short)64);
- WriteData((void*)0x492F73, StompAnim);
- //492F73 - 66 C7 87 24010000 1200 animation
- WriteData((void*)0x43C560, 0x90, 3);
- WriteData((void*)0x43C55D, 0x90, 3);
- //Sonic Stomp Upgrade Physics
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- if (CharObj1Ptrs[0]->Action == 8)
- {
- if (ControllerPointers[0]->PressedButtons & Buttons_B && ((co1->Status & Status_Ground) != Status_Ground || co2->AnimationThing.Index != 0 || co2->AnimationThing.Index != 1 || co2->AnimationThing.Index != 2 || co2->AnimationThing.Index != 9 || co2->AnimationThing.Index != 10 || co2->AnimationThing.Index != 11 || co2->AnimationThing.Index != 12 || co2->AnimationThing.Index != 13 || co2->AnimationThing.Index != 18 || co2->AnimationThing.Index != 31))
- {
- co2->AnimationThing.Index != 64;
- co2->Speed.y = -8;
- }
- }
- }
- //set vertical speed
- //set character state
- //set animation
- //set graphics
- // //Sonic Boost
- // if (co2 == NULL) return;
- // if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- // {
- //// if (co2->Powerups != Powerups_SpeedUp)
- //// {
- // if (ControllerPointers[0]->HeldButtons & Buttons_Y && (CharObj1Ptrs[0]->Action != 4 || CharObj1Ptrs[0]->Action != 6 || CharObj1Ptrs[0]->Action != 14 || CharObj1Ptrs[0]->Action != 44))
- // {
- // WriteData((float**)0x55E6FA, &Boost_SuperTornado);
- // if (!auraobj) auraobj = LoadObject(LoadObj_Data1, 2, Sonic_SuperAura_Load);
- // if (!trailobj)
- // {
- // trailobj = LoadObject(LoadObj_Data1, 6, SonicDashTrail_Init);
- // trailobj->Data1->CharIndex = 0;
- // }
- //
- // if (co2->Speed.x <= 6)
- // {
- // co2->PhysicsData.MaxAccel = 7.0;
- // co2->PhysicsData.GroundAccel = 0.30;
- // co2->PhysicsData.field_68 = 0;
- // }
- // else
- // {
- // co2->PhysicsData.MaxAccel = 7.0;
- // co2->PhysicsData.GroundAccel = 0.15;
- // co2->PhysicsData.field_68 = 0;
- // }
- // }
- // else
- // {
- // DeleteObject_(auraobj);
- // DeleteObject_(trailobj);
- // auraobj = nullptr;
- // trailobj = nullptr;
- // WriteData((float**)0x55E6FA, &SuperTornado);
- // co2->PhysicsData.MaxAccel = 3.5;
- // co2->PhysicsData.GroundAccel = 0.05;
- // co2->PhysicsData.field_68 = -0.4275;
- // }
- // // }
- // // if (co2->Powerups == Powerups_SpeedUp)
- // // {
- // // if (ControllerPointers[0]->PressedButtons & Buttons_Y || ControllerPointers[0]->HeldButtons & Buttons_Y && (CharObj1Ptrs[0]->Action != 4 || CharObj1Ptrs[0]->Action != 6 || CharObj1Ptrs[0]->Action != 14 || CharObj1Ptrs[0]->Action != 44))
- // // {
- // // WriteData((float**)0x55E6FA, &Boost_SuperTornado);
- // // if (!auraobj) auraobj = LoadObject(LoadObj_Data1, 2, Sonic_SuperAura_Load);
- // // if (!trailobj)
- // // {
- // // trailobj = LoadObject(LoadObj_Data1, 6, SonicDashTrail_Init);
- // // trailobj->Data1->CharIndex = 0;
- // // if (co2->Speed.x <= 6)
- // // {
- // // co2->PhysicsData.MaxAccel = 12.0;
- // // co2->PhysicsData.GroundAccel = 0.60;
- // // co2->PhysicsData.field_68 = 0;
- // // }
- // // else
- // // {
- // // co2->PhysicsData.MaxAccel = 12.0;
- // // co2->PhysicsData.GroundAccel = 0.30;
- // // co2->PhysicsData.field_68 = 0;
- // // }
- // // }
- // // else
- // // {
- // // DeleteObject_(auraobj);
- // // auraobj = nullptr;
- // // WriteData((float**)0x55E6FA, &SuperTornado);
- // // co2->PhysicsData.MaxAccel = 7.0;
- // // co2->PhysicsData.GroundAccel = 0.10;
- // // co2->PhysicsData.field_68 = -0.8550;
- // // }
- // //}
- // }
- //play sounds (voice and sfx)
- //Sonic Light Dash with Y
- //if (co2 == NULL) return;
- //if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- //{
- // if (ControllerPointers[0]->PressedButtons & Buttons_Y)
- // {
- // CharObj1Ptrs[0]->NextAction = 46; //doesn't work
- // co1->Status |= Status_DoNextAction;
- // }
- //}
- // //Y for LightDash
- // if (co2 == NULL) return;
- // if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- // {
- // if (CharObj1Ptrs[0]->Action == 4) just_spindashed = true;
- // if (ControllerPointers[0]->PressedButtons & Buttons_Y)
- // {
- // just_spindashed = false;
- //// no_light_attack = true;
- // }
- //// if (no_light_attack) co1->UpgradeBits |= UpgradeBits_AncientLight;
- //// else if (co1->EventFlags |= EventFlags_Sonic_Ancient) co1->UpgradeBits |= UpgradeBits_AncientLight;
- //
- // if (CharObj1Ptrs[0]->Action != 4 && CharObj1Ptrs[0]->Action != 6 && (co1->Status & Status_LightDash) != Status_LightDash) just_spindashed = false;
- // if (!just_spindashed)
- // {
- // WriteJump((void*)0x493047, (void*)0x4930C1);
- // }
- // else
- // {
- // WriteData((void*)0x493047, LightDash_unNOP);
- // }
- // if (ControllerPointers[0]->PressedButtons & Buttons_Y)
- // {
- //
- // co1->Status |= Status_LightDash;
- // }
- // }
- ////LightDash with Y new test
- // if (co2 == NULL) return;
- // if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- // {
- // WriteData((void*)0x493047, 0x90, 3);
- // WriteData((void*)0x493067, 0x90, 7);
- // if (ControllerPointers[0]->PressedButtons & Buttons_Y)
- // {
- // co1->Status |= Status_LightDash;
- // }
- // }
- //LightDash edits
- //WriteData((void*)0x4975BC, 0x90, 7); //not forced out speed
- //WriteData((void*)0x492CAE, 0x90, 6); //no horrible ''jumping'' looks
- //WriteData((float*)0x4950DF, (float)1.0f);
- //WriteData((float*)0x492CBF, (float)10.0f); //speed on rings
- //WriteData((float*)0x49306A, (float)0.0f); //speed not on rings
- /* if ((co1->Status & Status_LightDash) == Status_LightDash)
- {
- WriteData((void*)0x493047, 0x90, 3);
- WriteData((void*)0x493067, 0x90, 7);
- WriteData((void*)0x49304C, 0x90, 9);
- }
- else
- {
- WriteData((void*)0x493047, LightDash_unNOP);
- WriteData((void*)0x493067, LightDashSpeed_unNOP);
- WriteData((void*)0x49304C, LightDashAnim_unNOP);
- }*/
- //Faster LightSpeedCharge
- WriteData((short*)0x495097, (short)80);
- // WriteData((float**)0x0049FF85, &TEST);
- // WriteData((float**)0x004A0075, &TEST);
- //Jump anim and HangTime like Heroes
- //if (co2 == NULL) return;
- //if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- //{
- // PhysicsArray[Characters_Sonic].HangTime = 60000;
- // if (CharObj1Ptrs[0]->Action == 8)
- // {
- // if (ControllerPointers[0]->HeldButtons & Buttons_A)
- // {
- // if (++HangTimeLikeHeroes == 60)
- // {
- // WriteData((void*)0x43BFCB, 0x90, 6);
- // }
- // else if (EnemyBonus - OldEnemyBonus > 0 || co2->AnimationThing.Index == 40 || co2->AnimationThing.Index == 42)
- // {
- // WriteData((void*)0x43BFCB, HangTimeCheckData);
- // OldEnemyBonus = EnemyBonus;
- // }
- // }
- // }
- // else if ((co1->Status & Status_Ground) == Status_Ground || co2->AnimationThing.Index == 0 || co2->AnimationThing.Index == 1 || co2->AnimationThing.Index == 2 || co2->AnimationThing.Index == 9 || co2->AnimationThing.Index == 10 || co2->AnimationThing.Index == 11 || co2->AnimationThing.Index == 12 || co2->AnimationThing.Index == 13 || co2->AnimationThing.Index == 18 || co2->AnimationThing.Index == 31 || CharObj1Ptrs[0]->Action != 8)
- // {
- // WriteData((void*)0x43BFCB, HangTimeCheckData);
- // HangTimeLikeHeroes = 0;
- // }
- //}
- //Jump anim and HangTime like Heroes
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- PhysicsArray[Characters_Sonic].HangTime = 60000;
- if (CharObj1Ptrs[0]->Action == 8)
- {
- if (ControllerPointers[0]->HeldButtons & Buttons_A)
- {
- if (++HangTimeLikeHeroes == 60)
- {
- WriteData((void*)0x43BFCB, 0x90, 6);
- }
- else if (EnemyBonus - OldEnemyBonus > 0 || co2->AnimationThing.Index == 40 || co2->AnimationThing.Index == 42)
- {
- WriteData((void*)0x43BFCB, HangTimeCheckData);
- OldEnemyBonus = EnemyBonus;
- }
- }
- }
- else if ((co1->Status & Status_Ground) == Status_Ground || co2->AnimationThing.Index == 0 || co2->AnimationThing.Index == 1 || co2->AnimationThing.Index == 2 || co2->AnimationThing.Index == 9 || co2->AnimationThing.Index == 10 || co2->AnimationThing.Index == 11 || co2->AnimationThing.Index == 12 || co2->AnimationThing.Index == 13 || co2->AnimationThing.Index == 18 || co2->AnimationThing.Index == 31 || CharObj1Ptrs[0]->Action != 8)
- {
- WriteData((void*)0x43BFCB, HangTimeCheckData);
- HangTimeLikeHeroes = 0;
- }
- }
- //LightAttack like SA2
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- if (CharObj1Ptrs[0]->Action == 44)
- {
- if ((*(float**)0x492A3B == &LightAttackStatic) && (*(float**)0x492A4F == &LightAttackStatic) && (*(float**)0x492A6A == &LightAttackStatic))
- {
- WriteData((float**)0x492A3B, &LightAttackMoving);
- WriteData((float**)0x492A4F, &LightAttackMoving);
- WriteData((float**)0x492A6A, &LightAttackMoving);
- }
- if (++LightAttackTimer == 10)
- {
- WriteData((float**)0x492A3B, &LightAttackStatic);
- WriteData((float**)0x492A4F, &LightAttackStatic);
- WriteData((float**)0x492A6A, &LightAttackStatic);
- LightAttackTimer = 0;
- }
- }
- else LightAttackTimer = 0;
- }
- //Super Sonic/Shadow anybody LightAttack*************************************************
- //LightAttack edits for Super forms
- //WriteData((float**)0x492A3B, &LightAttackMoving);
- //WriteData((float**)0x492A4F, &LightAttackMoving);
- //WriteData((float**)0x492A6A, &LightAttackMoving);
- //if (co2 == NULL) return;
- //if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- //{
- // WriteData((float*)0x492FEB, (float)0.0f);
- // if (CharObj1Ptrs[0]->Action == 44)
- // {
- // if ((*(float**)0x492A3B == &LightAttackStatic) && (*(float**)0x492A4F == &LightAttackStatic) && (*(float**)0x492A6A == &LightAttackStatic))
- // {
- // WriteData((float**)0x492A3B, &SuperLightAttackMoving);
- // WriteData((float**)0x492A4F, &SuperLightAttackMoving);
- // WriteData((float**)0x492A6A, &SuperLightAttackMoving);
- // }
- // if ((++LightAttackTimer == 1) || EnemyBonus - OldEnemyBonus > 0)
- // {
- // WriteData((float**)0x492A3B, &LightAttackStatic);
- // WriteData((float**)0x492A4F, &LightAttackStatic);
- // WriteData((float**)0x492A6A, &LightAttackStatic);
- // }
- // }
- // else LightAttackTimer = 0;
- // OldEnemyBonus = EnemyBonus;
- //}
- //Super Sonic's Aura different speeds
- // WriteData((float**)0x55E739, &SuperDash);
- // WriteData((float**)0x55E6FA, &SuperTornado);
- //Super Aura when LightDashing
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- if (CharObj1Ptrs[0]->Action == 6) LightDash_SuperDash_ON = true;
- else LightDash_SuperDash_ON = false;
- if (LightDash_SuperDash_ON)
- {
- if (!auraobj) auraobj = LoadObject(LoadObj_Data1, 2, Sonic_SuperAura_Load);
- }
- if (auraobj && CharObj1Ptrs[0]->Action != 6 && ControllerPointers[0]->HeldButtons & !Buttons_Y)
- {
- DeleteObject_(auraobj);
- auraobj = nullptr;
- }
- if (LightDash_SuperDash_ON) WriteData((float**)0x0055E739, &LightDash_SuperDash);
- else WriteData((float**)0x0055E739, &SuperDash);
- }
- //SONIC physics
- if (co2 == NULL) return;
- if (GetCharacterObject(0) && GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
- {
- PhysicsArray[Characters_Sonic].MaxAccel = 3.5;
- PhysicsArray[Characters_Sonic].GroundAccel = 0.05;
- PhysicsArray[Characters_Sonic].field_68 = -0.4275;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement