diff --git a/Makefile b/Makefile index 9faea26..5d2c22f 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -nexus: Makefile defs.h nexus.c nexus.h ai.c ai.h attack.c attack.h flag.c flag.h god.c god.h io.c io.h lf.c lf.h map.c map.h move.c move.h objects.c objects.h text.c text.h save.c save.h spell.c spell.h vault.c vault.h - gcc -Wall -g -pg -o nexus nexus.c ai.c attack.c flag.c god.c io.c lf.c map.c move.c objects.c text.c save.c spell.c vault.c vault.h -lncurses -lsqlite3 +nexus: Makefile defs.h nexus.c nexus.h ai.c ai.h attack.c attack.h data.c data.h flag.c flag.h god.c god.h io.c io.h lf.c lf.h map.c map.h move.c move.h objects.c objects.h text.c text.h save.c save.h spell.c spell.h vault.c vault.h + gcc -Wall -g -pg -o nexus nexus.c ai.c attack.c data.c flag.c god.c io.c lf.c map.c move.c objects.c text.c save.c spell.c vault.c vault.h -lncurses -lsqlite3 -check: Makefile defs.h nexus.c nexus.h ai.c ai.h attack.c attack.h flag.c flag.h god.c god.h io.c io.h lf.c lf.h map.c map.h move.c move.h objects.c objects.h text.c text.h save.c save.h spell.c spell.h vault.c vault.h +check: Makefile defs.h nexus.c nexus.h ai.c ai.h attack.c attack.h data.c data.h flag.c flag.h god.c god.h io.c io.h lf.c lf.h map.c map.h move.c move.h objects.c objects.h text.c text.h save.c save.h spell.c spell.h vault.c vault.h splint -onlytrans -nullret -nullstate -branchstate -usedef -type -retvalint -retvalother +posixlib -unrecog -boolops -mustfreefresh -predboolint -unqualifiedtrans -compdef *.c diff --git a/defs.h b/defs.h index 8c114b6..90493b5 100644 --- a/defs.h +++ b/defs.h @@ -2854,6 +2854,11 @@ typedef struct glyph_s { int colour; } glyph_t; +typedef struct hiddennamewithcol_s { + char *name; + enum COLOUR col; +} hiddennamewithcol_t; + typedef struct cell_s { map_t *map; // pointer back to map int x,y; // map coords diff --git a/lf.c b/lf.c index 3d369dc..9a1cf1b 100644 --- a/lf.c +++ b/lf.c @@ -8538,3468 +8538,6 @@ int haslos_fast(lifeform_t *viewer, cell_t *dest) { return B_FALSE; } - -void initjobs(void) { - int i; - flag_t *f; - // job definitions - - // NOTE: try to always make the job's primary weapon be the first object defined. - // this will make sure that they have the letter 'a'. - addjob(J_GOD, "Diety"); - addflag(lastjob->flags, F_STARTATT, A_STR, AT_EXHIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_EXHIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_EXHIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_EXHIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_EXHIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_EXHIGH, NA, NULL); - //addflag(lastjob->flags, F_OMNIPOTENT, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_VHIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_EXHIGH, NA, NULL); - addflag(lastjob->flags, F_MPDICE, 100, NA, NA, NULL); - //addflag(lastjob->flags, F_MPREGEN, 100, NA, NA, NULL); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "short sword of pyromania"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "hand of god"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 blocks of chocolate"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 vials of ambrosia"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather boots"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather gloves"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "graph paper"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "a digital watch"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 blessed scrolls of create monster"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 blessed potions of experience"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "ring of miracles"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "ring of control"); - addflag(lastjob->flags, F_STARTSKILL, SK_SPELLCASTING, PR_MASTER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_ARCANA, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_DEATH, PR_MASTER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_TRANSLOCATION, PR_MASTER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_DIVINATION, PR_MASTER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_MENTAL, PR_MASTER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_SUMMONING, PR_MASTER, NA, NULL); - //addflag(lastjob->flags, F_HASPET, NA, NA, NA, "young wolf"); - for (i = 1; i < MAXSKILLS; i++) { - addflag(lastjob->flags, F_CANLEARN, i, NA, NA, NULL); - } - // gods may use all abilities and cast any spell at will - for (i = SS_NONE+1; i < SS_LAST; i++) { - if ((i == SS_ABILITY) || (i == SS_DIVINE)) { - mayusespellschool(lastjob->flags, i, F_CANWILL); - } else { - mayusespellschool(lastjob->flags, i, F_CANCAST); - //mayusespellschool(lastjob->flags, i, F_CANWILL); - } - } - addflag(lastjob->flags, F_NOSCORE, B_TRUE, NA, NA, NULL); - - addjob(J_ADVENTURER, "Adventurer"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_RANDOM, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 bananas"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "3 potions of healing"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LOCKPICKING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SPELLCASTING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_TECHUSAGE, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_UNDEAD, PR_NOVICE, NA, NULL); - // learnable skills - for (i = 1; i < MAXSKILLS; i++) { - addflag(lastjob->flags, F_CANLEARN, i, NA, NA, NULL); - } - // abilities - addflag(lastjob->flags, F_SELECTWEAPON, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_MPDICE, 1, NA, NA, NULL); - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - - addjob(J_ALLOMANCER, "Allomancer"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "1 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "club"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "cloak"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "potion of magic"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_SS_ALLOMANCY, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LOCKPICKING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_THROWING, PR_NOVICE, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_BACKSTAB, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLIMBING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SPEECH, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_STEALTH, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLUBS, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_STAVES, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, NA, NA, NULL); - // abilities - addflag(lastjob->flags, F_MPDICE, 1, 1, NA, NULL); - addflag(lastjob->flags, F_CANCAST, OT_S_ABSORBMETAL, NA, NA, NULL); - addflag(lastjob->flags, F_DETECTMETAL, B_TRUE, NA, NA, NULL); - mayusespellschool(lastjob->flags, SS_ALLOMANCY, F_CANCAST); - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - addjob(J_COMMANDO, "Commando"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_HIGH, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "combat knife"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "revolver"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "helmet"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "flak jacket"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "combat pants"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather boots"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "nightvis goggles"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "1-2 blocks of c4"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "1-3 grenades"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "1-3 flashbangs"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "digital watch"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 bullets"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_FIRSTAID, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SWIMMING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_TECHUSAGE, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_SKILLED, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_BACKSTAB, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CARTOGRAPHY, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLIMBING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_COOKING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_FIRSTAID, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_METALWORK, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_STEALTH, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SHORTBLADES, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THROWING, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, PR_SKILLED, NA, NULL); - // abilities - addjob(J_DRUID, "Druid"); - // stats - addflag(lastjob->flags, F_MPDICE, 1, 1, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_GTAVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "quarterstaff"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "sickle"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "robe"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "pair of sandals"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 sprigs of mistletoe"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_NATURE, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_STAVES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SPEECH, PR_ADEPT, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_COOKING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_FIRSTAID, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SWIMMING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_RANGED, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SHORTBLADES, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLUBS, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, PR_ADEPT, NA, NULL); - // abilities - mayusespellschool(lastjob->flags, SS_NATURE, F_CANCAST); - addflag(lastjob->flags, F_HASPET, NA, NA, NA, "young wolf"); - addflag(lastjob->flags, F_PARTVEGETARIAN, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_LEVSKILL, 5, 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_HIRABLE, B_TRUE, NA, NA, NULL); - - /////////////////////////////////////// - addjob(J_MONK, "Monk"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_AVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "robe"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 loaf of stale bread"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 cheese"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "pair of sandals"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_EVASION, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_STEALTH, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_UNARMED, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_MENTAL, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_STAVES, PR_NOVICE, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_CLIMBING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_COOKING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_FIRSTAID, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SEWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SWIMMING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TRAPS, PR_ADEPT, NA, NULL); - // abilities - addflag(lastjob->flags, F_VEGETARIAN, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_CANWILL, OT_A_FEIGNDEATH, NA, NA, NULL); - addflag(lastjob->flags, F_MAXATTACKS, 1, 1, NA, NULL); // this will go up later - // gained abilities - // somewhere: slow falling when next to walls - // somehwere: alertness when sleeping - addflag(lastjob->flags, F_LEVFLAG, 2, F_MPDICE, 1, NULL); - addflag(lastjob->flags, F_LEVSPELL, 2, OT_S_CALMANIMALS, NA, NULL); - // 2: body control - low metabolism - addflag(lastjob->flags, F_LEVSPELL, 3, OT_S_LOWERMETAB, NA, NULL); - // 4: self-healing (mp), immune to haste/slow (innate) - addflag(lastjob->flags, F_LEVFLAG, 4, F_DISEASEIMMUNE, B_TRUE, NULL); - addflag(lastjob->flags, F_LEVABIL, 5, OT_A_HEAVYBLOW, 3, NULL); - // 6: waterawlk via 'body equilibrium' (innate) - addflag(lastjob->flags, F_LEVFLAG, 7, F_TREMORSENSE, 3, NULL); - // 8: molecular manipulation (ie. lower hardness of physical obs by level-7, not lfs) (innate) - addflag(lastjob->flags, F_LEVABIL, 8, OT_A_FLURRY, 3, "pw:1;"); - // 9: resistance to charm, hypnosis, sleep (innate) - addflag(lastjob->flags, F_LEVFLAG, 10, F_DTIMMUNE, DT_POISON, NULL); - addflag(lastjob->flags, F_LEVSPELL, 11, OT_S_PSYARMOUR, NA, NULL); - // 12: quivering palm (v.high mp cost OR once every 200 turns or so) - addflag(lastjob->flags, F_LEVABIL, 13, OT_S_BLINK, 10, "pw:6;"); // l6 = controlled - // 14: speak with plants (mp?innate?) - // 15: mind bar??? what is this - addflag(lastjob->flags, F_LEVABIL, 16, OT_S_IDENTIFY, 100, NULL); - // 17: dimension walk (controlled teleport??) (mp) - // 18: astral projection.. .??useful? - // 19: premonition of death 1-4 turns before - // 20: tower of iron will - // 21: planeshift - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - addjob(J_PLUMBER, "Plumber"); - // stats - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_LOW, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "spanner"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "overalls"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "cap"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "3-5 mushrooms"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "rubber boots"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_SWIMMING, PR_NOVICE, NA, NULL); - // learnable akills - addflag(lastjob->flags, F_CANLEARN, SK_ATHLETICS, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLIMBING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_METALWORK, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SPELLCASTING, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_FIRE, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_COLD, PR_ADEPT, NA, NULL); - // abilities - addflag(lastjob->flags, F_EVASION, 30, NA, NA, NULL); - addflag(lastjob->flags, F_OBESE, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_CANWILL, OT_A_JUMP, 3, 3, NULL); - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - addjob(J_PRINCE, "Prince"); - // stats - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_GTAVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "blessed ornamental sword"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "100 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "golden crown"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "ornamental dagger"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "velvet robe"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "silk shirt"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "riding trousers"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather boots"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SHIELDS, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SHORTBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LONGBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_NATURE, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SWIMMING, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SPEECH, PR_SKILLED, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_ATHLETICS, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CARTOGRAPHY, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_METALWORK, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CHANNELING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SEWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LORE_ARCANA, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_POLEARMS, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, NA, NA, NULL); - // abilities - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - - addjob(J_PIRATE, "Pirate"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, NA, NA, "8-15"); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_LOW, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_LTAVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "cutlass"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "silk shirt"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "cloth trousers"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "eyepatch"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "tricorne"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "300-350 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "5 potions of rum"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CLIMBING, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LONGBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_UNARMED, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SWIMMING, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_UNDEAD, PR_NOVICE, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_ATHLETICS, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_BACKSTAB, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CHANNELING, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LORE_ARCANA, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SEWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_STEALTH, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THIEVERY, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THROWING, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, NA, NA, NULL); - // abilities - addflag(lastjob->flags, F_STABILITY, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastjob->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastjob->flags, F_EXTRALUCK, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_HASPET, NA, NA, NA, "young hawk"); - addflag(lastjob->flags, F_MAXATTACKS, 2, 2, NA, NULL);// this is so that our hookhand works - addflag(lastjob->flags, F_INJURY, IJ_EYEDESTROYED, NA, NA, NULL); - // also: has a hook instead of fists. - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - - addjob(J_ROGUE, "Rogue"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_RANDOM, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "dagger"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "50-100 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "5 lockpicks"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CLIMBING, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_STEALTH, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LISTEN, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_BACKSTAB, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LOCKPICKING, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SHORTBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_THIEVERY, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_BEGINNER, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_CHANNELING, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_COOKING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SPEECH, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SHORTBLADES, PR_SKILLED, NA, NULL); // - addflag(lastjob->flags, F_CANLEARN, SK_STAVES, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SWIMMING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TWOWEAPON, PR_EXPERT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SPELLCASTING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_DIVINATION, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_GRAVITY, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_MODIFICATION, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_MENTAL, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_TRANSLOCATION, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LORE_ARCANA, PR_ADEPT, NA, NULL); - // abilities - addflag(lastjob->flags, F_MPDICE, 1, NA, NA, NULL); - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - addjob(J_WARRIOR, "Warrior"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_GTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_LTAVERAGE, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "helmet"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "suit of ring mail"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "pair of gauntlets"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "pair of metal boots"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "buckler"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "10-20 gold coins"); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_AXES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CLUBS, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SHORTBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LONGBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SHIELDS, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_NATURE, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SEWING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_METALWORK, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_CARTOGRAPHY, PR_SKILLED, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLIMBING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_COOKING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SWIMMING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_AXES, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CLUBS, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LONGBLADES, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_POLEARMS, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_STAVES, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_TWOWEAPON, NA, NA, NULL); - // abilities - addflag(lastjob->flags, F_HITDICE, NA, NA, NA, "1d4+4"); - addflag(lastjob->flags, F_SELECTWEAPON, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_LEVABIL, 3, OT_A_HEAVYBLOW, 3, NULL); - addflag(lastjob->flags, F_LEVABIL, 4, OT_A_WARCRY, 4, NULL); - addflag(lastjob->flags, F_LEVABIL, 5, OT_A_CHARGE, 5, NULL); - addflag(lastjob->flags, F_LEVABIL, 6, OT_A_RAGE, 50, NULL); - addflag(lastjob->flags, F_LEVABIL, 10, OT_A_HURRICANESTRIKE, 5, NULL); - addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL); - - addjob(J_WIZARD, "Wizard"); - // stats - addflag(lastjob->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_HIGH, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CON, AT_LTAVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_CHA, AT_RANDOM, NA, NULL); - // initial objects - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "knife"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "robe"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 potions of magic"); - // monster wizards sometimes start with a random book - f = addflag(lastjob->flags, F_STARTOBCLASS, 100, OC_BOOK, NA, NULL); addcondition(f, FC_IFMONSTER, 50); - // initial skills - addflag(lastjob->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_ADEPT, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_ARCANA, PR_BEGINNER, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_UNDEAD, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_LORE_DEMONS, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SPELLCASTING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_CHANNELING, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_STAVES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_STARTSKILL, SK_SS_WILD, PR_NOVICE, NA, NULL); - // learnable skills - addflag(lastjob->flags, F_CANLEARN, SK_LISTEN, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_CHANNELING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SHORTBLADES, PR_NOVICE, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SEWING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SPEECH, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_AIR, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_DEATH, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_DIVINATION, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_FIRE, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_COLD, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_GRAVITY, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_MODIFICATION, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_SUMMONING, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LORE_DEMONS, NA, NA, NULL); - addflag(lastjob->flags, F_CANLEARN, SK_LORE_UNDEAD, NA, NA, NULL); - // abilities - addflag(lastjob->flags, F_HITDICE, NA, NA, NA, "1d4+1"); // low hp - addflag(lastjob->flags, F_MPDICE, 1, 1, NA, NULL); - addflag(lastjob->flags, F_RESTHEALTIME, 6, NA, NA, NULL); // wizard heals slowly, but regenerates mp - addflag(lastjob->flags, F_LEVFLAG, 3, F_DETECTMAGIC, B_TRUE, NULL); - addflag(lastjob->flags, F_LEVFLAG, 7, F_DETECTAURAS, 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_HIRABLE, B_TRUE, NA, NA, NULL); - // 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); - - // non-player jobs - addjob(J_SHOPKEEPER, "Shopkeeper"); - addflag(lastjob->flags, F_NOPLAYER, B_TRUE, NA, NA, NULL); - addflag(lastjob->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "100-1000 gold coins"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "shotgun"); - addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "5-10 bullets"); - addflag(lastjob->flags, F_WANTS, OT_GOLD, NA, NA, NULL); -} - -void initrace(void) { - race_t *r; - flag_t *f; - objecttype_t *ot; - // race classes - addraceclass(RC_OTHER, "strange creature", "strange creatures", SK_NONE); - addraceclass(RC_ANIMAL, "animal", "animals and insects", SK_LORE_NATURE); - addraceclass(RC_AQUATIC, "aquatic creature", "aquatic creatures", SK_LORE_NATURE); - addraceclass(RC_DEMON, "demon", "demons", SK_LORE_DEMONS); - addraceclass(RC_GOD, "god", "dieties", SK_NONE); - addraceclass(RC_HUMANOID, "humanoid", "humanoid creatures", SK_LORE_HUMANOID); - addraceclass(RC_INSECT, "insect", "insects and animals", SK_LORE_NATURE); - addraceclass(RC_MAGIC, "magical creature", "magical creatures", SK_LORE_ARCANA); - addraceclass(RC_PLANT, "plant", "plants", SK_LORE_NATURE); - addraceclass(RC_SLIME, "slime", "slimes", SK_NONE); - addraceclass(RC_UNDEAD, "undead", "the undead", SK_LORE_UNDEAD); - - // unique monsters - addrace(R_JAILER, "jailer", 110, '@', C_MAGENTA, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_NAME, NA, NA, NA, "Jimbo"); - addflag(lastrace->flags, F_UNIQUE, NA, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, NA, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+20"); - //addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - //addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d4"); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, NA, NA, "11-13"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CHA, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STAYINROOM, NA, NA, NA, NULL); // stay in our maze - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "50-100 gold coins"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "+2 halberd"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "great armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "good armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "good armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "dungeon exit orb"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "concealing powder"); - addflag(lastrace->flags, F_FLEEONHPPCT, 40, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_POLEARMS, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_ARMOUR, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_HEAVYBLOW, 2, 2, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_HURRICANESTRIKE, 2, 2, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_RAGE, 20, 20, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - - // races / monsters - addrace(R_HUMAN, "human", 75, '@', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 75, NA, NULL); - addflag(lastrace->flags, F_VARLEVEL, NA, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+2"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 65, OC_WEAPON, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 65, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 65, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 65, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_SCROLL, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_SCROLL, NA, NULL); - addflag(lastrace->flags, F_STARTJOB, 75, J_RANDOM, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL); - - // human monsters... - addrace(R_BANDITLDR, "bandit leader", 75, '@', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, NULL); - addflag(lastrace->flags, F_VARLEVEL, NA, NA, NA, NULL); - addflag(lastrace->flags, F_DEMANDSBRIBE, NA, 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_HITDICE, NA, NA, NA, "2d4+2"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "1-100 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 100, OC_WEAPON, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 100, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 100, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_SCROLL, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERARM, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MINIONS, 100, 1, 3, "bandit"); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - addrace(R_BANDIT, "bandit", 75, '@', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, NULL); - addflag(lastrace->flags, F_VARLEVEL, NA, 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_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "1-100 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 100, OC_WEAPON, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 100, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 15, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 15, OC_SCROLL, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERARM, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOJOBTEXT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTJOB, 15, J_WIZARD, NA, NULL); - addflag(lastrace->flags, F_STARTJOB, 50, J_ROGUE, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - addrace(R_BEGGAR, "beggar", 50, '@', C_BROWN, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_RARITY, H_VILLAGE, 80, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 70, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+2"); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-2 gold coins"); - addflag(lastrace->flags, F_STARTOB, 25, OC_POTION, NA, "potion of rum"); - addflag(lastrace->flags, F_STARTSKILL, SK_THIEVERY, PR_BEGINNER, NA, NULL); - addflag(lastrace->flags, F_RANDOMTALKPCT, 30, NA, NA, NULL); - addflag(lastrace->flags, F_RANDOMTALK, SP_BEG, SV_WHISPER, SV_TALK, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addrace(R_DRUNK, "drunkard", 90, '@', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_RARITY, H_VILLAGE, 90, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 75, NA, NULL); - addflag(lastrace->flags, F_VARLEVEL, NA, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+2"); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_STARTOB, 100, OC_POTION, NA, "1-5 potions of rum"); - addflag(lastrace->flags, F_STARTOB, 70, OC_POTION, NA, "1-5 empty flasks"); - addflag(lastrace->flags, F_STARTOB, 60, OC_POTION, NA, "1-2 gold coins"); - addflag(lastrace->flags, F_STARTJOB, 50, J_RANDOM, NA, NULL); // often unemployed - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts drunkenly^a drunken shout"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RANDOMTALKPCT, 30, NA, NA, NULL); - addflag(lastrace->flags, F_RANDOMTALK, SP_DRUNK, SV_WHISPER, SV_SHOUT, NULL); - f = addflag(lastrace->flags, F_DRUNK, 5, NA, NA, NULL); - addcondition(f, FC_NOCONDITION, 30); - addaltval(f, F_DRUNK, 3, NA, NA, NULL); - - addrace(R_PRISONER, "prisoner", 60, '@', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_VARLEVEL, NA, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-2 stones"); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERARM, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_ISPRISONER, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HIREPRICE, 0, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - - addrace(R_TOWNGUARD, "town guard", 100, '@', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, NA, NA, "12-18"); - addflag(lastrace->flags, F_STARTASLEEPPCT, 0, NA, NA, NULL); - addflag(lastrace->flags, F_STAYINHABITAT, NA, NA, NA, NULL); - addflag(lastrace->flags, F_GUARD, NA, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_VILLAGE, 80, NA, NULL); - addflag(lastrace->flags, F_VARLEVEL, NA, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+4"); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "good weapon"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "scale armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "good armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "good armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "good armour"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "bow"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-10 arrows"); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERARM, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL); - - // gods - kep sorted alphabetically - addrace(R_GODPURITY, "Amberon", 90, '@', C_BOLDMAGENTA, MT_FLESH, RC_GOD); - addflag(lastrace->flags, F_ALIGNMENT, AL_GOOD, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, NA, NA, "20"); - addflag(lastrace->flags, F_STARTATT, A_DEX, NA, NA, "10"); - addflag(lastrace->flags, F_STARTATT, A_WIS, NA, NA, "18"); - addflag(lastrace->flags, F_STARTATT, A_IQ, NA, NA, "16"); - addflag(lastrace->flags, F_STARTATT, A_CON, NA, NA, "16"); - addflag(lastrace->flags, F_STARTATT, A_CHA, NA, NA, "16"); - addflag(lastrace->flags, F_STARTASLEEPPCT, 0, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "50d4"); - addflag(lastrace->flags, F_UNIQUE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "blessed +3 flaming longsword"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "10 blessed potions of water"); - //addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_RARITY, NA, NA, NULL); // ie. everything - addflag(lastrace->flags, F_STARTSKILL, SK_SS_LIFE, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_FIRSTAID, PR_SKILLED, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, PR_SKILLED, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "gestures imperiously"); - // god abilities - addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Purity"); - addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_S_LIGHT, NA, NA, "pw:10;"); - // may cast all life spells - for (ot = objecttype ; ot ; ot = ot->next) { - if ((ot->obclass->id == OC_SPELL) && (getspellschool(ot->id) == SS_LIFE)) { - 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_CANWILL, OT_S_PLANESHIFT, NA, NA, "pw:1;"); - // likes/dislikes - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "destroying the undead"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "killing evil creatures"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "blessing objects"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "acts of charity"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "casting holy spells"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "sacrificing cursed objects through prayer"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "attacking good, peaceful or helpless creatures"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "the use of poison"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "cursing objects"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "eating pets"); - - - addrace(R_GODTHIEVES, "Felix", 300, '@', C_BOLDMAGENTA, MT_FLESH, RC_GOD); - addflag(lastrace->flags, F_ALIGNMENT, AL_NEUTRAL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, NA, NA, "20"); - addflag(lastrace->flags, F_STARTATT, A_DEX, NA, NA, "10"); - addflag(lastrace->flags, F_STARTATT, A_WIS, NA, NA, "9"); - addflag(lastrace->flags, F_STARTATT, A_IQ, NA, NA, "10"); - addflag(lastrace->flags, F_STARTATT, A_CON, NA, NA, "8"); - addflag(lastrace->flags, F_STARTATT, A_CHA, NA, NA, "6"); - addflag(lastrace->flags, F_STARTASLEEPPCT, 0, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "30d4"); - addflag(lastrace->flags, F_UNIQUE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "+5 dagger of sharpness"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "blessed ring of hunger"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "10 huge bags of holding"); - //addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_RARITY, NA, NA, NULL); // ie. everything - addflag(lastrace->flags, F_STARTSKILL, SK_THIEVERY, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_STEALTH, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_BACKSTAB, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_THROWING, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_CLIMBING, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "waves his hand"); - // god abilities - addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Thieves"); - 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_S_CALLWIND, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_CONFISCATE, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_WISHLIMITED, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_HUNGER, NA, NA, "pw:1;"); - addflag(lastrace->flags, F_CANWILL, OT_S_PLANESHIFT, NA, NA, "pw:1;"); - // likes/dislikes - 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, "lockpicking"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "purchasing items"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "giving away or discarding money"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "opening locked objects through force"); - // sacrifices - addflag(lastrace->flags, F_SACRIFICEOBCLASS, OC_MONEY, NA, 2, "OB IS consumed in a swirl of shadowy blackness"); - - - addrace(R_GODDEATH, "Hecta", 100, '@', C_BOLDMAGENTA, MT_FLESH, RC_GOD); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, NA, NA, "16"); - addflag(lastrace->flags, F_STARTATT, A_DEX, NA, NA, "20"); - addflag(lastrace->flags, F_STARTATT, A_WIS, NA, NA, "15"); - addflag(lastrace->flags, F_STARTATT, A_IQ, NA, NA, "18"); - addflag(lastrace->flags, F_STARTATT, A_CON, NA, NA, "6"); - addflag(lastrace->flags, F_STARTATT, A_CHA, NA, NA, "6"); - addflag(lastrace->flags, F_STARTASLEEPPCT, 0, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "30d4"); - addflag(lastrace->flags, F_UNIQUE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "2d6"); - addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE2, NA, NA, "1d6"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "cloak of shadows"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "bone helmet"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "10-20 bones"); - //addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, PR_EXPERT, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SS_DEATH, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "extends a skeletal finger"); - // god abilities - addflag(lastrace->flags, F_GODOF, NA, NA, NA, "Death"); - addflag(lastrace->flags, F_FLEEONHPPCT, 10, NA, NA, NULL); - // may cast all death spells - for (ot = objecttype ; ot ; ot = ot->next) { - if ((ot->obclass->id == OC_SPELL) && (getspellschool(ot->id) == SS_DEATH)) { - 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_CANWILL, OT_S_PLANESHIFT, NA, NA, "pw:1;"); - // likes - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "killing (especially the good-aligned)"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "attacking the helpless"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "casting necromancy spells"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "cursing objects"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "allowing enemies to flee"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "magical healing"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "bestowing blessings"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "casting holy spells"); - // sacrifices - addflag(lastrace->flags, F_SACRIFICEOB, OT_CORPSE, NA, 2, "Bony claws rise up and drag OB underground."); - - addrace(R_GODMERCY, "Yumi", 300, '@', C_BOLDMAGENTA, MT_FLESH, RC_GOD); - addflag(lastrace->flags, F_ALIGNMENT, AL_GOOD, NA, NA, NULL); - addflag(lastrace->flags, F_FLEEONHPPCT, 95, NA, NA, ""); - addflag(lastrace->flags, F_STARTATT, A_STR, NA, NA, "10"); - addflag(lastrace->flags, F_STARTATT, A_DEX, NA, NA, "10"); - addflag(lastrace->flags, F_STARTATT, A_WIS, NA, NA, "18"); - addflag(lastrace->flags, F_STARTATT, A_IQ, NA, NA, "17"); - addflag(lastrace->flags, F_STARTATT, A_CON, NA, NA, "10"); - addflag(lastrace->flags, F_STARTATT, A_CHA, NA, NA, "17"); - addflag(lastrace->flags, F_STARTASLEEPPCT, 0, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "50d4"); - addflag(lastrace->flags, F_UNIQUE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "10 blessed vials of ambrosia"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "2 rings of regeneration"); - addflag(lastrace->flags, F_STARTSKILL, SK_FIRSTAID, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_MASTER, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "raises her hand"); - // god abilities - addflag(lastrace->flags, F_GODOF, B_FEMALE, NA, NA, "Mercy"); - 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_CANWILL, OT_S_HEALINGMAJ, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_WISHLIMITED, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_SATEHUNGER, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_DISPERSAL, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_SLEEP, NA, NA, "pw:10;"); - addflag(lastrace->flags, F_CANWILL, OT_S_PLANESHIFT, NA, NA, "pw:1;"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "the successful casting of healing spells"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "allowing fleeing creatures to escape"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "acts of charity"); - addflag(lastrace->flags, F_GODLIKES, NA, NA, NA, "natural healing"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "attacking the innocent"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "sneak attacks"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "the use of poison"); - addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "the destruction of healing potions"); - // sacrifices - addflag(lastrace->flags, F_SACRIFICEOBCLASS, OC_WEAPON, NA, 2, "OB IS destroyed in a flash of power."); - - - // monsters - addrace(R_BEHOLDER, "beholder", 5, 'e', C_MAGENTA, MT_FLESH, RC_MAGIC); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "12d4+4"); - addflag(lastrace->flags, F_ARMOURRATING, 8, NA, NA, NULL); - addflag(lastrace->flags, F_LEVITATING, B_TRUE, 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_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_CANWILL, OT_S_FIREDART, NA, NA, "pw:5;"); - addflag(lastrace->flags, F_CANWILL, OT_S_WEAKEN, NA, NA, "pw:2;"); - addflag(lastrace->flags, F_CANWILL, OT_S_SLEEP, NA, NA, "pw:2;"); - addflag(lastrace->flags, F_CANWILL, OT_S_SUCK, NA, NA, "pw:2;"); - addflag(lastrace->flags, F_CANWILL, OT_S_PARALYZE, NA, NA, "pw:2;"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "2d4"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "gazes"); - addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOPACK, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, 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_MORALE, 30, NA, NA, NULL); - - addrace(R_BUGBEAR, "bugbear", 120, 'G', C_BROWN, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 63, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+5"); - addflag(lastrace->flags, F_ENHANCESMELL, 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_HASATTACK, OT_CLAWS, NA, NA, "2d4+1"); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "heavy flail"); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "roars^a roar"); - addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "roars^a roar"); - addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_HEAVYBLOW, 2, 2, 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_MINIONS, 50, 1, 3, "goblin"); - addflag(lastrace->flags, F_MINIONS, 20, 1, 3, "goblin warrior"); - - addrace(R_COCKATRICE, "cockatrice", 5, 'c', C_YELLOW, MT_FLESH, RC_MAGIC); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, "splash of cockatrice blood"); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "7d4+0"); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 8, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 2, NA, "^clucking."); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYSLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_DTIMMUNE, DT_PETRIFY, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d6+3"); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - // special attack handled in attack.c - - addrace(R_CREEPINGCLAW, "creeping claw", 3, 'x', C_YELLOW, MT_FLESH, RC_MAGIC); - 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, 78, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_TINY, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - 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, NA, NA, "1d3"); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_EYES, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_BODY, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_CRUSH, NA, NA, "dam:1d6;"); - addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:5;"); - - addrace(R_DARKMANTLE, "darkmantle", 70, 'U', C_BLUE, MT_FLESH, RC_MAGIC); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTHIDDENPCT, 80, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_EXHIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "9d4"); - addflag(lastrace->flags, F_ARMOURRATING, 10, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, 15, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYSLOW, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLSPEED, SP_VERYSLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_VERYSLOW, NA, NA, ""); - addflag(lastrace->flags, F_CANWILL, 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_CRUSH, NA, NA, "dam:0d0+5;"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "waves its tentacles"); - addflag(lastrace->flags, F_HASATTACK, OT_TENTACLE, NA, NA, "2d6"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_LIGHT, NA, NA, "0d6+5"); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - - addrace(R_EYEBAT, "eyebat", 5, 'e', C_BLUE, MT_FLESH, RC_MAGIC); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+3"); - addflag(lastrace->flags, F_EVASION, 20, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLSPEED, SP_VERYSLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_MPDICE, 0, 25, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 12, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_DISPERSAL, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_GRAVBOOST, NA, NA, NULL); - addflag(lastrace->flags, F_CASTTYPE, CT_GAZE, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "gazes"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, PR_EXPERT, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_FLY, 1, NA, "^flapping wings"); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_GIANTHILL, "hill giant", 160, 'H', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 55, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 55, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUGE, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "19d4"); - addflag(lastrace->flags, F_ARMOURRATING, 12, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, -20, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "2d5"); - addflag(lastrace->flags, F_STARTOB, 90, NA, NA, "25-100 gold coins"); - addflag(lastrace->flags, F_STARTOB, 70, NA, NA, "1-2 boulders"); - - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "great club"); - addcondition(f, FC_NOCONDITION, 70); - addaltval(f, F_STARTOB, 70, NA, NA, "club"); - - addflag(lastrace->flags, F_STARTOBCLASS, 65, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 65, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "bellows^a bellow"); - addflag(lastrace->flags, F_WANTS, OT_BOULDER, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_HEAVYBLOW, NA, NA, NULL); - addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_GIANTFIRE, "fire giant", 160, 'H', C_RED, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUGE, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "21d4"); - addflag(lastrace->flags, F_ARMOURRATING, 13, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, -20, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "2d5+3"); - addflag(lastrace->flags, F_STARTOB, 90, NA, NA, "25-100 gold coins"); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "flaming greatsword"); - addcondition(f, FC_NOCONDITION, 70); - addaltval(f, F_STARTOB, 100, NA, NA, "flaming longsword"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "javelin"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "javelin"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "javelin"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "javelin"); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "plate mail"); - addflag(lastrace->flags, F_STARTOBCLASS, 70, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - 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_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - 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_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_GIANTFIREFC, "fire giant forgecaller", 160, 'H', C_RED, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_GIANTFIRE; - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "fire giant corpse"); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 48, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUGE, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "17d4"); - addflag(lastrace->flags, F_ARMOURRATING, 12, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, -20, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "2d5+3"); - addflag(lastrace->flags, F_STARTOB, 90, NA, NA, "25-100 gold coins"); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "flaming morningstar"); - addcondition(f, FC_NOCONDITION, 70); - addaltval(f, F_STARTOB, 100, NA, NA, "flaming mace"); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "plate mail"); - addflag(lastrace->flags, F_STARTOBCLASS, 70, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - 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_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - 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_MPDICE, 0, 9, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 1, 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_CANCAST, OT_S_FLAMEPILLAR, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_S_FLAMEBURST, 4, 4, "pw:4;"); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, 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_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_GIANTFIRETITAN, "fire titan", 160, 'H', C_RED, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 40, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_ENORMOUS, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "49d4"); - addflag(lastrace->flags, F_ARMOURRATING, 20, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, -30, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "2d5+8"); - addflag(lastrace->flags, F_STARTOB, 90, NA, NA, "100-300 gold coins"); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "flaming greatsword of pyromania"); - addcondition(f, FC_NOCONDITION, 65); - addaltval(f, F_STARTOB, 100, NA, NA, "flaming greatsword"); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "bellows^a bellow"); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 3, NA, "^crackling flames."); - addflag(lastrace->flags, F_FLEEONHPPCT, 50, 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_DTRESIST, DT_FIRE, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - // TODO: storm giant - // TODO: storm titan - - addrace(R_GNOLL, "gnoll", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "gnoll corpse"); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 2, 3, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 72, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 72, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "8d4"); - addflag(lastrace->flags, F_ARMOURRATING, 9, 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_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6+4"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-40 gold coins"); - addflag(lastrace->flags, F_WANTSBETTERWEP, 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_PACKATTACK, 3, NA, 2, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - - addrace(R_GNOLLHM, "gnoll huntmaster", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_GNOLL; - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "gnoll corpse"); - 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, 68, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 68, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4"); - addflag(lastrace->flags, F_ARMOURRATING, 9, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, 0, 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_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6+4"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "longbow"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "10-20 arrows"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "hand axe"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-40 gold coins"); - 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_PACKATTACK, 3, NA, 2, NULL); - addflag(lastrace->flags, F_MINIONS, 75, 1, 2, "gnoll"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_GNOLLMR, "gnoll marauder", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_GNOLL; - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "gnoll corpse"); - 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, 65, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 65, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "10d4"); - addflag(lastrace->flags, F_ARMOURRATING, 9, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, 0, 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_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4+2"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "spear"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "buckler"); - 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_QUICKBITE, 1, 6, 2, NULL); - addflag(lastrace->flags, F_PACKATTACK, 3, NA, 2, NULL); - addflag(lastrace->flags, F_MINIONS, 75, 1, 2, "gnoll"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - - addrace(R_GOBLIN, "goblin", 20, 'g', C_BROWN, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_FEIGNDEATH, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 87, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 87, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+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, NA, NA, "1d4"); - 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_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-25 gold coins"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "short sword"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "sling"); - 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_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_SEEINDARK, 3, 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_STARTJOB, 25, J_ROGUE, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_NOVICE, NA, NULL); - - - addrace(R_GOBLINWAR, "goblin warrior", 30, 'g', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_GOBLIN; - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "goblin corpse"); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 75, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+5"); - 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, NA, NA, "1d4+2"); - 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_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "spear"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "1-5 javelins"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_SEEINDARK, 3, 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_MINIONS, 90, 1, 2, "goblin"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_GOBLINSHOOTER, "goblin sharpshooter", 20, 'g', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_GOBLIN; - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "goblin corpse"); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 70, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+7"); - 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, NA, NA, "1d4"); - 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_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "short sword"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "hand crossbow"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "1-15 bolts"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-25 gold coins"); - 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_DODGES, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_PACKATTACK, 2, DT_SLASH, 3, NULL); - addflag(lastrace->flags, F_MINIONS, 70, 1, 2, "goblin"); - addflag(lastrace->flags, F_CANWILL, OT_A_HIDE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTHIDDENPCT, 75, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_GOBLINHEXER, "goblin hexer", 20, 'g', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_GOBLIN; - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "goblin corpse"); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 63, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 63, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+6"); - addflag(lastrace->flags, F_EVASION, 10, 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_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "club"); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "leather armour"); - 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_DODGES, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_PACKATTACK, 2, DT_SLASH, 3, NULL); - addflag(lastrace->flags, F_MPDICE, 0, 10, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 3, 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_STARTSKILL, SK_SPELLCASTING, PR_ADEPT, 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_MINIONS, 90, 1, 2, "goblin"); - - addrace(R_HOBGOBLIN, "hobgoblin", 90, 'g', C_GREEN, MT_FLESH, RC_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, 73, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 73, 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, "2d4+3"); - addflag(lastrace->flags, F_ARMOURRATING, 8, 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, NA, NA, "1d6+2"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "longsword"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "buckler"); - addflag(lastrace->flags, F_STARTOBCLASS, 100, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL); - addflag(lastrace->flags, F_PHALANX, 5, NA, 1, "hobgoblin"); - addflag(lastrace->flags, F_MINIONS, 50, 1, 2, "goblin"); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_HOBGOBLINWAR, "hobgoblin warrior", 90, 'g', C_GREEN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_HOBGOBLIN; - 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, 60, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 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, "2d4+3"); - addflag(lastrace->flags, F_ARMOURRATING, 10, 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, NA, NA, "1d6+4"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "flail"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-75 gold coins"); - addflag(lastrace->flags, F_STARTOB, 90, NA, NA, "large shield"); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "scale armour"); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_ARMOUR, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL); - addflag(lastrace->flags, F_PHALANX, 8, NA, 1, "hobgoblin"); - addflag(lastrace->flags, F_MINIONS, 50, 1, 4, "goblin"); - addflag(lastrace->flags, F_NOFLEE, 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); - - // TODO: hobgoblin archer - // TODO: hobgoblin warcaster - - addrace(R_KOBOLD, "kobold", 18, 'k', C_BROWN, MT_FLESH, RC_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, 95, NA, NULL); - addflag(lastrace->flags, F_POISONOUS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_EVASION, 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_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTOBDT, 20, DT_PIERCE, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 25, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_THROWING, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-3 darts"); - addflag(lastrace->flags, F_STARTOB, 10, NA, NA, "javelin"); - addflag(lastrace->flags, F_STARTOB, 15, NA, NA, "buckler"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-10 gold coins"); - addflag(lastrace->flags, F_WANTSBETTERWEP, 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_HUMANOID, B_TRUE, NA, NA, NULL); - - addrace(R_TROGLODYTE, "troglodyte", 20, 'z', C_GREY, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_POISONOUS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 78, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 10, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2"); - addflag(lastrace->flags, F_HASATTACK, OT_TAIL, NA, NA, "1d3"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "club"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "buckler"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-10 gold coins"); - addflag(lastrace->flags, F_DTVULN, DT_COLD, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_DTRESIST, DT_FIRE, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL); - addflag(lastrace->flags, F_STENCH, 3, 3, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - - addrace(R_LIZARDMAN, "lizardman", 100, 'z', C_GREEN, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 72, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 72, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d5+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TAIL, NA, NA, "1d4"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "spear"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-2 javelins"); - addflag(lastrace->flags, F_DTVULN, DT_COLD, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_DTRESIST, DT_FIRE, B_TRUE, 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_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "spits"); - addflag(lastrace->flags, F_CANWILL, OT_S_POISONBOLT, 5, 5, "pw:5;"); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - - addrace(R_MINOTAUR, "minotaur", 130, 'H', C_BROWN, MT_FLESH, RC_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_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 62, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_HATESRACE, R_GNOLL, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4+3"); - addflag(lastrace->flags, F_ARMOURRATING, 12, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_STAYINROOM, NA, NA, NA, NULL); // stay in our maze - addflag(lastrace->flags, F_CARNIVORE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, NA, NA, "5-7"); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_BUTT, NA, NA, "2d4+6"); - addflag(lastrace->flags, F_HASATTACK, OT_BUTT, NA, NA, "2d4+6"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "+2 heavy flail"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "greataxe"); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_EXPERT, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:5;"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "roars^a roar"); - addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 20, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - - - addrace(R_OGRE, "ogre", 160, 'O', C_BROWN, MT_FLESH, RC_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_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 66, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "7d4+0"); - addflag(lastrace->flags, F_EVASION, -5, NA, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 11, 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_FISTS, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "2d4"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_VLOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "great club"); - addcondition(f, FC_NOCONDITION, 80); - addaltval(f, F_STARTOB, 100, NA, NA, "morningstar"); - addflag(lastrace->flags, F_STARTOB, 70, NA, NA, "leather armour"); - 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); - - addrace(R_OGRESAVAGE, "ogre savage", 160, 'O', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_OGRE; - 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_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 45, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 55, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "13d4+8"); - addflag(lastrace->flags, F_ARMOURRATING, 11, 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_FISTS, NA, NA, "3d4"); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "3d4"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_VLOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "blessed great club"); - addcondition(f, FC_NOCONDITION, 80); - addaltval(f, F_STARTOB, 100, NA, NA, "great club"); - addflag(lastrace->flags, F_STARTOB, 80, NA, NA, "leather armour"); - 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_MORALE, 20, NA, NA, NULL); - addflag(lastrace->flags, F_MINIONS, 50, 1, 5, "orc"); - addflag(lastrace->flags, F_MINIONS, 50, 1, 3, "orc warrior"); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL); - - addrace(R_OGREWARHULK, "ogre warhulk", 160, 'O', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_OGRE; - 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_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 45, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 50, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "35d4+0"); - addflag(lastrace->flags, F_ARMOURRATING, 11, 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_FISTS, NA, NA, "4d4"); - addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "4d4"); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_VLOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "heavy flail"); - addcondition(f, FC_NOCONDITION, 80); - addaltval(f, F_STARTOB, 100, NA, NA, "great club"); - addflag(lastrace->flags, F_STARTOB, 70, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-100 gold coins"); - addflag(lastrace->flags, F_HEAVYBLOW, B_TRUE, NA, NA, NULL); - 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); - - addrace(R_ORC, "orc", 90, 'o', C_BROWN, MT_FLESH, RC_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, 78, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+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_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "club"); - addcondition(f, FC_NOCONDITION, 70); - addaltval(f, F_STARTOBDT, 50, DT_SLASH, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "bone helmet"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, 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_STARTJOB, 20, J_WIZARD, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 5, 5, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - - addrace(R_ORCWARRIOR, "orc warrior", 90, 'o', C_BROWN, MT_FLESH, RC_HUMANOID); - lastrace->baseid = R_ORC; - 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, 70, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 75, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+3"); - addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 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_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - f = addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "battleaxe"); - addcondition(f, FC_NOCONDITION, 70); - addaltval(f, F_STARTOBDT, 50, DT_CHOP, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "leather armour"); - addflag(lastrace->flags, F_STARTOB, 75, NA, NA, "buckler"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "bone helmet"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-50 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSBETTERWEP, 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_STARTJOB, 20, J_WIZARD, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - - addrace(R_ORK, "ork", 90, 'o', C_BROWN, MT_FLESH, RC_HUMANOID); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "orc corpse"); - 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, 81, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 81, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+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, NA, NA, "1d4"); - 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); - addflag(lastrace->flags, F_STARTOBCLASS, 30, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "flak jacket"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "leather boots"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "football helmet"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-25 gold coins"); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastrace->flags, F_STARTOBCLASS, 50, OC_TECH, 10, NULL); - addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_OPERABLE, B_COVETS, NA, NULL); // ie. tech - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - - addrace(R_PEGASUS, "pegasus", 130, 'Q', C_GREY, MT_FLESH, RC_MAGIC); - addflag(lastrace->flags, F_ALIGNMENT, AL_GOOD, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 57, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 57, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4"); - addflag(lastrace->flags, F_HASATTACK, OT_HOOF, NA, NA, "1d8"); - addflag(lastrace->flags, F_HASATTACK, OT_HOOF, NA, NA, "1d8"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 3, 3, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, 2, 2, NULL); - addflag(lastrace->flags, F_SWOOPRANGE, 4, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 4, NA, "screams in pain^screams of pain"); - addflag(lastrace->flags, F_RESISTMAG, 5, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 25, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 3, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_POLTERGEIST, "poltergeist", 50, 'p', C_GREEN, MT_FLESH, RC_UNDEAD); // sPirit - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - 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, 75, 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_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, 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_MPDICE, 0, 4, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 4, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_TELEKINESIS, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "gestures"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, 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_STARTSKILL, SK_SS_MENTAL, PR_EXPERT, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - addflag(lastrace->flags, F_XPMULTIPLY, 2, NA, NA, NULL); - - addrace(R_SATYR, "satyr", 80, 'h', C_GREEN, MT_FLESH, RC_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, 72, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 75, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_BUTT, NA, NA, "2d4"); - addflag(lastrace->flags, F_STARTOBDT, 50, DT_SLASH, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "panpipes"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "bow"); - addflag(lastrace->flags, F_STARTOB, 75, NA, NA, "1-10 arrows"); - addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "1-30 gold coins"); - addflag(lastrace->flags, F_WANTSBETTERWEP, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "shouts^a shout"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "plays its pipes"); - addflag(lastrace->flags, F_RESISTMAG, 10, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MPDICE, 0, 16, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 8, NA, NA, NULL); - addflag(lastrace->flags, F_NEEDOBFORSPELLS, OT_PANPIPES, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_CHARM, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_SLEEP, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_FEAR, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SS_MENTAL, PR_ADEPT, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_HIDE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTHIDDENPCT, 60, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL); - - addrace(R_SHADOWCAT, "shadowcat", 5, 'f', C_BLUE, MT_FLESH, RC_MAGIC); - 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_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+3"); - addflag(lastrace->flags, F_EVASION, 40, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "hisses^a hiss"); - addflag(lastrace->flags, F_SEEINDARK, 8, NA, NA, NULL); - addflag(lastrace->flags, F_CANSEETHROUGHMAT, MT_GAS, NA, NA, NULL); - addflag(lastrace->flags, F_AUTOCREATEOB, 1, NA, NA, "cloud of smoke"); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_OOZEGREY, "grey ooze", 10, 'j', C_GREY, MT_SLIME, RC_SLIME); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "pool of slime"); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+0"); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYSLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_EYES, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_ACIDATTACK, NA, NA, "1d6+5"); - addflag(lastrace->flags, F_TREMORSENSE, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^slurping"); - addflag(lastrace->flags, F_DTIMMUNE, DT_ACID, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_AUTOCREATEOB, 0, NA, NA, "puddle of acid"); - addflag(lastrace->flags, F_DIESPLATTER, 3, NA, NA, "splash of acid"); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - - addrace(R_SPRITEFIRE, "fire sprite", 5, 'n', C_RED, MT_FIRE, RC_MAGIC); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "small fire"); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LOW, NA, NULL); - 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, 70, RR_UNCOMMON, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_EVASION, 15, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_MPDICE, 0, 4, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 1, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_FIREDART, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "gestures"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_PRODUCESLIGHT, 2, NA, NA, NULL); - addflag(lastrace->flags, F_DTIMMUNE, DT_FIRE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^crackling flames"); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, PR_NOVICE, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SS_FIRE, 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_MORALE, 30, NA, NA, NULL); - - addrace(R_SPRITEICE, "ice sprite", 5, 'n', C_WHITE, MT_ICE, RC_MAGIC); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "sheet of ice"); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LOW, NA, NULL); - 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, 70, RR_UNCOMMON, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_EVASION, 15, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_MPDICE, 4, 2, NA, NULL); - addflag(lastrace->flags, F_MPREGEN, 1, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_FROSTBITE, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_FREEZEOB, NA, NA, NULL); - addflag(lastrace->flags, F_CANCAST, OT_S_ICICLE, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "gestures"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SPELLCASTING, PR_NOVICE, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_SS_COLD, PR_ADEPT, 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_MORALE, 30, NA, NA, NULL); - - - addrace(R_TROLL, "troll", 100, 't', C_GREEN, MT_FLESH, RC_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_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 70, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+0"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "2d6"); - addflag(lastrace->flags, F_REGENERATES, 2, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_BEGINNER, NA, NULL); - - - addrace(R_XAT, "xat", 2, 'x', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 95, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 3, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - - // fish - addrace(R_CRAB, "giant crab", 250, ';', C_ORANGE, MT_FLESH, RC_AQUATIC); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 20, NA, NA, NULL); // very high armour - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+4"); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYSLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_VERYSLOW, NA, NA, ""); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "2d4"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL); - addrace(R_PIRANHA, "piranha", 0.5, ';', C_GREEN, MT_FLESH, RC_AQUATIC); - addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_TINY, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 95, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2"); - addrace(R_PIRANHAKING, "king piranha", 1, ';', C_GREEN, MT_FLESH, RC_AQUATIC); - addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_TINY, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 78, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+2"); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d6"); - addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:5;"); - addrace(R_EELELEC, "electric eel", 120, ';', C_CYAN, MT_FLESH, RC_AQUATIC); - addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 73, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+0"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_ZAPPER, NA, NA, "1d6"); - addflag(lastrace->flags, F_DTIMMUNE, DT_ELECTRIC, NA, NA, NULL); - addrace(R_EELGIANT, "giant eel", 150, ';', C_BLUE, MT_FLESH, RC_AQUATIC); - addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 68, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+0"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, 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:2d6;"); - - // plants - addrace(R_CACTUS, "cactus", 30, 'F', C_YELLOW, MT_PLANT, RC_PLANT); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 76, NA, ""); - addflag(lastrace->flags, F_HARMLESS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_RETALIATE, 1, 4, DT_PIERCE, "sharp spines"); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "cactus fruit"); - addflag(lastrace->flags, F_DOESNTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_EYES, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addrace(R_DREAMFUNGUS, "dreamfungus", 0.5, 'F', C_MAGENTA, MT_METAL, RC_PLANT); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 70, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 70, NA, ""); - addflag(lastrace->flags, F_HARMLESS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "pile of sleeping powder"); - addflag(lastrace->flags, F_DOESNTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_EYES, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addrace(R_SAWGRASS, "sawgrass", 1, 'F', C_GREY, MT_METAL, RC_PLANT); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DOESNTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_EYES, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WAIST, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - // end plants - - // animals - addrace(R_BAT, "giant bat", 3, 'B', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 88, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 95, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYFAST, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "0d4+2"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, 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_NOISETEXT, N_FLY, 1, NA, "^flapping wings"); - addrace(R_BATVAMPIRE, "vampire bat", 6, 'B', C_BLUE, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 76, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 84, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYFAST, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 2, 2, NA, NULL); - addflag(lastrace->flags, F_EVASION, -10, NA, NA, NULL); - addflag(lastrace->flags, F_VAMPIRIC, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, 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_MATVULN, MT_SILVER, 200, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_FLY, 1, NA, "^flapping wings"); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addrace(R_BEAR, "black bear", 150, 'q', C_BLUE, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 63, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 73, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_STARTASLEEPPCT, 80, NA, NA, NULL); // hibernating - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+3"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d6"); - addflag(lastrace->flags, F_MAXATTACKS, 3, 3, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "roars^a roars"); - addflag(lastrace->flags, F_SEEINDARK, 3, 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:2d4;"); - addflag(lastrace->flags, F_MINIONS, 25, 1, 2, "bear cub"); - addrace(R_BEARGRIZZLY, "grizzly bear", 200, 'q', C_YELLOW, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_BEAR; - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 52, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 62, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTASLEEPPCT, 80, NA, NA, NULL); // hibernating - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+5"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d8"); - addflag(lastrace->flags, F_MAXATTACKS, 3, 3, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "roars^a roars"); - addflag(lastrace->flags, F_SEEINDARK, 5, 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:2d6;"); - addflag(lastrace->flags, F_CRITKNOCKDOWN, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_BLEEDABIL, OT_A_RAGE, NA, NA, NULL); - addflag(lastrace->flags, F_MINIONS, 25, 1, 2, "bear cub"); - addrace(R_BEARCUB, "bear cub", 60, 'q', C_BROWN, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_BEAR; - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 63, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 73, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+3"); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 2, 2, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "roars^a roars"); - addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL); - addflag(lastrace->flags, F_CRITKNOCKDOWN, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, ""); - addrace(R_ANT, "giant ant", 20, 'a', C_BROWN, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_ANT; - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 85, NA, ""); - addflag(lastrace->flags, F_ARMOURRATING, 4, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0"); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, 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_FLEEONHPPCT, 50, NA, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "0d1+4"); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^scuttling"); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addrace(R_ANTS, "giant soldier ant", 25, 'a', C_BROWN, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_ANT; - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 65, NA, ""); - addflag(lastrace->flags, F_ARMOURRATING, 9, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+4"); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, 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_FLEEONHPPCT, 50, NA, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "0d1+4"); - addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, "dam:1d8+3;"); - addflag(lastrace->flags, F_CANWILL, OT_A_STINGACID, NA, NA, "dam:1d6+3;needgrab:1;"); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^scuttling"); - addflag(lastrace->flags, F_MINIONS, 50, 1, 3, "giant worker ant"); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addrace(R_ANTLION, "giant antlion", 30, 'a', C_YELLOW, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_ANT; - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 60, NA, ""); - addflag(lastrace->flags, F_ARMOURRATING, 4, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4+0"); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, 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_FLEEONHPPCT, 50, NA, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "5d4"); - addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, "dam:2d4;"); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^scuttling"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "roars^a roars"); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addrace(R_CHICKEN, "chicken", 0.5, 'c', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_VILLAGE, 100, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "0d4+1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - addflag(lastrace->flags, F_VEGETARIAN, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 1, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "squarks^squarking"); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^clucking."); - addrace(R_DOG, "dog", 35, 'd', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RNDHOSTILE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_VILLAGE, 100, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 82, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 2, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 6, NA, NA, NULL); - 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_LOWHP, 2, NA, "whines in pain^whining"); - addflag(lastrace->flags, F_FLEEONHPPCT, 60, NA, NA, ""); - addrace(R_DOGBLINK, "blink dog", 35, 'd', C_BLUE, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_ALIGNMENT, AL_GOOD, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 2, 4, NA, ""); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 77, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 77, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+3"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d6"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, 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_SPELLCASTTEXT, NA, NA, NA, NULL); // don't announce spellcasting - addflag(lastrace->flags, F_CANWILL, OT_S_BLINK, 2, 2, "pw:1;"); - 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_LOWHP, 2, NA, "whines in pain^whining"); - addrace(R_DOGDEATH, "death hound", 40, 'd', C_MAGENTA, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 2, 6, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 60, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 60, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d10"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d10"); - addflag(lastrace->flags, F_MAXATTACKS, 2, 2, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 5, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "whines in pain^whining"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "howls^a howl"); - addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "growls^growling"); - addflag(lastrace->flags, F_HITCONFER, F_POISONED, SC_POISON, 24, "10-15"); - addflag(lastrace->flags, F_HITCONFERVALS, P_VENOM, 1, NA, NULL); - addflag(lastrace->flags, F_CRITKNOCKDOWN, B_TRUE, NA, NA, NULL); - addrace(R_DOGWAR, "war hound", 40, 'd', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 4, NA, ""); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 83, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 83, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+2"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "2d4"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "barks^barking"); - addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 2, NA, "growls^growling"); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "whines in pain^whining"); - - addrace(R_HAWKYOUNG, "young hawk", 1, 'A', C_GREY, MT_FLESH, RC_ANIMAL); // 'A' for Avian - lastrace->baseid = R_HAWK; - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 75, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 85, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d2"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_SEEINDARK, 3, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, 3, 3, NULL); - addflag(lastrace->flags, F_SWOOPRANGE, 2, NA, NA, NULL); - addflag(lastrace->flags, F_LEVRACE, 4, R_HAWK, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 3, NA, "screeches in pain^screeches of pain"); - - addrace(R_HAWK, "hawk", 1, 'A', C_GREY, MT_FLESH, RC_ANIMAL); // 'A' for Avian - lastrace->baseid = R_HAWK; - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 68, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 77, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_CANWILL, OT_A_SWOOP, 3, 3, NULL); - addflag(lastrace->flags, F_SWOOPRANGE, 3, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL); - addflag(lastrace->flags, F_LEVRACE, 8, R_HAWKBLOOD, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 3, NA, "screeches in pain^screeches of pain"); - - addrace(R_HAWKBLOOD, "blood hawk", 1, 'A', C_RED, MT_FLESH, RC_ANIMAL); // 'A' for Avian - lastrace->baseid = R_HAWK; - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 65, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3+3"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4+3"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_CANWILL, OT_A_SWOOP, 3, 3, NULL); - addflag(lastrace->flags, F_SWOOPRANGE, 5, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 6, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 7, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 3, NA, "screeches in pain^screeches of pain"); - addrace(R_HAWKFROST, "frost hawk", 1, 'A', C_CYAN, MT_FLESH, RC_ANIMAL); // 'A' for Avian - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 63, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "10d4"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6+5"); - addflag(lastrace->flags, F_EXTRADAM, DT_COLD, NA, NA, "1d6"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_CANWILL, OT_A_SWOOP, 3, 3, NULL); - addflag(lastrace->flags, F_SWOOPRANGE, 8, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_S_COLDBURST, 2, 2, "pw:2;"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "screeches"); - addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 3, NA, "screeches in pain^screeches of pain"); - addrace(R_LEECH, "giant leech", 10, 'j', C_MAGENTA, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_AQUATIC, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 81, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 84, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, 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_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:4;"); - addflag(lastrace->flags, F_CANWILL, OT_A_SUCKBLOOD, NA, NA, "dam:0d1+4;"); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addrace(R_NEWT, "giant newt", 4, ':', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0"); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, 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_FLEEONDAM, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DTRESIST, DT_FIRE, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addrace(R_PORCUPINE, "giant porcupine", 10, 'r', C_GREY, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HATESRACE, R_ANT, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RETALIATE, 1, 4, DT_PIERCE, "sharp spines"); - addflag(lastrace->flags, F_CORPSEFLAG, F_SHARP, 1, 4, NULL); - addrace(R_RAT, "giant rat", 3, 'r', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 95, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "0d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addrace(R_SNAKE, "brown snake", 3, 's', C_BROWN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 85, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 85, NA, ""); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4"); - addflag(lastrace->flags, F_HITCONFER, F_POISONED, SC_POISON, 20, "5-10"); - addflag(lastrace->flags, F_HITCONFERVALS, P_VENOM, 1, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^slithering"); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SNAKECARPET, "carpet snake", 3, 's', C_GREY, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 88, NA, ""); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^slithering"); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SNAKETREE, "tree snake", 3, 's', C_GREEN, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, ""); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^hissing"); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, 2, 2, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SNAKECOBRABLACK, "black cobra", 3, 's', C_BLUE, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 78, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 78, NA, ""); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^hissing"); - addflag(lastrace->flags, F_CANWILL, OT_S_POISONBOLT, 4, 4, "pw:3;"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "spits"); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SNAKECOBRAGOLDEN, "golden cobra", 3, 's', C_YELLOW, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 76, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 79, NA, ""); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+2"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^hissing"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, B_APPENDYOU, "spits"); - addflag(lastrace->flags, F_CASTTYPE, CT_EYESPIT, 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_CANWILL, OT_S_BLINDNESS, 4, 4, "pw:3;range:2;"); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SNAKECONSTRICTOR, "constrictor", 3, 's', C_MAGENTA, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 68, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 68, NA, ""); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+3"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "0d1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^hissing"); - addflag(lastrace->flags, F_DEAF, B_TRUE, 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:2d6;"); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SNAKEWATER, "water snake", 3, 's', C_BLUE, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 85, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 85, NA, ""); - addflag(lastrace->flags, F_AQUATIC, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_BREATHWATER, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_COLDBLOOD, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4+1"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_DTVULN, DT_COLD, NA, NA, NULL); - addflag(lastrace->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_WALK, 1, NA, "^slithering"); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addrace(R_SPIDER, "giant spider", 5, 'S', C_GREY, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 87, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 87, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, NULL); // don't announce spellcasting - addflag(lastrace->flags, F_CANWILL, OT_S_WEB, 3, 3, "pw:1;range:4;"); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_LIGHT, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_POISONOUS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOMEOB, NA, NA, NA, "web"); - addflag(lastrace->flags, F_HOMELEVOB, NA, NA, NA, "1-10 webs"); - addrace(R_SPIDERFUNNELWEB, "giant funnelweb", 5, 'S', C_MAGENTA, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_SPIDER; - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 63, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 63, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4"); - 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_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, 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_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_LIGHT, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_POISONOUS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOMEOB, NA, NA, NA, "web"); - addflag(lastrace->flags, F_HOMELEVOB, NA, NA, NA, "20-30 webs"); - addrace(R_SPIDERREDBACK, "giant redback", 5, 'S', C_RED, MT_FLESH, RC_ANIMAL); - lastrace->baseid = R_SPIDER; - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 78, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 78, NA, ""); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4"); - 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_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, 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_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_LIGHT, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, UNLIMITED, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_POISONOUS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOMEOB, NA, NA, NA, "web"); - addflag(lastrace->flags, F_HOMELEVOB, NA, NA, NA, "10-20 webs"); - addrace(R_WOLFYOUNG, "young wolf", 10, 'd', C_GREY, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 87, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 97, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+2"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_CARNIVORE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 8, 8, NULL); - addflag(lastrace->flags, F_LEVRACE, 5, R_WOLF, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "whines in pain^whining"); - addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "growls^growling"); - addflag(lastrace->flags, F_FLEEONHPPCT, 75, NA, NA, ""); - addrace(R_WOLF, "wolf", 25, 'd', C_GREY, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, ""); - addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 90, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+3"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d5"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d5"); - addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_CARNIVORE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 5, 5, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 2, NA, "whines in pain^whining"); - addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "growls^growling"); - addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, ""); - - // insects - addrace(R_BUTTERFLY, "butterfly", 0.01, 'i', C_YELLOW, MT_FLESH, RC_ANIMAL); - addflag(lastrace->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastrace->flags, F_INSECT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYFAST, NA, NA, ""); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_TINY, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "0d4+1"); - addflag(lastrace->flags, F_EVASION, 60, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addrace(R_GIANTFLY, "giant fly", 1, 'i', C_GREY, MT_FLESH, RC_INSECT); - lastrace->baseid = R_GIANTFLY; - addflag(lastrace->flags, F_INSECT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 3, 3, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYFAST, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 85, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 85, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0"); - addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "buzzes angrily^an angry buzzing"); - addflag(lastrace->flags, F_NOISETEXT, N_FLY, 2, NA, "^buzzing"); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addrace(R_GIANTBLOWFLY, "giant blowfly", 2, 'i', C_WHITE, MT_FLESH, RC_INSECT); - lastrace->baseid = R_GIANTFLY; - addflag(lastrace->flags, F_INSECT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "giant fly corpse"); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 2, NA, ""); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYFAST, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4+1"); - addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "buzzes angrily^an angry buzzing"); - addflag(lastrace->flags, F_NOISETEXT, N_FLY, 2, NA, "^buzzing"); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addrace(R_STIRGE, "stirge", 10, 'i', C_BROWN, MT_FLESH, RC_INSECT); - addflag(lastrace->flags, F_INSECT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+1"); - addflag(lastrace->flags, F_ENHANCESMELL, 2, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "buzzes angrily^an angry buzzing"); - addflag(lastrace->flags, F_NOISETEXT, N_FLY, 2, NA, "^buzzing"); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_A_SUCKBLOOD, NA, NA, "dam:1d4;"); - - addrace(R_CENTIPEDE, "giant centipede", 3, 'w', C_GREEN, MT_FLESH, RC_INSECT); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 80, NA, ""); - addflag(lastrace->flags, F_INSECT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d6"); - addflag(lastrace->flags, F_HITCONFER, F_POISONED, SC_POISON, 25, "10-15"); - addflag(lastrace->flags, F_HITCONFERVALS, P_WEAKNESS, 3, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, 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_NOISETEXT, N_WALK, 1, NA, "^scuttling"); - addflag(lastrace->flags, F_TREMORSENSE, 3, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addrace(R_GLOWBUG, "glowbug", 1, 'i', C_WHITE, MT_FLESH, RC_INSECT); - addflag(lastrace->flags, F_INSECT, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_VERYFAST, NA, NA, ""); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 87, NA, ""); - addflag(lastrace->flags, F_RARITY, H_FOREST, 97, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0"); - addflag(lastrace->flags, F_EVASION, 60, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_ZAPPER, NA, NA, "1d2-1"); - addflag(lastrace->flags, F_CANWILL, OT_S_FLASH, 15, 15, "pw:4;"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "pulses"); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, 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_PRODUCESLIGHT, 2, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_POISONGAS, NA, NA, NULL); - addflag(lastrace->flags, F_NOISETEXT, N_FLY, 2, NA, "^buzzing"); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - - // demons - addrace(R_DRETCH, "dretch", 30, '&', C_BROWN, MT_FLESH, RC_DEMON); - 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_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d8+4"); - addflag(lastrace->flags, F_ARMOURRATING, 18, 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_LOW, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6+1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4"); - addflag(lastrace->flags, F_SEEINDARK, 10, NA, NA, NULL); - addflag(lastrace->flags, F_DETECTLIFE, 10, 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_COLD, 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_CANWILL, OT_S_CLOUDKILL, 20, 20, "pw:1;"); - addflag(lastrace->flags, F_CANWILL, OT_S_SUMMONDEMON, 20, 20, "pw:3;"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "narrows its eyes"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "roars^an other-wordly roar"); - - addrace(R_LURKINGHORROR, "lurking horror", 100, 'U', C_MAGENTA, MT_FLESH, RC_DEMON); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+0"); - addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_EYES, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_INDUCEFEAR, 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_DEAF, B_TRUE, NA, NA, NULL); - - addrace(R_QUASIT, "quasit", 4, '&', C_BROWN, MT_FLESH, RC_DEMON); - 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_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d8"); - addflag(lastrace->flags, F_REGENERATES, 2, NA, NA, NULL); - addflag(lastrace->flags, F_ARMOURRATING, 18, 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_LTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_HIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LOW, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d3-1"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4-1"); - addflag(lastrace->flags, F_HITCONFER, F_POISONED, SC_POISON, 28, "3-5"); - addflag(lastrace->flags, F_HITCONFERVALS, P_VENOM, 2, 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_DTRESIST, DT_FIRE, 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_CANWILL, OT_S_FEAR, 20, 20, "pw:1;"); - addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 20, 20, "pw:1;"); - addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "narrows its eyes"); - addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "screechs^an other-wordly screech"); - - // undead - addrace(R_ZOMBIE, "zombie", 50, 'Z', C_BLUE, MT_FLESH, RC_UNDEAD); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, NA, NA, "6"); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, 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_HITDICE, NA, NA, NA, "2d4+4"); - addflag(lastrace->flags, F_ARMOURRATING, 5, 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_ACTIONSPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d5"); - addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_SKELETON, "skeleton", 20, 'Z', C_GREY, MT_BONE, RC_UNDEAD); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "5-20 bones"); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_EVASION, -10, 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_HASATTACK, OT_TEETH, NA, NA, "1d5"); - addflag(lastrace->flags, F_STARTOBDT, 50, DT_CHOP, NA, NULL); - addflag(lastrace->flags, F_STARTOB, 25, DT_CHOP, NA, "buckler"); - addflag(lastrace->flags, F_DTVULN, DT_BASH, NA, NA, NULL); - addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_GHAST, "ghast", 50, 'Z', C_MAGENTA, MT_FLESH, RC_UNDEAD); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 55, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+2"); - addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6"); - addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE2, NA, NA, "1d1"); - addflag(lastrace->flags, F_CARNIVORE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, NA, NA, NULL); - addflag(lastrace->flags, F_LEVITATING, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_GHOST, "ghost", 50, 'p', C_BLUE, MT_MAGIC, RC_UNDEAD); // p for sPirit - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 72, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+2"); - addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, ""); - addflag(lastrace->flags, F_NONCORPOREAL, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_XRAYVIS, 3, 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_INDUCEFEAR, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_CANWILL, OT_S_INVISIBILITY, 40, 40, "pw:1;"); - // special: ghosts gain canwill->possession if they are near - // their previous corpse. use f_mycorpse->oid for this. - - addrace(R_GHOUL, "ghoul", 50, 'Z', C_BLUE, MT_FLESH, RC_UNDEAD); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+2"); - addflag(lastrace->flags, F_EVASION, -10, NA, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_SLOW, NA, NA, ""); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d5+3"); - addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE, NA, NA, "1d1"); - addflag(lastrace->flags, F_CARNIVORE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_VAMPIRE, "vampire", 75, 'V', C_BLUE, MT_FLESH, RC_UNDEAD); - addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_STR, AT_EXHIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_DEX, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_WIS, AT_GTAVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, AT_EXHIGH, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_CHA, AT_VHIGH, NA, NULL); - addflag(lastrace->flags, F_RARITY, H_DUNGEON, 65, RR_RARE, NULL); - addflag(lastrace->flags, F_NOCORPSE, 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_VAMPIRIC, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL); - addflag(lastrace->flags, F_DTVULN, DT_LIGHT, NA, NA, "3d6"); - addflag(lastrace->flags, F_MATVULN, MT_SILVER, 200, NA, NULL); - addflag(lastrace->flags, F_SEEINVIS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_SEEINDARK, 8, NA, NA, NULL); - addflag(lastrace->flags, F_AVOIDOBTYPE, OT_GARLIC, B_TRUE, NA, NULL); - addflag(lastrace->flags, F_MOVESPEED, SP_FAST, NA, NA, NULL); - addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "8d4+3"); - addflag(lastrace->flags, F_ARMOURRATING, 5, NA, NA, NULL); - addflag(lastrace->flags, F_EVASION, -10, NA, NA, NULL); - addflag(lastrace->flags, F_HOMEOB, NA, NA, NA, "coffin"); - addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d6+4"); - addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4+3"); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_RETAINHPMPONPOLY, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_CANWILL, OT_S_CHARM, 3, 3, "pw:6;"); - addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, 5, 5, "range:3;"); - addflag(lastrace->flags, F_CANWILL, OT_S_STUN, 5, 5, "pw:1;"); - addflag(lastrace->flags, F_CANWILL, OT_S_POLYMORPH, 3, 3, "pw:1;race:vampire bat;"); - 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_SPELLCASTTEXT, NA, NA, NA, "gestures"); - addflag(lastrace->flags, F_NOISETEXT, N_FRUSTRATED, 3, NA, "hisses angrily^an angry hiss"); - - // special: change to gas cloud with 1 hp on death, if not asleep - // special: flee from garlic - // TODO: can shapeshift to bat - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - // special monsters - addrace(R_GASCLOUD, "cloud of gas", 0.1, '}', C_GREY, MT_GAS, RC_OTHER); - addflag(lastrace->flags, F_MOVESPEED, SP_ULTRAFAST, NA, NA, ""); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+1"); - addflag(lastrace->flags, F_EVASION, 300, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_WEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_BODY, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 4, NA, NA, NULL); - addflag(lastrace->flags, F_DTIMMUNE, DT_ALL, NA, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - // special: fully heal if our origrace is a vampire, and we are resting over a coffin - - addrace(R_DANCINGWEAPON, "dancing weapon", 0, ')', C_GREY, MT_METAL, RC_OTHER); - addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL); - addflag(lastrace->flags, F_FLYING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4"); - addflag(lastrace->flags, F_EVASION, 50, NA, NA, NULL); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_BODY, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NODEATHANNOUNCE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - addrace(R_FLOATINGDISC, "floating disc", 0, '_', C_BOLDGREEN, MT_METAL, RC_OTHER); - addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_MINDLESS, NA, NULL); - addflag(lastrace->flags, F_LEVITATING, B_TRUE, NA, NA, ""); - addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4"); - addflag(lastrace->flags, F_BLOODOB, NA, NA, NA, NULL); - addflag(lastrace->flags, F_FOLLOWRANGE, 1, 1, NA, NULL); // stay right next to master - addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_INVULNERABLE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SECWEAPON, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEFTFINGER, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HANDS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_HEAD, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_BODY, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL); - addflag(lastrace->flags, F_NOBODYPART, BP_FEET, NA, NA, NULL); - addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_NODEATHANNOUNCE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL); - addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL); - addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL); - - // now do final steps in race initialisation: - // - add flags based on raceclass, etc - // - fill in missing alignments - for (r = firstrace ; r ; r = r->next) { - if (r->raceclass->id == RC_AQUATIC) { - addflag(r->flags, F_HASSKILL, SK_SWIMMING, PR_MASTER, NA, NULL); - addflag(r->flags, F_AQUATIC, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_BREATHWATER, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_WATER, NA, NA, NULL); - } else if (r->raceclass->id == RC_DEMON) { - addflag(r->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_MATVULN, MT_SILVER, 200, NA, NULL); - } else if (r->raceclass->id == RC_GOD) { - addflag(r->flags, F_PIETY, 100, NA, NA, NULL); - addflag(r->flags, F_HUMANOID, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_MORALE, 10, NA, NA, NULL); - addflag(r->flags, F_BREATHWATER, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_NECROTIC, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_POISONGAS, NA, NA, NULL); - addflag(r->flags, F_FLEEONHPPCT, 20, NA, NA, NULL); - addflag(r->flags, F_RESISTMAG, 15, NA, NA, NULL); - addflag(r->flags, F_MORALE, 40, NA, NA, NULL); - } else if (r->raceclass->id == RC_MAGIC) { - addflag(r->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL); - } else if (r->raceclass->id == RC_PLANT) { - addflag(r->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_DTRESIST, DT_BASH, NA, NA, NULL); - addflag(r->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); - addflag(r->flags, F_DTVULN, DT_COLD, NA, NA, NULL); - addflag(r->flags, F_DTVULN, DT_DECAY, NA, NA, NULL); - addflag(r->flags, F_FLAMMABLE, PERMENANT, NA, NA, NULL); - } else if (r->raceclass->id == RC_SLIME) { - addflag(lastrace->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL); - } else if (r->raceclass->id == RC_UNDEAD) { - addflag(r->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_POISONGAS, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_DECAY, NA, NA, NULL); - addflag(r->flags, F_DTIMMUNE, DT_NECROTIC, NA, NA, NULL); - addflag(r->flags, F_DTVULN, DT_HOLY, NA, NA, NULL); - addflag(r->flags, F_SEEINDARK, B_TRUE, NA, NA, NULL); - } - - // fill in missins alignments - if (!hasflag(r->flags, F_ALIGNMENT)) { - addflag(r->flags, F_ALIGNMENT, AL_NEUTRAL, NA, NA, NULL); - } - } -} - int isairborne(lifeform_t *lf) { if (!lf) return B_FALSE; if (lfhasflag(lf, F_FLYING)) { @@ -15787,312 +12325,6 @@ void setlastdam(lifeform_t *lf, char *buf) { lf->lastdam = strdup(buf); } -void initskills(void) { - skill_t *sk; - addskill(SK_ARMOUR, "Armour", "Reduces evasion and stealth penalties from wearing armour.", 100); - addskilldesc(SK_ARMOUR, PR_INEPT, "- Reduces the noise you make when wearing metal armour.", B_FALSE); - addskilldesc(SK_ARMOUR, PR_NOVICE, "^gReduces armour evasion penalties by 10%.", B_FALSE); - addskilldesc(SK_ARMOUR, PR_BEGINNER, "^gReduces armour evasion penalties by 20%.", B_FALSE); - addskilldesc(SK_ARMOUR, PR_ADEPT, "^gReduces armour evasion penalties by 30%.", B_FALSE); - addskilldesc(SK_ARMOUR, PR_SKILLED, "^gReduces armour evasion penalties by 40%.", B_FALSE); - addskilldesc(SK_ARMOUR, PR_EXPERT, "^gReduces armour evasion penalties by 50%.", B_FALSE); - addskilldesc(SK_ARMOUR, PR_MASTER, "^gReduces armour evasion penalties by 60%.", B_FALSE); - addskill(SK_ATHLETICS, "Athletics", "Grants various athletic abilities.", 50); - addskilldesc(SK_ATHLETICS, PR_NOVICE, "^gYou gain the 'sprint' ability.", B_FALSE); - addskilldesc(SK_ATHLETICS, PR_ADEPT, "^gYou gain the 'tumble' ability.", B_FALSE); - addskilldesc(SK_ATHLETICS, PR_EXPERT, "^gYou gain the 'jump' ability.", B_FALSE); - addskill(SK_BACKSTAB, "Backstab", "Lets you inflict massive damage with stabs when unseen.", 50); - addskilldesc(SK_BACKSTAB, PR_NOVICE, "^gYour unseen attacks inflict double damage.", B_FALSE); - addskilldesc(SK_BACKSTAB, PR_BEGINNER, "^gYour unseen attacks inflict triple damage.", B_FALSE); - addskilldesc(SK_BACKSTAB, PR_ADEPT, "^gYour unseen attacks inflict quadruple damage.", B_FALSE); - addskilldesc(SK_BACKSTAB, PR_SKILLED, "^gYour unseen attacks inflict 5x damage.", B_FALSE); - addskilldesc(SK_BACKSTAB, PR_EXPERT, "^gYour unseen attacks inflict 6x damage.", B_FALSE); - addskilldesc(SK_BACKSTAB, PR_MASTER, "^gYour unseen attacks inflict 7x damage.", B_FALSE); - addskill(SK_CARTOGRAPHY, "Cartography", "Your ability to create and interpret maps.", 0); // untrainable - addskilldesc(SK_CARTOGRAPHY, PR_INEPT, "- Without this skill, you will quickly forget your surroundings.", B_FALSE); - addskilldesc(SK_CARTOGRAPHY, PR_NOVICE, "^gYou can now remember the basics of your surroundings.", B_TRUE); - addskilldesc(SK_CARTOGRAPHY, PR_BEGINNER, "^gYou can now remember the location of staircases.", B_TRUE); - addskilldesc(SK_CARTOGRAPHY, PR_ADEPT, "^gYour can now remember the location of doors.", B_TRUE); - addskilldesc(SK_CARTOGRAPHY, PR_SKILLED, "^gYou no longer forget your surroundings.", B_FALSE); - addskilldesc(SK_CARTOGRAPHY, PR_EXPERT, "^gYour can now remember the location of objects.", B_TRUE); - addskilldesc(SK_CARTOGRAPHY, PR_MASTER, "^gEvery 50 turns, you can intuitively map a small area around you.", B_FALSE); - addskill(SK_CHANNELING, "Channeling", "Lets you make better use of magical items.", 0); // untrainable - addskilldesc(SK_CHANNELING, PR_NOVICE, "^gThe power level of wands and scrolls is increased by 1.", B_FALSE); - addskilldesc(SK_CHANNELING, PR_BEGINNER, "^gThe power level of wands and scrolls is increased by 2.", B_FALSE); - addskilldesc(SK_CHANNELING, PR_ADEPT, "^gThe power level of wands and scrolls is increased by 4.", B_FALSE); - addskilldesc(SK_CHANNELING, PR_SKILLED, "^gThe power level of wands and scrolls is increased by 6.", B_FALSE); - addskilldesc(SK_CHANNELING, PR_EXPERT, "^gThe power level of wands and scrolls is increased by 8.", B_FALSE); - addskilldesc(SK_CHANNELING, PR_MASTER, "^gThe power level of wands and scrolls is increased by 10.", B_FALSE); - addskill(SK_CLIMBING, "Climbing", "Helps you to climb walls, mountains or other terrain.", 50); - addskilldesc(SK_CLIMBING, PR_INEPT, "- Increases you chances of successfully climbing by 10% per level.", B_FALSE); - addskill(SK_COOKING, "Cooking", "Your ability to combine foods into nutritious meals.", 50); - addskilldesc(SK_COOKING, PR_NOVICE, "^gYou now recognise water and rotting food.", B_TRUE); - addskilldesc(SK_COOKING, PR_BEGINNER, "^gYou can now recognise all kinds of bad food.", B_TRUE); - addskilldesc(SK_COOKING, PR_ADEPT, "^gYou can use the 'cook' ability to make jerky.", B_FALSE); - addskilldesc(SK_COOKING, PR_EXPERT, "^gYou can use the 'cook' ability to make stew.", B_FALSE); - addskill(SK_EVASION, "Evasion", "Your ability to dodge blows or traps.", 50); - addskilldesc(SK_EVASION, PR_NOVICE, "^gIncreases your EV by 5%.", B_FALSE); - addskilldesc(SK_EVASION, PR_BEGINNER, "^gIncreases your EV by 10%.", B_FALSE); - addskilldesc(SK_EVASION, PR_ADEPT, "^gIncreases your EV by 15%.", B_FALSE); - addskilldesc(SK_EVASION, PR_SKILLED, "^gIncreases your EV by 20%.", B_FALSE); - addskilldesc(SK_EVASION, PR_EXPERT, "^gIncreases your EV by 25%.", B_FALSE); - addskilldesc(SK_EVASION, PR_MASTER, "^gIncreases your EV by 30%.", B_FALSE); - addskill(SK_FIRSTAID, "First Aid", "Increases your healing rate and reduces duration of poison.", 0); // untrainable - addskilldesc(SK_FIRSTAID, PR_INEPT, "- Lets you recognise how healthy your opponents are.", B_FALSE); - addskilldesc(SK_FIRSTAID, PR_INEPT, "- Determines how fast you heal when resting. ", B_FALSE); - addskilldesc(SK_FIRSTAID, PR_INEPT, "- Determines how long poison effects will last.", B_FALSE); - addskilldesc(SK_FIRSTAID, PR_ADEPT, "^gYou can now recognise when poison is potentially fatal.", B_TRUE); - addskill(SK_LISTEN, "Listen", "How good you are at hearing and interpreting sounds.", 200); - addskilldesc(SK_LISTEN, PR_NOVICE, "^gYou now gauge the distance of sounds.", B_TRUE); - addskilldesc(SK_LISTEN, PR_BEGINNER, "^gYou now more accurately gauge the distance of sounds.", B_TRUE); - addskilldesc(SK_LISTEN, PR_ADEPT, "^gYou can now determine the direction sounds are coming from.", B_TRUE); - addskilldesc(SK_LISTEN, PR_EXPERT, "^gYou can now identify monsters based on sound.", B_TRUE); - addskilldesc(SK_LISTEN, PR_MASTER, "^gYou can now locate monsters based on sound.", B_TRUE); - addskill(SK_LOCKPICKING, "Lockpicking", "Enhances your ability to pick locks.", 50); - addskill(SK_METALWORK, "Metalwork", "Lets you repair metal objects.", 100); - addskilldesc(SK_METALWORK, PR_NOVICE, "^gYou can repair metal items up to 33% condition.", B_FALSE); - addskilldesc(SK_METALWORK, PR_BEGINNER, "^gYou can repair metal items up to 50% condition.", B_FALSE); - addskilldesc(SK_METALWORK, PR_ADEPT, "^gYou can repair metal items up to 60% condition.", B_FALSE); - addskilldesc(SK_METALWORK, PR_SKILLED, "^gYou can repair metal items up to 70% condition.", B_FALSE); - addskilldesc(SK_METALWORK, PR_EXPERT, "^gYou can repair metal items up to 85% condition.", B_FALSE); - addskilldesc(SK_METALWORK, PR_MASTER, "^gYou can fully repair metal items.", B_FALSE); - addskill(SK_RANGED, "Ranged Weapons", "Your ability to aim a ranged weapon like a bow or gun.", 50); - addskilldesc(SK_RANGED, PR_NOVICE, "^gYou suffer a -20% accuracy penalty when using ranged weapons.", B_FALSE); - addskilldesc(SK_RANGED, PR_BEGINNER, "^gYou suffer a -10% accuracy penalty when using ranged weapons.", B_FALSE); - addskilldesc(SK_RANGED, PR_ADEPT, "^gYou no longer suffer a accuracy penalty when using ranged weapons.", B_FALSE); - addskilldesc(SK_RANGED, PR_SKILLED, "^gYou gain a +10% accuracy bonus when using ranged weapons.", B_FALSE); - addskilldesc(SK_RANGED, PR_EXPERT, "^gYou gain a +20% accuracy bonus when using ranged weapons.", B_FALSE); - addskilldesc(SK_RANGED, PR_MASTER, "^gYou gain a +30% accuracy bonus when using ranged weapons.", B_FALSE); - addskill(SK_SEWING, "Sewing", "Lets you repair cloth or leather objects.", 100); - addskilldesc(SK_SEWING, PR_NOVICE, "^gYou can repair cloth items up to 33% condition.", B_FALSE); - addskilldesc(SK_SEWING, PR_BEGINNER, "^gYou can repair cloth items up to 50% condition", B_FALSE); - addskilldesc(SK_SEWING, PR_ADEPT, "^gYou can repair cloth items up to 60% condition", B_FALSE); - addskilldesc(SK_SEWING, PR_SKILLED, "^gYou can repair cloth items up to 70% condition", B_FALSE); - addskilldesc(SK_SEWING, PR_EXPERT, "^gYou can repair cloth items up to 85% condition", B_FALSE); - addskilldesc(SK_SEWING, PR_MASTER, "^gYou can fully repair cloth items.", B_FALSE); - addskill(SK_SHIELDS, "Shields", "Reduces shield accuracy penalty, and raises chance to block attacks.", 50); - addskilldesc(SK_SHIELDS, PR_INEPT, "- Without this skill, shield accuracy penalties are tripled.", B_FALSE); - addskilldesc(SK_SHIELDS, PR_NOVICE, "^gShield accuracy penalties are reduced by 5%.", B_FALSE); - addskilldesc(SK_SHIELDS, PR_BEGINNER, "^gShield accuracy penalties are reduced by 10%.", B_FALSE); - addskilldesc(SK_SHIELDS, PR_ADEPT, "^gShield accuracy penalties are reduced by 15%.", B_FALSE); - addskilldesc(SK_SHIELDS, PR_SKILLED, "^gShield accuracy penalties are reduced by 20%.", B_FALSE); - addskilldesc(SK_SHIELDS, PR_EXPERT, "^gShield accuracy penalties are reduced by 25%.", B_FALSE); - addskilldesc(SK_SHIELDS, PR_MASTER, "^gShield accuracy penalties are reduced by 30%.", B_FALSE); - addskill(SK_SPEECH, "Negotiation", "Your skill at haggling prices, or swaying others through speech.", 50); - addskilldesc(SK_SPEECH, PR_NOVICE, "^gShop item prices are reduced by 5%.", B_FALSE); - addskilldesc(SK_SPEECH, PR_BEGINNER, "^gShop item prices are reduced by 10%.", B_FALSE); - addskilldesc(SK_SPEECH, PR_ADEPT, "^gShop item prices are reduced by 15%.", B_FALSE); - addskilldesc(SK_SPEECH, PR_SKILLED, "^gShop item prices are reduced by 20%.", B_FALSE); - addskilldesc(SK_SPEECH, PR_EXPERT, "^gShop item prices are reduced by 25%.", B_FALSE); - addskilldesc(SK_SPEECH, PR_MASTER, "^gShop item prices are reduced by 30%.", B_FALSE); - addskill(SK_SPELLCASTING, "Sorcery", "Increases the power of spells from all schools except Allomancy, Nature and Psionics.", 50); - addskilldesc(SK_SPELLCASTING, PR_NOVICE, "^gYou gain the 'study scrolls' ability.", B_FALSE); - addskill(SK_PERCEPTION, "Perception", "Your ability to notice hidden details, from simple footprints to sinister traps.", 50); - addskilldesc(SK_PERCEPTION, PR_INEPT, "- At higher levels this skill will also let you obscure your own tracks.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_NOVICE, "^gYou can now see footprints.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_BEGINNER, "^gYou can now determine how recently footprints were made.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_ADEPT, "^gYou can now identify creatures from their footprints.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_ADEPT, "^gYour field of vision is now wider.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_SKILLED, "^gYou can now recognise the direction of footprints.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_EXPERT, "^gYou can now move without leaving footprints.", B_TRUE); - addskilldesc(SK_PERCEPTION, PR_MASTER, "^gYou now have perception of your blind spots.", B_TRUE); - addskill(SK_STEALTH, "Stealth", "Affects your ability to move silently.", 0); // untrainable? - addskilldesc(SK_STEALTH, PR_BEGINNER, "^gYou gain the 'hide' ability.", B_FALSE); - addskilldesc(SK_STEALTH, PR_EXPERT, "^gYou can now hide even when monsters are nearby.", B_TRUE); - addskill(SK_SWIMMING, "Swimming", "Allows you to safely swim through deep water.", 50); - addskilldesc(SK_SWIMMING, PR_NOVICE, "^gYou can now swim.", B_TRUE); - addskilldesc(SK_SWIMMING, PR_BEGINNER, "^gYou can now swim a bit faster.", B_TRUE); - addskilldesc(SK_SWIMMING, PR_ADEPT, "^gYou can now swim a bit faster.", B_TRUE); - addskilldesc(SK_SWIMMING, PR_SKILLED, "^gYou can now swim a bit faster.", B_TRUE); - addskilldesc(SK_SWIMMING, PR_EXPERT, "^gYou can now attack (awkwardly) and cast spells while swimming.", B_TRUE); - addskilldesc(SK_SWIMMING, PR_MASTER, "^gYou can now attack while swimming with no penalty.", B_TRUE); - addskill(SK_TECHUSAGE, "Technology", "Determines your comprehension of modern technological items.", 0); // untrain - addskill(SK_THIEVERY, "Thievery", "Your ability to pick pockets and steal items.", 50); - addskilldesc(SK_THIEVERY, PR_NOVICE, "^gYou gain the 'steal' ability, usable on enemies or in shops.", B_FALSE); - addskilldesc(SK_THIEVERY, PR_BEGINNER, "^gYour accuracy penalty when stealing is reduced.", B_TRUE); - addskilldesc(SK_THIEVERY, PR_ADEPT, "^gYou can now choose which items to steal.", B_TRUE); - addskilldesc(SK_THIEVERY, PR_SKILLED, "gYou can now steal heavy items.", B_TRUE); - addskilldesc(SK_THIEVERY, PR_EXPERT, "gYou can now steal multiple items.", B_TRUE); - addskilldesc(SK_THIEVERY, PR_MASTER, "gYou can now steal equipped items.", B_TRUE); - addskill(SK_THROWING, "Throwing", "Your accuracy when throwing objects at things.", 50); - addskilldesc(SK_RANGED, PR_NOVICE, "^gYou suffer a -20% accuracy penalty when throwing items.", B_FALSE); - addskilldesc(SK_RANGED, PR_BEGINNER, "^gYou suffer a -10% accuracy penalty when throwing items.", B_FALSE); - addskilldesc(SK_RANGED, PR_ADEPT, "^gYou no longer suffer a accuracy penalty when throwing items.", B_FALSE); - addskilldesc(SK_RANGED, PR_SKILLED, "^gYou gain a +10% accuracy bonus when throwing items.", B_FALSE); - addskilldesc(SK_RANGED, PR_EXPERT, "^gYou gain a +20% accuracy bonus when throwing items.", B_FALSE); - addskilldesc(SK_RANGED, PR_MASTER, "^gYou gain a +30% accuracy bonus when throwing items.", B_FALSE); - addskill(SK_TRAPS, "Traps", "Affects your ability to locate and disarm traps.", 25); - addskilldesc(SK_TRAPS, PR_NOVICE, "^gYou gain the 'disarm traps' ability.", B_FALSE); - addskill(SK_TWOWEAPON, "Dual Weilding", "Allows you to weild two melee weapons at once.", 50); - addskilldesc(SK_TWOWEAPON, PR_NOVICE, "^gYou can now weild two weapons at once.", B_TRUE); - addskilldesc(SK_TWOWEAPON, PR_ADEPT, "^gYou no longer suffer an accuracy penalty when weilding two weapons.", B_TRUE); - addskilldesc(SK_TWOWEAPON, PR_SKILLED, "^gFollow-up attacks with your second weapon are now more accurate.", B_TRUE); - addskilldesc(SK_TWOWEAPON, PR_EXPERT, "^gYou gain the 'flurry attack' ability.", B_FALSE); - addskilldesc(SK_TWOWEAPON, PR_MASTER, "^gYou can now deflect attacks with your second weapon.", B_TRUE); - // knowledge - addskill(SK_LORE_ARCANA, "Lore:Arcana", "Allows you a chance of recognising magical objects and creatures.", 0); - addskilldesc(SK_LORE_ARCANA, PR_NOVICE, "^gYou can attempt to identify objects with the 'inspect' ability.", B_FALSE); - addskill(SK_LORE_DEMONS, "Lore:Demonology", "Determines your knowledge about demons.", 0); - addskill(SK_LORE_HUMANOID, "Lore:Humanoid", "Determines your knowledge about humanoid (bipedal) creatures.", 0); - addskill(SK_LORE_NATURE, "Lore:Nature", "Determines your knowledge of plants, animals and insects.", 0); - addskill(SK_LORE_UNDEAD, "Lore:Undead", "Determines your knowledge of the undead.", 0); - - - // weaponry - addskill(SK_AXES, "Axes", "Helps you use chopping weapons like axes.", 50); - addskill(SK_CLUBS, "Clubs", "Helps you use bashing weapons like maces or clubs.", 50); - addskill(SK_LONGBLADES, "Long Blades", "Helps you use long swords, scimitars, etc.", 50); - addskill(SK_POLEARMS, "Polearms", "Helps you use long bladed weapons like halberds.", 50); - addskill(SK_SHORTBLADES, "Short Blades", "Helps you use daggers, short swords, etc.", 50); - addskill(SK_STAVES, "Staves", "Helps you use quarterstaffs, staffs, etc.", 50); - addskill(SK_UNARMED, "Unarmed Combat", "Helps you fight using your bare hands.", 50); - addskilldesc(SK_UNARMED, PR_ADEPT, "^gYour unarmed attacks can now smash wooden objects.", B_TRUE); - addskilldesc(SK_UNARMED, PR_SKILLED, "^gYou can now make melee attacks with your off-hand.", B_TRUE); - - // spell schools - addskill(SK_SS_ALLOMANCY, "Allomancy", "Boosts casting of spells from this school.", 50); - 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); - addskilldesc(SK_SS_ALLOMANCY, PR_SKILLED, "Allows you to cast Allomancy spells up to level 4.", 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); - addskill(SK_SS_MENTAL, "Psionics", "Boosts casting of spells from this school.", 50); - addskilldesc(SK_SS_MENTAL, PR_INEPT, "- Each rank gives you a 10%% 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_BEGINNER, "Allows you to cast Psionic spells up to level 2.", B_FALSE); - addskilldesc(SK_SS_MENTAL, PR_ADEPT, "Allows you to cast Psionic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_MENTAL, PR_SKILLED, "Allows you to cast Psionic spells up to level 4.", 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); - addskill(SK_SS_NATURE, "Enviromancy", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Nature spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_NATURE, PR_SKILLED, "Allows you to cast Nature spells up to level 4.", 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); - addskill(SK_SS_AIR, "Magic:Air Magic", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Air Magic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_AIR, PR_SKILLED, "Allows you to cast Air Magic spells up to level 4.", 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); - addskill(SK_SS_DEATH, "Magic:Necromancy", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Necromancy spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_DEATH, PR_SKILLED, "Allows you to cast Necromancy spells up to level 4.", 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); - addskill(SK_SS_DIVINATION, "Magic:Divination", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Divination spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_DIVINATION, PR_SKILLED, "Allows you to cast Divination spells up to level 4.", 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); - addskill(SK_SS_ENCHANTMENT, "Magic:Enchantment", "Boosts casting of spells from this school.", 50); - addskilldesc(SK_SS_ENCHANTMENT, PR_NOVICE, "Allows you to cast Enchantment spells up to level 1.", B_FALSE); - addskilldesc(SK_SS_ENCHANTMENT, PR_BEGINNER, "Allows you to cast Enchantment spells up to level 2.", B_FALSE); - addskilldesc(SK_SS_ENCHANTMENT, PR_ADEPT, "Allows you to cast Enchantment spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_ENCHANTMENT, PR_SKILLED, "Allows you to cast Enchantment spells up to level 4.", B_FALSE); - addskilldesc(SK_SS_ENCHANTMENT, PR_EXPERT, "Allows you to cast Enchantment spells up to level 5.", B_FALSE); - addskilldesc(SK_SS_ENCHANTMENT, PR_MASTER, "Allows you to cast Enchantment spells up to level 6.", B_FALSE); - addskill(SK_SS_FIRE, "Magic:Fire Magic", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Fire Magic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_FIRE, PR_SKILLED, "Allows you to cast Fire Magic spells up to level 4.", 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); - addskill(SK_SS_COLD, "Magic:Cold Magic", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Cold Magic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_COLD, PR_SKILLED, "Allows you to cast Cold Magic spells up to level 4.", 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); - addskill(SK_SS_GRAVITY, "Magic:Gravitation Magic", "Boosts casting of spells from this school.", 50); - addskilldesc(SK_SS_GRAVITY, PR_NOVICE, "Allows you to cast Gravitation Magic spells up to level 1.", B_FALSE); - addskilldesc(SK_SS_GRAVITY, PR_BEGINNER, "Allows you to cast Gravitation Magic spells up to level 2.", B_FALSE); - addskilldesc(SK_SS_GRAVITY, PR_ADEPT, "Allows you to cast Gravitation Magic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_GRAVITY, PR_SKILLED, "Allows you to cast Gravitation Magic spells up to level 4.", B_FALSE); - addskilldesc(SK_SS_GRAVITY, PR_EXPERT, "Allows you to cast Gravitation Magic spells up to level 5.", B_FALSE); - addskilldesc(SK_SS_GRAVITY, PR_MASTER, "Allows you to cast Gravitation Magic spells up to level 6.", B_FALSE); - addskill(SK_SS_LIFE, "Magic:Life Magic", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Life Magic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_LIFE, PR_SKILLED, "Allows you to cast Life Magic spells up to level 4.", 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); - addskill(SK_SS_MODIFICATION, "Magic:Modification", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Modification spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_MODIFICATION, PR_SKILLED, "Allows you to cast Modification spells up to level 4.", 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); - addskill(SK_SS_SUMMONING, "Magic:Summoning", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Summoning spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_SUMMONING, PR_SKILLED, "Allows you to cast Summoning spells up to level 4.", 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); - addskill(SK_SS_TRANSLOCATION, "Magic:Translocation", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Translocation spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_TRANSLOCATION, PR_SKILLED, "Allows you to cast Translocation spells up to level 4.", 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); - addskill(SK_SS_WILD, "Magic:Wild Magic", "Boosts casting of spells from this school.", 50); - 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_ADEPT, "Allows you to cast Wild Magic spells up to level 3.", B_FALSE); - addskilldesc(SK_SS_WILD, PR_SKILLED, "Allows you to cast Wild Magic spells up to level 4.", B_FALSE); - addskilldesc(SK_SS_WILD, PR_EXPERT, "Allows you to cast Wild Magic spells up to level 5.", B_FALSE); - addskilldesc(SK_SS_WILD, PR_MASTER, "Allows you to cast Wild Magic spells up to level 6.", B_FALSE); - - for (sk = firstskill ; sk ; sk = sk->next) { - if (isloreskill(sk->id)) { - raceclass_t *rc; - // find raceclass for this one - for (rc = firstraceclass ; rc ; rc = rc->next) { - if (rc->skill == sk->id) { - break; - } - } - if (rc) { - char buf[BUFLEN]; - snprintf(buf, BUFLEN, "^gYou now know basic information about %s.", rc->pluralname); - addskilldesc(sk->id, PR_NOVICE, buf, B_TRUE); - snprintf(buf, BUFLEN, "^gYou can now determine how much damage %s will deal.", rc->pluralname); - addskilldesc(sk->id, PR_BEGINNER, buf, B_TRUE); - snprintf(buf, BUFLEN, "^gYou can now determine how dangerous %s are.", rc->pluralname); - addskilldesc(sk->id, PR_ADEPT, buf, B_TRUE); - snprintf(buf, BUFLEN, "^gYou can now anticipate how %s will react.", rc->pluralname); - addskilldesc(sk->id, PR_SKILLED, buf, B_TRUE); - snprintf(buf, BUFLEN, "^gYou now know everything there is to know about %s.", rc->pluralname); - addskilldesc(sk->id, PR_MASTER, buf, B_TRUE); - } - } - - if (isweaponskill(sk->id) || (sk->id == SK_UNARMED)) { - addskilldesc(sk->id, PR_INEPT, "This skill increases your accuracy and damage when using matching weapons.", B_FALSE); - addskilldesc(sk->id, PR_NOVICE, "^g-10% accuracy penalty.", B_FALSE); - addskilldesc(sk->id, PR_BEGINNER, "^g-5% accuracy penalty, +10% damage bonus", B_FALSE); - addskilldesc(sk->id, PR_ADEPT, "^gNo accuracy penalty, +20% damage bonus.", B_FALSE); - addskilldesc(sk->id, PR_SKILLED, "^g+25% accuracy bonus, +30% damage bonus.", B_FALSE); - addskilldesc(sk->id, PR_EXPERT, "^g+50% accuracy bonus, +40% damage bonus.", B_FALSE); - addskilldesc(sk->id, PR_MASTER, "^g+50% damage bonus, and you can perform combination strikes.", B_FALSE); - } - } -} void interrupt(lifeform_t *lf) { stopeating(lf); diff --git a/lf.h b/lf.h index c8c0a93..a2a6e70 100644 --- a/lf.h +++ b/lf.h @@ -238,9 +238,6 @@ flag_t *hasactivespell(lifeform_t *lf, enum OBTYPE sid); int haslof(cell_t *src, cell_t *dest, enum LOFTYPE loftype, cell_t **newdest); int haslos(lifeform_t *viewer, cell_t *dest); int haslos_fast(lifeform_t *viewer, cell_t *dest); -void initjobs(void); -void initrace(void); -void initskills(void); void interrupt(lifeform_t *lf); int isairborne(lifeform_t *lf); int isaquatic(lifeform_t *lf); diff --git a/nexus.c b/nexus.c index ca112c4..99d113b 100644 --- a/nexus.c +++ b/nexus.c @@ -8,6 +8,7 @@ #include #include "ai.h" #include "attack.h" +#include "data.h" #include "io.h" #include "flag.h" #include "lf.h" @@ -469,31 +470,6 @@ celltype_t *addcelltype(int id, char *name, char glyph, int colour, int solid, i return a; } -command_t *addcommand(enum COMMAND id, char ch, char *desc) { - command_t *a; - - // add to the end of the list - if (firstcommand == NULL) { - firstcommand = malloc(sizeof(command_t)); - a = firstcommand; - a->prev = NULL; - } else { - // go to end of list - a = lastcommand; - a->next = malloc(sizeof(command_t)); - a->next->prev = a; - a = a->next; - } - lastcommand = a; - a->next = NULL; - - // set props - a->id = id; - a->ch = ch; - a->desc = strdup(desc); - - return a; -} void checkdeath(void) { lifeform_t *lf, *nextlf; @@ -966,51 +942,6 @@ void initbresnham(int x1, int y1, int x2, int y2, int *xinc1, int *yinc1, int *d } } -void initcommands(void) { - // Actions - addcommand(CMD_UP, '<', "Go up stairs."); - addcommand(CMD_DOWN, '>', "Go down stairs, enter a shop/portal."); - addcommand(CMD_REST, '.', "Rest once."); - addcommand(CMD_PICKUP, ',', "Pick up something from the ground."); - addcommand(CMD_CLOSE, 'c', "Close a door."); - addcommand(CMD_COMMS, 'C', "Communicate with an ally."); - //addcommand(CMD_DROP, 'd', "Drop an item."); - addcommand(CMD_DROPMULTI, 'd', "Drop one or more items."); - addcommand(CMD_EAT, 'e', "Eat something."); - addcommand(CMD_EAT, 'E', "Enhance your skills."); - addcommand(CMD_MAGIC, 'm', "Use magic or abilities."); - addcommand(CMD_MEMMAGIC, 'M', "Memorise a magic shortcut"); - addcommand(CMD_OFFER, 'O', "Offer a sacrifice to the gods."); - addcommand(CMD_OPERATE, 'o', "Operate a tool/wand/device."); - addcommand(CMD_PICKLOCK, 'p', "Pick a lock."); - addcommand(CMD_POUR, 'P', "Pour a potion onto something."); - addcommand(CMD_QUAFF, 'q', "Quaff (drink) a potion."); - addcommand(CMD_READ, 'r', "Read a scroll/book."); - addcommand(CMD_RESTFULL, 'R', "Rest until healed, or train your skills."); - addcommand(CMD_THROW, 't', "Throw an object."); - addcommand(CMD_TAKEOFF, 'T', "Take off an item of clothing/jewelery."); - addcommand(CMD_WEILD, 'w', "Weild a weapon."); - addcommand(CMD_WEAR, 'W', "Wear an item of clothing/jewelery."); - // Firearms - addcommand(CMD_FIRE, 'f', "Fire your firearm/bow at your current target."); - addcommand(CMD_FIRENEW, 'F', "Fire your firearm/bow at a new target."); - addcommand(CMD_AIM, 'a', "Aim your current firearm/bow at a new target."); - // Information - addcommand(CMD_HELP, '?', "Display this text."); - addcommand(CMD_INFOPLAYER, '@', "Display player stats."); - addcommand(CMD_INFOARMOUR, ']', "Display player armour."); - addcommand(CMD_FORCEATTACK, 'A', "Force an attack in a given direction."); - addcommand(CMD_LOOKHERE, ':', "Look at current cell."); - addcommand(CMD_LOOKAROUND, '/', "Look at a remote cell."); - addcommand(CMD_INFOKNOWLEDGE, '\\', "Display known items."); - addcommand(CMD_MSGHIST, '|', "Display message history."); - addcommand(CMD_INV, 'i', "Display your inventory."); - // GAME FUNCTIONS - addcommand(CMD_QUIT, 'Q', "Quit the game."); - addcommand(CMD_SAVEQUIT, 'S', "Save and quit the game."); - - sortcommands(); -} int isplayerturn(void) { if (!player) return B_FALSE; @@ -1360,48 +1291,6 @@ dblog("doing sort..."); } */ -void sortcommands(void) { - command_t *c; - int donesomething = B_TRUE; - while (donesomething) { - donesomething = B_FALSE; - for (c = firstcommand ; c->next ; c = c->next) { - // move up one position if required. - if (c->ch > c->next->ch) { - command_t *temp; - - // remember next element - temp = c->next; - - // remove this element from list - if (c->prev == NULL) { - // first - firstcommand = c->next; - c->next->prev = NULL; - } else { - // not first - c->prev->next = c->next; - c->next->prev = c->prev; - } - - // re-add element afterwards - c->next = temp->next; - c->prev = temp; - temp->next = c; - if (c->next == NULL) { - lastcommand = c; - } else { - c->next->prev = c; - } - - // mark as done. - donesomething = B_TRUE; - break; - } - } - } -} - void timeeffectsworld(map_t *map, int updategametime) { diff --git a/nexus.h b/nexus.h index 4cc5fa4..045a648 100644 --- a/nexus.h +++ b/nexus.h @@ -1,7 +1,6 @@ #include "defs.h" celltype_t *addcelltype(int id, char *name, char glyph, int colour, int solid, int transparent, enum MATERIAL mat, int floorheight); -command_t *addcommand(enum COMMAND id, char c, char *desc); void checkdeath(void); void checkendgame(void); void cleanup(void); @@ -15,7 +14,6 @@ void getrarityrange(int depth, int *min, int *max, int range, int oodok); int init(void); void calcbresnham(map_t *m, int x1, int y1, int x2, int y2, cell_t **retcell, int *numpixels); void initbresnham(int x1, int y1, int x2, int y2, int *xinc1, int *yinc1, int *dinc1, int *xinc2, int *yinc2, int *dinc2, int *numpixels, int *d); -void initcommands(void); int isplayerturn(void); int limit(int *what, int min, int max); int limitf(float *what, float min, float max); @@ -31,6 +29,5 @@ int rolldie(int ndice, int sides); int rollhitdice(lifeform_t *lf); int rollmpdice(lifeform_t *lf); //void sortlf(map_t *map); -void sortcommands(void); void timeeffectsworld(map_t *map, int updategametime); void usage(char *progname); diff --git a/objects.c b/objects.c index 0690529..c9223a1 100644 --- a/objects.c +++ b/objects.c @@ -107,7 +107,6 @@ char *technoun[] = { "", }; - char *bookadjective[] = { "ancient", "clean", @@ -156,11 +155,6 @@ char *potadjective[] = { "", }; -typedef struct hiddennamewithcol_s { - char *name; - enum COLOUR col; -} hiddennamewithcol_t; - hiddennamewithcol_t colour[] = { { "aqua", C_CYAN, }, { "azure",C_BOLDBLUE }, @@ -5505,4495 +5499,6 @@ void ignite(object_t *o) { } -void initobjects(void) { - //int ch; - int i,n; - - // generate hidden name text - for (n = 0; strlen(colour[n].name); n++) { - char buf[BUFLEN]; - // add it without an adjective - snprintf(buf, BUFLEN, "%s book", colour[n].name); - addhiddenname(OC_BOOK, buf); - // add it with all known adjectives - for (i = 0; strlen(bookadjective[i]) ; i++) { - snprintf(buf, BUFLEN, "%s %s book",bookadjective[i], colour[n].name); - addhiddenname(OC_BOOK, buf); - } - } - - addhiddenname(OC_SCROLL, "scroll titled ABRA CA DABRA"); - addhiddenname(OC_SCROLL, "scroll titled BARBAR"); - addhiddenname(OC_SCROLL, "scroll titled CRATOL JEM"); - addhiddenname(OC_SCROLL, "scroll titled DELENTH YIN"); - addhiddenname(OC_SCROLL, "scroll titled ETEE NOM"); - addhiddenname(OC_SCROLL, "scroll titled FIE JOOHM"); - addhiddenname(OC_SCROLL, "scroll titled GREE VII"); - addhiddenname(OC_SCROLL, "scroll titled HERE HERE"); - addhiddenname(OC_SCROLL, "scroll titled HTEB IH"); - addhiddenname(OC_SCROLL, "scroll titled HOCUS POCUS"); - addhiddenname(OC_SCROLL, "scroll titled ILU-MA ZEE"); - addhiddenname(OC_SCROLL, "scroll titled JUNIPO CHECK"); - addhiddenname(OC_SCROLL, "scroll titled KARELS"); - addhiddenname(OC_SCROLL, "scroll titled LUMLEE GWON"); - addhiddenname(OC_SCROLL, "scroll titled MARIGON"); - addhiddenname(OC_SCROLL, "scroll titled MAXIMOR BLATHUS"); - addhiddenname(OC_SCROLL, "scroll titled NORTH"); - addhiddenname(OC_SCROLL, "scroll titled ORI GREEBLE"); - addhiddenname(OC_SCROLL, "scroll titled POCUS HOCUS"); - addhiddenname(OC_SCROLL, "scroll titled QUANDRILAR"); - addhiddenname(OC_SCROLL, "scroll titled REZZ KINETO"); - addhiddenname(OC_SCROLL, "scroll titled SHAZZARIO"); - addhiddenname(OC_SCROLL, "scroll titled THERIUM LARGOS"); - addhiddenname(OC_SCROLL, "scroll titled TAKA TAKA TAKA"); - addhiddenname(OC_SCROLL, "scroll titled UNDWEL"); - addhiddenname(OC_SCROLL, "scroll titled VOLTR YI MEN"); - addhiddenname(OC_SCROLL, "scroll titled WII"); - addhiddenname(OC_SCROLL, "scroll titled XAND"); - addhiddenname(OC_SCROLL, "scroll titled YES"); - addhiddenname(OC_SCROLL, "scroll titled ZAREL NOR"); - - for (n = 0; strlen(colour[n].name); n++) { - char buf[BUFLEN]; - // add it without an adjective - snprintf(buf, BUFLEN, "%s potion", colour[n].name); - addhiddenname(OC_POTION, buf); - // add it with all known adjectives - for (i = 0; strlen(potadjective[i]) ; i++) { - snprintf(buf, BUFLEN, "%s %s potion",potadjective[i], colour[n].name); - addhiddenname(OC_POTION, buf); - } - } - - for (n = 0; strlen(gemtype[n].name); n++) { - char buf[BUFLEN]; - // add it without an adjective - snprintf(buf, BUFLEN, "%s wand", gemtype[n].name); - addhiddenname(OC_WAND, buf); - } - - for (n = 0; strlen(gemtype[n].name); n++) { - char buf[BUFLEN]; - // add it without an adjective - snprintf(buf, BUFLEN, "%s ring", gemtype[n].name); - addhiddenname(OC_RING, buf); - } - - for (n = 0; strlen(technoun[n]); n++) { - // add it without an adjective - addhiddenname(OC_TECH, technoun[n]); - // add it with all known adjectives - for (i = 0; strlen(techadjective[i]) ; i++) { - char buf[BUFLEN]; - snprintf(buf, BUFLEN, "%s %s",techadjective[i], technoun[n]); - addhiddenname(OC_TECH, buf); - } - } - - shufflehiddennames(); - - - // object modifiers - flags can be either known or not, depending on if it's obvious - addobmod(OM_BLOODSTAINED,"bloodstained"); - addflag_real(lastobmod->flags, F_SCARY, 2, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_FLAMING,"flaming"); - addflag_real(lastobmod->flags, F_ONFIRE, B_TRUE, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_FROZEN,"frozen"); - addflag_real(lastobmod->flags, F_FROZEN, B_TRUE, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_HEADLESS,"headless"); - addflag_real(lastobmod->flags, F_HEADLESS, B_TRUE, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_MASTERWORK,"masterwork"); - addflag_real(lastobmod->flags, F_MASTERWORK, B_TRUE, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_SHODDY,"shoddy"); - addflag_real(lastobmod->flags, F_SHODDY, B_TRUE, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_POISONED,"poisoned"); - addflag_real(lastobmod->flags, F_HITCONFER, F_POISONED, SC_POISON, 25, "15-30", PERMENANT, B_KNOWN, -1); - addflag_real(lastobmod->flags, F_HITCONFERVALS, P_VENOM, 1, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_WET1,"damp"); - addflag_real(lastobmod->flags, F_WET, W_DAMP, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_WET2,"wet"); - addflag_real(lastobmod->flags, F_WET, W_WET, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_WET3,"soaked"); - addflag_real(lastobmod->flags, F_WET, W_SOAKED, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_RUSTY1,"rusty"); - addflag_real(lastobmod->flags, F_RUSTED, R_RUSTY, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_RUSTY2,"very rusty"); - addflag_real(lastobmod->flags, F_RUSTED, R_VRUSTY, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - addobmod(OM_RUSTY3,"thoroughly rusty"); - addflag_real(lastobmod->flags, F_RUSTED, R_TRUSTY, NA, NA, NULL, PERMENANT, B_KNOWN, -1); - - // brands modifiers - flags should be UNKNOWN! - // also don't double up with names of scrolls etc. - // ie. spellbook of flight, boots of flight. - - // weapons - addbrand(BR_BALANCE, "of balance", BP_WEAPON); - addflag_real(lastbrand->flags, F_BALANCE, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_PYROMANIA, "of pyromania", BP_WEAPON); - addflag_real(lastbrand->flags, F_FLAMESTRIKE, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_REVENGE, "of revenge", BP_WEAPON); - addflag_real(lastbrand->flags, F_REVENGE, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_SHARPNESS, "of sharpness", BP_WEAPON); - addflag_real(lastbrand->flags, F_ARMOURPIERCE, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_IMPACT, "of impact", BP_WEAPON); // TODO: make thisonly go ont obashing weapons - addflag_real(lastbrand->flags, F_HEAVYBLOW, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1); - - // feet - addbrand(BR_LEVITATION, "of hovering", BP_FEET); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_LEVITATING, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_FEATHERFALL, "of featherfall", BP_FEET); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_FALL, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_SWIFTNESS, "of swiftness", BP_FEET); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_FASTMOVE, 5, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_SLOTH, "of sloth", BP_FEET); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_SLOWMOVE, 5, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_STEALTH, "of stealth", BP_FEET); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_SILENTMOVE, B_TRUE, NA, NULL, PERMENANT, B_UNKNOWN, -1); - - // hands - addbrand(BR_POWER, "of power", BP_HANDS); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRMOD, A_STR, 3, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_WEAKNESS, "of feebleness", BP_HANDS); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRMOD, A_STR, -3, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_NIMBLENESS, "of nimbleness", BP_HANDS); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRMOD, A_DEX, 3, NULL, PERMENANT, B_UNKNOWN, -1); - - // head - addbrand(BR_THINKING, "of thinking", BP_HEAD); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRMOD, A_IQ, 3, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_KNOWLEDGE, "of knowledge", BP_HEAD); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_DETECTAURAS, B_TRUE, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_DETECTMAGIC, B_TRUE, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_TELEPATHY, "of telepathy", BP_HEAD); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_DETECTLIFE, 5, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_TELEKINESIS, "of the poltergeist", BP_HEAD); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_CANWILL, OT_S_TELEKINESIS, NA, NULL, PERMENANT, B_UNKNOWN, -1); - - // waist - addbrand(BR_GIANTSTRENGTH, "of giant strength", BP_WAIST); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRSET, A_STR, 18, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_FEEBLENESS, "of feebleness", BP_WAIST); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRSET, A_STR, 3, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_FLIGHT, "of the eagle", BP_WAIST); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_FLYING, B_TRUE, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_SPEED, "of swiftness", BP_WAIST); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_FASTACT, 5, NA, NULL, PERMENANT, B_UNKNOWN, -1); - - // shoulders - addbrand(BR_CONCEALMENT, "of concealment", BP_SHOULDERS); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_INVISIBLE, B_TRUE, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_ANTIMAG, "of antimagic", BP_SHOULDERS); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_RESISTMAG, 10, NA, NULL, PERMENANT, B_UNKNOWN, -1); - addbrand(BR_SHADOWS, "of shadows", BP_SHOULDERS); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_CANWILL, OT_A_DARKWALK, NA, NULL, PERMENANT, B_UNKNOWN, -1); - - // body - addbrand(BR_HEALTH, "of health", BP_BODY); - addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ATTRMOD, A_CON, 3, NULL, PERMENANT, B_UNKNOWN, -1); - - - - // materials - addmaterial(MT_NOTHING, "nothing", 0); - addmaterial(MT_MAGIC, "magical energy", 0); - addmaterial(MT_FIRE, "fire", 0); - addmaterial(MT_GAS, "gas", 0.5); - addmaterial(MT_WIRE, "wire", 1); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_BASH, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_COLD, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_PROJECTILE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_HOLY, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_WATER, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_MELT, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_ELECTRIC, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_DECAY, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_POISON, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_POISONGAS, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_UNARMED, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_LIGHT, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_NECROTIC, NA, NA, NULL); - addmaterial(MT_PLANT, "plant matter", 1); - addflag(lastmaterial->flags, F_FLAMMABLE, PERMENANT, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_ACID, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_WATER, NA, NA, NULL); - addmaterial(MT_PAPER, "paper", 1); - addflag(lastmaterial->flags, F_MATCONVERT, MT_WATER, NA, NA, "lump of soggy paper"); - addflag(lastmaterial->flags, F_MATCONVERTTEXT, MT_WATER, NA, NA, "goes soggy"); - addflag(lastmaterial->flags, F_MATCONVERTTEXTPL, MT_WATER, NA, NA, "go soggy"); - addflag(lastmaterial->flags, F_FLAMMABLE, PERMENANT, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); - addmaterial(MT_SILK, "silk", 1); - addflag(lastmaterial->flags, F_FLAMMABLE, 6, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); // doesn't catch on fire, but IS vulnerable to it - addflag(lastmaterial->flags, F_DTVULN, DT_ACID, NA, NA, NULL); - addmaterial(MT_FLESH, "flesh", 2); - addflag(lastmaterial->flags, F_FLAMMABLE, 3, NA, NA, NULL); - addmaterial(MT_WETPAPER, "wet paper", 3); - addmaterial(MT_CLOTH, "cloth", 3); - addflag(lastmaterial->flags, F_FLAMMABLE, 3, NA, NA, NULL); - addflag(lastmaterial->flags, F_CANGETWET, B_TRUE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_BASH, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); // doesn't catch on fire, but IS vulnerable to it - addmaterial(MT_FOOD, "food", 3); - addmaterial(MT_PLASTIC, "plastic", 3); - addflag(lastmaterial->flags, F_HARDNESS, 2, NA, NA, NULL); - addmaterial(MT_WAX, "wax", 3); - addflag(lastmaterial->flags, F_MATCONVERT, MT_FIRE, NA, NA, "lump of melted wax"); - addflag(lastmaterial->flags, F_MATCONVERTTEXT, MT_FIRE, NA, NA, "melts"); - addflag(lastmaterial->flags, F_MATCONVERTTEXTPL, MT_FIRE, NA, NA, "melt"); - addmaterial(MT_RUBBER, "rubber", 4); - addmaterial(MT_LEATHER, "leather", 4); - addflag(lastmaterial->flags, F_CANGETWET, B_TRUE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_BASH, NA, NA, NULL); - addmaterial(MT_BONE, "bone", 5); - addflag(lastmaterial->flags, F_HARDNESS, 3, NA, NA, NULL); - addmaterial(MT_OIL, "oil", 5); - addmaterial(MT_ICE, "ice",6); - addflag(lastmaterial->flags, F_HARDNESS, 3, NA, NA, NULL); - addmaterial(MT_WOOD, "wood", 6); - addflag(lastmaterial->flags, F_HARDNESS, 3, NA, NA, NULL); - addflag(lastmaterial->flags, F_FLAMMABLE, 5, NA, NA, NULL); - addflag(lastmaterial->flags, F_CANGETWET, B_TRUE, NA, NA, NULL); - addmaterial(MT_ACID, "acid", 7); - addmaterial(MT_WATER, "water", 7); - addmaterial(MT_BLOOD, "blood", 7); - addmaterial(MT_SLIME, "slime", 9); - addmaterial(MT_STONE, "stone", 10); - addflag(lastmaterial->flags, F_HARDNESS, 4, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_FIRE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_PIERCE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_BITE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_SLASH, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTRESIST, DT_CHOP, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTRESIST, DT_PROJECTILE, NA, NA, NULL); - addmaterial(MT_SILVER, "silver", 11); - addflag(lastmaterial->flags, F_HARDNESS, 2, NA, NA, NULL); - addmaterial(MT_METAL, "metal", 13); - addflag(lastmaterial->flags, F_HARDNESS, 5, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTIMMUNE, DT_FIRE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTRESIST, DT_BITE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTRESIST, DT_PIERCE, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTRESIST, DT_SLASH, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTRESIST, DT_PROJECTILE, NA, NA, NULL); - addmaterial(MT_GLASS, "glass", 13); - addflag(lastmaterial->flags, F_HARDNESS, 2, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_BASH, NA, NA, NULL); - addflag(lastmaterial->flags, F_DTVULN, DT_COLD, NA, NA, NULL); - addmaterial(MT_GOLD, "gold", 16); - addflag(lastmaterial->flags, F_HARDNESS, 3, NA, NA, NULL); - - // object classes - addoc(OC_DFEATURE, "Dungeon Features", "Doors, etc.", '\\', C_GREY); - addoc(OC_FURNITURE, "Furniture", "Various kinds of mundane (or not so mundane) furnishings.", '\\', C_BROWN); - addocnoun(lastobjectclass, "furniture"); - addoc(OC_TERRAIN, "Terrain", "Water, etc.", '\\', C_GREY); - addoc(OC_TRAP, "Trap", "Fiendish traps.", '^', C_GREY); - addocnoun(lastobjectclass, "trap"); - addoc(OC_MONEY, "Money", "The standard currency of Nexus.", '$', C_GREY); - addoc(OC_SCROLL, "Scrolls", "An arcane roll of parchment, inscribed with many magical glyphs.", '?', C_GREY); - addocnoun(lastobjectclass, "scroll"); - addflag(lastobjectclass->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - //addflag(lastobjectclass->flags, F_DTCONVERT, DT_WATER, NA, NA, "lump of soggy paper"); - //addflag(lastobjectclass->flags, F_MATCONVERT, MT_WATER, NA, NA, "lump of soggy paper"); - //addflag(lastobjectclass->flags, F_MATCONVERTTEXT, MT_WATER, NA, NA, "goes soggy"); - //addflag(lastobjectclass->flags, F_MATCONVERTTEXTPL, MT_WATER, NA, NA, "go soggy"); - - addoc(OC_WAND, "Wands", "A limited-use magical wand which casts the imbued spell.", '/', C_GREY); - addocnoun(lastobjectclass, "wand"); - addflag(lastobjectclass->flags, F_DTIMMUNE, DT_FIRE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_OPERWITHOUTID, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_OPERUSECHARGE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_RNDCHARGES, 1, 8, NA, NULL); - - addoc(OC_POTION, "Potions", "A strange concoction contained within a small flask.", '!', C_GREY); - addocnoun(lastobjectclass, "potion"); - addflag(lastobjectclass->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_POURABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addoc(OC_RING, "Rings", "A circular band, worn on the finger.", '=', C_GREY); - addocnoun(lastobjectclass, "ring"); - addflag(lastobjectclass->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_GOESON, BP_RIGHTFINGER, NA, NA, NULL); - addflag(lastobjectclass->flags, F_GOESON, BP_LEFTFINGER, NA, NA, NULL); - addoc(OC_WEAPON, "Weapons", "An instrument used for the purpose of causing harm or death.", ')', C_GREY); - addocnoun(lastobjectclass, "weapon"); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_ENCHANTABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_CANHAVEOBMOD, OM_MASTERWORK, 17, NA, NULL); - addflag(lastobjectclass->flags, F_CANHAVEOBMOD, OM_SHODDY, 34, NA, NULL); - addoc(OC_ARMOUR, "Armour/Clothing", "Protective gear.", '[', C_GREY); - addocnoun(lastobjectclass, "armour"); - addocnoun(lastobjectclass, "clothing"); - addocnoun(lastobjectclass, "clothes"); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_ENCHANTABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_CANHAVEOBMOD, OM_MASTERWORK, 17, NA, NULL); - addflag(lastobjectclass->flags, F_CANHAVEOBMOD, OM_SHODDY, 34, NA, NULL); - addflag(lastobjectclass->flags, F_CANHAVEOBMOD, OM_BLOODSTAINED, 17, NA, NULL); - addoc(OC_MISSILE, "Missiles/Ammunition", "An instrument used for the purpose of causing harm or death.", ';', C_GREY); - addocnoun(lastobjectclass, "missile"); - addocnoun(lastobjectclass, "ammo"); - addocnoun(lastobjectclass, "ammunition"); - addflag(lastobjectclass->flags, F_ENCHANTABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addoc(OC_FLORA, "Plants", "Some kind of plant/foliage.", ',', C_GREEN); - addocnoun(lastobjectclass, "plant"); - addoc(OC_ROCK, "Rocks/Gems", "Boring (or not so boring) rocks or plants.", '*', C_GREY); - addoc(OC_FOOD, "Food", "Yum!", '%', C_GREY); - addocnoun(lastobjectclass, "food"); - addflag(lastobjectclass->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_SMELLY, B_TRUE, NA, NA, NULL); - addoc(OC_GODSTONE, "Godstones", "Ancient artifacts, created by the elder gods.", '*', C_BOLDMAGENTA); - addflag(lastobjectclass->flags, F_UNIQUE, NA, NA, NA, NULL); - addflag(lastobjectclass->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pulsating purple stone"); - addflag(lastobjectclass->flags, F_UNIQUE, NA, NA, NA, NULL); - addflag(lastobjectclass->flags, F_INVULNERABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - - addoc(OC_CORPSE, "Corpses", "Dead flesh which was once living.", '%', C_GREY); - addflag(lastobjectclass->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_OBHP, 50, 50, NA, NULL); - addflag(lastobjectclass->flags, F_OBHPDRAIN, 1, DT_DECAY, NA, NULL); // ie. corpses last for 50 turns - addoc(OC_TECH, "Technology", "A strange piece of futuristic technology.", '[', C_GREY); - addocnoun(lastobjectclass, "technology"); - addocnoun(lastobjectclass, "tech"); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addoc(OC_TOOLS, "Tools", "Useful items, from the common to the obscure.", ']', C_GREY); - addocnoun(lastobjectclass, "tool"); - addflag(lastobjectclass->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addoc(OC_MISC, "Miscellaneous", "This could be anything.", '\\', C_GREY); - addoc(OC_EFFECT, "Environmental Effects", "Smoke, fire, etc.", '}', C_GREY); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addoc(OC_BOOK, "Books", "Spellbooks, tomes or manuals.", '+', C_GREY); - addocnoun(lastobjectclass, "spellbook"); - addocnoun(lastobjectclass, "book"); - addocnoun(lastobjectclass, "tome"); - addflag(lastobjectclass->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastobjectclass->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addoc(OC_SPELL, "Spells", "A magical spell", '&', C_GREY); // this is a "virtual" object class - addoc(OC_ABILITY, "Abilities", "A special ability", '&', C_GREY); // this is a "virtual" object class - - - // object types - - // dungeon features - addot(OT_DOORWOOD, "wooden door", "A sturdy wooden door.", MT_WOOD, 150, OC_DFEATURE, SZ_LARGE); - // GLYPH here is a special case in getglyph - addflag(lastot->flags, F_DOOR, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOCKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBETRAPPED, 5, 10, 60, NULL); - addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_BASH, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - - addot(OT_DOORIRON, "iron door", "A strong iron door.", MT_METAL, 300, OC_DFEATURE, SZ_LARGE); - // GLYPH here is a special case in getglyph - addflag(lastot->flags, F_DOOR, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOCKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBETRAPPED, 10, 10, 60, NULL); - addflag(lastot->flags, F_OBHP, 60, 60, NA, NULL); - addflag(lastot->flags, F_DTIMMUNE, DT_PIERCE, NA, NA, NULL); - addflag(lastot->flags, F_DTIMMUNE, DT_SLASH, NA, NA, NULL); - addflag(lastot->flags, F_DTRESIST, DT_CHOP, NA, NA, NULL); - - - addot(OT_FOUNTAIN, "fountain", "A running fountain of some kind of liquid.", MT_WATER, 20, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BLUE, NA, NA, "_"); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTCONVERT, DT_COLD, NA, NA, "sheet of ice"); - addflag(lastot->flags, F_DTCREATEOB, DT_FIRE, 0, DT_COMPASS, "cloud of steam"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, B_DONTKILL, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_WATER, NA, NA, NULL); - - // blocks movement, but you can see and fire through them. - addot(OT_GATEIRON, "iron gate", "A gate comprised of a series of vertical iron bars, raised slightly above the floor.", MT_METAL, 500, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "+"); - addflag(lastot->flags, F_DOOR, SZ_MEDIUM, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_IMPASSABLE, SZ_MEDIUM, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_LOCKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 120, 120, NA, NULL); - addflag(lastot->flags, F_DTIMMUNE, DT_PIERCE, NA, NA, NULL); - addflag(lastot->flags, F_DTIMMUNE, DT_SLASH, NA, NA, NULL); - addflag(lastot->flags, F_DTRESIST, DT_CHOP, NA, NA, NULL); - addot(OT_GATEWOOD, "wooden gate", "A gate comprised of a series of wooden slats.", MT_WOOD, 200, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "+"); - addflag(lastot->flags, F_DOOR, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_LOCKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - - addot(OT_FENCEWOOD, "wooden fence", "A tell fence created from a series of upright logs of wood.", MT_WOOD, 200, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOCKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - - addot(OT_BOULDER, "boulder", "A massive stone boulder.", MT_STONE, 80, OC_ROCK, SZ_HUGE); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, ""); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "'"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_LARGE, NA, NULL); - addflag(lastot->flags, F_PUSHABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); -// addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 80, 80, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "50-100 stones"); - - - addot(OT_ICICLE, "huge icicle", "A massive ice stalacmite.", MT_ICE, 200, OC_ROCK, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_CYAN, NA, NA, "'"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_LARGE, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 80, 80, NA, NULL); - - addot(OT_STATUE, "statue", "A stone statue of a monster.", MT_STONE, 80, OC_ROCK, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, ""); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 80, NA, ""); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "'"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_LARGE, NA, NULL); // will be overridden - addflag(lastot->flags, F_PUSHABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 80, 80, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "20-50 stones"); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "a statue"); - - addot(OT_HOLEINGROUND, "hole in the ground", "A gaping hole in the ground.", MT_NOTHING, 0, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - addflag(lastot->flags, F_GLYPH, C_BLUE, NA, NA, "^"); - addflag(lastot->flags, F_CLIMBABLE, D_DOWN, NA, NA, NULL); - addflag(lastot->flags, F_PIT, D_DOWN, NA, NA, NULL); - addflag(lastot->flags, F_OPPOSITESTAIRS, OT_HOLEINROOF, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ONEPERCELL, B_TRUE, NA, NA, NULL); - - addot(OT_HOLEINROOF, "hole in the roof", "A gaping hole in the roof.", MT_NOTHING, 0, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_BLUE, NA, NA, "<"); - addflag(lastot->flags, F_CLIMBABLE, D_UP, NA, NA, NULL); - addflag(lastot->flags, F_PIT, D_UP, NA, NA, NULL); - addflag(lastot->flags, F_OPPOSITESTAIRS, OT_HOLEINGROUND, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ONEPERCELL, B_TRUE, NA, NA, NULL); - - addot(OT_STAIRSDOWN, "staircase going down", "A stone staircase winding downwards.", MT_STONE, 3000, OC_DFEATURE, SZ_HUGE); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ">"); - addflag(lastot->flags, F_CLIMBABLE, D_DOWN, NA, NA, NULL); - addflag(lastot->flags, F_OPPOSITESTAIRS, OT_STAIRSUP, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - - addot(OT_STAIRSUP, "staircase going up", "A stone staircase climbing upwards.", MT_STONE, 3000, OC_DFEATURE, SZ_HUGE); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "<"); - addflag(lastot->flags, F_CLIMBABLE, D_UP, NA, NA, NULL); - addflag(lastot->flags, F_OPPOSITESTAIRS, OT_STAIRSDOWN, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - - addot(OT_VENDINGMACHINE, "vending machine", "A gold-operated vending machine.", MT_METAL, 500, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, ""); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "_"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - // 10 random objects - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, RANDOM, NA, NULL); - - addot(OT_HOLYCIRCLE, "holy circle", "A consecrated area imbued with holy power.", MT_NOTHING, 0, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, ""); - addflag(lastot->flags, F_GLYPH, C_CYAN, NA, NA, "_"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_REPELBLESSED, B_CURSED, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_PENTAGRAM, "pentagram", "A area imbued with evil.", MT_NOTHING, 0, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, ""); - addflag(lastot->flags, F_GLYPH, C_RED, NA, NA, "_"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_REPELBLESSED, B_BLESSED, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - - addot(OT_PORTAL, "magic portal", "A magical portal to a different place...", MT_MAGIC, 0, OC_DFEATURE, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_BOLDGREEN, NA, NA, "^"); - addflag(lastot->flags, F_CLIMBABLE, D_IN, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - // terrain - addot(OT_WATERDEEP, "water", "Deep water.", MT_WATER, 300, OC_TERRAIN, SZ_HUGE); - addflag(lastot->flags, F_NO_A, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BOLDBLUE, NA, NA, "{"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTCONVERT, DT_COLD, NA, NA, "sheet of ice"); - addflag(lastot->flags, F_DTCREATEOB, DT_FIRE, 1, DT_COMPASS, "cloud of steam"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, B_DONTKILL, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_WATER, NA, NA, NULL); - addflag(lastot->flags, F_DEEPWATER, DP_MAX, NA, NA, NULL); - addflag(lastot->flags, F_ONEPERCELL, B_TRUE, NA, NA, NULL); - - // traps - cell only - addot(OT_TRAPARROW, "arrow trap", "A pressure plate which causes arrows to shoot at you.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 25, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 76, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPARROWP, "poison arrow trap", "A pressure plate which causes poisoned arrows to shoot at you.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 25, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 69, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPPIT, "pit trap", "A pressure plate which causes the floor to drop away.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 20, B_TRUE, 22, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPROCK, "falling rock trap", "A pressure plate which causes heavy rocks to drop from the ceiling.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 20, B_TRUE, 22, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 25, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPSUMMON, "summoning trap", "A magical trap which causes a monster to appear.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 30, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPTRIP, "tripwire", "A thin wire at ankle height.", MT_WIRE, 0.1, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 10, B_FALSE, 20, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 25, NA, NA, NULL); - addflag(lastot->flags, F_ATTACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 1, 1, NA, NULL); - - - // traps - object only - addot(OT_TRAPNEEDLEP, "poison needle trap", "A springed needle coated with poison.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TRAP, 23, B_TRUE, 25, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addot(OT_TRAPWIND, "wind trap", "A magical trap which assails the target with a blast of air.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TRAP, 20, B_TRUE, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_MAGENTA, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - - // traps - either cell on object - addot(OT_TRAPALARM, "alarm trap", "A trap which sounds a loud siren.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 18, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPEBLAST, "energy blast trap", "A magical trap which blasts its victim with energy.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 30, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_MAGENTA, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPFIRE, "fire trap", "A trap which fires a pillar of flame.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 30, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 59, NA, NULL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPGAS, "gas trap", "A trap which releases poisonous gas.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 27, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 69, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPMINE, "landmine trap", "A buried, pressure-sensitive explosive device.", MT_NOTHING, 0, OC_TRAP, SZ_SMALL); - addflag(lastot->flags, F_TRAP, 30, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 20, NA, NULL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_TRAPTELEPORT, "teleportation trap", "A magical dispersal field.", MT_NOTHING, 0, OC_TRAP, SZ_LARGE); - addflag(lastot->flags, F_TRAP, NA, B_TRUE, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_MAGENTA, NA, NA, "^"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_SECRET, 30, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBJECTTRAP, B_TRUE, NA, NA, NULL); - - - // money etc - addot(OT_GOLD, "gold coin", "Sparkling nuggets of gold, the standard currency of Nexus.", MT_GOLD, 0.01, OC_MONEY, SZ_MINI); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_ALL, 100, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 100, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some gold"); - - addot(OT_STONE, "stone", "A medium-sized roundish stone.", MT_STONE, 0.5, OC_ROCK, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addot(OT_ASH, "pile of ash", "A pile of ash.", MT_STONE, 0.1, OC_ROCK, SZ_TINY); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_POWDER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some ash"); - addot(OT_ASHEXPLODE, "pile of exploding powder", "A pile of ash.", MT_STONE, 0.1, OC_ROCK, SZ_TINY); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_EXPLODEONDAM, NA, NA, NA, "1d6"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_POWDER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pile of ash"); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some ash"); - addot(OT_ASHCONCEAL, "pile of concealing powder", "A pile of ash.", MT_STONE, 0.1, OC_ROCK, SZ_TINY); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_POWDER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pile of ash"); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some ash"); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL); - addot(OT_ASHSLEEP, "pile of sleeping powder", "A pile of ash.", MT_STONE, 0.1, OC_ROCK, SZ_TINY); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_POWDER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pile of ash"); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some ash"); - addot(OT_GEMOFSEEING, "gem of seeing", "Magically enhances your eyesight.", MT_STONE, 1, OC_ROCK, SZ_TINY); - addflag(lastot->flags, F_HOLDCONFER, F_XRAYVIS, 2, NA, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_SEEINVIS, B_TRUE, NA, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_ENHANCESEARCH, 20, NA, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_DETECTAURAS, B_TRUE, NA, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_DETECTMAGIC, B_TRUE, NA, NULL); - addflag(lastot->flags, F_VALUE, 1000, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - // godstones - addot(OT_GODSTONEJ, "Godstone of Justice", "An ancient artifact representing the power of justice.", MT_STONE, 3, OC_GODSTONE, SZ_SMALL); - addflag(lastot->flags, F_VALUE, 1000, NA, NA, NULL); - addflag(lastot->flags, F_CHARGES, 100, 100, NA, NULL); - addflag(lastot->flags, F_RECHARGE, 1, NA, NA, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL); - // flora - addot(OT_FLOWER, "flower", "A colourful woodland flower.", MT_PLANT, 0.01, OC_FLORA, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_GLYPH, C_MAGENTA, NA, NA, ","); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "3d6"); - addot(OT_LEAF, "leaf", "A fallen leaf from a tree.", MT_PLANT, 0.01, OC_FLORA, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, ","); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "3d6"); - addot(OT_MISTLETOE, "sprig of mistletoe", "A small cutting of mistletoe.", MT_PLANT, 0.01, OC_FLORA, SZ_TINY); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "leaf"); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_GLYPH, C_WHITE, NA, NA, ","); - addflag(lastot->flags, F_NUMAPPEAR, 1, 3, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "3d6"); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addot(OT_SHRUB, "shrub", "A small but dense shrub.", MT_PLANT, 50, OC_FLORA, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "%"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MEDIUM, NA, NULL); - addflag(lastot->flags, F_REDUCEMOVEMENT, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "2d6"); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - addot(OT_STUMP, "tree stump", "A large tree stump.", MT_WOOD, 150, OC_FLORA, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "'"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_HUMAN, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "2d6"); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - addot(OT_TREE, "tree", "A tree.", MT_WOOD, 200, OC_FLORA, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, ""); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "#"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_LARGE, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 80, 80, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "2d6"); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - - // food - addot(OT_BERRY, "berry", "Juicy, brightly coloured berries.", MT_FOOD, 0.1, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_ORANGE, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 8, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, NULL); - addflag(lastot->flags, F_NUMAPPEAR, 1, 15, NA, ""); - addot(OT_CACFRUIT, "cactus fruit", "The nutritous fruit from a cactus plant.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_RED, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 100, NA, ""); - addflag(lastot->flags, F_RARITY, H_FOREST, 90, NA, NULL); - addot(OT_GARLIC, "clove of garlic", "A very pungent clove of raw garlic. ", MT_FOOD, 0.1, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 5, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addot(OT_NUT, "peanut", "A species in the legume family.", MT_FOOD, 0.1, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 12, NA, ""); - addflag(lastot->flags, F_RARITY, H_FOREST, 90, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_NUMAPPEAR, 1, 12, NA, ""); - addot(OT_BANANA, "banana", "Ba-na-na-na-na-na na-na na-na-na.", MT_FOOD, 0.3, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 50, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, NULL); - - addot(OT_BANANASKIN, "banana skin", "A slippery banana skin.", MT_FOOD, 0.1, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "%"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 15, NA, NA, NULL); - addflag(lastot->flags, F_SLIPMOVE, 15, NA, NA, NULL); - - addot(OT_APPLE, "apple", "A crunchy apple.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 50, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, NULL); - addot(OT_MUSHROOM, "mushroom", "A large brown mushroom.", MT_FOOD, 0.2, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 60, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, NULL); - addflag(lastot->flags, F_NUMAPPEAR, 1, 3, NA, ""); - 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, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 100, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some bread"); - addot(OT_CHEESE, "chunk of cheese", "A chunk of hard cheese.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 85, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addot(OT_STEW, "stew", "Some kind of meat soaked in water.", MT_FOOD, 1.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 100, NA, ""); - 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, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 100, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addot(OT_BREADFRESH, "loaf of fresh bread", "A freshly-baked loaf of bread.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 200, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "some bread"); - addot(OT_CLOVER, "four leafed clover", "A rare 4-leafed clover.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 5, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_RARE, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_EXTRALUCK, 1, NA, NULL); - addot(OT_CARROT, "carrot", "A stout orange carrot. Rumour has it that carrots are good for your eyesight.", MT_FOOD, 0.2, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_ORANGE, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 60, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addot(OT_CHOCOLATE, "block of chocolate", "An entire block of chocolate.", MT_FOOD, 0.5, OC_FOOD, SZ_TINY); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 250, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - // corpses - addot(OT_CORPSE, "corpse", "xxx", MT_FLESH, 1, OC_CORPSE, SZ_TINY); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 1, NA, NULL); // will be overridden - addot(OT_HEAD, "head", "xxx", MT_FLESH, 1, OC_CORPSE, SZ_SMALL); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 1, NA, NULL); // will be overridden - addot(OT_FLESHCHUNK, "chunk of flesh", "A chunk of flesh from something.", MT_FLESH, 1, OC_FOOD, SZ_SMALL); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "%"); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 25, NA, NULL); - addot(OT_FINGER, "severed finger", "The severed finger from some kind of creature.", MT_FLESH, 0.02, OC_CORPSE, SZ_TINY); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 1, NA, NULL); - - - // potions (sorted by rarity) - addot(OT_POT_JUICE, "potion of fruit juice", "Tasty (but not very fresh) fruit juice!", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, 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_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL); - addot(OT_POT_WATER, "potion of water", "Plain, regular water.", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 100, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "small puddle of water"); - modflag(lastot->flags, F_HASHIDDENNAME, NA, NA, NA, "clear potion"); - 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_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_AIHEALITEM, B_TRUE, 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_DUNGEON, 72, NA, NULL); - addflag(lastot->flags, F_AIHEALITEM, B_TRUE, 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_DUNGEON, 83, NA, 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"); - 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_DUNGEON, 83, NA, NULL); - addot(OT_POT_RUM, "potion of rum", "Strong liqour which is sure to make you tipsy.", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 83, NA, NULL); - addflag(lastot->flags, F_FLAMMABLE, 1, NA, NA, "medium fire"); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_EXPLODEONDAM, DT_FIRE, NA, NA, "2d6"); - addflag(lastot->flags, F_BADOBJECT, B_TRUE, 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_DUNGEON, 75, 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_DUNGEON, 83, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BADOBJECT, B_TRUE, 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_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, 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_DUNGEON, 78, 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_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, 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_DUNGEON, 70, 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_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, 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_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BADOBJECT, B_TRUE, NA, NA, NULL); - addot(OT_POT_ACID, "flask of battery acid", "Causes massive internal burning if ingested.", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, 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); - 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_DUNGEON, 60, 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_DUNGEON, 60, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "splash of blood"); - 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_DUNGEON, 60, NA, NULL); - - addot(OT_POT_ETHEREALNESS, "potion of etherealness", "Allows the walker to temporarily pass through walls.", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, 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_DUNGEON, 40, NA, NULL); - addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, 40, 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_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "splash of cockatrice blood"); - - addot(OT_POT_COMPETENCE, "potion of competence", "Permemantly increases the drinker's strength, intelligence or dexterity.", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - - addot(OT_POT_GASEOUSFORM, "potion of gaseous form", "Turns the drinker into a cloud of gas.", MT_GLASS, 1, OC_POTION, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, 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_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, 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_DUNGEON, 40, NA, NULL); - addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, 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_DUNGEON, 35, NA, NULL); - addflag(lastot->flags, F_AIHEALITEM, B_TRUE, NA, NA, NULL); - - - - - // scrolls - - addot(OT_SCR_AWARENESS, "scroll of awareness", "Mimics the effects of a 'heightened awareness' spell.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - addot(OT_SCR_CANINETRACKING, "scroll of canine tracking", "Mimics the effects of a 'canine tracking' spell.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_CANINETRACKING, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - - addot(OT_SCR_REMOVECURSE, "scroll of remove curse", "Removes curses from all weilded equipment.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - - addot(OT_SCR_IDENTIFY, "scroll of identify", "Completely identifies any one item.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_IDENTIFY, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - - addot(OT_SCR_MENDING, "scroll of mending", "Repairs damage to objects.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_MENDING, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 98, RR_COMMON, NULL); - addflag(lastot->flags, F_MAXPOWER, 4, NA, NA, NULL); - - addot(OT_SCR_NOTHING, "scroll of nothing", "Looks like a magic scroll, but doesn't do anything.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 84, RR_UNCOMMON, NULL); - - addot(OT_GRAPHPAPER, "piece of graph paper", "Paper containing a set of grid-lines, intended for mapping.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_HOLDCONFER, F_PHOTOMEM, NA, IFKNOWN, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - addot(OT_MAP, "map", "A visual representation of the area.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - - addot(OT_SCR_CREATEMONSTER, "scroll of create monster", "Summons a (probably hostile) monster to a nearby location.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_CREATEMONSTER, 4, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_AIBOOSTITEM, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL); - - addot(OT_SCR_DETECTAURA, "scroll of detect aura", "Senses holiness or evil near the caster.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DETECTAURA, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - - addot(OT_SCR_DETECTLIFE, "scroll of detect life", "Senses life near the caster.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DETECTLIFE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - addot(OT_SCR_DETECTOBS, "scroll of detect objects", "Senses objects near the caster.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DETECTOBS, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - - addot(OT_SCR_DETECTMAGIC, "scroll of detect magic", "Allows the reader to detect magical enchantments.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DETECTMAGIC, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - - addot(OT_SCR_FLAMEPILLAR, "scroll of flame pillar", "Creates a tall pillar of flame.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_FLAMEPILLAR, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - addot(OT_SCR_FLAMEBURST, "scroll of flame burst", "Creates a radial blast of fire out from the caster, dealing 2d6 damage. Range is based on spell power.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_FLAMEBURST, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - - addot(OT_SCR_ENCHANT, "scroll of enchantment", "Magically enhances a weapon or piece of armour.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_ENCHANT, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - - addot(OT_SCR_FREEZEOB, "scroll of freezing touch", "Permenantly changes the next object touched into solid ice.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_FREEZEOB, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, RR_RARE, NULL); - addflag(lastot->flags, F_BADOBJECT, B_TRUE, NA, NA, NULL); - - addot(OT_SCR_KNOCK, "scroll of knock", "Magically opens a barrier.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_KNOCK, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_COMMON, NULL); - - addot(OT_SCR_LIGHT, "scroll of light", "Creates a permenant light source centred on the caster.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_LIGHT, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL); - - addot(OT_SCR_MAPPING, "scroll of sense surroundings", "Magically imbues the caster with a map of his/her surroundings.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_MAPPING, 4, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_UNCOMMON, NULL); - - addot(OT_SCR_MINDSCAN, "scroll of mind scan", "Allows you to view the world through another creature's eyes.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_MINDSCAN, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, RR_UNCOMMON, NULL); - - addot(OT_SCR_PERMENANCE, "scroll of permenance", "Makes all effects on an object last forever.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, RR_RARE, NULL); - - addot(OT_SCR_TELEPORT, "scroll of teleportation", "Causes the caster to teleport to a random location within the same level.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_TELEPORT, 4, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL); - - - addot(OT_SCR_TURNUNDEAD, "scroll of turn undead", "Instills fear in undead creatures.", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_TURNUNDEAD, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, RR_UNCOMMON, NULL); - - addot(OT_SCR_WISH, "scroll of wishing", "Grants the caster any item of their choice (with some limitations).", MT_PAPER, 0.5, OC_SCROLL, SZ_SMALL); - addflag(lastot->flags, F_LINKSPELL, OT_S_WISHLIMITED, NA, NA, NULL); - - - // spells - actually defined as object types - // MUST DEFINE THESE _AFTER_ SCROLLS - - /////////////////// - // allomancy - /////////////////// - // l1 - addot(OT_S_ABSORBMETAL, "absorb metal", "Draws mana from nearby metallic objects.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the maximum amount of metal which can be absorbed."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MPCOST, 0, NA, NA, NULL); - // l2 - addot(OT_S_PULLMETAL, "pull metal", "Pulls metal objects to the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_WALLSTOP, NA, NULL); - addot(OT_S_ACCELMETAL, "accelerate metal", "Greatly accelerates a metal object thrown by the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how fast the object is propelled."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_WALLSTOP, NA, NULL); - addot(OT_S_METALHEAL, "metal healing", "Uses nearby metal for accelerated healing.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how much damage is healed."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - // l3 - addot(OT_S_EXPLODEMETAL, "explode metal", "Causes all metal objects in a location explode.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_MAGSHIELD, "magnetic shield", "Surrounds the caster with magnetic force, repelling metal objects and attacks.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the magnetic shield will last."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - // l4 - addot(OT_S_ANIMATEMETAL, "animate metal", "Imbues a metallic weapon with temporary life, enabling it to fight on its own.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ALLOMANCY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - - /////////////////// - // death - /////////////////// - // l1 - addot(OT_S_STENCH, "stench", "Nauseates the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability and duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l2 - addot(OT_S_BLINDNESS, "blindness", "Temporarily blinds the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability and duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_COMMANDUNDEAD, "command undead", "Compels an undead creature to follow a single simple command.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_FEAR, "cause fear", "Causes intense fear in the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability and duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SMITEGOOD, "smite good", "Instantly deals 1-^bpower*2^n damage to good creatures.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 6, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l3 - addot(OT_S_POISONBOLT, "venom bolt", "Fires a glob of venom at the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how difficult the venom is to dodge, and how powerful the poison is."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - addot(OT_S_DRAINLIFE, "drain life", "Draws life force from the victim in order to heal the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The amount of life force drained is ^b1d6+power^n."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - addot(OT_S_PAIN, "pain", "Causes extreme pain in the target whenever they move.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the duration of the pain effect."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l4 - addot(OT_S_WEAKEN, "weaken", "Temporarily lowers the target's muscle strength by ^bpower^n points.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the duration of the weakness effect."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_PARALYZE, "paralyze", "Disables the target's muscles, leaving them unable to move for ^bpower*2^n turns.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l5 - addot(OT_S_ANIMATEDEAD, "animate dead", "Imbues nearby corpses with life, creating an undead zombie.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the chances of the zombies being friendly."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - // TODO: should be "castnearob ot_corpse" - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addot(OT_S_FEEBLEMIND, "brain freeze", "Temporarily lowers the target's intelligence to that of an animal.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l6 - addot(OT_S_POSSESSION, "possession", "Completely possess an enemy, moving your consciousness into their body.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines its resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_INFINITEDEATH, "infinite death", "Annihilates all nearby life, including the caster!", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_CASTINGTIME, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - /////////////////// - // divination - /////////////////// - // l1 - addot(OT_S_LOCATEOBJECT, "locate object", "Locates any object within an area the caster has previously travelled.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_SIXTHSENSE, "sixth sense", "Warns the caster of any creature attempting to sneak up behind them.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power III, the creature's species will be detected."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power V, the exact creature type will be detected."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - // l2 - addot(OT_S_CANINETRACKING, "canine tracking", "Enhances the caster's sense of smell, allowing them to detect exact scents within a 3 cell radius.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Power determines the spell duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addot(OT_S_MAPPING, "sense surroundings", "Magically imbues the caster with a map of his/her surroundings.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the detection range."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addot(OT_S_DETECTLIFE, "detect life", "Senses the size of creatures within a 10-cell radius of the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the detection range."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power VIII, exact creatures types are detected."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - // l3 - addot(OT_S_AWARENESS, "heightened awareness", "This spell effectively gives the caster \"eyes in the back of their head\", expending their field of vision to a full 360 degrees.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, 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_DETECTOBS, "detect objects", "Senses objects near the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the detection range and spell duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addot(OT_S_SEEINVIS, "see invisible", "Allows the caster to see invisible creatures.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - - // l4 - addot(OT_S_DETECTAURA, "detect aura", "Senses holiness or evil near the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_LORE, "lore", "Obtain knowledge about any one species.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power I, you gain Novice level knowledge."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power II, you gain Beginner level knowledge."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power IV, you gain Adept level knowledge."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power VI, you gain Skilled level knowledge."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power VIII, you gain Expert level knowledge."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power X, you gain Master level knowledge."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addot(OT_S_REVEALHIDDEN, "reveal hidden", "Reveals hidden doors or invisible creatures in the caster's line of sight.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - // l5 - addot(OT_S_DETECTMAGIC, "detect magic", "Allows the caster to detect magical enchantments.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - // l6 - addot(OT_S_IDENTIFY, "identification", "Completely identifies any one item.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - - /////////////////// - // enchantment - /////////////////// - // l7 - addot(OT_S_ENCHANT, "enchantment", "Magically enhances a weapon or piece of armour.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - // TODO: hardcode how ai casts this spell - - /////////////////// - // elemental - air - /////////////////// - // l1 - addot(OT_S_MIST, "pea soup", "Hides the caster from view 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_SPELLSCHOOL, SS_AIR, 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_AICASTTOFLEE, ST_ADJSELF, NA, 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); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines its range and the weight of objects affected."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_NEED, NA, NULL); - addot(OT_S_JOLT, "jolt", "Jolts an adjacent enemy with a short pulse of electricity, dealing 1-^bpower^n damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 6, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - - // l2 - addot(OT_S_GUSTOFWIND, "gust of wind", "Causes a gust of wind to blow up to ^bpower^n of the target's objects away.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The chance of each object blowing away is determined by the spell's power."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell's power is boosted when cast outside."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_NEED, NA, NULL); - addot(OT_S_SHATTER, "shatter", "Instantly shatters all glass in the target location.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l3 - addot(OT_S_AIRBLAST, "airblast", "Knocks enemies back with a powerful blast of air.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell's power determines how far objects or enemies will be knocked back."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_NEED, NA, NULL); - addot(OT_S_WINDSHIELD, "cyclonic shield", "Surrounds the caster with a whirling cyclone to repel missiles.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the speed of missile which can be repelled."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_VARPOWER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - // l4 - addot(OT_S_CLOUDKILL, "cloudkill", "Creates a cloud of poisonous gas. The cloud's size is 1-3 cells, depending on the spell power.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - // l5 - addot(OT_S_CHAINLIGHTNING, "chain lightning", "Electricity arcs up to 5 times between all nearby enemies. The initial arc deals 3d6 damage, the next deals 3d5 damage, etc.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's range is based on its power."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_NEED, NA, NULL); - /////////////////// - // elemental - fire - /////////////////// - // l1 - addot(OT_S_SPARK, "spark", "Creates a tiny spark of flame, dealing 1-3 fire damage to creatures and objects.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, 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_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l2 - addot(OT_S_BLADEBURN, "bladeburn", "Ignites the target's bladed weapon, causing it to temporarily deal fire damage. The spell's power determines how long it will last.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines its duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_FIREDART, "flame dart", "Fires a medium-sized dart of fire, dealing 1d6+^bpower^n fire damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - // l3 - addot(OT_S_FLAMEBURST, "flame burst", "Creates a radial blast of fire out from the caster, inflicting 2d6 fire damage to all within.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The size of the radial blast is based on the spell's power."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJSELF, NA, NA, NULL); - // l4 - addot(OT_S_FLAMEPILLAR, "flame pillar", "Creates a tall pillar of flame.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the flames will persist."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_WALLSTOP, NA, NULL); - // l5 - addot(OT_S_BURNINGWAVE, "burning wave", "Fire bursts from the ground in a line towards the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's range is based on its power."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 3, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_WALLSTOP, NA, NULL); - addot(OT_S_FIREBALL, "fireball", "Creates a huge ball of fire, dealing up to ^bpower^nd3 damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The damage is lower for enemies further away from the ball's centre."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); // TODO: should be "near victim" - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - /////////////////// - // elemental - cold - /////////////////// - // l1 - addot(OT_S_CHILL, "chill", "Deals minor (1d3) cold damage to a single target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_GLACIATE, "glaciate", "Slows down molecules in a given area, instantly freezing any water present. Has no effect on living creatures.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SNOWBALL, "snowball", "Throws a large snowball, dealing 1 cold damage to all within its blast. The remaining snow will quickly melt to water.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_NEED, NA, NULL); - // l2 - addot(OT_S_FREEZEOB, "freezing touch", "Changes the next thing touched into solid ice. The effect is permenant for inanimate objects, but will wear off on living creatures.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addot(OT_S_ICEEDGE, "ice edge", "Enhances the edge of a bladed weapon with a layer of ice.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the enchantment will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_CRYSTALSHIELD, "crystalline shield", "Summons a shield of ice crystals to protect you from missiles.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how effective the shield is."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 6, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - // l3 - addot(OT_S_COLDRAY, "cold ray", "Shoots a blast of ice cold air, dealing 3d6 cold damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how difficult the ray is to dodge."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - addot(OT_S_COLDBURST, "cold burst", "Creates a radial blast of coldness out from the caster, dealing 1d8+3 cold damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's range is based on its power."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJSELF, NA, NA, NULL); - addot(OT_S_ICICLE, "icicle", "A huge icicle rises form the ground, knocking enemies away and blocking passage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the icicle will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SLIDE, "slipslide", "Generate ice underneath your feet, allowing you to slide along the ground at high speeds.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's duration is based on its power, however its effects will also end if you stop moving."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l4 - addot(OT_S_FROSTBITE, "frostbite", "Deals 1d3 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_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_WALLOFICE, "wall of ice", "Creates an impassable wall of solid ice.", MT_ICE, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the wall will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_CRYSTALARM, "crystalline armour", "Summons ice crystal armour to protect you from damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power 1-3: one piece of armour is created."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power 4-6: two pieces of armour are created."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power 7-9: three pieces of armour are created."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power 10: four pieces of armour are created."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SHARDSHOT, "shard shot", "Fires a scattered burst of small, fast moving ice shards. The shot will pass through multiple creatures, but damage is reduced with range.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's range is determined by its power."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_WALLSTOP, NA, NULL); - addot(OT_S_SNAPFREEZE, "snap freeze", "Instantly freezes the target creature. Cold-resistant creatures will take minor damage instead.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - // l6 - addot(OT_S_ABSOLUTEZERO, "absolute zero", "Instantly freezes everything around the caster - creatures, objects, even the ground itself.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - /////////////////// - // nature - /////////////////// - // l1 - addot(OT_S_CALMANIMALS, "calm animals", "Makes animals within the casters line of sight become peaceful.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how many hit dice worth of creatures will be affected."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addot(OT_S_DETECTPOISON, "detect poison", "Detects any poisoned object in sight of the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_PURIFYFOOD, "purify food", "Removes rot or poison from food or drink.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_STICKTOSNAKE, "sticks to snakes", "Transforms all seen wooden weapons into snakes.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - // l2 - addot(OT_S_BARKSKIN, "barkskin", "Covers the caster with a skin of bark, reducing damage but making them vulnerable to fire.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addot(OT_S_CHARMANIMAL, "befriend animal", "Temporarily makes a single animal friendly to you.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how the maximum hit dice creature which can be affected."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_LESSENPOISON, "lessen poison", "Reduces the effects of poison within the caster's bloodstream.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_REPELINSECTS, "repel insects", "Surrounds the caster with an insect-repelling smell.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_SOFTENEARTH, "soften earth", "Converts earth into mud, slowing down.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how much mud will be created."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SUMMONANIMALSSM, "summon small animals", "Summons 2-3 small animals.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the summoned creatures will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addot(OT_S_WARPWOOD, "warp wood", "Causes damage to all wooden object in the target area.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l3 - addot(OT_S_CALLLIGHTNING, "call lightning", "Blasts a single enemy with a bolt of lightning from the sky, dealing 3d6 damage (4d6 if outdoors).", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_LIGHTNINGBOLT, "electricity bolt", "Fires a bolt of electricity through multiple enemies, dealing 2d6 damage to each.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's range is based on its power."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_WALLSTOP, NA, NULL); - addot(OT_S_ENDUREELEMENTS, "endure elements", "Provides resistance to fire and cold.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_QUENCH, "quench", "Extinguishes all fires within the given area.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_EVAPORATE, "evaporate", "Instantly converts all water in the given area into steam.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the amount of water affected."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SLEETSTORM, "sleet storm", "Creates an cloud of sleet, hampering vision and movement.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the size of the storm."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell's power is boosted when cast outside."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 4, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_THORNS, "thorns", "Sharp thorns grow from your skin, dealing 1d4 damage to attackers.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_WEB, "web", "Slows down pursuers with a burst of sticky spider web.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how much webbing is created."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_NEED, NA, NULL); - // l4 - addot(OT_S_DIG, "dig", "Blasts away earth to create passages.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how much earth can be destroyed."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_ENTANGLE, "entangle", "Causes magical vines to hold enemies.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the strength of the vines."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_CALMINGSCENT, "calming scent", "Automatically calms any nearby animals.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_SATEHUNGER, "sate hunger", "Immediately satisfies the hunger of one living creature.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addot(OT_S_SUMMONANIMALSMD, "summon medium animals", "Summons 2-3 medium animals.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the summoned creatures will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addot(OT_S_WATERJET, "water spray", "Fires a high pressure blast of water from the caster's hands.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how far enemies are knocked back."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - // l5 - addot(OT_S_HAILSTORM, "hail storm", "Creates an intense storm of hail, causing damage to all within.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the size of the storm."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell's power is boosted when cast outside."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_COLD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l6 - addot(OT_S_LIGHTNINGSTORM, "lightning storm", "Blasts all visible enemies bolts of lightning from the sky, dealing 3d6 damage (4d6 if outdoors).", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how many bolts will appear."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addot(OT_S_SUMMONANIMALSLG, "summon large animals", "Summons 2-3 large animals.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the summoned creatures will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addot(OT_S_FLOOD, "flood", "Creates a massive ball of water.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the amount of water which appears."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - /////////////////// - // gravity - /////////////////// - // l1 - addot(OT_S_TRUESTRIKE, "weapon attraction", "Gives the target unerring accuracy, making their attacks always hit.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the amount of strikes before it expires."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, 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_VARPOWER, B_TRUE, NA, NA, NULL); - // l2 - addot(OT_S_GRAVLOWER, "lessen gravity", "Causes the caster to fall very slowly.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - // l3 - addot(OT_S_SLOW, "slowness", "Decreases the speed of the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the slowness will last."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - // l4 - addot(OT_S_GRAVBOOST, "boost gravity", "Greatly increases gravity around the target, stopping them from moving.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long its effects will last."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_S_LEVITATION, "levitation", "Causes the caster hover a metre above the ground.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - // l5 - // l6 - addot(OT_S_FLIGHT, "fly", "Allows the caster to fly.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addot(OT_S_HASTE, "haste", "Increases the speed of the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long its effects will last."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - /////////////////// - // life / cleric spells - /////////////////// - // l1 - addot(OT_S_HEALINGMIN, "minor healing", "Restores 1-8 health to the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell heals an extra 2 damage per power level."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, 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_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_TURNUNDEAD, "turn undead", "Instills fear in undead creatures.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - // l2 - addot(OT_S_SPEAKDEAD, "speak with dead", "Temporarily allow a corpse to answer questions about its former life.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DEATH, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addot(OT_S_SMITEEVIL, "smite evil", "Instantly deals 1-^bpower*2^n damage to evil creatures.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 10, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l3 - addot(OT_S_HEALING, "healing", "Restores 10-20 health to the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell heals an extra 2 damage per power level."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_HOLYAURA, "holy aura", "Surrounds the target with a holy aura, causing their weapon to deal holy damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - // l4 - addot(OT_S_HEALINGMAJ, "major healing", "Restores 20-30 health to the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell heals an extra 2 damage per power level."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_CUREPOISON, "cure poison", "Cures the target of all poisons.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - /////////////////// - // mental/psionic - /////////////////// - // l1 - addot(OT_S_MINDSCAN, "mind scan", "Reveals detailed information about the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_DISORIENT, "disorient", "Spins the target around to face a different direction. This will sometimes also make them dizzy.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 10, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_S_STUN, "stun", "Stuns the target, preventing them from taking action for a few seconds.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, 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_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - // l2 - addot(OT_S_LOWERMETAB, "lower metabolism", "Slow your body's functions, decreasing your rate of hunger but also your movement speed.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power level III: your speed penalty is reduced."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power level V: you no longer suffer a speed penalty."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_TELEKINESIS, "telekinesis", "Mentally move or manipulate nearby objects.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "This spell can lift up to 10kg per power level."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SPECIAL, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_WALLSTOP, NA, NULL); - addot(OT_S_LETHARGY, "lethargy", "Reduces the target's stamina by ^bpower^n*2.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l3 - addot(OT_S_PSYARMOUR, "psychic armour", "Mentally block incoming attacks.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The psychic armour's Armour Rating is ^bpower*4^n."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_VARPOWER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - // TODO: hardcode how ai casts this - addot(OT_S_BAFFLE, "baffle", "Confuses the target, causing them to lose control of their movement.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The target will be confused for ^bpower^n*4 turns."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SLEEP, "sleep", "Puts the target creature to sleep.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the sleep effect will last."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_HUNGER, "hunger", "Causes the target to become ravenously hungry.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l4 - addot(OT_S_PACIFY, "pacify", "Induces calmness in another, preventing them from attacking.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_STUNMASS, "mass stun", "Stuns all creatures within sight.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - // l5 - addot(OT_S_CHARM, "charm", "Causes another lifeform to temporary become friendly.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability and duration."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MENTAL, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SPECIAL, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - /////////////////// - // modification - /////////////////// - // l1 - addot(OT_S_HOLDPORTAL, "hold portal", "Prevents a door from opening.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_INSCRIBE, "inscribe", "Creates a magical inscription viewable to anyone standing nearby.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addot(OT_S_KNOCK, "knock", "Magically opens doors or other such barriers.\n", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power VII, this spell will also knock back living creatures."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_LIGHT, "light area", "Creates a temporary light source centred on the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power III, you can control where the light appears."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power VIII, the light becomes permenant."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_LIFE, 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_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - // l2 - addot(OT_S_DARKNESS, "darkness", "Permenantly darkens the area around the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power III, you can control where the darkness appears."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power VIII, the darkness becomes permenant."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addot(OT_S_MENDING, "mending", "Repairs minor damage to objects (1d6 + ^bpower^n).", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addot(OT_S_GREASE, "grease", "Creates a large pool of greasy oil.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the size of the grease pool."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - // l3 - addot(OT_S_INVISIBILITY, "invisibility", "Temporarily renders the target invisible.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines how long the invisibility will last."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - //addflag(lastot->flags, F_XPVAL, 50, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_PASSWALL, "passwall", "Allows the caster to temporarily walk through a single wall.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - 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_ENCHANTMENT, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - // l5 - addot(OT_S_GASEOUSFORM, "gaseous form", "Changes the caster into a cloud of gas.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - // l6 - addot(OT_S_PETRIFY, "petrify", "Causes a living creature to turn into stone.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_S_POLYMORPH, "polymorph", "Transmutes the target into a new living race.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power V, you can polymorph other creatures."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power VIII, you can choose what kind of creature to polymorph into."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_MODIFICATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, 10, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - - /////////////////// - // summoning - /////////////////// - // l1 - addot(OT_S_FLOATINGDISC, "floating disc", "Creates a disc of energy to carry your equipment.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power level determines how much wight the disc can carry."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 6, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SUMMONWEAPON, "summon weapon", "Summons a blade of pure magic into your hands. Deals 1-^bpower^n damage.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 6, NA, NA, NULL); - addflag(lastot->flags, F_VARPOWER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - // l2 - addot(OT_S_CREATEMONSTER, "create monster", "Summons a (probably hostile) monster to a nearby location.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power V you can control where the monster appears."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power VII you can control the type of monster created."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l5 - addot(OT_S_SUMMONDEMON, "summon demon", "Summons a random demonic entity.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines its chances of success, and how long the demon will remain."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_SUMMONING, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - /////////////////// - // translocation - /////////////////// - // l1 - addot(OT_S_APPORTATION, "apportation", "Instantly transports a single visible object up to 10kg in weight to the caster's pack.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l2 - addot(OT_S_BLINK, "blink", "Teleports the caster to a random location within view.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At Power VI you can choose where to blink to."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 6, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_SUCK, "suck", "Sucks the target lifeform towards the caster.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_WALLSTOP, NA, NULL); - // l3 - addot(OT_S_TWIDDLE, "twiddle", "Swaps places with the target creature.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l4 - addot(OT_S_TELEPORT, "teleportation", "Teleports the caster (and Power-1 adjacent allies) to a new location within the same level.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power V, you can choose the general direction to teleport in."); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "At power VII, you can choose exactly where to teleport to."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 4, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_DISPERSAL, "dispersal", "Scatters everything in the target cell around the area.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines resistability."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - // l5 - addot(OT_S_GATE, "gate", "Creates a portal to a different dungeon level (within ^bpower^n*2 levels).", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - // l6 - addot(OT_S_PLANESHIFT, "planeshift", "Instantly transports the caster to a different plane of existence.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 1, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - - /////////////////// - // wild - /////////////////// - // l1 - addot(OT_S_MANASPIKE, "mana spike", "Fires a small bolt of wild magic, dealing 1d2 magical damage per power level.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 1, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 3, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - // l2 - addot(OT_S_ENERGYBOLT, "energy bolt", "Fires a medium-sized bolt of wild magic, dealing 1d4 damage per power level.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_MAXPOWER, 3, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL); - addot(OT_S_ALARM, "alarm", "Creates a passive alarm which goes off when an enemy is nearby.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 2, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addflag(lastot->flags, F_ONGOING, B_TRUE, NA, NA, NULL); - // l3 - addot(OT_S_ENERGYBLAST, "energy blast", "Causes a ring of energy to expand from the caster, causing 2d6 damage to anything in sight.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the radius of the blast."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJSELF, NA, NA, NULL); - addot(OT_S_FLASH, "flash", "Causes a very bright flash, stunning anyone who sees it.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the size of the flash."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_NATURE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - // l6 - addot(OT_S_DETONATE, "detonate", "Causes a given area to explode with massive force.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines the size of the explosion."); - addflag(lastot->flags, F_SPELLSCHOOL, SS_WILD, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - - - // divine powers (spells/abilities) - addot(OT_A_BLINDALL, "nosight", "Make everyone on the level blind.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_DEBUG, "debug", "You can toggle debugging for a lifeform.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_ENHANCE, "enhance", "Enhance a lifeform's stats.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_LEARN, "learn", "Learn new skills.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_LEVELUP, "levelup", "Bestow the given xp level.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_S_WISH, "wish", "Grants the caster any item of their choice. Beware - casting this powerful spell will reduce the caster's hit points by 50%.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINE, NA, NA, NULL); - addot(OT_S_WISHLIMITED, "limited wish", "Grants the caster a wish of their choice. Beware - casting this powerful spell will reduce the caster's hit points by 25%.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLLEVEL, 5, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINE, NA, NA, NULL); - addot(OT_S_CONFISCATE, "confiscate", "Takes any object from the target.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINE, NA, NA, NULL); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_S_GIFT, "gift", "Grants the target any item of their choice (with some limitations).", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINE, NA, NA, NULL); - addot(OT_S_CLEARLEVEL, "blank level", "Blanks out the current map.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - addot(OT_S_CREATEVAULT, "create vault", "Create a vault of the given type.", MT_NOTHING, 0, OC_SPELL, SZ_TINY); - addflag(lastot->flags, F_SPELLLEVEL, 6, NA, NA, NULL); - addflag(lastot->flags, F_SPELLSCHOOL, SS_DIVINE, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, NA, NULL); - - // abilities - addot(OT_A_EMPLOY, "employ", "Assigns a job to the target lifeform.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_CHARGE, "charge", "You can quickly charge into close quarters for battle.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_A_CRUSH, "crush", "You can crush enemies after grabbing them.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addflag(lastot->flags, F_NEEDSGRAB, B_TRUE, NA, NA, NULL); - addot(OT_A_COOK, "cook", "Combine food and water into a healthy meals.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_DARKWALK, "darkwalk", "Step between the shadows.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - // ai will cast this spell in a special manner... - addot(OT_A_COMBOSTRIKE, "combination strike", "Perform a combination of blows which continues each time you defeat an enemy.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addot(OT_A_DISARM, "disarm", "Attempt to disable a known trap.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_FEIGNDEATH, "feign death", "Pretend to be dead.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_FLURRY, "flurry", "Perform a flurry of attacks, forcing your opponent backwards.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addot(OT_A_GRAB, "grab", "You can grab hold of nearby enemies to prevent their escape.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addflag(lastot->flags, F_XPVAL, 10, NA, NA, NULL); - addot(OT_A_HEAVYBLOW, "heavy blow", "Mighty blow which knocks enemies backwards.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addot(OT_A_HIDE, "hide", "You can hide in the shadows.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addot(OT_A_HURRICANESTRIKE, "hurricane strike", "A sweeping attack aginst everything nearby.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJSELF, NA, NA, NULL); - addot(OT_A_INSPECT, "inspect", "Try to identify an unknown scroll, book, wand or ring from your pack.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_JUMP, "jump", "You can leap large distances.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_STAMCOST, 3, NA, NA, NULL); - addot(OT_A_POLYREVERT, "revertform", "Revert to your original form.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_NOANNOUNCE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, 10, NA, NULL); - addot(OT_A_QUIVERINGPALM, "quivering palm", "A deadly palm strike which knocks the molecules in the target's body out of alignment.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_PRAY, "pray", "Ask for help from a higher being.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_RAGE, "rage", "Enter a state of berzerker rage, gaining attack and defence bonuses.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJSELF, NA, NA, NULL); - addflag(lastot->flags, F_STAMCOST, 5, NA, NA, NULL); - addot(OT_A_REPAIR, "repair equipment", "Repair damage done to your equipment.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_SPRINT, "sprint", "You can run at high speed over short distances.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOFLEE, ST_SELF, NA, NA, NULL); - addflag(lastot->flags, F_STAMCOST, 1, NA, NA, NULL); - addot(OT_A_STEAL, "steal", "Try to steal an item from an enemy.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addot(OT_A_STINGACID, "sting (acid)", "You can sting your enemies.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 1, NA, NA, NULL); - addot(OT_A_STUDYSCROLL, "study scroll", "Attempt to learn a spell directly from a scroll.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_SUCKBLOOD, "suck blood", "You can suck the blood from enemies after attaching to them.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, NA, NA, NULL); - addot(OT_A_SWOOP, "swoop", "You can attack an enemy while flying past them.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_A_TRAIN, "train skills", "Start training to gain a new experience level or enhance skill.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addot(OT_A_TUMBLE, "tumble", "You can tumble across the ground.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_STAMCOST, 2, NA, NA, NULL); - addot(OT_A_WARCRY, "warcry", "Inspire fear in your enemies with a mighty war cry.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY); - addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_ANYWHERE, NA, NA, NULL); - - - // books - addot(OT_MANUAL, "manual", "Teaches you one level of its subject matter.", MT_PAPER, 1.5, OC_BOOK, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - addot(OT_SPELLBOOK, "spellbook", "Teaches you the spell contained within.", MT_PAPER, 1.5, OC_BOOK, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - - // wands - addot(OT_WAND_KNOCK, "wand of opening", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_KNOCK, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_DOOR, NA, NA, NULL); - addot(OT_WAND_LIGHT, "wand of light", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 83, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_LIGHT, 3, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, TR_NEEDLOF, NA, NULL); - addot(OT_WAND_REVEALHIDDEN, "wand of reveal hidden", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_REVEALHIDDEN, NA, NA, NULL); - addot(OT_WAND_SLOW, "wand of slowness", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_SLOW, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_DIGGING, "wand of digging", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DIG, NA, NA, NULL); - //addflag(lastot->flags, F_OPERNEEDTARGET, TT_NONE, NA, NA, NULL); - addot(OT_WAND_COLD, "wand of cold", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_COLDRAY, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_FIRE, "wand of fire", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_FIREDART, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_HASTE, "wand of haste", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_HASTE, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addot(OT_WAND_WEAKNESS, "wand of enfeeblement", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_WEAKEN, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_WONDER, "wand of wonder", "Produces random effects.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, RR_RARE, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_NONE, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_INVIS, "wand of invisibility", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_INVISIBILITY, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_SELF, NA, NA, NULL); - addot(OT_WAND_DISPERSAL, "wand of dispersal", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DISPERSAL, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER|TT_OBJECT, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_AIFLEEITEM, B_TRUE, NA, NA, NULL); - addot(OT_WAND_FIREBALL, "wand of fireball", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_FIREBALL, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_DETONATION, "wand of detonation", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_DETONATE, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER|TT_DOOR, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL); - addot(OT_WAND_POLYMORPH, "wand of polymorph", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_POLYMORPH, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL); - addot(OT_WAND_TURNUNDEAD, "wand of turn undead", "A limited-use magical wand which casts the imbued spell.", MT_METAL, 0.5, OC_WAND, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 72, RR_RARE, NULL); - addflag(lastot->flags, F_LINKSPELL, OT_S_TURNUNDEAD, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, NULL); - - // tools - unique - addot(OT_ORBDUNGEONEXIT, "dungeon exit orb", "When operated, this magical key will disable the barriers around the dungeon exit stairs.", MT_STONE, 2, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_GLYPH, C_MAGENTA, NA, NA, "["); - addflag(lastot->flags, F_UNIQUE, NA, NA, NA, NULL); - addflag(lastot->flags, F_INVULNERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - // tools - addot(OT_BANDAGE, "bandage", "A small medical bandage. When worn, it will counteract bleeding.", MT_CLOTH, 0.5, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL); - - addot(OT_BLANKET, "wool blanket", "A warm wool blanket for those cold winter nights.", MT_CLOTH, 2, OC_TOOLS, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, NULL); - addflag(lastot->flags, F_HELPSREST, 10, NA, NA, NULL); - - addot(OT_BLINDFOLD, "blindfold", "Short length of wide cloth, used for blocking eyesight.", MT_CLOTH, 0.01, OC_TOOLS, SZ_TINY); - addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_BLIND, B_TRUE, NA, NULL); - addflag(lastot->flags, F_VALUE, 20, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - - addot(OT_CALTROP, "caltrop", "Connected metal spikes arranged such that one will always point upwards.", MT_METAL, 0.2, OC_TOOLS, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_NUMAPPEAR, 1, 3, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_SHARP, 2, 5, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - - addot(OT_BUGLAMP, "glowing flask", "A glass flask with a glowbug corpse inside.", MT_GLASS, 0.3, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "!"); - addflag(lastot->flags, F_PRODUCESLIGHT, 2, NA, NA, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_PRODUCESLIGHT, 2, IFKNOWN, NULL); - addflag(lastot->flags, F_FEELTEXT, NA, NA, NA, "a flask"); - - addot(OT_CANDLE, "candle", "A short wax candle.", MT_WAX, 0.2, OC_TOOLS, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATEPREFIX, NA, NA, NA, "lit"); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 1, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 1, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_RNDCHARGES, 50, 100, NA, NULL); - addflag(lastot->flags, F_LIGHTSOURCE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGELOWMSG, B_TRUE, NA, NA, "flickers"); - addflag(lastot->flags, F_CHARGEOUTMSG, B_TRUE, NA, NA, "goes out"); - - addot(OT_FRIDGE, "refrigerator", "An insulated household appliance, made for storing food.", MT_METAL, 80, OC_TOOLS, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GLYPH, C_WHITE, NA, NA, "]"); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 40, 40, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - - addot(OT_GUNPOWDER, "pile of gunpowder", "A black metallic powder.", MT_METAL, 0.5, OC_TOOLS, SZ_TINY); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pile of black powder"); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_EXPLODEONDAM, DT_FIRE, NA, NA, "8d2"); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "2d6"); - addflag(lastot->flags, F_FLAMMABLE, 3, NA, NA, NULL); - addflag(lastot->flags, F_POWDER, B_TRUE, NA, NA, NULL); - - addot(OT_LAMPOIL, "oil lamp", "An oil-powered lamp which produces light.", MT_METAL, 1, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 2, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 2, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_RNDCHARGES, 200, 400, NA, NULL); - addflag(lastot->flags, F_REFILLWITH, OT_POT_OIL, NA, NA, NULL); - addflag(lastot->flags, F_LIGHTSOURCE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGELOWMSG, B_TRUE, NA, NA, "flickers"); - addflag(lastot->flags, F_CHARGEOUTMSG, B_TRUE, NA, NA, "goes out"); - - addot(OT_LANTERNOIL, "oil lantern", "An oil-powered lantern which produces a lot of light.", MT_METAL, 1, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 55, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 3, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 3, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_RNDCHARGES, 300, 500, NA, NULL); - addflag(lastot->flags, F_REFILLWITH, OT_POT_OIL, NA, NA, NULL); - addflag(lastot->flags, F_LIGHTSOURCE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGELOWMSG, B_TRUE, NA, NA, "flickers"); - addflag(lastot->flags, F_CHARGEOUTMSG, B_TRUE, NA, NA, "goes out"); - - addot(OT_LOCKPICK, "lockpick", "An angled piece of metal, used to open locks.", MT_METAL, 0.05, OC_TOOLS, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 10, B_DIEONFAIL, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - - addot(OT_PANPIPES, "set of panpipes", "A set of musical pipes.", MT_METAL, 0.5, OC_TOOLS, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - - addot(OT_PICKAXE, "pickaxe", "A heavy tool for breaking rock.", MT_METAL, 8, OC_TOOLS, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - - addot(OT_ROPE, "rope", "A long length of strong rope.", MT_CLOTH, 5, OC_TOOLS, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 75, NA, NULL); - addflag(lastot->flags, F_HELPSCLIMB, 3, NA, NA, NULL); - - addot(OT_SACK, "sack", "A small cloth sack.", MT_CLOTH, 0.5, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 30, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 10, NA, NA, NULL); - - addot(OT_SACKLARGE, "large sack", "A large cloth sack.", MT_CLOTH, 1, OC_TOOLS, SZ_MEDIUM); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - - addot(OT_SACKHUGE, "huge sack", "An enormous cloth sack.", MT_CLOTH, 1, OC_TOOLS, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - - - addot(OT_BAGOFHOLDING, "bag of holding", "A magical sack which causes items placed inside it to become weightless.", MT_CLOTH, 0.5, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_ALL, 80, RR_RARE, NULL); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERWITHOUTID, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOTRIED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HOLDING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 30, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 10, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "sack"); - - addot(OT_BAGOFHOLDINGLARGE, "large bag of holding", "A large magical sack which causes items placed inside it to become weightless.", MT_CLOTH, 0.5, OC_TOOLS, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_ALL, 80, RR_RARE, NULL); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERWITHOUTID, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOTRIED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HOLDING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "large sack"); - - addot(OT_BAGOFHOLDINGHUGE, "huge bag of holding", "An enormous magical sack which causes items placed inside it to become weightless.", MT_CLOTH, 0.5, OC_TOOLS, SZ_LARGE); - addflag(lastot->flags, F_RARITY, H_ALL, 80, RR_VERYRARE, NULL); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERWITHOUTID, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOTRIED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HOLDING, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 100, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "huge sack"); - - addot(OT_SAFEBOX, "safebox", "A small metal container for safely storing valuables.", MT_METAL, 2, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 77, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBETRAPPED, 20, 25, 66, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - - addot(OT_TORCH, "torch", "A metre-long wooden rod with a flammable end.", MT_WOOD, 2, OC_TOOLS, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATEPREFIX, NA, NA, NA, "lit"); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 2, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 2, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_RNDCHARGES, 100, 200, NA, NULL); - addflag(lastot->flags, F_REFILLWITH, OT_POT_OIL, NA, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_FIRE, NA, NA, "1d4"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_LIGHTSOURCE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGELOWMSG, B_TRUE, NA, NA, "flickers"); - addflag(lastot->flags, F_CHARGEOUTMSG, B_TRUE, NA, NA, "goes out"); - - addot(OT_TOWEL, "towel", "An large absorbent cloth used for drawing off moisture.", MT_CLOTH, 1.5, OC_TOOLS, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - - // tech - l0 - addot(OT_CREDITCARD, "credit card", "A rectangular plastic card.", MT_PLASTIC, 0.01, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_ALL, 90, NA, NULL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 2, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addot(OT_PAPERCLIP, "paperclip", "A thin, looped wire for holding paper together.", MT_WIRE, 0.01, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_ALL, 90, NA, NULL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 4, B_DIEONFAIL, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - // can use as a (very bad) weapon too... - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d1"); - addflag(lastot->flags, F_ACCURACY, 50, NA, NA, NULL); - - addot(OT_SLEEPINGBAG, "sleeping bag", "An insulated bag for sleeping in. Very comfortable.", MT_CLOTH, 4, OC_TECH, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, NULL); - addflag(lastot->flags, F_HELPSREST, 15, NA, NA, NULL); - - // tech - l1 - addot(OT_POCKETWATCH, "pocket watch", "A portable timekeeping device made to be carried in a pocket.", MT_METAL, 0.1, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_DIGITALWATCH, "digital watch", "An electronic timekeeping device which shows the time as a number.", MT_METAL, 0.1, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_INSECTICIDE, "can of insecticide", "A spraycan containing poisonous chemicals.", MT_METAL, 0.5, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERUSECHARGE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDTARGET, TT_MONSTER, NA, NA, "Where will you spray?"); - addflag(lastot->flags, F_RNDCHARGES, 1, 5, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_LANTERNLED, "LED lantern", "A low-powered but efficient lantern which will last almost forever.", MT_METAL, 0.5, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 2, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 2, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_TENT, "tent", "A easy to use, portable shelter made of fabric.", MT_CLOTH, 10, OC_TECH, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, NULL); - addflag(lastot->flags, F_HELPSREST, 15, 1, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_NOVICE, NA, NA, NULL); - - // tech - l2 - addot(OT_FLASHBANG, "flashbang", "A stun grenade which temporarily blinds all within sight.", MT_METAL, 1, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGES, 2, 2, NA, NULL); - addflag(lastot->flags, F_DONTSHOWCHARGES, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RECHARGEWHENOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_FLASHONDEATH, 4, NA, B_IFACTIVATED, NULL); - addflag(lastot->flags, F_FLASHONDAM, 4, NA, B_IFACTIVATED, NULL); - addflag(lastot->flags, F_GRENADE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_GRENADE, "grenade", "An explosive weapon which explodes a short time after activation.", MT_METAL, 1, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGES, 2, 2, NA, NULL); - addflag(lastot->flags, F_DONTSHOWCHARGES, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RECHARGEWHENOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_EXPLODEONDEATH, NA, NA, B_IFACTIVATED, "8d2"); - addflag(lastot->flags, F_EXPLODEONDAM, NA, NA, B_IFACTIVATED, "5d2"); - addflag(lastot->flags, F_GRENADE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_C4, "block of c4", "An extremely explosive plastic which explodes a medium time after activation.", MT_PLASTIC, 1, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 76, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGES, 5, 5, NA, NULL); - addflag(lastot->flags, F_DONTSHOWCHARGES, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RECHARGEWHENOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_EXPLODEONDEATH, NA, B_BIG, B_IFACTIVATED, "90d2"); // 90 - 180 damage - addflag(lastot->flags, F_GRENADE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_MOTIONSCANNER, "motion scanner", "Small scanning device which detects nearby lifeforms.", MT_METAL, 1.5, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_RARITY, H_ALL, 70, RR_RARE, NULL); - addflag(lastot->flags, F_HOLDCONFER, F_DETECTLIFE, 10, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_NVGOGGLES, "nightvis goggles", "Special goggles which allow the wear to see in the dark.", MT_METAL, 1.5, OC_TECH, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_ALL, 70, RR_RARE, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_EYES, 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_EQUIPCONFER, F_SEEINDARK, 5, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL); - addot(OT_STYPTIC, "styptic", "A medical compound designed to inhibit bleeding.", MT_METAL, 0.5, OC_TECH, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, NA, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - - - // tech - l3 - addot(OT_INFOVISOR, "infovisor", "Sleek looking metal visor which displays info directly into the retina.", MT_METAL, 0.2, OC_TECH, SZ_SMALL); - addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, RR_RARE, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_EXTRAINFO, B_TRUE, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ENHANCESEARCH, 10, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_ADEPT, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_LOCKHACKER, "lock hacker", "A sophisticated machine to manipulate physical locks.", MT_METAL, 3, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 78, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_ADEPT, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_PORTLADDER, "portable ladder", "A lightweight two metre ladder which automatically folds down to pocket size.", MT_METAL, 2, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 83, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_ADEPT, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - - // tech - l4 - addot(OT_JETPACK, "jet pack", "A portable ion-thruster which allows the wearer to fly.", MT_METAL, 10, OC_TECH, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 68, RR_RARE, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RNDCHARGES, 10, 30, NA, NULL); - addflag(lastot->flags, F_REFILLWITH, OT_POT_OIL, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATECONFER, F_FLYING, B_TRUE, NA, NULL); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 1, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_SKILLED, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - - // tech - l5 - addot(OT_TELEPAD, "teleport beacon", "A metal cone which will teleport the user to the nearest similar cone.", MT_METAL, 3, OC_TECH, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 68, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_EXPERT, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - addot(OT_XRAYGOGGLES, "pair of xray goggles", "Bulky looking goggles which allow you to see through walls.", MT_METAL, 0.3, OC_TECH, SZ_TINY); - addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_XRAYVIS, 2, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, RR_RARE, NULL); - addflag(lastot->flags, F_TECHLEVEL, PR_EXPERT, NA, NA, NULL); - addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL); - - // tech - l6 ??? - - // misc - addot(OT_BONE, "bone", "A bone from an unknown creature.", MT_BONE, 0.1, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 90, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addot(OT_CHEST, "chest", "A small wooden treasure chest.", MT_METAL, 40, OC_FURNITURE, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "("); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 6, 6, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBETRAPPED, 20, 20, 66, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 90, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 80, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 70, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 60, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBRND, 50, NA, NA, NULL); - addot(OT_EMPTYFLASK, "empty flask", "An empty glass flask.", MT_GLASS, 0.2, OC_MISC, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "!"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addot(OT_EMPTYVIAL, "empty vial", "An empty glass vial.", MT_GLASS, 0.1, OC_MISC, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "!"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 82, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addot(OT_BROKENGLASS, "piece of broken glass", "Sharp shards of broken glass.", MT_GLASS, 0.1, OC_MISC, SZ_MINI); - addflag(lastot->flags, F_STACKABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_NUMAPPEAR, 1, 8, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "^"); - addflag(lastot->flags, F_SHARP, 1, 2, NA, NULL); - addflag(lastot->flags, F_CRUSHABLE, SZ_MEDIUM, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastot->flags, F_NOSHATTER, B_TRUE, NA, NA, NULL); - addot(OT_ICESHEET, "sheet of ice", "A large sheet of slippery ice.", MT_ICE, 0.5, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_WHITE, NA, NA, "_"); - addflag(lastot->flags, F_DTCONVERT, DT_FIRE, NA, NA, "large puddle of water"); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "large puddle of water"); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "melts"); - addflag(lastot->flags, F_DIECONVERTTEXTPL, NA, NA, NA, "melt"); - addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 14, NA, NA, NULL); - addot(OT_ICECHUNK, "chunk of ice", "A chunk of ice.", MT_ICE, 0.5, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 3, NA, NULL); - addflag(lastot->flags, F_STACKABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "small puddle of water"); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "melts"); - addflag(lastot->flags, F_DIECONVERTTEXTPL, NA, NA, NA, "melt"); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOSHATTER, B_TRUE, NA, NA, NULL); - - addot(OT_MELTEDWAX, "lump of melted wax", "A useless lump of melted wax.", MT_WAX, 0.1, OC_MISC, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_NOMATCONVERT, B_TRUE, NA, NA, NULL); - - addot(OT_SOGGYPAPER, "lump of soggy paper", "A useless lump of soggy paper.", MT_WETPAPER, 0.1, OC_MISC, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "?"); - addflag(lastot->flags, F_NOMATCONVERT, NA, NA, NA, NULL); - - addot(OT_VOMITPOOL, "pool of vomit", "A disgusting pool of regurgitated food.", MT_WATER, 1, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 90, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, ","); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 1, NA, NA, NULL); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, 0, NA, NULL); - addflag(lastot->flags, F_TAINTED, B_TRUE, NA, NA, NULL); - - addot(OT_ACIDPOOL, "pool of acid", "A pool of corrosive acid.", MT_ACID, 0, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "~"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "evaporates"); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "puddle of acid"); - addflag(lastot->flags, F_OBHP, 4, 4, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_ACID, FALLTHRU, "2d4"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_ACID, NA, NA, NULL); - - addot(OT_ACIDPUDDLE, "puddle of acid", "A small puddle of corrosive acid.", MT_ACID, 0, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "~"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBDIETEXT, NA, NA, NA, "evaporates"); - addflag(lastot->flags, F_OBHP, 4, 4, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_ACID, FALLTHRU, "1d4"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_ACID, NA, NA, NULL); - - addot(OT_ACIDSPLASH, "splash of acid", "A splash corrosive acid.", MT_ACID, 0, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBDIETEXT, NA, NA, NA, "evaporates"); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_ACID, FALLTHRU, "1d2"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_ACID, NA, NA, NULL); - - addot(OT_SLIMEPOOL, "pool of slime", "A disgusting mass of sticky slime.", MT_WATER, 20, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_EDIBLE, B_TRUE, 2, NA, NULL); - - addot(OT_PUDDLEOIL, "puddle of oil", "A slippery puddle of oil.", MT_OIL, 15, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, ","); // should really be dark grey - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_FLAMMABLE, 5, NA, NA, "medium fire"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_OIL, NA, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 13, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBDIETEXT, NA, NA, NA, "evaporates"); - - // this isn't made out of water, so that it won't put out fire etc - addot(OT_SPLASHWATER, "splash of water", "A small splash of water.", MT_NOTHING, 0.5, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BLUE, NA, NA, ","); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBDIETEXT, NA, NA, NA, "evaporates"); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, "0d1+100"); - addflag(lastot->flags, F_LINKOB, OT_POT_WATER, NA, NA, NULL); - - addot(OT_MUDPOOL, "pool of mud", "A large puddle of wet mud.", MT_WATER, 60, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "~"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 90, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTIMMUNE, DT_WATER, NA, NA, NULL); - addflag(lastot->flags, F_REDUCEMOVEMENT, 2, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - //addflag(lastot->flags, F_WALKDAM, DT_WATER, NA, NA, "0d1+1"); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_WATER, FALLTHRU, "0d1+1"); - - addot(OT_PUDDLEWATER, "small puddle of water", "A small puddle of water.", MT_WATER, 10, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BLUE, NA, NA, ","); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 90, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTCONVERT, DT_COLD, NA, NA, "sheet of ice"); - addflag(lastot->flags, F_DTCONVERT, DT_FIRE, NA, NA, "puff of steam"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_WATER, NA, NA, NULL); - //addflag(lastot->flags, F_WALKDAM, DT_WATER, NA, NA, "0d1+1"); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_WATER, FALLTHRU, "0d1+1"); - - addot(OT_PUDDLEWATERL, "large puddle of water", "A large pool of water.", MT_WATER, 20, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BLUE, NA, NA, "~"); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 85, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DTCONVERT, DT_COLD, NA, NA, "sheet of ice"); - addflag(lastot->flags, F_DTCONVERT, DT_FIRE, NA, NA, "cloud of steam"); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_WATER, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_WATER, FALLTHRU, "0d1+2"); - - addot(OT_BLOODSTAIN, "blood stain", "A dried stain of blood.", MT_BLOOD, 0, OC_MISC, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_RED, NA, NA, ","); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_COSMETIC, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_BLOODCSPLASH, "splash of cockatrice blood", "A small pool of cockatrice blood.", MT_BLOOD, 0, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBDIETEXT, NA, NA, NA, "evaporates"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, 0, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_BLOODC, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_BLOODSPLASH, "splash of blood", "A small pool of blood.", MT_BLOOD, 0, OC_MISC, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, ","); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 1, NA, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "blood stain"); - //addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "dries up"); - //addflag(lastot->flags, F_DIECONVERTTEXTPL, NA, NA, NA, "dry up"); - addflag(lastot->flags, F_NODIECONVERTTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_BLOOD, NA, NA, NULL); - addflag(lastot->flags, F_COSMETIC, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_BLOODPOOL, "pool of blood", "A large pool of blood.", MT_BLOOD, 0, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "~"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SLIPPERY, 3, NA, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "blood stain"); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "dries up"); - addflag(lastot->flags, F_DIECONVERTTEXTPL, NA, NA, NA, "dry up"); - addflag(lastot->flags, F_OBHP, 45, 45, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DRINKABLE, B_TRUE, 0, NA, NULL); - addflag(lastot->flags, F_LINKOB, OT_POT_BLOOD, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - - addot(OT_SIGN, "sign", "A marker with something written on it.", MT_WOOD, 25, OC_MISC, SZ_MEDIUM); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "|"); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 6, 6, NA, NULL); - - - // furniture - addot(OT_CANDELABRUM, "candelabrum", "A large (and heavy) decorative candle, about human height.", MT_METAL, 60, OC_FURNITURE, SZ_HUMAN); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "\\"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERONOFF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACTIVATEPREFIX, NA, NA, NA, "lit"); - addflag(lastot->flags, F_ACTIVATECONFER, F_PRODUCESLIGHT, 4, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 4, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_REFILLWITH, OT_POT_OIL, NA, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_LIGHTSOURCE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CHARGELOWMSG, B_TRUE, NA, NA, "flickers"); - addflag(lastot->flags, F_CHARGEOUTMSG, B_TRUE, NA, NA, "goes out"); - - addot(OT_COFFIN, "coffin", "A wooden coffin, made for holding the dead.", MT_WOOD, 100, OC_FURNITURE, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_ALL, 75, RR_RARE, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "|"); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOB, 80, NA, NA, "3-4 piles of ash"); - addflag(lastot->flags, F_STARTOB, 80, NA, NA, "5-10 bones"); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - - addot(OT_FIREPLACE, "fireplace", "A roaring fireplace.", MT_STONE, 200, OC_FURNITURE, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_RED, NA, NA, "\\"); - addflag(lastot->flags, F_PRODUCESLIGHT, 3, NA, IFACTIVE, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ONFIRE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - - addot(OT_WEAPONRACK, "weapon rack", "A large matel frame, made to store weapons.", MT_METAL, 150, OC_FURNITURE, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_ALL, 80, RR_RARE, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "\\"); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOB, 80, NA, NA, "random weapon"); - addflag(lastot->flags, F_STARTOB, 60, NA, NA, "random weapon"); - addflag(lastot->flags, F_STARTOB, 50, NA, NA, "good weapon"); - addflag(lastot->flags, F_STARTOB, 50, NA, NA, "great weapon"); - - addot(OT_WOODENBARREL, "wooden barrel", "A solid wooden barrel.", MT_WOOD, 40, OC_FURNITURE, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_VILLAGE, 75, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "("); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_LARGE, NA, NULL); - addflag(lastot->flags, F_CRUSHABLE, SZ_HUGE, NA, NA, NULL); - addflag(lastot->flags, F_PUSHABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 12, 12, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CONTAINER, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_POTION, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - addflag(lastot->flags, F_STARTOBCLASS, 50, OC_FOOD, NA, NULL); - - addot(OT_WOODENTABLE, "wooden table", "A waist-height wooden table.", MT_WOOD, 25, OC_FURNITURE, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "\\"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_HUMAN, NA, NULL); - addflag(lastot->flags, F_CRUSHABLE, SZ_LARGE, NA, NA, NULL); - addflag(lastot->flags, F_PUSHABLE, B_TRUE, NA, NA, NULL); - //addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_BASH, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - - addot(OT_WOODENSTOOL, "wooden footstool", "A small, wooden footstool.", MT_WOOD, 5, OC_FURNITURE, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_ALL, 83, NA, NULL); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "\\"); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 4, 4, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_CHOP, NA, NA, NULL); - - // trail objects - addot(OT_FOOTPRINT, "footprints", "Footprints which show the passage of some kind of creature.", MT_NOTHING, 0, OC_MISC, SZ_MINI); - addflag(lastot->flags, F_NO_A, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NO_PLURAL, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_INVULNERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOGLYPH, NA, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - // NOTE: must add F_TRAIL when creating this object. - addot(OT_SCENT, "scent", "The scent of a creature, only perceivable to those with an enhanced sense of smell.", MT_NOTHING, 0, OC_MISC, SZ_MINI); - addflag(lastot->flags, F_NO_A, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NO_PLURAL, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_INVULNERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOGLYPH, NA, NA, NA, NULL); - addflag(lastot->flags, F_NOPICKUP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOFEEL, B_TRUE, NA, NA, NULL); - // NOTE: must add F_TRAIL when creating this object. - - // effects - addot(OT_FIRELARGE, "large fire", "A large, roaring inferno.", MT_FIRE, 0, OC_EFFECT, SZ_HUMAN); - addflag(lastot->flags, F_GLYPH, C_ORANGE, NA, NA, "{"); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "dies down a little"); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "medium fire"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM,DT_FIRE, NA, NA, "2d4+4"); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 3, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - addot(OT_FIREMED, "medium fire", "A medium-sized roaring fire.", MT_FIRE, 0, OC_EFFECT, SZ_MEDIUM); - addflag(lastot->flags, F_GLYPH, C_RED, NA, NA, "{"); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "small fire"); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "dies down a little"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM, DT_FIRE, NA, NA, "2d4"); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 2, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - addot(OT_FIRESMALL, "small fire", "A small blaze.", MT_FIRE, 0, OC_EFFECT, SZ_SMALL); - addflag(lastot->flags, F_GLYPH, C_RED, NA, NA, "{"); - addflag(lastot->flags, F_OBDIETEXT, B_TRUE, NA, NA, "goes out"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM, DT_FIRE, NA, NA, "1d4"); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_PRODUCESLIGHT, 1, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - addot(OT_STEAMCLOUD, "cloud of steam", "A thick cloud of scalding steam.", MT_GAS, 0, OC_EFFECT, SZ_HUMAN); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "}"); - addflag(lastot->flags, F_NODIECONVERTTEXT, NA, NA, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "puff of steam"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, 3, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM, DT_FIRE, NA, NA, "1d2"); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - addot(OT_STEAMPUFF, "puff of steam", "A small puff of scalding steam.", MT_GAS, 0, OC_EFFECT, SZ_MEDIUM); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "}"); - addflag(lastot->flags, F_OBDIETEXT, B_TRUE, NA, NA, "disperses"); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, 1, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM, DT_FIRE, NA, NA, "1d1+1"); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - - addot(OT_SLEETSTORM, "storm of sleet", "An intense storm of sleet. Hampers movement", MT_GAS, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_CYAN, NA, NA, "}"); - addflag(lastot->flags, F_NODIECONVERTTEXT, NA, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, 3, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_REDUCEMOVEMENT, 3, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - addflag(lastot->flags, F_WALKDAMBP, BP_HEAD, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_SHOULDERS, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_BODY, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_HANDS, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_LEGS, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_WATER, NA, "1d2"); - - addot(OT_MIST, "thick mist", "A thick cloud of obscuring mist.", MT_GAS, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "}"); - addflag(lastot->flags, F_OBDIETEXT, B_TRUE, NA, NA, "clears"); - addflag(lastot->flags, F_OBHP, 4, 4, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - addot(OT_SMOKECLOUD, "cloud of smoke", "A thick cloud of black smoke.", MT_GAS, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "}"); - addflag(lastot->flags, F_NODIECONVERTTEXT, NA, NA, NA, NULL); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "puff of smoke"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - addflag(lastot->flags, F_CAUSESCOUGH, 26, NA, NA, NULL); - - - addot(OT_SMOKEPUFF, "puff of smoke", "A small puff of black smoke.", MT_GAS, 0, OC_EFFECT, SZ_MEDIUM); - addflag(lastot->flags, F_GLYPH, NA, NA, NA, "}"); - addflag(lastot->flags, F_OBDIETEXT, B_TRUE, NA, NA, "disperses"); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, 4, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "."); - addflag(lastot->flags, F_CAUSESCOUGH, 18, NA, NA, NULL); - - addot(OT_POISONCLOUD, "cloud of poison gas", "A thick cloud of poisonous gas.", MT_GAS, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "}"); - addflag(lastot->flags, F_DIECONVERTTEXT, NA, NA, NA, "thins out a little"); - addflag(lastot->flags, F_DIECONVERT, NA, NA, NA, "puff of gas"); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM, DT_POISONGAS, NA, NA, "1d4"); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - addflag(lastot->flags, F_BLOCKSVIEW, 2, NA, NA, NULL); - - addot(OT_POISONPUFF, "puff of poison gas", "A small puff of poisonous gas.", MT_GAS, 0, OC_EFFECT, SZ_MEDIUM); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "}"); - addflag(lastot->flags, F_OBDIETEXT, B_TRUE, NA, NA, "disperses"); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_WALKDAM, DT_POISONGAS, NA, NA, "1d2"); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - addot(OT_HAILSTORM, "hail storm", "An intense storm of damaging hail.", MT_GAS, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_WHITE, NA, NA, "}"); - addflag(lastot->flags, F_NODIECONVERTTEXT, NA, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_OBHPDRAIN, 1, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSVIEW, 5, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - addflag(lastot->flags, F_WALKDAM, DT_COLD, NA, NA, "1d4"); - addflag(lastot->flags, F_WALKDAMBP, BP_HEAD, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_SHOULDERS, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_BODY, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_HANDS, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_LEGS, DT_WATER, NA, "1d2"); - addflag(lastot->flags, F_WALKDAMBP, BP_FEET, DT_WATER, NA, "1d2"); - - addot(OT_ICEWALL, "wall of ice", "A wall made of solid ice.", MT_ICE, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_CYAN, NA, NA, "#"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 100, 100, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - - - addot(OT_MAGICBARRIER, "magical barrier", "A glowing, impassable barrier of magical energy.", MT_MAGIC, 0, OC_EFFECT, SZ_LARGE); - addflag(lastot->flags, F_GLYPH, C_YELLOW, NA, NA, "#"); - addflag(lastot->flags, F_IMPASSABLE, SZ_MIN, SZ_MAX, NA, NULL); - addflag(lastot->flags, F_REALLYIMPASSABLE, NA, NA, NA, NULL); - addflag(lastot->flags, F_BLOCKSLOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBDIETEXT, B_TRUE, NA, NA, "vanishes"); - addflag(lastot->flags, F_PRODUCESLIGHT, 1, NA, NA, NULL); - - addot(OT_VINE, "entangling vine", "A living vine which grasps nearby creature", MT_SILK, 0.1, OC_EFFECT, SZ_HUMAN); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 82, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 90, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREEN, NA, NA, "^"); - addflag(lastot->flags, F_RESTRICTMOVEMENT, 30, B_TRUE, B_TRUE, NULL);// the value here will be filled in by the spell. - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_ACID, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - addot(OT_WEB, "web", "A huge, sticky spider web.", MT_SILK, 0.1, OC_EFFECT, SZ_HUMAN); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GLYPH, C_GREY, NA, NA, "^"); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 86, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 88, NA, NULL); - addflag(lastot->flags, F_RESTRICTMOVEMENT, 25, B_TRUE, B_TRUE, NULL); - addflag(lastot->flags, F_NOOBDAMTEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_FIRE, NA, NA, NULL); - addflag(lastot->flags, F_DTVULN, DT_ACID, NA, NA, NULL); - addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, "!"); - - - // armour - body - addot(OT_COTTONSHIRT, "cotton shirt", "A comfortable white cotton shirt.", MT_CLOTH, 0.7, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, 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_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_ARMOURLEATHER, "leather armour", "Body armour created from soft leather.", MT_LEATHER, 10, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 4, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 10, 10, NULL); - addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 3, NA, NULL); - addot(OT_ARMOURRING, "suit of ring mail", "Body armour formed by a series of metallic rings sewn to a leather foundation.", MT_METAL, 15, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 6, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 20, 20, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addot(OT_ARMOURSCALE, "suit of scale armour", "Body armour consisting of many small scales attached to leather.", MT_METAL, 20, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 10, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 30, 30, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_OBHP, 35, 35, NA, NULL); - addot(OT_ARMOURCHAIN, "suit of chainmail", "Heavy body armour consisting of tightly meshed metal rings.", MT_METAL, 25, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 15, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 40, 40, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_OBHP, 45, 45, NA, NULL); - addot(OT_ARMOURSPLINT, "suit of splint mail", "Heavy armour, consisting of strips of metal attached to a leather backing.", MT_METAL, 35, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 20, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 50, 50, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 11, NA, NULL); - addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL); - addot(OT_ARMOURPLATE, "suit of plate mail", "Heavy armour with embedded metal plates.", MT_METAL, 40, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, RR_RARE, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 25, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 60, 60, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_OBHP, 60, 60, NA, NULL); - - addot(OT_FLAKJACKET, "flak jacket", "Heavy metal body armour. Designed to stop a bullet, but ineffective against melee attacks.", MT_METAL, 30, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 10, 10, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 10, NA, NULL); - addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL); - addot(OT_OVERALLS, "pair of overalls", "Well-made, brightly coloured workman overalls.", MT_CLOTH, 1, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 7, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addot(OT_SILKSHIRT, "silk shirt", "A lightweight, comfortable white silk shirt.", MT_SILK, 0.5, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, 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_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_ROBE, "robe", "A plain robe.", MT_CLOTH, 4, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addot(OT_VELVETROBE, "velvet robe", "A luxurious velvet robe.", MT_CLOTH, 4, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - // armour - shoulders - addot(OT_CLOAK, "cloak", "A standard leather cloak.", MT_LEATHER, 4, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_SHOULDERS, 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_WATERPROOF, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_HELPSREST, 5, NA, NA, NULL); - // armour - waist - addot(OT_BELTLEATHER, "leather belt", "A plain leather belt.", MT_LEATHER, 0.2, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_WAIST, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - // armour - legs - addot(OT_CLOTHTROUSERS, "pair of cloth trousers", "A rough pair of cloth trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 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_ARMOURRATING, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_RIDINGTROUSERS, "pair of riding trousers", "A fitted pair of leather trousers.", MT_LEATHER, 2, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 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_ARMOURRATING, 2, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_COMBATPANTS, "pair of combat pants", "An lightly-armoured pair of camoflauged trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 3, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_GREAVES, "set of greaves", "A set of heavy metal greaves.", MT_METAL, 4, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 4, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 25, 25, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 15, 15, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - // armour - feet - addot(OT_SANDALS, "pair of sandals", "Comfortable pair of open leather sandals.", MT_LEATHER, 1, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 0, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 1, 1, NA, NULL); - addot(OT_SHOESLEATHER, "pair of leather shoes", "Cheap and rather uncomfortable leather shoes.", MT_LEATHER, 2, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_FEET, 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_ATTREQ, A_DEX, 7, 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); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_FEET, 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_OBHP, 10, 10, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_ELECTRIC, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_BOOTSSPIKED, "pair of spiked boots", "A plain pair of leather boots with spikes on the bottom.", MT_LEATHER, 3, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - addflag(lastot->flags, F_GOESON, BP_FEET, 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_EQUIPCONFER, F_STABILITY, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 7, NA, NULL); - addot(OT_BOOTSLEATHER, "pair of leather boots", "A stout pair of leather boots.", MT_LEATHER, 4, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_FEET, 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_ATTREQ, A_DEX, 7, NA, NULL); - addot(OT_BOOTSMETAL, "pair of metal boots", "A strong pair of metal boots.", MT_METAL, 5, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_RARE, NULL); - addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 7, NA, NULL); - // armour - gloves - addot(OT_GLOVESCLOTH, "pair of cloth gloves", "A pair of soft cloth gloves.", MT_CLOTH, 0.15, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HANDS, 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_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_GLOVESLEATHER, "pair of leather gloves", "A pair of coarse leather gloves.", MT_LEATHER, 0.25, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HANDS, 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_ATTREQ, A_DEX, 3, NA, NULL); - addot(OT_GAUNTLETS, "pair of gauntlets", "A durable pair of metal gauntlets.", MT_METAL, 2, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HANDS, 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_OBHP, 15, 15, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 3, NA, NULL); - // armour - head - addot(OT_SUNHAT, "sun hat", "Wide-brimmed hat made for working in the sun.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, 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_ARMOURRATING, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 3, 3, 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); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HEAD, 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_SCARY, 2, NA, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, 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); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 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_ARMOURRATING, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 3, 3, 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); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HEAD, 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_OBHP, 10, 10, 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_NOQUALITY, B_TRUE, NA, NA, NULL); - addot(OT_HELM, "helmet", "A plain metal helmet.", MT_METAL, 2, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 3, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL); - addot(OT_HELMFOOTBALL, "football helmet", "A metal helmet with a grill in front of the face.", MT_METAL, 1, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HEAD, 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_OBHP, 20, 20, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, -1, NA, NULL); - addot(OT_GOLDCROWN, "golden crown", "A heavy gold crown, encrusted with jewels.", MT_GOLD, 5, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 25, RR_RARE, NULL); - addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL); - addot(OT_HELMBONE, "bone helmet", "Scary-looking helmet made from the bones of an animal (?).", MT_BONE, 1, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_HEAD, 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_SCARY, 4, NA, NA, NULL); - - // armour - ears - addot(OT_EARPLUGS, "set of earplugs", "A pair of cloth plugs designed to give the wearer a peaceful night's sleep. ", MT_CLOTH, 0.01, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_EARS, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 1, 1, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_DEAF, NA, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL); - - // armour - eyes - addot(OT_SUNGLASSES, "pair of sunglasses", "Tinted eyewear to protect against sunlight.", MT_GLASS, 0.01, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 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_ARMOURRATING, 0, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 2, 2, 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_TINTED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL); - addot(OT_EYEPATCH, "eyepatch", "A small patch of black material which covers one eye. Scary looking.", MT_CLOTH, 0.01, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_GOESON, BP_EYES, NA, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_SCARY, 2, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, -2, NA, NULL); - - - // armour - shields - addot(OT_BUCKLER, "buckler", "A small, unobtrusive wooden shield.", MT_WOOD, 3.00, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_SHIELD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_SECWEAPON, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_SHIELDPENALTY, 5, NA, NULL); - addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL); - // similar to a buckler, but repairable, lighter, and less durable - addot(OT_SHIELDHIDE, "hide shield", "A small shield constructed out of animal skin.", MT_LEATHER, 2.00, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_COMMON, NULL); - addflag(lastot->flags, F_SHIELD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_SECWEAPON, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_SHIELDPENALTY, 5, NA, NULL); - addflag(lastot->flags, F_OBHP, 18, 18, NA, NULL); - addot(OT_SHIELD, "shield", "A medium-sized metal shield.", MT_METAL, 4.00, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_SHIELD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_SECWEAPON, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_SHIELDPENALTY, 15, NA, NULL); - addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL); - addot(OT_SHIELDLARGE, "large shield", "A large (if somewhat cumbersome) shield.", MT_METAL, 6.00, OC_ARMOUR, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL); - addflag(lastot->flags, F_SHIELD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_SECWEAPON, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_SHIELDPENALTY, 20, NA, NULL); - addflag(lastot->flags, F_OBHP, 40, 40, NA, NULL); - addot(OT_SHIELDTOWER, "tower shield", "An enormous but very cumbersome shield.", MT_METAL, 11.00, OC_ARMOUR, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_RARE, NULL); - addflag(lastot->flags, F_SHIELD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_SECWEAPON, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_SHIELDPENALTY, 30, NA, NULL); - addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL); - - // rings - addot(OT_RING_SIGHT, "ring of sight", "Allows the caster to see the invisible, and in the dark.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_SEEINVIS, NA, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_SEEINDARK, 2, NA, NULL); - addflag(lastot->flags, F_EQUIPCONFER, F_VISRANGEMOD, 1, NA, NULL); - addot(OT_RING_MANA, "ring of mana", "Increases the wearer's MP pool.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_EXTRAMP, 10, NA, NULL); - addot(OT_RING_LUCK, "ring of luck", "Makes the wearer more lucky.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_EXTRALUCK, 5, NA, NULL); - addot(OT_RING_PROTFIRE, "ring of fire immunity", "Grants the caster complete immunity to fire.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_FIRE, NA, NULL); - addot(OT_RING_PROTCOLD, "ring of cold immunity", "Grants the caster complete immunity to cold.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 75, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_COLD, NA, NULL); - - addot(OT_RING_STR, "ring of strength", "Increases the wearer's strength.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_ATTRMOD, A_STR, 1, NULL); // '1' is randomized during generation - addflag(lastot->flags, F_IDWHENUSED, B_TRUE, NA, NA, NULL); - addot(OT_RING_IQ, "ring of intelligence", "Increases the wearer's intelligence.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_ATTRMOD, A_IQ, 1, NULL); // '1' is randomized during generation - addflag(lastot->flags, F_IDWHENUSED, B_TRUE, NA, NA, NULL); - addot(OT_RING_CON, "ring of fitness", "Increases the wearer's fitness.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_ATTRMOD, A_CON, 1, NULL); // '1' is randomized during generation - addflag(lastot->flags, F_IDWHENUSED, B_TRUE, NA, NA, NULL); - addot(OT_RING_DEX, "ring of dexterity", "Increases the wearer's dexterity.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 70, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_ATTRMOD, A_DEX, 1, NULL); // '1' is randomized during generation - addflag(lastot->flags, F_IDWHENUSED, B_TRUE, NA, NA, NULL); - - addot(OT_RING_HUNGER, "ring of hunger", "Greatly increases the metabolic rate of the wearer.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 73, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_FASTMETAB, 3, NA, NULL); - addflag(lastot->flags, F_STARTBLESSED, B_CURSED, NA, NA, NULL); - addot(OT_RING_WOUNDING, "ring of wounding", "Increases the damage output of the wearer.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 73, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_EXTRADAM, NA, NA, "0d0+4"); - addflag(lastot->flags, F_ENCHANTABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_IDWHENUSED, B_TRUE, NA, NA, NULL); - addot(OT_RING_INVIS, "ring of invisibility", "Renders the wearer invisible.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 60, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_INVISIBLE, NA, NA, NULL); - addot(OT_RING_INVULN, "ring of invulnerability", "Grants the caster complete immunity to physical harm.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_EQUIPCONFER, F_INVULNERABLE, NA, NA, NULL); - addot(OT_RING_MPREGEN, "ring of recharging", "Slowly regenerates the wearer's mana.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 50, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_MPREGEN, 1, NA, NULL); - addot(OT_RING_CONTROL, "ring of control", "Allows the wearer control over teleportation and polymorphic effects.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 50, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_CONTROL, NA, NA, NULL); - addot(OT_RING_REGENERATION, "ring of regeneration", "Slowly regenerates the wearer's health, even when not resting.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 50, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_REGENERATES, 1, NA, NULL); - addot(OT_RING_RESISTMAG, "ring of magic resistance", "Renders the wearer immune to most magical effects.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 50, NA, ""); - addflag(lastot->flags, F_EQUIPCONFER, F_RESISTMAG, 5, NA, NULL); - addot(OT_RING_MIRACLES, "ring of miracles", "Grants a limited number of miracles to the wearer.", MT_METAL, 0.1, OC_RING, SZ_MINI); - addflag(lastot->flags, F_RARITY, H_ALL, 40, NA, ""); - addflag(lastot->flags, F_CHARGES, 1, 3, NA, NULL); - - // unarmed weapons - note these damage/accuracys can be - // overridded with the lifeform flag F_HASATTACK - // - // DAMTYPE _cannot_ be overridden (yet)! - addot(OT_FISTS, "fists", "human fists", MT_FLESH, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_UNARMED, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_UNARMED, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL); - - // this one is for the pirate - addot(OT_HOOKHAND, "hook", "hook", MT_METAL, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d4"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_UNARMED, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ATTACKVERB, NA, 5, NA, "scratch"); - addflag(lastot->flags, F_ATTACKVERB, 6, 15, NA, "scrape"); - addflag(lastot->flags, F_ATTACKVERB, 16, NA, NA, "rake"); - - - addot(OT_TEETH, "teeth", "teeth object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_BITE, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOSTRDAMMOD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL); - - addot(OT_CLAWS, "claws", "claws object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d2"); - addflag(lastot->flags, F_ATTACKVERB, NA, 5, NA, "scratch"); - addflag(lastot->flags, F_ATTACKVERB, 6, 15, NA, "claw"); - addflag(lastot->flags, F_ATTACKVERB, 16, 30, NA, "tear"); - addflag(lastot->flags, F_ATTACKVERB, 31, 40, NA, "rake"); - addflag(lastot->flags, F_ATTACKVERB, 41, 50, NA, "gouge"); - addflag(lastot->flags, F_ATTACKVERB, 51, NA, NA, "shred"); - addflag(lastot->flags, F_KILLVERB, 70, NA, NA, "disembowel"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_HOOF, "hooves", "hoof object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d2"); - addflag(lastot->flags, F_ATTACKVERB, NA, NA, NA, "kick"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_BUTT, "headbutt", "headbutt object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d2"); - addflag(lastot->flags, F_ATTACKVERB, NA, NA, NA, "butt"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_STING, "sting", "sting object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_ATTACKVERB, NA, NA, NA, "sting"); - addflag(lastot->flags, F_DAM, DT_ACID, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_NOSTRDAMMOD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - - addot(OT_TAIL, "tail", "tail object", MT_FLESH, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_ATTACKVERB, NA, NA, NA, "tailslap"); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d4"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_TENTACLE, "tentacle", "tentacle object", MT_FLESH, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "2d6"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_ZAPPER, "zapper", "zapper object", MT_NOTHING, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_ELECTRIC, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_NOSTRDAMMOD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - - // monster weapons - addot(OT_ACIDATTACK, "acidattack", "acid attack object", MT_WATER, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_DAM, DT_ACID, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 60, NA, NA, NULL); - addflag(lastot->flags, F_NOSTRDAMMOD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addot(OT_TOUCHPARALYZE, "paralyzing touch", "paralyzing touch object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_ARMOURPIERCE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_DAM, DT_TOUCH, NA, NA, "1d1"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_HITCONFER, F_PARALYZED, SC_CON, 22, "2-4"); - addflag(lastot->flags, F_HITCONFERVALS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOSTRDAMMOD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - addot(OT_TOUCHPARALYZE2, "strong paralyzing touch", "strong paralyzing touch object", MT_BONE, 0, OC_WEAPON, SZ_TINY); - addflag(lastot->flags, F_ARMOURPIERCE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_DAM, DT_TOUCH, NA, NA, "1d1"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_HITCONFER, F_PARALYZED, SC_CON, 30, "5-10"); - addflag(lastot->flags, F_HITCONFERVALS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_NOSTRDAMMOD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - addflag(lastot->flags, F_UNARMEDWEP, B_TRUE, NA, NA, NULL); - - // missiles - addot(OT_DART, "dart", "A small, sharp projectile weapon.", MT_WOOD, 0.5, OC_MISSILE, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_MISSILEDAM, 2, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addflag(lastot->flags, F_CANHAVEOBMOD, OM_POISONED, 17, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 15, NA, NULL); - - addot(OT_NANODART, "nanodart", "A metal dart with a laser-sharpened point.", MT_METAL, 0.5, OC_MISSILE, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_MISSILEDAM, 2, NA, NA, ""); - addflag(lastot->flags, F_ARMOURPIERCE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 67, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, ""); - addflag(lastot->flags, F_CANHAVEOBMOD, OM_POISONED, 17, NA, NULL); - - addot(OT_NEEDLE, "needle", "A tiny pointed needle.", MT_METAL, 0.02, OC_MISSILE, SZ_TINY); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_MISSILEDAM, 1, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 3, NA, ""); - addflag(lastot->flags, F_CANHAVEOBMOD, OM_POISONED, 25, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - - addot(OT_JAVELIN, "javelin", "A long, sharp missile weapon.", MT_METAL, 6, OC_MISSILE, SZ_MEDIUM); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_MISSILEDAM, 3, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 2, NA, ""); - addflag(lastot->flags, F_OBHP, 3, 3, NA, ""); - addflag(lastot->flags, F_CANHAVEOBMOD, OM_POISONED, 17, NA, NULL); - - addot(OT_ARROW, "arrow", "A sharp wooden arrow.", MT_WOOD, 0.25, OC_MISSILE, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, ""); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANHAVEOBMOD, OM_POISONED, 17, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 15, NA, NULL); - - addot(OT_BOLT, "bolt", "A sharp metal spike, meant for firing from a crossbow.", MT_METAL, 0.5, OC_MISSILE, SZ_SMALL); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, ""); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANHAVEOBMOD, OM_POISONED, 17, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 20, NA, NULL); - - - addot(OT_BULLET, "bullet", "A regular gun bullet.", MT_METAL, 0.1, OC_MISSILE, SZ_MINI); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 1, 1, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 10, NA, NULL); - - addot(OT_RUBBERBULLET, "rubber bullet", "A rubber gun bullet - does not do much damage.", MT_RUBBER, 0.05, OC_MISSILE, SZ_MINI); - addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, ""); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, ""); - addflag(lastot->flags, F_NUMAPPEAR, 1, 10, NA, ""); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 1, 1, NA, NULL); - addflag(lastot->flags, F_NOOBDIETEXT, B_TRUE, NA, NA, NULL); - - - // axes - addot(OT_AXE, "axe", "A short pole with a heavy, wedge-shaped blade for chopping.", MT_METAL, 5, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d6"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_AXES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addot(OT_BATTLEAXE, "battleaxe", "An large axe specifically designed for combat.", MT_METAL, 8, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d8+1"); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_AXES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addot(OT_GREATAXE, "greataxe", "An enormous axe made designed for combat.", MT_METAL, 10, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d9+1"); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_AXES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 16, NA, NULL); - addot(OT_HANDAXE, "hand axe", "A fast one-handed axe, ideal for throwing.", MT_METAL, 2.5, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d7"); - addflag(lastot->flags, F_ACCURACY, 85, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_AXES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addot(OT_WARAXE, "war axe", "An axe made for combat.", MT_METAL, 7, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d7+1"); - addflag(lastot->flags, F_ACCURACY, 85, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_AXES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 11, NA, NULL); - - // short blades - addot(OT_COMBATKNIFE, "combat knife", "A sharp knife designed for military use.", MT_METAL, 1, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 65, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d4+1"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 7, B_BLUNTONFAIL, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 2, NA, NA, NULL); - addot(OT_DAGGER, "dagger", "A short stabbing weapon with a pointed blade.", MT_METAL, 1, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d4"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 7, B_BLUNTONFAIL, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 2, NA, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 10, NA, NULL); - addot(OT_KNIFE, "knife", "A moderately sharp stabbing tool.", MT_METAL, 0.5, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d3"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 7, B_BLUNTONFAIL, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addot(OT_ORNDAGGER, "ornamental dagger", "This dagger is pretty, but not particularly effective.", MT_METAL, 1, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_SHINY, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d3"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_PICKLOCKS, 7, B_BLUNTONFAIL, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addot(OT_QUICKBLADE, "quickblade", "A short blade of exceptional quality, which somehow allows its bearer to attack faster.", MT_METAL, 3.0, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 75, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d4"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 2, NA, NA, NULL); - addot(OT_RAPIER, "rapier", "A long, narrow French sword lacking a cutting edge. Made for stabbing.", MT_METAL, 3.5, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d8"); - addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 6, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL); - addot(OT_SAI, "sai", "A dagger with two long prongs on either side, made to trap opponents' weapons.", MT_METAL, 1.5, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 81, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d4"); - addflag(lastot->flags, F_DISARMATTACK, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 10, NA, NULL); - addot(OT_SHORTSWORD, "short sword", "A short blade for fighting. Better for stabbing.", MT_METAL, 4, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d6"); - addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 6, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL); - addot(OT_SICKLE, "sickle", "A hand-held agricultural tool with a curved blade.", MT_METAL, 1, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d6"); - addflag(lastot->flags, F_ACCURACY, 60, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 2, NA, NA, NULL); - addot(OT_STEAKKNIFE, "steak knife", "A common kitchen knife.", MT_METAL, 0.2, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL); - - // long blades - addot(OT_FALCHION, "falchion", "A single-edged heavy sword made for chopping.", MT_METAL, 6.5, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 61, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d8+3"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addot(OT_GREATSWORD, "greatsword", "A massive two-handed sword.", MT_METAL, 10, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 55, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d12+6"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL); - addot(OT_LONGSWORD, "longsword", "Standard issue long slashing weapon.", MT_METAL, 5, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d8"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 10, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL); - addot(OT_ORNSWORD, "ornamental sword", "A gleaming (but quite blunt) blade.", MT_METAL, 6, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_SHINY, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d6"); - addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL); - addot(OT_SCIMITAR, "scimitar", "A fast, sharp, curved blade.", MT_METAL, 5, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 90, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d7"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 8, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL); - addot(OT_CUTLASS, "cutlass", "An accurate, light-weight pirate blade.", MT_METAL, 4, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d7"); - addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 8, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - // polearms - addot(OT_GLAIVE, "glaive", "A single-edged blade attached to a long pole.", MT_METAL, 10, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d7+3"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL); - addot(OT_GUISARME, "guisarme", "A hooked polearm, made by attaching a hook to a spear shaft.", MT_METAL, 10, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 67, NA, NULL); - addflag(lastot->flags, F_TRIPATTACK, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 130, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "2d4"); - addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 7, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL); - addot(OT_HALBERD, "halberd", "A spiked axe blade mounted on a long shaft, with a hook on the back.", MT_METAL, 12, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 71, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 130, NA, NA, NULL); - addflag(lastot->flags, F_TRIPATTACK, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "1d9+2"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 9, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 2, NA, NA, NULL); - addot(OT_LANCE, "lance", "A pole weapon designed for use while mounted.", MT_METAL, 12, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 67, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 140, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d8+2"); - addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL); - addot(OT_RANSEUR, "ranseur", "A long spear and cross hilt, resembling a pole-mounted sai. Good for disarming.", MT_METAL, 12, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 67, NA, NULL); - addflag(lastot->flags, F_DISARMATTACK, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 120, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "2d4"); - addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 9, NA, NULL); - addot(OT_SCYTHE, "scythe", "An agricultural hand tool for mowing grass, or reaping crops.", MT_METAL, 6, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "2d4"); - addflag(lastot->flags, F_ACCURACY, 65, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addot(OT_SPEAR, "spear", "A long pole with a sharpened head.", MT_METAL, 9, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 140, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d8"); - addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL); - addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAMAGABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL); - addot(OT_TRIDENT, "trident", "A three-pronged stabbing weapon.", MT_METAL, 5, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d10"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - // staves - addot(OT_QUARTERSTAFF, "quarterstaff", "A long, stout pole.", MT_WOOD, 4, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d8"); - addflag(lastot->flags, F_OBATTACKDELAY, 110, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_BAMBOOSTAFF, "bamboo staff", "A long hard pole made from bamboo.", MT_WOOD, 3, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "2d4"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 6, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_BLADEDSTAFF, "bladed staff", "A long wooden pole with blades on either end.", MT_WOOD, 5, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 85, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 110, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "2d4+3"); - addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 9, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_IRONSTAFF, "iron staff", "A long, stout metal pole.", MT_METAL, 8, OC_WEAPON, SZ_HUMAN); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 110, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "3d4+1"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL); - - - // clubs (bashing) - addot(OT_CLUB, "club", "A heavy, blunt wooden instrument to hit things with.", MT_WOOD, 8, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d6"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 7, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addot(OT_FLAIL, "flail", "A flexible chain attached to a heavy weight.", MT_METAL, 9, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "2d4"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - addot(OT_FLAILHEAVY, "heavy flail", "A flexible chain attached to a very heavy weight.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 115, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "2d6"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL); - addot(OT_GREATCLUB, "great club", "An enormous, very heavy, blunt instrument to hit things with.", MT_STONE, 15, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 50, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 180, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d10+5"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 16, NA, NULL); - addot(OT_MACE, "mace", "A weapon with a heavy head on a solid shaft used to bludgeon opponents.", MT_METAL, 10, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 90, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d7+1"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL); - addot(OT_MORNINGSTAR, "morningstar", "A heavy, spiked mace.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d9+3"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL); - addot(OT_NUNCHAKU, "nunchaku", "Two stout sticks connected with a short or rope. Good for disarming.", MT_WOOD, 4.5, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 80, NA, NULL); - addflag(lastot->flags, F_DISARMATTACK, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d6+1"); - addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_DEX, 10, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL); - addot(OT_SPANNER, "spanner", "A long, heavy metal wrench.", MT_METAL, 1, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 70, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d4"); - addflag(lastot->flags, F_ACCURACY, 65, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERNEEDDIR, B_TRUE, NA, NA, "Use your spanner in which direction"); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addot(OT_STICK, "stick", "A sturdy wooden stick.", MT_WOOD, 0.5, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL); - addflag(lastot->flags, F_RARITY, H_FOREST, 100, NA, NULL); - addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d2"); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL); - addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - - // projectile weapons - 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_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); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 5, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_ARROW, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 1, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 1, NA, NA, NULL); - addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 9, NA, NULL); - addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL); - - addot(OT_CROSSBOW, "crossbow", "A standard crossbow. Very powerful, but 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_FIREARM, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_FIRESPEED, 12, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 10, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_BOLT, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 1, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 2, NA, NA, NULL); - addflag(lastot->flags, F_RELOADTURNS, 2, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, NA, NULL); - - addot(OT_CROSSBOWHAND, "hand crossbow", "A small one-handed crossbow. Lightweight, but less powerful than a full-sized one.", MT_WOOD, 3, OC_WEAPON, SZ_SMALL); - addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, 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); - addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 10, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_BOLT, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 1, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 1, NA, NA, NULL); - 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_FIREARM, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_OPERABLE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_FIRESPEED, 12, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 10, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_ARROW, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 1, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 1, NA, NA, NULL); - addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL); - addflag(lastot->flags, F_ATTREQ, A_STR, 13, 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_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); - //addflag(lastot->flags, F_DAM, 3, 4, NA, NULL); - addflag(lastot->flags, F_FIRESPEED, 20, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 10, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_BULLET, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_RUBBERBULLET, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 6, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 1, NA, NA, NULL); - 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_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); - addflag(lastot->flags, F_FIRESPEED, 30, NA, NA, NULL); - addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 3, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_BULLET, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 2, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 1, NA, NA, NULL); - 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_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); - addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL); - addflag(lastot->flags, F_RANGE, 5, NA, NA, NULL); - addflag(lastot->flags, F_AMMOOB, OT_STONE, NA, NA, NULL); - addflag(lastot->flags, F_AMMOCAPACITY, 1, NA, NA, NULL); - addflag(lastot->flags, F_FIRETURNS, 1, NA, NA, NULL); - addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL); - - - // special weapons - addot(OT_ENERGYBLADE, "energy blade", "A summoned weapon made of pure magical energy.", MT_MAGIC, 0, OC_WEAPON, SZ_MEDIUM); - addflag(lastot->flags, F_DAM, DT_MAGIC, NA, NA, "1d4"); // will be replaced when summoned - addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL); - addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL); - - addot(OT_HANDOFGOD, "hand of god", "The ultimate power.", MT_FLESH, 0.1, OC_WEAPON, SZ_MEDIUM); - //addflag(lastot->flags, F_RARITY, H_DUNGEON, RR_UNIQUE, NA, NULL); - //addflag(lastot->flags, F_DAMTYPE, DT_HOLY, NA, NA, NULL); - addflag(lastot->flags, F_DAM, DT_SLASH, NA, NA, "1d6+100"); - addflag(lastot->flags, F_ACCURACY, 500, NA, NA, NULL); - addflag(lastot->flags, F_UNIQUE, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_USESSKILL, SK_NONE, NA, NA, NULL); - - addot(OT_ICESHIELD, "ice crystal shield", "A summoned shield made of ice crystals.", MT_ICE, 0, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_SHIELD, B_TRUE, NA, NA, NULL); - addflag(lastot->flags, F_GOESON, BP_SECWEAPON, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 1, NA, NA, NULL); // will be replaced when summoned - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); // will be replaced when summoned - - addot(OT_ICEARMOUR, "ice crystal armour", "Summoned body armour made of ice crystals.", MT_ICE, 0, OC_ARMOUR, SZ_HUMAN); - addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 5, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); // will be replaced when summoned - addot(OT_ICEBOOTS, "pair of ice crystal boots", "Summoned boots made of ice crystals.", MT_ICE, 0, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 5, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); // will be replaced when summoned - addot(OT_ICEGLOVES, "pair of ice crystal gauntlets", "Summoned gauntlets made of ice crystals.", MT_ICE, 0, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 5, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); // will be replaced when summoned - addot(OT_ICEHELMET, "ice crystal helmet", "A summoned helmet made of ice crystals.", MT_ICE, 0, OC_ARMOUR, SZ_SMALL); - addflag(lastot->flags, F_GOESON, BP_HEAD, NA, NA, NULL); - addflag(lastot->flags, F_ARMOURRATING, 5, NA, NA, NULL); - addflag(lastot->flags, F_OBHP, 5, 5, NA, NULL); // will be replaced when summoned - - // special obs - addot(OT_PLAYERSTART, "playerstart", "starting pos for player", MT_NOTHING, 0, OC_MISC, SZ_MINI); -} // returns the 'armourrating' flag flag_t *isarmour(object_t *o) { diff --git a/objects.h b/objects.h index e5dd707..a37ae43 100644 --- a/objects.h +++ b/objects.h @@ -143,7 +143,6 @@ object_t *hasobwithflagval(obpile_t *op, enum FLAG flagid, int val0, int val1, i object_t *hasobid(obpile_t *op, long id); void identify(object_t *o); void ignite(object_t *o); -void initobjects(void); flag_t *isarmour(object_t *o); int isactivated(object_t *o); int isammofor(objecttype_t *ammo, object_t *gun);