More ObsFlag Things

This commit is contained in:
ChocoTaco1 2020-03-29 01:38:04 -04:00
parent 7477a11c2f
commit 76511f8938
4 changed files with 56 additions and 0 deletions

View file

@ -584,6 +584,7 @@ function CTFGame::playerDroppedFlag(%game, %player)
{
%client = %player.client;
%flag = %player.holdingFlag;
%game.updateFlagTransform(%flag); // z0dd - ZOD, 8/4/02, Call to KineticPoet's flag updater
%held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag?
@ -628,6 +629,18 @@ function CTFGame::flagCap(%game, %player)
%client = %player.client;
%flag = %player.holdingFlag;
%flag.carrier = "";
// when a player cap the flag, continue observing the player
for(%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team)
{
%cl.observingFlag = false;
%cl.flagObserved = "";
%cl.flagObsTeam = "";
}
}
%held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag?

View file

@ -906,6 +906,18 @@ function SCtFGame::flagCap(%game, %player)
%client = %player.client;
%flag = %player.holdingFlag;
%flag.carrier = "";
// when a player cap the flag, continue observing the player
for(%i = 0; %i < ClientGroup.getCount(); %i++)
{
%cl = ClientGroup.getObject(%i);
if(%cl.team <= 0 && %cl.observingFlag && %cl.flagObsTeam == %flag.team)
{
%cl.observingFlag = false;
%cl.flagObserved = "";
%cl.flagObsTeam = "";
}
}
%held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag?

View file

@ -102,6 +102,28 @@ function Observer::onTrigger(%data, %obj, %trigger, %state)
}
}
function Observer::setMode(%data, %obj, %mode, %targetObj)
{
if(%mode $= "")
return;
%client = %obj.getControllingClient();
if(%client $= "")
return;
switch$(%mode)
{
case "followFlag":
%transform = %targetObj.getTransform();
// observe the flag 2x more far than the normal
%obj.setOrbitMode(%targetObj, %transform, 1.0, 9.0, 9.0);
default:
Parent::setMode(%data, %obj, %mode, %targetObj);
}
%obj.mode = %mode;
}
};
// Prevent package from being activated if it is already
@ -146,6 +168,9 @@ function serverCmdObserveSecondFlag(%client)
observeFlag(%client, %player.client, 2, 2);
}
// observeFlag(%client, %target, %type, %flagTeam)
// Info: handle the observe flag feature
// observeFlag(%cl, $TeamFlag[%flag.team], 1, %flag.team);
function observeFlag(%client, %target, %type, %flagTeam)
{
if(!isObject(%client) || !isObject(%target) || !isObject(%client.camera))

View file

@ -1718,9 +1718,15 @@ function DefaultGame::clientMissionDropReady(%game, %client)
if( %client.camera.mode $= "observerFly" || %client.camera.mode $= "justJoined")
{
%observer = true;
%client.observingFlag = false;
%client.flagObserved = "";
%client.flagObsTeam = "";
%client.observerStartTime = getSimTime();
commandToClient(%client, 'setHudMode', 'Observer');
%client.setControlObject( %client.camera );
//displayObserverHud( %client, 0 );
// Eolk - flag stats stuff
//updateObserverFlyHud(%client);