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; %client = %player.client;
%flag = %player.holdingFlag; %flag = %player.holdingFlag;
%game.updateFlagTransform(%flag); // z0dd - ZOD, 8/4/02, Call to KineticPoet's flag updater %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? %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag?
@ -629,6 +630,18 @@ function CTFGame::flagCap(%game, %player)
%flag = %player.holdingFlag; %flag = %player.holdingFlag;
%flag.carrier = ""; %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? %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag?
%game.playerLostFlagTarget(%player); %game.playerLostFlagTarget(%player);

View file

@ -907,6 +907,18 @@ function SCtFGame::flagCap(%game, %player)
%flag = %player.holdingFlag; %flag = %player.holdingFlag;
%flag.carrier = ""; %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? %held = %game.formatTime(getSimTime() - %game.flagHeldTime[%flag], false); // z0dd - ZOD, 8/15/02. How long did player hold flag?
%game.playerLostFlagTarget(%player); %game.playerLostFlagTarget(%player);

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 // Prevent package from being activated if it is already
@ -146,6 +168,9 @@ function serverCmdObserveSecondFlag(%client)
observeFlag(%client, %player.client, 2, 2); 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) function observeFlag(%client, %target, %type, %flagTeam)
{ {
if(!isObject(%client) || !isObject(%target) || !isObject(%client.camera)) 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") if( %client.camera.mode $= "observerFly" || %client.camera.mode $= "justJoined")
{ {
%observer = true; %observer = true;
%client.observingFlag = false;
%client.flagObserved = "";
%client.flagObsTeam = "";
%client.observerStartTime = getSimTime(); %client.observerStartTime = getSimTime();
commandToClient(%client, 'setHudMode', 'Observer'); commandToClient(%client, 'setHudMode', 'Observer');
%client.setControlObject( %client.camera ); %client.setControlObject( %client.camera );
//displayObserverHud( %client, 0 ); //displayObserverHud( %client, 0 );
// Eolk - flag stats stuff // Eolk - flag stats stuff
//updateObserverFlyHud(%client); //updateObserverFlyHud(%client);