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:
+24
-6
@@ -2033,7 +2033,30 @@ thitmonst(
|
|||||||
|
|
||||||
if (mon->mcanmove) {
|
if (mon->mcanmove) {
|
||||||
pline("%s catches %s.", Some_Monnam(mon), the(xname(obj)));
|
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);
|
boolean next2u = monnear(mon, u.ux, u.uy);
|
||||||
|
|
||||||
finish_quest(obj); /* acknowledge quest completion */
|
finish_quest(obj); /* acknowledge quest completion */
|
||||||
@@ -2043,11 +2066,6 @@ thitmonst(
|
|||||||
sho_obj_return_to_u(obj);
|
sho_obj_return_to_u(obj);
|
||||||
obj = addinv(obj); /* back into your inventory */
|
obj = addinv(obj); /* back into your inventory */
|
||||||
(void) encumber_msg();
|
(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 */
|
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;
|
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)) {
|
if (obj && !is_quest_artifact(obj)) {
|
||||||
/* tossed an invocation item (or [fake] AoY) at the quest leader */
|
/* tossed an invocation item (or [fake] AoY) at the quest leader */
|
||||||
if (Deaf)
|
if (Deaf)
|
||||||
|
|||||||
Reference in New Issue
Block a user