diff rogue3/armor.c @ 0:527e2150eaf0

Import Rogue 3.6 from the Roguelike Restoration Project (r1490)
author edwarj4
date Tue, 13 Oct 2009 13:33:34 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rogue3/armor.c	Tue Oct 13 13:33:34 2009 +0000
@@ -0,0 +1,93 @@
+/*
+ * This file contains misc functions for dealing with armor
+ * @(#)armor.c	3.9 (Berkeley) 6/15/81
+ * 
+ * Rogue: Exploring the Dungeons of Doom
+ * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman
+ * All rights reserved.
+ *
+ * See the file LICENSE.TXT for full copyright and licensing information.
+ */
+
+#include "curses.h"
+#include "rogue.h"
+
+/*
+ * wear:
+ *	The player wants to wear something, so let him/her put it on.
+ */
+
+void
+wear()
+{
+    register struct linked_list *item;
+    register struct object *obj;
+
+    if (cur_armor != NULL)
+    {
+	addmsg("You are already wearing some");
+	if (!terse)
+	    addmsg(".  You'll have to take it off first");
+	endmsg();
+	after = FALSE;
+	return;
+    }
+    if ((item = get_item("wear", ARMOR)) == NULL)
+	return;
+    obj = (struct object *) ldata(item);
+    if (obj->o_type != ARMOR)
+    {
+	msg("You can't wear that.");
+	return;
+    }
+    waste_time();
+    if (!terse)
+	addmsg("You are now w");
+    else
+	addmsg("W");
+    msg("earing %s.", a_names[obj->o_which]);
+    cur_armor = obj;
+    obj->o_flags |= ISKNOW;
+}
+
+/*
+ * take_off:
+ *	Get the armor off of the players back
+ */
+
+void
+take_off()
+{
+    register struct object *obj;
+
+    if ((obj = cur_armor) == NULL)
+    {
+	if (terse)
+		msg("Not wearing armor");
+	else
+		msg("You aren't wearing any armor");
+	return;
+    }
+    if (!dropcheck(cur_armor))
+	return;
+    cur_armor = NULL;
+    if (terse)
+	addmsg("Was");
+    else
+	addmsg("You used to be ");
+    msg(" wearing %c) %s", pack_char(obj), inv_name(obj, TRUE));
+}
+
+/*
+ * waste_time:
+ *	Do nothing but let other things happen
+ */
+
+void
+waste_time()
+{
+    do_daemons(BEFORE);
+    do_fuses(BEFORE);
+    do_daemons(AFTER);
+    do_fuses(AFTER);
+}