and the like.
No changes of duration thresholds.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8416 c06c8d41-db1a-0410-9941-cceddc491573
BI5CXFKCZHWNZQ4VXWN24FD322V55H7GYJHXF4GJ26PPKXIEOLSQC FW53VWEQXJJGQKZKKGUIL2Z7SHTMFTUSZCTKQJHEAYBUZUJ63KNAC MHFHZER5HZJN2JH3BL2GQ2WEN4ZC7Q35WOYHTXLL4DIBCXYNROSQC 7VCVH6XKT4L4PSCBF6XRYV3WQQDVGDMA73RHPV6IOWMQ2S7B5XAQC 2G7MZ653N3JUHJ4DA5Q7VRO3S5T27DLPKDCJEKB6DGYSTXULUVWAC 7X5YDPAU34LOFKEGJYE6GC7EOEDKGT3O6CUGZBYJI45L3FQOAKHQC LLA7OZDQJ3S2YKGNNDD6K3VP3FPMQLZX3IUO4WDJQVJHGKGCCUZQC K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC ENOQQ6DEA6ECRNTBGYYNK7G3DFEILMKQBNKP4SUQIZW2L6HWVR7QC YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC WN3ZHNL4T7QMQC6JF5DJR6NHLZVOGQVO4OJNEKEM5FZKQ7AVOP4AC TRCCLE5RJ4VJULBOWOI2WC3RJU7WTEGS7RRQTDQL6W5UU246LKTQC I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC H55P74Y6NHAPF3VPWXIAP7DODA3DV7NCT3SK6VVLWNNWZ7JIMBTAC W2WZLB56ZLUXOSZ7KUFKRMIBOUZPO72NNHDK6YYSX5YFGVJT3HQAC JZQPWZBOGDTUPQVIVEL67BDOIG3Y27JLSOLVNJXLQ2Y7FZW36YCQC P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC DMRXDEKHHBQNY37NPGZFAGUQPALWFANGGK4CUWIOQUPSLM2JBNFQC 3YBQGKQ22WFXA5RXDSKLFWMABLJ6KHBVWEIA3WIDHWM25OECNTYAC BKKEH7UMHPFMXL4PUTS7I6KPVECROFP6DX5TVKYLZ3W33IH2KANAC U5SDF665RTV32CTKTC4QO3Q5B44IAE42MZYJSYUNZP3JZEUTO4KQC VXSORUQOM2VZA4CAZDC6KPAY373NQIN3UT7CXQXTRCYXO2WM62DAC RM2JXW3ATVYRYHF3NMG5ALGI64OJ7IP2F3MDUDPUT5TBKSSN4KVQC RGY2525RQH7SSGM6ZVI7CZL4WMNFZK2WRABOSIWRKQYYOU2RWN4QC 3VWSZUGYL36SO5AOZRASGK3VHFCFZUGGCGRT3R7BZB36IZPN7OSQC EB33TUEEJFHMEO6YHEXSYX3MBXHNPEFNMZL2VA75GOGKY6POSF2AC 4GYZYBY7FFORRNPIEFTV4ZM2C7Z6D2KTQOM537ZCC2YBXT2TNSHAC NQIXUYGUIQTKZUB2IQDII7BBDMZ4VN4NUUTGT2ARQBZTDJUMPKRQC EMJSHEKS7UTRRLF7GW5WYVI7RAAUJJQX2D3PAIO7UZFGNREIZOAAC 7NDXS36TE7QVXTXJWMYSVG5UHCCLPIO4VL6NXFGTDK3ZNKE3A2IAC LIBWXPN6HLJAIGEFJYLOL4HLIUD236U3WM5QPHIZ3DSB4CCUJERAC JR2RAQ523LOWNDYJNK6AZVKI6WVMI622PIV72XWOVZYPXPUKSQWAC 5B5DP5S6A6LQMKZYVLQAEMHQZWFWYDHPCKQGRNSCNNYIBQYZ6BIQC TE64GNEDR5Z6FDZYNPBH7N54LUYUF2CSARBNZPNRS7GIL7X5ZBEQC 4IYLLCZVA4PPEHF2XINH2OOATKNK7LCZNG6DA7OEK52QL5O4J6ZQC F7Q7QRZACTDPP6KH3AB5J6B6B5PRVV4FURTOIGXHRHWNVSQT3TVAC SKWBAGSAB625IIN4UP3NCPRX2H3KCPC2LULHS2A7JVRLO3EUBJDAC PYZVEUF25HRJ6FFJH4HEQHUROLBJEYLOSTBKORAGQ5BEZ7DCKYDQC FBK5ECMQ6HJSQSN7C3DICKJIRJ3CSO3CHCQ3ONPBKLLSHDGPBQ7QC HOUSHQ4DQK4MVKTCJ56MKYGYPDTF77HJCFVB5PYV7ALNZZJWFYFQC VOCEACH7R3X342DNSFRTSN5URHL2YIOKEMGIGE6J2HIMSB5RPNSAC YFAWC4DXLGL3RXD2UTKVHXEXTMZRM7UDRTRHKWV7HAPNYQBD3OYAC BRGAZR5AXWC2IALBVXO5SB354IRQEIRHSK55RZPGFI4AGIOD4LUQC X76YXE6RFL7QY5WL6MSSS44WHVA5FQMDQY3XTYP2UL6UZB4E6XMQC RVJJOTPIEADHXAPIDZPFCCYJNIR6UGPVNF6YZMW4JBI52G2NSEXQC O6ZMFKDI3XO2SWPNEYHIPYFDWJR4TVDP5BAATK6LVCVETQID6E7AC QEX3OFNT4IDUY3FNCPNKXB2RWHXRGEXTQQXB63GMVOTGQQ3IO5TAC DH3YTI6VVI727SQXO4CXSDCSBG2UN3UAWLFULBGRLBVH22ACRXIAC SS6TGQMYUEQEFVKYE77VHVQRKSR3ELRQ5Q6VE5KYXZF226OJUSXAC XUCCWGMXKPIR34BBCCOI67YHI3RST4STDWSDUZTN4B2CJWXQLQ7AC }// Returns the medium duration value which is usually announced by a special// message ("XY is about to time out") or a change of colour in the// status display.// Note that these values cannot be relied on when playing since there are// random decrements precisely to avoid this.int get_expiration_threshold(duration_type dur){switch (dur){case DUR_REPEL_UNDEAD:return 4;case DUR_FIRE_SHIELD:case DUR_SILENCE: // no messagereturn 5;case DUR_DEFLECT_MISSILES:case DUR_REPEL_MISSILES:case DUR_REGENERATION:case DUR_INSULATION:case DUR_STONEMAIL:case DUR_SWIFTNESS:case DUR_INVIS:case DUR_HASTE:// The following are not shown in the status lines.case DUR_ICY_ARMOUR:case DUR_FORESCRY:case DUR_CONTROL_TELEPORT:case DUR_DEATH_CHANNEL:return 6;case DUR_LEVITATION:case DUR_TRANSFORMATION: // not on statuscase DUR_DEATHS_DOOR: // not on statusreturn 10;// These get no messages when they "flicker".case DUR_SAGE:case DUR_BARGAIN:return 15;case DUR_CONFUSING_TOUCH:return 20;default:return 0;}}// Is a given duration about to expire?bool dur_expiring(duration_type dur){const int value = you.duration[dur];if (value <= 0)return (false);return (value <= get_expiration_threshold(dur));
case TRAN_SPIDER:mpr( "You are in spider-form." );break;case TRAN_BAT:mprf( "You are in %sbat-form.",you.species == SP_VAMPIRE ? "vampire " : "" );break;case TRAN_BLADE_HANDS:mpr( "You have blades for hands." );break;case TRAN_STATUE:mpr( "You are a statue." );break;case TRAN_ICE_BEAST:mpr( "You are an ice creature." );break;case TRAN_DRAGON:mpr( "You are in dragon-form." );break;case TRAN_LICH:mpr( "You are in lich-form." );break;case TRAN_SERPENT_OF_HELL:mpr( "You are a huge demonic serpent." );break;case TRAN_AIR:mpr( "You are a cloud of diffuse gas." );break;
std::string text = "";if ((you.species != SP_VAMPIRE|| you.attribute[ATTR_TRANSFORMATION] != TRAN_BAT)&& dur_expiring(DUR_TRANSFORMATION)){text = "Expiring: ";}switch (you.attribute[ATTR_TRANSFORMATION]){case TRAN_SPIDER:text += "You are in spider-form.";break;case TRAN_BAT:text += "You are in ";if (you.species == SP_VAMPIRE)text += "vampire ";text += "bat-form.";break;case TRAN_BLADE_HANDS:text += "You have blades for hands.";break;case TRAN_STATUE:text += "You are a statue.";break;case TRAN_ICE_BEAST:text += "You are an ice creature.";break;case TRAN_DRAGON:text += "You are in dragon-form.";break;case TRAN_LICH:text += "You are in lich-form.";break;case TRAN_SERPENT_OF_HELL:text += "You are a huge demonic serpent.";break;case TRAN_AIR:text += "You are a cloud of diffuse gas.";break;}mpr(text.c_str());
mprf("You are studying %s.", skill_name(you.sage_bonus_skill));
{std::string msg = "You are studying ";msg += skill_name(you.sage_bonus_skill);msg += ".";_output_expiring_message(DUR_SAGE, msg.c_str());}_output_expiring_message(DUR_BARGAIN, "You get a bargain in shops.");
mpr("You are surrounded by a ring of flames.");mpr("You are immune to clouds of flame.");
_output_expiring_message(DUR_FIRE_SHIELD,"You are surrounded by a ring of flames.");_output_expiring_message(DUR_FIRE_SHIELD,"You are immune to clouds of flame.");
// These are not so unreasonable anymore now that the new overview screen// is dumped. When the player dies while paralysed it's important// information. If so, move them to the front. (jpeg)if (you.paralysed())status.push_back("paralysed");if (you.duration[DUR_PETRIFIED])status.push_back("petrified");if (you.duration[DUR_SLEEP])status.push_back("sleeping");
text += "stone skin, ";// resistance part already says so// if (you.duration[DUR_CONTROLLED_FLIGHT])// text += "control flight, ";
status.push_back("stone skin");
// resistance part already says so// if (you.duration[DUR_CONTROL_TELEPORT])// text += "control teleport, ";// MR output already says so// if (you.duration[DUR_LOWERED_MR])// text += "vulnerable to magic, ";
// How exactly did you get to show the status?// It's not so unreasonable anymore now that the new overview screen is// dumped. When the player dies while paralysed it's important information.if (you.paralysed())text += "paralysed, ";if (you.duration[DUR_PETRIFIED])text += "petrified, ";if (you.duration[DUR_SLEEP])text += "sleeping, ";
text += "levitating, ";
{std::string help;if (wearing_amulet( AMU_CONTROLLED_FLIGHT ))help += "flying";elsehelp += "levitating";if (dur_expiring(DUR_LEVITATION) && !you.permanent_flight())help += " (expires)";status.push_back(help);}
text += (you.duration[DUR_POISONING] > 10) ? "extremely" :(you.duration[DUR_POISONING] > 5) ? "very" :(you.duration[DUR_POISONING] > 3) ? "quite": "mildly";text += " poisoned, ";
std::string help = (you.duration[DUR_POISONING] > 10) ? "extremely" :(you.duration[DUR_POISONING] > 5) ? "very" :(you.duration[DUR_POISONING] > 3) ? "quite": "mildly";help += " poisoned";status.push_back(help);
text += (move_cost < 8) ? "very quick, " :(move_cost < 10) ? "quick, " :(move_cost == 10) ? "" :(move_cost < 13) ? "slow, " : "";
if (move_cost != 10){std::string help = (move_cost < 8) ? "very quick" :(move_cost < 10) ? "quick" :(move_cost < 13) ? "slow": "";if (!help.empty())status.push_back(help);}
case TRAN_SPIDER:text += "\nYou are in spider-form.";break;case TRAN_BAT:text += "\nYou are in ";if (you.species == SP_VAMPIRE)text += "vampire ";text += "bat-form.";break;case TRAN_BLADE_HANDS:text += "\nYou have blades for hands.";break;case TRAN_STATUE:text += "\nYou are a statue.";break;case TRAN_ICE_BEAST:text += "\nYou are an ice creature.";break;case TRAN_DRAGON:text += "\nYou are in dragon-form.";break;case TRAN_LICH:text += "\nYou are in lich-form.";break;case TRAN_SERPENT_OF_HELL:text += "\nYou are a huge demonic serpent.";break;case TRAN_AIR:text += "\nYou are a cloud of diffuse gas.";break;
switch (you.attribute[ATTR_TRANSFORMATION]){case TRAN_SPIDER:text += "\nYou are in spider-form.";break;case TRAN_BAT:text += "\nYou are in ";if (you.species == SP_VAMPIRE)text += "vampire ";text += "bat-form.";break;case TRAN_BLADE_HANDS:text += "\nYou have blades for hands.";break;case TRAN_STATUE:text += "\nYou are a statue.";break;case TRAN_ICE_BEAST:text += "\nYou are an ice creature.";break;case TRAN_DRAGON:text += "\nYou are in dragon-form.";break;case TRAN_LICH:text += "\nYou are in lich-form.";break;case TRAN_SERPENT_OF_HELL:text += "\nYou are a huge demonic serpent.";break;case TRAN_AIR:text += "\nYou are a cloud of diffuse gas.";break;}if ((you.species != SP_VAMPIRE|| you.attribute[ATTR_TRANSFORMATION] != TRAN_BAT)&& dur_expiring(DUR_TRANSFORMATION)){text += " (Expiring.)";}
"You float gracefully downwards.",10, random2(6),"You are starting to lose your buoyancy!"))
"You float gracefully downwards.",get_expiration_threshold(DUR_LEVITATION),random2(6),"You are starting to lose your buoyancy!"))
you.duration[DUR_DEATHS_DOOR]--;if (you.duration[DUR_DEATHS_DOOR] == 10){mpr("Your time is quickly running out!", MSGCH_DURATION);you.duration[DUR_DEATHS_DOOR] -= random2(6);}if (you.duration[DUR_DEATHS_DOOR] == 1){mpr("Your life is in your own hands again!", MSGCH_DURATION);more();}
_decrement_a_duration(DUR_DEATHS_DOOR,"Your life is in your own hands again!",get_expiration_threshold(DUR_DEATHS_DOOR),random2(6),"Your time is quickly running out!");