T2-BoL/scripts/modScripts/server/propertyOwning.cs
Robert MacGregor c4114d5c6d Dear God why did I ever use Tribal IDE!
Fixed tabbing and made the code cleaner and not so hard to read.
2012-07-28 10:56:45 -04:00

194 lines
6.4 KiB
C#

// --------------------------------------------------------
// A script that allows one to buy property.
// The script is in a BETA state, so it may have bugs.
//
// TODO:
// Make the script take rotation into consideration..
// Find a way to 'purchase' interiors
// --------------------------------------------------------
function InteriorInstance::buyObject(%this,%objectID,%client,%team)
{
if (%this.generatorCount $= "")
%this.generatorCount = 0;
if (%this.inventoryCount $= "")
%this.inventoryCount = 0;
if (%this.sensorCount $= "")
%this.sensorCount = 0;
if (%this.sentryCount $= "")
%this.sentryCount = 0;
if (%this.bannerCount $= "")
%this.bannerCount = 0;
if (%this.turretBaseCount $= "")
%this.turretBaseCount = 0;
switch(%objectID)
{
case 0: //Generator
if (%this.generatorCount == $Property::Max[%this.interiorFile,0])
return false;
%shape = new StaticShape()
{
DataBlock = GeneratorLarge;
Position = vectorAdd($Property::Offset[%this.interiorFile,0,%this.generatorCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,0,%this.generatorCount];
Team = %team;
};
GeneratorLarge.gainPower(%shape);
%this.generatorCount++;
case 1: //Inventory
if (%this.generatorCount == 0 || %this.inventoryCount == $Property::Max[%this.interiorFile,1]) //Don't create if there's no generators
return false;
%shape = new StaticShape()
{
DataBlock = StationInventory;
Position = vectorAdd($Property::Offset[%this.interiorFile,1,%this.inventoryCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,1,%this.inventoryCount];
Team = %team;
};
StationInventory.gainPower(%shape);
%this.inventoryCount++;
case 2: //Sensor (Medium)
if (%this.generatorCount == 0 || %this.sensorCount == $Property::Max[%this.interiorFile,2])
return false;
%shape = new StaticShape()
{
DataBlock = SensorMediumPulse;
Position = vectorAdd($Property::Offset[%this.interiorFile,2,%this.sensorCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,2,%this.sensorCount];
Team = %team;
};
SensorMediumPulse.gainPower(%shape);
%this.sensorCount++;
case 3: //Sensor (Large)
if (%this.generatorCount == 0 || %this.sensorCount == $Property::Max[%this.interiorFile,2])
return false;
%shape = new StaticShape()
{
DataBlock = SensorLargePulse;
Position = vectorAdd($Property::Offset[%this.interiorFile,3,%this.sensorCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,3,%this.sensorCount];
Team = %team;
};
SensorLargePulse.gainPower(%shape);
%this.sensorCount++;
case 4: //Sentry Turrets
if (%this.generatorCount == 0 || %this.sentryCount == $Property::Max[%this.interiorFile,4])
return false;
%shape = new StaticShape()
{
DataBlock = SentryTurret;
Position = vectorAdd($Property::Offset[%this.interiorFile,4,%this.sentryCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,4,%this.sentryCount];
Team = %team;
};
SentryTurret.gainPower(%shape);
%this.sentryCount++;
case 5: //Banner (Strength)
if (%this.bannerCount == $Property::Max[%this.interiorFile,5])
return false;
%shape = new StaticShape()
{
DataBlock = Banner_Strength;
Position = vectorAdd($Property::Offset[%this.interiorFile,5,%this.bannerCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,5,%this.bannerCount];
Team = %team;
};
%this.bannerCount++;
case 6: //Large Turret Base
if (%this.generatorCount == 0 || %this.turretBaseCount == $Property::Max[%this.interiorFile,6])
return false;
%shape = new StaticShape()
{
DataBlock = TurretBaseLarge;
Position = vectorAdd($Property::Offset[%this.interiorFile,6,%this.turretBaseCount],%this.getPosition());
Rotation = $Property::Rotation[%this.interiorFile,6,%this.turretBaseCount];
Team = %team;
};
%this.turretBaseCount++;
}
%this.getGroup().add(%shape);
setTargetName(%shape.target,addTaggedString(%client.namebase @ "'s"));
setTargetSensorGroup(%shape.getTarget(), %team);
%shape.setSelfPowered();
return %shape;
}
function staticShape::setPosition(%this,%pos)
{
%this.setTransform(%pos);
return %this;
}
function staticShape::getRotation(%this)
{
%trans = %this.getTransform();
return getWord(%trans, 3) SPC getWord(%trans, 4) SPC getWord(%trans,5);
}
function objectIDToDatablock(%objectID)
{
switch(%objectID)
{
case 0: return "GeneratorLarge";
case 1: return 0;
default: return -1;
}
return -1;
}
//This the array that stores all the positions and rotations for purchases of objects. I'll eventually move this to be a part of the basicFileProcessing.
//Beagle Tower (bbunk2)
//Generators
$Property::Offset["bbunk2.dif",0,0] = "0.136109 6.92569 3.80877";
$Property::Rotation["bbunk2.dif",0,0] = "1 0 0 0";
//Inventory
$Property::Offset["bbunk2.dif",1,0] = "-13.5045 6.57603 -6.49712";
$Property::Rotation["bbunk2.dif",1,0] = "0 0 -1 88.8085";
$Property::Offset["bbunk2.dif",1,1] = "13.5045 6.57603 -6.49712";
$Property::Rotation["bbunk2.dif",1,1] = "0 0 1 88.8085";
//Medium Sensors
$Property::Offset["bbunk2.dif",2,0] = "-0.0187805 3.42132 30.8251";
$Property::Rotation["bbunk2.dif",2,0] = "1 0 0 0";
//Large Sensors
$Property::Offset["bbunk2.dif",3,0] = "-0.0187805 3.42132 30.8251";
$Property::Rotation["bbunk2.dif",3,0] = "1 0 0 0";
//Sentry Turrets
$Property::Offset["bbunk2.dif",4,0] = "0.018325 -0.513021 9.99179";
$Property::Rotation["bbunk2.dif",4,0] = "0.706825 0.707389 0.000371874 179.92";
$Property::Offset["bbunk2.dif",4,1] = "-0.092863 10.5404 -0.443447";
$Property::Rotation["bbunk2.dif",4,1] = "0.577209 -0.577449 -0.577392 119.938";
//Banners (Strength)
$Property::Offset["bbunk2.dif",5,0] = "-0.150952 9.53516 9.82968";
$Property::Rotation["bbunk2.dif",5,0] = "0 0 1 179.909";
//Large Turret Base
$Property::Offset["bbunk2.dif",6,0] = "0.0332212 11.5991 27.9961";
$Property::Rotation["bbunk2.dif",6,0] = "1 0 0 0";
//Max values for each interior
$Property::Max["bbunk2.dif",0] = 1; //Max generators
$Property::Max["bbunk2.dif",1] = 2; //Max Inventories
$Property::Max["bbunk2.dif",2] = 1; //Max Medium Sensors
$Property::Max["bbunk2.dif",3] = 1; //Max Large Sensors
$Property::Max["bbunk2.dif",4] = 2; //Max Sentry Turrets
$Property::Max["bbunk2.dif",5] = 1; //Max Banners (Strength)
$Property::Max["bbunk2.dif",6] = 1; //Max Turret Bases