Have leader keep already-used invocation items
The other suggestion from Pat about potential extensions to bda0b3b. I
think it's interesting from a story perspective, and hopefully nobody
will run into this by mistake when they hoped to use the Candelabra as a
light source later! The specific language used by the leader could be
changed if someone has a better idea (as could the code itself, for that
matter).
This commit is contained in:
@@ -2033,7 +2033,30 @@ thitmonst(
|
||||
|
||||
if (mon->mcanmove) {
|
||||
pline("%s catches %s.", Some_Monnam(mon), the(xname(obj)));
|
||||
if (mon->mpeaceful) {
|
||||
/* leader will keep tossed invocation item after you've done the
|
||||
invocation and it's become unnecessary for completion.. */
|
||||
if ((u.uevent.invoked && objects[obj->otyp].oc_unique
|
||||
&& obj->otyp != AMULET_OF_YENDOR)
|
||||
/* ...or any special item, if you've made him angry */
|
||||
|| !mon->mpeaceful) {
|
||||
/* give an explanation for keeping the item only if leader is
|
||||
not doing it out of anger */
|
||||
if (mon->mpeaceful && !Deaf) {
|
||||
/* just in case, identify the object so its name will
|
||||
appear in the message */
|
||||
fully_identify_obj(obj);
|
||||
verbalize("%s part in this is finished.",
|
||||
s_suffix(The(xname(obj))));
|
||||
verbalize(
|
||||
"We will guard it in case it is ever needed again, %s forbid.",
|
||||
align_gname(u.ualignbase[A_ORIGINAL]));
|
||||
}
|
||||
if (*u.ushops || obj->unpaid) /* not very likely... */
|
||||
check_shop_obj(obj, mon->mx, mon->my, FALSE);
|
||||
(void) mpickobj(mon, obj);
|
||||
} else {
|
||||
/* under normal circumstances, leader will say something and
|
||||
then return the item to the hero */
|
||||
boolean next2u = monnear(mon, u.ux, u.uy);
|
||||
|
||||
finish_quest(obj); /* acknowledge quest completion */
|
||||
@@ -2043,11 +2066,6 @@ thitmonst(
|
||||
sho_obj_return_to_u(obj);
|
||||
obj = addinv(obj); /* back into your inventory */
|
||||
(void) encumber_msg();
|
||||
} else {
|
||||
/* angry leader caught it and isn't returning it */
|
||||
if (*u.ushops || obj->unpaid) /* not very likely... */
|
||||
check_shop_obj(obj, mon->mx, mon->my, FALSE);
|
||||
(void) mpickobj(mon, obj);
|
||||
}
|
||||
return 1; /* caller doesn't need to place it */
|
||||
}
|
||||
|
||||
@@ -228,13 +228,6 @@ finish_quest(struct obj *obj) /* quest artifact or thrown unique item or faux
|
||||
{
|
||||
struct obj *otmp;
|
||||
|
||||
/*
|
||||
* Possible extensions [would mostly need to be done in thitmonst()]:
|
||||
* if the invocation has already been performed, leader keeps any
|
||||
* thrown (or kicked) invocation item, perhaps stating the intent
|
||||
* to guard it for the future;
|
||||
*/
|
||||
|
||||
if (obj && !is_quest_artifact(obj)) {
|
||||
/* tossed an invocation item (or [fake] AoY) at the quest leader */
|
||||
if (Deaf)
|
||||
|
||||
Reference in New Issue
Block a user