STANDARDOBJECT FUER FUELLBARE GEFAESSE (LCONTAINER)
... provisorisch ...
BENUTZUNG:
inherit "std/lcontainer";
#include <lcontainer.h>
BESCHREIBUNG:
Der Lcontainer kann sowohl Fluessigkeiten als auch Objekte aufnehmen.
Die Kapazitaet fuer normale Objekte kann mittels P_MAX_WEIGHT
festgelegt werden. Defaultmaessig kann der Lcontainer aber auch Objekte
bis zu 1kg pro Liter Kapazitaet (P_LCNT_MAXCAPA) aufnehmen. Wenn
P_MAX_WEIGHT auf 0 gesetzt ist, koennen nur Fluessigkeiten aufge-
nommen werden.
In Raeumen muss die Funktion GiveLiquid gegeben sein, um dort einen
Lcontainer fuellen zu koennen.
Wenn der Inhalt des Lcontainers fluessig ist, belastet sein ganzes
Gewicht den Spieler. Fuer Objekte wirkt P_WEIGHT_PERCENT ebenso wie
beim normalen Container.
BEMERKUNG:
Man kann die Werte fuer Capa, MaxCapa, Price, Heal, Strengh (Alkohol-
lastigkeit :o) ), Soak und Weight mittels der Funktion void DUMP()
abfragen:
xcall $m.flasche->DUMP()
Capa 700, MaxCapa 700 -> 0
Price 0, Heal 0, Stren 0, Soak 0, Weight 0
PROPERTIES:
P_NODRINK - wird nicht benutzt?
P_LCONTAINER - ist 1 wenn es ein Lcontainer ist
P_LCNT_OPENMSG - Meldungen fuer das Oeffnen und Schliessen des Lcontainers
P_LCNT_DRINKMSG - Meldungen fuer das Trinken aus dem Lconatiner
P_LCNT_CAPA - intern (Fuellstand in Milliliter)
P_LCNT_MAXCAPA - Kapazitaet in Milliliter
P_LCNT_CLOSABLE - wenn 0, kann der Lcontainer nicht geschlossen werden
P_LCNT_MINIMAL - man kann immer was hinzufuegen, auch wenn der Lcontainer
schon voll ist
P_TRANSPARENT - wenn 0 kann man nicht hineinsehen wenn er zu ist
P_TRANSLUCENT - wenn 0 lichtundurchlaessig
P_MAX_WEIGHT -
P_WEIGHT -
P_DESCR - wird automatisch erzeugt und (leer) bzw. (voll) etc.
an den Name angehaengt.
FUNKTIONEN:
int AddLiquid(Famount, Fname, Fdescr, Fprice, Fheal, Fstrength,
Fsoak, Fweight);
- dem Lcontainer etwas hinzufuegen
int PourLiquid(Famount, where);
- etwas aus dem Lcontainer ausschuetten
int GiveLiquid(string name, int amount, object us);
- fuer den Fuellraum: stellt Fluessigkeit zur Verfuegung
int GetLiquid(int id)
- gibt die fluessigen Inhalte zurueck
int FindLiquid(string id, int force)
- sucht die Fluessigkeit id im Lcontainer.
Falls 'force' gesetzt ist, wird nicht ueberprueft, ob der
Behaelter geschlossen ist.
int IsEmpty()
- ist der Lcontainer leer?
int IsOpen()
- ist der Lcontainer offen?
BEISPIELE:
- lcontainer:
inherit "lcontainer";
#pragma strong_types
#include <properties.h>
#include <lcontainer.h>
void create()
{
if (!clonep()) return;
::create();
SetProp(P_NAME, "Lederflasche");
SetProp(P_PLURAL, "Lederflaschen");
AddId(({"flasche","lederflasche","bocksbeutel"}),
({"flaschen","lederflaschen","bocksbeutel"}));
SetProp(P_LONG,
"Die Flasche hat die Form eines Bocksbeutels "
"und ist kunstvoll mit Lederbaendern umwickelt. "
"An ihren Seiten ist ein Riemen befestigt, "
"damit man sie besser tragen kann. Sie ist mit einem Korken "
"verschliessbar.");
SetProp(P_WEIGHT, 150);
SetProp(P_LCNT_MAXCAPA, 700);
SetProp(P_LCNT_CLOSABLE, 1);
SetProp(P_VALUE, 100);
SetProp(P_TRANSPARENT, 0);
SetProp(P_MAX_WEIGHT, 0); // gaaanz enger Hals
SetProp(P_GENDER, FEMALE);
SetProp(P_LCNT_OPENMSG, ({
"Du ziehst den Korken aus der Flasche.",
" zieht den Korken aus einer Lederflasche.",
"Schwupps - der Korken ist wieder drauf.",
" verkorkt eine Flasche." }) );
SetProp(P_LCNT_DRINKMSG, ({
"Du trinkst @@howmuch@@ aus der Flasche.",
" setzt sich eine Flasche an den Hals und gluggert "
"@@howmuch@@ in sich rein.",
"Da ist doch gar nichts drin!",
" hat Halluzinationen und versucht, aus einer leeren "
"Flasche zu trinken." }) );
}
- 'Fuell'-Raum:
inherit "room";
void create()
{
::create();
...
}
int GiveLiquid(string id, int am, object ob)
{
int given;
if (id != "wasser" && id != "bach") return 0;
given=ob->AddLiquid(am, "wasser", "Wasser", am/10, 0, 0, am/2);
return given;
}
- ausserdem in /doc/beispiele/lcontainer
SIEHE AUCH:
container(STD), room(STD), AddLiquid(L), PourLiquid(L), GiveLiquid(L),
GetLiquid(L), FindLiquid(L), IsOpen(L), P_LCONTAINER, P_LCNT_OPENMSG,
P_LCNT_CAPA, P_LCNT_MAXCAPA, P_LCNT_MINIMAL, P_LCNT_CLOSABLE,
P_LCNT_DRINKMSG, IsEmpty(L)
|