generic logic that uses item tiles for BEAM_MISSILE, else bolts according to flavour. Identify monster fired ammunition ego if the launcher ego is known, not that it has much of an effect because plain ammo gets no special description. In the message list the fired item as it will look to the player (i.e. "arrow of ice" for a plain arrow fired off a bow of frost), even though the item actually dropped will still be a plain one. I hope this isn't too confusing. (And if it is, it should be easy to revert. :p)
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6331 c06c8d41-db1a-0410-9941-cceddc491573
AIVXE6QBRVCZAASKQRZO6LBDGTYEYSSD2DZCWRX4VLSKE3GCNIDAC 3FRPKD2JSN7RA2HKWAO3XV7MMKCIAMWIMU6JNJ452VZEUSXM6PWQC PONOTAV3NEDNVGEJNPMLC5AY2BPV5E3ZHWDLNQCKCEBVKPBIY7QQC 25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC LP5EK64IEM7AHNYQID4GGKOQJQNZLKY4DCCZN47SIUZ6IXAXH5UAC 32PXX2XJVV7YSLLYNAVS7RYKYRAOQ565TZMTITSEPSSXOYPB5M2AC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC XRZPPYWPWUOM4SFNI6BHKH2UKJQNLKOV6Y7XIEPEZXE5QYRT26PAC O3VTFHATCIAAJ4HQF2VJIEXHDZ6RJYJKXJ4ST65WWV26BSGW4YWQC NVSFIV2ZKP44XHCSCXG6OZVGL67OIFINC34J2EMKTA4KULCERUEAC QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC 77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC 2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC X6JIHUW4GZTWTNA7U6TTHRO4P2I7GNSS7TQDPQWVTIHBIG4NVWXQC S34LKQDIQJLIWVIPASOJBBZ6ZCXDHP5KPS7TRBZJSCDRVNCLK6UAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC RMCZDJKEYYT6TTZNJGBVZTG74CVLF72NWKON6IJ2HNTCA23INPJQC X2RVB2O2TUAT336F5ZN3SRNB2EKPHSJKRD6FHI6YM3AYRDV7XJUAC ASCTVJSN3NXYQHRVXAORA43CV6H5V2572IMK4UGRHKBAGJOWHC4AC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC ZJIGDAAKOHJWPD7TMNTNKP7ZT4K4GHD7UGSAWERTIJA3BGL5BETQC CIPVRZGLOZHCERK6YPOBV3P2E4IAB4H6D5EHLRQE2O5E4P4VCBUAC 5V47S4NNTHWTSAHV3YLO2VGH7JTUIYJ3GBPDN5ZM4UQALT2ZEXDQC 3EUPIYJNWOMOQBP2Z5SGSMWK453BXJD6KL2WFTR3NM565MEBYASAC FZKMVCODMWQEVVBBQHTTXFBRO4LZEYLB646ZPVUMLHH6EER7FAOAC XE5FBYASPYLMBNHWKL5MRN7TQGIWR4O6PF72I7WXRTUJ7HS2O2LAC KVBY4K2MCJZXNFVJZPKTYUXRXPH5LE6ZOJW4LTHOZPO6TD555IVQC BINKDWGFGUPTOA7IE5KK4ZIELGU5WC3X47MYXOWU4X43EGAC5DUAC 6TEISZD7HYSSL24EOKIBNURU66KGSQX7B7SNAHBP4DQSAOTGH2MQC /*Determine Octant of missile direction---> X+|| 701Y 6O2+ 543the octant boundary slope tan(pi/8)=sqrt(2)-1 = 0.414 is approximated by 2/5*/
// Determine Octant of missile direction// .---> X+// |// | 701// Y 6O2// + 543//// The octant boundary slope tan(pi/8)=sqrt(2)-1 = 0.414 is approximated by 2/5.
int element = (launcher_brand == SPWPN_FROST)+ (ammo_brand == SPMSL_ICE)- (launcher_brand == SPWPN_FLAME)- (ammo_brand == SPMSL_FLAME);
int element = (launcher_brand == SPWPN_FROST+ ammo_brand == SPMSL_ICE- launcher_brand == SPWPN_FLAME- ammo_brand == SPMSL_FLAME);
if (ammo_brand != SPMSL_ICE && bow_brand != SPWPN_FROST){#ifdef USE_TILE// Mark brand for tile output.if (ammo_brand != SPMSL_FLAME)set_item_ego_type( item, OBJ_MISSILES, SPMSL_FLAME );#endif
// [dshaligram] Branded arrows are much stronger.dice_mult = (dice_mult * 150) / 100;
if (poisoned)pbolt.name += "poison ";pbolt.name += "flame";pbolt.colour = RED;pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT);pbolt.thrower = KILL_YOU_MISSILE;pbolt.aux_source.clear();}#ifdef USE_TILEelseset_item_ego_type( item, OBJ_MISSILES, SPMSL_NORMAL );#endif
pbolt.name += "flame";pbolt.colour = RED;pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT);pbolt.thrower = KILL_YOU_MISSILE;pbolt.aux_source.clear();
if (ammo_brand != SPMSL_FLAME && bow_brand != SPWPN_FLAME){#ifdef USE_TILE// Mark brand for tile output.if (ammo_brand != SPMSL_ICE)set_item_ego_type( item, OBJ_MISSILES, SPMSL_ICE );#endif// [dshaligram] Branded arrows are much stronger.dice_mult = (dice_mult * 150) / 100;
// [dshaligram] Branded arrows are much stronger.dice_mult = (dice_mult * 150) / 100;
pbolt.name += "frost";pbolt.colour = WHITE;pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT);pbolt.thrower = KILL_YOU_MISSILE;pbolt.aux_source.clear();}#ifdef USE_TILEelseset_item_ego_type( item, OBJ_MISSILES, SPMSL_NORMAL );#endif
pbolt.name += "frost";pbolt.colour = WHITE;pbolt.type = dchar_glyph(DCHAR_FIRED_BOLT);pbolt.thrower = KILL_YOU_MISSILE;pbolt.aux_source.clear();
// Print type of item as influenced by launcher.item_def ammo = item;if (pbolt.flavour == BEAM_FIRE){if (ammo.special != SPMSL_FLAME)ammo.special = SPMSL_FLAME;}else if (pbolt.flavour == BEAM_COLD){if (ammo.special != SPMSL_ICE)ammo.special = SPMSL_ICE;}else{if (ammo.special != SPMSL_NORMAL && ammo.special != SPMSL_POISONED)ammo.special = SPMSL_NORMAL;}