more GOLDOBJ
The earlier patch made sure that bribe() didn't pass an invalid value to money2mon(). This one changes money2mon() so that if some other code else does so, reporting the impossible situation won't be followed by a splitobj panic. Most of this patch is reformatting though.
This commit is contained in:
+7
-7
@@ -186,19 +186,19 @@ struct monst *mtmp;
|
|||||||
} else if (offer >= u.ugold) {
|
} else if (offer >= u.ugold) {
|
||||||
You("give %s all your gold.", mon_nam(mtmp));
|
You("give %s all your gold.", mon_nam(mtmp));
|
||||||
offer = u.ugold;
|
offer = u.ugold;
|
||||||
} else You("give %s %ld %s.", mon_nam(mtmp), offer,
|
} else {
|
||||||
currency(offer));
|
You("give %s %ld %s.", mon_nam(mtmp), offer, currency(offer));
|
||||||
|
}
|
||||||
u.ugold -= offer;
|
u.ugold -= offer;
|
||||||
mtmp->mgold += offer;
|
mtmp->mgold += offer;
|
||||||
#else
|
#else
|
||||||
} else if (offer >= umoney) {
|
} else if (offer >= umoney) {
|
||||||
You("give %s all your gold.", mon_nam(mtmp));
|
You("give %s all your gold.", mon_nam(mtmp));
|
||||||
offer = umoney;
|
offer = umoney;
|
||||||
} else You("give %s %ld %s.", mon_nam(mtmp), offer,
|
} else {
|
||||||
currency(offer));
|
You("give %s %ld %s.", mon_nam(mtmp), offer, currency(offer));
|
||||||
|
}
|
||||||
money2mon(mtmp, offer);
|
(void) money2mon(mtmp, offer);
|
||||||
#endif
|
#endif
|
||||||
flags.botl = 1;
|
flags.botl = 1;
|
||||||
return(offer);
|
return(offer);
|
||||||
|
|||||||
@@ -94,16 +94,17 @@ long amount;
|
|||||||
{
|
{
|
||||||
struct obj *ygold = findgold(invent);
|
struct obj *ygold = findgold(invent);
|
||||||
|
|
||||||
if (ygold && ygold == uquiver) uqwepgone();
|
if (amount <= 0) {
|
||||||
|
impossible("%s payment in money2mon!", amount ? "negative" : "zero");
|
||||||
if (amount <= 0) impossible("%s payment in money2mon!",
|
return 0L;
|
||||||
amount ? "negative" : "zero");
|
}
|
||||||
if (!ygold || ygold->quan < amount) {
|
if (!ygold || ygold->quan < amount) {
|
||||||
impossible("Paying without %s money?", ygold ? "enough" : "");
|
impossible("Paying without %s money?", ygold ? "enough" : "");
|
||||||
return 0;
|
return 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ygold->quan > amount) ygold = splitobj(ygold, amount);
|
if (ygold->quan > amount) ygold = splitobj(ygold, amount);
|
||||||
|
else if (ygold->owornmask) remove_worn_item(ygold); /* quiver */
|
||||||
freeinv(ygold);
|
freeinv(ygold);
|
||||||
add_to_minv(mon, ygold);
|
add_to_minv(mon, ygold);
|
||||||
flags.botl = 1;
|
flags.botl = 1;
|
||||||
@@ -123,8 +124,10 @@ long amount;
|
|||||||
{
|
{
|
||||||
struct obj *mongold = findgold(mon->minvent);
|
struct obj *mongold = findgold(mon->minvent);
|
||||||
|
|
||||||
if (amount <= 0) impossible("%s payment in money2u!",
|
if (amount <= 0) {
|
||||||
amount ? "negative" : "zero");
|
impossible("%s payment in money2u!", amount ? "negative" : "zero");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!mongold || mongold->quan < amount) {
|
if (!mongold || mongold->quan < amount) {
|
||||||
impossible("%s paying without %s money?", a_monnam(mon),
|
impossible("%s paying without %s money?", a_monnam(mon),
|
||||||
mongold ? "enough" : "");
|
mongold ? "enough" : "");
|
||||||
|
|||||||
Reference in New Issue
Block a user