mirror of
https://github.com/tribes2/SkillSector.git
synced 2026-01-19 19:44:48 +00:00
delete disused methods from SSTP, implement the basics of SSAT
This commit is contained in:
parent
dacdfcbb1f
commit
ec82170d04
|
|
@ -1,3 +1,5 @@
|
|||
$AimTrainDuration = 60;
|
||||
|
||||
datablock PlayerData(DermDummy) : LightMaleBiodermArmor {
|
||||
canObserve = false;
|
||||
groundImpactMinSpeed = 0.01;
|
||||
|
|
@ -10,11 +12,65 @@ function resetDummyPosition(%this) {
|
|||
%this.setvelocity("0 0 0");
|
||||
}
|
||||
|
||||
|
||||
function atsessionEnd(%player) {
|
||||
echo("session ended");
|
||||
%player.aim_training = 0;
|
||||
%msg = "\c2AimTrain complete!\nScore: " @ %player.atscore;
|
||||
messageClient(%player.client, 'MsgAimTrainFinish', %msg);
|
||||
CenterPrint(%player.client, %msg, 3.5, 3);
|
||||
}
|
||||
|
||||
function atsessionCountdown(%player, %count) {
|
||||
messageClient(%player.client, 'MsgAimTrainCountdown', '\c2AimTrain session ends in %1 second(s).~wfx/misc/hunters_%1.wav', %count);
|
||||
}
|
||||
|
||||
function atsessionCheck(%player) {
|
||||
if (isObject(%player.client)) {
|
||||
if (%player.aim_training) {
|
||||
echo("aim training already active for player " @ %player);
|
||||
} else {
|
||||
messageClient(%player.client, 'MsgAimTrainStart', '\c2AimTrain start! You have %1 seconds.', $AimTrainDuration);
|
||||
echo("starting aim training for player " @ %player);
|
||||
%player.aim_training = 1;
|
||||
%player.atscore = 0.0;
|
||||
for (%i = 1; %i < 6; %i += 1) {
|
||||
schedule(($AimTrainDuration-%i)*1000, 0, "atsessionCountdown", %player, %i);
|
||||
}
|
||||
schedule($AimTrainDuration*1000, 0, "atsessionEnd", %player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// $DamageType::Default= 0; $DamageType::Blaster= 1; $DamageType::Plasma= 2; $DamageType::Bullet= 3; $DamageType::Disc= 4; $DamageType::Grenade= 5; $DamageType::Laser= 6; $DamageType::ELF= 7; $DamageType::Mortar= 8; $DamageType::Missile= 9; $DamageType::ShockLance= 10; $DamageType::Mine= 11; $DamageType::Explosion= 12; $DamageType::Impact= 13; // Object to object collisions $DamageType::Ground= 14; // Object to ground collisions $DamageType::Turret= 15;
|
||||
function calcScore(%targetObject, %sourceObject, %damageType, %damage, %position) {
|
||||
%score = %damage * 100;
|
||||
%directHitOnly = !$AimTrainLowDummies.isMember(%targetObject);
|
||||
switch$(%damageType) {
|
||||
case $DamageType::Disc:
|
||||
if (%damage != 0.5 && %directHitOnly) {
|
||||
echo("Indirect hit, doesn't count");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
%sourceObject.atscore += %score;
|
||||
BottomPrint(%sourceObject.client, "DMG: " @ %damage @ " TYPE: " @ %damageType @ " SCORE: " @ %score @ " DHO " @ %directHitOnly, 2, 3);
|
||||
}
|
||||
|
||||
function DermDummy::damageObject(%data, %targetObject, %sourceObject, %position, %amount, %damageType) {
|
||||
if (%sourceObject == 0) {
|
||||
// Fall damage
|
||||
return;
|
||||
}
|
||||
echo("Damage object received: " @ %targetObject @ " from " @ %sourceObject);
|
||||
|
||||
// find out if the player is already in a score session
|
||||
atsessionCheck(%sourceObject);
|
||||
|
||||
// how much damage was received?
|
||||
calcScore(%targetObject, %sourceObject, %damageType, %amount, %position);
|
||||
|
||||
// Reset training dummy
|
||||
cancel(%targetObject.resetter); // Avoid double resets
|
||||
// 750 allows for the original splash damage to decay
|
||||
// 500 results in a double reset because the dummy is hit by the original explosion twice
|
||||
|
|
@ -29,8 +85,10 @@ function DermDummy::damageObject(%data, %targetObject, %sourceObject, %position,
|
|||
// echo("wtf is this then: " @ %this @ " tgt " @ %sourceObject);
|
||||
// }
|
||||
|
||||
|
||||
function findAndReplacePlaceholders() {
|
||||
// This is not re-entrant safe, don't call it more than once!
|
||||
$AimTrainLowDummies = new SimSet();
|
||||
MissionCleanup.add($AimTrainLowDummies);
|
||||
// Replace placeholders in the aim training system
|
||||
%trash = new SimSet();
|
||||
for (%i = 0; %i < AimTrainLow.getCount(); %i += 1) {
|
||||
|
|
@ -42,6 +100,7 @@ function findAndReplacePlaceholders() {
|
|||
datablock = "DermDummy";
|
||||
};
|
||||
AimTrainLow.add(%replace);
|
||||
$AimTrainLowDummies.add(%replace);
|
||||
%replace.setName(%obj.getName());
|
||||
%replace.setTransform(%trans);
|
||||
%replace.original_transform = %trans;
|
||||
|
|
|
|||
|
|
@ -67,58 +67,6 @@ function BankTeleporter::teleportOut(%data, %obj, %player) {
|
|||
%data.schedule(1000, "teleportIn", %player);
|
||||
}
|
||||
|
||||
// function BankTeleporter::onCollision(%data, %obj, %col)
|
||||
// {
|
||||
// if(%col.getDataBlock().className !$= "Armor" || %col.getState() $= "Dead" || %col.teleporting) {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// if(isObject(%col)) {
|
||||
// if(%obj.team == %col.client.team) {
|
||||
// if(!%obj.isDisabled()) {
|
||||
// if(%obj.isPowered()) {
|
||||
// if(isObject(%obj.MPB) && %obj.MPB.fullyDeployed)
|
||||
// {
|
||||
// if(%obj.disabled == 0)
|
||||
// {
|
||||
// %col.lastWeapon = ( %col.getMountedImage($WeaponSlot) == 0 ) ? "" : %col.getMountedImage($WeaponSlot).item;
|
||||
// %col.unmountImage($WeaponSlot);
|
||||
// %pos = %obj.position;
|
||||
// %col.setvelocity("0 0 0");
|
||||
// %col.setMoveState(true);
|
||||
// %rot = getWords(%col.getTransform(), 3, 6);
|
||||
// %col.setTransform(getWord(%pos,0) @ " " @ getWord(%pos,1) @ " " @ getWord(%pos,2) + 0.6 @ " " @ %rot);
|
||||
// %col.teleporting = 1;
|
||||
// %col.startFade( 1000, 0, true );
|
||||
// %col.playAudio($PlaySound, StationVehicleAcitvateSound);
|
||||
|
||||
// %obj.disabled = 1; // Disable the teleporter to more then one person at a time for a time.
|
||||
// %obj.setThreadDir($ActivateThread, TRUE);
|
||||
// %obj.playThread($ActivateThread, "activate");
|
||||
|
||||
// %data.sparkEmitter(%obj);
|
||||
// %data.schedule(2000, "teleportout", %obj, %col);
|
||||
// %data.schedule(4000, "teleportingDone", %obj, %col);
|
||||
// }
|
||||
// else
|
||||
// messageClient(%col.client, 'MsgTeleportRecharging', '\c2Teleporter is recharging please stand by. ~wfx/powered/nexus_deny.wav');
|
||||
// }
|
||||
// else
|
||||
// MessageClient(%col.client, "MsgNoMPB", 'MPB is not deployed.');
|
||||
// }
|
||||
// else
|
||||
// messageClient(%col.client, 'MsgStationNoPower', '\c2Teleporter is not powered.');
|
||||
// }
|
||||
// else
|
||||
// messageClient(%col.client, 'MsgStationDisabled', '\c2Teleporter is disabled.');
|
||||
// }
|
||||
// else
|
||||
// messageClient(%col.client, 'MsgStationDenied', '\c2Access Denied -- Wrong team.~wfx/powered/station_denied.wav');
|
||||
// }
|
||||
// else
|
||||
// return;
|
||||
// }
|
||||
|
||||
function BankTeleporter::teleportIn(%data, %player) {
|
||||
messageClient(%collider.client, 'MsgTeleportStart', '\c2Teleport to '@ %data.destination @' complete! ~wfx/powered/nexus_idle.wav');
|
||||
%data.sparkEmitter(%player); // z0dd - ZOD, 4/24/02. teleport sparkles
|
||||
|
|
@ -171,53 +119,6 @@ function BankTeleporter::teleportingDone(%data, %obj, %player)
|
|||
if(%player.inv[%player.lastWeapon])
|
||||
%player.use(%player.lastWeapon);
|
||||
else
|
||||
%player.selectWeaponSlot( 0 );
|
||||
%player.selectWeaponSlot(0);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
// Gets called from function MobileBaseVehicle::vehicleDeploy(%data, %obj, %player, %force).
|
||||
// Passes this information to the MPBTeleporter::teleportOut function.
|
||||
//------------------------------------------------------------------------------------------
|
||||
|
||||
function checkSpawnPos(%MPB, %radius)
|
||||
{
|
||||
for(%y = -1; %y < 1; %y += 0.25)
|
||||
{
|
||||
%xCount=0;
|
||||
for(%x = -1; %x < 1; %x += 0.25)
|
||||
{
|
||||
$MPBSpawnPos[(%yCount * 8) + %xCount] = %x @ " " @ %y;
|
||||
%xCount++;
|
||||
}
|
||||
%yCount++;
|
||||
}
|
||||
%count = -1;
|
||||
|
||||
for(%x = 0; %x < 64; %x++)
|
||||
{
|
||||
%pPos = getWords(%MPB.getTransform(), 0, 2);
|
||||
%pPosX = getWord(%pPos, 0);
|
||||
%pPosY = getWord(%pPos, 1);
|
||||
%pPosZ = getWord(%pPos, 2);
|
||||
|
||||
%posX = %pPosX + ( getWord($MPBSpawnPos[%x],0) * %radius);
|
||||
%posY = %pPosY + (getWord($MPBSpawnPos[%x],1) * %radius);
|
||||
|
||||
%terrHeight = getTerrainHeight(%posX @ " " @ %posY);
|
||||
|
||||
if(mAbs(%terrHeight - %pPosZ) < %radius )
|
||||
{
|
||||
%mask = $TypeMasks::VehicleObjectType | $TypeMasks::MoveableObjectType |
|
||||
$TypeMasks::StaticShapeObjectType | $TypeMasks::StaticTSObjectType |
|
||||
$TypeMasks::ForceFieldObjectType | $TypeMasks::ItemObjectType |
|
||||
$TypeMasks::PlayerObjectType | $TypeMasks::TurretObjectType |
|
||||
$TypeMasks::InteriorObjectType;
|
||||
|
||||
InitContainerRadiusSearch(%posX @ " " @ %posY @ " " @ %terrHeight, 2, %mask);
|
||||
if(ContainerSearchNext() == 0)
|
||||
%MPB.spawnPos[%count++] = %posX @ " " @ %posY @ " " @ %terrHeight;
|
||||
}
|
||||
}
|
||||
%MPB.spawnPosCount = %count;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue