Vous êtes sur la page 1sur 43

========= TEAM 1 =========

The Sac Face


Team

Unforeseen
Destiny

(Phan Thanh, Schaures, Bernal, Millard, Nesbitt, Delgado)

Table of content
I/. Storyline, Strategy, Control. (Pg. 3)
II/. Citation + Object properties. (Pg. 4-40)
III/. Teams Diary. (Pg. 41-42)
Date and Page.
1

1/12/2016 (Pg. 41)

Subject.
Start the work, team divisions.

Goal for the next day: Complete storyline, start on building stage, finding sprites, artwork.
2

1/13/2016 (Pg. 41)

Finish the Poster, find the sprites and background.

Goal for the next day:Keep working on the sprite, finding the sound and music.
3

1/14/2016 (Pg. 41)

Find the sound and music.

Goal for the next day: Finish working on the sprite, agree on the poster, start making stages.
4

1/15/2016 (Pg. 41)

Begin work on stages.

Goal for the next day: Keep working on the stage, finish some of them.

(1/16-18/2016)( Pg. 41)(Extra)

Find ideas for AI and finish the Commercial.

1/19/2016 (Pg. 42)

Working on stages.

Goal for the next day: Finish all the stages and start debugging.
6

1/20/2016 (Pg. 42)

Working on stages.

Goal for the next day: Finish & combine the stages, put cinematic graphic into the game.
7

1/21/2016 (Pg. 42)

Debugging.

Goal for the next day: Finish the debug process, start the work on presentation.
8

1/22/2016 (Pg. 42)

Testing out the game, making improvement on transition

Goal for the next day: Practice presenting, finish the SSC and the Engineering Notebook.
9

1/25/2016 (Pg. 42)

Practice day.

10

1/26/2016 - 1/27/2016

The important days Make the game worth the effort!

Page 42

Example of Sprites

I/. SSC:
Unforeseen Destiny
Story:
In the year 2123, an alien invasion took over the planet Earth. In the midst of chaos, Kendrick
was one of the few humans taken in to be experimented on. A few hours later, Kendrick woke up to find
himself in a strange prison and lost part of his memory about the invasion. While in prison, Kendrick is
taken aside by one of the guards (Leo, the Messenger in disguise) and is informed that he is going to help
Kendrick escape. After they escaped, their ship run out of fuel and was forced to land on a strange planet.
In that planet, he found out the truth, his Unforeseen Destiny.
Strategy:
Help Kendrick reach Earth by navigating through numerous obstacles and blind guards in the
prison. Then go to the hangar where the spaceship is located. After getting on the spaceship, help
Kendrick fight through waves of enemies and obstacles. On the journey, you will face many challenges
which may force you to make some unexpected turns. During the next stage, you must avoid the alien
species and try to find fuel. Unexpectedly, you find out something strange happened to Earth and are
forced to make an important decision here. Your final decision will affect the rest of the gameplay Your
score will increase as you kill enemies and collect, most, pickups.
Stage 1: Maze, use strategy to move through maze.
Stage 2: Space shooting, fight through waves of aliens.
Stage 3: Collect the fuel, make the decision.
Stage 4: ??? (No spoiler here!)
Control:
Stage 1:

Use arrow key to move, you can not shoot in this stage.

Stage 2:

Use arrow key to control the ship movement, spacebar to shoot.

Stage 3:

Use arrow key to move, you can not shoot in this stage.

Stage 4:

Use arrow key to move, press spacebar to shoot.


N

Next room

Previous room

Restart room

For all

(Not recommended)

II/. Citation + Objects Properties:


Citation:
Sprite:
Alien guard Grant (Google folder) (hand made, nice)
Kendrick (prisoner) Grant (Google folder) (hand made, nice)
Leo (guard) Grant (Google folder) (hand made, nice)
Weapons Phan (Rocket)
http://vignette2.wikia.nocookie.net/metalslug/images/a/a5/Upgrade_missle.gif/revision/latest?cb=20101222041405
(Bullet)
http://www.sega-16.com/wp-content/uploads/2005/04/Unofficial-Shmups-Glossary-6.gif
Spaceship (enemy) Andrea
-http://img15.deviantart.net/4247/i/2010/031/8/f/space_shooter_remake_by_supremesonrio.png
Spaceship (Kendrick) Andrea http://docs.garagegames.com/torquex/official/content/documentation/TorqueX
%202D/Tutorials/images/goodFighter.png
Space battle boss 2(enemy ship) Andrea-http://a.fsdn.com/con/app/proj/partartspace/screenshots/Spaceship15.png
Space battle boss 3(enemy ship)
grant- http://i.imgur.com/tXZel.png
Asteroid Andrea- http://rs1104.pbsrc.com/albums/h329/zorq1/Spinning-asteroid-1.gif~c200
Guns (ship) Phan
http://image.noelshack.com/fichiers/2013/40/1380492633-juza-v2.gif
Strange planet Delgado http://www.bbc.com/news/science-environment-33922503
(the mysterious guy finally shows up)
Fuel Andrea- http://vignette2.wikia.nocookie.net/wolfenstein/images/0/0e/Fuel_can.png/revision/latest?
cb=20130804170835

Strange planet character Phan


https://www.chronocompendium.com/images/wiki/3/32/Prophet_Sprites.png
Earth (boss): Phan http://i872.photobucket.com/albums/ab289/Mollombo/SpriteCompEC.png
Earth (planet) Delgado https://hdwallpapers.cat/what_wonderful_world_pretty_planet_earth_hd-wallpaper1520138/
Pickups- http://cdn.bulbagarden.net/upload/3/34/Dream_Ghost_Gem_Sprite.png
http://www.mariowiki.com/images/e/e4/Diamond2_WL4.png
Wall (prison) Phan
http://s1322.photobucket.com/user/christopher1007/media/tileset_zps7dcb288b.png.html
Tiles (obstacles) Phan http://shaneriley.com/demos/canvas/tiled_renderer/images/mountain_landscape_23.png
Looping space background Grant
https://cdn.tutsplus.com/active/uploads/legacy/tuts/421_stage3dShmup2/stars.gif
Prison background Grant
http://superwalrusland.com/ohr/issue26/pa/floor_b.jpg
Strange planet background Nesbitt :
http://orig04.deviantart.net/eaff/f/2013/358/4/e/background_animated_by_planetcentauri-d6z6zn8.gif
or

andrea https://wallpaperscraft.com/image/planet_saturn_space_ring_9789_1920x1080.jpg
http://www.rgbstock.com/cache1vWplB/users/x/xy/xymonau/300/orc4Po4.jpg
http://lpc.opengameart.org/static/lpc-style-guide/_images/process-scaled.png
Earth background:
Phan http://shaneriley.com/demos/canvas/tiled_renderer/images/mountain_landscape_23.png
Nesbitt
http://www.spriters-resource.com/game_boy_advance/lufiaruinsoflore/sheet/49220/
Fuel planet species: (friendly)
Phan
http://spritedatabase.net/files/snes/432/Sprite/JP-Raptor.png
Other planet (civilians) (for extra, dont actually need it, poor it :<)

Sound effect:
Explosion Sound: andrea http://soundbible.com/1919-Shotgun-Blast.html
Phan (for the main ship) http://soundbible.com/1793-Flashbang.html
Lazer sound: andrea http://soundbible.com/1771-Laser-Cannon.html
http://soundbible.com/1087-Laser.html
Missle launching sound: Phan http://soundbible.com/1794-Missle-Launch.html
Dying sound: Delgado http://soundbible.com/925-Bone-Crushing.html
http://soundbible.com/810-Dying.html
Phan http://soundbible.com/1454-Pain.html
Pickup sound:
Phan http://pikacraft.eu/images/avatars/diamond_1%5B22438%5D.png
Alien noises: Delgado http://soundbible.com/1016-Strange-Noise.html
http://soundbible.com/878-Martian-Scanner.html
Near-death sound: Nesbitt https://www.youtube.com/watch?v=9Tr5MrTF0fg
Lever sound: Nesbitt http://soundbible.com/761-Switch.html
Background Music:
Stage 1: Maze
Tense, scary, mysterious music.
Phan https://www.youtube.com/watch?v=NUTwYFnllHE
Boss: Nesbitt https://www.youtube.com/watch?v=S7p7pjCBgJ8
Stage 2: Space music.
Phan https://www.youtube.com/watch?v=zUrSQNSN6_c
Stage 3: Getting dat fuel
Mysterious, motivational music.
andrea https://www.youtube.com/watch?v=wKsmsOhk1JI
Stage 4 - 1: Intense boss fighting music.
andrea https://www.youtube.com/watch?v=ROoalSB2DOM
Grant
https://www.youtube.com/watch?v=Xsz497IqoH0
Stage 4 - 2: Intense boss fighting music.
https://www.youtube.com/watch?v=hNiX_-C27ac
Phan:
https://www.youtube.com/watch?v=hKRUPYrAQoE
Ending/Credit:
Phan
https://www.youtube.com/watch?v=ce6jBlNkML4&index=11&list=PL572172884C1FC772
Objects Properties:

Stage 1:

{
show_message('You have been caught!!!');
with(obj_ken)
{
x = xstart;
y = ystart;
}

Information about object: obj_vguard


Sprite: spr_guarddown
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 4
Step Event:
execute code:
{
speed = 4;
if ( x == obj_ken.x )
{
if ( (direction == 90) && (y > obj_ken.y) )
{
speed = 6;
}
else if ( (direction == 270) && (y < obj_ken.y) )
{
speed = 6;
}
}
}

End Step Event:


execute code:
{
image_speed = 1/3;
if (hspeed < 0) sprite_index = spr_guardleft;
if (hspeed > 0) sprite_index = spr_guardright;
if (vspeed < 0) sprite_index = spr_guardup;
if (vspeed > 0) sprite_index = spr_guarddown;
}

Collision Event with object obj_wall:


if vspeed is not equal to 0
reverse vertical direction
if hspeed is not equal to 0
reverse horizontal direction
Collision Event with object obj_ken:
execute code:

}
Information about object: obj_hguard
Sprite: spr_guarddown
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 000100000 with speed set to 4
Step Event:
execute code:
{
speed = 4;
if ( y == obj_ken.y )
{
if ( (direction == 180) && (x > obj_ken.x) )
{
speed = 6;
}
else if ( (direction == 0) && (x < obj_ken.x) )
{
speed = 6;
}
}
}

End Step Event:


execute code:
{
image_speed = 1/3;
if (hspeed < 0) sprite_index = spr_guardleft;
if (hspeed > 0) sprite_index = spr_guardright;
if (vspeed < 0) sprite_index = spr_guardup;
if (vspeed > 0) sprite_index = spr_guarddown;
}

Collision Event with object obj_wall:


if ( !place_snapped(32,32) ) exit;

if vspeed is not equal to 0


reverse vertical direction
if hspeed is not equal to 0
reverse horizontal direction

speed = 4;
direction = 90;
sprite_index = spr_kenup;
image_speed = 0.25;
}

Collision Event with object obj_ken:


execute code:
Keyboard Event for <Right> Key:
execute code:

{
show_message('You have been caught!!!');
with(obj_ken)
{
x = xstart;
y = ystart;
}
}

{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 0;
sprite_index = spr_kenright;
image_speed = 0.25;
}

Information about object: obj_ken


Sprite: spr_kendown
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Collision Event with object obj_wall:
start moving in directions 000010000 with speed set to 0
Keyboard Event for <no key> Key:
execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 0;
image_speed = 0;
}

Keyboard Event for <Left> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 180;
sprite_index = spr_kenleft;
image_speed = 0.25;
}

Keyboard Event for <Up> Key:


execute code:

Keyboard Event for <Down> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 270;
sprite_index = spr_kendown;
image_speed = 0.25;
}

Other Event: Outside Room:


go to next room with transition effect <no effect>
set variable score relative to 300
Information about object: obj_ship
Sprite: spr_ship
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Alarm Event for alarm 0:
execute code:
with(obj_ship)
{
move_towards_point(x+500,y,3);
}
alarm[1] = 30;
Visible: true

{
Alarm Event for alarm 1:
execute code:
{
speed = 10;

Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
play sound sound6; looping: true

}
Stage 2:

Other Event: Outside Room:


go to next room with transition effect Create from top
Information about object: obj_kendrick
Sprite: spr_kenright
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
image_speed =0.5;
alarm[0] = 200;
}
start moving in directions 000001000 with speed set to 3
Alarm Event for alarm 0:
execute code:
{
{
speed = 0;
show_message('Kendrick: Ah, this is the ship Leo talk
about... Let us go then!');
with(obj_kendrick)
{
instance_destroy();
view_object = obj_ship;
}
sound_play(snd_engine);
obj_ship.alarm[0] = 30;
}
}

Information about object: object_plane1


Sprite: sprite_plane1
Solid: false
Visible: true
Depth: -100
Persistent: false
Parent: object_plane_parent
Mask: <same as sprite>
Alarm Event for alarm 11:
set time line tlBoss2 at position 0, Start Immediately and Don't
Loop
Collision Event with object obj_strage_planet:
go to next room with transition effect Create from center
Keyboard Event for <Space> Key:
if can_shoot is larger than 0
create instance of object object_bullet at relative position
(14,-16)
play sound snd_laser; looping: false
create instance of object object_bullet at relative position (14,-16)
set variable can_shoot to -10
Keyboard Event for <Left> Key:
if x is larger than 40
jump relative to position (-4,0)
Keyboard Event for <Up> Key:
if y is larger than 40
jump relative to position (0,-2)
Keyboard Event for <Right> Key:
if x is smaller than room_width-40
jump relative to position (4,0)
Keyboard Event for <Down> Key:
if y is smaller than room_height-120
jump relative to position (0,2 )

Information about object: obj_prison_controller

Information about object: object_bullet

Sprite: <no sprite>

Sprite: sprite_bullet

Solid: false
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

don't show score with caption score:


don't show lives with caption lives:
don't show health with caption health:
set time line time_lv1 at position 0
set Alarm 0 to 30
set variable check to true

Create Event:
start moving in directions 000000010 with speed set to 8

Alarm Event for alarm 0:


execute code:

Other Event: Outside Room:


destroy the instance

{
n = irandom(20);
if (n == 1)
{
hx = random_range(10,room_width);
instance_create(hx,-5,obj_pickup);
}
alarm[0] = 40;

Information about object: object_enemy_basic


Sprite: sprite_enemy_basic
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 4
Collision Event with object object_bullet:
set the score relative to 10
create instance of object object_explosion1 at relative position
(0,0)
for other object: destroy the instance
destroy the instance
Collision Event with object object_plane_parent:
create instance of object object_explosion1 at relative position
(0,0)
for other object: set variable damage relative to 10
destroy the instance
Other Event: Outside Room:
if y is larger than room_height
destroy the instance

Information about object: object_controller


Sprite: <no sprite>
Solid: false
Visible: true
Depth: -100
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Other Event: Game Start:


play sound sound6; looping: true
Other Event: Room Start:
play sound sound1; looping: true
Draw Event:
if check is equal to true
set the font for drawing text to font_panel and align left
set the drawing color to 255
at position (20,420) draw text: Damage
draw rectangle with relative vertices (130,420) and
(230,440), outline
if number of objects object_plane1 is Larger than 0
draw rectangle with relative vertices (130,420) and
(130+object_plane1.damage,440), filled

Information about object: object_plane_parent


Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
set variable can_shoot to 1
set variable damage to 0
set variable fr to 1

Create Event:
set the information in the window caption:
set variable fr to 1
Step Event:
set variable can_shoot relative to fr
if damage is larger than 100
destroy the instance
create instance of object object_explosion2 at relative
position (0,0)

Alarm Event for alarm 0:


Create Event:
play sound sound_explosion2; looping: false
Alarm Event for alarm 0:
execute code:
{
object_controller.check = false;
view_hview[0] = 1000;
alarm[1] = 60;

Information about object: object_explosion1


}
Sprite: sprite_explosion1
Solid: false
Visible: true
Depth: -101
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
play sound sound_explosion1; looping: false
set the sprite to sprite_explosion1 with subimage 0 and speed .
85
Other Event: Animation End:
destroy the instance

Alarm Event for alarm 1:


execute code:
show_message('Kendrick: There are still too many of them');
show_message('Leo: There is a planet ahead of us! Use the
space jump');
alarm[2] = 30;

Alarm Event for alarm 2:


execute code:
{

Information about object: object_explosion2


Sprite: spr_explosion2
Solid: false
Visible: true
Depth: -102
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
play sound sound_explosion2; looping: false
Other Event: Animation End:
destroy the instance
display message: you have failed...
display message: Now reloading last checkpoint
restart the current room with transition effect <no effect>

alarm[3] = 30;
}

Alarm Event for alarm 3:


execute code:
{
show_message('Kendrick: It is unstable...');
show_message('Leo: Worth the risk! Use it!');
alarm[4] = 30;
}

Information about object: obj_explosion_enemy


Sprite: spr_explosion2
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>

Other Event: Animation End:


destroy the instance
display message: Leo: Nice hit Kendrick!
display message: Kendrick: Uh oh
display message: Leo: what is it?
display message: Kendrick: It looks like we are about to run out
of fuel!

10

Mask: <same as sprite>


sleep 1000 milliseconds; redrawing the screen: true
for all obj_event: set Alarm 0 to 30
create instance of object obj_strage_planet at position (300,500)
Information about object: obj_event
Sprite: spr_explosion2
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Alarm Event for alarm 0:
execute code:
{
score += 500;
object_controller.check = false;
view_hview[0] = 1000;
alarm[1] = 60;
}

display message: Leo: That means we will have to stop at this


near by planet
display message: Kendrick: We don't know if it is safe but we
will have to take the risk
Alarm Event for alarm 4:
stop sound sound1
show the video in file FinalProjectLanded.wmv 0
go to next room with transition effect <no effect>
Information about object: object_enemy_bullet
Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Collision Event with object object_plane_parent:
destroy the instance
play sound sound_explosion1; looping: false
for other object: set variable damage relative to 5
Other Event: Outside Room:
destroy the instance

Alarm Event for alarm 1:


execute code:
show_message('Kendrick: There are still too many of them');
show_message('Leo: There is a planet ahead of us! Use the
space jump');
alarm[2] = 30;

Alarm Event for alarm 2:


execute code:
{

Information about object: object_boss


Sprite: sprite_boss
Solid: false
Visible: true
Depth: -10
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 1
set variable hits to 0
set Alarm 1 to 100
set Alarm 2 to 10
set Alarm 0 to 200
set Alarm 3 to 200

alarm[3] = 60;
}

Alarm Event for alarm 3:


execute code:
{

Alarm Event for alarm 0:


execute code:
{
t = 50;
t2 = irandom_range(10,49);
n = irandom(6);
check = n;
alarm[0] = 30;

11

show_message('Kendrick: It is unstable...');
show_message('Leo: Worth the risk! Use it!');
alarm[4] = 30;
}

exit;
} else
if ((n > 1) && (n <= 3))
{
direction = 0;
move_towards_point(x+t2,y,3);
exit;
} else
{
direction = 270;
speed = 0;
exit;
}
}

if ((n <= 1))


{
direction = 180;
move_towards_point(x-t2,y,3);
set the score relative to 400
create instance of object object_explosion1 at relative
position (-30,0)
create instance of object object_explosion1 at relative
position (30,0)
create instance of object object_explosion1 at relative
position (0,0)
create instance of object object_explosion1 at relative
position (0,-10)
create instance of object object_explosion1 at relative
position (0,-30)
Collision Event with object object_plane_parent:
for other object: set variable damage to 101
Other Event: Outside Room:
reverse horizontal direction
Other Event: Intersect Boundary:
reverse horizontal direction

Alarm Event for alarm 1:


repeat next action (block) 15 times
create instance of object object_enemy_bullet at relative
position (0,0) with speed 5 in direction random(360)
create instance of object obj_fireball2 at relative position (0,0)
with speed 2 in direction 270
set Alarm 1 to 250

Draw Event:
at relative position (0,0) draw image -1 of sprite sprite_boss
set the drawing color to 1387720
draw rectangle with vertices (10,5) and (10+300-(4*hits),15),
filled

Alarm Event for alarm 2:


execute code:

Information about object: obj_movingfireball

{
check = (hits <= 30 && hits >= 20) || (hits <= 50 && hits >=
40) || (hits <= 70 && hits >= 60)
if (check)
{
timeline_position = 0;
timeline_index = stage2shower;
timeline_running = true;
alarm[2] = 120;
}
else alarm[2] = 10;
}

Alarm Event for alarm 3:


start moving in directions 000010000 with speed set to 0
Collision Event with object object_bullet:
set the score relative to 2
for other object: create instance of object object_explosion1 at
relative position (0,0)

Sprite: spr_fireball2
Solid: false
Visible: true
Depth: 10
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 30
Information about object: obj_staticplane
Sprite: sprite_plane1
Solid: false
Visible: true
Depth: -1000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

12

for other object: destroy the instance


set variable hits relative to 1
if hits is equal to 75
for all object_plane1: set Alarm 11 to 30
destroy the instance
Information about object: obj_strage_planet
Sprite: spr_strange_planet
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 2
Information about object: obj_staticup
Sprite: spr_staticup
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: obj_flagship


Sprite: spr_staticup
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: obj_pickup


Sprite: spr_pickup
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: object_intro


Sprite: sprite_island2
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
alarm[2] = 60;
view_object[0] = obj_staticplane;
}

Alarm Event for alarm 0:


execute code:
{
view_object[0] = obj_flagship;
alarm[1] = 60;
}

Alarm Event for alarm 1:


execute code:
{
view_object[0] = obj_staticplane;
alarm[3] = 30;
}

Alarm Event for alarm 2:


execute code:
{
view_object[0] = obj_staticplane;
show_message('Kendrick: We have made it out... Alive...');
show_message('Leo: Not quite yet, they are behind us!');
alarm[0] = 30;

Create Event:
set the sprite to spr_pickup with subimage 0 and speed .75
start moving in directions 010000000 with speed set to 2
}

13

Collision Event with object object_plane_parent:


destroy the instance
set variable object_plane_parent.fr to 2
for other object: set variable alarm[0] to 300

obj_movingfireball.speed = 60;
view_vspeed[0] = 30;
view_object[0] = object_intro;
alarm[4] = 90;

Alarm Event for alarm 4:


go to next room with transition effect Fade out and in
Information about object: object_boss2
Sprite: sprite_boss2
Solid: false
Visible: true
Depth: -10
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 1
set variable hits to 0
set Alarm 0 to 200
set Alarm 1 to 100
set Alarm 2 to 10
set Alarm 3 to 200
Alarm Event for alarm 0:
execute code:
{
t = 50;
t2 = irandom_range(10,49);
n = irandom(6);
check = n;
alarm[0] = 30;
if ((n <= 1))
{
direction = 180;
move_towards_point(x-t2,y,3);
exit;
} else
if ((n > 1) && (n <= 3))
{
direction = 0;
move_towards_point(x+t2,y,3);
exit;
} else

Alarm Event for alarm 3:


execute code:
show_message('Kendrick: We can not escape, we must fight
them!');
show_message('Leo: Agree...');
}

Alarm Event for alarm 1:


repeat next action (block) 15 times
create instance of object object_enemy_bullet at relative
position (0,0) with speed 5 in direction random(360)
create instance of object obj_fireball2 at relative position (0,0)
with speed 2 in direction 270
set Alarm 1 to 250
Alarm Event for alarm 2:
execute code:
{
check = (hits <= 30 && hits >= 20) || (hits <= 50 && hits >=
40) || (hits <= 70 && hits >= 60) || (hits <= 90 && hits >= 80)
if (check)
{
timeline_position = 0;
timeline_index = stage2shower2;
timeline_running = true;
alarm[2] = 180;
}
else alarm[2] = 10;
}

Alarm Event for alarm 3:


start moving in directions 000010000 with speed set to 0
Collision Event with object object_bullet:
set the score relative to 2
for other object: create instance of object object_explosion1 at
relative position (0,0)
for other object: destroy the instance
set variable hits relative to 1
if hits is equal to 100
destroy the instance
create instance of object obj_explosion_enemy at relative
position (-30,0)
create instance of object object_explosion1 at relative
position (30,0)
create instance of object object_explosion1 at relative
position (0,0)
create instance of object object_explosion1 at relative
position (0,-10)

14

{
direction = 270;
speed = 0;
exit;
}
reverse horizontal direction

create instance of object object_explosion1 at relative


position (0,-30)
set the score relative to 400
Collision Event with object object_plane_parent:
for other object: set variable damage to 101
Other Event: Intersect Boundary:

Draw Event:
at relative position (0,0) draw image -1 of sprite sprite_boss2
set the drawing color to 1387720
draw rectangle with vertices (10,5) and (410-(4*hits),15), filled
Information about object: obj_bossammo
Sprite: sprite98
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 10
play sound snd_laser; looping: false

End Step Event:


execute code:
{
if ( hspeed > 0 )
sprite_index = sprite_alien_right
else
sprite_index = sprite_alien_left;
}

Collision Event with object object_wall:


reverse horizontal direction
Information about object: obj_explorer

Collision Event with object object_plane_parent:


for other object: set variable damage relative to 3
destroy the instance
Stage 3:
Information about object: object_spider
Sprite: sprite_alien_right
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: object_enemy
Mask: <same as sprite>
Create Event:
start moving in directions 000001000 with speed set to 2

Sprite: spr_guy_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
alarm[0] = 30;
image_speed = 0;
shield_count = 0;
}

Step Event:
execute code:
{
speed = 2;
if ( y == obj_explorer.y )
{
if ( (direction == 180) && (x > obj_explorer.x) )
{
speed = 4;
}

Alarm Event for alarm 0:


execute code:
show_message('Kendrick: I should start looking for that fuel
right now...');

15

else if ( (direction == 0) && (x < obj_explorer.x) )


{
speed = 4;
}
}
}
{
//sound_play(snd_treasure);
show_message("You found the fuel!
##but to escape the plant you must find help from the prophet
##(the prophet likes to hangout near he edge of the planet) ");
}
for other object: destroy the instance

Collision Event with object object_wall:


execute code:
{
speed = 0;
image_speed = 0;
}

Collision Event with object object_fuel:


for other object: execute code:
speed = 0;
image_speed = 0;
}

Collision Event with object object_enemy:


execute code:
{
///sound_play(snd_die);
show_message('Dino: Ohm nom nom...');
screen_redraw();
sleep(1000);
x = xstart;
y = ystart;
move_snap(32,32);
}

Keyboard Event for <Left> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 180;
sprite_index = spr_guy_left;
image_speed = 0.25;
}

Collision Event with object obj_block_hor:


for other object: execute code:

Keyboard Event for <Up> Key:


execute code:

{
if ( obj_explorer.hspeed == 0 ) exit;
if ( place_empty(x+obj_explorer.hspeed,y) )
{
x += obj_explorer.hspeed;
//sound_play(snd_block);
}
}

{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 90;
sprite_index = spr_guy_up;
image_speed = 0.25;
}

Collision Event with object obj_block_ver:


for other object: execute code:
{
if ( obj_explorer.vspeed == 0 ) exit;
if ( place_empty(x,y+obj_explorer.vspeed) )
{
y += obj_explorer.vspeed;
//sound_play(snd_block);
}
}

Keyboard Event for <Right> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 0;
sprite_index = spr_guy_right;
image_speed = 0.25;
}

Keyboard Event for <Down> Key:


execute code:

16

Keyboard Event for <no key> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
Information about object: object_wall
Sprite: sprite_block
Solid: true
Visible: true
Depth: 3
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: object_controller3


Sprite: <no sprite>
Solid: false
Visible: true
Depth: 1000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Other Event: Room Start:
play sound snd_stage3; looping: true

Information about object: object_wallpass


Sprite: sprite_block
Solid: true
Visible: true
Depth: 0
Persistent: false
Parent: object_wall
Mask: <same as sprite>

{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 270;
sprite_index = spr_guy_down;
image_speed = 0.25;
}

Other Event: Outside Room:


go to next room with transition effect <no effect>
Information about object: object_butterfly
Sprite: sprite_alien_down
Solid: true
Visible: true
Depth: 0
Persistent: false
Parent: object_enemy
Mask: <same as sprite>
Create Event:
start moving in directions 010000000 with speed set to 2
Step Event:
execute code:
{
speed = 2;
if ( x == obj_explorer.x )
{
if ( (direction == 90) && (y > obj_explorer.y) )
{
speed = 4;
}
else if ( (direction == 270) && (y < obj_explorer.y) )
{
speed = 4;
}
}
}

Information about object: object_fuel


Sprite: sprite__fuel
Solid: false
Visible: true
Depth: 10
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Information about object: object_enemy

End Step Event:


execute code:
{
if ( vspeed > 0 )
sprite_index = sprite_alien_down
else
sprite_index = sprite_alien_up;
}

17

Sprite: <no sprite>


Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

End Step Event:


execute code:
{
if ( (x < xstart) && place_empty(x+2,y) )
{
x += 2 ;
//sound_play(snd_block);
}
if ( (x > xstart) && place_empty(x-2,y) )
{
x -= 2;
//sound_play(snd_block);
}
}
Information about object: obj_block_ver
Sprite: sprite_block_vert
Solid: true
Visible: true
Depth: 0
Persistent: false
Parent: object_wall
Mask: <same as sprite>
End Step Event:
execute code:
{
if ( (y < ystart) && place_empty(x,y+2) )
{
y += 2 ;
//sound_play(snd_block);
}
if ( (y > ystart) && place_empty(x,y-2) )
{
y -= 2;
//sound_play(snd_block);
}
}
Information about object: object_prophet
Sprite: sprite_prophet
Solid: true
Visible: true
Depth: 0

Collision Event with object object_wall:


reverse vertical direction
Information about object: obj_block_hor
Sprite: sprite_block_hor
Solid: true
Visible: true
Depth: 0
Persistent: false
Parent: object_wall
Mask: <same as sprite>
Information about object: obj_checkpoint
Sprite: sprite_treasure1
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Alarm Event for alarm 0:
execute code:
{
with(obj_explorer)
{
score += 300;
show_message('Leo: It is the old prophet..., he has
something to tell you Kendrick...');
show_message('Kendrick: You know him???');
show_message('Prophet: The Earth is in danger
Kendrick, ... ');
}
alarm[1] = 1;
}

Alarm Event for alarm 1:


execute code:
{
if (show_question('Prophet: So, do you want to rescue the
Earth? (your family is there too by the way...)'))
{
show_message('Kendrick: Yes, I will take back the Earth,
or die trying!');
show_message('Prophet: Nice-su :">');
show_message('Let me tell you what happened to
Earth...');
alarm[2] = 30;
sound_stop(sound6);

18

Persistent: false
Parent: <no parent>
Mask: <same as sprite>

show_video("FinalProjectDecision.wmv",false,false);
room_goto(Stage4);
show_message('Kendrick:... I"m on my way!');
exit;
}
else
{

}
}

Collision Event with object obj_explorer:


execute code:
{
with(obj_explorer)
{
instance_create(x,y,obj_static2);
x = xstart;
y = ystart;
view_object[0] = obj_static2;
}
with(obj_static2)
{
show_message('???: Kendrick right? I have been waiting
for you')
show_message('Kendrick: Who are you???');
instance_create(x+96,y-32,obj_leo);
}
}
Information about object: obj_will1
Sprite: spr_willo
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

show_message('Kendrick: No old dude, why would I?');


show_message('Leo:...');
show_message('Old dude: ...');
show_message('Kendrick:...');
show_message('Kendrick: what?');
room_goto(Final1);
Information about object: obj_leo
Sprite: spr_Leo
Solid: false
Visible: true
Depth: 1000000000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
start moving in directions 000100000 with speed set to 2
execute code:
{
image_speed = 0.25;
}

Step Event:
execute code:
{
if (x == xstart - 64)
{
speed = 0;
image_speed = 0;
obj_checkpoint.alarm[0] = 1;
}

Create Event:
execute code:

Information about object: obj_static2


image_speed = 0.25;

}
start moving in directions 010000000 with speed set to 2
Step Event:
execute script scr_behaviour_walk with arguments (0,0,0,0,0)
Collision Event with object obj_explorer:
execute code:

Sprite: spr_guy_up
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:

19

execute code:
{
show_message('Kendrick: HOT HOT!!!');
with(obj_explorer)
{
x=xstart;
y=ystart;
}

{
image_speed = 0;
}

}
Stage 4:
Information about object: obj_fboss
Sprite: spr_fboss_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
image_speed = 0.125;
bhealth = 100;
alarm[1] = 30;
direction = 270;
check = 0;
alarm[2] = 30;
}

Alarm Event for alarm 0:


execute script scr_boss_move with arguments (0,0,0,0,0)
Alarm Event for alarm 1:
execute code:
{
if (distance_to_object(obj_trigger) <= 1000) {alarm[0] = 30;
exit;}
alarm[1] = 30;
}

Alarm Event for alarm 2:


execute code:
{
if (distance_to_object(obj_trigger) <= 300)
{instance_create(x,y,obj_fireball);}
alarm[2] = 60;
}

}
if (bhealth == 0)
{
obj_camera.dis = 0;
with(obj_hindrance)
{
check = false;
sprite_index = sprite15;
visible = false;
solid = false;
}
with(obj_hindrance2)
{
check = false;
sprite_index = sprite15;
visible = false;
solid = false;
}
instance_create(x-50,y,obj_fog);
instance_destroy();
instance_create(x,y,obj_boss1dead);
with(obj_bhealth1)
{
instance_destroy();
}
with (obj_boss1dead)
{
image_speed = 0;
}
with (obj_event1)
{
instance_destroy();
}
with(obj_spawn)
{
instance_destroy();
}
show_message('???: It is not yet over...');

20

Collision Event with object obj_hbullet:


execute code:

}
with(other) instance_destroy();
}

{
bhealth -= 5;
if (bhealth == 50)
{
timeline_index = tl_shower_spawn;
timeline_running = true;
Create Event:
execute code:
{
image_speed = 0.125;
bhealth = 100;
alarm[1] = 30;
direction = 270;
check = 0;
alarm[2] = 30;
}

Alarm Event for alarm 0:


execute script scr_boss_move with arguments (0,0,0,0,0)
Alarm Event for alarm 1:
execute code:
{
if (distance_to_object(obj_trigger) <= 560) {alarm[0] = 30;
exit;}
alarm[1] = 30;
}

Alarm Event for alarm 2:


execute code:
{
if (distance_to_object(obj_trigger) <= 500)
{instance_create(x,y,obj_fireball);}
alarm[2] = 60;
}

Collision Event with object obj_hbullet:


execute code:
{
bhealth -= 5;
if (bhealth == 75 || bhealth == 50)
{
timeline_position = 0;
timeline_index = tl_shower_spawn;

Information about object: obj_fboss2


Sprite: spr_fboss_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

show_message('???: This is... impossible...');


sound_play(snd_demon);
show_message('Kendrick: Justice will always win!');
instance_create(x,y,obj_boss1dead);
with(obj_boss1dead)
{
instance_destroy();
}
with(obj_bhealth2)
{
instance_destroy();
}
with (obj_boss1dead)
{
image_speed = 0;
}
with(obj_hindrance)
{
check = false;
sprite_index = sprite15;
visible = false;
solid = false;
}
with(obj_hindrance2)
{
check = false;
sprite_index = sprite15;
visible = false;
solid = false;
}
for (i = 1; i <= 2; i = i+1)
{
sound_play(snd_explode);
nearest = instance_nearest(x, y, obj_bgun);
with (nearest)
{
instance_destroy();
instance_create(x+50,y+50,obj_explosion);
}
with (obj_event1)
{
instance_destroy();

21

timeline_running = true;
}
if (bhealth == 50)
{
timeline_position = 0;
timeline_index = tl_fireball;
timeline_running = true;
scr_speed(50);
}
if (bhealth == 0)
{
with(obj_bhealth2)
{
instance_destroy();
}
with(obj_camera)
{
instance_destroy();
}
instance_create(obj_heroFB.x,obj_heroFB.y,obj_static);
with(obj_heroFB)
{
instance_destroy();
}
view_object[0] = obj_static;
}
with(other) instance_destroy();
}
Information about object: obj_bhealth1
Sprite: sprite22
Solid: false
Visible: true
Depth: -1000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Step Event:
execute code:
{
x = obj_fboss.x-50;
y = obj_fboss.y-20;
}

Draw Event:
set the drawing color to 255
draw rectangle with relative vertices (0,0) and
(obj_fboss.bhealth,10), filled
Information about object: obj_bhealth2

}
}
with(obj_spawn)
{
instance_destroy();
}
show_message('???: It is not yet over...');
sound_stop(snd_FinalBoss);
sound_stop(snd_FinalBoss2);
instance_create(x,y,obj_boss1dead);
instance_destroy();
instance_create(x,y,obj_rainmaker);
sound_play(snd_rain);
x = obj_fboss2.x-50;
y = obj_fboss2.y-20;
}

Draw Event:
set the drawing color to 255
draw rectangle with relative vertices (0,0) and
(obj_fboss2.bhealth,10), filled
Information about object: obj_bbullet
Sprite: spr_bullet
Solid: false
Visible: true
Depth: 1
Persistent: false
Parent: obj_enemy
Mask: <same as sprite>
Create Event:
execute code:
{
check = true;
alarm[0] = 15;
}
start moving in the direction of position
(obj_heroFB.x,obj_heroFB.y) with speed 15
Alarm Event for alarm 0:
execute code:
{
check = false;
}

Collision Event with object obj_wall:


execute code:

Sprite: sprite22
Solid: false

22

Visible: true
Depth: -1000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Step Event:
execute code:
{
Information about object: obj_bgun

{
if check = false
instance_destroy();
exit;
}

Collision Event with object obj_heroFB:


execute code:
{
instance_destroy();

Sprite: spr_boss_gun
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_enemy
Mask: <same as sprite>
Create Event:
execute code:

}
Information about object: obj_torch
Sprite: spr_torch
Solid: true
Visible: false
Depth: -10
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

{
image_speed = 0.25;
alarm[0] = 30;
interval = 70;
}

Create Event:
execute code:
{
image_speed = 0.25;
}

Alarm Event for alarm 0:


execute code:

Information about object: obj_wisp

{
nearest = instance_nearest(x, y, obj_trigger)
alarm[0] = interval;
if (distance_to_object(nearest) <= 500)
{
length = 0;
temp = direction;
t1 = (x+50) + length * cos(temp) ;
t2 = (y+50) - length * sin(temp) ;
instance_create(t1,t2,obj_bbullet);
sound_play(snd_blaser);

Sprite: spr_wisp
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_enemy
Mask: <same as sprite>

}
}

Step Event:
execute code:
{
image_index =
round(point_direction(x,y,obj_heroFB.x,obj_heroFB.y) / 6);

Create Event:
execute code:

image_speed = 0.25;
}
start moving in directions 010000000 with speed set to 2
Step Event:
execute script scr_behaviour_walk with arguments (0,0,0,0,0)
Collision Event with object obj_heroFB:
destroy the instance

23

}
Information about object: obj_hindrance
Information about object: obj_wall
Sprite: spr_block
Solid: true
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
{
check = false;
}

Collision Event with object obj_heroFB:


execute code:
{
if (check == true)
{
with (obj_heroFB)
{
sound_play(snd_hurt);
global.health = max(0,global.health- 50);
y -= vspeed*10;
}
}
}
Information about object: obj_spawn
Sprite: sprite9
Solid: false
Visible: false
Depth: 1215752192
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Information about object: obj_hindrance2
Sprite: sprite15
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
check = false;

Sprite: sprite15
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:

sound_play(snd_hurt);
global.health = max(0,global.health- 50);
x -= hspeed*10;
}
}
}
Information about object: obj_bstation
Sprite: spr_boss_gun_static2
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
image_speed = 0.5;
check = true;
}

Other Event: Animation End:


execute code:
{
if (check)
{
image_speed = 0;
instance_create(obj_bstation.x25,obj_bstation.y+5,obj_bgun);
check = false;
}
}

24

}
Information about object: obj_enemy
Collision Event with object obj_heroFB:
execute code:
{
if (check == true)
{
with (obj_heroFB)
{
Information about object: obj_bstation2
Sprite: spr_boss_gun_static2
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
image_speed = 0.5;
check = true;
}

Other Event: Animation End:


execute code:
{
if (check)
{
image_speed = 0;
instance_create(obj_bstation.x-25,obj_bstation.y+10,obj_bgun2);
check = false;
}
}
Information about object: obj_fireball
Sprite: spr_fireball
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_enemy
Mask: <same as sprite>
Create Event:

Sprite: <no sprite>


Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

instance_create(x,y,obj_explosion);
sound_play(snd_explode);
n = irandom(5);
if (n == 5)
{
instance_create(x,y,obj_heart2);
}
if (n == 4)
{
instance_create(x,y,obj_stimpack);
}
instance_destroy();

Collision Event with object obj_heroFB:


destroy the instance
execute code:
instance_create(x,y,obj_explosion);
sound_play(snd_explode);
instance_destroy();
with(other)
{
global.health = max(global.health - 20,0);
sound_play(snd_hurt);
}
Information about object: obj_fireball2
Sprite: spr_fireball
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:

25

execute code:
{
{
move_towards_point(obj_heroFB.x,obj_heroFB.y,6);

if (room_caption = "Test")
move_towards_point(obj_static.x,obj_static.y,6);
else instance_destroy();

Collision Event with object obj_wall:


execute code:

Collision Event with object obj_static:


execute code:

{
instance_create(x,y,obj_explosion2);
instance_destroy();
with(obj_static)
{
sprite_index = sprite31;
instance_destroy();
sound_play(snd_demon);
}
}

}
Information about object: obj_explosion
Sprite: spr_explosion
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
image_speed = 0.5;
}

Other Event: Animation End:


destroy the instance
Information about object: obj_explosion2

}
Information about object: obj_boss1dead
Sprite: spr_fboss_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{
image_speed = 0.25;
}

Sprite: spr_explosion
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
{

Information about object: obj_controller


Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

image_speed = 0.5;
}

Key Press Event for N-key Key:


if next room exists
go to next room with transition effect <no effect>

Other Event: Animation End:

26

execute code:
{
if (global.finish == true)
{
show_message('Kendrick: No....');
show_message('Kendrick: At least... I have saved the
world...');
sound_play(snd_death);
obj_controller2.alarm[1] = 60;
instance_destroy();
with(obj_boss1dead)
{
set Alarm 0 to 60
execute code:
check = 2;

Alarm Event for alarm 0:


execute code:
{
alarm[0] = 60;
with(obj_heroFB)
{
check2 = distance_to_object(obj_event1);
if (check2 <= 300 || distance_to_object(obj_event2) <= 300)
{
n = irandom(6);
nearest =
instance_nearest(obj_heroFB.x,obj_heroFB.y,obj_hindrance);
nearest1 =
instance_nearest(obj_heroFB.x,obj_heroFB.y,obj_hindrance2);
// t1 = min(obj_heroFB.x-32,room_width-obj_heroFB.x-32);
// t2 = min(obj_heroFB.y-32,room_height-obj_heroFB.y32,abs(obj_heroFB.y-nearest.y),abs(obj_heroFB.ynearest1.y));
obj_controller2.check = n;
// hx = random_range(-t1,t1);
// hy = random_range(-t2,t2);
hx = random_range(1,min(100,x,room_width-x));
hy = random_range(1,min(100,y,room_height-y));
switch (n)
{
case 2:
instance_create(obj_heroFB.x+hx,obj_heroFB.y+hy,obj_stimpa
ck);
exit;
case 1:
instance_create(obj_heroFB.x+hx,obj_heroFB.y+hy,obj_heart2
);
exit;
}
}

Key Press Event for P-key Key:


if previous room exists
go to previous room with transition effect <no effect>
Key Press Event for R-key Key:
restart the current room with transition effect <no effect>
Information about object: obj_controller2
Sprite: sprite9
Solid: false
Visible: true
Depth: -1000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
Draw Event:
jump to position (view_xview[0],view_yview[0]+448)
at relative position (0,0) draw image -1 of sprite spr_panel
at relative position (80,2) draw image 0 of sprite
spr_hero_down
at relative position (130,5) draw the value of: lives
draw rectangle with relative vertices (140,7) and
(140+global.health ,22), filled
set the drawing color to 255
set the font for drawing text to font0 and align right
at relative position (585,2) draw the value of score with caption
Score:
Information about object: obj_heart
Sprite: spr_heart
Solid: false
Visible: true
Depth: 10000000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Collision Event with object obj_heroFB:
execute code:
{
global.health = max(100,global.health+20);
instance_destroy();
}
Information about object: obj_heart2
Sprite: spr_heart
Solid: false
Visible: true
Depth: 1000000
Persistent: false

27

else exit;
}
}

Parent: <no parent>


Mask: <same as sprite>
Create Event:
set Alarm 0 to 90

Alarm Event for alarm 1:


execute code:

Alarm Event for alarm 0:


destroy the instance

{
show_message('Gratz! You win!!!!!');
highscore_show(score);
}
Information about object: obj_heroFB
Sprite: spr_hero_down
Solid: false
Visible: true
Depth: 100
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:

Collision Event with object obj_heroFB:


execute code:
{
global.health = max(100,global.health+20);
instance_destroy();
}

execute code:
{
show_message('Kendrick: Guess I have to continue on my
own then, that demon must be near here...');
}

{
show_message('BOOM!');
show_message('Leo: Hang on Kendrick, an asteroid hit
us!');
show_message('Leo: Arggggg');
show_message('A little bit later');
show_message('Kendrick: Leo? Damn it, he is dead...');
alarm[4]=30;
hurt = false;
shoot = true;
interval = 20;
check2 = 0;
}

Alarm Event for alarm 0:


execute code:
{
hurt = false;
}

Alarm Event for alarm 1:


execute code:
{
shoot = true;
}

End Step Event:


execute code:
{
switch (direction)
{
case 0:
sprite_index = spr_hero_right;
break;
case 90:
sprite_index = spr_hero_up;
break;
case 180:
sprite_index = spr_hero_left;
break;
case 270:
sprite_index = spr_hero_down;
break;
}
if (global.health == 0)
{
lives -= 1;
global.health = 100;
x = xstart;
y = ystart;
sound_play(snd_death);
with(obj_hindrance)
{
check = false;
sprite_index = sprite15;

28

visible = false;
solid = false;
}
with(obj_hindrance2)
{
check = false;
sprite_index = sprite15;
visible = false;
solid = false;
}
with(obj_lever)
{
x = xstart;
}
with(obj_trigger)
{
instance_destroy();
}

Alarm Event for alarm 2:


execute code:
{
interval = 20;
}

Alarm Event for alarm 3:


set variable interval to 20
Alarm Event for alarm 4:
}
if (lives == 0)
{
show_message('Oops :">');
room_restart();
}

Keyboard Event for <Up> Key:


execute code:
{

Collision Event with object obj_wall:


execute code:

if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 90;
sprite_index = spr_hero_up;
image_speed = 0.25;
}

{
speed = 0;
}

Collision Event with object obj_enemy:


execute code:
{
if (hurt == false)
{
sound_play(snd_hurt);
hurt = true;
alarm[0] = 60;
global.health = max(global.health - 20,0);
}
else exit;

Keyboard Event for <Right> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 0;
sprite_index = spr_hero_right;
image_speed = 0.25;
}

Keyboard Event for <Down> Key:


execute code:
{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 270;
sprite_index = spr_hero_down;
image_speed = 0.25;

Keyboard Event for <no key> Key:


execute code:

Other Event: Room Start:

29

if ( !place_snapped(32,32) ) exit;
speed =0;
image_speed = 0;
}

execute code:
{
lives = 3;
}

Keyboard Event for <Left> Key:


execute code:

Key Press Event for <Space> Key:


execute code:

{
if ( !place_snapped(32,32) ) exit;
speed = 4;
direction = 180;
sprite_index = spr_hero_left;
image_speed = 0.25;
}

alarm[1] = interval;
}

{
if (shoot)
{
sound_play(snd_laser);
action_create_object_motion(obj_hbullet,x,y,
10,direction);
shoot = false;
Parent: <no parent>
Mask: <same as sprite>

}
Create Event:
set Alarm 0 to 90
Information about object: obj_static
Sprite: spr_hero_up
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Alarm Event for alarm 0:


destroy the instance
Collision Event with object obj_heroFB:
set variable obj_heroFB.interval to 10
set variable obj_heroFB.alarm[3] to 90
destroy the instance
Information about object: obj_lever

Create Event:
set the sprite to spr_hero_up with subimage 0 and speed 0

Information about object: obj_hbullet


Sprite: spr_bullet2
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Collision Event with object obj_bgun:
play sound snd_metalclang; looping: false
destroy the instance
Collision Event with object obj_wall:
destroy the instance

Sprite: sprite18
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Alarm Event for alarm 0:
display message: ???: Ah Kendrick, I've been waiting for you
for a long time...
display message: Kendrick: ...
display message: ???: Your fate ends here, any last words?
display message: Kendrick: Only one of us shall live after this,
and it's not you!
Alarm Event for alarm 1:
display message: Kendrick: You're not gonna get away this
time!
display message: ???: ...

30

Collision Event with object obj_wisp:


execute code:
{
score += 20;
with(other)
{ instance_destroy(); }
instance_destroy();
}
Information about object: obj_stimpack
Sprite: spr_stimpack
Solid: false
Visible: true
Depth: 1000000
Persistent: false
t = instance_number(obj_fboss);
obj_camera.dis = 150;
if (t == 1)
{instance_create(obj_fboss.x,obj_fboss.y+120,obj_spawn);}
t = instance_number(obj_fboss2);
if (t == 1)
{instance_create(obj_fboss2.x,obj_fboss2.y+120,obj_spawn);}
instance_create(x,y-100,obj_trigger);
with(obj_hindrance)
{
sprite_index = spr_block1;
visible = true;
check = true;
solid = true;
}
with(obj_hindrance2)
{
sprite_index = spr_block2;
visible = true;
check = true;
solid = true;
}
x = 100000000000;
}
}

Collision Event with object obj_heroFB:


execute code:
{
if (distance_to_object(obj_fboss) <= 600 ||
distance_to_object(obj_fboss2) <= 600)
{
if (distance_to_object(obj_fboss) <= 600 &&
instance_number(obj_event1) <= 1)
{
alarm[0] = 20;
instance_create(x,y-100,obj_event1);
}
if (distance_to_object(obj_fboss2) <= 600 &&
instance_number(obj_event2) <= 1)
{
alarm[1] = 20;
instance_create(x,y-100,obj_event2);
}
execute code:
{
image_speed = 0.5;
}

Other Event: Animation End:


destroy the instance
for all obj_boss1dead: destroy the instance
play sound snd_demon; looping: false

Information about object: obj_FinalBoss


Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Alarm Event for alarm 0:
play sound snd_FinalBoss2; looping: false

Information about object: obj_globalvar


Sprite: sprite_island2
Solid: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:

Other Event: Room Start:


play sound snd_FinalBoss; looping: true
set Alarm 0 to 5490
Information about object: obj_event1
Sprite: spr_block2
Solid: false
Visible: false
Depth: -10000
Persistent: false

31

Parent: <no parent>


Mask: <same as sprite>

{
global.health = 100;
global.finish = false;

Information about object: obj_event2

}
Information about object: obj_fog
Sprite: spr_fog
Solid: false
Visible: true
Depth: -2
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
set Alarm 0 to 30
Alarm Event for alarm 0:
execute code:
{
show_message('???: You will come with me...');
alarm[1] = 30;
}

Alarm Event for alarm 1:


execute code:
{
instance_create(obj_boss1dead.x,obj_boss1dead.y,obj_fireball
2);
global.finish = true;
}

Step Event:
with a chance of 1 out of 50 do not perform the next action
create instance of object obj_rain at position (0,0)

Information about object: obj_rain


Sprite: spr_rain

Sprite: spr_block2
Solid: false
Visible: false
Depth: -10000
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: obj_rainmaker


Sprite: <no sprite>
Solid: false
Visible: false
Visible: false
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Ending:
Information about object: object_plane_end
Sprite: spr_plane_end
Solid: false
Visible: true
Depth: -100
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Keyboard Event for <Space> Key:
if can_shoot is larger than 0
create instance of object self at relative position (14,-16)
create instance of object self at relative position (-14,-16)
set variable can_shoot to -10
Keyboard Event for <Left> Key:
if x is larger than 40
jump relative to position (-4,0)
Keyboard Event for <Up> Key:
if y is larger than 40
jump relative to position (0,-2)
Keyboard Event for <Right> Key:
if x is smaller than room_width-40
jump relative to position (4,0)
Keyboard Event for <Down> Key:

32

Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

if y is smaller than room_height-120


jump relative to position (0,2 )

Create Event:
jump to a random position with hor snap 0 and vert snap 0
start moving in directions 010000000 with speed set to 35
set Alarm 0 to 60

Sprite: spr_planet_end
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Alarm Event for alarm 0:


destroy the instance
Information about object: obj_trigger
Sprite: spr_torch
Solid: false
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Information about object: obj_son
Sprite: spr_son
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: obj_leo_end


Sprite: spr_leo_end
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Information about object: obj_soldier_end
Sprite: spr_soldier_end
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Information about object: obj_hero_end

Information about object: obj_planet_end

Information about object: obj_wife


Sprite: spr_wife
Solid: false
Visible: true
Depth: 0
set Alarm 0 to 10
Alarm Event for alarm 0:
execute code:
{
switch(room_caption)
{
case "Final1":
sound_play(snd_ending);
show_message('And so, our "hero" chooses to ignore
the Earth and go to the planet inhabited by human...');
transition_kind = 21;
room_goto(Final2);
break;
case "Final2":
show_message('But it turns out, your family is already
here...');
show_message('Kendrick: I knew it, that old dude lied
to me! He will regret that...');
show_message('.... Any how, you and Leo are now
separated, you become the Butcher of Blaviken by hunting
monsters');
transition_kind = 21;
room_goto(Final3);
break;
case "Final3":
show_message(' While Leo, who is now the admiral of
Twin Dragon Fleet, continue his battle to take back the Earth');
transition_kind = 21;
room_goto(Final4);
break;
case "Final4":
show_message(' But it is not yet the end of story... He
is still out there, watch every of your steps...');
show_message(' Congrats, you win!');
if (show_question('Do you want to retry the room and

33

Sprite: spr_hero_end
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

choose another ending?'))


{
transition_kind = 21;
room_goto(Stage3);
}
else highscore_show(score);
break;
}

Information about object: obj_story


Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
Parent: <no parent>
Mask: <same as sprite>
Collision Event with object obj_explorer:
execute code:
{
score += 50;
instance_destroy();

Information about object: obj_collectible


Sprite: sprite_treasure1
Solid: false
Visible: true
Depth: 0
Persistent: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:

Misc:
Information about object: obj_help

Sprite: spr_help
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Draw Event:
jump to position (obj_heroFB.x,obj_heroFB.y - dis)

dis = 100;

Mouse Event for Left Button:


show the game info
Information about object: obj_start
Sprite: spr_start
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Information about object: obj_quit


Sprite: spr_quit
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Mouse Event for Left Button:
end the game
Information about object: obj_controller_intro
Sprite: <no sprite>
Solid: false
Visible: true

34

Mouse Event for Left Button:


go to next room with transition effect Create from center
Information about object: con>start
Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Depth: -100
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
play sound snd_main; looping: true

Timeline:
Information about time line: tl_shower_spawn

Create Event:
set time line timeline6 at position 0, Start Immediately and
Loop

Step 0:
execute code:

Information about object: obj_camera

Sprite: <no sprite>


Solid: false
Step 90:
execute code:
{
//

obj_bgun.interval = 60;
instance_create(obj_spawn.x,obj_spawn.y+32,obj_wisp);

obj_bgun.interval = 20
}

{
instance_create(x,y,obj_fireball);
}

Step 180:
execute code:
{
instance_create(x,y,obj_fireball);

Step 120:
execute code:

{
instance_create(obj_spawn.x,obj_spawn.y+32,obj_wisp);
}

Information about time line: time_lv1

Step 150:
execute code:
{
instance_create(obj_spawn.x,obj_spawn.y+32,obj_wisp);
}

Step 180:
execute code:
{
obj_bgun.interval = 80;
instance_create(obj_spawn.x,obj_spawn.y+32,obj_wisp);
}

Step 10:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 20:
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (0,0)

35

Information about time line: tl_fireball

Step 0:
execute code:
{
instance_create(x,y,obj_fireball);
}

Step 60:
execute code:
{
instance_create(x,y,obj_fireball);

Step 40:
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (150,0)
Step 60:
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (300,0)
Step 80:
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (450,0)

}
Step 100:
create instance of object object_enemy_basic at relative
position (0,0)
Step 120:
execute code:
create instance of object object_enemy_basic at relative
position (600,0)
Step 120:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 200:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 300:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)

create instance of object object_enemy_basic at relative


position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 600:
create instance of object object_enemy_basic at relative
position (0,0)
Step 700:
create instance of object object_enemy_basic at relative
position (150,0)
Step 800:
create instance of object object_enemy_basic at relative
position (300,0)
Step 900:
create instance of object object_enemy_basic at relative
position (450,0)
Step 1000:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative

36

create instance of object object_enemy_basic at relative


position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 400:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 500:
create instance of object object_boss at position (300,-50)
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (450,0)
Step 1119:
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (450,0)
Step 1139:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1159:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1200:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative

position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1099:
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (300,0)
Step 1100:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (150,0)
Step 1339:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1400:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)

37

position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (300,0)
Step 1239:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1300:
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1600:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (150,0)
Step 1639:
create instance of object object_enemy_basic at relative
position (0,0)
Step 1700:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative

create instance of object object_enemy_basic at relative


position (0,0)
Step 1439:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1539:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)

Step 1839:
create instance of object object_enemy_basic at relative
position (300,0)
Step 1900:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 1939:
create instance of object object_enemy_basic at relative
position (450,0)
Step 2000:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (0,0)

38

position (600,0)
create instance of object object_enemy_basic at relative
position (300,0)
Step 1739:
create instance of object object_enemy_basic at relative
position (150,0)
Step 1800:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (300,0)
Step 2200:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (150,0)
Step 2300:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative

create instance of object object_enemy_basic at relative


position (450,0)
Step 2039:
create instance of object object_enemy_basic at relative
position (0,0)
create instance of object object_enemy_basic at relative
position (150,0)
create instance of object object_enemy_basic at relative
position (300,0)
create instance of object object_enemy_basic at relative
position (450,0)
create instance of object object_enemy_basic at relative
position (600,0)
create instance of object object_enemy_basic at relative
position (600,0)
Step 2100:

Information about time line: stage2shower

Step 0:
execute code:

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

Step 10:
execute code:

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

Step 20:
execute code:

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

39

position (600,0)
create instance of object object_enemy_basic at relative
position (0,0)
Information about time line: timeline1

Step 0:
set variable object_plane1.fr to 3
Step 300:
set variable object_plane1.fr to 1

Step 30:
execute code:

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

Step 40:
execute code:

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

Step 60:
execute code:

{
instance_create(x+39,y+5,obj_bossammo);
instance_create(x-39,y+5,obj_bossammo);
}

Step 50:
execute code:

{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);
instance_create(x-60,y+36,obj_bossammo);
}

Step 40:
execute code:

Information about time line: stage2shower2

Step 0:
execute code:

{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);
instance_create(x-60,y+36,obj_bossammo);
}

Step 10:
execute code:

{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);
instance_create(x-60,y+36,obj_bossammo);
}

Step 50:
execute code:

{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);

40

instance_create(x-60,y+36,obj_bossammo);
}
{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);
instance_create(x-60,y+36,obj_bossammo);
}

Step 20:
execute code:

{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);
instance_create(x-60,y+36,obj_bossammo);
}Step 30:execute code:

Step 60:
execute code:

{
instance_create(x+38,y+11,obj_bossammo);
instance_create(x-38,y+11,obj_bossammo);
instance_create(x+60,y+36,obj_bossammo);
instance_create(x-60,y+36,obj_bossammo);
}
Information about time line: tlBoss2
Step 210:
create instance of object object_boss2 at position (300,-50)

III/. Teams Diary:


(Remember, the purpose of all of this is to have fun and show off your passion, no stress is allowed!)

Day 1: (1/12/2016)
_
We start our project.
_
We discuss about the outline of the game then come to the storyline.
_
We divide our team into two groups, one to make the poster and one to keep making the
storyline and gameplay.
Goal for the next day: complete storyline, start on building stage, finding sprites, artwork.

Day 2: (1/13/2016)
Discussion about what sprites we need and find/make it.

MILLARD DID THE


POSTER!!! XDDDDDDD
_
_

Captains comment: Very nice :>


Nice, got our poster finish, it looks clean and beauuuuutiful!
Schaures makes some sprites, very good!
Goal for the next day: keep working on the sprite, finding the sound and music.

Day 3: (1/14/2016)

41

Discuss about what sound we will need then find it.


Goal for the next day: finish working on the sprite, agree on the poster, start making stages.

Day 4: (1/15/2016)
Begin the stage designing process:
(somebody seems to be missing in this list wonder who it is)
Stage 1: Nesbitt
Stage 2: Grant.
Stage 3: Andrea, Millard
Stage 4: Final boss + Ending: Phan
Goal for the next day: keep working on the stage. (hope that we will finish some of them).

_
_

Extra: (1/16-18/2016)
Finding the materials for the commercial and ideas for the AIs scripts.
Finish the Trailer and most scripts for the AI. The font for the text is not very good.

Day 5: (1/19/2016)
_
Keep working on the stages, the final stage and the space battle stage (stage 4 and 2)
seem to be finished, the progress is good. The final stage AI seems to have a lot of bug in the
random spawning pick up, boss movement and timeline.
Goal for the next day: finish all the stages and start debugging

Day 6: (1/20/2016)
_
Continue our work on stages, stage 3 is completely done, stage 2 and 4 looks ok, needs
little bit of polishing. Poster is ready to be printed, SCC is being built! The random spawning and
boss movement on stage 4 are fixed!
Goal for the next day: Complete the stages, start the debug.

_
_

Day 7: (1/21/2016)
Finally, we finish the game, time to debug!
Therere still some minor bugs and the cinematic transitions seem unnatural.
Goal for the next day: Kill all the bugs, fix those transitions, start our work on presentation.

Day 8: (1/22/2016)
_
Done, all done. Time to start making improvement on the animation, transition and finish
the Engineering Notebook + Presentation.
_
Everyone in the team seems to be satisfied with what we have done, great job team!
Goal for the next day: Finish the Presentation and Print out the Engineering Notebook!!!

42

Characters, Leo.

Pick up, Heart.

Types of Bullet.

Fireball.

Explosion.

43