- [+] dual wield, then weild -, say "y" to "weild nothing in your left
hand", CRASH. - [+] rogue should start with novice speed and throwing - [+] better method of sneaking - just hiding in one spot isn't effective. - [+] get "hide" at novice level - [+] at beginner level, you can move while hiding. ( but if someone hears you, they spot you) - [+] if you can't see an object (ie in inventory it just comes up as "a potion"), make the description be generic. - [+] stealth shouldn't affect movement noise uless you are hiding - [+] move slower when hiding. - [+] trying to hide while already hiding will cancel it. - [+] rename f_sneak to f_movecarefully - [+] move "you attack the helpless xxx" into construct_hit_string. - [+] light level should affect stealth checks. - [+] flying should only impact stealth checks to make noise, not to hide. - [+] sprint should stop hiding! - [+] weapon brand: of protection. gives AR. - [+] make sure i show this in showlfarmour ] - [+] shouldn't be able to backstab plants - [+] no hiding while producing light. - [+] changing armour should stop you from hiding. - [+] let you hide when you can see monsters, but they instantly get F_SPOTTED. - [+] different verbs for god voices - [+] remove "enhanced smell" from xat and dire rat. - [+] make guns usually start with ammo - [+] gain attrib point on _every_ levelup, but 2 each time not 5. - [+] this means that we now gain 6 stat points every 3 levels rather than 5, but they can be spread out. - [+] rogue modifications - [+] change starting backstab level from beginner -> novice - [+] generated monsters: "It is sleeping. It is flying." - [+] should be sleeping AND flying! - [+] remove duplicate tanglemissile code. - [+] change F_ATTREQ - split up penalty cutoff and bonus cutoff - [+] needs a "boostafter" param. - [+] ie. - [+] needs at least ATTREQ agility to USE it. - [+] if you are less than this, start applying penalty. - [+] v2 = BOOSTAFTER level. (CHANGE) - [+] if you are above this amount, start applying bonus. - [+] text = scalepercent. (CHANGE) - [+] adjust code - [+] adjust defs - [+] explain in io.c - [+] test - [+] new felix pray effect: invisibiltity
This commit is contained in:
parent
fa9071ab69
commit
4a32308310
2
ai.c
2
ai.c
|
@ -2248,6 +2248,8 @@ int aispellok(lifeform_t *lf, enum OBTYPE spellid, lifeform_t *victim, enum FLAG
|
||||||
specificcheckok = B_FALSE;
|
specificcheckok = B_FALSE;
|
||||||
} else if (!safetorest(lf)) {
|
} else if (!safetorest(lf)) {
|
||||||
specificcheckok = B_FALSE;
|
specificcheckok = B_FALSE;
|
||||||
|
} else if (lfhasflag(lf, F_PRODUCESLIGHT)) {
|
||||||
|
specificcheckok = B_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((ot->id == OT_S_INVISIBILITY) && lfhasflag(victim, F_INVISIBLE)) {
|
if ((ot->id == OT_S_INVISIBILITY) && lfhasflag(victim, F_INVISIBLE)) {
|
||||||
|
|
38
attack.c
38
attack.c
|
@ -245,7 +245,7 @@ int attackcell(lifeform_t *lf, cell_t *c, int force) {
|
||||||
attacklfid = c->lf->id; // remember for later
|
attacklfid = c->lf->id; // remember for later
|
||||||
|
|
||||||
if (areallies(lf, attacktarget)) attackedfriend = B_TRUE;
|
if (areallies(lf, attacktarget)) attackedfriend = B_TRUE;
|
||||||
if (!cansee(attacktarget, lf) || isfleeing(attacktarget)) attackedhelpless = B_TRUE;
|
attackedhelpless = ishelplessvictim(attacktarget, lf, NULL);
|
||||||
} else {
|
} else {
|
||||||
object_t *o;
|
object_t *o;
|
||||||
// has an impassable object?
|
// has an impassable object?
|
||||||
|
@ -406,19 +406,12 @@ int attackcell(lifeform_t *lf, cell_t *c, int force) {
|
||||||
saysorry = B_TRUE;
|
saysorry = B_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// announce helpless attcaks
|
// announce attacks from behind which aren't backstabs.
|
||||||
if (isplayer(lf) && attackedhelpless) {
|
if (isplayer(lf) && attackedhelpless && !willbackstab(lf, victim, wep[i])) {
|
||||||
char vname[BUFLEN];
|
char vname[BUFLEN];
|
||||||
getlfname(victim, vname);
|
getlfname(victim, vname);
|
||||||
if (isbehind(lf, victim)) {
|
if (isbehind(lf, victim)) {
|
||||||
msg("You attack %s from behind!", vname);
|
msg("You attack %s from behind!", vname);
|
||||||
} else {
|
|
||||||
char *vn;
|
|
||||||
// strip "the" from "the xxx"
|
|
||||||
vn = strdup(vname);
|
|
||||||
vn = strrep(vn, "the ", "", NULL);
|
|
||||||
msg("You attack the helpless %s!", vn);
|
|
||||||
free(vn);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -584,6 +577,13 @@ int attacklf(lifeform_t *lf, lifeform_t *victim, object_t *wep, flag_t *damflag)
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if you have somehow attacked someone who was
|
||||||
|
// hiding (bump into them?) then you have now
|
||||||
|
// spotted them.
|
||||||
|
if (ishidingfrom(victim, lf)) {
|
||||||
|
spot_hiding_lf(lf, victim);
|
||||||
|
}
|
||||||
|
|
||||||
// get names
|
// get names
|
||||||
getlfname(lf, attackername);
|
getlfname(lf, attackername);
|
||||||
|
|
||||||
|
@ -792,18 +792,10 @@ int attacklf(lifeform_t *lf, lifeform_t *victim, object_t *wep, flag_t *damflag)
|
||||||
modifyforsize(&dam[0], lf, victim, 5, M_PCT);
|
modifyforsize(&dam[0], lf, victim, 5, M_PCT);
|
||||||
|
|
||||||
// backstab?
|
// backstab?
|
||||||
if ((damtype[0] == DT_PIERCE) && // using a stabbing weapon
|
if (willbackstab(lf, victim, wep)) {
|
||||||
getskill(lf, SK_BACKSTAB)) { // able to backstab
|
addflag(victim->flags, F_STABBEDBY, lf->id, NA, NA, NULL);
|
||||||
if (!lfhasflagval(victim, F_STABBEDBY, lf->id, NA, NA, NULL) ) { // haven't stabbed them before
|
dam[0] *= (getskill(lf, SK_BACKSTAB));
|
||||||
// && !lfhasflagval(victim, F_TARGETLF, lf->id, NA, NA, NULL)) { // victim isnt attacking us
|
firstisbackstab = B_TRUE;
|
||||||
|
|
||||||
if (!cansee(victim, lf) || // victim can't see us
|
|
||||||
isfleeing(victim)) {
|
|
||||||
addflag(victim->flags, F_STABBEDBY, lf->id, NA, NA, NULL);
|
|
||||||
dam[0] *= (getskill(lf, SK_BACKSTAB));
|
|
||||||
firstisbackstab = B_TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// target asleep?
|
// target asleep?
|
||||||
|
@ -1467,7 +1459,7 @@ int attackwall(lifeform_t *lf, cell_t *c, object_t *wep, flag_t *damflag) {
|
||||||
|
|
||||||
for (i = 0; i < ndam; i++) {
|
for (i = 0; i < ndam; i++) {
|
||||||
// announce the hit
|
// announce the hit
|
||||||
construct_hit_string(lf, NULL, attackername, c->type->name, NULL, wep, damtype[i], dam[i], maxhp, i, B_FALSE, B_FALSE, B_FALSE, isunarmed, buf);
|
construct_hit_string(lf, NULL, attackername, c->type->name, NULL, wep, damtype[i], dam[i], maxhp, i, B_FALSE, B_FALSE, B_FALSE, isunarmed, buf);
|
||||||
|
|
||||||
if (strlen(buf)) {
|
if (strlen(buf)) {
|
||||||
msg("%s", buf);
|
msg("%s", buf);
|
||||||
|
|
194
data.c
194
data.c
|
@ -633,6 +633,7 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_LORE_ARCANA, 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_POLEARMS, PR_ADEPT, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, NA, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, NA, NA, NULL);
|
||||||
// abilities
|
// abilities
|
||||||
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
addflag(lastjob->flags, F_HIRABLE, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -671,6 +672,7 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_THIEVERY, 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_THROWING, PR_SKILLED, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, NA, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, NA, NA, NULL);
|
||||||
// abilities
|
// abilities
|
||||||
addflag(lastjob->flags, F_STABILITY, B_TRUE, NA, NA, NULL);
|
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_LEFTFINGER, NA, NA, NULL);
|
||||||
|
@ -690,7 +692,6 @@ void initjobs(void) {
|
||||||
// initial objects
|
// initial objects
|
||||||
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "dagger");
|
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, "leather armour");
|
||||||
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "50-100 gold coins");
|
|
||||||
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "5 lockpicks");
|
addflag(lastjob->flags, F_STARTOB, 100, NA, NA, "5 lockpicks");
|
||||||
// initial skills
|
// initial skills
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_BEGINNER, NA, NULL);
|
addflag(lastjob->flags, F_STARTSKILL, SK_ATHLETICS, PR_BEGINNER, NA, NULL);
|
||||||
|
@ -698,24 +699,25 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_CLIMBING, PR_BEGINNER, 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_STEALTH, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_LISTEN, 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_BACKSTAB, PR_NOVICE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_LOCKPICKING, 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_PERCEPTION, PR_NOVICE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_SHORTBLADES, PR_NOVICE, NA, NULL);
|
addflag(lastjob->flags, F_STARTSKILL, SK_SHORTBLADES, PR_NOVICE, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_STARTSKILL, SK_SPEECH, PR_NOVICE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_THIEVERY, PR_BEGINNER, NA, NULL);
|
addflag(lastjob->flags, F_STARTSKILL, SK_THIEVERY, PR_BEGINNER, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_STARTSKILL, SK_THROWING, PR_NOVICE, NA, NULL);
|
||||||
addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_BEGINNER, NA, NULL);
|
addflag(lastjob->flags, F_STARTSKILL, SK_LORE_HUMANOID, PR_BEGINNER, NA, NULL);
|
||||||
// learnable skills
|
// learnable skills
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_CHANNELING, PR_SKILLED, NA, NULL);
|
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_COOKING, NA, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_SPEECH, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_PERCEPTION, PR_SKILLED, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_CANLEARN, SK_SEWING, NA, NA, NULL); //
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_SHORTBLADES, PR_SKILLED, 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_STAVES, PR_ADEPT, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_SWIMMING, NA, 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_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_TWOWEAPON, PR_EXPERT, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, PR_EXPERT, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_SS_DIVINATION, PR_ADEPT, 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_GRAVITY, PR_BEGINNER, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_SS_MODIFICATION, PR_BEGINNER, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_SS_MODIFICATION, PR_BEGINNER, NA, NULL);
|
||||||
|
@ -767,6 +769,7 @@ void initjobs(void) {
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_POLEARMS, 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_STAVES, NA, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_UNARMED, NA, NA, NULL);
|
||||||
|
addflag(lastjob->flags, F_CANLEARN, SK_TECHUSAGE, NA, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_THROWING, NA, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_TWOWEAPON, NA, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_TWOWEAPON, NA, NA, NULL);
|
||||||
addflag(lastjob->flags, F_CANLEARN, SK_LORE_DRAGONS, PR_ADEPT, NA, NULL);
|
addflag(lastjob->flags, F_CANLEARN, SK_LORE_DRAGONS, PR_ADEPT, NA, NULL);
|
||||||
|
@ -997,6 +1000,8 @@ void initobjects(void) {
|
||||||
addflag_real(lastbrand->flags, F_ARMOURIGNORE, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
addflag_real(lastbrand->flags, F_ARMOURIGNORE, B_TRUE, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
||||||
addbrand(BR_LIFESUCK, "of lifesucking", BP_WEAPON, B_UNCURSED, 0);
|
addbrand(BR_LIFESUCK, "of lifesucking", BP_WEAPON, B_UNCURSED, 0);
|
||||||
addflag_real(lastbrand->flags, F_VAMPIRIC, NA, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
addflag_real(lastbrand->flags, F_VAMPIRIC, NA, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
||||||
|
addbrand(BR_PROTECTION, "of protection", BP_WEAPON, B_UNCURSED, 0);
|
||||||
|
addflag_real(lastbrand->flags, F_EQUIPCONFER, F_ARBOOST, 10, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
||||||
|
|
||||||
addbrand(BR_REFLECTION, "of reflection", BP_SECWEAPON, B_UNCURSED, 0);
|
addbrand(BR_REFLECTION, "of reflection", BP_SECWEAPON, B_UNCURSED, 0);
|
||||||
addflag_real(lastbrand->flags, F_ONLYFOROBWITHFLAG, F_SHIELD, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
addflag_real(lastbrand->flags, F_ONLYFOROBWITHFLAG, F_SHIELD, NA, NA, NULL, PERMENANT, B_UNKNOWN, -1);
|
||||||
|
@ -5301,7 +5306,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 5, 5, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 5, 5, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_COLD, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_DTRESIST, DT_COLD, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 80, NA, NA, NULL);
|
||||||
|
|
||||||
// armour - body
|
// armour - body
|
||||||
|
@ -5324,7 +5329,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, 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_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 33, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 33, NA, NA, NULL);
|
||||||
|
|
||||||
addot(OT_ARMOURDEMON, "demonskin vest", "Body armour created by flaying the flesh from a living demon, it retains its innate immunity to fire.", MT_FLESH, 7, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_ARMOURDEMON, "demonskin vest", "Body armour created by flaying the flesh from a living demon, it retains its innate immunity to fire.", MT_FLESH, 7, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5335,7 +5340,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_FIRE, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_DTIMMUNE, DT_FIRE, NA, NULL);
|
||||||
addflag(lastot->flags, F_DTIMMUNE, DT_FIRE, NA, NA, NULL);
|
addflag(lastot->flags, F_DTIMMUNE, DT_FIRE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_STARTBLESSED, B_CURSED, NA, NA, NULL);
|
addflag(lastot->flags, F_STARTBLESSED, B_CURSED, NA, NA, NULL);
|
||||||
addot(OT_ARMOURLEATHER, "leather armour", "Body armour created from soft leather.", MT_LEATHER, 10, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_ARMOURLEATHER, "leather armour", "Body armour created from soft leather.", MT_LEATHER, 10, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5345,7 +5350,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 4, 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_EQUIPCONFER, F_ARMOURPENALTY, 10, 10, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 95, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 95, NA, 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);
|
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_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
|
@ -5353,7 +5358,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 6, 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_EQUIPCONFER, F_ARMOURPENALTY, 20, 20, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 35, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 30, 30, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, 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);
|
addot(OT_ARMOURSCALE, "suit of scale armour", "Body armour consisting of many small scales attached to leather.", MT_METAL, 20, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5362,7 +5367,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 10, 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_EQUIPCONFER, F_ARMOURPENALTY, 30, 30, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 35, 35, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 35, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
addot(OT_ARMOURCHAIN, "suit of chainmail", "Heavy body armour consisting of tightly meshed metal rings.", MT_METAL, 25, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_ARMOURCHAIN, "suit of chainmail", "Heavy body armour consisting of tightly meshed metal rings.", MT_METAL, 25, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5371,7 +5376,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 15, 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_EQUIPCONFER, F_ARMOURPENALTY, 40, 40, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 45, 45, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 45, 45, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, 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);
|
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);
|
||||||
|
@ -5380,7 +5385,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 20, 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_EQUIPCONFER, F_ARMOURPENALTY, 50, 50, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 55, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 55, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 50, 50, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
addot(OT_ARMOURPLATE, "suit of plate mail", "Heavy armour with embedded metal plates.", MT_METAL, 40, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_ARMOURPLATE, "suit of plate mail", "Heavy armour with embedded metal plates.", MT_METAL, 40, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5389,7 +5394,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 25, 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_EQUIPCONFER, F_ARMOURPENALTY, 60, 60, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 60, 60, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 60, 60, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -5399,7 +5404,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, 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_EQUIPCONFER, F_ARMOURPENALTY, 10, 10, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 50, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 3, 3, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
addot(OT_OVERALLS, "pair of overalls", "Well-made, brightly coloured workman overalls.", MT_CLOTH, 1, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_OVERALLS, "pair of overalls", "Well-made, brightly coloured workman overalls.", MT_CLOTH, 1, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5407,7 +5412,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_ARMOURRATING, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 85, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 85, NA, NA, NULL);
|
||||||
addot(OT_SILKSHIRT, "silk shirt", "A lightweight, comfortable white silk shirt.", MT_SILK, 0.5, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_SILKSHIRT, "silk shirt", "A lightweight, comfortable white silk shirt.", MT_SILK, 0.5, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5417,7 +5422,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_BODY, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, 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_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 50, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 50, NA, NA, NULL);
|
||||||
addot(OT_ROBE, "robe", "A plain robe.", MT_CLOTH, 4, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_ROBE, "robe", "A plain robe.", MT_CLOTH, 4, OC_ARMOUR, SZ_MEDIUM);
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
|
@ -5464,7 +5469,7 @@ void initobjects(void) {
|
||||||
addot(OT_BELTLEATHER, "leather belt", "A plain leather belt.", MT_LEATHER, 0.2, OC_ARMOUR, SZ_SMALL);
|
addot(OT_BELTLEATHER, "leather belt", "A plain leather belt.", MT_LEATHER, 0.2, OC_ARMOUR, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
addflag(lastot->flags, F_GOESON, BP_WAIST, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_WAIST, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
||||||
// armour - legs
|
// armour - legs
|
||||||
addot(OT_CLOTHTROUSERS, "pair of cloth trousers", "A rough pair of cloth trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_CLOTHTROUSERS, "pair of cloth trousers", "A rough pair of cloth trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM);
|
||||||
|
@ -5474,7 +5479,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, 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_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 60, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 60, NA, NA, NULL);
|
||||||
addot(OT_RIDINGTROUSERS, "pair of riding trousers", "A fitted pair of leather trousers.", MT_LEATHER, 2, OC_ARMOUR, SZ_MEDIUM);
|
addot(OT_RIDINGTROUSERS, "pair of riding trousers", "A fitted pair of leather trousers.", MT_LEATHER, 2, OC_ARMOUR, SZ_MEDIUM);
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
|
@ -5483,7 +5488,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_LEGS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, 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_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 75, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 75, NA, NA, NULL);
|
||||||
addot(OT_COMBATPANTS, "pair of combat pants", "An lightly-armoured pair of camoflauged trousers.", MT_CLOTH, 2, OC_ARMOUR, SZ_MEDIUM);
|
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_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
|
@ -5491,7 +5496,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 3, 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_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
addot(OT_GREAVES, "set of greaves", "A set of heavy metal greaves.", MT_METAL, 4, OC_ARMOUR, SZ_MEDIUM);
|
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_ALL, 100, RR_UNCOMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||||
|
@ -5500,8 +5505,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 4, 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_OBHP, 25, 25, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 15, 15, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 15, 15, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
// armour - feet
|
// armour - feet
|
||||||
addot(OT_SANDALS, "pair of sandals", "Comfortable pair of open leather sandals.", MT_LEATHER, 1, OC_ARMOUR, SZ_SMALL);
|
addot(OT_SANDALS, "pair of sandals", "Comfortable pair of open leather sandals.", MT_LEATHER, 1, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -5519,7 +5524,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, 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_OBHP, 3, 3, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 85, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 85, NA, 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);
|
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_ALL, 100, RR_UNCOMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||||
|
@ -5529,7 +5534,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 0, 5, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_ARMOURPENALTY, 0, 5, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 10, 10, NA, 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_EQUIPCONFER, F_DTRESIST, DT_ELECTRIC, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 95, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 95, NA, 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);
|
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_ALL, 100, RR_RARE, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_RARE, NULL);
|
||||||
|
@ -5538,7 +5543,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, 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_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_STABILITY, NA, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_STABILITY, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
addot(OT_BOOTSLEATHER, "pair of leather boots", "A stout pair of leather boots.", MT_LEATHER, 4, OC_ARMOUR, SZ_SMALL);
|
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_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
|
@ -5547,7 +5552,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, 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_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
addot(OT_BOOTSMETAL, "pair of metal boots", "A strong pair of metal boots.", MT_METAL, 5, OC_ARMOUR, SZ_SMALL);
|
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_ALL, 100, RR_UNCOMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_UNCOMMON, NULL);
|
||||||
|
@ -5556,7 +5561,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_FEET, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, 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_OBHP, 20, 20, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
// armour - gloves
|
// armour - gloves
|
||||||
addot(OT_GLOVESCLOTH, "pair of cloth gloves", "A pair of soft cloth gloves.", MT_CLOTH, 0.15, OC_ARMOUR, SZ_SMALL);
|
addot(OT_GLOVESCLOTH, "pair of cloth gloves", "A pair of soft cloth gloves.", MT_CLOTH, 0.15, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -5566,7 +5571,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL);
|
addflag(lastot->flags, F_GOESON, BP_HANDS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 0, 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_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 70, NA, NA, NULL);
|
||||||
addot(OT_GLOVESLEATHER, "pair of leather gloves", "A pair of coarse leather gloves.", MT_LEATHER, 0.25, OC_ARMOUR, SZ_SMALL);
|
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_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
|
@ -5574,7 +5579,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_MULTISIZE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 1, 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_OBHP, 10, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 90, NA, NA, NULL);
|
||||||
addot(OT_GAUNTLETS, "pair of gauntlets", "A durable pair of metal gauntlets.", MT_METAL, 2, OC_ARMOUR, SZ_SMALL);
|
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_ALL, 100, RR_COMMON, NULL);
|
addflag(lastot->flags, F_RARITY, H_ALL, 100, RR_COMMON, NULL);
|
||||||
|
@ -5583,7 +5588,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ARMOURRATING, 2, 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_EQUIPCONFER, F_ARMOURPENALTY, 10, 5, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITPROTECTION, 100, NA, NA, NULL);
|
||||||
// armour - head
|
// armour - head
|
||||||
addot(OT_SUNHAT, "sun hat", "Wide-brimmed hat made for working in the sun.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
addot(OT_SUNHAT, "sun hat", "Wide-brimmed hat made for working in the sun.", MT_CLOTH, 1, OC_ARMOUR, SZ_SMALL);
|
||||||
|
@ -6177,7 +6182,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_BASH, 4, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_BASH, 4, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, 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_USESSKILL, SK_AXES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 65, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, 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);
|
addot(OT_BATTLEAXE, "battleaxe", "An large axe specifically designed for combat.", MT_METAL, 8, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6189,7 +6194,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ARMOURPIERCE, 4, NA, NA, "");
|
addflag(lastot->flags, F_ARMOURPIERCE, 4, NA, NA, "");
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, 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_USESSKILL, SK_AXES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 75, "10");
|
||||||
addot(OT_GREATAXE, "greataxe", "An enormous axe made designed for combat.", MT_METAL, 10, OC_WEAPON, SZ_MEDIUM);
|
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_RARITY, H_DUNGEON, 50, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 50, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 50, NA, NULL);
|
||||||
|
@ -6201,7 +6206,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, 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_USESSKILL, SK_AXES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 80, "15");
|
||||||
addot(OT_HANDAXE, "hand axe", "A fast one-handed axe, ideal for throwing.", MT_METAL, 2.5, OC_WEAPON, SZ_SMALL);
|
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_RARITY, H_DUNGEON, 80, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 80, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 80, NA, NULL);
|
||||||
|
@ -6211,7 +6216,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_MISSILEDAM, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_MISSILEDAM, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, 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_USESSKILL, SK_AXES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 35, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 35, 55, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, 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);
|
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_RARITY, H_DUNGEON, 80, NA, NULL);
|
||||||
|
@ -6221,7 +6226,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, 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_USESSKILL, SK_AXES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 40, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 40, 60, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 6, NA, 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);
|
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_RARITY, H_DUNGEON, 80, NA, NULL);
|
||||||
|
@ -6231,7 +6236,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_BASH, 5, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_BASH, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, 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_USESSKILL, SK_AXES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 55, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 55, 75, "10");
|
||||||
|
|
||||||
// short blades
|
// short blades
|
||||||
addot(OT_COMBATKNIFE, "combat knife", "A sharp knife designed for military use.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
addot(OT_COMBATKNIFE, "combat knife", "A sharp knife designed for military use.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
||||||
|
@ -6255,7 +6260,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_PIERCE, 4, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_PIERCE, 4, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 40, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 40, 60, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
addot(OT_DAGGER, "dagger", "A short stabbing weapon with a pointed blade.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
addot(OT_DAGGER, "dagger", "A short stabbing weapon with a pointed blade.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
||||||
|
@ -6273,6 +6278,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 2, 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_SILVER, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBEDIFFMAT, MT_BONE, 10, NA, NULL);
|
addflag(lastot->flags, F_CANBEDIFFMAT, MT_BONE, 10, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_AGI, NA, 65, "10");
|
||||||
addot(OT_FORK, "fork", "A common kitchen fork.", MT_METAL, 0.2, OC_WEAPON, SZ_SMALL);
|
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_RARITY, H_DUNGEON, 100, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 100, NA, NULL);
|
||||||
|
@ -6280,6 +6286,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_PIERCE, 2, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_PIERCE, 2, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 65, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 65, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
addflag(lastot->flags, F_OBHP, 2, 2, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_AGI, NA, 65, "10");
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, 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);
|
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_RARITY, H_DUNGEON, 100, NA, NULL);
|
||||||
|
@ -6293,6 +6300,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAMAGABLE, 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_OBHP, 5, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_AGI, NA, 65, "10");
|
||||||
addot(OT_MEATCLEAVER, "meat cleaver", "A short, heavy kitchen knife. Not very accurate but its weight makes it capable of dealing critical blows.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
addot(OT_MEATCLEAVER, "meat cleaver", "A short, heavy kitchen knife. Not very accurate but its weight makes it capable of dealing critical blows.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 100, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 100, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 100, NA, NULL);
|
||||||
|
@ -6300,6 +6308,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 15, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 15, NA, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_STR, 30, NA, "15");
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_AGI, NA, 65, "10");
|
||||||
addot(OT_ORNDAGGER, "ornamental dagger", "This dagger is pretty, but not particularly effective.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
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_RARITY, H_DUNGEON, 50, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 50, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 50, NA, NULL);
|
||||||
|
@ -6310,6 +6320,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_THROWMISSILE, B_TRUE, 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_PICKLOCKS, 7, B_BLUNTONFAIL, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_AGI, NA, 65, "10");
|
||||||
addot(OT_QUICKBLADE, "quickblade", "A short blade of exceptional quality and balance, it allows its bearar to attack faster than would seem possible.", MT_METAL, 3.0, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_QUICKBLADE, "quickblade", "A short blade of exceptional quality and balance, it allows its bearar to attack faster than would seem possible.", MT_METAL, 3.0, OC_WEAPON, SZ_MEDIUM);
|
||||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 73, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 73, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 73, NA, NULL);
|
||||||
|
@ -6320,6 +6331,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, 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_CRITCHANCE, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
addflag(lastot->flags, F_ATTREQ, A_AGI, NA, 75, "10");
|
||||||
addot(OT_RAPIER, "rapier", "A long, narrow French sword lacking a cutting edge. Made for stabbing.", MT_METAL, 3.5, OC_WEAPON, SZ_MEDIUM);
|
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_RARITY, H_DUNGEON, 80, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 80, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 80, NA, NULL);
|
||||||
|
@ -6327,7 +6339,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 75, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 75, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 30, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 30, 50, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_PIERCE, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_PIERCE, NA, NA, NULL);
|
||||||
addot(OT_SHORTSWORD, "gladius", "A short gladiator blade. Designed for stabbing rather than slashing.", MT_METAL, 4, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_SHORTSWORD, "gladius", "A short gladiator blade. Designed for stabbing rather than slashing.", MT_METAL, 4, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6337,7 +6349,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_SLASH, 6, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_SLASH, 6, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 90, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_SHORTBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 30, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 30, 50, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
@ -6373,7 +6385,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, 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_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 80, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
||||||
addot(OT_FALCHION, "falchion", "A single-edged heavy sword made for chopping.", MT_METAL, 6.5, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_FALCHION, "falchion", "A single-edged heavy sword made for chopping.", MT_METAL, 6.5, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6383,7 +6395,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_CHOP, 11, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_CHOP, 11, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 85, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addot(OT_GREATSWORD, "greatsword", "A massive two-handed sword.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_GREATSWORD, "greatsword", "A massive two-handed sword.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM);
|
||||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 55, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 55, NA, NULL);
|
||||||
|
@ -6396,7 +6408,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 90, "3");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 7, NA, 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);
|
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_RARITY, H_DUNGEON, 70, NA, NULL);
|
||||||
|
@ -6405,7 +6417,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_PIERCE, 9, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_PIERCE, 9, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 3, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 70, "3");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL);
|
||||||
|
@ -6425,7 +6437,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_SLASH, 8, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_SLASH, 8, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LONGBLADES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 40, 3, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 40, 60, "3");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6440,7 +6452,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 85, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 1, NA, 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);
|
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_RARITY, H_DUNGEON, 67, NA, NULL);
|
||||||
|
@ -6453,8 +6465,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_BASH, 6, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_BASH, 6, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 1, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 80, "1");
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 35, 55, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 1, NA, 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);
|
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_RARITY, H_DUNGEON, 71, NA, NULL);
|
||||||
|
@ -6468,8 +6480,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 35, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 35, 55, "10");
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 45, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 45, 65, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 2, NA, 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);
|
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_RARITY, H_DUNGEON, 67, NA, NULL);
|
||||||
|
@ -6481,7 +6493,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_CANWILL, OT_A_THRUST, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_CANWILL, OT_A_THRUST, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 65, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 65, 80, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 1, NA, 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);
|
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_RARITY, H_DUNGEON, 67, NA, NULL);
|
||||||
|
@ -6494,8 +6506,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_CANWILL, OT_A_THRUST, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_CANWILL, OT_A_THRUST, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 1, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 65, "1");
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 65, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 65, 80, "5");
|
||||||
addot(OT_SCYTHE, "scythe", "An agricultural hand tool for mowing grass, or reaping crops.", MT_METAL, 6, OC_WEAPON, SZ_HUMAN);
|
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_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
||||||
|
@ -6504,7 +6516,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 3, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 65, "3");
|
||||||
addot(OT_SPEAR, "spear", "A long pole with a sharpened head.", MT_METAL, 9, OC_WEAPON, SZ_HUMAN);
|
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_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 75, NA, NULL);
|
||||||
|
@ -6517,7 +6529,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAMAGABLE, 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_OBHP, 15, 15, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 70, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addot(OT_TRIDENT, "trident", "A three-pronged stabbing weapon.", MT_METAL, 5, OC_WEAPON, SZ_HUMAN);
|
addot(OT_TRIDENT, "trident", "A three-pronged stabbing weapon.", MT_METAL, 5, OC_WEAPON, SZ_HUMAN);
|
||||||
|
@ -6527,7 +6539,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_BASH, 4, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_BASH, 4, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_POLEARMS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 55, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 55, 75, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6540,7 +6552,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, 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_USESSKILL, SK_STAVES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 60, "15");
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
@ -6553,7 +6565,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NEEDSSPACE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, 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_USESSKILL, SK_STAVES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 60, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 60, 70, "15");
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
@ -6567,7 +6579,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_TWOHANDED, B_TRUE, 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_USESSKILL, SK_STAVES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 75, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 75, 85, "15");
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
@ -6581,8 +6593,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, 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_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_STAVES, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 60, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 60, 70, "10");
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 60, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 60, 70, "10");
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
@ -6597,7 +6609,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_IQ, 50, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_IQ, 50, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6611,7 +6623,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 1, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 1, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_IQ, 60, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_IQ, 60, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6625,7 +6637,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 2, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 2, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_IQ, 70, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_IQ, 70, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
||||||
|
|
||||||
addot(OT_WIZARDSTAFF4, "spellbinder staff", "A twisted branch of wood.", MT_DRAGONWOOD, 4, OC_WEAPON, SZ_HUMAN);
|
addot(OT_WIZARDSTAFF4, "spellbinder staff", "A twisted branch of wood.", MT_DRAGONWOOD, 4, OC_WEAPON, SZ_HUMAN);
|
||||||
|
@ -6638,7 +6650,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 3, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 3, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_IQ, 80, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_IQ, 80, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6652,7 +6664,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 4, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 4, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_IQ, 85, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_IQ, 85, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6666,7 +6678,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_LORE_ARCANA, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 5, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_MAGICBOOST, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_IQ, 90, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_IQ, 90, NA, NULL);
|
||||||
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
addflag(lastot->flags, F_HASHIDDENNAME, B_TRUE, NA, NA, "twisted branch");
|
||||||
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_NOQUALITY, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
|
@ -6677,7 +6689,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_BASH, 6, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_BASH, 6, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 60, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 110, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 110, NA, NA, NULL);
|
||||||
addot(OT_FLAIL, "flail", "A flexible chain attached to a heavy weight.", MT_METAL, 9, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_FLAIL, "flail", "A flexible chain attached to a heavy weight.", MT_METAL, 9, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6686,8 +6698,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_BASH, 8, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_BASH, 8, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 50, 60, "10");
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 70, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 5, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 125, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 125, NA, NA, NULL);
|
||||||
addot(OT_FLAILHEAVY, "heavy flail", "A flexible chain attached to a very heavy weight.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_FLAILHEAVY, "heavy flail", "A flexible chain attached to a very heavy weight.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6697,8 +6709,8 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_BASH, 10, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_BASH, 10, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 70, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 70, 80, "10");
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 5, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, NA, "5");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 125, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 125, 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);
|
addot(OT_GREATCLUB, "great club", "An enormous, very heavy, blunt instrument to hit things with.", MT_STONE, 15, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6709,7 +6721,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, 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_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 85, "10");
|
||||||
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);
|
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_RARITY, H_DUNGEON, 90, NA, NULL);
|
||||||
addflag(lastot->flags, F_RARITY, H_CAVE, 90, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_CAVE, 90, NA, NULL);
|
||||||
|
@ -6717,7 +6729,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ARMOURPIERCE, 4, NA, NA, "");
|
addflag(lastot->flags, F_ARMOURPIERCE, 4, NA, NA, "");
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 60, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 60, 80, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 7, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 125, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 125, NA, NA, NULL);
|
||||||
addot(OT_MORNINGSTAR, "morningstar", "A heavy, spiked mace. Its weight makes it good for penetrating armour.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_MORNINGSTAR, "morningstar", "A heavy, spiked mace. Its weight makes it good for penetrating armour.", MT_METAL, 12, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6729,7 +6741,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, 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_TWOHANDED, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_CLUBS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 10, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 75, "10");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 8, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL);
|
addflag(lastot->flags, F_OBATTACKDELAY, 150, NA, NA, NULL);
|
||||||
addot(OT_SPANNER, "spanner", "A long, heavy metal wrench.", MT_METAL, 1, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_SPANNER, "spanner", "A long, heavy metal wrench.", MT_METAL, 1, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6768,7 +6780,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_ALTDAM, DT_BASH, 3, NA, NULL);
|
addflag(lastot->flags, F_ALTDAM, DT_BASH, 3, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 80, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_EXOTICWEPS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_EXOTICWEPS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 60, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 60, 70, "15");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 10, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 10, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
addflag(lastot->flags, F_CANBEDIFFMAT, MT_SILVER, 5, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
@ -6780,7 +6792,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_DAM, DT_BASH, 7, NA, NULL);
|
addflag(lastot->flags, F_DAM, DT_BASH, 7, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 75, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_EXOTICWEPS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_EXOTICWEPS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 65, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 65, 75, "15");
|
||||||
addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL);
|
addflag(lastot->flags, F_CRITCHANCE, 3, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, 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);
|
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);
|
||||||
|
@ -6790,7 +6802,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_EQUIPCONFER, F_CANWILL, OT_A_DISARMLF, NA, NULL);
|
addflag(lastot->flags, F_EQUIPCONFER, F_CANWILL, OT_A_DISARMLF, NA, NULL);
|
||||||
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
addflag(lastot->flags, F_ACCURACY, 70, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_USESSKILL, SK_EXOTICWEPS, NA, NA, NULL);
|
addflag(lastot->flags, F_USESSKILL, SK_EXOTICWEPS, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 15, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_AGI, 50, 60, "15");
|
||||||
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
addflag(lastot->flags, F_CANBLOCK, DT_SLASH, NA, NA, NULL);
|
||||||
|
|
||||||
// projectile weapons
|
// projectile weapons
|
||||||
|
@ -6805,7 +6817,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_AMMOOB, OT_ARROW, 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_AMMOCAPACITY, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 45, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 45, NA, NULL);
|
||||||
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
addflag(lastot->flags, F_RODSHAPED, B_TRUE, NA, NA, NULL);
|
||||||
|
|
||||||
addot(OT_CROSSBOW, "crossbow", "A standard crossbow. Very powerful, but slow to reload and needs high strength to use.", MT_WOOD, 8, OC_WEAPON, SZ_MEDIUM);
|
addot(OT_CROSSBOW, "crossbow", "A standard crossbow. Very powerful, but slow to reload and needs high strength to use.", MT_WOOD, 8, OC_WEAPON, SZ_MEDIUM);
|
||||||
|
@ -6819,7 +6831,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_AMMOOB, OT_BOLT, 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_AMMOCAPACITY, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RELOADTURNS, 2, NA, NA, NULL);
|
addflag(lastot->flags, F_RELOADTURNS, 2, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 75, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 75, NA, NULL);
|
||||||
|
|
||||||
addot(OT_CROSSBOWHAND, "hand crossbow", "A small wrist-mounted crossbow. Less powerful and accurate than its full-sized sibling, the hand crossbow's primary strength is its ability to fire multiple shots before reloading.", MT_WOOD, 3, OC_WEAPON, SZ_SMALL);
|
addot(OT_CROSSBOWHAND, "hand crossbow", "A small wrist-mounted crossbow. Less powerful and accurate than its full-sized sibling, the hand crossbow's primary strength is its ability to fire multiple shots before reloading.", MT_WOOD, 3, OC_WEAPON, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 75, NA, NULL);
|
||||||
|
@ -6844,7 +6856,7 @@ void initobjects(void) {
|
||||||
addflag(lastot->flags, F_AMMOOB, OT_ARROW, 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_AMMOCAPACITY, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL);
|
addflag(lastot->flags, F_RELOADTURNS, 1, NA, NA, NULL);
|
||||||
addflag(lastot->flags, F_ATTREQ, A_STR, 65, 0, NULL);
|
addflag(lastot->flags, F_ATTREQ, A_STR, 65, NA, NULL);
|
||||||
|
|
||||||
addot(OT_REVOLVER, "revolver", "Basic one-handed firearm.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
addot(OT_REVOLVER, "revolver", "Basic one-handed firearm.", MT_METAL, 1, OC_WEAPON, SZ_SMALL);
|
||||||
addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL);
|
addflag(lastot->flags, F_RARITY, H_DUNGEON, 60, NA, NULL);
|
||||||
|
@ -7591,8 +7603,8 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "giving away or discarding money");
|
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");
|
addflag(lastrace->flags, F_GODDISLIKES, NA, NA, NA, "opening locked objects through force");
|
||||||
// sacrifices (piety val will be overridden with value)
|
// sacrifices (piety val will be overridden with value)
|
||||||
addflag(lastrace->flags, F_SACRIFICEOBCLASS, OC_MONEY, NA, 2, "OB IS consumed in a swirl of shadowy blackness");
|
addflag(lastrace->flags, F_SACRIFICEOBCLASS, OC_MONEY, NA, 2, "OB IS consumed in a swirl of shadowy blackness.");
|
||||||
addflag(lastrace->flags, F_SACRIFICEOBWITHFLAG, F_GEM, NA, 2, "OB IS consumed in a swirl of shadowy blackness");
|
addflag(lastrace->flags, F_SACRIFICEOBWITHFLAG, F_GEM, 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.");
|
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.");
|
||||||
|
@ -9062,7 +9074,6 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0");
|
addflag(lastrace->flags, F_HITDICE, NA, NA, NA, "1d4+0");
|
||||||
addflag(lastrace->flags, F_MOVESPEED, SP_NORMAL, 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_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_IQ, AT_LOW, NA, NULL);
|
||||||
addflag(lastrace->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL);
|
addflag(lastrace->flags, F_STARTATT, A_STR, AT_LTAVERAGE, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 3, NA, NULL);
|
||||||
|
@ -9327,7 +9338,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
||||||
addflag(lastrace->flags, F_EVASION, 10, NA, 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_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_TREMORSENSE, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_TREMORSENSE, 2, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_NOISETEXT, N_FLY, 1, NA, "^flapping wings");
|
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_NOCTURNAL, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
addflag(lastrace->flags, F_MORALE, 2, NA, NA, NULL);
|
||||||
|
@ -9710,7 +9721,6 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 2, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 2, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
||||||
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ENHANCESMELL, 4, NA, NA, NULL);
|
|
||||||
addflag(lastrace->flags, F_NOPACK, B_TRUE, 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_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
addflag(lastrace->flags, F_SEEINDARK, 3, NA, NA, NULL);
|
||||||
|
@ -9741,7 +9751,6 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
||||||
addflag(lastrace->flags, F_NOPACK, B_TRUE, 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_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
||||||
|
@ -9771,7 +9780,6 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 6, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 6, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 7, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 7, NA, NULL);
|
||||||
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
||||||
addflag(lastrace->flags, F_NOPACK, B_TRUE, 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_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
||||||
|
@ -9797,7 +9805,6 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 11, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 11, NA, NULL);
|
||||||
addflag(lastrace->flags, F_EXTRADAM, DT_COLD, NA, NA, "1d6");
|
addflag(lastrace->flags, F_EXTRADAM, DT_COLD, NA, NA, "1d6");
|
||||||
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
addflag(lastrace->flags, F_EVASION, 10, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ENHANCESMELL, 5, NA, NA, NULL);
|
|
||||||
addflag(lastrace->flags, F_NOPACK, B_TRUE, 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_NOSPELLS, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
addflag(lastrace->flags, F_CANWILL, OT_A_SWOOP, NA, NA, NULL);
|
||||||
|
@ -9892,7 +9899,6 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 2, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_TEETH, 2, NA, NULL);
|
||||||
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
addflag(lastrace->flags, F_HASATTACK, OT_CLAWS, 3, NA, NULL);
|
||||||
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
addflag(lastrace->flags, F_MAXATTACKS, 1, 1, NA, NULL);
|
||||||
addflag(lastrace->flags, F_ENHANCESMELL, 5, 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_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);
|
||||||
|
@ -11057,7 +11063,7 @@ void initrace(void) {
|
||||||
addflag(lastrace->flags, F_NUMAPPEAR, 1, 3, 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_HOSTILE, B_TRUE, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_SIZE, SZ_HUMAN, 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_HITDICE, NA, NA, NA, "1d4+3");
|
||||||
addflag(lastrace->flags, F_ARMOURRATING, 5, NA, NA, NULL);
|
addflag(lastrace->flags, F_ARMOURRATING, 5, NA, NA, NULL);
|
||||||
addflag(lastrace->flags, F_EVASION, -10, 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_MOVESPEED, SP_SLOW, NA, NA, NULL);
|
||||||
|
@ -11564,9 +11570,9 @@ void initskills(void) {
|
||||||
addskilldesc(SK_PERCEPTION, PR_EXPERT, "^gYou can now move without leaving 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);
|
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?
|
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_NOVICE, "^gYou gain the 'hide' ability.^n", B_FALSE);
|
||||||
|
addskilldesc(SK_STEALTH, PR_BEGINNER, "^gYou can now move while hiding.^n", B_TRUE);
|
||||||
addskilldesc(SK_STEALTH, PR_SKILLED, "^gYou can now peek down staircases.^n", B_TRUE);
|
addskilldesc(SK_STEALTH, PR_SKILLED, "^gYou can now peek down staircases.^n", B_TRUE);
|
||||||
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);
|
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_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_BEGINNER, "^gYou can now swim a bit faster.^n", B_TRUE);
|
||||||
|
|
BIN
data/hiscores.db
BIN
data/hiscores.db
Binary file not shown.
26
defs.h
26
defs.h
|
@ -636,6 +636,12 @@ enum BURDENED {
|
||||||
BR_OVERLOADED = 3,
|
BR_OVERLOADED = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum HELPLESSTYPE {
|
||||||
|
HL_NONE = 0,
|
||||||
|
HL_CANTSEE = 1,
|
||||||
|
HL_FLEEING = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
enum LFCONDITION {
|
enum LFCONDITION {
|
||||||
C_DEAD = 0,
|
C_DEAD = 0,
|
||||||
|
@ -2324,8 +2330,15 @@ enum FLAG {
|
||||||
F_CANHAVEOBMOD, // weapon can have obmod om_v0 applied
|
F_CANHAVEOBMOD, // weapon can have obmod om_v0 applied
|
||||||
// optional: v1 is chance of randomly having it
|
// optional: v1 is chance of randomly having it
|
||||||
F_ATTREQ, // requires attrib v0 to be at least v1
|
F_ATTREQ, // requires attrib v0 to be at least v1
|
||||||
// can adjust dam or tohit by up to (v2*10)% if you are
|
// v2 = "boostlev"
|
||||||
// too low or extra high.
|
// text = scalepct.
|
||||||
|
// if attrib is less than v1, apply "scalepct" % penalty
|
||||||
|
// per 10 points under.
|
||||||
|
// if v2 != NA, and attrib is >= v2, apply "scalepct"% bonus
|
||||||
|
// per 10 points over.
|
||||||
|
// (up to a max of 20 points higher/lower)
|
||||||
|
//
|
||||||
|
// if scalepct == 0, then you MUST meet the base req.
|
||||||
//F_DAMTYPE, // val0 = damage type
|
//F_DAMTYPE, // val0 = damage type
|
||||||
F_CRITCHANCE, // v0 = %chance of critical hit with this weapon
|
F_CRITCHANCE, // v0 = %chance of critical hit with this weapon
|
||||||
F_CRITPROTECTION, // v0 = %chance of preventing critical hits
|
F_CRITPROTECTION, // v0 = %chance of preventing critical hits
|
||||||
|
@ -2447,6 +2460,12 @@ enum FLAG {
|
||||||
F_DONEDARKMSG, // tells the game not to say 'it is very dark here'
|
F_DONEDARKMSG, // tells the game not to say 'it is very dark here'
|
||||||
F_DONELISTEN, // supress further 'you hear xx' messages this turn.
|
F_DONELISTEN, // supress further 'you hear xx' messages this turn.
|
||||||
// lifeform flags / lf flags / monster flags
|
// lifeform flags / lf flags / monster flags
|
||||||
|
|
||||||
|
F_ARBOOST, // modify lf's armour rating by v0
|
||||||
|
// this is slightly different from f_armourrating.
|
||||||
|
// f_armourrating is used for innate armour.
|
||||||
|
// f_arboost is used by objects "of protection" which
|
||||||
|
// enhance your armour rating.
|
||||||
F_DONEKNOWLEDGETRADE, // you've already traded knowledge with this
|
F_DONEKNOWLEDGETRADE, // you've already traded knowledge with this
|
||||||
// person.
|
// person.
|
||||||
F_FOLLOWTIME, // v0 = how long will ai chase you for? defaults to
|
F_FOLLOWTIME, // v0 = how long will ai chase you for? defaults to
|
||||||
|
@ -2521,7 +2540,7 @@ enum FLAG {
|
||||||
F_HOMELEVOB, // when this monster is auto generated on a level, place
|
F_HOMELEVOB, // when this monster is auto generated on a level, place
|
||||||
// between v0 and v1 objects of type 'text' somewhere on
|
// between v0 and v1 objects of type 'text' somewhere on
|
||||||
// the level.
|
// the level.
|
||||||
F_SNEAK, // moving slowly on purpose to avoid slipping.
|
F_CAREFULMOVE, // moving slowly on purpose to avoid slipping.
|
||||||
F_AUTOCMD, // val0 = how many times to repeat this
|
F_AUTOCMD, // val0 = how many times to repeat this
|
||||||
F_LASTCMD, // text[0] = last command performed, v0/1 = x/y of cell, v2=various
|
F_LASTCMD, // text[0] = last command performed, v0/1 = x/y of cell, v2=various
|
||||||
F_WILLTHROW, // this lf will treat obid v0 as a thrown missile.
|
F_WILLTHROW, // this lf will treat obid v0 as a thrown missile.
|
||||||
|
@ -3877,6 +3896,7 @@ enum BRAND {
|
||||||
BR_KNOWLEDGE,
|
BR_KNOWLEDGE,
|
||||||
BR_LEVITATION,
|
BR_LEVITATION,
|
||||||
BR_LIFESUCK,
|
BR_LIFESUCK,
|
||||||
|
BR_PROTECTION,
|
||||||
BR_FEATHERFALL,
|
BR_FEATHERFALL,
|
||||||
BR_ANTIMAG,
|
BR_ANTIMAG,
|
||||||
BR_CONCEALMENT,
|
BR_CONCEALMENT,
|
||||||
|
|
1
flag.c
1
flag.c
|
@ -604,6 +604,7 @@ int flagcausesstatredraw(lifeform_t *lf, enum FLAG fid) {
|
||||||
|
|
||||||
switch (fid) {
|
switch (fid) {
|
||||||
case F_ASLEEP:
|
case F_ASLEEP:
|
||||||
|
case F_ARBOOST:
|
||||||
case F_ATTRMOD:
|
case F_ATTRMOD:
|
||||||
case F_BLIND:
|
case F_BLIND:
|
||||||
case F_CLIMBING:
|
case F_CLIMBING:
|
||||||
|
|
61
god.c
61
god.c
|
@ -758,6 +758,7 @@ int godisangry(enum RACE rid) {
|
||||||
void godsay(enum RACE rid, int says, char *format, ...) {
|
void godsay(enum RACE rid, int says, char *format, ...) {
|
||||||
lifeform_t *god;
|
lifeform_t *god;
|
||||||
char godname[BUFLEN], buf[BUFLEN];
|
char godname[BUFLEN], buf[BUFLEN];
|
||||||
|
char voiceverb[BUFLEN];
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
@ -767,8 +768,24 @@ void godsay(enum RACE rid, int says, char *format, ...) {
|
||||||
god = findgod(rid);
|
god = findgod(rid);
|
||||||
real_getlfname(god, godname, B_FALSE, B_FALSE);
|
real_getlfname(god, godname, B_FALSE, B_FALSE);
|
||||||
|
|
||||||
|
switch (rid) {
|
||||||
|
case R_GODDEATH:
|
||||||
|
strcpy(voiceverb, "grates against your mind");
|
||||||
|
break;
|
||||||
|
case R_GODTHIEVES:
|
||||||
|
strcpy(voiceverb, "whispers in your ear");
|
||||||
|
break;
|
||||||
|
case R_GODMERCY:
|
||||||
|
strcpy(voiceverb, "washes over you");
|
||||||
|
break;
|
||||||
|
case R_GODPURITY:
|
||||||
|
default:
|
||||||
|
strcpy(voiceverb, "booms out from the heavens");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (says) {
|
if (says) {
|
||||||
msg("%s%s voice booms out from the heavens:", godname, getpossessive(godname)); more();
|
msg("%s%s voice %s:", godname, getpossessive(godname), voiceverb); more();
|
||||||
}
|
}
|
||||||
msg("\"%s\"", buf);
|
msg("\"%s\"", buf);
|
||||||
}
|
}
|
||||||
|
@ -955,20 +972,38 @@ int prayto(lifeform_t *lf, lifeform_t *god) {
|
||||||
// teleport away
|
// teleport away
|
||||||
msg("\"Nothing like a quick getaway!\"");
|
msg("\"Nothing like a quick getaway!\"");
|
||||||
dospelleffects(NULL, OT_S_DISPERSAL, 10, lf, NULL, lf->cell, B_UNCURSED, NULL, B_FALSE);
|
dospelleffects(NULL, OT_S_DISPERSAL, 10, lf, NULL, lf->cell, B_UNCURSED, NULL, B_FALSE);
|
||||||
|
donesomething = B_TRUE;
|
||||||
} else {
|
} else {
|
||||||
// steal from your enemies
|
int redo = B_TRUE;
|
||||||
for (l = lf->cell->map->lf ; l ; l = l->next) {
|
while (redo) {
|
||||||
if ((l != lf) && lfhasflagval(l, F_TARGETLF, lf->id, NA, NA, NULL)) {
|
redo = B_FALSE;
|
||||||
object_t *wep;
|
switch (rnd(1,2)) {
|
||||||
// confiscate their weapon
|
case 1:
|
||||||
wep = getweapon(l);
|
// steal from your enemies
|
||||||
if (wep) {
|
for (l = lf->cell->map->lf ; l ; l = l->next) {
|
||||||
if (!donesomething) {
|
if ((l != lf) && lfhasflagval(l, F_TARGETLF, lf->id, NA, NA, NULL)) {
|
||||||
msg("\"I'll take that...\"");
|
object_t *wep;
|
||||||
donesomething = B_TRUE;
|
// confiscate their weapon
|
||||||
|
wep = getweapon(l);
|
||||||
|
if (wep) {
|
||||||
|
if (!donesomething) {
|
||||||
|
msg("\"I'll take that...\"");
|
||||||
|
donesomething = B_TRUE;
|
||||||
|
}
|
||||||
|
castspell(god, OT_S_CONFISCATE, l, wep, l->cell, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
castspell(god, OT_S_CONFISCATE, l, wep, l->cell, NULL, NULL);
|
break;
|
||||||
}
|
case 2:
|
||||||
|
if (lfhasflag(lf, F_INVISIBLE)) {
|
||||||
|
redo = B_TRUE;
|
||||||
|
} else {
|
||||||
|
// invisibility
|
||||||
|
msg("\"Can't hurt what you can't see...\"");
|
||||||
|
addtempflag(lf->flags, F_INVISIBLE, B_TRUE, NA, NA, NULL, 20);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
137
io.c
137
io.c
|
@ -797,7 +797,7 @@ cell_t *askcoords(char *prompt, char *subprompt, int targettype, lifeform_t *src
|
||||||
} else if (rating >= 0.125) {
|
} else if (rating >= 0.125) {
|
||||||
snprintf(dangerbuf, BUFLEN, "dangerous");
|
snprintf(dangerbuf, BUFLEN, "dangerous");
|
||||||
} else {
|
} else {
|
||||||
snprintf(dangerbuf, BUFLEN, "very dangerous");
|
snprintf(dangerbuf, BUFLEN, "extremely dangerous");
|
||||||
}
|
}
|
||||||
if (strlen(extrainfo)) strcat(extrainfo, ", ");
|
if (strlen(extrainfo)) strcat(extrainfo, ", ");
|
||||||
strcat(extrainfo, dangerbuf);
|
strcat(extrainfo, dangerbuf);
|
||||||
|
@ -1201,6 +1201,12 @@ int announceflaggain(lifeform_t *lf, flag_t *f) {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (f->id) {
|
switch (f->id) {
|
||||||
|
case F_ARBOOST:
|
||||||
|
if (isplayer(lf)) {
|
||||||
|
msg("You feel %s!", (f->val[0] >= 0) ? "protected" : "vulnerable");
|
||||||
|
donesomething = B_TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case F_ATTRMOD:
|
case F_ATTRMOD:
|
||||||
switch (f->val[0]) {
|
switch (f->val[0]) {
|
||||||
case A_STR:
|
case A_STR:
|
||||||
|
@ -1860,6 +1866,12 @@ int announceflagloss(lifeform_t *lf, flag_t *f) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
switch (f->id) {
|
switch (f->id) {
|
||||||
|
case F_ARBOOST:
|
||||||
|
if (isplayer(lf)) {
|
||||||
|
msg("You no longer feel so %s.", (f->val[0] >= 0) ? "protected" : "vulnerable");
|
||||||
|
donesomething = B_TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case F_ATTRMOD:
|
case F_ATTRMOD:
|
||||||
switch (f->val[0]) {
|
switch (f->val[0]) {
|
||||||
case A_STR:
|
case A_STR:
|
||||||
|
@ -5743,6 +5755,10 @@ char *makedesc_ob(object_t *o, char *retbuf) {
|
||||||
sprintf(buf2, "%s obscures your identity.\n", buf);
|
sprintf(buf2, "%s obscures your identity.\n", buf);
|
||||||
strncat(retbuf, buf2, HUGEBUFLEN);
|
strncat(retbuf, buf2, HUGEBUFLEN);
|
||||||
break;
|
break;
|
||||||
|
case F_ARBOOST:
|
||||||
|
sprintf(buf2, "%s %s your Armour Rating.\n", buf, (f->val[0] >= 0) ? "increases" : "decreases");
|
||||||
|
strncat(retbuf, buf2, HUGEBUFLEN);
|
||||||
|
break;
|
||||||
case F_ATTRMOD:
|
case F_ATTRMOD:
|
||||||
sprintf(buf2, "%s %s your %s.\n", buf, (f->val[2] > 0) ? "increases" : "decreases", getattrname(f->val[1]));
|
sprintf(buf2, "%s %s your %s.\n", buf, (f->val[2] > 0) ? "increases" : "decreases", getattrname(f->val[1]));
|
||||||
strncat(retbuf, buf2, HUGEBUFLEN);
|
strncat(retbuf, buf2, HUGEBUFLEN);
|
||||||
|
@ -6062,25 +6078,52 @@ char *makedesc_ob(object_t *o, char *retbuf) {
|
||||||
} else {
|
} else {
|
||||||
col = C_GREY;
|
col = C_GREY;
|
||||||
}
|
}
|
||||||
sprintf(buf, "^%dIt requires at least %d %s to use%s.^n\n", col, f->val[1], getattrname(f->val[0]),
|
if (f->val[1] != NA) {
|
||||||
(f->val[2] == 0) ? "" : " effectively");
|
sprintf(buf, "^%dIt requires at least %d %s to use%s.", col, f->val[1], getattrname(f->val[0]),
|
||||||
|
strlen(f->text) ? " effectively" : "");
|
||||||
|
if (f->val[2] != NA) {
|
||||||
|
char bbuf[BUFLEN];
|
||||||
|
sprintf(bbuf, " (bonus at %d)", f->val[2]);
|
||||||
|
strcat(buf, bbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (f->val[2] != NA) {
|
||||||
|
sprintf(buf, "^nIt can be used more effectively with at least %d %s.\n", f->val[2], getattrname(f->val[0]));
|
||||||
|
}
|
||||||
|
strcat(buf, "^n\n");
|
||||||
strncat(retbuf, buf, HUGEBUFLEN);
|
strncat(retbuf, buf, HUGEBUFLEN);
|
||||||
|
|
||||||
if (usable && isweapon(o)) {
|
if (usable && isweapon(o)) {
|
||||||
if (pctmod > 0) {
|
if (pctmod > 0) {
|
||||||
sprintf(buf, "^%dYour high %s will increase your %s with this weapon by %d%s.^n\n",
|
char howmuch[BUFLEN];
|
||||||
|
if ((f->val[0] == A_AGI) && (pctmod < 5)) {
|
||||||
|
sprintf(howmuch, "fractionally");
|
||||||
|
} else {
|
||||||
|
sprintf(howmuch, "by %d%s",
|
||||||
|
(f->val[0] == A_AGI) ? getaccuracynum(100 + pctmod) : pctmod,
|
||||||
|
(f->val[0] == A_AGI) ? "" : "%");
|
||||||
|
}
|
||||||
|
sprintf(buf, "^%dYour high %s will increase your %s with this weapon %s.^n\n",
|
||||||
C_GREEN,
|
C_GREEN,
|
||||||
getattrname(f->val[0]),
|
getattrname(f->val[0]),
|
||||||
(f->val[0] == A_AGI) ? "accuracy" : "damage",
|
(f->val[0] == A_AGI) ? "accuracy" : "damage",
|
||||||
(f->val[0] == A_AGI) ? getaccuracynum(100 + pctmod) : pctmod,
|
howmuch);
|
||||||
(f->val[0] == A_AGI) ? "" : "%");
|
|
||||||
strncat(retbuf, buf, HUGEBUFLEN);
|
strncat(retbuf, buf, HUGEBUFLEN);
|
||||||
} else if (pctmod < 0) {
|
} else if (pctmod < 0) {
|
||||||
sprintf(buf, "^%dYour low %s will decrease your %s with this weapon by %d%s.^n\n", C_BROWN,
|
char howmuch[BUFLEN];
|
||||||
|
if ((f->val[0] == A_AGI) && (pctmod > -5)) {
|
||||||
|
sprintf(howmuch, "fractionally");
|
||||||
|
} else {
|
||||||
|
sprintf(howmuch, "by %d%s",
|
||||||
|
(f->val[0] == A_AGI) ? getaccuracynum(100 + abs(pctmod)) : abs(pctmod),
|
||||||
|
(f->val[0] == A_AGI) ? "" : "%");
|
||||||
|
}
|
||||||
|
sprintf(buf, "^%dYour low %s will decrease your %s with this weapon %s.^n\n",
|
||||||
|
C_BROWN,
|
||||||
getattrname(f->val[0]),
|
getattrname(f->val[0]),
|
||||||
(f->val[0] == A_AGI) ? "accuracy" : "damage",
|
(f->val[0] == A_AGI) ? "accuracy" : "damage",
|
||||||
(f->val[0] == A_AGI) ? getaccuracynum(100 + abs(pctmod)) : abs(pctmod),
|
howmuch);
|
||||||
(f->val[0] == A_AGI) ? "" : "%");
|
|
||||||
strncat(retbuf, buf, HUGEBUFLEN);
|
strncat(retbuf, buf, HUGEBUFLEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10032,32 +10075,50 @@ void showlfarmour(lifeform_t *lf) {
|
||||||
outerob = getouterequippedob(lf, bp);
|
outerob = getouterequippedob(lf, bp);
|
||||||
if (o) {
|
if (o) {
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
|
int thisar = 0,showar = B_FALSE;
|
||||||
char obname[BUFLEN];
|
char obname[BUFLEN];
|
||||||
getobname(o, obname, o->amt);
|
|
||||||
sprintf(rhs, "%c - %s",o->letter, obname);
|
// two handed weapons.
|
||||||
|
if ((bp == BP_SECWEAPON ) && (o == arm[BP_WEAPON])) {
|
||||||
if (outerob && (outerob != o)) {
|
sprintf(rhs, "(using two-handed weapon)");
|
||||||
char outerobname[BUFLEN];
|
} else {
|
||||||
getobname(outerob, outerobname, outerob->amt);
|
getobname(o, obname, o->amt);
|
||||||
if (strlen(rhs)) strcat(rhs, " ");
|
sprintf(rhs, "%c - %s",o->letter, obname);
|
||||||
strcat(rhs, "(covered) ");
|
|
||||||
}
|
if (outerob && (outerob != o)) {
|
||||||
f = hasflag(o->flags, F_ARMOURRATING);
|
char outerobname[BUFLEN];
|
||||||
if (f && (f->val[0])) {
|
getobname(outerob, outerobname, outerob->amt);
|
||||||
char numbuf[BUFLENSMALL];
|
if (strlen(rhs)) strcat(rhs, " ");
|
||||||
int thisar;
|
strcat(rhs, "(covered) ");
|
||||||
thisar = f->val[0] + getobbonus(o, B_TRUE);
|
}
|
||||||
snprintf(numbuf, BUFLENSMALL, " ^g[AR:%d]^n",thisar);
|
|
||||||
strcat(rhs, numbuf);
|
|
||||||
}
|
f = hasflag(o->flags, F_ARMOURRATING);
|
||||||
f = hasflag(o->flags, F_OBHP);
|
if (f && (f->val[0])) {
|
||||||
if (f && (f->val[0] != f->val[1])) {
|
thisar += f->val[0];
|
||||||
char numbuf[BUFLENSMALL];
|
thisar += getobbonus(o, B_TRUE);
|
||||||
int pct;
|
showar = B_TRUE;
|
||||||
pct = (int)(((float)f->val[0] / (float)f->val[1]) * 100.0);
|
}
|
||||||
snprintf(numbuf, BUFLENSMALL, " ^w[%d%%]^n",pct);
|
f = hasflagvalknown(o->flags, F_EQUIPCONFER, F_ARBOOST, NA, NA, NULL);
|
||||||
strcat(rhs, numbuf);
|
if (f) {
|
||||||
}
|
thisar += f->val[1];
|
||||||
|
showar = B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showar) {
|
||||||
|
char numbuf[BUFLENSMALL];
|
||||||
|
snprintf(numbuf, BUFLENSMALL, " ^g[AR:%d]^n",thisar);
|
||||||
|
strcat(rhs, numbuf);
|
||||||
|
}
|
||||||
|
f = hasflag(o->flags, F_OBHP);
|
||||||
|
if (f && (f->val[0] != f->val[1])) {
|
||||||
|
char numbuf[BUFLENSMALL];
|
||||||
|
int pct;
|
||||||
|
pct = (int)(((float)f->val[0] / (float)f->val[1]) * 100.0);
|
||||||
|
snprintf(numbuf, BUFLENSMALL, " ^w[%d%%]^n",pct);
|
||||||
|
strcat(rhs, numbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
strcpy(rhs, "-");
|
strcpy(rhs, "-");
|
||||||
}
|
}
|
||||||
|
@ -10750,7 +10811,7 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
} else if (rating >= 0.25) {
|
} else if (rating >= 0.25) {
|
||||||
snprintf(buf, BUFLEN, "It would make a formidable opponent.");
|
snprintf(buf, BUFLEN, "It would make a formidable opponent.");
|
||||||
} else if (rating >= 0.125) {
|
} else if (rating >= 0.125) {
|
||||||
snprintf(buf, BUFLEN, "It is very dangerous to you.");
|
snprintf(buf, BUFLEN, "It is dangerous to you.");
|
||||||
} else {
|
} else {
|
||||||
snprintf(buf, BUFLEN, "It is EXTREMELY dangerous to you.");
|
snprintf(buf, BUFLEN, "It is EXTREMELY dangerous to you.");
|
||||||
}
|
}
|
||||||
|
@ -11595,6 +11656,12 @@ void showlfstats(lifeform_t *lf, int showall) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// show intrinsics
|
// show intrinsics
|
||||||
|
f = lfhasknownflag(lf, F_ARBOOST);
|
||||||
|
if (f) {
|
||||||
|
mvwprintw(mainwin, y, 0, "%s Armour Rating is being magically %s.", your(lf), (f->val[0] >= 0) ? "boosted" : "reduced");
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
|
||||||
f = lfhasknownflag(lf, F_ATTRSET);
|
f = lfhasknownflag(lf, F_ATTRSET);
|
||||||
if (f && (f->known)) {
|
if (f && (f->known)) {
|
||||||
mvwprintw(mainwin, y, 0, "%s %s has been modified.", your(lf), getattrname(f->val[0]));
|
mvwprintw(mainwin, y, 0, "%s %s has been modified.", your(lf), getattrname(f->val[0]));
|
||||||
|
|
266
lf.c
266
lf.c
|
@ -1191,10 +1191,8 @@ int cansee_real(lifeform_t *viewer, lifeform_t *viewee, int uselos) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// viewee hiding?
|
// viewee hiding?
|
||||||
if (lfhasflag(viewee, F_HIDING) && (viewee != viewer)) {
|
if (ishidingfrom(viewee, viewer)) {
|
||||||
if (!lfhasflagval(viewer, F_SPOTTED, viewee->id, NA, NA, NULL)) {
|
invisible = B_TRUE;
|
||||||
invisible = B_TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (invisible) {
|
if (invisible) {
|
||||||
|
@ -3705,7 +3703,7 @@ void enhanceskills(lifeform_t *lf) {
|
||||||
// pick randomly
|
// pick randomly
|
||||||
att = rnd(0,MAXATTS-1);
|
att = rnd(0,MAXATTS-1);
|
||||||
}
|
}
|
||||||
modattr(lf, att, 5);
|
modattr(lf, att, 2);
|
||||||
f->val[2]--;
|
f->val[2]--;
|
||||||
if (f->val[2] <= 0) {
|
if (f->val[2] <= 0) {
|
||||||
killflag(f);
|
killflag(f);
|
||||||
|
@ -4607,7 +4605,8 @@ void gainlevel(lifeform_t *lf, int autotrain) {
|
||||||
|
|
||||||
lf->newlevel++;
|
lf->newlevel++;
|
||||||
|
|
||||||
// stat gain (str etc) every 3 levels
|
// stat gain (str etc) every level
|
||||||
|
/*
|
||||||
if ((lf->newlevel % 3) == 0) {
|
if ((lf->newlevel % 3) == 0) {
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
f = lfhasflag(lf, F_STATGAINREADY);
|
f = lfhasflag(lf, F_STATGAINREADY);
|
||||||
|
@ -4618,6 +4617,14 @@ void gainlevel(lifeform_t *lf, int autotrain) {
|
||||||
f = addflag(lf->flags, F_STATGAINREADY, NA, NA, 1, NULL);
|
f = addflag(lf->flags, F_STATGAINREADY, NA, NA, 1, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
f = lfhasflag(lf, F_STATGAINREADY);
|
||||||
|
if (f) {
|
||||||
|
// TODO: should never happen now.
|
||||||
|
f->val[2]++;
|
||||||
|
} else {
|
||||||
|
f = addflag(lf->flags, F_STATGAINREADY, NA, NA, 1, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
// auto skill gain for monsters
|
// auto skill gain for monsters
|
||||||
if (!isplayer(lf)) {
|
if (!isplayer(lf)) {
|
||||||
|
@ -5173,26 +5180,25 @@ int getarmourrating(lifeform_t *lf, object_t **hitob, int *hitchance, enum BODYP
|
||||||
(*narms) = 0;
|
(*narms) = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getflags(lf->flags, retflag, &nretflags, F_ARMOURRATING, F_MAGICARMOUR, F_PHALANX, F_NONE);
|
getflags(lf->flags, retflag, &nretflags, F_ARBOOST, F_ARMOURRATING, F_MAGICARMOUR, F_PHALANX, F_NONE);
|
||||||
for (i = 0; i < nretflags; i++) {
|
for (i = 0; i < nretflags; i++) {
|
||||||
f = retflag[i];
|
f = retflag[i];
|
||||||
|
if (f->id == F_ARBOOST) {
|
||||||
|
ar += f->val[0];
|
||||||
|
}
|
||||||
if (f->id == F_ARMOURRATING) {
|
if (f->id == F_ARMOURRATING) {
|
||||||
ar += f->val[0];
|
ar += f->val[0];
|
||||||
|
/*
|
||||||
if (hitob) {
|
if (hitob) {
|
||||||
hitob[*narms] = NULL;
|
hitob[*narms] = NULL;
|
||||||
hitchance[*narms] = getbodyparthitchance(BP_BODY);
|
hitchance[*narms] = getbodyparthitchance(BP_BODY);
|
||||||
if (hitbp) hitbp[*narms] = BP_BODY;
|
if (hitbp) hitbp[*narms] = BP_BODY;
|
||||||
(*narms)++;
|
(*narms)++;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
if (f->id == F_MAGICARMOUR) {
|
if (f->id == F_MAGICARMOUR) {
|
||||||
ar += f->val[0];
|
ar += f->val[0];
|
||||||
if (hitob) {
|
|
||||||
hitob[*narms] = NULL;
|
|
||||||
hitchance[*narms] = getbodyparthitchance(BP_BODY);
|
|
||||||
if (hitbp) hitbp[*narms] = BP_BODY;
|
|
||||||
(*narms)++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (f->id == F_PHALANX) {
|
if (f->id == F_PHALANX) {
|
||||||
int dir;
|
int dir;
|
||||||
|
@ -5209,12 +5215,6 @@ int getarmourrating(lifeform_t *lf, object_t **hitob, int *hitchance, enum BODYP
|
||||||
}
|
}
|
||||||
if (nmatched >= f->val[2]) {
|
if (nmatched >= f->val[2]) {
|
||||||
ar += f->val[0];
|
ar += f->val[0];
|
||||||
if (hitob) {
|
|
||||||
hitob[*narms] = NULL;
|
|
||||||
hitchance[*narms] = getbodyparthitchance(BP_BODY);
|
|
||||||
if (hitbp) hitbp[*narms] = BP_BODY;
|
|
||||||
(*narms)++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5925,30 +5925,6 @@ int gethearingrange(lifeform_t *lf) {
|
||||||
return range;
|
return range;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gethidemodifier(lifeform_t *lf) {
|
|
||||||
int modifier = 0;
|
|
||||||
|
|
||||||
reason = E_OK;
|
|
||||||
if (!safetorest(lf)) {
|
|
||||||
if (getskill(lf, SK_STEALTH) == PR_EXPERT) {
|
|
||||||
// can still hide, but with a modifier
|
|
||||||
modifier = -4;
|
|
||||||
} else if (getskill(lf, SK_STEALTH) == PR_MASTER) {
|
|
||||||
// can still hide, but with a modifier
|
|
||||||
modifier = -2;
|
|
||||||
} else {
|
|
||||||
reason = E_IMPOSSIBLE;
|
|
||||||
modifier = -100; // special case
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// no stealth skill?
|
|
||||||
if (!getskill(lf, SK_STEALTH)) {
|
|
||||||
modifier = -5;
|
|
||||||
}
|
|
||||||
return modifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
int gethitdice(lifeform_t *lf) {
|
int gethitdice(lifeform_t *lf) {
|
||||||
if (isplayer(lf) || lfhasflag(lf, F_VARLEVEL)) {
|
if (isplayer(lf) || lfhasflag(lf, F_VARLEVEL)) {
|
||||||
return lf->level;
|
return lf->level;
|
||||||
|
@ -6560,7 +6536,7 @@ int getnoisedetails(lifeform_t *lf, enum NOISETYPE nid, char *heartext,
|
||||||
if (strlen(movetext)) {
|
if (strlen(movetext)) {
|
||||||
if (volume) *volume += getarmournoise(lf);
|
if (volume) *volume += getarmournoise(lf);
|
||||||
if (heartext) strcpy(heartext, movetext);
|
if (heartext) strcpy(heartext, movetext);
|
||||||
if (lfhasflag(lf, F_SNEAK)) {
|
if (lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
(*volume)--;
|
(*volume)--;
|
||||||
limit(volume, 1, NA);
|
limit(volume, 1, NA);
|
||||||
}
|
}
|
||||||
|
@ -6963,7 +6939,7 @@ int getmovespeed(lifeform_t *lf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// modifier?
|
// modifier?
|
||||||
getflags(lf->flags, retflag, &nretflags, F_FASTMOVE, F_FASTACTMOVE, F_INJURY, F_SLOWMOVE,
|
getflags(lf->flags, retflag, &nretflags, F_FASTMOVE, F_FASTACTMOVE, F_HIDING, F_INJURY, F_SLOWMOVE,
|
||||||
F_SLOWACTMOVE, F_SPRINTING, F_NONE);
|
F_SLOWACTMOVE, F_SPRINTING, F_NONE);
|
||||||
for (i = 0; i < nretflags; i++) {
|
for (i = 0; i < nretflags; i++) {
|
||||||
f = retflag[i];
|
f = retflag[i];
|
||||||
|
@ -6971,6 +6947,8 @@ int getmovespeed(lifeform_t *lf) {
|
||||||
speed += f->val[0];
|
speed += f->val[0];
|
||||||
} else if ((f->id == F_FASTMOVE) || (f->id == F_FASTACTMOVE)) {
|
} else if ((f->id == F_FASTMOVE) || (f->id == F_FASTACTMOVE)) {
|
||||||
speed -= f->val[0];
|
speed -= f->val[0];
|
||||||
|
} else if (f->id == F_HIDING) {
|
||||||
|
speed += 10;
|
||||||
} else if (f->id == F_INJURY) {
|
} else if (f->id == F_INJURY) {
|
||||||
if (!isairborne(lf)) {
|
if (!isairborne(lf)) {
|
||||||
switch (f->val[0]) {
|
switch (f->val[0]) {
|
||||||
|
@ -7012,7 +6990,8 @@ int getmovespeed(lifeform_t *lf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (lfhasflag(lf, F_SNEAK)) {
|
// caseful walking
|
||||||
|
if (lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
speed *= 2;
|
speed *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8500,6 +8479,9 @@ int getweapons(lifeform_t *lf, object_t **wep, flag_t **damflag, int *lastweapon
|
||||||
|
|
||||||
enum SKILLLEVEL getweaponskill(lifeform_t *lf, object_t *o) {
|
enum SKILLLEVEL getweaponskill(lifeform_t *lf, object_t *o) {
|
||||||
skill_t *sk;
|
skill_t *sk;
|
||||||
|
if (!o) {
|
||||||
|
return getskill(lf, SK_UNARMED);
|
||||||
|
}
|
||||||
sk = getobskill(o);
|
sk = getobskill(o);
|
||||||
if (sk) {
|
if (sk) {
|
||||||
enum SKILLLEVEL weplev;
|
enum SKILLLEVEL weplev;
|
||||||
|
@ -8958,6 +8940,11 @@ flag_t *giveskill(lifeform_t *lf, enum SKILL id) {
|
||||||
if (!newf) {
|
if (!newf) {
|
||||||
newf = addtempflag(lf->flags, F_CANWILL, OT_A_REPAIR, NA, NA, NULL, FROMSKILL);
|
newf = addtempflag(lf->flags, F_CANWILL, OT_A_REPAIR, NA, NA, NULL, FROMSKILL);
|
||||||
}
|
}
|
||||||
|
} else if (id == SK_STEALTH) {
|
||||||
|
newf = hasflagval(lf->flags, F_CANWILL, OT_A_HIDE, NA, NA, NULL);
|
||||||
|
if (!newf) {
|
||||||
|
newf = addtempflag(lf->flags, F_CANWILL, OT_A_HIDE, NA, NA, NULL, FROMSKILL);
|
||||||
|
}
|
||||||
} else if (id == SK_THIEVERY) {
|
} else if (id == SK_THIEVERY) {
|
||||||
newf = hasflagval(lf->flags, F_CANWILL, OT_A_STEAL, NA, NA, NULL);
|
newf = hasflagval(lf->flags, F_CANWILL, OT_A_STEAL, NA, NA, NULL);
|
||||||
if (!newf) {
|
if (!newf) {
|
||||||
|
@ -9075,10 +9062,6 @@ flag_t *giveskill(lifeform_t *lf, enum SKILL id) {
|
||||||
if (f->val[1] == PR_BEGINNER) {
|
if (f->val[1] == PR_BEGINNER) {
|
||||||
newf = addtempflag(lf->flags, F_CANWILL, OT_A_SHIELDBASH, NA, NA, NULL, FROMSKILL);
|
newf = addtempflag(lf->flags, F_CANWILL, OT_A_SHIELDBASH, NA, NA, NULL, FROMSKILL);
|
||||||
}
|
}
|
||||||
} else if (id == SK_STEALTH) {
|
|
||||||
if (f->val[1] == PR_BEGINNER) {
|
|
||||||
newf = addtempflag(lf->flags, F_CANWILL, OT_A_HIDE, NA, NA, NULL, FROMSKILL);
|
|
||||||
}
|
|
||||||
} else if (id == SK_TECHUSAGE) {
|
} else if (id == SK_TECHUSAGE) {
|
||||||
if (isplayer(lf)) {
|
if (isplayer(lf)) {
|
||||||
objecttype_t *ot;
|
objecttype_t *ot;
|
||||||
|
@ -10907,6 +10890,30 @@ int isgod(lifeform_t *lf) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ishelplessvictim(lifeform_t *victim, lifeform_t *attacker, enum HELPLESSTYPE *how) {
|
||||||
|
if (isfleeing(victim)) {
|
||||||
|
if (how) *how = HL_FLEEING;
|
||||||
|
return B_TRUE;
|
||||||
|
} else if (!cansee(victim, attacker)) {
|
||||||
|
if (how) *how = HL_CANTSEE;
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
if (how) *how = HL_NONE;
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
flag_t *ishidingfrom(lifeform_t *hider, lifeform_t *seeker) {
|
||||||
|
if (hider != seeker) {
|
||||||
|
flag_t *f;
|
||||||
|
f = lfhasflag(hider, F_HIDING);
|
||||||
|
if (f && !lfhasflagval(seeker, F_SPOTTED, hider->id, NA, NA, NULL)) {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// can you try to recruit this lf?
|
// can you try to recruit this lf?
|
||||||
int ishirable(lifeform_t *lf) {
|
int ishirable(lifeform_t *lf) {
|
||||||
if (!isplayer(lf) && ispeaceful(lf)) {
|
if (!isplayer(lf) && ispeaceful(lf)) {
|
||||||
|
@ -13000,51 +13007,103 @@ int meetsallattreqs(lifeform_t *lf, object_t *o) {
|
||||||
// if you don't meet it, return why not in 'reason'
|
// if you don't meet it, return why not in 'reason'
|
||||||
int meetsattreq(lifeform_t *lf, flag_t *f, object_t *o, int *pctmod) {
|
int meetsattreq(lifeform_t *lf, flag_t *f, object_t *o, int *pctmod) {
|
||||||
enum ATTRIB att;
|
enum ATTRIB att;
|
||||||
int valneeded;
|
int valneeded,valbonus;
|
||||||
int myval;
|
int myval;
|
||||||
int diff;
|
int neededdiff,bonusdiff;
|
||||||
|
int dopenaltycheck = B_TRUE, dobonuscheck = B_FALSE;
|
||||||
int scaleamt;
|
int scaleamt;
|
||||||
|
enum {
|
||||||
|
NONE=0,
|
||||||
|
PENALTY=1,
|
||||||
|
BONUS = 2,
|
||||||
|
} bonorpen = NONE;
|
||||||
|
|
||||||
|
|
||||||
|
if (pctmod) {
|
||||||
|
*pctmod = 0;
|
||||||
|
}
|
||||||
|
|
||||||
att = f->val[0];
|
att = f->val[0];
|
||||||
valneeded = f->val[1];
|
valneeded = f->val[1];
|
||||||
scaleamt = f->val[2];
|
if (valneeded == NA) {
|
||||||
if (scaleamt == NA) scaleamt = 10;
|
dopenaltycheck = B_FALSE;
|
||||||
|
} else {
|
||||||
|
dopenaltycheck = B_TRUE;
|
||||||
|
}
|
||||||
|
valbonus = f->val[2];
|
||||||
|
if (valbonus == NA) {
|
||||||
|
dobonuscheck = B_FALSE;
|
||||||
|
} else {
|
||||||
|
dobonuscheck = B_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen(f->text)) {
|
||||||
|
scaleamt = atoi(f->text);
|
||||||
|
} else {
|
||||||
|
scaleamt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// modify for masterwork
|
// modify for masterwork
|
||||||
if (o) {
|
if (o) {
|
||||||
if (hasflag(o->flags, F_MASTERWORK)) {
|
if (hasflag(o->flags, F_MASTERWORK)) {
|
||||||
valneeded -= 3;
|
if (dopenaltycheck) {
|
||||||
if (valneeded < 0) valneeded = 0;
|
valneeded -= 10;
|
||||||
|
if (valneeded < 0) valneeded = 0;
|
||||||
|
}
|
||||||
|
if (dobonuscheck) {
|
||||||
|
valbonus -= 10;
|
||||||
|
if (valbonus < 0) valbonus = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
myval = getattr(lf, att);
|
myval = getattr(lf, att);
|
||||||
diff = myval - valneeded;
|
|
||||||
limit(&diff,-20, 20);
|
|
||||||
|
|
||||||
// for firearms or scaleamt == 0, you MUST meet the requirement.
|
if (dopenaltycheck) {
|
||||||
if (diff < 0) {
|
neededdiff = myval - valneeded;
|
||||||
|
limit(&neededdiff,-20, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dobonuscheck) {
|
||||||
|
bonusdiff = myval - valbonus;
|
||||||
|
// for this one, just meeting it gives you once "scaleamt" worth of bonus
|
||||||
|
if (bonusdiff >= 0) bonusdiff += 10;
|
||||||
|
limit(&bonusdiff,-20, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dopenaltycheck && (neededdiff < 0)) {
|
||||||
|
// penalty?
|
||||||
|
// for firearms, armour or scaleamt == 0, you MUST meet the requirement.
|
||||||
if (scaleamt == 0) {
|
if (scaleamt == 0) {
|
||||||
diff = -20;
|
neededdiff = -20;
|
||||||
} else if (o && isarmour(o)) {
|
} else if (o && isarmour(o)) {
|
||||||
diff = -20;
|
neededdiff = -20;
|
||||||
} else if (o && isfirearm(o)) {
|
} else if (o && isfirearm(o)) {
|
||||||
diff = -20;
|
neededdiff = -20;
|
||||||
}
|
}
|
||||||
} else if (diff > 0) {
|
bonorpen = PENALTY;
|
||||||
|
} else if (dobonuscheck && (bonusdiff > 0)) {
|
||||||
|
// maybe a bonus?
|
||||||
// no bonusses if you're unskilled
|
// no bonusses if you're unskilled
|
||||||
if (o && !getweaponskill(lf, o)) {
|
if (o && !getweaponskill(lf, o)) {
|
||||||
diff = 0;
|
bonusdiff = 0;
|
||||||
|
} else {
|
||||||
|
bonorpen = BONUS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pctmod) {
|
if (scaleamt && pctmod) {
|
||||||
// for each 5 points you are over/under the requirement, adjust "scaleamt" percent.
|
// for each 10 points you are over/under the requirement, adjust "scaleamt" percent.
|
||||||
*pctmod = (diff/10) * scaleamt;
|
if (bonorpen == PENALTY) {
|
||||||
|
*pctmod = (neededdiff/10) * scaleamt;
|
||||||
|
} else if (bonorpen == BONUS) {
|
||||||
|
*pctmod = (bonusdiff/10) * scaleamt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// too low?
|
// too low?
|
||||||
if (diff <= -4) {
|
if ((bonorpen == PENALTY) && (neededdiff <= -20)) {
|
||||||
switch (att) {
|
switch (att) {
|
||||||
case A_AGI:
|
case A_AGI:
|
||||||
reason = E_LOWDEX;
|
reason = E_LOWDEX;
|
||||||
|
@ -14416,6 +14475,21 @@ void setskillused(lifeform_t *lf, enum SKILL skid) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void spot_hiding_lf(lifeform_t *lf, lifeform_t *hider) {
|
||||||
|
addflag(lf->flags, F_SPOTTED, hider->id, NA, NA, NULL);
|
||||||
|
// announce
|
||||||
|
if (isplayer(lf)) {
|
||||||
|
char hidername[BUFLEN];
|
||||||
|
getlfname(hider, hidername);
|
||||||
|
msg("^wYou spot %s!", hidername);
|
||||||
|
} else if (isplayer(hider) && cansee(hider, lf)) {
|
||||||
|
char lfname[BUFLEN];
|
||||||
|
getlfname(lf, lfname);
|
||||||
|
msg("You think %s has spotted you!", lfname);
|
||||||
|
}
|
||||||
|
practice(lf, SK_PERCEPTION, 1);
|
||||||
|
}
|
||||||
|
|
||||||
int startclimbing(lifeform_t *lf) {
|
int startclimbing(lifeform_t *lf) {
|
||||||
cell_t *where;
|
cell_t *where;
|
||||||
char lfname[BUFLEN];
|
char lfname[BUFLEN];
|
||||||
|
@ -15814,12 +15888,14 @@ int real_skillcheck(lifeform_t *lf, enum CHECKTYPE ct, int diff, int mod, int *r
|
||||||
othermod += (getstatmod(lf, A_AGI) / 15);
|
othermod += (getstatmod(lf, A_AGI) / 15);
|
||||||
}
|
}
|
||||||
} else if (ct == SC_STEALTH) {
|
} else if (ct == SC_STEALTH) {
|
||||||
|
/*
|
||||||
if (attrib > 0) {
|
if (attrib > 0) {
|
||||||
if (lfhasflag(lf, F_SNEAK)) {
|
if (lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
othermod += 3;
|
othermod += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isairborne(lf)) {
|
*/
|
||||||
|
if (!islit(lf->cell)) {
|
||||||
othermod += 5;
|
othermod += 5;
|
||||||
}
|
}
|
||||||
} else if (ct == SC_WILL) {
|
} else if (ct == SC_WILL) {
|
||||||
|
@ -16543,8 +16619,8 @@ void startlfturn(lifeform_t *lf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// they are hiding, and you haven't spotted them yet
|
// they are hiding, and you haven't spotted them yet
|
||||||
f = lfhasflag(l, F_HIDING);
|
f = ishidingfrom(l, lf);
|
||||||
if (f && !lfhasflagval(lf, F_SPOTTED, l->id, NA, NA, NULL) && !isinbattle(lf)) {
|
if (f && !isinbattle(lf)) {
|
||||||
// can you see their cell?
|
// can you see their cell?
|
||||||
if (!lfhasflag(lf, F_TRAINING) && haslos(lf, l->cell)) {
|
if (!lfhasflag(lf, F_TRAINING) && haslos(lf, l->cell)) {
|
||||||
int bonus = 0;
|
int bonus = 0;
|
||||||
|
@ -16560,18 +16636,7 @@ void startlfturn(lifeform_t *lf) {
|
||||||
|
|
||||||
// did you spot them?
|
// did you spot them?
|
||||||
if (skillcheckvs(lf, SC_SEARCH, bonus, l, SC_STEALTH, f->val[0])) {
|
if (skillcheckvs(lf, SC_SEARCH, bonus, l, SC_STEALTH, f->val[0])) {
|
||||||
addflag(lf->flags, F_SPOTTED, l->id, NA, NA, NULL);
|
spot_hiding_lf(lf, l);
|
||||||
// announce
|
|
||||||
if (isplayer(lf)) {
|
|
||||||
char lname[BUFLEN];
|
|
||||||
getlfname(l, lname);
|
|
||||||
msg("^wYou spot %s!", lname);
|
|
||||||
} else if (isplayer(l) && cansee(l, lf)) {
|
|
||||||
char lfname[BUFLEN];
|
|
||||||
getlfname(lf, lfname);
|
|
||||||
msg("You think %s has spotted you!", lfname);
|
|
||||||
}
|
|
||||||
practice(lf, SK_PERCEPTION, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16861,10 +16926,9 @@ void startlfturn(lifeform_t *lf) {
|
||||||
}
|
}
|
||||||
if (isdead(lf)) return;
|
if (isdead(lf)) return;
|
||||||
|
|
||||||
|
|
||||||
// effects for/on your own flags
|
// effects for/on your own flags
|
||||||
getflags(lf->flags, retflag, &nretflags, F_ATTACHEDTO, F_CANWILL, F_CHARMEDBY, F_CLIMBING, F_FEIGNFOOLEDBY,F_FLEEFROM,
|
getflags(lf->flags, retflag, &nretflags, F_ATTACHEDTO, F_CANWILL, F_CHARMEDBY, F_CLIMBING, F_FEIGNFOOLEDBY,F_FLEEFROM,
|
||||||
F_GRABBEDBY, F_GRABBING, F_GUNTARGET, F_BOOSTSPELL, F_FEIGNINGDEATH, F_HPDRAIN, F_INJURY,
|
F_GRABBEDBY, F_GRABBING, F_HIDING, F_BOOSTSPELL, F_FEIGNINGDEATH, F_HPDRAIN, F_INJURY,
|
||||||
F_NOFLEEFROM, F_PETOF, F_SPOTTED, F_STABBEDBY, F_STRIKETOKO, F_TARGETCELL, F_TARGETLF, F_NONE);
|
F_NOFLEEFROM, F_PETOF, F_SPOTTED, F_STABBEDBY, F_STRIKETOKO, F_TARGETCELL, F_TARGETLF, F_NONE);
|
||||||
for (i = 0; i < nretflags; i++) {
|
for (i = 0; i < nretflags; i++) {
|
||||||
f = retflag[i];
|
f = retflag[i];
|
||||||
|
@ -16892,6 +16956,14 @@ void startlfturn(lifeform_t *lf) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (f->id == F_HIDING) {
|
||||||
|
if (lfhasflag(lf, F_SPRINTING) || lfhasflag(lf, F_PRODUCESLIGHT)) {
|
||||||
|
killflag(f);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (f->id == F_GRABBEDBY) {
|
if (f->id == F_GRABBEDBY) {
|
||||||
lifeform_t *lf2;
|
lifeform_t *lf2;
|
||||||
lf2 = findlf(NULL, f->val[0]);
|
lf2 = findlf(NULL, f->val[0]);
|
||||||
|
@ -19057,6 +19129,9 @@ int wear(lifeform_t *lf, object_t *o) {
|
||||||
} // end while !canwear
|
} // end while !canwear
|
||||||
} // end for each required bodypart
|
} // end for each required bodypart
|
||||||
|
|
||||||
|
// at this point, we're going to try to wear it...
|
||||||
|
killflagsofid(lf->flags, F_HIDING);
|
||||||
|
|
||||||
// some checks first...
|
// some checks first...
|
||||||
if (touch(lf, o)) {
|
if (touch(lf, o)) {
|
||||||
taketime(lf, getactspeed(lf));
|
taketime(lf, getactspeed(lf));
|
||||||
|
@ -19266,8 +19341,9 @@ int weild(lifeform_t *lf, object_t *o) {
|
||||||
else ch = 'n';
|
else ch = 'n';
|
||||||
}
|
}
|
||||||
if (ch == 'y') {
|
if (ch == 'y') {
|
||||||
// make sure we are skiled in 2nd weapon
|
// make sure we are skilled in 2nd weapon
|
||||||
if (getweaponskill(lf, o)) {
|
// (weilding null (nothing) there is always okay too.
|
||||||
|
if (!o || getweaponskill(lf, o)) {
|
||||||
enum BODYPART temp;
|
enum BODYPART temp;
|
||||||
// swap locations.
|
// swap locations.
|
||||||
temp = weildloc;
|
temp = weildloc;
|
||||||
|
@ -19482,6 +19558,18 @@ int weild(lifeform_t *lf, object_t *o) {
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int willbackstab(lifeform_t *lf, lifeform_t *victim, object_t *wep) {
|
||||||
|
if (getraceclass(victim) == RC_PLANT) return B_FALSE;
|
||||||
|
|
||||||
|
if (wep && (getdamtype(wep) == DT_PIERCE) && // stabbing weapon
|
||||||
|
getskill(lf, SK_BACKSTAB) && // able to backstab
|
||||||
|
!lfhasflagval(victim, F_STABBEDBY, lf->id, NA, NA, NULL) && // haven't stabbed them already
|
||||||
|
ishelplessvictim(victim, lf, NULL)) { // victim can't see us or is fleeing
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
return B_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
int willbleedfrom(lifeform_t *lf, enum BODYPART bp) {
|
int willbleedfrom(lifeform_t *lf, enum BODYPART bp) {
|
||||||
object_t *o;
|
object_t *o;
|
||||||
o = getequippedob(lf->pack, bp);
|
o = getequippedob(lf->pack, bp);
|
||||||
|
|
5
lf.h
5
lf.h
|
@ -152,7 +152,6 @@ lifeform_t *getguntarget(lifeform_t *lf);
|
||||||
int getguntargetid(lifeform_t *lf);
|
int getguntargetid(lifeform_t *lf);
|
||||||
//int gethealtime(lifeform_t *lf);
|
//int gethealtime(lifeform_t *lf);
|
||||||
int gethearingrange(lifeform_t *lf);
|
int gethearingrange(lifeform_t *lf);
|
||||||
int gethidemodifier(lifeform_t *lf);
|
|
||||||
int gethitdice(lifeform_t *lf);
|
int gethitdice(lifeform_t *lf);
|
||||||
int gethitdicerace(race_t *r);
|
int gethitdicerace(race_t *r);
|
||||||
int gethitstokill(lifeform_t *lf, lifeform_t *victim, int useevasion, int usearmour);
|
int gethitstokill(lifeform_t *lf, lifeform_t *victim, int useevasion, int usearmour);
|
||||||
|
@ -301,6 +300,8 @@ int isfriendly(lifeform_t *lf);
|
||||||
int isfullyhealed(lifeform_t *lf);
|
int isfullyhealed(lifeform_t *lf);
|
||||||
int isgenius(lifeform_t *lf);
|
int isgenius(lifeform_t *lf);
|
||||||
int isgod(lifeform_t *lf);
|
int isgod(lifeform_t *lf);
|
||||||
|
int ishelplessvictim(lifeform_t *victim, lifeform_t *attacker, enum HELPLESSTYPE *how);
|
||||||
|
flag_t *ishidingfrom(lifeform_t *hider, lifeform_t *seeker);
|
||||||
int ishirable(lifeform_t *lf);
|
int ishirable(lifeform_t *lf);
|
||||||
int isimmobile(lifeform_t *lf);
|
int isimmobile(lifeform_t *lf);
|
||||||
flag_t *isimmuneto(flagpile_t *fp, enum DAMTYPE dt, int onlytemp);
|
flag_t *isimmuneto(flagpile_t *fp, enum DAMTYPE dt, int onlytemp);
|
||||||
|
@ -377,6 +378,7 @@ void relinklf(lifeform_t *src, map_t *dst);
|
||||||
int resizelf(lifeform_t *lf, enum LFSIZE newsize);
|
int resizelf(lifeform_t *lf, enum LFSIZE newsize);
|
||||||
int rest(lifeform_t *lf, int onpurpose);
|
int rest(lifeform_t *lf, int onpurpose);
|
||||||
void setskillused(lifeform_t *lf, enum SKILL skid);
|
void setskillused(lifeform_t *lf, enum SKILL skid);
|
||||||
|
void spot_hiding_lf(lifeform_t *lf, lifeform_t *hider);
|
||||||
int startclimbing(lifeform_t *lf);
|
int startclimbing(lifeform_t *lf);
|
||||||
int startresting(lifeform_t *lf, int willtrain);
|
int startresting(lifeform_t *lf, int willtrain);
|
||||||
int rollattr(enum ATTRBRACKET bracket);
|
int rollattr(enum ATTRBRACKET bracket);
|
||||||
|
@ -435,6 +437,7 @@ int validateraces(void);
|
||||||
void wakeup(lifeform_t *lf, int howmuch);
|
void wakeup(lifeform_t *lf, int howmuch);
|
||||||
int wear(lifeform_t *lf, object_t *o);
|
int wear(lifeform_t *lf, object_t *o);
|
||||||
int weild(lifeform_t *lf, object_t *o);
|
int weild(lifeform_t *lf, object_t *o);
|
||||||
|
int willbackstab(lifeform_t *lf, lifeform_t *victim, object_t *wep);
|
||||||
int willbleedfrom(lifeform_t *lf, enum BODYPART bp);
|
int willbleedfrom(lifeform_t *lf, enum BODYPART bp);
|
||||||
int willburden(lifeform_t *lf, object_t *o, int howmany);
|
int willburden(lifeform_t *lf, object_t *o, int howmany);
|
||||||
int willeatlf(lifeform_t *eater, lifeform_t *eatee);
|
int willeatlf(lifeform_t *eater, lifeform_t *eatee);
|
||||||
|
|
39
map.c
39
map.c
|
@ -191,6 +191,7 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
flagpile_t *wantflags = NULL;
|
flagpile_t *wantflags = NULL;
|
||||||
enum JOB wantjob = J_NONE;
|
enum JOB wantjob = J_NONE;
|
||||||
|
|
||||||
|
|
||||||
if (nadded) *nadded = 0;
|
if (nadded) *nadded = 0;
|
||||||
|
|
||||||
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
||||||
|
@ -200,6 +201,8 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wantflags = addflagpile(NULL, NULL);
|
||||||
|
|
||||||
if (rid != R_SPECIFIED) {
|
if (rid != R_SPECIFIED) {
|
||||||
if (rid == R_RANDOM) {
|
if (rid == R_RANDOM) {
|
||||||
r = getrandomrace(c, NA);
|
r = getrandomrace(c, NA);
|
||||||
|
@ -207,8 +210,6 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
r = findrace(rid);
|
r = findrace(rid);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// get params
|
|
||||||
wantflags = addflagpile(NULL, NULL);
|
|
||||||
|
|
||||||
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
||||||
rid = parserace(racename, wantflags, &wantjob);
|
rid = parserace(racename, wantflags, &wantjob);
|
||||||
|
@ -221,6 +222,7 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!r) {
|
if (!r) {
|
||||||
|
killflagpile(wantflags);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,6 +245,7 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
// if so, move it here, then exit.
|
// if so, move it here, then exit.
|
||||||
if (lf) {
|
if (lf) {
|
||||||
teleportto(lf, c, B_FALSE);
|
teleportto(lf, c, B_FALSE);
|
||||||
|
killflagpile(wantflags);
|
||||||
return lf;
|
return lf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -291,27 +294,30 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
// note: if we start off hidden, we have no hide penalty.
|
// note: if we start off hidden, we have no hide penalty.
|
||||||
// this is so we can have monsters which start hidden, but
|
// this is so we can have monsters which start hidden, but
|
||||||
// don't have the 'hide' skill.
|
// don't have the 'hide' skill.
|
||||||
addflag(lf->flags, F_HIDING, 0, NA, NA, NULL);
|
addflag(wantflags, F_HIDING, 0, NA, NA, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!lfhasflag(lf, F_HIDING) && !lfhasflag(lf, F_DEAF) && cansleep(lf) ) {
|
if (!lfhasflag(lf, F_HIDING) && !lfhasflag(lf, F_DEAF) && cansleep(lf) ) {
|
||||||
// if not already asleep...
|
// if not already asleep...
|
||||||
if (wantflags && hasflag(wantflags, F_ASLEEP)) {
|
if (hasflag(wantflags, F_ASLEEP)) {
|
||||||
} else {
|
} else {
|
||||||
int asleepchance = 70;
|
int asleepchance = 70,willsleep = B_FALSE;
|
||||||
f = lfhasflag(lf, F_STARTASLEEPPCT);
|
f = lfhasflag(lf, F_STARTASLEEPPCT);
|
||||||
if (f) {
|
if (f) {
|
||||||
asleepchance = f->val[0];
|
asleepchance = f->val[0];
|
||||||
}
|
}
|
||||||
// TODO: base this on the time, and whether monster is nocturnal
|
// TODO: base this on the time, and whether monster is nocturnal
|
||||||
if (pctchance(asleepchance)) {
|
if (pctchance(asleepchance)) {
|
||||||
addflag(lf->flags, F_ASLEEP, NA, ST_ASLEEP, NA, NULL);
|
willsleep = B_TRUE;
|
||||||
} else {
|
} else {
|
||||||
// might be asleep based on time.
|
// might be asleep based on time.
|
||||||
if (issleepingtimefor(lf)) {
|
if (issleepingtimefor(lf)) {
|
||||||
addflag(lf->flags, F_ASLEEP, NA, ST_ASLEEP, NA, NULL);
|
willsleep = B_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (willsleep) {
|
||||||
|
addflag(wantflags, F_ASLEEP, NA, ST_ASLEEP, NA, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finalisemonster(lf, NULL, wantflags);
|
finalisemonster(lf, NULL, wantflags);
|
||||||
|
@ -443,9 +449,7 @@ lifeform_t *addmonster(cell_t *c, enum RACE rid, char *racename, int jobok, int
|
||||||
|
|
||||||
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
||||||
// free mem
|
// free mem
|
||||||
if (wantflags) {
|
killflagpile(wantflags);
|
||||||
killflagpile(wantflags);
|
|
||||||
}
|
|
||||||
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
//if (gamemode == GM_GAMESTARTED) checkallflags(player->cell->map); // debugging
|
||||||
|
|
||||||
if (db) dbtimeend("finished addmonster");
|
if (db) dbtimeend("finished addmonster");
|
||||||
|
@ -5021,18 +5025,22 @@ void finalisemonster(lifeform_t *lf, lifeform_t *leader, flagpile_t *wantflags)
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
if (leader) {
|
if (leader) {
|
||||||
// if leader is asleep, minions will also be asleep
|
// if leader is asleep, minions will also be asleep
|
||||||
if (lfhasflag(leader, F_ASLEEP) || (wantflags && hasflag(wantflags, F_ASLEEP))) {
|
if (lfhasflag(leader, F_ASLEEP)) {
|
||||||
addflag(lf->flags, F_ASLEEP, NA, ST_ASLEEP, NA, NULL);
|
if (wantflags && hasflag(wantflags, F_ASLEEP)) {
|
||||||
|
} else {
|
||||||
|
addflag(wantflags, F_ASLEEP, NA, ST_ASLEEP, NA, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((lf->cell->map->illumination != IL_FULLLIT) && !lfhasflag(lf, F_SEEINDARK)) {
|
if ((lf->cell->map->illumination != IL_FULLLIT) && !lfhasflag(lf, F_SEEINDARK)) {
|
||||||
if ((getraceclass(lf) != RC_HUMANOID) && pctchance(75)) {
|
if ((getraceclass(lf) != RC_HUMANOID) && pctchance(75)) {
|
||||||
addflag(lf->flags, F_SEEINDARK, rnd(3,5), NA, NA, NULL);
|
addflag(wantflags, F_SEEINDARK, rnd(3,5), NA, NA, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// minions never have certain flags.
|
// minions never have certain flags.
|
||||||
killflagsofid(lf->flags, F_DEMANDSBRIBE);
|
killflagsofid(lf->flags, F_DEMANDSBRIBE);
|
||||||
|
killflagsofid(wantflags, F_DEMANDSBRIBE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// random monster behaviours
|
// random monster behaviours
|
||||||
|
@ -5079,6 +5087,11 @@ void finalisemonster(lifeform_t *lf, lifeform_t *leader, flagpile_t *wantflags)
|
||||||
if (wantflags) {
|
if (wantflags) {
|
||||||
copyflags(lf->flags, wantflags, NA);
|
copyflags(lf->flags, wantflags, NA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lfhasflag(lf, F_ASLEEP)) {
|
||||||
|
killflagsofid(lf->flags, F_FLYING);
|
||||||
|
killflagsofid(lf->flags, F_HIDING);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
celltype_t *findcelltype(enum CELLTYPE cid) {
|
celltype_t *findcelltype(enum CELLTYPE cid) {
|
||||||
|
|
30
move.c
30
move.c
|
@ -1220,7 +1220,9 @@ int movelf(lifeform_t *lf, cell_t *newcell) {
|
||||||
|
|
||||||
didmsg = moveeffects(lf);
|
didmsg = moveeffects(lf);
|
||||||
|
|
||||||
killflagsofid(lf->flags, F_HIDING);
|
if (lfhasflag(lf, F_HIDING) && (getskill(lf, SK_STEALTH) < PR_BEGINNER)) {
|
||||||
|
killflagsofid(lf->flags, F_HIDING);
|
||||||
|
}
|
||||||
|
|
||||||
// remove grabs (but not attached things)
|
// remove grabs (but not attached things)
|
||||||
// Note: only remove this from the person _being grabbed_.
|
// Note: only remove this from the person _being grabbed_.
|
||||||
|
@ -1292,7 +1294,7 @@ int movelf(lifeform_t *lf, cell_t *newcell) {
|
||||||
}
|
}
|
||||||
|
|
||||||
f = hasflag(o->flags, F_SHARP);
|
f = hasflag(o->flags, F_SHARP);
|
||||||
if (f && hasbp(lf, BP_FEET) && !lfhasflag(lf, F_SNEAK)) {
|
if (f && hasbp(lf, BP_FEET) && !lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
object_t *boots;
|
object_t *boots;
|
||||||
// has boots on?
|
// has boots on?
|
||||||
boots = getequippedob(lf->pack, BP_FEET);
|
boots = getequippedob(lf->pack, BP_FEET);
|
||||||
|
@ -1312,7 +1314,7 @@ int movelf(lifeform_t *lf, cell_t *newcell) {
|
||||||
}
|
}
|
||||||
|
|
||||||
f = hasflag(o->flags, F_CRUSHABLE);
|
f = hasflag(o->flags, F_CRUSHABLE);
|
||||||
if (f && !lfhasflag(lf, F_SNEAK)) {
|
if (f && !lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
enum LFSIZE crushsize;
|
enum LFSIZE crushsize;
|
||||||
crushsize = f->val[0];
|
crushsize = f->val[0];
|
||||||
|
|
||||||
|
@ -1537,6 +1539,7 @@ int moveto(lifeform_t *lf, cell_t *newcell, int onpurpose, int dontclearmsg) {
|
||||||
char lfname[BUFLEN];
|
char lfname[BUFLEN];
|
||||||
int didmsg;
|
int didmsg;
|
||||||
int predark = B_FALSE,postdark = B_FALSE;
|
int predark = B_FALSE,postdark = B_FALSE;
|
||||||
|
int willmakenoise = B_TRUE;
|
||||||
|
|
||||||
// for the player, moving means that we don't regenerate stamina.
|
// for the player, moving means that we don't regenerate stamina.
|
||||||
// this is the equivilant of losing the same amount of stamina which we
|
// this is the equivilant of losing the same amount of stamina which we
|
||||||
|
@ -1631,9 +1634,16 @@ int moveto(lifeform_t *lf, cell_t *newcell, int onpurpose, int dontclearmsg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// make some noise
|
// maybe make some noise
|
||||||
// (stealth check to avoid this)
|
// (stealth check to avoid this)
|
||||||
if (!skillcheck(lf, SC_STEALTH, 20, 0)) {
|
willmakenoise = B_TRUE;
|
||||||
|
if (lfhasflag(lf, F_HIDING)) {
|
||||||
|
if (skillcheck(lf, SC_STEALTH, 20, isairborne(lf) ? 5 : 0)) {
|
||||||
|
willmakenoise = B_FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (willmakenoise) {
|
||||||
if (isairborne(lf)) {
|
if (isairborne(lf)) {
|
||||||
makenoise(lf, N_FLY);
|
makenoise(lf, N_FLY);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1646,7 +1656,7 @@ int moveto(lifeform_t *lf, cell_t *newcell, int onpurpose, int dontclearmsg) {
|
||||||
int slip;
|
int slip;
|
||||||
object_t *slipob;
|
object_t *slipob;
|
||||||
|
|
||||||
if (!lfhasflag(lf, F_SNEAK)) {
|
if (!lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
slip = getslipperyness(newcell, &slipob);
|
slip = getslipperyness(newcell, &slipob);
|
||||||
if (slip && !skillcheck(lf, SC_SLIP, slip, 0)) {
|
if (slip && !skillcheck(lf, SC_SLIP, slip, 0)) {
|
||||||
slipon(lf, slipob);
|
slipon(lf, slipob);
|
||||||
|
@ -2123,9 +2133,9 @@ int trysneak(lifeform_t *lf, int dir) {
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addflag(lf->flags, F_SNEAK, NA, NA, NA, NULL);
|
addflag(lf->flags, F_CAREFULMOVE, NA, NA, NA, NULL);
|
||||||
trymove(lf, dir, B_TRUE, B_FALSE);
|
trymove(lf, dir, B_TRUE, B_FALSE);
|
||||||
killflagsofid(lf->flags, F_SNEAK);
|
killflagsofid(lf->flags, F_CAREFULMOVE);
|
||||||
|
|
||||||
return B_FALSE;
|
return B_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -2364,7 +2374,7 @@ int initiatemove(lifeform_t *lf, cell_t *cell, int onpurpose, int *didmsg) {
|
||||||
int slip;
|
int slip;
|
||||||
object_t *slipob;
|
object_t *slipob;
|
||||||
|
|
||||||
if (!lfhasflag(lf, F_SNEAK)) {
|
if (!lfhasflag(lf, F_CAREFULMOVE)) {
|
||||||
slip = getslipperyness(lf->cell, &slipob);
|
slip = getslipperyness(lf->cell, &slipob);
|
||||||
if (slip && !skillcheck(lf, SC_SLIP, slip, 0)) {
|
if (slip && !skillcheck(lf, SC_SLIP, slip, 0)) {
|
||||||
if (!slipon(lf, slipob)) {
|
if (!slipon(lf, slipob)) {
|
||||||
|
@ -2641,7 +2651,7 @@ int trymove(lifeform_t *lf, int dir, int onpurpose, int strafe) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// warn before moving onto dangerous cells
|
// warn before moving onto dangerous cells
|
||||||
if (onpurpose && isplayer(lf) && !lfhasflag(lf, F_SNEAK) && !rndmove) {
|
if (onpurpose && isplayer(lf) && !lfhasflag(lf, F_CAREFULMOVE) && !rndmove) {
|
||||||
char ques[BUFLEN];
|
char ques[BUFLEN];
|
||||||
char ch;
|
char ch;
|
||||||
if (cell && celldangerous(lf, cell, B_TRUE, &errcode)) {
|
if (cell && celldangerous(lf, cell, B_TRUE, &errcode)) {
|
||||||
|
|
59
objects.c
59
objects.c
|
@ -1183,7 +1183,7 @@ object_t *addobject(obpile_t *where, char *name, int canstack, int wantlinkholes
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
need to do the below for _all_ objects added!
|
need to do the below for _all_ objects added (searchfor"each object added")!
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < nadded; i++) {
|
for (i = 0; i < nadded; i++) {
|
||||||
cell_t *obloc;
|
cell_t *obloc;
|
||||||
|
@ -1313,6 +1313,21 @@ object_t *addobject(obpile_t *where, char *name, int canstack, int wantlinkholes
|
||||||
turnon(NULL, o);
|
turnon(NULL, o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// firearms usually come loaded
|
||||||
|
if (o && isfirearm(o)) {
|
||||||
|
objecttype_t *ammotype;
|
||||||
|
flag_t *ammoflag;
|
||||||
|
int ammoamt;
|
||||||
|
ammoflag = hasflag(o->flags, F_AMMOCAPACITY);
|
||||||
|
ammoamt = rnd(0,ammoflag->val[0]); // note: can be 0
|
||||||
|
ammotype = getrandomammofor(o);
|
||||||
|
if (ammotype && (ammoamt > 0)) {
|
||||||
|
char ammostring[BUFLEN];
|
||||||
|
sprintf(ammostring, "%d %s",ammoamt,ammotype->name);
|
||||||
|
addob(o->contents, ammostring);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// fill in armour size
|
// fill in armour size
|
||||||
if (o && hasflag(o->flags, F_MULTISIZE)) {
|
if (o && hasflag(o->flags, F_MULTISIZE)) {
|
||||||
if (wantarmsize == SZ_ANY) {
|
if (wantarmsize == SZ_ANY) {
|
||||||
|
@ -4368,7 +4383,17 @@ enum DEPTH getobdepth(object_t *o, lifeform_t *lf) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *getobdesc(object_t *o, char *buf) {
|
char *getobdesc(object_t *o, char *buf) {
|
||||||
if (isknown(o)) {
|
int blind = B_FALSE;
|
||||||
|
if (gamemode == GM_GAMESTARTED) {
|
||||||
|
if (o->pile->owner == player) {
|
||||||
|
if (!haslos(player, player->cell) || isblind(player)) {
|
||||||
|
if (!hasflag(o->flags, F_FEELTEXT)) {
|
||||||
|
blind = B_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isknown(o) && !blind) {
|
||||||
if (o->type->id == OT_CORPSE) {
|
if (o->type->id == OT_CORPSE) {
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
f = hasflag(o->flags, F_CORPSEOF);
|
f = hasflag(o->flags, F_CORPSEOF);
|
||||||
|
@ -4433,6 +4458,7 @@ char *getobdesc(object_t *o, char *buf) {
|
||||||
snprintf(buf, BUFLEN, "%s", o->type->desc);
|
snprintf(buf, BUFLEN, "%s", o->type->desc);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// show generic description
|
||||||
objecttype_t *ot = NULL;
|
objecttype_t *ot = NULL;
|
||||||
flag_t *f;
|
flag_t *f;
|
||||||
f = hasflag(o->flags, F_HASHIDDENNAME);
|
f = hasflag(o->flags, F_HASHIDDENNAME);
|
||||||
|
@ -10177,6 +10203,9 @@ int readsomething(lifeform_t *lf, object_t *o) {
|
||||||
readtime = SPEED_READ;
|
readtime = SPEED_READ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stopsprinting(lf);
|
||||||
|
killflagsofid(lf->flags, F_HIDING);
|
||||||
|
|
||||||
taketime(lf, readtime);
|
taketime(lf, readtime);
|
||||||
|
|
||||||
if (isplayer(lf)) maketried(o->type->id);
|
if (isplayer(lf)) maketried(o->type->id);
|
||||||
|
@ -12202,20 +12231,6 @@ int real_fireat(lifeform_t *thrower, object_t *o, int amt, cell_t *where, int sp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
f = hasflag(o->flags, F_TANGLEMISSILE);
|
|
||||||
if (f) {
|
|
||||||
missiledam = 0;
|
|
||||||
if (isairborne(target) || !skillcheck(target, SC_SLIP, f->val[0], 0)) {
|
|
||||||
fall(target, NULL, B_TRUE);
|
|
||||||
taketime(target, getactspeed(target)*2);
|
|
||||||
|
|
||||||
if (f->val[1] != NA) {
|
|
||||||
addflag(o->flags, F_RESTRICTMOVEMENT, f->val[1], f->val[2], B_FALSE, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (thrower) {
|
if (thrower) {
|
||||||
if (firearm) {
|
if (firearm) {
|
||||||
practice(thrower, SK_THROWING, 1);
|
practice(thrower, SK_THROWING, 1);
|
||||||
|
@ -12867,7 +12882,7 @@ void trapeffects(object_t *trapob, enum OBTYPE oid, cell_t *c) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// easier to avoid if you're sneaking
|
// easier to avoid if you're sneaking
|
||||||
if (lfhasflag(lf, F_SNEAK)) mod += 5;
|
if (lfhasflag(lf, F_CAREFULMOVE)) mod += 5;
|
||||||
mod += getskill(lf, SK_TRAPS);
|
mod += getskill(lf, SK_TRAPS);
|
||||||
avoided = skillcheck(lf, ct, f->val[2], mod);
|
avoided = skillcheck(lf, ct, f->val[2], mod);
|
||||||
}
|
}
|
||||||
|
@ -13361,11 +13376,6 @@ int validateobs(void) {
|
||||||
goterror = B_TRUE;
|
goterror = B_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f = hasflag(ot->flags, F_ATTREQ);
|
|
||||||
if (f && (f->val[2] == NA)) {
|
|
||||||
printf("ERROR in object '%s' - f_attreq missing scale factor.\n", ot->name);
|
|
||||||
goterror = B_TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (hasflagval(ot->flags, F_PICKLOCKS, NA, B_BLUNTONFAIL, NA, NULL) && hasflag(ot->flags, F_STACKABLE)) {
|
if (hasflagval(ot->flags, F_PICKLOCKS, NA, B_BLUNTONFAIL, NA, NULL) && hasflag(ot->flags, F_STACKABLE)) {
|
||||||
printf("ERROR in object '%s' - cannot have F_BLUNTONFAIL on stackable objects.\n", ot->name);
|
printf("ERROR in object '%s' - cannot have F_BLUNTONFAIL on stackable objects.\n", ot->name);
|
||||||
|
@ -13435,6 +13445,11 @@ int validateobs(void) {
|
||||||
printf("ERROR in object '%s' - has both dietext & noobdietext.\n", ot->name);
|
printf("ERROR in object '%s' - has both dietext & noobdietext.\n", ot->name);
|
||||||
goterror = B_TRUE;
|
goterror = B_TRUE;
|
||||||
}
|
}
|
||||||
|
f = hasflag(ot->flags, F_ATTREQ);
|
||||||
|
if (f && (f->val[2] != NA) && !strlen(f->text)) {
|
||||||
|
printf("ERROR in object '%s' - has val2(BONUS_AT) but no ->text.\n", ot->name);
|
||||||
|
goterror = B_TRUE;
|
||||||
|
}
|
||||||
f = hasflag(ot->flags, F_THEREISHERE);
|
f = hasflag(ot->flags, F_THEREISHERE);
|
||||||
if (f && !strlen(f->text)) {
|
if (f && !strlen(f->text)) {
|
||||||
printf("ERROR in object '%s' - has f_thereishere but no ->text.\n", ot->name);
|
printf("ERROR in object '%s' - has f_thereishere but no ->text.\n", ot->name);
|
||||||
|
|
26
spell.c
26
spell.c
|
@ -1803,6 +1803,7 @@ int abilityeffects(lifeform_t *user, enum OBTYPE abilid, cell_t *targcell, lifef
|
||||||
|
|
||||||
addflag(user->flags, F_SPRINTING, B_TRUE, NA, NA, NULL);
|
addflag(user->flags, F_SPRINTING, B_TRUE, NA, NA, NULL);
|
||||||
practice(user, SK_ATHLETICS, 1);
|
practice(user, SK_ATHLETICS, 1);
|
||||||
|
killflagsofid(user->flags, F_HIDING);
|
||||||
} else if (abilid == OT_A_STINGACID) {
|
} else if (abilid == OT_A_STINGACID) {
|
||||||
validateabillf(user, abilid, &target);
|
validateabillf(user, abilid, &target);
|
||||||
if (!target) return B_TRUE;
|
if (!target) return B_TRUE;
|
||||||
|
@ -3221,24 +3222,33 @@ int abilityeffects(lifeform_t *user, enum OBTYPE abilid, cell_t *targcell, lifef
|
||||||
killflag(f2);
|
killflag(f2);
|
||||||
killflag(f3);
|
killflag(f3);
|
||||||
} else if (abilid == OT_A_HIDE) {
|
} else if (abilid == OT_A_HIDE) {
|
||||||
int penalty = 0;
|
|
||||||
lifeform_t *lf;
|
lifeform_t *lf;
|
||||||
|
|
||||||
if (isswimming(user) && !lfhasflag(user, F_AQUATIC)) {
|
if (isswimming(user) && !lfhasflag(user, F_AQUATIC)) {
|
||||||
if (isplayer(user)) msg("You can't hide while swimming!");
|
if (isplayer(user)) msg("You can't hide while swimming!");
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
|
if (lfhasflag(user, F_PRODUCESLIGHT)) {
|
||||||
if (lfhasflag(user, F_HIDING)) {
|
if (isplayer(user)) msg("You can't hide while producing light!");
|
||||||
if (isplayer(user)) msg("You are already hiding!");
|
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
penalty = gethidemodifier(user);
|
if (lfhasflag(user, F_HIDING)) {
|
||||||
if (reason == E_IMPOSSIBLE) {
|
// stop hiding.
|
||||||
if (isplayer(user)) msg("You can't hide - there are monsters around!");
|
killflagsofid(user->flags, F_HIDING);
|
||||||
|
taketime(user, getactspeed(user));
|
||||||
return B_TRUE;
|
return B_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isplayer(user)) {
|
||||||
|
if (!safetorest(user)) {
|
||||||
|
if (getattrbracket(getattr(user, A_WIS), A_WIS, NULL) >= AT_GTAVERAGE) {
|
||||||
|
if (askchar("Really try to hide while in view of enemies?", "yn", "n", B_TRUE, B_FALSE) != 'y') {
|
||||||
|
return B_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (getskill(user, SK_STEALTH) < PR_EXPERT) {
|
if (getskill(user, SK_STEALTH) < PR_EXPERT) {
|
||||||
// anyone who saw you start hiding can still see you
|
// anyone who saw you start hiding can still see you
|
||||||
for (lf = user->cell->map->lf ; lf ; lf = lf->next) {
|
for (lf = user->cell->map->lf ; lf ; lf = lf->next) {
|
||||||
|
@ -3250,7 +3260,7 @@ int abilityeffects(lifeform_t *user, enum OBTYPE abilid, cell_t *targcell, lifef
|
||||||
}
|
}
|
||||||
stopsprinting(user);
|
stopsprinting(user);
|
||||||
// start hiding
|
// start hiding
|
||||||
addflag(user->flags, F_HIDING, penalty, NA, NA, NULL);
|
addflag(user->flags, F_HIDING, 0, NA, NA, NULL);
|
||||||
|
|
||||||
// even though it's untrainable - this will
|
// even though it's untrainable - this will
|
||||||
// still mark it as used.
|
// still mark it as used.
|
||||||
|
|
49
text.c
49
text.c
|
@ -89,12 +89,35 @@ enum COLOUR chartocol(char ch) {
|
||||||
char *construct_hit_string(lifeform_t *lf, lifeform_t *victim, char *attackername, char *victimname, char *victimbpname, object_t *wep, enum DAMTYPE damtype, int dam, int maxhp, int idx, int backstab, int critical, int fatal, int isunarmed, char *retbuf) {
|
char *construct_hit_string(lifeform_t *lf, lifeform_t *victim, char *attackername, char *victimname, char *victimbpname, object_t *wep, enum DAMTYPE damtype, int dam, int maxhp, int idx, int backstab, int critical, int fatal, int isunarmed, char *retbuf) {
|
||||||
int usecrittext = B_FALSE;
|
int usecrittext = B_FALSE;
|
||||||
char wepname[BUFLEN],buf[BUFLEN];
|
char wepname[BUFLEN],buf[BUFLEN];
|
||||||
|
char locvictimname[BUFLEN];
|
||||||
|
enum HELPLESSTYPE helpless;
|
||||||
|
|
||||||
// default
|
// default
|
||||||
strcpy(retbuf, "");
|
strcpy(retbuf, "");
|
||||||
|
|
||||||
getobname(wep, wepname, 1);
|
getobname(wep, wepname, 1);
|
||||||
|
|
||||||
|
// modify victimname if required
|
||||||
|
//if (helpless && !isbehind(lf, victim)) {
|
||||||
|
if (!isplayer(victim) && ishelplessvictim(victim, lf, &helpless)) {
|
||||||
|
char *vn;
|
||||||
|
// strip "the" from "the xxx"
|
||||||
|
vn = strdup(victimname);
|
||||||
|
vn = strrep(vn, "the ", "", NULL);
|
||||||
|
switch (helpless) {
|
||||||
|
case HL_CANTSEE:
|
||||||
|
sprintf(locvictimname, "the helpless %s", vn);
|
||||||
|
break;
|
||||||
|
case HL_FLEEING:
|
||||||
|
sprintf(locvictimname, "the fleeing %s", vn);
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
free(vn);
|
||||||
|
} else {
|
||||||
|
strcpy(locvictimname, victimname);
|
||||||
|
}
|
||||||
|
|
||||||
// initial hit...
|
// initial hit...
|
||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
if (critical && !fatal) usecrittext = B_TRUE;
|
if (critical && !fatal) usecrittext = B_TRUE;
|
||||||
|
@ -151,7 +174,7 @@ char *construct_hit_string(lifeform_t *lf, lifeform_t *victim, char *attackernam
|
||||||
}
|
}
|
||||||
snprintf(retbuf, BUFLEN, "^%dYou %s%s %s%s%s%s", col,
|
snprintf(retbuf, BUFLEN, "^%dYou %s%s %s%s%s%s", col,
|
||||||
usecrittext ? "critically " : "", verb,
|
usecrittext ? "critically " : "", verb,
|
||||||
usecrittext ? victimbpname : victimname, withwep,extradambuf,
|
usecrittext ? victimbpname : locvictimname, withwep,extradambuf,
|
||||||
(fatal || backstab) ? "!" : ".");
|
(fatal || backstab) ? "!" : ".");
|
||||||
|
|
||||||
if (needfree) {
|
if (needfree) {
|
||||||
|
@ -191,7 +214,7 @@ char *construct_hit_string(lifeform_t *lf, lifeform_t *victim, char *attackernam
|
||||||
snprintf(retbuf, BUFLEN, "^%d%s %s%s%s %s%s%s.", col, buf,
|
snprintf(retbuf, BUFLEN, "^%d%s %s%s%s %s%s%s.", col, buf,
|
||||||
usecrittext ? "critically " : "", attackverb,
|
usecrittext ? "critically " : "", attackverb,
|
||||||
needses(attackverb) ? "es" : "s",
|
needses(attackverb) ? "es" : "s",
|
||||||
usecrittext ? victimbpname : victimname,withwep, nodamstr);
|
usecrittext ? victimbpname : locvictimname,withwep, nodamstr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { // follow-up weapon damage (ie from a flaming sword etc)
|
} else { // follow-up weapon damage (ie from a flaming sword etc)
|
||||||
|
@ -199,49 +222,49 @@ char *construct_hit_string(lifeform_t *lf, lifeform_t *victim, char *attackernam
|
||||||
if (dam == 0) { // ineffectual
|
if (dam == 0) { // ineffectual
|
||||||
switch (damtype) {
|
switch (damtype) {
|
||||||
case DT_COLD:
|
case DT_COLD:
|
||||||
snprintf(retbuf, BUFLEN, "^n%s %s cold.", victimname, isplayer(victim) ? "don't feel" : "doesn't look");
|
snprintf(retbuf, BUFLEN, "^n%s %s cold.", locvictimname, isplayer(victim) ? "don't feel" : "doesn't look");
|
||||||
break;
|
break;
|
||||||
case DT_HEAT:
|
case DT_HEAT:
|
||||||
case DT_FIRE:
|
case DT_FIRE:
|
||||||
snprintf(retbuf, BUFLEN, "^n%s %s hot.", victimname, isplayer(victim) ? "don't feel" : "doesn't look");
|
snprintf(retbuf, BUFLEN, "^n%s %s hot.", locvictimname, isplayer(victim) ? "don't feel" : "doesn't look");
|
||||||
break;
|
break;
|
||||||
case DT_MAGIC:
|
case DT_MAGIC:
|
||||||
strcpy(retbuf, "");
|
strcpy(retbuf, "");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(retbuf, BUFLEN, "^n%s shrug%s off the effects.", victimname, isplayer(victim) ? "" : "s");
|
snprintf(retbuf, BUFLEN, "^n%s shrug%s off the effects.", locvictimname, isplayer(victim) ? "" : "s");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (fatal) { // fatal
|
} else if (fatal) { // fatal
|
||||||
switch (damtype) {
|
switch (damtype) {
|
||||||
case DT_COLD:
|
case DT_COLD:
|
||||||
snprintf(retbuf, BUFLEN, "^%c%s %s chilled to the bone!", getlfcol(victim, CC_BAD), victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^%c%s %s chilled to the bone!", getlfcol(victim, CC_BAD), locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
case DT_HEAT:
|
case DT_HEAT:
|
||||||
case DT_FIRE:
|
case DT_FIRE:
|
||||||
snprintf(retbuf, BUFLEN, "^%c%s %s incinerated!", getlfcol(victim, CC_BAD), victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^%c%s %s incinerated!", getlfcol(victim, CC_BAD), locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
case DT_MAGIC:
|
case DT_MAGIC:
|
||||||
snprintf(retbuf, BUFLEN, "^%c%s %s blasted with magic!", getlfcol(victim, CC_BAD), victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^%c%s %s blasted with magic!", getlfcol(victim, CC_BAD), locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(retbuf, BUFLEN, "^%c%s %s killed!", getlfcol(victim, CC_BAD), victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^%c%s %s killed!", getlfcol(victim, CC_BAD), locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else { // normal
|
} else { // normal
|
||||||
switch (damtype) {
|
switch (damtype) {
|
||||||
case DT_COLD:
|
case DT_COLD:
|
||||||
snprintf(retbuf, BUFLEN, "^n%s %s chilled!", victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^n%s %s chilled!", locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
case DT_HEAT:
|
case DT_HEAT:
|
||||||
case DT_FIRE:
|
case DT_FIRE:
|
||||||
snprintf(retbuf, BUFLEN, "^n%s %s burned!", victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^n%s %s burned!", locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
case DT_MAGIC:
|
case DT_MAGIC:
|
||||||
snprintf(retbuf, BUFLEN, "^nMagical energy sears %s!", victimname);
|
snprintf(retbuf, BUFLEN, "^nMagical energy sears %s!", locvictimname);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(retbuf, BUFLEN, "^n%s %s hurt!", victimname, is(victim));
|
snprintf(retbuf, BUFLEN, "^n%s %s hurt!", locvictimname, is(victim));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,5 +22,6 @@ goesin:dungeon
|
||||||
mayrotate
|
mayrotate
|
||||||
rarity:vrare
|
rarity:vrare
|
||||||
maintainedge
|
maintainedge
|
||||||
|
entertext:You enter a small bazaar of shops.
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue