about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/game/g_game.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/game/g_game.cpp b/src/game/g_game.cpp
index 8b3719b5..fb0c5ee9 100644
--- a/src/game/g_game.cpp
+++ b/src/game/g_game.cpp
@@ -240,7 +240,7 @@ void player_core::tick()
 		if(hook_state == HOOK_IDLE)
 		{
 			hook_state = HOOK_FLYING;
-			hook_pos = pos+direction*phys_size*0.75f;
+			hook_pos = pos+direction*phys_size*1.5f;
 			hook_dir = direction;
 			hooked_player = -1;
 			hook_tick = 0;
@@ -257,7 +257,7 @@ void player_core::tick()
 			if(distance(pos, new_pos) > world->tuning.hook_length)
 			{
 				hook_state = HOOK_GOING_TO_RETRACT;
-				new_pos = pos + normalize(pos-new_pos) * world->tuning.hook_length;
+				new_pos = pos + normalize(new_pos-pos) * world->tuning.hook_length;
 			}
 			
 			// make sure that the hook doesn't go though the ground
@@ -273,8 +273,15 @@ void player_core::tick()
 					continue;
 
 				vec2 closest_point = closest_point_on_line(hook_pos, new_pos, p->pos);
-				if(distance(p->pos, closest_point) < phys_size+4.0f)
+				if(distance(p->pos, closest_point) < phys_size+2.0f)
 				{
+					dbg_msg("", "state=%d p0=%f,%f p1=%f,%f t=%f,%f c=%f,%f",
+						hook_state,
+						hook_pos.x, hook_pos.y,
+						new_pos.x, new_pos.y,
+						p->pos.x, p->pos.y,
+						closest_point.x, closest_point.y
+						);
 					triggered_events |= COREEVENT_HOOK_ATTACH_PLAYER;
 					hook_state = HOOK_GRABBED;
 					hooked_player = i;