From decwrl!elroy.jpl.nasa.gov!usc!zaphod.mps.ohio-state.edu!think!mintaka!mit-eddie!uw-beaver!zephyr.ens.tek.com!tekred!saab!billr Sat Mar 3 17:30:26 PST 1990 Article 814 of comp.sources.games: Path: decwrl!elroy.jpl.nasa.gov!usc!zaphod.mps.ohio-state.edu!think!mintaka!mit-eddie!uw-beaver!zephyr.ens.tek.com!tekred!saab!billr From: billr@saab.CNA.TEK.COM (Bill Randle) Newsgroups: comp.sources.games Subject: v08i095: castle - adventure game with character graphics, Part03/04 Message-ID: <5204@tekred.CNA.TEK.COM> Date: 23 Feb 90 00:06:03 GMT Sender: news@tekred.CNA.TEK.COM Lines: 1813 Approved: billr@saab.CNA.TEK.COM Submitted-by: Ted Wisniewski Posting-number: Volume 8, Issue 95 Archive-name: castle/Part03 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'FILES/open.scr' <<'END_OF_FILE' X X Welcome To The Wizards Castle X X o____ XGame By: |T.W.\ Graphics by: X |____/ X Ted Wisniewski | Laurrianne Olcott & X | X | Ted Wisniewski X | X #-_-_-_-_-_-_-_-# X #-_-_-_-_-# | | #-_-_-_-_-# X | o o | [ [] 0 [] ] | o o | X | | | | | | X | |_-___-___-___-| |-___-___-___-_| | X | ] [ ] [ | X | ] o o o [ _______ ] o o o [ | ----_________ X_____----- | ] [ ||||||| ] [ | X | ] [ ||||||| ] [ | X _-_-|_____]--------------[_|||||||_]--------------[_____|-_-_ X ( (__________------------_____________-------------_________) ) X (for help: castle -h ) END_OF_FILE if test 1432 -ne `wc -c <'FILES/open.scr'`; then echo shar: \"'FILES/open.scr'\" unpacked with wrong size! fi # end of 'FILES/open.scr' fi if test -f 'INCLUDE/monst.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'INCLUDE/monst.h'\" else echo shar: Extracting \"'INCLUDE/monst.h'\" \(17938 characters\) sed "s/^X//" >'INCLUDE/monst.h' <<'END_OF_FILE' X X X Xtypedef struct X{ X char monster[15]; X int m_lvl; X int ability; X int m_hp; X int m_scr; X}monster; X X# define DAM 3 /* Bare Hand Damage */ X# define MAX_MON 60 X# define DEAD -1 X Xmonster m[MAX_MON]; X Xmonster m_temp; Xint damag; X Xstatic short mon_scr[25][12][27] = { X X /*#0 Wizard or Magician */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,44,45,32,32,32,32, X 96,32,32,32,32,46,32,32,32,32,39,32,35}, X {35,32,32,32,32,32,32,47,124,32,32,32,32,32, X 32,32,92,32,32,124,32,32,47,32,32,32,35}, X {35,32,32,32,32,47,42,40,124,32,32,32,32,32, X 32,96,32,46,92,124,47,46,32,39,32,32,35}, X {35,32,32,32,47,47,32,44,32,95,95,95,32,64, X 45,45,42,32,32,79,32,45,45,45,45,32,35}, X {35,32,32,32,39,40,40,45,45,45,45,64,124,32, X 32,46,32,39,47,124,92,96,32,46,32,32,35}, X {35,32,32,32,47,32,32,41,44,32,124,92,124,32, X 32,32,47,32,32,124,32,32,92,32,32,32,35}, X {35,32,32,47,32,32,32,32,40,92,124,32,32,46, X 32,32,32,32,32,46,32,32,32,32,32,46,35}, X {35,32,47,32,32,32,32,32,32,32,92,32,32,32, X 32,32,32,32,32,46,32,32,32,32,32,32,35}, X {35,47,32,32,32,32,32,32,32,32,32,124,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,92,47,92,47,92,47,92,47,92,47,47,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #1 Spider */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,47,45,92,32,32,32,47,45,124,32, X 124,45,92,32,32,47,47,45,92,32,32,32,35}, X {35,32,92,47,32,32,32,92,32,47,32,32,124,32, X 124,32,32,92,47,47,32,32,32,92,32,32,35}, X {35,32,47,32,92,32,32,32,47,32,32,32,124,32, X 124,32,32,47,92,32,32,32,32,32,92,32,35}, X {35,47,32,32,32,32,92,47,32,92,32,32,124,32, X 124,32,47,47,32,92,32,32,32,32,32,92,35}, X {35,32,32,32,32,32,47,32,92,32,92,32,124,95, X 124,47,47,32,32,32,92,32,32,32,32,32,35}, X {35,95,95,95,95,47,95,95,95,95,92,92,40,94, X 41,47,95,95,95,95,95,92,95,95,95,95,35}, X {35,32,32,32,47,32,32,32,32,32,32,47,32,123, X 125,32,32,32,32,32,32,32,92,32,32,32,35}, X {35,32,32,47,32,32,32,32,32,32,124,32,32,32, X 32,124,32,32,32,32,32,32,32,92,32,32,35}, X {35,95,47,32,32,32,32,32,32,32,32,92,95,95, X 47,32,32,32,32,32,32,32,32,32,92,95,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /*#2 Dragon fly or Serpent */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,92,92,92,92,32,32,32,32,32,32,92,32,32, X 124,32,32,32,47,32,32,32,32,32,47,47,35}, X {35,92,45,45,45,92,32,32,32,32,32,32,92,92, X 124,47,94,47,32,32,32,32,32,47,32,45,35}, X {35,45,45,45,32,32,32,92,32,32,45,45,45,42, X 124,32,42,32,45,45,45,32,47,32,32,32,35}, X {35,92,45,45,45,32,32,32,92,32,32,32,47,32, X 94,32,32,32,92,32,32,47,32,32,32,45,35}, X {35,92,92,45,45,45,32,32,92,32,32,40,79,32, X 32,79,41,124,32,47,32,32,45,45,45,47,35}, X {35,32,32,92,92,92,45,45,45,32,92,32,47,96, X 45,45,94,47,32,32,32,45,45,47,47,47,35}, X {35,32,32,32,32,92,92,92,45,45,47,32,32,32, X 32,47,45,45,32,45,47,47,47,47,32,32,35}, X {35,92,124,124,32,32,32,92,92,124,32,32,32,47, X 45,47,47,47,47,32,32,32,32,32,32,32,35}, X {35,92,32,124,32,32,32,32,32,124,32,32,32,124, X 95,95,95,32,32,32,32,32,32,32,32,32,35}, X {35,95,92,124,95,32,32,32,32,47,92,32,32,32, X 92,32,32,92,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #3 Group of civilians or people */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,64,64, X 32,96,59,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,60,95, X 32,32,32,92,32,32,32,32,32,32,32,32,35}, X {35,126,126,44,32,32,32,32,32,32,32,32,32,32, X 32,47,32,32,92,32,32,32,32,32,32,32,35}, X {35,32,64,64,32,32,32,32,32,32,32,32,32,32, X 47,32,32,32,32,92,32,32,32,32,44,126,35}, X {35,32,95,62,32,32,32,32,44,126,126,59,32,32, X 32,32,32,32,32,32,32,32,32,32,64,64,35}, X {35,92,32,32,32,32,32,32,64,64,32,96,59,32, X 32,59,126,126,44,32,32,32,32,32,60,95,35}, X {35,32,92,59,126,126,44,32,60,95,32,32,92,32, X 59,39,32,64,64,32,32,44,126,126,59,32,35}, X {35,32,59,39,32,64,64,32,32,32,47,32,32,32, X 47,32,32,95,62,32,32,64,64,32,96,59,35}, X {35,32,47,32,32,95,62,32,32,47,32,32,32,47, X 32,32,92,32,32,32,32,60,95,32,32,92,35}, X {35,47,32,32,92,32,32,32,32,32,32,32,47,32, X 32,32,32,92,32,32,32,32,32,47,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /*#4 warrior */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,124,32,32,32, X 32,32,124,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,124,92,95,33, X 95,47,124,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,92,47,95,32, X 95,92,47,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,47,92,32,95, X 32,47,92,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,44,42,32,42,32,42,46,92,95, X 47,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,42,39,32,32,32,32,32,32,32,96,42, X 32,92,95,95,95,32,32,32,32,32,32,32,35}, X {35,32,42,32,32,32,32,32,118,32,32,32,32,32, X 42,32,32,32,32,92,32,32,32,32,32,32,35}, X {35,32,42,32,32,32,32,62,42,60,32,32,32,32, X 42,37,32,33,32,124,32,32,32,32,32,32,35}, X {35,32,32,42,32,32,32,32,94,32,32,32,32,42, X 32,32,32,124,32,124,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #5 priest */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,45,124,45, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,47,32,92, X 32,32,32,32,32,32,32,46,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,47,45,124,45, X 92,32,32,96,32,32,32,32,32,32,32,39,35}, X {35,32,32,32,32,32,32,32,32,40,95,95,118,95, X 95,41,32,32,32,92,32,124,32,47,32,32,35}, X {35,32,32,32,32,32,32,32,32,123,32,64,32,64, X 41,32,32,42,32,45,40,43,41,45,32,42,35}, X {35,32,32,32,32,32,32,32,33,47,32,32,45,32, X 92,32,32,32,32,47,32,124,32,92,32,32,35}, X {35,32,32,32,32,32,32,40,42,41,32,32,32,32, X 32,92,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,124,47,47,32,32,32, X 32,124,32,39,32,32,32,46,32,32,32,96,35}, X {35,32,32,32,32,32,32,47,45,32,32,32,32,118, X 92,47,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,47,32,32,32,32,32,32,32, X 124,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /*#6 Headhunter or Cannibal */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,92,92,92,124,124, X 124,47,47,47,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,46,32,32,61,61,61,61, X 61,61,61,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,47,94,92,124,32,79,32,124, X 32,79,32,124,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,92,32,47,32,92,32,95,95, X 95,32,47,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,35,32,32,32,95,124,32, X 124,95,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,40,35,41,32,40,32,32,32, X 32,32,41,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,35,92,47,47,124,42,32, X 42,124,92,92,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,35,92,47,40,32,32,42, X 32,32,41,47,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,35,32,32,32,61,61,61, X 61,61,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,35,32,32,32,40,32,94, X 32,41,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X /* #7 Sphinx or Demon */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,41,32,32,32,40,32,32, X 32,32,32,32,32,32,32,96,32,32,96,40,35}, X {35,32,32,32,32,32,32,124,92,124,47,124,32,32, X 32,32,32,32,32,32,32,32,96,32,41,96,35}, X {35,32,32,32,32,32,123,96,64,32,64,39,125,32, X 32,32,32,32,32,32,32,96,32,41,95,96,35}, X {35,32,95,95,32,32,32,40,47,94,92,41,32,32, X 32,32,32,32,32,32,32,32,32,32,92,95,35}, X {35,40,40,40,92,32,32,124,96,45,39,124,32,32, X 32,32,32,32,32,32,32,32,32,32,32,64,35}, X {35,32,32,92,32,92,47,56,45,56,45,56,92,32, X 32,32,95,95,32,32,32,32,32,32,32,96,35}, X {35,32,32,32,92,124,32,96,96,44,39,39,44,32, X 92,47,32,32,92,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,124,124,32,32,32,32,32,124,47, X 92,32,92,32,32,92,32,32,32,32,32,32,35}, X {35,32,32,32,32,124,124,92,32,44,32,47,45,45, X 45,45,41,41,41,92,92,45,45,45,45,45,35}, X {35,32,32,32,40,40,40,124,95,95,95,95,124,32, X 32,32,32,32,32,32,41,41,41,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #8 Cloud Beast */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,44,44,32,44,32,32,32,32,35}, X {35,32,32,32,32,32,44,44,96,44,44,32,44,96, X 44,32,44,96,32,39,96,44,32,32,32,32,35}, X {35,32,32,32,44,96,32,64,64,32,32,96,64,64, X 32,96,39,64,64,32,39,44,96,32,32,32,35}, X {35,32,44,96,39,111,111,96,39,46,32,32,96,39, X 32,46,32,96,39,32,39,44,96,32,32,32,35}, X {35,96,96,39,32,96,39,32,32,32,32,39,46,32, X 32,64,64,32,39,39,44,96,32,32,32,32,35}, X {35,32,64,64,46,32,46,32,64,64,32,32,32,32, X 46,96,39,39,44,96,96,32,32,32,32,32,35}, X {35,32,96,39,32,64,64,32,96,39,32,39,64,64, X 32,44,44,96,32,32,32,32,32,32,32,32,35}, X {35,32,46,32,32,96,39,39,46,39,32,44,96,39, X 96,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,64,64,32,39,32,46,44,44,44,96,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,96,96,96,96,96,96,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #9 Devilish Character */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,96,32,32,32,32,40,32,32,32,41, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,123,32,32,32,32,40,32,96,32,47,32, X 41,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,123,125,32,32,32,44,40,64,32,64,41, X 96,44,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,40,40,41,41,32,32,96,123,123,45,125,125, X 96,125,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,92,92,32,32,40,45,123,123,123,125, X 45,41,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,92,92,47,47,32,123,123,125,32, X 32,92,92,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,92,92,47,32,32,123,41,32, X 32,92,47,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,92,92,32,32,125,32,32, X 32,32,124,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,124,92,92,32,32,32,32, X 32,32,124,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* # 10 Robot */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,40,92,47,41,32,32,32,32,32,32,118,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,40,41,32,32,32,40,32,32,40,32,41,32, X 32,41,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,40,41,32,32,124,92,40,32,32,32,41, X 47,124,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,40,41,32,96,40,32,42,32,42,32, X 41,39,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,40,41,32,62,32,32,118,32,32, X 60,32,32,32,32,32,32,47,92,32,32,32,35}, X {35,32,32,32,32,32,40,40,32,32,40,45,41,32, X 32,41,41,41,41,41,41,32,32,41,32,32,35}, X {35,32,32,32,32,32,32,40,95,32,32,32,32,32, X 95,41,32,32,32,32,32,92,47,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,40,32,94,32,41, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,40,95,124,95,41, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #11 Griffon */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,41,41,32,32,32,32,32,32,92,92,32,32,32, X 32,32,32,94,92,41,41,47,94,32,32,32,35}, X {35,41,41,41,41,32,32,32,32,92,92,92,92,32, X 32,40,47,32,32,68,32,95,68,32,32,32,35}, X {35,41,41,41,41,32,32,95,95,92,92,92,32,92, X 40,47,32,32,32,32,41,41,41,41,32,32,35}, X {35,41,124,41,39,46,39,32,44,32,92,92,92,32, X 92,32,32,32,32,92,41,45,39,41,32,32,35}, X {35,32,41,92,39,32,32,32,32,96,32,32,32,92, X 32,39,32,32,32,124,92,95,32,32,32,32,35}, X {35,32,32,32,124,95,95,95,95,41,41,41,32,32, X 32,124,95,95,95,95,95,95,41,41,41,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #12 Druid */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,47, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,47,124, X 32,32,32,32,32,32,39,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,47,32,124, X 46,32,96,32,46,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,47,40,42,124, X 32,92,124,47,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,61,61,61,61,61,61, X 45,45,64,45,45,32,45,32,32,45,32,32,35}, X {35,32,32,32,32,32,32,32,123,64,34,64,96,125, X 32,47,124,92,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,44,39,45,96,41,96, X 39,32,36,32,96,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,47,40,32,96,32,39, X 92,32,36,32,32,32,96,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,47,32,32,41,41,32,32, X 32,92,36,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,124,32,124,32,32,32,32,32, X 32,40,36,41,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* #13 Wizard #2 */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,47, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,47,124, X 32,32,32,32,32,32,39,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,47,32,124, X 46,32,96,32,46,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,47,40,42,124, X 32,92,124,47,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,61,61,61,61,61,61, X 45,45,64,45,45,32,45,32,32,45,32,32,35}, X {35,32,32,32,32,32,32,32,123,64,34,64,96,125, X 32,47,124,92,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,44,39,45,96,41,96, X 39,32,36,32,96,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,47,40,32,96,32,39, X 92,32,36,32,32,32,96,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,47,32,32,41,41,32,32, X 32,92,36,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,124,32,124,32,32,32,32,32, X 32,40,36,41,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X X /* # 14 Fighter */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,92, X 47,94,92,47,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,33,124, X 95,118,95,124,33,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,124, X 111,32,111,124,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,40, X 39,95,96,41,32,32,32,32,32,32,32,32,35}, X {35,32,32,92,124,47,32,32,32,32,32,95,95,95, X 47,32,92,95,95,95,32,32,32,32,32,32,35}, X {35,45,45,45,42,45,45,123,40,92,32,124,32,32, X 95,32,95,32,32,124,32,32,32,32,32,32,35}, X {35,32,32,47,124,92,32,32,32,92,92,124,124,92, X 86,32,86,47,124,124,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,92,95,124,32, X 124,32,124,32,124,124,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,47,61,45,45,45,45,45, X 124,32,124,32,92,47,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,47,32,32,95,95,95,95,46, X 44,32,32,92,32,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X }, X /* #15 Dragon */ X { X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,32,32, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,32,32,32,32,32,32,44,124, X 32,32,32,32,32,32,32,32,32,32,32,32,35}, X {35,32,32,32,92,92,32,32,32,32,32,32,124,32, X 92,32,32,32,32,32,47,32,32,32,32,32,35}, X {35,32,32,32,92,32,92,32,32,32,46,32,32,92, X 32,46,92,32,32,47,47,32,32,32,32,32,35}, X {35,32,32,32,92,32,32,32,92,40,64,96,34,39, X 39,64,41,47,32,32,47,32,32,32,32,32,35}, X {35,32,32,32,32,92,32,32,44,96,46,32,96,45, X 45,39,47,32,32,47,32,32,32,32,32,32,35}, X {35,32,32,32,32,32,92,39,32,32,96,44,40,41, X 40,41,32,47,32,124,32,32,32,32,32,32,35}, X {35,32,32,32,44,39,32,32,32,32,32,32,34,32, X 34,92,47,32,32,124,32,32,32,32,32,32,35}, X {35,32,32,32,124,32,32,32,32,32,32,32,32,32, X 32,32,124,32,47,32,32,32,32,32,32,32,35}, X {35,32,32,40,40,40,32,95,95,95,95,95,95,95, X 95,47,41,41,41,32,32,32,32,32,32,32,35}, X {35,35,35,35,35,35,35,35,35,35,35,35,35,35, X 35,35,35,35,35,35,35,35,35,35,35,35,35} X } X}; END_OF_FILE if test 17938 -ne `wc -c <'INCLUDE/monst.h'`; then echo shar: \"'INCLUDE/monst.h'\" unpacked with wrong size! fi # end of 'INCLUDE/monst.h' fi if test -f 'magic.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'magic.c'\" else echo shar: Extracting \"'magic.c'\" \(13322 characters\) sed "s/^X//" >'magic.c' <<'END_OF_FILE' X# include X# include "INCLUDE/windows.h" X# include "INCLUDE/castle.h" X# include "INCLUDE/monst.h" X/* X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X+ + X+ Routines in this Module: + X+ + X+ spells() - Determines the spell chosen and executes it. + X+ compass() - Creates a magic compass for the player to tell + X+ which direction he faces. + X+ spell_counts() - Keeps a running total of the number of moves made + X+ since the spell was invoked, to determine when it + X+ should end. + X+ detect_trap() - Notifies the player if a trap is ahead of him. + X+ Must be cast by the player. + X+ fing_fire() - Does damage to a monster that is opposing the player. + X+ shock_em() - Does shock damage to an opposing monster. + X+ exp_spell() - Give spell descriptions to the player upon request. + X+ print_mess() - Prints messages to the player via the message window. + X+ + X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X X This is a public domain program, I have no objection to modifications Xmade on it or use for some other reason so long as this notice remains intact. X X X Part of: castle Ted Wisniewski X Author: Plymouth State College X Plymouth NH, X 03264 X Copyright() PSC X*/ X Xspells() X{ X unsigned char spell; X int row,col,level; X int temp; X X wmove(message_win,0,0); X print_mess("Cast which spell (a-k). ",0,0); X wrefresh(message_win); X spell = getch(); X wclear(message_win); X wrefresh(message_win); X switch (spell) { X case 'a' : /* Spell choice "a" tell where you are. */ X if(char_stats.spellpoints > 0){ X sprintf(buffer,"Dungeon Coordinates are :"); X print_mess(buffer,0,0); X sprintf(buffer,"row: %d ",p->row); X print_mess(buffer,1,0); X sprintf(buffer,"col: %d ",p->col); X print_mess(buffer,2,0); X sprintf(buffer,"level: %d ",p->level); X print_mess(buffer,3,0); X sprintf(buffer,"Hit any Key to Continue."); X print_mess(buffer,4,0); X char_stats.spellpoints--; X print_stats(); X print_mess("",4,25); X wrefresh(message_win); X wgetch(message_win); X } X else{ X clr_mess_win(); X wmove(message_win,0,0); X waddstr(message_win,"Not Enough Spellpoints. "); X } X break; X X case 'b': /* Turn on the compass. */ X if(char_stats.spellpoints > 1){ X char_stats.spellpoints -= 2; X print_stats(); X clr_mess_win(); X ct_compass = 100; X compass(); X p->compass_on = TRUE; X } X else{ X clr_mess_win(); X sprintf(buffer,"Not Enough Spellpoints."); X print_mess(buffer,0,0); X p->compass_on = FALSE; X } X break; X case 'c': /* teleport player. */ X if(!known[2]) X print_mess("You do not know that spell.",0,0); X else X if(char_stats.spellpoints > 2){ X teleport(); X char_stats.spellpoints -= 3; X print_stats(); X }else{ X clr_mess_win(); X print_mess("Not Enough Spellpoints.",0,0); X } X break; X case 'd': /* Cure some minor damage. */ X if(!known[3]) X print_mess("You do not know that spell.",0,0); X else X if(char_stats.spellpoints < 2 ){ X clr_mess_win(); X print_mess("Not Enough Spellpoints.",0,0); X } X else{ X clr_mess_win(); X char_stats.spellpoints -= 2; X print_mess("You feel Better.",0,0); X if(char_stats.hitpoints + 5 >= char_stats.max_hp){ X char_stats.hitpoints = char_stats.max_hp; X print_stats(); X } X else{ X char_stats.hitpoints += 5; X print_stats(); X } X } X wrefresh(message_win); X break; X case 'e': /* detect traps on */ X if(!known[4]) X print_mess("You do not know that spell.",0,0); X else X if(char_stats.spellpoints < 2 ){ X clr_mess_win(); X print_mess("Not Enough Spellpoints.",0,0); X }else{ X detect_trap(); X char_stats.spellpoints -= 2; X print_stats(); X ct_dtrap = 100; X detect = ON; X } X break; X case 'f': /* hit monster with finger fire */ X if(!known[5]) X print_mess("You do not know that spell.",0,0); X else X if(char_stats.spellpoints < 3){ X clr_mess_win(); X print_mess("Not Enough Spellpoints.",0,0); X }else{ X if(mon_faced) X fing_fire(); X else X print_mess("Oops No Monster",0,0); X char_stats.spellpoints -= 2; X } X print_stats(); X break; X case 'g': if(!known[6]) X print_mess("You Do not Know that Spell.",0,0); X else X shock_em(); /* Give the monster a shock */ X break; X case 'h': X if(char_stats.spellpoints >= 4 && known[7]) X med_heal(); X else{ X if(!known[8]) X print_mess("You Do not Know that Spell.",0,0); X else X print_mess("Not Enough Spellpoints.",0,0); X } X break; X case 'i': X if(char_stats.spellpoints >= 6 && known[10]){ X switch(p->face){ X case 0: if(p->row != 1) X p->row--; X break; X case 1: if(p->col != 72) X p->col++; X break; X case 2: if(p->row != 22) X p->row++; X break; X case 3: if(p->col != 1) X p->col--; X break; X } X char_stats.spellpoints -= 6; X print_stats(); X showit = TRUE; X }else{ X if(!known[1]) X print_mess("You do not know this spell.",0,0); X else X print_mess("Not Enough spellpoints.",0,0); X wrefresh(message_win); X } X break; X case 'j': X if(char_stats.spellpoints >= 8 && known[14]){ X if(rand()%100 < (70 + char_stats.level)){ X char_stats.spellpoints -= 8; X flame(); X print_stats(); X }else{ X print_mess("The Spell Failed.",0,0); X wrefresh(message_win); X char_stats.spellpoints -= 4; X print_stats(); X } X } X break; X case 'k': X if(char_stats.spellpoints >= 11 && known[16]){ X if(rand()%100 < (70 + char_stats.strength)){ X char_stats.spellpoints -= 11; X char_stats.hitpoints = char_stats.max_hp; X print_mess("YOU FEEL GREAT!!",0,0); X wrefresh(message_win); X char_stats.spellpoints -= 11; X print_stats(); X }else{ X print_mess("Your spell did not work.",0,0); X wrefresh(message_win); X char_stats.spellpoints -= 6; X print_stats(); X } X } X break; X X default: X clr_mess_win(); X sprintf(buffer,"Selection not found."); X print_mess(buffer,0,0); X } X wrefresh(message_win); X sleep(1); X clr_mess_win(); X} X Xcompass() X{ X wmove(compass_win,0,0); X wprintw(compass_win,"#########"); X wmove(compass_win,1,0); X wprintw(compass_win,"# N #"); X wmove(compass_win,2,0); X wprintw(compass_win,"# #"); X wmove(compass_win,3,0); X wprintw(compass_win,"# #"); X wmove(compass_win,4,0); X wprintw(compass_win,"#W + E#"); X wmove(compass_win,5,0); X wprintw(compass_win,"# #"); X wmove(compass_win,6,0); X wprintw(compass_win,"# #"); X wmove(compass_win,7,0); X wprintw(compass_win,"# S #"); X wmove(compass_win,8,0); X wprintw(compass_win,"#########"); X X switch (p->face) { X case NORTH: X wmove(compass_win,2,4); X waddch(compass_win,'^'); X wmove(compass_win,3,4); X waddch(compass_win,'|'); X break; X case EAST: X wmove(compass_win,4,5); X waddch(compass_win,'-'); X wmove(compass_win,4,6); X waddch(compass_win,'>'); X break; X case SOUTH: X wmove(compass_win,5,4); X waddch(compass_win,'|'); X wmove(compass_win,6,4); X waddch(compass_win,'v'); X break; X case WEST: X wmove(compass_win,4,3); X waddch(compass_win,'-'); X wmove(compass_win,4,2); X waddch(compass_win,'<'); X break; X } X wrefresh(compass_win); X} X Xmed_heal() X{ X int temp; X X temp = ((rand()%5)+1)+11; X if((char_stats.hitpoints += temp) >= char_stats.max_hp) X char_stats.hitpoints = char_stats.max_hp; X print_stats(); X print_mess("You feel Much better.",0,0); X} X Xteleport() X{ X int row,col; X clr_mess_win(); X sprintf(buffer,"Teleport to: "); X print_mess(buffer,0,0); X sprintf(buffer,"row : "); X print_mess(buffer,1,0); X wrefresh(message_win); X row = getint(1,7); X sprintf(buffer,"col : "); X print_mess(buffer,2,0); X wrefresh(message_win); X col = getint(2,7); X wrefresh(message_win); X if((row < 1) || (col < 1) || (row > 22) || (col > 72)){ X print_mess("Cannot teleport here.",4,0); X wrefresh(message_win); X }else X if(levels[p->level][row][col] == WALL){ X clr_mess_win(); X wrefresh(message_win); X print_mess("Spell failed.",0,0); X }else{ X p->row = row; X p->col = col; X showit = TRUE; X run_away = TRUE; X } X} X Xflame() X{ X if(mon_faced){ X damag = 15 + make_dam(5,4); X m_temp.m_hp -= damag; X sprintf(buffer,"You Toasted him for %d points",damag); X print_mess(buffer,2,0); X print_mess("of damage.",3,0); X wrefresh(message_win); X }else{ X print_mess("Oops, You are not facing a monster."); X wrefresh(message_win); X } X} X Xspell_counts() X{ X if(ct_compass == 1){ X wclear(compass_win); X wrefresh(compass_win); X ct_compass = 0; X p->compass_on = FALSE; X } X else X ct_compass--; X X if(ct_dtrap == 1){ X ct_dtrap = 0; X detect = OFF; X } X else X ct_dtrap--; X} X Xdetect_trap() X{ X int row,col; X X row = p->row; X col = p->col; X switch (p->face){ X case NORTH: X row--; X break; X case EAST : X col++; X break; X case SOUTH: X row++; X break; X case WEST : X col--; X break; X } X if(levels[p->level][row][col] == TRAP){ X print_mess("Trap Ahead, Beware.",0,0); X beep(); X } X if(levels[p->level][row][col] == T_DOOR){ X print_mess("Trap Door Ahead, Beware.",0,0); X beep(); X } X if(levels[p->level][row][col] == SPIN) X print_mess("Spinner Ahead.",0,0); X if(levels[p->level][row][col] == H_DRAIN) X print_mess("Something Ahead.",0,0); X X wrefresh(message_win); X} X Xfing_fire() X{ X int damag; X X m_temp.m_hp -= damag = (1 * char_stats.level); X wclear(message_win); X wrefresh(message_win); X sprintf(buffer,"He is Fried for %d points.",damag); X print_mess(buffer,0,0); X wrefresh(message_win); X sleep(1); X} X Xshock_em() X{ X if(char_stats.spellpoints < 5 && mon_faced){ X wclear(message_win); X print_mess("Not Enough Spellpoints.",0,0); X }else{ X if(rand()%100 < (75 + char_stats.intelligence)){ X damag = ((rand()%5)+1)+((rand()%5)+1)+((rand()%5)+1)+((rand()%5)+1); X m_temp.m_hp -= damag; X char_stats.spellpoints -= 5; X print_stats(); X wclear(message_win); X wrefresh(message_win); X sprintf(buffer,"He is Shocked for %d points.",damag); X print_mess(buffer,0,0); X wrefresh(message_win); X }else{ X print_mess("The Spell Fizzled.",0,0); X char_stats.spellpoints -= 3; X print_stats(); X } X } X sleep(1); X} X X Xexp_spell() X{ X char spell; X X wclear(message_win); X print_mess("Lookup which spell? (a-k) ",1,0); X wmove(message_win,1,27); X wrefresh(message_win); X spell = wgetch(message_win); X switch(spell){ X case 'a': print_mess("Detect Location : display",2,0); X print_mess("current dungeon coordinates.",3,0); X print_mess("Cost is 1 point.",4,0); X break; X case 'b': print_mess("Compass : display a magical",2,0); X print_mess("compass, with limited duration.",3,0); X print_mess("Cost is 2 points.",4,0); X break; X case 'c': print_mess("Teleport self : Move yourself to",2,0); X print_mess("a new dungeon location. Fails if",3,0); X print_mess("you try to teleport into a wall.",4,0); X print_mess("Cost is 3 points.",5,0); X break; X case 'd': print_mess("Cure Light Wounds : Heal for",2,0); X print_mess("Exactly 5 hipoints.",3,0); X print_mess("Cost is 3 points.",4,0); X break; X case 'e': print_mess("Detect : Warns you if something",2,0); X print_mess("harmful or strange is near",3,0); X print_mess("Cost is 3 points.",4,0); X break; X case 'f': print_mess("Finger fire : Does 1 hitpoint",2,0); X print_mess("times the casters level in damage",3,0); X print_mess("to a creature if successful.",4,0); X print_mess("Cost is 2 points.",5,0); X break; X case 'g': print_mess("Shocker : Does 4-20 points of",2,0); X print_mess("damage to a creature if successful.",3,0); X print_mess("Cost is 5 points.",4,0); X break; X case 'h': print_mess("Cure Medium : Restore 10-15 hitpoints",2,0); X print_mess("of damage, cost is 4 points.",3,0); X break; X case 'i': print_mess("Tunnel: Move through a wall in the ",2,0); X print_mess("direction you are facing.",3,0); X print_mess("Cost is 6 points. 10th level spell.",4,0); X break; X case 'j': print_mess("Flame: Does 15-35 points of",2,0); X print_mess("flame damage to a creature if",3,0); X print_mess("successful. Cost is 8 points.",4,0); X print_mess("14th level spell.",5,0); X break; X case 'k': print_mess("Restore: Heals you to max hitpoints.",2,0); X print_mess("Cost is 11 points. 16th level spell.",3,0); X break; X default: break; X } X print_mess("Hit a key to continue. ",6,0); X wrefresh(message_win); X wgetch(message_win); X wclear(message_win); X wrefresh(message_win); X} X Xprint_mess(ary,y,x) Xchar *ary; Xint y,x; X{ X wmove(message_win,y,x); X wprintw(message_win,"%s",ary); X} END_OF_FILE if test 13322 -ne `wc -c <'magic.c'`; then echo shar: \"'magic.c'\" unpacked with wrong size! fi # end of 'magic.c' fi if test -f 'monster.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'monster.c'\" else echo shar: Extracting \"'monster.c'\" \(18840 characters\) sed "s/^X//" >'monster.c' <<'END_OF_FILE' X X X/* This file contains all routines concerning monsters */ X X# include X# include X X# include "INCLUDE/windows.h" X# include "INCLUDE/monst.h" X# include "INCLUDE/items.h" X# include "INCLUDE/castle.h" X/* X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X+ Routines in this Module: + X+ + X+ combat() - All combat operations run from here. + X+ show_monst(mon) - Show the appropriate picture for mon. + X+ monst() - Set up monster configurations. + X+ make_dam(R,M) - Calculate damages R = rand_max, M = Multplier + X+ get_monst() - Choose an appropriate monster for this level. + X+ monst_att(mon) - Run monster attack routine. + X+ abil_one(mon) - Have monster hit you for damage. + X+ abil_two(mon) - Monster drains your strength. + X+ abil_three(mon) - Monster fries you. + X+ abil_four(mon) - The monster blasts you with an electric sphere. + X+ abil_five(mon) - The Creature drains your hitpoints. + X+ abil_six(mon) - The Creature chokes you for damage. + X+ abil_seven(mon) - The Creature burns you for damage. + X+ abil_eight(mon) - The Creature Breaths fire breath at you. + X+ abil_nine(mon) - The Creature Causes you to gasp for air. + X+ abil_ten(mon) - The Creature is capable of many of the above. + X+ abil_twelve(mon)- Does a big hit, not like abil_one which depends + X+ on monster level. + X+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ X X This is a public domain program, I have no objection to modifications Xmade on it or use for some other reason so long as this notice remains intact. X X X Part of: castle Ted Wisniewski X Author: Plymouth State College X Plymouth NH, X 03264 X Copyright() PSC X*/ Xcombat() X{ X int mon,hit,Au,test; X int run_att = FALSE; X char get; X X run_away = FALSE; X mon = get_monst(); /* Make more monsters so get_monst */ X m_killed = FALSE; /* can be used. */ X mon_faced = TRUE; X if(mon == WIN_CRE) X run_att = TRUE; X m_temp.m_hp = m[mon].m_hp; X show_monst(mon); X clr_mess_win(); X sprintf(buffer,"You face a %s.",m[mon].monster); X print_mess(buffer,0,0); X wrefresh(message_win); X while(!m_killed && !run_away){ X print_mess("F)ight R)un D)efend C)ast U)se L)ookup ",1,0); X wrefresh(message_win); X get = wgetch(message_win); X wmove(message_win,2,0); X switch (get){ X case 'f' : X case 'F' : test = (35 + char_stats.dexterity); X wclear(message_win); X if(rand()%50 < test){ X m_temp.m_hp -= hit = make_dam(d_val,d_mod); X wclear(message_win); X sprintf(buffer,"You did %d points of damage.",hit); X print_mess(buffer,2,0); X }else X print_mess("You Missed Him.",2,0); X wrefresh(message_win); X sleep(1); X if(m_temp.m_hp > DEAD) X monst_att(mon); X break; X case 'c' : X case 'C' : spells(); X if(!run_away) X if(m_temp.m_hp > DEAD) X monst_att(mon); X break; X case 'r' : X case 'R' : if(!run_att) X if(rand()%18 + 3 < char_stats.dexterity) X run_away = TRUE; X else{ X run_att = TRUE; X print_mess("You can\'t get away!",2,0); X wrefresh(message_win); X } X break; X case 'l' : X case 'L' : X exp_spell(); X break; X case 'u' : X case 'U' : X use_it(); X break; X case 'd' : X case 'D' : if(m_temp.m_hp > DEAD){ X char_stats.ac += 4; X monst_att(mon); X char_stats.ac -= 4; X } X break; X case RE_DRAW: X redraw(); X show_monst(mon); X break; X default : X break; X } X if(m_temp.m_hp < 0) X m_killed = TRUE; X if(char_stats.hitpoints < 0){ X strcpy(tmp.death_by,m[mon].monster); X death(); X } X } X mon_faced = FALSE; X if(m_killed){ X wclear(message_win); X sprintf(buffer,"You killed a %s. ",m[mon].monster); X print_mess(buffer,1,0); X if(mon == WIN_CRE){ X char_stats.experience += 50000; X strcpy(tmp.death_by,"Old Age"); X death(); X } X if(mon == 0) X mon = 1; X char_stats.gold += Au = 10 * (rand()%mon + 1); X sprintf(buffer,"You find %d in Gold. ",Au); X print_mess(buffer,2,0); X char_stats.experience += m[mon].m_hp; X gain_lvl(); X print_stats(); X wrefresh(message_win); X sleep(1); X } X wrefresh(message_win); X clr_mess_win(); X show_scr(); X} X Xshow_monst(m_num) Xint m_num; X{ X int row,col; X X wmove(view_win,0,0); X for(row=0;row<=11;row++) X for(col=0;col<=26;col++) X wprintw(view_win,"%c",mon_scr[m[m_num].m_scr][row][col]); X wrefresh(view_win); X wmove(command_win,0,0); X wrefresh(command_win); X} X Xmonst() X{ X /* First Level Monsters */ X X strcpy(m[0].monster,"Horde"); X m[0].m_lvl = 1; m[0].ability = 1; m[0].m_hp = 2; m[0].m_scr = 3; X X strcpy(m[1].monster,"Conjurer 1st"); X m[1].m_lvl = 1; m[1].ability = 1; m[1].m_hp = 4; m[1].m_scr = 0; X X strcpy(m[2].monster,"Spider"); X m[2].m_lvl = 1; m[2].ability = 2; m[2].m_hp = 3; m[2].m_scr = 1; X X strcpy(m[3].monster,"Magician 1st"); X m[3].m_lvl = 1; m[3].ability = 3; m[3].m_hp = 6; m[3].m_scr = 0; X X strcpy(m[4].monster,"Warrior 1st"); X m[4].m_lvl = 1; m[4].ability = 1; m[4].m_hp = 8; m[4].m_scr = 4; X X strcpy(m[5].monster,"Priest 1st"); X m[5].m_lvl = 1; m[5].ability = 5; m[5].m_hp = 5; m[5].m_scr = 5; X X strcpy(m[6].monster,"Flying Serpent"); X m[6].m_lvl = 1; m[6].ability = 6; m[6].m_hp = 7; m[6].m_scr = 2; X X /* Second Level Monsters */ X X strcpy(m[7].monster,"Cannibal"); X m[7].m_lvl = 2; m[7].ability = 1; m[7].m_hp = 7; m[7].m_scr = 6; X X strcpy(m[8].monster,"Illusionist"); X m[8].m_lvl = 2; m[8].ability = 3; m[8].m_hp = 11; m[8].m_scr = 0; X X strcpy(m[9].monster,"Priest 2nd"); X m[9].m_lvl = 2; m[9].ability = 5; m[9].m_hp = 12; m[9].m_scr = 5; X X strcpy(m[10].monster,"Warrior 2nd"); X m[10].m_lvl = 2; m[10].ability = 1; m[10].m_hp = 13; m[10].m_scr = 4; X X strcpy(m[11].monster,"Stinger"); X m[11].m_lvl = 2; m[11].ability = 2; m[11].m_hp = 6; m[11].m_scr = 1; X X /* Level 3 monsters */ X X strcpy(m[12].monster,"Mage 1st"); X m[12].m_lvl = 3; m[12].ability = 3; m[12].m_hp = 17; m[12].m_scr = 0; X X strcpy(m[13].monster,"Fire Lion"); X m[13].m_lvl = 3; m[13].ability = 7; m[13].m_hp = 21; m[13].m_scr = 7; X X strcpy(m[14].monster,"Swordsman"); X m[14].m_lvl = 3; m[14].ability = 1; m[14].m_hp = 19; m[14].m_scr = 14; X X strcpy(m[15].monster,"Brother 1st"); X m[15].m_lvl = 3; m[15].ability = 5; m[15].m_hp = 18; m[15].m_scr = 5; X X strcpy(m[16].monster,"Head Banger"); X m[16].m_lvl = 3; m[16].ability = 1; m[16].m_hp = 15; m[16].m_scr = 6; X X /* Level 4 monsters */ X X strcpy(m[17].monster,"Vapor Cloud"); X m[17].m_lvl = 4; m[17].ability = 9; m[17].m_hp = 18; m[17].m_scr = 8; X X strcpy(m[18].monster,"Minor Demon"); X m[18].m_lvl = 4; m[18].ability = 8; m[18].m_hp = 22; m[18].m_scr = 9; X X strcpy(m[19].monster,"Killer Robot"); X m[19].m_lvl = 4; m[19].ability = 1; m[19].m_hp = 18; m[19].m_scr = 10; X X strcpy(m[20].monster,"Griffon"); X m[20].m_lvl = 4; m[20].ability = 1; m[20].m_hp = 20; m[20].m_scr = 11; X X /* Level 5 monsters */ X X strcpy(m[21].monster,"Electric Knight"); X m[21].m_lvl = 5; m[21].ability = 4; m[21].m_hp = 21; m[21].m_scr = 14; X X strcpy(m[22].monster,"Red Dragon Fly"); X m[22].m_lvl = 5; m[22].ability = 7; m[22].m_hp = 16; m[22].m_scr = 2; X X strcpy(m[23].monster,"Druid "); X m[23].m_lvl = 5; m[23].ability = 4; m[23].m_hp = 19; m[23].m_scr = 12; X X strcpy(m[24].monster,"Master Mage"); X m[24].m_lvl = 5; m[24].ability = 3; m[24].m_hp = 26; m[24].m_scr = 13; X X strcpy(m[25].monster,"Wizard"); X m[25].m_lvl = 5; m[25].ability = 10; m[25].m_hp = 34; m[25].m_scr = 13; X X strcpy(m[26].monster,"Phantom"); X m[26].m_lvl = 5; m[26].ability = 11; m[26].m_hp = 23; m[26].m_scr = 9; X X /* level 6 monsters */ X X strcpy(m[27].monster,"Ninja"); X m[27].m_lvl = 6; m[27].ability = 13;m[27].m_hp = 25; m[27].m_scr = 14; X X strcpy(m[28].monster,"Head Master"); X m[28].m_lvl = 6; m[28].ability = 1; m[28].m_hp = 25; m[28].m_scr = 6; X X strcpy(m[29].monster,"High Priest"); X m[29].m_lvl = 6; m[29].ability = 5; m[29].m_hp = 27; m[29].m_scr = 5; X X /* level 7 monsters */ X X strcpy(m[30].monster,"Thunder Cloud"); X m[30].m_lvl = 7; m[30].ability = 4; m[30].m_hp = 27; m[30].m_scr = 8; X X strcpy(m[31].monster,"Flame Lion"); X m[31].m_lvl = 7; m[31].ability = 8; m[31].m_hp = 33; m[31].m_scr = 7; X X strcpy(m[32].monster,"Smoky Dragon"); X m[32].m_lvl = 7; m[32].ability = 8; m[32].m_hp = 42; m[32].m_scr = 15; X X /* level 8 monsters */ X X strcpy(m[33].monster,"Sleepy Dragon"); X m[33].m_lvl = 8; m[33].ability = 9; m[33].m_hp = 53; m[33].m_scr = 15; X X strcpy(m[34].monster,"Wraith"); X m[34].m_lvl = 8; m[34].ability = 11; m[34].m_hp = 39; m[34].m_scr = 9; X X /* level 9 monsters */ X X strcpy(m[35].monster,"Hungry Dragon"); X m[35].m_lvl = 8; m[35].ability = 9; m[35].m_hp = 64; m[35].m_scr = 15; X X /* level 10 monster (win creature) */ X X strcpy(m[36].monster,"The Wiz"); X m[36].m_lvl = 10;m[36].ability = 12;m[36].m_hp = 260;m[36].m_scr = 13; X X/* Ideas: Phantasmist, Holy Warder X*/ X} X Xmake_dam(rnd,mult) Xint rnd,mult; X{ X int total = 0,x; X X for(x=1;x<=mult;x++) X total += ((rand()%rnd)+1); Xreturn(total); X} X Xint get_monst() X{ X int min,max; X /* min = First monster in level group */ X /* max = Last monster in level group */ X /* returns choice from monsters of the*/ X /* level group. */ X X switch (p->level){ X case 1: min = 0; /* Relatively Easy */ X max = 7; X break; X case 2: min = 6; /* A little Tougher */ X max = 13; X break; X case 3: min = 10; /* Moderately Tough */ X max = 20; X break; X case 4: min = 16; /* Difficult */ X max = 27; X break; X case 5: min = 22; /* Very Difficult */ X max = 32; X break; X case 6: min = 29; X max = 36; X break; X } X return(rand()%((max + 1) - min) + min); X} X Xlose_lvl() X{ X int hitpt, sppt; X X if(char_stats.level < 35) X if(exp[char_stats.level] > char_stats.experience) X if(lvl_att[char_stats.level] == TRUE){ X hitpt = rand()%6 + 4; X sppt = rand()%2 + 1; X char_stats.hitpoints -= hitpt; X char_stats.max_hp -= hitpt; X char_stats.spellpoints -= sppt; X char_stats.max_spt -= sppt; X char_stats.level--; X known[char_stats.level+1] = FALSE; X lvl_att[char_stats.level+1] = FALSE; X lvl_att[char_stats.level] = TRUE; X print_stats(); X } X} X Xuse_it() X{ X char choice; X X start = firstnode; X do X { X wclear(inv_win); X wmove(inv_win,0,0); X wprintw(inv_win,"Use which Item?"); X wmove(inv_win,1,0); X wprintw(inv_win,"N)ext P)rev S)elect"); X wmove(inv_win,3,0); X wprintw(inv_win,"%s",start->item); X wmove(inv_win,1,21); X wrefresh(inv_win); X switch(choice = getch()){ X case 'n': X case 'N': X if(start->next != NULL) X start = start->next; X break; X case 'p': X case 'P': X if(start->prev != NULL) X start = start->prev; X break; X case 's': X case 'S': X switch (start->item_type){ X case 9: X if(start->special > 0){ X p->compass_on = TRUE; X ct_compass = 100; X compass(); X start->special--; X choice = ESC; X }else{ X print_mess("Item Has no more charges.",0,0); X wrefresh(message_win); X sleep(1); X } X break; X case 10: X if(start->special > 0){ X detect_trap(); X ct_dtrap = 100; X detect = ON; X start->special--; X choice = ESC; X }else{ X print_mess("Item Has no more charges.",0,0); X wrefresh(message_win); X sleep(1); X } X break; X case 11: X if(start->special > 0){ X med_heal(); X start->special--; X choice = ESC; X }else{ X print_mess("Item Has no more charges.",0,0); X wrefresh(message_win); X sleep(1); X } X break; X case 12: X if(start->special > 0){ X flame(); X start->special--; X choice = ESC; X }else{ X print_mess("Item Has no more charges.",0,0); X wrefresh(message_win); X sleep(1); X } X break; X case 13: X if(start->special > 0){ X teleport(); X start->special--; X choice = ESC; X }else{ X print_mess("Item Has no more charges.",0,0); X wrefresh(message_win); X sleep(1); X } X break; X default: X print_mess("You cannot Use that!",0,0); X wrefresh(message_win); X break; X } X X } X }while(choice != ESC); X wclear(inv_win); X wrefresh(inv_win); X} X Xmonst_att(mon) Xint mon; X{ X int ability; X X ability = m[mon].ability; X wclear(message_win); X wmove(message_win,0,0); X switch (ability){ X case 0: X case 1: abil_one(mon); X break; X case 2: abil_two(); X break; X case 3: abil_three(mon); X break; X case 4: abil_four(mon); X break; X case 5: abil_five(mon); X break; X case 6: abil_six(mon); X break; X case 7: abil_seven(mon); X break; X case 8: abil_eight(mon); X break; X case 9: abil_nine(mon); X break; X case 10: abil_ten(mon); X break; X case 11: abil_eleven(mon); X break; X case 12: abil_twelve(mon); X break; X case 13: abil_thirteen(mon); X break; X } X wrefresh(message_win); X sleep(1); X} X Xabil_one(monst) Xint monst; X{ X if(rand()%16 > char_stats.ac){ X char_stats.hitpoints -= damag = make_dam(5,m[monst].m_lvl); X sprintf(buffer,"He hit you for %d points damage.",damag); X print_mess(buffer,2,0); X print_stats(); X }else X print_mess("He Misses you!",2,0); X} X Xabil_two() X{ X if(rand()%6 > char_stats.ac){ X if(char_stats.strength > MIN_STAT) X char_stats.strength--; X print_mess("Your Strength is drained.",2,0); X print_stats(); X }else X print_mess("He misses you.",2,0); X} X Xabil_three(monst) Xint monst; X{ X switch (rand()%2 ? 1 : 2){ X case 1: if((rand()%18) + 3 > char_stats.constitution){ X char_stats.hitpoints -= damag = make_dam(5,m[monst].m_lvl); X sprintf(buffer,"You got fried for %d points damage.",damag); X print_mess(buffer,2,0); X print_stats(); X }else X print_mess("You resist the Spell.",2,0); X break; X case 2: abil_one(monst); X break; X } X} X Xabil_four(mon) Xint mon; X{ X switch(rand()%2 ? 1 : 2){ X case 1: if((rand()%18)+6 > char_stats.constitution){ X char_stats.hitpoints -= damag = make_dam(5,4); X print_mess("You are blasted by an electric",2,0); X sprintf(buffer,"sphere for %d points damage.",damag); X print_mess(buffer,3,0); X print_stats(); X }else{ X print_mess("You resist the spell.",2,0); X sleep(1); X } X break; X case 2: abil_three(mon); X break; X } X} X Xabil_five(mon) Xint mon; X{ X switch(rand()%2 ? 1 : 2){ X case 1: if((rand()%18) + 5 > char_stats.constitution){ X damag = make_dam(m[mon].m_lvl,3); X char_stats.hitpoints -= damag; X sprintf(buffer,"You are drained for %d ",damag); X print_mess(buffer,2,0); X print_mess("points of damage.",3,0); X m_temp.m_hp += (damag>>1); X print_stats(); X }else X print_mess("You resist the affects.",2,0); X break; X case 2: abil_one(mon); X break; X } X} X Xabil_six(mon) Xint mon; X{ X switch (rand()%2 ? 1 : 2){ X case 1: if((rand()%18) + 3 > char_stats.constitution){ X char_stats.hitpoints -= damag = make_dam(5,m[mon].m_lvl); X print_mess("You are choked for ",2,0); X sprintf(buffer,"%d points damage.",damag); X print_mess(buffer,3,0); X print_stats(); X }else X print_mess("You resist the spell.",2,0); X break; X case 2: abil_one(mon); X break; X } X} X Xabil_seven(mon) Xint mon; X{ X switch(rand()%2 ? 1 : 2){ X case 1: if((rand()%18) + 3 > char_stats.intelligence){ X char_stats.hitpoints -= damag = make_dam(5,m[mon].m_lvl); X sprintf(buffer,"You are burnt for %d ",damag); X print_mess(buffer,2,0); X print_mess("points damage.",3,0); X print_stats(); X }else X print_mess("The spell does not affect you.",2,0); X break; X case 2: abil_one(mon); X break; X } X} X Xabil_eight(monst) Xint monst; X{ X switch(rand()%2 ? 1 : 2){ X case 1: if((rand()%18)+3 > char_stats.constitution){ X char_stats.hitpoints -= damag = make_dam(8,3); X print_mess("He Breathes and burns you ",2,0); X sprintf(buffer,"for %d points damage.",damag); X print_mess(buffer,3,0); X print_stats(); X }else X print_mess("The Spell does not Affect you.",2,0); X break; X case 2: abil_one(monst); X break; X } X} X Xabil_nine(monst) Xint monst; X{ X int tmp; X X switch(rand()%2 ? 1 : 2){ X case 1: abil_six(monst); X break; X case 2: if((rand()%18)+3 > char_stats.strength){ X tmp = (m[monst].m_lvl + 2); X char_stats.hitpoints -= damag = (10 + make_dam(5,tmp)); X sprintf(buffer,"You gasp, and take %d points ",damag); X print_mess(buffer,2,0); X print_mess("damage due to lack of air.",3,0); X print_stats(); X }else X print_mess("You resist the affects."); X break; X } X} X Xabil_ten(monst) Xint monst; X{ X switch(rand()%3){ X case 0: abil_three(monst); X break; X case 1: abil_four(monst); X break; X case 2: abil_seven(monst); X break; X } X} X Xabil_eleven(monst) Xint monst; X{ X switch(rand()%3){ X case 0: X if(char_stats.ac + 75 < rand()%100){ X char_stats.experience -= (m[monst].m_lvl * 10); X print_mess("He touches you and drains experience.",2,0); X lose_lvl(); X print_stats(); X }else X print_mess("He reaches toward you but misses.",2,0); X break; X case 1: abil_five(monst); X break; X case 2: abil_one(monst); X break; X } X} X Xabil_twelve(monst) Xint monst; X{ X switch(rand()%3){ X case 0: abil_thirteen(monst); X break; X case 1: char_stats.hitpoints -= damag = make_dam(5,8); X sprintf(buffer,"He did %d points damage.",damag); X print_mess(buffer,2,0); X wrefresh(message_win); X print_stats(); X break; X case 2: abil_nine(monst); X break; X } X} X Xabil_thirteen(monst) Xint monst; X{ X if(rand()%100 > 85){ X char_stats.hitpoints -= damag = (rand()%10) + 10; X char_stats.dexterity -= 3; X char_stats.m_dex -= 1; X sprintf(buffer,"He hit for %d points of damage",damag); X print_mess(buffer,2,0); X print_mess("and he also damaged your dexterity.",3,0); X }else{ X char_stats.hitpoints -= damag = (rand()%10) + 15; X sprintf(buffer,"You are hit for %d points damage.",damag); X print_mess(buffer,2,0); X } X print_stats(); X wrefresh(message_win); X} END_OF_FILE if test 18840 -ne `wc -c <'monster.c'`; then echo shar: \"'monster.c'\" unpacked with wrong size! fi # end of 'monster.c' fi echo shar: End of archive 3 \(of 4\). cp /dev/null ark3isdone MISSING="" for I in 1 2 3 4 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 4 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0