Clone wiki

ecwolf / Home

Welcome

Welcome to the ECWolf project for Wolf3d modders on Discord! This is a fork of Blzut3's ecwolf.

The goal is to have new features merged back into the ecwolf project and released officially.

This page should be read in conjunction with Blzut3's ecwolf wiki.

Decorate

Action flags

Actor flags can be enabled and disabled using existing API A_ChangeFlag.

STATUSBAR

Enable FL_STATUSBAR to cause an actor to be rendered into the status bar. Use A_SetPicXY to control its precise location on the screen.

Action Functions

A_Explode

A_Explode [(int damage[, int radius[, int flags[, bool alert[, int fulldamageradius[, string damagetype = ""]]]]])]

Deals damage to all actors within a given radius of the caller. Damage drops off linearly after the fulldamageradius is passed. The only valid flag is XF_HURTSOURCE which is on by default and allows the explosion to damage the source (the source isn't the same as the caller). For example a missile without this flag will not damage the actor that fired the missile. Enabling alert will allow the explosion to wake up nearby enemies. Set damagetype to inflict actors with a specific damage type.

See Damage type actor class for more on how to add your own damage types.

A_RadiusWake

A_RadiusWake[(int radius)]

Looks for a shootable actor in the near vicinity, no further than the specified radius. If no radius is supplied it defaults to 128 which corresponds to one tile.

If found the Radius Wake state will be triggered.

A_SetPicXY

A_SetPicXY[(int picX, int picY)]

An actor with the STATUSBAR flag enabled can call this function to control where it is rendered on the screen. The provided coordinates will correspond to the lower left corner of the rendered texture.

The top left screen coordinate is (0,0). The bottom right is (320,200).

This API need only be called once, probably within its Spawn state, to specify where in the status bar it should be rendered.

Actor Properties

Actor damage resistance

You may reduce the effect of certain types of damage by adding the damageresistance actor property. The first parameter of this property specifies a damage type, the second a percentage. As an example the line below gives an actor 50% resistance to fire damage.

damageresistance "FireDamage", 50

Weapon damage type

Weapons may be assigned a predefined damage type. The damage type affects:

  1. The amount of damage dealt by a weapon.
  2. The death state triggered by the weapon when it kills an actor.

As an example, the actor property below will assign the "FireDamage" damage type to a weapon.

weapon.damagetype "FireDamage"

See Damage type actor class for more on how to add your own damage types.

Actor States

Damage Death states

An actor may define death states for different damage types. If this is not provided ECWolf will trigger the existing Death or XDeath state.

Place the name of the damage type after the state name with an underscore separating them. Here is an example:

Death_FireDamage:
    GARD K 7.5 A_Fall
    //GARD L 7.5 A_Scream
    GARD M 7.5
    GARD N -1
    stop

See Damage type actor class for more on how to add your own damage types.

Radius Wake state

An actor using the A_RadiusWake action will transition to the RadiusWake state.

Actor Classes

Damage type actor class

This actor defines damage types. Any actor inheriting directly from this class is a new damage type.

actor Damage : Inventory native
{
}

Here is an example of how to inherit from this class to define a new damage type.

actor FireDamage : Damage
{
}

MapInfo

Parallax sky textures

To enable parallax sky for a map you need to add a property called parallaxsky and specify for it one or more parallax sky texture names. It is customary to provide exactly 16 textures for parallax sky. However ECWolf allows for any number of parallax sky texture tiles.

The Decorate for Wolf3d "MAP01" in mapinfo/wolf3d.txt might appear as follows when parallax sky is present:

map "MAP01"
{
    next = "MAP02"
    secretnext = "MAP10"
    floornumber = 1
    par = 90
    music = "GETTHEM"
    cluster = 1
    parallaxsky = "GSTONEA1", "GSTONEA2", "GSTONEB1", "GSTONEB2", "GSTFLAG1", "GSTFLAG2", "GSTHTLR1", "GSTHTLR2", "BSTCELA1", "BSTCELA2", "GSTEAGL1", "GSTEAGL2", "BSTCELB1", "BSTCELB2", "BSTONEA1", "BSTONEA2"
}

Semi-transparent ceiling support for parallax sky

Semi-transparent ceiling texture support for parallax sky will be enabled by default. The transparent key defaults to FF. To override the transparent key you must specify the parallaxskyceilcolor parameter in gameinfo, setting the green component to 1 and blue component to the custom color key. In the example below the default value (FF) is used in the parallaxskyceilcolor parameter.

gameinfo
{
    signon = "WLFSGNON"
    // ...
    quitmessages = "$ENDSTR01", "$ENDSTR02", "$ENDSTR03", "$ENDSTR04", "$ENDSTR05", "$ENDSTR06", "$ENDSTR07", "$ENDSTR08", "$ENDSTR09"
    parallaxskyceilcolor = "00 01 FF"
}

Updated