Creating misssion oxp

Discussion and information relevant to creating special missions, new ships, skins etc.

Moderators: another_commander, winston

User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Creating misssion oxp

Post by Rustybolts »

By looking at oxp Long way round and Black baron i can create missions that start and end at different planets, and spawn enemies into the system the player has entered. But i want a mission to be completed as a condition that killing my added ship into system and not just the arrival at space station how is this done?
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
LittleBear
---- E L I T E ----
---- E L I T E ----
Posts: 2863
Joined: Tue Apr 04, 2006 7:02 pm
Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.

Post by LittleBear »

A simple way is just to add death actions to the mission ship's shipdata entry. Eg :-

Code: Select all

	<key>death_actions</key>
	<array>
	<string>set: mission_my_mission_oxp_target_dead TRUE</string>
	</array>
You then check that mission_my_mission_oxp_target_dead equal TRUE before displaying the 'Well Done Commander' mission briefing screen. This has the downside though of being run however the ship died. So the player would still be paid and congratulated even if an NPC killed the ship.

JS allows you to test who killed the ship. Eg here's the script for the Random Hits victims. The ships own script sets the killer and the main script then displays a message depending on who got him.

Code: Select all

/*
this.name = "oolite-random-hits-mark1";
this.author = "LittleBear";
this.copyright = "September 2008 - But do what you like with it in your OXPs!";
this.description	= "Tests who destroyed a RandomHits OXP Victim Ship and how they did it. The main script acts on the setting of variables."
this.version = "2.0";
*/

this.shipSpawned = function ()
{
	if(this.ship.displayName == this.ship.name)
        this.ship.displayName = expandDescription("[random_hits_main_name]") // Show the Victim's name on the ID Computer when targeted.
	  delete this.shipSpawned;
}

this.shipBeingAttacked = function(whom)
{
    if(whom == player.ship)
    {
      missionVariables.random_hits_whoshot = "PLAYER_ATTACK" // Shooter was the player not using an e-bomb, q-mine or cloak. The variable remains undefined if the player e-bombs, q-mines or kills the victim whilst cloaked as thisBeingAttacked does not get run. The main script then awards the player the credit for the kill, but fines him for dishonerable conduct!
    }
    else
    {
     missionVariables.random_hits_whoshot = "NPC_ATTACK" // Shooter was NPC ship. Every time the victim is hit, the variable is reset. Once he's dead the variable is not longer reset. So the last ship to hit him was also the killer!
    }
}

this.shipDied = function(whom)
{

	    if(whom == player.ship)
	    if(missionVariables.random_hits_whoshot == "NPC_ATTACK") // Player has finished off a Mark attacked by an NPC with an e-bomb.
	{
		missionVariables.random_hits_status = "KILLED" // Record the fact that the Victim's ship has been destroyed.
		missionVariables.random_hits_whoshot = null // Reset the attack variable to treat this as a dishonerable player kill.
		return;
	}

	    if(whom == player.ship)
	    if(missionVariables.random_hits_whoshot == null) // Player has e-bombed the Victim's Ship.
	{
		missionVariables.random_hits_status = "KILLED" // Record the fact that the Victim's ship has been destroyed.
		return;
	}


	    if(whom == player.ship) //If the killer was the player...
	    if(missionVariables.random_hits_whoshot == "PLAYER_ATTACK") //... And he didn't use an e-bomb ... 
	    if(Math.random() < 0.25) // Chance of Victim making it to his pod.
	{
		missionVariables.random_hits_status = "PODED" // Victim made it to his Pod! Set the variable to reflect that the player still needs to kill or scoop the Pod!
		this.ship.spawn("random_hits_pod1", 1); // Spawn a Pod. Any shooting or scooping of the Pod is handled by the Pod's own Script.
		return;

	}

	    if(whom == player.ship) //If the killer was the player and no pod was launched ...
	    if(missionVariables.random_hits_whoshot == "PLAYER_ATTACK") //... And he didn't use an e-bomb ... 
	    if(Math.random() < 0.10) // Chance of Victim dropping a q-mine.
	{	
		this.ship.spawn("RANDOM_HITS_MINE", 1); // Spawn a Q-Mine which taunts the player before exploding! Nasty!
		missionVariables.random_hits_status = "KILLED" // Record the fact that the Victim's ship has been destroyed.
		return;
	}
	    if(whom == player.ship) //If the killer was the player and neither a pod nor q-mine was launched ...
	    if(missionVariables.random_hits_whoshot == "PLAYER_ATTACK") //... And he didn't use an e-bomb ...
	{	
		missionVariables.random_hits_status = "KILLED" // Record the fact that the Victim's ship has been destroyed.
	   	return;	
	}
	    if(missionVariables.random_hits_whoshot == "NPC_ATTACK") // If an NPC fired the fatal shot ...
	{	
		missionVariables.random_hits_status = "KILLED" // Record the fact that the Victim's ship has been destroyed.
	   	return;	
	}

	else // Deals with any other situation where cause of death was neither the player nor an NPC Laser. EG: Victim did somthing silly like crashing, burnt up near the Sun or some other odd death!
	{	
		missionVariables.random_hits_status = "KILLED" // Record the fact that the Ship has died!
		missionVariables.random_hits_whoshot = "ACCIDENT" // Any non-player / non-NPC caused death is an accident.
	}
 
	
}

OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

Ty bud just what i was after.
So if i set in ship data (please excuse indentation)

Code: Select all

<key>death_actions</key> 
		<array> 
		<string>set: mission_boltsrevenge_oxp_target_dead TRUE</string> 
		</array>

and in the script i

Code: Select all

 conditions = (
                    "mission_boltsrevenge_oxp_target_dead equal TRUE"
                     ); 
                      do = (
                     "set: mission_revengebolts MISSION_COMPLETE",
                      );
it should work?
Shame there are no tutorials to read for making basic mission oxps. :D
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
LittleBear
---- E L I T E ----
---- E L I T E ----
Posts: 2863
Joined: Tue Apr 04, 2006 7:02 pm
Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.

Post by LittleBear »

Yep. But you need to add that the player is also docked at the main station (or the name of a special station if you're going that way), otherwise the message will come up whilst the player is still in flight. You should also check that another OXP isn't using the mission screen (so you don't get OXP clashes) The first line does this. It just means that if another OXP dispayed a briefing from another mission at the same time that your conditions became true, your OXP doesn't try to dispaly its message over the other OXPs message. Instead it waits until the player has pressed space from reading the first message (if there was one) before displaying its own. So somthing like :-

Code: Select all


						{ 
							conditions = ("gui_screen_string oneof GUI_SCREEN_STATUS, GUI_SCREEN_EQUIP_SHIP, GUI_SCREEN_MARKET, GUI_SCREEN_SHORT_RANGE_CHART", "dockedAtMainStation_bool equal YES", "mission_my_mission_variable equal TRUE"); 
							do = ( 
							MY STUFF); 
						},
should do.

You'll need to like_ship a clone of your normal ship though and give this one a unique role and C&P the death_actions to this shipdata entry, so that the death actions are only run on the death of this special ship rather than any of your ships that are added to the game generally.

Oh and in the do, you need to reset or advance the mission_variable, so once the player has seen the mission congrats screen once its no longer TRUE otherwise you get the screen redispladed as soon as the player hits the space bar after reading it. :wink:
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

LittleBear wrote:
Yep. But you need to add that the player is also docked at the main station (or the name of a special station if you're going that way), otherwise the message will come up whilst the player is still in flight. You should also check that another OXP isn't using the mission screen (so you don't get OXP clashes) The first line does this. It just means that if another OXP dispayed a briefing from another mission at the same time that your conditions became true, your OXP doesn't try to dispaly its message over the other OXPs message. Instead it waits until the player has pressed space from reading the first message (if there was one) before displaying its own. So somthing like :-

Code: Select all


						{ 
							conditions = ("gui_screen_string oneof GUI_SCREEN_STATUS, GUI_SCREEN_EQUIP_SHIP, GUI_SCREEN_MARKET, GUI_SCREEN_SHORT_RANGE_CHART", "dockedAtMainStation_bool equal YES", "mission_my_mission_variable equal TRUE"); 
							do = ( 
							MY STUFF); 
						},
should do.

You'll need to like_ship a clone of your normal ship though and give this one a unique role and C&P the death_actions to this shipdata entry, so that the death actions are only run on the death of this special ship rather than any of your ships that are added to the game generally.

Oh and in the do, you need to reset or advance the mission_variable, so once the player has seen the mission congrats screen once its no longer TRUE otherwise you get the screen redispladed as soon as the player hits the space bar after reading it. :wink:
Thanks again.
I simplified my code a bit so it was easier to read. I've already included a new model specifically for this mission i'm trying to create, so should be no probs there.
I don't think my first mission will include this feature but would like to know for future reference, if i wanted as part of the mission to load goods into or remove from the ship automatically, how this could be done. Not using java script at the mo
Oh and is it possible to change the players legal status?
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
Eric Walch
Slightly Grand Rear Admiral
Slightly Grand Rear Admiral
Posts: 5536
Joined: Sat Jun 16, 2007 3:48 pm
Location: Netherlands

Post by Eric Walch »

Rustybolts wrote:
I don't think my first mission will include this feature but would like to know for future reference, if i wanted as part of the mission to load goods into or remove from the ship automatically, how this could be done. Not using java script at the mo
Oh and is it possible to change the players legal status?
Just remember that you can not check who killed your ship with legacy code. So don't give it a bounty or police might kill it before the player. When you do give it a bounty, place it in an Anarchy (no police) or outside the space-lane (also no police) :roll:
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

Just remember that you can not check who killed your ship with legacy code. So don't give it a bounty or police might kill it before the player. When you do give it a bounty, place it in an Anarchy (no police) or outside the space-lane (also no police)
_________________
It does not have a bounty as the treasure is the cargo its carrying.

Heres what i have so far have not added rest in yet as this is not working.

Code: Select all

{
    revengebolts = (
        {
            conditions = ("galaxy_number equal 0"); 
            do = (
                {
                    conditions = ("dockedAtMainStation_bool equal YES"); 
                    do = (
                        {
                            conditions = (
                                "mission_revengebolts undefined", 
                                "planet_number equal 227"
                            ); 
                            do = (
                                "setMissionMusic: none", 
                                setGuiToMissionScreen, 
                                "addMissionText: revengebolts_briefing", 
                                "set: mission_revengebolts STAGE1", 
                                "setMissionDescription: revengebolts_d1"
                            ); 
                        }, 
                        
                        {
                            conditions = ("status_string equal STATUS_IN_FLIGHT", "scriptTimer_number lessthan 60"); 
							do = (
                        {
                            conditions = ("mission_revengebolts equal STAGE1", "planet_number equal 154"); 
                            do = (
                                "checkForShips: bolts", 
                                {
                                    conditions = ("shipsFound_number lessthan 1", "d100_number lessthan 50"); 
                                    do = ("addShips: bolts 1") 
                                }
                            ); 
                        }
                     
                        }
                    ); 
                }, 
            ); 
        }
    ); 
} 
Unsure what the scrip timer does either (60 secs before adds ship?)
Oh and does planet 227 = Qutiri ?
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
Svengali
Commander
Commander
Posts: 2370
Joined: Sat Oct 20, 2007 2:52 pm

Post by Svengali »

Rustybolts wrote:
Unsure what the scrip timer does either (60 secs before adds ship?)Oh and does planet 227 = Qutiri ?
Your script looks good so far - just a few remarks.

Code: Select all

scriptTimer_number
is deprecated for a long time now (I've joined in v1.69 and there it was already deprecated) and you really shouldn't use it. Legacy-scripts are already executed every 10 seconds.

The other thing is LB's suggestion what has to be checked before your script displays a mission screen. You really should include this check. LB knows why he has suggested it. Before we've had a lot of clashes between oxps and this is one way to avoid it.

And my galaxy0 list says that 227 == Qutiri too :-)

Hope this helps a bit.

Edit: Eric Walch has made an example how to offer missions a while ago. http://wiki.alioth.net/images/2/2b/MOP-Test_1.1.zip
User avatar
Eric Walch
Slightly Grand Rear Admiral
Slightly Grand Rear Admiral
Posts: 5536
Joined: Sat Jun 16, 2007 3:48 pm
Location: Netherlands

Post by Eric Walch »

Rustybolts wrote:
Unsure what the scrip timer does either (60 secs before adds ship?)
Leave it out as Svengali writes. This timer is set to zero on jumping into a new system. At your checking-time (on jumping) it thus will only be <60 seconds in the first minute after entering a system. Better add your ships at exitting_witchspace.
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

Well i have got it to get to mission screen at Qutiri it then sets destination to destroy ship at isinor, but when you reach isinor it doesn't seem to place my ship.
Script code:

Code: Select all

{
    bolts = (
        {
            conditions = ("galaxy_number equal 0"); 
            do = (
                {
                    conditions = ("dockedAtMainStation_bool equal YES"); 
                    do = (
                        {
                            conditions = (
                                "mission_bolts undefined",  
                                "planet_number equal 227"
                            ); 
                            do = (
                                "setMissionMusic: none", 
                                setGuiToMissionScreen, 
                                "addMissionText: revengebolts_briefing", 
                                "set: mission_bolts STAGE1", 
                                "setMissionDescription: revengebolts_d1"
                            ); 
                        },  
                    ); 
                }, 
                {
                    conditions = (
                        "mission_bolts equal STAGE1", 
                        "planet_number equal 154", 
                        "status_string equal STATUS_EXITING_WITCHSPACE"
                    ); 
                    do = ("addsystemShips: bolts 1 0.90");  
                }

            ); 
        }
    ); 
} 
Ship data plist code:

Code: Select all

<dict>
	<key>bolts</key>
	<dict>
		<key>death_actions</key> 
		<array> 
		<string>set: mission_bolts_targetdead TRUE</string> 
		</array> 
		<key>ai_type</key>
		<string>pirateAI.plist</string>
		<key>bounty</key>
		<integer>0</integer>
		<key>cargo_type</key>
		<string>CARGO_NOT_CARGO</string>
		<key>energy_recharge_rate</key>
		<real>4</real>
		<key>exhaust</key>
		<array>
			<string>0.0 -0.9 -14.5 8.0 6.0 8.0</string>
			<string>0.0 -0.9 -14.5 8.0 6.0 8.0</string>
		</array>
		<key>forward_weapon_type</key>
		<string>WEAPON_PULSE_LASER</string>
		<key>has_ecm</key>
		<true/>
		<key>has_shield_booster</key>
		<true/>
		<key>has_shield_enhancer</key>
		<true/>
		<key>has_escape_pod</key>
		<false/>
		<key>has_scoop</key>
		<false/>
		<key>laser_color</key>
		<string>yellowColor</string>
		<key>likely_cargo</key>
		<integer>50</integer>
		<key>max_cargo</key>
		<integer>55</integer>
		<key>max_energy</key>
		<real>400</real>
		<key>max_flight_pitch</key>
		<real>0.80</real>
		<key>max_flight_roll</key>
		<real>1.80</real>
		<key>max_flight_speed</key>
		<real>390</real>
		<key>missiles</key>
		<integer>3</integer>
		<key>model</key>
		<string>steo.dat</string>
		<key>name</key>
		<string>Commander Bolts</string>
		<key>roles</key>
		<string>bolts</string>
		<key>thrust</key>
		<real>20</real>
		<key>weapon_energy</key>
		<real>25</real>
	</dict>
I've got more to add to mission but i can't even get this little bit started *sigh!* Any ideas?
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

No matter in the script.plist

Code: Select all

do = ("addsystemShips: bolts 1 0.90"); 
should of been

Code: Select all

do = ("addSystemShips: bolts 1 0.90");
a bloody capital letter lol
Anyways ship appeared but was close too space station i thought this was set to be closer to witchpoint oh well will change the 0.90 to 0.10 that should do it.
Last edited by Rustybolts on Thu Jul 16, 2009 7:17 pm, edited 1 time in total.
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
Eric Walch
Slightly Grand Rear Admiral
Slightly Grand Rear Admiral
Posts: 5536
Joined: Sat Jun 16, 2007 3:48 pm
Location: Netherlands

Post by Eric Walch »

Rustybolts wrote:
No matter in the script.plist

Code: Select all

do = ("addsystemShips: bolts 1 0.90"); 
should of been

Code: Select all

do = ("addSystemShips: bolts 1 0.90");
a bloody capital letter lol
For this is the log useful. Syntax errors will be logged. In pre 1.73 only on executing of the culprit line but starting with 1.73 all illegal commands in the legacy script are already logged on startup because of the new pre-processing of those plists. Very useful for quickly spotting those typos.
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

For this is the log useful. Syntax errors will be logged. In pre 1.73 only on executing of the culprit line but starting with 1.73 all illegal commands in the legacy script are already logged on startup because of the new pre-processing of those plists. Very useful for quickly spotting those typos.

That should come in handy

I have now come across another small problem
in shipdata i have

Code: Select all

<key>cargo_type</key> 
		<string>CARGO_NOT_CARGO</string> 
		<key>cargo_carried</key> 
		<string>Gold</string>
Once ship has been killed i have only seen 1 cargo cannister despite the ship having max cargo of 55. Can i specify a set amount of cargo to despatch upon ships death.
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
User avatar
Commander McLane
---- E L I T E ----
---- E L I T E ----
Posts: 9520
Joined: Thu Dec 14, 2006 9:08 am
Location: a Hacker Outpost in a moderately remote area
Contact:

Post by Commander McLane »

Hi, Rustybolts! Nice to see a new contributor doing something else than just ship models! :wink: :D

May I generally suggest that you consult the scripting documentation in the wiki while scripting? Personally, while working on an OXP, I have all the relevant documents opened in my browser (tabs are such a nice invention :) ). Everything is available through the Category:Oolite Scripting-page. This will help ask a lot of questions and solve a lot of problems. For instance:
Rustybolts wrote:
Anyways ship appeared but was close too space station i thought this was set to be closer to witchpoint oh well will change the 0.90 to 0.10 that should do it.
For all information concerning script.plist the Methods-page is the right address. In your case the Looking for, and adding ships-section of that page, where it says:

Code: Select all

   addSystemShips: <role> <number> <position>
// causes a number of ships matching the given role to appear near a point
// on a line from the witchpoint to the planet's station. <position> should be a floating point
// number where 0.0  represents the witchpoint and 1.0 represents the station
So, indeed, number close to 0 => witchpoint. Number close to 1 => station. By the way: any other number works as well. So -1 will make the ship appear behind the witchpoint, but at the double distance, as seen from the station. And 100 will make it appear far behind the station, as seen from the witchpoint. And so on. Also note that the two reference points, as far as addSystemShips: is concerned, are the witchpoint and the station. This is different from all other ship-adding methods. In all other methods the position of the planet is the point of reference, not the position of the station.
Rustybolts wrote:
I have now come across another small problem
in shipdata i have

Code: Select all

<key>cargo_type</key> 
		<string>CARGO_NOT_CARGO</string> 
		<key>cargo_carried</key> 
		<string>Gold</string>
Once ship has been killed i have only seen 1 cargo cannister despite the ship having max cargo of 55. Can i specify a set amount of cargo to despatch upon ships death.
Not sure. Have a look at the Shipdata.plist-page. The information there seems to suggest that max_cargo actually only works for ships added by the system populator, therefore not for ships added by script.

A workaround would be to spawn a suitable amount of cannisters through the ship's death_actions. Just take the example as it is and replace "explosive_shrapnel" with "Gold" and the number with anything you like. There is an in-built random factor, because some of the spawned entities will immediatly collide with each other and disappear, so the actual number of cargo created will always be something between 0 and the number you specified.
User avatar
Rustybolts
---- E L I T E ----
---- E L I T E ----
Posts: 293
Joined: Sun Jun 07, 2009 6:22 pm
Location: UK

Post by Rustybolts »

Commander McLane wrote:
Hi, Rustybolts! Nice to see a new contributor doing something else than just ship models! :wink: :D

May I generally suggest that you consult the scripting documentation in the wiki while scripting? Personally, while working on an OXP, I have all the relevant documents opened in my browser (tabs are such a nice invention :) ). Everything is available through the Category:Oolite Scripting-page. This will help ask a lot of questions and solve a lot of problems. For instance:
Rustybolts wrote:
Anyways ship appeared but was close too space station i thought this was set to be closer to witchpoint oh well will change the 0.90 to 0.10 that should do it.
For all information concerning script.plist the Methods-page is the right address. In your case the Looking for, and adding ships-section of that page, where it says:

Code: Select all

   addSystemShips: <role> <number> <position>
// causes a number of ships matching the given role to appear near a point
// on a line from the witchpoint to the planet's station. <position> should be a floating point
// number where 0.0  represents the witchpoint and 1.0 represents the station
So, indeed, number close to 0 => witchpoint. Number close to 1 => station. By the way: any other number works as well. So -1 will make the ship appear behind the witchpoint, but at the double distance, as seen from the station. And 100 will make it appear far behind the station, as seen from the witchpoint. And so on. Also note that the two reference points, as far as addSystemShips: is concerned, are the witchpoint and the station. This is different from all other ship-adding methods. In all other methods the position of the planet is the point of reference, not the position of the station.
Rustybolts wrote:
I have now come across another small problem
in shipdata i have

Code: Select all

<key>cargo_type</key> 
		<string>CARGO_NOT_CARGO</string> 
		<key>cargo_carried</key> 
		<string>Gold</string>
Once ship has been killed i have only seen 1 cargo cannister despite the ship having max cargo of 55. Can i specify a set amount of cargo to despatch upon ships death.
Not sure. Have a look at the Shipdata.plist-page. The information there seems to suggest that max_cargo actually only works for ships added by the system populator, therefore not for ships added by script.

A workaround would be to spawn a suitable amount of cannisters through the ship's death_actions. Just take the example as it is and replace "explosive_shrapnel" with "Gold" and the number with anything you like. There is an in-built random factor, because some of the spawned entities will immediatly collide with each other and disappear, so the actual number of cargo created will always be something between 0 and the number you specified.
I will use that idea for death actions, i have seen that piece of code for the shrapnel but didn't think just to type gold instead. Very helpful ty so much.
STE.+ Firefly/Dragonfly + BlackJacksbullion v.1.23 link below.
http://www.mediafire.com/?sharekey=ca16 ... f6e8ebb871
Image
Post Reply