Revert "Track who destroys an item; incur Nemelex penance for deck destruction."
authorAdam Borowski <kilobyte@angband.pl>
Sat, 15 Jun 2013 11:59:35 +0000 (13:59 +0200)
committerAdam Borowski <kilobyte@angband.pl>
Sat, 15 Jun 2013 21:37:41 +0000 (23:37 +0200)
This follows removal of documentation in 747b1a2d.

Giving penance for a pointless act you need to go out your way for is quite
strange -- it doesn't in any way restrict the player and thus has no balance
gains, and there's a cost of making an already long god description even
longer.  Plus, you can get rid of decks simply by dropping them; on a
non-permanent level if you really want to keep ^F clean.

Not sure if the source tracking should be kept; for now I reverted it to
keep things simple and to avoid an use of deprecated mindex (let's get rid
of it already!), but if there's an use, please unrevert this part.

This reverts commit 46bfda39a8d584164fa475188367f331314a644d.

18 files changed:
crawl-ref/source/abyss.cc
crawl-ref/source/beam.cc
crawl-ref/source/enum.h
crawl-ref/source/godabil.cc
crawl-ref/source/godconduct.cc
crawl-ref/source/godprayer.cc
crawl-ref/source/items.cc
crawl-ref/source/items.h
crawl-ref/source/misc.cc
crawl-ref/source/mon-stuff.cc
crawl-ref/source/mon-transit.cc
crawl-ref/source/monster.cc
crawl-ref/source/ouch.cc
crawl-ref/source/religion.cc
crawl-ref/source/spl-book.cc
crawl-ref/source/spl-clouds.cc
crawl-ref/source/spl-damage.cc
crawl-ref/source/spl-transloc.cc

index d8a055f..ab2cc14 100644 (file)
@@ -591,7 +591,7 @@ static void _push_items()
         for (distance_iterator di(item.pos); di; ++di)
             if (!_pushy_feature(grd(*di)))
             {
-                move_item_to_grid(&i, *di, NON_MONSTER, true);
+                move_item_to_grid(&i, *di, true);
                 break;
             }
     }
index 026d809..c029af0 100644 (file)
@@ -2574,10 +2574,10 @@ void bolt::drop_object()
             }
         }
 
-        copy_item_to_grid(*item, pos(), agent()->mindex(), 1);
+        copy_item_to_grid(*item, pos(), 1);
     }
     else
-        item_was_destroyed(*item, agent()->mindex());
+        item_was_destroyed(*item, NON_MONSTER);
 }
 
 // Returns true if the beam hits the player, fuzzing the beam if necessary
index 9b3079f..f135a14 100644 (file)
@@ -997,7 +997,6 @@ enum conduct_type
     DID_EXPLORATION,                      // Ashenzari, wrath timers
     DID_DESECRATE_HOLY_REMAINS,           // Zin/Ely/TSO/Yredelemnul
     DID_SEE_MONSTER,                      // TSO
-    DID_DESTROY_DECK,                     // Nemelex
 
     NUM_CONDUCTS
 };
index febe343..018ff0b 100644 (file)
@@ -1529,7 +1529,7 @@ bool trog_burn_spellbooks()
 
             dprf("Burned spellbook rarity: %d", rarity);
             destroy_spellbook(*si);
-            item_was_destroyed(*si, MHITYOU);
+            item_was_destroyed(*si);
             destroy_item(si.link());
             count++;
         }
@@ -1858,7 +1858,7 @@ bool kiku_take_corpse()
         if (item_is_stationary(item))
             continue;
 
-        item_was_destroyed(item, MHITYOU);
+        item_was_destroyed(item);
         destroy_item(i);
         return true;
     }
@@ -2033,7 +2033,7 @@ int fedhas_fungal_bloom()
                     turn_corpse_into_skeleton(*j);
                 else
                 {
-                    item_was_destroyed(*j, MHITYOU);
+                    item_was_destroyed(*j);
                     destroy_item(j->index());
                 }
 
@@ -2777,7 +2777,7 @@ int fedhas_corpse_spores(beh_type attitude, bool interactive)
             turn_corpse_into_skeleton(*positions[i]);
         else
         {
-            item_was_destroyed(*positions[i], MHITYOU);
+            item_was_destroyed(*positions[i]);
             destroy_item(positions[i]->index());
         }
     }
index 0cc480e..3204036 100644 (file)
@@ -1001,15 +1001,6 @@ bool did_god_conduct(conduct_type thing_done, int level, bool known,
             }
             break;
 
-        case DID_DESTROY_DECK:
-            if (you.religion == GOD_NEMELEX_XOBEH)
-            {
-                piety_change = -level;
-                penance = level * (known ? 2 : 1);
-                retval = true;
-            }
-            break;
-
         case DID_NOTHING:
         case NUM_CONDUCTS:
             break;
@@ -1071,7 +1062,6 @@ bool did_god_conduct(conduct_type thing_done, int level, bool known,
                 "Kill Artificial", "Undead Slave Kill Artificial",
                 "Servant Kill Artificial", "Destroy Spellbook",
                 "Exploration", "Desecrate Holy Remains", "Seen Monster",
-                "Destroy Deck",
             };
 
             COMPILE_CHECK(ARRAYSZ(conducts) == NUM_CONDUCTS);
index 041eff8..d64ed63 100644 (file)
@@ -537,7 +537,7 @@ static void _ashenzari_sac_scroll(const item_def& item)
     }
 
     mitm[it].quantity = 1;
-    if (!move_item_to_grid(&it, you.pos(), MHITYOU, true))
+    if (!move_item_to_grid(&it, you.pos(), true))
         destroy_item(it, true); // can't happen
 }
 
@@ -865,7 +865,7 @@ static bool _offer_items()
 
         piety_gain_t relative_gain = sacrifice_item_stack(item);
         print_sacrifice_message(you.religion, mitm[i], relative_gain);
-        item_was_destroyed(mitm[i], MHITYOU);
+        item_was_destroyed(mitm[i]);
         destroy_item(i);
         i = next;
         num_sacced++;
index d134392..8fc581d 100644 (file)
@@ -35,7 +35,6 @@
 #include "env.h"
 #include "evoke.h"
 #include "food.h"
-#include "godconduct.h"
 #include "godpassive.h"
 #include "godprayer.h"
 #include "hints.h"
@@ -607,12 +606,6 @@ void item_was_destroyed(const item_def &item, int cause)
 {
     if (item.props.exists("destroy_xp"))
         gain_exp(item.props["destroy_xp"].get_int());
-    if (is_deck(item) && cause == MHITYOU)
-    {
-        did_god_conduct(DID_DESTROY_DECK,
-                        3 * deck_rarity(item) *
-                        (origin_is_god_gift(item) ? 2 : 1));
-    }
     _handle_gone_item(item);
     xom_check_destroyed_item(item, cause);
 }
@@ -1874,8 +1867,7 @@ void mark_items_non_visit_at(const coord_def &pos)
 //
 // Returns false on error or level full - cases where you
 // keep the item.
-bool move_item_to_grid(int *const obj, const coord_def& p, int agent,
-                       bool silent)
+bool move_item_to_grid(int *const obj, const coord_def& p, bool silent)
 {
     ASSERT_IN_BOUNDS(p);
 
@@ -1888,7 +1880,7 @@ bool move_item_to_grid(int *const obj, const coord_def& p, int agent,
 
     if (feat_destroys_item(grd(p), mitm[ob], !silenced(p) && !silent))
     {
-        item_was_destroyed(item, agent);
+        item_was_destroyed(item, NON_MONSTER);
         destroy_item(ob);
         ob = NON_ITEM;
 
@@ -1929,7 +1921,7 @@ bool move_item_to_grid(int *const obj, const coord_def& p, int agent,
         while (item.quantity > 1)
         {
             // If we can't copy the items out, we lose the surplus.
-            if (copy_item_to_grid(item, p, agent, 1, false, true))
+            if (copy_item_to_grid(item, p, 1, false, true))
                 --item.quantity;
             else
                 item.quantity = 1;
@@ -1978,7 +1970,7 @@ void move_item_stack_to_grid(const coord_def& from, const coord_def& to)
 
 
 // Returns false if no items could be dropped.
-bool copy_item_to_grid(const item_def &item, const coord_def& p, int agent,
+bool copy_item_to_grid(const item_def &item, const coord_def& p,
                         int quant_drop, bool mark_dropped, bool silent)
 {
     ASSERT_IN_BOUNDS(p);
@@ -1991,7 +1983,7 @@ bool copy_item_to_grid(const item_def &item, const coord_def& p, int agent,
         if (item_is_spellbook(item))
             destroy_spellbook(item);
 
-        item_was_destroyed(item, agent);
+        item_was_destroyed(item, NON_MONSTER);
 
         return true;
     }
@@ -2048,7 +2040,7 @@ bool copy_item_to_grid(const item_def &item, const coord_def& p, int agent,
         origin_set_unknown(new_item);
     }
 
-    move_item_to_grid(&new_item_idx, p, agent, true);
+    move_item_to_grid(&new_item_idx, p, true);
     if (is_blood_potion(item)
         && item.quantity != quant_drop) // partial drop only
     {
@@ -2191,7 +2183,7 @@ bool drop_item(int item_dropped, int quant_drop)
     const dungeon_feature_type my_grid = grd(you.pos());
 
     if (!copy_item_to_grid(you.inv[item_dropped],
-                            you.pos(), MHITYOU, quant_drop, true, true))
+                            you.pos(), quant_drop, true, true))
     {
         mpr("Too many items on this level, not dropping the item.");
         return false;
index d8db6d1..ddbd755 100644 (file)
@@ -37,7 +37,7 @@ void inc_inv_item_quantity(int obj, int amount, bool suppress_burden = false);
 void inc_mitm_item_quantity(int obj, int amount);
 
 bool move_item_to_grid(int *const obj, const coord_def& p,
-                       int agent = NON_MONSTER, bool silent = false);
+                        bool silent = false);
 void move_item_stack_to_grid(const coord_def& from, const coord_def& to);
 void note_inscribe_item(item_def &item);
 int  move_item_to_player(int obj, int quant_got, bool quiet = false,
@@ -79,8 +79,7 @@ void item_list_on_square(vector<const item_def*>& items,
                          int obj, bool force_squelch = false);
 
 bool copy_item_to_grid(const item_def &item, const coord_def& p,
-                       int agent = NON_MONSTER, // who did this?
-                       int quant_drop = -1,     // item.quantity by default
+                       int quant_drop = -1,    // item.quantity by default
                        bool mark_dropped = false,
                        bool silent = false);
 coord_def item_pos(const item_def &item);
index dc3354f..a8ca858 100644 (file)
@@ -213,12 +213,12 @@ static void _turn_corpse_into_skeleton_and_chunks(item_def &item, bool prefer_ch
         turn_corpse_into_skeleton(item);
     }
 
-    copy_item_to_grid(copy, item_pos(item), MHITYOU);
+    copy_item_to_grid(copy, item_pos(item));
 }
 
 void butcher_corpse(item_def &item, maybe_bool skeleton, bool chunks)
 {
-    item_was_destroyed(item, MHITYOU);
+    item_was_destroyed(item);
     if (!mons_skeleton(item.mon_type))
         skeleton = MB_FALSE;
     if (skeleton == MB_TRUE || skeleton == MB_MAYBE && one_chance_in(3))
@@ -985,7 +985,7 @@ void turn_corpse_into_skeleton_and_blood_potions(item_def &item)
     if (o != NON_ITEM)
     {
         turn_corpse_into_blood_potions(blood_potions);
-        copy_item_to_grid(blood_potions, you.pos(), MHITYOU);
+        copy_item_to_grid(blood_potions, you.pos());
     }
 }
 
index bd2b0fc..c6e1751 100644 (file)
@@ -198,8 +198,7 @@ void monster_drop_things(monster* mons,
 
                 // If a monster is swimming, the items are ALREADY
                 // underwater.
-                move_item_to_grid(&item, mons->pos(), mons->mindex(),
-                                  mons->swimming());
+                move_item_to_grid(&item, mons->pos(), mons->swimming());
             }
 
             mons->inv[i] = NON_ITEM;
@@ -454,7 +453,7 @@ int place_monster_corpse(const monster* mons, bool silent,
         return -1;
     }
 
-    move_item_to_grid(&o, mons->pos(), mons->mindex(), !mons->swimming());
+    move_item_to_grid(&o, mons->pos(), !mons->swimming());
 
     if (you.see_cell(mons->pos()))
     {
index 67bc6b2..708deae 100644 (file)
@@ -237,7 +237,7 @@ void place_transiting_items()
                                   pos, true);
 
         // List of items we couldn't place.
-        if (!copy_item_to_grid(*item, where_to_go, MHITNOT, 1, false, true))
+        if (!copy_item_to_grid(*item, where_to_go, 1, false, true))
             keep.push_back(*item);
     }
 
index ca223ed..88400b2 100644 (file)
@@ -1335,7 +1335,7 @@ bool monster::drop_item(int eslot, int near)
                  pitem->name(DESC_A).c_str());
         }
 
-        if (!move_item_to_grid(&item_index, pos(), mindex(), swimming()))
+        if (!move_item_to_grid(&item_index, pos(), swimming()))
         {
             // Re-equip item if we somehow failed to drop it.
             if (was_unequipped)
index eb0a8a0..4345b63 100644 (file)
@@ -1078,7 +1078,7 @@ static void _place_player_corpse(bool explode)
     corpse.props["ac"].get_int() = you.armour_class();
     mitm[o] = corpse;
 
-    move_item_to_grid(&o, you.pos(), MHITYOU, !you.in_water());
+    move_item_to_grid(&o, you.pos(), !you.in_water());
 }
 
 
index 1c663d4..1b9aa36 100644 (file)
@@ -1373,7 +1373,7 @@ static bool _give_nemelex_gift(bool forced = false)
                                    true, 1, MAKE_ITEM_RANDOM_RACE,
                                    0, 0, GOD_NEMELEX_XOBEH);
 
-        move_item_to_grid(&thing_created, you.pos(), NON_MONSTER, true);
+        move_item_to_grid(&thing_created, you.pos(), true);
 
         if (thing_created != NON_ITEM)
         {
@@ -2264,8 +2264,7 @@ bool do_god_gift(bool forced)
                     // reason.
                     mark_had_book(gift);
 
-                    move_item_to_grid(&thing_created, you.pos(), NON_MONSTER,
-                                       true);
+                    move_item_to_grid(&thing_created, you.pos(), true);
 
                     if (thing_created != NON_ITEM)
                         success = true;
index 51d46fd..c8bfec5 100644 (file)
@@ -1292,7 +1292,7 @@ bool forget_spell_from_book(spell_type spell, const item_def* book)
 
     if (del_spell_from_memory(spell))
     {
-        item_was_destroyed(*book, MHITYOU);
+        item_was_destroyed(*book);
         destroy_spellbook(*book);
         dec_inv_item_quantity(book->link, 1);
         you.turn_is_over = true;
index cf43667..ff1d494 100644 (file)
@@ -326,7 +326,7 @@ void corpse_rot(actor* caster)
                     // Found a corpse.  Skeletonise it if possible.
                     if (!mons_skeleton(si->mon_type))
                     {
-                        item_was_destroyed(*si, caster->mindex());
+                        item_was_destroyed(*si);
                         destroy_item(si->index());
                     }
                     else
index a718a7f..233fc6d 100644 (file)
@@ -1624,7 +1624,7 @@ static int _ignite_poison_affect_item(item_def& item, bool in_inv)
                 unwield_item();
                 canned_msg(MSG_EMPTY_HANDED_NOW);
             }
-            item_was_destroyed(item, MHITYOU); // XXX: update for non-player
+            item_was_destroyed(item);
             if (in_inv)
                 destroy_item(item);
             else
index 716b068..fd6a518 100644 (file)
@@ -964,7 +964,7 @@ spret_type cast_apportation(int pow, bolt& beam, bool fail)
 
     if (max_units < item.quantity)
     {
-        if (!copy_item_to_grid(item, new_spot, MHITYOU, max_units))
+        if (!copy_item_to_grid(item, new_spot, max_units))
         {
             // Always >1 item.
             mpr("They abruptly stop in place!");