#appendto

Mit #appendto kann man ein bereits existierendes Script einer Objektdefinition ändern ohne die Originaldatei ändern zu müssen. Zum Beispiel könnte ein Szenario Flints mit einem größeren Explosionsradius explodieren lassen ohne den ganzen Flint in das Szenario kopieren zu müssen.

Deklaration

#appendto [id]
A script can append itself to one or multiple existing scripts using the #appendto directive. Such script needs to be placed in System.ocg directory. Functions of the same name will overload functions in the target script. The original overloaded functions can still be called using inherited. #included scripts are not appended with #append, but #appended scripts are included by #include.
#appendto *
Durch Angabe von * anstelle eine id wird das Script an alle geladenen Definitionen angehängt.
Ein Script kann beliebig viele #appendto enthalten. Es wird aber immer selbst mit kompiliert. Dies ist besonders dann entscheidend, wenn benannte Locals oder Funktionsnamen aus dem Script, an das angehängt wird, verwendet werden.

Beispiel

#appendto WindBag

// This function will be "overwritten" in the original windbag.
// You can however call the original function by calling _inherited(...)
// You'll find this quite often in other scenarios. Just take a look at other
// scenarios that contain a System.ocg folder.
func FxIntReloadTimer(object target, proplist effect)
{
	// Make the windbag reload faster.
	var old_fill = fill_amount;
	var ret = inherited(target, effect, ...);
	if (fill_amount > old_fill)
		fill_amount += (fill_amount - old_fill) * 5;
	return ret;
}
Sven2, 2002-04
matthes, 2004-06
Günther, 2006-01