/**
* This shadow goes with the "mock.block.npc" effects and adds functions
* that allow its args to be manipulated.
*
* @author Tannah
**/
inherit "/std/effect_shadow";
/**
* Removes a skill from the list of those blocked from mocking and returns
* the list of those still blocked.
* @param skills - the skills to remove from the list of those blocked.
* @return skills - those skills still blocked from mocking
**/
string *unblock_skills( string *skills ) {
set_arg( arg() - skills );
/* was that the last skill? If so, remove the effect */
if( !sizeof( arg() ) ) {
remove_this_effect();
return ({});
}
return arg();
} /* unblock_skills() */
/**
* Determines whether or not a skill is blocked from being mocked. mocked
* can be a leaf (ie: "magic.methods.mental.charming") or a branch (ie:
* "magic" or "magic.spells"). If all skills are blocked, this always
* returns 1.
* @param mocked - the skill to compare to the list of those blocked.
* @return 1 if the skill is blocked from mocking, 0 if not.
**/
int query_mock_block( string mocked ) {
/* Are all skills blocked from mocking? Easy! */
if( member_array( "all", arg() ) != -1 ) {
return 1;
}
/* check each skill that's blocked */
foreach( string skill in arg() ) {
if( !strsrch( mocked, skill ) ) {
return 1;
}
}
} /* query_mock_block() */