Re-Spanker

Dieses Skript gibt eine Antwort zurück, wenn bestimmte Worte wie "spank" oder "schlägt" fallen. Dazu muss es in ein Objekt und dieses dann angezogen werden.

list WORD1 = ["spank", "spanks", "spanked", "kneift", "haut", "schlägt", "klatscht", "zwickt", "patscht"];
list WORD2 = ["rebekka", "rebekkas", "rebekka's"];
integer Listener;
string Name = "Rebekka";

list Text = ["/me na warte! %1 verdrischt %2 fürchterlich!",
	"/me !!! %1 piekst %2 direkt ins Auge!",
	"/me ! %1 tritt %2 mit Anlauf in den Hintern!",
	"/me !! %1 tritt %2 mal kr?ftig gegen das Schienbein!",
	"/me !!! %1 wirft einen Schuh nach %2!",
	"/me !! %1 beisst %2 in den Finger!",
	"/me !!! %1 reisst %2 die Hand ab und wirft sie den Hunden zum Frass vor!",
	"/me !! %1 bohrt ihren Absatz %2 tief in den Fuss!",
	"/me !! %1 wirft verschiedene schwere Gegenstände nach %2!"
	];
        
integer Check(string msg)
{
    integer i;
    integer x = 0;
    msg = llToLower(msg);
    list l = llParseString2List(msg, [" ", ",",";","."],[]);
    for(i = 0; i < llGetListLength(l); i++) if(llListFindList(WORD1, [llList2String(l, i)]) != -1) x++;
    if(x == 0) return FALSE;
    x = 0;
    for(i = 0; i < llGetListLength(l); i++) if(llListFindList(WORD2, [llList2String(l, i)]) != -1) x++;
    if(x == 0) return FALSE;
    return TRUE;
}

string Answer(string s1, string s2)
{
    string s = llList2String(Text, (integer)llFrand(llGetListLength(Text)));
    list l = llParseString2List(s, ["%1"], []);
    s = llList2String(l, 0) + s1 + llList2String(l, 1);
    l = llParseString2List(s, ["%2"], []);
    s = llList2String(l, 0) + s2 + llList2String(l, 1);
    return s;
}

default
{
	on_rez(integer start_param)
	{
		list l = llParseString2List(llKey2Name(llGetOwner()), [" "], []);
		Name = llList2String(l, 0);
		string s = llToLower(Name);;
		WORD2 = [s, s + "s", s + "'s"];
		llSetAlpha(1, ALL_SIDES);
		llListenRemove(Listener);
		Listener = llListen(0, "", NULL_KEY, "");
	}
	attach(key attached)
	{
		if(attached != NULL_KEY) llSetAlpha(0, ALL_SIDES);
	}
	listen(integer channel, string name, key id, string message)
	{
		if(llGetOwner() == llGetOwnerKey(id)) return;
		list l = llParseString2List(message, [" "], []);
		if(Check(message))
		{
			string s = llGetObjectName();
			string s1 = llList2String(l, 0);
			if(llToLower(s1) == "/me")
			{
				key k = llGetOwnerKey(id);
				s1 = llKey2Name(k);
				l = llParseString2List(s1, [" "], []);
				s1 = llList2String(l, 0);
			}
			llSetObjectName("Auaa");
			llSay(0, Answer(Name, s1));
			llSetObjectName(s);
		}
	}
}