diff --git a/items/fishing/aquarium/alligator.c b/items/fishing/aquarium/alligator.c
new file mode 100644
index 0000000..9ae403c
--- /dev/null
+++ b/items/fishing/aquarium/alligator.c
@@ -0,0 +1,19 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+
+protected void create() {
+  if (!clonep(this_object()))
+    return;
+  ::create();
+  corpseobject = 0;
+  AddId(({"alligator"}));
+  SetProp(P_NAME,"Alligator" );
+  SetProp(P_SHORT,"Ein Alligator" );
+  SetProp(P_LONG,"Ein original Kanalligator (TM).\n");
+  SetProp(P_VALUE,600);
+  SetProp(P_WEIGHT, 1000);
+}
diff --git a/items/fishing/aquarium/barsch.c b/items/fishing/aquarium/barsch.c
new file mode 100644
index 0000000..308a5be
--- /dev/null
+++ b/items/fishing/aquarium/barsch.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+   ::create();
+  AddId(({"barsch"}));
+  SetProp(P_NAME,"Barsch" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Barsch" );
+  SetProp(P_LONG,"Ein dunkelgruener Barsch.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 500);
+}
diff --git a/items/fishing/aquarium/bforelle.c b/items/fishing/aquarium/bforelle.c
new file mode 100644
index 0000000..ba973b3
--- /dev/null
+++ b/items/fishing/aquarium/bforelle.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"forelle","bachforelle"}));
+  SetProp(P_NAME,"Forelle" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Forelle" );
+  SetProp(P_LONG,"Eine kleine rotgefleckte Bachforelle.\n");
+  SetProp(P_VALUE,100);
+  SetProp(P_WEIGHT, 500);
+}
diff --git a/items/fishing/aquarium/bsaib.c b/items/fishing/aquarium/bsaib.c
new file mode 100644
index 0000000..6b1cf00
--- /dev/null
+++ b/items/fishing/aquarium/bsaib.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"bachsaibling","saibling"}));
+  SetProp(P_NAME,"Bachsaibling" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Bachsaibling" );
+  SetProp(P_LONG,"Ein oliv-brauner Bachsaibling.\n");
+  SetProp(P_VALUE,80);
+  SetProp(P_WEIGHT, 400);
+}
diff --git a/items/fishing/aquarium/dorsch.c b/items/fishing/aquarium/dorsch.c
new file mode 100644
index 0000000..b97d90a
--- /dev/null
+++ b/items/fishing/aquarium/dorsch.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"dorsch","kabeljau"}));
+  SetProp(P_NAME,"Dorsch" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Dorsch" );
+  SetProp(P_LONG,"Ein kleinerer Dorsch.\n");
+  SetProp(P_VALUE,100);
+  SetProp(P_WEIGHT, 200);
+}
diff --git a/items/fishing/aquarium/fisch.c b/items/fishing/aquarium/fisch.c
new file mode 100644
index 0000000..a4fe241
--- /dev/null
+++ b/items/fishing/aquarium/fisch.c
@@ -0,0 +1,16 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  SetProp(P_NAME,"FISCH" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Fisch" );
+  SetProp(P_LONG,"Ein ziemlich gewoehnlicher Fisch.\n");
+  SetProp(P_VALUE,10);
+  SetProp(P_WEIGHT, 100);
+}
diff --git a/items/fishing/aquarium/flunder.c b/items/fishing/aquarium/flunder.c
new file mode 100644
index 0000000..9e50598
--- /dev/null
+++ b/items/fishing/aquarium/flunder.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"flunder"}));
+  SetProp(P_NAME,"Flunder" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Flunder" );
+  SetProp(P_LONG,"Ein ziemlich flache Flunder.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 300);
+}
diff --git a/items/fishing/aquarium/forelle.c b/items/fishing/aquarium/forelle.c
new file mode 100644
index 0000000..e4d1fe2
--- /dev/null
+++ b/items/fishing/aquarium/forelle.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"forelle","regenbogenforelle"}));
+  SetProp(P_NAME,"Forelle" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Forelle" );
+  SetProp(P_LONG,"Eine grosse, bunte Regenbogenforelle.\n");
+  SetProp(P_VALUE,200);
+  SetProp(P_WEIGHT, 1000);
+}
diff --git a/items/fishing/aquarium/gfisch.c b/items/fishing/aquarium/gfisch.c
new file mode 100644
index 0000000..ebdd6a2
--- /dev/null
+++ b/items/fishing/aquarium/gfisch.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"goldfisch"}));
+  SetProp(P_NAME,"Goldfisch" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Goldfisch" );
+  SetProp(P_LONG,"Ein wunderschoen roter Goldfisch.\n");
+  SetProp(P_VALUE,100);
+  SetProp(P_WEIGHT, 80);
+}
diff --git a/items/fishing/aquarium/gorfe.c b/items/fishing/aquarium/gorfe.c
new file mode 100644
index 0000000..646c001
--- /dev/null
+++ b/items/fishing/aquarium/gorfe.c
@@ -0,0 +1,19 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"goldorfe","orfe"}));
+  SetProp(P_NAME,"Goldorfe" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Ein Goldorfe" );
+  SetProp(P_LONG,
+  "Eine rote Goldorfe. Sie hat ein wenig Aehnlichkeit mit einem Goldfisch,\n"
+  +"ist jedoch wesentlich schlanker, schneller und gefraessiger.\n");
+  SetProp(P_VALUE, 150);
+  SetProp(P_WEIGHT, 80);
+}
diff --git a/items/fishing/aquarium/hai.c b/items/fishing/aquarium/hai.c
new file mode 100644
index 0000000..b81e546
--- /dev/null
+++ b/items/fishing/aquarium/hai.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"blauhai","hai"}));
+  SetProp(P_NAME,"Hai" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Hai" );
+  SetProp(P_LONG,"Ein grosser, bissiger Blauhai.\n");
+  SetProp(P_VALUE,800);
+  SetProp(P_WEIGHT, 1200);
+}
diff --git a/items/fishing/aquarium/hecht.c b/items/fishing/aquarium/hecht.c
new file mode 100644
index 0000000..b358ff9
--- /dev/null
+++ b/items/fishing/aquarium/hecht.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"hecht"}));
+  SetProp(P_NAME,"Hecht" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Hecht" );
+  SetProp(P_LONG,"Ein torpedofoermiger, gruengestreifter Hecht.\n");
+  SetProp(P_VALUE,90);
+  SetProp(P_WEIGHT, 700);
+}
diff --git a/items/fishing/aquarium/hering.c b/items/fishing/aquarium/hering.c
new file mode 100644
index 0000000..bbcb30b
--- /dev/null
+++ b/items/fishing/aquarium/hering.c
@@ -0,0 +1,18 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"hering"}));
+  SetProp(P_NAME,"Hering" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Hering" );
+  SetProp(P_LONG,
+  "Ein kleiner Hering.\n");
+  SetProp(P_VALUE,30);
+  SetProp(P_WEIGHT, 100);
+}
diff --git a/items/fishing/aquarium/karpfen.c b/items/fishing/aquarium/karpfen.c
new file mode 100644
index 0000000..212ece7
--- /dev/null
+++ b/items/fishing/aquarium/karpfen.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"karpfen"}));
+  SetProp(P_NAME,"Karpfen" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Karpfen" );
+  SetProp(P_LONG,"Ein grosser blaugrauer Karpfen.\n");
+  SetProp(P_VALUE,200);
+  SetProp(P_WEIGHT, 1000);
+}
diff --git a/items/fishing/aquarium/khai.c b/items/fishing/aquarium/khai.c
new file mode 100644
index 0000000..3fcfe19
--- /dev/null
+++ b/items/fishing/aquarium/khai.c
@@ -0,0 +1,19 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"katzenhai","hai","schmirgelpapier","\nkhaut"}));
+  SetProp(P_NAME,"Katzenhai" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Katzenhai" );
+  SetProp(P_LONG,"Ein kleiner Katzenhai, er hat eine aeusserst raue Haut.\n");
+  SetProp(P_VALUE,100);
+  SetProp(P_WEIGHT, 200);
+  SetEatMessage("Du haeutest den Katzenhai und isst ihn.");
+  SetCorpseObject(ANGELOBJ("khaut"));
+}
diff --git a/items/fishing/aquarium/kjau.c b/items/fishing/aquarium/kjau.c
new file mode 100644
index 0000000..18fb929
--- /dev/null
+++ b/items/fishing/aquarium/kjau.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"dorsch","kabeljau"}));
+  SetProp(P_NAME,"Kabeljau" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Kabeljau" );
+  SetProp(P_LONG,"Ein praechtiger, grosser Kabeljau.\n");
+  SetProp(P_VALUE,500);
+  SetProp(P_WEIGHT, 500);
+}
diff --git a/items/fishing/aquarium/lachs.c b/items/fishing/aquarium/lachs.c
new file mode 100644
index 0000000..769fa44
--- /dev/null
+++ b/items/fishing/aquarium/lachs.c
@@ -0,0 +1,16 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"lachs"}));
+  SetProp(P_NAME,"Lachs" );
+  SetProp(P_SHORT,"Ein Lachs" );
+  SetProp(P_LONG,"Ein schoener, grosser Lachs.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 400);
+}
diff --git a/items/fishing/aquarium/neun.c b/items/fishing/aquarium/neun.c
new file mode 100644
index 0000000..914448d
--- /dev/null
+++ b/items/fishing/aquarium/neun.c
@@ -0,0 +1,19 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"neunauge","bachneunauge"}));
+  SetProp(P_NAME,"Bachneunauge" );
+  SetProp(P_GENDER,NEUTER);
+  SetProp(P_SHORT,"Ein Neunauge" );
+  SetProp(P_LONG,
+  "Ein Bachneunauge mit einer kleinen Mundscheibe. Damit kann es sich\n"
+  +"an Steinen festhalten und in der Stroemung treiben.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 300);
+}
diff --git a/items/fishing/aquarium/piranha.c b/items/fishing/aquarium/piranha.c
new file mode 100644
index 0000000..5ad1ea2
--- /dev/null
+++ b/items/fishing/aquarium/piranha.c
@@ -0,0 +1,18 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"piranha"}));
+  SetProp(P_NAME,"Piranha" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Piranha" );
+  SetProp(P_LONG,"Ein boesartiger kleiner Piranha mit sehr scharfen "
+    "Zaehnen.\n");
+  SetProp(P_VALUE,40);
+  SetProp(P_WEIGHT, 100);
+}
diff --git a/items/fishing/aquarium/rochen.c b/items/fishing/aquarium/rochen.c
new file mode 100644
index 0000000..b338d28
--- /dev/null
+++ b/items/fishing/aquarium/rochen.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"rochen","nagelrochen"}));
+  SetProp(P_NAME,"Rochen" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Rochen" );
+  SetProp(P_LONG,"Ein kleiner Nagelrochen.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 300);
+}
diff --git a/items/fishing/aquarium/schlei.c b/items/fishing/aquarium/schlei.c
new file mode 100644
index 0000000..200f23b
--- /dev/null
+++ b/items/fishing/aquarium/schlei.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"schleie","schlei"}));
+  SetProp(P_NAME,"Schleie" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Schlei" );
+  SetProp(P_LONG,"Eine aeusserst schleimige Schleie.\n");
+  SetProp(P_VALUE,100);
+  SetProp(P_WEIGHT, 800);
+}
diff --git a/items/fishing/aquarium/scholle.c b/items/fishing/aquarium/scholle.c
new file mode 100644
index 0000000..71b6ab4
--- /dev/null
+++ b/items/fishing/aquarium/scholle.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"scholle"}));
+  SetProp(P_NAME,"Scholle" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Scholle" );
+  SetProp(P_LONG,"Ein platte, flache Scholle.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 500);
+}
diff --git a/items/fishing/aquarium/schwert.c b/items/fishing/aquarium/schwert.c
new file mode 100644
index 0000000..c3754c9
--- /dev/null
+++ b/items/fishing/aquarium/schwert.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"schwertfisch"}));
+  SetProp(P_NAME,"Schwertfisch" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Schwertfisch" );
+  SetProp(P_LONG,"Ein Schwertfisch mit einem sehr langen Schwert.\n");
+  SetProp(P_VALUE,700);
+  SetProp(P_WEIGHT, 1000);
+}
diff --git a/items/fishing/aquarium/seehase.c b/items/fishing/aquarium/seehase.c
new file mode 100644
index 0000000..7c173d0
--- /dev/null
+++ b/items/fishing/aquarium/seehase.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"seehase","hase"}));
+  SetProp(P_NAME,"Seehase" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Seehase" );
+  SetProp(P_LONG,"Ein klobiger, dunkelgraublauer Seehase.\n");
+  SetProp(P_VALUE,30);
+  SetProp(P_WEIGHT, 200);
+}
diff --git a/items/fishing/aquarium/seeteufel.c b/items/fishing/aquarium/seeteufel.c
new file mode 100644
index 0000000..37eb863
--- /dev/null
+++ b/items/fishing/aquarium/seeteufel.c
@@ -0,0 +1,18 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+  if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"seeteufel","teufel"}));
+  SetProp(P_NAME,"Seeteufel" );
+  SetProp(P_SHORT,"Ein Seeteufel" );
+  SetProp(P_LONG,
+  "Ein grimmiger Seeteufel mit vielen scharfen Zaehnen. Er hat eine kleine,\n"
+  +"auffaellige Angel oben an seinem Kopf, mit der er nach Beute koedert.\n");
+  SetProp(P_VALUE,200);
+  SetProp(P_WEIGHT, 800);
+}
diff --git a/items/fishing/aquarium/seewolf.c b/items/fishing/aquarium/seewolf.c
new file mode 100644
index 0000000..4c4a07c
--- /dev/null
+++ b/items/fishing/aquarium/seewolf.c
@@ -0,0 +1,18 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"seewolf","wolf"}));
+  SetProp(P_NAME,"Seewolf" );
+  SetProp(P_SHORT,"Ein Seewolf" );
+  SetProp(P_LONG,
+  "Ein haesslicher Seewolf mit scharfen, gebogenen Zaehnen. Er sieht\n"
+  +"richtig boesartig aus.\n");
+  SetProp(P_VALUE,100);
+  SetProp(P_WEIGHT, 600);
+}
diff --git a/items/fishing/aquarium/ssaib.c b/items/fishing/aquarium/ssaib.c
new file mode 100644
index 0000000..ac410ad
--- /dev/null
+++ b/items/fishing/aquarium/ssaib.c
@@ -0,0 +1,16 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"seesaibling","saibling"}));
+  SetProp(P_NAME,"Seesaibling" );
+  SetProp(P_SHORT,"Ein Seesaibling" );
+  SetProp(P_LONG,"Ein blaugrauer Seesaibling mit einem roten Bauch.\n");
+  SetProp(P_VALUE,80);
+  SetProp(P_WEIGHT, 400);
+}
diff --git a/items/fishing/aquarium/stichling.c b/items/fishing/aquarium/stichling.c
new file mode 100644
index 0000000..0301e0c
--- /dev/null
+++ b/items/fishing/aquarium/stichling.c
@@ -0,0 +1,16 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"stichling"}));
+  SetProp(P_NAME,"Stichling" );
+  SetProp(P_SHORT,"Ein Stichling" );
+  SetProp(P_LONG,"Ein suesser kleiner Stichling.\n");
+  SetProp(P_VALUE,6);
+  SetProp(P_WEIGHT, 30);
+}
diff --git a/items/fishing/aquarium/szunge.c b/items/fishing/aquarium/szunge.c
new file mode 100644
index 0000000..c135572
--- /dev/null
+++ b/items/fishing/aquarium/szunge.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"seezunge"}));
+  SetProp(P_NAME,"Seezunge" );
+  SetProp(P_GENDER,FEMALE);
+  SetProp(P_SHORT,"Eine Seezunge" );
+  SetProp(P_LONG,"Eine kleine braune Seezunge.\n");
+  SetProp(P_VALUE,60);
+  SetProp(P_WEIGHT, 300);
+}
diff --git a/items/fishing/aquarium/thun.c b/items/fishing/aquarium/thun.c
new file mode 100644
index 0000000..c12c928
--- /dev/null
+++ b/items/fishing/aquarium/thun.c
@@ -0,0 +1,17 @@
+#include <language.h>
+#include <properties.h>
+#include <fishing.h>
+
+inherit STD_FISCH;
+
+protected void create() {
+   if (!clonep(this_object())) return;
+  ::create();
+  AddId(({"thunfisch"}));
+  SetProp(P_NAME,"Thunfisch" );
+  SetProp(P_GENDER,MALE);
+  SetProp(P_SHORT,"Ein Thunfisch" );
+  SetProp(P_LONG,"Ein grosser Thunfisch.\n");
+  SetProp(P_VALUE,75);
+  SetProp(P_WEIGHT, 500);
+}
