diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-08-04 08:31:44 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-08-04 08:31:44 +0000 |
| commit | 2fe7f90a73e80050d80687a997547c8332122f44 (patch) | |
| tree | 22a5b351a4c9dd91907962eb98d8e25492d371d4 /src/game | |
| parent | 92816367d1fb5833ad341dbd66c80fe696d683b5 (diff) | |
| download | zcatch-2fe7f90a73e80050d80687a997547c8332122f44.tar.gz zcatch-2fe7f90a73e80050d80687a997547c8332122f44.zip | |
ninja now releases all hooks. you can't hook a player for more then 1.5 second
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/server/game_server.cpp | 17 | ||||
| -rw-r--r-- | src/game/server/game_server.h | 3 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp index 669b2757..17604794 100644 --- a/src/game/server/game_server.cpp +++ b/src/game/server/game_server.cpp @@ -752,7 +752,7 @@ bool player::is_grounded() // releases the hooked player void player::release_hooked() { - hook_state = HOOK_IDLE; + hook_state = HOOK_RETRACTED; hooked_player = 0x0; } @@ -792,6 +792,10 @@ int player::handle_ninja() numobjectshit = 0; create_sound(pos, SOUND_NINJA_FIRE); + + // release all hooks when ninja is activated + release_hooked(); + release_hooks(); } currentmovetime--; @@ -1099,6 +1103,7 @@ void player::tick() hook_state = HOOK_FLYING; hook_pos = pos; hook_dir = direction; + hook_tick = -1; } else if(hook_state == HOOK_FLYING) { @@ -1136,20 +1141,30 @@ void player::tick() } if(hook_state == HOOK_GRABBED) + { create_sound(pos, SOUND_HOOK_ATTACH); + hook_tick = server_tick(); + } } } else { release_hooked(); + hook_state = HOOK_IDLE; hook_pos = pos; } if(hook_state == HOOK_GRABBED) { if(hooked_player) + { hook_pos = hooked_player->pos; + // keep players hooked for a max of 1.5sec + if(server_tick() > hook_tick+(server_tickspeed()*3)/2) + release_hooked(); + } + /*if(hooked_player) hook_pos = hooked_player->pos; diff --git a/src/game/server/game_server.h b/src/game/server/game_server.h index 73b08794..2bc7796e 100644 --- a/src/game/server/game_server.h +++ b/src/game/server/game_server.h @@ -266,7 +266,8 @@ public: HOOK_GRABBED }; - int hook_state; + int hook_state; + int hook_tick; player *hooked_player; baselib::vec2 hook_pos; baselib::vec2 hook_dir; |