(buy, check_market, trad, check_trade): Remove the following virtually
undocumented feature: When a buyer didn't have enough money at the time of the trade, the seller *automatically* granted a high-interest, medium term loan for up to 90% of the price. This is just a silly trap for unwary sellers and buyers alike. (N_FIN_TROUBLE, N_CREDIT_JUNK): Unused, remove. (rpt): Update accordingly.
This commit is contained in:
parent
b2ae3257ca
commit
ada0ed8e61
7 changed files with 5 additions and 151 deletions
|
@ -137,8 +137,8 @@ struct rptstr {
|
||||||
#define N_PARA_UNOCC 75
|
#define N_PARA_UNOCC 75
|
||||||
#define N_ALOSE_SCT 76
|
#define N_ALOSE_SCT 76
|
||||||
#define N_PLOSE_SCT 77
|
#define N_PLOSE_SCT 77
|
||||||
#define N_FIN_TROUBLE 78
|
/* unused 78 */
|
||||||
#define N_CREDIT_JUNK 79
|
/* unused 79 */
|
||||||
#define N_WELCH_DEAL 80
|
#define N_WELCH_DEAL 80
|
||||||
#define N_LND_LOSE 81
|
#define N_LND_LOSE 81
|
||||||
#define N_BOARD_LAND 82
|
#define N_BOARD_LAND 82
|
||||||
|
|
|
@ -25,11 +25,6 @@ Typical output looks like:
|
||||||
Looks just like Christmas at K-mart, doesn't it!
|
Looks just like Christmas at K-mart, doesn't it!
|
||||||
|
|
||||||
Which lot are you bidding on: 1
|
Which lot are you bidding on: 1
|
||||||
WARNING! This market issues credit. If you make more
|
|
||||||
bids than your treasury can cover at the time of sale,
|
|
||||||
you can potentially go into financial ruin, and see no
|
|
||||||
gains. You have been warned.
|
|
||||||
|
|
||||||
How much per unit: 2
|
How much per unit: 2
|
||||||
destination sector : 3,1
|
destination sector : 3,1
|
||||||
Your bid is being considered.
|
Your bid is being considered.
|
||||||
|
|
|
@ -24,7 +24,7 @@ Which will print the news for the last two days.
|
||||||
You can select whose news to see with the ?actor or ?victim selectors,
|
You can select whose news to see with the ?actor or ?victim selectors,
|
||||||
and what news to see with the ?action selector. Actions are:
|
and what news to see with the ?action selector. Actions are:
|
||||||
.nf
|
.nf
|
||||||
1) Successful Sector attack
|
1) Successful sector attack
|
||||||
2) Unsuccessful attack
|
2) Unsuccessful attack
|
||||||
3) Spy shot
|
3) Spy shot
|
||||||
4) Telegram sent
|
4) Telegram sent
|
||||||
|
@ -96,8 +96,6 @@ and what news to see with the ?action selector. Actions are:
|
||||||
75) Paradrop into unoccuppied land
|
75) Paradrop into unoccuppied land
|
||||||
76) Failed assault
|
76) Failed assault
|
||||||
77) Failed paradrop
|
77) Failed paradrop
|
||||||
78) Forced loan taken out (by the market)
|
|
||||||
79) Forced loan denied (by the market)
|
|
||||||
80) Failed boarding of a land unit
|
80) Failed boarding of a land unit
|
||||||
81) Successful boarding of a land unit
|
81) Successful boarding of a land unit
|
||||||
.fi
|
.fi
|
||||||
|
|
|
@ -24,11 +24,6 @@ Typical output looks like:
|
||||||
0 $ 1000 2 0.06 hrs ( 2) tech 0 100% inf1 infantry 1 [f:21 ] #3
|
0 $ 1000 2 0.06 hrs ( 2) tech 0 100% inf1 infantry 1 [f:21 ] #3
|
||||||
Which lot to buy: 0
|
Which lot to buy: 0
|
||||||
Destination sector: 4,0
|
Destination sector: 4,0
|
||||||
WARNING! This market issues credit. If you make more
|
|
||||||
bids than your treasury can cover at the time of sale,
|
|
||||||
you can potentially go into financial ruin, and see no
|
|
||||||
gains. You have been warned.
|
|
||||||
|
|
||||||
How much do you bid: 1100
|
How much do you bid: 1100
|
||||||
Your bid on lot #0 is being considered.
|
Your bid on lot #0 is being considered.
|
||||||
.FI
|
.FI
|
||||||
|
|
|
@ -105,10 +105,6 @@ buy(void)
|
||||||
pr("You can't bid on your own lot.\n");
|
pr("You can't bid on your own lot.\n");
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
pr("WARNING! This market issues credit. If you make more\n");
|
|
||||||
pr(" bids than your treasury can cover at the time of sale,\n");
|
|
||||||
pr(" you can potentially go into financial ruin, and see no\n");
|
|
||||||
pr(" gains. You have been warned.\n\n");
|
|
||||||
if ((p = getstarg(player->argp[3], "How much per unit: ", buf)) == 0)
|
if ((p = getstarg(player->argp[3], "How much per unit: ", buf)) == 0)
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
bid = atof(p);
|
bid = atof(p);
|
||||||
|
@ -219,11 +215,6 @@ check_market(void)
|
||||||
double monleft;
|
double monleft;
|
||||||
double gain;
|
double gain;
|
||||||
double price;
|
double price;
|
||||||
struct lonstr loan;
|
|
||||||
long outstanding; /* Outstanding debt */
|
|
||||||
long couval; /* Value of country's goods */
|
|
||||||
int foundloan;
|
|
||||||
int j;
|
|
||||||
|
|
||||||
/* logerror("Checking the market.\n");*/
|
/* logerror("Checking the market.\n");*/
|
||||||
for (n = 0; getcomm(n, &comm); n++) {
|
for (n = 0; getcomm(n, &comm); n++) {
|
||||||
|
@ -261,63 +252,6 @@ check_market(void)
|
||||||
/* Subtract the amount of money that needs to come out in a loan. */
|
/* Subtract the amount of money that needs to come out in a loan. */
|
||||||
subleft = monleft;
|
subleft = monleft;
|
||||||
|
|
||||||
if (opt_LOANS) {
|
|
||||||
/* Try to make a loan for the rest from the owner. */
|
|
||||||
if (monleft > 0 && tmoney > 0) {
|
|
||||||
if ((float)((float)price / (float)(price + monleft)) < 0.1) {
|
|
||||||
wu(0, comm.com_maxbidder,
|
|
||||||
"You need at least 10 percent down to purchase something on credit.\n");
|
|
||||||
} else {
|
|
||||||
couval = get_couval(comm.com_maxbidder);
|
|
||||||
outstanding = get_outstand(comm.com_maxbidder);
|
|
||||||
couval = couval - outstanding;
|
|
||||||
if (couval > monleft) {
|
|
||||||
/* Make the loan */
|
|
||||||
foundloan = 0;
|
|
||||||
for (j = 0; getloan(j, &loan); j++) {
|
|
||||||
if (loan.l_status != LS_FREE)
|
|
||||||
continue;
|
|
||||||
foundloan = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!foundloan)
|
|
||||||
ef_extend(EF_LOAN, 1);
|
|
||||||
loan.l_status = LS_SIGNED;
|
|
||||||
loan.l_loner = comm.com_owner;
|
|
||||||
loan.l_lonee = comm.com_maxbidder;
|
|
||||||
loan.l_irate = 25;
|
|
||||||
loan.l_ldur = 4;
|
|
||||||
loan.l_amtpaid = 0;
|
|
||||||
loan.l_amtdue = monleft;
|
|
||||||
time(&loan.l_lastpay);
|
|
||||||
loan.l_duedate =
|
|
||||||
(loan.l_ldur * SECS_PER_DAY) + loan.l_lastpay;
|
|
||||||
loan.l_uid = j;
|
|
||||||
if (!putloan(j, &loan))
|
|
||||||
logerror("Error writing to the loan file.\n");
|
|
||||||
else
|
|
||||||
monleft = 0;
|
|
||||||
nreport(comm.com_maxbidder, N_FIN_TROUBLE,
|
|
||||||
comm.com_owner, 1);
|
|
||||||
wu(0, comm.com_maxbidder,
|
|
||||||
"You just took loan #%d for $%ld to cover the cost of your purchase.\n",
|
|
||||||
j, loan.l_amtdue);
|
|
||||||
wu(0, comm.com_owner,
|
|
||||||
"You just extended loan #%d to %s to help with the purchase cose.\n",
|
|
||||||
j, cname(comm.com_maxbidder));
|
|
||||||
} else {
|
|
||||||
nreport(comm.com_maxbidder, N_CREDIT_JUNK,
|
|
||||||
comm.com_owner, 1);
|
|
||||||
wu(0, comm.com_maxbidder,
|
|
||||||
"You don't have enough credit to get a loan.\n");
|
|
||||||
wu(0, comm.com_owner,
|
|
||||||
"You just turned down a loan to %s.\n",
|
|
||||||
cname(comm.com_maxbidder));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (monleft > 0) {
|
if (monleft > 0) {
|
||||||
nreport(comm.com_maxbidder, N_WELCH_DEAL, comm.com_owner, 1);
|
nreport(comm.com_maxbidder, N_WELCH_DEAL, comm.com_owner, 1);
|
||||||
wu(0, comm.com_maxbidder,
|
wu(0, comm.com_maxbidder,
|
||||||
|
|
|
@ -257,11 +257,6 @@ trad(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pr("WARNING! This market issues credit. If you make more\n");
|
|
||||||
pr(" bids than your treasury can cover at the time of sale,\n");
|
|
||||||
pr(" you can potentially go into financial ruin, and see no\n");
|
|
||||||
pr(" gains. You have been warned.\n\n");
|
|
||||||
|
|
||||||
if ((p = getstring("How much do you bid: ", buf)) == 0 || *p == 0)
|
if ((p = getstring("How much do you bid: ", buf)) == 0 || *p == 0)
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
if (!trade_check_ok(&trade, &tg))
|
if (!trade_check_ok(&trade, &tg))
|
||||||
|
@ -298,7 +293,6 @@ int
|
||||||
check_trade(void)
|
check_trade(void)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
int j;
|
|
||||||
struct nstr_item ni;
|
struct nstr_item ni;
|
||||||
struct plnstr plane;
|
struct plnstr plane;
|
||||||
struct lndstr land;
|
struct lndstr land;
|
||||||
|
@ -311,10 +305,6 @@ check_trade(void)
|
||||||
double tleft;
|
double tleft;
|
||||||
float price;
|
float price;
|
||||||
int saveid;
|
int saveid;
|
||||||
struct lonstr loan;
|
|
||||||
long outstanding; /* Outstanding debt */
|
|
||||||
long couval; /* Value of country's goods */
|
|
||||||
int foundloan;
|
|
||||||
|
|
||||||
/* logerror("Checking the trades.\n");*/
|
/* logerror("Checking the trades.\n");*/
|
||||||
for (n = 0; gettrade(n, &trade); n++) {
|
for (n = 0; gettrade(n, &trade); n++) {
|
||||||
|
@ -368,62 +358,6 @@ check_trade(void)
|
||||||
|
|
||||||
subleft = monleft;
|
subleft = monleft;
|
||||||
|
|
||||||
if (opt_LOANS) {
|
|
||||||
/* Try to make a loan for the rest from the owner. */
|
|
||||||
if (monleft > 0 && natp->nat_money > 0) {
|
|
||||||
if ((float)((float)price / (float)(price + monleft)) < 0.1) {
|
|
||||||
wu(0, trade.trd_maxbidder,
|
|
||||||
"You need at least 10 percent down to purchase something on credit.\n");
|
|
||||||
} else {
|
|
||||||
couval = get_couval(trade.trd_maxbidder);
|
|
||||||
outstanding = get_outstand(trade.trd_maxbidder);
|
|
||||||
couval = couval - outstanding;
|
|
||||||
if (couval > monleft) {
|
|
||||||
/* Make the loan */
|
|
||||||
foundloan = 0;
|
|
||||||
for (j = 0; getloan(j, &loan); j++) {
|
|
||||||
if (loan.l_status != LS_FREE)
|
|
||||||
continue;
|
|
||||||
foundloan = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!foundloan)
|
|
||||||
ef_extend(EF_LOAN, 1);
|
|
||||||
loan.l_status = LS_SIGNED;
|
|
||||||
loan.l_loner = trade.trd_owner;
|
|
||||||
loan.l_lonee = trade.trd_maxbidder;
|
|
||||||
loan.l_irate = 25;
|
|
||||||
loan.l_ldur = 4;
|
|
||||||
loan.l_amtpaid = 0;
|
|
||||||
loan.l_amtdue = monleft;
|
|
||||||
time(&loan.l_lastpay);
|
|
||||||
loan.l_duedate =
|
|
||||||
(loan.l_ldur * SECS_PER_DAY) + loan.l_lastpay;
|
|
||||||
loan.l_uid = j;
|
|
||||||
if (!putloan(j, &loan))
|
|
||||||
logerror("Error writing to the loan file.\n");
|
|
||||||
else
|
|
||||||
monleft = 0;
|
|
||||||
nreport(trade.trd_maxbidder, N_FIN_TROUBLE,
|
|
||||||
trade.trd_owner, 1);
|
|
||||||
wu(0, trade.trd_maxbidder,
|
|
||||||
"You just took loan #%d for $%.2f to cover the cost of your purchase.\n",
|
|
||||||
j, (float)loan.l_amtdue);
|
|
||||||
wu(0, trade.trd_owner,
|
|
||||||
"You just extended loan #%d to %s to help with the purchase cost.\n",
|
|
||||||
j, cname(trade.trd_maxbidder));
|
|
||||||
} else {
|
|
||||||
nreport(trade.trd_maxbidder, N_CREDIT_JUNK,
|
|
||||||
trade.trd_owner, 1);
|
|
||||||
wu(0, trade.trd_maxbidder,
|
|
||||||
"You don't have enough credit to get a loan.\n");
|
|
||||||
wu(0, trade.trd_owner,
|
|
||||||
"You just turned down a loan to %s.\n",
|
|
||||||
cname(trade.trd_maxbidder));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (monleft > 0) {
|
if (monleft > 0) {
|
||||||
nreport(trade.trd_maxbidder, N_WELCH_DEAL, trade.trd_owner, 1);
|
nreport(trade.trd_maxbidder, N_WELCH_DEAL, trade.trd_owner, 1);
|
||||||
wu(0, trade.trd_owner,
|
wu(0, trade.trd_owner,
|
||||||
|
|
|
@ -210,10 +210,8 @@ struct rptstr rpt[] = {
|
||||||
/* 76*/ "naval forces massacred in failed assault of %s" } },
|
/* 76*/ "naval forces massacred in failed assault of %s" } },
|
||||||
{-4, N_FRONT, { "paratroopers destroyed in failed air-assault on %s",
|
{-4, N_FRONT, { "paratroopers destroyed in failed air-assault on %s",
|
||||||
/* 77*/ "loses parachutists in failed air-assault of %s" } },
|
/* 77*/ "loses parachutists in failed air-assault of %s" } },
|
||||||
{ 0, N_ECON, { "is forced into debt to %s by bad management",
|
/* 78*/ { 0, 0, { no_news, no_news } },
|
||||||
/* 78*/ "shows bad financial planning" } },
|
/* 79*/ { 0, 0, { no_news, no_news } },
|
||||||
{ 0, N_ECON, { "has its credit rating downgraded to unworthy status",
|
|
||||||
/* 79*/ "is denied credit by %s due to lack of collatoral" } },
|
|
||||||
{ 0, N_ECON, { "is unable to fulfill its financial obligations to %s",
|
{ 0, N_ECON, { "is unable to fulfill its financial obligations to %s",
|
||||||
/* 80*/ "welches on a deal with %s" } },
|
/* 80*/ "welches on a deal with %s" } },
|
||||||
{ -3, N_FRONT, { "is repelled by %s while attempting to board a land unit",
|
{ -3, N_FRONT, { "is repelled by %s while attempting to board a land unit",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue