ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/c_wiz.c
(Generate patch)

Comparing deliantra/server/server/c_wiz.c (file contents):
Revision 1.1 by root, Fri Feb 3 07:14:30 2006 UTC vs.
Revision 1.2 by root, Thu May 11 15:43:17 2006 UTC

1/* 1/*
2 * static char *rcsid_c_wiz_c = 2 * static char *rcsid_c_wiz_c =
3 * "$Id: c_wiz.c,v 1.1 2006/02/03 07:14:30 root Exp $"; 3 * "$Id: c_wiz.c,v 1.2 2006/05/11 15:43:17 root Exp $";
4 */ 4 */
5 5
6/* 6/*
7 CrossFire, A Multiplayer game for X-windows 7 CrossFire, A Multiplayer game for X-windows
8 8
247 struct pl *pl; 247 struct pl *pl;
248 248
249 for (pl = first_player; pl != NULL; pl = pl->next) { 249 for (pl = first_player; pl != NULL; pl = pl->next) {
250 if ((params == NULL || !strcmp(pl->ob->name, params)) && pl->ob != op) { 250 if ((params == NULL || !strcmp(pl->ob->name, params)) && pl->ob != op) {
251 object *op; 251 object *op;
252 int removed = 0; 252 int removed = QUERY_FLAG(op, FLAG_REMOVED);
253 253
254 op = pl->ob; 254 op = pl->ob;
255 if (!QUERY_FLAG(op, FLAG_REMOVED)) { 255 if (!removed) {
256 /* Avion : Here we handle the KICK global event */ 256 /* Avion : Here we handle the KICK global event */
257 execute_global_event(EVENT_KICK, op, params); 257 execute_global_event(EVENT_KICK, op, params);
258 remove_ob(op); 258 remove_ob(op);
259 removed = 1;
260 } 259 }
261 op->direction = 0; 260 op->direction = 0;
262 new_draw_info_format(NDI_UNIQUE|NDI_ALL|NDI_RED, 5, op, 261 new_draw_info_format(NDI_UNIQUE|NDI_ALL|NDI_RED, 5, op,
263 "%s is kicked out of the game.", op->name); 262 "%s is kicked out of the game.", op->name);
264 strcpy(op->contr->killer, "left"); 263 strcpy(op->contr->killer, "left");
441 new_draw_info(NDI_UNIQUE|NDI_RED, 0, pl->ob, "You have been frozen by the DM!"); 440 new_draw_info(NDI_UNIQUE|NDI_RED, 0, pl->ob, "You have been frozen by the DM!");
442 new_draw_info_format(NDI_UNIQUE, 0, op, 441 new_draw_info_format(NDI_UNIQUE, 0, op,
443 "You freeze %s for %d ticks", pl->ob->name, ticks); 442 "You freeze %s for %d ticks", pl->ob->name, ticks);
444 pl->ob->speed_left = -(pl->ob->speed*ticks); 443 pl->ob->speed_left = -(pl->ob->speed*ticks);
445 return 0; 444 return 0;
445}
446
447int command_arrest(object *op, char *params) {
448 object *dummy;
449 player *pl;
450 if (!op) return 0;
451 if(params==NULL) {
452 new_draw_info(NDI_UNIQUE, 0,op,"Usage: arrest <player>.");
453 return 1;
454 }
455 pl = get_other_player_from_name(op, params);
456 if (!pl) return 1;
457 dummy=get_jail_exit(pl->ob);
458 if (!dummy) {
459 /* we have nowhere to send the prisoner....*/
460 new_draw_info(NDI_UNIQUE, 0,op,"can't jail player, there is no map to hold them");
461 return 0;
462 }
463 enter_exit(pl->ob, dummy);
464 free_object(dummy);
465 new_draw_info(NDI_UNIQUE, 0,pl->ob,"You have been arrested.");
466 new_draw_info(NDI_UNIQUE, 0,op,"OK.");
467 LOG(llevInfo, "Player %s arrested by %s\n", pl->ob->name, op->name);
468 return 1;
446} 469}
447 470
448int command_summon(object *op, char *params) { 471int command_summon(object *op, char *params) {
449 int i; 472 int i;
450 object *dummy; 473 object *dummy;
1149 pl->ob->stats.Dex, pl->ob->stats.sp, pl->ob->stats.maxsp); 1172 pl->ob->stats.Dex, pl->ob->stats.sp, pl->ob->stats.maxsp);
1150 new_draw_info(NDI_UNIQUE, 0, op, buf); 1173 new_draw_info(NDI_UNIQUE, 0, op, buf);
1151 sprintf(buf, "Con : %-2d AC : %-4d WC : %d", 1174 sprintf(buf, "Con : %-2d AC : %-4d WC : %d",
1152 pl->ob->stats.Con, pl->ob->stats.ac, pl->ob->stats.wc) ; 1175 pl->ob->stats.Con, pl->ob->stats.ac, pl->ob->stats.wc) ;
1153 new_draw_info(NDI_UNIQUE, 0, op, buf); 1176 new_draw_info(NDI_UNIQUE, 0, op, buf);
1177 sprintf(buf, "Int : %-2d Damage : %d",
1178 pl->ob->stats.Int, pl->ob->stats.dam);
1179 new_draw_info(NDI_UNIQUE, 0, op, buf);
1154#ifndef WIN32 1180#ifndef WIN32
1155 sprintf(buf, "Wis : %-2d EXP : %lld", 1181 sprintf(buf, "Wis : %-2d EXP : %lld",
1156 pl->ob->stats.Wis, pl->ob->stats.exp); 1182 pl->ob->stats.Wis, pl->ob->stats.exp);
1157#else 1183#else
1158 sprintf(buf, "Wis : %-2d EXP : %I64d", 1184 sprintf(buf, "Wis : %-2d EXP : %I64d",
1159 pl->ob->stats.Wis, pl->ob->stats.exp); 1185 pl->ob->stats.Wis, pl->ob->stats.exp);
1160#endif 1186#endif
1161 new_draw_info(NDI_UNIQUE, 0, op, buf); 1187 new_draw_info(NDI_UNIQUE, 0, op, buf);
1188 sprintf(buf, "Pow : %-2d Grace : %d",
1189 pl->ob->stats.Pow, pl->ob->stats.grace);
1190 new_draw_info(NDI_UNIQUE, 0, op, buf);
1162 sprintf(buf, "Cha : %-2d Food : %d", 1191 sprintf(buf, "Cha : %-2d Food : %d",
1163 pl->ob->stats.Cha, pl->ob->stats.food); 1192 pl->ob->stats.Cha, pl->ob->stats.food);
1164 new_draw_info(NDI_UNIQUE, 0, op, buf);
1165 sprintf(buf, "Int : %-2d Damage : %d",
1166 pl->ob->stats.Int, pl->ob->stats.dam);
1167 sprintf(buf, "Pow : %-2d Grace : %d",
1168 pl->ob->stats.Pow, pl->ob->stats.grace);
1169 new_draw_info(NDI_UNIQUE, 0, op, buf); 1193 new_draw_info(NDI_UNIQUE, 0, op, buf);
1170 break; 1194 break;
1171 } 1195 }
1172 if (pl == NULL) 1196 if (pl == NULL)
1173 new_draw_info(NDI_UNIQUE, 0, op, "No such player."); 1197 new_draw_info(NDI_UNIQUE, 0, op, "No such player.");
1918 } 1942 }
1919 1943
1920 new_draw_info(NDI_UNIQUE, 0, op, diff); 1944 new_draw_info(NDI_UNIQUE, 0, op, diff);
1921 return 0; 1945 return 0;
1922} 1946}
1947
1948int command_insert_into(object* op, char *params)
1949{
1950 object *left, *right, *inserted;
1951 const char *diff;
1952 int left_from, right_from;
1953
1954 left = get_dm_object(op->contr, &params, &left_from);
1955 if (!left) {
1956 new_draw_info(NDI_UNIQUE, 0, op, "Insert into what object?");
1957 return 0;
1958 }
1959
1960 if (left_from == STACK_FROM_NUMBER)
1961 /* Item was stacked, remove it else right will be the same... */
1962 dm_stack_pop(op->contr);
1963
1964 right = get_dm_object(op->contr, &params, &right_from);
1965
1966 if (!right) {
1967 new_draw_info(NDI_UNIQUE, 0, op, "Insert what item?");
1968 return 0;
1969 }
1970
1971 if (left_from == STACK_FROM_TOP && right_from == STACK_FROM_TOP) {
1972 /*
1973 * Special case: both items were taken from stack top.
1974 * Override the behaviour, taking left as item just below top, if exists.
1975 * See function description for why.
1976 * Besides, can't insert an item into itself.
1977 */
1978 if (op->contr->stack_position > 1) {
1979 left = find_object(op->contr->stack_items[op->contr->stack_position-2]);
1980 if (left)
1981 new_draw_info(NDI_UNIQUE, 0, op, "(Note: item to insert into taken from undertop)");
1982 else
1983 /* Stupid case: item under top was freed, fallback to stack top */
1984 left = right;
1985 }
1986 }
1987
1988 if (left == right)
1989 {
1990 new_draw_info(NDI_UNIQUE, 0, op, "Can't insert an object into itself!");
1991 return 0;
1992 }
1993
1994 if (right->type == PLAYER)
1995 {
1996 new_draw_info(NDI_UNIQUE, 0, op, "Can't insert a player into something!");
1997 return 0;
1998 }
1999
2000 if (!QUERY_FLAG(right,FLAG_REMOVED))
2001 remove_ob(right);
2002 inserted = insert_ob_in_ob(right,left);
2003 if (left->type == PLAYER)
2004 if (inserted == right)
2005 esrv_send_item(left,right);
2006 else
2007 esrv_update_item(UPD_WEIGHT|UPD_NAME|UPD_NROF,left,inserted);
2008
2009 new_draw_info_format(NDI_UNIQUE, 0, op, "Inserted %s in %s", query_name(inserted),query_name(left));
2010
2011 return 0;
2012
2013}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines