Going to use this to introduce the PPC_A2,
as well as having fun problemsolving the script and AI.
Okay the basic plan:
Placement:
1 a single role is called (depending on desired size of convoy)
2 each ship setup-spawns the ship it is intended to follow:
role3(spawn: role2), role2(spawn:role1), role1(spawn:leader)
AI: ships locate and follow each other in a line, towards the Eagis.
(or outbound)
-If a ship is lost or when the statemachine is (re)started,
ships scan for the next in line, preventing all following the leader
or all going their seperate ways.
todo list:
-teamster shiplist: for now only PPC_A2s are used, but more variety is intended.
-expand on : teamster CB hails.
-To expand on: script to add convoys to systems
taking into account economytype and prosperity, population and productivity. As well as dangerlevel (govt<5)
next post: current bottlenecks
Convoy! OXP WIP
Moderators: winston, another_commander
- Arexack_Heretic
- Dangerous Subversive Element
- Posts: 1876
- Joined: Tue Jun 07, 2005 7:32 pm
- Location: [%H] = Earth surface, Lattitude 52°10'58.19"N, longtitude 4°30'0.25"E.
- Contact:
Convoy! OXP WIP
Last edited by Arexack_Heretic on Thu Mar 15, 2007 9:56 pm, edited 1 time in total.
Riding the Rocket!
- Arexack_Heretic
- Dangerous Subversive Element
- Posts: 1876
- Joined: Tue Jun 07, 2005 7:32 pm
- Location: [%H] = Earth surface, Lattitude 52°10'58.19"N, longtitude 4°30'0.25"E.
- Contact:
Current Bottlenecks:
using spawn or spawnShip in setup_actions does not work as expexted.
MacLane has suggested this may be due to the spawnees being spawned INSIDE the spawner.
Possible avenues of investigation:
-I'll go back to the less elegant method of using x setupConvoyAIs, but the basic problem with spawnmethod may remain.
-Addships oneship plus an escort, then use escort as a target for ScriptActionOnTarget: addShipsInRadius.
(Maybe scanForShipsWithRole: self could work too? targetting self probably not.)
-Doing AddShips in script is unelegant, but proven.
Next post: input!
MacLane has suggested this may be due to the spawnees being spawned INSIDE the spawner.
Possible avenues of investigation:
-I'll go back to the less elegant method of using x setupConvoyAIs, but the basic problem with spawnmethod may remain.
-Addships oneship plus an escort, then use escort as a target for ScriptActionOnTarget: addShipsInRadius.
(Maybe scanForShipsWithRole: self could work too? targetting self probably not.)
-Doing AddShips in script is unelegant, but proven.
Next post: input!
Riding the Rocket!
- Arexack_Heretic
- Dangerous Subversive Element
- Posts: 1876
- Joined: Tue Jun 07, 2005 7:32 pm
- Location: [%H] = Earth surface, Lattitude 52°10'58.19"N, longtitude 4°30'0.25"E.
- Contact:
INPUT!
Where I explain what areas could benefit from YOUR Input.
-Teamster slang, callsigns and CB talk.
I may be a fan of the truckermovies Convoy and Smokey and the Bandit, but my slang is horrible.
Anyone supplying nice gabble will earn his forum-name as a teamster-handle!
-Conditions determining size and number of convoys in a system
a bit confusing all of this.
Next up: Current progress of WIP
-Teamster slang, callsigns and CB talk.
I may be a fan of the truckermovies Convoy and Smokey and the Bandit, but my slang is horrible.
Anyone supplying nice gabble will earn his forum-name as a teamster-handle!
-Conditions determining size and number of convoys in a system
a bit confusing all of this.
Next up: Current progress of WIP
Riding the Rocket!
- Arexack_Heretic
- Dangerous Subversive Element
- Posts: 1876
- Joined: Tue Jun 07, 2005 7:32 pm
- Location: [%H] = Earth surface, Lattitude 52°10'58.19"N, longtitude 4°30'0.25"E.
- Contact:
Current Code:
ConvoyAI.plist:
-Look_for script-section works.
-contains rudimentary commschatter (toomuch?)
for testing purposes mainly.
(Suggestions welcome, see descriptions for more expanded comms)
-Todo: find a way to make spawning ships work.
-Todo: complete list to convoy7.
-Todo: addShips: all # at once to test follower section.
descriptions.plist:
Shipdata.plist:
-this version has SpawnShip as setup_action, does not work.
-Eventually convoy7 will be the highest I think.
-todo: check cargocarried is working,
-todo: rubberducky turrets working?
-todo: repair broken scoop modelUVmap.
-todo: mirror texture on righthand side turrets.
-todo: add entries for variant traderships.
script.plist:
This script is not currently in use, using a basic addsystemships near eagis script for testing. Not even sure if it is valid...most likely not.
PPC_A2:
http://home.tiscali.nl/arexack/arexack/WIP/PPC_AH/
ConvoyAI.plist:
Code: Select all
{ GLOBAL = {
ENTER = ("pauseAI: 5", setUpEscorts, "pauseAI: 5" );
EXIT = ( );
UPDATE = ( "setStateTo: LOOK_FOR_5" );
};
LOOK_FOR_5 = {
ENTER = ( "setDesiredRangeTo: 100000", "scanForNearestShipWithRole: convoy5", "pauseAI: 5.0","commsMessage: <klick> [teamster_look] <klick>" );
"TARGET_FOUND" = ( "setTargetToFoundTarget", setDestinationWithinTarget, "commsMessage: <klick> I am number last in line, over. <klick>", "setStateTo: FOLLOW_5" );
"NOTHING_FOUND" = ( "setStateTo: LOOK_FOR_4" );
EXIT = ( );
UPDATE = ( );
};
LOOK_FOR_4 = {
ENTER = ( "setDesiredRangeTo: 100000", "scanForNearestShipWithRole: convoy4", "pauseAI: 5.0","commsMessage: <klick> [teamster_look] <klick>" );
"TARGET_FOUND" = ( "setTargetToFoundTarget", setDestinationWithinTarget, "commsMessage: <klick> I am number 6, over. <klick>", "setStateTo: FOLLOW_4" );
"NOTHING_FOUND" = ( "setStateTo: LOOK_FOR_3" );
EXIT = ( );
UPDATE = ( );
};
LOOK_FOR_3 = {
ENTER = ( "setDesiredRangeTo: 100000", "scanForNearestShipWithRole: convoy3", "pauseAI: 5.0","commsMessage: <klick> [teamster_look] <klick>" );
"TARGET_FOUND" = ( "setTargetToFoundTarget", setDestinationWithinTarget, "commsMessage: <klick> I am number 5, over. <klick>", "setStateTo: FOLLOW_3" );
"NOTHING_FOUND" = ( "setStateTo: LOOK_FOR_2" );
EXIT = ( );
UPDATE = ( );
};
LOOK_FOR_2 = {
ENTER = ( "setDesiredRangeTo: 100000", "scanForNearestShipWithRole: convoy2", "pauseAI: 5.0","commsMessage: <klick> [teamster_look] <klick>" );
"TARGET_FOUND" = ( "setTargetToFoundTarget", setDestinationWithinTarget, "commsMessage: <klick> I am number 4, over. <klick>", "setStateTo: FOLLOW_2" );
"NOTHING_FOUND" = ( "setStateTo: LOOK_FOR_1" );
EXIT = ( );
UPDATE = ( );
};
LOOK_FOR_1 = {
ENTER = ( "setDesiredRangeTo: 100000", "scanForNearestShipWithRole: convoy1", "pauseAI: 4.0","commsMessage: <klick> [teamster_look] <klick>" );
"TARGET_FOUND" = ( "setTargetToFoundTarget", setDestinationWithinTarget, "commsMessage: <klick> I am number 3, over. <klick>", "setStateTo: FOLLOW_1" );
"NOTHING_FOUND" = ( "setStateTo: LOOK_FOR_DUCK", "commsMessage: <klick> Duck, were y'at bubba? <klick> " );
EXIT = ( );
UPDATE = ( );
};
LOOK_FOR_DUCK = {
ENTER = ( "setDesiredRangeTo: 100000", "scanForNearestShipWithRole: rubberduck", "pauseAI: 4.0","commsMessage: <klick> [teamster_look] <klick>" );
"TARGET_FOUND" = ("commsMessage: <klick> I am number 2, over. <klick>", "setStateTo: FOLLOW_DUCK" );
"NOTHING_FOUND" = ("commsMessage: <klick> Guess I'll be the duck today. ten-four.<klick>", "switchAITo: enteringTraderAI.plist" );
EXIT = ( );
UPDATE = ( );
};
/* The above states check for members in the convoy */
/* Starting backwards, ensures eventual gaps are closed up. */
/* If no followers are detected, the ship becomes Rubberduck. IE the convoy leader. */
FOLLOW_5 = {
ENTER = ( "setDesiredRangeTo: 250" );
EXIT = ( "commsMessage: Breaker. breaker. [teamster] Signing off" );
UPDATE = ( "setSpeedTo: 1.0", performFlyToRangeFromDestination, "pauseAI: 5.0" );
ATTACKED = ( fightOrFleeHostiles, "commsMessage: <klick> [teamster_attacked] <klick>");
"INCOMING_MISSILE" = ( fireECM );
"ENERGY_LOW" = ( performFlee, "commsMessage: Breaker. breaker. [teamster_callsign] Outta here!", "pauseAI: 10.0", performHyperSpaceExit );
FLEEING = ( broadcastDistressMessage );
FIGHTING = ( setTargetToPrimaryAggressor, "setAITo: interceptAI.plist" );
"TARGET_LOST" = ( "setStateTo: LOOK_FOR_5" );
"TARGET_DESTROYED" = ( "setStateTo: LOOK_FOR_5" );
RESTARTED = ( "setStateTo: LOOK_FOR_5" );
"DESIRED_RANGE_ACHIEVED" = ( "setSpeedFactorTo: 0.5", "pauseAI: 5.0" );
};
FOLLOW_4 = {
ENTER = ( "setDesiredRangeTo: 250" );
EXIT = ( "commsMessage: Breaker. breaker. Signing off" );
UPDATE = ( "setSpeedTo: 1.0", performFlyToRangeFromDestination, "pauseAI: 5.0" );
ATTACKED = ( fightOrFleeHostiles, "commsMessage: <klick> [teamster_attacked] <klick>");
"INCOMING_MISSILE" = ( fireECM );
"ENERGY_LOW" = ( performFlee, "pauseAI: 10.0", performHyperSpaceExit );
FLEEING = ( broadcastDistressMessage );
FIGHTING = ( setTargetToPrimaryAggressor, "setAITo: interceptAI.plist" );
"TARGET_LOST" = ( "setStateTo: LOOK_FOR_4" );
"TARGET_DESTROYED" = ( "setStateTo: LOOK_FOR_4" );
RESTARTED = ( "setStateTo: LOOK_FOR_4" );
"DESIRED_RANGE_ACHIEVED" = ( "setSpeedFactorTo: 0.5", "pauseAI: 5.0" );
};
FOLLOW_3 = {
ENTER = ( "setDesiredRangeTo: 250" );
EXIT = ( "commsMessage: Breaker. breaker. Signing off" );
UPDATE = ( "setSpeedTo: 1.0", performFlyToRangeFromDestination, "pauseAI: 5.0" );
ATTACKED = ( fightOrFleeHostiles, "commsMessage: <klick> [teamster_attacked] <klick>" );
"INCOMING_MISSILE" = ( fireECM );
"ENERGY_LOW" = ( performFlee, "pauseAI: 10.0", performHyperSpaceExit );
FLEEING = ( broadcastDistressMessage );
FIGHTING = ( setTargetToPrimaryAggressor, "setAITo: interceptAI.plist" );
"TARGET_LOST" = ( "setStateTo: LOOK_FOR_3" );
"TARGET_DESTROYED" = ( "setStateTo: LOOK_FOR_3" );
RESTARTED = ( "setStateTo: LOOK_FOR_3" );
"DESIRED_RANGE_ACHIEVED" = ( "setSpeedFactorTo: 0.5", "pauseAI: 5.0" );
};
FOLLOW_2 = {
ENTER = ( "setDesiredRangeTo: 250" );
EXIT = ( "commsMessage: Breaker. breaker. Signing off" );
UPDATE = ( "setSpeedTo: 1.0", performFlyToRangeFromDestination, "pauseAI: 5.0" );
ATTACKED = ( fightOrFleeHostiles, "commsMessage: <klick> [teamster_attacked] <klick>" );
"INCOMING_MISSILE" = ( fireECM );
"ENERGY_LOW" = ( performFlee, "pauseAI: 10.0", performHyperSpaceExit );
FLEEING = ( broadcastDistressMessage );
FIGHTING = ( setTargetToPrimaryAggressor, "setAITo: interceptAI.plist" );
"TARGET_LOST" = ( "setStateTo: LOOK_FOR_2" );
"TARGET_DESTROYED" = ( "setStateTo: LOOK_FOR_2" );
RESTARTED = ( "setStateTo: LOOK_FOR_2" );
"DESIRED_RANGE_ACHIEVED" = ( "setSpeedFactorTo: 0.5", "pauseAI: 5.0" );
};
FOLLOW_1 = {
ENTER = ( "setDesiredRangeTo: 250" );
EXIT = ( "commsMessage: Breaker. breaker. Signing off" );
UPDATE = ( "setSpeedTo: 1.0", performFlyToRangeFromDestination, "pauseAI: 5.0" );
ATTACKED = ( fightOrFleeHostiles, "commsMessage: <klick> [teamster_attacked] <klick>" );
"INCOMING_MISSILE" = ( fireECM );
"ENERGY_LOW" = ( performFlee, "pauseAI: 10.0", performHyperSpaceExit );
FLEEING = ( broadcastDistressMessage );
FIGHTING = ( setTargetToPrimaryAggressor, "setAITo: interceptAI.plist" );
"TARGET_LOST" = ( "setStateTo: LOOK_FOR_1" );
"TARGET_DESTROYED" = ( "setStateTo: LOOK_FOR_1" );
RESTARTED = ( "setStateTo: LOOK_FOR_1" );
"DESIRED_RANGE_ACHIEVED" = ( "setSpeedFactorTo: 0.5", "pauseAI: 5.0" );
};
FOLLOW_RUBBERDUCK = {
ENTER = ( "setDesiredRangeTo: 250" );
EXIT = ( "commsMessage: Breaker. breaker. Signing off" );
UPDATE = ( "setSpeedTo: 1.0", performFlyToRangeFromDestination, "pauseAI: 5.0" );
ATTACKED = ( fightOrFleeHostiles, "commsMessage: <klick> [teamster_attacked] <klick>" );
"INCOMING_MISSILE" = ( fireECM );
"ENERGY_LOW" = ( performFlee, "pauseAI: 10.0", performHyperSpaceExit );
FLEEING = ( broadcastDistressMessage );
FIGHTING = ( setTargetToPrimaryAggressor, "setAITo: interceptAI.plist" );
"TARGET_LOST" = ( "setStateTo: LOOK_FOR_RUBBERDUCK" );
"TARGET_DESTROYED" = ( "setStateTo: LOOK_FOR_RUBBERDUCK" );
RESTARTED = ( "setStateTo: LOOK_FOR_RUBBERDUCK" );
"DESIRED_RANGE_ACHIEVED" = ( "setSpeedFactorTo: 0.5", "pauseAI: 5.0" );
}
}
/* These dictate follower behaviour */
/* When convoy reaches station, leader will dock. Then next in line will become leader and dock.*/
/* Now I need to make a list of trader like_ships with custom roles. */
-contains rudimentary commschatter (toomuch?)
for testing purposes mainly.
(Suggestions welcome, see descriptions for more expanded comms)
-Todo: find a way to make spawning ships work.
-Todo: complete list to convoy7.
-Todo: addShips: all # at once to test follower section.
descriptions.plist:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>teamster_callsign</key>
<array>
<string>Makkay</string>
<string>Bandit</string>
<string>Mouse</string>
<string>Astroboy</string>
<string>Strangler</string>
<string>Rubberduckie</string>
<string>Redneck</string>
<string>Commiestar</string>
<string>Fanboy</string>
<string>BigMike</string>
<string>Greyhound</string>
<string>Bodger</string>
<string>NerdyChick</string>
<string>Desiree</string>
<string>Wolffe</string>
<string>MacCarrot</string>
</array>
<key>teamster_look</key>
<array>
<string> Hey [teamster_callsign], Where yous at? </string>
</array>
<key>teamster_found</key>
<array>
<string> Roger, we've got a convoy! </string>
<string> [teamster_callsign] here. The reactor's runnin' hot and I am ready to go. </string>
</array>
<key>teamster_attacked</key>
<array>
<string> Incoming! </string>
<string> Bacon at six. </string>
<string> There's a bear in the sky, ten-four. </string>
<string> Look at me fuzzz! </string>
<string> There's a bandit at my henhouse. </string>
</array>
</dict>
</plist>
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>python-cruiser-alt2</key>
<dict>
<key>ai_type</key>
<string>traderAI.plist</string>
<key>bounty</key>
<integer>0</integer>
<key>cargo_type</key>
<string>CARGO_NOT_CARGO</string>
<key>energy_recharge_rate</key>
<real>3.5</real>
<key>exhaust</key>
<array>
<string>-6 0.0 -64.0 3.8 3.8 10.0</string>
<string>0.0 0 -64.0 4 12 25.0</string>
<string>6 0.0 -64.0 3.8 3.8 10.0</string>
</array>
<key>forward_weapon_type</key>
<string>WEAPON_NONE</string>
<key>fuel</key>
<real>20</real>
<key>has_ecm</key>
<real>0.85</real>
<key>has_escape_pod</key>
<real>0.85</real>
<key>has_scoop</key>
<real>1.0</real>
<key>has_fuel_injection</key>
<real>0.125</real>
<key>has_shield_booster</key>
<real>0.125</real>
<key>likely_cargo</key>
<integer>10</integer>
<key>max_cargo</key>
<integer>145</integer>
<key>max_energy</key>
<real>450</real>
<key>max_flight_pitch</key>
<real>0.8</real>
<key>max_flight_roll</key>
<real>2</real>
<key>max_flight_speed</key>
<real>350</real>
<key>max_missiles</key>
<integer>4</integer>
<key>missiles</key>
<integer>4</integer>
<key>model</key>
<string>ppc_ah_hull.dat</string>
<key>name</key>
<string>Python Class Cruiser Alternate2</string>
<key>roles</key>
<string>pirate hunter trader ppc_alt2</string>
<key>thrust</key>
<real>36</real>
<key>weapon_energy</key>
<real>20</real>
<key>subentities</key>
<array>
<string>ppc_ah_scoop 0 -20.77641 -16.190566 1 0 0 0</string>
<string>ppc_ah_scoop_lip 0 -20.77641 -16.190566 1 0 0 0</string>
<string>ppc_ah_gun -13.4 -4.5 16 0.414 0 0 1</string>
<string>ppc_ah_gun 13.4 -4.5 16 1 0 0 0.414</string>
<string>ppc_ah_gun -8.5 -8.5 20 0.414 0 0 1</string>
<string>ppc_ah_gun 8.5 -8.5 20 1 0 0 0.414</string>
</array>
<!-- view positions -->
<key>view_position_aft</key>
<string>0.0 22.5 -80.0</string>
<key>view_position_forward</key>
<string>0.0 9.50 86.30</string>
<key>view_position_port</key>
<string>-25.0 18.75 0.0</string>
<key>view_position_starboard</key>
<string>25.0 18.75 0.0</string>
<!-- hatches etc. -->
<key>weapon_position_aft</key>
<string>0.0 -22.5 -80.0</string>
<key>weapon_position_forward</key>
<string>0.0 -3.5 108.0</string>
<key>weapon_position_port</key>
<string>-20.5 5.0 31.0</string>
<key>weapon_position_starboard</key>
<string>20.5 5.0 31.0</string>
<key>missile_launch_position</key>
<string>0.0 -20.5 60.0</string>
<key>aft_eject_position</key>
<string>0.0 -20.0 -64</string>
<key>frangible</key>
<false/>
<key>smooth</key>
<false/>
</dict>
<key>python-cruiser-alt2-player</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>forward_weapon_type</key>
<string>WEAPON_BEAM_LASER</string>
<key>max_cargo</key>
<integer>145</integer>
<key>max_energy</key>
<real>450</real>
<key>max_flight_speed</key>
<real>350</real>
<key>max_missiles</key>
<integer>4</integer>
<key>missiles</key>
<integer>3</integer>
<key>roles</key>
<string>player</string>
<key>custom_views</key>
<array>
<dict>
<key>view_description</key>
<string>External View - Aft</string>
<key>view_position</key>
<string>0.0 100.0 -173.21</string>
<key>view_orientation</key>
<string>0.966 -0.259 0.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>External View - Starboard</string>
<key>view_position</key>
<string>100.0 0.0 -173.21</string>
<key>view_orientation</key>
<string>0.966 0.0 0.259 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>External View - Port</string>
<key>view_position</key>
<string>-100.0 0.0 -173.21</string>
<key>view_orientation</key>
<string>0.966 0.0 -0.259 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>Scoop camera</string>
<key>view_position</key>
<string>0.0 -38.3333 1.6666</string>
<key>view_orientation</key>
<string>1.0 0.0 0.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>External View - Front</string>
<key>view_position</key>
<string>0.0 20.0 250.0</string>
<key>view_orientation</key>
<string>0.0 0.0 1.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>External View - Above</string>
<key>view_position</key>
<string>0.0 300.0 0.0</string>
<key>view_orientation</key>
<string>0.7071 -0.7071 0.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
<dict>
<key>view_description</key>
<string>External View - Below</string>
<key>view_position</key>
<string>0.0 -300.0 0.0</string>
<key>view_orientation</key>
<string>0.7071 0.7071 0.0 0.0</string>
<key>weapon_facing</key>
<string>FORWARD</string>
</dict>
</array>
</dict>
<key>ppc_ah_scoop</key>
<dict>
<key>ai_type</key>
<string>nullAI.plist</string>
<key>name</key>
<string>Component: Fuelscoop</string>
<key>max_energy</key>
<real>100</real>
<key>model</key>
<string>ppc_ah_scoop.dat</string>
<key>roles</key>
<string>ppc_ah_scoop</string>
<key>thrust</key>
<real>0</real>
<key>smooth</key>
<true/>
</dict>
<key>ppc_ah_scoop_lip</key>
<dict>
<key>ai_type</key>
<string>nullAI.plist</string>
<key>name</key>
<string>Component: Fuelscoop_Guard</string>
<key>max_energy</key>
<real>30</real>
<key>model</key>
<string>ppc_ah_scoop_lip.dat</string>
<key>roles</key>
<string>ppc_ah_scoop_lip</string>
<key>thrust</key>
<real>0</real>
<key>smooth</key>
<false/>
</dict>
<key>ppc_ah_gun</key>
<dict>
<key>ai_type</key>
<string>nullAI.plist</string>
<key>energy_recharge_rate</key>
<real>3</real>
<key>forward_weapon_type</key>
<string>WEAPON_BEAM_LASER</string>
<key>laser_color</key>
<string>redColor</string>
<key>max_energy</key>
<real>50</real>
<key>max_flight_pitch</key>
<real>0</real>
<key>max_flight_roll</key>
<real>0</real>
<key>max_flight_speed</key>
<real>0</real>
<key>max_missiles</key>
<integer>0</integer>
<key>missiles</key>
<integer>0</integer>
<key>model</key>
<string>ppc_ah_gun.dat</string>
<key>name</key>
<string>Component: Gunmounting</string>
<key>roles</key>
<string>ppc_ah_gun</string>
<key>thrust</key>
<real>0</real>
<key>weapon_energy</key>
<real>5</real>
<key>weapon_position_forward</key>
<string>-1.21 0.0 4.0</string>
</dict>
<key>python-cruiser-alt2RP</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>bounty</key>
<integer>50</integer>
<key>model</key>
<string>ppc_ah_hull_rp.dat</string>
<key>name</key>
<string>PPC_A2: RatPack Mobster</string>
<key>roles</key>
<string>pirate ppc_alt2</string>
</dict>
<!-- convoy stuff -->
<key>convoy5</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>ai_type</key>
<string>convoysetup5AI.plist</string>
<key>roles</key>
<string>convoy trader(0.05) convoy5</string>
<key>name</key>
<string>PPC_A2</string>
<key>setup_actions</key>
<array>
<string>debugOn</string>
<string>spawnShip: convoy4</string>
<string>debugOff</string>
</array>
</dict>
<key>convoy4</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>ai_type</key>
<string>convoyAI.plist</string>
<key>roles</key>
<string>convoy trader(0.05) convoy4</string>
<key>name</key>
<string>PPC_A2</string>
<key>setup_actions</key>
<array>
<string>debugOn</string>
<string>spawnShip: convoy3</string>
<string>debugOff</string>
</array>
</dict>
<key>convoy3</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>ai_type</key>
<string>convoyAI.plist</string>
<key>roles</key>
<string>convoy trader(0.05) convoy3</string>
<key>name</key>
<string>PPC_A2</string>
<key>setup_actions</key>
<array>
<string>debugOn</string>
<string>spawnShip: convoy2</string>
<string>debugOff</string>
</array>
</dict>
<key>convoy2</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>ai_type</key>
<string>convoyAI.plist</string>
<key>roles</key>
<string>convoy trader(0.05) convoy2</string>
<key>name</key>
<string>PPC_A2</string>
<key>setup_actions</key>
<array>
<string>debugOn</string>
<string>spawnShip: convoy1</string>
<string>debugOff</string>
</array>
</dict>
<key>convoy1</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>ai_type</key>
<string>convoyAI.plist</string>
<key>cargo_carried</key>
<string>computers</string>
<key>roles</key>
<string>convoy trader(0.05) convoy1</string>
<key>name</key>
<string>PPC_A2</string>
<key>setup_actions</key>
<array>
<string>spawnShip: rubberduck</string>
</array>
</dict>
<key>rubberduck</key>
<dict>
<key>like_ship</key>
<string>python-cruiser-alt2</string>
<key>ai_type</key>
<string>enteringTraderAI.plist</string>
<key>cargo_carried</key>
<string>food</string>
<key>roles</key>
<string>rubberduck convoy trader(0.05)</string>
<key>name</key>
<string>PPC_A2 [Rubberduck]</string>
<key>escort_ship</key>
<string>escortviper</string>
<key>escorts</key>
<integer>1</integer>
<key>subentities</key>
<array>
<string>ppc_ah_scoop 0 -20.77641 -16.190566 1 0 0 0</string>
<string>ppc_ah_scoop_lip 0 -20.77641 -16.190566 1 0 0 0</string>
<string>ah_turret1 -13.4 -4.5 16 0.414 0 0 1</string>
<string>ah_turret1 13.4 -4.5 16 1 0 0 0.414</string>
</array>
</dict>
</dict>
</plist>
-Eventually convoy7 will be the highest I think.
-todo: check cargocarried is working,
-todo: rubberducky turrets working?
-todo: repair broken scoop modelUVmap.
-todo: mirror texture on righthand side turrets.
-todo: add entries for variant traderships.
script.plist:
Code: Select all
{
"minimal_agrarian_convoy" = (
{
conditions = (
"status_string equal STATUS_EXITING_WITCHSPACE",
"systemGovernment_number lessthan 3",
"systemEconomy_number lessthan 4"
);
do = (
{
conditions = (systemPopulation_number lessthan 100000);
do = (
{
conditions = ("d100number lessthan 26");
do = ("addSystemShips: convoy2 1 0.05");
else = ("addSystemShips: convoy3 1 0.05");
}
);
else = (
{
conditions = (systemPopulation_number morethan 5000000);
do = (
{
conditions = ("d100number lessthan 26");
do = ("addSystemShips: convoy4 1 0.05");
else = (
{
conditions = ("d100number morethan 74");
do = ("addSystemShips: convoy8 1 0.05");
else = ("addSystemShips: convoy6 1 0.05");
}
);
}
);
else = (
{
conditions = ("d100number lessthan 26");
do = ("addSystemShips: convoy2 1 0.05");
else = (
{
conditions = ("d100number morethan 74");
do = ("addSystemShips: convoy6 1 0.05");
else = ("addSystemShips: convoy4 1 0.05");
}
);
}
);
}
);
}
);
}
);
} */
/* minimal script to introduce variable number of convoy ships to the more dangerous agrarian systems. */
PPC_A2:
http://home.tiscali.nl/arexack/arexack/WIP/PPC_AH/
Riding the Rocket!