Crossfire Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CF: patch to server/apply.c to get "marked" item identified first
This patch is for the server, v0.95.1 .
*** apply.c.orig Fri Dec 4 11:41:57 1998
--- apply.c Fri Dec 4 12:17:24 1998
***************
*** 51,59 ****
query_name(find));
}
int apply_id_altar(object *money, object *altar)
{
! object *id, *pl;
int success=0;
/* Check for MONEY type is a special hack - it prevents 'nothing needs
--- 51,90 ----
query_name(find));
}
+ /* return code with the LSbit set signifies that an identification has been */
+ /* made; return code with the second least significant bit set signifies */
+ /* that there should be no more identifications made at this time */
+ int apply_id_altar_once(object *money, object *altar, object *pl, object *id)
+ {
+ int success=0;
+
+ if (!QUERY_FLAG(id, FLAG_IDENTIFIED) && !id->invisible &&
+ need_identify(id)) {
+ if (check_altar(altar)) {
+ identify(id);
+ new_draw_info_format(NDI_UNIQUE, 0, pl,
+ "You have %s.", long_desc(id));
+ if (id->msg) {
+ new_draw_info(NDI_UNIQUE, 0,pl, "The item has a story:");
+ new_draw_info(NDI_UNIQUE, 0,pl, id->msg);
+ }
+ success=1;
+ /* If no more money, might as well quit now */
+ if (!check_altar_sacrifice(altar)) success|=0x02;
+ }
+ else {
+ LOG(llevError,"check_id_altar: Couldn't do sacrifice when we should have been able to\n");
+ success=2;
+ }
+ }
+
+ return success;
+ }
+
+
int apply_id_altar(object *money, object *altar)
{
! object *id, *pl, *marked;
int success=0;
/* Check for MONEY type is a special hack - it prevents 'nothing needs
***************
*** 68,95 ****
LOG(llevError,"Identify Altar: Can't find player!.\n");
return 0;
}
for (id=pl->inv; id; id=id->below) {
! if (!QUERY_FLAG(id, FLAG_IDENTIFIED) && !id->invisible &&
! need_identify(id)) {
! if (check_altar(altar)) {
! identify(id);
! new_draw_info_format(NDI_UNIQUE, 0, pl,
! "You have %s.", long_desc(id));
! if (id->msg) {
! new_draw_info(NDI_UNIQUE, 0,pl, "The item has a story:");
! new_draw_info(NDI_UNIQUE, 0,pl, id->msg);
! }
! success=1;
! /* If no more money, might as well quit now */
! if (!check_altar_sacrifice(altar)) break;
! }
! else {
! LOG(llevError,"check_id_altar: Couldn't do sacrifice when we should have been able to\n");
! break;
! }
! }
}
! if (!success) new_draw_info(NDI_UNIQUE, 0,pl,"You have nothing that needs identifying");
return 1;
}
--- 99,115 ----
LOG(llevError,"Identify Altar: Can't find player!.\n");
return 0;
}
+ marked=find_marked_object(pl);
+ if (marked)
+ success |= apply_id_altar_once(money, altar, pl, marked);
+
for (id=pl->inv; id; id=id->below) {
! success |= apply_id_altar_once(money, altar, pl, id);
! if (success & 0x02)
! break;
}
! if (! (success & 0x01)) new_draw_info(NDI_UNIQUE, 0,pl,"You have nothing that needs identifying");
!
return 1;
}
--
M$: Our software of tommorrow will make Maciej Kalisiak
sure that on your hardware of tomorrow mac@dgp.utoronto.ca
everything will work at the usual speed. mac@elecom97.mail.net
www.eecg.utoronto.ca/~mac