;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; World Characters ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Use a "chr:" prefix for all symbols so they are easily identified. (define chr:dexter (make :nick '(dexter) :name "Dexter" :location loc:dexter :description (echos "A slightly crazy professor of computer science, armed with" "NP-complete weapons of mass destruction and wearing a" "bandolier with belts of deterministic finite automata. You" "smell cheap alcohol on his breath and you see him carrying a" "brown paper bag with something in it.") :plan (let ((speak (plan:speak-random (echos "Anybody here got some change?" "I need a Zima real bad!") "Hoo-boy! I sure am glad I'm not out in industry!" "Jobs are for suckers!" "Mu-ha-ha! MU-HA-HA!!!!! ....where am I?"))) (lambda (anim) (speak anim) 30)))) (define chr:brandon (make :nick '(brandon) :name "Brandon" :location loc:csuglab :description (echos "A large, mild-mannered geek in shorts, sporting a Microsoft" "Windows 2000 t-shirt.") :plan (let ((speak (plan:speak-random "It's hot in here!" "Pants? Who needs zee pants?" (echos "I am a towering demigod of" "inductively-defined love.") "[in deep voice: Rumble rumble rumble]"))) (lambda (anim) (speak anim) 30)))) (define chr:nadine (make :nick '(nadine) :name "Nadine" :location loc:csuglab :gender #t :description (echos "A typical female geek. Disheveled hair and a dazed smile" "adorns her pasty face. She is wearing a shirt which says" "'' in front and '' at the back. Usually she" "can be find in the CSuglab at odd hours, either coding," "playing unreal or both.") :plan (let ((speak (plan:speak-random "I've got the flag!" "Run, Brandon, run!" "WHY WON'T YOU DIE... Arrgh"))) (lambda (anim) (speak anim) 30)))) (define chr:jeff (make :nick '(jeff) :name "Jeff" :location loc:upsonb17 :description "A thin, neat geek. He seems disturbed." :plan (let ((speak (plan:speak-random "So...have you seen Walter, Hubert or Emmanuel?" "So...guess what I read on USENET?" "So...that's disturbed." "Has anyone read news recently?" "Must....read....news...." "So, um...guess what I read on news?"))) (lambda (anim) (speak anim) 10)))) (define chr:ralph (make :nick '(ralph) :name "Ralph" :location loc:graduate :description (echos "A quiet graduate student. You think he might have something" "to say, but he doesn't look responsive."))) (define chr:ada (make :nick '(ada) :name "Ada" :location loc:lounge :gender #t :description (echos "An excitable young lady in Victorian garb and a charming" "British accent with flowing, silky hair and long, sensuous" "fingers that glide over, among other things, keyboards. She" "seems like a brilliant programmer and mathematician, and you" "wonder what else might be hiding behind the thin facade of" "Victorian propriety...") :plan (let ((speak (plan:speak-random (echos "Hey baby. Ever been in a room with a" "programmer, a bottle of honey, latex" "gloves and a riding crop?") (echos "(saucily) Anybody want to find out how" "many 19th Century programmers it takes" "to screw in a lightbulb?") (echos "I've been noticing you noticing me. What" "are you doing later tonight?") "Have you seen Professor Kozen?"))) (lambda (anim) (speak anim) 30)))) (define chr:pizzaman (make :nick '(pizzaman) :name "The Singing Pizza Delivery Man" :location loc:vending :description (echos "This poor soul has decided to deliver singing pizzas for the" "rest of his life."))) (define chr:eli (make :nick '(eli) :name "Eli" :location loc:eli :description (echos "A big, smelly, unshaven, large Israeli man imbued with the" "power of Scheme. Mortals tremble before the might of the" "Lambda.") :plan (let ((random-saying (plan:speak-random "Eh, do you like Depeche Mode?" (echos "You would have been a better child if your" "mother had conceived with Emacs!") "Anything you can do, Emacs can do better." "Ey, you Americans are soft!" "Try this: www.cs.cornell.edu/eli/swindle/emacs.html" "Ah! You are staring blankly! You do not understand" "the lambda calculus!" (echos "Watch me crash anything and everything with my" "((lambda (x) (x x)) (lambda (x) (x x)))!") "[Hebrew Explitives]!" "Emacs!")) (motion (plan:round-robin loc:atrium loc:eatory loc:eli)) (on-enter (plan:action-place (cons loc:atrium (echos "~a scratches his armpit, mumbling something" "about food.")) (cons loc:eatory (echos "~a lumbers into the eatory and buys himself" "a corned beef sandwich, refusing to join" "the sprawled professors, muttering: Must" "reduce scheme code I saw on a newsgroup" "to seven lines.")))) (on-leave (plan:action-place (cons loc:eatory "~a pats his stomach contentedly.")))) (lambda (anim) (on-leave anim) (motion anim) (on-enter anim) (insert-event 45 (thunk (random-saying anim))) 90)))) (define chr:pikachu (make :nick '(pikachu) :name "Pikachu" :location loc:closet1 :description (echos "No. 25 Pikachu: Pikachu, the electric pokemon. Pikachu is" "an electric pokemon of the rat family. It's small size" "gives pikachu impresive speed and agility. When angered" "Pikachu is able to emmit over 20,000 volts of electricity" "and should therefore be handled with care. Pikachu is" "delicately with with strange carvings. Pikachu was" "obviously crafted by some deranged Japanese game designer" "decades ago.") :plan (let ((speak (plan:speak-random "Pika Pika Pi Pikachu!"))) (lambda (anim) (speak anim) 100))))