private string *TrainedSkills = ({}); private int Befriendable, Trainable, Commandable; private object Owner = 0; mixed direct_befriend_liv(){ return 1; } mixed direct_abandon_liv(){ return 1; } mixed direct_train_liv(){ return this_object()->CanTrain(); } mixed direct_train_liv_to_str(){ return this_object()->CanTrain(); } mixed direct_untrain_liv(){ return this_object()->CanTrain(); } mixed direct_untrain_liv_to_str(){ return this_object()->CanTrain(); } mixed direct_command_liv(){ return this_object()->CanCommand(); } mixed direct_command_liv_to_str(){ return this_object()->CanCommand(); } object GetMountOwner(){ return Owner; } object SetMountOwner(object who){ if(who) Owner = who; return Owner; } int SetCanBefriend(int i){ if(!i) Befriendable = 0; else Befriendable = i; return Befriendable; } int CanBefriend(object who){ int owner_char = -1; int player_char = -1; if(!Befriendable) return 0; if(Owner && objectp(Owner)) owner_char = Owner->GetStat("charisma")["level"]; player_char = who->GetStat("charisma")["level"]; if(player_char > Befriendable && player_char > owner_char) return 1; return 0; } int CanAbandon(object who){ if(!Befriendable) return 0; if(Owner && Owner == who) return 1; else return 0; } int SetCanTrain(int i){ if(!i) Trainable = 0; else Trainable = 1; return Trainable; } int CanTrain(){ return Trainable; } int CanUnTrain(){ return Trainable; } int SetCanCommand(int i){ if(!i) Commandable = 0; else Commandable = 1; return Commandable; } int eventBefriend(object who){ if(!CanBefriend(who)){ write("You fail to befriend "+this_object()->GetName()+"."); say(who->GetName()+" fails to befriend "+this_object()->GetName()+ ". "+capitalize(nominative(who))+" looks very silly!"); return 1; } write("You befriend "+this_object()->GetName()+"."); say(who->GetName()+" befriends "+this_object()->GetName()+ ". Awwww, it's such a cute sight to see!"); Owner = who; return 1; } int eventAbandon(object who){ if(!CanAbandon(who)){ write("You can't abandon "+this_object()->GetName()+"."); return 1; } write("You abandon "+this_object()->GetName()+"."); say(who->GetName()+" abandons "+this_object()->GetName()+ ". How sad!"); Owner = 0; return 1; } varargs int eventTrainLiving(object who, string what){ if(what) what = replace_string(what, "to ", ""); if(!who) who = this_player(); if(Owner != who) { write("You are not this mount's owner."); return 0; } if(what && member_array(what, TrainedSkills) != -1){ write(this_object()->GetName()+" already possesses that skill."); return 1; } if(!what || what == "") return 1; else { tell_player(who,"You train "+this_object()->GetShort()+"."); tell_room(environment(who),who->GetName()+" trains "+ this_object()->GetShort()+".", ({ who,this_object() }) ); TrainedSkills += ({ what }); } return 1; } varargs int eventUnTrainLiving(object who, string what){ if(what) what = replace_string(what, "to ", ""); if(!who) who = this_player(); if(Owner != who) { write("You are not this mount's owner."); return 0; } if(!what || what == ""){ Owner = 0; } if(what && member_array(what, TrainedSkills) != -1){ TrainedSkills -= ({ what }); } tell_player(who,"You untrain "+this_object()->GetShort()+"."); tell_room(environment(who),who->GetName()+" untrains "+ this_object()->GetShort()+".", ({ who,this_object() }) ); return 1; } string *GetTrainedSkilles(){ return copy(TrainedSkills); } string *SetTrainedSkills(string *skills){ if(skills) TrainedSkills = skills; return copy(TrainedSkills); } string eventCommandNPC(object who, string cmd){ //if(this_object()->GetStat("intelligence") < 10 return "foo"; }