! Shmitty's contains several NPCS: ! Phil Erup the bartender NPC Phil "Phil the bartender" with description print "His nametag says ~Phil Erup~.", name 'phil' 'erup' 'the' 'bartender' 'barkeep' 'bar' 'tender' 'nametag', golfcounter 0, life [; voxto(self,actor,"No thanks."); rtrue; ], daemon [; self.live(); ], NPC_hear [o s a b c t p; if (o ofclass phone && o.connection) p = (o.connection).caller; else p = o; switch(s) { phil: switch(a) { ##NotUnderStood: self.huh(o); ##give: if (b ofclass shot) { if (~~SameScope(p,self)) { voxto(self,o,"You'll have to come to the bar to order drinks.",-4); rfalse; } if (b == golfcart) { self.golfcounter++; switch(self.golfcounter) { 1: voxto(self,o,"Sorry, what was that?",-1); default: emit(self,"Phil leans forward and motions you closer.^"); whisperto(self,o,"The man who shot your uncle is named Ferdinando el Toro."); } rfalse; } if (parent(b)) { voxto(self,o,"You've already got one of those.",-4); rfalse; } voxto(self,o,"Sure!",-3); emit(self,"After some graceful manipulation of bottles and taps, Phil plunks the shot onto the bar.^"); move b to bar; } else self.def_hear(o,s,a,b,c); default: self.def_hear(o,s,a,b,c); } default: ! s must be a string switch(a) { ! NPC library messages -3: if (b==self) switch(self.talktopic) { 'drink': voxto(self,o,"What would you like?"); self.talktopic = 0; default: voxto(self,o,"Really."); } -4: if (b==self) switch(self.talktopic) { 'drink': voxto(self,o,random("Suit yourself.","Maybe some other time.")); self.talktopic = 0; default: voxto(self,o,"Ah."); } -6: if (b==self) { self.SetPro(c); switch(c) { phil: if (o==player) voxto(self,o,"Read the nametag."); else if (p==player) voxto(self,o,"This is Phil speaking."); default: self.def_hear(o,s,a,b,c); } } -7: if (b==self) { self.SetPro(c); switch(c) { phil: voxto(self,o,"Who cares?"); default: self.def_hear(o,s,a,b,c); } } -8: if (b==self) { self.SetPro(c); switch(c) { phil: voxto(self,o,"Uh, I'm a bartender. Want a drink?"); self.talktopic = 'drink'; playerobj: voxto(self,o,"Well, some people like to order drinks."); self.talktopic = 'drink'; default: self.def_hear(o,s,a,b,c); } } -9: if (b==self) { self.SetPro(c); switch(c) { default: self.def_hear(o,s,a,b,c); } } -11: if (b==self) { self.SetPro(c); switch(c) { phil: voxto(self,o,"I work here."); default: self.def_hear(o,s,a,b,c); } } -12: if (b==self) voxto(self,o,"Hrm."); -13: if (b==self) { self.SetPro(c); switch(c) { playerobj: if (o==player) voxto(self,o,"You look mostly sober..."); default: self.def_hear(o,s,a,b,c); } } -14: if (b==self) voxto(self,o,"See yuh.",-14,o); -15: if (b==self) voxto(self,o,"Whats so funny?",-1,o); -16: if (b==self) switch(o) { default: voxto(self,o,"Doh.",-15,o); } -17: if (b==self) voxto(self,o,"What?",-1,o); -18: if (b==self) voxto(self,o,"Erm...",-17,o); -19: if (b==self) { self.SetPro(c); switch(c) { phil: voxto(self,o,"It's my job."); default: self.def_hear(o,s,a,b,c); } } -20: if (b==self) voxto(self,o,"Hey, maybe a drink would help.",-1,o); self.talktopic = 'drink'; -21: if (b==self) voxto(self,o,"Ask me for a drink."); self.talktopic = 'drink'; -22: if (b==self) voxto(self,o,"Mmm."); -23: if (b==self) { self.SetPro(c); if (ObjectSees(b,c)) voxto(self,o,"Right here."); else switch(c) { default: self.def_hear(o,s,a,b,c); } } -24: if (b==self) { self.SetPro(c); if (c in b) switch(c) { default: self.def_hear(o,s,a,b,c); } else self.def_hear(o,s,a,b,c); } -25: if (b==self) voxto(self,o,"Phil... Phil Erup."); -27: if (b==self && c==self) { voxto(self,o,"Right now we've got:"); objectloop(t ofclass shot) if (t.onmenu) voxto(self,o,t.short_name); } -28: if (b==self) { switch(c) { shmittys: voxto(self,o,"Yes. How can I help you?"); default: self.def_hear(o,s,a,b,c); } } ! user messages 3: voxto(self,o,"My quest is to quench the thirst of weary travellers."); 4: voxto(self,o,"Clear."); 5: voxto(self,o,"Supercuts. Nice, eh?"); 11: voxto(self,o,"Cheesecake and whip cream for everyone!"); 13: voxto(self,o,"I'm a Citizen, of course!"); 15: self.def_hear(o,s,a,b,c); if (~~parent(marmosethead)) move marmosethead to outside; default: self.def_hear(o,s,a,b,c); } } ], Brain [; ], has transparent proper static animate; Class Shot with onmenu 1; Shot beer "beer" with name 'beer'; Shot xyzzy "XYZZY" with name 'xyzzy'; Shot vodka "shot of vodka" with name 'vodka' 'shot' 'of'; Shot whisky "whisky" with name 'whisky'; Shot tequila "shot of tequila" with name 'tequila' 'shot' 'of'; Shot orgasm "Orgasm" with name 'orgasm'; Shot jaggermeister "Jaggermeister" with name 'jaggermeister'; Shot zambouka "Zambouka" with name 'zambouka'; Shot drambuie "shot of Drambuie" with name 'drambuie' 'shot' 'of'; Shot golfcart "broken-down golf cart" with name 'broken' 'down' 'golf' 'cart' 'golfcart', onmenu 0;