-/* $NetBSD: store.c,v 1.6 1997/10/18 20:03:52 christos Exp $ */
+/* $NetBSD: store.c,v 1.17 2021/05/02 12:50:45 rillig Exp $ */
/*-
* Copyright (c) 1988 The Regents of the University of California.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
#if 0
static char sccsid[] = "@(#)store.c 5.4 (Berkeley) 5/13/91";
#else
-__RCSID("$NetBSD: store.c,v 1.6 1997/10/18 20:03:52 christos Exp $");
+__RCSID("$NetBSD: store.c,v 1.17 2021/05/02 12:50:45 rillig Exp $");
#endif
#endif /* not lint */
#include "header.h"
#include "extern.h"
-static void handsfull __P((void));
-static void outofstock __P((void));
-static void nogold __P((void));
-static void dnditem __P((int));
-static void banktitle __P((char *));
-static void otradhead __P((void));
+static void handsfull(void);
+static void outofstock(void);
+static void nogold(void);
+static void dnditem(int);
+static void banktitle(const char *);
+static void obanksub(void);
+static void otradhead(void);
+static void cnsitm(void);
static int dndcount = 0, dnditm = 0;
+/* number of items in the dnd inventory table */
+#define MAXITM 83
+
/* this is the data for the stuff in the dnd store */
-int maxitm = 83; /* number of items in the dnd inventory table */
struct _itm itm[90] = {
/*
* cost iven name iven arg how gp
/*
function for the dnd store
*/
-void
-dnd_2hed()
+static void
+dnd_2hed(void)
{
lprcat("Welcome to the Larn Thrift Shoppe. We stock many items explorers find useful\n");
lprcat(" in their adventures. Feel free to browse to your hearts content.\n");
lprcat("Also be advised, if you break 'em, you pay for 'em.");
}
-void
-dnd_hed()
+static void
+dnd_hed(void)
{
int i;
for (i = dnditm; i < 26 + dnditm; i++)
}
static void
-handsfull()
+handsfull(void)
{
lprcat("\nYou can't carry anything more!");
lflush();
}
static void
-outofstock()
+outofstock(void)
{
lprcat("\nSorry, but we are out of that item.");
lflush();
nap(2200);
}
-static void
-nogold()
+static void
+nogold(void)
{
lprcat("\nYou don't have enough gold to pay for that!");
lflush();
}
void
-dndstore()
+dndstore(void)
{
int i;
dnditm = 0;
if (outstanding_taxes > 0) {
lprcat("\n\nThe Larn Revenue Service has ordered us to not do business with tax evaders.\n");
beep();
- lprintf("They have also told us that you owe %d gp in back taxes, and as we must\n", (long) outstanding_taxes);
+ lprintf("They have also told us that you owe %ld gp in back taxes, and as we must\n", (long) outstanding_taxes);
lprcat("comply with the law, we cannot serve you at this time. Soo Sorry.\n");
cursors();
lprcat("\nPress ");
lflush();
i = 0;
while (i != '\33')
- i = getchar();
+ i = ttgetch();
drawscreen();
nosignal = 0; /* enable signals */
return;
dnd_hed();
while (1) {
cursor(59, 18);
- lprintf("%d gold pieces", (long) c[GOLD]);
+ lprintf("%ld gold pieces", (long) c[GOLD]);
cltoeoln();
cl_dn(1, 20); /* erase to eod */
lprcat("\nEnter your transaction [");
lprcat(" to leave]? ");
i = 0;
while ((i < 'a' || i > 'z') && (i != ' ') && (i != '\33') && (i != 12))
- i = getchar();
+ i = ttgetch();
if (i == 12) {
clear();
dnd_2hed();
return;
} else if (i == ' ') {
cl_dn(1, 4);
- if ((dnditm += 26) >= maxitm)
+ if ((dnditm += 26) >= MAXITM)
dnditm = 0;
dnd_hed();
} else { /* buy something */
lprc(i);/* echo the byte */
i += dnditm - 'a';
- if (i >= maxitm)
+ if (i >= MAXITM)
outofstock();
else if (itm[i].qty <= 0)
outofstock();
to print the item list; used in dndstore() enter with the index into itm
*/
static void
-dnditem(i)
- int i;
+dnditem(int i)
{
int j, k;
- if (i >= maxitm)
+ if (i >= MAXITM)
return;
cursor((j = (i & 1) * 40 + 1), (k = ((i % 26) >> 1) + 5));
if (itm[i].qty == 0) {
} else
lprintf("%s", objectname[itm[i].obj]);
cursor(j + 31, k);
- lprintf("%6d", (long) (itm[i].price * 10));
+ lprintf("%6ld", (long) (itm[i].price * 10));
}
for the college of larn
*/
u_char course[26] = {0}; /* the list of courses taken */
-char coursetime[] = {10, 15, 10, 20, 10, 10, 10, 5};
+static char coursetime[] = {10, 15, 10, 20, 10, 10, 10, 5};
/*
function to display the header info for the school
*/
-void
-sch_hed()
+static void
+sch_hed(void)
{
clear();
lprcat("The College of Larn offers the exciting opportunity of higher education to\n");
}
void
-oschool()
+oschool(void)
{
int i;
long time_used;
sch_hed();
while (1) {
cursor(57, 18);
- lprintf("%d gold pieces. ", (long) c[GOLD]);
+ lprintf("%ld gold pieces. ", (long) c[GOLD]);
cursors();
lprcat("\nWhat is your choice [");
standout("escape");
yrepcount = 0;
i = 0;
while ((i < 'a' || i > 'h') && (i != '\33') && (i != 12))
- i = getchar();
+ i = ttgetch();
if (i == 12) {
sch_hed();
continue;
int lasttime = 0; /* last time he was in bank */
void
-obank()
+obank(void)
{
banktitle(" Welcome to the First National Bank of Larn.");
}
void
-obank2()
+obank2(void)
{
banktitle("Welcome to the 5th level branch office of the First National Bank of Larn.");
}
+
static void
-banktitle(str)
- char *str;
+banktitle(const char *str)
{
nosignal = 1; /* disable signals */
clear();
int i;
lprcat("\n\nThe Larn Revenue Service has ordered that your account be frozen until all\n");
beep();
- lprintf("levied taxes have been paid. They have also told us that you owe %d gp in\n", (long) outstanding_taxes);
+ lprintf("levied taxes have been paid. They have also told us that you owe %ld gp in\n", (long) outstanding_taxes);
lprcat("taxes, and we must comply with them. We cannot serve you at this time. Sorry.\n");
lprcat("We suggest you go to the LRS office and pay your taxes.\n");
cursors();
lflush();
i = 0;
while (i != '\33')
- i = getchar();
+ i = ttgetch();
drawscreen();
nosignal = 0; /* enable signals */
return;
* function to put interest on your bank account
*/
void
-ointerest()
+ointerest(void)
{
int i;
if (c[BANKACCOUNT] < 0)
* for each */
static long gemvalue[26] = {0}; /* the appraisal of the gems */
void
-obanksub()
+obanksub(void)
{
- unsigned long amt;
+ long amt;
int i, k;
ointerest(); /* credit any needed interest */
cursor((k % 2) * 40 + 1, (k >> 1) + 4);
lprintf("%c) %s", i + 'a', objectname[iven[i]]);
cursor((k % 2) * 40 + 33, (k >> 1) + 4);
- lprintf("%5d", (long) gemvalue[i]);
+ lprintf("%5ld", (long) gemvalue[i]);
k++;
};
cursor(31, 17);
- lprintf("You have %8d gold pieces in the bank.", (long) c[BANKACCOUNT]);
+ lprintf("You have %8ld gold pieces in the bank.", (long) c[BANKACCOUNT]);
cursor(40, 18);
- lprintf("You have %8d gold pieces", (long) c[GOLD]);
+ lprintf("You have %8ld gold pieces", (long) c[GOLD]);
if (c[BANKACCOUNT] + c[GOLD] >= 500000)
lprcat("\nNote: Larndom law states that only deposits under 500,000gp can earn interest.");
while (1) {
yrepcount = 0;
i = 0;
while (i != 'd' && i != 'w' && i != 's' && i != '\33')
- i = getchar();
+ i = ttgetch();
switch (i) {
case 'd':
lprcat("deposit\nHow much? ");
lprcat("\nWhich stone would you like to sell? ");
i = 0;
while ((i < 'a' || i > 'z') && i != '*')
- i = getchar();
+ i = ttgetch();
if (i == '*')
for (i = 0; i < 26; i++) {
if (gemvalue[i]) {
return;
};
cursor(40, 17);
- lprintf("%8d", (long) c[BANKACCOUNT]);
+ lprintf("%8ld", (long) c[BANKACCOUNT]);
cursor(49, 18);
- lprintf("%8d", (long) c[GOLD]);
+ lprintf("%8ld", (long) c[GOLD]);
}
}
+#if 0 /* XXX: apparently unused */
/*
subroutine to appraise any stone for the bank
*/
-void
-appraise(gemstone)
- int gemstone;
+static void
+appraise(int gemstone)
{
int j, amt;
for (j = 0; j < 26; j++)
amt = 50000;
} else
amt = (255 & ivenarg[j]) * 100;
- lprintf("\nI can see this is an excellent stone, It is worth %d", (long) amt);
+ lprintf("\nI can see this is an excellent stone, It is worth %ld", (long) amt);
lprcat("\nWould you like to sell it to us? ");
yrepcount = 0;
if (getyn() == 'y') {
lprcat("no\nO. K.\n");
}
}
+#endif /* 0 - unused */
+
/*
function for the trading post
*/
static void
-otradhead()
+otradhead(void)
{
clear();
lprcat("Welcome to the Larn Trading Post. We buy items that explorers no longer find\n");
}
void
-otradepost()
+otradepost(void)
{
int i, j, value, isub, izarg;
dnditm = dndcount = 0;
lprcat("] ? ");
i = 0;
while (i > 'z' || (i < 'a' && i != '*' && i != '\33' && i != '.'))
- i = getchar();
+ i = ttgetch();
if (i == '\33') {
setscroll();
recalc();
j = 1;
cnsitm();
} /* can't sell unidentified item */
- if (!j)
+ if (!j) {
if (i == '*') {
clear();
qshowstr();
} else if (iven[isub] == 0)
lprintf("\nYou don't have item %c!", isub + 'a');
else {
- for (j = 0; j < maxitm; j++)
+ for (j = 0; j < MAXITM; j++)
if ((itm[j].obj == iven[isub]) || (iven[isub] == ODIAMOND) || (iven[isub] == ORUBY) || (iven[isub] == OEMERALD) || (iven[isub] == OSAPPHIRE)) {
srcount = 0;
show3(isub); /* show what the item
value *= 2;
while ((izarg-- > 0) && ((value = 14 * (67 + value) / 10) < 500000));
}
- lprintf("\nItem (%c) is worth %d gold pieces to us. Do you want to sell it? ", i, (long) value);
+ lprintf("\nItem (%c) is worth %ld gold pieces to us. Do you want to sell it? ", i, (long) value);
yrepcount = 0;
if (getyn() == 'y') {
lprcat("yes\n");
iven[isub] = 0;
} else
lprcat("no thanks.\n");
- j = maxitm + 100; /* get out of the inner
+ j = MAXITM + 100; /* get out of the inner
* loop */
}
- if (j <= maxitm + 2)
+ if (j <= MAXITM + 2)
lprcat("\nSo sorry, but we are not authorized to accept that item.");
}
+ }
}
}
-void
-cnsitm()
+static void
+cnsitm(void)
{
lprcat("\nSorry, we can't accept unidentified objects.");
}
* for the Larn Revenue Service
*/
void
-olrs()
+olrs(void)
{
int i, first;
- unsigned long amt;
+ long amt;
first = nosignal = 1; /* disable signals */
clear();
resetscroll();
yrepcount = 0;
i = 0;
while (i != 'p' && i != '\33')
- i = getchar();
+ i = ttgetch();
switch (i) {
case 'p':
lprcat("pay taxes\nHow much? ");
} else if (amt > c[GOLD])
lprcat(" You don't have that much.\n");
else
- c[GOLD] -= paytaxes((long) amt);
+ c[GOLD] -= paytaxes(amt);
break;
case '\33':
nxt: cursor(1, 6);
if (outstanding_taxes > 0)
- lprintf("You presently owe %d gp in taxes. ", (long) outstanding_taxes);
+ lprintf("You presently owe %ld gp in taxes. ", (long) outstanding_taxes);
else
lprcat("You do not owe us any taxes. ");
cursor(1, 8);
if (c[GOLD] > 0)
- lprintf("You have %6d gp. ", (long) c[GOLD]);
+ lprintf("You have %6ld gp. ", (long) c[GOLD]);
else
lprcat("You have no gold pieces. ");
}