Crossfire Server, Branch 1.12
R12190
|
00001 /* 00002 CrossFire, A Multiplayer game for X-windows 00003 00004 Copyright (C) 2007 Mark Wedel & Crossfire Development Team 00005 Copyright (C) 1992 Frank Tore Johansen 00006 00007 This program is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; either version 2 of the License, or 00010 (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program; if not, write to the Free Software 00019 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00020 00021 The authors can be reached via e-mail at crossfire-devel@real-time.com 00022 */ 00023 00028 #include <global.h> 00029 #include <ob_methods.h> 00030 #include <ob_types.h> 00031 #include <sounds.h> 00032 #include <sproto.h> 00033 00034 static method_ret trigger_type_apply(ob_methods *context, object *op, object *applier, int aflags); 00035 static method_ret trigger_type_process(ob_methods *context, object *op); 00036 00040 void init_type_trigger(void) { 00041 register_apply(TRIGGER, trigger_type_apply); 00042 register_process(TRIGGER, trigger_type_process); 00043 } 00044 00053 static method_ret trigger_type_apply(ob_methods *context, object *op, object *applier, int aflags) { 00054 if (check_trigger(op, applier)) { 00055 draw_ext_info(NDI_UNIQUE, 0, applier, MSG_TYPE_APPLY, MSG_TYPE_APPLY_SUCCESS, 00056 "You turn the handle.", NULL); 00057 play_sound_map(SOUND_TYPE_GROUND, op, 0, "turn handle"); 00058 } else { 00059 draw_ext_info(NDI_UNIQUE, 0, applier, MSG_TYPE_APPLY, MSG_TYPE_APPLY_FAILURE, 00060 "The handle doesn't move.", NULL); 00061 } 00062 return 1; 00063 } 00064 00071 static method_ret trigger_type_process(ob_methods *context, object *op) { 00072 if ((unsigned char)++op->stats.wc >= NUM_ANIMATIONS(op)) { 00073 op->stats.wc = 0; 00074 check_trigger(op, NULL); 00075 } else { 00076 SET_ANIMATION(op, op->stats.wc); 00077 update_object(op, UP_OBJ_FACE); 00078 } 00079 return METHOD_OK; 00080 }