Changeset 387

Show
Ignore:
Timestamp:
07/27/07 18:26:04 (1 year ago)
Author:
takkaria
Message:
  • Add 'K' command to "mark item kind as squelch" (#250)
  • Add squelch_worthless option which does what it says on the tin. (#299)
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/angband-3.0.8/src/cmd0.c

    r385 r387  
    108108        { "Drop an item",              'd', do_cmd_drop }, 
    109109        { "Destroy an item",           'k', do_cmd_destroy }, 
     110        { "Mark an item as squelch",   'K', do_cmd_mark_squelch }, 
    110111        { "Examine an item",           'I', do_cmd_observe }, 
    111112        { "Inscribe an object",        '{', do_cmd_inscribe }, 
  • branches/angband-3.0.8/src/cmd2.c

    r385 r387  
    29792979        drop_near(i_ptr, j, y, x); 
    29802980} 
     2981 
     2982 
     2983/* 
     2984 * See if one can squelch a given kind of item. 
     2985 */ 
     2986static bool squelchable_hook(const object_type *o_ptr) 
     2987{ 
     2988        object_kind *k_ptr = &k_info[o_ptr->k_idx]; 
     2989 
     2990        /* No point in double-squelching things */ 
     2991        if (k_ptr->squelch) return FALSE; 
     2992 
     2993        /* Don't squelch bad tvals */ 
     2994        if (!squelch_tval(o_ptr->tval)) return FALSE; 
     2995 
     2996        /* Only allow if aware */ 
     2997        return object_aware_p(o_ptr); 
     2998} 
     2999 
     3000 
     3001 
     3002/* 
     3003 * Mark item as "squelch". 
     3004 */ 
     3005void do_cmd_mark_squelch() 
     3006{ 
     3007        const char *q = "Squelch which item kind? "; 
     3008        const char *s = "You have nothing you can squelch."; 
     3009 
     3010        object_type *o_ptr; 
     3011        object_kind *k_ptr; 
     3012        int item; 
     3013 
     3014        /* Get an item */ 
     3015        item_tester_hook = squelchable_hook; 
     3016        if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return; 
     3017 
     3018        /* Get the object */ 
     3019        if (item >= 0) 
     3020                o_ptr = &inventory[item]; 
     3021        else 
     3022                o_ptr = &o_list[0 - item]; 
     3023 
     3024        /* Get object kind */ 
     3025        k_ptr = &k_info[o_ptr->k_idx]; 
     3026 
     3027        /* Set squelch flag */ 
     3028        k_ptr->squelch = TRUE; 
     3029} 
  • branches/angband-3.0.8/src/cmds.h

    r293 r387  
    2727extern void do_cmd_fire(void); 
    2828extern void do_cmd_throw(void); 
     29extern void do_cmd_mark_squelch(void); 
    2930 
    3031/* cmd3.c */ 
  • branches/angband-3.0.8/src/defines.h

    r354 r387  
    24222422#define OPT_show_piles                          67 
    24232423#define OPT_center_player                       68 
    2424  
    2425 #define OPT_auto_more                           71 
     2424#define OPT_auto_more                   71 
    24262425#define OPT_hp_changes_color            74 
    24272426#define OPT_hide_squelchable            75 
     2427#define OPT_squelch_worthless           76 
    24282428#define OPT_mouse_movement              77 
    24292429 
  • branches/angband-3.0.8/src/externs.h

    r357 r387  
    600600void autoinscribe_pack(void); 
    601601 
     602bool squelch_tval(int tval); 
    602603bool squelch_item_ok(const object_type *o_ptr); 
    603604bool squelch_hide_item(object_type *o_ptr); 
  • branches/angband-3.0.8/src/object1.c

    r359 r387  
    759759 
    760760        /* Hack -- mark-to-squelch worthless items XXX */ 
    761         if (!k_ptr->everseen && aware
     761        if (!k_ptr->everseen && aware && OPTION(squelch_worthless)
    762762        { 
    763763                if (object_value(o_ptr) == 0) 
  • branches/angband-3.0.8/src/squelch.c

    r357 r387  
    313313 
    314314/* 
     315 * Determines whether a tval is eligable for sval-squelch. 
     316 */ 
     317bool squelch_tval(int tval) 
     318{ 
     319        size_t i; 
     320 
     321        /* Only squelch if the tval's allowed */ 
     322        for (i = 0; i < N_ELEMENTS(sval_dependent); i++) 
     323        { 
     324                if (tval == sval_dependent[i].tval) 
     325                        return TRUE; 
     326        } 
     327 
     328        return FALSE; 
     329} 
     330 
     331 
     332/* 
    315333 * Determines if an object is eligable for squelching. 
    316334 */ 
     
    342360        if (k_ptr->squelch && (k_ptr->flavor == 0 || k_ptr->aware)) 
    343361        { 
    344                 /* Only squelch if the tval's allowed */ 
    345                 for (i = 0; i < N_ELEMENTS(sval_dependent); i++) 
    346                 { 
    347                         if (k_info[o_ptr->k_idx].tval == sval_dependent[i].tval) 
    348                                 return TRUE; 
    349                 } 
     362                if (squelch_tval(k_info[o_ptr->k_idx].tval)) 
     363                        return TRUE; 
    350364        } 
    351365 
  • branches/angband-3.0.8/src/tables.c

    r331 r387  
    14731473        "hp_changes_color",                     /* OPT_hp_changes_color */ 
    14741474        "hide_squelchable",                     /* OPT_hide_squelchable */ 
    1475         NULL,                                          /* xxx */ 
     1475        "squelch_worthless",                   /* OPT_squelch_worthless */ 
    14761476        "mouse_movement",                       /* OPT_mouse_movement */ 
    14771477        NULL,                                           /* xxx */ 
     
    17371737        "Player color indicates low hit points",        /* OPT_hp_changes_color */ 
    17381738        "Hide items set as squelchable",                        /* OPT_hide_squelchable */ 
    1739         NULL,                                                                          /* xxx */ 
     1739        "Automatically squelch worthless items",       /* OPT_squelch_worthless */ 
    17401740        "Allow mouse clicks to move the player",        /* OPT_mouse_movement */ 
    17411741        NULL,                                                                           /* xxx */ 
     
    20012001        FALSE,          /* OPT_hp_changes_color */ 
    20022002        FALSE,          /* OPT_hide_squelchable */ 
    2003         FALSE,          /* xxx */ 
     2003        FALSE,          /* OPT_squelch_worthless */ 
    20042004        FALSE,          /* OPT_mouse_movement */ 
    20052005        FALSE,          /* xxx */ 
     
    21982198                OPT_pickup_detail, 
    21992199                OPT_hide_squelchable, 
     2200                OPT_squelch_worthless, 
    22002201                OPT_easy_alter, 
    22012202                OPT_easy_open, 
    22022203                OPT_mouse_movement, 
    2203                 OPT_NONE, 
    22042204                OPT_NONE, 
    22052205                OPT_NONE,