Ticket #483: failrate.1036.patch

File failrate.1036.patch, 1.5 KB (added by d_m, 11 years ago)

creates new function called "get_use_device_chance()"

  • src/cmd6.c

     
    2222#include "effects.h" 
    2323 
    2424 
     25static int get_use_device_chance(object_type *o_ptr) 
     26{ 
     27        int lev, chance; 
    2528 
     29        /* Extract the item level */ 
     30        if (artifact_p(o_ptr)) 
     31                lev = a_info[o_ptr->name1].level; 
     32        else 
     33                lev = k_info[o_ptr->k_idx].level; 
     34 
     35        /* Base chance of success */ 
     36        chance = p_ptr->state.skills[SKILL_DEVICE]; 
     37 
     38        /* Confusion hurts skill */ 
     39        if (p_ptr->timed[TMD_CONFUSED] || p_ptr->timed[TMD_AMNESIA]) 
     40                chance = chance / 2; 
     41 
     42        /* High level objects are harder */ 
     43        chance -= MIN(lev, 50); 
     44 
     45        return MAX(chance, 0); 
     46} 
     47 
     48 
    2649/* 
    2750 * Check to see if the player can use a rod/wand/staff/activatable object. 
    2851 */ 
     
    4164                default:       msg = "activate it";  break; 
    4265        } 
    4366 
    44         /* Extract the item level */ 
    45         if (artifact_p(o_ptr)) 
    46                 lev = a_info[o_ptr->name1].level; 
    47         else 
    48                 lev = k_info[o_ptr->k_idx].level; 
     67        /* Figure out how hard the item is to use */ 
     68        chance = get_use_device_chance(o_ptr); 
    4969 
    50         /* Base chance of success */ 
    51         chance = p_ptr->state.skills[SKILL_DEVICE]; 
    52  
    53         /* Confusion hurts skill */ 
    54         if (p_ptr->timed[TMD_CONFUSED] || p_ptr->timed[TMD_AMNESIA]) 
    55                 chance = chance / 2; 
    56  
    57         /* High level objects are harder */ 
    58         chance -= MIN(lev, 50); 
    59  
    6070        /* Give everyone a (slight) chance */ 
    6171        if ((chance < USE_DEVICE) && one_in_(USE_DEVICE - chance + 1)) 
    62         { 
    6372                chance = USE_DEVICE; 
    64         } 
    6573 
    6674        /* Roll for usage */ 
    6775        if ((chance < USE_DEVICE) || (randint1(chance) < USE_DEVICE))