As before, they get the Necromancy boost (like Mummies do) at xl 13 and 26.
Also, vampires can now cast spells while starving, but suffer a failure increase akin to that of Blade Hands. (I've no idea what these numbers actually mean, so this will most likely have to be changed as well.)
Updated tables.txt.
Still TODO:
Apart from that, they are ready for playtesting once again. As always, feedback would be much appreciated. :)
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3528 c06c8d41-db1a-0410-9941-cceddc491573
TFNFP2YQA4EOVE4VIXBEQSGACZSXHWIQ2T4TIPQ46R2MJW2C4B5AC
H7KLIGBECC2SCGAIFPZFZ7P2TVDKR67HQ7AG5LXPP5SVNL7RWAHAC
PKMMQBEKTMP4EUYLUJFYIB3PRAQV5DPPDRBLNVMH4RQG2NMALWIQC
PD4F7SBVT5V3JMWCNW3J4XL2G4FJCQ3OJIXX7YMTL4HHPETDQA3AC
MO63IVZZMRHBHHH5BTVC7YHHZ4AZIRJ7BMPPTVBCNJ67TMGJWQUAC
OAVLROPYRNLBXTZGNVY6DP6WF424OC3FAVMZ7ZAEEUZXKFEZ2UCQC
UFWUMT4IRLCXZD6ERXU7UZ2QWMTCK7QOFWL4JNCIG7Z2HL7KE5LAC
L6YPJVODN32IYLEZQQZE2ENH3XDAZ63IQIDX3PB4CJEK3A4NUNSAC
M55DKMLPTAPYGJCNR45A25G6SMNZHDMLUV5AUKRCF2MZ4XQZ3SRQC
ST3CXDUDCT4LYUREVQE6YDKTGM3XZTSGGNCHWKMYJDQVZ2VSFYZQC
5TG5LXU4DX65KMWCZ7YJHOB3VAETQAVBUHEUSQTPMA327XV2HQWAC
MDAJYB6STTZPNHRQ2X66MMMSONMKXTESLHJSFPGN7H3D3TOVBAVAC
P2ZCF3BBG523ZEOD6XQA4X5YEHBTWH3IM33YVHXP2SQ5POXZIH4QC
CWTKS62IFZYYR3HGPDP5LW5C53CRWVAD6AAEOV4BSWNW52BCQH3QC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
3D6NWJ44UYHLZMD3BOQIWXJUEGITAVCHK6Z2WWDQONVQC4HSBRXQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
GSS3OCYMI4MYKACCGNLFA267VDH2U7G4QVVDLMOVAUHZTYQ3QJDAC
KBBSDMAXAGEDFMIVL6BSPMMSOBZKWPJTFCLBGCHRLE5DGTVAACSAC
JK3HFJG76OOQHJMXJUSZRTR5CX5ZMS52LRVBLOR7E2NBI6PRSHHAC
DMRXDEKHHBQNY37NPGZFAGUQPALWFANGGK4CUWIOQUPSLM2JBNFQC
I2B33Z7NZGC33AMDSSK446AZZYWKPHWLAGULVHKKZU4MVB4BNJOAC
KFULGQQOHWUTXOM3BXCCYPGGVGGY4Z6265XUFRCBPNLTZAEHJZSQC
QDTVLBRGHDTRUVT7I3O72K6TMOYAUSAJBZUHGOEFU2RKJNUPWZSQC
CLIEHAE2PP7ZIGLLIMYCWM4FC54KBOAN5AILOLAZJ5S26GTJM4RQC
3KAINFIXO7WNWGUGZB43EUNFRS2ZPBLQZDTY456QACMRHYIJ7WDAC
2H32CFFM2FNS63JJPNM2S6HMO543EX72GMPOU5GI6HTMQYPL6I3AC
KBTDCQ7GYBRPB346ZEOJ4OM2XHOHN6FJMVMTOJ42EDK5KJX7VLIAC
LPW5S327G7WSDHNED5A2UB72HVH27YYNFZGBYWUW5XSV7U4HPNQAC
XCEZ7OA2INNPSYNAB5U6JB7XNDAD5BKU26YLFPPZ3SEESFZKADQAC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
P2YNOE2TUTZFAOBTHJOIVD6TCV7J7D2UKUX67LHZUL6QY44ZMENQC
25CH7HH4LKXFIZ75YNMXS3TSXO6O27DYSOPLOD45K4OCNFWLS4LQC
BWAQ3FHBBM6G3K3KYP75CRTR343RDQZJRYX5ZGYUEXYBAC3APDLAC
CGYTZT5QWIEGYKUOLOK7MFXSLJKLYRZONER5ZCDZO5XYWSLG475QC
5ZG33P3GHTV45HM5STF23BNSV7T4Z6MGCLPRGCNHIVCQUTHDPOTQC
MLZSEZWNNZMSIDQNAAIOJJR4K7VSVJICL5SAGHD3ROM7SYDVZABAC
JXOE7KJIEAJHPLMZAJ6O4YHDTRB6BGNP6XT3ZSEFYGSIUMHR77KQC
RVST2QHYJ757ZHK4AUJ5NGPDZ44AD6RVFVXYPKQIBJXZBDNUCHXQC
5FECCMAC5QKG3SJ4ATZFE2QF7I3A4YKWKCU4XQEW2P2SWZ2J33YQC
if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT
|| you.hunger_state <= HS_HUNGRY)
// Hungry/bat-form vampires are (much) more stealthy
if (you.hunger_state <= HS_STARVING)
stealth += (you.skills[SK_STEALTH] * 21);
else if (you.attribute[ATTR_TRANSFORMATION] == TRAN_BAT
|| you.hunger_state <= HS_HUNGRY)
item.sub_type = FOOD_CHUNK;
item.quantity = 1 + random2( max_chunks );
item.flags &= ~(ISFLAG_THROWN | ISFLAG_DROPPED);
item.sub_type = FOOD_CHUNK;
item.quantity = 1 + random2( max_chunks );
item.flags &= ~(ISFLAG_THROWN | ISFLAG_DROPPED);
mitm[o].plus = 0;
mitm[o].plus2 = 0;
mitm[o].special = 0;
mitm[o].flags = 0;
mitm[o].colour = mons_class_colour( mons_class );
mitm[o].plus = 0;
mitm[o].plus2 = 0;
mitm[o].special = 0;
mitm[o].flags = 0;
mitm[o].colour = mons_class_colour( mons_class );
if (you.species == SP_VAMPIRE)
{
if (!one_chance_in(3))
you.rotting = 0;
if (!one_chance_in(3))
you.duration[DUR_CONF] = 0;
}
else
// only fix rot when healed to full
if (you.hp == you.hp_max)
// healing depends on hunger
if (you.hunger_state <= HS_HUNGRY) // !heal wounds
{
inc_hp((10 + random2avg(30,2)) / factor, false);
mpr("You feel much better.");
}
else
{
if (you.hunger_state <= HS_FULL)
inc_hp(5 + random2(10), false); // !healing
else
inc_hp(2 + random2(5), false);
mpr("You feel better.");
}
}
else
{
if (you.omnivorous() || you.mutation[MUT_CARNIVOROUS])
{
// Likes it
mpr("This tastes like blood.");
lessen_hunger(200, true);
}
else
{
mpr("Blech - this tastes like blood!");
if (!you.mutation[MUT_HERBIVOROUS] && one_chance_in(3))
lessen_hunger(100, true);
else
disease_player( 50 + random2(100) );
xom_is_stimulated(32);
}
}
did_god_conduct(DID_DRINK_BLOOD, 1 + random2(3), was_known);
break;
you.paralyse(2 + random2( 6 + you.duration[DUR_PARALYSIS] ));
xom_is_stimulated(64);
you.paralyse((2 + random2( 6 + you.duration[DUR_PARALYSIS] )) / factor);
xom_is_stimulated(64 / factor);
case POT_BLOOD:
if (you.species == SP_VAMPIRE)
{
const char* names[] = { "human", "rat", "goblin",
"elf", "goat", "sheep",
"sheep", "gnoll", "yak" };
mprf("Yummy - fresh %s blood!", RANDOM_ELEMENT(names));
lessen_hunger(1000, true);
mpr("You feel better.");
inc_hp(1 + random2(10), false);
}
else
{
if (you.omnivorous() || you.mutation[MUT_CARNIVOROUS])
{
// Likes it
mpr("This tastes like blood.");
lessen_hunger(200, true);
}
else
{
mpr("Blech - this tastes like blood!");
if (!you.mutation[MUT_HERBIVOROUS] && one_chance_in(3))
lessen_hunger(100, true);
else
disease_player( 50 + random2(100) );
xom_is_stimulated(32);
}
}
did_god_conduct(DID_DRINK_BLOOD, 1 + random2(3), was_known);
break;
you.duration[DUR_RESIST_FIRE] += random2(pow) + 10;
you.duration[DUR_RESIST_COLD] += random2(pow) + 10;
you.duration[DUR_RESIST_POISON] += random2(pow) + 10;
you.duration[DUR_INSULATION] += random2(pow) + 10;
you.duration[DUR_RESIST_FIRE] += (random2(pow) + 10) / factor;
you.duration[DUR_RESIST_COLD] += (random2(pow) + 10) / factor;
you.duration[DUR_RESIST_POISON] += (random2(pow) + 10) / factor;
you.duration[DUR_INSULATION] += (random2(pow) + 10) / factor;
const int mons_type = food.plus;
const bool cannibal = is_player_same_species(mons_type);
const int intel = mons_intel(mons_type) - I_ANIMAL;
const int mons_type = food.plus;
const bool cannibal = is_player_same_species(mons_type);
const int intel = mons_intel(mons_type) - I_ANIMAL;
const int intel = mons_intel( food.plus ) - I_ANIMAL;
const bool cannibal = is_player_same_species( food.plus );
const bool rotten = food_is_rotten(food);
const int intel = mons_intel( food.plus ) - I_ANIMAL;
const bool cannibal = is_player_same_species( food.plus );
const bool rotten = food_is_rotten(food);
else if (wearing_amulet(AMU_THE_GOURMAND))
{
food_value = mass/3 + random2(you.experience_level * 5);
mpr("Slurp.");
did_god_conduct(DID_DRINK_BLOOD, 8);
}
else
{
mpr("It's not fresh enough.");
return false;
}
// start_delay( DELAY_EAT, 3 );
start_delay( DELAY_EAT, 1 + mass/300 );
// The delay for eating a chunk (mass 1000) is 2
// Here the base nutrition value equals that of chunks,
// but the delay should be greater.
start_delay( DELAY_EAT, mass / 400 );