Headshot!

From Esolang
Jump to: navigation, search

Headshot! is a language being developed by User:CrazySqueak. It was designed with the goal of looking like a log of actions taken in a shooter game.

Basics

Memory is represented by targets. These targets can store integer values (up to 2147483647), represented by the amount of bullets in them. Guns are used to modify the value of targets by shooting at them, but have to be reloaded. Every action takes time. Commands are input in the usual line-based system languages like Python use, and each command is separated by a newline.

Commands

Command Description
inventory Starts an inventory block. The inventory block is used to define what guns are available at the start, without taking time. Any commands other than has a and end inside an inventory block will be ignored.
has a <gun name>, <gun speed>, clip size <clip size> of <bullet type> Only able to be used in an inventory block. Defines a gun that is currently available. gun speed may be any of slow, steady, and fast. Any other speed makes the gun impossible to fire. Clip size defines how many bullets can fit in, and bullet type is the name of the bullet type used in the gun (i.e. LONG, or PELLET). The bullet type can be anything, and has no effect other than when retrieving bullets.
end Ends the inventory block.
sees <target name> Allocates a new target called target name. They will start with 0 bullets in them. Takes 0.1 seconds.
grabs a <gun name>, <gun speed>, clip size <clip size> of <bullet type> Adds a new gun. gun speed may be any of slow, steady, and fast. Any other speed makes the gun impossible to fire. Clip size defines how many bullets can fit in, and bullet type is the name of the bullet type used in the gun (i.e. LONG, or PELLET). The bullet type can be anything, and has no effect other than when retrieving bullets. Takes 1 second to execute.
aims at <target> Aim at an existing target, meaning any shots fired will hit them. Takes 1 second.
pulls out <gun> Switch to a gun in possession. Any shots fired will be using this gun. Takes 0.5 seconds.
BANG! Shoot at the target if you are holding a slow gun. Fires 1 bullet, and takes 1 second.
Rat-tat-tat-tat You may use as many -tats as you like. Each tat fires 1 bullet, and takes 0.25 seconds. Only usable with steady guns.
Ratatatatatatata Like Rat-tat above, but for fast guns. Each ta fires 3 bullets. Takes 0.05 seconds per bullet.
reload Reloads a gun back to full ammo. Takes 1.5 seconds.
kills <target> Kills a target, clearing their value from memory, and making them unusable. Before they die, prints the character at the unicode code-point corresponding to their value. Takes 0.2 seconds.
waits for <target> Takes input from the user and stores the codepoint of the first letter in target. Should only be used if target doesn't already exist.
drop <gun> Drops gun, removing it from existence. Takes 0.25 seconds
retrieve <target> Retrieves bullets that were shot into target, as long as they are the same type as the bullets the gun currently held fires. Lowers the target's value by 1, and increases the currently held gun's ammo by 1. Takes 0.5 seconds.
label <name> Sets the line as a label that may be gone to in the program using the "goto" command. Label commands are run before any other commands, meaning you can use a goto before a label.
goto <label> Goes to the line set as the label passed.
cgoto <opt 1> is <operator> compared to <opt 2> then goto <label> If the conditional opt 1 operator opt 2 is True, goto the line labelled as label. Opt 1/Opt 2 may be a number, or a target. If they are a target, the amount of bullets in them is used.

There are currently no conditional or iteration-related commands, however they might be implemented in a later update.

Examples

Hello World

inventory
    has an ASSAULT RIFLE, steady, clip size 15 of REGULAR
    has a MACHINE GUN, fast, clip size 100 of PELLET
end
sees MR H
sees MR E
sees MR L
sees MISS L
sees MR O
sees MR SPACE
sees MR W
sees MISS O
sees MR R
sees DR L
sees MR D
sees MR EXCLAMATION

aims at MR H
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR E
pulls out ASSAULT RIFLE
Rat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR L
pulls out ASSAULT RIFLE
Rat-tat-tat-tat-tat-tat-tat-tat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MISS L
pulls out ASSAULT RIFLE
Rat-tat-tat-tat-tat-tat-tat-tat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR O
pulls out ASSAULT RIFLE
Rat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR SPACE
pulls out MACHINE GUN
Ratatatatatatatatatata
reload
pulls out ASSAULT RIFLE
Rat-tat-tat
aims at MR W
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MISS O
pulls out ASSAULT RIFLE
Rat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR R
pulls out ASSAULT RIFLE
Rat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at DR L
pulls out ASSAULT RIFLE
Rat-tat-tat-tat-tat-tat-tat-tat-tat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR D
pulls out ASSAULT RIFLE
Rat-tat
reload
pulls out MACHINE GUN
Ratatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatatata
reload
aims at MR EXCLAMATION
pulls out MACHINE GUN
Ratatatatatatatatatata
reload
pulls out ASSAULT RIFLE
Rat-tat-tat-tat

kills MR H
kills MR E
kills MR L
kills MISS L
kills MR O
kills MR SPACE
kills MR W
kills MISS O
kills MR R
kills DR L
kills MR D
kills MR EXCLAMATION

Truth Machine

inventory
    has a BASTION, fast, clip size 300 of PELLET
    has an ASHE, steady, clip size 12 of REGULAR
end
waits for ALI-A
cgoto ALI-A is != compared to 48 then goto OUT1
goto OUT0

label OUT1
sees OUTPUT
aims at OUTPUT
pulls out BASTION
Ratatatatatatatatatatatatatatatata
reload
pulls out ASHE
Rat-tat
reload
kills OUTPUT
goto OUT1

label OUT0
kills ALI-A

External Resources

The official interpreter isn't publicly released yet.