Update von efun-Manpages aus Driversourcen.
Aktualisiert manpages, welche wenig oder nicht vom
MG modifizier wurden.
Change-Id: If70b4fc27cfd38cb9e98cb48328a48731969a76f
diff --git a/doc/efun/clone_object b/doc/efun/clone_object
index f622bef..3b6734f 100644
--- a/doc/efun/clone_object
+++ b/doc/efun/clone_object
@@ -1,23 +1,71 @@
-SYNOPSIS:
+SYNOPSIS
object clone_object(string name)
+ object clone_object(object template)
-DESCRIPTION:
- Clone a new object from definition name, and give it a new unique
- name. Return the new object.
-
- The original, called blue print, used for cloning, should not be
- used in the game, only be used for cloning. The cloned objects
- contain only the data but the blue print also the function code.
- The blue print is the one without a unique number at the end of
- the object's object_name(). The clone_object() function never
- returns a blue print.
-
- Note that the pathname must be complete, which means there are no
- relative paths allowed.
+BESCHREIBUNG
+ Clont ein neues Objekt aus der Definiton <name> oder alternativ aus
+ dem Objekt <template>. In beiden Faellen wird dem Clon ein
+ individueller Name zugeordnet, dann wird der Clon zurueck gegeben.
-EXAMPLE:
- object torch;
- torch = clone_object("/obj/torch");
+ Das Original, Blueprint genannt, wird nur fuer das Clonen verwendet
+ und sollte deshalb nicht im Spiel genutzt werden. Die geclonten
+ Objekte enthalten nur Daten, der Blueprint hingegen auch den
+ Funktionscode.
-SEE ALSO:
- destruct(E), move_object(E), uids(C)
+ Den Blueprint erkennt man daran, dass er keine Nummer im Objektnamen
+ traegt. clone_object() liefert niemals einen Blueprint zurueck.
+
+ Wenn der Blueprint existiert und einen heart_beat() aufweist, schaltet
+ clone_object() diesen aus.
+
+ Die Pfadangabe muss komplett sein. Relative Pfade sind nicht gestattet.
+ Wenn strikte EUIDs gefordert werden, muss das clonende Objekt eine
+ EUID != 0 haben.
+
+
+ -- Variablen Initialisierung --
+
+ Allgemein werden die Variablen in Blueprints und Clones gleichermassen
+ durch Aufruf der internen lfun __INIT() initialisiert.
+
+ Ist allerdings das #pragma share_variables in Effekt (entweder
+ explizit im Objekt angegeben, oder als allgemeine Laufzeitoption),
+ werden die Werte fuer die Klonvariable aus den _aktuellen_ Variablen
+ der Blueprint kopiert.
+
+ Variablen ohne explizite Initialisierung sind hiervon unbetroffen und
+ werden stets auf 0 gesetzt.
+
+
+BEISPIELE
+ // Clone eine Fackel (Name des Files nicht im Compat Format)
+ object fackel;
+ fackel = clone_object("/obj/fackel");
+
+ // Clone zwei Schluessel (Name des Files im Compat Format)
+ object key1, key2;
+ key1 = clone_object(load_object("obj/key"));
+ key2 = clone_object(key1);
+
+ // Create a specialized weapons blueprint.
+ --- std/weapon.c: ---
+ #pragma share_variables
+ int weapon_class = 1;
+
+ --- broadsword.c: ---
+ inherit "/std/weapon";
+
+ int create() {
+ weapon_class = 2;
+ replace_program("/std/weapon");
+ }
+
+
+GESCHICHTE
+ Modifiziert in LDMud 3.2.6: es werden auch Objekte als Argument
+ akzeptiert.
+ LDMud 3.3.378 fuehrte das pragma share_variables ein.
+
+SIEHE AUCH
+ blueprint(E), clonep(E), destruct(E), clones(E), load_name(E),
+ load_object(E), move_object(E), uids(C), program_name(E), pragma(LPC)