VoidExpanse/events
Events
Events in scripts are governed by scope actions. You can create your own events, or you can subscribe to events created by other modders, but all scripting system is based on built-in events, which are the following:
"OnChatReceive"
input:
- string: from
- string: text
Called when some player send chat message.
"OnCalculateInventoryCache"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called when it's time to recalculate equipment - for example, when player installs new hull or weapon.
"OnCalculateSkillsCache"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called when it's time to recalculate skills cache - usually when player takes new skill, or advances in an old one.
"OnCalculateBuffsCache"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called when active effects (buffs) are changed - for example, effect of consumable item is worn off.
"OnCalculateShipParameters"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called if any of other caches has been changed. Recalculation of final ship's cache.
"OnCollision"
input:
- double: collision_point_x
- double: collision_point_y
- double: impulse
- int: object_id_1
- int: object_id_2
- string: object_type_1
- string: object_type_2
- double: vector_x
- double: vector_y
Called when some objects collided.
"OnHit"
input:
- int: caster_id
- double: collision_point_x
- double: collision_point_y
- int: object_id
- string: object_type
- string: projectile_id
- string: projectile_type //bullet, ray
- double: vector_x
- double: vector_y
- string: weapon_id
- double: distance
- double: projectile_distance
- double: projectile_max_distance
- double: multiplier
Called every time one ship hits with weapon another one.
"OnRayHitProjectile" not implemented yet
"OnUpdateShipParameters"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called 5 times per second. Used for regeneration, fuel and energy consumption calculations etc.
"OnMaximizeShipValues"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called every time ship values are maximized (on space station for example).
"OnBaseGenerateStock"
input:
- int: station_id
Called every time stock on station is needed to be refreshed.
"OnStarSystemUpdate"
input:
- int: system_id
- bool: populated
Called once per specified amount of time (which is set by special function in game scope). Called for populated systems and non-populated.
"OnCalculateNpcLeveledCache"
input:
- string: player_name
- double: seconds_multiplier
- int: ship_id
- int: level
Called when NPC is created. As soon as npc doesn't have any real equipment, their equipment cache is calculated based on it's level, and it should be done in this function.
"OnShipTryToEnterJumpgate"
input:
- int: current_system_id
- int: destination_system_id
- int: jumpgate_id
- int: ship_id
Called when player's ship is trying to enter jumpgate. NOTE! This event has a return value. Handler may not return anything, but if it'll return object with field {allow: false}, ship will not pass through jumpgate. With field "message" : {message: "Use the force, Luke!"} you can control notification, which client will see in his notification area. As soon as any on handlers will return {allow:false}, chain of calls breaks, and other subscribers won't get the event.
"OnShipKilled"
input:
- int: caster_id
- double: collision_point_x
- double: collision_point_y
- int: object_id
- string: object_type
- string: projectile_id
- string: projectile_type //bullet, ray
- double: vector_x
- double: vector_y
- string: weapon_id
- double: distance
- double: projectile_distance
- double: projectile_max_distance
- double: multiplier
Called every time ship is killed by other ship.
"OnShipDestroyed"
input:
- int: ship_id
Called every time ship is destroyed.
"OnShipWarps"
input:
- int: ship_id
Called every time ship warps. NOTE! This event has a return value. Handler may not return anything, but if it'll return object with field {allow: false}, ship will not pass through jumpgate. With field "message" : {message: "Use the force, Luke!"} you can control notification, which client will see in his notification area. As soon as any on handlers will return {allow:false}, chain of calls breaks, and other subscribers won't get the event.
"OnPlayerEntersGame"
input:
- string: name
Called every time player enters the game
"OnPlayerEntersSystem"
input:
- string: name
- int: system_id
Called every time player enters system