Shield Block Snippit by Xrakisis act_obj.c put this in void wear_obj if (CAN_WEAR(obj, ITEM_WEAR_SHIELD)) { if (!remove_obj(ch, WEAR_SHIELD, fReplace)) return; if (!IS_NPC(ch) && !IS_FORM(ch, ITEM_WEAR_SHIELD)) { send_to_char("You are unable to wear it.\n\r", ch); return; } act("$n equips $p on $s arm.", ch, obj, NULL, TO_ROOM); act("You equip $p on your arm.", ch, obj, NULL, TO_CHAR); equip_char(ch, obj, WEAR_SHIELD); return; } at the top of void wear_obj you will see some shield stuff with the WIELD and HOLD stuff. delete this. the above bit of code replaces it. act_info.c replace Off Hand with whatever you want to call a shield Buckler, Worn as Shield etc in const where_name fight.c put this somewhere at the top of the file bool check_shieldblock args (( CHAR_DATA *ch, CHAR_DATA *victim, int dt )); fight.c: place: if (check_shieldblock(ch, victim, dt)) return; right under if (check_parry(ch, victim, dt)) return; place this (below), below check dodge function /* * Check for shield block. */ bool check_shieldblock(CHAR_DATA * ch, CHAR_DATA * victim, int dt) { OBJ_DATA *obj = NULL; int chance = 0; if (IS_NPC(victim)) obj = NULL; else { if ((obj = get_eq_char(victim, WEAR_SHIELD)) == NULL) return FALSE; } if (!IS_AWAKE(victim)) return FALSE; if (!IS_NPC(ch)) chance -= (ch->wpn[dt - 1000] * 0.1); else chance -= (ch->level * 0.2); if (!IS_NPC(victim)) chance += (victim->wpn[0] * 0.5); else chance += victim->level; /* cutting corners */ if (chance > 80) chance = 80; else if (chance < 20) chance = 20; /* cutting again */ if (chance > 90) chance = 90; if (number_percent() >= chance) return FALSE; act("You Shield Block $n's attack.", ch, NULL, victim, TO_VICT); act("$N Shield Blocks your attack.", ch, NULL, victim, TO_CHAR); return TRUE; }