/obj/nahkampf_waffe.c /obj/wurf_waffe.c /obj/schuss_waffe.c /obj/defensiv_waffe.c Folgendes gilt fuer alle Waffen gemeinsam: 1. Initialisieren der Waffen: init_weapon(string kategorie, int max_schaden_in_prozent, int min_schaden_in_prozent, int leben_in_prozent) kategorie: Die Art der Waffe. Folgende Waffenarten gibt es: Nahkampfwaffen: axt, degen, kurzschwert, keule, langschwert, messer, peitsche, saebel, stock Schusswaffen: armbrust, blasrohr, bogen, schleuder Wurfwaffen: speer, wurfmesser Defensivwaffen: grossschild, kleinschild max_schaden_in_prozent: Welchen Schaden bzw. Schutz die Waffe in der Hand eines Experten anrichten/haben darf. 100 steht dabei fuer eine durchschnittliche Waffe, 200 das maximal Erlaubte fuer diese Waffenkategorie. min_schaden_in_prozent: Den Schaden bzw. Schutz in der Hand eines Anfaengers. (100: Durchschnitt in dieser Kategorie, 200: Maximum bei dieser Kategorie.) leben_in_prozent: Die Lebensdauer der Waffe. 100 steht auch hier fuer eine durchschnittliche Lebensdauer, 200 fuer das erlaubte Maximum. Grundsaetzlich sollte man Werte ueber 100 beim Schaden und Leben mit seinen Domainlords absprechen. 2. Setzen der fuer diese Waffe noetigen Faehigkeiten. Eine Faehigkeit kann auch mehrmals auftauchen, sie wird dann entsprechend staerker bewertet. void set_used_stats(int *stats) Die Faehigkeiten sind im Include-File stats.h bereits definiert: STAT_STR = Staerke STAT_INT = Intelligenz STAT_CON = Ausdauer STAT_DEX = Geschicklichkeit Voreinstellung: set_used_stats( ({ STAT_STR, STAT_STR, STAT_DEX, STAT_CON }) ); 3. Setzen der Meldung, die erscheint, wenn die Waffe kaputtgeht: void set_broken_message(string Meldung) Am Ende der Meldung muss ein "\n" stehen ! Voreinstellung: set_broken_mesage("PLING!!!!\n"); 4. Setzen des Wertes. void set_value(int Minimal, int Maximal) Der aktuelle Wert wird anhand der noch vorhandenen Lebensdauer berechnet. Im beschaedigten Zustand besitzt sie nur den Wert Minimal, im neuwertigen Zustand den Wert Maximal. Voreinstellung: set_value(0,0); 5. Erweiterte Kurzbeschreibung: Moechte man andere Adjektive fuer anstelle von 'gefuehrt' oder 'beschaedigt' verwenden, so kann man diese mit set_wield_adjektiv(string adjektiv) und set_broken_adjektiv(string adjektiv) setzen. Diese Adjektive werden bei Objekten, die kein short gesetzt haben, als dekliniertes Adjektiv vor das Substantiv gestellt. -- Die folgenden Funktionen benoetigt man im Normalfalle nicht, da -- -- init_weapon bereits entsprechende Einstellungen vornimmt. -- 6. Setzen des Schadens (bzw des Schutzes bei Defensiv-Waffen): void set_damage(int anfaenger, int experte) anfaenger: Mindest-Schaden(-Schutz) den ein Anfaenger mit dieser Waffe erreichen kann. experte: Maximal-Schaden(-Schutz) den ein Experte mit dieser Waffe erreichen kann. Voreinstellung: set_damage(3,10); In /doc/richtlinien/waffen/schlagkraft findet man Richtlinien und Grenzwerte fuer alle Waffen. Ueber die Grenzwerte hinausgehende Schaeden sind VORHER mit den Admins abzusprechen. 7. Damit die Waffe ihren Schaden (Schutz) nicht nur in Abhaengigkeit von den Faehigkeiten und Erfahrungen des Besitzers sondern auch noch anderen Eigenschaften (Zaubertalent, Ansehen etc) des Besitzers UND des Opfers festlegen kann, ruft sie bei jedem Schlag folgende Routine (soweit sie existiert) auf und uebergibt Objekt-Pointer auf den Besitzer und den Feind: int query_extra_damage(object Feind, object Besitzer) Bei /obj/schuss_waffe.c wird diese Routine im Projektil aufgerufen, bei den anderen Waffen in ihnen selbst. Der Wert, den diese Routine zurueckliefert, wird auf den Schaden (Schutz) aufaddiert, d.h. ein positiver Wert ergibt eine Verbesserung, ein negativer Wert eine Verschlechterung. Achtung: Der fuer die Richtlinien berechnete Schaden/Schutz besteht aus normalen Schaden und(!) extra_damage. Falls die Waffe mit init_weapon initialisiert wurde, muss der Schaden also nach unten entsprechend abgeaendert werden. 7. Setzen des Pfades fuer den Erfahrungs-Baum (skill). void set_skill_path(string *pfad) Voreinstellung: set_skill_path( ({ "skill", "offensiv", "haende" }) ); Achtung: Alle vorgesehenen Pfade sind in /doc/richtlinien/waffen/skills aufgefuehrt. Wenn ihr neue Pfade einfuehren wollt, redet zuerst mit Freaky, Garthan, Monty oder Sissi. 8. Setzen der Lebensdauer: void set_life(int Anzahl_Schlaege) Bei jedem Schlag wird das Lebensdauer um 1 verringert. Sinkt sie auf Null, wird die Waffe als beschaedigt markiert. Sie kann repariert werden, indem man set_life(..) erneut aufruft (siehe /doc/richtlinien/waffen/reparatur). Voreinstellung: set_life(300); In /doc/richtlinien/waffen/leben findet man Richtlinien und Grenzwerte fuer alle Waffen. Ueber die Grenzwerte hinausgehende Werte sind VORHER mit den Admins abzusprechen.