moving.c-Dateireferenz

#include <thing/properties.h>
#include <moving.h>
#include <defines.h>
Include-Abhängigkeitsdiagramm für moving.c:

gehe zum Quellcode dieser Datei

Funktionen

varargs int DoUnwield (int silent)
varargs int move (mixed dest, int method)
varargs int remove (int silent)

Variablen

inherit std thing moving

Dokumentation der Funktionen

varargs int DoUnwield ( int  silent  ) 

Definiert in Zeile 403 der Datei combat.c.

Benutzt break_string(), cl, doUnwieldMessage(), InformUnwield(), M_NOCHECK, ME, name, P_CURSED, P_PARRY, P_PARRY_WEAPON, P_TOTAL_AC, P_TOTAL_WC, P_UNWIELD_FUNC, P_UNWIELD_TIME, P_WEAPON, P_WIELDED, PARRY_NOT, PARRY_ONLY, QueryProp(), SetProp() und WEN.

Wird benutzt von move(), remove() und unwield().

00404 {   closure cl;
00405     int     parry;
00406     mixed   res;
00407     object  wielded_by;
00408 
00409     // Waffen, die nicht gezueckt sind, kann man natuerlich nicht
00410     // wegstecken
00411     if (!objectp(wielded_by=QueryProp(P_WIELDED)))
00412     {
00413         return 0;
00414     }
00415 
00416     // Ist eine UnwieldFunc gesetzt, wird diese aufgerufen
00417     if ( objectp(res=QueryProp(P_UNWIELD_FUNC)) &&
00418          !(res->UnwieldFunc(ME,silent,wielded_by)) ) 
00419     {
00420         // Eine Meldung muss die UnwieldFunc schon selbst ausgeben.
00421         return 1;
00422     }
00423 
00424     // Eine verfluchte Waffe kann man natuerlich nicht wegstecken - aber
00425     // auch da gibts Ausnahmefaelle, wie z.B. den Tod eines Spielers
00426     if ((res=QueryProp(P_CURSED)) && !(silent&M_NOCHECK)) 
00427     {
00428         if (stringp(res))
00429         {
00430             // Stand in P_CURSED ein String? Dann diesen ausgeben
00431             tell_object(wielded_by, 
00432                 (res[<1]=='\n' ? res : break_string(res,78)));
00433         }
00434         else
00435         {
00436             // Sonst eine Standard-Meldung ausgeben
00437             tell_object(wielded_by, break_string(
00438                 "Du kannst "+name(WEN)+" nicht wegstecken.",78));
00439         }
00440         return 1;
00441     }
00442 
00443     // Ok, jetzt ist alles klar, die (Parier)Waffe wird weggesteckt
00444     parry=QueryProp(P_PARRY);
00445     cl=symbol_function("SetProp",wielded_by);
00446 
00447     if (parry<PARRY_ONLY)
00448     {
00449         // Eintrag als Waffe im Spieler loeschen
00450         funcall(cl,P_WEAPON, 0);
00451     }
00452     if (parry>PARRY_NOT)
00453     {
00454         // Eintrag als Parierwaffe im Spieler loeschen
00455         funcall(cl,P_PARRY_WEAPON, 0);
00456     }
00457 
00458     // Im Spieler die Zeit setzen, zu der er zuletzt eine Waffe weggesteckt
00459     // hat.
00460     funcall(cl,P_UNWIELD_TIME,time());
00461 
00462     // Meldung ausgeben, wenn silent-Flag nicht gesetzt ist
00463     if (!silent) 
00464     {
00465         doUnwieldMessage(wielded_by);
00466     } 
00467 
00468     // Die Haende, die bisher von der Waffe benutzt wurden, freigeben
00469     wielded_by->FreeHands(ME);
00470     SetProp(P_WIELDED, 0);
00471 
00472     // Waffen koennen Attribute aendern/blockieren. Also muessen diese
00473     // nach dem Wegstecken aktualisiert werden
00474     wielded_by->deregister_modifier(ME);
00475     wielded_by->UpdateAttributes();
00476 
00477     // P_TOTAL_AC/P_TOTAL_WC im Spieler aktualisieren. Da dort Attribute
00478     // eingehen, kann das erst hier gemacht werden.
00479     if (parry<PARRY_ONLY)
00480     {
00481         wielded_by->QueryProp(P_TOTAL_WC);
00482     }
00483     if (parry>PARRY_NOT)
00484     {
00485         wielded_by->QueryProp(P_TOTAL_AC);
00486     }
00487 
00488     // Inform-Funktion aufrufen
00489     InformUnwield(wielded_by, silent);
00490 
00491     // Fertig mit dem Wegstecken
00492     return 1;
00493 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

varargs int move ( mixed  dest,
int  method 
)

Definiert in Zeile 24 der Datei moving.c.

Benutzt DoUnwield(), M_NOCHECK, M_SILENT, move(), P_WIELDED und QueryProp().

00025 {
00026   DoUnwield( method & (M_SILENT|M_NOCHECK));
00027   if ((method & M_NOCHECK) || (!QueryProp(P_WIELDED)))
00028     return ::move(dest, method );
00029 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

varargs int remove ( int  silent  ) 

Definiert in Zeile 31 der Datei moving.c.

Benutzt DoUnwield(), P_WIELDED, QueryProp() und remove().

00032 {
00033   DoUnwield( silent );
00034   if (!QueryProp(P_WIELDED))
00035     return ::remove( silent );
00036 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:


Variablen-Dokumentation

inherit std thing moving

Definiert in Zeile 13 der Datei moving.c.

Erzeugt am Thu Jun 3 14:40:58 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3