- [+] still give mp to warriors, justnot much
- [+] more rare potions - too many exp potions at the moment. - [+] don't show dt resistances in io.c if you're immune - [+] more orcs - [+] make ork better - [+] grey orc - [+] invis - [+] confuse - [+] grand orc - [+] blood orc - [+] norc - [+] smitegood, darkness - [+] more goblins - [+] froglin (blowguns, jump) - [+] dusur (sand goblin) - [+] throw salt to blind - [+] go through walls (passwall) - [+] tunnel downards (dig) - [+] blowguns - [+] more veryrare food to dilute 4leaf clover - [+] curadough - filling, fullheal, lower metab - [+] psitruffle - give temp xp/skill boost. - [+] bug: two adjacent corpses, one catches on fire - [+] fire keeps going between them - [+] fix: fires don't burn out if there are adjacent fires with MORE hp - must be >, not >=. (they remain at 1hp) - [+] when fires spread, they get all their hp back. - [+] flaming objects don't expire if there is a fire object on top of them - [+] random alignments on monsters not working!!! - [+] test with lizardman. - [+] dispaly of skills not working...... - [+] we get: - [+] At Novice level: xxxxxxxxxxx - [+] : yyyyyyyyyyyyyyy - [+] should be: - [+] At Novice level: xxxxxxxxxxx - [+] : yyyyyyyyyyyyyyy - [+] makedesc_skill ok. - [+] it's when we print it from getchoicestr! - [+] ie. wrapprint() - [+] if strlen(word) == 0, print a " " - [+] kind of words... but now i'm getting twice the amount of spaces - [+] make readuntil_real which remembers the amount of delimeters seen - [+] if number of delims is > 1, then print them all. - [+] warn if you're good and attacking something helpless
This commit is contained in:
parent
3e5c718502
commit
df442e96d1
1
attack.c
1
attack.c
|
@ -222,6 +222,7 @@ int attackcell(lifeform_t *lf, cell_t *c, int force) {
|
|||
if ((isplayer(lf) || areallies(player, lf)) && (getalignment(lf) != AL_EVIL)) {
|
||||
killflagsofid(c->lf->flags, F_XPVAL);
|
||||
addflag(c->lf->flags, F_XPVAL, 0, NA, NA, NULL);
|
||||
real_warnabout(TEXT_WARN_NOXP_GOODVSPEACEFUL, PERMENANT, B_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
315
data.c
315
data.c
|
@ -701,7 +701,7 @@ void initjobs(void) {
|
|||
// also: has a hook instead of fists.
|
||||
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
||||
|
||||
addjob(J_ROGUE, "Rogue", "Rogues (sometimes known as \"thieves\") are criminals who are skilled in the appropriation of valuable goods. They can hide in the shadows, stab unsuspecting victims in the back and foil the most cunning traps.");
|
||||
addjob(J_ROGUE, "Rogue", "Rogues (AKA \"thieves\") are criminals who are skilled in the appropriation of valuable goods. They can hide in the shadows, stab unsuspecting victims in the back and foil the most cunning traps.");
|
||||
// stats
|
||||
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, -10, NA, NULL);
|
||||
addflag(lastjob->flags, F_JOBATTRMOD, A_AGI, 15, NA, NULL);
|
||||
|
@ -797,6 +797,7 @@ void initjobs(void) {
|
|||
addflag(lastjob->flags, F_CANLEARN, SK_TWOWEAPON, NA, NA, NULL);
|
||||
addflag(lastjob->flags, F_CANLEARN, SK_LORE_DRAGONS, PR_ADEPT, NA, NULL);
|
||||
// abilities
|
||||
addflag(lastjob->flags, F_MPDICE, 1, -1, NA, NULL);
|
||||
addflag(lastjob->flags, F_MAXHPMOD, 120, NA, NA, NULL);
|
||||
addflag(lastjob->flags, F_SELECTWEAPON, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastjob->flags, F_LEVABIL, 3, OT_A_HEAVYBLOW, NA, NULL);
|
||||
|
@ -2174,6 +2175,11 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_HOLDCONFER, F_EXTRALUCK, 1, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 300, NA, NA, "");
|
||||
killflagsofid(lastot->flags, F_STACKABLE);
|
||||
addot(OT_CURADOUGH, "loaf of curadough", "This very rare form of bread can magically heal whoever eats it, as well as lowering their metabolism for a short period afterwards.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY);
|
||||
addflag(lastot->flags, F_GLYPH, C_YELLOW, '%', NA, NULL);
|
||||
addflag(lastot->flags, F_EDIBLE, B_TRUE, 250, NA, "");
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_VERYRARE, NULL);
|
||||
addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some bread");
|
||||
addot(OT_BREADSTALE, "loaf of stale bread", "A small loaf of old, stale bread.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY);
|
||||
addflag(lastot->flags, F_GLYPH, C_BROWN, '%', NA, NULL);
|
||||
addflag(lastot->flags, F_EDIBLE, B_TRUE, 100, NA, "");
|
||||
|
@ -2238,6 +2244,10 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_GLYPH, C_BLUE, '%', NA, NULL);
|
||||
addflag(lastot->flags, F_EDIBLE, B_TRUE, 1, NA, "");
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL);
|
||||
addot(OT_PSITRUFFLE, "psitruffle", "Psitruffles are extremely rare forms of truffle which can unlock potentials within a living brain. Eating one will double all experience earned for a short period thereafter.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY);
|
||||
addflag(lastot->flags, F_GLYPH, C_MAGENTA, '%', NA, NULL);
|
||||
addflag(lastot->flags, F_EDIBLE, B_TRUE, 250, NA, "");
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_VERYRARE, NULL);
|
||||
addot(OT_ROASTMEAT, "chunk of roast meat", "A chunk of flame-roasted flesh.", MT_FLESH, 1, OC_FOOD, SZ_TINY); // weight normally comes from corpse type
|
||||
addflag(lastot->flags, F_GLYPH, C_BROWN, '%', NA, NULL);
|
||||
addflag(lastot->flags, F_EDIBLE, B_TRUE, 100, NA, "");
|
||||
|
@ -2290,7 +2300,7 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 45, NA, NA, NULL);
|
||||
addot(OT_POT_JUICE, "potion of fruit juice", "Tasty (but not very fresh) fruit juice! Sates hunger and restores a little stamina.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 10, NA, NA, NULL);
|
||||
addot(OT_POT_CANINETRACKING, "potion of canine tracking", "Mimics the effects of a 'canine tracking' spell.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||
|
@ -2299,7 +2309,7 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_VALUE, 50, NA, NA, NULL);
|
||||
|
||||
addot(OT_POT_HEALINGMIN, "potion of minor healing", "Restores 1-10 health to whoever drinks it.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 30, NA, NA, NULL);
|
||||
addot(OT_POT_WATER, "potion of water", "Plain, regular water.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
|
@ -2309,25 +2319,25 @@ void initobjects(void) {
|
|||
modflag(lastot->flags, F_HASHIDDENNAME, NA, NA, NA, "clear potion");
|
||||
addflag(lastot->flags, F_VALUE, 5, NA, NA, NULL);
|
||||
addot(OT_POT_HEALING, "potion of healing", "Restores 10-20 health to whoever drinks it.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 90, NA, NA, NULL);
|
||||
addot(OT_POT_HEALINGMAJ, "potion of major healing", "Restores 20-30 health to whoever drinks it.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 120, NA, NA, NULL);
|
||||
addot(OT_POT_OIL, "potion of oil", "A bottle of cooking oil.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "puddle of oil");
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_EXPLODEONDAM, DT_FIRE, NA, NA, "2d4");
|
||||
addflag(lastot->flags, F_VALUE, 15, NA, NA, NULL);
|
||||
addot(OT_POT_COFFEE, "potion of coffee", "A caffeinated beverage prepared from coffee beans.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 10, NA, NA, NULL);
|
||||
addot(OT_POT_RUM, "potion of rum", "Strong liqour which is sure to make you tipsy. This will make you unsteady and lower your accuracy, but also let you ignore pain, minor damage, and many mental attacks.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_FLAMMABLE, 1, NA, NA, "medium fire");
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, NULL);
|
||||
|
@ -2336,56 +2346,56 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_PURIFIESTO, OT_POT_WATER, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 15, NA, NA, NULL);
|
||||
addot(OT_POT_RESTORATION, "potion of restoration", "Restores lost abilities to the drinker.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 170, NA, NA, NULL);
|
||||
addot(OT_POT_SLEEP, "potion of sleep", "Puts the drinker into a deep sleep.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_BADOBJECT, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 80, NA, NA, NULL);
|
||||
addot(OT_POT_SPEED, "potion of haste", "Temporarily increasees the drinker's speed.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 150, NA, NA, NULL);
|
||||
addot(OT_POT_LEVITATION, "potion of levitation", "Causes the drinker to float up in the air.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 150, NA, NA, NULL);
|
||||
addot(OT_POT_MAGIC, "potion of magic", "Fully restores the drinker's magical energy.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 60, NA, NA, NULL);
|
||||
addot(OT_POT_ACROBATICS, "potion of acrobatics", "Allows the drinker to leap large distances.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 45, NA, NA, NULL);
|
||||
addot(OT_POT_INVIS, "potion of invisibility", "Temporarily renders the drinker invisible.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 70, NA, NA, NULL);
|
||||
addot(OT_POT_POISON, "potion of poison", "Poisons the drinker.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_BADOBJECT, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_PURIFIESTO, OT_POT_WATER, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 25, NA, NA, NULL);
|
||||
addot(OT_POT_ACID, "flask of acid", "Causes massive internal burning if ingested.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 80, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "puddle of acid");
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_BADOBJECT, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_PURIFIESTO, OT_POT_WATER, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 25, NA, NA, NULL);
|
||||
addot(OT_POT_ELEMENTIMMUNE, "potion of elemental immunity", "Grants the imbiber temporary immunity to both fire and cold.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 75, NA, NA, NULL);
|
||||
addot(OT_POT_BLOOD, "potion of blood", "A small quantity of blood.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "splash of blood");
|
||||
addflag(lastot->flags, F_VALUE, 15, NA, NA, NULL);
|
||||
addot(OT_POT_SANCTUARY, "potion of sanctuary", "Creates a temporary magical barrier abour the drinker.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 75, NA, NA, NULL);
|
||||
|
||||
|
@ -2393,39 +2403,39 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_RARITY, H_ALL, 70, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 140, NA, NA, NULL);
|
||||
addot(OT_POT_EXPERIENCE, "potion of experience", "Instantly grants the imbiber the next experience level.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_VERYRARE, NULL);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, 40, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 410, NA, NA, NULL);
|
||||
|
||||
addot(OT_POT_BLOODC, "potion of cockatrice blood", "A small quantity of cockatrice blood.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "splash of cockatrice blood");
|
||||
addflag(lastot->flags, F_VALUE, 35, NA, NA, NULL);
|
||||
|
||||
addot(OT_POT_COMPETENCE, "potion of competence", "Permemantly increases the drinker's base attribites (Strength, IQ, etc).", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, RR_VERYRARE, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 160, NA, NA, NULL);
|
||||
|
||||
addot(OT_POT_FURY, "potion of fury", "Causes the drinker to enter a state of berzerk rage.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 70, NA, NA, NULL);
|
||||
addot(OT_POT_GASEOUSFORM, "potion of gaseous form", "Turns the drinker into a cloud of gas. Only intended for emergencies, since it will cause you to drop all your items.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_VERYRARE, NULL);
|
||||
addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 120, NA, NA, NULL);
|
||||
|
||||
addot(OT_POT_POLYMORPH, "potion of polymorph self", "Transmutes the drinker into another living race.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 120, NA, NA, NULL);
|
||||
addot(OT_POT_INVULN, "potion of invulnerability", "Grants the drinker temporary immunity to physical harm.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, RR_VERYRARE, NA, NULL);
|
||||
addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 200, NA, NA, NULL);
|
||||
addot(OT_POT_AMBROSIA, "vial of ambrosia", "The nectar of the gods, said to completely restore the drinker's health.", MT_GLASS, 1, OC_POTION, SZ_TINY);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_VALUE, 220, NA, NA, NULL);
|
||||
|
||||
|
@ -3702,6 +3712,7 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the caster can wait before entering a wall.");
|
||||
addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL);
|
||||
addot(OT_S_ANIMATESTATUE, "animate statue", "Temporarily brings a statue to life, under control of the caster. Also stops stoning.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
||||
|
@ -7045,9 +7056,25 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||
|
||||
// projectile weapons
|
||||
addot(OT_BLOWGUN, "blowgun", "A thin reed tube which employs the user's breath to propel darts at high speed.", MT_PLANT, 0.5, OC_WEAPON, SZ_SMALL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_SWAMP, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_FIRESPEED, 4, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_RANGE, 5, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AMMOOB, OT_DART, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AMMOOB, OT_DARTNANO, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AMMOOB, OT_DARTTRANQ, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_AMMOCAPACITY, 1, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL);
|
||||
|
||||
|
||||
addot(OT_BOW, "short bow", "A weapon which projects arrows via its elasticity.", MT_WOOD, 5, OC_WEAPON, SZ_MEDIUM);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_FIRESPEED, 6, NA, NA, NULL);
|
||||
|
@ -7060,8 +7087,8 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||
|
||||
addot(OT_CROSSBOW, "crossbow", "A standard crossbow. Very powerful, but slow to reload and needs high strength to use.", MT_WOOD, 8, OC_WEAPON, SZ_MEDIUM);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_FIRESPEED, 10, NA, NA, NULL);
|
||||
|
@ -7073,8 +7100,8 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_ATTREQ, A_STR, 75, NA, NULL);
|
||||
|
||||
addot(OT_CROSSBOWHAND, "hand crossbow", "A small wrist-mounted crossbow. Less powerful and accurate than its full-sized sibling, the hand crossbow's primary strength is its ability to fire multiple shots before reloading.", MT_WOOD, 3, OC_WEAPON, SZ_SMALL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_FIRESPEED, 5, NA, NA, NULL);
|
||||
|
@ -7085,8 +7112,8 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL);
|
||||
|
||||
addot(OT_LONGBOW, "longbow", "A very large (human-sized) bow, capable of firing arrows with great power.", MT_WOOD, 7, OC_WEAPON, SZ_MEDIUM);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_FIRESPEED, 8, NA, NA, NULL);
|
||||
|
@ -7098,8 +7125,8 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, NA, NULL);
|
||||
|
||||
addot(OT_REVOLVER, "revolver", "Basic one-handed firearm.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 60, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
//addflag(lastot->flags, F_DAMTYPE, DT_BASH, NA, NA, NULL);
|
||||
|
@ -7113,8 +7140,8 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_RELOADTURNS, 2, NA, NA, NULL);
|
||||
|
||||
addot(OT_SHOTGUN, "shotgun", "Powerful but short-ranged gun.", MT_METAL, 5, OC_WEAPON, SZ_MEDIUM);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 60, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_RARE, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||
|
@ -7126,8 +7153,8 @@ void initobjects(void) {
|
|||
addflag(lastot->flags, F_RELOADTURNS, 3, NA, NA, NULL);
|
||||
|
||||
addot(OT_SLING, "sling", "Stretchy piece of rubber for launching projectiles.", MT_RUBBER, 0.5, OC_WEAPON, SZ_SMALL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 80, NA, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, RR_COMMON, NULL);
|
||||
addflag(lastot->flags, F_FIREARM, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastot->flags, F_FIRESPEED, 4, NA, NA, NULL);
|
||||
|
@ -8623,6 +8650,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_CANINE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_FATALFOOD, OT_CHOCOLATE, NA, NA, NULL);
|
||||
|
||||
|
||||
addrace(R_GOBLIN, "goblin", 25, 'g', C_BROWN, MT_FLESH, RC_HUMANOID, "Small humanoids with flat faces, broad noses, pointed ears, and small, sharp fangs.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
|
@ -8657,6 +8685,88 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
||||
|
||||
addrace(R_GOBLINR, "froglin", 25, 'g', C_BLUE, MT_FLESH, RC_HUMANOID, "River goblins (more commonly known as 'froglins') are blueish goblins with sleek, leathery skin. They seems constantly wet, and can leap like a frog.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, 87, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_CAVE, 100, RR_FREQUENT, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_FOREST, 80, RR_COMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_SWAMP, 100, RR_COMMON, NULL);
|
||||
addflag(lastrace->flags, F_BREATHWATER, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_AQUATIC, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+3");
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_EVASION, 10, 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_HASATTACK, OT_CLAWS, 4, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_GTAVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "trident");
|
||||
addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "blowgun");
|
||||
f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "1-3 tranquiliser darts");
|
||||
addcondition(f, FC_NOCONDITION, 50);
|
||||
addaltval(f, F_STARTOB, 100, NA, NA, "1-3 darts");
|
||||
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_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_A_JUMP, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_A_FEIGNDEATH, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_AUTOCREATEOB, 0, NA, NA, "large puddle of water");
|
||||
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
||||
addflag(lastrace->flags, F_SEEINDARK, 2, 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_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_SWIMMING, PR_MASTER, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
||||
|
||||
addrace(R_GOBLINS, "dusur", 25, 'g', C_RED, MT_FLESH, RC_HUMANOID, "The red-skinned Dusur (or 'sand goblins') are tribal goblins commonly found in deserts or other sandy regions. They possess an uncanny level of stealth, seemingly able to meld into the very earth itself.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, 87, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_CAVE, 100, RR_COMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_FOREST, 80, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+3");
|
||||
addflag(lastrace->flags, F_EVASION, 10, 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_HASATTACK, OT_CLAWS, 6, NA, NULL);
|
||||
addflag(lastrace->flags, F_NUMAPPEAR, 2, 4, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_GTAVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "manriki");
|
||||
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "throwing net");
|
||||
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "pinch of salt");
|
||||
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_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_DIG, NA, NA, "pw:1;");
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_PASSWALL, NA, NA, "pw:5;");
|
||||
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_DIG, NA, NA, "burrows down into the ground");
|
||||
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
||||
addflag(lastrace->flags, F_DODGES, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_PACKATTACK, 2, DT_SLASH, 3, NULL);
|
||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_STEALTH, PR_EXPERT, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_THROWING, PR_SKILLED, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
||||
|
||||
|
||||
addrace(R_GOBLINWAR, "goblin warrior", 30, 'g', C_BROWN, MT_FLESH, RC_HUMANOID, "Goblin Warriors are uncommon goblins with sufficient mental control to ungergo formal combat training (rather than just hack away mindlessly at their foes).");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
lastrace->baseid = R_GOBLIN;
|
||||
|
@ -8799,7 +8909,6 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_RARITY, H_ALL, NA, RR_RARE, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4");
|
||||
addflag(lastrace->flags, F_NUMAPPEAR, 2, 4, NA, NULL);
|
||||
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_BREATHWATER, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_AQUATIC, B_TRUE, NA, NA, NULL);
|
||||
|
@ -8820,7 +8929,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_CANWILL, OT_S_GASEOUSFORM, NA, NA, "pw:3;");
|
||||
// gremlins also cause tech to fail around them.
|
||||
|
||||
addrace(R_HOBGOBLIN, "hobgoblin", 90, 'g', C_GREEN, 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.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
|
@ -8828,7 +8937,6 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_RARITY, H_CAVE, NA, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_FOREST, 73, RR_COMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_SWAMP, 73, RR_COMMON, NULL);
|
||||
addflag(lastrace->flags, F_NUMAPPEAR, 1, 2, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+3");
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 8, NA, NA, NULL);
|
||||
|
@ -8866,7 +8974,6 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_RARITY, H_CAVE, NA, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_FOREST, 60, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_SWAMP, 60, NA, NULL);
|
||||
addflag(lastrace->flags, F_NUMAPPEAR, 1, 2, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "7d4+3");
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 10, NA, NA, NULL);
|
||||
|
@ -9085,7 +9192,6 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-70 gold coins");
|
||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MINIONS, 50, 1, 5, "orc");
|
||||
addflag(lastrace->flags, F_MINIONS, 20, 1, 2, "orc warrior");
|
||||
addflag(lastrace->flags, F_MORALE, 20, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||
|
@ -9121,7 +9227,6 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MINIONS, 25, 1, 8, "orc");
|
||||
addflag(lastrace->flags, F_MINIONS, 25, 1, 2, "orc warrior");
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANEATRAW, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_EATCONFER, F_ATTRMOD, A_STR, 5, "75");
|
||||
|
@ -9163,7 +9268,64 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_STARTJOB, 25, J_WARRIOR, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTJOB, 25, J_GUARD, NA, NULL);
|
||||
|
||||
addrace(R_ORK, "ork", 90, 'o', C_BROWN, MT_FLESH, RC_HUMANOID, "Orcs who have become fascinated with technology tend to become shunned by their peers, and have taken the name 'Orks' for themselves.");
|
||||
addrace(R_ORCGREY, "grey orc", 90, 'o', C_GREY, MT_FLESH, RC_HUMANOID, "Grey orcs are mysterious cousins of the orc family. With tattoos covering their grey pallid skin, they command strange magical arts against their prey.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, RR_RARE, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_CAVE, 100, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_FOREST, 80, RR_RARE, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_SWAMP, 80, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+3");
|
||||
addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 5, 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_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 4, NA, NULL);
|
||||
f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "enchanter staff");
|
||||
addcondition(f, FC_NOCONDITION, 50);
|
||||
addaltval(f, F_STARTOBWEPSK, 50, NA, NA, "sorcerer staff");
|
||||
addflag(lastrace->flags, F_STARTOBCLASS, 80, OC_POTION, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTOBCLASS, 60, OC_POTION, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTOBCLASS, 40, OC_POTION, NA, NULL);
|
||||
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_SEEINDARK, 4, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_DISORIENT, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_BAFFLE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 10, 10, "pw:1;");
|
||||
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_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 13, NA, NA, NULL);
|
||||
|
||||
addrace(R_ORCN, "norc", 90, 'o', C_BLUE, MT_FLESH, RC_HUMANOID, "While all orcs prefer the darkness, night orcs (or 'norcs') can actually _create_ it, spewing darkness from their bodies and blotting out all that is good and holy.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_CAVE, 100, RR_COMMON, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_SWAMP, 80, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+3");
|
||||
addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 5, 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_STARTATT, A_IQ, AT_GTAVERAGE, 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_SEEINDARK, UNLIMITED, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_SMITEGOOD, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_S_DARKNESS, NA, NA, "pw:8;");
|
||||
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_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 13, NA, NA, NULL);
|
||||
|
||||
addrace(R_ORK, "ork", 90, 'o', C_GREEN, MT_FLESH, RC_HUMANOID, "Orcs who have become fascinated with technology tend to become shunned by their peers, and have taken the name 'Orks' for themselves.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "orc corpse");
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
|
@ -9171,10 +9333,10 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, 81, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_CAVE, 81, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_FOREST, 81, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+3");
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+3");
|
||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 4, NA, NULL);
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 8, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTOBDT, 100, DT_SLASH, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTOBDT, 30, DT_BASH, NA, NULL);
|
||||
|
@ -9195,6 +9357,52 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
||||
|
||||
addrace(R_ORCB, "borc", 90, 'o', C_RED, MT_FLESH, RC_HUMANOID, "Blood orcs (or 'borcs') are larger and more muscled than standard orcs. When they enter a state of blood rage, they are feared even by their own kind.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_ALL, 80, RR_RARE, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4+3");
|
||||
addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 5, 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_STARTATT, A_STR, AT_HIGH, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 8, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
||||
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_CANWILL, OT_A_RAGE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_LOWHPABIL, OT_A_RAGE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_A_RAGE, NA, NA, "rakes its claws down its chest");
|
||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 16, NA, NA, NULL);
|
||||
|
||||
addrace(R_ORCGRAND, "gnorc", 120, 'o', C_MAGENTA, MT_FLESH, RC_HUMANOID, "Even more powerful than blood orcs, grand orcs (or 'gnorcs') are both extremely rare and extremely powerful.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_ALL, 80, RR_VERYRARE, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "7d4+3");
|
||||
addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_ARMOURRATING, 8, 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_STARTATT, A_STR, AT_EXHIGH, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 8, NA, NULL);
|
||||
addflag(lastrace->flags, F_MAXATTACKS, 2, 2, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout");
|
||||
addflag(lastrace->flags, F_SEEINDARK, 7, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL);
|
||||
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_MORALE, 20, NA, NA, NULL);
|
||||
|
||||
|
||||
addrace(R_CRYMIDIA, "crymidia", 10, 'e', C_WHITE, MT_ICE, RC_MAGIC, "A floating crystalline form, a crymidia is formed when a mass of crystal becomes sentient.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
|
@ -9471,7 +9679,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_FATALFOOD, OT_CHOCOLATE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_EATCONFER, F_CANSEETHROUGHMAT, MT_GAS, NA, "80");
|
||||
|
||||
addrace(R_SKOOB, "skoob", 40, 'm', C_WHITE, MT_ICE, RC_MAGIC, "Your typical snowman right down to the carrot nose, with just a two key differences: it is alive, and it is homocidal.");
|
||||
addrace(R_SKOOB, "skoob", 40, 'g', C_WHITE, MT_ICE, RC_MAGIC, "Your typical snowman right down to the carrot nose, with just a two key differences: it is alive, and it is homocidal.");
|
||||
setbodytype(lastrace, BT_HUMANOID);
|
||||
addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "carrot");
|
||||
addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, "puddle of water");
|
||||
|
@ -9479,7 +9687,7 @@ void initrace(void) {
|
|||
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
||||
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4");
|
||||
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||
|
@ -12606,7 +12814,6 @@ void initskills(void) {
|
|||
// spell schools
|
||||
addskill(SK_SS_ALLOMANCY, "Allomancy", "Boosts casting of spells from this school.", 50);
|
||||
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, "You gain knowledge of all Allomancy spells.", 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_ADEPT, "Allows you to cast Allomancy spells up to level 3.", B_FALSE);
|
||||
|
|
BIN
data/hiscores.db
BIN
data/hiscores.db
Binary file not shown.
14
defs.h
14
defs.h
|
@ -20,7 +20,8 @@
|
|||
#define TEXT_WARN_ATTACK_NOXP "You will not gain experience until you train. Really attack?"
|
||||
#define TEXT_WARN_CLIMB "Really attempt to climb without Climbing skill?"
|
||||
#define TEXT_WARN_FLY "Warning: while airborne you will not map your surroundings."
|
||||
#define TEXT_WARN_MUTABLE "(you can now gain abilities by eating corpses)"
|
||||
#define TEXT_WARN_MUTABLE "(you can now gain attributes by eating corpses)"
|
||||
#define TEXT_WARN_NOXP_GOODVSPEACEFUL "Warning: Good-aligned players gain no XP for peaceful kills."
|
||||
|
||||
// Defaults
|
||||
#define DEF_AIFOLLOWTIME (50) // if target lf is out of view
|
||||
|
@ -944,6 +945,8 @@ enum RACE {
|
|||
R_GNOLL,
|
||||
R_GNOLLHM,
|
||||
R_GOBLIN,
|
||||
R_GOBLINR,
|
||||
R_GOBLINS,
|
||||
R_GOBLINHEXER,
|
||||
R_GOBLINKING,
|
||||
R_GOBLINWAR,
|
||||
|
@ -958,8 +961,11 @@ enum RACE {
|
|||
R_OGRE,
|
||||
R_OGREWARHULK,
|
||||
R_OOZEGREY,
|
||||
R_ORCB,
|
||||
R_ORC,
|
||||
R_ORCWARRIOR,
|
||||
R_ORCGREY,
|
||||
R_ORCGRAND,
|
||||
R_ORCN,
|
||||
R_ORK,
|
||||
R_PEGASUS,
|
||||
R_POLTERGEIST,
|
||||
|
@ -1253,6 +1259,7 @@ enum OBTYPE {
|
|||
OT_CHEESE,
|
||||
OT_CHOCOLATE,
|
||||
OT_CLOVER,
|
||||
OT_CURADOUGH,
|
||||
OT_GARLIC,
|
||||
OT_HOTDOG,
|
||||
OT_JERKY,
|
||||
|
@ -1262,6 +1269,7 @@ enum OBTYPE {
|
|||
OT_NUT,
|
||||
OT_PASSIONFRUIT,
|
||||
OT_POISONSAC,
|
||||
OT_PSITRUFFLE,
|
||||
OT_ROASTMEAT,
|
||||
OT_RUMBALL,
|
||||
OT_SALT,
|
||||
|
@ -1936,6 +1944,7 @@ enum OBTYPE {
|
|||
OT_SPANNER,
|
||||
OT_STICK,
|
||||
// projectile weapons
|
||||
OT_BLOWGUN,
|
||||
OT_BOW,
|
||||
OT_CROSSBOW,
|
||||
OT_CROSSBOWHAND,
|
||||
|
@ -3095,6 +3104,7 @@ enum FLAG {
|
|||
// is activated!
|
||||
F_SLOWACT, // modifier for action speed
|
||||
F_SLOWMETAB, // hunger counter increases slower, poison cures slower.
|
||||
// v0 is multiplier
|
||||
F_SLOWMOVE, // modifier for move speed
|
||||
F_SLOWACTMOVE, // modifier for move and action speed
|
||||
F_XRAYVIS, //val0=num of walls we can see through
|
||||
|
|
31
io.c
31
io.c
|
@ -11865,7 +11865,7 @@ void showlfstats(lifeform_t *lf, int showall) {
|
|||
for (i = 0; i < MAXDAMTYPE; i++) {
|
||||
if (basedamagetype(i) != i) continue;
|
||||
f = isresistantto(lf->flags, i, B_TRUE);
|
||||
if (f) {
|
||||
if (f && !isimmuneto(lf->flags, i, B_TRUE)) {
|
||||
if (first) {
|
||||
snprintf(buf2, BUFLEN, "%s %s resistant to: %s", you(lf), is(lf),getdamnamenoun(i));
|
||||
first = B_FALSE;
|
||||
|
@ -12699,7 +12699,7 @@ char wrapprint(WINDOW *win, int *y, int *x, int newlineindent, char *format, ...
|
|||
char word[HUGEBUFLEN],buf[HUGEBUFLEN];
|
||||
char *p;
|
||||
va_list args;
|
||||
int w,nspaces = 0,h;
|
||||
int w,nspaces = 0, h;
|
||||
int first = B_TRUE;
|
||||
|
||||
va_start(args, format);
|
||||
|
@ -12720,16 +12720,38 @@ char wrapprint(WINDOW *win, int *y, int *x, int newlineindent, char *format, ...
|
|||
// add on spaces at the end
|
||||
//strncat(buf, " ", HUGEBUFLEN);
|
||||
|
||||
// count number of spaces at the start...
|
||||
/*
|
||||
p = buf;
|
||||
while (*p == ' ') {
|
||||
nstartspaces++;
|
||||
p++;
|
||||
}
|
||||
|
||||
// print out pre-spaces.
|
||||
for (i = 0;i < nstartspaces; i++) {
|
||||
(*x)++;
|
||||
if (*x >= w) {
|
||||
(*y)++;
|
||||
*x = newlineindent;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// new code: print it word by word.
|
||||
p = readuntil(word, buf, ' '); // get first word
|
||||
//while (strlen(word)) {
|
||||
while (strlen(p) || strlen(word)) {
|
||||
char *repword;
|
||||
int rv = B_TRUE;
|
||||
if (strlen(word) == 0) {
|
||||
repword = strdup(" ");
|
||||
} else {
|
||||
repword = strdup(word);
|
||||
while (rv) {
|
||||
repword = strrep(repword, "@", " ", &rv);
|
||||
}
|
||||
}
|
||||
// if this word won't fit, put it on the next line.
|
||||
if (*x != 0) {
|
||||
if (*x + strlen(repword) >= (w-1)) {
|
||||
|
@ -12758,9 +12780,12 @@ char wrapprint(WINDOW *win, int *y, int *x, int newlineindent, char *format, ...
|
|||
|
||||
if (first) {
|
||||
first = B_FALSE;
|
||||
} else if (*x != newlineindent) {
|
||||
} else if ((*x != newlineindent) && strlen(word)) {
|
||||
textwithcol_real(win, " ", B_FALSE);
|
||||
}
|
||||
if (strlen(repword) < 2) {
|
||||
dblog("xxx");
|
||||
}
|
||||
textwithcol_real(win, repword, B_FALSE);
|
||||
//(*x) += strlen(buf);
|
||||
getyx(win, *y, *x);
|
||||
|
|
10
lf.c
10
lf.c
|
@ -2793,8 +2793,9 @@ void die(lifeform_t *lf) {
|
|||
// some lfs have extra corpse objects
|
||||
getflags(lf->flags, retflag, &nretflags, F_EXTRACORPSE, F_NONE);
|
||||
for (i = 0; i < nretflags; i++) {
|
||||
f = retflag[i];
|
||||
if ((f->val[0] == NA) || pctchance(f->val[0])) {
|
||||
addob(corpsecell->obpile, retflag[i]->text);
|
||||
addob(corpsecell->obpile, f->text);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3810,6 +3811,13 @@ int eat(lifeform_t *lf, object_t *o) {
|
|||
case OT_CHOCOLATE:
|
||||
setstamina(lf, getmaxstamina(lf));
|
||||
break;
|
||||
case OT_CURADOUGH:
|
||||
addtempflag(lf->flags, F_SLOWMETAB, 3, NA, NA, NULL, rnd(100,200));
|
||||
gainhp(lf, lf->maxhp);
|
||||
break;
|
||||
case OT_PSITRUFFLE:
|
||||
addtempflag(lf->flags, F_LEARNBOOST, 100, NA, NA, NULL, 100);
|
||||
break;
|
||||
case OT_HOTDOG:
|
||||
addtempflag(lf->flags, F_ATTRMOD, A_STR, 3, NA, NULL, rnd(30,50));
|
||||
gainhp(lf,rnd(6,12));
|
||||
|
|
27
map.c
27
map.c
|
@ -1405,22 +1405,37 @@ int doelementspread(cell_t *c) {
|
|||
}
|
||||
// fire
|
||||
fireob = hasobofmaterial(c->obpile, MT_FIRE);
|
||||
if (fireob && (fireob->birthtime != curtime)) {
|
||||
if (fireob && (fireob->birthtime != curtime) && !isdeadob(fireob)) {
|
||||
cell_t *retcell[MAXRETCELLS];
|
||||
int nretcells,i,nspread = 0;
|
||||
|
||||
// check adjacent cells for flammable stuff
|
||||
getradiuscells(c, 1, DT_COMPASS, B_FALSE, LOF_DONTNEED, B_FALSE, retcell, &nretcells, B_FALSE);
|
||||
for (i = 0; i < nretcells; i++) {
|
||||
object_t *oo;
|
||||
|
||||
// check adjacent cells (and this one) for flammable stuff
|
||||
getradiuscells(c, 1, DT_COMPASS, B_FALSE, LOF_DONTNEED, B_TRUE, retcell, &nretcells, B_FALSE);
|
||||
for (i = 0; i < nretcells; i++) {
|
||||
int celldone = B_FALSE;
|
||||
for (oo = retcell[i]->obpile->first ; oo ; oo = oo->next) {
|
||||
if (isflammable(oo) && !hasobofmaterial(retcell[i]->obpile, MT_FIRE)) {
|
||||
flag_t *f;
|
||||
|
||||
if (hasobofmaterial(retcell[i]->obpile, MT_FIRE)) {
|
||||
// there's already a fire here.
|
||||
// f_onfire flags won't expire if there is fire there.
|
||||
f = hasflag(oo->flags, F_ONFIRE);
|
||||
if (f && (f->lifetime > 0)) {
|
||||
f->lifetime++;
|
||||
}
|
||||
} else if (isflammable(oo)) {
|
||||
// no fire here already. if there is a flammable object here, the fire
|
||||
// will spread.
|
||||
ignite(oo);
|
||||
// if object didn't ignite into a fire, add one.
|
||||
if (!hasobofmaterial(retcell[i]->obpile, MT_FIRE)) {
|
||||
addobfast(retcell[i]->obpile, fireob->type->id);
|
||||
}
|
||||
// now we regain our full hp
|
||||
f = hasflag(fireob->flags, F_OBHP);
|
||||
if (f) f->val[0] = f->val[1];
|
||||
|
||||
nspread++;
|
||||
celldone = B_TRUE;
|
||||
}
|
||||
|
|
20
objects.c
20
objects.c
|
@ -11678,6 +11678,7 @@ int real_takedamage(object_t *o, int howmuch, int damtype, int wantannounce) {
|
|||
|
||||
// initial effects based on damage type
|
||||
if (damtype == DT_FIRE) {
|
||||
|
||||
if ( ((o->type->id == OT_CANDLE) || (o->type->id == OT_TORCH) || (o->type->id == OT_CANDELABRUM)) &&
|
||||
!isactivated(o)) {
|
||||
cell_t *c;
|
||||
|
@ -13090,12 +13091,29 @@ void timeeffectsob(object_t *o) {
|
|||
} else {
|
||||
damtype = f->val[1];
|
||||
}
|
||||
// special case
|
||||
// special case - corpses don't decay when on ice
|
||||
if (o->type->id == OT_CORPSE) {
|
||||
if (hasobofmaterial(o->pile, MT_ICE)) {
|
||||
doit = B_FALSE;
|
||||
}
|
||||
}
|
||||
// special case - fire doesn't naturally die down
|
||||
// if there are larger fires in adjacent cells.
|
||||
if ((o->type->material->id == MT_FIRE) && (o->pile->where)) {
|
||||
int dir,myhp;
|
||||
cell_t *c;
|
||||
object_t *otherfire;
|
||||
myhp = getobhp(o, NULL);
|
||||
for (dir = DC_N; dir <= DC_NW; dir++) {
|
||||
c = getcellindir(location, dir);
|
||||
if (c) {
|
||||
otherfire = hasobofmaterial(c->obpile, MT_FIRE);
|
||||
if (otherfire && (getobhp(otherfire, NULL) > myhp)) {
|
||||
doit = B_FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (doit) {
|
||||
takedamage(o, f->val[0], damtype);
|
||||
if (hasflag(o->flags, F_DEAD)) return;
|
||||
|
|
Loading…
Reference in New Issue