The language that compiles to ye olde DECORATE!
Take this example:
- Code: Select all • Expand view
class<Fatness, WalkDelay> ZombieGuy extends ZombieMan replaces ZombieMan {
set Radius to Fatness;
set XScale to Fatness;
label See {
x WalkDelay POSS A 1 A_Chase;
inject FatWalk;
x WalkDelay POSS B 1 A_Chase;
inject FatWalk;
x WalkDelay POSS C 1 A_Chase;
inject FatWalk;
x WalkDelay POSS D 1 A_Chase;
inject FatWalk;
Loop;
};
abstract macro FatWalk;
}
derive ZombieGuy::(80, 7) {
macro FatWalk {};
} as FatZombie;
derive ZombieGuy::(20, 2) {
macro FatWalk {
if (z == floorz) sometimes 70 TNT1 A 0 ThrustThingZ(0, 12, 0, 1);
};
} as ThinZombie;
This is what happens when that beauty goes through ZDCode II:
- Code: Select all • Expand view
Actor FatZombie : ZombieMan replaces ZombieMan
{
Radius 80
XScale 80
States {
See:
POSS A 1 A_Chase
POSS A 1 A_Chase
POSS A 1 A_Chase
POSS A 1 A_Chase
POSS A 1 A_Chase
POSS A 1 A_Chase
POSS A 1 A_Chase
POSS B 1 A_Chase
POSS B 1 A_Chase
POSS B 1 A_Chase
POSS B 1 A_Chase
POSS B 1 A_Chase
POSS B 1 A_Chase
POSS B 1 A_Chase
POSS C 1 A_Chase
POSS C 1 A_Chase
POSS C 1 A_Chase
POSS C 1 A_Chase
POSS C 1 A_Chase
POSS C 1 A_Chase
POSS C 1 A_Chase
POSS D 1 A_Chase
POSS D 1 A_Chase
POSS D 1 A_Chase
POSS D 1 A_Chase
POSS D 1 A_Chase
POSS D 1 A_Chase
POSS D 1 A_Chase
loop
}
}
Actor ThinZombie : ZombieMan replaces ZombieMan
{
Radius 20
XScale 20
States {
See:
POSS A 1 A_Chase
POSS A 1 A_Chase
TNT1 A 0 A_JumpIf(!(z == floorz), 4)
TNT1 A 0 A_Jump(76, 2)
TNT1 A 0 ThrustThingZ(0, 12, 0, 1)
TNT1 A 0
TNT1 A 0
POSS B 1 A_Chase
POSS B 1 A_Chase
TNT1 A 0 A_JumpIf(!(z == floorz), 4)
TNT1 A 0 A_Jump(76, 2)
TNT1 A 0 ThrustThingZ(0, 12, 0, 1)
TNT1 A 0
TNT1 A 0
POSS C 1 A_Chase
POSS C 1 A_Chase
TNT1 A 0 A_JumpIf(!(z == floorz), 4)
TNT1 A 0 A_Jump(76, 2)
TNT1 A 0 ThrustThingZ(0, 12, 0, 1)
TNT1 A 0
TNT1 A 0
POSS D 1 A_Chase
POSS D 1 A_Chase
TNT1 A 0 A_JumpIf(!(z == floorz), 4)
TNT1 A 0 A_Jump(76, 2)
TNT1 A 0 ThrustThingZ(0, 12, 0, 1)
TNT1 A 0
TNT1 A 0
loop
}
}
Yes, I know – the output code is quite cryptic, but you're not meant to touch that!
Grab It!
The source code is on GitHub. It is advised to install it via Python and pip - it is cross-platform, but it is Python, and thus requires Python to be run. pip will install dependencies automatically. A proper GUI (to configure and execute project builds) is planned, alongside batteries-included Windows binaries.