#pragma strict_types
#include <skills.h>
#define LOG_SKILLS 1
#define LOG(X) "/secure/tool"->adm_log("SKILLS",ctime()+" "+X);
mapping weapon_skills;
static mapping tmp_weapon_skills;
public int increase_skill( string skill, int amount );
public int set_skill( string skill, int amount );
public int remove_skill( string skill );
public int query_skill( string skill );
public int increase_tmp_skill( string skill, int amount );
public int remove_tmp_skill( string skill );
public int query_tmp_skill( string skill );
public int increase_skill( string skill, int amount ) {
if (!weapon_skills) weapon_skills = ([ ]);
weapon_skills[ skill ] += amount;
if (interactive(this_object()) && this_player() != this_object()) {
LOG(this_player()->query_real_name()+" increased "+this_object()->query_real_name()+
" "+skill+" by "+amount);
}
#if LOG_SKILLS
if (this_player() && this_object()->query_is_player())
log_file( "SKILLS", this_object()->query_name()+"'s "+ skill +
" increased by "+amount+" by "+
this_player()->query_real_name()+"\n");
#endif
if (weapon_skills[ skill ] > MAX_DISPLAY_SKILL)
weapon_skills[skill] = MAX_DISPLAY_SKILL;
if (weapon_skills[ skill ] < 0 )
weapon_skills[skill] = 0;
return weapon_skills[skill];
}
public int set_skill( string skill, int amount ) {
if (!weapon_skills) weapon_skills = ([ ]);
weapon_skills[ skill ] = amount;
if (interactive(this_object()) && this_player() != this_object()) {
LOG(this_player()->query_real_name()+" set "+this_object()->query_real_name()+
" "+skill+" by "+amount);
}
#if LOG_SKILLS
if (this_player() && this_object()->query_is_player())
log_file( "SKILLS", this_object()->query_name()+"'s "+
skill + " set to "+amount+" by "+
this_player()->query_real_name()+"\n");
#endif
if (weapon_skills[ skill ] > MAX_DISPLAY_SKILL)
weapon_skills[skill] = MAX_DISPLAY_SKILL;
if (weapon_skills[ skill ] < 0 )
weapon_skills[skill] = 0;
return weapon_skills[skill];
}
public int remove_skill( string skill ) {
int amount;
if (!weapon_skills) weapon_skills = ([ ]);
amount = weapon_skills[skill];
if (interactive(this_object()) && this_player() != this_object()) {
LOG(this_player()->query_real_name()+" removed "+this_object()->query_real_name()+
" "+skill);
}
#if LOG_SKILLS
if (this_player() && this_object()->query_is_player())
log_file( "SKILLS", this_object()->query_name()+"'s "+
skill + " removed by "+
this_player()->query_real_name()+"\n");
#endif
m_delete(weapon_skills,skill);
return amount;
}
public int query_skill( string skill ) {
int amount;
if (!weapon_skills) weapon_skills = ([ ]);
if (!tmp_weapon_skills) tmp_weapon_skills = ([ ]);
amount = weapon_skills[skill] + tmp_weapon_skills[skill];
return amount;
}
public int increase_tmp_skill( string skill, int amount ) {
if (!tmp_weapon_skills) tmp_weapon_skills = ([ ]);
tmp_weapon_skills[ skill ] += amount;
return tmp_weapon_skills[skill];
}
public int remove_tmp_skill( string skill ) {
int amount;
if (!tmp_weapon_skills) tmp_weapon_skills = ([ ]);
amount = tmp_weapon_skills[skill];
m_delete(tmp_weapon_skills,skill);
return amount;
}
public int query_tmp_skill( string skill ) {
if (!tmp_weapon_skills) tmp_weapon_skills = ([ ]);
return tmp_weapon_skills[skill];
}
mapping query_weapon_skills() {
if (!weapon_skills) return ([]);
return copy_mapping(weapon_skills);
}
mapping query_tmp_weapon_skills() {
if (!tmp_weapon_skills) return ([]);
return copy_mapping(tmp_weapon_skills);
}