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 hole_type_move_on(ob_methods *context, object *trap, object *victim, object *originator);
00034
00038 void init_type_hole(void) {
00039 register_move_on(HOLE, hole_type_move_on);
00040 }
00049 static method_ret hole_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
00053 if (trap->stats.wc > 0) {
00054 common_post_ob_move_on(trap, victim, originator);
00055 return METHOD_OK;
00056 }
00057
00058
00059
00060 if (victim->head) {
00061 common_post_ob_move_on(trap, victim, originator);
00062 return METHOD_OK;
00063 }
00064 play_sound_map(SOUND_TYPE_GROUND, trap, 0, "fall hole");
00065 draw_ext_info(NDI_UNIQUE, 0, victim, MSG_TYPE_APPLY, MSG_TYPE_APPLY_TRAP,
00066 "You fall through the hole!", NULL);
00067 transfer_ob(victim, EXIT_X(trap), EXIT_Y(trap), 1, victim);
00068 common_post_ob_move_on(trap, victim, originator);
00069 return METHOD_OK;
00070 }