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