MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | /* |
| 2 | Letzte Aenderung: 29.01.01 von Tilly (Zusatz-Abfrage in heart_beat() ) |
| 3 | 25.08.01 von Tiamak (Tillys Abfragen debuggt ;^) |
| 4 | */ |
| 5 | #pragma strong_types,rtt_checks |
| 6 | |
| 7 | inherit "/std/thing"; |
| 8 | #include <properties.h> |
| 9 | #include <language.h> |
| 10 | #include <moving.h> |
| 11 | |
| 12 | int alter; |
| 13 | string furzerWER,furzerWESSEN; |
| 14 | |
| 15 | void create() |
| 16 | { |
| 17 | if(!clonep(this_object())) return; |
| 18 | ::create(); |
| 19 | SetProp(P_SHORT, 0); |
| 20 | SetProp(P_LONG, 0); |
| 21 | SetProp(P_INVIS,1); |
| 22 | SetProp(P_NAME, "Etwas"); |
| 23 | SetProp(P_GENDER, 1); |
| 24 | SetProp(P_ARTICLE,0); |
| 25 | SetProp(P_NOGET,"Haeh?\n"); |
| 26 | AddId("_furz_"); |
| 27 | if (this_player()) |
| 28 | AddId("Furz_"+getuid(this_player())); |
| 29 | alter = 0; |
| 30 | set_heart_beat(1); |
| 31 | } |
| 32 | |
| 33 | void heart_beat() |
| 34 | { |
| 35 | int i; |
| 36 | if(!environment()) |
| 37 | { |
| 38 | set_heart_beat(0); |
| 39 | destruct(this_object()); |
| 40 | return; |
| 41 | } |
| 42 | if(living(environment())) |
| 43 | { |
| 44 | set_heart_beat(0); |
| 45 | destruct(this_object()); |
| 46 | return; |
| 47 | } |
| 48 | if (!alter) |
| 49 | tell_room(environment(), "Fuerchterlicher Gestank erfuellt den Raum.\n"); |
| 50 | alter++; |
| 51 | if (!random(10)) |
| 52 | { |
| 53 | i = random (5); |
| 54 | if (i==0) |
| 55 | tell_room(environment(), furzerWESSEN+" Furz stinkt wirklich grauenerregend.\n"); |
| 56 | if (i==1) |
| 57 | tell_room(environment(), "Du haeltst Dir die Nase zu.\n"); |
| 58 | if (i==2) |
| 59 | tell_room(environment(), "Widerliche Duenste erfuellen den Raum.\n"); |
| 60 | if (i==3) |
| 61 | tell_room(environment(), "Der Furz riecht, als wuerde " + furzerWER +" innerlich verfaulen.\n"); |
| 62 | if (i==4) |
| 63 | tell_room(environment(), "Du musst Dich beinah uebergeben, als " + furzerWESSEN + " Furz in Deine Nase kriecht.\n"); |
| 64 | } |
| 65 | if (alter==45) { |
| 66 | tell_room(environment(), furzerWESSEN + " widerlicher Furz hat sich endlich verzogen.\n"); |
| 67 | destruct(this_object()); |
| 68 | } |
| 69 | } |
| 70 | |
| 71 | |
| 72 | void set_alter(int a) |
| 73 | { alter=a; } |
| 74 | |
| 75 | void set_furzer (object wer) |
| 76 | { |
| 77 | if (objectp(wer)) |
| 78 | { |
| 79 | furzerWER=wer->name(WER); |
| 80 | furzerWESSEN=wer->name(WESSEN); |
| 81 | AddId("Furz_"+getuid(wer)); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | varargs int move(mixed dest, int methods, string direction, string textout,string textin) |
| 86 | { |
| 87 | int erg; |
| 88 | object otherfurz; |
| 89 | |
| 90 | erg=::move(dest,methods,direction,textout,textin); |
| 91 | |
| 92 | // Vanion, 24.09.02: Kann sein, dass das move nich klappt, |
| 93 | // dann sollte das Objekt weg. |
| 94 | if (erg != MOVE_OK || !environment(this_object())) |
| 95 | { |
| 96 | if (!remove()) destruct(this_object()); |
| 97 | return 0; |
| 98 | } |
| 99 | if (this_player()) |
| 100 | { |
| 101 | if (otherfurz=present("Furz_"+getuid(this_player())+" 2",environment())) |
| 102 | { |
| 103 | otherfurz->set_alter(0); |
| 104 | return remove(); |
| 105 | } |
| 106 | } |
| 107 | return erg; |
| 108 | } |