1 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
2 /* hack.mkobj.c - version 1.0.3 */
3 /* $FreeBSD: src/games/hack/hack.mkobj.c,v 1.5 1999/11/16 10:26:37 marcel Exp $ */
4 /* $DragonFly: src/games/hack/hack.mkobj.c,v 1.4 2006/08/21 19:45:32 pavalos Exp $ */
8 char mkobjstr
[] = "))[[!!!!????%%%%/=**))[[!!!!????%%%%/=**(%";
11 mkobj_at(int let
, int x
, int y
)
13 struct obj
*otmp
= mkobj(let
);
22 mksobj_at(int otyp
, int x
, int y
)
24 struct obj
*otmp
= mksobj(otyp
);
35 let
= mkobjstr
[rn2(sizeof(mkobjstr
) - 1)];
39 CORPSE
+ ((let
> 'Z') ? (let
-'a'+'Z'-'@'+1) : (let
-'@'))
52 char let
= objects
[otyp
].oc_olet
;
57 otmp
->o_id
= flags
.ident
++;
61 otmp
->dknown
= index("/=!?*", let
) ? 0 : 1;
64 otmp
->quan
= (otmp
->otyp
<= ROCK
) ? rn1(6,6) : 1;
65 if(!rn2(11)) otmp
->spe
= rnd(3);
72 if(otmp
->otyp
>= CORPSE
) break;
73 #ifdef NOT_YET_IMPLEMENTED
74 /* if tins are to be identified, need to adapt doname() etc */
77 #endif /* NOT_YET_IMPLEMENTED */
78 /* fall into next case */
80 otmp
->quan
= rn2(6) ? 1 : 2;
90 if(!rn2(8)) otmp
->cursed
= 1;
91 if(!rn2(10)) otmp
->spe
= rnd(3);
98 if(otmp
->otyp
== WAN_WISHING
) otmp
->spe
= 3; else
100 (objects
[otmp
->otyp
].bits
& NODIR
) ? 11 : 4);
103 if(objects
[otmp
->otyp
].bits
& SPEC
) {
107 } else otmp
->spe
= rnd(2);
108 } else if(otmp
->otyp
== RIN_TELEPORTATION
||
109 otmp
->otyp
== RIN_AGGRAVATE_MONSTER
||
110 otmp
->otyp
== RIN_HUNGER
|| !rn2(9))
114 panic("impossible mkobj");
116 otmp
->owt
= weight(otmp
);
123 return(('@' <= c
&& c
<= 'Z') || ('a' <= c
&& c
<= 'z'));
127 weight(struct obj
*obj
)
129 int wt
= objects
[obj
->otyp
].oc_weight
;
130 return(wt
? wt
*obj
->quan
: (obj
->quan
+ 1)/2);
134 mkgold(long num
, int x
, int y
)
137 long amount
= (num
? num
: 1 + (rnd(dlevel
+2) * rnd(30)));
139 if((gold
= g_at(x
,y
)))
140 gold
->amount
+= amount
;
146 gold
->amount
= amount
;
148 /* do sth with display? */