On Sat, 25 Oct 1997, Tony Skinner wrote: > I just implemented dual wield under Circle v3.0 pl11. I basically > allocated another bit vector to represent the dual wield position then > incorporated checks within act.item.c to verify no hold and no shield if > char dual wielding a weapon. > My problem is now trying to get fight.c code to differentiate between the > wielded weapon and secondary weapon for displaying the weapon attack > message (weapon type) and differentiating between the two weapon's > differing damages. What I did was chopped hit() into two different functions: npc_hit() and pc_hit(). I had to do this because mobs can have up to 16 attacks, and that made it necesary to have two different function calls. :( Here is a small snippet of my hit() function: if (IS_NPC(ch)) { for (attack_num = 0; attack_num <= NUM_MOB_ATTACKS; attack_num++) { npc_hit(ch, victim, type, attack_num); } } else { pc_hit(ch, victim, type, WEAR_WIELD_1); if (number(1, 120) <= GET_SKILL(ch, SKILL_DOUBLE_ATTACK)) pc_hit(ch, victim, type, WEAR_WIELD_1); if (number(1, 120) <= GET_SKILL(ch, SKILL_FLORENTINE)) { pc_hit(ch, victim, type, WEAR_WIELD_2); if (number(1, 120) <= GET_SKILL(ch, SKILL_DOUBLE_ATTACK)) pc_hit(ch, victim, type, WEAR_WIELD_2); } } If they are an NPC, then it loops through all 16 of the mob's attacks and performs them. If they are a player, then they get one hit for sure, and a chance (based on skill) for extra attacks from Florentine and Double Attack. You may notice that there is no error checking for if they have a weapon in hand. That check is done inside pc_hit(). Any questions? John Evans <evansj@hi-line.net> May the source be with you. +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST