Difference between revisions of "Source:NetHack 1.4f/worn.c"

From NetHackWiki
Jump to navigation Jump to search
m (Automated source code upload)
 
m (NetHack 1.4f/worn.c moved to Source:NetHack 1.4f/worn.c: Robot: moved page)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
Below is the full text to '''worn.c''' from the [[NetHack 1.4f source code|source code]] of [[NetHack 1.4f]]. To link to a particular line, write [[NetHack 1.4f/worn.c#line123|<nowiki>[[NetHack 1.4f/worn.c#line123]]</nowiki>]], for example.
+
The source code file '''worn.c''' in [[NetHack 1.4f source code|NetHack 1.4f]] is unchanged from [[NetHack 1.3d/worn.c]].
 
+
[[Category:NetHack 1.4f source code]]
'''Warning!''' This is the source code from an old release. For the latest release, see [[Source code]]
 
 
 
{{CWI}}
 
<span id="line1">1.    /* SCCS Id: @(#)worn.c 1.3 87/07/14</span>
 
<span id="line2">2.    /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */</span>
 
<span id="line3">3.    /* worn.c - version 1.0.2 */</span>
 
<span id="line4">4.    </span>
 
<span id="line5">5.    #include "hack.h"</span>
 
<span id="line6">6.    </span>
 
<span id="line7">7.    struct worn {</span>
 
<span id="line8">8.    long w_mask;</span>
 
<span id="line9">9.    struct obj **w_obj;</span>
 
<span id="line10">10.  } worn[] = {</span>
 
<span id="line11">11.  { W_ARM, &uarm },</span>
 
<span id="line12">12.  { W_ARM2, &uarm2 },</span>
 
<span id="line13">13.  { W_ARMH, &uarmh },</span>
 
<span id="line14">14.  { W_ARMS, &uarms },</span>
 
<span id="line15">15.  { W_ARMG, &uarmg },</span>
 
<span id="line16">16.  { W_RINGL, &uleft },</span>
 
<span id="line17">17.  { W_RINGR, &uright },</span>
 
<span id="line18">18.  { W_WEP, &uwep },</span>
 
<span id="line19">19.  { W_BALL, &uball },</span>
 
<span id="line20">20.  { W_CHAIN, &uchain },</span>
 
<span id="line21">21.  { 0, 0 }</span>
 
<span id="line22">22.  };</span>
 
<span id="line23">23.  </span>
 
<span id="line24">24.  setworn(obj, mask)</span>
 
<span id="line25">25.  register struct obj *obj;</span>
 
<span id="line26">26.  long mask;</span>
 
<span id="line27">27.  {</span>
 
<span id="line28">28.  register struct worn *wp;</span>
 
<span id="line29">29.  register struct obj *oobj;</span>
 
<span id="line30">30.  </span>
 
<span id="line31">31.  for(wp = worn; wp->w_mask; wp++) if(wp->w_mask & mask) {</span>
 
<span id="line32">32.  oobj = *(wp->w_obj);</span>
 
<span id="line33">33.  if(oobj && !(oobj->owornmask & wp->w_mask))</span>
 
<span id="line34">34.  impossible("Setworn: mask = %ld.", wp->w_mask);</span>
 
<span id="line35">35.  if(oobj) oobj->owornmask &= ~wp->w_mask;</span>
 
<span id="line36">36.  if(obj && oobj && wp->w_mask == W_ARM){</span>
 
<span id="line37">37.  if(uarm2) {</span>
 
<span id="line38">38.  impossible("Setworn: uarm2 set?");</span>
 
<span id="line39">39.  } else</span>
 
<span id="line40">40.  setworn(uarm, W_ARM2);</span>
 
<span id="line41">41.  }</span>
 
<span id="line42">42.  *(wp->w_obj) = obj;</span>
 
<span id="line43">43.  if(obj) obj->owornmask |= wp->w_mask;</span>
 
<span id="line44">44.  }</span>
 
<span id="line45">45.  if(uarm2 && !uarm) {</span>
 
<span id="line46">46.  uarm = uarm2;</span>
 
<span id="line47">47.  uarm2 = 0;</span>
 
<span id="line48">48.   uarm->owornmask ^= (W_ARM | W_ARM2);</span>
 
<span id="line49">49.  }</span>
 
<span id="line50">50.  }</span>
 
<span id="line51">51.  </span>
 
<span id="line52">52.  /* called e.g. when obj is destroyed */</span>
 
<span id="line53">53.  setnotworn(obj) register struct obj *obj; {</span>
 
<span id="line54">54.  register struct worn *wp;</span>
 
<span id="line55">55.  </span>
 
<span id="line56">56.  for(wp = worn; wp->w_mask; wp++)</span>
 
<span id="line57">57.  if(obj == *(wp->w_obj)) {</span>
 
<span id="line58">58.  *(wp->w_obj) = 0;</span>
 
<span id="line59">59.  obj->owornmask &= ~wp->w_mask;</span>
 
<span id="line60">60.  }</span>
 
<span id="line61">61.  if(uarm2 && !uarm) {</span>
 
<span id="line62">62.  uarm = uarm2;</span>
 
<span id="line63">63.  uarm2 = 0;</span>
 
<span id="line64">64.  uarm->owornmask ^= (W_ARM | W_ARM2);</span>
 
<span id="line65">65.  }</span>
 
<span id="line66">66.  }</span>
 
[[Category:NetHack 1.4f source code|worn.c]]
 

Latest revision as of 01:51, 4 March 2008

The source code file worn.c in NetHack 1.4f is unchanged from NetHack 1.3d/worn.c.