games-request@tekred.TEK.COM (01/20/88)
Submitted by: "Laurence R. Brothers" <brothers@paul.rutgers.edu> Comp.sources.games: Volume 3, Issue 55 Archive-name: omega/Part08 #! /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 <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 8 (of 15)." # Contents: odefs.h oinititem2.c omega.update.history # Wrapped by billr@tekred on Mon Jan 18 10:20:32 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f odefs.h -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"odefs.h\" else echo shar: Extracting \"odefs.h\" \(19414 characters\) sed "s/^X//" >odefs.h <<'END_OF_odefs.h' X/* omega copyright (c) 1987 by Laurence Raphael Brothers */ X/* This file is the header file for all omega modules */ X/* odefs.h */ X X/* Implementor should set the following five definitions: */ X X/* OMEGALIB is where all the data files reside. X note the final / is necessary X this might usually be "/usr/games/lib/omegalib/" */ X X#define OMEGALIB "/u1/brothers/omega/lib/" X X/* set WIZARD to implementor's username */ X#define WIZARD "brothers" X X/* If set to 0, this will allow players to make copies of saved games */ X/* If set to 1, only the implementor will be allowed to restore X copied games */ X/*The implementor can now enable all currently saved games by making X omega.saves a null file */ X/* If omega.saves is absent, all files will permanently be enabled for X restore, as well */ X#define DESTRUCTIVE_RESTORE 1 X X/* If CATCH_SIGNALS is set to 1, will not dump core, nicer for players. */ X/* dbx still instercepts the signals first, so its ok for debugging */ X#define CATCH_SIGNALS 1 X X/* Don't change anything from here on (unless you know what you're doing) */ X#define VERSION 60 X#define VERSIONSTRING "omega version 0.60 (alpha)" X X#ifndef TRUE X#define TRUE 1 X#define FALSE 0 X#endif X X#define VACANT 0 X#define NULL 0 X#define ABORT -1 X#define CASHVALUE -2 X X/* These next eight should never be changed -- some places have hardwired Xconstants based on these values. I'll fix this eventually when I make Xomega compatible with windowing systems like NeWS and sunview */ X X#define WIDTH 64 X#define LENGTH 64 X#define TOPEDGE 0 X#define EDGE1 16 X#define EDGE2 32 X#define EDGE3 48 X#define BOTTOMEDGE 63 X#define NUMLEVELS 40 X X X/* player game status */ X#define DEAD 1 X#define QUIT 2 X#define WIN 3 X#define BIGWIN 4 X X/* somewhat arbitrary -- MAXITEMS is so a..z can index items */ X#define MAXITEMS 26 X X/* kind of arbitrary */ X#define MAXROOMS 48 X#define MAXCONNECTIONS 4 X X/* some random characters */ X#define ESCAPE 27 X#define RETURN 13 X#define LINEFEED 10 X#define BACKSPACE 8 X#define DELETE 127 X X X/* tac mode action definitions */ X#define DISENGAGE 10 X#define BLOCK 20 X#define CUT 30 X#define THRUST 40 X#define MAGIC 50 X#define LUNGE 60 X#define RIPOSTE 70 X#define WIELD 80 X#define PICK_UP 90 X X/* as in attack low, block high, etc. */ X/* These values may be added to the ones above to get things like X block high, cut low, etc. CLEVER is only used by some monsters X to cheat with.... */ X#define LOW 1 X#define CENTER 2 X#define HIGH 3 X#define CLEVER 4 X X X/* weapon types */ X#define CUTTING 1 X#define THRUSTING 2 X#define STRIKING 3 X#define MISSILE 4 X X/* random aux constants */ X/* aux field for private residences in city */ X#define BURGLED 2 X#define LOCKED 1 X#define UNLOCKED 0 X X/* bow and crossbow object aux fields */ X#define LOADED 1 X#define UNLOADED 0 X X/* alignment used randomly throughout*/ X#define LAWFUL 1 X#define CHAOTIC 2 X#define NEUTRAL 3 X X/* spells */ X#define NUMSPELLS 40 X X#define S_MON_DET 0 X#define S_OBJ_DET 1 X#define S_MISSILE 2 X#define S_FIREBOLT 3 X#define S_TELEPORT 4 X#define S_LBALL 5 X#define S_SLEEP 6 X#define S_DISRUPT 7 X#define S_DISINTEGRATE 8 X#define S_POLYMORPH 9 X#define S_HEAL 10 X#define S_DISPEL 11 X#define S_IDENTIFY 12 X#define S_BREATHE 13 X#define S_INVISIBLE 14 X#define S_WARP 15 X#define S_ENCHANT 16 X#define S_BLESS 17 X#define S_RESTORE 18 X#define S_CURE 19 X#define S_TRUESIGHT 20 X#define S_HELLFIRE 21 X#define S_KNOWLEDGE 22 X#define S_HERO 23 X#define S_RETURN 24 X#define S_DESECRATE 25 X#define S_HASTE 26 X#define S_SUMMON 27 X#define S_SANCTUARY 28 X#define S_ACCURACY 29 X#define S_RITUAL 30 X#define S_INVULNERABLE 31 X#define S_APPORT 32 X#define S_SHADOWFORM 33 X#define S_ALERT 34 X#define S_REGENERATE 35 X#define S_SANCTIFY 36 X#define S_CLAIRVOYANCE 37 X#define S_DRAIN 38 X#define S_LEVITATE 39 X X X X/* ranks in guilds, etc */ X#define NUMRANKS 8 X X#define LEGION 0 X#define ARENA 1 X#define COLLEGE 2 X#define THIEVES 3 X#define CIRCLE 4 X#define NOBILITY 5 X#define PRIESTHOOD 6 X#define ADEPT 7 X X#define LEGIONAIRE 1 X#define CENTURION 2 X#define FORCE_LEADER 3 X#define COLONEL 4 X#define COMMANDANT 5 X X#define TRAINEE 1 X#define BESTIARIUS 2 X#define RETIARIUS 3 X#define GLADIATOR 4 X#define CHAMPION 5 X X#define NOVICE 1 X#define STUDENT 2 X#define PRECEPTOR 3 X#define MAGE 4 X#define ARCHMAGE 5 X X#define TMEMBER 1 X#define ATHIEF 2 X#define THIEF 3 X#define TMASTER 4 X#define SHADOWLORD 5 X X#define INITIATE 1 X#define ENCHANTER 2 X#define SORCEROR 3 X#define HIGHSORCEROR 4 X#define PRIME 5 X X#define COMMONER 1 X#define ESQUIRE 2 X#define KNIGHT 3 X#define LORD 4 X#define DUKE 5 X X#define LAY 1 X#define ACOLYTE 2 X#define PRIEST 3 X#define SPRIEST 4 X#define HIGHPRIEST 5 X X/* different priesthoods */ X#define ODIN 1 X#define SET 2 X#define ATHENA 3 X#define HECATE 4 X#define DRUID 5 X#define DESTINY 6 X X X X/* MONSTER STATUS/ABILITY BITS */ X#define AWAKE 1 X#define MOBILE 2 X#define HOSTILE 4 X#define WANDERING 16 X#define HUNGRY 32 X#define GREEDY 64 X#define NEEDY 128 X#define COWARDLY 256 X#define FLYING 512 X#define SWIMMING 1024 X#define INTANGIBLE 2048 X#define M_INVISIBLE 4096 X X/* Monster tactical melee tendencies */ X#define MM_FORCED 1 X#define MM_BERSERK 2 X#define MM_TIMID 4 X#define MM_POOR 8 X#define MM_AVERAGE 16 X#define MM_GOOD 32 X X/* PLAYER STATUS INDICES */ X#define NUMSTATI 24 X X#define ACCURACY 0 X#define BLINDED 1 X#define SLOWED 2 X#define DISPLACED 3 X#define SLEPT 4 X#define DISEASED 5 X#define POISONED 6 X#define HASTED 7 X#define BREATHING 8 X#define INVISIBLE 9 X#define REGENERATING 10 X#define VULNERABLE 11 X#define BERSERK 12 X#define IMMOBILE 13 X#define ALERT 14 X#define AFRAID 15 X#define HERO 16 X#define LEVITATING 17 X#define ACCURATE 18 X#define TRUESIGHT 19 X#define SHADOWFORM 20 X#define ILLUMINATION 21 X#define PROTECTION 22 X/* PROTECTION is deviant -- indicates protective value, not duration */ X#define RETURNING 23 X/* RETURNING is somewhat deviant--how many turns 'til RETURN spell goes off */ X X/* player immunity indices */ X/* also monster immunity bits (2^n) */ X/* also damage types */ X#define NUMIMMUNITIES 14 X X#define UNSTOPPABLE 0 X#define NORMAL_DAMAGE 1 X#define FLAME 2 X#define COLD 3 X#define ELECTRICITY 4 X#define POISON 5 X#define ACID 6 X#define FEAR 7 X#define SLEEP 8 X#define NEGENERGY 9 X#define OTHER_MAGIC 10 X#define THEFT 11 X#define GAZE 12 X#define INFECTION 13 X#define EVERYTHING -1 X X/* room string id */ X/* for use in roomname() */ X#define NUMROOMNAMES 30 X X/* normal room name indices start after the RS_ constants */ X#define ROOMBASE 16 X X#define RS_DRUID 15 X#define RS_HECATE 14 X#define RS_ATHENA 13 X#define RS_SET 12 X#define RS_ODIN 11 X#define RS_DESTINY 10 X#define RS_ADEPT 9 X#define RS_WYRM 8 X#define RS_OCEAN 7 X#define RS_PONDS 6 X#define RS_DRAGONLORD 5 X#define RS_GOBLINKING 4 X#define RS_CAVERN 3 X#define RS_CORRIDOR 2 X#define RS_WALLSPACE 1 X X/* objects and terrain; characters to draw */ X#define SPACE ' ' X#define WALL '#' X#define OPEN_DOOR '|' X#define CLOSED_DOOR '-' X#define ABYSS '0' X#define WHIRLWIND '6' X#define WHIRLWIND2 '9' X#define LAVA '`' X#define HEDGE '\"' X#define WATER '~' X#define FIRE ';' X#define TRAP '^' X#define LIFT '_' X#define UP '<' X#define DOWN '>' X#define FLOOR '.' X#define PLAYER '@' X#define CORPSE '+' X#define STATUE '1' X#define ALTAR '8' X#define CASH '$' /* various kinds of money */ X#define PILE '*' /* several objects in one place */ X#define FOOD '%' X#define WEAPON ')' X#define MISSILEWEAPON '(' X#define SCROLL '?' X#define POTION '!' X#define ARMOR ']' X#define SHIELD '[' X#define CLOAK '}' X#define BOOTS '{' X#define STICK '/' X#define RING '=' X#define THING '\\' X#define ARTIFACT '&' X#define PORTAL 'O' X/* unused : 2 3 4 5 7 */ X X X/* player option bits */ X#define BELLICOSE 1 X#define JUMPMOVE 2 X#define RUNSTOP 4 X#define PICKUP 8 X#define ASKME 16 X#define CONFIRM 32 X X/* This has to be changed whenever an item is added */ X#define NUMSCROLLS 23 X#define NUMPOTIONS 18 X#define NUMFOODS 15 X#define NUMTHINGS 26 X#define NUMWEAPONS 38 X#define NUMARMOR 17 X#define NUMSHIELDS 8 X#define NUMCLOAKS 7 X#define NUMBOOTS 6 X#define NUMRINGS 10 X#define NUMSTICKS 16 X#define NUMARTIFACTS 21 X X/* running sum of itemtypes, for indexing into Objects array */ X#define THINGID 0 X#define FOODID NUMTHINGS X#define SCROLLID (FOODID + NUMFOODS) X#define POTIONID (SCROLLID + NUMSCROLLS) X#define WEAPONID (POTIONID + NUMPOTIONS) X#define ARMORID (WEAPONID + NUMWEAPONS) X#define SHIELDID (ARMORID + NUMARMOR) X#define CLOAKID (SHIELDID + NUMSHIELDS) X#define BOOTID (CLOAKID + NUMCLOAKS) X#define RINGID (BOOTID + NUMBOOTS) X#define STICKID (RINGID + NUMRINGS) X#define ARTIFACTID (STICKID + NUMSTICKS) X#define CASHID (ARTIFACTID+NUMARTIFACTS) X/* Corpse's aux field is monster id */ X#define CORPSEID (CASHID+1) X X#define TOTALITEMS (CORPSEID+1) X X/* describing unique items and monsters */ X#define COMMON 0 X#define UNIQUE_UNMADE 1 X#define UNIQUE_MADE 2 X X/* item function id's */ X#define I_NO_OP 0 X#define I_NOTHING 1 X X /* note some of these functions are for other types of items too */ X X /* scroll functions */ X#define I_BLESS 101 X#define I_ACQUIRE 102 X#define I_ENCHANT 103 X#define I_TELEPORT 104 X#define I_WISH 105 X#define I_CLAIRVOYANCE 106 X#define I_DISPLACE 107 X#define I_ID 108 X#define I_FIREFLASH 109 X#define I_SPELLS 110 X#define I_JANE_T 111 X#define I_ALERT 112 X#define I_FLUX 113 X#define I_CHARGE 114 X#define I_WARP 115 X#define I_KNOWLEDGE 116 X#define I_LAW 117 X#define I_HINT 118 X#define I_HERO 119 X#define I_TRUESIGHT 120 X#define I_ILLUMINATE 121 X X /* potion functions */ X#define I_HEAL 201 X#define I_OBJDET 202 X#define I_MONDET 203 X#define I_SLEEP_SELF 204 X#define I_RESTORE 205 X#define I_NEUTRALIZE_POISON 206 X#define I_SPEED 207 X#define I_AZOTH 208 X#define I_REGENERATE 210 X#define I_INVISIBLE 211 X#define I_BREATHING 212 X#define I_FEAR_RESIST 213 X#define I_AUGMENT 214 X#define I_CHAOS 215 X#define I_ACCURACY 216 X#define I_LEVITATION 217 X#define I_CURE 218 X X /* stick functions */ X#define I_FIREBOLT 301 X#define I_LBOLT 302 X#define I_MISSILE 303 X#define I_SLEEP_OTHER 304 X#define I_FIREBALL 305 X#define I_LBALL 306 X#define I_SUMMON 307 X#define I_HIDE 308 X#define I_DISRUPT 309 X#define I_DISINTEGRATE 310 X#define I_SNOWBALL 311 X#define I_APPORT 312 X#define I_DISPEL 313 X#define I_POLYMORPH 314 X X /* food functions */ X#define I_FOOD 401 X#define I_LEMBAS 402 X#define I_STIM 403 X#define I_POW 404 X#define I_IMMUNE 405 X#define I_POISON_FOOD 406 X#define I_CORPSE 407 X#define I_PEPPER_FOOD 408 X X /* boots functions */ X#define I_PERM_SPEED 501 X#define I_PERM_HERO 502 X#define I_PERM_LEVITATE 503 X#define I_PERM_AGILITY 504 X#define I_BOOTS_JUMPING 505 X X /* cloak functions */ X#define I_PERM_DISPLACE 601 X#define I_PERM_NEGIMMUNE 602 X#define I_PERM_INVISIBLE 603 X#define I_PERM_ACCURACY 604 X#define I_PERM_PROTECTION 605 X#define I_PERM_TRUESIGHT 606 X X /* ring functions */ X#define I_PERM_VISION 701 X#define I_PERM_BURDEN 702 X#define I_PERM_STRENGTH 703 X#define I_PERM_GAZE_IMMUNE 704 X#define I_PERM_FIRE_RESIST 705 X#define I_PERM_POISON_RESIST 706 X#define I_PERM_REGENERATE 707 X#define I_PERM_KNOWLEDGE 708 X X /* armor functions */ X#define I_PERM_ENERGY_RESIST 801 X#define I_PERM_BREATHING 802 X#define I_PERM_FEAR_RESIST 803 X X/* artifact functions */ X#define I_ORBFIRE 901 X#define I_ORBWATER 902 X#define I_ORBEARTH 903 X#define I_ORBAIR 904 X#define I_ORBMASTERY 905 X#define I_ORBDEAD 906 X#define I_CRYSTAL 907 X#define I_ANTIOCH 908 X#define I_KOLWYNIA 909 X#define I_DEATH 910 X#define I_ENCHANTMENT 911 X#define I_HELM 912 X#define I_LIFE 913 X#define I_JUGGERNAUT 914 X#define I_SYMBOL 915 X X/* weapons functions */ X#define I_LIGHTSABRE 1002 X#define I_DEMONBLADE 1003 X#define I_MACE_DISRUPT 1004 X#define I_TANGLE 1005 X#define I_ARROW 1006 X#define I_BOLT 1007 X#define I_VORPAL 1008 X#define I_DESECRATE 1009 X#define I_FIRESTAR 1010 X#define I_DEFEND 1011 X#define I_VICTRIX 1012 X#define I_DARK_EMP_SWORD 1013 X X/* thing functions */ X#define I_PICK 1101 X#define I_KEY 1102 X#define I_SHOVEL 1103 X#define I_EXCAVATOR 1104 X#define I_PERM_ILLUMINATE 1105 X#define I_TRAP 1106 X X/* monster functions */ X#define M_NO_OP -1 X X/* talk functions */ X#define M_TALK_STUPID 101 X#define M_TALK_SILENT 102 X#define M_TALK_HUNGRY 103 X#define M_TALK_GREEDY 104 X#define M_TALK_TITTER 105 X#define M_TALK_MAN 106 X#define M_TALK_ROBOT 107 X#define M_TALK_EVIL 108 X#define M_TALK_BURBLE 109 X#define M_TALK_SLITHY 110 X#define M_TALK_MIMSY 111 X#define M_TALK_SEDUCTOR 112 X#define M_TALK_MP 113 X#define M_TALK_IM 114 X#define M_TALK_GUARD 115 X#define M_TALK_GHOST 116 X#define M_TALK_HINT 117 X#define M_TALK_BEG 118 X#define M_TALK_EF 119 X#define M_TALK_GF 120 X#define M_TALK_MORGON 121 X#define M_TALK_LB 122 X#define M_TALK_DEMONLOVER 123 X#define M_TALK_ASSASSIN 124 X#define M_TALK_NINJA 125 X#define M_TALK_THIEF 126 X X/* special ability functions */ X#define M_SP_SURPRISE 201 X#define M_SP_MP 202 X#define M_SP_THIEF 203 X#define M_SP_AGGRAVATE 204 X#define M_SP_POISON_CLOUD 205 X#define M_SP_HUGE 206 X#define M_SP_SUMMON 207 X#define M_SP_ILLUSION 208 X#define M_SP_FLUTTER 209 X#define M_SP_ESCAPE 210 X#define M_SP_SPELL 211 X#define M_SP_EXPLODE 212 X#define M_SP_DEMON 213 X#define M_SP_ACID_CLOUD 214 X#define M_SP_WHIRL 215 X#define M_SP_GHOST 216 X#define M_SP_MORGON 217 X#define M_SP_EATER 218 X#define M_SP_LAWBRINGER 219 X#define M_SP_DRAGONLORD 220 X#define M_SP_DE 221 X#define M_SP_DEMONLOVER 222 X#define M_SP_SEDUCTOR 223 X#define M_SP_MASTER 224 X#define M_SP_WYRM 225 X#define M_SP_BLACKOUT 226 X X/* rangestrike functions */ X#define M_STRIKE_MISSILE 301 X#define M_STRIKE_FBOLT 302 X#define M_STRIKE_LBALL 303 X#define M_STRIKE_FBALL 304 X#define M_STRIKE_BLIND 305 X#define M_STRIKE_SNOWBALL 306 X#define M_STRIKE_MASTER 307 X X/* combat functions */ X#define M_MELEE_NORMAL 401 X#define M_MELEE_FIRE 402 X#define M_MELEE_DRAGON 403 X#define M_MELEE_MP 404 X#define M_MELEE_ELEC 405 X#define M_MELEE_POISON 406 X#define M_MELEE_NG 407 X#define M_MELEE_SUCCUBUS 408 X#define M_MELEE_SPIRIT 409 X#define M_MELEE_DISEASE 410 X#define M_MELEE_SLEEP 411 X#define M_MELEE_COLD 412 X#define M_MELEE_MASTER 413 X X X/* movement functions */ X#define M_MOVE_NORMAL 501 X#define M_MOVE_FLUTTER 502 X#define M_MOVE_TELEPORT 503 X#define M_MOVE_FOLLOW 504 X#define M_MOVE_RANDOM 505 X#define M_MOVE_SMART 506 X#define M_MOVE_SPIRIT 507 X#define M_MOVE_SCAREDY 508 X#define M_MOVE_CONFUSED 509 X X/* MLx -> index to Monsters starting for level x */ X/* MLx -> number of monsters of level x or less */ X/* NML_x -> number of monsters of level x */ X/* NML-X must be changed whenever a monster is added */ X#define ML0 0 X#define NML_0 5 X#define ML1 (ML0 + NML_0) X#define NML_1 11 X#define ML2 (ML1 + NML_1) X#define NML_2 9 X#define ML3 (ML2 + NML_2) X#define NML_3 7 X#define ML4 (ML3 + NML_3) X#define NML_4 10 X#define ML5 (ML4 + NML_4) X#define NML_5 8 X#define ML6 (ML5 + NML_5) X#define NML_6 8 X#define ML7 (ML6 + NML_6) X#define NML_7 6 X#define ML8 (ML7 + NML_7) X#define NML_8 11 X#define ML9 (ML8 + NML_8) X#define NML_9 7 X#define ML10 (ML9 + NML_9) X#define NML_10 10 X X#define NUMMONSTERS (ML10 + NML_10) X X X X X/* location functions */ X#define L_NO_OP 0 X X/* random terrain types */ X#define L_LIFT 1 X#define L_HEDGE 2 X#define L_WATER 3 X#define L_LAVA 4 X#define L_MAGIC_POOL 5 X#define L_FIRE 6 X#define L_WHIRLWIND 7 X#define L_ABYSS 8 X X X#define L_TRIFID 11 X#define L_FINAL_ABYSS 12 X#define L_WARNING 13 X#define L_PORTCULLIS 14 X#define L_PORTCULLIS_TRAP 15 X X/* traps */ X#define NUMTRAPS 12 X#define TRAP_BASE 21 X X/* traps */ X#define L_TRAP_DART 21 X#define L_TRAP_PIT 22 X#define L_TRAP_DOOR 23 X#define L_TRAP_SNARE 24 X#define L_TRAP_BLADE 25 X#define L_TRAP_FIRE 26 X#define L_TRAP_TELEPORT 27 X#define L_TRAP_DISINTEGRATE 28 X#define L_TRAP_SLEEP_GAS 29 X#define L_TRAP_ACID 30 X#define L_TRAP_MANADRAIN 31 X#define L_TRAP_ABYSS 32 X X/* shop and guild functions (mostly for city level) */ X#define L_DRUID 41 X#define L_RESIDENCE 42 X#define L_TEMPLE 43 X#define L_ARMORER 44 X#define L_CLUB 45 X#define L_GYM 46 X#define L_THIEVES_GUILD 47 X#define L_COLLEGE 48 X#define L_HEALER 49 X#define L_STATUE_WAKE 50 X#define L_CASINO 51 X#define L_SEWER 52 X#define L_TAVERN 53 X#define L_MERC_GUILD 54 X#define L_ALCHEMIST 55 X#define L_SORCERORS 56 X#define L_CASTLE 57 X#define L_JAIL 58 X#define L_GARDEN 59 X#define L_ARENA 60 X#define L_MAZE 61 X#define L_DPW 62 X#define L_LIBRARY 63 X#define L_PAWN_SHOP 64 X#define L_BANK 65 X#define L_CONDO 66 X#define L_ALTAR 67 X#define L_ADEPT 68 X#define L_ALL_STATUES 69 X#define L_OMEGA 70 X#define L_CITYGATE 71 X#define L_CHAOSSTORM 72 X#define L_VAULT 73 X#define L_CEMETARY 74 X#define L_CHALLENGE 75 X#define L_GUARDIAN 76 X#define L_BROTHEL 77 X X/* structure definitions */ X Xstruct room { X int lighted; X int left,right,top,bottom; X int numconnections; X int connections[MAXCONNECTIONS]; X int joined[MAXCONNECTIONS]; X int rsi; /* index into roomname switch */ X}; X X Xstruct level_data { X int generated; /* has the level been made (visited) yet? */ X int numrooms; /* number of rooms on level */ X int tunnelled; /* amount of tunnelling done on this level */ X struct room rooms[MAXROOMS]; /* info about rooms */ X}; X Xstruct spell { X int known; X int powerdrain; X int id; X void (*castf)(); X} ; X X Xstruct monster { X int id,hp,hit,ac,dmg,sense,wakeup,level; X int speed,click; X int status,immunity,tactics; /* bvs */ X int sleep; /* percent chance starts out asleep */ X int treasure; /* percent chance starts with treasure */ X int x,y; X int xpv; X int corpseweight,corpsevalue,transformid; X int attacked,actions,hitloc; X int uniqueness; /* common, unique and unmade, unique and made */ X char monchar; X char monstring[64],corpsestr[64]; X struct objectlist *possessions; X int talkf; X int movef; X int meleef; X int strikef; X int specialf; X}; X X Xstruct monsterlist { X struct monster *m; X struct monsterlist *next; X}; X X X X Xstruct player { X int str,con,dex,agi,iq,pow,maxstr,maxcon,maxdex,maxagi,maxiq,maxpow; X int xp,level,hp,maxhp,hit,dmg,absorption,speed,click; X int defense,vision,food,alignment,mana,maxmana; X int cash,patron; X char preference; X int sx,sy,slevel; /* sanctuary coordinates */ X int x,y; /* current player coordinates */ X int itemweight,maxweight; X int numrings; X int immunity[NUMIMMUNITIES]; X int status[NUMSTATI]; X int options; X int rank[NUMRANKS]; X struct object *possessions[MAXITEMS]; X char name[64]; X /* need one of these for types of objects "in use" except rings */ X struct object *primary; /* primary hand -- weapon or shield */ X struct object *secondary; /* secondary hand -- ditto */ X struct object *armor; X struct object *cloak; X struct object *boots; X}; X X X Xstruct object { X int id,weight,plus,charge,dmg,hit,aux,number,fragility; X int basevalue, known, used, blessing,type; X int uniqueness; /* 0 common, 1 unique, ungenerated, 2 u, g */ X int usef; /* effect when used */ X int level; /* 0..10 power and frequency of item */ X char objchar; X char objstr[64],truename[64],cursestr[64]; X}; X X X Xstruct objectlist { X struct object *thing; X struct objectlist *next; X}; X X Xstruct location { X char p_locf; /* function executed when moved on */ X char stopsrun; /* stops a fastmove */ X char seen; /* has spot ever been viewed by player */ X char secret; X char roomnumber; X char locchar; /* terrain type */ X char showchar; /*char instantaneously drawn for site */ X int aux; /* signifies various things */ X struct objectlist *things; X struct monster *creature; X }; X X X X X/* random typedef's */ X Xtypedef struct monsterlist mltype; Xtypedef struct monster montype; X Xtypedef mltype *pml; Xtypedef montype *pmt; X X Xtypedef struct object objtype; Xtypedef struct objectlist oltype; X Xtypedef objtype *pob; Xtypedef oltype *pol; X X/* random function declarations */ Xchar *malloc(),*calloc(); Xint free(); END_OF_odefs.h if test 19414 -ne `wc -c <odefs.h`; then echo shar: \"odefs.h\" unpacked with wrong size! fi # end of overwriting check fi if test -f oinititem2.c -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"oinititem2.c\" else echo shar: Extracting \"oinititem2.c\" \(35133 characters\) sed "s/^X//" >oinititem2.c <<'END_OF_oinititem2.c' X/* omega copyright (C) 1987 by Laurence Raphael Brothers */ X/* oinititem2.c */ X X#include <strings.h> X#include "oglob.h" X X/* from oitem */ Xextern void ringname(),stickname(),cloakname(),bootname(),potionname(); X Xvoid inititem2(); X Xvoid inititem2() X{ X int i; X X strcpy(Objects[WEAPONID+0].objstr,"dagger"); X strcpy(Objects[WEAPONID+0].truename,"dagger"); X strcpy(Objects[WEAPONID+0].cursestr,"dagger"); X Objects[WEAPONID+0].hit = 12; X Objects[WEAPONID+0].type = THRUSTING; X Objects[WEAPONID+0].dmg = 6; X Objects[WEAPONID+0].weight = 10; X Objects[WEAPONID+0].level = 0; X Objects[WEAPONID+0].basevalue = 5; X strcpy(Objects[WEAPONID+1].objstr,"short sword"); X strcpy(Objects[WEAPONID+1].truename,"short sword"); X strcpy(Objects[WEAPONID+1].cursestr,"short sword"); X Objects[WEAPONID+1].hit = 11; X Objects[WEAPONID+1].type = CUTTING; X Objects[WEAPONID+1].weight = 25; X Objects[WEAPONID+1].level = 1; X Objects[WEAPONID+1].dmg = 8; X Objects[WEAPONID+1].basevalue = 40; X strcpy(Objects[WEAPONID+2].objstr,"broad sword"); X strcpy(Objects[WEAPONID+2].truename,"broad sword"); X strcpy(Objects[WEAPONID+2].cursestr,"broad sword"); X Objects[WEAPONID+2].hit = 9; X Objects[WEAPONID+2].type = CUTTING; X Objects[WEAPONID+2].weight = 40; X Objects[WEAPONID+2].level = 2; X Objects[WEAPONID+2].dmg = 12; X Objects[WEAPONID+2].basevalue = 90; X strcpy(Objects[WEAPONID+3].objstr,"bastard sword"); X strcpy(Objects[WEAPONID+3].truename,"bastard sword"); X strcpy(Objects[WEAPONID+3].cursestr,"bastard sword"); X Objects[WEAPONID+3].hit = 8; X Objects[WEAPONID+3].type = CUTTING; X Objects[WEAPONID+3].weight = 50; X Objects[WEAPONID+3].level = 3; X Objects[WEAPONID+3].dmg = 16; X Objects[WEAPONID+3].basevalue = 250; X strcpy(Objects[WEAPONID+4].objstr,"katana"); X strcpy(Objects[WEAPONID+4].truename,"katana"); X strcpy(Objects[WEAPONID+4].cursestr,"katana"); X Objects[WEAPONID+4].hit = 10; X Objects[WEAPONID+4].type = CUTTING; X Objects[WEAPONID+4].weight = 50; X Objects[WEAPONID+4].level = 4; X Objects[WEAPONID+4].dmg = 16; X Objects[WEAPONID+4].basevalue = 500; X strcpy(Objects[WEAPONID+5].objstr,"great-sword"); X strcpy(Objects[WEAPONID+5].truename,"great-sword"); X strcpy(Objects[WEAPONID+5].cursestr,"great-sword"); X Objects[WEAPONID+5].hit = 7; X Objects[WEAPONID+5].type = CUTTING; X Objects[WEAPONID+5].weight = 75; X Objects[WEAPONID+5].level = 5; X Objects[WEAPONID+5].dmg = 20; X Objects[WEAPONID+5].basevalue = 400; X strcpy(Objects[WEAPONID+6].objstr,"epee"); X strcpy(Objects[WEAPONID+6].truename,"epee"); X strcpy(Objects[WEAPONID+6].cursestr,"epee"); X Objects[WEAPONID+6].weight = 15; X Objects[WEAPONID+6].type = THRUSTING; X Objects[WEAPONID+6].level = 2; X Objects[WEAPONID+6].hit = 15; X Objects[WEAPONID+6].dmg = 6; X Objects[WEAPONID+6].basevalue = 50; X strcpy(Objects[WEAPONID+7].objstr,"rapier"); X strcpy(Objects[WEAPONID+7].truename,"rapier"); X strcpy(Objects[WEAPONID+7].cursestr,"rapier"); X Objects[WEAPONID+7].weight = 20; X Objects[WEAPONID+7].type = THRUSTING; X Objects[WEAPONID+7].level = 3; X Objects[WEAPONID+7].hit = 13; X Objects[WEAPONID+7].dmg = 8; X Objects[WEAPONID+7].basevalue = 250; X strcpy(Objects[WEAPONID+8].objstr,"estoc"); X strcpy(Objects[WEAPONID+8].truename,"estoc"); X strcpy(Objects[WEAPONID+8].cursestr,"estoc"); X Objects[WEAPONID+8].dmg = 11; X Objects[WEAPONID+8].type = THRUSTING; X Objects[WEAPONID+8].weight = 25; X Objects[WEAPONID+8].level = 5; X Objects[WEAPONID+8].hit = 12; X Objects[WEAPONID+8].basevalue = 500; X strcpy(Objects[WEAPONID+9].objstr,"cutlass"); X strcpy(Objects[WEAPONID+9].truename,"cutlass"); X strcpy(Objects[WEAPONID+9].cursestr,"cutlass"); X Objects[WEAPONID+9].type = CUTTING; X Objects[WEAPONID+9].hit = 8; X Objects[WEAPONID+9].weight = 35; X Objects[WEAPONID+9].level = 1; X Objects[WEAPONID+9].dmg = 8; X Objects[WEAPONID+9].basevalue = 40; X strcpy(Objects[WEAPONID+10].objstr,"hand-axe"); X strcpy(Objects[WEAPONID+10].truename,"hand-axe"); X strcpy(Objects[WEAPONID+10].cursestr,"hand-axe"); X Objects[WEAPONID+10].type = CUTTING; X Objects[WEAPONID+10].hit = 10; X Objects[WEAPONID+10].weight = 25; X Objects[WEAPONID+10].level = 1; X Objects[WEAPONID+10].dmg = 8; X Objects[WEAPONID+10].basevalue = 50; X strcpy(Objects[WEAPONID+11].objstr,"battle-axe"); X strcpy(Objects[WEAPONID+11].truename,"battle-axe"); X strcpy(Objects[WEAPONID+11].cursestr,"battle-axe"); X Objects[WEAPONID+11].type = CUTTING; X Objects[WEAPONID+11].weight = 50; X Objects[WEAPONID+11].level = 2; X Objects[WEAPONID+11].hit = 8; X Objects[WEAPONID+11].dmg = 12; X Objects[WEAPONID+11].basevalue = 100; X strcpy(Objects[WEAPONID+12].objstr,"great-axe"); X strcpy(Objects[WEAPONID+12].truename,"great-axe"); X strcpy(Objects[WEAPONID+12].cursestr,"great-axe"); X Objects[WEAPONID+12].weight = 100; X Objects[WEAPONID+12].type = CUTTING; X Objects[WEAPONID+12].level = 5; X Objects[WEAPONID+12].hit = 7; X Objects[WEAPONID+12].dmg = 24; X Objects[WEAPONID+12].basevalue = 200; X strcpy(Objects[WEAPONID+13].objstr,"mace"); X strcpy(Objects[WEAPONID+13].truename,"mace"); X strcpy(Objects[WEAPONID+13].cursestr,"mace"); X Objects[WEAPONID+13].hit = 8; X Objects[WEAPONID+13].type = STRIKING; X Objects[WEAPONID+13].weight = 50; X Objects[WEAPONID+13].level = 2; X Objects[WEAPONID+13].dmg = 12; X Objects[WEAPONID+13].basevalue = 50; X strcpy(Objects[WEAPONID+14].objstr,"war-hammer"); X strcpy(Objects[WEAPONID+14].truename,"war-hammer"); X strcpy(Objects[WEAPONID+14].cursestr,"war-hammer"); X Objects[WEAPONID+14].weight = 50; X Objects[WEAPONID+14].type = STRIKING; X Objects[WEAPONID+14].level = 2; X Objects[WEAPONID+14].hit = 6; X Objects[WEAPONID+14].dmg = 14; X Objects[WEAPONID+14].basevalue = 60; X strcpy(Objects[WEAPONID+15].objstr,"morning-star"); X strcpy(Objects[WEAPONID+15].truename,"morning-star"); X strcpy(Objects[WEAPONID+15].cursestr,"morning-star"); X Objects[WEAPONID+15].hit = 7; X Objects[WEAPONID+15].type = STRIKING; X Objects[WEAPONID+15].weight = 60; X Objects[WEAPONID+15].level = 5; X Objects[WEAPONID+15].dmg = 16; X Objects[WEAPONID+15].basevalue = 150; X strcpy(Objects[WEAPONID+16].objstr,"flail"); X strcpy(Objects[WEAPONID+16].truename,"flail"); X strcpy(Objects[WEAPONID+16].cursestr,"flail"); X Objects[WEAPONID+16].hit = 7; X Objects[WEAPONID+16].type = STRIKING; X Objects[WEAPONID+16].weight = 50; X Objects[WEAPONID+16].level = 3; X Objects[WEAPONID+16].dmg = 12; X Objects[WEAPONID+16].basevalue = 50; X strcpy(Objects[WEAPONID+17].objstr,"club"); X strcpy(Objects[WEAPONID+17].truename,"club"); X strcpy(Objects[WEAPONID+17].cursestr,"club"); X Objects[WEAPONID+17].hit = 10; X Objects[WEAPONID+17].type = STRIKING; X Objects[WEAPONID+17].weight = 30; X Objects[WEAPONID+17].level = 0; X Objects[WEAPONID+17].dmg = 6; X Objects[WEAPONID+17].basevalue = 5; X strcpy(Objects[WEAPONID+18].objstr,"quarterstaff"); X strcpy(Objects[WEAPONID+18].truename,"quarterstaff"); X strcpy(Objects[WEAPONID+18].cursestr,"quarterstaff"); X Objects[WEAPONID+18].hit = 12; X Objects[WEAPONID+18].type = STRIKING; X Objects[WEAPONID+18].weight = 80; X Objects[WEAPONID+18].level = 1; X Objects[WEAPONID+18].dmg = 9; X Objects[WEAPONID+18].basevalue = 30; X strcpy(Objects[WEAPONID+19].objstr,"spear"); X strcpy(Objects[WEAPONID+19].truename,"spear"); X strcpy(Objects[WEAPONID+19].cursestr,"spear"); X Objects[WEAPONID+19].hit = 10; X Objects[WEAPONID+19].type = THRUSTING; X Objects[WEAPONID+19].weight = 50; X Objects[WEAPONID+19].level = 2; X Objects[WEAPONID+19].dmg = 10; X Objects[WEAPONID+19].basevalue = 50; X strcpy(Objects[WEAPONID+20].objstr,"halberd"); X strcpy(Objects[WEAPONID+20].truename,"halberd"); X strcpy(Objects[WEAPONID+20].cursestr,"halberd"); X Objects[WEAPONID+20].hit = 6; X Objects[WEAPONID+20].type = CUTTING; X Objects[WEAPONID+20].weight = 100; X Objects[WEAPONID+20].level = 3; X Objects[WEAPONID+20].dmg = 16; X Objects[WEAPONID+20].basevalue = 100; X strcpy(Objects[WEAPONID+21].objstr,"trident"); X strcpy(Objects[WEAPONID+21].truename,"trident"); X strcpy(Objects[WEAPONID+21].cursestr,"trident"); X Objects[WEAPONID+21].hit = 7; X Objects[WEAPONID+21].type = THRUSTING; X Objects[WEAPONID+21].weight = 80; X Objects[WEAPONID+21].level = 3; X Objects[WEAPONID+21].dmg = 12; X Objects[WEAPONID+21].basevalue = 75; X strcpy(Objects[WEAPONID+22].objstr,"whip"); X strcpy(Objects[WEAPONID+22].truename,"whip"); X strcpy(Objects[WEAPONID+22].cursestr,"whip"); X Objects[WEAPONID+22].hit = 8; X Objects[WEAPONID+22].type = STRIKING; X Objects[WEAPONID+22].weight = 20; X Objects[WEAPONID+22].level = 2; X Objects[WEAPONID+22].aux = I_TANGLE; X Objects[WEAPONID+22].dmg = 4; X Objects[WEAPONID+22].basevalue = 100; X strcpy(Objects[WEAPONID+23].objstr,"grey metal cylinder"); X strcpy(Objects[WEAPONID+23].cursestr,"lightsabre"); X strcpy(Objects[WEAPONID+23].truename,"lightsabre"); X Objects[WEAPONID+23].hit = 20; X Objects[WEAPONID+23].type = THRUSTING; X Objects[WEAPONID+23].weight = 20; X Objects[WEAPONID+23].level = 9; X Objects[WEAPONID+23].usef = I_LIGHTSABRE; X Objects[WEAPONID+23].aux = I_LIGHTSABRE; X Objects[WEAPONID+23].plus = 0; X Objects[WEAPONID+23].dmg = 30; X Objects[WEAPONID+23].basevalue = 2000; X strcpy(Objects[WEAPONID+24].objstr,"bastard sword"); X strcpy(Objects[WEAPONID+24].truename,"Demonblade"); X strcpy(Objects[WEAPONID+24].cursestr,"Demonblade"); X Objects[WEAPONID+36].uniqueness = UNIQUE_UNMADE; X Objects[WEAPONID+36].type = CUTTING; X Objects[WEAPONID+24].hit = 8; X Objects[WEAPONID+24].blessing = -8; X Objects[WEAPONID+24].plus = 8; X Objects[WEAPONID+24].weight = 500; X Objects[WEAPONID+24].usef = I_DEMONBLADE; X Objects[WEAPONID+24].aux = I_DEMONBLADE; X Objects[WEAPONID+24].level = 9; X Objects[WEAPONID+24].dmg = 16; X Objects[WEAPONID+24].basevalue = 1000; X strcpy(Objects[WEAPONID+25].objstr,"mace"); X strcpy(Objects[WEAPONID+25].truename,"mace of disruption"); X strcpy(Objects[WEAPONID+25].cursestr,"mace"); X Objects[WEAPONID+25].hit = 10; X Objects[WEAPONID+25].type = STRIKING; X Objects[WEAPONID+25].blessing = 9; X Objects[WEAPONID+25].plus = 3; X Objects[WEAPONID+25].weight = 250; X Objects[WEAPONID+25].usef = I_MACE_DISRUPT; X Objects[WEAPONID+25].aux = I_MACE_DISRUPT; X Objects[WEAPONID+25].level = 5; X Objects[WEAPONID+25].dmg = 12; X Objects[WEAPONID+25].basevalue = 3000; X strcpy(Objects[WEAPONID+26].objstr,"longbow"); X strcpy(Objects[WEAPONID+26].truename,"longbow"); X strcpy(Objects[WEAPONID+26].cursestr,"longbow"); X Objects[WEAPONID+26].hit = 15; X Objects[WEAPONID+26].type = MISSILE; X Objects[WEAPONID+26].objchar = MISSILEWEAPON; X Objects[WEAPONID+26].weight = 100; X Objects[WEAPONID+26].level = 2; X Objects[WEAPONID+26].dmg = 12; X Objects[WEAPONID+26].basevalue = 300; X strcpy(Objects[WEAPONID+27].objstr,"crossbow"); X strcpy(Objects[WEAPONID+27].truename,"crossbow"); X strcpy(Objects[WEAPONID+27].cursestr,"crossbow"); X Objects[WEAPONID+27].hit = 15; X Objects[WEAPONID+27].type = MISSILE; X Objects[WEAPONID+27].objchar = MISSILEWEAPON; X Objects[WEAPONID+27].weight = 150; X Objects[WEAPONID+27].level = 3; X Objects[WEAPONID+27].dmg = 20; X Objects[WEAPONID+27].basevalue = 500; X strcpy(Objects[WEAPONID+28].objstr,"arrow"); X strcpy(Objects[WEAPONID+28].truename,"arrow"); X strcpy(Objects[WEAPONID+28].cursestr,"arrow"); X Objects[WEAPONID+28].type = MISSILE; X Objects[WEAPONID+28].objchar = MISSILEWEAPON; X Objects[WEAPONID+28].hit = 3; X Objects[WEAPONID+28].weight = 2; X Objects[WEAPONID+28].aux = I_ARROW; X Objects[WEAPONID+28].level = 1; X Objects[WEAPONID+28].dmg = 3; X Objects[WEAPONID+28].basevalue = 2; X strcpy(Objects[WEAPONID+29].objstr,"bolt"); X strcpy(Objects[WEAPONID+29].truename,"bolt"); X strcpy(Objects[WEAPONID+29].cursestr,"bolt"); X Objects[WEAPONID+29].type = MISSILE; X Objects[WEAPONID+29].weight = 2; X Objects[WEAPONID+29].aux = I_BOLT; X Objects[WEAPONID+29].objchar = MISSILEWEAPON; X Objects[WEAPONID+29].level = 1; X Objects[WEAPONID+29].dmg = 3; X Objects[WEAPONID+30].hit = 3; X Objects[WEAPONID+29].basevalue = 5; X strcpy(Objects[WEAPONID+30].objstr,"bola"); X strcpy(Objects[WEAPONID+30].truename,"bola"); X strcpy(Objects[WEAPONID+30].cursestr,"bola"); X Objects[WEAPONID+30].weight = 50; X Objects[WEAPONID+30].type = MISSILE; X Objects[WEAPONID+30].objchar = MISSILEWEAPON; X Objects[WEAPONID+30].level = 2; X Objects[WEAPONID+30].aux = I_TANGLE; X Objects[WEAPONID+30].hit = 10; X Objects[WEAPONID+30].dmg = 3; X Objects[WEAPONID+30].basevalue = 50; X strcpy(Objects[WEAPONID+31].objstr,"broad sword"); X strcpy(Objects[WEAPONID+31].truename,"vorpal sword"); X strcpy(Objects[WEAPONID+31].cursestr,"sword of self-mutilation"); X Objects[WEAPONID+31].weight = 40; X Objects[WEAPONID+31].type = CUTTING; X Objects[WEAPONID+31].level = 7; X Objects[WEAPONID+31].aux = I_VORPAL; X Objects[WEAPONID+31].hit = 9; X Objects[WEAPONID+31].dmg = 12; X Objects[WEAPONID+31].plus = 5; X Objects[WEAPONID+31].basevalue = 3000; X strcpy(Objects[WEAPONID+32].objstr,"great-sword"); X strcpy(Objects[WEAPONID+32].truename,"Desecrator"); X strcpy(Objects[WEAPONID+32].cursestr,"Desecrator"); X Objects[WEAPONID+32].uniqueness = UNIQUE_UNMADE; X Objects[WEAPONID+32].type = CUTTING; X Objects[WEAPONID+32].weight = 100; X Objects[WEAPONID+32].level = 9; X Objects[WEAPONID+32].aux = I_DESECRATE; X Objects[WEAPONID+32].usef = I_DESECRATE; X Objects[WEAPONID+32].hit = 7; X Objects[WEAPONID+32].plus = 7; X Objects[WEAPONID+32].blessing = -7; X Objects[WEAPONID+32].dmg = 20; X Objects[WEAPONID+32].basevalue = 5000; X strcpy(Objects[WEAPONID+33].objstr,"morning-star"); X strcpy(Objects[WEAPONID+33].truename,"firestar"); X strcpy(Objects[WEAPONID+33].cursestr,"firestar"); X Objects[WEAPONID+33].weight = 60; X Objects[WEAPONID+33].type = STRIKING; X Objects[WEAPONID+33].level = 6; X Objects[WEAPONID+33].aux = I_FIRESTAR; X Objects[WEAPONID+33].usef = I_PERM_FIRE_RESIST; X Objects[WEAPONID+33].hit = 7; X Objects[WEAPONID+33].plus = 7; X Objects[WEAPONID+33].dmg = 16; X Objects[WEAPONID+33].basevalue = 2000; X strcpy(Objects[WEAPONID+34].objstr,"estoc"); X strcpy(Objects[WEAPONID+34].truename,"Defender"); X strcpy(Objects[WEAPONID+34].cursestr,"Defender"); X Objects[WEAPONID+34].uniqueness = UNIQUE_MADE; X Objects[WEAPONID+34].type = THRUSTING; X Objects[WEAPONID+34].weight = 50; X Objects[WEAPONID+34].level = 7; X Objects[WEAPONID+34].aux = I_DEFEND; X Objects[WEAPONID+34].usef = I_DEFEND; X Objects[WEAPONID+34].hit = 12; X Objects[WEAPONID+34].plus = 7; X Objects[WEAPONID+34].blessing = 7; X Objects[WEAPONID+34].dmg = 10; X Objects[WEAPONID+34].basevalue = 3000; X strcpy(Objects[WEAPONID+35].objstr,"ivory spear"); X strcpy(Objects[WEAPONID+35].truename,"Victrix"); X strcpy(Objects[WEAPONID+35].cursestr,"Victrix"); X Objects[WEAPONID+35].weight = 50; X Objects[WEAPONID+35].type = THRUSTING; X Objects[WEAPONID+35].level = 9; X Objects[WEAPONID+35].aux = I_VICTRIX; X Objects[WEAPONID+35].usef = I_VICTRIX; X Objects[WEAPONID+35].hit = 10; X Objects[WEAPONID+35].plus = 10; X Objects[WEAPONID+35].blessing = 10; X Objects[WEAPONID+35].dmg = 100; X Objects[WEAPONID+35].basevalue = 5000; X strcpy(Objects[WEAPONID+36].objstr,"great-axe"); X strcpy(Objects[WEAPONID+36].truename,"Goblins' Hewer"); X strcpy(Objects[WEAPONID+36].cursestr,"Goblins' Hewer"); X Objects[WEAPONID+36].uniqueness = UNIQUE_MADE; X Objects[WEAPONID+36].type = CUTTING; X Objects[WEAPONID+36].weight = 500; X Objects[WEAPONID+36].level = 7; X Objects[WEAPONID+36].hit = 6; X Objects[WEAPONID+36].plus = 6; X Objects[WEAPONID+36].blessing = 0; X Objects[WEAPONID+36].dmg = 32; X Objects[WEAPONID+36].basevalue = 2000; X strcpy(Objects[WEAPONID+37].objstr,"shortsword"); X strcpy(Objects[WEAPONID+37].truename,"The Dark Emperor's Sword"); X strcpy(Objects[WEAPONID+37].cursestr,"The Dark Emperor's Sword"); X Objects[WEAPONID+37].uniqueness = UNIQUE_MADE; X Objects[WEAPONID+37].type = CUTTING; X Objects[WEAPONID+37].weight = 25; X Objects[WEAPONID+37].level = 10; X Objects[WEAPONID+37].hit = 10; X Objects[WEAPONID+37].plus = 20; X Objects[WEAPONID+37].blessing = -10; X Objects[WEAPONID+37].dmg = 10; X Objects[WEAPONID+37].basevalue = 10000; X X X for (i=WEAPONID;i<WEAPONID+NUMWEAPONS;i++) { X if (Objects[i].objchar != MISSILEWEAPON) X Objects[i].objchar = WEAPON; X Objects[i].fragility = 15; X } X X for (i=ARTIFACTID;i<ARTIFACTID+NUMARTIFACTS;i++) { X Objects[i].objchar = ARTIFACT; X Objects[i].fragility = 15; X } X X strcpy(Objects[ARTIFACTID+0].objstr,"Shining Orb"); X strcpy(Objects[ARTIFACTID+0].truename,"Orb of Mastery"); X strcpy(Objects[ARTIFACTID+0].cursestr,"Orb of Mastery"); X Objects[ARTIFACTID+0].usef = I_ORBMASTERY; X Objects[ARTIFACTID+5].uniqueness = 3; X Objects[ARTIFACTID+0].level = 10; X Objects[ARTIFACTID+0].weight = 500; X Objects[ARTIFACTID+0].basevalue = 10000; X strcpy(Objects[ARTIFACTID+1].objstr,"Red Orb"); X strcpy(Objects[ARTIFACTID+1].truename,"Orb of Fire"); X strcpy(Objects[ARTIFACTID+1].cursestr,"Orb of Fire"); X Objects[ARTIFACTID+1].usef = I_ORBFIRE; X Objects[ARTIFACTID+1].level = 9; X Objects[ARTIFACTID+1].weight = 50; X Objects[ARTIFACTID+1].basevalue = 2000; X strcpy(Objects[ARTIFACTID+2].objstr,"Green Orb"); X strcpy(Objects[ARTIFACTID+2].truename,"Orb of Water"); X strcpy(Objects[ARTIFACTID+2].cursestr,"Orb of Water"); X Objects[ARTIFACTID+2].usef = I_ORBWATER; X Objects[ARTIFACTID+2].weight = 50; X Objects[ARTIFACTID+2].level = 8; X Objects[ARTIFACTID+2].basevalue = 2000; X strcpy(Objects[ARTIFACTID+3].objstr,"Brown Orb"); X strcpy(Objects[ARTIFACTID+3].truename,"Orb of Earth"); X strcpy(Objects[ARTIFACTID+3].cursestr,"Orb of Earth"); X Objects[ARTIFACTID+3].usef = I_ORBEARTH; X Objects[ARTIFACTID+3].level = 7; X Objects[ARTIFACTID+3].weight = 50; X Objects[ARTIFACTID+3].basevalue = 2000; X strcpy(Objects[ARTIFACTID+4].objstr,"Blue Orb"); X strcpy(Objects[ARTIFACTID+4].truename,"Orb of Air"); X strcpy(Objects[ARTIFACTID+4].cursestr,"Orb of Air"); X Objects[ARTIFACTID+4].usef = I_ORBAIR; X Objects[ARTIFACTID+4].level = 6; X Objects[ARTIFACTID+4].weight = 50; X Objects[ARTIFACTID+4].basevalue = 2000; X strcpy(Objects[ARTIFACTID+5].objstr,"Black Orb"); X strcpy(Objects[ARTIFACTID+5].truename,"Burnt-out Orb"); X strcpy(Objects[ARTIFACTID+5].cursestr,"Burnt-out Orb"); X Objects[ARTIFACTID+5].usef = I_ORBDEAD; X Objects[ARTIFACTID+5].level = 1; X Objects[ARTIFACTID+5].weight = 25; X Objects[ARTIFACTID+5].basevalue = 100; X strcpy(Objects[ARTIFACTID+6].objstr,"Glass Orb"); X strcpy(Objects[ARTIFACTID+6].truename,"Crystal Ball"); X strcpy(Objects[ARTIFACTID+6].cursestr,"Ball of Mindlessness"); X Objects[ARTIFACTID+6].usef = I_CRYSTAL; X Objects[ARTIFACTID+5].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+6].weight = 75; X Objects[ARTIFACTID+6].level = 3; X Objects[ARTIFACTID+6].basevalue = 500; X strcpy(Objects[ARTIFACTID+7].objstr,"Metal Pineapple"); X strcpy(Objects[ARTIFACTID+7].truename,"Holy Hand-Grenade of Antioch"); X strcpy(Objects[ARTIFACTID+7].cursestr,"Holy Hand-Grenade of Antioch"); X Objects[ARTIFACTID+7].usef = I_ANTIOCH; X Objects[ARTIFACTID+7].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+7].level = 5; X Objects[ARTIFACTID+7].weight = 25; X Objects[ARTIFACTID+7].basevalue = 1000; X strcpy(Objects[ARTIFACTID+8].objstr,"The Amulet of Yendor"); X strcpy(Objects[ARTIFACTID+8].truename,"The Amulet of Yendor"); X strcpy(Objects[ARTIFACTID+8].cursestr,"The Amulet of Yendor"); X Objects[ARTIFACTID+8].uniqueness = COMMON; X Objects[ARTIFACTID+8].usef = I_NOTHING; X Objects[ARTIFACTID+8].weight = 500; X Objects[ARTIFACTID+8].level = 1; X Objects[ARTIFACTID+8].basevalue = 1; X strcpy(Objects[ARTIFACTID+9].objstr,"Key"); X strcpy(Objects[ARTIFACTID+9].truename,"Kolwynia, the Key That Was Lost"); X strcpy(Objects[ARTIFACTID+9].cursestr,"Kolwynia, the Key That was Lost"); X Objects[ARTIFACTID+9].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+9].usef = I_KOLWYNIA; X Objects[ARTIFACTID+9].weight = 1; X Objects[ARTIFACTID+9].level = 7; X Objects[ARTIFACTID+9].basevalue = 5000; X potionname(FALSE,Objects[ARTIFACTID+10].objstr); X strcpy(Objects[ARTIFACTID+10].truename,"Potion of Death"); X strcpy(Objects[ARTIFACTID+10].cursestr,"Potion of Death"); X Objects[ARTIFACTID+10].usef = I_DEATH; X Objects[ARTIFACTID+10].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+10].weight = 10; X Objects[ARTIFACTID+10].level = 3; X Objects[ARTIFACTID+10].basevalue = 500; X strcpy(Objects[ARTIFACTID+11].objstr,"Scintillating Staff"); X strcpy(Objects[ARTIFACTID+11].truename,"Staff of Enchantment"); X strcpy(Objects[ARTIFACTID+11].cursestr,"Staff of Enchantment"); X Objects[ARTIFACTID+11].usef = I_ENCHANTMENT; X Objects[ARTIFACTID+11].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+11].level = 5; X Objects[ARTIFACTID+11].weight = 100; X Objects[ARTIFACTID+11].basevalue = 2000; X strcpy(Objects[ARTIFACTID+12].objstr,"Strange Weightless Helm"); X strcpy(Objects[ARTIFACTID+12].truename,"Helm of Teleportation"); X strcpy(Objects[ARTIFACTID+12].cursestr,"Helm of Teleportation"); X Objects[ARTIFACTID+12].usef = I_HELM; X Objects[ARTIFACTID+12].weight = 0; X Objects[ARTIFACTID+12].level = 2; X Objects[ARTIFACTID+12].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+12].basevalue = 1500; X potionname(FALSE,Objects[ARTIFACTID+13].objstr); X strcpy(Objects[ARTIFACTID+13].truename,"Potion of Life"); X strcpy(Objects[ARTIFACTID+13].cursestr,"Potion of Life"); X Objects[ARTIFACTID+13].usef = I_LIFE; X Objects[ARTIFACTID+13].weight = 10; X Objects[ARTIFACTID+13].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+13].level = 1; X Objects[ARTIFACTID+13].basevalue = 500; X strcpy(Objects[ARTIFACTID+14].truename,"Silver Gallows"); X strcpy(Objects[ARTIFACTID+14].objstr,"Holy Symbol of Odin"); X strcpy(Objects[ARTIFACTID+14].cursestr,"Holy Symbol of Odin"); X Objects[ARTIFACTID+14].usef = I_SYMBOL; X Objects[ARTIFACTID+14].weight = 5; X Objects[ARTIFACTID+14].aux = ODIN; X Objects[ARTIFACTID+14].uniqueness = UNIQUE_MADE; X Objects[ARTIFACTID+14].level = 10; X Objects[ARTIFACTID+14].basevalue = 5000; X strcpy(Objects[ARTIFACTID+15].truename,"Obsidian Crescent"); X strcpy(Objects[ARTIFACTID+15].objstr,"Holy Symbol of Hecate"); X strcpy(Objects[ARTIFACTID+15].cursestr,"Holy Symbol of Hecate"); X Objects[ARTIFACTID+15].usef = I_SYMBOL; X Objects[ARTIFACTID+15].aux = HECATE; X Objects[ARTIFACTID+15].weight = 5; X Objects[ARTIFACTID+15].uniqueness = UNIQUE_MADE; X Objects[ARTIFACTID+15].level = 10; X Objects[ARTIFACTID+15].basevalue = 5000; X strcpy(Objects[ARTIFACTID+16].truename,"Gold Owl Pendant"); X strcpy(Objects[ARTIFACTID+16].objstr,"Holy Symbol of Athena"); X strcpy(Objects[ARTIFACTID+16].cursestr,"Holy Symbol of Athena"); X Objects[ARTIFACTID+16].usef = I_SYMBOL; X Objects[ARTIFACTID+16].aux = ATHENA; X Objects[ARTIFACTID+16].uniqueness = UNIQUE_MADE; X Objects[ARTIFACTID+16].weight = 5; X Objects[ARTIFACTID+16].level = 10; X Objects[ARTIFACTID+16].basevalue = 5000; X strcpy(Objects[ARTIFACTID+17].truename,"Jet Scarab"); X strcpy(Objects[ARTIFACTID+17].objstr,"Holy Symbol of Set"); X strcpy(Objects[ARTIFACTID+17].cursestr,"Holy Symbol of Set"); X Objects[ARTIFACTID+17].usef = I_SYMBOL; X Objects[ARTIFACTID+17].aux = SET; X Objects[ARTIFACTID+17].uniqueness = UNIQUE_MADE; X Objects[ARTIFACTID+17].weight = 5; X Objects[ARTIFACTID+17].level = 10; X Objects[ARTIFACTID+17].basevalue = 5000; X strcpy(Objects[ARTIFACTID+18].truename,"Sprig of Mistletoe"); X strcpy(Objects[ARTIFACTID+18].objstr,"Holy Symbol of Druidism"); X strcpy(Objects[ARTIFACTID+18].cursestr,"Holy Symbol of Druidism"); X Objects[ARTIFACTID+18].usef = I_SYMBOL; X Objects[ARTIFACTID+18].aux = DRUID; X Objects[ARTIFACTID+18].weight = 5; X Objects[ARTIFACTID+18].uniqueness = UNIQUE_MADE; X Objects[ARTIFACTID+18].level = 10; X Objects[ARTIFACTID+18].basevalue = 5000; X strcpy(Objects[ARTIFACTID+19].truename,"Blue Crystal Pendant"); X strcpy(Objects[ARTIFACTID+19].objstr,"Holy Symbol of Destiny"); X strcpy(Objects[ARTIFACTID+19].cursestr,"Holy Symbol of Destiny"); X Objects[ARTIFACTID+19].usef = I_SYMBOL; X Objects[ARTIFACTID+19].aux = DESTINY; X Objects[ARTIFACTID+19].weight = 5; X Objects[ARTIFACTID+19].uniqueness = UNIQUE_MADE; X Objects[ARTIFACTID+19].level = 10; X Objects[ARTIFACTID+19].basevalue = 5000; X X strcpy(Objects[ARTIFACTID+20].objstr,"Crudely Carved Monolith"); X strcpy(Objects[ARTIFACTID+20].truename,"The Juggernaut of Karnak"); X strcpy(Objects[ARTIFACTID+20].cursestr,"The Juggernaut of Karnak"); X Objects[ARTIFACTID+20].usef = I_JUGGERNAUT; X Objects[ARTIFACTID+20].uniqueness = UNIQUE_UNMADE; X Objects[ARTIFACTID+20].level = 6; X Objects[ARTIFACTID+20].weight = 1000; X Objects[ARTIFACTID+20].basevalue = 1000; X X for (i=STICKID;i<STICKID+NUMSTICKS;i++) { X Objects[i].objchar = STICK; X stickname(FALSE,Objects[i].objstr); X Objects[i].weight = 80; X Objects[i].fragility = 10; X } X X strcpy(Objects[STICKID+0].truename,"staff of firebolts"); X strcpy(Objects[STICKID+0].cursestr,"staff of firebolts"); X Objects[STICKID+0].usef=I_FIREBOLT; X Objects[STICKID+0].level = 3; X Objects[STICKID+0].basevalue = 500; X strcpy(Objects[STICKID+1].truename,"walking stick"); X strcpy(Objects[STICKID+1].cursestr,"walking stick"); X Objects[STICKID+1].usef=I_NOTHING; X Objects[STICKID+1].level=0; X Objects[STICKID+1].basevalue = 10; X strcpy(Objects[STICKID+2].truename,"staff of sleep"); X strcpy(Objects[STICKID+2].cursestr,"staff of sleep"); X Objects[STICKID+2].usef=I_SLEEP_OTHER; X Objects[STICKID+2].level=1; X Objects[STICKID+2].basevalue = 100; X strcpy(Objects[STICKID+3].truename,"wand of ball lightning"); X strcpy(Objects[STICKID+3].cursestr,"wand of ball lightning"); X Objects[STICKID+3].usef=I_LBALL; X Objects[STICKID+3].level=4; X Objects[STICKID+3].basevalue = 500; X strcpy(Objects[STICKID+4].truename,"rod of summoning"); X strcpy(Objects[STICKID+4].cursestr,"rod of summoning"); X Objects[STICKID+4].usef=I_SUMMON; X Objects[STICKID+4].level=2; X Objects[STICKID+4].basevalue = 500; X strcpy(Objects[STICKID+5].truename,"rod of hiding"); X strcpy(Objects[STICKID+5].cursestr,"rod of hiding"); X Objects[STICKID+5].usef=I_HIDE; X Objects[STICKID+5].level=1; X Objects[STICKID+5].basevalue = 100; X strcpy(Objects[STICKID+6].truename,"staff of lightning bolts"); X strcpy(Objects[STICKID+6].cursestr,"staff of lightning bolts"); X Objects[STICKID+6].usef=I_LBOLT; X Objects[STICKID+6].level=3; X Objects[STICKID+6].basevalue = 500; X strcpy(Objects[STICKID+7].truename,"wand of fireballs"); X strcpy(Objects[STICKID+7].cursestr,"wand of fireballs"); X Objects[STICKID+7].usef=I_FIREBALL; X Objects[STICKID+7].level=5; X Objects[STICKID+7].basevalue = 500; X strcpy(Objects[STICKID+8].truename,"rod of disintegration"); X strcpy(Objects[STICKID+8].cursestr,"rod of disintegration"); X Objects[STICKID+8].usef=I_DISINTEGRATE; X Objects[STICKID+8].level=7; X Objects[STICKID+8].basevalue = 2000; X strcpy(Objects[STICKID+9].truename,"staff of disruption"); X strcpy(Objects[STICKID+9].cursestr,"staff of disruption"); X Objects[STICKID+9].usef=I_DISRUPT; X Objects[STICKID+9].level=6; X Objects[STICKID+9].basevalue = 1000; X strcpy(Objects[STICKID+10].truename,"snowball stick"); X strcpy(Objects[STICKID+10].cursestr,"snowball stick"); X Objects[STICKID+10].usef=I_SNOWBALL; X Objects[STICKID+10].level=2; X Objects[STICKID+10].basevalue = 100; X strcpy(Objects[STICKID+11].truename,"staff of missiles"); X strcpy(Objects[STICKID+11].cursestr,"staff of missiles"); X Objects[STICKID+11].usef=I_MISSILE; X Objects[STICKID+11].level=1; X Objects[STICKID+11].basevalue = 50; X strcpy(Objects[STICKID+12].truename,"rod of apportation"); X strcpy(Objects[STICKID+12].cursestr,"rod of lossage"); X Objects[STICKID+12].usef=I_APPORT; X Objects[STICKID+12].level=2; X Objects[STICKID+12].basevalue = 200; X strcpy(Objects[STICKID+13].truename,"staff of dispelling"); X strcpy(Objects[STICKID+13].cursestr,"staff of self-dispelling"); X Objects[STICKID+13].usef=I_DISPEL; X Objects[STICKID+13].level=6; X Objects[STICKID+13].basevalue = 750; X strcpy(Objects[STICKID+14].truename,"staff of healing"); X strcpy(Objects[STICKID+14].cursestr,"staff of harming"); X Objects[STICKID+14].usef=I_HEAL; X Objects[STICKID+14].level=3; X Objects[STICKID+14].basevalue = 500; X strcpy(Objects[STICKID+15].truename,"wand of stupidity"); X strcpy(Objects[STICKID+15].cursestr,"wand of stupidity"); X Objects[STICKID+15].usef=I_POLYMORPH; X Objects[STICKID+15].level=3; X Objects[STICKID+15].basevalue = 1000; X X for (i=BOOTID;i<BOOTID+NUMBOOTS;i++) { X Objects[i].objchar = BOOTS; X Objects[i].weight = 30; X Objects[i].fragility = 6; X bootname(FALSE,Objects[i].objstr); X } X X strcpy(Objects[BOOTID+0].truename,"boots of speed"); X strcpy(Objects[BOOTID+0].cursestr,"boots of slowness"); X Objects[BOOTID+0].usef = I_PERM_SPEED; X Objects[BOOTID+0].level = 4; X Objects[BOOTID+0].basevalue = 1000; X X strcpy(Objects[BOOTID+1].truename,"boots of heroism"); X strcpy(Objects[BOOTID+1].cursestr,"boots of cowardliness"); X Objects[BOOTID+1].usef = I_PERM_HERO; X Objects[BOOTID+1].level = 6; X Objects[BOOTID+1].basevalue = 1000; X X strcpy(Objects[BOOTID+2].truename,"boots of levitation"); X strcpy(Objects[BOOTID+2].cursestr,"boots of levitation"); X Objects[BOOTID+2].usef = I_PERM_LEVITATE; X Objects[BOOTID+2].level = 3; X Objects[BOOTID+2].basevalue = 500; X X strcpy(Objects[BOOTID+3].truename,"boots of agility"); X strcpy(Objects[BOOTID+3].cursestr,"boots of clumsiness"); X Objects[BOOTID+3].usef = I_PERM_AGILITY; X Objects[BOOTID+3].level = 3; X Objects[BOOTID+3].basevalue = 250; X X strcpy(Objects[BOOTID+4].truename,"jumping boots"); X strcpy(Objects[BOOTID+4].cursestr,"jumping boots"); X Objects[BOOTID+4].usef = I_BOOTS_JUMPING; X Objects[BOOTID+4].level = 2; X Objects[BOOTID+4].basevalue = 200; X X strcpy(Objects[BOOTID+5].truename,"boots of leather"); X strcpy(Objects[BOOTID+5].cursestr,"boots of leather"); X Objects[BOOTID+5].usef = I_NO_OP; X Objects[BOOTID+5].level = 0; X Objects[BOOTID+5].basevalue = 7; X X for (i=CLOAKID;i<NUMCLOAKS+CLOAKID;i++) { X Objects[i].objchar = CLOAK; X Objects[i].weight = 30; X Objects[i].fragility = 4; X cloakname(FALSE,Objects[i].objstr); X } X X strcpy(Objects[CLOAKID+0].truename,"cloak of wool"); X strcpy(Objects[CLOAKID+0].cursestr,"cloak of wool"); X Objects[CLOAKID+0].usef = I_NO_OP; X Objects[CLOAKID+0].level = 0; X Objects[CLOAKID+0].basevalue = 15; X X strcpy(Objects[CLOAKID+1].truename,"cloak of negimmunity"); X strcpy(Objects[CLOAKID+1].cursestr,"cloak of level drain"); X Objects[CLOAKID+1].usef = I_PERM_NEGIMMUNE; X Objects[CLOAKID+1].level = 3; X Objects[CLOAKID+1].basevalue = 500; X X strcpy(Objects[CLOAKID+2].truename,"cloak of invisibility"); X strcpy(Objects[CLOAKID+2].cursestr,"cloak of invisibility"); X Objects[CLOAKID+2].usef = I_PERM_INVISIBLE; X Objects[CLOAKID+2].level = 5; X Objects[CLOAKID+2].basevalue = 500; X X strcpy(Objects[CLOAKID+3].truename,"cloak of skill"); X strcpy(Objects[CLOAKID+3].cursestr,"cloak of skill"); X Objects[CLOAKID+3].usef = I_PERM_ACCURACY; X Objects[CLOAKID+3].level = 5; X Objects[CLOAKID+3].basevalue = 1000; X X strcpy(Objects[CLOAKID+4].truename,"cloak of protection"); X strcpy(Objects[CLOAKID+4].cursestr,"cloak of damage"); X Objects[CLOAKID+4].usef = I_PERM_PROTECTION; X Objects[CLOAKID+4].level = 3; X Objects[CLOAKID+4].basevalue = 500; X X strcpy(Objects[CLOAKID+5].truename,"cloak of displacement"); X strcpy(Objects[CLOAKID+5].cursestr,"cloak of vulnerability"); X Objects[CLOAKID+5].usef = I_PERM_DISPLACE; X Objects[CLOAKID+5].level = 6; X Objects[CLOAKID+5].basevalue = 2000; X X strcpy(Objects[CLOAKID+6].truename,"cloak of true sight"); X strcpy(Objects[CLOAKID+6].cursestr,"cloak of blindness"); X Objects[CLOAKID+6].usef = I_PERM_TRUESIGHT; X Objects[CLOAKID+6].level = 3; X Objects[CLOAKID+6].basevalue = 500; X X X X for (i=RINGID;i<RINGID+NUMRINGS;i++) { X Objects[i].objchar = RING; X Objects[i].weight = 1; X Objects[i].fragility = 10; X ringname(FALSE,Objects[i].objstr); X } X X strcpy(Objects[RINGID+0].truename,"ring of vision"); X strcpy(Objects[RINGID+0].cursestr,"ring of vision"); X Objects[RINGID+0].usef = I_PERM_VISION; X Objects[RINGID+0].level = 1; X Objects[RINGID+0].basevalue = 200; X X strcpy(Objects[RINGID+1].truename,"ring of burden"); X strcpy(Objects[RINGID+1].cursestr,"ring of burden"); X Objects[RINGID+1].usef = I_PERM_BURDEN; X Objects[RINGID+1].level = 0; X Objects[RINGID+1].blessing = -1; X Objects[RINGID+1].basevalue = 1; X X strcpy(Objects[RINGID+2].truename,"ring of strength"); X strcpy(Objects[RINGID+2].cursestr,"ring of strength"); X Objects[RINGID+2].usef = I_PERM_STRENGTH; X Objects[RINGID+2].level = 1; X Objects[RINGID+2].basevalue = 100; X X strcpy(Objects[RINGID+3].truename,"ring of gaze immunity"); X strcpy(Objects[RINGID+3].cursestr,"ring of gaze immunity"); X Objects[RINGID+3].usef = I_PERM_GAZE_IMMUNE; X Objects[RINGID+3].level = 2; X Objects[RINGID+3].basevalue = 100; X X strcpy(Objects[RINGID+4].truename,"ring of fire resistance"); X strcpy(Objects[RINGID+4].cursestr,"ring of fire resistance"); X Objects[RINGID+4].usef = I_PERM_FIRE_RESIST; X Objects[RINGID+4].level = 3; X Objects[RINGID+4].basevalue = 100; X X strcpy(Objects[RINGID+5].truename,"ring of brass and glass"); X strcpy(Objects[RINGID+5].cursestr,"ring of brass and glass"); X Objects[RINGID+5].basevalue = 10; X X strcpy(Objects[RINGID+6].truename,"ring of poison resistance"); X strcpy(Objects[RINGID+6].cursestr,"ring of poison"); X Objects[RINGID+6].usef = I_PERM_POISON_RESIST; X Objects[RINGID+6].level = 4; X Objects[RINGID+6].basevalue = 100; X X strcpy(Objects[RINGID+7].truename,"ring of regeneration"); X strcpy(Objects[RINGID+7].cursestr,"ring of regeneration"); X Objects[RINGID+7].usef = I_PERM_REGENERATE; X Objects[RINGID+7].level = 5; X Objects[RINGID+7].basevalue = 1000; X X strcpy(Objects[RINGID+8].truename,"ring of self-knowledge"); X strcpy(Objects[RINGID+8].cursestr,"ring of delusion"); X Objects[RINGID+8].usef = I_PERM_KNOWLEDGE; X Objects[RINGID+8].level = 0; X Objects[RINGID+8].basevalue = 100; X X strcpy(Objects[RINGID+9].truename,"ring of protection"); X strcpy(Objects[RINGID+9].cursestr,"ring of vulnerability"); X Objects[RINGID+9].usef = I_PERM_PROTECTION; X Objects[RINGID+9].level = 4; X Objects[RINGID+9].basevalue = 500; X X /* Cash */ X strcpy(Objects[CASHID].objstr,"money"); X strcpy(Objects[CASHID].truename,"money"); X strcpy(Objects[CASHID].cursestr,"money (the root of all evil)"); X Objects[CASHID].usef = I_NO_OP; X Objects[CASHID].objchar = CASH; X Objects[CASHID].weight = 0; X Objects[CASHID].level = 0; X Objects[CASHID].fragility = 10; X Objects[CASHID].basevalue = 0; X X X X /* Da Corpse. */ X strcpy(Objects[CORPSEID].objstr,"a mysterious corpse"); X strcpy(Objects[CORPSEID].truename,"a mysterious corpse"); X strcpy(Objects[CORPSEID].cursestr,"a mysterious corpse"); X Objects[CORPSEID].usef = I_CORPSE; X Objects[CORPSEID].objchar = CORPSE; X Objects[CORPSEID].weight = 100; X Objects[CORPSEID].level = 0; X Objects[CORPSEID].fragility = 10; X Objects[CORPSEID].basevalue = 0; X X} END_OF_oinititem2.c if test 35133 -ne `wc -c <oinititem2.c`; then echo shar: \"oinititem2.c\" unpacked with wrong size! fi # end of overwriting check fi if test -f omega.update.history -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"omega.update.history\" else echo shar: Extracting \"omega.update.history\" \(357 characters\) sed "s/^X//" >omega.update.history <<'END_OF_omega.update.history' XVersion Changes X======= ======= X X0.57(alpha) First public release X0.58(alpha) bugfixes, I forget what else X0.59(alpha) bugfixes, better tactical combat mode ^c trapping X X0.60.2(alpha) bugfixes, filechecking, cuserid changed to getlogin, X brothel on city level, more foods. this file X started. new time mechanism, new module otime. X 12/14/87. END_OF_omega.update.history if test 357 -ne `wc -c <omega.update.history`; then echo shar: \"omega.update.history\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of archive 8 \(of 15\). cp /dev/null ark8isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 15 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0