blob: 79e24f901a934b8a9ea91d44931b61cce60e5931 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001inherit "/std/thing";
2
3#include <properties.h>
4#include <language.h>
5
6int tm;
7int gestopft = 0;
8int rauchen = 0;
9
10string des;
11
12string _query_long(){
13 string s;
14 s="Ein einfaches Holzpfeifchen: Ohne Verzierungen oder besondere "
15 "Extras, sondern schlicht und stabil genug fuer ein Abenteurerleben. "
16 "Es eignet sich hervorragend dazu, einmal zu entspannen und guten "
17 "Tabak zu geniessen";
18 if(gestopft) s+=". Das Pfeifchen ist gestopft";
19 if(rauchen) s+=" und angezuendet.";
20 else s+=".";
21 return(break_string(s,78));
22}
23
24string _query_short(){
25 if(rauchen) return "Ein Pfeifchen (angezuendet)";
26 if(gestopft) return "Ein Pfeifchen (gestopft)";
27 else return "Ein Pfeifchen";
28}
29
30protected void create(){
31 if(!clonep(this_object()))return ;
32 thing::create();
33 tm=0;
34 SetProp(P_GENDER,NEUTER);
35 SetProp(P_NAME,"Pfeifchen");
36 SetProp(P_WEIGHT,10);
37 SetProp(P_VALUE,0);
38 AddId(({"pfeifchen","holzpfeifchen"}));
39 SetProp(P_NODROP,1);
40 SetProp(P_NEVERDROP,1);
41 SetProp(P_MATERIAL,MAT_IRON_WOOD);
42 AddCmd(({"rauch","rauche"}),"cm_smoke");
43 AddCmd(({"stopf","stopfe"}),"cm_stopf");
44}
45
46static int cm_stopf(string str){
47 string s1,s2;
48 object ob;
49 _notify_fail("Syntax: stopfe pfeifchen mit <was>\n");
50 if(!str) return 0;
51 if(sscanf(str,"%s mit %s",s1,s2)==2){
52 if(id(s1)){
53 if(!ob=present(s2,this_player())){
54 write("So etwas hast Du doch gar nicht bei Dir.\n");
55 return 1;
56 }
57 if((ob->id("tabak")) || (ob->QueryMaterial(MAT_CANNABIS)>50)){
58 if(rauchen){
59 write(break_string("Du rauchst Dein Pfeifchen doch gerade. Damit "
60 "musst Du schon warten, bis Du fertig bist.",78));
61 return 1;
62 }
63 if(gestopft){
64 write(break_string("Du hast Dein Pfeifchen bereits gestopft. Es "
65 "liesse sich nun vortrefflich rauchen.",78));
66 return 1;
67 }
68 else{
69 write(break_string("Du stopfst Dein Pfeifchen mit "+
70 ob->name(WEM,1)+
71 " und freust Dich schon darauf, es zu rauchen.",78));
72 tell_room(environment(this_player()),this_player()->Name()+
73 " stopft ein Pfeifchen.\n",({this_player()}));
74 if(!ob->GetSmokeDescription()) des="Es scheint sich um keinen "
75 "besonders guten Tabak zu handeln. Nun, ja. Besser als nichts "
76 "immerhin.";
77 else des=ob->GetSmokeDescription();
78 if(!ob->QueryProp(P_AMOUNT))
79 ob->remove();
80 else
81 ob->AddAmount(-1);
82 gestopft = 1;
83 return 1;
84 }
85 }
86 write(break_string("Das laesst sich aber schlecht rauchen, such "
87 "Dir lieber einen ordentlichen Tabak.",78));
88 return 1;
89 }
90 }
91 return(0); //non-void Funktion, Zesstra
92}
93
94static int cm_smoke(string str){
MG Mud User88f12472016-06-24 23:31:02 +020095 _notify_fail("Was moechtest Du rauchen?\n");
96 if(!str) return 0;
97 if(!id(str)) return 0;
98 if(rauchen){
99 write("Das machst Du doch bereits, nicht so hektisch.\n");
100 return 1;
101 }
102 if(!gestopft){
103 write("Vielleicht solltest Du Dein Pfeifchen erst mal stopfen?\n");
104 return 1;
105 }
106 if(tm > time()){
107 write("Nana, ein Pfeifchen geniesst man. Sei mal nicht so hektisch.\n");
108 return 1;
109 }
110 tm = time()+20;
111 rauchen = 1;
112 tell_room(environment(this_player()),this_player()->Name()+" raucht in "
113 +"Ruhe ein Pfeifchen.\n",({this_player()}));
114 write("Du rauchst in Ruhe Dein Pfeifchen.\n");
115 write(break_string(des,78));
116 if(find_call_out("smoke2")==-1)
Zesstra61701662022-10-05 23:56:09 +0200117 call_out("smoke2",20);
MG Mud User88f12472016-06-24 23:31:02 +0200118 return 1;
119}
120
Zesstra61701662022-10-05 23:56:09 +0200121void smoke2(){
122 if(!rauchen || !this_player() || environment()!=this_player())
123 return 0;
124 tell_object(this_player(),
125 "Genuesslich pustest Du ein paar Rauchkringel in die Luft.\n");
126 tell_room(environment(this_player()),this_player()->Name()+" pustet "
127 "genuesslich ein paar Rauchkringel in die Luft.\n",({this_player()}));
MG Mud User88f12472016-06-24 23:31:02 +0200128 if(find_call_out("smoke3")==-1)
Zesstra61701662022-10-05 23:56:09 +0200129 call_out("smoke3",20);
MG Mud User88f12472016-06-24 23:31:02 +0200130}
131
Zesstra61701662022-10-05 23:56:09 +0200132void smoke3(){
133 if(!rauchen || !this_player() || environment()!=this_player())
134 return 0;
135 tell_object(this_player(),
136 break_string("Genuesslich pustest Du ein paar Rauchkringel "
137 "in die Luft, rauchst Dein Pfeifchen auf und klopfst es aus.",78));
138 tell_room(environment(this_player()),break_string(
139 this_player()->Name()+" pustet genuesslich ein paar Rauchkringel in die "
140 "Luft, beendet das Rauchpaeuschen und klopft "+
141 (this_player()->QueryProp(P_GENDER)==1?"sein":"ihr")+
142 " Pfeifchen aus.",78),({this_player()}));
MG Mud User88f12472016-06-24 23:31:02 +0200143 rauchen = 0;
144 gestopft = 0;
MG Mud User88f12472016-06-24 23:31:02 +0200145}