Ely now has "Destroy Weapon" ability, and Trog "Burn Books". The latter is very powerful as it explicitly allows burning monsters, which is cool but might be too strong. I couldn't think of a rationale for Trog not to allow this, though.
Also, all killings are now accepted without prayer, and sacrifice-loving gods won't acccept rotten corpses anymore.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1959 c06c8d41-db1a-0410-9941-cceddc491573
WZNB427K3EUNV3FMVXLQTM4UIHER4FIKQXWLUUXRNQC3OQ33VQYAC 4O3VTUJT5T7NBNF3Q45XO2WHS6TCJXVLH6CKX4K36WUBDRT5F6KAC XMX2Y7QSEXGV2SPDOFDNM2BQJH3S3WTMYLJYUREYV72NWTURHMSQC KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC TR4NPGNO5QNNRJNVMNSUEO5QLT37HCXXDOBKXCB5XWXRQNAJ5SHAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC CQ24AVAI6SW3AHTIDMLPSTRRBEU6FHRF5I5FD6G5QIYE6PO4BQMQC NVD2HSEW2ONWNYDDCTOMZZOUP6NG4DCXI4LNYYIY4BQEBDMJQK5AC IC6N445KSNOOEJNPWBGEWYMGOLNLJ2QGZWS2R3K6EQSCEQXDUFTQC MBBPLL4SZUB3JUUYQYLZW7S5OXRCEGJX3WWADOQXGHWQ7BIKCY5QC 264FLET5STFALEWUDOEFCR273Y5CY2WZDHL56WHZUAQ635RUN6MAC JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC KW43PGXTTM57DXUGGBQXJ5G5OYYIY3WB76TXIKL2ZCIJGH7GH4LAC WXSNNK2RXP3DQFAEQGQUZJHFWXJC7ZKG2WURZGL566UDM4YXFSWQC P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC simple_god_message(" did not appreciate that!");ret = true;piety_change = -level;penance = level * 2;
// killing only disapproved during prayerif (you.duration[DUR_PRAYER]){simple_god_message(" did not appreciate that!");ret = true;piety_change = -level;penance = level * 2;}
}void ely_destroy_weapons(){if (you.religion != GOD_ELYVILON)return;bool success;int i = igrd[you.x_pos][you.y_pos];while (i != NON_ITEM){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){i = next;continue;}const char *ssuffix = mitm[i].quantity == 1? "s" : "";std::string text = mitm[i].name(DESC_CAP_THE);text += " shimmer"; text += ssuffix;text += " and break"; text += ssuffix;text += " into pieces.";mpr(text.c_str());const int value = item_value( mitm[i], true );#ifdef DEBUG_DIAGNOSTICSmprf(MSGCH_DIAGNOSTICS, "Destroyed weapon value: %d", value);#endifif (random2(value) >= random2(50)|| (mitm[i].base_type == OBJ_WEAPONS&& (you.piety < 30 || player_under_penance()))){gain_piety(1);}destroy_item(i);success = true;i = next;}if (!success){mpr("There are no weapons here to destroy!");}}void trog_burn_books(){if (you.religion != GOD_TROG)return;int i = igrd[you.x_pos][you.y_pos];while (i != NON_ITEM){const int next = mitm[i].link; // in case we can't get it later.if (mitm[i].base_type == OBJ_BOOKS&& mitm[i].sub_type != BOOK_MANUAL){mpr("Burning your own feet might not be such a smart idea!");return;}i = next;}int totalcount = 0;for (int xpos = you.x_pos - 8; xpos < you.x_pos + 8; xpos++)for (int ypos = you.y_pos - 8; ypos < you.y_pos + 8; ypos++){// checked aboveif (xpos == you.x_pos && ypos == you.y_pos){continue;}// burn only squares in sightif (!see_grid(xpos, ypos)){continue;}// if a grid is blocked, books lying there will be ignored// allow bombing of monstersconst int cloud = env.cgrid[xpos][ypos];if (grid_is_solid(grd[ xpos ][ ypos ]) ||// mgrd[ xpos ][ ypos ] != NON_MONSTER ||(cloud != EMPTY_CLOUD && env.cloud[cloud].type != CLOUD_FIRE)){continue;}int count = 0;int rarity = 0;i = igrd[xpos][ypos];while (i != NON_ITEM){const int next = mitm[i].link; // in case we can't get it later.if (mitm[i].base_type != OBJ_BOOKS|| mitm[i].sub_type == BOOK_MANUAL){i = next;continue;}rarity += book_rarity(mitm[i].sub_type);#ifdef DEBUG_DIAGNOSTICSmprf(MSGCH_DIAGNOSTICS, "Burned book rarity: %d", rarity);#endifdestroy_item(i);count++;i = next;}if (count){totalcount += count;if ( cloud != EMPTY_CLOUD ){// reinforce the cloudmpr( "The fire roars with new energy!" );const int extra_dur = count + random2(rarity/2);env.cloud[cloud].decay += extra_dur * 5;env.cloud[cloud].whose = KC_YOU;continue;}int durat = 4 + count + random2(rarity/2);if (durat > 23)durat = 23;place_cloud( CLOUD_FIRE, xpos, ypos, durat, KC_YOU );const char *plural = count == 1? "" : "s";const char *ssuffix = count == 1? "s" : "";std::string text = "The book"; text += plural;text += " burst"; text += ssuffix;text += " into flames.";mpr(text.c_str());}}if (!totalcount){mpr("There are no books in sight to burn!");}else{simple_god_message(" is delighted!", GOD_TROG);gain_piety(totalcount*5);}
if (you.duration[DUR_PRAYER]){if (mons_holiness(monster) == MH_NATURAL)did_god_conduct(DID_DEDICATED_KILL_LIVING,monster->hit_dice);
if (mons_holiness(monster) == MH_NATURAL)did_god_conduct(DID_KILL_LIVING,monster->hit_dice);
//jmf: Trog hates wizardsif (mons_is_magic_user(monster))did_god_conduct(DID_DEDICATED_KILL_WIZARD,monster->hit_dice);
//jmf: Trog hates wizardsif (mons_is_magic_user(monster))did_god_conduct(DID_KILL_WIZARD,monster->hit_dice);
//jmf: maybe someone hates priests?if (mons_class_flag(monster->type, M_PRIEST))did_god_conduct(DID_DEDICATED_KILL_PRIEST,monster->hit_dice);}
//Beogh hates priestsif (mons_class_flag(monster->type, M_PRIEST))did_god_conduct(DID_KILL_PRIEST,monster->hit_dice);
DID_DEDICATED_KILL_LIVING,DID_DEDICATED_KILL_UNDEAD,DID_DEDICATED_KILL_DEMON,DID_DEDICATED_KILL_NATURAL_EVIL, // unusedDID_DEDICATED_KILL_WIZARD,DID_DEDICATED_KILL_PRIEST,// [dshaligram] No distinction between killing Angels during prayer or// otherwise, borrowed from bwr 4.1.
// killings need no longer be dedicated (JPEG)DID_KILL_LIVING,DID_KILL_UNDEAD,DID_KILL_DEMON,DID_KILL_NATURAL_EVIL, // unusedDID_KILL_WIZARD,DID_KILL_PRIEST,