allies. Note: This does still not handle the actual clouds, just the basic beam.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5701 c06c8d41-db1a-0410-9941-cceddc491573
GSJA56E3ORVIBCBA6T6WU2HE4DCLJ6NZPW76O7L54N4CYPKLJOWQC FZKMVCODMWQEVVBBQHTTXFBRO4LZEYLB646ZPVUMLHH6EER7FAOAC NPTVMSNYWIALN2GSKESU6NKX7XNG7QDH2TNIWUB6R6NHCLK32NFAC D2T32ZGFCJFZVJW7H2AEV3QD7Z4ZYKWEPOZTAFTAPDUTBGXNJXNAC AAVL2ZLM3DV3NS7LDYQJX2PL5ZBX2F3QOMCCFM5WRGXB53LZOTMQC Q5YUZONIIPGRWOIQNL6DHRGLKF4V3K5XSZCBH2SL7DP4WPLDNOSQC NQMXQ6OQVUSC7Y7F7IL252QW4A5JED224EECNHWAM4ZZYVNY745AC JCWJWGMQIKQGSSFJUQRKNIWW3HBOJSHYDTOPPE5BWOJTIJTDYUTAC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC UZ5623MOLKBTGBSRBJ4OBOEI4IEZSPV3NCV2DRMUZ3CHHJQVHIIAC SJP5BHX6MFWF3OSQPEF4WUWZWPUGMOVURTT2CUVT6H3A66LETXUAC RQR4PTMGQLTRWLYRU3KXIIDGND7FBORESJWMWFVD3WYU5SISZXAAC 5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC VWYVIRKY35DS4V6HJXEZK3O2NJWNA3LAARRXITR35GIE2HMQK55AC FLAGBNUNSIQNFDN53CDWABJRTTFWDL4PG34AI474ZKPXDEPYHOAQC QDBILCQHREAKSVXBJJGE2EPNR4ATTQWUZMV7BLJYZWWUI737TSKQC IGN3Q5YCLHXKWFZQRSRABCHW2JFW5TFVU7TM5EXE2EW7PDBBSQWAC WHLCTHMPYMYF7PKLFFHPFXHBGV3YF3XSAIK6FWWKISE6SCG7ASUAC TO43FWKHNIA5MVDOFXYHQODTLBQYEZKX5UIUGID57436UF7G2EXQC 4GYZYBY7FFORRNPIEFTV4ZM2C7Z6D2KTQOM537ZCC2YBXT2TNSHAC QGUV5IINCOK6AXWQ2QTZMPDJTEZPON5O565ANT2EE236I5OAPAVAC KAOE5HB3THUKVGFZRO5EZESHEB3Q34WUO5DFMLWIKOBF47LZTIYAC OFH2B2UZBK43QLFQBZ54FOCFLFNE54BZVDNCEUGDTBCUGNVZULIQC TQLWCGVXVZ75H7MDBJD3DJDUFNW62WOAEDJUVKCHQTAXKBP47CSAC PI5BATR2SER3RFE76IUGHM2AGXVFOUM3PLU7WC2K2Q2BA5K2E73QC HFXCFYFH2X3BIZR55ZADL3CV4MQJEEHDSIJZ7YSTHO3HTZP7GWEAC X5WLJCJVW55SXZVP7IKP7ADCJIGNKN4PKAXFECVR6TNK7XSMZR7QC KN5WFFRSNGHIGI5IUYRBOA4R4K7XK3AEAAMN6ELDFTSYKPN7QX7AC AOAJ6D3OKSELEYKAT55XCVU5LYJ7SMCZKC6DIEGLLB3TF2LEENWQC GVW4OBPGXY2Q75HB7QHADZIOHKL22FI2BSJ2TM4K5SBJENBFTQKAC 5K2ANIEXD3CPJM4XNKNPZINP2G4NT7SJBKRN62WNBUKJXFERTILQC AS2IQQJNNCEQNXXKTGYHLB7RO3ZKCF4F7GK6FJH66BOOKDDRGNIQC QS3ZRS3E6KL3YJHPKYEWCWJYRBJSXD5OOYF6Y25HZVECGPJRDB5QC 3EUPIYJNWOMOQBP2Z5SGSMWK453BXJD6KL2WFTR3NM565MEBYASAC 5BJPWUPLJFS34FUTFJVKA4A52YMIGV6EWDXLNSDCWBJWBGVSQFGQC SFWCESFCUEVKJ6ZQQX3Y5YTIQD5BC6MCVSLVZFRGRTU46BFLKKWAC 6MAMXLPWLW5IXKQXGUNSKNZNHZM7U24GQNN4IWZL2FKKGAKL23YAC NDCVITU5R7TBEUC4FILNFRKWQGUNCJUGW5HA5KW3CQTU6AYRLYWQC BJPPSWEN35BG4KP3XTXPDMAJ2GAUMHXKHCNALAZ4B4OS6B3KDSUQC BTAITFZ3R4D5YR62MU7ECSBQQHRVHEJMXGSHV5HXWPOJDQD4SD7QC (testbits( flags, SPFLAG_TARGET ) ? DIR_TARGET :testbits( flags, SPFLAG_GRID ) ? DIR_TARGET :testbits( flags, SPFLAG_DIR ) ? DIR_DIR : DIR_NONE);
(testbits( flags, SPFLAG_TARGET ) ? DIR_TARGET :testbits( flags, SPFLAG_GRID ) ? DIR_TARGET :testbits( flags, SPFLAG_DIR ) ? DIR_DIR: DIR_NONE);
beem.name = "potion";beem.colour = you.inv[potion].colour;beem.range = 9;beem.rangeMax = 9;beem.type = dchar_glyph(DCHAR_FIRED_FLASK);
beem.name = "potion";beem.colour = you.inv[potion].colour;beem.range = 9;beem.rangeMax = 9;beem.type = dchar_glyph(DCHAR_FIRED_FLASK);
beem.hit = you.dex / 2 + roll_dice( 2, you.skills[SK_THROWING] / 2 + 1 );beem.damage = dice_def( 1, 0 ); // no damage, just producing cloudsbeem.ench_power = pow; // used for duration only?
beem.hit = you.dex / 2 + roll_dice( 2, you.skills[SK_THROWING] / 2 + 1 );beem.damage = dice_def( 1, 0 ); // no damage, just producing cloudsbeem.ench_power = pow; // used for duration only?
case 0: beem.flavour = BEAM_POTION_FIRE; break;case 1: beem.flavour = BEAM_POTION_COLD; break;case 2: beem.flavour = BEAM_POTION_POISON; break;case 3: beem.flavour = BEAM_POTION_MIASMA; break;default: beem.flavour = BEAM_POTION_RANDOM; break;
case 0: beem.flavour = BEAM_POTION_FIRE; break;case 1: beem.flavour = BEAM_POTION_COLD; break;case 2: beem.flavour = BEAM_POTION_POISON; break;case 3: beem.flavour = BEAM_POTION_MIASMA; break;default: beem.flavour = BEAM_POTION_RANDOM; break;
}// Fire tracer.beem.source_x = you.x_pos;beem.source_y = you.y_pos;beem.can_see_invis = player_see_invis();beem.smart_monster = true;beem.attitude = ATT_FRIENDLY;beem.fr_count = 0;beem.is_tracer = true;fire_beam(beem);if (beem.fr_count > 0){// We don't want to fire through friendlies.canned_msg(MSG_OK);return (false);
beem.name = "ball of vapour";beem.colour = GREEN;beem.range = 6;beem.rangeMax = 6;beem.damage = dice_def( 1, 0 );beem.hit = 20;beem.type = dchar_glyph(DCHAR_FIRED_ZAP);beem.flavour = BEAM_MMISSILE;beem.ench_power = pow;
beem.name = "ball of vapour";beem.colour = GREEN;beem.range = 6;beem.rangeMax = 6;beem.damage = dice_def( 1, 0 );beem.hit = 20;beem.type = dchar_glyph(DCHAR_FIRED_ZAP);beem.flavour = BEAM_MMISSILE;beem.ench_power = pow;
return (1);} // end stinking_cloud()
if (beem.fr_count > 0){// We don't want to fire through friendlies.canned_msg(MSG_OK);return (false);}// Really fire.beem.is_tracer = false;fire_beam(beem);return (true);}
switch (item.sub_type){case POT_CONFUSION:case POT_SLOWING:case POT_DEGENERATION:case POT_DECAY:case POT_PARALYSIS:case POT_POISON:case POT_STRONG_POISON:case POT_MUTATION:// Certainly not useless if it can be used for attacking.return (!player_knows_spell(SPELL_EVAPORATE));}
// No potion is useless if it can be used for Evaporate.if (player_knows_spell(SPELL_EVAPORATE))return (false);// Apart from Evaporate, mummies can't use potions.
switch (item.sub_type){case AMU_RAGE:case RING_REGENERATION:case RING_SUSTENANCE:case RING_HUNGER:case RING_LIFE_PROTECTION:return (true);}}
case AMU_RAGE:return (you.is_undead&& (!temp || you.species == SP_VAMPIRE&& you.hunger_state <= HS_SATIATED)|| you.religion == GOD_TROG);
if (item.sub_type == RING_SEE_INVISIBLE)
case RING_LIFE_PROTECTION:case RING_HUNGER:case RING_REGENERATION:case RING_SUSTENANCE:return (you.is_undead&& (!temp || you.species == SP_VAMPIRE&& you.hunger_state == HS_STARVING));case RING_SEE_INVISIBLE:
/** Used by monsters in "planning" which spell to cast. Fires off a "tracer"* which tells the monster what it'll hit if it breathes/casts etc.** The output from this tracer function is four variables in the beam struct:* fr_count, foe_count: a count of how many friends and foes will (probably)* be hit by this beam* fr_power, foe_power: a measure of how many 'friendly' hit dice it will* affect, and how many 'unfriendly' hit dice.** Note that beam properties must be set, as the tracer will take them* into account, as well as the monster's intelligence.**/
//// Used by monsters in "planning" which spell to cast. Fires off a "tracer"// which tells the monster what it'll hit if it breathes/casts etc.//// The output from this tracer function is four variables in the beam struct:// fr_count, foe_count: a count of how many friends and foes will (probably)// be hit by this beam// fr_power, foe_power: a measure of how many 'friendly' hit dice it will// affect, and how many 'unfriendly' hit dice.//// Note that beam properties must be set, as the tracer will take them// into account, as well as the monster's intelligence.//