mirror of
https://github.com/Ragora/T2-BoL.git
synced 2026-01-20 03:24:47 +00:00
194 lines
6.4 KiB
C#
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
|