Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/moebel/waffenschrank.c b/d/seher/haeuser/moebel/waffenschrank.c
new file mode 100644
index 0000000..e36abc9
--- /dev/null
+++ b/d/seher/haeuser/moebel/waffenschrank.c
@@ -0,0 +1,220 @@
+//--------------------------------------------------------------------------------
+// Name des Objects: Waffenschrank
+// Letzte Aenderung: 22.03.2001
+// Magier: Swift
+//--------------------------------------------------------------------------------
+/* Changelog
+ * 21.05.2007, Zesstra
+ Kampfstaebe auf Hinweis von tassram ergaenzt.
+*/
+#pragma strong_types,rtt_checks
+
+#include "schrankladen.h"
+#include <ansi.h>
+#include <class.h>
+inherit LADEN("swift_std_container");
+
+#define VERSION_OBJ "6"
+
+string strall;
+
+protected void create()
+{
+ if (!clonep(TO)) return;
+ swift_std_container::create();
+ SetProp(P_SHORT, "Ein Waffenschrank");
+ SetProp(P_LONG, BS(
+ "Mit den Waffen, die in diesen massiven Holzschrank passen, koenntest "
+ +"Du ein ganzes Soeldnerheer ausruesten. Fuer jede Waffengattung gibt "
+ +"es einen eigenen Platz, damit man auch alles gleich findet, sollte "
+ +"man es brauchen.")+"@@cnt_status@@");
+ AddId(({"waffenschrank", "holzschrank", "schrank"}));
+ SetProp("cnt_version_obj", VERSION_OBJ);
+ SetProp(P_NAME, "Waffenschrank");
+ SetProp(P_GENDER, MALE);
+ SetProp(P_WEIGHT, 5000); // Gewicht 5 Kg
+ SetProp(P_MAX_WEIGHT, 1000000); // Es passen fuer 1000 kg Sachen rein.
+ SetProp(P_WEIGHT_PERCENT, 100); // Dafuer macht er auch nix leichter :)
+ SetProp(P_MAX_OBJECTS, 100); // Mehr sollte nicht sein, lt. Tiamak.
+ SetProp(P_VALUE, 0); // Kein materieller Wert. Ist eh nicht verkaufbar.
+ SetProp(P_NOBUY, 1); // Wird im Laden zerstoert, falls er verkauft wird.
+ SetProp(P_NOGET, "Das geht nicht. "+Name(WER,1)+" haftet wie magisch am Boden.\n");
+ SetProp(P_MATERIAL, ({MAT_MISC_WOOD, MAT_MISC_MAGIC}) );
+ SetProp(P_INFO, "Versuchs mal mit: \"skommandos "+QueryProp(P_IDS)[1]+"\" !\n");
+ SetProp("obj_cmd", "sliste [Objekt-Id] [Waffentyp|\"alles\"]\n"
+ +" Waffentypen: Schwerter, Speere, Aexte, Keulen, Kampfstaebe, Messer, Peitschen,\n"
+ +" Fernwaffen, Munition, Sonstiges, Unzuordbar\n");
+
+ AD(({"platz"}), BS("Der Schrank bietet Platz fuer jede erdenkliche "
+ +"Waffengattung."));
+
+ AddCmd(({"sliste"}), "auflistung");
+}
+
+varargs int PreventInsert(object ob)
+{
+ // Keine Waffe? Hat in diesem Container nix verloren!
+ if( !ob->QueryProp(P_WEAPON_TYPE) && !ob->QueryProp(P_WC) &&
+ !ob->id("\nBumerang") && !ob->is_class_member(CL_AMMUNITION) &&
+ !ob->id("\ngorseilpfeil") )
+ {
+ write( BS("In "+name(WEN,1)+" kannst Du nur Waffen + Munition legen!"));
+ return 1;
+ }
+ else
+ return ::PreventInsert(ob);
+}
+
+int auflistung2(string was, string nf_str1, string nf_str2, int alles)
+{
+ string obshort, suche, *strs;
+ object *obs;
+ int i;
+ mapping suchobs;
+ switch(was)
+ {
+ case "munition" : suche=WT_AMMU; break;
+ case "aexte" : suche=WT_AXE; break;
+ case "keulen" : suche=WT_CLUB; break;
+ case "messer" : suche=WT_KNIFE; break;
+ case "fernwaffen" : suche=WT_RANGED_WEAPON; break;
+ case "speere" : suche=WT_SPEAR; break;
+ case "schwerter" : suche=WT_SWORD; break;
+ case "peitschen" : suche=WT_WHIP; break;
+ case "sonstiges" : suche=WT_MISC; break;
+ case "kampfstaebe": suche=WT_STAFF; break;
+ case "unzuordbar" : suche="unzuordbar"; break;
+ default : write("Fehler: Ungueltiger Waffentyp. "
+ +"Folgende Typen gibt es:\n"+nf_str1+nf_str2);
+ return 1; break;
+ }
+ obs=all_inventory();
+ suchobs=([]);
+ for(i=0;i<sizeof(obs);i++)
+ {
+ obshort=to_string(obs[i]->QueryProp(P_SHORT));
+ if(obshort=="Ein Bumerang@@fliegt@@")
+ obshort="Ein Bumerang";
+ else if(obshort=="Nichts besonderes" || obshort=="0") // keine P_SHORT ?
+ obshort=obs[i]->Name(WER); // Hoffen wir mal dass das Obj. nen Namen hat.
+ if(obs[i]->QueryProp(P_WEAPON_TYPE)==suche || // Gesuchter WeaponType gefunden...
+ (!obs[i]->QueryProp(P_WEAPON_TYPE) && suche=="unzuordbar") )
+ {
+ if(suchobs[obshort]) // P_SHORT des Obj. schon im mapping?
+ {
+ if( obs[i]->QueryProp(P_AMOUNT) )
+ suchobs[obshort]+=obs[i]->QueryProp(P_AMOUNT); // Dann den Zaehler um Amount hoch!
+ else
+ suchobs[obshort]+=1; // Dann den Zaehler um 1 hoch!
+ }
+ else
+ {
+ if( obs[i]->QueryProp(P_AMOUNT) )
+ suchobs+=([obshort: obs[i]->QueryProp(P_AMOUNT)]);
+ else
+ suchobs+=([obshort: 1]);
+ }
+ }
+ }
+ strs=m_indices(suchobs);
+ if(sizeof(strs))
+ {
+ if(!alles)
+ {
+ if(suche=="unzuordbar")
+ strall+=Name(WER,1)+" enthaelt folgende nicht zuordbare Waffen:\n";
+ else
+ strall+=Name(WER,1)+" enthaelt folgende "+CAP(was)+":\n";
+ strall+="------------------------------------------------------------\n";
+ }
+ else
+ {
+ if(suche=="unzuordbar")
+ strall+=ANSI_BOLD+"=== Nicht zuordbare Waffen:\n"+ANSI_NORMAL;
+ else
+ strall+=ANSI_BOLD+"=== "+CAP(was)+":\n"+ANSI_NORMAL;
+ }
+ for(i=0;i<sizeof(strs);i++)
+ {
+ if(suchobs[strs[i]] > 1)
+ strall+=strs[i]+". ("+suchobs[strs[i]]+")\n";
+ else
+ strall+=strs[i]+".\n";
+ }
+ }
+ else
+ if(!alles)
+ strall+=Name(WER,1)+" enthaelt keine "+CAP(was)+"!\n";
+ return 1;
+}
+
+int auflistung(string str)
+{
+ string *strs, ob_id, was, nf_str1,nf_str2;
+ strall="";
+ nf_str1=" (Schwerter, Speere, Aexte, Keulen, Kampfstaebe, Messer, Peitschen,\n"
+ +" Fernwaffen, Munition, Sonstiges, Unzuordbar)\n";
+ nf_str2="Syntax: sliste [Objekt-Id] [Waffentyp]\n"
+ +"Bsp.: sliste "+QueryProp(P_IDS)[1]+" "+"schwerter\n"
+ +" sliste "+QueryProp(P_IDS)[1]+" alles\n";
+ notify_fail("Fehler: Ohne Parameter klappt das nicht.\n"+nf_str2);
+ if(!str) return 0;
+ if(present(str)==TO) // Ueberpruefe, ob dieses Objekt gemeint ist!
+ {
+ write("Fehler: Es fehlt ein Waffentyp. Folgende Typen gibt es:\n"
+ +nf_str1+nf_str2);
+ return 1;
+ }
+ strs=old_explode(str, " ");
+ notify_fail("Fehler: Du musst eine gueltige Objekt-Id angeben!\n"
+ +nf_str2);
+ if( sizeof(strs) < 2 ) return 0; // Nur 1 Par. und der ist nicht die Objekt-Id
+ if( sizeof(strs) == 2 ) // Anzahl Par. = 2
+ {
+ ob_id=strs[0];
+ was=strs[1];
+ if( IST_ZAHL(was) ) // Objekt-Id z.B. mit "schrank 2" angesprochen?
+ if(present(ob_id+" "+was)==TO) // Falls dieses Objekt gemeint ist und kein 3. Par!
+ {
+ write("Fehler: Es fehlt ein Waffentyp. Folgende Typen gibt es:\n"
+ +nf_str1+nf_str2);
+ return 1;
+ }
+ else
+ return 0;
+ }
+ else if( sizeof(strs) == 3 )
+ {
+ ob_id=strs[0]+" "+strs[1];
+ was=strs[2];
+ }
+ else // Anzahl erforderlicher Parameter ueberschritten!
+ return 0;
+ if(present(ob_id)!=TO) // Ueberpruefe, ob auch dieses Objekt gemeint ist!
+ return 0;
+ if(QueryProp(P_CNT_STATUS)!=CNT_STATUS_OPEN)
+ {
+ write("Dazu muesste "+name(WER,1)+" geoeffnet sein.\n");
+ return 1;
+ }
+//--- Hier ist Parameterpruefung zu Ende.
+ was=LOWER(was);
+ if(was!="alles")
+ auflistung2(was, nf_str1, nf_str2, 0);
+ else
+ {
+ auflistung2("aexte", nf_str1, nf_str2, 1);
+ auflistung2("keulen", nf_str1, nf_str2, 1);
+ auflistung2("kampfstaebe", nf_str1, nf_str2, 1);
+ auflistung2("messer", nf_str1, nf_str2, 1);
+ auflistung2("speere", nf_str1, nf_str2, 1);
+ auflistung2("schwerter", nf_str1, nf_str2, 1);
+ auflistung2("peitschen", nf_str1, nf_str2, 1);
+ auflistung2("fernwaffen", nf_str1, nf_str2, 1);
+ auflistung2("munition", nf_str1, nf_str2, 1);
+ auflistung2("sonstiges", nf_str1, nf_str2, 1);
+ auflistung2("unzuordbar", nf_str1, nf_str2, 1);
+ }
+ TP->More(strall);
+ return 1;
+}