VoidExpanse/Device scripts: Difference between revisions

From AtomicTorchWiki
(Created page with "== Device Scripts ==")
 
No edit summary
Line 1: Line 1:
== Device Scripts ==
== Device Scripts ==
Devices are items, which can be applied to some object, area, coordinate, or self.
There are 3 types of devices: target, coordinate and self. There are no hardcoded
effects of devices, all devices behavior is controlled by a special script - device
script.
Every device can depend on ship's final cache or values. That's why in every device script
there is a mandatory function - '''OnUpdateCache'''. It is called every time ship's final
cache is updated.
This function's arguments are parameters of device, which can be modified:
<pre>
function OnUpdateCache( args )
{
var mining_range_modifier = ship.GetFinalCacheValue( args.ship_id, "mining_range");
args.range *= mining_range_modifier;
var mining_amount_modifier = ship.GetFinalCacheValue( args.ship_id, "mining_amount");
args.custom_parameters.amount *= mining_amount_modifier;
var mining_speed_modifier = ship.GetFinalCacheValue( args.ship_id, "mining_speed");
args.custom_parameters.speed *= mining_speed_modifier;
}
</pre>
In this sample we changed device's range and a couple of custom parameters according to ship's new cache.
Device can produce effect immediately, or can work for some time. There are 3 functions, which
are providing opportunity to implement such functional: '''OnStart''', '''OnFrame''' and '''OnFinished'''.
OnStart is called when device is applied to it's target, OnFrame is called every frame device is being used,
and OnFinished is called when device is finished. In immediate devices sequence of functions "OnStart" - "OnFinished"
is called immediately, without "OnFrame".
There's a last mandatory function in device scripts - OnCancel, which is called when device activity was cancelled.
Here are a couple of samples, how to create devices. To create a gradually healing device, all we need is to put healing
function ship.SetShipValueDelta into OnFrame function on device. To create mining device, we put mining functional into
OnFinished function. As you can see, it's quite easy, and, with proper adjustments, devices can do almost anything, can be
used as healing, battle and transporting devices.

Revision as of 09:43, 14 February 2014

Device Scripts

Devices are items, which can be applied to some object, area, coordinate, or self. There are 3 types of devices: target, coordinate and self. There are no hardcoded effects of devices, all devices behavior is controlled by a special script - device script.

Every device can depend on ship's final cache or values. That's why in every device script there is a mandatory function - OnUpdateCache. It is called every time ship's final cache is updated. This function's arguments are parameters of device, which can be modified:

function OnUpdateCache( args )
{
	var mining_range_modifier = ship.GetFinalCacheValue( args.ship_id, "mining_range");
	args.range *= mining_range_modifier;
	
	var mining_amount_modifier = ship.GetFinalCacheValue( args.ship_id, "mining_amount");
	args.custom_parameters.amount *= mining_amount_modifier;
	
	var mining_speed_modifier = ship.GetFinalCacheValue( args.ship_id, "mining_speed");
	args.custom_parameters.speed *= mining_speed_modifier;
}

In this sample we changed device's range and a couple of custom parameters according to ship's new cache.

Device can produce effect immediately, or can work for some time. There are 3 functions, which are providing opportunity to implement such functional: OnStart, OnFrame and OnFinished. OnStart is called when device is applied to it's target, OnFrame is called every frame device is being used, and OnFinished is called when device is finished. In immediate devices sequence of functions "OnStart" - "OnFinished" is called immediately, without "OnFrame". There's a last mandatory function in device scripts - OnCancel, which is called when device activity was cancelled.

Here are a couple of samples, how to create devices. To create a gradually healing device, all we need is to put healing function ship.SetShipValueDelta into OnFrame function on device. To create mining device, we put mining functional into OnFinished function. As you can see, it's quite easy, and, with proper adjustments, devices can do almost anything, can be used as healing, battle and transporting devices.