Crates.io | rpg-compiler |
lib.rs | rpg-compiler |
version | 0.1.1 |
source | src |
created_at | 2022-01-23 16:25:13.972054 |
updated_at | 2022-01-24 22:42:18.053204 |
description | A compiler library for the rpg esoteric programming language |
homepage | |
repository | https://github.com/jomy10/rpg-lang |
max_upload_size | |
id | 519749 |
size | 78,371 |
RPG is an esoteric programming language
use rpg_compiler::{compile, compile_with_config, Config};
// Use one of the compile functions
let output = compile("main.rpg");
let output = compile_with_config("main.rpg", Config { max_char: 10, verbose: false });
The variable output will contained the rust code of the rpg program. This can then be written to a file and compiled using cargo.
Actors are either a character or a zombie. They have 2 variables called health and attack. They also have an inventory to hold items. The maximum amount of actors allowed per game (e.g. per program) is 10. Characters will disappear when they die (e.g. when their health is 0), but zombies won't disappear when their health is 0 or below. They need to be converted to a char
Characters can cast more spells, but can't have negative health, while zombies can have negative health.
Characters have 2 variables health and attack, both are unsigned 32-bit integers.
A character called "ash" with health of 5 and attack of 3:
char ash = (5, 3)
Zombies are actors that can have negative health (signed 32-bit integer). They can be converted to a regular character using the un_zombify spell.
zombie walker = (-4, 6)
Potions have 1 variable called healing and can be used to heal an actor. Actors buy these potions from merchants and need to buy them as many times as they will use the potion.
potion p = (5)
Spell books are used for casting different spells.
spellbook eucharidion = ()
Merchants sell items. Actors can buy these items and will hold them in their inventory.
merchant cabbage = ()
Actors buy items from merchants using buys
actor buys item from merchant
Actors can attack each other, this subtracts the attack of the attacking actor from the health of tha actor being attacked.
char a = (10, 3)
char b = (2, 5)
b attacks a
# a will now have 10 - 5 = 5 health
Actors can use items in their inventory.
potion p = (5)
char a = (5,0)
merchant m = ()
a buys p from m
a uses p
# a will now have 5 + 5 = 10 health
Characters can shout their health. This will output a new line.
char a = (1,0)
a shouts
a shouts
# output:
# 1
# 1
Characters can whisper their health. This will output without a new line.
char a = (1,0)
a whispers
a whispers
# output:
# 11
Characters can use spell books to cast spells. They are casting using a spellbook and the spell name is
followed by ()
or (param)
This will read whatever number the user inputs
input uses spellbook casting god_speech()
This will print the ASCII value of the health of the actor
char jeremy = (33,1)
spellbook eucharidium = ()
merchant cabbage_man = ()
jeremy buys eucharidion from cabbage_man
jeremy shouts eucharidion casting speak()
# output:
# !
The time warp performs the lines beneath it until it reaches the end
keyword, at which point it will go back to the
beginning and performs the lines again. To do this, it will require an offer. It will perform this loop until the offered
character has no health left.
The health of the character being consumed is subtracted at the end of the lines.
# We have 2 characters: david (5 health) and ella (5 health). David has a spellbook in its inventories
david uses spellbook casting time_warp(ella)
ella shouts
end
# Output:
# 5
# 4
# 3
# 2
# 1
Converts a character to a zombie.
james_brown uses spell_book casting un_zombify(zombie1)
When a character is confused, it will output its health - 1 when shouting or whispering.
steven uses spell_book casting confuse(other_char)
other_char shouts # Will output the other_char's health - 1 e.g. other_char = (1,2), so the output will be: 0
Characters can change the value of a potion
char sans = (6, 1)
potion p = (5)
sans buys p from merchant
sans uses spellbook casting create_potion(p)
sans uses p
sans shouts
# Output:
# 12 (6 + 6)
Shift swaps a character's health and attack.
char Ness = (2,1)
Ness uses spellbook casting shift()
Ness shouts
# Output:
# 1