77 lines
2.4 KiB
C
77 lines
2.4 KiB
C
#include <lib.h>
|
|
|
|
private static mapping Teaching = ([]);
|
|
private static int OfferExpires = 60;
|
|
|
|
int direct_teach_str_to_liv(){ return 1;}
|
|
int direct_teach_liv_to_str(){ return 1;}
|
|
|
|
varargs int CanTeach(object whom, string what){
|
|
if(whom == this_object()){
|
|
write("You are not a member of the autodidact guild.");
|
|
return 0;
|
|
}
|
|
if(member_array(what, keys(this_object()->GetSpellBook())) != -1){
|
|
int magpoint = this_object()->GetMagicPoints();
|
|
int maxmagpoint = this_object()->GetMaxMagicPoints();
|
|
if(magpoint < maxmagpoint){
|
|
write("You must have your full mana to teach magic.");
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int eventOfferTeaching(object who, string what){
|
|
if(!CanTeach(who, what)){
|
|
write("You are unable to teach that.");
|
|
return 0;
|
|
}
|
|
//if(!Teaching[who] || !Teaching[who][0] || Teaching[who][0] != what){
|
|
tell_player(who,this_object()->GetName()+
|
|
" offers to teach you "+what+".");
|
|
tell_player(this_object(),"You offer to teach "+what+
|
|
" to "+who->GetName()+".");
|
|
//}
|
|
Teaching[who] = ({ what, time() });
|
|
return 1;
|
|
}
|
|
|
|
int eventTeach(object who, string what){
|
|
int magpoint = this_object()->GetMagicPoints();
|
|
if(!CanTeach(who, what)){
|
|
write("They can't teach that.");
|
|
return 0;
|
|
}
|
|
if(!Teaching[who]){
|
|
write("They're not interested in teaching you anything.");
|
|
return 0;
|
|
}
|
|
if(time() - Teaching[who][1] > OfferExpires){
|
|
write("It's too late. Their offer to teach you expired.");
|
|
map_delete(Teaching,who);
|
|
return 0;
|
|
}
|
|
if( !who->eventLearnSpell(what) ){
|
|
write("You are not prepared for that spell!");
|
|
return 0;
|
|
}
|
|
|
|
who->eventPrint(this_object()->GetName() + " touches your forehead and gives "
|
|
"you knowledge of " + what + ".");
|
|
environment()->eventPrint(this_object()->GetName() + " touches " +
|
|
possessive_noun(who) +
|
|
" forehead and gives " +
|
|
objective(who) + " knowledge of " +
|
|
what + ".", ({ who, this_object() }));
|
|
this_object()->eventPrint("You touch "+possessive_noun(who) +
|
|
" forehead and give " + objective(who) + " knowledge of " +
|
|
what + ".");
|
|
if(!creatorp(this_object())){
|
|
this_object()->AddMagicPoints(-magpoint);
|
|
}
|
|
map_delete(Teaching,who);
|
|
return 1;
|
|
}
|