FUNKTION:
public varargs void
AddDropItem( mixed pfad, mixed chance, mapping props )
IMPLEMENTIERT IN:
/std/npc/items.c
ARGUMENTE:
pfad : Der Pfadname des zu clonenden Objektes als String oder ein
Array aus Strings. Wird ein Array angegeben, wird genau
eins (zufaellig) ausgewaehlt. Damit kann man verhindern,
dass 2 (oder mehr) bestimmte Objekte gleichzeitig gedropt
werden.
chance : (optional) Eine Chance in Prozent (!) mit der das ange-
gebene Objekt erzeugt wird. Die Angabe von Integern als
auch von Fliesskommazahlen (bis 1/100-stel Praezision) ist
moeglich. Moeglicher Wertebereich ist also 0.01 bis 100.0.
Folgende Standard-Defines existieren:
DROP_MIN_CHANCE : Kleinste moegliche Chance (0.01%).
DROP_MAX_CHANCE : Groesste moegliche Chance (100.0%).
DROP_ALWAYS : Objekt wird immer erzeugt, auch wenn
der P_MAX_DROPS damit ueberschritten
wird (siehe unten).
Alternativ zu einer Chance als Zahl kann auch eine Closure
angegeben werden, die beim Aufruf einen float-Wert zu-
rueckgeben muss. Die Closure wird mit 'path' als erstem
Argument aufgerufen, wenn das Objekt erzeugt wird. Dies
sollte jedoch nur im Ausnahmefall verwendet werden!
props : (optional) Ein Mapping mit Properties, die in dem er-
zeugten Gegenstand gesetzt werden. Dies kann zum Beispiel
fuer Units nuetzlich sein, um einen bestimmten P_AMOUNT
Wert zu setzen.
RÜCKGABEWERT:
Keiner.
BESCHREIBUNG:
Besiegte NPCs koennen mehr oder weniger nuetzliche Gegenstaende
besitzen, die sie verlieren sollen, sobald sie sterben. Mit dieser
Funktion kann man angeben, welche Objekte das sein sollen. Man kann
eine Chance angeben oder weglassen. Im letzteren Fall wird auto-
magisch ein Wert von DROP_MAX_CHANCE angenommen. Es koennen auch
beide Modi gemischt werden. Die maximale Anzahl an Gegenstaenden
kann man mit P_MAX_DROPS begrenzen (Standard: 3).
Den Klon-Modus kann man mit P_DROP_MODE einstellen (experimentell).
Standardeinstellung ist, dass das Drop-System nur dann verwendet
wird, wenn AddDropItem mindestens einmal aufgerufen wurde, oder
der Drop-Modus (P_DROP_MODE) entsprechend eingestellt wird. Die
Objekte werden zunaechst in P_DROP_ITEMS gesammelt und erst beim
Aufruf von CreateDropItems(L) erzeugt. Dieser Aufruf findet
normalerweise beim Sterben des NPC (Aufruf durch den Death-Handler)
statt. Wenn man bewirken moechte, dass die Gegenstaende sofort er-
zeugt werden, dann kann man CreateDropItems(L) auch selbst aufrufen.
Die MUDLib kennt selbst Standard-Objekte, die jeder NPC verlieren
kann, wenn die maximale Anzahl noch nicht erreicht ist. Ausserdem
koennen Objekte auch ueber eine globale Liste angemeldet werden.
Diese Objekte stehen aber immer hinter den individuell angemeldeten
zurueck. (Diese Modi sind derzeit noch nicht verfuegbar.)
DROPS MIT CHANCE:
Wird eine Chance angegeben, wird der jeweilige Gegenstand mit der
entsprechenden Chance erzeugt. Wurden mehrere Objekte mit
AddDropItem(L) angemeldet, werden maximal so viele erzeugt, wie mit
P_MAX_DROPS angegeben wurde. Standardeinstellung ist 3, das heisst
es werden standardmaessig bis zu (nie mehr als) 3 Gegenstaende
erzeugt. Die Anzahl der mit AddDropItem(L) angemeldeten Objekte hat
keinen Einfluss auf die Anzahl der erzeugten Gegenstaende. Es wird
auch niemals der gleiche Gegenstand mehrmals erzeugt, es sei denn
das gleiche Objekt wird mehrmals angemeldet.
ACHTUNG: Die angegebene Chance ein Objekt zu verlieren verringert
sich zusaetzlich, wenn mehr als P_MAX_DROPS Gegenstaende angemeldet
werden!
Beispiel:
// Maximal einen Gegenstand verlieren.
SetProp ( P_MAX_DROPS, 3 ) ;
// NPC verliert zu 20% einen Knueppel und zu 0.5% ein Bier (und
// ggf. ein weiteres Objekt aus der globalen Liste oder Standard-
// Drops).
AddDropItem ( "/obj/knueppel", 20.0 ) ;
AddDropItem ( "/obj/misc/bier", 0.5 ) ;
Eine spezielle Chance ist 'DROP_ALWAYS'. Wird dieser Wert angegeben,
wird das Objekt IMMER erzeugt, unabhaengig von der Anzahl an
Objekten oder ob P_MAX_DROPS bereits erreicht ist.
Beispiel:
// Maximal einen Gegenstand verlieren.
SetProp ( P_MAX_DROPS, 3 ) ;
// NPC verliert auf jeden Fall die Fackel, zu 20% einen Knueppel,
// zu 10% vier Opale und zu 0.5% ein Bier. Insgesamt verliert
// der NPC aber nie mehr als 3 Objekte, da das mit P_MAX_DROPS
// eingestellt wurde.
AddDropItem ( "/obj/fackel", DROP_ALWAYS ) ;
AddDropItem ( "/obj/knueppel", 20.0 ) ;
AddDropItem ( "/obj/coins/opal", 10.0, ([P_AMOUNT : 4]) ) ;
AddDropItem ( "/obj/misc/bier", 0.5 ) ;
DROPS OHNE CHANCE:
Wenn man keine Chance angibt, wird fuer den Gegenstand eine Maximal-
Chance (100%) verwendet. Wurden jedoch mehrere Objekte mit
AddDropItem(L) angemeldet, werden jedoch maximal so viele erzeugt,
wie mit P_MAX_DROPS angegeben wurde. Will man sicherstellen, dass
alle angemeldeten Objekte auch erzeugt werden, muss man P_MAX_DROPS
auf die Anzahl an AddDropItem() einstellen oder DROP_ALWAYS als
Chance setzen (siehe oben).
Beispiel:
// Maximal 3 Items verlieren.
SetProp ( P_MAX_DROPS, 3 ) ;
// NPC verliert immer ein Seil (und ggf. bis zu 2 weitere Objekte
// aus der globalen Liste oder Standard-Drops).
AddDropItem ( "/obj/seil" ) ;
GLOBALE-DROPLISTE:
Gegenstaende koennen nicht nur individuell mit AddDropItem(L) im NPC
angemeldet werden, sondern auch ueber eine globale Drop-Liste.
Dieses Feature ist derzeit noch in Entwicklung. Die inidividuell
angemeldeten Objekte haben in jedem Falle Vorrang.
STANDARD-DROPS:
Wird AddDropItem(L) verwendet, erzeugt auch die MUDLib selbst gege-
benenfalls (nicht zwingend) 'allgemeine Gegenstaende', wie Fackeln,
Messer, Jacken, Kleingeld etc. Es wird dabei automatisch nach
Region, Level, Rasse, Geschlecht, Align und anderen Merkmalen des
NPCs eine Auswahl getroffen. Es werden aber nie mehr als die mit
P_MAX_DROPS erzeugten Gegenstaende erzeugt.
SIEHE AUCH:
CreateDropItems(L), P_MAX_DROPS, P_DROP_MODE, P_DROP_ITEMS,
AddItem(L)
|