blob: 4225d882c332085a40a50f807a89ec2ddd8da497 [file] [log] [blame]
inherit "/std/thing";
#include <properties.h>
#include <new_skills.h>
#include <sensitive.h>
private action_puste(string str);
private int counter;
void create() {
if (!clonep(this_object())) return;
::create();
counter = 2+random(4);
SetProp(P_NAME, "Pusteblume");
SetProp(P_SHORT, "Eine kleine Pustblume");
SetProp(P_LONG, break_string(
"Eine abgebluehte Pflanze, die jetzt wie ein kleiner, weisser Ball "
"aussieht. Die fiedrigen Samen fliegen bestimmt prima.", 78));
AddDetail("samen", "Er sieht sehr fein und leicht aus.\n");
SetProp(P_GENDER,FEMALE);
SetProp(P_MATERIAL, MAT_MISC_PLANT);
SetProp(P_NOBUY, 1);
SetProp(P_VALUE, random(10));
SetProp(P_INFO, "Starker Wind taete ihr nicht gut.\n");
AddId(({"blume", "pusteblume", "loewenzahn"}));
SetProp(P_COMBATCMDS,(["puste loewenzahn":
([C_HEAL: 5])]));
SetProp(P_SENSITIVE,({({SENSITIVE_ATTACK, DT_AIR, 20}),
({SENSITIVE_INVENTORY, DT_AIR, 20})}));
AddCmd("puste&@ID", #'action_puste, "Puste wen oder was (an)?");
}
private action_puste(string str) {
if(environment()!=this_player()) {
notify_fail("Dazu solltest du "+name(WEN,1)+" haben.\n");
return 0;
}
if (this_player()->QueryProp(P_ATTACK_BUSY)) {
write("Du hast dafuer momentan einfach nicht mehr die Puste.\n");
return 1;
}
this_player()->SetProp(P_ATTACK_BUSY, 1);
if(counter<0) {
write(break_string("Du pustest sinnlos auf "+name(WEN, 2)+".", 78));
say(break_string(this_player()->Name(WER)+
" pustet wie daemlich gegen "+name(WEN, 0)+".", 78));
return 1;
} else {
write(break_string(
"Du pustest "+name(WEN, 2)+" vorsichtig an, einige Samen "
"loesen sich und fliegen taumelnd in deinem Atem davon."+
(counter<0?" Es bleibt nur noch ein nutzloser Strunk.":""), 78));
say(break_string(
this_player()->Name(WER)+" pustet sachte gegen "+name(WEN, 0)+" und "
"du schaust verzueckt den davonfliegenden Samen nach.", 78));
}
object who = this_player()->QueryEnemy();
if(objectp(who)) {
if(!interactive(this_player())) {
who->ModifySkillAttribute(SA_SPEED, 80+random(10), 6);
this_player()->heal_self(5);
} else
who->ModifySkillAttribute(SA_SPEED, 90+random(10), 4);
}
counter--;
if(counter<0) {
call_out(#'remove, 10+random(60));
AddId("strunk");
SetProp(P_NAME, "Strunk");
SetProp(P_SHORT, "Der Strunk einer Pusteblume");
SetProp(P_LONG, "Ein haesslicher, leerer Strunk.\n");
SetProp(P_GENDER, MALE);
}
return 1;
}
private void notify_env_destroy() {
object ob = environment();
while(ob && !living(ob)) ob = environment(ob);
if(objectp(ob))
tell_object(ob, "Der Wind zerblaest "+name(WEN, 2)+".\n");
remove(1);
}
varargs void trigger_sensitive_attack() {
notify_env_destroy();
}
varargs void trigger_sensitive_inv() {
notify_env_destroy();
}
varargs int remove(int silent) {
if(!silent && living(environment()))
tell_object(environment(), "Du wirfst "+name(WEN, 2)+" weg.\n");
return ::remove(silent);
}