Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 1 | Virtuelle Items / Objekte |
| 2 | ========================= |
| 3 | |
| 4 | Um ein Objekt genauer beschreiben zu koennen, gibt es einerseits Details an |
| 5 | diesem Objekt. |
Arathorn | 0315476 | 2020-05-01 22:40:28 +0200 | [diff] [blame] | 6 | |
Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 7 | Andererseits gibt es sog. virtuelle Items (vItems), die detaillierter als |
Arathorn | 0315476 | 2020-05-01 22:40:28 +0200 | [diff] [blame] | 8 | einfache Details beschrieben werden koennen (z.B. mit Geschlecht, Material |
| 9 | etc.), ohne wirklich als normales Objekt im Raum zu liegen. Sie koennen auch |
| 10 | eigene Details (alle Sinne) haben und sogar selber vItems enthalten. Die |
| 11 | vItems werden von untersuche behandelt wie normale Objekte und sind sogar |
| 12 | als Referenzobjekt nutzbar. |
Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 13 | |
| 14 | Auf Wunsch koennen sie so konfiguriert werden, dass ein vItem nehmbar ist. |
| 15 | Das vItem im Raum und das genommene im Spielerinventar koennen hierbei sogar |
| 16 | unterschiedlich beschrieben sein. Auf diese Weise koennen nehmbare Objekte im |
| 17 | Raum erzeugt werden, die nicht staendig im Raum rumliegen. |
| 18 | |
| 19 | Die vItems koennen dabei grundsaetzlich mit allen Props konfiguriert werden, |
| 20 | die man auch in normalen Objekten setzen kann. Allerdings werden diese Props |
| 21 | nicht alle genutzt bzw. sind sind nicht alle sinnvoll. Beispielsweise sind |
| 22 | kampfrelevante Props im Kontext von vItems bedeutungslos, ebenso solche, die |
| 23 | von speziellem Code genutzt werden, der nicht in /std/container enthalten |
Arathorn | 0315476 | 2020-05-01 22:40:28 +0200 | [diff] [blame] | 24 | ist. (Allerdings kann beim Nehmen eines vItems durchaus ein nicht-Standard- |
| 25 | Objekt (Waffe/Ruestung/etc.) erzeugt werden, welches im Kampf auch ganz |
| 26 | normal genutzt werden kann.) |
Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 27 | |
Arathorn | 0315476 | 2020-05-01 22:40:28 +0200 | [diff] [blame] | 28 | Wird in einem vItem eine Blueprint angegeben, dient diese auch als Vorlage |
| 29 | (Templat), aus der ggf. Properties abgefragt werden, welche nicht im vItem |
| 30 | selbst angegeben sind. |
Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 31 | |
| 32 | Das Nehmen von vItems ist moeglich, wenn eine Blueprint eingetragen ist, |
| 33 | welche dann geclont werden kann. Hierbei muss man sich dann auch nicht mehr |
| 34 | selber darum kuemmern, ob der Spieler das Objekt tragen kann (und es ggf. |
| 35 | wieder zerstoeren). Die Funktionen von put_and_get.c verarbeiten vItems, |
| 36 | sofern es ein passendes gibt. |
| 37 | Nach dem Nehmen eines vItems ist dieses standardmaessig bis zum naechsten |
| 38 | Reset "weg", d.h. nicht mehr nehmbar (clonbar) und wird auch nicht mehr |
Arathorn | 0315476 | 2020-05-01 22:40:28 +0200 | [diff] [blame] | 39 | gefunden bei untersuche & Co. Fuer den Reset von vItems sind vergleichbare |
| 40 | Einstellung wie bei AddItem() moeglich. |
Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 41 | |
| 42 | Interagiert Code mit einem vItem, welcher ein Objekt benoetigt, wird |
| 43 | on-the-fly ein Objekt erzeugt. Ist es ein vItem mit Blueprint, wird diese |
| 44 | geclont und mit den konfigurierten Properties des vItems konfiguriert. |
| 45 | Anderenfalls wird ein Proxyobjekt erzeugt und mit den Properties des vItems |
| 46 | konfiguriert, in welchem z.B. lfuns gerufen werden koennen. Hierbei ist das |
| 47 | Proxyobjekt allerdings immer vom Typ /std/container. |
| 48 | |
| 49 | Ein vItem mit Blueprint benutzt (intern) einen Shadow, um Unterschiede |
| 50 | zwischen dem realen Objekt des vItems ("genommener Zustand") und dem vItem im |
| 51 | Raum zu ermoeglichen. |
| 52 | |
| 53 | Interaktion mit bug/typo/etc. |
| 54 | ----------------------------- |
| 55 | |
| 56 | Hat das vitem ein Templat, wird wie gehabt an diesem der Eintrag vorgenommen, |
| 57 | als waere dieses Objekt im Raum. |
Arathorn | 0315476 | 2020-05-01 22:40:28 +0200 | [diff] [blame] | 58 | |
Zesstra | b57d4a8 | 2018-08-28 22:55:48 +0200 | [diff] [blame] | 59 | Hat es kein Templat, wird der Eintrag an dem Objekt vorgenommen, der es |
| 60 | geclont hat. Das wird in aller Regel der Raum/Container sein, der das vItem |
| 61 | beinhaltet. |
| 62 | |