blob: 5449da92619412d4a587faba58e40298a637ffe9 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
Zesstra953f9972017-02-18 15:37:36 +01002P_FISH
3******
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006NAME
7====
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 P_FISH "fish"
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /sys/fishing.h
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018BESCHREIBUNG
19============
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 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 User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026 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.
33 F_NOTHUNGRY
34 Fisch frisst Koeder nur, wenn er auch wirklich nachher an der Angel
35 haengt. Ist er zu schwer fuer die Angel und reisst ab, bleibt der
36 Koeder erhalten.
37 F_REPLACE
Arathornccb98f62018-08-29 21:48:11 +020038 Fisch soll sich beim Einholen der Angel verwandeln, technisch:
39 wenn er geclont und in die Angel bewegt wurde. Hierzu ist die
40 Funktion ReplaceFish() im Fisch zu definieren, die sich um die
41 Verwandlung kuemmert (z.B. Monster clonen und Fisch zerstoeren,
42 Beispiel siehe unten).
Zesstra953f9972017-02-18 15:37:36 +010043 F_NOHEAL
44 Fisch heilt nicht bei Verzehr
45
46 Raum (OPTIONAL):
47 ****************
48 Legt die Fischdichte des Gewaessers fest. Der eingestellte Wert wirkt
49 sich auf die Wartezeit aus, die der Angler verbringen muss, bis ein
50 Fisch anbeisst. Berechnung im Detail (alle Zahlenwerte in Sekunden):
51 - Basis-Wartezeit: delay = 80
52 - Die Werte von P_FISH von Raum und Koeder werden addiert:
53 summe = raum->QueryProp(P_FISH) + koeder->QueryProp(P_FISH)
54 -> positive Werte (Bonus) werden auf 60 begrenzt und mit Zufalls-
55 komponente von <delay> abgezogen:
56 delay -= random(summe)
57 -> negative Werte (Malus) werden auf -300 begrenzt und mit Zufalls-
58 komponente auf <delay> aufgeschlagen:
59 delay += random(-summe)
60
61 Zusaetzlich wird ein weiterer Malus auf die Wartezeit faellig, falls
62 P_WATER in der Angel und/oder P_WATER im Koeder nicht zum aktuellen
63 Gewaesser passen. Der Malus betraegt jeweils 60+random(60) Sekunden.
64
65
66
67 Der Standardwert fuer P_FISH im Raum ist 0 und bedeutet 100 % Bestand.
68 Positive Werte erhoehen die Dichte, negative senken sie. Positive Werte
69 sollten nicht >100 sein.
70
71 Sofern sich die Werte fuer P_FISH in den empfohlenen Grenzen bewegen,
72 koennen Abzuege fuer falsches Gewaesser ueblicherweise kaum durch
73 Boni auf Angel oder Koeder kompensiert werden. Ausserdem ist zu
74 bedenken, dass es keine Boni fuer richtige Gewaesserwahl gibt.
75
76
77
78 Koeder (OPTIONAL):
79 ******************
80 Ein Koeder kann mittels P_FISH die Fischdichte modifizieren, um hierueber
81 ein besseres Beissen der Fische zu simulieren (reduziert die Wartezeit
82 beim Angeln, siehe oben unter "Raum"). Wenn also der Raum einen Wert
83 von -100 gesetzt hat und der Koeder +100, entspricht die Fischdichte im
84 Gewaesser wieder dem Normalwert.
85
86
Arathornccb98f62018-08-29 21:48:11 +020087BEISPIEL
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
111
Zesstra953f9972017-02-18 15:37:36 +0100112SIEHE AUCH
113==========
114
115 Properties: P_WATER
116 Methoden: GetAquarium(L)
117
Arathornccb98f62018-08-29 21:48:11 +0200118Zuletzt geaendert: 2018-Jul-18, Arathorn