Changeset 589
- Timestamp:
- 09/29/07 15:17:19 (1 year ago)
- Files:
-
- trunk/src/cave.c (modified) (1 diff)
- trunk/src/cmd1.c (modified) (7 diffs)
- trunk/src/cmd2.c (modified) (6 diffs)
- trunk/src/dungeon.c (modified) (1 diff)
- trunk/src/externs.h (modified) (1 diff)
- trunk/src/pathfind.c (modified) (1 diff)
- trunk/src/types.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/cave.c
r541 r589 3908 3908 } 3909 3909 3910 /* Cancel auto-pickup if badly wounded XXX XXX */3911 if ((p_ptr->notice & (PN_PICKUP)) &&3912 (p_ptr->chp < (p_ptr->mhp * op_ptr->hitpoint_warn / 10)))3913 {3914 p_ptr->auto_pickup_okay = FALSE;3915 }3916 3917 3910 /* Flush the input if requested */ 3918 3911 if (flush_disturb) flush(); trunk/src/cmd1.c
r554 r589 241 241 static bool auto_pickup_okay(const object_type *o_ptr) 242 242 { 243 /* Bad wounds prelude autopickup */ 244 if (p_ptr->chp < (p_ptr->mhp * op_ptr->hitpoint_warn / 10)) return FALSE; 245 243 246 if (!inven_carry_okay(o_ptr)) return FALSE; 244 247 … … 322 325 * objects. They are truly "unknown". 323 326 */ 324 byte py_pickup(int pickup )327 byte py_pickup(int pickup, bool pickup_okay) 325 328 { 326 329 int py = p_ptr->py; … … 344 347 bool msg = TRUE; 345 348 346 bool auto_okay = p_ptr->auto_pickup_okay;347 348 349 /* Reset auto_pickup_okay */350 p_ptr->auto_pickup_okay = TRUE;351 352 349 353 350 /* Nothing to pick up -- return */ … … 374 371 375 372 /* Automatically pick up items into the backpack */ 376 if ( auto_okay && auto_pickup_okay(o_ptr))373 if (pickup_okay && auto_pickup_okay(o_ptr)) 377 374 { 378 375 /* Pick up the object with message */ … … 532 529 * up. Force the display of a menu in all cases. 533 530 */ 534 if (call_function_again) objs_picked_up += py_pickup(2 );531 if (call_function_again) objs_picked_up += py_pickup(2, pickup_okay); 535 532 536 533 /* Indicate how many objects have been picked up. */ … … 548 545 * and also handles attempting to move into walls/doors/rubble/etc. 549 546 */ 550 void move_player(int dir )547 void move_player(int dir, bool pickup_okay) 551 548 { 552 549 int py = p_ptr->py; … … 711 708 712 709 /* Handle objects now. XXX */ 713 p_ptr->energy_use = py_pickup(2 ) * 10;710 p_ptr->energy_use = py_pickup(2, pickup_okay) * 10; 714 711 } 715 712 trunk/src/cmd2.c
r526 r589 2054 2054 * Helper function for the "walk" command. 2055 2055 */ 2056 void do_cmd_walk(void)2056 static void walk(bool can_pickup) 2057 2057 { 2058 2058 int y, x, dir; … … 2100 2100 2101 2101 /* Move the player */ 2102 move_player(dir); 2102 move_player(dir, can_pickup); 2103 } 2104 2105 /* 2106 * Walk. 2107 */ 2108 void do_cmd_walk(void) 2109 { 2110 walk(TRUE); 2103 2111 } 2104 2112 … … 2106 2114 * Jump into a trap, turn off pickup. 2107 2115 * 2108 * What a horrible function.2116 * What a horrible concept. 2109 2117 */ 2110 2118 void do_cmd_jump(void) 2111 2119 { 2112 2120 bool old_easy_alter; 2113 2114 /* Picking up NOT okay, so whatever you heard is obviously wrong */2115 p_ptr->auto_pickup_okay = FALSE;2116 2121 2117 2122 /* easy_alter can be turned off (don't disarm traps) */ … … 2119 2124 easy_alter = FALSE; 2120 2125 2121 /* Now actually do this silly walk*/2122 do_cmd_walk();2126 /* Walk without pickup */ 2127 walk(FALSE); 2123 2128 2124 2129 /* Restore easy_alter */ … … 2224 2229 2225 2230 /* Handle objects now. XXX XXX XXX */ 2226 p_ptr->energy_use += py_pickup(0 ) * 10;2231 p_ptr->energy_use += py_pickup(0, TRUE) * 10; 2227 2232 2228 2233 /* Hack -- enter a store if we are on one */ … … 2251 2256 2252 2257 /* Pick up floor objects, forcing a menu for multiple objects. */ 2253 energy_cost = py_pickup(1 ) * 10;2258 energy_cost = py_pickup(1, TRUE) * 10; 2254 2259 2255 2260 /* Maximum time expenditure is a full turn. */ trunk/src/dungeon.c
r583 r589 1272 1272 { 1273 1273 /* Recursively call the pickup function, use energy */ 1274 p_ptr->energy_use = py_pickup(0 ) * 10;1274 p_ptr->energy_use = py_pickup(0, TRUE) * 10; 1275 1275 p_ptr->notice &= ~(PN_PICKUP); 1276 1276 } trunk/src/externs.h
r580 r589 300 300 /* cmd1.c */ 301 301 extern void search(void); 302 extern byte py_pickup(int pickup );303 extern void move_player(int dir );302 extern byte py_pickup(int pickup, bool pickup_okay); 303 extern void move_player(int dir, bool pickup); 304 304 305 305 /* cmd5.c */ trunk/src/pathfind.c
r465 r589 1102 1102 1103 1103 /* Move the player. Never pick up objects */ 1104 p_ptr->auto_pickup_okay = FALSE; 1105 move_player(p_ptr->run_cur_dir); 1104 move_player(p_ptr->run_cur_dir, FALSE); 1106 1105 } 1107 1106 trunk/src/types.h
r542 r589 929 929 bool run_break_left; /* Looking for a break (left) */ 930 930 931 bool auto_pickup_okay; /* Allow automatic pickup */932 933 931 s16b command_cmd; /* Gives identity of current command */ 934 932 s16b command_arg; /* Gives argument of current command */
