Ticket #794: 215-fix-spoilers.patch

File 215-fix-spoilers.patch, 2.1 KB (added by magnate, 11 years ago)

patch to fix this problem

  • src/object/obj-info.c

    old new  
    162162        { TR3_TELEPORT, "Induces random teleportation" }, 
    163163}; 
    164164 
     165static const flag_type f1_slay[] = 
     166{ 
     167        { TR1_SLAY_ANIMAL, "animals" }, 
     168        { TR1_SLAY_EVIL, "evil creatures" }, 
     169        { TR1_SLAY_ORC, "orcs" }, 
     170        { TR1_SLAY_TROLL, "trolls" }, 
     171        { TR1_SLAY_GIANT, "giants" }, 
     172        { TR1_SLAY_DRAGON, "dragons" }, 
     173        { TR1_SLAY_DEMON, "demons" }, 
     174        { TR1_SLAY_UNDEAD, "undead" }, 
     175}; 
     176 
     177static const flag_type f1_brand[] = 
     178{ 
     179        { TR1_BRAND_ACID, "acid" }, 
     180        { TR1_BRAND_ELEC, "lightning" }, 
     181        { TR1_BRAND_FIRE, "flames" }, 
     182        { TR1_BRAND_COLD, "frost" }, 
     183        { TR1_BRAND_POIS, "venom" }, 
     184}; 
     185 
     186static const flag_type f1_kill[] = 
     187{ 
     188        { TR1_KILL_DRAGON, "dragons" }, 
     189        { TR1_KILL_DEMON, "demons" }, 
     190        { TR1_KILL_UNDEAD, "undead" }, 
     191}; 
    165192 
    166193/*** Code that makes use of the data tables ***/ 
    167194 
     
    287314} 
    288315 
    289316 
     317/* 
     318 * Describe slays and brands on weapons 
     319 */ 
    290320 
     321static bool describe_slays(u32b f1) 
     322{ 
     323        const char *descs[N_ELEMENTS(f1_slay)]; 
     324        size_t count; 
    291325 
     326        bool printed = FALSE; 
    292327 
     328        /* Slays */ 
     329        count = info_collect(f1_slay, N_ELEMENTS(f1_slay), f1, descs); 
     330        if (count) 
     331        { 
     332                text_out("It is especially deadly to "); 
     333                info_out_list(descs, count); 
     334                printed = TRUE; 
     335        } 
    293336 
     337        /* Kills */ 
     338        count = info_collect(f1_kill, N_ELEMENTS(f1_kill), f1, descs); 
     339        if (count) 
     340        { 
     341                text_out("It is a great bane of "); 
     342                info_out_list(descs, count); 
     343                printed = TRUE; 
     344        } 
    294345 
    295  
     346        /* Brands */ 
     347        count = info_collect(f1_brand, N_ELEMENTS(f1_brand), f1, descs); 
     348        if (count) 
     349        { 
     350                text_out("It is branded with "); 
     351                info_out_list(descs, count); 
     352                printed = TRUE; 
     353        } 
     354        return printed; 
     355} 
    296356 
    297357 
    298358 
     
    328388} 
    329389 
    330390 
     391 
    331392/* 
    332393 * Account for criticals in the calculation of melee prowess 
    333394 * 
     
    802863        } 
    803864 
    804865        if (describe_stats(f1, o_ptr->pval)) something = TRUE; 
     866        if (describe_slays(f1)) something = TRUE; 
    805867        if (describe_immune(f2)) something = TRUE; 
    806868        if (describe_ignores(f3)) something = TRUE; 
    807869        if (describe_sustains(f2)) something = TRUE;