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

Comparing deliantra/server/server/player.C (file contents):
Revision 1.19 by root, Mon Sep 11 23:53:30 2006 UTC vs.
Revision 1.20 by root, Tue Sep 12 17:54:41 2006 UTC

1
2/*
3 * static char *rcsid_player_c =
4 * "$Id: player.C,v 1.19 2006/09/11 23:53:30 root Exp $";
5 */
6
7/* 1/*
8 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
9 3
10 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
11 Copyright (C) 1992 Frank Tore Johansen 5 Copyright (C) 1992 Frank Tore Johansen
1000 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, ""); 994 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, "");
1001 return 1; 995 return 1;
1002 } 996 }
1003 switch (key) 997 switch (key)
1004 { 998 {
1005 case 'n': 999 case 'n':
1006 case 'N': 1000 case 'N':
1007 { 1001 {
1008 SET_FLAG (op, FLAG_WIZ); 1002 SET_FLAG (op, FLAG_WIZ);
1009 if (op->map == NULL) 1003 if (op->map == NULL)
1010 { 1004 {
1011 LOG (llevError, "Map == NULL in state 2\n"); 1005 LOG (llevError, "Map == NULL in state 2\n");
1012 break; 1006 break;
1013 } 1007 }
1014 1008
1015#if 0 1009#if 0
1016 /* So that enter_exit will put us at startx/starty */ 1010 /* So that enter_exit will put us at startx/starty */
1017 op->x = -1; 1011 op->x = -1;
1018 1012
1019 enter_exit (op, NULL); 1013 enter_exit (op, NULL);
1020#endif 1014#endif
1021 SET_ANIMATION (op, 2); /* So player faces south */ 1015 SET_ANIMATION (op, 2); /* So player faces south */
1022 /* Enter exit adds a player otherwise */ 1016 /* Enter exit adds a player otherwise */
1023 add_statbonus (op); 1017 add_statbonus (op);
1024 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, 1018 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR,
1025 "Now choose a character.\nPress any key to change outlook.\nPress `d' when you're pleased.\n"); 1019 "Now choose a character.\nPress any key to change outlook.\nPress `d' when you're pleased.\n");
1026 op->contr->state = ST_CHANGE_CLASS; 1020 op->contr->state = ST_CHANGE_CLASS;
1027 if (op->msg) 1021 if (op->msg)
1028 new_draw_info (NDI_BLUE, 0, op, op->msg); 1022 new_draw_info (NDI_BLUE, 0, op, op->msg);
1029 return 0;
1030 }
1031 case 'y':
1032 case 'Y':
1033 roll_stats (op);
1034 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, "");
1035 return 1;
1036
1037 case 'q':
1038 case 'Q':
1039 play_again (op);
1040 return 1;
1041
1042 default:
1043 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, "Yes, No, Quit or 1-6. Roll again?");
1044 return 0; 1023 return 0;
1024 }
1025 case 'y':
1026 case 'Y':
1027 roll_stats (op);
1028 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, "");
1029 return 1;
1030
1031 case 'q':
1032 case 'Q':
1033 play_again (op);
1034 return 1;
1035
1036 default:
1037 send_query (&op->contr->socket, CS_QUERY_SINGLECHAR, "Yes, No, Quit or 1-6. Roll again?");
1038 return 0;
1045 } 1039 }
1046 return 0; 1040 return 0;
1047} 1041}
1048 1042
1049/* This function takes the key that is passed, and does the 1043/* This function takes the key that is passed, and does the
1313 /* high not bit set? We're using the old autopickup model */ 1307 /* high not bit set? We're using the old autopickup model */
1314 if (!(op->contr->mode & PU_NEWMODE)) 1308 if (!(op->contr->mode & PU_NEWMODE))
1315 { 1309 {
1316 switch (op->contr->mode) 1310 switch (op->contr->mode)
1317 { 1311 {
1318 case 0: 1312 case 0:
1319 return 1; /* don't pick up */ 1313 return 1; /* don't pick up */
1320 case 1: 1314 case 1:
1315 pick_up (op, tmp);
1316 return 1;
1317 case 2:
1318 pick_up (op, tmp);
1319 return 0;
1320 case 3:
1321 return 0; /* stop before pickup */
1322 case 4:
1323 pick_up (op, tmp);
1324 break;
1325 case 5:
1326 pick_up (op, tmp);
1327 stop = 1;
1328 break;
1329 case 6:
1330 if (QUERY_FLAG (tmp, FLAG_KNOWN_MAGICAL) && !QUERY_FLAG (tmp, FLAG_KNOWN_CURSED))
1321 pick_up (op, tmp); 1331 pick_up (op, tmp);
1322 return 1; 1332 break;
1333
1323 case 2: 1334 case 7:
1335 if (tmp->type == MONEY || tmp->type == GEM)
1324 pick_up (op, tmp); 1336 pick_up (op, tmp);
1325 return 0; 1337 break;
1326 case 3: 1338
1327 return 0; /* stop before pickup */ 1339 default:
1328 case 4: 1340 /* use value density */
1341 if (!QUERY_FLAG (tmp, FLAG_UNPAID)
1342 && (query_cost (tmp, op, F_TRUE) * 100 / (tmp->weight * MAX (tmp->nrof, 1))) >= op->contr->mode)
1329 pick_up (op, tmp); 1343 pick_up (op, tmp);
1330 break;
1331 case 5:
1332 pick_up (op, tmp);
1333 stop = 1;
1334 break;
1335 case 6:
1336 if (QUERY_FLAG (tmp, FLAG_KNOWN_MAGICAL) && !QUERY_FLAG (tmp, FLAG_KNOWN_CURSED))
1337 pick_up (op, tmp);
1338 break;
1339
1340 case 7:
1341 if (tmp->type == MONEY || tmp->type == GEM)
1342 pick_up (op, tmp);
1343 break;
1344
1345 default:
1346 /* use value density */
1347 if (!QUERY_FLAG (tmp, FLAG_UNPAID)
1348 && (query_cost (tmp, op, F_TRUE) * 100 / (tmp->weight * MAX (tmp->nrof, 1))) >= op->contr->mode)
1349 pick_up (op, tmp);
1350 } 1344 }
1351 } 1345 }
1352 else 1346 else
1353 { /* old model */ 1347 { /* old model */
1354 /* NEW pickup handling */ 1348 /* NEW pickup handling */
2126 if (action_makes_visible (op)) 2120 if (action_makes_visible (op))
2127 make_visible (op); 2121 make_visible (op);
2128 2122
2129 switch (op->contr->shoottype) 2123 switch (op->contr->shoottype)
2130 { 2124 {
2131 case range_none: 2125 case range_none:
2132 return; 2126 return;
2133 2127
2134 case range_bow: 2128 case range_bow:
2135 player_fire_bow (op, dir); 2129 player_fire_bow (op, dir);
2136 return; 2130 return;
2137 2131
2138 case range_magic: /* Casting spells */ 2132 case range_magic: /* Casting spells */
2139 spellcost = (cast_spell (op, op, dir, op->contr->ranges[range_magic], op->contr->spellparam[0] ? op->contr->spellparam : NULL)); 2133 spellcost = (cast_spell (op, op, dir, op->contr->ranges[range_magic], op->contr->spellparam[0] ? op->contr->spellparam : 0));
2140 return; 2134 return;
2141 2135
2142 case range_misc: 2136 case range_misc:
2143 fire_misc_object (op, dir); 2137 fire_misc_object (op, dir);
2144 return; 2138 return;
2145 2139
2146 case range_golem: /* Control summoned monsters from scrolls */ 2140 case range_golem: /* Control summoned monsters from scrolls */
2147 if (op->contr->ranges[range_golem] == NULL || op->contr->golem_count != op->contr->ranges[range_golem]->count) 2141 if (op->contr->ranges[range_golem] == NULL || op->contr->golem_count != op->contr->ranges[range_golem]->count)
2148 { 2142 {
2149 op->contr->ranges[range_golem] = NULL; 2143 op->contr->ranges[range_golem] = NULL;
2150 op->contr->shoottype = range_none; 2144 op->contr->shoottype = range_none;
2151 op->contr->golem_count = 0; 2145 op->contr->golem_count = 0;
2152 } 2146 }
2153 else 2147 else
2154 control_golem (op->contr->ranges[range_golem], dir); 2148 control_golem (op->contr->ranges[range_golem], dir);
2155 return; 2149 return;
2156 2150
2157 case range_skill: 2151 case range_skill:
2158 if (!op->chosen_skill) 2152 if (!op->chosen_skill)
2159 { 2153 {
2160 if (op->type == PLAYER) 2154 if (op->type == PLAYER)
2161 new_draw_info (NDI_UNIQUE, 0, op, "You have no applicable skill to use."); 2155 new_draw_info (NDI_UNIQUE, 0, op, "You have no applicable skill to use.");
2162 return; 2156 return;
2163 } 2157 }
2164 (void) do_skill (op, op, op->chosen_skill, dir, NULL); 2158 (void) do_skill (op, op, op->chosen_skill, dir, NULL);
2165 return; 2159 return;
2166 case range_builder: 2160 case range_builder:
2167 apply_map_builder (op, dir); 2161 apply_map_builder (op, dir);
2168 return; 2162 return;
2169 default: 2163 default:
2170 new_draw_info (NDI_UNIQUE, 0, op, "Illegal shoot type."); 2164 new_draw_info (NDI_UNIQUE, 0, op, "Illegal shoot type.");
2171 return; 2165 return;
2172 } 2166 }
2173} 2167}
2174 2168
2175 2169
2176 2170

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines