A subset of ZDoom DECORATE
is supported.
- actor replacement is supported
- inheritance is supported
- most Doom actors are built-in
Definition of new actor with doomednum
12345:
actor newImp 12345
You can replace any built-in actor using classic decorate
definition:
actor newImp replaces DoomImp
You can create new actor with inherited values:
actor newImp : DoomImp
- you can not call original states using
super::
List of built-in special classes for inheritance:
- PlayerPawn
- PlayerChunk
- SwitchableDecoration
- RandomSpawner
- different behavior with
nomonsters
- use
ISMONSTER
flag as workaround
- different behavior with
- Health
- Inventory
- CustomInventory
- DoomWeapon
- use this for new weapons
- Ammo
- use this for new ammo
- you can mofify original status bar ammo counters, see config
- DoomKey
- BasicArmorPickup
- BasicArmorBonus
- PowerupGiver
- HealthPickup
Supported powerups for inheritance:
- PowerInvulnerable
- PowerInvisibility
- PowerIronFeet
- PowerLightAmp
- PowerBuddha
- PowerDoubleFiringSpeed
- PowerFlight
NOTE: Powerup inheritance is a bit shaky. It mostly works, but there are some edge cases. For example, any take inventory
action behaves differently than ZDoom.
List of supported flags:
floorclip
- ignored
noskin
- ignored
noblooddecals
- ignored
special
solid
shootable
nosector
noblockmap
ambush
justhit
justattacked
spawnceiling
nogravity
dropoff
pickup
noclip
slidesonwalls
float
teleport
missile
dropped
shadow
noblood
corpse
countkill
countitem
skullfly
notdmatch
ismonster
noteleport
randomize
telestomp
notarget
quicktoretaliate
seekermissile
noforwardfall
dontthrust
nodamagethrust
dontgib
invulnerable
buddha
nodamage
reflective
boss
noradiusdmg
extremedeath
noextremedeath
skyexplode
ripper
dontrip
pushable
cannotpush
puffonactors
spectral
ghost
thrughost
dormant
painless
iceshatter
dontfall
noicedeath
icecorpse
spawnsoundsource
donttranslate
notautoaimed
puffgetsowner
hittarget
hitmaster
hittracer
movewithsector
fullvoldeath
oldradiusdmg
bloodlessimpact
synchronized
dontmorph
dontsplash
thruactors
bounceonfloors
bounceonceilings
noblockmonst
dontcorpse
stealth
explodeonwater
canbouncewater
noverticalmeleerange
forceradiusdmg
nopain
noliftdrop
cantseek
inventory.quiet
inventory.ignoreskill
inventory.autoactivate
inventory.autoactivate
inventory.alwayspickup
inventory.invbar
inventory.hubpower
inventory.bigpowerup
inventory.neverrespawn
inventory.additivetime
inventory.noscreenflash
inventory.noscreenblink
inventory.untossable
weapon.noautofire
weapon.noalert
weapon.ammo_optional
weapon.alt_ammo_optional
weapon.ammo_checkboth
weapon.primary_uses_both
weapon.alt_uses_both
weapon.noautoaim
weapon.dontbob
weapon.wimpy_weapon
- ignored
weapon.meleeweapon
- ignored
List of supported properties:
spawnid
health
reactiontime
painchance
damage
- decorate expression can be used for exact damage or custom calculation
damagetype
- custom damage types can be defined in config
damagefactor
speed
radius
height
mass
gravity
cameraheight
fastspeed
vspeed
bouncecount
bouncefactor
species
telefogsourcetype
telefogdesttype
bloodtype
bloodcolor
- maximum of 255 unique blood colors
dropitem
amount
for item drops is ignoredamount
is only used for RandomSpawner
activesound
attacksound
deathsound
painsound
seesound
bouncesound
maxstepheight
maxdropoffheight
meleerange
scale
args
renderstyle
alpha
stealthalpha
translation
monster
projectile
states
- obviously
obituary
- ignored
hitobituary
- ignored
decal
- ignored
player.viewheight
player.attackzoffset
player.jumpz
player.viewbob
player.displayname
player.runhealth
player.soundclass
player.weaponslot
player.startitem
player.colorrange
player.crouchsprite
- ignored
inventory.amount
inventory.maxamount
inventory.interhubamount
inventory.icon
inventory.pickupflash
- ignored
inventory.respawntics
usesound
pickupsound
pickupmessage
althudicon
- ignored
weapon.selectionorder
weapon.kickback
weapon.ammouse
weapon.ammouse1
weapon.ammouse2
weapon.ammogive
weapon.ammogive1
weapon.ammogive2
weapon.ammotype
weapon.ammotype1
weapon.ammotype2
weapon.readysound
weapon.upsound
ammo.backpackamount
ammo.backpackmaxamount
armor.saveamount
armor.maxsaveamount
armor.savepercent
powerup.duration
powerup.type
powerup.mode
reflective
ortranslucent
orcumulative
- otherwise default value is used
powerup.color
powerup.strength
Limited support for DECORATE expressions is implemented.
- mathematical expression without brackets is supported
- logical AND / OR
- arithmetical AND / OR / XOR
- equality check
==
- inequality check
!=
- compare
<
>
<=
>=
- addition
- subtraction
- multiplication
- division
- modulo
- arithmetical negation
- NOTE: internal numeric precision is signed fixed point 22.10
- only
random
function
List of supported variables:
x
y
andz
angle
ceilingz
floorz
pitch
velx
vely
velz
alpha
args[0]
toargs[4]
health
height
radius
reactiontime
scalex
scaley
special
tid
threshold
waterlevel
mass
speed
Various action functions use constants in string form.
BEWARE: Defined constants have different values than in ZDoom.
Never use these outside intended function arguments!
List of supported action functions:
A_Lower
A_Raise
A_GunFlash
A_CheckReload
A_Light0
A_Light1
A_Light2
A_WeaponReady
A_ReFire
A_Pain
A_Scream
A_XScream
A_PlayerScream
A_ActiveSound
A_StartSound
slot
only valuesCHAN_BODY
CHAN_WEAPON
andCHAN_VOICE
are supportedvolume
must be se to 1attenuation
only valuesATTN_NORM
andATTN_NONE
are supportedpitch
andstartTime
is not supported
A_FaceTarget
- no arguments are supported
A_FaceTracer
- no arguments are supported
A_FaceMaster
- no arguments are supported
A_NoBlocking
- no arguments are supported
A_Look
A_Chase
- no arguments are supported
A_VileChase
A_SpawnProjectile
A_CustomBulletAttack
- only 7 arguments are supported; last is
flags
- only 7 arguments are supported; last is
A_CustomMeleeAttack
bleed
is ignored
A_VileTarget
A_VileAttack
A_FireProjectile
A_FireBullets
- only 7 arguments are supported; last is
range
- only 7 arguments are supported; last is
A_CustomPunch
- only 5 arguments are supported; last is
range
CPF_DAGGER
andCPF_STEALARMOR
is not supported
- only 5 arguments are supported; last is
A_BFGSpray
vrange
is ignored and should be set to32
flags
is not supported
A_SeekerMissile
SMF_CURSPEED
is not supported
A_SpawnItemEx
A_DropItem
dropamount
is ignored and should be set to0
A_Burst
A_SkullPop
A_FreezeDeath
A_GenericFreezeDeath
A_FreezeDeathChunks
A_SetTranslation
A_SetScale
- only one argument is supported
A_SetRenderStyle
A_FadeOut
- only one argument is supported
A_FadeIn
- only one argument is supported
A_CheckPlayerDone
A_AlertMonsters
- no arguments are supported
A_SetAngle
flags
are ignored and should be set to0
A_SetPitch
flags
are ignored and should be set to0
A_ChangeFlag
A_ChangeVelocity
A_ScaleVelocity
A_Stop
A_SetTics
A_RearrangePointers
flags
must be set toPTROP_NOSAFEGUARDS
A_BrainAwake
A_BrainSpit
- no arguments are supported
A_SpawnFly
- no arguments are supported
A_BrainDie
A_RaiseSelf
- no arguments are supported
A_KeenDie
A_Warp
- only 6 arguments are supported; last is
flags
- supported flags
WARPF_MOVEPTR
WARPF_USECALLERANGLE
WARPF_ABSOLUTEANGLE
WARPF_ABSOLUTEPOSITION
WARPF_ABSOLUTEOFFSET
WARPF_COPYVELOCITY
WARPF_COPYPITCH
WARPF_STOP
- only 6 arguments are supported; last is
A_SetArg
A_DamageTarget
- only 2 arguments are supported; last is
damagetype
- only 2 arguments are supported; last is
A_DamageTracer
- only 2 arguments are supported; last is
damagetype
- only 2 arguments are supported; last is
A_DamageMaster
- only 2 arguments are supported; last is
damagetype
- only 2 arguments are supported; last is
A_Explode
- only 5 arguments are supported; last is
fulldamagedistance
XF_EXPLICITDAMAGETYPE
is not supported
- only 5 arguments are supported; last is
A_SetHealth
A_GiveInventory
A_TakeInventory
flags
are ignored and should be set to0
A_SelectWeapon
- only
whichweapon
is supported
- only
A_Print
A_PrintBold
A_Jump
- only up to jump 9 destinations
A_JumpIf
A_JumpIfInventory
A_JumpIfHealthLower
A_JumpIfCloser
A_JumpIfTracerCloser
A_JumpIfMasterCloser
A_JumpIfTargetInsideMeleeRange
A_JumpIfTargetOutsideMeleeRange
A_CheckFloor
A_CheckFlag
A_MonsterRefire
Most line specials can be used as state functions.
BEWARE: ACE Engine does not check required number of arguments. Always test your DECORTE in GZDoom first!
Special case for Line_SetTextureOffset
line special:
Offsets have to be specified as doom fixed point
, that is, offset 16
has to be set as 16 * 65536
.
No change has to be specified as 32767 * 65536
.
BEWARE: Due to numeric precision limit, max positive offset is 31
and max negative offset is -32
!
BEWARE: You always have to set offset of all textures. Flags have to be either 7
or 15
.
TODO