Fixed the UAMS Error

Re-Added the file that deleted the UAMS on accident, I will relocate
functioning at a later point.
This commit is contained in:
Robert Fritzen 2017-06-30 13:37:49 -05:00
parent 949148fb4e
commit 74582a675c
4 changed files with 216 additions and 12 deletions

View file

@ -79,7 +79,6 @@ PLEASE NOTE: For the Legacy (Pre-GitHub Versions) Changelogs, please see LEGACY
* Addressed the bug that would allow Vardison 2.0 to summon infinite minions
* Addressed the bug with Vardison 2.0 that made his Shadow Rift invincible
* Removed two un-used game objects that were never completed, the Medal Seal and the UAV Control Panel
* Note: This has inadvertently introduced a new bug causing the UAMS streak to no longer correctly function, this will be addressed before the official release of 3.91
* Removed a few erraneous exec calls to non-existent files in the mod load script
* Depricated the F2 Inventory Screen (Nobody ever used this)
* Fixed a few bugs in the F2 Menu

View file

@ -1,10 +1,10 @@
// TWM 2, Mod Load Script, Place any Scripts To Be Executed In Here
Error("********************************************");
Error("********************************************");
Error("******** EXECUTING TWM2 MOD SCRIPTS ********");
Error("********************************************");
Error("********************************************");
echo("********************************************");
echo("********************************************");
echo("******** EXECUTING TWM2 MOD SCRIPTS ********");
echo("********************************************");
echo("********************************************");
//Mod Systems
exec("serverControl.cs"); //Server Settings
@ -35,6 +35,9 @@ exec("scripts/TWM2/Systems/weaponModes.cs"); //Global Defines for Weapon
exec("scripts/TWM2/AI/DroneAI.cs"); //Drones
exec("scripts/TWM2/Systems/HarbingersWrath.cs"); //Harbinger's Wrath
//Mod Objects
exec("scripts/TWM2/ModObjects/UAMS.cs"); //UAMS Missile Satellite
//Mod Dependancies
exec("scripts/TWM2/loadmenu.cs"); //loadscreen
@ -134,7 +137,7 @@ BuildDeconList(); //build decon. list (con tool)
exec("scripts/TWM2/Bosses/LordVardison.cs"); //load him last
error("Loading custom scripts");
echo("Loading custom scripts");
exec("scripts/Customize/CustomScripts.cs");
schedule(5500, 0, "establishPGDConnection");
@ -143,11 +146,11 @@ cleanChallenges();
$ChallengeIndex = 0;
schedule(7000, 0, "downloadChallenges");
Error("********************************************");
Error("********************************************");
Error("************* EXECUTE COMPLETE *************");
Error("********************************************");
Error("********************************************");
echo("********************************************");
echo("********************************************");
echo("************* EXECUTE COMPLETE *************");
echo("********************************************");
echo("********************************************");
//POST LOAD TASKS.....
//OrderStreaks();

View file

@ -0,0 +1,188 @@
datablock StaticShapeData(MissileShape) : StaticShapeDamageProfile {
shapeFile = "weapon_missile_projectile.dts";
mass = 1.0;
repairRate = 0;
dynamicType = $TypeMasks::StaticShapeObjectType;
heatSignature = 0;
};
function CruiseMissileVehicle::onAdd(%this, %obj) {
Parent::onAdd(%this, %obj);
setTargetSensorGroup(%obj.getTarget(), %obj.team);
%body = new StaticShape() {
scale = "20 20 20";
datablock = MissileShape;
};
MissionCleanup.add(%body);
%obj.mountObject(%body, 1);
%body.vehicleMounted = %obj;
%obj.startFade(0,100,1);
}
function CruiseMissileVehicle::deleteAllMounted(%data, %obj) {
%body = %obj.getMountNodeObject(1);
if(!%body) {
return;
}
%body.delete();
}
//
function CreateMissileSat(%client, %unlim, %rem) {
if(%unlim $= "" || !%unlim) {
%unlim = 0;
%rem = 0;
}
if($Killstreak::GunshipSpawnLocation[$CurrentMission] $= "") {
%spawn = "0 -1000 400";
}
else {
%spawn = $Killstreak::GunshipSpawnLocation[$CurrentMission];
}
%sat = new FlyingVehicle() {
dataBlock = UAVVehicle;
position = %spawn;
rotation = "0 0 0 1";
team = %client.team;
};
MissionCleanUp.add(%sat);
setTargetSensorGroup(%sat.getTarget(), %client.team);
%sat.GoPoint = 1;
GunshipForwardImpulse(%sat);
%sat.ScanLoop = schedule(500, 0, "GetNextGunshipPoint", %sat);
%client.player.lastTransformStuff = %client.player.getTransform();
%sat.team = %client.Team;
%sat.setOwner(%client.player);
%sat.canLaucnhStrike = 1;
%sat.isUnlimitedSat = %unlim;
MessageClient(%client, 'msgSatcom', "\c3UAMS: Satellite Moving to Position, Standby....");
if(!%unlim) {
%client.player.setPosition(VectorAdd(%x SPC %y SPC 0,$Prison::JailPos));
%client.setControlObject(%sat.turretObject);
%client.schedule(499, setControlObject, %sat.turretObject);
MissileSatControlLoop(%client, %sat);
}
else {
%client.setControlObject(%sat.turretObject);
commandToClient(%client, 'ControlObjectResponse', true, getControlObjectType(%sat.turretObject,%client.player));
}
if(%rem) {
%sat.turretObject.setAutoFire(true);
}
}
function FireSatHornet(%sat, %slot, %source) {
%muzzlePos = %sat.getMuzzlePoint(%slot);
%muzzleVec = %sat.getMuzzleVector(%slot);
//Fiah
spawnprojectileSourceMod(HornetStrikeMissile, SeekerProjectile, %muzzlePos, %muzzleVec, %source);
ServerPlay3d(EscapePodLaunchSound, %sat.getPosition());
ServerPlay3d(EscapePodLaunchSound2, %sat.getPosition());
}
function MissileSatelliteBarrel::onFire(%data, %obj, %slot) {
//echo(%obj);
if(%obj.mountobj.canLaucnhStrike) {
%client = %obj.getControllingClient();
%source = %client.player; //muhaha
%obj.mountobj.canLaucnhStrike = 0;
FireSatHornet(%obj, %slot, %source);
schedule(1500, 0, "FireSatHornet", %obj, %slot, %source);
schedule(3000, 0, "FireSatHornet", %obj, %slot, %source);
if(!%obj.mountobj.isUnlimitedSat) {
schedule(4000, 0, "MakeCruiseMissile", %client, %obj);
schedule(4000, 0, "ServerPlay3d", EscapePodLaunchSound2, %obj.getPosition());
}
else {
schedule(30000, 0, "ResetSat", %obj.mountobj);
//
}
}
else {
if(!%obj.mountobj.isUnlimitedSat) {
return;
}
%client = %obj.getControllingClient();
bottomPrint(%client, "Missiles are still reloading... standby.", 2, 2);
if(isObject(%client.player) && %client.player.getState() !$= "dead") {
%client.setControlObject(%client.player);
}
}
}
function ResetSat(%sat) {
if(isObject(%sat)) {
%sat.canLaucnhStrike = 1;
}
}
function MakeCruiseMissile(%client, %sat) {
if(%client.getControlObject() != %sat) {
return;
}
%Missile = new FlyingVehicle() {
dataBlock = "CruiseMissileVehicle";
scale = "1 1 1";
team = %client.team;
mountable = "0"; //drive only
};
setTargetSensorGroup(%Missile.getTarget(), %Missile.team);
%Missile.setTransform(vectorAdd(%sat.getPosition(), "0 0 -5") SPC rotFromTransform(%sat.getTransform()));
%Missile.controller = %client;
%sat.GuidedMissile = %Missile;
MissionCleanup.add(%Missile);
%client.setControlObject(%Missile);
MissileSatGuidedLoop(%client, %Missile);
}
//just a good function to delete the satelite if the client reliquishes control
function MissileSatControlLoop(%client, %sat) {
if(!isObject(%sat)) {
if(isObject(%client.player)) {
ReMoveClientSW(%client);
}
return;
}
if((%client.getControlObject() != %sat.turretObject) && !%sat.isUnlimitedSat) {
//lets check if they are in the missile now...
if(%client.getControlObject() == %sat.turretObject.GuidedMissile) {
//MissileSatGuidedLoop(%client, %sat.turretObject.GuidedMissile);
}
//No, they reliquished all control before the guided fired...
else {
if(isObject(%client.player)) {
ReMoveClientSW(%client);
}
}
%sat.schedule(1000, "Delete");
return;
}
//%client.setControlObject(%sat.turretObject);
schedule(100, 0, "MissileSatControlLoop", %client, %sat);
}
function MissileSatGuidedLoop(%client, %missile) {
if(%client.getControlObject() != %missile) {
if(isObject(%client.player)) {
ReMoveClientSW(%client);
}
return;
}
schedule(100, 0, "MissileSatGuidedLoop", %client, %missile);
}

View file

@ -228,6 +228,20 @@ function TWM2Lib_MainControl(%functionName, %arguments) {
}
}
function ReMoveClientSW(%client) {
if(!isObject(%client.player) || %client.player.getState() $= "dead") {
return;
}
else {
%sp = Game.pickPlayerSpawn(%client, false);
//2 sec Invincibility please?
%client.player.setInvinc(1);
%client.player.schedule(2000, "setInvinc", 0);
%client.player.setTransform(%client.player.lastTransformStuff); //%sp for new spawn
%client.setControlObject(%client.player);
}
}
function ListGUIDS() {
for(%i = 0; %i < ClientGroup.getCount(); %i++) {
%cl = ClientGroup.getObject(%i);