8985 lines
578 KiB
C
8985 lines
578 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "data.h"
|
|
#include "defs.h"
|
|
#include "flag.h"
|
|
#include "lf.h"
|
|
#include "nexus.h"
|
|
#include "objects.h"
|
|
#include "spell.h"
|
|
|
|
extern command_t *firstcommand,*lastcommand;
|
|
extern map_t *firstmap;
|
|
extern race_t *firstrace, *lastrace;
|
|
extern raceclass_t *firstraceclass, *lastraceclass;
|
|
extern job_t *firstjob, *lastjob;
|
|
extern skill_t *firstskill, *lastskill;
|
|
extern objecttype_t *objecttype;
|
|
extern objectclass_t *objectclass,*lastobjectclass;
|
|
extern brand_t *firstbrand,*lastbrand;
|
|
extern obmod_t *firstobmod,*lastobmod;
|
|
extern material_t *material,*lastmaterial;
|
|
extern lifeform_t *player;
|
|
|
|
extern hiddennamewithcol_t colour[];
|
|
extern char *bookadjective[];
|
|
extern char *potadjective[];
|
|
extern hiddennamewithcol_t gemtype[];
|
|
extern char *techadjective[];
|
|
extern char *technoun[];
|
|
|
|
extern objecttype_t *lastot;
|
|
|
|
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 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();
|
|
}
|
|
|
|
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", "A divine job mainly known for its importance in debugging. Dieties can use all abilities and are prompted before death. Due to their infinite power, they consider earthly diversions such as high score tables beneath their dignity.");
|
|
addflag(lastjob->flags, F_STARTATT, A_STR, AT_EXHIGH, NA, NULL);
|
|
addflag(lastjob->flags, F_STARTATT, A_AGI, 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_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", "Adventurers are a basic jack-of-all-trades type job. They can learn all skills, and already have basic Cartography and Lore skills. They start the game with three healing potions. Recommended for beginners.");
|
|
// stat mods
|
|
// initial objects
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 bananas");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "short sword");
|
|
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_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_MPDICE, 1, NA, NA, NULL);
|
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
|
|
|
/*
|
|
addjob(J_ALLOMANCER, "Allomancer", "Mages specialising in metal-based magic.");
|
|
// stat mods
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_AGI, 2, 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", "An elite modern military fighter. Commandoes are very well equipped and capable of using (or learning to use) all technology. Unfortunately their adreneline-filled lifestyle leaves them a little lacking in wisdom, and they have no magical aptitude.");
|
|
// stat mods
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, 2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_IQ, -3, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CON, 3, 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_RANGED, PR_ADEPT, 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
|
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
|
addjob(J_DRUID, "Druid", "Druids use the power of nature to aid themselves or harm others. They start with a pet wolf, and their spells are more powerful when near plants. They are willing to eat other lifeforms when neccessary but prefer a vegetable-based diet.");
|
|
// stats
|
|
addflag(lastjob->flags, F_MPDICE, 1, 1, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_WIS, 3, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CHA, 2, 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);
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_SS_NATURE, PR_NOVICE, 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", "A life of strict self-discipline from an early age makes Monks masters of unarmed combat. This discipline extends to their minds, sometimes allowing them to develop powerful psionic abilities over time. On the downside, they are useless with most weapons and are strict vegetarians.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, 1, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_AGI, 2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_WIS, 2, 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_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_STEALTH, PR_ADEPT, 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_FLURRY, NA, "pw:1;");
|
|
// 6: waterawlk via 'body equilibrium' (innate)
|
|
addflag(lastjob->flags, F_LEVFLAG, 7, F_TREMORSENSE, NA, NULL);
|
|
// 8: molecular manipulation (ie. lower hardness of physical obs by level-7, not lfs) (innate)
|
|
addflag(lastjob->flags, F_LEVABIL, 8, OT_A_AIMEDSTRIKE, NA, NULL);
|
|
// 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, 12, OT_A_QUIVERINGPALM, NA, NULL);
|
|
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_MECHANIC, "Mechanic", "Mechanics, while great at negotiating high hourly rates, are not generally very suited for adventuring. Their spanner and metal-working skills might come in handy though.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, 1, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CHA, -4, NA, NULL);
|
|
// initial objects
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "spanner");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "pair of safety goggles");
|
|
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, "80 gold coins");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "block of chocolate");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "2 potions of oil");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "rubber boots");
|
|
// initial skills
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_CHANNELING, PR_NOVICE, NA, NULL);
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_METALWORK, PR_ADEPT, NA, NULL);
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_SPEECH, PR_NOVICE, NA, NULL);
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_TECHUSAGE, PR_BEGINNER, NA, NULL);
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, PR_ADEPT, NA, NULL);
|
|
// learnable akills
|
|
addflag(lastjob->flags, F_CANLEARN, SK_CARTOGRAPHY, PR_ADEPT, 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_PERCEPTION, PR_ADEPT, NA, NULL);
|
|
addflag(lastjob->flags, F_CANLEARN, SK_SWIMMING, PR_NOVICE, NA, NULL);
|
|
addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL);
|
|
addflag(lastjob->flags, F_CANLEARN, SK_SS_ALLOMANCY, PR_ADEPT, NA, NULL);
|
|
// abilities
|
|
addflag(lastjob->flags, F_OBESE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
|
addjob(J_PRINCE, "Prince", "Princes have lived a life of leisure and privilege. Their time is generally spent either hunting (making them quite fit and skilled with a bow) or reading (giving them knowledge about the world around them). As they normally travel with a pack of bodyguards though, their weapons are more for show than actually useful.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CHA, 4, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_WIS, 2, 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");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "short bow");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "15 arrows");
|
|
// 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_RANGED, 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", "Pirates roam the seven seas, their mug of ale in one hand, and... nothing much in the other, since all pirates (in deference to some kind of ancient tale) have had their left hand replaced with a sharp hook. Their lifestyle had made them very wealthy and given them an impressive ability to handle their alcohol. They even start with a pet hawk. On the other hand, they are missing an eye, and not very attractive.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, 3, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_AGI, 2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CON, 4, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_WIS, -3, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CHA, -3, 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, 1, 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", "Rogues (sometimes known as \"thieves\") are criminals who are skilled in the appropriation of valuable goods. They can hide in the shadows, stab unsuspecting victims in the back and foil the most cunning traps.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, -3, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_AGI, 4, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CON, -2, 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_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", "Warriors are good at hitting things, hard.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, 2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_AGI, 2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_IQ, -2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CON, 2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CHA, -2, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_WIS, -4, 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, "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_MAXHPMOD, 120, NA, NA, NULL);
|
|
addflag(lastjob->flags, F_SELECTWEAPON, B_TRUE, NA, NA, NULL);
|
|
addflag(lastjob->flags, F_LEVABIL, 3, OT_A_HEAVYBLOW, NA, NULL);
|
|
addflag(lastjob->flags, F_LEVABIL, 4, OT_A_WARCRY, NA, NULL);
|
|
addflag(lastjob->flags, F_LEVABIL, 5, OT_A_CHARGE, NA, NULL);
|
|
addflag(lastjob->flags, F_LEVABIL, 6, OT_A_RAGE, NA, NULL);
|
|
addflag(lastjob->flags, F_LEVABIL, 8, OT_A_AIMEDSTRIKE, NA, NULL);
|
|
addflag(lastjob->flags, F_LEVABIL, 10, OT_A_HURRICANESTRIKE, NA, NULL);
|
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
|
|
|
addjob(J_WIZARD, "Wizard", "Specialising in Arcane lore, high level wizards use their magic to create awe-inspiring effects on the world around them, raining death upon their enemies with eldritch wizardries. Not much is known about low level wizards, as they tend to get mauled to death by newts due to their lack of combat skills.");
|
|
// stats
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_STR, -4, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_IQ, 4, NA, NULL);
|
|
addflag(lastjob->flags, F_JOBATTRMOD, A_CON, -3, NA, NULL);
|
|
// initial objects
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "wizard staff");
|
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "wizard hat");
|
|
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_CHANNELING, PR_NOVICE, NA, NULL);
|
|
addflag(lastjob->flags, F_STARTSKILL, SK_STAVES, 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_STAVES, PR_ADEPT, NA, NULL); // limit
|
|
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_SS_WILD, 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_NEEDOBFORSPELLS, OT_WIZARDSTAFF, NA, NA, NULL);
|
|
addflag(lastjob->flags, F_MAXHPMOD, 50, NA, NA, NULL); // 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);
|
|
addflag(lastjob->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
|
|
// non-player jobs
|
|
addjob(J_SHOPKEEPER, "Shopkeeper", "Shopkeepers make a living by selling goods to others. Always wary of thieves, most of them keep a shotgun under the counter.");
|
|
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 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_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);
|
|
addbrand(BR_MERCY, "of mercy", BP_WEAPON);
|
|
addflag_real(lastbrand->flags, F_MERCIFUL, 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_LIFESUCK, "of lifesucking", BP_WEAPON);
|
|
addflag_real(lastbrand->flags, F_VAMPIRIC, NA, 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_AGI, 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_DRAGONWOOD, "dragonwood", 3);
|
|
addflag(lastmaterial->flags, F_HARDNESS, 5, NA, NA, NULL);
|
|
addflag(lastmaterial->flags, F_CANGETWET, B_TRUE, NA, NA, NULL);
|
|
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_COLD, 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_DTIMMUNE, DT_COLD, 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, NA, RR_RARE, "");
|
|
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_SECRET, 20, 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, 15, 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_FLAMMABLE, PERMENANT, 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_FLAMMABLE, PERMENANT, NA, 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_MUSHROOMSHI, "shiitake 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, "");
|
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "mushroom");
|
|
addot(OT_MUSHROOMTOAD, "toadstool", "A poisonous variety of mushroom.", MT_FOOD, 0.2, OC_FOOD, SZ_TINY);
|
|
addflag(lastot->flags, F_EDIBLE, B_TRUE, 50, NA, NULL);
|
|
addflag(lastot->flags, F_TAINTED, B_TRUE, NA, NA, NULL);
|
|
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, "");
|
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "mushroom");
|
|
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_TARGETTEDSPELL, TT_OBJECT, 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_TARGETTEDSPELL, TT_OBJECT, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_EXTRADESC, NA, NA, NA, "At Power VII, you can turn to face the creature.");
|
|
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, 7, 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", "Envelops the area directly ahead of the caster with a thick cloud of mist.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
|
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "Spell power determines how long the mist will last.");
|
|
addflag(lastot->flags, F_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_TARGETTEDSPELL, TT_MONSTER, 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, 10, NA, NA, NULL);
|
|
addflag(lastot->flags, F_RANGE, 1, NA, NA, NULL);
|
|
addflag(lastot->flags, F_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER|TT_OBJECT, 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_TARGETTEDSPELL, TT_OBJECT, 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_TAILWIND, "tailwind", "Propels the caster from behind, slightly speeding up movement when walking directly forwards.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_AIR, 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_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);
|
|
// 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_TARGETTEDSPELL, TT_MONSTER, NA, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, NA, NA, NULL);
|
|
addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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 / enviromancy
|
|
///////////////////
|
|
// 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_NONE, 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_TARGETTEDSPELL, TT_OBJECT, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_OBJECT, 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_TARGETTEDSPELL, TT_OBJECT, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_ALLY, NA, 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_TARGETTEDSPELL, TT_MONSTER, 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_EARTHQUAKE, "earthquake", "Opens up huge rents in the earth around you, collapsing walls and dropping enemies into the ground.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
|
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_MAXPOWER, 10, NA, NA, NULL);
|
|
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
|
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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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 and negating strength penalties.", 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_TARGETTEDSPELL, TT_MONSTER, NA, NA, NULL);
|
|
addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL);
|
|
addflag(lastot->flags, F_AICASTTOFLEE, ST_VICTIM, NA, NA, NULL);
|
|
addot(OT_S_FORCESPHERE, "force sphere", "Radiates a shock wave out from the caster, knocking opponents away.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
|
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "The spell's power determines the radius of the blast (1 - 3 cells).");
|
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_GRAVITY, NA, NA, NULL);
|
|
addflag(lastot->flags, F_SPELLLEVEL, 3, NA, NA, NULL);
|
|
addflag(lastot->flags, F_AICASTTOFLEE, ST_ADJSELF, NA, NA, NULL);
|
|
// l4
|
|
addot(OT_S_GRAVBOOST, "boost gravity", "Greatly increases gravity around the target, preventing 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_ALLY, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER|TT_ALLY, NA, NA, NULL);
|
|
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
|
addot(OT_S_STUN, "stun", "Stuns the target, preventing them from taking agressive 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_TARGETTEDSPELL, TT_MONSTER, 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_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, 2, 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_TARGETTEDSPELL, TT_MONSTER, NA, NA, NULL);
|
|
addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL);
|
|
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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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, "seal entrance", "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_TARGETTEDSPELL, TT_DOOR, 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_TARGETTEDSPELL, TT_DOOR|TT_IMPASSABLE, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, NA, NA, NULL);
|
|
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_TARGETTEDSPELL, TT_OBJECT, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_BLINKASS, "assassin blink", "Teleports the caster behind an enemy, ready for a sneak attack.", MT_NOTHING, 0, OC_SPELL, SZ_TINY);
|
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_TRANSLOCATION, 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_TARGETTEDSPELL, TT_MONSTER, NA, NA, NULL);
|
|
addflag(lastot->flags, F_LOSLOF, B_TRUE, LOF_DONTNEED, NA, NULL);
|
|
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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER, 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_TARGETTEDSPELL, TT_MONSTER|TT_DOOR, 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_TARGETTEDSPELL, TT_MONSTER, 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_AIMEDSTRIKE, "aimed strike", "A carefully placed strike - much lower accuracy but causes a critical hit if it connects.", 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_STAMCOST, 2, NA, NA, NULL);
|
|
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_STAMCOST, 2, NA, NA, NULL);
|
|
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_STAMCOST, 1, NA, NA, NULL);
|
|
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_STAMCOST, 3, NA, NA, NULL);
|
|
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_FLIP, "flip", "Flip your opponent over your head.", MT_NOTHING, 0, OC_ABILITY, SZ_TINY);
|
|
addflag(lastot->flags, F_STAMCOST, 3, NA, NA, NULL);
|
|
addflag(lastot->flags, F_SPELLSCHOOL, SS_ABILITY, NA, NA, NULL);
|
|
addflag(lastot->flags, F_AICASTTOATTACK, ST_ADJVICTIM, 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_STAMCOST, 3, NA, NA, NULL);
|
|
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);
|
|
addflag(lastot->flags, F_STAMCOST, 2, 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);
|
|
addflag(lastot->flags, F_STAMCOST, 4, 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_STAMCOST, 10, NA, NA, NULL);
|
|
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_SHIELDBASH, "shield bash", "Attempt to stun your opponent by bashing them with your shield.", 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_STAMCOST, 2, NA, NA, NULL);
|
|
addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_NEED, NA, NULL);
|
|
addot(OT_A_SONICBOLT, "sonic bolt", "Emit a damaging burst of sound, targetted at a particular location.", 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);
|
|
addflag(lastot->flags, F_STAMCOST, 1, NA, NA, NULL);
|
|
addflag(lastot->flags, F_LOSLOF, B_FALSE, LOF_DONTNEED, 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_STAMCOST, 2, NA, NA, NULL);
|
|
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_STAMCOST, 3, NA, NA, NULL);
|
|
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, 120, OC_TOOLS, SZ_HUMAN);
|
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, 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_SOLDERINGIRON, "soldering iron", "A hand tool with an electrically heated metal tip. This unit is operated by an in-built battery.", MT_METAL, 0.5, OC_TECH, SZ_TINY);
|
|
addflag(lastot->flags, F_RARITY, H_ALL, RR_UNCOMMON, NA, NULL);
|
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
|
addflag(lastot->flags, F_DAM, DT_HEAT, NA, NA, "1d6");
|
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
|
addflag(lastot->flags, F_NOBLESS, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_TECHLEVEL, PR_BEGINNER, 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, 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_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, 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_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, 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_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_DUSTCLOUD, "large dust cloud", "A very thick cloud of dust particles.", MT_GAS, 0, OC_EFFECT, SZ_LARGE);
|
|
addflag(lastot->flags, F_GLYPH, C_BROWN, NA, NA, "}");
|
|
addflag(lastot->flags, F_NODIECONVERTTEXT, NA, NA, NA, NULL);
|
|
addflag(lastot->flags, F_DIECONVERT, 1, NA, NA, "small dust cloud");
|
|
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, 18, NA, NA, NULL);
|
|
|
|
addot(OT_DUSTPUFF, "small dust cloud", "A small cloud of dust particles.", MT_GAS, 0, OC_EFFECT, SZ_MEDIUM);
|
|
addflag(lastot->flags, F_GLYPH, C_BROWN, 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, 3, NA, NA, NULL);
|
|
addflag(lastot->flags, F_THEREISHERE, B_TRUE, NA, NA, ".");
|
|
addflag(lastot->flags, F_CAUSESCOUGH, 12, NA, NA, NULL);
|
|
|
|
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, "8d4");
|
|
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, "4d4");
|
|
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, "2d4");
|
|
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, 1, 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_HEAT, 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_HEAT, 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, 1, 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, 2, 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, 1, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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);
|
|
addot(OT_POINTYHAT, "wizard hat", "A foot-long brimmed conical hat, inscribed with strange symbols.", 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, 3, 3, NA, NULL);
|
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "pointy hat");
|
|
|
|
// 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_SAFETYGLASSES, "pair of safety goggles", "A plastic eyemask designed for protection.", MT_PLASTIC, 0.01, OC_ARMOUR, SZ_TINY);
|
|
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, 10, 10, NA, NULL);
|
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
|
addot(OT_SPECTACLES, "pair of spectacles", "Eyewear with special lenses to enhance your vision.", MT_GLASS, 0.01, OC_ARMOUR, SZ_TINY);
|
|
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_NOQUALITY, B_TRUE, NA, NA, NULL);
|
|
addot(OT_SUNGLASSES, "pair of sunglasses", "Tinted eyewear to protect against sunlight.", MT_GLASS, 0.01, OC_ARMOUR, SZ_TINY);
|
|
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_TINY);
|
|
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_ENDURANCE, "ring of endurance", "Boosts stamina regeneration.", MT_METAL, 0.1, OC_RING, SZ_MINI);
|
|
addflag(lastot->flags, F_RARITY, H_ALL, 75, RR_UNCOMMON, "");
|
|
addflag(lastot->flags, F_EQUIPCONFER, F_STAMREGEN, NA, NA, "0.5");
|
|
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, RR_UNCOMMON, "");
|
|
addflag(lastot->flags, F_EQUIPCONFER, F_SEEINVIS, NA, NA, NULL);
|
|
addflag(lastot->flags, F_EQUIPCONFER, F_SEEINDARK, 3, 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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
addflag(lastot->flags, F_EQUIPCONFER, F_ATTRMOD, A_AGI, 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, RR_UNCOMMON, "");
|
|
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, RR_UNCOMMON, "");
|
|
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, 75, RR_UNCOMMON, "");
|
|
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, 75, RR_UNCOMMON, "");
|
|
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, 75, RR_UNCOMMON, "");
|
|
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, 75, RR_UNCOMMON, "");
|
|
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, 75, RR_UNCOMMON, "");
|
|
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, 75, RR_UNCOMMON, "");
|
|
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_BEAK, "beak", "beak 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_ATTACKVERB, NA, NA, NA, "peck");
|
|
|
|
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, 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, 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_DARTNANO, "nanodart", "A metal dart with a nanofibre point. Capable of piercing most armour.", 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, 1, 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_DARTTRANQ, "tranquiliser dart", "A metal dart coated with a strong sleep-inducing serum.", MT_METAL, 0.5, OC_MISSILE, SZ_TINY);
|
|
addflag(lastot->flags, F_STACKABLE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_MISSILEDAM, 0, NA, NA, NULL);
|
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL);
|
|
addflag(lastot->flags, F_NUMAPPEAR, 1, 4, NA, NULL);
|
|
addflag(lastot->flags, F_HITCONFER, F_ASLEEP, SC_CON, 27, "20-30");
|
|
addflag(lastot->flags, F_HITCONFERVALS, B_TRUE, ST_ASLEEP, NA, NULL);
|
|
|
|
addot(OT_NEEDLE, "needle", "A tiny pointed needle.", MT_METAL, 0.02, OC_MISSILE, SZ_TINY);
|
|
addflag(lastot->flags, F_EXTRADESC, NA, NA, NA, "It makes sewing easier.");
|
|
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, NA, RR_COMMON, "");
|
|
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, NA, RR_COMMON, "");
|
|
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, "1d10+1");
|
|
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, 180, NA, NA, NULL);
|
|
addflag(lastot->flags, F_DAM, DT_CHOP, NA, NA, "3d6");
|
|
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_HATCHET, "hatchet", "Similar to a handaxe but weighted at the head. A fast one-handed axe, ideal for throwing.", MT_METAL, 4, OC_WEAPON, SZ_SMALL);
|
|
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, 90, 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, 8, NA, NULL);
|
|
addflag(lastot->flags, F_CRITCHANCE, 6, 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, "3d4");
|
|
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);
|
|
addflag(lastot->flags, F_CANBEDIFFMAT, MT_BONE, 10, NA, NULL);
|
|
addot(OT_FORK, "fork", "A common kitchen fork.", MT_METAL, 0.2, OC_WEAPON, SZ_SMALL);
|
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL);
|
|
addflag(lastot->flags, F_DAM, DT_PIERCE, NA, NA, "1d2");
|
|
addflag(lastot->flags, F_ACCURACY, 100, NA, NA, NULL);
|
|
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, 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_AGI, 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, 180, 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_AGI, 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_AGI, 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_AGI, 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_AGI, 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);
|
|
|
|
addot(OT_WIZARDSTAFF, "wizard staff", "A twisted branch of wood.", MT_DRAGONWOOD, 4, OC_WEAPON, SZ_HUMAN);
|
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, RR_UNCOMMON, NULL);
|
|
addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d4");
|
|
addflag(lastot->flags, F_OBATTACKDELAY, 100, NA, NA, NULL);
|
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
|
addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL);
|
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
|
|
|
// 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, 220, 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_AGI, 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_EXTRADESC, NA, NA, NA, "It makes metalwork easier.");
|
|
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, 75, 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_SHILLELAGH, "shillelagh", "An small cudgel with a strap, lightweight yet surprisingly effective. Irish in origin.", MT_WOOD, 2, OC_WEAPON, SZ_MEDIUM);
|
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL);
|
|
addflag(lastot->flags, F_DAM, DT_BASH, NA, NA, "1d4+1");
|
|
addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL);
|
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
|
addot(OT_STICK, "stick", "A sturdy wooden stick. It's brown and sticky.", 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_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);
|
|
}
|
|
|
|
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, "Jailers are generally known for their surplus of brawn and utter lack of brains. This one is no different.");
|
|
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_AGI, 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, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANWILL, OT_A_HURRICANESTRIKE, NA, NA, 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
|
|
// playable races
|
|
addrace(R_HUMAN, "human", 75, '@', C_GREY, MT_FLESH, RC_HUMANOID, "Your average example of the Homo Sapiens species.");
|
|
addflag(lastrace->flags, F_PLAYABLE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CON, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CHA, AT_RANDOM, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_RARE, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_RARE, 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_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);
|
|
|
|
addrace(R_AVIAD, "aviad", 60, 'h', C_WHITE, MT_FLESH, RC_HUMANOID, "A bipedal bird-like race. Aviads are human-sized but have more delicate bones and are covered in feathers. They have sharp talons in place of fingernails, and large feathered wings sprouting from their backs. While capable of flight from birth, their feathers make them vulnerable to fire and lightning based attacks.");
|
|
// stats
|
|
addflag(lastrace->flags, F_PLAYABLE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_LOW, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CON, AT_LOW, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CHA, AT_RANDOM, NA, NULL);
|
|
// bonuses
|
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "1d4");
|
|
addflag(lastrace->flags, F_CANWILL, OT_S_FLIGHT, NA, NA, "pw:1;");
|
|
// penalties
|
|
addflag(lastrace->flags, F_DTVULN, DT_FIRE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DTVULN, DT_ELECTRIC, NA, NA, NULL);
|
|
// other special stuff
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "screechs^a screech");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "talons");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right claw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left claw");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_RARE, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, 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+3");
|
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTJOB, 75, J_RANDOM, NA, NULL);
|
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_FLEEONHPPCT, 50, NA, NA, NULL);
|
|
|
|
addrace(R_CYBORG, "cyborg", 150, 'R', C_GREY, MT_FLESH, RC_HUMANOID, "A cyborg is a human with cybernetic implants grafted throughout their body. In most cases their body has been completely reconstructed from metal, with a thin later of skin outside to maintain a human appearance. Cyborgs are exceptionaly good with technology due to their computer-enhanced brain, but completely unable to use magic (for much the same reason).");
|
|
// stats
|
|
addflag(lastrace->flags, F_PLAYABLE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_LOW, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CON, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_WIS, AT_LOW, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CHA, AT_VLOW, NA, NULL);
|
|
// bonuses
|
|
addflag(lastrace->flags, F_EXTRAINFO, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTSKILL, SK_TECHUSAGE, PR_ADEPT, NA, NULL);
|
|
// penalties
|
|
addflag(lastrace->flags, F_DTVULN, DT_COLD, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DTVULN, DT_WATER, NA, NA, "2d6");
|
|
addflag(lastrace->flags, F_DTVULN, DT_ELECTRIC, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_LEGS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_HANDS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_FEET, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_RIGHTFINGER, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_LEFTFINGER, NA, NA, NULL);
|
|
// other special stuff
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_EARS, NA, NA, "audio inputs");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_EYES, NA, NA, "video inputs");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "central frame");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEGS, NA, NA, "stabilisers");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "robotic hands");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_FEET, NA, NA, "lower propulsion units");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right sensor");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left sensor");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_VERYRARE, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_VERYRARE, 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+3");
|
|
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_NOISETEXT, N_GETANGRY, 3, NA, "bleeps^a bleep");
|
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
|
|
|
addrace(R_DWARF, "dwarf", 60, 'h', C_BROWN, MT_FLESH, RC_HUMANOID, "Dwarves are short, hardy creatures who generally spend their entire lives mining underground. As such they have great fitness and enhanced low-light vision, but generally lack great reasoning skills and magical ability.");
|
|
addflag(lastrace->flags, F_PLAYABLE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_LTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_LTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CON, AT_HIGH, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CHA, AT_LTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_RARE, NULL);
|
|
addflag(lastrace->flags, F_VARLEVEL, NA, NA, 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_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_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);
|
|
// bonuses
|
|
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTSKILL, SK_CARTOGRAPHY, PR_NOVICE, NA, NULL);
|
|
// penalties
|
|
addflag(lastrace->flags, F_MPMOD, -3, NA, NA, NULL);
|
|
|
|
addrace(R_ELF, "elf", 60, '@', C_GREEN, MT_FLESH, RC_HUMANOID, "Elves are slender, graceful beings around human-sized but far nimbler. They have high intelligence and magical affinity, but a lack of physical strength. Elves meditate instead of sleeping, thus maintaining basic awareness.");
|
|
addflag(lastrace->flags, F_PLAYABLE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CON, AT_LTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_WIS, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_CHA, AT_GTAVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_RARE, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, 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+3");
|
|
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);
|
|
// bonuses
|
|
addflag(lastrace->flags, F_SEEINDARK, 2, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MEDITATES, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MPMOD, 3, NA, NA, NULL);
|
|
|
|
// human monsters...
|
|
addrace(R_BANDITLDR, "bandit leader", 75, '@', C_GREY, MT_FLESH, RC_HUMANOID, "Like a regular bandit, but bigger and stronger. Enough so to bully their followers into submission anyway.");
|
|
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, 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, "4d4+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, "Bandits prey on travellers, demanding cash in exchange for not beating them to a pulp.");
|
|
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, 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, "Beggar roam the streets of towns, pleading for any spare cash.");
|
|
addflag(lastrace->flags, F_RARITY, H_VILLAGE, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, 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_AGI, 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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addrace(R_DRUNK, "drunkard", 90, '@', C_GREY, MT_FLESH, RC_HUMANOID, "A humon who has become hopelessly addicated to alcohol. They exist in a permenant state of inebriation.");
|
|
addflag(lastrace->flags, F_RARITY, H_VILLAGE, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, 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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, 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, "Somebody who has been improsioned.");
|
|
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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
|
|
addrace(R_TOWNGUARD, "town guard", 100, '@', C_GREY, MT_FLESH, RC_HUMANOID, "A surly guard employed to uphold the laws of a town.");
|
|
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, NA, RR_COMMON, 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, "Amberon appears as a shining statuesque humanoid with gold-hued skin. He represents Purity, Law and Justice.");
|
|
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_AGI, 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_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, "Felix is the god of Thieves, Greed and Trickery. He generally appears as an overweight glutton carrying his contraband loot around in huge sacks. Despite this, he is amazingly agile and is said to be able to steal one's soul right out of their body.");
|
|
addflag(lastrace->flags, F_ALIGNMENT, AL_NEUTRAL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, NA, NA, "15");
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, NA, NA, "20");
|
|
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_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_BONE, RC_GOD, "The skeletal god of death is garbed in a cloak made of pure shadow. and weilds an enormous scythe.");
|
|
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_AGI, 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_STARTOB, 100, NA, NA, "+15 scythe of sharpness");
|
|
//addflag(lastrace->flags, F_WANTS, OT_GOLD, NA, 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, "Yumi is the goddess of Mercy and Healing. She has a calm, serene face and wears simple clothing.");
|
|
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_AGI, 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, "cotton shirt of health");
|
|
addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "cloth trousers ");
|
|
addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "blessed longsword of mercy");
|
|
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_STARTSKILL, SK_LONGBLADES, PR_ADEPT, NA, NULL);
|
|
addflag(lastrace->flags, F_SPELLCASTTEXT, NA, NA, NA, "raises her palms");
|
|
// 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, "A floating orb of flesh with a large mouth, single central eye, and numerous smaller eyestalks.");
|
|
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, NA, RR_RARE, 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_PERCEPTION, PR_EXPERT, 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_BODYPARTNAME, BP_EYES, NA, NA, "eyestalks");
|
|
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
|
|
addrace(R_BUGBEAR, "bugbear", 120, 'G', C_BROWN, MT_FLESH, RC_HUMANOID, "A huge goblinoid creature, similar to a hobgoblin but larger again, with a temperament to match.");
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+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, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL);
|
|
addflag(lastrace->flags, F_MINIONS, 50, 1, 3, "goblin");
|
|
addflag(lastrace->flags, F_MINIONS, 20, 1, 3, "goblin warrior");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
|
|
addrace(R_COCKATRICE, "cockatrice", 5, 'c', C_YELLOW, MT_FLESH, RC_MAGIC, "A small two-legged dragon with a rooster's head. Its touch is said to petrify the flesh of living creatures.");
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_VHIGH, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_RARE, 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, "5d4");
|
|
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, "A disembodied hand, animated by magic. Its favourite pastime is to leap onto unsuspecting victims and crush the life out of them.");
|
|
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, NA, RR_UNCOMMON, 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;");
|
|
addflag(lastrace->flags, F_CASTCHANCE, 70, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
|
|
addrace(R_DARKMANTLE, "darklurk", 70, 'U', C_BLUE, MT_FLESH, RC_MAGIC, "A floating squid-like creature, rarely seen due to its ability to cloak itself in a magical darkness. They use their huge tentacles to grab then crush their unsuspecting prey.");
|
|
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_AGI, 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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "7d4");
|
|
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, "A smaller cousin to the beholder, an eyebat is a single oversized eyeball suspended between bat-like wings.");
|
|
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, NA, RR_UNCOMMON, 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, 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_CASTCHANCE, 50, 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_BODY, 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_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, "mountain giant", 160, 'H', C_GREY, MT_FLESH, RC_HUMANOID, "Enormous humanoids who dwell in the mountains, using their grat strength to leap between valleys and pelt their prey with enormous boulders.");
|
|
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_RARE, 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");
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
|
|
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);
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
|
|
addrace(R_GIANTFIRE, "flame giant", 160, 'H', C_RED, MT_FLESH, RC_HUMANOID, "Fire giants are cousins to hill giants who dwell on active vulcanoes. Their constant proximity to intense heat has led them to evolve a natural resistance to fire");
|
|
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, 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_AGI, 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_DTRESIST, DT_FIRE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
|
|
addrace(R_GIANTFIREFC, "flame giant shaman", 160, 'H', C_RED, MT_FLESH, RC_HUMANOID, "A subspecies of flame giant who have developed the ability to command the primal volcanic fires around them.");
|
|
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, NA, RR_RARE, 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_AGI, 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_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_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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 15, NA, NA, NULL);
|
|
|
|
addrace(R_GIANTFIRETITAN, "flame titan", 160, 'H', C_RED, MT_FLESH, RC_HUMANOID, "The ultimate evolutionary form of a flame giant. Flame titans tower over even the largest of regular giants and can generate massive amounts of raging flame at will.");
|
|
addflag(lastrace->flags, F_ALIGNMENT, AL_EVIL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_VERYRARE, 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_AGI, 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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
|
|
|
// TODO: storm giant
|
|
// TODO: storm titan
|
|
|
|
addrace(R_GNOLL, "gnoll", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID, "Gnolls are doglike warriors - the gladiators of the kobold race. They are highly organised and often travel in packs.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, 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_AGI, 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, 50, NA, NA, "spear");
|
|
addflag(lastrace->flags, F_STARTOB, 50, NA, NA, "shield");
|
|
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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
|
|
addrace(R_GNOLLHM, "gnoll hunter", 130, 'h', C_BROWN, MT_FLESH, RC_HUMANOID, "Hunters are gnolls tasked with obtaining food, but can also turn their ranged skills to combat.");
|
|
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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "10d4");
|
|
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_AGI, 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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 12, NA, NA, NULL);
|
|
|
|
|
|
addrace(R_GOBLIN, "goblin", 25, 'g', C_BROWN, MT_FLESH, RC_HUMANOID, "Small humanoids with flat faces, broad noses, pointed ears, and small, sharp fangs.");
|
|
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, "2d4+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_AGI, 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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
|
|
addrace(R_GOBLINWAR, "goblin warrior", 30, 'g', C_BROWN, MT_FLESH, RC_HUMANOID, "Goblin Warriors are uncommon goblins with sufficient mental control to ungergo formal combat training (rather than just hack away mindlessly at their foes).");
|
|
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_AGI, 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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
|
|
addrace(R_GOBLINSHOOTER, "goblin archer", 20, 'g', C_BROWN, MT_FLESH, RC_HUMANOID, "Deformed goblins born without claws become archers for their communities, pelting their enemies from afar with barrages of arrows.");
|
|
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_AGI, 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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
|
|
|
addrace(R_GOBLINHEXER, "goblin shaman", 20, 'g', C_BROWN, MT_FLESH, RC_HUMANOID, "When a goblin develops an affinity for magic, they become known as shamans. Shamans aim to weaken their foes with hexs, providing easy kills for their comrades.");
|
|
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_AGI, 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_CANCAST, OT_S_BLINDNESS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANCAST, OT_S_PAIN, NA, 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");
|
|
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
|
|
addrace(R_HOBGOBLIN, "hobgoblin", 90, 'g', C_GREEN, MT_FLESH, RC_HUMANOID, "A larger, stronger, smarter and more menacing form of a goblin.");
|
|
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, "5d4+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_AGI, 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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
|
|
addrace(R_HOBGOBLINWAR, "hobgoblin elite", 90, 'g', C_GREEN, MT_FLESH, RC_HUMANOID, "An exceptional hobgoblin commander who has achieved command of its own unit.");
|
|
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, "7d4+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_AGI, 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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 7, NA, NA, NULL);
|
|
|
|
// TODO: hobgoblin archer
|
|
// TODO: hobgoblin warcaster
|
|
|
|
addrace(R_KOBOLD, "kobold", 18, 'k', C_BROWN, MT_FLESH, RC_HUMANOID, "An evil humanoid race with doglike features, kobolds are known for their cowardace and prefer to attack from a distance if at all possible.");
|
|
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, "1d4");
|
|
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_AGI, 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);
|
|
addflag(lastrace->flags, F_FLEEONHPPCT, 30, NA, NA, "");
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
|
|
addrace(R_TROGLODYTE, "troglodyte", 20, 'z', C_GREY, MT_FLESH, RC_HUMANOID, "Troglodytes are smaller, stunted lizardmen who at outcast at birth. They linger on the outskirts of society, scavenging garbage and living in their own filth.");
|
|
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, "4d4");
|
|
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_AGI, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TAIL, NA, NA, "1d2");
|
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
|
|
|
addrace(R_LEPRECHAUN, "leprechaun", 35, 'n', C_GREEN, MT_FLESH, RC_HUMANOID, "Leprechauns are tiny Irish humans, with a love for gold and practical jokes. Known for their supernatural luck.");
|
|
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, NA, RR_RARE, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4");
|
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_IQ, AT_AVERAGE, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_HIGH, NA, NULL);
|
|
addflag(lastrace->flags, F_HASATTACK, OT_FISTS, NA, NA, "1d2-1");
|
|
addflag(lastrace->flags, F_STARTOB, 100, NA, NA, "shillelagh");
|
|
addflag(lastrace->flags, F_STARTOB, 10, NA, NA, "ring of luck");
|
|
addflag(lastrace->flags, F_STARTOB, 75, NA, NA, "50-100 gold coins");
|
|
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANWILL, OT_S_BLINK, 5, 5, "pw:1;");
|
|
addflag(lastrace->flags, F_STARTSKILL, SK_THIEVERY, PR_SKILLED, NA, NULL);
|
|
addflag(lastrace->flags, F_WANTS, OT_GOLD, B_COVETS, NA, NULL);
|
|
addflag(lastrace->flags, F_DODGES, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_EXTRALUCK, 2, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
|
|
addrace(R_LIZARDMAN, "lizardman", 100, 'z', C_GREEN, MT_LEATHER, RC_HUMANOID, "Lizardmen are as they sound - a cross between a human and a lizard. Their leathery skin helps protect them from pummeling blows, and their tails give them enhanced stability.");
|
|
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_AGI, 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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
|
|
addrace(R_MINOTAUR, "minotaur", 130, 'H', C_BROWN, MT_FLESH, RC_HUMANOID, "Legendary creatures with the head of a bull, with a strength and temperament to match.");
|
|
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_AGI, 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_CASTCHANCE, 40, NA, NA, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_HEAD, NA, NA, NULL);
|
|
|
|
|
|
addrace(R_OGRE, "ogre", 160, 'O', C_BROWN, MT_FLESH, RC_HUMANOID, "Large, cruel, monstrous and hideous humanoid monsters. Ogres have a raging temper and hunger for flesh.");
|
|
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_AGI, 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_OGREWARHULK, "warhulk", 160, 'O', C_BROWN, MT_FLESH, RC_HUMANOID, "Warhulks are huge ogres, even angrier than their comrades.");
|
|
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_AGI, 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, "Orcs are fierce humanoid monsters with green skin and grotesque features.");
|
|
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, "3d4+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, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HUMANOID, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTSKILL, SK_PERCEPTION, PR_ADEPT, NA, NULL);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTJOB, 25, J_WARRIOR, NA, NULL);
|
|
|
|
addrace(R_ORK, "ork", 90, 'o', C_BROWN, MT_FLESH, RC_HUMANOID, "Orcs who have become fascinated with technology tend to become shunned by their peers, and have taken the name 'Orks' for themselves.");
|
|
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, "4d4+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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
|
|
addrace(R_PEGASUS, "pegasus", 130, 'Q', C_GREY, MT_FLESH, RC_MAGIC, "A legendary white, winged horse.");
|
|
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, NA, NA, 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, "An evil ghostly spirit who telekinetically throws objects at its enemies."); // 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, "3d4");
|
|
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_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);
|
|
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
|
|
addrace(R_SATYR, "satyr", 80, 'h', C_GREEN, MT_FLESH, RC_HUMANOID, "A goat-like humanoid equipped with a set of magical panpipes.");
|
|
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_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_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);
|
|
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 20, NA, NA, NULL);
|
|
|
|
addrace(R_SHADOWCAT, "shadowcat", 5, 'f', C_BLUE, MT_FLESH, RC_MAGIC, "A huge, feral black cat, surrounded by clouds of black smoke.");
|
|
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_RARITY, H_DUNGEON, 65, NA, NULL);
|
|
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+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, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
|
|
addrace(R_OOZEGREY, "grey ooze", 10, 'j', C_GREY, MT_SLIME, RC_SLIME, "Exactly what it sounds like - a small lump of grey ooze. Grey, acidic ooze.");
|
|
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, "4d4+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_NOINJURIES, 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_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);
|
|
addflag(lastrace->flags, F_NOFLEE, 5, NA, NA, NULL);
|
|
|
|
addrace(R_SPRITEFIRE, "fire sprite", 5, 'n', C_RED, MT_FIRE, RC_MAGIC, "A small magical creature surrounded by crackling flames.");
|
|
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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4");
|
|
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_CANWILL, OT_S_FIREDART, NA, NA, "pw:1;");
|
|
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_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, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
|
|
addrace(R_SPRITEICE, "ice sprite", 5, 'n', C_WHITE, MT_ICE, RC_MAGIC, "A small magical creature surrounded by freezing ice.");
|
|
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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_SMALL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4");
|
|
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_CANWILL, OT_S_FROSTBITE, NA, NA, "pw:1;");
|
|
addflag(lastrace->flags, F_CANWILL, OT_S_FREEZEOB, NA, NA, "pw:1;");
|
|
addflag(lastrace->flags, F_CANWILL, OT_S_ICICLE, NA, NA, "pw:1;");
|
|
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_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, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CASTCHANCE, 30, NA, NA, NULL);
|
|
|
|
addrace(R_TROLL, "troll", 100, 't', C_GREEN, MT_FLESH, RC_HUMANOID, "A savage, hairy green monster. Trolls are extremely muscular, move abnormally quickly and regenerate.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
|
|
addrace(R_XAT, "xat", 2, 'x', C_BROWN, MT_FLESH, RC_ANIMAL, "Xats are wild pigs with the claws of a dog.");
|
|
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, NA, RR_COMMON, 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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "snorts^a snort");
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
|
|
// fish
|
|
addrace(R_CRAB, "giant crab", 150, ';', C_ORANGE, MT_FLESH, RC_AQUATIC, "A massive orange crab with sharp pincers.");
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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, "3d4+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_WAIST, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANWILL, OT_A_GRAB, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "pincers");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_RIGHTFINGER, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_LEFTFINGER, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_HANDS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_FEET, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
|
|
addrace(R_MERLOCH, "merloch", 250, 'm', C_ORANGE, MT_FLESH, RC_AQUATIC, "Merlochs are bipedal, fishlike beings. Equally at home in the water or on land, they use their sonic scream to disable foes.");
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_LARGE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ARMOURRATING, 15, NA, NA, NULL); // high armour
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+4");
|
|
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_SLOW, NA, NA, "");
|
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "2d3");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, NA, NA, "2d3");
|
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 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_WAIST, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOBODYPART, BP_LEGS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CASTCHANCE, 40, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANWILL, OT_A_SONICBOLT, NA, NA, "pw:5;dam:2d6;");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "pincers");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_WALK, 2, NA, "^gurgling");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 4, NA, "gurgles loudly^a loud gurgle");
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_RIGHTFINGER, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_LEFTFINGER, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_HANDS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOARMOURON, BP_FEET, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 30, NA, NA, NULL);
|
|
|
|
addrace(R_PIRANHA, "piranha", 0.5, ';', C_GREEN, MT_FLESH, RC_AQUATIC, "A vicious, flesh-eating fish");
|
|
addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, 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, NA, RR_COMMON, 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");
|
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
|
addrace(R_PIRANHAKING, "king piranha", 1, ';', C_GREEN, MT_FLESH, RC_AQUATIC, "A larger version of a standard piranha. King piranhas can leap through the air.");
|
|
addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, 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, NA, RR_UNCOMMON, 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;");
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
addrace(R_EELELEC, "electric eel", 120, ';', C_CYAN, MT_FLESH, RC_AQUATIC, "A sliippery eel charged with electricity.");
|
|
addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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);
|
|
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
|
addrace(R_EELGIANT, "giant eel", 150, ';', C_BLUE, MT_FLESH, RC_AQUATIC, "A very long, slippery eel. They tend to catch and crush their prey.");
|
|
addflag(lastrace->flags, F_NEEDSWATER, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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;");
|
|
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
|
// plants
|
|
addrace(R_CACTUS, "cactus", 30, 'F', C_YELLOW, MT_PLANT, RC_PLANT, "A wide upright plant coated with sharp spines. Said to sprout delicious fruit.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
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_PLANT, RC_PLANT, "A spotty purple mold which releases speed-inducing spores on the slightest contact.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, NULL);
|
|
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, "Razor sharp metallic grass with serrated edges. This plant sense vibrations in the air around it and slashes out with its sharp fronds.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, 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_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, "A larger (and more savage) version of your average household bat.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, 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_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");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
|
addrace(R_BATMUTATED, "mutated bat", 3, 'B', C_MAGENTA, MT_FLESH, RC_ANIMAL, "Bats exposed to toxic radiation become mutated, and their sonic navigation skills turn deadly.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_UNCOMMON, 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_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+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_CASTCHANCE, 40, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANWILL, OT_A_SONICBOLT, NA, NA, "pw:5;dam:1d6;");
|
|
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");
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_BATVAMPIRE, "vampire bat", 6, 'B', C_BLUE, MT_FLESH, RC_ANIMAL, "Bats which suck the blood of their victims.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, 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_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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
addrace(R_BEAR, "black bear", 150, 'q', C_BLUE, MT_FLESH, RC_ANIMAL, "A medium sized omnivore bear.");
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
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, "5d4+3");
|
|
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
|
addflag(lastrace->flags, F_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_VEGETARIAN, B_TRUE, NA, 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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
addrace(R_BEARGRIZZLY, "grizzly bear", 200, 'q', C_YELLOW, MT_FLESH, RC_ANIMAL, "A large angry bear.");
|
|
lastrace->baseid = R_BEAR;
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
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, "7d4+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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
addrace(R_BEARCUB, "bear cub", 60, 'q', C_BROWN, MT_FLESH, RC_ANIMAL, "Cute little baby bears. Still dangerous though.");
|
|
lastrace->baseid = R_BEAR;
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_MEDIUM, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+3");
|
|
addflag(lastrace->flags, F_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, "");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
|
addrace(R_ANT, "giant ant", 20, 'a', C_BROWN, MT_FLESH, RC_ANIMAL, "Giant ants are enormous (for an ant, anyway), and keen to take avenge their smaller ancestors who were crushed by small children.");
|
|
lastrace->baseid = R_ANT;
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
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, "4d4+3");
|
|
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);
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
addrace(R_ANTS, "giant soldier ant", 25, 'a', C_BROWN, MT_FLESH, RC_ANIMAL, "The fighter of the giant ant family. Giant soldier ants are equipped with a powerful acidic stinger.");
|
|
lastrace->baseid = R_ANT;
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_MORALE, 12, NA, NA, NULL);
|
|
addrace(R_ANTLION, "giant antlion", 30, 'a', C_YELLOW, MT_FLESH, RC_ANIMAL, "Antlions are mammoth giant ants with the head of a lion.");
|
|
lastrace->baseid = R_ANT;
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
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_AGI, 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);
|
|
addflag(lastrace->flags, F_MORALE, 14, NA, NA, NULL);
|
|
addrace(R_CHICKEN, "chicken", 0.5, 'c', C_BROWN, MT_FLESH, RC_ANIMAL, "A common farm-yard chicken.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, 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_HASATTACK, OT_BEAK, NA, NA, "1d2");
|
|
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");
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_TIMID, B_TRUE, NA, NA, NULL);
|
|
addrace(R_DOG, "dog", 35, 'd', C_BROWN, MT_FLESH, RC_ANIMAL, "A medium-sized canine.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_RARITY, H_FOREST, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "2d4");
|
|
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_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, "");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
|
addrace(R_DOGBLINK, "blink dog", 35, 'd', C_BLUE, MT_FLESH, RC_ANIMAL, "Magical canines who can teleport small distances at will.");
|
|
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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_ENHANCESMELL, 6, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+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_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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
|
addrace(R_DOGDEATH, "death hound", 40, 'd', C_MAGENTA, MT_FLESH, RC_ANIMAL, "Possessed evil canines who thrive on death and destruction.");
|
|
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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+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_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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 15, NA, NA, NULL);
|
|
addrace(R_DOGWAR, "war hound", 40, 'd', C_BROWN, MT_FLESH, RC_ANIMAL, "Canines bred for war.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+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_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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
|
|
addrace(R_HAWKYOUNG, "young hawk", 1, 'A', C_GREY, MT_FLESH, RC_ANIMAL, "A young baby hawk."); // 'A' for Avian
|
|
lastrace->baseid = R_HAWK;
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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_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, NA, NA, 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");
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
|
|
|
addrace(R_HAWK, "hawk", 1, 'A', C_GREY, MT_FLESH, RC_ANIMAL, "A large bird of prey."); // 'A' for Avian
|
|
lastrace->baseid = R_HAWK;
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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_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, "3d4+3");
|
|
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, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_SWOOPRANGE, 3, 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");
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 6, NA, NA, NULL);
|
|
|
|
addrace(R_HAWKBLOOD, "blood hawk", 1, 'A', C_RED, MT_FLESH, RC_ANIMAL, "A stronger version of a hawk."); // 'A' for Avian
|
|
lastrace->baseid = R_HAWK;
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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_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, "5d4+3");
|
|
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, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_SWOOPRANGE, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_SEEINDARK, 6, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOISETEXT, N_LOWHP, 3, NA, "screeches in pain^screeches of pain");
|
|
addflag(lastrace->flags, F_MORALE, 8, NA, NA, NULL);
|
|
addrace(R_HAWKFROST, "frost hawk", 1, 'A', C_CYAN, MT_FLESH, RC_ANIMAL, "A hark imbued with the power of ice. Frost hawks can release a powerufl blast of freezing air when threatened."); // 'A' for Avian
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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_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, NA, NA, 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, "A boneless blood-sucking creature. Quite dangerous until it eats it becomes satiated with blood, at which point it will slither off and fall asleep.");
|
|
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, NA, RR_COMMON, NULL);
|
|
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_CASTCHANCE, 60, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 20, NA, NA, NULL);
|
|
addrace(R_NEWT, "giant newt", 4, ':', C_BROWN, MT_FLESH, RC_ANIMAL, "An abnormally large example of the lizard family.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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_HASATTACK, OT_CLAWS, NA, NA, "1d2-1");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d2-1");
|
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
|
addrace(R_PORCUPINE, "giant porcupine", 10, 'r', C_GREY, MT_FLESH, RC_ANIMAL, "A large four legged creature covered with sharp spines.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "3d4+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);
|
|
addflag(lastrace->flags, F_MORALE, 8, NA, NA, NULL);
|
|
addrace(R_RAT, "giant rat", 3, 'r', C_BROWN, MT_FLESH, RC_ANIMAL, "A rodent of unusual size.");
|
|
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, NA, RR_COMMON, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 5, NA, NA, NULL);
|
|
addrace(R_SNAKE, "brown snake", 3, 's', C_BROWN, MT_FLESH, RC_ANIMAL, "Common venomous snakes.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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");
|
|
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_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^hissing");
|
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SNAKECARPET, "carpet snake", 3, 's', C_GREY, MT_FLESH, RC_ANIMAL, "Non-venemous (but not quite harmless) snakes.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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, "1d4");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^hissing");
|
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SNAKETREE, "tree snake", 3, 's', C_GREEN, MT_FLESH, RC_ANIMAL, "Non-venomous snakes which leap at their prey.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, 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, "3d4");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d4+1");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^hissing");
|
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_CASTCHANCE, 60, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SNAKECOBRABLACK, "black cobra", 3, 's', C_BLUE, MT_FLESH, RC_ANIMAL, "Black cobras can spit globs of venom at their prey.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, 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, "3d4");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SNAKECOBRAGOLDEN, "golden cobra", 3, 's', C_YELLOW, MT_FLESH, RC_ANIMAL, "Golden cobras spit a blindness-inducing venom at their enemies.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, 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, "3d4+2");
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3+1");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SNAKECONSTRICTOR, "constrictor", 3, 's', C_MAGENTA, MT_FLESH, RC_ANIMAL, "A huge snake which coils around its victims then crushes them to death.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, 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_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_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^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);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SNAKEWATER, "water snake", 3, 's', C_BLUE, MT_FLESH, RC_ANIMAL, "Aquatic snakes who can nevertheless exist quite happily on land. Non-venomous.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
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_BODYPARTNAME, BP_BODY, NA, NA, "torso");
|
|
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_NOISETEXT, N_GETANGRY, 2, NA, "hisses^hissing");
|
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DIURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SPIDER, "giant spider", 5, 'S', C_GREY, MT_FLESH, RC_ANIMAL, "An eight legged beast who is the central feature in many nightmares.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, 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_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_CASTCHANCE, 60, NA, NA, NULL);
|
|
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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HEAD, NA, NA, "cephalothorax");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "abdomen");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SPIDERFUNNELWEB, "giant funnelweb", 5, 'S', C_MAGENTA, MT_FLESH, RC_ANIMAL, "Like a giant spider... but extremely venomous.");
|
|
lastrace->baseid = R_SPIDER;
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, 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, "5d4+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_CASTCHANCE, 60, NA, NA, NULL);
|
|
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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HEAD, NA, NA, "cephalothorax");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "abdomen");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_SPIDERREDBACK, "giant redback", 5, 'S', C_RED, MT_FLESH, RC_ANIMAL, "A version of a giant spider with a highly painful bite.");
|
|
lastrace->baseid = R_SPIDER;
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTATT, A_AGI, 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, "4d4+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_CASTCHANCE, 60, NA, NA, NULL);
|
|
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");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HEAD, NA, NA, "cephalothorax");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "abdomen");
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_WOLFYOUNG, "young wolf", 10, 'd', C_GREY, MT_FLESH, RC_ANIMAL, "Immature wolves.");
|
|
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, NA, RR_COMMON, NULL);
|
|
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_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, NA, NA, 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, "");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 3, NA, NA, NULL);
|
|
addrace(R_WOLF, "wolf", 25, 'd', C_GREY, MT_FLESH, RC_ANIMAL, "Highly intelligent members of the canine family.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+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_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, NA, 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, 50, NA, NA, "");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "paws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 7, NA, NA, NULL);
|
|
|
|
// insects
|
|
addrace(R_BUTTERFLY, "butterfly", 0.01, 'i', C_YELLOW, MT_FLESH, RC_ANIMAL, "A harmless, colourful butterfly.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_TIMID, B_TRUE, NA, NA, NULL);
|
|
addrace(R_GIANTFLY, "giant fly", 1, 'i', C_GREY, MT_FLESH, RC_INSECT, "Giant flies buzz around the places, feeding on corpses. Usually no more than a nuisance.");
|
|
lastrace->baseid = R_GIANTFLY;
|
|
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_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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d1+0");
|
|
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d1-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_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);
|
|
addflag(lastrace->flags, F_WANTS, OT_CORPSE, B_COVETS, NA, NULL);
|
|
addflag(lastrace->flags, F_ATTACKRANGE, 1, 2, NA, NULL); // just buzz around
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
addrace(R_GIANTBLOWFLY, "giant blowfly", 2, 'i', C_GREY, MT_FLESH, RC_INSECT, "Large, more solid versions of giant flies. These can actually cause damage, albeit rarely.");
|
|
lastrace->baseid = R_GIANTFLY;
|
|
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_CORPSETYPE, NA, NA, NA, "giant fly corpse");
|
|
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, NA, RR_UNCOMMON, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+3");
|
|
addflag(lastrace->flags, F_EVASION, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, NA, NA, "1d3-2");
|
|
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_WANTS, OT_CORPSE, B_COVETS, NA, NULL);
|
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ATTACKRANGE, 1, 2, NA, NULL); // just buzz around
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
addrace(R_STIRGE, "mosquitoid", 10, 'i', C_BROWN, MT_FLESH, RC_INSECT, "Mosquitoids look like giant mosquitoes but are equipped with human-like arms, with clawed hands.");
|
|
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, NA, RR_COMMON, NULL);
|
|
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;");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right foreclaw");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left foreclaw");
|
|
addflag(lastrace->flags, F_MORALE, 10, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
|
|
addrace(R_CENTIPEDE, "giant centipede", 3, 'w', C_GREEN, MT_FLESH, RC_INSECT, "Giant centipedes are long, many-legged creatures with a poisonous bite.");
|
|
addflag(lastrace->flags, F_RARITY, H_DUNGEON, NA, RR_COMMON, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
addrace(R_GLOWBUG, "glowbug", 1, 'i', C_WHITE, MT_FLESH, RC_INSECT, "Glowbugs are tiny flying creatures, magically producing light from their bodies.");
|
|
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, NA, RR_COMMON, NULL);
|
|
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);
|
|
addflag(lastrace->flags, F_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_MORALE, 0, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_AWARENESS, B_TRUE, NA, NA, NULL);
|
|
|
|
// demons
|
|
addrace(R_DRETCH, "dretch", 30, '&', C_BROWN, MT_FLESH, RC_DEMON, "An ape-like creature with extended forearms ending in clawed hands. They stand about 4 feet tall and weigh 60 pounds.");
|
|
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, "A creeping, seething mass of pulsating flesh. A multitide of misshapen eyes and limbs protude from the writhing ooze in all directions. The very sight of this creature inspires a sense of cold dread.");
|
|
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, NA, RR_UNCOMMON, 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, "A tiny, bald humanoid with small spiked horns running down the middle of its scalp, leathery bat-like wings and of course sharp claws..");
|
|
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_AGI, 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, "The re-animated corpse of a once living entity, zombies seek to consume the brains of living creatures in an attempt to regain their soul.");
|
|
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, NA, RR_COMMON, 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_RANDOMTALKPCT, 20, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_RANDOMTALK, NA, SV_WHISPER, SV_TALK, "Braaaains...");
|
|
addflag(lastrace->flags, F_RANDOMTALK, NA, SV_WHISPER, SV_TALK, "Fooodd...");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "moans^a gutteral moan");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "groans^a gutteral groan");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 2, NA, "gurgles^a gurgle");
|
|
addflag(lastrace->flags, F_NOISETEXT, N_GETANGRY, 3, NA, "growls^a growl");
|
|
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, "A walking set of bones, animated through the use of necromancy. Due to their lack of soft flesh, they have little to fear from edged weapons.");
|
|
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, NA, RR_COMMON, 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_NOINJURIES, B_TRUE, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTOBDT, 50, DT_CHOP, NA, NULL);
|
|
addflag(lastrace->flags, F_STARTOB, 25, NA, NA, "buckler");
|
|
addflag(lastrace->flags, F_DTVULN, DT_BASH, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DTRESIST, DT_SLASH, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DTRESIST, DT_PIERCE, 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);
|
|
addflag(lastrace->flags, F_NOBODYPART, BP_EARS, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_WEAPON, NA, NA, "right metacarpals");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_SECWEAPON, NA, NA, "left metacarpals");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_BODY, NA, NA, "ribs");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HEAD, NA, NA, "skull");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_SHOULDERS, NA, NA, "scapulas");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "carpals");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_WAIST, NA, NA, "coccyx");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEGS, NA, NA, "fibulas");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_FEET, NA, NA, "tarsals");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_RIGHTFINGER, NA, NA, "right phalange");
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_LEFTFINGER, NA, NA, "left phalange");
|
|
|
|
addrace(R_GHAST, "ghast", 50, 'Z', C_MAGENTA, MT_FLESH, RC_UNDEAD, "A more slender and ghost-like form of ghoul. Ghasts are cunning and deadly, and possess a paralyzing touch.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "6d4+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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
|
|
addrace(R_GHOST, "ghost", 50, 'p', C_BLUE, MT_MAGIC, RC_UNDEAD, "Wispy spirits formed when a soul refuses to depart the earthly realm after death, ghosts exist part way between dimensions. The sight of a ghost can cause fear in all who behold it, and their ethereal nature makes them immune to most attacks."); // 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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "5d4+2");
|
|
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
|
addflag(lastrace->flags, F_NOINJURIES, B_TRUE, NA, NA, NULL);
|
|
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_GREEN, MT_FLESH, RC_UNDEAD, "Ghouls are monstrous, undead humanoids who feed on flesh and reek of carrion. Their bodies are grey and hairless, their teeth fanged, and their nails sharped into deadly claws.");
|
|
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, NA, RR_COMMON, NULL);
|
|
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_STENCH, 3, 1, NA, NULL);
|
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "4d4+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);
|
|
addflag(lastrace->flags, F_BODYPARTNAME, BP_HANDS, NA, NA, "claws");
|
|
|
|
addrace(R_VAMPIRE, "vampire", 75, 'V', C_BLUE, MT_FLESH, RC_UNDEAD, "Blood-drinking creatures of the night, vampires have pale white skin and prominent fangs protuding from their mouthes. They are said to be near immortal, able to survive even seemingly fatal attacks by converting themselves to a gaseous form.");
|
|
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_AGI, 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, NA, RR_UNCOMMON, 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_CANWILL, OT_S_CHARM, 3, 3, "pw:6;");
|
|
addflag(lastrace->flags, F_CANWILL, OT_A_CHARGE, NA, NA, "range:3;");
|
|
addflag(lastrace->flags, F_CANWILL, OT_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_CASTCHANCE, 40, NA, NA, NULL);
|
|
addflag(lastrace->flags, F_DETECTOBS, 10, OT_COFFIN, NA, NULL);
|
|
addflag(lastrace->flags, F_CORPSETYPE, NA, NA, NA, "pile of ash");
|
|
addflag(lastrace->flags, F_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, "A large cloud of gas which seems to move with a life of its own...");
|
|
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_NOINJURIES, 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, "A magically animated weapon.");
|
|
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_NOINJURIES, 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, "A magically created disc of energy which floats in the air.");
|
|
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_NOINJURIES, 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);
|
|
addflag(r->flags, F_NOFLEE, B_TRUE, NA, 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, 30, 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);
|
|
} 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);
|
|
addflag(r->flags, F_NOFLEE, B_TRUE, NA, NA, NULL);
|
|
} else if (r->raceclass->id == RC_SLIME) {
|
|
addflag(lastrace->flags, F_DISEASEIMMUNE, B_TRUE, NA, NA, NULL);
|
|
addflag(r->flags, F_NOFLEE, 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);
|
|
addflag(r->flags, F_NOFLEE, 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
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%.^n", B_FALSE);
|
|
addskilldesc(SK_ARMOUR, PR_BEGINNER, "^gReduces armour evasion penalties by 20%.^n", B_FALSE);
|
|
addskilldesc(SK_ARMOUR, PR_ADEPT, "^gReduces armour evasion penalties by 30%.^n", B_FALSE);
|
|
addskilldesc(SK_ARMOUR, PR_SKILLED, "^gReduces armour evasion penalties by 40%.^n", B_FALSE);
|
|
addskilldesc(SK_ARMOUR, PR_EXPERT, "^gReduces armour evasion penalties by 50%.^n", B_FALSE);
|
|
addskilldesc(SK_ARMOUR, PR_MASTER, "^gReduces armour evasion penalties by 60%.^n", B_FALSE);
|
|
addskill(SK_ATHLETICS, "Athletics", "Grants various athletic abilities and increases Stamina.", 50);
|
|
addskilldesc(SK_ATHLETICS, PR_NOVICE, "^gYou gain the 'sprint' ability.^n", B_FALSE);
|
|
addskilldesc(SK_ATHLETICS, PR_ADEPT, "^gYou gain the 'tumble' ability.^n", B_FALSE);
|
|
addskilldesc(SK_ATHLETICS, PR_EXPERT, "^gYou gain the 'jump' ability.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_BACKSTAB, PR_BEGINNER, "^gYour unseen attacks inflict triple damage.^n", B_FALSE);
|
|
addskilldesc(SK_BACKSTAB, PR_ADEPT, "^gYour unseen attacks inflict quadruple damage.^n", B_FALSE);
|
|
addskilldesc(SK_BACKSTAB, PR_SKILLED, "^gYour unseen attacks inflict 5x damage.^n", B_FALSE);
|
|
addskilldesc(SK_BACKSTAB, PR_EXPERT, "^gYour unseen attacks inflict 6x damage.^n", B_FALSE);
|
|
addskilldesc(SK_BACKSTAB, PR_MASTER, "^gYour unseen attacks inflict 7x damage.^n", 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.^n", B_TRUE);
|
|
addskilldesc(SK_CARTOGRAPHY, PR_BEGINNER, "^gYou can now remember the location of staircases.^n", B_TRUE);
|
|
addskilldesc(SK_CARTOGRAPHY, PR_ADEPT, "^gYour can now remember the location of doors.^n", B_TRUE);
|
|
addskilldesc(SK_CARTOGRAPHY, PR_SKILLED, "^gYou no longer forget your surroundings.^n", B_FALSE);
|
|
addskilldesc(SK_CARTOGRAPHY, PR_EXPERT, "^gYour can now remember the location of objects.^n", B_TRUE);
|
|
addskilldesc(SK_CARTOGRAPHY, PR_MASTER, "^gEvery 50 turns, you can intuitively map a small area around you.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_CHANNELING, PR_BEGINNER, "^gThe power level of wands and scrolls is increased by 2.^n", B_FALSE);
|
|
addskilldesc(SK_CHANNELING, PR_ADEPT, "^gThe power level of wands and scrolls is increased by 4.^n", B_FALSE);
|
|
addskilldesc(SK_CHANNELING, PR_SKILLED, "^gThe power level of wands and scrolls is increased by 6.^n", B_FALSE);
|
|
addskilldesc(SK_CHANNELING, PR_EXPERT, "^gThe power level of wands and scrolls is increased by 8.^n", B_FALSE);
|
|
addskilldesc(SK_CHANNELING, PR_MASTER, "^gThe power level of wands and scrolls is increased by 10.^n", 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.^n", B_TRUE);
|
|
addskilldesc(SK_COOKING, PR_BEGINNER, "^gYou can now recognise all kinds of bad food.^n", B_TRUE);
|
|
addskilldesc(SK_COOKING, PR_ADEPT, "^gYou can use the 'cook' ability to make jerky.^n", B_FALSE);
|
|
addskilldesc(SK_COOKING, PR_EXPERT, "^gYou can use the 'cook' ability to make stew.^n", B_FALSE);
|
|
addskill(SK_EVASION, "Evasion", "Your ability to dodge blows or traps.", 50);
|
|
addskilldesc(SK_EVASION, PR_NOVICE, "^gIncreases your EV by 5%.^n", B_FALSE);
|
|
addskilldesc(SK_EVASION, PR_BEGINNER, "^gIncreases your EV by 10%.^n", B_FALSE);
|
|
addskilldesc(SK_EVASION, PR_ADEPT, "^gIncreases your EV by 15%.^n", B_FALSE);
|
|
addskilldesc(SK_EVASION, PR_SKILLED, "^gIncreases your EV by 20%.^n", B_FALSE);
|
|
addskilldesc(SK_EVASION, PR_EXPERT, "^gIncreases your EV by 25%.^n", B_FALSE);
|
|
addskilldesc(SK_EVASION, PR_MASTER, "^gIncreases your EV by 30%.^n", 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.^n", 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.^n", B_TRUE);
|
|
addskilldesc(SK_LISTEN, PR_BEGINNER, "^gYou now more accurately gauge the distance of sounds.^n", B_TRUE);
|
|
addskilldesc(SK_LISTEN, PR_ADEPT, "^gYou can now determine the direction sounds are coming from.^n", B_TRUE);
|
|
addskilldesc(SK_LISTEN, PR_EXPERT, "^gYou can now identify monsters based on sound.^n", B_TRUE);
|
|
addskilldesc(SK_LISTEN, PR_MASTER, "^gYou can now locate monsters based on sound.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_METALWORK, PR_BEGINNER, "^gYou can repair metal items up to 50% condition.^n", B_FALSE);
|
|
addskilldesc(SK_METALWORK, PR_ADEPT, "^gYou can repair metal items up to 60% condition.^n", B_FALSE);
|
|
addskilldesc(SK_METALWORK, PR_SKILLED, "^gYou can repair metal items up to 70% condition.^n", B_FALSE);
|
|
addskilldesc(SK_METALWORK, PR_EXPERT, "^gYou can repair metal items up to 85% condition.^n", B_FALSE);
|
|
addskilldesc(SK_METALWORK, PR_MASTER, "^gYou can fully repair metal items.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_RANGED, PR_BEGINNER, "^gYou suffer a -10% accuracy penalty when using ranged weapons.^n", B_FALSE);
|
|
addskilldesc(SK_RANGED, PR_ADEPT, "^gYou no longer suffer a accuracy penalty when using ranged weapons.^n", B_FALSE);
|
|
addskilldesc(SK_RANGED, PR_SKILLED, "^gYou gain a +10% accuracy bonus when using ranged weapons.^n", B_FALSE);
|
|
addskilldesc(SK_RANGED, PR_EXPERT, "^gYou gain a +20% accuracy bonus when using ranged weapons.^n", B_FALSE);
|
|
addskilldesc(SK_RANGED, PR_MASTER, "^gYou gain a +30% accuracy bonus when using ranged weapons.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_SEWING, PR_BEGINNER, "^gYou can repair cloth items up to 50% condition^n", B_FALSE);
|
|
addskilldesc(SK_SEWING, PR_ADEPT, "^gYou can repair cloth items up to 60% condition^n", B_FALSE);
|
|
addskilldesc(SK_SEWING, PR_SKILLED, "^gYou can repair cloth items up to 70% condition^n", B_FALSE);
|
|
addskilldesc(SK_SEWING, PR_EXPERT, "^gYou can repair cloth items up to 85% condition^n", B_FALSE);
|
|
addskilldesc(SK_SEWING, PR_MASTER, "^gYou can fully repair cloth items.^n", 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%.^n", B_FALSE);
|
|
addskilldesc(SK_SHIELDS, PR_BEGINNER, "^gShield accuracy penalties are reduced by 10%.^n", B_FALSE);
|
|
addskilldesc(SK_SHIELDS, PR_BEGINNER, "^gYou gain the 'shield bash' ability.^n", B_FALSE);
|
|
addskilldesc(SK_SHIELDS, PR_ADEPT, "^gShield accuracy penalties are reduced by 15%.^n", B_FALSE);
|
|
addskilldesc(SK_SHIELDS, PR_SKILLED, "^gShield accuracy penalties are reduced by 20%.^n", B_FALSE);
|
|
addskilldesc(SK_SHIELDS, PR_EXPERT, "^gShield accuracy penalties are reduced by 25%.^n", B_FALSE);
|
|
addskilldesc(SK_SHIELDS, PR_MASTER, "^gShield accuracy penalties are reduced by 30%.^n", 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%.^n", B_FALSE);
|
|
addskilldesc(SK_SPEECH, PR_BEGINNER, "^gShop item prices are reduced by 10%.^n", B_FALSE);
|
|
addskilldesc(SK_SPEECH, PR_ADEPT, "^gShop item prices are reduced by 15%.^n", B_FALSE);
|
|
addskilldesc(SK_SPEECH, PR_SKILLED, "^gShop item prices are reduced by 20%.^n", B_FALSE);
|
|
addskilldesc(SK_SPEECH, PR_EXPERT, "^gShop item prices are reduced by 25%.^n", B_FALSE);
|
|
addskilldesc(SK_SPEECH, PR_MASTER, "^gShop item prices are reduced by 30%.^n", 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.^n", B_TRUE);
|
|
addskilldesc(SK_PERCEPTION, PR_BEGINNER, "^gYou can now determine how recently footprints were made.^n", B_TRUE);
|
|
addskilldesc(SK_PERCEPTION, PR_ADEPT, "^gYou can now identify creatures from their footprints.^n", B_TRUE);
|
|
addskilldesc(SK_PERCEPTION, PR_ADEPT, "^gYour field of vision is now wider.^n", B_TRUE);
|
|
addskilldesc(SK_PERCEPTION, PR_SKILLED, "^gYou can now recognise the direction of footprints.^n", B_TRUE);
|
|
addskilldesc(SK_PERCEPTION, PR_EXPERT, "^gYou can now move without leaving footprints.^n", B_TRUE);
|
|
addskilldesc(SK_PERCEPTION, PR_MASTER, "^gYou now have perception of your blind spots.^n", B_TRUE);
|
|
addskill(SK_STEALTH, "Stealth", "Affects your ability to move silently.", 0); // untrainable?
|
|
addskilldesc(SK_STEALTH, PR_BEGINNER, "^gYou gain the 'hide' ability.^n", B_FALSE);
|
|
addskilldesc(SK_STEALTH, PR_EXPERT, "^gYou can now hide even when monsters are nearby.^n", B_TRUE);
|
|
addskill(SK_SWIMMING, "Swimming", "Allows you to safely swim through deep water.", 50);
|
|
addskilldesc(SK_SWIMMING, PR_NOVICE, "^gYou can now swim.^n", B_TRUE);
|
|
addskilldesc(SK_SWIMMING, PR_BEGINNER, "^gYou can now swim a bit faster.^n", B_TRUE);
|
|
addskilldesc(SK_SWIMMING, PR_ADEPT, "^gYou can now swim a bit faster.^n", B_TRUE);
|
|
addskilldesc(SK_SWIMMING, PR_SKILLED, "^gYou can now swim a bit faster.^n", B_TRUE);
|
|
addskilldesc(SK_SWIMMING, PR_EXPERT, "^gYou can now attack (awkwardly) and cast spells while swimming.^n", B_TRUE);
|
|
addskilldesc(SK_SWIMMING, PR_MASTER, "^gYou can now attack while swimming with no penalty.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_THIEVERY, PR_BEGINNER, "^gYour accuracy penalty when stealing is reduced.^n", B_TRUE);
|
|
addskilldesc(SK_THIEVERY, PR_ADEPT, "^gYou can now choose which items to steal.^n", 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_THROWING, PR_NOVICE, "^gYou suffer a -20% accuracy penalty when throwing items.^n", B_FALSE);
|
|
addskilldesc(SK_THROWING, PR_BEGINNER, "^gYou suffer a -10% accuracy penalty when throwing items.^n", B_FALSE);
|
|
addskilldesc(SK_THROWING, PR_ADEPT, "^gYou no longer suffer a accuracy penalty when throwing items.^n", B_FALSE);
|
|
addskilldesc(SK_THROWING, PR_SKILLED, "^gYou gain a +10% accuracy bonus when throwing items.^n", B_FALSE);
|
|
addskilldesc(SK_THROWING, PR_EXPERT, "^gYou gain a +20% accuracy bonus when throwing items.^n", B_FALSE);
|
|
addskilldesc(SK_THROWING, PR_MASTER, "^gYou gain a +30% accuracy bonus when throwing items.^n", 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.^n", 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.^n", B_TRUE);
|
|
addskilldesc(SK_TWOWEAPON, PR_ADEPT, "^gYou no longer suffer an accuracy penalty when weilding two weapons.^n", B_TRUE);
|
|
addskilldesc(SK_TWOWEAPON, PR_SKILLED, "^gFollow-up attacks with your second weapon are now more accurate.^n", B_TRUE);
|
|
addskilldesc(SK_TWOWEAPON, PR_EXPERT, "^gYou gain the 'flurry attack' ability.^n", B_FALSE);
|
|
addskilldesc(SK_TWOWEAPON, PR_MASTER, "^gYou can now deflect attacks with your second weapon.^n", 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.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_ARCANA, PR_ADEPT, "^gYou gain the 'study scrolls' ability.", B_FALSE);
|
|
addskill(SK_LORE_DEMONS, "Lore:Demonology", "Determines your knowledge about demons.", 0);
|
|
addskilldesc(SK_LORE_DEMONS, PR_INEPT, "At each skill level, more information about related creatures will be shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_DEMONS, PR_INEPT, "Each level also gives +10% damage and accuracy against related creatures.", B_FALSE);
|
|
addskilldesc(SK_LORE_DEMONS, PR_NOVICE, "^gExact attributes, armour rating and evasion are revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_DEMONS, PR_BEGINNER, "^gExact attack damage is now revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_DEMONS, PR_ADEPT, "^gExact remaining hit points and stamina are shown and an approximate threat level is calculated.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_DEMONS, PR_SKILLED, "^gExact turns to kill are shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_DEMONS, PR_MASTER, "^gYou can view complete information about skills, magic and abilities.^n", B_FALSE);
|
|
addskill(SK_LORE_HUMANOID, "Lore:Humanoid", "Determines your knowledge about humanoid (bipedal) creatures.", 0);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_INEPT, "At each skill level, more information about related creatures will be shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_INEPT, "Each level also gives +10% damage and accuracy against related creatures.", B_FALSE);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_NOVICE, "^gExact attributes, armour rating and evasion are revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_BEGINNER, "^gExact attack damage is now revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_ADEPT, "^gExact remaining hit points and stamina are shown and an approximate threat level is calculated.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_SKILLED, "^gExact turns to kill are shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_HUMANOID, PR_MASTER, "^gYou can view complete information about skills, magic and abilities.^n", B_FALSE);
|
|
addskill(SK_LORE_NATURE, "Lore:Nature", "Determines your knowledge of plants, animals and insects.", 0);
|
|
addskilldesc(SK_LORE_NATURE, PR_INEPT, "At each skill level, more information about related creatures will be shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_NATURE, PR_INEPT, "Each level also gives +10% damage and accuracy against related creatures.", B_FALSE);
|
|
addskilldesc(SK_LORE_NATURE, PR_NOVICE, "^gExact attributes, armour rating and evasion are revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_NATURE, PR_BEGINNER, "^gExact attack damage is now revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_NATURE, PR_ADEPT, "^gExact remaining hit points and stamina are shown and an approximate threat level is calculated.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_NATURE, PR_SKILLED, "^gExact turns to kill are shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_NATURE, PR_MASTER, "^gYou can view complete information about skills, magic and abilities.^n", B_FALSE);
|
|
addskill(SK_LORE_UNDEAD, "Lore:Undead", "Determines your knowledge of the undead.", 0);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_INEPT, "At each skill level, more information about related creatures will be shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_INEPT, "Each level also gives +10% damage and accuracy against related creatures.", B_FALSE);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_NOVICE, "^gExact attributes, armour rating and evasion are revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_BEGINNER, "^gExact attack damage is now revealed.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_ADEPT, "^gExact hit points and stamina are shown, and an approximate threat level is calculated.^n", B_FALSE);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_SKILLED, "^gExact turns to kill are shown.", B_FALSE);
|
|
addskilldesc(SK_LORE_UNDEAD, PR_MASTER, "^gYou can view complete information about skills, magic and abilities.^n", B_FALSE);
|
|
|
|
|
|
// 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.^n", B_TRUE);
|
|
addskilldesc(SK_UNARMED, PR_SKILLED, "^gYou can now make melee attacks with your off-hand.^n", 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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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, "Sorcery: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.^n", B_FALSE);
|
|
addskilldesc(sk->id, PR_BEGINNER, "^g-5% accuracy penalty, +10% damage bonus^n", B_FALSE);
|
|
addskilldesc(sk->id, PR_ADEPT, "^gNo accuracy penalty, +20% damage bonus.^n", B_FALSE);
|
|
addskilldesc(sk->id, PR_SKILLED, "^g+25% accuracy bonus, +30% damage bonus.^n", B_FALSE);
|
|
addskilldesc(sk->id, PR_EXPERT, "^g+50% accuracy bonus, +40% damage bonus.^n", B_FALSE);
|
|
addskilldesc(sk->id, PR_MASTER, "^g+50% damage bonus, and you can perform combination strikes.^n", B_FALSE);
|
|
}
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|