Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/std/thing/restrictions.c b/std/thing/restrictions.c
new file mode 100644
index 0000000..e8d0f83
--- /dev/null
+++ b/std/thing/restrictions.c
@@ -0,0 +1,142 @@
+// MorgenGrauen MUDlib
+//
+// thing/restrictions.c -- Gewicht u.ae. eines Objekts
+//
+// $Id: restrictions.c 6809 2008-03-29 21:54:04Z Zesstra $
+
+#pragma strict_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+#include <defines.h>
+#include <properties.h>
+
+#define NEED_PROTOTYPES
+#include <thing/properties.h>
+
+// Gewicht ist 1kg, wenn nicht anders bestimmt
+protected void create()
+{
+ SetProp(P_WEIGHT, 1000);
+}
+
+protected void create_super() {
+ set_next_reset(-1);
+}
+
+// P_TOTAL_WEIGHT bei Nicht-Containern auf P_WEIGHT umleiten
+static int _set_weight(int weight) {
+ return SetProp(P_TOTAL_WEIGHT,
+ Set(P_WEIGHT, weight, F_VALUE) );
+}
+
+// P_X_ATTR_MOD aendern (Attributaenderungen durch Ausruestung)
+static mapping _set_extern_attributes_modifier(mapping xmod)
+{
+ mapping res;
+
+ // wenn Muell oder ein leeres Mapping uebergeben wurde, wird die prop
+ // geloescht und ggf. das Objekt im Living abgemeldet.
+ if (!mappingp(xmod)) xmod=([]);
+
+ if (!sizeof(xmod)) {
+
+ res=Set(P_X_ATTR_MOD, xmod);
+
+ // wenn Prop geloescht wird, kann man das Item auch aus der Liste der
+ // Statmodifizierer des Lebewesens austragen.
+ if (living(environment())) {
+ environment()->deregister_modifier(ME);
+ environment()->UpdateAttributes();
+ }
+ }
+ else {
+ // ok, Prop wird auf nen interessanten Wert gesetzt. ;-)
+
+ // Damit Insert/RemoveSensitiveObject beim Move aufgerufen wird,
+ // muss P_SENSITIVE gesetzt sein
+ if (!QueryProp(P_SENSITIVE)) SetProp(P_SENSITIVE,({}));
+
+ if (living(environment()) &&
+ (!mappingp(res=QueryProp(P_X_ATTR_MOD)) || !sizeof(res))) {
+ // Wenn dieses Objekt in einem Living ist und bisher die prop nicht
+ // gesetzt war, muss sich das Objekt noch im Living als Statmodifizierer
+ // registrieren.
+ res=Set(P_X_ATTR_MOD, xmod);
+ environment()->register_modifier(ME);
+ environment()->UpdateAttributes(ME);
+ }
+ else if (living(environment())){
+ // sonst reicht ein einfaches UpdateAttributes() um das Lebewesen zu
+ // informieren.
+ res=Set(P_X_ATTR_MOD, xmod);
+ environment()->UpdateAttributes();
+ }
+ else {
+ // wenn kein lebendes Env, reicht einfaches Setzen.
+ res=Set(P_X_ATTR_MOD,xmod);
+ }
+ }
+
+ return res;
+}
+
+// P_X_HEALTH_MOD aendern (LP/KP-Aenderung durch Ausruestung)
+static mapping _set_extern_health_modifier(mapping xmod) {
+ mapping res;
+
+ // wenn Muell oder ein leeres Mapping uebergeben wurde, wird die prop
+ // geloescht und ggf. das Objekt im Living abgemeldet.
+ if (!mappingp(xmod)) xmod=([]);
+
+ if (!sizeof(xmod)) {
+
+ res=Set(P_X_HEALTH_MOD, xmod);
+
+ // wenn Prop geloescht wird, kann man das Item auch aus der Liste der
+ // Statmodifizierer des Lebewesens austragen.
+ if (living(environment())) {
+ environment()->deregister_modifier(ME);
+ environment()->UpdateAttributes();
+ }
+ }
+ else {
+ // ok, Prop wird auf nen interessanten Wert gesetzt. ;-)
+
+ // Damit Insert/RemoveSensitiveObject beim Move aufgerufen wird,
+ // muss P_SENSITIVE gesetzt sein
+ if (!QueryProp(P_SENSITIVE)) SetProp(P_SENSITIVE,({}));
+
+ if (living(environment()) &&
+ (!mappingp(res=QueryProp(P_X_HEALTH_MOD)) || !sizeof(res))) {
+ // Wenn dieses Objekt in einem Living ist und bisher die prop nicht
+ // gesetzt war, muss sich das Objekt noch im Living als Statmodifizierer
+ // registrieren.
+ res=Set(P_X_HEALTH_MOD, xmod);
+ environment()->register_modifier(ME);
+ environment()->UpdateAttributes(ME);
+ }
+ else if (living(environment())){
+ // sonst reicht ein einfaches UpdateAttributes() um das Lebewesen zu
+ // informieren.
+ res=Set(P_X_HEALTH_MOD, xmod);
+ environment()->UpdateAttributes();
+ }
+ else {
+ // wenn kein lebendes Env, reicht einfaches Setzen.
+ res=Set(P_X_HEALTH_MOD,xmod);
+ }
+ }
+
+ return res;
+
+}
+
+// P_X/M_ATTR_MOD werden nicht beruecksichtigt, da CUMULATIVE_ATTR_LIMIT
+// ueberschritten ist
+void NotifyXMAttrModLimitViolation()
+{
+}
+