I have to apologize ahead of time; I didn't test this before trying it out.  Once I did, I found that Parry and Dodge were not working properly.  Anyways, I put the skill checks in fight.c in the wrong spots; here is where they (hopefully) should go.  I've tested this, and it seems to work just fine.
Code:
if (diceroll == 20 || !AWAKE(victim))
    dam = TRUE;
  else if (diceroll == 1)
    dam = FALSE;
  else
    dam = (calc_thaco - diceroll <= victim_ac);
+  if (dam) {
+    if (!IS_NPC(victim) && GET_SKILL(victim, SKILL_PARRY) > 0) {
+          prob = rand_number(1, 101);
+          if (prob < GET_SKILL(victim, SKILL_PARRY)) {
+              chance = rand_number(1, 100);
+              if (chance <= 15) {
+                      send_to_char(ch, "%s parries your blow!\r\n", GET_NAME(victim));
+                      send_to_char(victim, "You parry %s's attack!\r\n", GET_NAME(ch));
+                      dam = FALSE;
+              }
+          }
+          if (GET_SKILL(ch, SKILL_PARRY) > 0) chance = rand_number(1, 100); else chance = 0;
+          if ((chance <= 10) && (GET_SKILL(ch, SKILL_PARRY) < 80) && (GET_SKILL(ch, SKILL_PARRY) > 0)) {
+            send_to_char(ch, "\tGYour parrying skill has gone up!\tn\r\n");
+            GET_SKILL(ch, SKILL_PARRY) += 1;
+          }
+        }
+    else if (!IS_NPC(victim) && GET_SKILL(victim, SKILL_DODGE) > 0) {
+          prob = rand_number(1, 101);
+          if (prob < GET_SKILL(victim, SKILL_DODGE)) {
+            chance = rand_number(1, 100);
+            if (chance <= 15) {
+                    send_to_char(ch, "%s dodges your attack!\r\n", GET_NAME(victim));
+                    send_to_char(victim, "You dodge %s's attack!\r\n", GET_NAME(ch));
+                    dam = FALSE;
+            }
+          }
+          if (GET_SKILL(ch, SKILL_DODGE) > 0) chance = rand_number(1, 100); else chance = 0;
+          if ((chance <= 10) && (GET_SKILL(ch, SKILL_DODGE) < 80) && (GET_SKILL(ch, SKILL_DODGE) > 0)) {
+            send_to_char(ch, "\tGYour dodging skill has gone up!\tn\r\n");
+            GET_SKILL(ch, SKILL_DODGE) += 1;
+          }
+        }
+  }
  if (!dam)
    /* the attacker missed the victim */
    damage(ch, victim, 0, type == SKILL_BACKSTAB ? SKILL_BACKSTAB : w_type);
     else {