/**
* This effect has a classification
* of "other.bunny".
* <p>
* @author Turrican
* @classification other.bunny
* @see help::effects
*/
#include <effect.h>
#include <broadcaster.h>
#include <player.h>
#include "path.h"
/** @ignore yes */
string query_classification() { return "other.bunny"; }
/** @ignore yes */
string query_shadow_ob() { return SHADOWS + "bunny"; }
/** @ignore yes */
void beginning(object player, int time) {
player->submit_ee("rand_mess", ({ 25, 40 }), EE_CONTINUOUS);
player->submit_ee(0, time, EE_REMOVE);
player->add_extra_look(this_object());
player->set_position("hopping about");
player->add_alias("rabbit");
} /* beginning() */
/** @ignore yes */
int merge_effect(object player, int time1, int time2) {
int newtime;
newtime = time2 + player->expected_tt();
if (newtime < 0) {
newtime = 0;
}
player->submit_ee(0, newtime, EE_REMOVE);
return newtime;
} /* merge_effect() */
void restart(object player) {
player->add_extra_look(this_object());
player->set_position("hopping about");
player->add_alias("rabbit");
} /* restart() */
/** @ignore yes */
void end(object player, int time) {
if (!player->query_property("dead")) {
tell_object(player, "Your craving for carrots disappears.\n");
tell_room(environment(player), player->one_short() + " suddenly looks "
"a lot more human.\n", player);
}
player->set_position("standing");
player->remove_extra_look(this_object());
player->remove_alias("rabbit");
} /* end() */
/** @ignore yes */
void rand_mess(object player) {
string str = "I DON'T HAVE FLUFFY RABBIT EARS!";
switch (random(7)) {
case 0:
tell_object(player, "You hop around aimlessly.\n");
tell_room(environment(player), player->one_short() + " hops around "
"aimlessly.\n", player);
break;
case 1:
tell_object(player, "You twitch your nose cutely.\n");
tell_room(environment(player), player->one_short() + " twitches " +
player->query_possessive() + " nose cutely.\n", player);
break;
case 2:
tell_object(player, "You twitch your tail happily.\n");
tell_room(environment(player), player->one_short() + " twitches " +
player->query_possessive() + " tail happily.\n", player);
break;
case 3:
tell_object(player, "People passing by take pictures of you!\n");
tell_room(environment(player), "People passing by take pictures of " +
player->one_short() + ".\n", player);
break;
case 4:
if ((player->query_property("player") == 1) && !creatorp(player) ) {
if (player->adjust_sp(-SHOUT_COST * ((strlen(str) / 10) + 1)) < 0) {
break;
}
player->adjust_max_sp(-(SHOUT_COST * ((strlen(str) / 10) + 1) / 10));
}
player->remove_hide_invis("hiding");
tell_object(player, "You yell: " + str + "\n");
user_event(player, "person_shout",
player->one_short() + " yells",
str, "common", environment(player)->query_co_ord(),
(100 * (player->query_con() + player->query_str())) / 3);
environment(player)->event_person_shout(0, player->one_short() + " yells",
str, "common");
BROADCASTER->npc_shout_event(player, player->one_short() + " yells", str,
"common", environment(player)->query_co_ord(),
(100 * (player->query_con() +
player->query_str())) / 3);
break;
case 5:
tell_object(player, "You feel a craving for carrots.\n");
tell_room(environment(player), player->one_short() + " searches around "
"for a carrot.\n", player);
break;
case 6:
tell_room(environment(player), "Someone yells: Show us your pink "
"fluff!\n");
break;
}
} /* rand_mess() */
/** @ignore yes */
string extra_look(object player) {
int *enums;
enums = player->effects_matching("other.bunny");
if (!sizeof(enums)) {
player->remove_extra_look(this_object());
return "";
}
return "You can't help but notice that " + player->query_possessive() +
" ears seem rather long, fluffy and definately pink.\n" +
capitalize(player->query_possessive()) + " nose twitches nervously.\n";
}/* end query_extra_look() */