Second Chance Mutator. Мутатор "Второй шанс" Second Chance Mutator. Мутатор "Второй шанс" В данной версии реализовано оживление всех после всеобщей смерти 1 раз за карту. SecondChanceMut.uc SecondChanceRules.uc Ссылка на скомпилированную версию: YaDisk Автор: Flame
#1
Отправлено:
Second Chance Mutator. Мутатор “Второй шанс”
В данной версии реализовано оживление всех после всеобщей смерти 1 раз за карту.
SecondChanceMut.uc
class SecondChanceMut extends Mutator;
var SecondChanceRules Rules;
function PostBeginPlay()
{
if (Rules == None)
Rules = Spawn(class'SecondChanceRules');
}
defaultproperties
{
GroupName="KF-SecondChance"
FriendlyName="SecondChanceMut"
Description="SecondChanceMut"
}
SecondChanceRules.uc
class SecondChanceRules extends GameRules;
var bool bActivated;
function PostBeginPlay()
{
if (Level.Game.GameRulesModifiers == None)
Level.Game.GameRulesModifiers = Self;
else
Level.Game.GameRulesModifiers.AddGameRules(Self);
}
function AddGameRules(GameRules GR)
{
if (GR != Self)
Super.AddGameRules(GR);
}
function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason)
{
if (!bActivated && KFGameType(Level.Game).WaveNum <= KFGameType(Level.Game).FinalWave)
{
ResurrectPlayers();
bActivated = true;
return false;
}
if (NextGameRules != None)
return NextGameRules.CheckEndGame(Winner, Reason);
return true;
}
// Приходится чуток поизвращаться. Тут почему то не прокатывает стандартное оживление из той же админки
function ResurrectPlayers()
{
local Controller C;
local Pawn tmpPawn;
tmpPawn = Spawn(class'Pawn');
// Flame. В KFGameType есть проверка на bWaveInProgress
KFGameType(Level.Game).bWaveInProgress = false;
//
for (C = Level.ControllerList; C != None; C = C.nextController)
{
if (C.IsA('PlayerController') && C.PlayerReplicationInfo.PlayerID > 0)
{
// Flame. В KFGameType есть проверка на bOutOfLives и на C.Pawn!=none. Эти две строчки позволят обойти это
C.PlayerReplicationInfo.bOutOfLives = false;
C.Pawn = tmpPawn;
//
Level.Game.RestartPlayer(C);
}
}
KFGameType(Level.Game).bWaveInProgress = true;
tmpPawn.Destroy();
}
Ссылка на скомпилированную версию: YaDisk
Автор: Flame