Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | P_FISH |
| 2 | ====== |
| 3 | |
| 4 | NAME |
| 5 | ---- |
| 6 | :: |
| 7 | |
| 8 | P_FISH "fish" |
| 9 | |
| 10 | DEFINIERT IN |
| 11 | ------------ |
| 12 | :: |
| 13 | |
| 14 | /sys/fishing.h |
| 15 | |
| 16 | BESCHREIBUNG |
| 17 | ------------ |
| 18 | :: |
| 19 | |
| 20 | Enthaelt Einstellungen zu allem, was mit Fischen zu tun hat. |
| 21 | Kann in Fischen, Raeumen und Koedern gesetzt werden. Die verfuegbaren |
| 22 | Optionen und Funktionsweisen sind in den nachfolgenden Abschnitten |
| 23 | aufgefuehrt. |
| 24 | |
| 25 | Fische: |
| 26 | ******* |
| 27 | Die Property legt zusaetzliche Eigenschaften fest: |
| 28 | |
| 29 | F_NOROTTEN |
| 30 | Fisch fault nicht; ggf. sollte hier auch gleich F_NOHEAL gesetzt |
| 31 | werden, weil sonst eine unverderbliche tragbare Tanke erzeugt wuerde. |
| 32 | F_NOTHUNGRY |
| 33 | Fisch frisst Koeder nur, wenn er auch wirklich nachher an der Angel |
| 34 | haengt. Ist er zu schwer fuer die Angel und reisst ab, bleibt der |
| 35 | Koeder erhalten. |
| 36 | F_REPLACE |
Arathorn | ccb98f6 | 2018-08-29 21:48:11 +0200 | [diff] [blame] | 37 | Fisch soll sich beim Einholen der Angel verwandeln, technisch: |
| 38 | wenn er geclont und in die Angel bewegt wurde. Hierzu ist die |
| 39 | Funktion ReplaceFish() im Fisch zu definieren, die sich um die |
| 40 | Verwandlung kuemmert (z.B. Monster clonen und Fisch zerstoeren, |
| 41 | Beispiel siehe unten). |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 42 | F_NOHEAL |
| 43 | Fisch heilt nicht bei Verzehr |
| 44 | |
| 45 | Raum (OPTIONAL): |
| 46 | **************** |
| 47 | Legt die Fischdichte des Gewaessers fest. Der eingestellte Wert wirkt |
| 48 | sich auf die Wartezeit aus, die der Angler verbringen muss, bis ein |
| 49 | Fisch anbeisst. Berechnung im Detail (alle Zahlenwerte in Sekunden): |
| 50 | - Basis-Wartezeit: delay = 80 |
| 51 | - Die Werte von P_FISH von Raum und Koeder werden addiert: |
| 52 | summe = raum->QueryProp(P_FISH) + koeder->QueryProp(P_FISH) |
| 53 | -> positive Werte (Bonus) werden auf 60 begrenzt und mit Zufalls- |
| 54 | komponente von <delay> abgezogen: |
| 55 | delay -= random(summe) |
| 56 | -> negative Werte (Malus) werden auf -300 begrenzt und mit Zufalls- |
| 57 | komponente auf <delay> aufgeschlagen: |
| 58 | delay += random(-summe) |
| 59 | |
| 60 | Zusaetzlich wird ein weiterer Malus auf die Wartezeit faellig, falls |
| 61 | P_WATER in der Angel und/oder P_WATER im Koeder nicht zum aktuellen |
| 62 | Gewaesser passen. Der Malus betraegt jeweils 60+random(60) Sekunden. |
| 63 | |
| 64 | |
| 65 | |
| 66 | Der Standardwert fuer P_FISH im Raum ist 0 und bedeutet 100 % Bestand. |
| 67 | Positive Werte erhoehen die Dichte, negative senken sie. Positive Werte |
| 68 | sollten nicht >100 sein. |
| 69 | |
| 70 | Sofern sich die Werte fuer P_FISH in den empfohlenen Grenzen bewegen, |
| 71 | koennen Abzuege fuer falsches Gewaesser ueblicherweise kaum durch |
| 72 | Boni auf Angel oder Koeder kompensiert werden. Ausserdem ist zu |
| 73 | bedenken, dass es keine Boni fuer richtige Gewaesserwahl gibt. |
| 74 | |
| 75 | |
| 76 | |
| 77 | Koeder (OPTIONAL): |
| 78 | ****************** |
| 79 | Ein Koeder kann mittels P_FISH die Fischdichte modifizieren, um hierueber |
| 80 | ein besseres Beissen der Fische zu simulieren (reduziert die Wartezeit |
| 81 | beim Angeln, siehe oben unter "Raum"). Wenn also der Raum einen Wert |
| 82 | von -100 gesetzt hat und der Koeder +100, entspricht die Fischdichte im |
| 83 | Gewaesser wieder dem Normalwert. |
| 84 | |
Arathorn | ccb98f6 | 2018-08-29 21:48:11 +0200 | [diff] [blame] | 85 | |
| 86 | BEISPIEL |
| 87 | -------- |
| 88 | :: |
| 89 | |
| 90 | protected void create() { |
| 91 | [...] |
| 92 | SetProp(P_FISH, F_REPLACE); |
| 93 | [...] |
| 94 | } |
| 95 | |
| 96 | // ReplaceFish() wird per call_out() mit Funktionsnamen (d.h. als String) |
| 97 | // gerufen, daher muss die Sichtbarkeit public oder static sein. |
| 98 | static void ReplaceFish() { |
| 99 | tell_object(this_player(), break_string("Der Katzenhai glitscht Dir |
| 100 | "aus der Hand und streift seine Haut ab. Vor Dir steht eine " |
| 101 | "niedliche, schwarze Katze!", 78)); |
| 102 | tell_room(environment(this_player()), break_string( |
| 103 | this_player()->Name(WEM)+" glitscht ein Katzenhai aus der Hand " |
| 104 | "und streift seine Haut ab. Ueberraschend steht eine niedliche, " |
| 105 | "schwarze Katze vor Dir!", 78)); |
| 106 | object monster = clone_object("/d/irgendwo/irgendwer/mon/haikatze"); |
| 107 | monster->move(environment(TP), M_GO|M_SILENT); |
| 108 | remove(); |
| 109 | } |
| 110 | |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 111 | SIEHE AUCH |
| 112 | ---------- |
| 113 | :: |
| 114 | |
| 115 | Properties: P_WATER |
| 116 | Methoden: GetAquarium(L) |
| 117 | |
| 118 | |
Arathorn | ccb98f6 | 2018-08-29 21:48:11 +0200 | [diff] [blame] | 119 | Zuletzt geaendert: 2018-Jul-18, Arathorn |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 120 | |