diff --git a/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp b/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp index bca2fd5..83daebd 100644 --- a/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp +++ b/cheat-library/src/user/cheat/visuals/AnimationChanger.cpp @@ -8,10 +8,222 @@ namespace cheat::feature { - static std::string f_Animation; - + static std::string animations[] = { + // All characters + "SlipFaceWall", + "SlipBackWall", + "DropDown", + "JumpOffWall", + "Jump", + "JumpForRun", + "JumpForWalk", + "Fly", + "FlyStart", + "JumpForSprint", + "SwimIdle", + "SwimMove", + "SwimDash", + "ClimbMove1", + "ClimbIdle", + "ClimbJump", + "ClimbMove0", + "FallToGroundRun", + "FallOnGroundLit", + "FallOnGround", + "FallToGroundRunHard", + "FallToGroundSprint", + "Walk", + "Run", + "Standby", + "RunToIdle", + "RunToWalk", + "WalkToIdle", + "WalkToRun", + "Sprint", + "SprintToIdle", + "SprintToRun", + "ClimbDownToGround", + "SprintBS", + "ShowUp", + "CrouchToStandby", + "CrouchIdle", + "CrouchRoll", + "CrouchMove", + "SkiffNormal", + "Upstairs", + "JumpUpWallForStandby", + "JumpUpWallReady", + "Standby2ClimbA", + "SwimJump", + "SwimJumpDrop", + "SwimJumpToWater", + "Standby2ClimbB", + "CrouchDrop", + "TurnDir", + "StandbyWeapon", + "StandbyPutaway", + "StandbyPutawayOver", + "Icespine_Out", + "Icespine", + "LiquidStrike_MoveStandby", + "LiquidStrike_AS", + "LiquidStrike_BS", + "LiquidStrike_BS1", + "LiquidStrike_Move", + "LiquidStrike_Strike", + "LiquidStrike_FatalStandby", + "LiquidStrike_FatalMove", + "LiquidStrike_AS_OnWater", + "LiquidStrike_BS_0", + "FrozenWindmill", + "FrozenWindmill_AS", + "Attack03", + "Attack04", + "Attack05", + "Attack01", + "Attack02", + "ExtraAttack", + "ExtraAttack_AS", + "FallingAnthem_Loop", + "FallingAnthem_AS_2", + "FallingAnthem_BS_1", + "FallingAnthem_BS_2", + "FallingAnthem_AS_1", + "FallingAnthem_Loop_Low", + "SitBDown", + "SitBLoop", + "SitBUp", + "SitDown", + "SitLoop", + "SitUp", + "StandbyShow_01", + "StandbyShow_02", + "StandbyVoice", + "Think01BS", + "Think01Loop", + "Think01AS", + "Akimbo02BS", + "Akimbo02Loop", + "Akimbo02AS", + "ChannelBS", + "ChannelLoop", + "ChannelAS", + "PlayMusic_Lyre_AS", + "PlayMusic_Lyre_BS", + "PlayMusic_Lyre_Loop", + "PlayMusic_Qin_BS", + "PlayMusic_Qin_AS", + "PlayMusic_Qin_Loop", + "ActivitySkill_ElectricCoreFly", + "Hit_H", + "Hit_L", + "Hit_Throw", + "Hit_Throw_Ground", + "Hit_ThrowAir", + "Struggle", + "NormalDie", + "SwimDie", + "HitGroundDie", + "FallDie_AS", + "FallDie", + // Main Character only + "UziExplode_AS", + "UziExplode_BS", + "UziExplode_Charge_01", + "UziExplode_Strike_02", + "UziExplode_Charge_02", + "UziExplode_Strike_01", + "UziExplode_BS_1", + "WindBreathe_AS", + "WindBreathe", + "Hogyoku_AS", + "Hogyoku_BS", + "Hogyoku", + "Hogyoku_Charge", + "Hogyoku_Charge_AS", + "Hogyoku_Charge_2", + "RockTide_AS", + "RockTide", + "CrouchThrowBS", + "CrouchThrowLoop", + "CrouchThrowAS", + "FindCatThrowBS", + "FindCatThrowLoop", + "FindCatThrowAS", + "Player_Electric_ElementalArt", + "Player_Electric_ElementalArt_AS", + "Player_Electric_ElementalBurst", + "Player_Electric_ElementalBurst_AS", + "PutHand01BS", + "PutHand01Loop", + "PutHand01AS", + "Akimbo01BS", + "Backrake01BS", + "Forerake01BS", + "StrikeChest01BS", + "Akimbo01Loop", + "Akimbo01AS", + "Backrake01Loop", + "Backrake01AS", + "Forerake01Loop", + "Forerake01AS", + "StrikeChest01Loop", + "StrikeChest01AS", + "HoldHead01BS", + "HoldHead01Loop", + "HoldHead01AS", + "Clap01", + "Turn01_90LBS", + "Turn01_90RBS", + "Turn01_90LAS", + "Turn01_90RAS", + "Alert01BS", + "Alert01Loop", + "Alert01AS", + "Fishing01_BS", + "Fishing01Loop", + "Fishing01AS", + "Think01_BS", + "Think01_Loop", + "Think01_AS", + "Channel01BS", + "Channel01Loop", + "Channel01AS", + "Fishing_Battle_BS", + "Fishing_Cast_AS", + "Fishing_Cast_BS", + "Fishing_Cast_Loop", + "Fishing_Choose", + "Fishing_Choose_Loop", + "Fishing_End", + "Fishing_Pull_01", + "Fishing_Pull_02", + "Fishing_Wait", + "Fishing_Pull_Fail", + "Bartender_MixingStandby", + "Bartender_MixingStart", + "Bartender_MixingToPour", + "Bartender_Pour", + "Bartender_PourFinish", + "Bartender_PourStandby", + "Bartender_AddLoop", + "Bartender_PrepareStart", + "Bartender_Standby", + "Bartender_AddStandby", + "Bartender_PrepareToStandby", + "Bartender_StandbyFinish", + "Blocking_BS", + "Blocking_Loop", + "Blocking_Back", + "Blocking_Bounce", + "Blocking_Hit", + "Blocking_AS" + }; + static std::string currentAnimation{}; AnimationChanger::AnimationChanger() : Feature(), - NFEX(f_Enabled, "Animation Changer", "AnimationChanger", "Visuals", false, false) + NF(f_Enabled, "Animation Changer", "Visuals::AnimationChanger", false), + NF(f_ApplyAnimation, "Apply Animation", "Visuals::AnimationChanger", false), + NF(f_ResetAnimation, "Reset Animation", "Visuals::AnimationChanger", false) { events::GameUpdateEvent += MY_METHOD_HANDLER(AnimationChanger::OnGameUpdate); } @@ -24,8 +236,30 @@ namespace cheat::feature void AnimationChanger::DrawMain() { - ConfigWidget(f_Enabled, "Changes active character's animation."); - ImGui::InputText("Animation", &f_Animation); + ConfigWidget(f_Enabled, "Changes active character's animation.\nNot all animations work for every character except Main Character."); + if (f_Enabled) + { + if (ImGui::BeginCombo("Animations", currentAnimation.c_str())) + { + for (int n = 0; n < IM_ARRAYSIZE(animations); n++) + { + bool is_selected = (currentAnimation.c_str() == animations[n]); + if (ImGui::Selectable(animations[n].c_str(), is_selected)) + currentAnimation = animations[n]; + + if (is_selected) + ImGui::SetItemDefaultFocus(); + } + ImGui::EndCombo(); + } + + if (ImGui::Button("Apply")) + f_ApplyAnimation = true; + ImGui::SameLine(); + if (ImGui::Button("Reset")) + f_ResetAnimation = true; + } + } bool AnimationChanger::NeedStatusDraw() const @@ -46,247 +280,24 @@ namespace cheat::feature void AnimationChanger::OnGameUpdate() { + if (!f_Enabled) + return; + auto& manager = game::EntityManager::instance(); auto avatar = manager.avatar(); if (avatar->animator() == nullptr) return; - static bool changed = false; - - if (f_Enabled) + if (f_Enabled && f_ApplyAnimation) { - auto avatarObj = avatar->gameObject(); - auto rootObj = app::MoleMole_BaseEntity_get_rootGameObject(avatar->raw(), nullptr); // (Clone) - auto path = app::Object_1_get_name(reinterpret_cast(avatarObj), nullptr); - auto pathavatarObj = app::Object_1_get_name(reinterpret_cast(rootObj), nullptr); // (Clone) - - if (!changed) - { - app::Animator_Play(avatar->animator(), string_to_il2cppi(f_Animation.c_str()), 0, 0, nullptr); - changed = true; - } - + app::Animator_Play(avatar->animator(), string_to_il2cppi(currentAnimation.c_str()), 0, 0, nullptr); + f_ApplyAnimation = false; } - else + + if (f_Enabled && f_ResetAnimation) { - if (changed) - { - app::Animator_Rebind(avatar->animator(), nullptr); - changed = false; - } + app::Animator_Rebind(avatar->animator(), nullptr); + f_ResetAnimation = false; } } } - -/* -//------Animations------\\ -SlipFaceWall -SlipBackWall -DropDown -JumpOffWall -Jump -JumpForRun -JumpForWalk -Fly -FlyStart -JumpForSprint -SwimIdle -SwimMove -SwimDash -ClimbMove1 -ClimbIdle -ClimbJump -ClimbMove0 -FallToGroundRun -FallOnGroundLit -FallOnGround -FallToGroundRunHard -FallToGroundSprint -Walk -Run -Standby -RunToIdle -RunToWalk -WalkToIdle -WalkToRun -Sprint -SprintToIdle -SprintToRun -ClimbDownToGround -SprintBS -ShowUp -CrouchToStandby -CrouchIdle -CrouchRoll -CrouchMove -SkiffNormal -Upstairs -JumpUpWallForStandby -JumpUpWallReady -Standby2ClimbA -SwimJump -SwimJumpDrop -SwimJumpToWater -Standby2ClimbB -CrouchDrop -TurnDir -StandbyWeapon -StandbyPutaway -StandbyPutawayOver -Icespine_Out -Icespine -LiquidStrike_MoveStandby -LiquidStrike_AS -LiquidStrike_BS -LiquidStrike_BS1 -LiquidStrike_Move -LiquidStrike_Strike -LiquidStrike_FatalStandby -LiquidStrike_FatalMove -LiquidStrike_AS_OnWater -LiquidStrike_BS_0 -FrozenWindmill -FrozenWindmill_AS -Attack03 -Attack04 -Attack05 -Attack01 -Attack02 -ExtraAttack -ExtraAttack_AS -FallingAnthem_Loop -FallingAnthem_AS_2 -FallingAnthem_BS_1 -FallingAnthem_BS_2 -FallingAnthem_AS_1 -FallingAnthem_Loop_Low -SitBDown -SitBLoop -SitBUp -SitDown -SitLoop -SitUp -StandbyShow_01 -StandbyShow_02 -StandbyVoice -Think01BS -Think01Loop -Think01AS -Akimbo02BS -Akimbo02Loop -Akimbo02AS -ChannelBS -ChannelLoop -ChannelAS -PlayMusic_Lyre_AS -PlayMusic_Lyre_BS -PlayMusic_Lyre_Loop -PlayMusic_Qin_BS -PlayMusic_Qin_AS -PlayMusic_Qin_Loop -ActivitySkill_ElectricCoreFly -Hit_H -Hit_L -Hit_Throw -Hit_Throw_Ground -Hit_ThrowAir -Struggle -NormalDie -SwimDie -HitGroundDie -FallDie_AS -FallDie - -//------Main Character------\\ -UziExplode_AS -UziExplode_BS -UziExplode_Charge_01 -UziExplode_Strike_02 -UziExplode_Charge_02 -UziExplode_Strike_01 -UziExplode_BS_1 -WindBreathe_AS -WindBreathe -Hogyoku_AS -Hogyoku_BS -Hogyoku -Hogyoku_Charge -Hogyoku_Charge_AS -Hogyoku_Charge_2 -RockTide_AS -RockTide -CrouchThrowBS -CrouchThrowLoop -CrouchThrowAS -FindCatThrowBS -FindCatThrowLoop -FindCatThrowAS -Player_Electric_ElementalArt -Player_Electric_ElementalArt_AS -Player_Electric_ElementalBurst -Player_Electric_ElementalBurst_AS -PutHand01BS -PutHand01Loop -PutHand01AS -Akimbo01BS -Backrake01BS -Forerake01BS -StrikeChest01BS -Akimbo01Loop -Akimbo01AS -Backrake01Loop -Backrake01AS -Forerake01Loop -Forerake01AS -StrikeChest01Loop -StrikeChest01AS -HoldHead01BS -HoldHead01Loop -HoldHead01AS -Clap01 -Turn01_90LBS -Turn01_90RBS -Turn01_90LAS -Turn01_90RAS -Alert01BS -Alert01Loop -Alert01AS -Fishing01_BS -Fishing01Loop -Fishing01AS -Think01_BS -Think01_Loop -Think01_AS -Channel01BS -Channel01Loop -Channel01AS -Fishing_Battle_BS -Fishing_Cast_AS -Fishing_Cast_BS -Fishing_Cast_Loop -Fishing_Choose -Fishing_Choose_Loop -Fishing_End -Fishing_Pull_01 -Fishing_Pull_02 -Fishing_Wait -Fishing_Pull_Fail -Bartender_MixingStandby -Bartender_MixingStart -Bartender_MixingToPour -Bartender_Pour -Bartender_PourFinish -Bartender_PourStandby -Bartender_AddLoop -Bartender_PrepareStart -Bartender_Standby -Bartender_AddStandby -Bartender_PrepareToStandby -Bartender_StandbyFinish -Blocking_BS -Blocking_Loop -Blocking_Back -Blocking_Bounce -Blocking_Hit -Blocking_AS -*/ \ No newline at end of file diff --git a/cheat-library/src/user/cheat/visuals/AnimationChanger.h b/cheat-library/src/user/cheat/visuals/AnimationChanger.h index 309bdf9..1cf2f7f 100644 --- a/cheat-library/src/user/cheat/visuals/AnimationChanger.h +++ b/cheat-library/src/user/cheat/visuals/AnimationChanger.h @@ -9,6 +9,8 @@ namespace cheat::feature { public: config::Field> f_Enabled; + config::Field> f_ApplyAnimation; + config::Field> f_ResetAnimation; static AnimationChanger& GetInstance(); diff --git a/cheat-library/src/user/cheat/world/AutoDestroy.cpp b/cheat-library/src/user/cheat/world/AutoDestroy.cpp index 4ee4168..757d7d1 100644 --- a/cheat-library/src/user/cheat/world/AutoDestroy.cpp +++ b/cheat-library/src/user/cheat/world/AutoDestroy.cpp @@ -85,8 +85,8 @@ namespace cheat::feature if (autoDestroy.f_Enabled && autoDestroy.f_Range > manager.avatar()->distance(entity) && ( - (autoDestroy.f_DestroyOres && game::filters::combined::Ores.IsValid(manager.entity(entity))) || - (autoDestroy.f_DestroyDoodads && game::filters::combined::Doodads.IsValid(manager.entity(entity))) || + (autoDestroy.f_DestroyOres && game::filters::combined::Ores.IsValid(manager.entity(entity))) || + (autoDestroy.f_DestroyDoodads && (game::filters::combined::Doodads.IsValid(manager.entity(entity)) || game::filters::chest::SBramble.IsValid(manager.entity(entity)))) || (autoDestroy.f_DestroyShields && !game::filters::combined::MonsterBosses.IsValid(manager.entity(entity)) && ( game::filters::combined::MonsterShielded.IsValid(manager.entity(entity)) || // For shields attached to monsters, e.g. abyss mage shields. game::filters::combined::MonsterEquips.IsValid(manager.entity(entity)) || // For shields/weapons equipped by monsters, e.g. rock shield.