teams from playlist cuz sweefy & weyn wanted

This commit is contained in:
Milxnor
2023-03-27 18:20:43 -04:00
parent 9c8b327cd7
commit b4e88117a4
3 changed files with 45 additions and 30 deletions

View File

@@ -569,8 +569,40 @@ bool AFortGameModeAthena::Athena_ReadyToStartMatchHook(AFortGameModeAthena* Game
int AFortGameModeAthena::Athena_PickTeamHook(AFortGameModeAthena* GameMode, uint8 preferredTeam, AActor* Controller) int AFortGameModeAthena::Athena_PickTeamHook(AFortGameModeAthena* GameMode, uint8 preferredTeam, AActor* Controller)
{ {
LOG_INFO(LogTeam, "PickTeam called!"); LOG_INFO(LogTeam, "PickTeam called!");
static auto NextTeamIndex = 3;
return NextTeamIndex++; auto GameState = Cast<AFortGameStateAthena>(GameMode->GetGameState());
auto Playlist = GameState->GetCurrentPlaylist();
static int CurrentTeamMembers = 0; // bad
// std::cout << "Dru!\n";
if (!Playlist)
{
CurrentTeamMembers = 0;
static int Current = 3;
CurrentTeamMembers++;
return Current++;
}
static int NextTeamIndex = Playlist->Get<int>("DefaultFirstTeam");
// std::cout << "CurrentTeamMembers: " << CurrentTeamMembers << '\n';
static auto MaxSquadSizeOffset = Playlist->GetOffset("MaxSquadSize");
if (CurrentTeamMembers >= Playlist->Get<int>(MaxSquadSizeOffset))
{
// std::cout << "Moving next team!\n";
NextTeamIndex++;
CurrentTeamMembers = 0;
}
CurrentTeamMembers++;
return NextTeamIndex;
} }
void AFortGameModeAthena::Athena_HandleStartingNewPlayerHook(AFortGameModeAthena* GameMode, AActor* NewPlayerActor) void AFortGameModeAthena::Athena_HandleStartingNewPlayerHook(AFortGameModeAthena* GameMode, AActor* NewPlayerActor)

View File

@@ -742,19 +742,28 @@ void AFortPlayerController::ClientOnPawnDiedHook(AFortPlayerController* PlayerCo
if (!DeadPawn->IsDBNO()) if (!DeadPawn->IsDBNO())
{ {
static void (*RemoveFromAlivePlayers)(AFortGameModeAthena* GameMode, AFortPlayerController* PlayerController, APlayerState * PlayerState, APawn * FinisherPawn, static void (*RemoveFromAlivePlayers)(AFortGameModeAthena* GameMode, AFortPlayerController* PlayerController, APlayerState* PlayerState, APawn* FinisherPawn,
UFortWeaponItemDefinition * FinishingWeapon, uint8_t DeathCause, char a7) UFortWeaponItemDefinition* FinishingWeapon, uint8_t DeathCause, char a7)
= decltype(RemoveFromAlivePlayers)(Addresses::RemoveFromAlivePlayers); = decltype(RemoveFromAlivePlayers)(Addresses::RemoveFromAlivePlayers);
AActor* DamageCauser = *(AActor**)(__int64(DeathReport) + MemberOffsets::DeathReport::DamageCauser); AActor* DamageCauser = *(AActor**)(__int64(DeathReport) + MemberOffsets::DeathReport::DamageCauser);
UFortWeaponItemDefinition* KillerWeaponDef = nullptr; UFortWeaponItemDefinition* KillerWeaponDef = nullptr;
static auto FortProjectileBaseClass = FindObject<UClass>("/Script/FortniteGame.FortProjectileBase"); static auto FortProjectileBaseClass = FindObject<UClass>("/Script/FortniteGame.FortProjectileBase");
LOG_INFO(LogDev, "FortProjectileBaseClass: {}", __int64(FortProjectileBaseClass));
if (DamageCauser->IsA(FortProjectileBaseClass)) if (DamageCauser->IsA(FortProjectileBaseClass))
{
LOG_INFO(LogDev, "From a projectile!");
KillerWeaponDef = ((AFortWeapon*)DamageCauser->GetOwner())->GetWeaponData(); KillerWeaponDef = ((AFortWeapon*)DamageCauser->GetOwner())->GetWeaponData();
}
if (auto Weapon = Cast<AFortWeapon>(DamageCauser)) if (auto Weapon = Cast<AFortWeapon>(DamageCauser))
{
LOG_INFO(LogDev, "From a weapon!");
KillerWeaponDef = Weapon->GetWeaponData(); KillerWeaponDef = Weapon->GetWeaponData();
}
LOG_INFO(LogDev, "KillerWeaponDef: {}", KillerWeaponDef ? KillerWeaponDef->GetFullName() : "InvalidObject");
RemoveFromAlivePlayers(GameMode, PlayerController, KillerPlayerState == DeadPlayerState ? nullptr : KillerPlayerState, KillerPawn, KillerWeaponDef, DeathCause, 0); RemoveFromAlivePlayers(GameMode, PlayerController, KillerPlayerState == DeadPlayerState ? nullptr : KillerPlayerState, KillerPawn, KillerWeaponDef, DeathCause, 0);
} }

View File

@@ -90,32 +90,6 @@ static void SetZoneToIndexHook(AFortGameModeAthena* GameModeAthena, int Override
{ {
LOG_INFO(LogZone, "Hold [{}] {}", i, ZoneHoldDurations.at(i)); LOG_INFO(LogZone, "Hold [{}] {}", i, ZoneHoldDurations.at(i));
} }
/*
if (ZoneDurations.ArrayNum >= 1) ZoneDurations.at(0) = 0;
if (ZoneDurations.ArrayNum >= 2) ZoneDurations.at(1) = 180;
if (ZoneDurations.ArrayNum >= 3) ZoneDurations.at(2) = 120;
if (ZoneDurations.ArrayNum >= 4) ZoneDurations.at(3) = 90;
if (ZoneDurations.ArrayNum >= 5) ZoneDurations.at(4) = 70;
if (ZoneDurations.ArrayNum >= 6) ZoneDurations.at(5) = 60;
if (ZoneDurations.ArrayNum >= 7) ZoneDurations.at(6) = 60;
if (ZoneDurations.ArrayNum >= 8) ZoneDurations.at(7) = 55;
if (ZoneDurations.ArrayNum >= 9) ZoneDurations.at(8) = 45;
if (ZoneDurations.ArrayNum >= 10) ZoneDurations.at(9) = 75;
if (ZoneDurations.ArrayNum >= 11) ZoneDurations.at(10) = 0;
if (ZoneHoldDurations.ArrayNum >= 1) ZoneHoldDurations.at(0) = 0;
if (ZoneHoldDurations.ArrayNum >= 2) ZoneHoldDurations.at(1) = 170;
if (ZoneHoldDurations.ArrayNum >= 3) ZoneHoldDurations.at(2) = 120;
if (ZoneHoldDurations.ArrayNum >= 4) ZoneHoldDurations.at(3) = 90;
if (ZoneHoldDurations.ArrayNum >= 5) ZoneHoldDurations.at(4) = 80;
if (ZoneHoldDurations.ArrayNum >= 6) ZoneHoldDurations.at(5) = 50;
if (ZoneHoldDurations.ArrayNum >= 7) ZoneHoldDurations.at(6) = 30;
if (ZoneHoldDurations.ArrayNum >= 8) ZoneHoldDurations.at(7) = 0;
if (ZoneHoldDurations.ArrayNum >= 9) ZoneHoldDurations.at(8) = 0;
if (ZoneHoldDurations.ArrayNum >= 10) ZoneHoldDurations.at(9) = 0;
if (ZoneHoldDurations.ArrayNum >= 11) ZoneHoldDurations.at(10) = 0;
*/
} }
LOG_INFO(LogZone, "SafeZonePhase: {}", GameModeAthena->Get<int>(SafeZonePhaseOffset)); LOG_INFO(LogZone, "SafeZonePhase: {}", GameModeAthena->Get<int>(SafeZonePhaseOffset));