X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/be2e4143844eacde377f9efb27dcb1b55e6ecaf6..dc8899773571950d90fea6b3683f4189d25d5472:/hack/hack.worn.c diff --git a/hack/hack.worn.c b/hack/hack.worn.c index 638befbe..953949ab 100644 --- a/hack/hack.worn.c +++ b/hack/hack.worn.c @@ -1,52 +1,139 @@ +/* $NetBSD: hack.worn.c,v 1.5 2003/04/02 18:36:42 jsm Exp $ */ + +/* + * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica, + * Amsterdam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of the Stichting Centrum voor Wiskunde en + * Informatica, nor the names of its contributors may be used to endorse or + * promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + /* - * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. + * Copyright (c) 1982 Jay Fenlason <hack@gnu.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include <sys/cdefs.h> #ifndef lint -static char rcsid[] = "$Id: hack.worn.c,v 1.2 1993/08/02 17:19:42 mycroft Exp $"; -#endif /* not lint */ +__RCSID("$NetBSD: hack.worn.c,v 1.5 2003/04/02 18:36:42 jsm Exp $"); +#endif /* not lint */ #include "hack.h" +#include "extern.h" struct worn { - long w_mask; - struct obj **w_obj; -} worn[] = { - { W_ARM, &uarm }, - { W_ARM2, &uarm2 }, - { W_ARMH, &uarmh }, - { W_ARMS, &uarms }, - { W_ARMG, &uarmg }, - { W_RINGL, &uleft }, - { W_RINGR, &uright }, - { W_WEP, &uwep }, - { W_BALL, &uball }, - { W_CHAIN, &uchain }, - { 0, 0 } + long w_mask; + struct obj **w_obj; +} worn[] = { + { + W_ARM, &uarm + }, + { + W_ARM2, &uarm2 + }, + { + W_ARMH, &uarmh + }, + { + W_ARMS, &uarms + }, + { + W_ARMG, &uarmg + }, + { + W_RINGL, &uleft + }, + { + W_RINGR, &uright + }, + { + W_WEP, &uwep + }, + { + W_BALL, &uball + }, + { + W_CHAIN, &uchain + }, + { + 0, 0 + } }; +void setworn(obj, mask) -register struct obj *obj; -long mask; + struct obj *obj; + long mask; { - register struct worn *wp; - register struct obj *oobj; + struct worn *wp; + struct obj *oobj; - for(wp = worn; wp->w_mask; wp++) if(wp->w_mask & mask) { - oobj = *(wp->w_obj); - if(oobj && !(oobj->owornmask & wp->w_mask)) - impossible("Setworn: mask = %ld.", wp->w_mask); - if(oobj) oobj->owornmask &= ~wp->w_mask; - if(obj && oobj && wp->w_mask == W_ARM){ - if(uarm2) { - impossible("Setworn: uarm2 set?"); - } else - setworn(uarm, W_ARM2); + for (wp = worn; wp->w_mask; wp++) + if (wp->w_mask & mask) { + oobj = *(wp->w_obj); + if (oobj && !(oobj->owornmask & wp->w_mask)) + impossible("Setworn: mask = %ld.", wp->w_mask); + if (oobj) + oobj->owornmask &= ~wp->w_mask; + if (obj && oobj && wp->w_mask == W_ARM) { + if (uarm2) { + impossible("Setworn: uarm2 set?"); + } else + setworn(uarm, W_ARM2); + } + *(wp->w_obj) = obj; + if (obj) + obj->owornmask |= wp->w_mask; } - *(wp->w_obj) = obj; - if(obj) obj->owornmask |= wp->w_mask; - } - if(uarm2 && !uarm) { + if (uarm2 && !uarm) { uarm = uarm2; uarm2 = 0; uarm->owornmask ^= (W_ARM | W_ARM2); @@ -54,15 +141,18 @@ long mask; } /* called e.g. when obj is destroyed */ -setnotworn(obj) register struct obj *obj; { - register struct worn *wp; +void +setnotworn(obj) + struct obj *obj; +{ + struct worn *wp; - for(wp = worn; wp->w_mask; wp++) - if(obj == *(wp->w_obj)) { + for (wp = worn; wp->w_mask; wp++) + if (obj == *(wp->w_obj)) { *(wp->w_obj) = 0; obj->owornmask &= ~wp->w_mask; } - if(uarm2 && !uarm) { + if (uarm2 && !uarm) { uarm = uarm2; uarm2 = 0; uarm->owornmask ^= (W_ARM | W_ARM2);