00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027 #include <global.h>
00028 #include <ob_methods.h>
00029 #include <ob_types.h>
00030 #include <sounds.h>
00031 #include <sproto.h>
00032
00033 static method_ret player_mover_type_move_on(ob_methods *context, object *trap, object *victim, object *originator);
00034
00038 void init_type_player_mover(void) {
00039 register_move_on(PLAYERMOVER, player_mover_type_move_on);
00040 }
00049 static method_ret player_mover_type_move_on(ob_methods *context, object *trap, object *victim, object *originator) {
00050 if (common_pre_ob_move_on(trap, victim, originator) == METHOD_ERROR)
00051 return METHOD_OK;
00052 if (trap->attacktype
00053 && (trap->level || victim->type != PLAYER)
00054 && !should_director_abort(trap, victim)) {
00055 if (!trap->stats.maxsp)
00056 trap->stats.maxsp = 2;
00057
00058
00059
00060
00061 victim->speed_left = -FABS(trap->stats.maxsp*victim->speed/trap->speed);
00062
00063
00064
00065
00066
00067 if (victim->speed_left < -50.0)
00068 victim->speed_left = -50.0;
00069 }
00070 common_post_ob_move_on(trap, victim, originator);
00071 return METHOD_OK;
00072 }