Short: Allows cheating in "UFO: Enemy ..." AGA Uploader: wkocjan@polbox.com (Wojciech Kocjan) Author: wkocjan@polbox.com (Wojciech Kocjan) Type: game/gag Version: UFOCheat 1.00 This program is a good tool for those who are not good UFO players or would simply like to have mo' money, superhuman soldiers etc. Written in AMOSPro. Some advices/warnings: - LOADING/SAVING GAMES: NEVER! save a game in a different slot! - the program only loads some parts (files like soldier.dat, liglob.dat...) - MONEY: it's best to press the button "Sum = (by ???)" and enter the monthly fundings you'd like to earn and enter the current cash amount, otherwise you'd loose a month! - SOLDIERS: enable "Save automatically", then "Improve everyone" a couple of times! - BASE STORES: enable "Save automatically", then you can enter the amount of most important alien weapons and of Psi-Amps. Remember this: Psi-Amps always work if your soldiers have Psionic Skills & Psi.Strength That's all you have to know use it! p.s. This program is mailware, if you like it, send me an e-mail. Wojtek Kocjan (wkocjan@polbox.com) ########################################################################### More sophisticated text: (mostly for developers/programmers/advanced cheaters) Here's an AMOS source of loader - shows where you can find most of things: > REQUEST : F$=Param$ : If F$='' : Pop Proc : End If > If Not Exist(F$+'saveinfo.dat') : Pop Proc : End If > GAMDIR$=F$ > > Open In 1,GAMDIR$+'saveinfo.dat' > I$=Input$(1,40) : VI=Varptr(I$) > G_NAME$=Peek$(VI+2,16,Chr$(0)) > For I=0 To 5 : G_CZAS(I)=Deek(VI+$1C+I*2) : Next I > Close 1 : G_CZAS(5)=G_CZAS(5)*5 : Inc G_CZAS(1) > > Open In 1,GAMDIR$+'diplom.dat' > For Y=1 To 16 : Pof(1)=$2+(G_CZAS(1)*2)+(Y-1)*$24 > I$=Input$(1,$2) : MONEY(Y)=Deek(Varptr(I$)) > Next Y > Close 1 > > Open In 1,GAMDIR$+'liglob.dat' > I$=Input$(1,8) : VP=Varptr(I$) : Close 1 > MONEY(0)=Leek(VP) > > Open In 1,GAMDIR$+'soldier.dat' > I$=Input$(1,16) > SOLDIERS=0 : Do > I$=Input$(1,68) : VI=Varptr(I$) : P=Asc(Upper$(Peek$(VI,1))) > Exit If(((P>=$30) and(P<=$39)) or((P>=$41) and(P<=$5A)))=0 > STN=Instr(I$,Chr$(0))-1 : Exit If STN<0 > SOLDIER$(SOLDIERS)=Peek$(VI,STN) > Restore _ADDR > Read II : For I=0 To II-1 : Read _ADR > _VAL=Peek(VI+_ADR) : Read VV > S_PARAM(SOLDIERS,I)=VV > Next I > Inc SOLDIERS : Loop > For I=SOLDIERS To S_MAX-1 : SOLDIER$(I)='' : Next I > Close 1 > > Open In 1,GAMDIR$+'base.dat' > BASES=0 : For B=0 To 7 > Pof(1)=B*$122 : I$=Input$(1,$122) : VI=Varptr(I$) > Exit If Peek(VI)=0 > BASE$(B)=Peek$(VI,16,Chr$(0)) > Restore _BASE : Read II > For I=0 To II-1 > Read _ADR : _VAL=Deek(VI+_ADR) > Read VV : B_STORE(B,I)=VV > Next I > Inc BASES : Next B > Close 1 > If BASES<8 : For B=BASES To 7 : BASE$(B)='' : Next B : End If > > D_INFORMATION > > Pop Proc > > _ADDR: > Data 10 > Data $1A,_VAL < Time Units > Data $1C,_VAL < Stamina > Data $1B,_VAL < Health > Data $24,(11-_VAL)*10 < Bravery > Data $1D,_VAL < Reactions > Data $1F,_VAL < Firing Accuracy > Data $20,_VAL < Throwing Accuracy > Data $1E,_VAL < Strength > Data $22,_VAL < Psionic Strength > Data $23,_VAL < Psionic Skills > > _BASE: > Data 16 > Data $D8,_VAL < Elenium-115 > Data $110,_VAL < Alien Alloys > Data $100,_VAL < UFO Power Source > Data $102,_VAL < UFO Navigation > Data $C2,_VAL < Heavy Plasma > Data $C4,_VAL < Heavy Plasma Clip > Data $C6,_VAL < Plasma Rifle > Data $C8,_VAL < Plasma Rifle Clip > Data $CA,_VAL < Plasma Pistol > Data $CC,_VAL < Plasma Pistol Clip > Data $D6,_VAL < Alien Grenade > Data $B0,_VAL < Psi-Amp > Data $D2,_VAL < Small Launcher > Data $D4,_VAL < Stun Bomb > Data $CE,_VAL < Blaster Launcher > Data $D0,_VAL < Blaster Bomb On the bottom there's a list of soldiers' parameters and bases' stores. Files: saveinfo.dat - all the data you want to know about the saved game itself. Type Offset (HEX) Name Description STRING $00 NAME NAME OF THE SAVED GAME UWORD $1C YEAR THE YEAR UWORD $1E MONTH MONTH (JAN=0,FEB=1) UWORD $20 DAY DAY (1999/JAN/1=1,1999/FEB/1=2) UWORD $22 HOUR HOUR (00:00 = 0, 02:00=2) UWORD $24 MINUTE MINUTE liglob.dat - many interesting thing, the most interesting thing: YOUR ACCOUNT! Type Offset (HEX) Name Description ULONG $0000 MONEY SPEAKS FOR ITSELF soldier.dat - soldiers, first starting at $10, every soldiers takes up $44 bytes of space, the soldiers end when the first character of the name isn't A-Z or a-z or 0-9! (usually $22 = ") Type Offset (HEX) Name Description STRING $00 NAME SOLDIER'S NAME & FAMILY NAME BYTE(or UBYTE) $1A TIMEUNITS SOLDIER'S TU BYTE(or UBYTE) $1A STAMINA SOLDIER'S STAMINA BYTE(or UBYTE) $1A HEALTH SOLDIER'S HEALTH BYTE(or UBYTE) $24 BRAVERY SOLDIER'S BRAVERY (=$10-BRAV/10) BYTE(or UBYTE) $1D REACTIONS SOLDIER'S REACTIONS BYTE(or UBYTE) $1F FIRING SOLDIER'S FIRING ACCURARY BYTE(or UBYTE) $20 THROWING SOLDIER'S THROWING ACCURACY BYTE(or UBYTE) $1E STRENGTH SOLDIER'S STRENGTH BYTE(or UBYTE) $22 PSI/STR. SOLDIER'S PSIONIC STRENGTH BYTE(or UBYTE) $23 PSI/SKILL SOLDIER'S PSIONIC SKILLS base.dat - data about every base; every base is $122 bytes long, first starts at $0 Type Offset (HEX) Name Description STRING $000 NAME NAME OF THE BASE WORD $0D8 ELENIUM ELENIUM-115 WORD $110 A-ALLOYS ALIEN ALLOYS WORD $100 UFO-PS UFO POWER SOURCE WORD $102 UFO-NAV UFO NAVIGATION WORD $0C2 H-PLASMA HEAVY PLASMA WORD $0C4 H-P-CLIP HEAVY PLASMA CLIP WORD $0C6 P-RIFLE PLASMA RIFLE WORD $0C8 P-R-CLIP PLASMA RIFLE CLIP WORD $0CA P-PISTOL PLASMA PISTOL WORD $0CC P-P-CLIP PLASMA PISTOL CLIP WORD $0D6 A-GRENADE ALIEN GRENADE WORD $0B0 PSI-AMP PSI-AMP WORD $0D2 SLAUNCHER SMALL LAUNCHER WORD $0D4 STUN OMB STUN BOMB WORD $0CE BLAUNCHER BLASTER LAUNCHER WORD $0D0 BLASTBOMB BLASTER BOMB There are some tricks to change even more: 1. To get to know more offsets in bases write from $60 to $110 increasing words ($0001 $0002 $0003 $0004). It'll crash when you'll scroll too low in base info->stores. But after setting some values to zero, you'll get to know where are things like fusion ball ($72), fusion ball launcher ($66) and plasma beam ($6A) - cool, hah? That's how I did it, not by manufacturing every element. 2. if you want to research some thing you have in another game, simply copy research.dat from one to another. 3. try copying some files from one game to another and see what happens (always backup the files you'll replace - it'll crash very often) I think you've had enough to read, now you can cheat!