/* Filename : master.c * Description : the guildmaster of the example guild * * written : 30-05-1998 - Gunner * last modified : 31-05-1998 - Gunner * HTML-Version : 13-02-2000 - Ghorwin */ #include "/doc/crashcourse/course13/include/guild.h" // All file definitions #include "/doc/crashcourse/course13/include/master.h" // All prototypes inherit I_DAEMON; /* * join_guild : Called whenever someone tries to join the guild */ int join_guild(object player) { string name; if (!interactive(player)) // Monsters can't join! { tell_object(player,"Don't f**king try it!\n"); return 0; } name = Q_RNAME(player); if (name == "guest") // Guest may NOT join! { tell_object(player,"You are merely a guest here, so you're not " "allowed inside the guild. Get yourself a real player, and " "come back later...\n"); return 0; } if (Q_GUILD(player)) // Only free adventurers may join... { if (Q_GUILD(player) == GUILD_MASTER) tell_object(player,"You're already a member, silly!\n"); else tell_object(player,"You are already a member of a guild, so why " "not stick with it?\n"); return 0; } if (file_size(JOIN_MSG) > 0) cat(JOIN_MSG); player->set_guild(GUILD_MASTER); player->set_guildinfo(0); // If there is a channel for the guild. player->command("turn on magesofdarkness"); player->command("alias cr chat magesofdarkness:"); player->command("alias cer chat emote magesofdarkness:"); player->command("alias cfr chat feeling magesofdarkness:"); player->set_title("the newbie Mage Of Darkness"); check_member(player); player->save_me(); return 1; } /* * remove_member : This is where the member loses his/her powers. Poor thing... */ void remove_member(object member) { member->set_guild(0); member->set_guildinfo(0); member->remove_cmdpath(GUILD_COMPATH); if (member->query_tmp_prop("mod_member_prot")) { member->add_tmp_prop("resist_magic",-15); member->add_tmp_prop("prot_magic",-15); member->add_tmp_prop("vuln_fire",-15); member->add_tmp_prop("night_vision",-50); member->remove_tmp_prop("mod_member_prot"); } member->save_me(); } /* * leave_guild : Called whenever someone leaves the guild */ int leave_guild(object player) { string mess; if (!interactive(player)) { tell_object(player,"Now, how are you supposed to do that?\n"); return 0; } if (!Q_GUILD(player)) { tell_object(player,"Ehm. Someone ever told you, you're a few " "sandwiches short of a picnic?\n"); return 0; } if (Q_GUILD(player) != GUILD_MASTER) { tell_object(player,"How are you going to do that? You're not even " "a member of this guild.\n"); return 0; } if (file_size(LEAVE_MSG) > 0) cat(LEAVE_MSG); remove_member(player); return 1; } /* * check_member : Checks and adds to make sure the player is properly set up */ void check_member(object member) { string name = Q_RNAME(member); if (member_array(GUILD_COMPATH,member->query_cmdpaths()) < 0) member->add_cmdpath(GUILD_COMPATH); // Mage's Of Darkness are not very vulnerable to magic, but // a bit flammable. ;-) Plus they can see in darkness. if (!member->query_tmp_prop("mod_member_prot")) // Make sure it's not { // done more than once... member->add_tmp_prop("resist_magic",15); member->add_tmp_prop("prot_magic",15); member->add_tmp_prop("vuln_fire",15); member->add_tmp_prop("night_vision",50); member->add_tmp_prop("mod_member_prot",1); } } /*** The rest are all applies that the mudlib calls whenever certain ***/ /*** events occur. ***/ /* * member_enter : Called whenever a guildmember enters the game */ int member_enters(object member) { if (file_size(ENTERGAME_MSG) > 0) // Display News if member hasn't read it. { int filetime = stat(ENTERGAME_MSG)[1]; if (member->query_lastlog() < filetime) cat(ENTERGAME_MSG); else write("Mage Of Darkness news was last updated " + ctime(filetime) + ".\n"); } check_member(member); if (!is_wiz(member)) // Move member into guildroom. member->move(GUILD_CENTER); return 1; } /* * member_exits : Called whenever a member exits the game */ int member_exits(object member) { if (file_size(EXITGAME_MSG) > 0) cat(EXITGAME_MSG); return 1; } /* * member_extra_look : Displayed every time someone look at the player */ string member_extra_look(object member) { return "This dark figure is enshrouded in a cold darkness.\n"; } /* * member_finger_info : Displayed whenever someone fingers the player */ string member_finger_info(string name) { return "This is one of the Mages Of Darkness.\n"; } /* * query_cmdpath : This should return an array of guild command paths. The * command parser uses this info to find the guild members' * commands. */ string* query_cmdpaths() { return ({ GUILD_COMPATH }); }