97 lines
2.7 KiB
Ucode
97 lines
2.7 KiB
Ucode
class TSCGameReplicationInfo extends ScrnGameReplicationInfo;
|
|
|
|
var bool bSingleTeamGame;
|
|
var ShopVolume BlueShop;
|
|
var byte OvertimeWaves; // number of Overtime waves
|
|
var byte SudDeathWaves; // number of Sudden Death waves
|
|
var transient bool bSuddenDeath;
|
|
var byte HumanDamageMode;
|
|
|
|
var PlayerReplicationInfo TeamCaptain[2]; // MVOTE TEAM CAPTAIN
|
|
var PlayerReplicationInfo TeamCarrier[2]; // MVOTE TEAM CARRIER
|
|
var float BaseRadiusSqr; // Base radius squared, set from TSCGameType
|
|
var float MinBaseZ, MaxBaseZ; // min and max Z difference between player and base, set from TSCGameType
|
|
|
|
replication
|
|
{
|
|
reliable if ( bNetInitial && Role==ROLE_Authority )
|
|
bSingleTeamGame, OvertimeWaves, SudDeathWaves,
|
|
BaseRadiusSqr, MinBaseZ, MaxBaseZ;
|
|
|
|
reliable if( bNetDirty && Role == ROLE_Authority )
|
|
BlueShop, bSuddenDeath,
|
|
HumanDamageMode, TeamCaptain, TeamCarrier;
|
|
}
|
|
|
|
simulated function ShopVolume GetPlayerShop(PlayerReplicationInfo PRI)
|
|
{
|
|
if ( PRI == none || PRI.Team == none )
|
|
return none;
|
|
|
|
switch ( PRI.Team.TeamIndex ) {
|
|
case 0:
|
|
return CurrentShop;
|
|
break;
|
|
case 1:
|
|
return BlueShop;
|
|
break;
|
|
}
|
|
return none;
|
|
}
|
|
|
|
simulated function ShopVolume GetTeamShop(int TeamNum)
|
|
{
|
|
switch ( TeamNum ) {
|
|
case 0:
|
|
return CurrentShop;
|
|
break;
|
|
case 1:
|
|
return BlueShop;
|
|
break;
|
|
}
|
|
return none;
|
|
}
|
|
|
|
simulated function bool AtBase(Vector CheckLocation, Actor TeamBase)
|
|
{
|
|
local float ZDiff;
|
|
local TSCBaseGuardian gnome;
|
|
|
|
gnome = TSCBaseGuardian(TeamBase);
|
|
if ( gnome == none || !gnome.bActive )
|
|
return false;
|
|
|
|
ZDiff = CheckLocation.Z - gnome.GetLocation().Z;
|
|
return ZDiff >= MinBaseZ && ZDiff <= MaxBaseZ
|
|
&& VSizeSquared(CheckLocation - gnome.GetLocation()) < BaseRadiusSqr;
|
|
}
|
|
|
|
simulated function bool AtOwnBase(Pawn Player)
|
|
{
|
|
if ( Player.PlayerReplicationInfo == none || Player.PlayerReplicationInfo.Team == none )
|
|
return false;
|
|
|
|
return AtBase(Player.Location, Player.PlayerReplicationInfo.Team.HomeBase);
|
|
}
|
|
|
|
simulated function bool AtEnemyBase(Pawn Player)
|
|
{
|
|
local int TeamIndex;
|
|
|
|
if ( Player.PlayerReplicationInfo == none || Player.PlayerReplicationInfo.Team == none )
|
|
return false;
|
|
|
|
TeamIndex = Player.PlayerReplicationInfo.Team.TeamIndex;
|
|
if ( TeamIndex < 0 || TeamIndex > 1 )
|
|
return false;
|
|
|
|
return AtBase(Player.Location, Teams[1-TeamIndex].HomeBase);
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
BaseRadiusSqr=1562500.000000
|
|
MinBaseZ=-60.000000
|
|
MaxBaseZ=200.000000
|
|
}
|