I think that you can have multiple signatures for the CharacterApplyStatus name.
ie. you can have
CharacterApplyStatus((CHARACTER)Character,(STRING)Status,(REAL)Duration)
and
CharacterApplyStatus((CHARACTER)Character,(STRING)Status,(REAL)Duration,(INT)Force)
which are separate definitions.

When you assert CharacterApplyStatus(_Player,"STUNNED",10.0), you're actually using the first definiton, however the game engine itself only reacts to the second one.

Code
PROC
CharacterApplyStatus((CHARACTER)_Character,(STRING)_Status,(REAL)_Duration)
THEN
CharacterApplyStatus(_Character,_Status,_Duration,0);


This helper proc essentially bridges the 3-parameter and the 4-parameter definitions, ie. asserting the 3-parameter CharacterApplyStatus asserts the 4-parameter CharacterApplyStatus.