grim/gigamole
Clone
Summary
Browse
Changes
Graph
Make this compatible with qb64
default
tip
13 months ago, Gary Kramlich
ed69802d944c
Make this compatible with qb64
I did this awhile ago, but never committed it.
'****************************Declare Functions*******************************
DECLARE
FUNCTION
RandInt
!
(
num1!
,
num2!
)
DECLARE
FUNCTION
SaveClose
!
()
'*******************************Declare Subs*********************************
DECLARE
SUB
McMole
(
snd!
)
DECLARE
SUB
CenterT
(
Text$
,
y!
,
clr!
)
DECLARE
SUB
Dead
(
xists!
)
DECLARE
SUB
CheckBounds
(
Variable!
)
DECLARE
SUB
RestorePalette
()
DECLARE
SUB
knife
()
DECLARE
SUB
debug
(
Happy!
,
Awake!
,
bo!
,
Hungry!
,
Mad!
,
Ill!
,
broom!
,
Od!
,
Drunk!
)
DECLARE
SUB
IncrementVariable
(
ticks!
,
Variable!
,
value!
,
increment!
,
index!
)
DECLARE
SUB
DecrementVariable
(
ticks!
,
Variable!
,
value!
,
decrement!
,
index!
)
DECLARE
SUB
CheckProblems
(
Variable!
,
value!
,
problem!
,
probstr$
)
DECLARE
SUB
Speak
(
times!
,
delay!
)
DECLARE
SUB
KillDataFile
(
xists!
)
DECLARE
SUB
Refresh
(
x!
,
y!
,
sl!
)
DECLARE
SUB
Save
(
new
!,
snd!
,
Happy!
,
Awake!
,
bo!
,
Hungry!
,
Mad!
,
sick!
,
broom!
,
Od!
,
Drunk!
,
months!
,
weeks!
,
days!
,
autosave!
,
AnimateMenu!
)
DECLARE
SUB
MainMenu
(
sel!
,
sl$
)
DECLARE
SUB
grimstext
(
line$
,
clr1!
,
clr2!
,
clr3!
,
x!
,
y!
)
DECLARE
SUB
center
(
line$
,
y!
,
clr!
)
DECLARE
SUB
Slow
(
delay!
)
DECLARE
SUB
anti
()
DECLARE
SUB
grim
()
DECLARE
SUB
WIN
(
snd!
)
DECLARE
SUB
seizure
()
DECLARE
SUB
help
()
DECLARE
SUB
juggle
(
sl!
)
DECLARE
SUB
beer
(
snd!
)
DECLARE
SUB
OverDose
(
snd!
,
sl!
)
DECLARE
SUB
heartattack
(
snd!
)
DECLARE
SUB
weed
(
snd!
)
DECLARE
SUB
bathroom
(
snd!
)
DECLARE
SUB
doctor
(
snd!
)
DECLARE
SUB
z1
()
DECLARE
SUB
z2
()
DECLARE
SUB
food
(
snd!
)
DECLARE
SUB
pun
(
snd!
)
DECLARE
SUB
Face
(
x!
,
y!
)
DECLARE
SUB
shower
()
DECLARE
SUB
omouth
()
DECLARE
SUB
cmouth
()
DECLARE
SUB
eopen
(
ex!
,
ey!
)
DECLARE
SUB
eclose
(
ex!
,
ey!
)
DECLARE
SUB
UpdateMenu
()
Common
Shared
AnimateMenu
,
MenuTimer
,
MenuColor
Const
sclr
=
11
,
oclr
=
1
Const
True
=
1
,
False
=
0
Const
PI
=
3.141593
Cls
'CenterT "Despite the long wait this is not the final version.", 1, 7
'CenterT "Yes, I know, I've been working on this forever, but I want", 2, 7
'CenterT "it to be perfect! And by that I mean no bugs and no glitches.", 3, 7
'CenterT "So by playing this early version you agree that if you find", 5, 7
'CenterT "anything that seems wrong, or something does not work, that", 6, 7
'CenterT "you'll let me know! Call me if you know my number or else", 7, 7
'CenterT "E-Mail Me : " + Chr$(34) + "GRiMofMS@AOL.COM" + Chr$(34), 9, 7
'CenterT "Trust me, this game is well worth the wait! And the sequel,", 11, 7
'CenterT "Opps, I shouldn't have said that... But anyways, it's going", 12, 7
'CenterT "to be much better and if all goes according to plan, the user", 13, 7
'CenterT "will be able to create their own animation sequences for the", 14, 7
'CenterT "game! Not to mention everything else I have planned.", 15, 7
'CenterT "But I bet No one will ever read to this far, so I'm gunna make", 17, 7
'CenterT "you wait at 10 seconds before this screen will dispear!", 18, 7
'CenterT "Aren't I a little shit!?!", 20, 7
'Color 31, 7
'Locate 22, 38: Print "Wait"
't = Timer
'Keys$ = ""
'Do While Timer - t < 10
' Key$ = InKey$
' If Len(Key$) Then Keys$ = Keys$ + UCase$(Key$)
' If Keys$ = "OK" Then Exit Do
'Loop
'Color 0, 0
'CenterT " Ok ", 22, 7
'While InKey$ = ""
'Wend
AnimateMenu
=
False
MenuColor
=
4
Type
Save
new
As
Integer
:
snd
As
Integer
:
Awake
As
Integer
:
happ
As
Integer
:
body
As
Integer
hung
As
Integer
:
madd
As
Integer
:
sikk
As
Integer
:
room
As
Integer
:
Od
As
Integer
Drunk
As
Integer
:
months
As
Integer
:
weeks
As
Integer
:
days
As
Integer
:
autosave
As
Integer
AnimateMenu
As
Integer
End
Type
Dim
Shared
Game
As
Save
Dim
Shared
problem$
(
6
)
Dim
Shared
oprob
(
6
)
Dim
Shared
cprob
(
6
)
Dim
Shared
DebugMenu$
(
11
)
Dim
Shared
Variable
(
10
)
For
i
=
0
To
6
oprob
(
i
)
=
Timer
Next
Open
"GIGAMOLE.DAT"
For
Binary
As
#
1
Get
#
1
,
,
Game
new
=
Game
.
new
:
snd
=
Game
.
snd
:
Happy
=
Game
.
happ
:
Awake
=
Game
.
Awake
bo
=
Game
.
body
:
Hungry
=
Game
.
hung
:
Mad
=
Game
.
madd
:
sick
=
Game
.
sikk
broom
=
Game
.
room
:
Od
=
Game
.
Od
:
Drunk
=
Game
.
Drunk
:
months
=
Game
.
months
weeks
=
Game
.
weeks
:
days
=
Game
.
days
:
autosave
=
Game
.
autosave
:
AnimateMenu
=
Game
.
AnimateMenu
Close
#
1
If
new
=
0
Then
new
=
1
:
snd
=
1
:
Happy
=
90
:
Awake
=
100
:
bo
=
0
:
Hungry
=
10
:
Mad
=
5
sick
=
0
:
broom
=
0
:
Od
=
0
:
Drunk
=
0
:
months
=
0
weeks
=
0
:
days
=
0
:
autosave
=
1
:
AnimateMenu
=
False
End
If
'**************************Start of title screen*****************************
RestorePalette
Cls
0
Screen
7
Palette
sclr
,
MenuColor
grim
anti
Cls
'***************************Start of actual game*****************************
Game
:
Randomize
Timer
Cls
st
=
0
:
ss
=
0
:
sel
=
1
:
eye
=
0
:
Mole
=
0
:
xists
=
0
:
sl
=
0
:
eye
=
1
ed
=
Timer
:
md
=
Timer
:
dm
=
Timer
:
d
=
Timer
:
problem
=
0
:
cheat$
=
""
MenuTimer
=
Timer
MoleColor
=
6
If
autosave
=
0
Then
AutoSaveDelay
=
Timer
End
If
Refresh
0
,
0
,
sl
Do
If
Mad
=
100
Then
seizure
Dead
xists
End
If
If
Drunk
>=
85
Then
heartattack
snd!
Dead
xists
End
If
If
Od
>=
85
Then
OverDose
snd!
,
sl
Dead
xists
End
If
If
Happy
<=
10
Then
knife
Dead
xists
End
If
'*************************Check for Problems*****************************
CheckProblems
broom
,
60
,
problem
,
"Bathroom"
CheckProblems
Ill
,
35
,
problem
,
"Ill"
CheckProblems
bo
,
55
,
problem
,
"Stinks"
CheckProblems
Mad
,
55
,
problem
,
"Mad"
CheckProblems
Hungry
,
45
,
problem
,
"Hungry"
CheckProblems
(
-
1
*
Awake
),
(
-
1
*
40
),
problem
,
"Tired"
CheckProblems
(
-
1
*
Happy
),
(
-
1
*
30
),
problem
,
"Sad"
If
problem
=
0
Then
problem$
(
0
)
=
"None"
End
If
'*************************increment variables****************************
IncrementVariable
ticks
,
broom
,
45
,
10
,
0
IncrementVariable
ticks
,
sick
,
45
,
5
,
1
DecrementVariable
ticks
,
Awake
,
30
,
5
,
2
IncrementVariable
ticks
,
Hungry
,
30
,
30
,
3
DecrementVariable
ticks
,
Mad
,
30
,
5
,
4
IncrementVariable
ticks
,
bo
,
20
,
10
,
5
Select
Case
Int
(
2
*
Rnd
(
1
))
Case
0
:
DecrementVariable
ticks
,
Happy
,
10
,
3
,
6
Case
1
:
IncrementVariable
ticks
,
Happy
,
10
,
3
,
6
End
Select
If
bo
>
90
And
s
/
10
=
Int
(
s
/
10
)
Then
Happy
=
Happy
-
1
:
CheckBounds
Happy
End
If
For
fp
=
0
To
5
cprob
(
fp
)
=
Timer
Next
'%%%%%%%%%%%%%%%%%%%%End of Incrementing Variables%%%%%%%%%%%%%%%%%%%%%%%
If
AnimateMenu
=
False
And
MenuColor
<>
4
Then
Palette
sclr
,
4
End
If
UpdateMenu
If
autosave
=
0
And
Timer
-
AutoSaveDelay
>
60
Then
Save
new
,
snd
,
Happy
,
Awake
,
bo
,
Hungry
,
Mad
,
sick
,
broom
,
Od
,
Drunk
,
months
,
weeks
,
days
,
autosave
,
AnimateMenu
center
"Auto save in progress"
,
2
,
7
Slow
.
5
center
""
,
2
,
0
AutoSaveDelay
=
Timer
End
If
If
Awake
=
0
Then
sl
=
1
If
sl
=
0
And
ss
=
0
Then
eclose
0
,
0
st
=
Timer
ss
=
1
End
If
If
Timer
-
d
>
10
Then
ticks
=
ticks
+
1
days
=
days
+
1
If
days
=
7
Then
days
=
0
weeks
=
weeks
+
1
End
If
If
weeks
=
4
Then
weeks
=
0
months
=
months
+
1
End
If
d
=
Timer
End
If
'**************************Manip time and date***************************
nosec$
=
Left$
(
Time$
,
5
)
If
Val
(
Left$
(
nosec$
,
2
))
>
12
Then
nosec$
=
Str$
(
Val
((
Left$
(
nosec$
,
2
)))
-
12
)
+
Right$
(
nosec$
,
3
)
+
" PM"
Else
nosec$
=
nosec$
+
" AM"
End
If
If
Val
(
Left$
(
nosec$
,
2
))
=
0
Then
nosec$
=
"12"
+
Right$
(
nosec$
,
Len
(
nosec$
)
-
2
)
End
If
noyear$
=
Date
$
noyear$
=
Left$
(
noyear$
,
2
)
+
"/"
+
Left$
(
Right$
(
noyear$
,
7
),
2
)
+
"/"
noyear$
=
noyear$
+
Right$
(
Date
$
,
2
)
'**************************Visual Problems****************************
Select
Case
Mad
Case
Is
>=
90
:
Palette
14
,
12
Case
Is
<
90
:
Palette
14
,
14
End
Select
Select
Case
snd
Case
0
:
snd$
=
"Off"
Case
1
:
snd$
=
"On "
End
Select
Select
Case
autosave
Case
0
:
autosave$
=
"On "
Case
1
:
autosave$
=
"Off"
End
Select
center
": "
+
snd$
+
" Auto-Save: "
+
autosave$
,
19
,
3
If
months
=
12
Then
WIN
snd!
KillDataFile
xists
End
End
If
'*****************************Main Screen*******************************
grimstext
"giga mole!"
,
1
,
4
,
2
,
15
,
1
Select
Case
sl
Case
0
:
sl$
=
"Sleep"
Case
1
:
sl$
=
"Wake "
End
Select
MainMenu
sel
,
sl$
'*****************************animate mole*******************************
Select
Case
Mole
Case
1
:
If
Timer
-
dm
>
1
Then
Circle
(
111
,
68
),
3
,
14
:
Circle
(
111
,
68
),
2
,
MoleColor
:
Paint
(
111
,
68
),
MoleColor
,
MoleColor
Mole
=
0
:
dm
=
Timer
End
If
Case
0
:
If
Timer
-
dm
>
1
Then
Circle
(
111
,
68
),
3
,
MoleColor
:
Mole
=
1
:
dm
=
Timer
End
If
End
Select
'****************************Eye Animation*******************************
Select
Case
eye
Case
0
:
If
Timer
-
ed
>
.
5
And
sl
=
0
Then
eopen
0
,
0
:
eye
=
1
:
ed
=
Timer
ElseIf
Timer
-
ed
>
.
5
And
sl
=
1
Then
Call
z1
:
eye
=
1
:
ed
=
Timer
:
eclose
0
,
0
End
If
Case
1
:
If
Timer
-
ed
>
2
And
sl
=
0
Then
eclose
0
,
0
:
eye
=
0
:
ed
=
Timer
ElseIf
Timer
-
ed
>
.
5
And
sl
=
1
Then
Call
z2
:
eye
=
0
:
ed
=
Timer
:
eclose
0
,
0
End
If
End
Select
Key$
=
InKey$
Select
Case
Key$
Case
Chr$
(
0
)
+
"D"
If
sel
=
7
Then
debug
Happy
,
Awake
,
bo
,
Hungry
,
Mad
,
Ill
,
broom
,
Od
,
Drunk
Case
Chr$
(
0
)
+
";"
'F1
help
Refresh
0
,
0
,
sl
Case
Chr$
(
0
)
+
"<"
'F2
Select
Case
snd
Case
0
:
snd
=
1
:
Sound
200
,
.
5
Case
1
:
snd
=
0
End
Select
Case
Chr$
(
0
)
+
"="
'F3
center
"Saving game..."
,
2
,
7
Save
new
,
snd
,
Happy
,
Awake
,
bo
,
Hungry
,
Mad
,
sick
,
broom
,
Od
,
Drunk
,
months
,
weeks
,
days
,
autosave
,
AnimateMenu
center
""
,
2
,
0
Case
Chr$
(
0
)
+
">"
'F4
Select
Case
autosave
Case
0
:
autosave
=
1
Case
1
:
autosave
=
0
:
AutoSaveDelay
=
Timer
End
Select
Case
Chr$
(
0
)
+
"?"
'F5
If
AnimateMenu
=
True
Then
AnimateMenu
=
False
ElseIf
AnimateMenu
=
False
Then
AnimateMenu
=
True
End
If
Case
Chr$
(
0
)
+
"K"
:
Select
Case
sel
Case
1
,
4
,
7
:
sel
=
sel
+
2
Case
Else
:
sel
=
sel
-
1
End
Select
Case
Chr$
(
0
)
+
"M"
:
Select
Case
sel
Case
3
,
6
,
9
:
sel
=
sel
-
2
Case
Else
:
sel
=
sel
+
1
End
Select
Case
Chr$
(
0
)
+
"P"
:
Select
Case
sel
Case
7
,
8
,
9
:
sel
=
sel
-
6
Case
Else
:
sel
=
sel
+
3
End
Select
Case
Chr$
(
0
)
+
"H"
:
Select
Case
sel
Case
1
,
2
,
3
:
sel
=
sel
+
6
Case
Else
:
sel
=
sel
-
3
End
Select
Case
Chr$
(
13
),
Chr$
(
32
):
If
sel
=
1
Then
If
sl
=
0
Then
juggle
sl
eopen
0
,
0
Happy
=
Happy
+
25
:
CheckBounds
Happy
Mad
=
Mad
-
10
:
CheckBounds
Mad
Awake
=
Awake
+
5
:
CheckBounds
Awake
End
If
End
If
If
sel
=
2
Then
If
Hungry
>
20
And
sl
=
0
Then
McMole
snd!
Refresh
0
,
0
,
sl
Hungry
=
Hungry
-
30
:
CheckBounds
Hungry
ElseIf
Hungry
<=
20
Then
Locate
2
,
14
:
Print
"I'm not hungry"
Speak
2
,
.
5
Slow
1
Locate
2
,
14
:
Print
" "
End
If
End
If
If
sel
=
3
Then
If
sl
=
0
Then
sl
=
1
eclose
0
,
0
ElseIf
sl
=
1
Then
sl
=
0
Awake
=
Awake
+
Int
(
Timer
-
ss
)
CheckBounds
Awake
eopen
0
,
0
End
If
End
If
If
sel
=
4
Then
If
sl
=
0
Then
If
broom
<
60
Then
Locate
2
,
11
:
Print
"I don't have to go"
Slow
1
Locate
2
,
11
:
Print
" "
ElseIf
broom
>=
60
Then
broom
=
broom
-
25
bathroom
snd!
Face
0
,
0
End
If
End
If
End
If
If
sel
=
5
Then
If
bo
>=
50
And
sl
=
0
Then
shower
bo
=
bo
-
50
If
bo
<
0
Then
bo
=
0
Face
0
,
0
center
"All clean!"
,
2
,
3
Slow
1
center
""
,
2
,
0
ElseIf
bo
<
50
And
sl
=
0
Then
eopen
0
,
0
Locate
2
,
9
:
Print
"I don't want to shower"
Speak
3
,
.
25
Slow
1
Locate
2
,
9
:
Print
" "
End
If
End
If
If
sel
=
6
Then
If
sl
=
0
Then
If
Ill
>
35
Then
doctor
snd!
Face
0
,
0
Ill
=
Ill
-
50
CheckBounds
Ill
ElseIf
Ill
<=
35
Then
Locate
2
,
4
:
Print
"I don't want to go to the doctor"
Speak
3
,
.
25
Locate
2
,
4
:
Print
" "
End
If
End
If
End
If
If
sel
=
7
Then
Cls
0
Color
7
Locate
25
,
14
:
Print
"Press [ESC] to continue..."
grimstext
"Giga mole status"
,
1
,
4
,
2
,
12
,
1
Color
1
Locate
3
,
14
:
Print
"Age: "
Color
4
Select
Case
months
Case
1
:
months$
=
"month"
Case
Else
:
months$
=
"months"
End
Select
Locate
4
,
15
:
Print
months
;
months$
Select
Case
weeks
Case
1
:
weeks$
=
"week"
Case
Else
:
weeks$
=
"weeks"
End
Select
Locate
5
,
15
:
Print
weeks
;
weeks$
Select
Case
days
Case
1
:
days$
=
"day"
Case
Else
:
days$
=
"days"
End
Select
Locate
6
,
15
:
Print
days
;
days$
Color
1
Locate
8
,
14
:
Print
"Current Problems:"
Color
4
For
p
=
0
To
problem
Locate
p
+
9
,
15
:
Print
problem$
(
p
)
Next
statsdelay
=
Timer
:
sttsdly
=
0
Do
While
InKey$
<>
Chr$
(
27
)
Select
Case
sttsdly
Case
0
:
If
Timer
-
statsdelay
>
1
Then
grimstext
"Giga mole status"
,
4
,
2
,
1
,
12
,
1
statsdelay
=
Timer
:
sttsdly
=
1
End
If
Case
1
:
If
Timer
-
statsdelay
>
1
Then
grimstext
"Giga mole status"
,
2
,
1
,
4
,
12
,
1
statsdelay
=
Timer
:
sttsdly
=
2
End
If
Case
2
:
If
Timer
-
statsdelay
>
1
Then
grimstext
"Giga mole status"
,
1
,
4
,
2
,
12
,
1
statsdelay
=
Timer
:
sttsdly
=
0
End
If
End
Select
Loop
Cls
0
Refresh
0
,
0
,
sl
End
If
If
sel
=
8
Then
help
Refresh
0
,
0
,
sl
End
If
If
sel
=
9
Then
eopen
0
,
0
Select
Case
SaveClose
Case
0
:
center
""
,
2
,
0
grimstext
"Goodbye!"
,
1
,
4
,
2
,
16
,
2
Cls
0
:
RestorePalette
End
Case
1
:
center
""
,
2
,
0
Save
new
,
snd
,
Happy
,
Awake
,
bo
,
Hungry
,
Mad
,
sick
,
broom
,
Od
,
Drunk
,
months
,
weeks
,
days
,
autosave
,
AnimateMenu
grimstext
"Goodbye!"
,
1
,
4
,
2
,
16
,
2
Cls
0
:
RestorePalette
End
Case
-
1
:
center
""
,
2
,
0
End
Select
End
If
Case
"!"
TO
"~"
:
cheat$
=
cheat$
+
UCase$
(
Key$
)
End
Select
If
Right$
(
cheat$
,
4
)
=
"WEED"
Then
weed
snd!
Cls
Paint
(
1
,
1
),
2
,
2
Face
0
,
0
Od
=
Od
+
10
:
CheckBounds
Od
Happy
=
Happy
+
50
:
CheckBounds
Happy
Hungry
=
Hungry
+
25
:
CheckBounds
Hungry
cheat$
=
""
End
If
If
Right$
(
cheat$
,
4
)
=
"BEER"
Then
beer
snd!
Drunk
=
Drunk
+
15
:
CheckBounds
Drunk
Face
0
,
0
cheat$
=
""
End
If
If
Right$
(
cheat$
,
7
)
=
"REFRESH"
Then
Cls
0
Refresh
0
,
0
,
sl
cheat$
=
""
End
If
If
Right$
(
cheat$
,
4
)
=
"TIME"
Then
center
"It is"
+
nosec$
,
2
,
3
Speak
2
,
.
5
Slow
.
25
center
""
,
2
,
0
cheat$
=
""
End
If
If
Right$
(
cheat$
,
4
)
=
"DATE"
Then
center
"It is "
+
noyear$
,
2
,
3
Speak
2
,
.
5
Slow
.
25
center
""
,
2
,
0
cheat$
=
""
End
If
If
Right$
(
cheat$
,
3
)
=
"VER"
Or
Right$
(
cheat$
,
7
)
=
"VERSION"
Then
center
"Your playing ver 0.9B"
,
2
,
11
Speak
2
,
.
5
Slow
.
25
center
""
,
2
,
0
cheat$
=
""
End
If
If
Right$
(
cheat$
,
6
)
=
"PUNISH"
Then
If
sl
=
0
Then
pun
snd
Refresh
0
,
0
,
sl
Mad
=
Mad
+
25
:
CheckBounds
Mad
Happy
=
Happy
-
10
:
CheckBounds
Happy
center
"Why did you hit me?!?"
,
2
,
3
Speak
3
,
.
25
center
""
,
2
,
0
cheat$
=
""
End
If
End
If
Loop
'********************************Music Subs**********************************
inagoddadavida
:
If
snd
=
1
Then
Play
"mbt60o2d8d8f16e16o1c16o2d8o3msa8g#8g8mno2f16"
Return
creditsmusic
:
If
snd
=
1
Then
Play
"mb t80 l8 o4 bdc o5 gad o4 ebg o3 acb"
Return
'********************************Menu Data***********************************
menus
:
Data
20
,
8
,
Play
,
20
,
18
,
Feed
,
20
,
28
,
Data
21
,
8
,
Bathroom
,
21
,
18
,
Shower
,
21
,
28
,
Doctor
Data
22
,
8
,
Stats
,
22
,
18
,
Help
,
22
,
28
,
Exit
DebugMenuCommands
:
Data
Happiness
,
Awake
,
Body
Odor
,
Hungry
,
Mad
,
Ill
,
Bathroom
,
Overdose
,
Drunk
Data
Exit
Sub
anti
Dim
RemoveY
(
66
)
For
i
=
1
To
66
RemoveY
(
i
)
=
i
Next
For
t
=
0
To
Int
(
10
*
Rnd
(
1
))
+
1
For
i
=
1
To
66
switch
=
Int
(
66
*
Rnd
(
1
))
+
1
temp
=
RemoveY
(
i
)
RemoveY
(
i
)
=
RemoveY
(
switch
)
RemoveY
(
switch
)
=
temp
Next
Next
Cls
0
Color
7
:
center
"ANDERS"
,
13
,
15
Color
15
:
center
"Anti Anders Inc."
,
19
,
15
Circle
(
160
,
100
),
30
,
4
:
Circle
(
160
,
100
),
38
,
4
:
Paint
(
125
,
100
),
4
,
4
Line
(
180
,
80
)
-
(
130
,
118
),
4
:
Line
(
190
,
82
)
-
(
140
,
120
),
4
:
Paint
(
160
,
100
),
4
,
4
Slow
2
i
=
1
While
i
<
67
Line
(
122
,
RemoveY
(
i
)
+
67
)
-
(
198
,
RemoveY
(
i
)
+
67
),
0
RemoveY
(
i
)
=
0
Sound
Int
(
200
*
Rnd
(
1
))
+
40
+
RemoveY
(
i
),
.
5
If
InKey$
<>
InKey$
Then
Exit
Sub
i
=
i
+
1
Wend
Slow
.
1
End
Sub
Sub
bathroom
(
snd
)
For
i
=
0
To
15
Circle
(
100
,
60
+
i
),
50
-
i
,
7
,
,
,
1
/
8
Next
Line
(
60
,
15
)
-
(
140
,
60
),
7
,
BF
Circle
(
100
,
60
),
50
,
8
,
,
,
1
/
8
Paint
(
100
,
60
),
7
,
8
Circle
(
100
,
60
),
30
,
8
,
,
,
1
/
12
Paint
(
100
,
60
),
0
,
8
Line
(
69
,
75
)
-
(
131
,
110
),
7
,
B
Paint
(
100
,
80
),
7
,
7
Circle
(
100
,
75
),
36
,
8
,
180
*
(
3.14
/
180
),
,
1
/
8
Circle
(
75
,
21
),
4
,
8
Paint
(
75
,
21
),
8
,
8
Line
(
77
,
18
)
-
(
62
,
20
),
8
,
BF
Circle
(
62
,
25
),
15
,
8
,
10
*
(
3.14
/
180
),
90
*
(
3.14
/
180
),
1
/
4
Line
(
69
,
21
)
-
(
70
,
21
),
8
For
ha
=
0
To
2
Slow
1
If
snd
=
1
Then
Sound
40
,
5
*
((
ha
+
1
)
/
2
)
Next
Line
(
50
,
10
)
-
(
150
,
110
),
2
,
BF
End
Sub
Sub
beer
(
snd
)
Line
(
65
,
30
)
-
(
135
,
110
),
2
,
BF
For
B
=
49
To
71
Circle
(
100
,
B
),
12
,
8
,
,
,
1
/
4
Next
For
B
=
50
To
70
Circle
(
100
,
B
),
10
,
7
,
,
,
1
/
4
Next
For
B
=
49
To
50
Circle
(
100
,
B
),
12
,
8
,
,
,
1
/
4
Next
Circle
(
112
,
62
),
4
,
8
,
270
*
(
3.14
/
180
),
90
*
(
3.14
/
180
)
Circle
(
112
,
62
),
5
,
8
,
270
*
(
3.14
/
180
),
90
*
(
3.14
/
180
)
Circle
(
112
,
62
),
10
,
8
,
270
*
(
3.14
/
180
),
90
*
(
3.14
/
180
)
Circle
(
112
,
62
),
11
,
8
,
270
*
(
3.14
/
180
),
90
*
(
3.14
/
180
)
Paint
(
120
,
62
),
7
,
8
Paint
(
100
,
50
),
7
,
8
Paint
(
100
,
60
),
6
,
8
Line
(
90
,
55
)
-
(
110
,
55
),
8
Paint
(
90
,
53
),
7
,
8
For
y
=
55
To
70
For
x
=
90
To
110
PSet
(
x
,
y
),
7
Next
If
snd
=
1
Then
Sound
100
,
.
5
Slow
.
5
Next
End
Sub
Sub
center
(
line$
,
y
,
clr
)
If
clr
=
0
Then
Locate
y
,
1
:
Print
" "
End
If
Color
clr
Locate
y
,
(
21
-
Int
(
Len
(
line$
)
/
2
)):
Print
line$
End
Sub
Sub
CenterT
(
Text$
,
y!
,
clr!
)
If
clr
=
0
Then
Locate
y
,
1
:
Print
" "
End
If
x
=
40
-
Int
(
Len
(
Text$
)
/
2
)
Color
clr
Locate
y
,
x
:
Print
Text$
End
Sub
Sub
CheckBounds
(
Variable
)
If
Variable
>
100
Then
Variable
=
100
If
Variable
<
0
Then
Variable
=
0
End
Sub
Sub
CheckProblems
(
Variable
,
value
,
problem
,
probstr$
)
If
Variable
>=
value
Then
q
=
0
Do
If
problem$
(
q
)
=
probstr$
Then
Exit
Do
ElseIf
q
=
problem
Then
If
problem$
(
q
)
=
"None"
Then
problem$
(
q
)
=
""
End
If
problem
=
problem
+
1
problem$
(
q
)
=
probstr$
Exit
Do
End
If
q
=
q
+
1
If
q
=
7
Then
Exit
Do
Loop
ElseIf
Variable
<
value
Then
q
=
0
Do
If
problem$
(
q
)
=
probstr$
Then
For
L
=
q
To
problem
problem$
(
L
)
=
problem$
(
L
+
1
)
Next
problem
=
problem
-
1
Exit
Do
End
If
If
q
=
problem
Then
Exit
Do
q
=
q
+
1
If
q
=
7
Then
Exit
Do
Loop
End
If
End
Sub
Sub
cmouth
Circle
(
100
,
75
),
10
,
4
,
,
,
1
/
4
Paint
(
100
,
75
),
12
,
4
Line
(
90
,
75
)
-
(
110
,
75
),
4
End
Sub
Sub
Dead
(
xists
)
If
xists
=
0
Then
Kill
"GiGaMole.dat"
End
If
Slow
2
End
End
Sub
Sub
debug
(
Happy
,
Awake
,
bo
,
Hungry
,
Mad
,
Ill
,
broom
,
Od
,
Drunk
)
Restore
DebugMenuCommands
For
i
=
1
To
10
Read
DebugMenu$
(
i
)
Next
Cls
0
dbug
=
1
Variable
(
1
)
=
Happy
:
Variable
(
2
)
=
Awake
:
Variable
(
3
)
=
bo
Variable
(
4
)
=
Hungry
:
Variable
(
5
)
=
Mad
:
Variable
(
6
)
=
Ill
Variable
(
7
)
=
broom
:
Variable
(
8
)
=
Od
:
Variable
(
9
)
=
Drunk
Do
For
i
=
1
To
10
If
dbug
=
i
Then
Color
4
Else
Color
1
If
i
<
10
Then
Locate
i
,
1
:
Print
DebugMenu$
(
i
)
Locate
i
,
10
:
Print
RTrim$
(
Str$
(
Variable
(
i
)))
;
"% "
ElseIf
i
=
10
Then
Locate
i
+
1
,
1
:
Print
DebugMenu$
(
i
)
End
If
Next
Select
Case
InKey$
Case
Chr$
(
0
)
+
"Q"
If
dbug
<
10
Then
Variable
(
dbug
)
=
Variable
(
dbug
)
-
10
If
Variable
(
dbug
)
<
0
Then
Variable
(
dbug
)
=
100
End
If
Case
Chr$
(
0
)
+
"I"
If
dbug
<
10
Then
Variable
(
dbug
)
=
Variable
(
dbug
)
+
10
If
Variable
(
dbug
)
>
100
Then
Variable
(
dbug
)
=
0
End
If
Case
Chr$
(
0
)
+
"K"
If
dbug
<
10
Then
Variable
(
dbug
)
=
Variable
(
dbug
)
-
1
If
Variable
(
dbug
)
<
0
Then
Variable
(
dbug
)
=
100
ElseIf
dbug
=
10
Then
Exit
Do
End
If
Case
Chr$
(
0
)
+
"M"
,
Chr$
(
13
),
Chr$
(
32
)
If
dbug
<
10
Then
Variable
(
dbug
)
=
Variable
(
dbug
)
+
1
If
Variable
(
dbug
)
>
100
Then
Variable
(
dbug
)
=
0
ElseIf
dbug
=
10
Then
Exit
Do
End
If
Case
Chr$
(
0
)
+
"P"
dbug
=
dbug
+
1
If
dbug
=
11
Then
dbug
=
1
Case
Chr$
(
0
)
+
"H"
dbug
=
dbug
-
1
If
dbug
=
0
Then
dbug
=
10
End
Select
Loop
Cls
0
cheat$
=
""
Refresh
0
,
0
,
sl
Happy
=
Variable
(
1
):
Awake
=
Variable
(
2
):
bo
=
Variable
(
3
)
Hungry
=
Variable
(
4
):
Mad
=
Variable
(
5
):
Ill
=
Variable
(
6
)
broom
=
Variable
(
7
):
Od
=
Variable
(
8
):
Drunk
=
Variable
(
9
)
End
Sub
Sub
DecrementVariable
(
ticks
,
Variable
,
value
,
decrement
,
index
)
If
ticks
/
value
=
Int
(
ticks
/
value
)
Then
If
ticks
<>
0
Then
If
cprob
(
index
)
-
value
>
oprob
(
index
)
Then
Variable
=
Variable
-
decrement
If
Variable
<
0
Then
Variable
=
0
oprob
(
index
)
=
Timer
End
If
End
If
End
If
End
Sub
Sub
doctor
(
snd
)
Line
(
50
,
20
)
-
(
150
,
100
),
2
,
BF
Line
(
85
,
70
)
-
(
90
,
67
),
8
Line
(
85
,
70
)
-
(
90
,
73
),
8
Line
(
81
,
70
)
-
(
85
,
70
),
8
Line
(
90
,
67
)
-
(
90
,
73
),
8
Paint
(
87
,
70
),
8
,
8
Line
(
91
,
67
)
-
(
110
,
73
),
7
,
B
Line
(
111
,
69
)
-
(
118
,
71
),
7
,
BF
Line
(
119
,
67
)
-
(
122
,
73
),
7
,
BF
Line
(
109
,
67
)
-
(
110
,
73
),
7
,
BF
Paint
(
100
,
70
),
14
,
7
Slow
.
5
Line
(
111
,
67
)
-
(
122
,
73
),
2
,
BF
Line
(
100
,
68
)
-
(
110
,
72
),
2
,
BF
Line
(
100
,
68
)
-
(
103
,
72
),
7
,
BF
Line
(
104
,
69
)
-
(
115
,
71
),
7
,
BF
Line
(
110
,
67
)
-
(
110
,
73
),
7
Line
(
116
,
67
)
-
(
119
,
73
),
7
,
BF
If
snd
=
1
Then
Sound
80
,
.
5
Slow
.
5
Line
(
92
,
68
)
-
(
109
,
72
),
2
,
BF
Line
(
95
,
69
)
-
(
110
,
71
),
7
,
BF
Line
(
112
,
67
)
-
(
119
,
73
),
2
,
BF
Line
(
112
,
67
)
-
(
115
,
73
),
7
,
BF
Line
(
93
,
68
)
-
(
95
,
72
),
7
,
BF
Line
(
92
,
68
)
-
(
92
,
72
),
14
If
snd
=
1
Then
Sound
80
,
.
5
Slow
1
End
Sub
Sub
eclose
(
ex
,
ey
)
Paint
(
90
+
ex
,
50
+
ey
),
14
,
6
Paint
(
110
+
ex
,
50
+
ey
),
14
,
6
Line
(
85
+
ex
,
50
+
ey
)
-
(
95
+
ex
,
50
+
ey
),
6
Line
(
105
+
ex
,
50
+
ey
)
-
(
115
+
ex
,
50
+
ey
),
6
End
Sub
Sub
eopen
(
ex
,
ey
)
Paint
(
90
+
ex
,
50
+
ey
),
14
,
14
Paint
(
110
+
ex
,
50
+
ey
),
14
,
14
Circle
(
90
+
ex
,
50
+
ey
),
5
,
6
,
,
,
1
/
2
Circle
(
110
+
ex
,
50
+
ey
),
5
,
6
,
,
,
1
/
2
Paint
(
110
+
ex
,
50
+
ey
),
15
,
6
Paint
(
90
+
ex
,
50
+
ey
),
15
,
6
Circle
(
90
+
ex
,
50
+
ey
),
2
,
0
,
,
,
1
/
2
Circle
(
110
+
ex
,
50
+
ey
),
2
,
0
,
,
,
1
/
2
Paint
(
90
+
ex
,
50
+
ey
),
0
,
0
Paint
(
110
+
ex
,
50
+
ey
),
0
,
0
End
Sub
Sub
Face
(
x
,
y
)
Circle
(
100
+
x
,
60
+
y
),
27
,
8
,
0
*
(
3.14
/
180
),
180
*
(
3.14
/
180
),
1
Line
(
73
+
x
,
60
+
y
)
-
(
80
+
x
,
76
+
y
),
8
Line
(
120
+
x
,
76
+
y
)
-
(
127
+
x
,
60
+
y
),
8
Line
(
80
+
x
,
76
+
y
)
-
(
120
+
x
,
76
+
y
),
8
Paint
(
100
+
x
,
55
+
y
),
8
,
8
Circle
(
115
+
x
,
85
+
y
),
7
,
8
,
,
,
2
Paint
(
115
+
x
,
85
+
y
),
8
,
8
Circle
(
100
+
x
,
60
+
y
),
25
,
14
,
,
,
1
Paint
(
100
+
x
,
60
+
y
),
14
,
14
Circle
(
90
+
x
,
50
+
y
),
5
,
6
,
,
,
1
/
2
Circle
(
110
+
x
,
50
+
y
),
5
,
6
,
,
,
1
/
2
Circle
(
100
+
x
,
65
+
y
),
3
,
6
,
180
*
(
3.14
/
180
),
360
*
(
3.14
/
180
)
Circle
(
96
+
x
,
64
+
y
),
1
,
6
,
90
*
(
3.14
/
180
),
270
*
(
3.14
/
180
)
Circle
(
104
+
x
,
64
+
y
),
1
,
6
,
270
*
(
3.14
/
180
),
90
*
(
3.14
/
180
)
Line
(
102
+
x
,
54
+
y
)
-
(
103
+
x
,
61
+
y
),
6
Line
(
98
+
x
,
57
+
y
)
-
(
97
+
x
,
60
+
y
),
6
Circle
(
100
+
x
,
75
+
y
),
10
,
4
,
,
,
1
/
4
Paint
(
100
+
x
,
75
+
y
),
12
,
4
Line
(
90
+
x
,
75
+
y
)
-
(
110
+
x
,
75
+
y
),
4
Circle
(
111
+
x
,
68
+
y
),
2
,
6
Paint
(
111
+
x
,
68
+
y
),
6
,
6
Circle
(
123
+
x
,
60
+
y
),
4
,
6
,
210
*
(
3.14
/
180
),
150
*
(
3.14
/
180
),
5
Circle
(
77
+
x
,
60
+
y
),
4
,
6
,
30
*
(
3.14
/
180
),
330
*
(
3.14
/
180
),
5
If
sl
=
1
Then
eclose
x
,
y
ElseIf
sl
=
0
Then
eopen
x
,
y
End
If
End
Sub
Sub
food
(
snd
)
For
i
=
1
To
4
omouth
If
snd
=
1
Then
Sound
60
,
.
5
Slow
.
5
cmouth
If
snd
=
1
Then
Sound
65
,
.
5
Slow
.
5
Next
End
Sub
Sub
grim
x
=
85
Dim
RemoveX
(
102
)
For
i
=
1
To
102
RemoveX
(
i
)
=
i
Next
For
t
=
0
To
Int
(
10
*
Rnd
(
1
))
+
1
For
i
=
1
To
102
switch
=
Int
(
66
*
Rnd
(
1
))
+
1
temp
=
RemoveX
(
i
)
RemoveX
(
i
)
=
RemoveX
(
switch
)
RemoveX
(
switch
)
=
temp
Next
Next
Color
14
:
Locate
15
,
11
:
Print
"(c) 1999 "
;
grimstext
"mysticsoft"
,
1
,
4
,
2
,
19
,
15
grimstext
"written by grim"
,
1
,
4
,
2
,
13
,
5
Line
(
29
+
x
,
44
)
-
(
121
+
x
,
44
),
15
:
Line
(
29
+
x
,
44
)
-
(
29
+
x
,
95
),
15
Line
(
29
+
x
,
96
)
-
(
121
+
x
,
96
),
7
:
Line
(
121
+
x
,
45
)
-
(
121
+
x
,
96
),
7
Line
(
30
+
x
,
45
)
-
(
120
+
x
,
95
),
2
,
BF
:
Line
(
60
+
x
,
60
)
-
(
50
+
x
,
50
),
1
Line
(
50
+
x
,
50
)
-
(
35
+
x
,
75
),
1
:
Line
(
35
+
x
,
75
)
-
(
50
+
x
,
90
),
1
Line
(
50
+
x
,
90
)
-
(
60
+
x
,
75
),
1
:
Line
(
60
+
x
,
75
)
-
(
50
+
x
,
75
),
1
Line
(
70
+
x
,
50
)
-
(
70
+
x
,
90
),
1
:
Line
(
70
+
x
,
50
)
-
(
85
+
x
,
63
),
1
Line
(
85
+
x
,
63
)
-
(
70
+
x
,
76
),
1
:
Line
(
70
+
x
,
76
)
-
(
85
+
x
,
90
),
1
Line
(
90
+
x
,
60
)
-
(
90
+
x
,
65
),
4
:
Line
(
90
+
x
,
70
)
-
(
90
+
x
,
90
),
4
Line
(
95
+
x
,
50
)
-
(
95
+
x
,
90
),
1
:
Line
(
95
+
x
,
50
)
-
(
105
+
x
,
75
),
1
Line
(
105
+
x
,
75
)
-
(
115
+
x
,
50
),
1
:
Line
(
115
+
x
,
50
)
-
(
115
+
x
,
90
),
1
Slow
2
i
=
0
While
i
<
103
Line
(
RemoveX
(
i
)
+
x
+
28
,
44
)
-
(
RemoveX
(
i
)
+
x
+
28
,
96
),
0
Sound
Int
(
100
*
Rnd
(
1
))
+
40
+
RemoveX
(
i
)
+
100
,
.
5
If
InKey$
<>
""
Then
Exit
Sub
i
=
i
+
1
Wend
Slow
.
001
End
Sub
Sub
grimstext
(
line$
,
clr1
,
clr2
,
clr3
,
x
,
y
)
tmpline$
=
UCase$
(
line$
)
For
tmp
=
1
To
Len
(
tmpline$
)
Select
Case
Right$
((
Left$
(
tmpline$
,
tmp
)),
1
)
Case
"A"
,
"E"
,
"I"
,
"O"
,
"U"
:
Color
clr2
Locate
y
,
tmp
+
x
:
Print
LCase$
(
Right$
((
Left$
(
tmpline$
,
tmp
)),
1
))
Case
"B"
,
"C"
,
"D"
,
"F"
,
"G"
,
"H"
,
"J"
,
"K"
,
"L"
,
"M"
,
"N"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"V"
,
"W"
,
"X"
,
"Y"
,
"Z"
,
"_"
:
Color
clr1
Locate
y
,
tmp
+
x
:
Print
Right$
((
Left$
(
tmpline$
,
tmp
)),
1
)
Case
Else
Color
clr3
Locate
y
,
tmp
+
x
:
Print
Right$
((
Left$
(
tmpline$
,
tmp
)),
1
)
End
Select
Next
End
Sub
Sub
heartattack
(
snd
)
For
x
=
1
To
40
For
y
=
19
To
23
Locate
y
,
x
:
Print
" "
Next
Next
Line
(
65
,
30
)
-
(
135
,
110
),
2
,
BF
Circle
(
80
,
40
),
20
,
4
,
0
*
(
3.14
/
180
),
220
*
(
3.14
/
180
)
Circle
(
120
,
40
),
20
,
4
,
320
*
(
3.14
/
180
),
180
*
(
3.14
/
180
)
Line
(
65
,
51
)
-
(
100
,
80
),
4
Line
(
135
,
51
)
-
(
100
,
80
),
4
Paint
(
100
,
70
),
4
,
4
For
i
=
0
To
45
Circle
(
100
,
50
),
i
,
2
If
snd
=
1
Then
Sound
40
+
i
,
.
5
Slow
.
05
Next
For
i
=
1
To
50
Sound
60
,
.
5
Next
center
"Giga Mole had a heart attack"
,
20
,
4
center
"because he drank too much"
,
21
,
4
center
"You lose!!"
,
22
,
4
End
Sub
Sub
help
helpfilp
=
0
flipdelay
=
Timer
Cls
0
Color
7
Print
"��������������������������������������͸"
Print
"� �"
grimstext
"gigamole help"
,
1
,
4
,
2
,
13
,
2
Color
7
Print
"��������������������������������������Ĵ"
Print
"�Menu: �"
Print
"�Play Play a game �"
Print
"�Feed Feed him �"
Print
"�Sleep/Wake Make him sleep/wake �"
Print
"�Bathroom He goes to the bathroom�"
Print
"�Shower Make him take a shower �"
Print
"�Doctor Take him to the doctor �"
Print
"�Stats Shows how you're doing �"
Print
"�Exit Quits GiGaMoLe �"
Print
"��������������������������������������Ĵ"
Print
"�Other: �"
Print
"�F1 Display this screen �"
Print
"�F2 Toggles Sound �"
Print
"�F3 Save your game �"
Print
"�F4 Toggles Auto-Save �"
Print
"�F5 Toggles Menu Cursor �"
Print
"��������������������������������������Ĵ"
Print
"� [ESC] EXITS�"
Print
"����������������������������������������"
Do
While
InKey$
<>
Chr$
(
27
)
If
Timer
-
flipdelay
>
1
Then
Select
Case
helpflip
Case
0
:
grimstext
"gigamole help"
,
1
,
4
,
2
,
13
,
2
Case
1
:
grimstext
"gigamole help"
,
4
,
2
,
1
,
13
,
2
Case
2
:
grimstext
"gigamole help"
,
2
,
1
,
4
,
13
,
2
End
Select
helpflip
=
helpflip
+
1
If
helpflip
=
3
Then
helpflip
=
0
flipdelay
=
Timer
End
If
Loop
Cls
0
End
Sub
Sub
IncrementVariable
(
ticks
,
Variable
,
value
,
increment
,
index
)
If
ticks
/
value
=
Int
(
ticks
/
value
)
Then
If
ticks
<>
0
Then
If
cprob
(
index
)
-
value
>
oprob
(
index
)
Then
Variable
=
Variable
+
increment
If
Variable
>
100
Then
Variable
=
100
oprob
(
index
)
=
Timer
End
If
End
If
End
If
End
Sub
Sub
juggle
(
sl
)
Circle
(
111
,
68
),
3
,
14
:
Paint
(
111
,
68
),
14
,
14
Const
xc
=
.
5
:
Const
ll
=
39
:
Const
lt
=
76
:
Const
rl
=
139
:
Const
rt
=
76
Dim
mx
(
2
),
my
(
2
),
h
(
30
),
x
(
2
),
d
(
2
)
Circle
(
50
,
80
),
10
,
14
,
0
,
180
*
(
3.14
/
180
),
1
/
3
Circle
(
50
,
80
),
10
,
14
,
180
*
(
3.14
/
180
),
360
*
(
3.14
/
180
),
1
/
2
Circle
(
150
,
80
),
10
,
14
,
0
,
180
*
(
3.14
/
180
),
1
/
3
Circle
(
150
,
80
),
10
,
14
,
180
*
(
3.14
/
180
),
360
*
(
3.14
/
180
),
1
/
2
Paint
(
50
,
80
),
14
,
14
:
Paint
(
150
,
80
),
14
,
14
For
L
=
44
To
56
Step
4
Line
(
L
,
77
)
-
(
L
,
80
),
7
Line
(
200
-
L
,
77
)
-
(
200
-
L
,
80
),
7
Next
Get
(
139
,
76
)
-
(
161
,
85
),
h
()
mx
(
0
)
=
150
:
my
(
0
)
=
73
:
mx
(
1
)
=
100
:
my
(
1
)
=
3
:
mx
(
2
)
=
50
:
my
(
2
)
=
73
x
(
0
)
=
7.75
:
x
(
1
)
=
0
:
x
(
2
)
=
-
6.5
:
d
(
0
)
=
1
:
d
(
1
)
=
1
:
d
(
2
)
=
0
ed
=
Timer
:
ee
=
0
:
stal
=
Timer
While
Timer
-
stal
<
10
If
Timer
-
ed
>
2
And
ee
=
0
Then
ee
=
1
:
eclose
0
,
0
:
ed
=
Timer
ElseIf
Timer
-
ed
>
.
5
And
ee
=
1
Then
ee
=
0
:
eopen
0
,
0
:
ed
=
Timer
End
If
For
moles
=
0
To
2
Circle
(
mx
(
moles
),
my
(
moles
)),
3
,
2
Paint
(
mx
(
moles
),
my
(
moles
)
-
1
),
2
,
2
If
x
(
moles
)
<=
-
7.75
And
d
(
moles
)
=
1
Then
d
(
moles
)
=
0
:
x
(
moles
)
=
-
6.5
ElseIf
x
(
moles
)
>=
6.5
And
d
(
moles
)
=
0
Then
d
(
moles
)
=
1
:
x
(
moles
)
=
7.75
End
If
If
d
(
moles
)
=
1
Then
x
(
moles
)
=
x
(
moles
)
-
xc
ElseIf
d
(
moles
)
=
0
Then
x
(
moles
)
=
x
(
moles
)
+
xc
End
If
If
d
(
moles
)
=
1
Then
mx
(
moles
)
=
(
x
(
moles
)
*
7
)
+
100
:
my
(
moles
)
=
(
x
(
moles
)
^
2
)
+
20
ElseIf
d
(
moles
)
=
0
Then
mx
(
moles
)
=
(
x
(
moles
)
*
8.25
)
+
100
:
my
(
moles
)
=
-
1
*
(
x
(
moles
)
^
2
)
+
121
End
If
Circle
(
mx
(
moles
),
my
(
moles
)),
3
,
6
:
Paint
(
mx
(
moles
),
my
(
moles
)
-
1
),
6
,
6
Next
Put
(
ll
,
lt
),
h
(),
PSet
:
Put
(
rl
,
rt
),
h
(),
PSet
Slow
.
005
Wend
Refresh
0
,
0
,
sl
End
Sub
Sub
KillDataFile
(
xists
)
If
xists
=
0
Then
Kill
"GiGaMole.dat"
End
If
End
Sub
Sub
knife
Cls
0
View
(
60
,
20
)
-
(
260
,
140
),
2
,
1
Line
(
101
,
30
)
-
(
101
,
65
),
8
Circle
(
100
,
65
),
35
,
8
,
90
*
(
3.14
/
180
),
180
*
(
3.14
/
180
),
7
Line
(
95
,
65
)
-
(
101
,
65
),
8
Paint
(
98
,
40
),
8
,
8
Line
(
93
,
66
)
-
(
103
,
66
),
0
Line
(
96
,
67
)
-
(
100
,
80
),
0
,
BF
PSet
(
99
,
32
),
4
PSet
(
100
,
34
),
4
PSet
(
100
,
36
),
4
Line
(
98
,
38
)
-
(
98
,
40
),
4
Line
(
97
,
42
)
-
(
99
,
43
),
4
,
BF
PSet
(
100
,
44
),
4
center
"GiGa MoLe Got depressed"
,
20
,
4
center
"and killed himself"
,
21
,
4
For
i
=
100
To
50
Step
-
10
Sound
i
,
1
Slow
.
05
Next
End
Sub
Sub
MainMenu
(
sel
,
sl$
)
Restore
menus
For
i
=
1
To
9
Read
y
,
x
,
Selection$
If
sel
=
i
Then
Color
sclr
Else
Color
oclr
If
i
=
3
Then
Selection$
=
sl$
Locate
y
,
x
:
Print
Selection$
;
" "
Next
End
Sub
Sub
McMole
(
snd
)
Line
(
65
,
30
)
-
(
135
,
110
),
2
,
BF
'Line (98, 106)-(102, 200), 0, BF
Line
(
50
,
90
)
-
(
150
,
90
),
12
Line
(
150
,
90
)
-
(
140
,
105
),
12
Line
(
140
,
105
)
-
(
60
,
105
),
12
Line
(
60
,
105
)
-
(
50
,
90
),
12
Color
12
Locate
15
,
18
Print
"McMole"
Paint
(
100
,
94
),
4
,
12
Palette
12
,
14
Line
(
50
,
90
)
-
(
150
,
90
),
4
Line
(
150
,
90
)
-
(
140
,
105
),
4
Line
(
140
,
105
)
-
(
60
,
105
),
4
Line
(
60
,
105
)
-
(
50
,
90
),
4
Paint
(
103
,
96
),
4
,
12
Paint
(
119
,
95
),
4
,
12
Circle
(
76
,
75
),
47
,
14
,
0
,
180
*
(
PI
/
180
),
2
Circle
(
124
,
75
),
47
,
14
,
0
,
180
*
(
PI
/
180
),
2
Line
(
51
,
76
)
-
(
51
,
89
),
14
Line
(
149
,
76
)
-
(
149
,
89
),
14
Circle
(
76
,
75
),
35
,
14
,
0
,
180
*
(
PI
/
180
),
2
Circle
(
124
,
75
),
35
,
14
,
0
,
180
*
(
PI
/
180
),
2
Line
(
95
,
60
)
-
(
105
,
75
),
14
,
BF
Line
(
57
,
76
)
-
(
57
,
89
),
14
Line
(
143
,
76
)
-
(
143
,
89
),
14
Line
(
57
,
89
)
-
(
51
,
89
),
14
Line
(
143
,
89
)
-
(
149
,
89
),
14
Paint
(
146
,
88
),
14
,
14
Paint
(
54
,
88
),
14
,
14
If
snd
=
1
Then
For
i
=
1
To
4
Sound
60
,
.
5
Slow
.
5
Sound
65
,
.
5
Slow
.
5
Next
Else
Slow
4
End
If
RestorePalette
End
Sub
Sub
omouth
Paint
(
100
,
75
),
14
,
14
Circle
(
100
,
75
),
10
,
4
,
,
,
1
/
4
Paint
(
100
,
75
),
0
,
4
End
Sub
Sub
OverDose
(
snd
,
sl
)
Randomize
Timer
center
""
,
20
,
0
center
""
,
21
,
0
center
""
,
22
,
0
center
"Looks like he had a little"
,
20
,
1
center
"more then he could handel!"
,
21
,
1
center
"You lose!"
,
22
,
1
Refresh
0
,
0
,
sl
a
=
Timer
Do
Until
Timer
-
a
>
10
For
i
=
0
To
15
Palette
i
,
RandInt
(
16
,
0
)
If
snd
=
1
Then
Sound
Int
(
1000
*
Rnd
(
1
))
+
1000
,
.
5
Next
Slow
.
05
Loop
Cls
RestorePalette
End
Sub
Sub
pun
(
snd
)
center
"Ouch! Quit that"
,
2
,
1
Paint
(
1
,
1
),
1
,
1
Line
(
0
,
15
)
-
(
25
,
0
),
4
Line
(
25
,
0
)
-
(
50
,
15
),
4
Line
(
50
,
15
)
-
(
75
,
0
),
4
Line
(
75
,
0
)
-
(
100
,
15
),
4
Line
(
100
,
15
)
-
(
125
,
0
),
4
Line
(
125
,
0
)
-
(
150
,
15
),
4
Line
(
150
,
15
)
-
(
175
,
0
),
4
Line
(
175
,
0
)
-
(
200
,
15
),
4
Line
(
200
,
15
)
-
(
175
,
30
),
4
Line
(
175
,
30
)
-
(
200
,
45
),
4
Line
(
200
,
45
)
-
(
175
,
60
),
4
Line
(
175
,
60
)
-
(
200
,
75
),
4
Line
(
200
,
75
)
-
(
175
,
90
),
4
Line
(
175
,
90
)
-
(
200
,
105
),
4
Line
(
200
,
105
)
-
(
175
,
120
),
4
Line
(
175
,
120
)
-
(
150
,
105
),
4
Line
(
150
,
105
)
-
(
125
,
120
),
4
Line
(
125
,
120
)
-
(
100
,
105
),
4
Line
(
100
,
105
)
-
(
75
,
120
),
4
Line
(
75
,
120
)
-
(
50
,
105
),
4
Line
(
50
,
105
)
-
(
25
,
120
),
4
Line
(
25
,
120
)
-
(
0
,
105
),
4
Line
(
0
,
105
)
-
(
25
,
90
),
4
Line
(
25
,
90
)
-
(
0
,
75
),
4
Line
(
0
,
75
)
-
(
25
,
60
),
4
Line
(
25
,
60
)
-
(
0
,
45
),
4
Line
(
0
,
45
)
-
(
25
,
30
),
4
Line
(
25
,
30
)
-
(
0
,
15
),
4
Paint
(
100
,
60
),
14
,
4
Line
(
40
,
30
)
-
(
70
,
55
),
1
,
B
Line
(
45
,
35
)
-
(
65
,
50
),
1
,
B
Paint
(
41
,
31
),
1
,
1
Line
(
40
,
56
)
-
(
45
,
85
),
1
,
B
Paint
(
41
,
57
),
1
,
1
Line
(
75
,
30
)
-
(
105
,
85
),
1
,
B
Line
(
80
,
35
)
-
(
100
,
80
),
1
,
B
Paint
(
76
,
31
),
1
,
1
Line
(
110
,
30
)
-
(
120
,
85
),
1
Line
(
120
,
85
)
-
(
125
,
85
),
1
Line
(
125
,
85
)
-
(
140
,
60
),
1
Line
(
140
,
60
)
-
(
155
,
85
),
1
Line
(
155
,
85
)
-
(
160
,
85
),
1
Line
(
160
,
85
)
-
(
170
,
30
),
1
Line
(
170
,
30
)
-
(
165
,
30
),
1
Line
(
165
,
30
)
-
(
155
,
70
),
1
Line
(
155
,
70
)
-
(
145
,
50
),
1
Line
(
145
,
50
)
-
(
135
,
50
),
1
Line
(
135
,
50
)
-
(
125
,
70
),
1
Line
(
125
,
70
)
-
(
115
,
30
),
1
Line
(
115
,
30
)
-
(
110
,
30
),
1
Paint
(
112
,
33
),
1
,
1
For
i
=
125
To
75
Step
-
5
If
snd
=
1
Then
Sound
i
,
.
5
Next
Slow
1
For
i
=
100
To
0
Step
-
2
Line
(
i
,
0
)
-
(
i
,
120
),
2
Line
(
200
-
i
,
0
)
-
(
200
-
i
,
120
),
2
If
i
/
5
=
Int
(
i
/
5
)
And
i
<>
0
Then
If
snd
=
1
Then
Sound
225
+
i
,
.
5
End
If
Next
For
i
=
99
To
1
Step
-
2
Line
(
i
,
0
)
-
(
i
,
120
),
2
Line
(
200
-
i
,
0
)
-
(
200
-
i
,
120
),
2
If
i
/
5
=
Int
(
i
/
5
)
And
i
<>
0
Then
If
snd
=
1
Then
Sound
125
+
i
,
.
5
End
If
Next
center
" "
,
2
,
1
End
Sub
Function
RandInt
(
num1
,
num2
)
RandInt
=
Int
(
num1
*
Rnd
(
1
))
+
num2
End
Function
Sub
Refresh
(
x
,
y
,
sl
)
View
(
60
,
20
)
-
(
260
,
140
),
2
,
1
Face
x
,
y
Select
Case
sl
Case
0
:
eopen
0
,
0
Case
1
:
eclose
0
,
0
End
Select
End
Sub
Sub
RestorePalette
For
i
=
0
To
15
If
i
<>
11
Then
Palette
i
,
i
Next
End
Sub
Sub
Save
(
new
,
snd
,
Happy
,
Awake
,
bo
,
Hungry
,
Mad
,
sick
,
broom
,
Od
,
Drunk
,
months
,
weeks
,
days
,
autosave
,
AnimateMenu
)
Open
"GIGAMOLE.DAT"
For
Binary
As
#
1
Game
.
new
=
new
:
Game
.
snd
=
snd
:
Game
.
happ
=
Happy
:
Game
.
Awake
=
Awake
Game
.
body
=
bo
:
Game
.
hung
=
Hungry
:
Game
.
madd
=
Mad
:
Game
.
sikk
=
sick
Game
.
room
=
broom
:
Game
.
Od
=
Od
:
Game
.
Drunk
=
Drunk
:
Game
.
days
=
days
:
Game
.
weeks
=
weeks
:
Game
.
months
=
months
Game
.
autosave
=
autosave
:
Game
.
AnimateMenu
=
AnimateMenu
Put
#
1
,
,
Game
Close
#
1
End
Sub
Function
SaveClose
center
"Save game before exiting? [Y,N,C]"
,
2
,
7
Do
Select
Case
InKey$
Case
"Y"
,
"y"
:
SaveClose
=
1
:
Exit
Do
Case
"N"
,
"n"
:
SaveClose
=
0
:
Exit
Do
Case
"C"
,
"c"
:
SaveClose
=
-
1
:
Exit
Do
End
Select
Loop
End
Function
Sub
seizure
Dim
FaceA
(
900
)
sl
=
1
:
MoreX
=
0
Refresh
0
,
0
,
sl
Get
(
65
,
30
)
-
(
135
,
110
),
FaceA
()
For
i
=
1
To
5
For
LessX
=
MoreX
To
-
5
Step
-
1
Put
(
LessX
+
65
,
30
),
FaceA
(),
PSet
Next
Slow
.
05
For
MoreX
=
LessX
To
5
Step
1
Put
(
MoreX
+
65
,
30
),
FaceA
(),
PSet
Next
Slow
.
05
Next
center
"GiGaMoLe had a seizure"
,
20
,
4
center
"because he got to mad!"
,
21
,
4
center
"You Lose!"
,
22
,
4
End
Sub
Sub
shower
Dim
sx
(
50
)
Dim
sy
(
50
)
For
i
=
55
To
100
If
i
/
10
=
Int
(
i
/
10
)
Then
sc
=
0
Else
sc
=
3
Line
(
i
,
30
)
-
(
i
,
95
),
sc
Line
(
200
-
i
,
30
)
-
(
200
-
i
,
95
),
sc
Slow
.
04
Next
For
i
=
1
To
50
sx
(
i
)
=
Int
(
90
*
Rnd
(
1
))
+
55
sy
(
i
)
=
Int
(
20
*
Rnd
(
1
))
+
10
Next
sd
=
Timer
Do
Until
Timer
-
sd
>
10
For
i
=
1
To
50
If
sy
(
i
)
<
29
Then
If
Point
(
sx
(
i
),
sy
(
i
))
=
1
Then
PSet
(
sx
(
i
),
sy
(
i
)),
2
End
If
sy
(
i
)
=
sy
(
i
)
+
1
PSet
(
sx
(
i
),
sy
(
i
)),
1
ElseIf
sy
(
i
)
=
29
Then
PSet
(
sx
(
i
),
sy
(
i
)),
2
sx
(
i
)
=
Int
(
90
*
Rnd
(
1
))
+
55
sy
(
i
)
=
Int
(
20
*
Rnd
(
1
))
+
10
End
If
Next
i
=
0
Slow
.
04
Loop
Line
(
55
,
10
)
-
(
145
,
29
),
2
,
BF
Line
(
55
,
30
)
-
(
145
,
95
),
2
,
BF
End
Sub
Sub
Slow
(
delay
)
d
=
Timer
While
Timer
-
d
<
delay
:
Wend
End
Sub
Sub
Speak
(
times
,
delay
)
For
i
=
1
To
times
omouth
Slow
delay
cmouth
Slow
delay
Next
End
Sub
Sub
UpdateMenu
If
AnimateMenu
=
True
And
Timer
-
MenuTimer
>
.
05
Then
Select
Case
MenuColor
Case
4
:
NMC
=
2
Case
2
:
NMC
=
14
Case
14
:
NMC
=
9
Case
9
:
NMC
=
4
End
Select
Palette
sclr
,
NMC
MenuColor
=
NMC
MenuTimer
=
Timer
End
If
End
Sub
Sub
weed
(
snd
)
Rem nd = 1 THEN PLAY ON
final
=
100
Dim
sx
(
final
),
sy
(
final
),
sz
(
final
)
Line
(
65
,
30
)
-
(
135
,
110
),
2
,
BF
Circle
(
100
,
80
),
10
,
4
,
120
*
(
3.14
/
180
),
60
*
(
3.14
/
180
),
1
/
3
Line
(
95
,
50
)
-
(
105
,
80
),
4
,
B
Paint
(
94
,
80
),
12
,
4
Paint
(
96
,
51
),
12
,
4
pipe
=
0
:
w1
=
103
:
w2
=
70
Circle
(
102
,
71
),
3
,
4
For
bowl
=
0
To
9.5
Step
.
5
Circle
(
w1
,
w2
),
4
,
4
:
w1
=
w1
+
.
5
:
w2
=
w2
-
.
5
Next
w1
=
103
:
w2
=
70
Do
Until
pipe
=
9
Circle
(
w1
,
w2
),
3
,
12
:
w1
=
w1
+
.
5
:
w2
=
w2
-
.
5
:
pipe
=
pipe
+
.
5
Loop
Circle
(
112.5
,
59.5
),
3
,
4
:
Paint
(
114
,
61
),
0
,
4
For
s
=
0
To
final
sx
(
s
)
=
Int
(
10
*
Rnd
(
1
))
+
95
:
sy
(
s
)
=
Int
(
6
*
Rnd
(
1
))
+
43
:
sz
(
s
)
=
Int
(
10
*
Rnd
(
1
))
+
1
Next
Rem If snd = 1 Then
Rem On Play(4) GOTO inagoddadavida:
Rem : Play "mbt60o2d8d8f16e16o1c16o2d8o3msa8g#8g8mno2f16"
Rem End If
d
=
Timer
Do
Until
Timer
-
d
>
20
For
a
=
0
To
final
Select
Case
Point
(
sx
(
a
),
sy
(
a
))
Case
8
:
PSet
(
sx
(
a
),
sy
(
a
)),
2
End
Select
Select
Case
sx
(
a
)
Case
Is
<=
0
,
Is
>=
200
:
sx
(
a
)
=
Int
(
10
*
Rnd
(
1
))
+
95
:
sy
(
a
)
=
Int
(
6
*
Rnd
(
1
))
+
43
Case
Is
<
100
:
sx
(
a
)
=
sx
(
a
)
-
1
'sz(a)
Case
Is
>=
100
:
sx
(
a
)
=
sx
(
a
)
+
1
' sz(a)
End
Select
If
sy
(
a
)
<=
0
Then
sx
(
a
)
=
Int
(
10
*
Rnd
(
1
))
+
95
:
sy
(
a
)
=
Int
(
6
*
Rnd
(
1
))
+
43
End
If
sy
(
a
)
=
sy
(
a
)
-
sz
(
a
)
/
(
5
*
Rnd
(
1
)
+
(
10
*
Rnd
(
1
))):
PSet
(
sx
(
a
),
sy
(
a
)),
8
Next
Loop
If
snd
=
1
Then
Play
"mbo2d8"
Rem OFF
End
If
End
Sub
Sub
WIN
(
snd
)
View
Screen
(
0
,
0
)
-
(
319
,
199
)
Cls
Face
60
,
38
eopen
60
,
38
Rem If snd = 1 Then
Rem Rem PLAY ON
Rem On Play(4) GOSUB creditsmusic
Rem Play "mb t80 l8 o4 bdc o5 gad o4 ebg o3 acb"
Rem End If
Color
1
center
"Winner!!"
,
2
,
0
center
"There are many cheats"
,
5
,
12
center
"Type stuff during the game"
,
6
,
12
center
"to find them!"
,
7
,
12
Slow
5
Cls
0
center
"Giga Mole by GRiM"
,
12
,
15
Slow
5
Cls
center
"Written by Gary Kramlich"
,
12
,
15
Slow
5
Cls
center
"Special Thanks to Mr. Anders"
,
12
,
15
center
"With out you, there wouldn't"
,
13
,
15
center
"be a GiGa MoLe! -Gary!"
,
14
,
15
Slow
5
If
snd
=
1
Then
Play
"o2 e1"
End
Sub
Sub
z1
Circle
(
135
,
35
),
10
,
7
Paint
(
135
,
35
),
7
,
7
Line
(
130
,
30
)
-
(
140
,
30
),
0
Line
(
140
,
30
)
-
(
130
,
40
),
0
Line
(
130
,
40
)
-
(
140
,
40
),
0
Slow
.
5
Circle
(
135
,
35
),
10
,
2
Paint
(
135
,
33
),
2
,
2
End
Sub
Sub
z2
Circle
(
152
,
12
),
7
,
7
Paint
(
152
,
11
),
7
,
7
Line
(
150
,
10
)
-
(
155
,
10
),
0
Line
(
155
,
10
)
-
(
150
,
15
),
0
Line
(
150
,
15
)
-
(
155
,
15
),
0
Slow
.
5
Circle
(
152
,
12
),
7
,
2
Paint
(
152
,
11
),
2
,
2
End
Sub