Changeset 443

Show
Ignore:
Timestamp:
08/05/07 00:39:21 (1 year ago)
Author:
ctate
Message:

* Fix subtle copy/paste bug in the object-origin code from [404]
* Decouple make_gold() and make_object() from the object_level global var
* Pin chest contents to their origin depth, not depth where opened [TODO: sale price for an unopened chest as a function of origin depth]
* Minor renaming in monster_death() for (my) comprehension

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/cmd2.c

    r433 r443  
    223223                { 
    224224                        /* Make some gold */ 
    225                         if (!make_gold(i_ptr)) continue; 
     225                        if (!make_gold(i_ptr, o_ptr->origin_depth)) continue; 
    226226                } 
    227227 
     
    230230                { 
    231231                        /* Make an object */ 
    232                         if (!make_object(i_ptr, FALSE, FALSE)) continue; 
     232                        if (!make_object(i_ptr, o_ptr->origin_depth, FALSE, FALSE)) continue; 
    233233                } 
    234234 
  • trunk/src/externs.h

    r429 r443  
    444444extern void object_prep(object_type *o_ptr, int k_idx); 
    445445extern void apply_magic(object_type *o_ptr, int lev, bool okay, bool good, bool great); 
    446 extern bool make_object(object_type *j_ptr, bool good, bool great); 
    447 extern bool make_gold(object_type *j_ptr); 
     446extern bool make_object(object_type *j_ptr, int lev, bool good, bool great); 
     447extern bool make_gold(object_type *j_ptr, int lev); 
    448448extern s16b floor_carry(int y, int x, object_type *j_ptr); 
    449449extern void drop_near(object_type *j_ptr, int chance, int y, int x); 
  • trunk/src/object2.c

    r410 r443  
    13431343 
    13441344                        bool r_uniq = (r_ptr->flags1 & RF1_UNIQUE) ? TRUE : FALSE; 
    1345                         bool s_uniq = (r_ptr->flags1 & RF1_UNIQUE) ? TRUE : FALSE; 
     1345                        bool s_uniq = (s_ptr->flags1 & RF1_UNIQUE) ? TRUE : FALSE; 
    13461346 
    13471347                        if (r_uniq && !s_uniq) act = 0; 
     
    28682868 * This routine plays nasty games to generate the "special artifacts". 
    28692869 * 
    2870  * This routine uses "object_level" for the "generation level". 
    2871  * 
    28722870 * We assume that the given object has been "wiped". 
    28732871 */ 
    2874 bool make_object(object_type *j_ptr, bool good, bool great) 
     2872bool make_object(object_type *j_ptr, int lev, bool good, bool great) 
    28752873{ 
    28762874        int prob, base; 
     
    28822880 
    28832881        /* Base level for the object */ 
    2884         base = (good ? (object_level + 10) : object_level); 
     2882        base = (good ? (lev + 10) : lev); 
    28852883 
    28862884 
     
    29252923 
    29262924        /* Apply magic (allow artifacts) */ 
    2927         apply_magic(j_ptr, object_level, TRUE, good, great); 
     2925        apply_magic(j_ptr, lev, TRUE, good, great); 
    29282926 
    29292927 
     
    29672965 * The location must be a legal, clean, floor grid. 
    29682966 */ 
    2969 bool make_gold(object_type *j_ptr
     2967bool make_gold(object_type *j_ptr, int lev
    29702968{ 
    29712969        int sval; 
     
    29752973 
    29762974        /* Hack -- Pick a Treasure variety */ 
    2977         sval = ((randint(object_level + 2) + 2) / 2); 
     2975        sval = ((randint(lev + 2) + 2) / 2); 
    29782976 
    29792977        /* Apply "extra" magic */ 
    29802978        if (rand_int(GREAT_OBJ) == 0) 
    29812979        { 
    2982                 sval += randint(object_level + 1); 
     2980                sval += randint(lev + 1); 
    29832981        } 
    29842982 
     
    33273325 
    33283326                /* Make a good (or great) object (if possible) */ 
    3329                 if (!make_object(i_ptr, TRUE, great)) continue; 
     3327                if (!make_object(i_ptr, object_level, TRUE, great)) continue; 
    33303328                i_ptr->origin = ORIGIN_ACQUIRE; 
    33313329                i_ptr->origin_depth = p_ptr->depth; 
     
    33583356 
    33593357        /* Make an object (if possible) */ 
    3360         if (make_object(i_ptr, good, great)) 
     3358        if (make_object(i_ptr, object_level, good, great)) 
    33613359        { 
    33623360                i_ptr->origin = ORIGIN_FLOOR; 
     
    33943392 
    33953393        /* Make some gold */ 
    3396         if (make_gold(i_ptr)) 
     3394        if (make_gold(i_ptr, object_level)) 
    33973395        { 
    33983396                /* Give it to the floor */ 
  • trunk/src/wizard2.c

    r404 r443  
    762762 
    763763                        /* Create an object */ 
    764                         make_object(i_ptr, good, great); 
     764                        make_object(i_ptr, object_level, good, great); 
    765765 
    766766 
  • trunk/src/xtra2.c

    r415 r443  
    11761176        bool great = (r_ptr->flags1 & (RF1_DROP_GREAT)) ? TRUE : FALSE; 
    11771177 
    1178         bool do_gold = (!(r_ptr->flags1 & (RF1_ONLY_ITEM))); 
    1179         bool do_item = (!(r_ptr->flags1 & (RF1_ONLY_GOLD))); 
     1178        bool gold_ok = (!(r_ptr->flags1 & (RF1_ONLY_ITEM))); 
     1179        bool item_ok = (!(r_ptr->flags1 & (RF1_ONLY_GOLD))); 
    11801180 
    11811181        int force_coin = get_coin_type(r_ptr); 
     
    12871287 
    12881288                /* Make Gold */ 
    1289                 if (do_gold && (!do_item || (rand_int(100) < 50))) 
     1289                if (gold_ok && (!item_ok || (rand_int(100) < 50))) 
    12901290                { 
    12911291                        /* Make some gold */ 
    1292                         if (!make_gold(i_ptr)) continue; 
     1292                        if (!make_gold(i_ptr, object_level)) continue; 
    12931293 
    12941294                        /* Assume seen XXX XXX XXX */ 
     
    13001300                { 
    13011301                        /* Make an object */ 
    1302                         if (!make_object(i_ptr, good, great)) continue; 
     1302                        if (!make_object(i_ptr, object_level, good, great)) continue; 
    13031303 
    13041304                        /* Assume seen XXX XXX XXX */