(linenum→info "unix/slp.c:2238")

bsd-games/2.17/hack/hack.timeout.c

    1: /*      $NetBSD: hack.timeout.c,v 1.6 2003/04/02 18:36:41 jsm Exp $  */
    2: 
    3: /*
    4:  * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
    5:  * Amsterdam
    6:  * All rights reserved.
    7:  *
    8:  * Redistribution and use in source and binary forms, with or without
    9:  * modification, are permitted provided that the following conditions are
   10:  * met:
   11:  *
   12:  * - Redistributions of source code must retain the above copyright notice,
   13:  * this list of conditions and the following disclaimer.
   14:  *
   15:  * - Redistributions in binary form must reproduce the above copyright
   16:  * notice, this list of conditions and the following disclaimer in the
   17:  * documentation and/or other materials provided with the distribution.
   18:  *
   19:  * - Neither the name of the Stichting Centrum voor Wiskunde en
   20:  * Informatica, nor the names of its contributors may be used to endorse or
   21:  * promote products derived from this software without specific prior
   22:  * written permission.
   23:  *
   24:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   25:  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   26:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   27:  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
   28:  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   29:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   30:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   31:  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   32:  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   33:  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   34:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   35:  */
   36: 
   37: /*
   38:  * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
   39:  * All rights reserved.
   40:  *
   41:  * Redistribution and use in source and binary forms, with or without
   42:  * modification, are permitted provided that the following conditions
   43:  * are met:
   44:  * 1. Redistributions of source code must retain the above copyright
   45:  *    notice, this list of conditions and the following disclaimer.
   46:  * 2. Redistributions in binary form must reproduce the above copyright
   47:  *    notice, this list of conditions and the following disclaimer in the
   48:  *    documentation and/or other materials provided with the distribution.
   49:  * 3. The name of the author may not be used to endorse or promote products
   50:  *    derived from this software without specific prior written permission.
   51:  *
   52:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
   53:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
   54:  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   55:  * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   56:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   57:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   58:  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   59:  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   60:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   61:  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62:  */
   63: 
   64: #include <sys/cdefs.h>
   65: #ifndef lint
   66: __RCSID("$NetBSD: hack.timeout.c,v 1.6 2003/04/02 18:36:41 jsm Exp $");
   67: #endif                          /* not lint */
   68: 
   69: #include "hack.h"
   70: #include "extern.h"
   71: 
   72: void
   73: timeout()
   74: {
   75:         struct prop    *upp;
   76:         if (Stoned)
   77:                 stoned_dialogue();
   78:         for (upp = u.uprops; upp < u.uprops + SIZE(u.uprops); upp++)
   79:                 if ((upp->p_flgs & TIMEOUT) && !--upp->p_flgs) {
   80:                         if (upp->p_tofn)
   81:                                 (*upp->p_tofn) ();
   82:                         else
   83:                                 switch (upp - u.uprops) {
   84:                                 case STONED:
   85:                                         killer = "cockatrice";
   86:                                         done("died");
   87:                                         break;
   88:                                 case SICK:
   89:                                         pline("You die because of food poisoning.");
   90:                                         killer = u.usick_cause;
   91:                                         done("died");
   92:                                         break;
   93:                                 case FAST:
   94:                                         pline("You feel yourself slowing down.");
   95:                                         break;
   96:                                 case CONFUSION:
   97:                                         pline("You feel less confused now.");
   98:                                         break;
   99:                                 case BLIND:
  100:                                         pline("You can see again.");
  101:                                         setsee();
  102:                                         break;
  103:                                 case INVIS:
  104:                                         on_scr(u.ux, u.uy);
  105:                                         pline("You are no longer invisible.");
  106:                                         break;
  107:                                 case WOUNDED_LEGS:
  108:                                         heal_legs();
  109:                                         break;
  110:                                 }
  111:                 }
  112: }
  113: 
  114: /* He is being petrified - dialogue by inmet!tower */
  115: const char           *const stoned_texts[] = {
  116:         "You are slowing down.",/* 5 */
  117:         "Your limbs are stiffening.",  /* 4 */
  118:         "Your limbs have turned to stone.",    /* 3 */
  119:         "You have turned to stone.",   /* 2 */
  120:         "You are a statue."    /* 1 */
  121: };
  122: 
  123: void
  124: stoned_dialogue()
  125: {
  126:         long            i = (Stoned & TIMEOUT);
  127: 
  128:         if (i > 0 && i <= SIZE(stoned_texts))
  129:                 pline(stoned_texts[SIZE(stoned_texts) - i]);
  130:         if (i == 5)
  131:                 Fast = 0;
  132:         if (i == 3)
  133:                 nomul(-3);
  134: }
Syntax (Markdown)