- [+] "carnivore" flag -only eats meat
- [+] smart monsters should move OFF damaging things as a priority.
This commit is contained in:
parent
bfb7b12b46
commit
7b753b5f0f
22
ai.c
22
ai.c
|
@ -442,6 +442,18 @@ void aiturn(lifeform_t *lf) {
|
||||||
master = findlf(lf->cell->map, mf->val[0]);
|
master = findlf(lf->cell->map, mf->val[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////
|
||||||
|
// emergencies
|
||||||
|
///////////////////////////////////////////////
|
||||||
|
if (iqb >= IQ_AVERAGE) {
|
||||||
|
if (celldangerous(lf, lf->cell, B_TRUE, NULL)) {
|
||||||
|
// if our cell is dangerous, move away!
|
||||||
|
if (!dorandommove(lf, B_NOBADMOVES, B_FALSE)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////
|
///////////////////////////////////////////////
|
||||||
// housekeeping - weapon changes, drop/pickup,
|
// housekeeping - weapon changes, drop/pickup,
|
||||||
|
@ -992,14 +1004,14 @@ void aiturn(lifeform_t *lf) {
|
||||||
// - either move towards them or randomly
|
// - either move towards them or randomly
|
||||||
if (isadjacent(lf->cell, master->cell)) {
|
if (isadjacent(lf->cell, master->cell)) {
|
||||||
if (db) dblog(".oO { i can see my master - moving randomly }");
|
if (db) dblog(".oO { i can see my master - moving randomly }");
|
||||||
dorandommove(lf, B_NOBADMOVES);
|
dorandommove(lf, B_NOBADMOVES, B_TRUE);
|
||||||
} else {
|
} else {
|
||||||
// move towards master if not adjacent
|
// move towards master if not adjacent
|
||||||
if (db) dblog(".oO { i can see my master - moving towards them }");
|
if (db) dblog(".oO { i can see my master - moving towards them }");
|
||||||
if (movetowards(lf, master->cell, DT_ORTH)) {
|
if (movetowards(lf, master->cell, DT_ORTH)) {
|
||||||
// failed
|
// failed
|
||||||
if (db) dblog(".oO { failed. moving randomly }");
|
if (db) dblog(".oO { failed. moving randomly }");
|
||||||
dorandommove(lf, B_NOBADMOVES);
|
dorandommove(lf, B_NOBADMOVES, B_TRUE);
|
||||||
} else {
|
} else {
|
||||||
// success
|
// success
|
||||||
if (db) dblog(".oO { success. }");
|
if (db) dblog(".oO { success. }");
|
||||||
|
@ -1036,11 +1048,11 @@ void aiturn(lifeform_t *lf) {
|
||||||
aimovetotargetcell(lf, movetoflag);
|
aimovetotargetcell(lf, movetoflag);
|
||||||
} else {
|
} else {
|
||||||
if (db) dblog(".oO { cannot see my master and aigoto last known loc/dir failed. randommove. }");
|
if (db) dblog(".oO { cannot see my master and aigoto last known loc/dir failed. randommove. }");
|
||||||
dorandommove(lf, B_NOBADMOVES);
|
dorandommove(lf, B_NOBADMOVES, B_TRUE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (db) dblog(".oO { cannot see my master and dont have a last known location. randommove. }");
|
if (db) dblog(".oO { cannot see my master and dont have a last known location. randommove. }");
|
||||||
dorandommove(lf, B_NOBADMOVES);
|
dorandommove(lf, B_NOBADMOVES, B_TRUE);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1059,7 +1071,7 @@ void aiturn(lifeform_t *lf) {
|
||||||
|
|
||||||
// DEFAULT - try to move in a random direction
|
// DEFAULT - try to move in a random direction
|
||||||
if (db) dblog(".oO { default - moving randomly }");
|
if (db) dblog(".oO { default - moving randomly }");
|
||||||
dorandommove(lf, B_NOBADMOVES); // this function will call rest() if we cant move
|
dorandommove(lf, B_NOBADMOVES, B_TRUE); // this function will call rest() if we cant move
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
6
defs.h
6
defs.h
|
@ -1595,6 +1595,7 @@ enum FLAG {
|
||||||
F_ACCURACYMOD, // modify your accuracy by val0
|
F_ACCURACYMOD, // modify your accuracy by val0
|
||||||
F_VEGETARIAN, // this lf will not eat meat.
|
F_VEGETARIAN, // this lf will not eat meat.
|
||||||
F_PARTVEGETARIAN,// this lf will only eat if hunger >= 'hungry'
|
F_PARTVEGETARIAN,// this lf will only eat if hunger >= 'hungry'
|
||||||
|
F_CARNIVORE, // this lf will only eat meat.
|
||||||
F_SHIELDPENALTY, // lower your accuracy by val0 due to a cumbersome
|
F_SHIELDPENALTY, // lower your accuracy by val0 due to a cumbersome
|
||||||
// shield
|
// shield
|
||||||
F_LEVRACE, // at level v0, this race is promoted to race v1
|
F_LEVRACE, // at level v0, this race is promoted to race v1
|
||||||
|
@ -2041,8 +2042,9 @@ enum ERROR {
|
||||||
//
|
//
|
||||||
E_NOBP = 48,
|
E_NOBP = 48,
|
||||||
E_VEGETARIAN = 49,
|
E_VEGETARIAN = 49,
|
||||||
E_PARTVEGETARIAN= 50,
|
E_PARTVEGETARIAN = 50,
|
||||||
E_NOOB = 51,
|
E_CARNIVORE = 51,
|
||||||
|
E_NOOB = 52,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
2
io.c
2
io.c
|
@ -6676,7 +6676,7 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
getspeedname(speed, buf2);
|
getspeedname(speed, buf2);
|
||||||
capitalise(buf2);
|
capitalise(buf2);
|
||||||
sprintf(buf, "%s, %d%%",buf2,acc);
|
sprintf(buf, "%s, %d%%",buf2,acc);
|
||||||
mvwprintw(mainwin, y2, x2, ftext, "Speed/Acc");
|
mvwprintw(mainwin, y2, x2, "%14s", " ");
|
||||||
wprintw(mainwin, "%-20s", buf); y2++;
|
wprintw(mainwin, "%-20s", buf); y2++;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
14
lf.c
14
lf.c
|
@ -489,6 +489,11 @@ int caneat(lifeform_t *lf, object_t *o) {
|
||||||
reason = E_VEGETARIAN;
|
reason = E_VEGETARIAN;
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
if (lfhasflag(lf, F_CARNIVORE) && (o->material->id != MT_FLESH)) {
|
||||||
|
reason = E_CARNIVORE;
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (lfhasflag(lf, F_PARTVEGETARIAN) && (o->material->id == MT_FLESH)) {
|
if (lfhasflag(lf, F_PARTVEGETARIAN) && (o->material->id == MT_FLESH)) {
|
||||||
if (gethungerlevel(gethungerval(player)) < H_HUNGRY) {
|
if (gethungerlevel(gethungerval(player)) < H_HUNGRY) {
|
||||||
reason = E_PARTVEGETARIAN;
|
reason = E_PARTVEGETARIAN;
|
||||||
|
@ -1655,6 +1660,9 @@ int eat(lifeform_t *lf, object_t *o) {
|
||||||
case E_UNDEAD:
|
case E_UNDEAD:
|
||||||
msg("You are undead and don't need to eat.");
|
msg("You are undead and don't need to eat.");
|
||||||
break;
|
break;
|
||||||
|
case E_CARNIVORE:
|
||||||
|
msg("The thought of eating plant matter disgusts you.");
|
||||||
|
break;
|
||||||
case E_VEGETARIAN:
|
case E_VEGETARIAN:
|
||||||
msg("The thought of eating flesh disgusts you.");
|
msg("The thought of eating flesh disgusts you.");
|
||||||
break;
|
break;
|
||||||
|
@ -5726,7 +5734,6 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_ARMOUR, 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_HUMANOID, PR_NOVICE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_LORE_UNDEAD, PR_NOVICE, NA, NULL);
|
addflag(lastjob->flags, F_STARTSKILL, SK_LORE_UNDEAD, PR_NOVICE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "spellbook of flame dart");
|
|
||||||
for (i = 1; i < MAXSKILLS; i++) {
|
for (i = 1; i < MAXSKILLS; i++) {
|
||||||
addflag(lastjob->flags, F_CANLEARN, i, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, i, NA, NA, NULL);
|
||||||
}
|
}
|
||||||
|
@ -7569,6 +7576,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, 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_HANDS, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, 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_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 4, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 8, 8, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 8, 8, NULL);
|
||||||
|
@ -7590,6 +7598,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NOBODYPART, BP_SHOULDERS, 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_HANDS, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOSPELLS, B_TRUE, 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_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 5, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 5, 5, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_SPRINT, 5, 5, NULL);
|
||||||
|
@ -7783,6 +7792,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
addflag(lastrace->flags, F_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
addflag(lastrace->flags, F_ACTIONSPEED, SP_NORMAL, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE2, NA, NA, "0d1+0");
|
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE2, NA, NA, "0d1+0");
|
||||||
|
addflag(lastrace->flags, F_CARNIVORE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_WANTSOBFLAG, F_EDIBLE, 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_LEVITATING, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -7824,6 +7834,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_ACTIONSPEED, SP_SLOW, NA, NA, "");
|
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_TEETH, NA, NA, "1d5+3");
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE, NA, NA, "0d1+0");
|
addflag(lastrace->flags, F_HASATTACK, OT_TOUCHPARALYZE, NA, NA, "0d1+0");
|
||||||
|
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_WANTSOBFLAG, F_EDIBLE, B_COVETS, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_SILENTMOVE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_DEAF, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -12506,6 +12517,7 @@ int rest(lifeform_t *lf, int onpurpose) {
|
||||||
getlfname(lf, lfname);
|
getlfname(lf, lfname);
|
||||||
msg("%s finishes resting.",lfname);
|
msg("%s finishes resting.",lfname);
|
||||||
}
|
}
|
||||||
|
if (isplayer(lf)) statdirty = B_TRUE;
|
||||||
killflag(rf);
|
killflag(rf);
|
||||||
wantclearmsg = B_FALSE;
|
wantclearmsg = B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
47
log.txt
47
log.txt
|
@ -4,3 +4,50 @@
|
||||||
====== NEW LOGFILE ====
|
====== NEW LOGFILE ====
|
||||||
givejob() starting.
|
givejob() starting.
|
||||||
|
|
||||||
|
fireat(): dam = throwdam(2) * speed(3) = 6
|
||||||
|
fireat(): dam = throwdam(2) * speed(3) = 6
|
||||||
|
fireat(): dam = throwdam(3) * speed(3) = 9
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
fireat(): dam = throwdam(2) * speed(2) = 4
|
||||||
|
xxx
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
fireat(): dam = throwdam(3) * speed(2) = 6
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast charge - specific spell check failed }
|
||||||
|
.oO { cant cast charge - specific spell check failed }
|
||||||
|
fireat(): dam = throwdam(2) * speed(2) = 4
|
||||||
|
fireat(): dam = throwdam(2) * speed(3) = 6
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast suck blood - targetting conditions cannot be met }
|
||||||
|
xxx
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
fireat(): dam = throwdam(2) * speed(3) = 6
|
||||||
|
fireat(): dam = throwdam(3) * speed(3) = 9
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
.oO { cant cast grab - targetting conditions cannot be met }
|
||||||
|
xxx
|
||||||
|
|
16
move.c
16
move.c
|
@ -268,7 +268,9 @@ int diropposite(int dir) {
|
||||||
return dir;
|
return dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dorandommove(lifeform_t *lf, int badmovesok) {
|
// restonfail means "if we can't find any valid moves, just rest"
|
||||||
|
// returns true on error
|
||||||
|
int dorandommove(lifeform_t *lf, int badmovesok, int restonfail) {
|
||||||
int dir;
|
int dir;
|
||||||
int tries = 0;
|
int tries = 0;
|
||||||
int moveok;
|
int moveok;
|
||||||
|
@ -294,8 +296,10 @@ void dorandommove(lifeform_t *lf, int badmovesok) {
|
||||||
// try next direction...
|
// try next direction...
|
||||||
if (++dir > DC_NW) dir = DC_N;
|
if (++dir > DC_NW) dir = DC_N;
|
||||||
if (++tries >= MAXDIR_COMPASS) {
|
if (++tries >= MAXDIR_COMPASS) {
|
||||||
rest(lf, B_TRUE);
|
if (restonfail) {
|
||||||
return;
|
rest(lf, B_TRUE);
|
||||||
|
}
|
||||||
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check this direction...
|
// check this direction...
|
||||||
|
@ -311,7 +315,7 @@ void dorandommove(lifeform_t *lf, int badmovesok) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
trymove(lf, dir, B_TRUE);
|
return trymove(lf, dir, B_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -581,7 +585,7 @@ int moveawayfrom(lifeform_t *lf, cell_t *dst, int dirtype ) {
|
||||||
int rv = B_TRUE;
|
int rv = B_TRUE;
|
||||||
|
|
||||||
if (isblind(lf)) {
|
if (isblind(lf)) {
|
||||||
dorandommove(lf, B_TRUE);
|
dorandommove(lf, B_TRUE, B_TRUE);
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1006,7 +1010,7 @@ int movetowards(lifeform_t *lf, cell_t *dst, int dirtype) {
|
||||||
int rv = B_TRUE;
|
int rv = B_TRUE;
|
||||||
|
|
||||||
if (isblind(lf)) {
|
if (isblind(lf)) {
|
||||||
dorandommove(lf, B_TRUE);
|
dorandommove(lf, B_TRUE, B_TRUE);
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
move.h
2
move.h
|
@ -8,7 +8,7 @@ int cellwalkable(lifeform_t *lf, cell_t *cell, enum ERROR *error);
|
||||||
int closedoorat(lifeform_t *lf, cell_t *c);
|
int closedoorat(lifeform_t *lf, cell_t *c);
|
||||||
int closedoor(lifeform_t *lf, object_t *o);
|
int closedoor(lifeform_t *lf, object_t *o);
|
||||||
int diropposite(int dir);
|
int diropposite(int dir);
|
||||||
void dorandommove(lifeform_t *lf, int badmovesok);
|
int dorandommove(lifeform_t *lf, int badmovesok, int restonfail);
|
||||||
int getdiraway(cell_t *src, cell_t *dst, lifeform_t *srclf, int wantcheck, int dirtype);
|
int getdiraway(cell_t *src, cell_t *dst, lifeform_t *srclf, int wantcheck, int dirtype);
|
||||||
int getdirtowards(cell_t *src, cell_t *dst, lifeform_t *srclf, int wantcheck, int dirtype);
|
int getdirtowards(cell_t *src, cell_t *dst, lifeform_t *srclf, int wantcheck, int dirtype);
|
||||||
int knockback(lifeform_t *lf, int dir, int howfar, lifeform_t *pusher, int fallcheckdiff);
|
int knockback(lifeform_t *lf, int dir, int howfar, lifeform_t *pusher, int fallcheckdiff);
|
||||||
|
|
|
@ -5736,7 +5736,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL);
|
addflag(lastot->flags, F_AICASTTOATTACK, ST_VICTIM, NA, NA, NULL);
|
||||||
|
|
||||||
// tools
|
// tools
|
||||||
addot(OT_BLANKET, "wool blanket", "A warm wool blanket for those cold winter nights.", MT_CLOTH, 2, OC_ARMOUR);
|
addot(OT_BLANKET, "wool blanket", "A warm wool blanket for those cold winter nights.", MT_CLOTH, 2, OC_TOOLS);
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 80, NA, NULL);
|
||||||
addflag(lastot->flags, F_HELPSREST, 10, NA, NA, NULL);
|
addflag(lastot->flags, F_HELPSREST, 10, NA, NA, NULL);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue