- [+] "tried on xxx" not showing up properly in \. fixed.

- [+] new swords:
    - [+] baselard
    - [+] shortsword
    - [+] epee
    - [+] cutlass
    - [+] sabre
    - [+] repier is now a long blade.
    - [+] broadsword
    - [+] falchion
    - [+] claymore
    - [+] zweihander
- [+] bug: job description missing skill elements when there are <4 on
      the last line.
- [+] don't adjust object's armourrating based on its conditin.
- [+] increase TR of dryad
- [+] reduce range of 'chill'
- [+] potion of poison should give venom poisoning, not food poisoning
- [+] robots should be immune to charm
This commit is contained in:
Rob Pearce 2012-03-16 05:42:18 +00:00
parent 45c5fd0365
commit ed98c0b735
7 changed files with 586 additions and 80 deletions

602
data.c

File diff suppressed because it is too large Load Diff

Binary file not shown.

14
defs.h
View File

@ -348,7 +348,7 @@ enum SHOPACTION {
#define BUFLENSMALL 64 #define BUFLENSMALL 64
#define BUFLEN 256 #define BUFLEN 256
#define BIGBUFLEN 512 #define BIGBUFLEN 512
#define HUGEBUFLEN 2048 #define HUGEBUFLEN 4092
#define MAXPNAMELEN 12 // max player name length #define MAXPNAMELEN 12 // max player name length
// file i/o // file i/o
#define DATADIR "data" #define DATADIR "data"
@ -2049,27 +2049,34 @@ enum OBTYPE {
OT_GREATAXE, OT_GREATAXE,
OT_WARAXE, OT_WARAXE,
// short blades // short blades
OT_BASELARD,
OT_COMBATKNIFE, OT_COMBATKNIFE,
OT_DAGGER, OT_DAGGER,
OT_FORK, OT_FORK,
OT_GLADIUS,
OT_KNIFE, OT_KNIFE,
OT_MEATCLEAVER, OT_MEATCLEAVER,
OT_ORNDAGGER, OT_ORNDAGGER,
OT_QUICKBLADE, OT_QUICKBLADE,
OT_RAPIER, OT_RAPIER,
OT_SAI, OT_SAI,
OT_SABRE,
OT_SHORTSWORD, OT_SHORTSWORD,
OT_STEAKKNIFE, OT_STEAKKNIFE,
OT_SICKLE, OT_SICKLE,
// long swords // long swords
OT_BASTARDSWORD, OT_BASTARDSWORD,
OT_BROADSWORD,
OT_CLAYMORE,
OT_CUTLASS,
OT_EPEE,
OT_FALCHION, OT_FALCHION,
OT_GREATSWORD, OT_GREATSWORD,
OT_KATANA, OT_KATANA,
OT_LONGSWORD, OT_LONGSWORD,
OT_ORNSWORD, OT_ORNSWORD,
OT_SCIMITAR, OT_SCIMITAR,
OT_CUTLASS, OT_ZWEIHANDER,
// polearms // polearms
OT_GLAIVE, OT_GLAIVE,
OT_GUISARME, OT_GUISARME,
@ -2491,7 +2498,7 @@ enum FLAG {
// after you have tried this object. // after you have tried this object.
F_POURABLE, // can pour? F_POURABLE, // can pour?
F_PUSHABLE, // can push this object F_PUSHABLE, // can push this object
F_PICKLOCKS, // can pick locks? val0=% change, F_PICKLOCKS, // can pick locks? val0=% chance,
// val1=b_false, f_dieonfail, f_bluntonfail // val1=b_false, f_dieonfail, f_bluntonfail
F_LOCKABLE,// this object can be locked F_LOCKABLE,// this object can be locked
F_CANBEDIFFMAT, // v0 is different material id which this ob could be F_CANBEDIFFMAT, // v0 is different material id which this ob could be
@ -3652,6 +3659,7 @@ enum ERROR {
// charm failure reasons // charm failure reasons
// LOWIQ // LOWIQ
E_UNDEAD, E_UNDEAD,
E_ROBOT,
E_DRUNK, E_DRUNK,
// //
E_NOBP, E_NOBP,

27
io.c
View File

@ -4964,7 +4964,11 @@ void doknowledgelist(void) {
if (k->known == B_KNOWN) { if (k->known == B_KNOWN) {
mvwprintw(mainwin, y, 0, " %-25s (%s)",ot->name, k->hiddenname); mvwprintw(mainwin, y, 0, " %-25s (%s)",ot->name, k->hiddenname);
} else { // ie. tried } else { // ie. tried
mvwprintw(mainwin, y, 0, " %-25s (%s)","???", k->hiddenname); mvwprintw(mainwin, y, 0, " %-25s (%s%s","???", k->hiddenname, strlen(k->triedon) ? "," : ")");
if (strlen(k->triedon)) {
y++;
mvwprintw(mainwin, y, 0, " %-25s tried on %s)"," ", k->triedon);
}
} }
y++; y++;
@ -5261,7 +5265,6 @@ char *makedesc_job(job_t *j, char *retbuf) {
flag_t *retflag[MAXCANDIDATES]; flag_t *retflag[MAXCANDIDATES];
int nretflags,i; int nretflags,i;
skill_t *sk; skill_t *sk;
char buf[BUFLEN];
enum ATTRIB a; enum ATTRIB a;
int count = 0; int count = 0;
flag_t *f; flag_t *f;
@ -5338,6 +5341,10 @@ char *makedesc_job(job_t *j, char *retbuf) {
strcat(retbuf, "STARTING SKILLS\n"); strcat(retbuf, "STARTING SKILLS\n");
count = 0; count = 0;
strcpy(thisline, ""); strcpy(thisline, "");
if (j->id == J_PIRATE) {
dblog("xxx");
}
for (sk = firstskill ; sk ; sk = sk->next) { for (sk = firstskill ; sk ; sk = sk->next) {
char lev[BUFLEN]; char lev[BUFLEN];
enum SKILLLEVEL slev = PR_INEPT; enum SKILLLEVEL slev = PR_INEPT;
@ -5354,17 +5361,10 @@ char *makedesc_job(job_t *j, char *retbuf) {
case PR_EXPERT: strcpy(lev, "Exp"); break; case PR_EXPERT: strcpy(lev, "Exp"); break;
case PR_MASTER: strcpy(lev, "Mst"); break; case PR_MASTER: strcpy(lev, "Mst"); break;
} }
/*
} else {
f = hasflagval(j->flags, F_CANLEARN, sk->id, NA, NA, NULL);
if (f) {
slev = PR_INEPT;
strcpy(lev, "---");
}
*/
} }
if (strlen(lev)) { if (strlen(lev)) {
char *p; char *p;
char buf[BUFLEN];
//char bufpad[BUFLEN]; //char bufpad[BUFLEN];
count++; count++;
sprintf(buf, "%13s:^%d%s^n ",sk->shortname, getskilllevelcolour(slev), lev); sprintf(buf, "%13s:^%d%s^n ",sk->shortname, getskilllevelcolour(slev), lev);
@ -5389,6 +5389,13 @@ char *makedesc_job(job_t *j, char *retbuf) {
} // end if strlen(lev) } // end if strlen(lev)
} // end foreach skill } // end foreach skill
// print out any remaining lines
if (count != 0) {
strcat(thisline, "\n");
strcat(retbuf, thisline);
strcpy(thisline, "");
}
// specialisations // specialisations
getflags(j->flags, retflag, &nretflags, F_CANHAVESUBJOB, F_NONE); getflags(j->flags, retflag, &nretflags, F_CANHAVESUBJOB, F_NONE);
strcpy(thisline, ""); strcpy(thisline, "");

6
lf.c
View File

@ -6456,7 +6456,7 @@ int getarmourrating(lifeform_t *lf, object_t **hitob, int *hitchance, enum BODYP
} }
// adjust for condition // adjust for condition
thisar = pctof(getobhppct(o), thisar); //thisar = pctof(getobhppct(o), thisar);
ar += thisar; ar += thisar;
@ -12130,6 +12130,10 @@ int ischarmable(lifeform_t *lf) {
reason = E_UNDEAD; reason = E_UNDEAD;
return B_FALSE; return B_FALSE;
} }
if (getraceclass(lf) == RC_ROBOT) {
reason = E_ROBOT;
return B_FALSE;
}
if (hasflag(lf->flags, F_DRUNK)) { if (hasflag(lf->flags, F_DRUNK)) {
reason = E_DRUNK; reason = E_DRUNK;
return B_FALSE; return B_FALSE;

View File

@ -10478,7 +10478,7 @@ void potioneffects(lifeform_t *lf, enum OBTYPE oid, object_t *o, enum BLESSTYPE
} }
break; break;
case OT_POT_POISON: case OT_POT_POISON:
poison(lf, rnd(10,20), P_FOOD, 1, "a potion of poison", R_NONE); poison(lf, rnd(10,20), P_VENOM, 1, "a potion of poison", R_NONE);
break; break;
case OT_POT_POLYMORPH: case OT_POT_POLYMORPH:
if (potblessed == B_BLESSED) { if (potblessed == B_BLESSED) {

15
spell.c
View File

@ -4573,6 +4573,9 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
case E_UNDEAD: case E_UNDEAD:
msg("The undead are immune to charming."); msg("The undead are immune to charming.");
break; break;
case E_ROBOT:
msg("Robots are immune to charming.");
break;
case E_ALREADYUSING: case E_ALREADYUSING:
msg("%s is already charmed by another!", targetname); msg("%s is already charmed by another!", targetname);
break; break;
@ -4649,6 +4652,12 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
case E_UNDEAD: case E_UNDEAD:
msg("The undead are immune to charming."); msg("The undead are immune to charming.");
break; break;
case E_ROBOT:
msg("Robots are immune to charming.");
break;
case E_ALREADYUSING:
msg("%s is already charmed by another!", targetname);
break;
default: default:
msg("You cannot charm %s.", targetname); msg("You cannot charm %s.", targetname);
break; break;
@ -7954,6 +7963,12 @@ int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_
case E_UNDEAD: case E_UNDEAD:
msg("The undead are immune to possession."); msg("The undead are immune to possession.");
break; break;
case E_ROBOT:
msg("Robots are immune to charming.");
break;
case E_ALREADYUSING:
msg("%s is already charmed by another!", targetname);
break;
default: default:
msg("You cannot possesss %s.", targname); msg("You cannot possesss %s.", targname);
break; break;