- [+] vaults
- [+] oval - [+] chasm - [+] room split in 4 by glass - [+] concentricroom - [+] Crash when a vault uses the object 'hole in the ground' - [+] better method of giving spells to monsters - [+] f_randomspellcount v0=amt - [+] f_randomspellschool v0=ss_xxx v1=minlevel v2=maxlevle, text = pw:xxx or null - [+] if power not given: - [+] castig power is (starting depth / 2) - [+] limited by spell's max level. - [+] OR - [+] f_randomspellcount v0=amt - [+] f_randomspellposs v0=spellid, optional text = power. - [+] include these in validateraces - [+] populate monsters... - [+] TEST! (with fire sprite, check if it casts a spell other then fire dart) - [+] if monster is randomly given the job "j_wizard", you MUST pick a subjob too! - [+] go back to using CANCAST for monster spells, so that they show up properly in a mind scan. - [+] druid should start with sickle as secondary weapon. - [+] healing not hurting undead - should be fixed now. - [+] add description of spell powe calculation to spell skills - [+] increase obhp of armour - [+] i was a druid, levelled up to l4, and didn't get a new spell! FIXED. wasn't refreshing LEVSPELLSCHOOLFROMX. - [+] make it a lot harder to get "beheaded" etc. - [+] show real object name in "killed by a thrown xxx" even if you didn't see it - [+] short blades shouldn't be able to behead. - [+] monster threat calc should take #attacks into account! - [+] CTRL-DIR to turn isn't working agian. fixed. - [+] make peasoup have range 1, rather than just going straight in front of you. - [+] power 1 glyph of wardning useless. fixed. - [+] reduce zombie maxattacks to 1. - [+] bug: Are alcohol no longer covered in (null).--More-- - [+] make merlochs much more rare. - [+] light recalc is MASSIVELY slow on some levels. - [+] for now: remove dark levels completely? - [+] "You see 2 sheet of ices here." - [+] remove F_FROZEN when you cook something. - [+] frostbite should do a little more damage. d4 instead of d3.
This commit is contained in:
parent
1fb5e12386
commit
2b77aa200e
3
ai.c
3
ai.c
|
@ -671,7 +671,6 @@ flag_t *aigoto(lifeform_t *lf, cell_t *c, enum MOVEREASON why, void *data, int t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// kill previous target flags.
|
// kill previous target flags.
|
||||||
killflagsofid(lf->flags, F_TARGETLF);
|
killflagsofid(lf->flags, F_TARGETLF);
|
||||||
killflagsofid(lf->flags, F_TARGETCELL);
|
killflagsofid(lf->flags, F_TARGETCELL);
|
||||||
|
@ -1768,7 +1767,7 @@ int aimovetolf(lifeform_t *lf, lifeform_t *target, int wantattack) {
|
||||||
// not already at their last known cell. try to go there.
|
// not already at their last known cell. try to go there.
|
||||||
if (db) dblog(".oO { i cannot see my target. moving to last known loc %d/%d }",lastx,lasty);
|
if (db) dblog(".oO { i cannot see my target. moving to last known loc %d/%d }",lastx,lasty);
|
||||||
if (aigoto(lf, targcell, MR_LF, target, PERMENANT)) {
|
if (aigoto(lf, targcell, MR_LF, target, PERMENANT)) {
|
||||||
if (db) dblog(".oO { successfuly moved towards LKL. }");
|
if (db) dblog(".oO { set target cell for LKL. }");
|
||||||
// success
|
// success
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
} else {
|
} else {
|
||||||
|
|
309
data.c
309
data.c
|
@ -125,14 +125,14 @@ void initcommands(void) {
|
||||||
addcommand(CMD_RUN_SW, 'B', "Autowalk southwest.");
|
addcommand(CMD_RUN_SW, 'B', "Autowalk southwest.");
|
||||||
addcommand(CMD_RUN_W, 'H', "Autowalk west.");
|
addcommand(CMD_RUN_W, 'H', "Autowalk west.");
|
||||||
addcommand(CMD_RUN_NW, 'Y', "Autowalk northwest.");
|
addcommand(CMD_RUN_NW, 'Y', "Autowalk northwest.");
|
||||||
addcommand(CMD_TURN_N, CMD_TURN_N, "Turn to face North.");
|
addcommand(CMD_TURN_N, CH_TURN_N, "Turn to face North.");
|
||||||
addcommand(CMD_TURN_NE, CMD_TURN_NE, "Turn to face Northeast.");
|
addcommand(CMD_TURN_NE, CH_TURN_NE, "Turn to face Northeast.");
|
||||||
addcommand(CMD_TURN_E, CMD_TURN_E, "Turn to face East.");
|
addcommand(CMD_TURN_E, CH_TURN_E, "Turn to face East.");
|
||||||
addcommand(CMD_TURN_SE, CMD_TURN_SE, "Turn to face Southeast.");
|
addcommand(CMD_TURN_SE, CH_TURN_SE, "Turn to face Southeast.");
|
||||||
addcommand(CMD_TURN_S, CMD_TURN_S, "Turn to face South.");
|
addcommand(CMD_TURN_S, CH_TURN_S, "Turn to face South.");
|
||||||
addcommand(CMD_TURN_SW, CMD_TURN_SW, "Turn to face Southwest.");
|
addcommand(CMD_TURN_SW, CH_TURN_SW, "Turn to face Southwest.");
|
||||||
addcommand(CMD_TURN_W, CMD_TURN_W, "Turn to face West.");
|
addcommand(CMD_TURN_W, CH_TURN_W, "Turn to face West.");
|
||||||
addcommand(CMD_TURN_NW, CMD_TURN_NW, "Turn to face Northwest.");
|
addcommand(CMD_TURN_NW, CH_TURN_NW, "Turn to face Northwest.");
|
||||||
// Actions
|
// Actions
|
||||||
addcommand(CMD_UP, '<', "Go up stairs.");
|
addcommand(CMD_UP, '<', "Go up stairs.");
|
||||||
addcommand(CMD_DOWN, '>', "Go down stairs, enter a shop/portal.");
|
addcommand(CMD_DOWN, '>', "Go down stairs, enter a shop/portal.");
|
||||||
|
@ -446,6 +446,8 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_LEVSKILL, 10, SK_LORE_NATURE, NA, NULL);
|
addflag(lastjob->flags, F_LEVSKILL, 10, SK_LORE_NATURE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_LEVSKILL, 15, SK_LORE_NATURE, NA, NULL);
|
addflag(lastjob->flags, F_LEVSKILL, 15, SK_LORE_NATURE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLCOUNT, 5, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLSCHOOL, SS_NATURE, 1, 6, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
addjob(J_MONK, "Monk", "A life of strict self-discipline from an early age makes Monks masters of unarmed combat. This discipline extends to their minds, sometimes allowing them to develop powerful psionic abilities over time. On the downside, they are useless with most weapons and are strict vegetarians.");
|
addjob(J_MONK, "Monk", "A life of strict self-discipline from an early age makes Monks masters of unarmed combat. This discipline extends to their minds, sometimes allowing them to develop powerful psionic abilities over time. On the downside, they are useless with most weapons and are strict vegetarians.");
|
||||||
|
@ -512,6 +514,9 @@ void initjobs(void) {
|
||||||
// 20: tower of iron will
|
// 20: tower of iron will
|
||||||
// 21: planeshift
|
// 21: planeshift
|
||||||
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
||||||
|
// monsters
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLCOUNT, 4, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLSCHOOL, SS_MENTAL, 1, 6, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
|
||||||
addjob(J_HUNTER, "Hunter", "Hunters eke out a living hunting game in the woods. Their dependance on wild animals for sustenance has made them skilled archers.");
|
addjob(J_HUNTER, "Hunter", "Hunters eke out a living hunting game in the woods. Their dependance on wild animals for sustenance has made them skilled archers.");
|
||||||
// stats
|
// stats
|
||||||
|
@ -906,14 +911,12 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_LEVFLAG, 10, F_CONTROL, B_TRUE, NULL);
|
addflag(lastjob->flags, F_LEVFLAG, 10, F_CONTROL, B_TRUE, NULL);
|
||||||
//addflag(lastjob->flags, F_LEVSPELLSCHOOL, 101, SS_NONE, B_TRUE, NULL); // new spell every 1 level
|
//addflag(lastjob->flags, F_LEVSPELLSCHOOL, 101, SS_NONE, B_TRUE, NULL); // new spell every 1 level
|
||||||
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
||||||
|
// monsters
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLCOUNT, 4, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLSCHOOL, SS_MENTAL, 1, 6, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
|
||||||
|
// note: monster spells are defined in subjobs, since wizard MUST have a subjob.
|
||||||
// monster job flags
|
// monster job flags
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_FIREDART, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 50);
|
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_COLDRAY, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 50);
|
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_HEALINGMIN, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 33);
|
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_BLINK, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 33);
|
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_TELEKINESIS, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 33);
|
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_HASTE, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 20);
|
|
||||||
f = addflag(lastjob->flags, F_CANCAST, OT_S_HEALING, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 20);
|
|
||||||
addflag(lastjob->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
addflag(lastjob->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
||||||
// sub jobs
|
// sub jobs
|
||||||
addflag(lastjob->flags, F_CANHAVESUBJOB, SJ_AIRMAGE, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANHAVESUBJOB, SJ_AIRMAGE, NA, NA, NULL);
|
||||||
|
@ -950,6 +953,9 @@ void initjobs(void) {
|
||||||
f = addflag(lastjob->flags, F_CANWILL, OT_S_SUMMONANIMALSSM, 10, 10, "pw:5;"); addcondition(f, FC_IFMONSTER, 50);
|
f = addflag(lastjob->flags, F_CANWILL, OT_S_SUMMONANIMALSSM, 10, 10, "pw:5;"); addcondition(f, FC_IFMONSTER, 50);
|
||||||
f = addflag(lastjob->flags, F_CANWILL, OT_S_SUMMONANIMALSMD, 10, 10, "pw:5;"); addcondition(f, FC_IFMONSTER, 30);
|
f = addflag(lastjob->flags, F_CANWILL, OT_S_SUMMONANIMALSMD, 10, 10, "pw:5;"); addcondition(f, FC_IFMONSTER, 30);
|
||||||
f = addflag(lastjob->flags, F_CANWILL, OT_S_SUMMONANIMALSLG, 10, 10, "pw:5;"); addcondition(f, FC_IFMONSTER, 15);
|
f = addflag(lastjob->flags, F_CANWILL, OT_S_SUMMONANIMALSLG, 10, 10, "pw:5;"); addcondition(f, FC_IFMONSTER, 15);
|
||||||
|
// plus 2 other random nature spells...
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLCOUNT, 2, NA, NA, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
f = addflag(lastjob->flags, F_RNDSPELLSCHOOL, SS_NATURE, 1, 3, NULL); addcondition(f, FC_IFMONSTER, 100);
|
||||||
|
|
||||||
addjob(J_BERZERKER, "Berzerker", "Berzerkers can enter a start of berzerk rage for short periods.");
|
addjob(J_BERZERKER, "Berzerker", "Berzerkers can enter a start of berzerk rage for short periods.");
|
||||||
addflag(lastjob->flags, F_NOPLAYER, B_TRUE, NA, NA, NULL);
|
addflag(lastjob->flags, F_NOPLAYER, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -2981,12 +2987,14 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
||||||
addflag(lastot->flags, F_VARPOWER, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_VARPOWER, B_TRUE, NA, NA, NULL);
|
||||||
addot(OT_S_MIST, "pea soup", "Envelops the area directly ahead of the caster with a thick cloud of mist.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
addot(OT_S_MIST, "pea soup", "Envelops an area in front of the caster with a thick cloud of mist.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
||||||
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the mist will last.");
|
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the mist will last.");
|
||||||
addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL);
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL);
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_RANGE, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_AICASTTOFLEE, ST_ADJSELF, NA, NA, NULL);
|
addflag(lastot->flags, F_AICASTTOFLEE, ST_ADJSELF, NA, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_TARGETTEDSPELL, TT_NONE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
||||||
addot(OT_S_CALLWIND, "zephyr", "Conjures a friendly wind, carrying a single object to the caster's hands.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
addot(OT_S_CALLWIND, "zephyr", "Conjures a friendly wind, carrying a single object to the caster's hands.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
||||||
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines its range and the weight of objects affected.");
|
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines its range and the weight of objects affected.");
|
||||||
|
@ -3322,7 +3330,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL);
|
addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
||||||
// l4
|
// l4
|
||||||
addot(OT_S_FROSTBITE, "frostbite", "Deals 1d3 cold damage to target creature per exposed body part.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
addot(OT_S_FROSTBITE, "frostbite", "Deals 1d4 cold damage to target creature per exposed body part.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
||||||
addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL);
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL);
|
addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RANGE, 4, NA, NA, NULL);
|
addflag(lastot->flags, F_RANGE, 4, NA, NA, NULL);
|
||||||
|
@ -5836,7 +5844,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_SHOULDERS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_SHOULDERS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_WATERPROOF, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_WATERPROOF, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_HELPSREST, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_HELPSREST, 2, NA, NA, NULL);
|
||||||
addot(OT_CLOAKFUR, "fur cloak", "A warm and lightweight fur cloak, great for winter camping trips.", MT_FLESH, 3, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_CLOAKFUR, "fur cloak", "A warm and lightweight fur cloak, great for winter camping trips.", MT_FLESH, 3, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5844,7 +5852,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_SHOULDERS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_SHOULDERS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_COLD, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_COLD, NA, NULL);
|
||||||
addflag(lastot->flags, F_HELPSREST, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_HELPSREST, 5, NA, NA, NULL);
|
||||||
addot(OT_APRON, "apron", "A sturdy rubber apron, designed to protect against stains.", MT_RUBBER, 2, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_APRON, "apron", "A sturdy rubber apron, designed to protect against stains.", MT_RUBBER, 2, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5868,7 +5876,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 60, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 60, NA, NA, NULL);
|
||||||
addot(OT_RIDINGTROUSERS, "pair of riding trousers", "A fitted pair of leather trousers.", MT_LEATHER, 2, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_RIDINGTROUSERS, "pair of riding trousers", "A fitted pair of leather trousers.", MT_LEATHER, 2, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5877,7 +5885,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 75, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 75, NA, NA, NULL);
|
||||||
addot(OT_COMBATPANTS, "pair of combat pants", "An lightly-armoured pair of camoflauged trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_COMBATPANTS, "pair of combat pants", "An lightly-armoured pair of camoflauged trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5913,7 +5921,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 85, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 85, NA, NA, NULL);
|
||||||
addot(OT_BOOTSRUBBER, "pair of rubber boots", "A waterproof (but somewhat cumbersome) pair of rubber boots.", MT_RUBBER, 6, OC_ARMOUR, SZ_SMALL);
|
addot(OT_BOOTSRUBBER, "pair of rubber boots", "A waterproof (but somewhat cumbersome) pair of rubber boots.", MT_RUBBER, 6, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -5922,7 +5930,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 0, 5, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 0, 5, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_ELECTRIC, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_ELECTRIC, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 95, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 95, NA, NA, NULL);
|
||||||
|
@ -5931,7 +5939,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_STABILITY, NA, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_STABILITY, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
|
@ -5941,7 +5949,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
addot(OT_BOOTSMETAL, "pair of metal boots", "A strong pair of metal boots.", MT_METAL, 5, OC_ARMOUR, SZ_SMALL);
|
addot(OT_BOOTSMETAL, "pair of metal boots", "A strong pair of metal boots.", MT_METAL, 5, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -5960,7 +5968,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 70, NA, NA, NULL);
|
||||||
addot(OT_GLOVESLEATHER, "pair of leather gloves", "A pair of coarse leather gloves.", MT_LEATHER, 0.25, OC_ARMOUR, SZ_SMALL);
|
addot(OT_GLOVESLEATHER, "pair of leather gloves", "A pair of coarse leather gloves.", MT_LEATHER, 0.25, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -5968,7 +5976,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
addot(OT_GAUNTLETS, "pair of gauntlets", "A durable pair of metal gauntlets.", MT_METAL, 2, OC_ARMOUR, SZ_SMALL);
|
addot(OT_GAUNTLETS, "pair of gauntlets", "A durable pair of metal gauntlets.", MT_METAL, 2, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -5977,7 +5985,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 10, 5, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 10, 5, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
// armour - head
|
// armour - head
|
||||||
|
@ -5986,13 +5994,13 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addot(OT_PIRATEHAT, "tricorne", "A three cornered hat with a skull and crossbones emblem.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
addot(OT_PIRATEHAT, "tricorne", "A three cornered hat with a skull and crossbones emblem.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_SCARY, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_SCARY, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addot(OT_BALACLAVA, "balaclava", "A form of cloth headgear that covers the whole head, exposing only the eyes.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
addot(OT_BALACLAVA, "balaclava", "A form of cloth headgear that covers the whole head, exposing only the eyes.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -6000,7 +6008,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_ANONYMOUS, NA, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_ANONYMOUS, NA, NA, NULL);
|
||||||
addot(OT_CAP, "cap", "Close-fitting headwear with a short shade visor at the front.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
addot(OT_CAP, "cap", "Close-fitting headwear with a short shade visor at the front.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -6009,21 +6017,21 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addot(OT_CHEFHAT, "toque", "A tall white hat with no brim. Commonly worn by professional cooks.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
addot(OT_CHEFHAT, "toque", "A tall white hat with no brim. Commonly worn by professional cooks.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addot(OT_GASMASK, "gas mask", "A full face mask which protects the wearer from toxic gasses.", MT_METAL, 3.5, OC_ARMOUR, SZ_SMALL);
|
addot(OT_GASMASK, "gas mask", "A full face mask which protects the wearer from toxic gasses.", MT_METAL, 3.5, OC_ARMOUR, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 75, RR_UNCOMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 75, RR_UNCOMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACYMOD, -10, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACYMOD, -10, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_POISONGAS, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_POISONGAS, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, -2, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, -2, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -6062,7 +6070,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pointy hat");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pointy hat");
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
|
@ -6091,7 +6099,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, 1, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, 1, NA, NULL);
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
|
@ -6101,7 +6109,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, -1, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, -1, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_NIGHTVISRANGEMOD, -1, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_NIGHTVISRANGEMOD, -1, NA, NULL);
|
||||||
addflag(lastot->flags, F_TINTED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_TINTED, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -7994,7 +8002,7 @@ void initrace(void) {
|
||||||
// god abilities
|
// god abilities
|
||||||
addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Purity & Order");
|
addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Purity & Order");
|
||||||
addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_LIGHT, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_LIGHT, NA, NA, "pw:10;");
|
||||||
// may cast all life spells
|
// may cast all life spells
|
||||||
for (ot = objecttype ; ot ; ot = ot->next) {
|
for (ot = objecttype ; ot ; ot = ot->next) {
|
||||||
if ((ot->obclass->id == OC_SPELL) && (getspellschool(ot->id) == SS_LIFE)) {
|
if ((ot->obclass->id == OC_SPELL) && (getspellschool(ot->id) == SS_LIFE)) {
|
||||||
|
@ -8004,7 +8012,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_SACRIFICEOBBLESSED, B_CURSED, NA, 5, "OB explode#S in a shower of sparks!");
|
addflag(lastrace->flags, F_SACRIFICEOBBLESSED, B_CURSED, NA, 5, "OB explode#S in a shower of sparks!");
|
||||||
addflag(lastrace->flags, F_SACRIFICEOB, OT_CORPSE, NA, 10, "OB explode#S in a shower of sparks!");
|
addflag(lastrace->flags, F_SACRIFICEOB, OT_CORPSE, NA, 10, "OB explode#S in a shower of sparks!");
|
||||||
|
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
||||||
// likes/dislikes
|
// likes/dislikes
|
||||||
addflag(lastrace->flags, F_GODPOISON, B_FALSE, 100, NA, NULL);
|
addflag(lastrace->flags, F_GODPOISON, B_FALSE, 100, NA, NULL);
|
||||||
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "destroying the undead");
|
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "destroying the undead");
|
||||||
|
@ -8158,11 +8166,11 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Revenge & Thievery");
|
addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Revenge & Thievery");
|
||||||
addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_HIDE, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_HIDE, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CALLWIND, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CALLWIND, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CONFISCATE, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CONFISCATE, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BLINKASS, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BLINKASS, NA, NA, "pw:10;");
|
||||||
//addflag(lastrace->flags, F_CANWILL, OT_S_HUNGER, NA, NA, "pw:1;");
|
//addflag(lastrace->flags, F_CANCAST, OT_S_HUNGER, NA, NA, "pw:1;");
|
||||||
// likes/dislikes
|
// likes/dislikes
|
||||||
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "backstabbing");
|
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "backstabbing");
|
||||||
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "stealing items");
|
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "stealing items");
|
||||||
|
@ -8253,7 +8261,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_CANWILL, ot->id, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANWILL, ot->id, NA, NA, "pw:10;");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
||||||
// likes
|
// likes
|
||||||
addflag(lastrace->flags, F_GODPOISON, B_TRUE, 3, NA, NULL);
|
addflag(lastrace->flags, F_GODPOISON, B_TRUE, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "killing (especially the good-aligned)");
|
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "killing (especially the good-aligned)");
|
||||||
|
@ -8378,12 +8386,12 @@ void initrace(void) {
|
||||||
// god abilities
|
// god abilities
|
||||||
addflag(lastrace->flags, F_GODOF, B_FEMALE, NA, NA, "Mercy & Forgiveness");
|
addflag(lastrace->flags, F_GODOF, B_FEMALE, NA, NA, "Mercy & Forgiveness");
|
||||||
addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CUREPOISON, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CUREPOISON, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_HEALINGMAJ, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_HEALINGMAJ, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WISHLIMITED, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SATEHUNGER, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SATEHUNGER, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DISPERSAL, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DISPERSAL, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SLEEP, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SLEEP, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_GODPOISON, B_FALSE, 25, NA, NULL);
|
addflag(lastrace->flags, F_GODPOISON, B_FALSE, 25, NA, NULL);
|
||||||
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "allowing fleeing creatures to escape");
|
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "allowing fleeing creatures to escape");
|
||||||
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "knocking enemies unconscious");
|
addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "knocking enemies unconscious");
|
||||||
|
@ -8413,11 +8421,11 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLSPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLSPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FIREDART, NA, NA, "pw:5;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FIREDART, NA, NA, "pw:5;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WEAKEN, NA, NA, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WEAKEN, NA, NA, "pw:2;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SLEEP, NA, NA, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SLEEP, NA, NA, "pw:2;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SUCK, NA, NA, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SUCK, NA, NA, "pw:2;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_PARALYZE, NA, NA, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_PARALYZE, NA, NA, "pw:2;");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 8, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 8, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gazes");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gazes");
|
||||||
addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL);
|
||||||
|
@ -8426,7 +8434,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_EXPERT, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_EXPERT, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 50, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSLEEP, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSLEEP, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
addrace(R_BUGBEAR, "bugbear", 120, 'G', C_BROWN, MT_FLESH, RC_HUMANOID, "A huge goblinoid creature, similar to a hobgoblin but larger again, with a temperament to match.");
|
addrace(R_BUGBEAR, "bugbear", 120, 'G', C_BROWN, MT_FLESH, RC_HUMANOID, "A huge goblinoid creature, similar to a hobgoblin but larger again, with a temperament to match.");
|
||||||
|
@ -8527,7 +8535,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_VERYSLOW, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_VERYSLOW, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FLIGHT, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_S_FLIGHT, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FLIGHT, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FLIGHT, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DARKNESS, 7, 7, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DARKNESS, 7, 7, "pw:3;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_CRUSH, NA, NA, "dam:0d0+5;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_CRUSH, NA, NA, "dam:0d0+5;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "waves its tentacles");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "waves its tentacles");
|
||||||
|
@ -8593,7 +8601,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_MASTER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_MASTER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "bellows^a bellow");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "bellows^a bellow");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_STUN, 5, 5, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_STUN, 5, 5, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_STUN, NA, B_APPENDYOU, "gazes");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_STUN, NA, B_APPENDYOU, "gazes");
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -8701,9 +8709,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "bellows^a bellow");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "bellows^a bellow");
|
||||||
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL);
|
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_FIREDART, NA, NA, NULL);
|
addflag(lastrace->flags, F_RNDSPELLCOUNT, 3, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_FLAMEPILLAR, NA, NA, NULL);
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_FIRE, 1, 3, "pw:4;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FLAMEBURST, 4, 4, "pw:4;");
|
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_SS_FIRE, PR_ADEPT, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_SS_FIRE, PR_ADEPT, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
||||||
|
@ -8737,7 +8744,9 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 3, NA, "^crackling flames.");
|
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 3, NA, "^crackling flames.");
|
||||||
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL);
|
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HEAVYBLOW, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HEAVYBLOW, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BURNINGWAVE, 3, 3, "pw:6;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BURNINGWAVE, 3, 3, "pw:6;");
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLCOUNT, 3, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_FIRE, 1, 5, "pw:6;");
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
||||||
|
@ -8891,8 +8900,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTOBCLASS, 40, OC_POTION, NA, NULL);
|
addflag(lastrace->flags, F_STARTOBCLASS, 40, OC_POTION, NA, NULL);
|
||||||
addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, B_COVETS, NA, NULL);
|
addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DIG, NA, NA, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DIG, NA, NA, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_PASSWALL, NA, NA, "pw:5;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_PASSWALL, NA, NA, "pw:5;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 50, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 50, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_PASSWALL, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_PASSWALL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_DIG, NA, NA, "burrows down into the ground");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_DIG, NA, NA, "burrows down into the ground");
|
||||||
|
@ -9001,8 +9010,11 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DODGES, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DODGES, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_PACKATTACK, 2, DT_SLASH, 3, NULL);
|
addflag(lastrace->flags, F_PACKATTACK, 2, DT_SLASH, 3, NULL);
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_BLINDNESS, NA, NA, NULL);
|
//addflag(lastrace->flags, F_CANCAST, OT_S_BLINDNESS, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_PAIN, NA, NA, NULL);
|
//addflag(lastrace->flags, F_CANCAST, OT_S_PAIN, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLCOUNT, 2, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_WILD, 1, 3, "pw:3;");
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_DEATH, 1, 2, "pw:3;");
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MINIONS, 90, 1, 2, "goblin");
|
addflag(lastrace->flags, F_MINIONS, 90, 1, 2, "goblin");
|
||||||
|
@ -9067,7 +9079,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_GASEOUSFORM, NA, NA, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_GASEOUSFORM, NA, NA, "pw:3;");
|
||||||
// gremlins also cause tech to fail around them.
|
// gremlins also cause tech to fail around them.
|
||||||
|
|
||||||
addrace(R_HOBGOBLIN, "hobgoblin", 90, 'g', C_YELLOW, MT_FLESH, RC_HUMANOID, "A larger, stronger, smarter and more menacing form of a goblin.");
|
addrace(R_HOBGOBLIN, "hobgoblin", 90, 'g', C_YELLOW, MT_FLESH, RC_HUMANOID, "A larger, stronger, smarter and more menacing form of a goblin.");
|
||||||
|
@ -9231,7 +9243,9 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTOB, 75, NA, NA, "50-100 gold coins");
|
addflag(lastrace->flags, F_STARTOB, 75, NA, NA, "50-100 gold coins");
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BLINK, 5, 5, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BLINK, 5, 5, "pw:1;");
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLCOUNT, 2, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_TRANSLOCATION, 1, 3, "pw:3;");
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_THIEVERY, PR_SKILLED, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_THIEVERY, PR_SKILLED, NA, NULL);
|
||||||
addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DODGES, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DODGES, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -9263,7 +9277,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "spits");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "spits");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_POISONBOLT, 5, 5, "pw:5;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_POISONBOLT, 5, 5, "pw:5;");
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -9438,9 +9452,9 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "robes");
|
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "robes");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DISORIENT, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANCAST, OT_S_DISORIENT, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BAFFLE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANCAST, OT_S_BAFFLE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 10, 10, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_INVISIBILITY, 10, 10, "pw:1;");
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -9465,8 +9479,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 6, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 6, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
||||||
addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SMITEGOOD, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANCAST, OT_S_SMITEGOOD, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DARKNESS, NA, NA, "pw:8;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DARKNESS, NA, NA, "pw:8;");
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -9562,14 +9576,14 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL);
|
addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4");
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4");
|
||||||
addflag(lastrace->flags, F_LEVITATING, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_LEVITATING, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_LEVITATION, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANCAST, OT_S_LEVITATION, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_LEVITATION, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_LEVITATION, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SUMMONWEAPON, NA, NA, "pw:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SUMMONWEAPON, NA, NA, "pw:4;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_ICECRUST, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_ICECRUST, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CRYSTALARM, NA, NA, "pw:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CRYSTALARM, NA, NA, "pw:4;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CRYSTALSHIELD, NA, NA, "pw:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CRYSTALSHIELD, NA, NA, "pw:4;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "shimmers");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "shimmers");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
||||||
|
@ -9627,7 +9641,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLSPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLSPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_TELEKINESIS, NA, NA, "pw:5;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_TELEKINESIS, NA, NA, "pw:5;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
||||||
addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -9761,7 +9775,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOPACK, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOPACK, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSLEEP, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSLEEP, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOINJURIES, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOINJURIES, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SLEEP, NA, NA, "range:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SLEEP, NA, NA, "range:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_SLEEP, NA, B_APPENDYOU, "throws a handful of sand");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_SLEEP, NA, B_APPENDYOU, "throws a handful of sand");
|
||||||
addflag(lastrace->flags, F_TREMORSENSE, 4, NA, NA, NULL);
|
addflag(lastrace->flags, F_TREMORSENSE, 4, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_FLY, 1, NA, "^rushing air");
|
addflag(lastrace->flags, F_NOISETEXT, N_FLY, 1, NA, "^rushing air");
|
||||||
|
@ -9839,8 +9853,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SNOWBALL, NA, NA, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SNOWBALL, NA, NA, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SLIDE, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SLIDE, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "rubs its hands together");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "rubs its hands together");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHCHILL, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHCHILL, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
||||||
|
@ -9891,7 +9905,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_DRILL, 5, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_DRILL, 5, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DIG, NA, NA, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DIG, NA, NA, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 50, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 50, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "pounds its drills into the ground");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "pounds its drills into the ground");
|
||||||
addflag(lastrace->flags, F_EATCONFER, F_MUTABLE, B_TRUE, NA, "100");
|
addflag(lastrace->flags, F_EATCONFER, F_MUTABLE, B_TRUE, NA, "100");
|
||||||
|
@ -9912,7 +9926,9 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_SPELLSPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLSPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FIREDART, NA, NA, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FIREDART, NA, NA, "pw:1;");
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLCOUNT, 1, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_FIRE, 1, 2, "pw:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_PRODUCESLIGHT, 3, NA, NA, NULL);
|
addflag(lastrace->flags, F_PRODUCESLIGHT, 3, NA, NA, NULL);
|
||||||
|
@ -9944,9 +9960,9 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_SPELLSPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLSPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SMITEGOOD, NA, NA, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SMITEGOOD, NA, NA, "pw:2;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_LETHARGY, NA, NA, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_LETHARGY, NA, NA, "pw:3;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_ANIMATEDEAD, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_ANIMATEDEAD, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
||||||
|
@ -9975,9 +9991,10 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_SPELLSPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLSPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FROSTBITE, NA, NA, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FROSTBITE, NA, NA, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FREEZEOB, 10, 10, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_ICICLE, 3, 3, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_ICICLE, 3, 3, "pw:1;");
|
addflag(lastrace->flags, F_RNDSPELLCOUNT, 1, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_RNDSPELLSCHOOL, SS_COLD, 1, 2, "pw:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "gestures");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
||||||
|
@ -10041,7 +10058,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTVULN, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTVULN, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FROSTBITE, NA, NA, "pw:1; range:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FROSTBITE, NA, NA, "pw:1; range:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FROSTBITE, NA, NA, "exhales a freezing wind");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FROSTBITE, NA, NA, "exhales a freezing wind");
|
||||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -10092,10 +10109,10 @@ void initrace(void) {
|
||||||
noarmouron(lastrace, BP_FEET);
|
noarmouron(lastrace, BP_FEET);
|
||||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_VERYRARE, NULL);
|
||||||
addflag(lastrace->flags, F_RARITY, H_CAVE, NA, RR_UNCOMMON, NULL);
|
addflag(lastrace->flags, F_RARITY, H_CAVE, NA, RR_VERYRARE, NULL);
|
||||||
addflag(lastrace->flags, F_RARITY, H_SWAMP, NA, RR_FREQUENT, NULL);
|
addflag(lastrace->flags, F_RARITY, H_SWAMP, NA, RR_RARE, NULL);
|
||||||
addflag(lastrace->flags, F_RARITY, H_SEWER, NA, RR_UNCOMMON, NULL);
|
addflag(lastrace->flags, F_RARITY, H_SEWER, NA, RR_RARE, NULL);
|
||||||
addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ARMOURRATING, 15, NA, NA, NULL); // high armour
|
addflag(lastrace->flags, F_ARMOURRATING, 15, NA, NA, NULL); // high armour
|
||||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+4");
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+4");
|
||||||
|
@ -10256,8 +10273,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_BASH, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_BASH, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CLONE, 0, 100, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CLONE, 0, 100, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_ENTANGLE, 50, 50, "pw:2; range:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_ENTANGLE, 50, 50, "pw:2; range:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_CLONE, NA, NA, "expands");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_CLONE, NA, NA, "expands");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_ENTANGLE, NA, NA, "writhes");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_ENTANGLE, NA, NA, "writhes");
|
||||||
|
|
||||||
|
@ -10555,8 +10572,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, SV_SHOUT, NA, "croaks^croaking");
|
addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, SV_SHOUT, NA, "croaks^croaking");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_SPELLCAST, SV_SHOUT, NA, "gurgles loudly^a loud gurgling");
|
addflag(lastrace->flags, F_NOISETEXT, N_SPELLCAST, SV_SHOUT, NA, "gurgles loudly^a loud gurgling");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_JUMP, NA, NA, "stamcost:0;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_JUMP, NA, NA, "stamcost:0;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FLOOD, 20, 20, "pw:6;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FLOOD, 20, 20, "pw:6;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WATERJET, NA, NA, "pw:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WATERJET, NA, NA, "pw:4;");
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_SWIMMING, PR_MASTER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_SWIMMING, PR_MASTER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_AISPELLTARGETOVERRIDE, OT_S_FLOOD, ST_SELF, NA, NULL);
|
addflag(lastrace->flags, F_AISPELLTARGETOVERRIDE, OT_S_FLOOD, ST_SELF, NA, NULL);
|
||||||
|
@ -10631,7 +10648,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_VEGETARIAN, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_VEGETARIAN, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 6, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 6, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BLINK, 2, 2, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BLINK, 2, 2, "pw:1;");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "barks^barking");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "barks^barking");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "growls^growling");
|
addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "growls^growling");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "whines in pain^whining");
|
addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "whines in pain^whining");
|
||||||
|
@ -10831,7 +10848,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SWOOPRANGE, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_SWOOPRANGE, 5, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_COLDBURST, 2, 2, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_COLDBURST, 2, 2, "pw:2;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "screeches");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "screeches");
|
||||||
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -11103,7 +11120,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_WALKVERB, NA, NA, NA, "slither");
|
addflag(lastrace->flags, F_WALKVERB, NA, NA, NA, "slither");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^slithering");
|
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^slithering");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "hisses^hissing");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "hisses^hissing");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_POISONBOLT, 4, 4, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_POISONBOLT, 4, 4, "pw:3;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "spits");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "spits");
|
||||||
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL);
|
||||||
|
@ -11133,7 +11150,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_CASTTYPE, CT_EYESPIT, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTTYPE, CT_EYESPIT, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BLINDNESS, 4, 4, "pw:3;range:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BLINDNESS, 4, 4, "pw:3;range:2;");
|
||||||
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -11204,7 +11221,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 4, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 4, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
||||||
addflag(lastrace->flags, F_SPIDERCLIMB, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPIDERCLIMB, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WEB, 3, 3, "pw:1;range:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WEB, 3, 3, "pw:1;range:4;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_CLIMB, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_CLIMB, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -11233,7 +11250,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HITCONFER, F_POISONED, SC_POISON, 26, "10-20");
|
addflag(lastrace->flags, F_HITCONFER, F_POISONED, SC_POISON, 26, "10-20");
|
||||||
addflag(lastrace->flags, F_HITCONFERVALS, P_VENOM, 3, NA, NULL); // strong!
|
addflag(lastrace->flags, F_HITCONFERVALS, P_VENOM, 3, NA, NULL); // strong!
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WEB, 3, 3, "pw:5;range:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WEB, 3, 3, "pw:5;range:2;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_CLIMB, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_CLIMB, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -11263,7 +11280,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HITCONFER, F_PAIN, SC_POISON, 26, "5-15");
|
addflag(lastrace->flags, F_HITCONFER, F_PAIN, SC_POISON, 26, "5-15");
|
||||||
addflag(lastrace->flags, F_HITCONFERVALS, DT_POISON, NA, NA, "1d2");
|
addflag(lastrace->flags, F_HITCONFERVALS, DT_POISON, NA, NA, "1d2");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, NULL); // don't announce spellcasting
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_WEB, 3, 3, "pw:7;range:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_WEB, 3, 3, "pw:7;range:3;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_CLIMB, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_CLIMB, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -11358,7 +11375,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, "");
|
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_HASSKILL, SK_SWIMMING, PR_BEGINNER, NA, NULL);
|
addflag(lastrace->flags, F_HASSKILL, SK_SWIMMING, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 11, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 11, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_COLDRAY, 10, 10, "pw:2;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_COLDRAY, 10, 10, "pw:2;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "unleashes its icy breath");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "unleashes its icy breath");
|
||||||
addflag(lastrace->flags, F_CANINE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANINE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -11566,7 +11583,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_LIGHTNINGBOLT, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_LIGHTNINGBOLT, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_FLOOD, NA, NA, "pw:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FLOOD, NA, NA, "pw:4;");
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_CHAINLIGHTNING, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CHAINLIGHTNING, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FEAR, 30, 30, "pw:6;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, 30, 30, "pw:6;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "unleashes its lightning breath");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "unleashes its lightning breath");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_GUSTOFWIND, NA, NA, "flaps its wings");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_GUSTOFWIND, NA, NA, "flaps its wings");
|
||||||
|
@ -11717,7 +11734,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_FLAMEPILLAR, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FLAMEPILLAR, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_BURNINGWAVE, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BURNINGWAVE, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANCAST, OT_S_PYROMANIA, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_PYROMANIA, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FEAR, 30, 30, "pw:6;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, 30, 30, "pw:6;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "unleashes its fiery breath");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "unleashes its fiery breath");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FEAR, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FEAR, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FLAMEPILLAR, NA, NA, "breaths fire into the ground");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FLAMEPILLAR, NA, NA, "breaths fire into the ground");
|
||||||
|
@ -11896,7 +11913,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_CORPSEFLAG, F_EXPLODEONDEATH, NA, 2, "32d2");
|
addflag(lastrace->flags, F_CORPSEFLAG, F_EXPLODEONDEATH, NA, 2, "32d2");
|
||||||
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_WANTS, OT_STONE, B_COVETS, NA, NULL);
|
addflag(lastrace->flags, F_WANTS, OT_STONE, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DETONATEDELAY, 20, 20, "pw:1;range:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DETONATEDELAY, 20, 20, "pw:1;range:3;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "vibrates");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "vibrates");
|
||||||
|
|
||||||
addrace(R_BUTTERFLY, "butterfly", 0.01, 'i', C_YELLOW, MT_FLESH, RC_INSECT, "A harmless, colourful butterfly.");
|
addrace(R_BUTTERFLY, "butterfly", 0.01, 'i', C_YELLOW, MT_FLESH, RC_INSECT, "A harmless, colourful butterfly.");
|
||||||
|
@ -12066,7 +12083,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0");
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0");
|
||||||
addflag(lastrace->flags, F_EVASION, 60, NA, NA, NULL);
|
addflag(lastrace->flags, F_EVASION, 60, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_ZAPPER, 1, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_ZAPPER, 1, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FLASH, 15, 15, "pw:4;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FLASH, 15, 15, "pw:4;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "pulses");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "pulses");
|
||||||
addflag(lastrace->flags, F_NOPACK, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOPACK, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -12125,9 +12142,9 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_ACID, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_ACID, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_COLD, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FEAR, 20, 20, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, 20, 20, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CLOUDKILL, 20, 20, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CLOUDKILL, 20, 20, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SUMMONDEMON, 20, 20, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SUMMONDEMON, 20, 20, "pw:3;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "narrows its eyes");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "narrows its eyes");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^an other-wordly roar");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^an other-wordly roar");
|
||||||
|
|
||||||
|
@ -12150,7 +12167,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_ACID, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_ACID, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_COLD, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_COLD, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_HEATMETAL, 5, 5, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_HEATMETAL, 5, 5, "pw:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "waves its trident");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "waves its trident");
|
||||||
addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "red-hot trident");
|
addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "red-hot trident");
|
||||||
addflag(lastrace->flags, F_NEEDOBFORSPELLS, OT_TRIDENT, NA, NA, NULL);
|
addflag(lastrace->flags, F_NEEDOBFORSPELLS, OT_TRIDENT, NA, NA, NULL);
|
||||||
|
@ -12175,7 +12192,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_ACID, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_ACID, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SHARDSHOT, 5, 5, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SHARDSHOT, 5, 5, "pw:3;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "points its arm");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, B_APPENDYOU, "points its arm");
|
||||||
addflag(lastrace->flags, F_RESISTMAG, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_RESISTMAG, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^an other-wordly roar");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^an other-wordly roar");
|
||||||
|
@ -12215,7 +12232,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL);
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_HIGH, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_HIGH, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_HURRICANESTRIKE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_HURRICANESTRIKE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BLINKASS, 3, 3, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BLINKASS, 3, 3, "pw:1;");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_FISTS, 2, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_FISTS, 2, NA, NULL);
|
||||||
addflag(lastrace->flags, F_VAMPIRIC, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_VAMPIRIC, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL);
|
||||||
|
@ -12247,8 +12264,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DETECTMAGIC, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DETECTMAGIC, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_STEALTH, PR_ADEPT, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_STEALTH, PR_ADEPT, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_ENTANGLE, 3, 3, "pw:5;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_ENTANGLE, 3, 3, "pw:5;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 5, 5, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_INVISIBILITY, 5, 5, "pw:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "grins");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "grins");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "screechs^an other-wordly screech");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "screechs^an other-wordly screech");
|
||||||
|
|
||||||
|
@ -12277,8 +12294,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DTRESIST, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DETECTMAGIC, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DETECTMAGIC, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_STEALTH, PR_ADEPT, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_STEALTH, PR_ADEPT, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FEAR, 20, 20, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, 20, 20, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 20, 20, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_INVISIBILITY, 20, 20, "pw:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "narrows its eyes");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "narrows its eyes");
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "screechs^an other-wordly screech");
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "screechs^an other-wordly screech");
|
||||||
|
|
||||||
|
@ -12300,6 +12317,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_EVASION, -10, NA, NA, NULL);
|
addflag(lastrace->flags, F_EVASION, -10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_SLOW, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 4, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 4, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 5, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 5, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL);
|
||||||
|
@ -12459,7 +12477,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NATURALFLIGHT, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NATURALFLIGHT, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_INDUCEFEAR, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_INDUCEFEAR, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 40, 40, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_INVISIBILITY, 40, 40, "pw:1;");
|
||||||
// special: ghosts gain canwill->possession if they are near
|
// special: ghosts gain canwill->possession if they are near
|
||||||
// their previous corpse. use f_mycorpse->oid for this.
|
// their previous corpse. use f_mycorpse->oid for this.
|
||||||
|
|
||||||
|
@ -12507,7 +12525,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHNECROTIC, 12, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHNECROTIC, 12, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HITCONFER, F_POISONED, NA, NA, NULL);
|
addflag(lastrace->flags, F_HITCONFER, F_POISONED, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HITCONFERVALS, P_ROT, 3, NA, NULL); // strong!
|
addflag(lastrace->flags, F_HITCONFERVALS, P_ROT, 3, NA, NULL); // strong!
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FEAR, 50, 50, "pw:3;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, 50, 50, "pw:3;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FEAR, NA, B_APPENDYOU, "gazes");
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FEAR, NA, B_APPENDYOU, "gazes");
|
||||||
addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -12535,16 +12553,16 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HITCONFER, F_POISONED, NA, NA, NULL);
|
addflag(lastrace->flags, F_HITCONFER, F_POISONED, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HITCONFERVALS, P_ROT, 5, NA, NULL);
|
addflag(lastrace->flags, F_HITCONFERVALS, P_ROT, 5, NA, NULL);
|
||||||
addflag(lastrace->flags, F_RESISTMAG, 15, NA, NA, NULL);
|
addflag(lastrace->flags, F_RESISTMAG, 15, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FEAR, 50, 50, NULL);
|
addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, 50, 50, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_STENCH, NA, NA, "pw:8;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_STENCH, NA, NA, "pw:8;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_BLINDNESS, NA, NA, "pw:8;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_BLINDNESS, NA, NA, "pw:8;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SMITEGOOD, 6, 6, "pw:5;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SMITEGOOD, 6, 6, "pw:5;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_DRAINLIFE, 6, 6, "pw:8;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_DRAINLIFE, 6, 6, "pw:8;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FLAYFLESH, 10, 10, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_FLAYFLESH, 10, 10, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_ANIMATEDEAD, NA, NA, "pw:10;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_ANIMATEDEAD, NA, NA, "pw:10;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CHILL, 10, 10, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CHILL, 10, 10, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CURSE, 5, 5, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CURSE, 5, 5, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_PROTGOOD, NA, NA, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_PROTGOOD, NA, NA, "pw:1;");
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "begins to chant"); // default
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_NONE, NA, NA, "begins to chant"); // default
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -12583,10 +12601,10 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NATURALFLIGHT, B_TRUE, NA, NA, "");
|
addflag(lastrace->flags, F_NATURALFLIGHT, B_TRUE, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_FLIGHT, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_S_FLIGHT, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FLIGHT, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_S_FLIGHT, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_CHARM, 3, 3, "pw:6;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_CHARM, 3, 3, "pw:6;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:3;");
|
addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:3;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_STUN, 5, 5, "pw:1;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_STUN, 5, 5, "pw:1;");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_S_SHAPESHIFT, 3, 3, "pw:1;race:vampire bat;");
|
addflag(lastrace->flags, F_CANCAST, OT_S_SHAPESHIFT, 3, 3, "pw:1;race:vampire bat;");
|
||||||
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DETECTOBS, 10, OT_COFFIN, NA, NULL);
|
addflag(lastrace->flags, F_DETECTOBS, 10, OT_COFFIN, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "pile of ash");
|
addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "pile of ash");
|
||||||
|
@ -13002,6 +13020,7 @@ void initskills(void) {
|
||||||
|
|
||||||
// spell schools
|
// spell schools
|
||||||
addskill(SK_SS_ALLOMANCY, "Allomancy", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_ALLOMANCY, "Allomancy", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_ALLOMANCY, PR_INEPT, "- Spell power power depends on your Level and Strength.", B_FALSE);
|
||||||
addskilldesc(SK_SS_ALLOMANCY, PR_INEPT, "- Each rank gives you a 20% chance to learn a new allomantic ability when levelling up.", B_FALSE);
|
addskilldesc(SK_SS_ALLOMANCY, PR_INEPT, "- Each rank gives you a 20% chance to learn a new allomantic ability when levelling up.", B_FALSE);
|
||||||
addskilldesc(SK_SS_ALLOMANCY, PR_NOVICE, "Allows you to cast Allomancy spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_ALLOMANCY, PR_NOVICE, "Allows you to cast Allomancy spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_ALLOMANCY, PR_BEGINNER, "Allows you to cast Allomancy spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_ALLOMANCY, PR_BEGINNER, "Allows you to cast Allomancy spells up to level 2.", B_FALSE);
|
||||||
|
@ -13010,6 +13029,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_ALLOMANCY, PR_EXPERT, "Allows you to cast Allomancy spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_ALLOMANCY, PR_EXPERT, "Allows you to cast Allomancy spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_ALLOMANCY, PR_MASTER, "Allows you to cast Allomancy spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_ALLOMANCY, PR_MASTER, "Allows you to cast Allomancy spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_MENTAL, "Psionics", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_MENTAL, "Psionics", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_MENTAL, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MENTAL, PR_INEPT, "- Each rank gives you a 20% chance to learn a new psionic ability when levelling up.", B_FALSE);
|
addskilldesc(SK_SS_MENTAL, PR_INEPT, "- Each rank gives you a 20% chance to learn a new psionic ability when levelling up.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MENTAL, PR_NOVICE, "Allows you to cast Psionic spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_MENTAL, PR_NOVICE, "Allows you to cast Psionic spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MENTAL, PR_BEGINNER, "Allows you to cast Psionic spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_MENTAL, PR_BEGINNER, "Allows you to cast Psionic spells up to level 2.", B_FALSE);
|
||||||
|
@ -13018,6 +13038,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_MENTAL, PR_EXPERT, "Allows you to cast Psionic spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_MENTAL, PR_EXPERT, "Allows you to cast Psionic spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MENTAL, PR_MASTER, "Allows you to cast Psionic spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_MENTAL, PR_MASTER, "Allows you to cast Psionic spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_NATURE, "Enviromancy", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_NATURE, "Enviromancy", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_NATURE, PR_INEPT, "- Spell power power depends on your Level and Wisdom.", B_FALSE);
|
||||||
addskilldesc(SK_SS_NATURE, PR_NOVICE, "Allows you to cast Nature spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_NATURE, PR_NOVICE, "Allows you to cast Nature spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_NATURE, PR_BEGINNER, "Allows you to cast Nature spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_NATURE, PR_BEGINNER, "Allows you to cast Nature spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_NATURE, PR_ADEPT, "Allows you to cast Nature spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_NATURE, PR_ADEPT, "Allows you to cast Nature spells up to level 3.", B_FALSE);
|
||||||
|
@ -13025,6 +13046,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_NATURE, PR_EXPERT, "Allows you to cast Nature spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_NATURE, PR_EXPERT, "Allows you to cast Nature spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_NATURE, PR_MASTER, "Allows you to cast Nature spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_NATURE, PR_MASTER, "Allows you to cast Nature spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_AIR, "Sorcery:Air Magic", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_AIR, "Sorcery:Air Magic", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_AIR, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_AIR, PR_NOVICE, "Allows you to cast Air Magic spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_AIR, PR_NOVICE, "Allows you to cast Air Magic spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_AIR, PR_BEGINNER, "Allows you to cast Air Magic spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_AIR, PR_BEGINNER, "Allows you to cast Air Magic spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_AIR, PR_ADEPT, "Allows you to cast Air Magic spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_AIR, PR_ADEPT, "Allows you to cast Air Magic spells up to level 3.", B_FALSE);
|
||||||
|
@ -13032,6 +13054,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_AIR, PR_EXPERT, "Allows you to cast Air Magic spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_AIR, PR_EXPERT, "Allows you to cast Air Magic spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_AIR, PR_MASTER, "Allows you to cast Air Magic spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_AIR, PR_MASTER, "Allows you to cast Air Magic spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_DEATH, "Sorcery:Necromancy", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_DEATH, "Sorcery:Necromancy", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_DEATH, PR_INEPT, "- Spell power power depends on your Level, your Intelligence, and Hecta's pleasure.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DEATH, PR_NOVICE, "Allows you to cast Necromancy spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_DEATH, PR_NOVICE, "Allows you to cast Necromancy spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DEATH, PR_BEGINNER, "Allows you to cast Necromancy spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_DEATH, PR_BEGINNER, "Allows you to cast Necromancy spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DEATH, PR_ADEPT, "Allows you to cast Necromancy spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_DEATH, PR_ADEPT, "Allows you to cast Necromancy spells up to level 3.", B_FALSE);
|
||||||
|
@ -13039,6 +13062,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_DEATH, PR_EXPERT, "Allows you to cast Necromancy spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_DEATH, PR_EXPERT, "Allows you to cast Necromancy spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DEATH, PR_MASTER, "Allows you to cast Necromancy spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_DEATH, PR_MASTER, "Allows you to cast Necromancy spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_DIVINATION, "Sorcery:Divination", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_DIVINATION, "Sorcery:Divination", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_DIVINATION, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DIVINATION, PR_NOVICE, "Allows you to cast Divination spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_DIVINATION, PR_NOVICE, "Allows you to cast Divination spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DIVINATION, PR_BEGINNER, "Allows you to cast Divination spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_DIVINATION, PR_BEGINNER, "Allows you to cast Divination spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DIVINATION, PR_ADEPT, "Allows you to cast Divination spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_DIVINATION, PR_ADEPT, "Allows you to cast Divination spells up to level 3.", B_FALSE);
|
||||||
|
@ -13046,6 +13070,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_DIVINATION, PR_EXPERT, "Allows you to cast Divination spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_DIVINATION, PR_EXPERT, "Allows you to cast Divination spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_DIVINATION, PR_MASTER, "Allows you to cast Divination spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_DIVINATION, PR_MASTER, "Allows you to cast Divination spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_FIRE, "Sorcery:Fire Magic", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_FIRE, "Sorcery:Fire Magic", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_FIRE, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_FIRE, PR_NOVICE, "Allows you to cast Fire Magic spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_FIRE, PR_NOVICE, "Allows you to cast Fire Magic spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_FIRE, PR_BEGINNER, "Allows you to cast Fire Magic spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_FIRE, PR_BEGINNER, "Allows you to cast Fire Magic spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_FIRE, PR_ADEPT, "Allows you to cast Fire Magic spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_FIRE, PR_ADEPT, "Allows you to cast Fire Magic spells up to level 3.", B_FALSE);
|
||||||
|
@ -13053,6 +13078,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_FIRE, PR_EXPERT, "Allows you to cast Fire Magic spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_FIRE, PR_EXPERT, "Allows you to cast Fire Magic spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_FIRE, PR_MASTER, "Allows you to cast Fire Magic spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_FIRE, PR_MASTER, "Allows you to cast Fire Magic spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_COLD, "Sorcery:Cold Magic", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_COLD, "Sorcery:Cold Magic", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_COLD, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_COLD, PR_NOVICE, "Allows you to cast Cold Magic spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_COLD, PR_NOVICE, "Allows you to cast Cold Magic spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_COLD, PR_BEGINNER, "Allows you to cast Cold Magic spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_COLD, PR_BEGINNER, "Allows you to cast Cold Magic spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_COLD, PR_ADEPT, "Allows you to cast Cold Magic spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_COLD, PR_ADEPT, "Allows you to cast Cold Magic spells up to level 3.", B_FALSE);
|
||||||
|
@ -13060,6 +13086,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_COLD, PR_EXPERT, "Allows you to cast Cold Magic spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_COLD, PR_EXPERT, "Allows you to cast Cold Magic spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_COLD, PR_MASTER, "Allows you to cast Cold Magic spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_COLD, PR_MASTER, "Allows you to cast Cold Magic spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_LIFE, "Sorcery:Life Magic", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_LIFE, "Sorcery:Life Magic", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_LIFE, PR_INEPT, "- Spell power power depends on your Level, your Intelligence, and Glorana's pleasure.", B_FALSE);
|
||||||
addskilldesc(SK_SS_LIFE, PR_NOVICE, "Allows you to cast Life Magic spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_LIFE, PR_NOVICE, "Allows you to cast Life Magic spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_LIFE, PR_BEGINNER, "Allows you to cast Life Magic spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_LIFE, PR_BEGINNER, "Allows you to cast Life Magic spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_LIFE, PR_ADEPT, "Allows you to cast Life Magic spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_LIFE, PR_ADEPT, "Allows you to cast Life Magic spells up to level 3.", B_FALSE);
|
||||||
|
@ -13067,6 +13094,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_LIFE, PR_EXPERT, "Allows you to cast Life Magic spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_LIFE, PR_EXPERT, "Allows you to cast Life Magic spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_LIFE, PR_MASTER, "Allows you to cast Life Magic spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_LIFE, PR_MASTER, "Allows you to cast Life Magic spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_MODIFICATION, "Sorcery:Modification", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_MODIFICATION, "Sorcery:Modification", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_MODIFICATION, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MODIFICATION, PR_NOVICE, "Allows you to cast Modification spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_MODIFICATION, PR_NOVICE, "Allows you to cast Modification spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MODIFICATION, PR_BEGINNER, "Allows you to cast Modification spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_MODIFICATION, PR_BEGINNER, "Allows you to cast Modification spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MODIFICATION, PR_ADEPT, "Allows you to cast Modification spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_MODIFICATION, PR_ADEPT, "Allows you to cast Modification spells up to level 3.", B_FALSE);
|
||||||
|
@ -13074,6 +13102,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_MODIFICATION, PR_EXPERT, "Allows you to cast Modification spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_MODIFICATION, PR_EXPERT, "Allows you to cast Modification spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_MODIFICATION, PR_MASTER, "Allows you to cast Modification spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_MODIFICATION, PR_MASTER, "Allows you to cast Modification spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_SUMMONING, "Sorcery:Summoning", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_SUMMONING, "Sorcery:Summoning", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_SUMMONING, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_SUMMONING, PR_NOVICE, "Allows you to cast Summoning spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_SUMMONING, PR_NOVICE, "Allows you to cast Summoning spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_SUMMONING, PR_BEGINNER, "Allows you to cast Summoning spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_SUMMONING, PR_BEGINNER, "Allows you to cast Summoning spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_SUMMONING, PR_ADEPT, "Allows you to cast Summoning spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_SUMMONING, PR_ADEPT, "Allows you to cast Summoning spells up to level 3.", B_FALSE);
|
||||||
|
@ -13081,6 +13110,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_SUMMONING, PR_EXPERT, "Allows you to cast Summoning spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_SUMMONING, PR_EXPERT, "Allows you to cast Summoning spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_SUMMONING, PR_MASTER, "Allows you to cast Summoning spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_SUMMONING, PR_MASTER, "Allows you to cast Summoning spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_TRANSLOCATION, "Sorcery:Translocation", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_TRANSLOCATION, "Sorcery:Translocation", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_TRANSLOCATION, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_TRANSLOCATION, PR_NOVICE, "Allows you to cast Translocation spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_TRANSLOCATION, PR_NOVICE, "Allows you to cast Translocation spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_TRANSLOCATION, PR_BEGINNER, "Allows you to cast Translocation spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_TRANSLOCATION, PR_BEGINNER, "Allows you to cast Translocation spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_TRANSLOCATION, PR_ADEPT, "Allows you to cast Translocation spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_TRANSLOCATION, PR_ADEPT, "Allows you to cast Translocation spells up to level 3.", B_FALSE);
|
||||||
|
@ -13088,6 +13118,7 @@ void initskills(void) {
|
||||||
addskilldesc(SK_SS_TRANSLOCATION, PR_EXPERT, "Allows you to cast Translocation spells up to level 5.", B_FALSE);
|
addskilldesc(SK_SS_TRANSLOCATION, PR_EXPERT, "Allows you to cast Translocation spells up to level 5.", B_FALSE);
|
||||||
addskilldesc(SK_SS_TRANSLOCATION, PR_MASTER, "Allows you to cast Translocation spells up to level 6.", B_FALSE);
|
addskilldesc(SK_SS_TRANSLOCATION, PR_MASTER, "Allows you to cast Translocation spells up to level 6.", B_FALSE);
|
||||||
addskill(SK_SS_WILD, "Sorcery:Wild Magic", "Boosts casting of spells from this school.", 50);
|
addskill(SK_SS_WILD, "Sorcery:Wild Magic", "Boosts casting of spells from this school.", 50);
|
||||||
|
addskilldesc(SK_SS_WILD, PR_INEPT, "- Spell power power depends on your Level and Intelligence.", B_FALSE);
|
||||||
addskilldesc(SK_SS_WILD, PR_NOVICE, "Allows you to cast Wild Magic spells up to level 1.", B_FALSE);
|
addskilldesc(SK_SS_WILD, PR_NOVICE, "Allows you to cast Wild Magic spells up to level 1.", B_FALSE);
|
||||||
addskilldesc(SK_SS_WILD, PR_BEGINNER, "Allows you to cast Wild Magic spells up to level 2.", B_FALSE);
|
addskilldesc(SK_SS_WILD, PR_BEGINNER, "Allows you to cast Wild Magic spells up to level 2.", B_FALSE);
|
||||||
addskilldesc(SK_SS_WILD, PR_ADEPT, "Allows you to cast Wild Magic spells up to level 3.", B_FALSE);
|
addskilldesc(SK_SS_WILD, PR_ADEPT, "Allows you to cast Wild Magic spells up to level 3.", B_FALSE);
|
||||||
|
@ -13130,7 +13161,7 @@ void initskills(void) {
|
||||||
addskilldesc(sk->id, PR_BEGINNER, "^g-1 accuracy penalty^n", B_FALSE);
|
addskilldesc(sk->id, PR_BEGINNER, "^g-1 accuracy penalty^n", B_FALSE);
|
||||||
addskilldesc(sk->id, PR_BEGINNER, "^gYou gain the 'wild strike' ability.^n", B_FALSE);
|
addskilldesc(sk->id, PR_BEGINNER, "^gYou gain the 'wild strike' ability.^n", B_FALSE);
|
||||||
addskilldesc(sk->id, PR_ADEPT, "^g+10% damage bonus.^n", B_FALSE);
|
addskilldesc(sk->id, PR_ADEPT, "^g+10% damage bonus.^n", B_FALSE);
|
||||||
addskilldesc(sk->id, PR_ADEPT, "^gYou can now alter your attack style to deal different damage types.", B_FALSE);
|
addskilldesc(sk->id, PR_ADEPT, "^gYou can now alter your attack style to deal different damage types^n.", B_FALSE);
|
||||||
addskilldesc(sk->id, PR_SKILLED, "^g+2 accuracy, +20% damage bonus.^n", B_FALSE);
|
addskilldesc(sk->id, PR_SKILLED, "^g+2 accuracy, +20% damage bonus.^n", B_FALSE);
|
||||||
addskilldesc(sk->id, PR_SKILLED, "^gYou can now block certain attacks with this kind of weapon.^n", B_FALSE);
|
addskilldesc(sk->id, PR_SKILLED, "^gYou can now block certain attacks with this kind of weapon.^n", B_FALSE);
|
||||||
addskilldesc(sk->id, PR_EXPERT, "^g+4 accuracy, +30% damage bonus.^n", B_FALSE);
|
addskilldesc(sk->id, PR_EXPERT, "^g+4 accuracy, +30% damage bonus.^n", B_FALSE);
|
||||||
|
|
BIN
data/hiscores.db
BIN
data/hiscores.db
Binary file not shown.
10
defs.h
10
defs.h
|
@ -2650,6 +2650,16 @@ enum FLAG {
|
||||||
// text = copied F_GODFLAG text from god.
|
// text = copied F_GODFLAG text from god.
|
||||||
F_BEHAVIOUR, // textual field describing special behaviour for this
|
F_BEHAVIOUR, // textual field describing special behaviour for this
|
||||||
// lf
|
// lf
|
||||||
|
F_RNDSPELLCOUNT, // this monster starts with v0 random spells.
|
||||||
|
// needs to also have either f_rndspellschool OR
|
||||||
|
// f_rndspellposs.
|
||||||
|
F_RNDSPELLSCHOOL, // monster's random spells can come from
|
||||||
|
// school v0, between level v1 and v2.
|
||||||
|
// (optional) text = "pw:xxx;" to show spell
|
||||||
|
// power. if not given, power comes from depth.
|
||||||
|
F_RNDSPELLPOSS, // monster's random spells can be spellid v0.
|
||||||
|
// (optional) text = "pw:xxx;" to show spell
|
||||||
|
// power. if not given, power comes from depth.
|
||||||
F_NOSMELL, // lf can't smell. not affected by stench, and
|
F_NOSMELL, // lf can't smell. not affected by stench, and
|
||||||
// can't get enhancesmell.
|
// can't get enhancesmell.
|
||||||
F_RESTINGINMOTEL, // sounds will not wake up this lf. monster won't
|
F_RESTINGINMOTEL, // sounds will not wake up this lf. monster won't
|
||||||
|
|
12
io.c
12
io.c
|
@ -2210,7 +2210,7 @@ int announceflagloss(lifeform_t *lf, flag_t *f) {
|
||||||
donesomething = B_TRUE;
|
donesomething = B_TRUE;
|
||||||
break;
|
break;
|
||||||
case F_FLAMMABLELF:
|
case F_FLAMMABLELF:
|
||||||
msg("%s %s no longer covered in %s.", isplayer(lf) ? "are" : "is", f->text);
|
msg("%s %s no longer covered in %s.", lfname, isplayer(lf) ? "are" : "is", f->text);
|
||||||
donesomething = B_TRUE;
|
donesomething = B_TRUE;
|
||||||
break;
|
break;
|
||||||
case F_FLEEFROM:
|
case F_FLEEFROM:
|
||||||
|
@ -11747,10 +11747,6 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
strcat(buf, ".");
|
strcat(buf, ".");
|
||||||
wrapprint(mainwin, &y, &x, 0, "%s ", buf);
|
wrapprint(mainwin, &y, &x, 0, "%s ", buf);
|
||||||
}
|
}
|
||||||
f = lfhasflag(lf, F_REFLECTION);
|
|
||||||
if (f && (f->known)) {
|
|
||||||
wrapprint(mainwin, &y, &x, 0, "%s %s surrounded by a negative gravity field.", you(lf), is(lf));
|
|
||||||
}
|
|
||||||
|
|
||||||
f = lfhasflag(lf, F_RETALIATE);
|
f = lfhasflag(lf, F_RETALIATE);
|
||||||
if (f && (f->known)) {
|
if (f && (f->known)) {
|
||||||
|
@ -12344,7 +12340,7 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
}
|
}
|
||||||
f = hasflag_real(lf->flags, F_PARTVEGETARIAN, B_TRUE, NULL, FROMRACE);
|
f = hasflag_real(lf->flags, F_PARTVEGETARIAN, B_TRUE, NULL, FROMRACE);
|
||||||
if (f) {
|
if (f) {
|
||||||
mvwprintw(mainwin, y, 0, "%s %s a part vegetarian (will only eat meat when hunger).", you(lf), is(lf));
|
mvwprintw(mainwin, y, 0, "%s %s a part vegetarian (will only eat meat when hungry).", you(lf), is(lf));
|
||||||
y++;
|
y++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12859,6 +12855,10 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
mvwprintw(mainwin, y, 0, "%s %s enraged, gaining accuracy, damage and hit point bonuses.", you(lf), is(lf));
|
mvwprintw(mainwin, y, 0, "%s %s enraged, gaining accuracy, damage and hit point bonuses.", you(lf), is(lf));
|
||||||
y++;
|
y++;
|
||||||
}
|
}
|
||||||
|
f = lfhasflag(lf, F_REFLECTION);
|
||||||
|
if (f && (f->known)) {
|
||||||
|
wrapprint(mainwin, &y, &x, 0, "%s %s surrounded by a negative gravity field.", you(lf), is(lf));
|
||||||
|
}
|
||||||
f = lfhasknownflag(lf, F_TRUESTRIKE);
|
f = lfhasknownflag(lf, F_TRUESTRIKE);
|
||||||
if (f) {
|
if (f) {
|
||||||
mvwprintw(mainwin, y, 0, "%s%s attacks will automatically hit.", you(lf), getpossessive(you(lf)));
|
mvwprintw(mainwin, y, 0, "%s%s attacks will automatically hit.", you(lf), getpossessive(you(lf)));
|
||||||
|
|
140
lf.c
140
lf.c
|
@ -79,6 +79,7 @@ int notime = B_FALSE; // prevent taketime from doing anything
|
||||||
void autoweild(lifeform_t *lf) {
|
void autoweild(lifeform_t *lf) {
|
||||||
object_t *bestwep,*bestfirearm;
|
object_t *bestwep,*bestfirearm;
|
||||||
object_t *o,*firearm;
|
object_t *o,*firearm;
|
||||||
|
int donesecondary = B_FALSE;
|
||||||
int pretimespent;
|
int pretimespent;
|
||||||
|
|
||||||
pretimespent = lf->timespent;
|
pretimespent = lf->timespent;
|
||||||
|
@ -98,13 +99,15 @@ void autoweild(lifeform_t *lf) {
|
||||||
weild(lf, bestfirearm);
|
weild(lf, bestfirearm);
|
||||||
}
|
}
|
||||||
|
|
||||||
// weild armour if required
|
// weild armour if required,
|
||||||
|
// and mark other weapons as secondary
|
||||||
for (o = lf->pack->first ; o ; o = o->next) {
|
for (o = lf->pack->first ; o ; o = o->next) {
|
||||||
if (canwear(lf, o, BP_NONE)) {
|
if (!donesecondary && isweapon(o) && !isequipped(o)) {
|
||||||
wear(lf, o);
|
addflag(o->flags, F_SECONDARY, B_TRUE, NA, NA, NULL);
|
||||||
|
donesecondary = B_TRUE;
|
||||||
} else {
|
} else {
|
||||||
if (isplayer(lf) && (o->type->id == OT_RING_PROTFIRE)) {
|
if (canwear(lf, o, BP_NONE)) {
|
||||||
dblog("zz");
|
wear(lf, o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2669,7 +2672,7 @@ void die(lifeform_t *lf) {
|
||||||
lifeform_t *minion[MAXCANDIDATES];
|
lifeform_t *minion[MAXCANDIDATES];
|
||||||
int nminions = 0;
|
int nminions = 0;
|
||||||
// intelligent monsters will say something
|
// intelligent monsters will say something
|
||||||
if (!hasflag(lf->flags, F_NODEATHSPEECH)) {
|
if (!hasflag(lf->flags, F_NODEATHSPEECH) && !lfhasflag(lf, F_SUMMONEDBY)) {
|
||||||
if (ispetof(lf, player)) {
|
if (ispetof(lf, player)) {
|
||||||
if (cantalk(lf) && canhear(player, lf->cell, 4)) {
|
if (cantalk(lf) && canhear(player, lf->cell, 4)) {
|
||||||
sayphrase(lf, SP_DIE, SV_SHOUT, NA, NULL);
|
sayphrase(lf, SP_DIE, SV_SHOUT, NA, NULL);
|
||||||
|
@ -6614,8 +6617,13 @@ int gethitstokill(lifeform_t *lf, lifeform_t *victim, int useevasion, int usearm
|
||||||
}
|
}
|
||||||
|
|
||||||
if (maxdam >= 1) {
|
if (maxdam >= 1) {
|
||||||
|
int nattacks;
|
||||||
hitstokill = victim->hp / maxdam;
|
hitstokill = victim->hp / maxdam;
|
||||||
limit(&hitstokill, 1, NA);
|
limit(&hitstokill, 1, NA);
|
||||||
|
// modify by maxattacks
|
||||||
|
getattacks(lf, NULL, &nattacks);
|
||||||
|
hitstokill /= nattacks;
|
||||||
|
limit(&hitstokill, 1, NA);
|
||||||
} else {
|
} else {
|
||||||
hitstokill = 0; // ie you'll never kill it.
|
hitstokill = 0; // ie you'll never kill it.
|
||||||
}
|
}
|
||||||
|
@ -9227,9 +9235,9 @@ void givejob(lifeform_t *lf, enum JOB jobid) {
|
||||||
// you can now cast it.
|
// you can now cast it.
|
||||||
addflag(lf->flags, F_CANCAST, spell, NA, NA, NULL);
|
addflag(lf->flags, F_CANCAST, spell, NA, NA, NULL);
|
||||||
}
|
}
|
||||||
|
// druids always worship ekrub
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
lifeform_t *god;
|
lifeform_t *god;
|
||||||
// druids always worship ekrub
|
|
||||||
god = findgod(R_GODNATURE);
|
god = findgod(R_GODNATURE);
|
||||||
addflag(god->flags, F_PRAYEDTO, B_TRUE, NA, NA, NULL);
|
addflag(god->flags, F_PRAYEDTO, B_TRUE, NA, NA, NULL);
|
||||||
}
|
}
|
||||||
|
@ -9320,18 +9328,38 @@ void givesubjob(lifeform_t *lf, enum SUBJOB sj) {
|
||||||
case SJ_AIRMAGE:
|
case SJ_AIRMAGE:
|
||||||
addflag(lf->flags, F_CANSEETHROUGHMAT, MT_GAS, NA, NA, NULL);
|
addflag(lf->flags, F_CANSEETHROUGHMAT, MT_GAS, NA, NA, NULL);
|
||||||
sb1 = addob(lf->pack, "spellbook of air magic");
|
sb1 = addob(lf->pack, "spellbook of air magic");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(2,4), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_AIR, 1, lf->level, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SJ_ICEMAGE:
|
case SJ_ICEMAGE:
|
||||||
sb1 = addob(lf->pack, "spellbook of cold magic");
|
sb1 = addob(lf->pack, "spellbook of cold magic");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(2,4), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_COLD, 1, lf->level, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SJ_FIREMAGE:
|
case SJ_FIREMAGE:
|
||||||
sb1 = addob(lf->pack, "spellbook of fire magic");
|
sb1 = addob(lf->pack, "spellbook of fire magic");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(2,4), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_FIRE, 1, lf->level, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SJ_NECROMANCER:
|
case SJ_NECROMANCER:
|
||||||
sb1 = addob(lf->pack, "spellbook of necromancy");
|
sb1 = addob(lf->pack, "spellbook of necromancy");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(2,4), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_DEATH, 1, lf->level, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SJ_WILDMAGE:
|
case SJ_WILDMAGE:
|
||||||
sb1 = addob(lf->pack, "spellbook of wild magic");
|
sb1 = addob(lf->pack, "spellbook of wild magic");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(2,4), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_WILD, 1, lf->level, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// warrior types
|
// warrior types
|
||||||
case SJ_BATTLEMAGE:
|
case SJ_BATTLEMAGE:
|
||||||
|
@ -9340,10 +9368,18 @@ void givesubjob(lifeform_t *lf, enum SUBJOB sj) {
|
||||||
case 1:
|
case 1:
|
||||||
giveskilllev(lf, SK_SS_FIRE, PR_NOVICE);
|
giveskilllev(lf, SK_SS_FIRE, PR_NOVICE);
|
||||||
sb1 = addob(lf->pack, "spellbook of fire magic");
|
sb1 = addob(lf->pack, "spellbook of fire magic");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(1,2), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_FIRE, 1, 3, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
giveskilllev(lf, SK_SS_COLD, PR_NOVICE);
|
giveskilllev(lf, SK_SS_COLD, PR_NOVICE);
|
||||||
sb1 = addob(lf->pack, "spellbook of cold magic");
|
sb1 = addob(lf->pack, "spellbook of cold magic");
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(1,2), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_COLD, 1, 3, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// can learn some spell schools, but only up to adept level
|
// can learn some spell schools, but only up to adept level
|
||||||
|
@ -9399,6 +9435,11 @@ void givesubjob(lifeform_t *lf, enum SUBJOB sj) {
|
||||||
}
|
}
|
||||||
// remove warrior's level abilities
|
// remove warrior's level abilities
|
||||||
killflagsofid(lf->flags, F_LEVABIL);
|
killflagsofid(lf->flags, F_LEVABIL);
|
||||||
|
// monster spells
|
||||||
|
if (!isplayer(lf)) {
|
||||||
|
addflag(lf->flags, F_RNDSPELLCOUNT, rnd(2,4), NA, NA, NULL);
|
||||||
|
addflag(lf->flags, F_RNDSPELLSCHOOL, SS_LIFE, 1, 6, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SJ_SCOURGE:
|
case SJ_SCOURGE:
|
||||||
addtempflag(lf->flags, F_RESISTMAG, 5, NA, NA, NULL, FROMJOB);
|
addtempflag(lf->flags, F_RESISTMAG, 5, NA, NA, NULL, FROMJOB);
|
||||||
|
@ -12133,7 +12174,6 @@ lifeform_t *real_addlf(cell_t *cell, enum RACE rid, int level, int controller) {
|
||||||
|
|
||||||
setrace(a, rid, B_FALSE);
|
setrace(a, rid, B_FALSE);
|
||||||
|
|
||||||
|
|
||||||
// now do everything which must occur AFTER setting the race:
|
// now do everything which must occur AFTER setting the race:
|
||||||
|
|
||||||
// remember original attribs so that if we are polymorphed, we're
|
// remember original attribs so that if we are polymorphed, we're
|
||||||
|
@ -13023,6 +13063,77 @@ void autoskill(lifeform_t *lf) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// hand out random spells to monsters
|
||||||
|
void autospells(lifeform_t *lf, int howmany) {
|
||||||
|
int nretflags,i,nposs = 0;
|
||||||
|
flag_t *retflag[MAXCANDIDATES];
|
||||||
|
enum OBTYPE poss[MAXCANDIDATES];
|
||||||
|
int powerposs[MAXCANDIDATES];
|
||||||
|
int mapdiff;
|
||||||
|
|
||||||
|
mapdiff = getmapdifficulty(lf->cell->map);
|
||||||
|
|
||||||
|
// get list of possible random spells for this lf.
|
||||||
|
// set random spells?
|
||||||
|
getflags(lf->flags, retflag, &nretflags, F_RNDSPELLPOSS, F_NONE);
|
||||||
|
for (i = 0; i < nretflags; i++) {
|
||||||
|
poss[nposs] = retflag[i]->val[0];
|
||||||
|
texttospellopts(retflag[i]->text, "pw:", &powerposs[nposs], NULL);
|
||||||
|
nposs++;
|
||||||
|
}
|
||||||
|
// random spells from schools?
|
||||||
|
getflags(lf->flags, retflag, &nretflags, F_RNDSPELLSCHOOL, F_NONE);
|
||||||
|
for (i = 0; i < nretflags; i++) {
|
||||||
|
int min,max;
|
||||||
|
enum SPELLSCHOOL ss;
|
||||||
|
int thispower;
|
||||||
|
objecttype_t *sp;
|
||||||
|
ss = retflag[i]->val[0];
|
||||||
|
min = retflag[i]->val[1];
|
||||||
|
max = retflag[i]->val[2];
|
||||||
|
texttospellopts(retflag[i]->text, "pw:", &thispower, NULL);
|
||||||
|
for (sp = objecttype; sp ; sp = sp->next) {
|
||||||
|
if ((sp->obclass->id == OC_SPELL) && spellokformonsters(sp->id)) {
|
||||||
|
int lev;
|
||||||
|
lev = getspelllevel(sp->id);
|
||||||
|
if (spellisfromschool(sp->id, ss) &&
|
||||||
|
(lev >= min) && (lev <= max)) {
|
||||||
|
poss[nposs] = sp->id;
|
||||||
|
powerposs[nposs] = thispower;
|
||||||
|
nposs++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// power = 0 means select it based on depth
|
||||||
|
for (i = 0 ; i < nposs; i++) {
|
||||||
|
if (powerposs[nposs] == 0) {
|
||||||
|
powerposs[nposs] = mapdiff;
|
||||||
|
limit(&(powerposs[nposs]), 1, getspellmaxpower(poss[nposs]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now we have a list of all possible spells. select from these.
|
||||||
|
for (i = 0; (i < howmany) && nposs; i++) {
|
||||||
|
int sel,n;
|
||||||
|
enum OBTYPE spellid;
|
||||||
|
char pwbuf[BUFLEN];
|
||||||
|
sel = rnd(0,nposs-1);
|
||||||
|
spellid = poss[sel];
|
||||||
|
sprintf(pwbuf, "pw:%d;",powerposs[sel]);
|
||||||
|
//addflag(lf->flags, F_CANCAST, sel, NA, NA, pwbuf);
|
||||||
|
addflag(lf->flags, F_CANWILL, spellid, NA, NA, pwbuf);
|
||||||
|
// remove this one...
|
||||||
|
for (n = sel; n < nposs-1; n++) {
|
||||||
|
poss[n] = poss[n+1];
|
||||||
|
powerposs[n] = powerposs[n+1];
|
||||||
|
}
|
||||||
|
nposs--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void autotarget(lifeform_t *lf) {
|
void autotarget(lifeform_t *lf) {
|
||||||
object_t *gun;
|
object_t *gun;
|
||||||
lifeform_t *targ = NULL,*newtarg = NULL;
|
lifeform_t *targ = NULL,*newtarg = NULL;
|
||||||
|
@ -15321,6 +15432,7 @@ void preparecorpse(lifeform_t *lf, object_t *corpse) {
|
||||||
if (isplayer(lf) && (corpse->pile->owner == lf)) {
|
if (isplayer(lf) && (corpse->pile->owner == lf)) {
|
||||||
// add flag _before_ getting the name
|
// add flag _before_ getting the name
|
||||||
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
||||||
|
killflagsofid(corpse->flags, F_FROZEN);
|
||||||
getobname(corpse, obname, corpse->amt);
|
getobname(corpse, obname, corpse->amt);
|
||||||
msgnocap("%c - %s.", corpse->letter, obname);
|
msgnocap("%c - %s.", corpse->letter, obname);
|
||||||
} else if (isplayer(lf)) {
|
} else if (isplayer(lf)) {
|
||||||
|
@ -15328,6 +15440,7 @@ void preparecorpse(lifeform_t *lf, object_t *corpse) {
|
||||||
getobname(corpse, obname, corpse->amt);
|
getobname(corpse, obname, corpse->amt);
|
||||||
msg("You cook %s.", obname);
|
msg("You cook %s.", obname);
|
||||||
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
||||||
|
killflagsofid(corpse->flags, F_FROZEN);
|
||||||
} else if (cansee(player, lf)) {
|
} else if (cansee(player, lf)) {
|
||||||
char lfname[BUFLEN];
|
char lfname[BUFLEN];
|
||||||
// add flag after getting the name
|
// add flag after getting the name
|
||||||
|
@ -15335,8 +15448,10 @@ void preparecorpse(lifeform_t *lf, object_t *corpse) {
|
||||||
getobname(corpse, obname, corpse->amt);
|
getobname(corpse, obname, corpse->amt);
|
||||||
msg("%s cooks %s.", obname);
|
msg("%s cooks %s.", obname);
|
||||||
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
||||||
|
killflagsofid(corpse->flags, F_FROZEN);
|
||||||
} else {
|
} else {
|
||||||
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
addflag(corpse->flags, F_PREPARED, B_TRUE, NA, NA, NULL);
|
||||||
|
killflagsofid(corpse->flags, F_FROZEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15516,7 +15631,7 @@ void refreshlevelabilities(lifeform_t *lf) {
|
||||||
int i;
|
int i;
|
||||||
flag_t *retflag[MAXCANDIDATES];
|
flag_t *retflag[MAXCANDIDATES];
|
||||||
int nretflags;
|
int nretflags;
|
||||||
getflags(lf->flags, retflag, &nretflags, F_LEVABIL, F_LEVFLAG, F_LEVSPELL, F_LEVSPELLSCHOOL, F_LEVSKILL, F_NONE);
|
getflags(lf->flags, retflag, &nretflags, F_LEVABIL, F_LEVFLAG, F_LEVSPELL, F_LEVSPELLSCHOOL, F_LEVSPELLSCHOOLFROMX, F_LEVSKILL, F_NONE);
|
||||||
for (i = 0; i < nretflags; i++) {
|
for (i = 0; i < nretflags; i++) {
|
||||||
f = retflag[i];
|
f = retflag[i];
|
||||||
// we'll set timeleft to -1 while actually assigning these.
|
// we'll set timeleft to -1 while actually assigning these.
|
||||||
|
@ -15526,6 +15641,7 @@ void refreshlevelabilities(lifeform_t *lf) {
|
||||||
case F_LEVSKILL:
|
case F_LEVSKILL:
|
||||||
case F_LEVSPELL:
|
case F_LEVSPELL:
|
||||||
case F_LEVSPELLSCHOOL:
|
case F_LEVSPELLSCHOOL:
|
||||||
|
case F_LEVSPELLSCHOOLFROMX:
|
||||||
f->lifetime = FROMJOB;
|
f->lifetime = FROMJOB;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -19972,6 +20088,12 @@ int validateraces(void) {
|
||||||
|
|
||||||
}
|
}
|
||||||
for (f = r->flags->first ; f ; f = f->next) {
|
for (f = r->flags->first ; f ; f = f->next) {
|
||||||
|
if (f->id == F_RNDSPELLCOUNT) {
|
||||||
|
if (!hasflag(r->flags, F_RNDSPELLSCHOOL) && !hasflag(r->flags, F_RNDSPELLPOSS)) {
|
||||||
|
printf("ERROR in race '%s' - F_RNDSPELLCOUNT but no spell candidates.\n", r->name);
|
||||||
|
goterror = B_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (f->id == F_HASATTACK) {
|
if (f->id == F_HASATTACK) {
|
||||||
if (!findot(f->val[0])) {
|
if (!findot(f->val[0])) {
|
||||||
printf("ERROR in race '%s' - F_HASATTACK with bad object.\n", r->name);
|
printf("ERROR in race '%s' - F_HASATTACK with bad object.\n", r->name);
|
||||||
|
|
1
lf.h
1
lf.h
|
@ -25,6 +25,7 @@ int askforinfo(lifeform_t *lf, int diffmod);
|
||||||
char *assignnpcname(lifeform_t *lf);
|
char *assignnpcname(lifeform_t *lf);
|
||||||
void autoshortcut(lifeform_t *lf, enum OBTYPE spellid);
|
void autoshortcut(lifeform_t *lf, enum OBTYPE spellid);
|
||||||
void autoskill(lifeform_t *lf);
|
void autoskill(lifeform_t *lf);
|
||||||
|
void autospells(lifeform_t *lf, int howmany);
|
||||||
void autotarget(lifeform_t *lf);
|
void autotarget(lifeform_t *lf);
|
||||||
void autoweild(lifeform_t *lf);
|
void autoweild(lifeform_t *lf);
|
||||||
int appearsrandomly(enum RACE rid);
|
int appearsrandomly(enum RACE rid);
|
||||||
|
|
47
map.c
47
map.c
|
@ -281,6 +281,7 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
if (f->id == F_STARTJOB) {
|
if (f->id == F_STARTJOB) {
|
||||||
if (rnd(1,100) <= f->val[0]) {
|
if (rnd(1,100) <= f->val[0]) {
|
||||||
job_t *j;
|
job_t *j;
|
||||||
|
enum SUBJOB wantsubjob;
|
||||||
if (f->val[1] == J_RANDOM) {
|
if (f->val[1] == J_RANDOM) {
|
||||||
job_t *j;
|
job_t *j;
|
||||||
j = getrandomjob(B_TRUE);
|
j = getrandomjob(B_TRUE);
|
||||||
|
@ -288,20 +289,29 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
} else {
|
} else {
|
||||||
wantjob = f->val[1];
|
wantjob = f->val[1];
|
||||||
}
|
}
|
||||||
|
// special case: wizards MUST have a subjob.
|
||||||
|
if (wantjob == J_WIZARD) {
|
||||||
|
wantsubjob = SJ_RANDOM;
|
||||||
|
} else {
|
||||||
|
wantsubjob = f->val[2];
|
||||||
|
}
|
||||||
givejob(lf, wantjob);
|
givejob(lf, wantjob);
|
||||||
|
|
||||||
j = findjob(wantjob);
|
j = findjob(wantjob);
|
||||||
// subjob ?
|
// subjob ?
|
||||||
if (j && (f->val[2] != NA)) {
|
if (j && (wantsubjob != NA)) {
|
||||||
// cope with random
|
// cope with random
|
||||||
if (f->val[2] == SJ_RANDOM) {
|
if (wantsubjob == SJ_RANDOM) {
|
||||||
// find a subjob which applies
|
// find a subjob which applies
|
||||||
flag_t *retflag[MAXCANDIDATES];
|
flag_t *retflag[MAXCANDIDATES];
|
||||||
int nretflags;
|
int nretflags;
|
||||||
|
|
||||||
|
getflags(j->flags, retflag, &nretflags, F_CANHAVESUBJOB, F_NONE);
|
||||||
if (nretflags) {
|
if (nretflags) {
|
||||||
givesubjob(lf, retflag[rnd(0,nretflags-1)]->val[0]);
|
givesubjob(lf, retflag[rnd(0,nretflags-1)]->val[0]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
givesubjob(lf, f->val[2]);
|
givesubjob(lf, wantsubjob);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -353,9 +363,10 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finalisemonster(lf, NULL, wantflags, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
finalisemonster(lf, NULL, wantflags, 0);
|
||||||
|
|
||||||
// NOTE: because the initial maps (world, heaven, dungeon lev1) are created BEFORE the player,
|
// NOTE: because the initial maps (world, heaven, dungeon lev1) are created BEFORE the player,
|
||||||
// monsters on these maps will not have their hostility adjusted!
|
// monsters on these maps will not have their hostility adjusted!
|
||||||
if (gamemode == GM_GAMESTARTED) {
|
if (gamemode == GM_GAMESTARTED) {
|
||||||
|
@ -515,7 +526,7 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
|
|
||||||
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
||||||
} // end if lf
|
} // end if lf
|
||||||
}
|
} // end if r
|
||||||
|
|
||||||
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
||||||
// free mem
|
// free mem
|
||||||
|
@ -1471,11 +1482,14 @@ int doelementspread(cell_t *c) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// flammable cell floor (and no doors, solid walls, etc)
|
// flammable cell floor (and no doors, solid walls, etc)
|
||||||
|
// just a small chance of spreading.
|
||||||
if (cellwalkable(NULL, retcell[i], NULL) && !hasobofmaterial(retcell[i]->obpile, MT_FIRE)) {
|
if (cellwalkable(NULL, retcell[i], NULL) && !hasobofmaterial(retcell[i]->obpile, MT_FIRE)) {
|
||||||
if (hasflag(retcell[i]->type->material->flags, F_FLAMMABLE)) {
|
if (hasflag(retcell[i]->type->material->flags, F_FLAMMABLE)) {
|
||||||
addobfast(retcell[i]->obpile, fireob->type->id);
|
if (onein(6)) {
|
||||||
nspread++;
|
addobfast(retcell[i]->obpile, fireob->type->id);
|
||||||
celldone = B_TRUE;
|
nspread++;
|
||||||
|
celldone = B_TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2536,6 +2550,10 @@ void createdungeon(map_t *map, int depth, map_t *parentmap, int exitdir, object_
|
||||||
|
|
||||||
|
|
||||||
// is the map lit?
|
// is the map lit?
|
||||||
|
/*
|
||||||
|
|
||||||
|
XXX: have removed this code for now as light recalc code is VERY slow.
|
||||||
|
|
||||||
if (depth <= 5) {
|
if (depth <= 5) {
|
||||||
map->illumination = IL_FULLLIT;
|
map->illumination = IL_FULLLIT;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2547,9 +2565,10 @@ void createdungeon(map_t *map, int depth, map_t *parentmap, int exitdir, object_
|
||||||
map->illumination = IL_FULLLIT;
|
map->illumination = IL_FULLLIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
map->illumination = IL_FULLLIT;
|
||||||
|
|
||||||
// random chance of different wall type
|
// random chance of different wall type
|
||||||
|
|
||||||
if (onein(6)) {
|
if (onein(6)) {
|
||||||
switch (rnd(1,3)) {
|
switch (rnd(1,3)) {
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -5301,6 +5320,10 @@ void finalisemonster(lifeform_t *lf, lifeform_t *leader, flagpile_t *wantflags,
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
enum FLAG noflag[MAXCANDIDATES];
|
enum FLAG noflag[MAXCANDIDATES];
|
||||||
int nnoflags = 0,i;
|
int nnoflags = 0,i;
|
||||||
|
int mapdiff;
|
||||||
|
|
||||||
|
mapdiff = getmapdifficulty(lf->cell->map)/2;
|
||||||
|
|
||||||
if (leader) {
|
if (leader) {
|
||||||
// if leader is asleep:
|
// if leader is asleep:
|
||||||
// for unintelligent monsters, minions will also be asleep
|
// for unintelligent monsters, minions will also be asleep
|
||||||
|
@ -5388,6 +5411,12 @@ void finalisemonster(lifeform_t *lf, lifeform_t *leader, flagpile_t *wantflags,
|
||||||
killflagsofid(lf->flags, F_FLYING);
|
killflagsofid(lf->flags, F_FLYING);
|
||||||
killflagsofid(lf->flags, F_HIDING);
|
killflagsofid(lf->flags, F_HIDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// automatic spells
|
||||||
|
f = hasflag(lf->flags, F_RNDSPELLCOUNT);
|
||||||
|
if (f) {
|
||||||
|
autospells(lf, f->val[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
celltype_t *findcelltype(enum CELLTYPE cid) {
|
celltype_t *findcelltype(enum CELLTYPE cid) {
|
||||||
|
|
1
move.c
1
move.c
|
@ -3367,6 +3367,7 @@ int willmove(lifeform_t *lf, int dir, enum ERROR *error) {
|
||||||
}
|
}
|
||||||
*bp = '\0';
|
*bp = '\0';
|
||||||
power = atoi(buf);
|
power = atoi(buf);
|
||||||
|
limit(&power, 1, NA);
|
||||||
if ( gethitdice(lf) <= power) {
|
if ( gethitdice(lf) <= power) {
|
||||||
if (error) *error = E_WONT;
|
if (error) *error = E_WONT;
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
|
|
12
nexus.c
12
nexus.c
|
@ -264,16 +264,18 @@ int main(int argc, char **argv) {
|
||||||
surfmap = addmap();
|
surfmap = addmap();
|
||||||
createmap(firstmap, 1, wregion, NULL, D_NONE, NULL);
|
createmap(firstmap, 1, wregion, NULL, D_NONE, NULL);
|
||||||
|
|
||||||
|
// create realm of gods - must do this first, so that
|
||||||
|
// gods get created because any temples.
|
||||||
|
hregion = findregionbytype(RG_HEAVEN);
|
||||||
|
assert(hregion);
|
||||||
|
heaven = addmap();
|
||||||
|
createmap(heaven, 1, hregion, NULL, D_NONE, NULL);
|
||||||
|
|
||||||
// create main dungeon
|
// create main dungeon
|
||||||
dregion = findregionbytype(RG_MAINDUNGEON);
|
dregion = findregionbytype(RG_MAINDUNGEON);
|
||||||
assert(dregion);
|
assert(dregion);
|
||||||
dmap = addmap();
|
dmap = addmap();
|
||||||
createmap(dmap, 1, dregion, firstmap, D_DOWN, NULL);
|
createmap(dmap, 1, dregion, firstmap, D_DOWN, NULL);
|
||||||
// create realm of gods
|
|
||||||
hregion = findregionbytype(RG_HEAVEN);
|
|
||||||
assert(hregion);
|
|
||||||
heaven = addmap();
|
|
||||||
createmap(heaven, 1, hregion, NULL, D_NONE, NULL);
|
|
||||||
|
|
||||||
|
|
||||||
// find staircase
|
// find staircase
|
||||||
|
|
15
objects.c
15
objects.c
|
@ -1262,11 +1262,16 @@ object_t *addobject(obpile_t *where, char *name, int canstack, int wantlinkholes
|
||||||
if (god) {
|
if (god) {
|
||||||
addflag(o->flags, F_LINKGOD, god->race->id, NA, NA, NULL);
|
addflag(o->flags, F_LINKGOD, god->race->id, NA, NA, NULL);
|
||||||
} else {
|
} else {
|
||||||
if (gamemode == GM_GAMESTARTED) {
|
// this should only ever happen when creating the
|
||||||
|
// surface map - because the realm of gods (and hence the
|
||||||
|
// gods themselves) won't exist yet.
|
||||||
|
// not a big deal, since abandoned temples on the surface
|
||||||
|
// fit the game theme anyway.
|
||||||
|
/*
|
||||||
msg("DB: created abandoned temple"); more();
|
msg("DB: created abandoned temple"); more();
|
||||||
dblog("DB: created abandoned temple");
|
dblog("DB: created abandoned temple");
|
||||||
raise(SIGINT);
|
raise(SIGINT);
|
||||||
}
|
*/
|
||||||
// abandoned tamples make no sound
|
// abandoned tamples make no sound
|
||||||
killflagsofid(o->flags, F_MAKESNOISE);
|
killflagsofid(o->flags, F_MAKESNOISE);
|
||||||
}
|
}
|
||||||
|
@ -3308,6 +3313,7 @@ objecttype_t *findotn(char *name) {
|
||||||
modname = strrep(modname, "rubies", "ruby", NULL);
|
modname = strrep(modname, "rubies", "ruby", NULL);
|
||||||
modname = strrep(modname, "scrolls ", "scroll ", NULL);
|
modname = strrep(modname, "scrolls ", "scroll ", NULL);
|
||||||
modname = strrep(modname, "sets ", "set ", NULL);
|
modname = strrep(modname, "sets ", "set ", NULL);
|
||||||
|
modname = strrep(modname, "sheets ", "sheet ", NULL);
|
||||||
modname = strrep(modname, "splashes ", "splash ", NULL);
|
modname = strrep(modname, "splashes ", "splash ", NULL);
|
||||||
modname = strrep(modname, "sprigs ", "sprig ", NULL);
|
modname = strrep(modname, "sprigs ", "sprig ", NULL);
|
||||||
modname = strrep(modname, "suits ", "suit ", NULL);
|
modname = strrep(modname, "suits ", "suit ", NULL);
|
||||||
|
@ -11930,7 +11936,7 @@ int real_fireat(lifeform_t *thrower, object_t *o, int amt, cell_t *where, int sp
|
||||||
char throwernamea[BUFLEN];
|
char throwernamea[BUFLEN];
|
||||||
char realthrowername[BUFLEN];
|
char realthrowername[BUFLEN];
|
||||||
char realthrowernamea[BUFLEN];
|
char realthrowernamea[BUFLEN];
|
||||||
char obname[BUFLEN];
|
char obname[BUFLEN],realobname[BUFLEN];
|
||||||
char targetname[BUFLEN];
|
char targetname[BUFLEN];
|
||||||
lifeform_t *target;
|
lifeform_t *target;
|
||||||
cell_t *srcloc;
|
cell_t *srcloc;
|
||||||
|
@ -11986,6 +11992,7 @@ int real_fireat(lifeform_t *thrower, object_t *o, int amt, cell_t *where, int sp
|
||||||
} else {
|
} else {
|
||||||
getobname(o, obname, amt);
|
getobname(o, obname, amt);
|
||||||
}
|
}
|
||||||
|
getobnametruebase(o, realobname, amt);
|
||||||
|
|
||||||
if (thrower) {
|
if (thrower) {
|
||||||
getlfname(thrower, throwername);
|
getlfname(thrower, throwername);
|
||||||
|
@ -12575,7 +12582,7 @@ int real_fireat(lifeform_t *thrower, object_t *o, int amt, cell_t *where, int sp
|
||||||
}
|
}
|
||||||
msg("^b%s", buf2);
|
msg("^b%s", buf2);
|
||||||
}
|
}
|
||||||
snprintf(damstring, BUFLEN, "%s (%s by %s)",obname,throwverbpast, realthrowernamea);
|
snprintf(damstring, BUFLEN, "%s (%s by %s)",realobname,throwverbpast, realthrowernamea);
|
||||||
|
|
||||||
reduceamt = getarmourdamreduction(target, o, dam, DT_PROJECTILE);
|
reduceamt = getarmourdamreduction(target, o, dam, DT_PROJECTILE);
|
||||||
|
|
||||||
|
|
121
spell.c
121
spell.c
|
@ -6442,7 +6442,7 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
|
||||||
// how many body parts are impacted?
|
// how many body parts are impacted?
|
||||||
exposedlimbs = getexposedlimbs(target);
|
exposedlimbs = getexposedlimbs(target);
|
||||||
|
|
||||||
dam = rolldie(exposedlimbs, 3);
|
dam = rolldie(exposedlimbs, 4);
|
||||||
|
|
||||||
if (isplayer(target)) {
|
if (isplayer(target)) {
|
||||||
if (isimmuneto(target->flags, DT_COLD, B_FALSE)) {
|
if (isimmuneto(target->flags, DT_COLD, B_FALSE)) {
|
||||||
|
@ -6662,68 +6662,67 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
|
||||||
if ((spellid == OT_S_HEALINGMIN) && donesomething) {
|
if ((spellid == OT_S_HEALINGMIN) && donesomething) {
|
||||||
// minor healing will stop here
|
// minor healing will stop here
|
||||||
} else {
|
} else {
|
||||||
if (target->hp < target->maxhp) {
|
int min,max,amt;
|
||||||
int min,max,amt;
|
switch (spellid) {
|
||||||
switch (spellid) {
|
case OT_S_HEALINGMIN:
|
||||||
case OT_S_HEALINGMIN:
|
default:
|
||||||
default:
|
min = 1; max = 10;
|
||||||
min = 1; max = 10;
|
break;
|
||||||
break;
|
case OT_S_HEALING:
|
||||||
case OT_S_HEALING:
|
min = 10; max = 20;
|
||||||
min = 10; max = 20;
|
break;
|
||||||
break;
|
case OT_S_HEALINGMAJ:
|
||||||
case OT_S_HEALINGMAJ:
|
min = 20; max = 30;
|
||||||
min = 20; max = 30;
|
break;
|
||||||
break;
|
}
|
||||||
|
amt = getspellduration(min,max,blessed) + (power*2);
|
||||||
|
|
||||||
|
if (undead) {
|
||||||
|
losehp(target, amt, DT_HOLY, caster, "the power of healing");
|
||||||
|
if (isplayer(target) || cansee(player, target)) {
|
||||||
|
getlfname(target, buf);
|
||||||
|
msg("%s writhe%s in agony!", buf, isplayer(target) ? "" : "s");
|
||||||
}
|
}
|
||||||
amt = getspellduration(min,max,blessed) + (power*2);
|
} else if (target->hp < target->maxhp) {
|
||||||
if (!undead && lfhasflagval(target, F_POISONED, P_ROT, NA, NA, NULL)) {
|
if (!undead && lfhasflagval(target, F_POISONED, P_ROT, NA, NA, NULL)) {
|
||||||
amt /= 10;
|
amt /= 10;
|
||||||
}
|
}
|
||||||
if (amt > 0) {
|
if (amt > 0) {
|
||||||
if (undead) {
|
gainhp(target, amt);
|
||||||
losehp(target, amt, DT_HOLY, caster, "the power of healing");
|
if (isplayer(target)) {
|
||||||
if (isplayer(target) || cansee(player, target)) {
|
if (target->hp >= target->maxhp) {
|
||||||
getlfname(target, buf);
|
switch (spellid) {
|
||||||
msg("%s writhe%s in agony!", buf, isplayer(target) ? "" : "s");
|
case OT_S_HEALINGMIN:
|
||||||
}
|
msg("All of your scrapes and bruises are healed!");
|
||||||
} else {
|
break;
|
||||||
gainhp(target, amt);
|
case OT_S_HEALING:
|
||||||
if (isplayer(target)) {
|
default:
|
||||||
if (target->hp >= target->maxhp) {
|
msg("Your wounds close themselves!");
|
||||||
switch (spellid) {
|
break;
|
||||||
case OT_S_HEALINGMIN:
|
case OT_S_HEALINGMAJ:
|
||||||
msg("All of your scrapes and bruises are healed!");
|
msg("Your injuries are healed!");
|
||||||
break;
|
break;
|
||||||
case OT_S_HEALING:
|
}
|
||||||
default:
|
} else {
|
||||||
msg("Your wounds close themselves!");
|
switch (spellid) {
|
||||||
break;
|
case OT_S_HEALINGMIN:
|
||||||
case OT_S_HEALINGMAJ:
|
msg("Some of your scrapes and bruises are healed!");
|
||||||
msg("Your injuries are healed!");
|
break;
|
||||||
break;
|
case OT_S_HEALING:
|
||||||
}
|
default:
|
||||||
} else {
|
msg("Some of your wounds close themselves!");
|
||||||
switch (spellid) {
|
break;
|
||||||
case OT_S_HEALINGMIN:
|
case OT_S_HEALINGMAJ:
|
||||||
msg("Some of your scrapes and bruises are healed!");
|
msg("Your injuries are partially healed!");
|
||||||
break;
|
break;
|
||||||
case OT_S_HEALING:
|
|
||||||
default:
|
|
||||||
msg("Some of your wounds close themselves!");
|
|
||||||
break;
|
|
||||||
case OT_S_HEALINGMAJ:
|
|
||||||
msg("Your injuries are partially healed!");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (seenbyplayer) *seenbyplayer = B_TRUE;
|
|
||||||
} else if (haslos(player, target->cell)) {
|
|
||||||
getlfname(target, buf);
|
|
||||||
msg("%s looks healthier!", buf);
|
|
||||||
if (seenbyplayer) *seenbyplayer = B_TRUE;
|
|
||||||
}
|
}
|
||||||
} // end if undead
|
if (seenbyplayer) *seenbyplayer = B_TRUE;
|
||||||
|
} else if (haslos(player, target->cell)) {
|
||||||
|
getlfname(target, buf);
|
||||||
|
msg("%s looks healthier!", buf);
|
||||||
|
if (seenbyplayer) *seenbyplayer = B_TRUE;
|
||||||
|
}
|
||||||
donesomething = B_TRUE;
|
donesomething = B_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8686,7 +8685,6 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
|
||||||
} else if (spellid == OT_S_MIST) {
|
} else if (spellid == OT_S_MIST) {
|
||||||
object_t *o;
|
object_t *o;
|
||||||
|
|
||||||
targcell = getcellindir(caster->cell, caster->facing);
|
|
||||||
if (!targcell || targcell->type->solid) {
|
if (!targcell || targcell->type->solid) {
|
||||||
fizzle(caster);
|
fizzle(caster);
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
|
@ -12443,6 +12441,15 @@ int spellisfromschool(int spellid, enum SPELLSCHOOL school) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int spellokformonsters(int spellid) {
|
||||||
|
objecttype_t *sp;
|
||||||
|
sp = findot(spellid);
|
||||||
|
if (!sp) return B_FALSE;
|
||||||
|
if (hasflag(sp->flags, F_AICASTTOATTACK)) return B_TRUE;
|
||||||
|
if (hasflag(sp->flags, F_AICASTTOFLEE)) return B_TRUE;
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
// returns true if the spell was resisted.
|
// returns true if the spell was resisted.
|
||||||
int spellresisted(lifeform_t *target, lifeform_t *caster, int spellid, int power, int *seenbyplayer, int announce) {
|
int spellresisted(lifeform_t *target, lifeform_t *caster, int spellid, int power, int *seenbyplayer, int announce) {
|
||||||
char text[BUFLEN],buf[BUFLEN];
|
char text[BUFLEN],buf[BUFLEN];
|
||||||
|
|
1
spell.h
1
spell.h
|
@ -37,6 +37,7 @@ void pullobto(object_t *o, lifeform_t *lf);
|
||||||
int schoolappearsinbooks(enum SPELLSCHOOL ss);
|
int schoolappearsinbooks(enum SPELLSCHOOL ss);
|
||||||
void spellcloud(cell_t *srcloc, int radius, int ch, enum COLOUR col, enum OBTYPE sid, int power, int frompot, char *seetext, char *noseetext);
|
void spellcloud(cell_t *srcloc, int radius, int ch, enum COLOUR col, enum OBTYPE sid, int power, int frompot, char *seetext, char *noseetext);
|
||||||
int spellisfromschool(int spellid, enum SPELLSCHOOL school);
|
int spellisfromschool(int spellid, enum SPELLSCHOOL school);
|
||||||
|
int spellokformonsters(int spellid);
|
||||||
int spellresisted(lifeform_t *target, lifeform_t *caster, int spellid, int power, int *seenbyplayer, int announce);
|
int spellresisted(lifeform_t *target, lifeform_t *caster, int spellid, int power, int *seenbyplayer, int announce);
|
||||||
int stopspell(lifeform_t *caster, enum OBTYPE spellid);
|
int stopspell(lifeform_t *caster, enum OBTYPE spellid);
|
||||||
int stopallspells(lifeform_t *lf);
|
int stopallspells(lifeform_t *lf);
|
||||||
|
|
38
text.c
38
text.c
|
@ -1090,7 +1090,13 @@ char *getkillverb(lifeform_t *victim, object_t *wep, enum DAMTYPE damtype, int d
|
||||||
return "smite";
|
return "smite";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pct >= 70) {
|
if (getraceclass(victim) == RC_UNDEAD) {
|
||||||
|
// can't "kill" the undead
|
||||||
|
return "destroy";
|
||||||
|
}
|
||||||
|
|
||||||
|
// was 80
|
||||||
|
if (pct >= 100) {
|
||||||
if (damtype == DT_PIERCE) return "impale";
|
if (damtype == DT_PIERCE) return "impale";
|
||||||
if (damtype == DT_BASH) {
|
if (damtype == DT_BASH) {
|
||||||
if (isunconscious(victim)) {
|
if (isunconscious(victim)) {
|
||||||
|
@ -1101,23 +1107,29 @@ char *getkillverb(lifeform_t *victim, object_t *wep, enum DAMTYPE damtype, int d
|
||||||
}
|
}
|
||||||
if (damtype == DT_BITE) return "gore";
|
if (damtype == DT_BITE) return "gore";
|
||||||
if (damtype == DT_SLASH) {
|
if (damtype == DT_SLASH) {
|
||||||
if (!hasbp(victim, BP_HEAD)) {
|
skill_t *sk;
|
||||||
return "bisect";
|
int canbehead = B_TRUE;
|
||||||
} else {
|
if (wep) {
|
||||||
if ((getlfsize(victim) >= SZ_MEDIUM) && onein(3)) {
|
sk = getobskill(wep->flags);
|
||||||
return "behead";
|
if (sk->id == SK_SHORTBLADES) {
|
||||||
} else {
|
// short blades can't behead/bisect.
|
||||||
|
canbehead = B_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (canbehead) {
|
||||||
|
if (!hasbp(victim, BP_HEAD)) {
|
||||||
return "bisect";
|
return "bisect";
|
||||||
|
} else {
|
||||||
|
if ((getlfsize(victim) >= SZ_MEDIUM) && onein(3)) {
|
||||||
|
return "behead";
|
||||||
|
} else {
|
||||||
|
return "bisect";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getraceclass(victim) == RC_UNDEAD) {
|
|
||||||
// can't "kill" the undead
|
|
||||||
return "destroy";
|
|
||||||
}
|
|
||||||
|
|
||||||
// never use 'kill' for bashing since you might just knock them out
|
// never use 'kill' for bashing since you might just knock them out
|
||||||
if (damtype == DT_BASH) {
|
if (damtype == DT_BASH) {
|
||||||
return "clobber";
|
return "clobber";
|
||||||
|
@ -1750,6 +1762,8 @@ char *makeplural(char *text) {
|
||||||
if (rv) return newtext;
|
if (rv) return newtext;
|
||||||
newtext = strrep(newtext, "set ", "sets ", &rv);
|
newtext = strrep(newtext, "set ", "sets ", &rv);
|
||||||
if (rv) return newtext;
|
if (rv) return newtext;
|
||||||
|
newtext = strrep(newtext, "sheet ", "sheets ", &rv);
|
||||||
|
if (rv) return newtext;
|
||||||
newtext = strrep(newtext, "sprig ", "sprigs ", &rv);
|
newtext = strrep(newtext, "sprig ", "sprigs ", &rv);
|
||||||
if (rv) return newtext;
|
if (rv) return newtext;
|
||||||
newtext = strrep(newtext, "suit ", "suits ", &rv);
|
newtext = strrep(newtext, "suit ", "suits ", &rv);
|
||||||
|
|
3
vault.c
3
vault.c
|
@ -1672,7 +1672,8 @@ int vaultthingok(enum VAULTTHING vt, char *what) {
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
} else {
|
} else {
|
||||||
op = addobpile(NULL, NULL, NULL);
|
op = addobpile(NULL, NULL, NULL);
|
||||||
o = addob(op, what);
|
// disable linking of holes
|
||||||
|
o = addobject(op, what, B_TRUE, B_FALSE, OT_NONE);
|
||||||
if (o) {
|
if (o) {
|
||||||
killobpile(op);
|
killobpile(op);
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
|
|
Loading…
Reference in New Issue