#include <armour.h>
#include <combat.h>
inherit "/cmds/base";
string construct_shield_message( object player, int not_self );
int cmd() {
string mess;
mess = construct_shield_message(this_player(), 0);
/* If they have shields, give message,
* otherwise, tell them the bad news. */
if( sizeof( mess ) ) {
tell_object( this_player(), "Arcane protection status:\n" + mess );
} else {
tell_object( this_player(), "You do not have any arcane protection.\n" );
}
return 1;
}
string construct_shield_message( object player, int not_self ) {
int i, j;
string mess;
mixed *callbacks;
string *res;
class armour_callback cb;
class combat_special cs;
mess = "";
callbacks = player->query_armour_callbacks();
for( i = 0; i < sizeof(callbacks); i++) {
for(j=0; j < sizeof(callbacks[i]); j++) {
cb = callbacks[i][j];
if(cb->callback[0]) {
res = (cb->callback[0])->query_arcane_shields(player);
if(sizeof(res))
mess += " * $I$+3,+0=$C$" + res[not_self] + "$I$-3,-0=\n";
}
}
}
callbacks = player->query_specials();
for(i=0; i<sizeof(callbacks); i++) {
cs = callbacks[i];
if(cs->callback[0]) {
res = (cs->callback[0])->query_arcane_shields(player);
if(sizeof(res))
mess += " * $I$+3,+0=$C$" + res[not_self] + "$I$-3,-0=\n";
}
}
return mess;
}
mixed *query_patterns() {
return ({ "", (: cmd :) });
}