Jeffrey Takes to the Air
------------------------

#Author

Game design and code by: Dave B Stevens (Reprisal) - www.davebstevens.com/jeffrey-takes-to-the-air

#Testing

Many thanks to Chris Stevens for his testing during the Jam and input to the game design.

#Theme

Game Jam 57 Theme: "Something Borrowed" - Jeffrey's magical abilities are based on Borrowing. His fighter's engine borrows power from the constant storms, as do his lightning attacks. There is a brief themed backstory at the end of this readme.txt.

#Controls Summary

Keyboard:
SPACE - Centre the screen on your current plane
TAB - Move to the next plane and centre it on the screen
A,S,W,D (or arrow keys) - move the map around
M - change the size of the minimap (press M repeatedly to cycle through 3 options)
U - Undo card selection

Mouse:
Left click and drag the map to move around.
Left click and drag cards as instructed.
You can't currently click on the minimap.

#Tutorial

The objective is to shoot down the enemy plane. Player 1's plane is green and Player 2's is red. You can see them on the minimap (you can toggle through minimap modes by pressing M repeatedly). 

You can left click and hold on the map to drag it around. You can also jump between planes by pressing TAB.

Each turn is split into 4 phases:

1. Planning Phase - You can choose one of 5 standard movement cards (left turn, left bank, straight, right bank and right turn), or you can choose a movement card with special rules from your hand (movement cards are blue). The standard movement cards allow you to change your Speed or your Altitude (but not both). Cards played from your hand have fixed speed/altitude rules written on them.

There is a Green card labelled "Drag Movement Card Here". Click and drag a movement card over it. If you change your mind you can press U on the keyboard to Undo your selection. When finished click the yellow Next button. 

Because currently the only mode is "Two Player's on the same device", there is a privacy screen which appears between player's turns so that they can't see each others cards. Single player modes will be added which won't need a privacy screen.

Once both player's have completed their Planning Phase, the game moves to the Movement phase.

2. Movement Phase - For each player, the game previews your movement, you press ENTER to move, the plane moves - with propellor noise (which needs to be louder), and you click Next. Planes don't collide (by design).

3. Combat Phase - If the enemy plane is within range - shown as a cone 45-degrees each side of straight ahead (drawn on the screen in white) then you can attack. Select a combat card from your hand (combat cards are yellow), and drag it to the green card on the left. You can press U to Undo a mistake. Click Next when ready.

Combat results will be shown. Both planes start with 5 HP. Combat cards do different amounts of damage (written on the card). NB: You cannot hit a plane that is two levels of altitude different to yours e.g., if you're at Alt 1 and they are at Alt 3.

4. Cards Phase - You may discard any or all of the cards in your hand (by dragging them to the discard pile, to the right of your hand). New cards will be drawn at the start of the Planning Phase. If you run out of cards your discards are shuffled back into your deck.

Tip1: Both player's aircraft have a maximum speed of 4 and max altitude of 3. Your minimum for both is 1. The game won't let you exceed these limits even if you play a card that should force one or both of these parameters outside of it.

Tip2: At any time you can mouse over either aircraft to see it's current speed, altitude and HP. 

I hope you enjoy Jeffrey Takes to the Air. If so, read the Menu > Roadmap and consider becoming a beta tester for the Steam release in mid 2026. There's a lot of features and content to be added. Thanks for playing!


#Sprites

Jeffrey               based on image from PNGtree.com              Free to use
Plane Type 1          based on Bipolar from Unlucky Studios	   Free to use
                          http://www.unluckystudio.com
Clouds                by Freepik (no author)                       Creative Commons License CC0
                          https://www.freepik.com/

#Background Images

Aerial Map            by Barnabas Davoti (Unsplash)

#Sound

Game music             "The Descent" by Kevin MacLeod              Creative Commons License CC0 4.0
Main Menu music        "Hero Down" by Kevin MacLeod                Creative Commons License CC0 4.0
                                              https://incompetech.com/music/royalty-free/music.html 
Pre & Post Game music  Parts of "The Last Skyhawk" by the Author
Player explosion       from Splice                                 Licensed
Other sounds           by Kenney (kenney.nl)                       Creative Commons License CC0 1.0

#Pre-existing Code

Text Input Box tools    Rezonator Tools                            Creative Commons License CC0
Card Handling Tools     Based on Gamemaker Solitaire Template      Free to use

Some tools were written by the author prior to the game jam including code for managing: card handling, 
buttons, menu objects, slider objects, dropdown text objects, instructions object, settings objects and 
hiscore tools. 

#AI Generated Assets

Logos and some aircraft graphics were AI created from my designs before the jam. Most were then edited.


#Theme - brief backstory

Jeffrey looked up from the miniature tornado spinning between his paws and gazed at the horizon, where dark grey clouds churned in a slow, ominous dance. Bolts of lightning illuminated the sky before slamming into the earth with thunderous cracks. The storm between his hands pulsed in sync with each strike, its energy borrowed from the tempest above.

He gave a nod to his mechanic, who promptly opened the engine cover of the Honey Badger biplane fighter. Inside, the compartment was bare—save for a single shaft leading to the propeller. Jeffrey placed his hands into the hollow space and whispered the invocation taught by the Master Borrower, so many years ago.

The tornado slipped from his paws and coiled itself around the propeller shaft, which began to spin—slowly at first, then faster—until the shaft matched the storm’s furious rhythm. Jeffrey climbed into the cockpit, flashed a thumbs-up to his mechanic, and adjusted the pitch of the propeller. It bit the air, dragging the fighter forward towards the grass runway.

Time to go hunting!