a stack without all that o = mitm[o].link stuff. Redid Ely's destroy weapons power to use it.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5875 c06c8d41-db1a-0410-9941-cceddc491573
GF5VGZLKKWIATLVLTUJR4LVEQZAKR7CWMLNFMJXA67WLHP7JNUUAC MDFQRJ6QZNFUBVSFWLXUJ6EBXOU47T3CVDI2XKBGNNRF4DXDKESQC VJDLV4PF2ZJ46NERO4LZUX5JE2CD5XBOBQCYYPTFWTHLUEYDUOYAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC XOHNTNE5EAPQ5QLVQADLZARXQUQ2FAFCX7PHKKS6WOGIZGSNZDNQC WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC ABLV37FMURRJPEZV2VRKOUYAKEMLI7E6RA4PDAII2EJ5L7WBHKZQC V4F3SDV2H4HBH6G6W5M3REN3BDSSE4IDF2RNM7PJMKRW3IDJ7PNAC 2SU35FKBXMKAYJY76OXAC55R6JWTSHQSHBNBR3ICWUQREJME2ZSAC SQFABNVS6OSVRBMJAIV6KIIZW2TYIOQ5BZGLPYJ6BPFD2HMRH4MAC UFMLS3XTVA5IUYWNJUHXCR67X5QI26PRFKGWBM6CGWSE2VUPBBJQC // stack_iterator guarantees validity so long as you don't manually// mess with item_def.link: i.e., you can kill the item you're// examining but you can't kill the item linked to it.class stack_iterator : public std::iterator<std::forward_iterator_tag,item_def>{public:stack_iterator( const coord_def& pos );stack_iterator( int start_link );operator bool() const;item_def& operator *() const;int link() const;const stack_iterator& operator ++ ();stack_iterator operator ++ (int);private:int cur_link;int next_link;};
stack_iterator::stack_iterator(const coord_def& pos){cur_link = igrd(pos);if ( cur_link != NON_ITEM )next_link = mitm[cur_link].link;elsenext_link = NON_ITEM;}stack_iterator::stack_iterator(int start_link){cur_link = start_link;if ( cur_link != NON_ITEM )next_link = mitm[cur_link].link;elsenext_link = NON_ITEM;}stack_iterator::operator bool() const{return ( cur_link != NON_ITEM );}item_def& stack_iterator::operator*() const{ASSERT( cur_link != NON_ITEM );return mitm[cur_link];}int stack_iterator::link() const{return cur_link;}const stack_iterator& stack_iterator::operator ++ (){cur_link = next_link;if ( cur_link != NON_ITEM )next_link = mitm[cur_link].link;return *this;}stack_iterator stack_iterator::operator++(int dummy){const stack_iterator copy = *this;++(*this);return copy;}
const int next = mitm[i].link; // In case we can't get it later.if (mitm[i].base_type != OBJ_WEAPONS&& mitm[i].base_type != OBJ_MISSILES|| item_is_stationary(mitm[i])) // Held in a net?
item_def& item(*si);if ( (item.base_type != OBJ_WEAPONS&& item.base_type != OBJ_MISSILES)|| item_is_stationary(item)) // Held in a net?