executed because of a god's actions, and if so which god (with "actions" not including god-supplied invocations). Currently only used to prevent Xom from being amused/stimulated by his own actions.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2235 c06c8d41-db1a-0410-9941-cceddc491573
IQGGFC563RBS7GDOACKCLXK752EE5RC3T6G5L6H446SXTMSA7T2AC V4DWL5WBO2JCODVS5QQNWXDH4DAYZN3D5V3UDCHM2KKOMADOTEDQC XOHNTNE5EAPQ5QLVQADLZARXQUQ2FAFCX7PHKKS6WOGIZGSNZDNQC JM7UAK777RAVDAVLQLEOBRTGNW2B47S5G55XITJXO243IUNZHVYQC E42EFZ3RINKLTGOJJZAH2N5QF3P4S5NCO5T52HLXJRMBPP463HTAC SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC EI5XQIKW3OBVTDVT2A4Q535I5FOVEKARLFISM457IHGAK7TVOMVAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC 3NFVCXRVGHN2CHLLWFZES5RBS4R2BCDS4EEQNSDCFYIFQWQK7MUQC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC NVD2HSEW2ONWNYDDCTOMZZOUP6NG4DCXI4LNYYIY4BQEBDMJQK5AC SWOYPTHJAWFEDBMB3ROT33VQZIXGZD5UOXEV456DDUENW2HGA66QC XMX2Y7QSEXGV2SPDOFDNM2BQJH3S3WTMYLJYUREYV72NWTURHMSQC CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC XKAJWK6MPHS3ZCZIPPLTIMOPF6AROGLRDDCS6EFE3IGE4AHT7MYQC 2UBWR54HKLIWZQXB3ZFOH4R4X6TZWWZZWEU26KRDOS3BHC5J7GPAC JB6BHNNQQJQWB35BDBM4KBL7WJLAWGXXFXSAKAQ72LDGDKHXHNRAC ANOEQTM6IGCBTESKKQ5PCBSDTZ7VGRCMDIOAFEH4R7DJHKWKDFAAC DOZORMA366M4HB5JKSS27BMCR6ET7QNZNND2B7KV3NVEEPR5H7EAC RYT42Z6CED4KV5CCJ45CHZ3DQGLFMDCVH6CSQZNXOILULDG4MXVQC ILOED4VB4I6VPAUTR75ZWX6MXDYXB5DO2EDK2UH67O3HNKWV23RQC bool is_god_acting() const;bool is_god_retribution() const;god_type which_god_acting() const;void inc_god_acting(bool is_retribution = false);void inc_god_acting(god_type which_god, bool is_retribution = false);void dec_god_acting();void dec_god_acting(god_type which_god);void clear_god_acting();std::vector<god_act_state> other_gods_acting() const;
}///////////////////////////////////////////////////////////// Keeping track of which god is currently doing something///////////////////////////////////////////////////////////god_act_state::god_act_state(){reset();}void god_act_state::reset(){which_god = GOD_NO_GOD;retribution = false;depth = 0;}bool game_state::is_god_acting() const{ASSERT(god_act.depth >= 0);ASSERT(!(god_act.depth > 0 && god_act.which_god == GOD_NO_GOD));ASSERT(!(god_act.depth == 0 && god_act.which_god != GOD_NO_GOD));ASSERT(!(god_act.depth == 0 && god_act_stack.size() > 0));return (god_act.depth > 0);}bool game_state::is_god_retribution() const{ASSERT(is_god_acting());return (god_act.retribution);}god_type game_state::which_god_acting() const{return god_act.which_god;}void game_state::inc_god_acting(bool is_retribution){inc_god_acting(you.religion, is_retribution);}void game_state::inc_god_acting(god_type which_god, bool is_retribution){ASSERT(which_god != GOD_NO_GOD);if (god_act.which_god != GOD_NO_GOD &&god_act.which_god != which_god){ASSERT(god_act.depth >= 1);god_act_stack.push_back(god_act);god_act.reset();}god_act.which_god = which_god;god_act.retribution = is_retribution;god_act.depth++;}void game_state::dec_god_acting(){dec_god_acting(you.religion);
void game_state::dec_god_acting(god_type which_god){ASSERT(which_god != GOD_NO_GOD);ASSERT(god_act.depth > 0);ASSERT(god_act.which_god == which_god);god_act.depth--;if (god_act.depth == 0){god_act.reset();if (god_act_stack.size() > 0){god_act = god_act_stack[god_act_stack.size() - 1];god_act_stack.pop_back();ASSERT(god_act.depth >= 1);ASSERT(god_act.which_god != GOD_NO_GOD);ASSERT(god_act.which_god != which_god);}}}void game_state::clear_god_acting(){ASSERT(!is_god_acting());ASSERT(god_act_stack.size() == 0);god_act.reset();}std::vector<god_act_state> game_state::other_gods_acting() const{ASSERT(is_god_acting());return god_act_stack;}