Some tweaks to Bineshi's "Unleashed" mod

More
12 years 8 months ago #19179 by SRC
Hello All,

I'm fiddling with Bineshi's/Nathan Kinsman's Unleashed V94 mod and will eventually put the results up at the mods download page. For now, I'll report in this thread various tweaks as they are coded. I'll include code fragments for those who want to adjust their own local Unleashed installations.

I also solicit suggestions for features that might be useful. In addition to being incorporated into the Unleashed mod, these could be put into a stand-alone mod of useful new functions in EoC and could be used with the game as distributed, or could be co-loaded with other mods.

Here are new functions that are currently working, and for which I will post code fragments in subsequent posts to this thread.

a) "Hostile Pause". The game will Pause (by playing the intro movie, looped [Cambragal's suggestion; thanks!]) if a hostile ship comes within sensor range or if the player ship is attacked by a neutral
ship. This allows you to step away from the PC without fear of losing your ship while you are away. It also allows you to lurk in wait for something interesting to show up, such as a Marauder supply convoy to plunder, without having to stare at the screen for long periods of idle time.

A useful additional feature (not coded; thinking about how to do it) would be to set this to trigger not just on hostiles or attacks, but on the appearance of ships of specific factions. That would require a way for the player to modify variables inside the program during game play. The UniGUI interface might make this possible -- perhaps it could present a list of factions and the player could select all factions on which to trigger the PAUSE function lf a ship of any of those factions were to show up within sensor range.

b) Toggle the Pinguin Auto-turrets off/on while leaving the state of the point-defense turrets alone.

I prefer to leave the anti-missile PD turrets on all the time, but to have the auto-turrets off when approaching a crowded station. They tend to shoot at some factions even if no ships have turned hostile yet.

c) Make the target cargo pod remote-loggable.

You can then Remote link to it and have it dock to your ship. This is a lot quicker than ordering the Pinguin to dock to a pod. I find it crazy that (for example, in Act 0) this large unmaneuverable ship is the one that has to position itself to dock with those dinky Yellowstone utility trucks. And it's crazier when you're trying to collect a pod by docking your ship to it. Jafs has a better way, and now we do too.

d) Single keystroke command to instruct target cargo pod to dock to the Pinguin.

These can be issued in quick succession, so it is much easier to fill up the Pinguin's cargo dockports with pods now. This command also changes the pod faction to the player's faction, same as when Jafs loads pods.


I'll post the code fragments for these functions tomorrow.

Please Log in or Create an account to join the conversation.

More
12 years 8 months ago #17158 by SRC
Here is the code block for the new functions that I have added to Bineshi's wonderful "Unleashed" mod.

While I am appending these functions to my local copy of Bineshi's iUnleashed.pog file, I believe that all of them (with the possible exception of the auto-turret toggle function) should work as standalone features that could be in a separate mod that could be loaded with any other EoC mod.

A) first, the header importation references need to be augmented:

uses
iGame

B) also

provides
AutoTurretToggle,
HostilePauseToggle,
EnableCargoPodRemote,
AssertOwnershipOfCargoPod,
DockCargoPodToPlayerShip,
CheckHostiles,

C)

// Local functions

prototype AutoTurretToggle();
prototype HostilePauseToggle();
prototype EnableCargoPodRemote();
prototype AssertOwnershipOfCargoPod();
prototype DockCargoPodToPlayerShip();
prototype CheckHostiles();


D) The code block itself:

// ****************************************************************************
// * AutoTurretToggle
// ****************************************************************************

// SRC 2012/03/07

AutoTurretToggle()
{
hship player_ship = iShip.FindPlayerShip();
hship turret1;
hship turret2;

if ( !Object.PropertyExists( player_ship, "auto_turrets_active" ) )
Object.AddBoolProperty( player_ship, "auto_turrets_active", true );

if ( Object.PropertyExists( player_ship, "tfighter1" ) )
{
turret1 = iShip.Cast( Object.HandleProperty( player_ship, "tfighter1" ) );
turret2 = iShip.Cast( Object.HandleProperty( player_ship, "tfighter2" ) );

if ( Object.BoolProperty( player_ship, "auto_turrets_active" ) == true )
{
Object.SetBoolProperty( player_ship, "auto_turrets_active", false );
iAI.PurgeOrders( turret1 );
iAI.PurgeOrders( turret2 );
Object.RemoveProperty( turret1, "tfighter" );
Object.RemoveProperty( turret2, "tfighter" );
iShip.LockDownWeapons( turret1 );
iShip.LockDownWeapons( turret2 );
iHUD.Print( "AUTO TURRETS DEACTIVATED" );
iHUD.PlayAudioCue( AC_ValidInput );
}
else
{
Object.SetBoolProperty( player_ship, "auto_turrets_active", true );
iSim.WeaponTargetsFromContactList( iSim.Cast( turret1 ) );
iSim.WeaponTargetsFromContactList( iSim.Cast( turret2 ) );
Object.AddBoolProperty( turret1, "tfighter", true );
Object.AddBoolProperty( turret2, "tfighter", true );
iHUD.Print( "AUTO TURRETS ACTIVATED" );
iHUD.PlayAudioCue( AC_ValidInput );
}
}

else
{
iHUD.Print( "ENHANCED TURRETS NOT INSTALLED" );
iHUD.PlayAudioCue( AC_InvalidInput );
}
}

// ****************************************************************************
// * HostilePauseToggle
// ****************************************************************************
// * Toggles the state f the "hostile_pause_active" Boolean property of the
// * player ship. A related module, XXX pauses game play if a) the hostile_pause_active
// * property is true and either b) hostiles are or become present or c) the player
// * ship is attacked.

// SRC 2012/03/08

HostilePauseToggle()
{
hship player_ship = iShip.FindPlayerShip();

if ( !Object.PropertyExists( player_ship, "hostile_pause_active" ) )
{
Object.AddBoolProperty( player_ship, "hostile_pause_active", true );
iHUD.Print( "FIRST HOSTILE ALARM ACTIVATED" );
iShip.Attacked( player_ship );
}
else
{
if ( Object.BoolProperty( player_ship, "hostile_pause_active" ) == true )
{
Object.SetBoolProperty( player_ship, "hostile_pause_active", false );
iHUD.Print( "FIRST HOSTILE ALARM DEACTIVATED" );
}
else
{
Object.SetBoolProperty( player_ship, "hostile_pause_active", true );
iShip.Attacked( player_ship );
iHUD.Print( "FIRST HOSTILE ALARM ACTIVATED" );

}
}

}


// ****************************************************************************
// * EnableCargoPodRemote
// ****************************************************************************

// SRC 2012/03/09

EnableCargoPodRemote()
{

hship player_ship = iShip.FindPlayerShip();
hisim target_pod = iShip.CurrentTarget( player_ship );

if ( iSim.Type( iSim.Cast( target_pod ) ) == T_CargoPod )
{

iRemotePilot.EnableRemoteConnection( iShip.Cast(target_pod) , true );
iHUD.Print( "TARGET CARGO POD ENABLED FOR REMOTE LINK" );

}
else
{
iHUD.Print( "CANNOT REMOTE ENABLE TARGET: NOT CARGO" );
}

}

// ****************************************************************************
// * AssertOwnershipOfCargoPod
// ****************************************************************************

// SRC 2012/03/12

AssertOwnershipOfCargoPod()
{
hship player_ship = iShip.FindPlayerShip();
hisim target_pod = iShip.CurrentTarget( player_ship );

if ( iSim.Type( iSim.Cast( target_pod ) ) == T_CargoPod )
{

if ( Sim.DistanceBetweenCentres( player_ship, target_pod ) < 4km )
{
iSim.SetFaction( target_pod, iFaction.Find( "Player" ) );
iHUD.Print( "OWNERSHIP OF TARGET CARGO POD ASSERTED" );
}
else
{
iHUD.Print( "TARGET POD TOO FAR TO REMOTE APPROACH" );
}
}

else
{
iHUD.Print( "CANNOT ASSERT OWNERSHIP OF TARGET: NOT CARGO" );
}

}


// ****************************************************************************
// * DockCargoPodToPlayerShip
// ****************************************************************************

// SRC 2012/03/09

DockCargoPodToPlayerShip()
{

hship player_ship = iShip.FindPlayerShip();
hisim target_pod = iShip.CurrentTarget( player_ship );

if ( iSim.Type( iSim.Cast( target_pod ) ) == T_CargoPod )
{

if ( Sim.DistanceBetweenCentres( player_ship, target_pod ) < 4km )
{
iSim.SetFaction( target_pod, iFaction.Find( "Player" ) );
iAI.PurgeOrders( iShip.Cast( target_pod ) );
iPilotSetup.GenericCargoPod( iShip.Cast( target_pod ) );
iAI.GiveDockOrder( iShip.Cast( target_pod ), player_ship );
iHUD.Print( "REMOTE PILOTING POD TO SHIP" );
}
else
{
iHUD.Print( "TARGET POD TOO FAR TO REMOTE APPROACH" );
}
}
else
{
iHUD.Print( "TARGET IS NOT CARGO" );
}

}

//

// ****************************************************************************
// * CheckHostiles
// ****************************************************************************
// * Toggles the state of the "hostile_pause_active" Boolean property of the
// * player ship. A related module, HostilePauseToggle pauses game play if a) the hostile_pause_active
// * property is true and either b) hostiles are or become present or c) the player
// * ship is attacked.

// SRC 2012/03/09


CheckHostiles()
{
int number_hostile_ships;
bool player_ship_attacked;

set hostile_ships; // Hostile ships within player ship sensor range
list hostile_ships_list; // Hostile ships list

hship player_ship = iShip.FindPlayerShip();


hostile_ships = iSim.PlayerHostilesInRadius( iShip.MaxSensorRange( player_ship ), TM_Ship );
hostile_ships_list = List.FromSet( hostile_ships );
number_hostile_ships = List.ItemCount( hostile_ships_list );

player_ship_attacked = iShip.Attacked( player_ship );

if ( ( number_hostile_ships > 0 ) || player_ship_attacked )
{
if (player_ship_attacked) iHUD.Print( "SHIP UNDER ATTACK" );

iHUD.Print( String.FormatInt( "THERE ARE %d HOSTILE SHIPS IN THE AREA", number_hostile_ships ) );

// Disable the alarm
Object.SetBoolProperty( player_ship, "hostile_pause_active", false );
iHUD.Print( "FIRST HOSTILE ALARM DEACTIVATED" );
// klugey substitute for the Spaceflight.Pause func

iGame.PlayMovieLooped( "movies/intro" );
}

}


E) and the key bindings I adopted (arbitrary, of course, but these seem useful mnemonics)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Additional KeyBindings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Toggle Auto Turrets added Rev 0.001

[iUnleashed.AutoTurretToggle]
Keyboard, T, ALT

; Toggle Hostile Pause added Rev 0.001
[iUnleashed.HostilePauseToggle]
Keyboard, P, SHIFT

; Make Cargo Pod Remote Linkable for Docking to Player Ship added Rev 0.001
[iUnleashed.EnableCargoPodRemote]
Keyboard, R, CTRL

; Change Cargo Pod faction to player's faction added Rev 0.001
[iUnleashed.AssertOwnershipOfCargoPod]
Keyboard, A, CTRL

; Dock Cargo Pod to Player Ship added Rev 0.001
[iUnleashed.DockCargoPodToPlayerShip]
Keyboard, D, SHIFT

============================================================

Comments and suggestions are welcome. I have tested all of these and I believe them to work. If there are problems or unexpected interactions with other functions, let me know and I'll try to fix them.

Also, I include these code blocks as encouragement to others who may be (as I was until about a week ago) intimidated by POG coding to give it a hand. If you have any exposure to other programming languages, you will be able to pick up POG. And if you have none, reading the SDK HELP file and examining working code will help you to learn. I'd like to think that EoC will be around for quite a while yet, and if it is sustained by a community of enthusiastic player/programmers, it might. And, who knows, maybe someone will resurrect Particle Systems and recover the rights to the original game engine and put out further versions. I think that this system has some life left in it.

Please Log in or Create an account to join the conversation.

More
12 years 8 months ago #17160 by SRC
A request for help from the Forum:

I'm trying to increase the cargo capacity of the player ship "Pinguin" from
6 cargo pads (5 under the spine and one on the nose) to 11 (10 under the spine,
same as the standard "City" class container-hauler and the same as the Jafs
version of the "Pinguin".

I plainly am missing something important. I trial modified the sims/ships/
player/storm_petrel.ini file to add a single additional dockpoint at location [16]
and displaced all the other systems accordingly. I modified the scene file
sims/ships/player/pinguin.lws to place the additional dockport on the lower
side of the ship spine.

In game play, no additional structures appear on the ship surface and the
cargo capacity is not increased.

A hint that I am missing something important is in the hangar/loadout screen

The summary of the loadout at right is messed up.

Instead of the standard (full equipment) 4 twinpack launchers, now 5 are listed,
but the 5th (which is in the location at which I would expect to see a Countermeasures
launcher) is reported to be loaded with Flares. So the equipment name is displaced but
the magazine contents are preserved.

In the location at which I would have expected to see the first of the heavy mount
directed energy weapons (a PBC class weapon), there is a countermeasures launcher
listed.

In the "defensive" section at left, which shows the specific equipment mounted
on the various subsystems mountpoints, the 3rd LDA is gone, replaced by a Twinpack launcher.

In the "offensive" section at left, the light-mount-point is gone, but the weapon
that had formerly been assigned to it (a quad-light-PBC) is now assigned to the
3rd heavy-mount-point.

Plainly my insertion of an additional dockport has displaced the other subsystems
and I need (if possible) to modify some other file to tell the game engine what
the new template[#] assignments in the storm_petrel.ini file mean; what type of
subsystems they are.

I would appreciate any and all help the Forum can provide on this. Thanks!

Please Log in or Create an account to join the conversation.

More
12 years 8 months ago #17162 by cambragol
Post the ini and lws file here and I can likely lend a hand. If you are still pursuing this route for the container stacking. It may have something to do with the pinguin.lws file. Things can get out of order if the "parent" definition gets mixed up when adding elements via notepad, rather than in lightwave itself. You have to make sure that every child is parented correctly.

A solution I can envision for container stacking would be to place invisible dockports at the point where second level pods should stack. Then activate them in game when the rest are filled...? I did something similar for the mountpoints on ships in US. The Devastator corvette has an invisible mountpoint set out from the wing, to allow "stacking" of armaments. However...activating or deactivating such a dockport seems unlikely...

Please Log in or Create an account to join the conversation.

More
12 years 8 months ago #17163 by SRC
Hi Cambragal,

The dual pod stacking works. I gave the 2nd universal dockport only to the cube-shaped
"freightpod" sim as the other sims are smaller and don't have a large flat surface on the
pod face opposite the first dockport.

The Pinguin looks very lopsided with the additional pods docked on. And it does seem
more sluggish.

I remain interested in understanding why I cannot increase the dockports
on the Pinguin, and will include the .lws and .ini files in the next post.

Here's the code for the revised "dock cargo" module. If the pod to be docked
has only one dockport, it looks for another pod, already docked to the Pinquin,
that has a free dockport. It's not elegant, but it works. It could be compactified
by collapsing some repetitive pieces into called functions

// ****************************************************************************
// * DockCargoPodToPlayerShip
// ****************************************************************************

// SRC 2012/03/14

DockCargoPodToPlayerShip()
{
int number_child;
int number_dockable_dockports;
int count_child;
int number_docked_dual_dockable_pods;

hobject child;
hobject dockable_pod;

hship player_ship = iShip.FindPlayerShip();
hisim player_sim = iSim.Cast ( player_ship );
hisim target_pod = iShip.CurrentTarget( player_ship );

if ( iSim.Type( iSim.Cast( target_pod ) ) == T_CargoPod )
{

if ( Sim.DistanceBetweenCentres( player_ship, target_pod ) < 4km )
{
// Does player ship have free cargo-compatible
// dockports?
number_dockable_dockports = iDockport.Count( player_sim, DT_Cargo, DS_Free )
+ iDockport.Count( player_sim, DT_CargoFreightOnly, DS_Free ) ;


// These are excluded because it appears that Bineshi put a univeral dockport in the same Pinguin Nose
// location as the forward cargo dockport. The code below cannot tell that these two overlapping
// ports can only handle one pod. This exclusion may render this module unable to dock pods to
// player ships other than the Pinguin which have only universal dockports. In that case, the player
// will have to remote link and manually autopilot the pods to his ship, and will not be able to
// double dock
// + iDockport.Count( player_sim, DT_General, DS_Free )
// + iDockport.Count( player_sim, DT_Universal, DS_Free );


iHUD.Print( String.FormatInt( "SHIP HAS %d FREE CARGO-COMPATIBLE DOCKPORTS", number_dockable_dockports ) );

if ( ( number_dockable_dockports == 0 ) || ( iDockport.Count( target_pod, DT_Universal, DS_Any ) < 2 ) )
{

// Determine the number of dual dockable cargo pods
// with a free dockport that are already docked to the
// ship

number_child = Sim.ChildCount( player_ship );
number_docked_dual_dockable_pods = 0;

for ( count_child = 0; count_child < number_child ; ++count_child )
{
child = Sim.NthChild( iSim.Cast( player_ship ), count_child );

if ( ( iSim.IsDockedTo( iSim.Cast( child ), iSim.Cast( player_ship ) ) )
&& ( iSim.Type( iSim.Cast( child ) ) == T_CargoPod ) )
// && ( !Object.PropertyExists( iSim.Cast( child ), "loaded" ) ) )
{
iHUD.Print( String.FormatInt( "CARGO POD HAS %d UNIVERSAL DOCKPORTS", iDockport.Count( iSim.Cast( child ), DT_Universal, DS_Any ) ) );
iHUD.Print( String.FormatInt( " OF WHICH %d ARE FREE", iDockport.Count( iSim.Cast( child ), DT_Universal, DS_Free ) ) );


if (iDockport.Count( iSim.Cast( child ), DT_Universal, DS_Free ) > 0 )
{
// Reserve the first free dual dockable docked pod
if ( number_docked_dual_dockable_pods == 0 ) dockable_pod = child;
number_docked_dual_dockable_pods = number_docked_dual_dockable_pods + 1;
}

}
}

iHUD.Print( String.FormatInt( "THERE ARE %d DUAL DOCKABLE PODS DOCKED ON THE SHIP", number_docked_dual_dockable_pods ) );


if ( number_docked_dual_dockable_pods > 0 )
{
// Prepare Pod for Remote Autopiloting to ship
iSim.SetFaction( target_pod, iFaction.Find( "Player" ) );
iAI.PurgeOrders( iShip.Cast( target_pod ) );
iPilotSetup.GenericCargoPod( iShip.Cast( target_pod ) );
iAI.GiveDockOrder( iShip.Cast( target_pod ), iShip.Cast( dockable_pod ) );
iHUD.Print( "REMOTE PILOTING POD TO DUAL-DOCKABLE POD DOCKED TO SHIP" );
}
else // no available dual-dockable pods
{
if ( number_dockable_dockports > 0 )
{
// Prepare Pod for Remote Autopiloting to ship
iSim.SetFaction( target_pod, iFaction.Find( "Player" ) );
iAI.PurgeOrders( iShip.Cast( target_pod ) );
iPilotSetup.GenericCargoPod( iShip.Cast( target_pod ) );
iAI.GiveDockOrder( iShip.Cast( target_pod ), player_ship );
iHUD.Print( "REMOTE PILOTING POD TO SHIP" );

}
else // cannot dock target pod to ship
{
iHUD.Print( "NO DOCKABLE DOCKED PODS HAVE FREE DOCKPORTS" );
}

}

}
else // Dock cargo pod to free ship dockport
{

// Prepare Pod for Remote Autopiloting to ship
iSim.SetFaction( target_pod, iFaction.Find( "Player" ) );
iAI.PurgeOrders( iShip.Cast( target_pod ) );
iPilotSetup.GenericCargoPod( iShip.Cast( target_pod ) );
iAI.GiveDockOrder( iShip.Cast( target_pod ), player_ship );
iHUD.Print( "REMOTE PILOTING POD TO SHIP" );
}


}
else // target pod outside of remote range
{
iHUD.Print( "TARGET POD TOO FAR TO REMOTE APPROACH" );
}
}
else // target object is not a cargo pod
{
iHUD.Print( "TARGET IS NOT CARGO" );
}

}

Please Log in or Create an account to join the conversation.

More
12 years 8 months ago #17164 by SRC
Re: the revised "dock pod to playership, with pod stacking" module,
it is up to the player to select the cubic freightpods (the only
ones which have 2 dockports) to dock first, and then the smaller
"trapezoidal" pods only after all Pinguin cargo ports are full.

I'll try to create some meta-modules that multi-load the Pinguin
with pods within range, subject to a variety of pod contents priorities.
But even without that, this is much easier to use than the old method
of docking the Pinguin to the desired pods.

If nonplayer ships were enabled to do this, the Venice class
freighters would be very large with additional pods double-docked.

This could be made more compact if the 2nd dockport on the freightpods
were put at 90 degrees to the first dockport, rather than 180 as I
have done. Then the Venice freighter fully double docked would have a
rectangular cross section rather than a giant "plus".

Here is my non-functioning pinguin.lws text (and the stormpetrel.ini
follows it in the next post):

pinguin.lws (broken -- the lower_dockport_6 does not show up)

LWSC
1

FirstFrame 1
LastFrame 100
FrameStep 1
PreviewFirstFrame 1
PreviewLastFrame 100
PreviewFrameStep 1
FramesPerSecond 25

AddNullObject crew
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13 180.75 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject dockport
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 0 243 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject upper_dockport_1
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 23.5 81 90 -90 -90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject upper_dockport_2
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 23.5 27 90 -90 -90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject upper_dockport_3
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 23.5 -27 90 -90 -90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject upper_dockport_4
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 23.5 -81 90 -90 -90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject upper_dockport_5
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 23.5 -135 90 -90 -90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lower_dockport_1
ShowObject 8 7
ObjectMotion (unnamed)
9
1
13 11.8 81 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lower_dockport_2
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-13 11.8 81 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lower_dockport_3
ShowObject 8 7
ObjectMotion (unnamed)
9
1
13 11.8 27 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lower_dockport_4
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-13 11.8 27 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lower_dockport_5
ShowObject 8 7
ObjectMotion (unnamed)
9
1
13 11.8 -27 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lower_dockport_6
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-13 11.8 -27 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject bottom_nose_turret
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -41.2 163 180 -169.7 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject top_tail_turret
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 21 -181.6 180 8.2 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject left_tail_turret
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-40.9 -12 -168 0 0 90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject right_tail_turret
ShowObject 8 7
ObjectMotion (unnamed)
9
1
40.9 -12 -168 0 0 -90 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject light_hardpoint
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -39.4 201.8 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject nose_hardpoint
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -5 242 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject left_nose_hardpoint
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-33.5 -3.5 242 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject right_nose_hardpoint
ShowObject 8 7
ObjectMotion (unnamed)
9
1
33.5 -3.5 242 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject inner_left_dome_missile
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-10.9 30.5 150 0 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject inner_right_dome_missile
ShowObject 8 7
ObjectMotion (unnamed)
9
1
10.9 30.5 150 0 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject outer_left_dome_missile
ShowObject 8 7
ObjectMotion (unnamed)
9
1
-23.6 30.4 150 0 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject outer_right_dome_missile
ShowObject 8 7
ObjectMotion (unnamed)
9
1
23.6 30.4 150 0 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject forward_countermeasure
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 30 150 0 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject rear_countermeasure
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 8 -219 -180 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject top_lda
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 21.85 40 0 -90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject bottom_lda
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13.9 40 180 90 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject nose_lda
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -3.5 242 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject aggressor_shield
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 0 -80 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject active_sensors
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13 180.74 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject passive_sensors
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13 180.71 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject cpu
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13 180.73 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject eps
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13 180.72 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject disruptors
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 13 180.70 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject lds_drive
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 15.75 -188.5 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject capsule_drive
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -33.25 171 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject powerplant
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -33.24 171 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject heatsink
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -33.23 171 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject drive
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -33.22 171 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AddNullObject autorepair
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 -33.21 171 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

LoadObject ContainerCarrier_HULL.lwo
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 0 0 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7

AmbientColor 255 255 255
AmbIntensity 0.000000

AddLight
LightName Light
ShowLight 1 7
LightMotion (unnamed)
9
1
-600 2 -600 45 35 0 1 1 1
0 0 0 0 0
EndBehavior 1
LightColor 255 255 255
LgtIntensity 1.000000
LightType 0
ShadowType 1

ShowCamera 1 7
CameraMotion (unnamed)
9
1
0 0.25 -247.308 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ZoomFactor 3.200000
Resolution 1
PixelAspectRatio 3
SegmentMemory 1050000
Antialiasing 0
AdaptiveSampling 1
AdaptiveThreshold 16
FilmSize 2
FieldRendering 0
MotionBlur 0
DepthOfField 0

SolidBackdrop 1
BackdropColor 0 0 0
ZenithColor 0 40 80
SkyColor 120 180 240
GroundColor 50 40 30
NadirColor 100 80 60
FogType 0
DitherIntensity 1
AnimatedDither 0

RenderMode 2
RayTraceEffects 0
ClipRayColors 0
DataOverlayLabel
FullSceneParamEval 0

ViewMode 2
ViewAimpoint -2.980945 9.159618 -15.090637
ViewDirection -2.974040 -0.602137 0.000000
ViewZoomFactor 2.936127
GridNumber 50
GridSize 50.000000
ShowMotionPath 1
ShowBGImage 0
ShowFogRadius 0
ShowRedraw 0
ShowSafeAreas 0
ShowFieldChart 0

Please Log in or Create an account to join the conversation.