Small quadrapeds/birds shouldn't be able to slip on things, nor should snakes.
This commit is contained in:
parent
e4c3716387
commit
2b82e1de44
3
data.c
3
data.c
|
@ -17879,6 +17879,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NATURALFLIGHT, B_TRUE, NA, NA, "");
|
addflag(lastrace->flags, F_NATURALFLIGHT, B_TRUE, NA, NA, "");
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_FLY, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_FLY, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_A_FLY, NA, NA, NULL);
|
addflag(lastrace->flags, F_SPELLCASTTEXT, OT_A_FLY, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTSKILL, SK_FLIGHT, PR_BEGINNER, NA, NULL);
|
addflag(lastrace->flags, F_STARTSKILL, SK_FLIGHT, PR_BEGINNER, NA, NULL);
|
||||||
|
|
||||||
addrace(R_SWARMRAT, "swarm of rats", 40, UNI_SWARM, C_BROWN, MT_FLESH, RC_ANIMAL, "A large swarm of vile rodents.");
|
addrace(R_SWARMRAT, "swarm of rats", 40, UNI_SWARM, C_BROWN, MT_FLESH, RC_ANIMAL, "A large swarm of vile rodents.");
|
||||||
|
@ -17899,6 +17900,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MAXATTACKS, 5, 5, NA, NULL);
|
addflag(lastrace->flags, F_MAXATTACKS, 5, 5, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SWARM, NA, NA, NA, NULL);
|
addflag(lastrace->flags, F_SWARM, NA, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_STR, AT_VLOW, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_VLOW, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_GTAVERAGE, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_GTAVERAGE, NA, NULL);
|
||||||
|
@ -17928,6 +17930,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MAXATTACKS, 7, 7, NA, NULL);
|
addflag(lastrace->flags, F_MAXATTACKS, 7, 7, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL);
|
addflag(lastrace->flags, F_NOCORPSE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SWARM, NA, NA, NA, NULL);
|
addflag(lastrace->flags, F_SWARM, NA, NA, NA, NULL);
|
||||||
|
addflag(lastrace->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_STR, AT_VLOW, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_VLOW, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_IQ, IQ_ANIMAL, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_HIGH, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_AGI, AT_HIGH, NA, NULL);
|
||||||
|
|
38
lf.c
38
lf.c
|
@ -10837,13 +10837,15 @@ char *real_getlfnamea(lifeform_t *lf, char *buf, lifeform_t * usevis, int showal
|
||||||
}
|
}
|
||||||
|
|
||||||
enum LFSIZE getlfsize(lifeform_t *lf) {
|
enum LFSIZE getlfsize(lifeform_t *lf) {
|
||||||
flag_t *f;
|
flag_t *f = NULL;
|
||||||
|
enum LFSIZE size = SZ_HUMAN;
|
||||||
f = hasflag(lf->flags, F_SIZE);
|
f = hasflag(lf->flags, F_SIZE);
|
||||||
if (!f) f = hasflag(lf->race->flags, F_SIZE);
|
if (f) {
|
||||||
if (!f) {
|
size = f->val[0];
|
||||||
return SZ_HUMAN;
|
} else {
|
||||||
|
size = getracesize(lf->race->id);
|
||||||
}
|
}
|
||||||
return f->val[0];
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
float getlfweight(lifeform_t *lf, int withobs) {
|
float getlfweight(lifeform_t *lf, int withobs) {
|
||||||
|
@ -11117,6 +11119,21 @@ int getracerarity(enum HABITAT hab, enum RACE rid, enum RARITY *rr) {
|
||||||
return rarity;
|
return rarity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum LFSIZE getracesize(enum RACE rid) {
|
||||||
|
race_t *r = NULL;
|
||||||
|
flag_t *f = NULL;
|
||||||
|
enum LFSIZE size = SZ_HUMAN;
|
||||||
|
r = findrace(rid);
|
||||||
|
if (r) {
|
||||||
|
f = hasflag(r->flags, F_SIZE);
|
||||||
|
if (f) {
|
||||||
|
size = f->val[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// if optional 'attacker' is provided, only select form armours which they
|
// if optional 'attacker' is provided, only select form armours which they
|
||||||
// can reach.
|
// can reach.
|
||||||
object_t *getrandomarmour(lifeform_t *lf, lifeform_t *attacker) {
|
object_t *getrandomarmour(lifeform_t *lf, lifeform_t *attacker) {
|
||||||
|
@ -21757,6 +21774,9 @@ void setbodytype(race_t *r, enum BODYTYPE bt) {
|
||||||
addbodypart(r, BP_LEGS, NULL);
|
addbodypart(r, BP_LEGS, NULL);
|
||||||
addbodypart(r, BP_FEET, "talons");
|
addbodypart(r, BP_FEET, "talons");
|
||||||
addbodypart(r, BP_WINGS, NULL);
|
addbodypart(r, BP_WINGS, NULL);
|
||||||
|
if (getracesize(r->id) <= SZ_SMALL) {
|
||||||
|
addflagifneeded(r->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case BT_HUMANOID:
|
case BT_HUMANOID:
|
||||||
for (i = BP_WEAPON; i <= BP_LEFTFINGER; i++) {
|
for (i = BP_WEAPON; i <= BP_LEFTFINGER; i++) {
|
||||||
|
@ -21770,6 +21790,7 @@ void setbodytype(race_t *r, enum BODYTYPE bt) {
|
||||||
addbodypart(r, BP_LEGS, NULL);
|
addbodypart(r, BP_LEGS, NULL);
|
||||||
addbodypart(r, BP_WINGS, NULL);
|
addbodypart(r, BP_WINGS, NULL);
|
||||||
addflag(r->flags, F_SEEWITHOUTEYES, B_TRUE, NA, NA, NULL );
|
addflag(r->flags, F_SEEWITHOUTEYES, B_TRUE, NA, NA, NULL );
|
||||||
|
addflagifneeded(r->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
break;
|
break;
|
||||||
case BT_QUADRAPED:
|
case BT_QUADRAPED:
|
||||||
addbodypart(r, BP_EYES, NULL);
|
addbodypart(r, BP_EYES, NULL);
|
||||||
|
@ -21780,25 +21801,32 @@ void setbodytype(race_t *r, enum BODYTYPE bt) {
|
||||||
addbodypart(r, BP_BACKLEGS, "back legs");
|
addbodypart(r, BP_BACKLEGS, "back legs");
|
||||||
addbodypart(r, BP_FRONTLEGS, "front legs");
|
addbodypart(r, BP_FRONTLEGS, "front legs");
|
||||||
addbodypart(r, BP_FEET, "paws");
|
addbodypart(r, BP_FEET, "paws");
|
||||||
|
if (getracesize(r->id) <= SZ_SMALL) {
|
||||||
|
addflagifneeded(r->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case BT_FISH:
|
case BT_FISH:
|
||||||
addbodypart(r, BP_EYES, NULL);
|
addbodypart(r, BP_EYES, NULL);
|
||||||
addbodypart(r, BP_HEAD, NULL);
|
addbodypart(r, BP_HEAD, NULL);
|
||||||
addbodypart(r, BP_BODY, NULL);
|
addbodypart(r, BP_BODY, NULL);
|
||||||
addbodypart(r, BP_TAIL, NULL);
|
addbodypart(r, BP_TAIL, NULL);
|
||||||
|
addflagifneeded(r->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
break;
|
break;
|
||||||
case BT_SNAKE:
|
case BT_SNAKE:
|
||||||
addbodypart(r, BP_EYES, NULL);
|
addbodypart(r, BP_EYES, NULL);
|
||||||
addbodypart(r, BP_HEAD, NULL);
|
addbodypart(r, BP_HEAD, NULL);
|
||||||
addbodypart(r, BP_TAIL, NULL);
|
addbodypart(r, BP_TAIL, NULL);
|
||||||
|
addflagifneeded(r->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
break;
|
break;
|
||||||
case BT_SPIDER:
|
case BT_SPIDER:
|
||||||
addbodypart(r, BP_EYES, NULL);
|
addbodypart(r, BP_EYES, NULL);
|
||||||
addbodypart(r, BP_HEAD, "cephalothorax");
|
addbodypart(r, BP_HEAD, "cephalothorax");
|
||||||
addbodypart(r, BP_BODY, "abdomen");
|
addbodypart(r, BP_BODY, "abdomen");
|
||||||
addbodypart(r, BP_LEGS, NULL);
|
addbodypart(r, BP_LEGS, NULL);
|
||||||
|
addflagifneeded(r->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int setfacing(lifeform_t *lf, int dir) {
|
int setfacing(lifeform_t *lf, int dir) {
|
||||||
|
|
1
lf.h
1
lf.h
|
@ -286,6 +286,7 @@ enum POISONSEVERITY getpoisonseverity(enum POISONTYPE ptype);
|
||||||
*/
|
*/
|
||||||
enum RACECLASS getraceclass(lifeform_t *lf);
|
enum RACECLASS getraceclass(lifeform_t *lf);
|
||||||
int getracerarity(enum HABITAT hab, enum RACE rid, enum RARITY *rr);
|
int getracerarity(enum HABITAT hab, enum RACE rid, enum RARITY *rr);
|
||||||
|
enum LFSIZE getracesize(enum RACE rid);
|
||||||
object_t *getrandomarmour(lifeform_t *lf, lifeform_t *attacker);
|
object_t *getrandomarmour(lifeform_t *lf, lifeform_t *attacker);
|
||||||
enum BEHAVIOUR getrandombehaviour(void);
|
enum BEHAVIOUR getrandombehaviour(void);
|
||||||
enum BODYPART getrandomcorebp(lifeform_t *lf, lifeform_t *attacker);
|
enum BODYPART getrandomcorebp(lifeform_t *lf, lifeform_t *attacker);
|
||||||
|
|
Loading…
Reference in New Issue