// NOTE these values are found in merc.h // for determining what type of weapon it is // weapon class // -------------------------- // #define WEAPON_EXOTIC 0 // #define WEAPON_SWORD 1 // #define WEAPON_DAGGER 2 // #define WEAPON_SPEAR 3 // #define WEAPON_MACE 4 // #define WEAPON_AXE 5 // #define WEAPON_FLAIL 6 // #define WEAPON_WHIP 7 // #define WEAPON_POLEARM 8 // -------------------------- // victim = you the char who is parrying // ch = attacking char who is trying to kill you // YOU NEED TO HAVE OBJ_DATA *victim_weapon, ch_weapon; // in your check_parry function // The reason for checking for both victim and ch // get_skill > 0 is because we dont want to bug out // on a division by 0 // I am not sure stockrom has spear so you may need to // take out the checks for spear in the below code // I did not code this with cases, because it is easier // for the new coder to look at this and adjust it // Add the below code in fight.c: check_parry //============================================ OBJ_DATA *victim_weapon; OBJ_DATA *ch_weapon; int nomatch_calc; int match_calc; // Kracus- Just add this into check_parry // Adjust the chance calcs as needed // Only adding bonus to chance if both characters // are wielding weapons, because parry is usually // defined as a defense against a weapon attack if (((victim_weapon = get_eq_char(victim,WEAR_WIELD)) != NULL) && ((ch_weapon = get_eq_char(ch,WEAR_WIELD)) != NULL)) { // ch's weapon is not same as victim's weapon // So, lets just base this on the victim's weapon // cause parry should mainly be determined // by the weapon that is trying to parry // If exotic +2 // If victim skill is 100 +2 // If victim skill is > 49 and < 100 and // is wielding that type of weapon then +2 // If victim has no skill with weapon victim is // wielding then +0 if (ch_weapon->value[0] != victim_weapon->value[0]) { if (victim_weapon->value[0] == 0) // exotic nomatch_calc = 2; else if (victim_weapon->value[0] == 1 && get_skill(victim,gsn_sword) > 0) // sword nomatch_calc = get_skill(victim,gsn_sword)/50; else if (victim_weapon->value[0] == 2) && get_skill(victim,gsn_dagger) > 0) // dagger nomatch_calc = get_skill(victim,gsn_dagger)/50; else if (victim_weapon->value[0] == 3) && get_skill(victim,gsn_spear) > 0) // spear nomatch_calc = get_skill(victim,gsn_spear)/50; else if (victim_weapon->value[0] == 4) && get_skill(victim,gsn_mace) > 0) // mace nomatch_calc = get_skill(victim,gsn_mace)/50; else if (victim_weapon->value[0] == 5) && get_skill(victim,gsn_axe) > 0) // axe nomatch_calc = get_skill(victim,gsn_axe)/50; else if (victim_weapon->value[0] == 6) && get_skill(victim,gsn_flail) > 0) // flail nomatch_calc = get_skill(victim,gsn_flail)/50; else if (victim_weapon->value[0] == 7) && get_skill(victim,gsn_axe) > 0) // whip nomatch_calc = get_skill(victim,gsn_whip)/50; else if (victim_weapon->value[0] == 9) && get_skill(victim,gsn_axe) > 0) // polearm nomatch_calc = get_skil(victim,gsn_polearm)/50; else nomatch_calc = 0; // Add on the chance bonuses chance += nomatch_calc; } else { // ch's weapon is same as victim's weapon // no checks for ch skill cause we know // in this else victim weapon == ch weapon // If exotic +2 // If victim and ch HAS Skill skill/skill // If ch NO Skill skill/50 // IF victim and ch NO Skill 0 if (victim_weapon->value[0] == 0) // exotic match_calc = 1; // victim HAS Skill and ch HAS Skill else if (victim_weapon->value[0] == 1 && get_skill(victim,gsn_sword) > 0 && get_skill(ch,gsn_sword) > 0) // sword match_calc = get_skill(victim,gsn_sword)/ get_skill(ch,gsn_sword); else if (victim_weapon->value[0] == 2 && get_skill(victim,gsn_dagger) > 0 && get_skill(ch,gsn_dagger) > 0) // dagger match_calc = get_skill(victim,gsn_dagger)/ get_skill(ch,gsn_dagger); else if (victim_weapon->value[0] == 3 && get_skill(victim,gsn_spear) > 0 && get_skill(ch,gsn_spear) > 0) // spear match_calc = get_skill(victim,gsn_spear)/ get_skill(ch,gsn_spear); else if (victim_weapon->value[0] == 4 && get_skill(victim,gsn_mace) > 0 && get_skill(ch,gsn_mace) > 0) // mace match_calc = get_skill(victim,gsn_mace)/ get_skill(ch,gsn_mace); else if (victim_weapon->value[0] == 5 && get_skill(victim,gsn_axe) > 0 && get_skill(ch,gsn_axe) > 0) // axe match_calc = get_skill(victim,gsn_axe)/ get_skill(ch,gsn_axe); else if (victim_weapon->value[0] == 6 && get_skill(victim,gsn_flail > 0 && get_skill(ch,gsn_flail > 0) // flail match_calc = get_skill(victim,gsn_flail)/ get_skill(ch,gsn_flail); else if (victim_weapon->value[0] == 7 && get_skill(victim,gsn_whip) > 0 && get_skill(ch,gsn_whip) > 0) // whip match_calc = get_skill(victim,gsn_whip)/ get_skill(ch,gsn_whip); else if (victim_weapon->value[0] == 8 && get_skill(victim,gsn_polearm) > 0 && get_skill(ch,gsn_polearm) > 0) // polearm match_calc = get_skill(victim,gsn_polearm)/ get_sklll(ch,gsn_polearm); // ch NO Skill else if (victim_weapon->value[0] == 1 && get_skill(victim,gsn_sword) > 0 && get_skill(ch,gsn_sword) < 1) // sword match_calc = get_skill(victim,gsn_sword)/50; else if (victim_weapon->value[0] == 2 && get_skill(victim,gsn_dagger) > 0 && get_skill(ch,gsn_dagger) < 1) // dagger match_calc = get_skill(victim,gsn_dagger)/50; else if (victim_weapon->value[0] == 3 && get_skill(victim,gsn_spear) > 0 && get_skill(ch,gsn_spear) < 1) // spear match_calc = get_skill(victim,gsn_spear)/50; else if (victim_weapon->value[0] == 4 && get_skill(victim,gsn_mace) > 0 && get_skill(ch,gsn_mace) < 1) // mace match_calc = get_skill(victim,gsn_mace)/50; else if (victim_weapon->value[0] == 5 && get_skill(victim,gsn_axe) > 0 && get_skill(ch,gsn_axe) < 1) // axe match_calc = get_skill(victim,gsn_axe)/50; else if (victim_weapon->value[0] == 6 && get_skill(victim,gsn_flail > 0 && get_skill(ch,gsn_flail < 1) // flail match_calc = get_skill(victim,gsn_flail)/50; else if (victim_weapon->value[0] == 7 && get_skill(victim,gsn_whip) > 0 && get_skill(ch,gsn_whip) < 1) // whip match_calc = get_skill(victim,gsn_whip)/50; else if (victim_weapon->value[0] == 8 && get_skill(victim,gsn_polearm) > 0 && get_skill(ch,gsn_polearm) < 1) // polearm match_calc = get_skill(victim,gsn_polearm)/50; else match_calc = 0; // victim NO Skill +0 // Add on the chance bonuses chance += match_calc; } } End if both weapons not NULL