Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/base/ship.cc')
-rw-r--r--src/game/base/ship.cc29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/game/base/ship.cc b/src/game/base/ship.cc
index 412668d..20f37c8 100644
--- a/src/game/base/ship.cc
+++ b/src/game/base/ship.cc
@@ -59,14 +59,13 @@ void Ship::reset()
}
void Ship::impulse()
{
- if (entity_eventstate == core::Entity::Jump) {
- return;
-
- } else if ((entity_eventstate == core::Entity::Impulse) || (entity_eventstate == core::Entity::ImpulseInitiate)) {
+ if ((entity_eventstate == core::Entity::Impulse) || (entity_eventstate == core::Entity::ImpulseInitiate)) {
entity_eventstate = core::Entity::Normal;
-
+
+ } else if (entity_eventstate != core::Entity::Normal) {
+ return;
+
} else {
-
if (entity_eventstate == core::Entity::JumpInitiate) {
ship_jumpdrive_timer = 0;
entity_timer = 0;
@@ -87,6 +86,10 @@ void Ship::impulse()
void Ship::jump(std::string const &args)
{
+ if (entity_eventstate == core::Entity::Docked) {
+ return;
+ }
+
// devel mode provides instant jump access to arbitrary systems
if (Base::g_devel->value() && (args.size())) {
@@ -215,7 +218,19 @@ void Ship::frame(float seconds)
// target axis
math::Axis target_axis(entity_axis);
- if (entity_eventstate == core::Entity::JumpInitiate) {
+ if (entity_eventstate == core::Entity::Docked) {
+
+ target_thrust = 0;
+ target_pitch = 0;
+ target_roll = 0;
+ target_direction = 0;
+ target_afterburner = 0.0f;
+ target_thrust = 0;
+
+ entity_speed = 0;
+ return;
+
+ } else if (entity_eventstate == core::Entity::JumpInitiate) {
if (ship_jumpdrive_timer + 1.0f <= core::server()->time()) {
entity_timer -= 1.0f;