/* $Filename: WormWars/Source/engine.h $ * $VER: WormWars 5.6 $ * $Description: Constants for game engine $ * * © Copyright 2000 James R. Jacobs. */ #define GOATMOVE 5 // assert (GOATMOVE != 0); #define NOSE 2 // if (NOSE > PROTECTORS) nose disabled #define NOSEDISTANCE 4 #define WORMQUEUELIMIT 15 #define DOGQUEUELIMIT 120 #define SECONDSPERLEVEL 120 // assert (SECONDSPERLEVEL <= 599); #define UNDRIFT 5 // assert (UNDRIFT != 0); // dog dormancy #define DORMANT 0 #define AWAKENING 1 #define CHASING 10 // frequencies #define FREQ_CLOUD 1 #define FREQ_DRIP 1 #define FREQ_MAX 70 #define FREQ_DEC 2 #define FREQ_MIN 10 #define FREQ_TELEPORT 240 #define BONUSCLOUDSPEED 7 #define BONUSDRIPSPEED 11 #define BONUSFRAGSPEED 9 #define BONUSMISSILESPEED 9 #define CLOUDSPEED 9 #define DOGSPEED 8 #define DRIPSPEED 13 #define FRAGSPEED 10 #define GOATSPEED 19 #define MAGNETSPEED 9 #define MISSILESPEED 12 #define ORBSPEED 11 #define PENGUINSPEED 23 #define TIMEBOMBSPEED 60 // population limits #define CREATURES 60 #define MAGNETS 20 #define PROTECTORS 2 // <=4! // vampirism #define GOATBLOOD 1 #define ORBBLOOD 1 #define PENGUINBLOOD 1 // jump distances #define FASTDISTANCE 5 #define NORMALDISTANCE 4 #define SLOWDISTANCE 3 // skill points #define EMPTYPOINT 1 #define TAILBONUS 1 #define TURNTOSILVER 5 #define TURNTOGOLD 10 #define SILVERPOINT 10 #define TIMEBONUS 10 #define ENCLOSUREPOINT 10 #define TELPOINT 20 #define GOLDPOINT 20 #define HITSHOT 50 #define KILLGOAT 50 #define KILLPENGUIN 50 #define KILLWORM 100 #define BOMBOVEREDGE 100 #define SKULLPOINT 100 #define LETTERPOINT 100 #define DRIPBONUS 100 #define LEVELBONUS 100 // pain ratings #define DOGPAIN 5 #define DRIPPAIN 5 #define HEADPAIN 5 #define MISSILEPAIN 5 #define ORBPAIN 5 #define PROTECTORPAIN 5 #define REMNANTPAIN 5 #define TELEPORTPAIN 5 #define WORMFIREPAIN 5 #define WHIRLWINDPAIN 5 #define BOMBPAIN 3 #define CLOUDPAIN 3 #define FRAGMENTPAIN 3 #define LIGHTNINGPAIN 3 #define OTHERTAILPAIN 3 #define PENGUINPAIN 3 #define PENGUINPAIN 3 #define GOATPAIN 2 #define METALPAIN 2 #define SLAYERPAIN 2 #define SLIMEPAIN 2 #define STONEPAIN 1 #define TAILPAIN 1 #define WOODPAIN 1 // objects #define BOMBADD 5 // in squares radius #define BOMBRAND 25 #define CLOCKADD 10 // in seconds #define CLOCKRAND 20 #define ICEADD 5 // in VERYSLOWs #define ICERAND 5 #define MODEADD 30 // in VERYSLOWs #define MODERAND 40 #define TREASUREADD 5 // in seconds #define TREASURERAND 5 MODULE void changefield(void); MODULE void clearletters(void); MODULE void death(void); MODULE void fastloop(void); MODULE void killall(void); MODULE void magnetloop(void); MODULE void newfield(void); MODULE void newhiscores(void); MODULE void orientworms(void); MODULE void slowloop(void); MODULE void bombblast(SBYTE triggerer, SBYTE player, SBYTE centrex, SBYTE centrey); MODULE void bouncegoat(SBYTE which, SBYTE x, SBYTE y); MODULE void __inline change(SBYTE x, SBYTE y, UBYTE image); MODULE void cloudbullet(UBYTE which, SBYTE x, SBYTE y, SBYTE deltay); MODULE void copyfield(SBYTE source, SBYTE destination); MODULE void createmissile(UBYTE player); MODULE void creatureloop(SBYTE which); MODULE void dogqueue(SBYTE which, SBYTE deltax, SBYTE deltay); MODULE void drawcause(SBYTE player, SBYTE state); MODULE void drawletter(SBYTE player, SBYTE letter, SBYTE state); MODULE void explosion(SBYTE x, SBYTE y, SBYTE exceptionx, SBYTE exceptiony); MODULE void newlevel(SBYTE player); MODULE void orbscore(SBYTE which, ULONG score); MODULE void orbsplit(SBYTE which); MODULE void putletter(SBYTE player); MODULE void ramming(SBYTE player); MODULE void reflect(UBYTE which); MODULE void turnworm(SBYTE player, SBYTE deltax, SBYTE deltay); MODULE void wormbullet(SBYTE player); MODULE void wormletter(SBYTE player, SBYTE thissy); MODULE void wormloop(SBYTE player); MODULE void dogdog(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dogdrip(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dogfrag(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dogmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dogorb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dogpenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dogwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dripfrag(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dripmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void driporb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void drippenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void dripwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void fragfrag(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void fragorb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void fragmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void fragpenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void fragwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void missilemissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void missilepenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void missilewhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void orborb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void orbmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void orbpenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void orbwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void penguinwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void whirlwindwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormdog(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormdrip(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormfrag(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormorb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormpenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void wormworm(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protdog(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protdrip(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protfrag(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protorb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protpenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protworm(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void protprot(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void clouddog(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void clouddrip(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudfrag(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudmissile(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudorb(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudpenguin(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudwhirlwind(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudworm(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudprot(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE void cloudcloud(SBYTE x, SBYTE y, UBYTE which1, UBYTE which2); MODULE SWORD atleast(SWORD value, SWORD minimum); MODULE ABOOL blocked(SBYTE which, SBYTE deltax, SBYTE deltay); MODULE ABOOL bounceorb(SBYTE which, SBYTE x, SBYTE y); MODULE SBYTE bsign(SBYTE value); MODULE ABOOL findempty(SBYTE* x, SBYTE* y, SBYTE first, SBYTE last); MODULE SBYTE onlyworm(ABOOL alive); MODULE SBYTE slowdown(SBYTE speed); MODULE SBYTE speedup(SBYTE speed, ABOOL nitro); MODULE ULONG squareblast(SBYTE type, SBYTE player, SBYTE thissy, SBYTE x, SBYTE y); MODULE UBYTE whichcreature(SBYTE x, SBYTE y, UBYTE species, UBYTE exception); MODULE SBYTE whichteleport(SBYTE x, SBYTE y); MODULE ULONG wormobject(UBYTE player, SBYTE x, SBYTE y); MODULE SWORD wsign(SWORD value); // Must have blank line at EOF.