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? */