I hope one of you guys can see where the problem is then ? I have no idea.
/* control the fights going on. Called every 2 seconds from comm.c. */
void perform_violence(void)
{
struct char_data *ch, *tch;
for (ch = combat_list; ch; ch = next_combat_list) {
next_combat_list = ch->next_fighting;
if (FIGHTING(ch) == NULL || IN_ROOM(ch) != IN_ROOM(FIGHTING(ch))) {
stop_fighting(ch);
continue;
}
if (IS_NPC(ch)) {
if (GET_MOB_WAIT(ch) > 0) {
GET_MOB_WAIT(ch) -= PULSE_VIOLENCE;
continue;
}
GET_MOB_WAIT(ch) = 0;
if (GET_POS(ch) < POS_FIGHTING) {
GET_POS(ch) = POS_FIGHTING;
act("$n scrambles to $s feet!", TRUE, ch, 0, 0, TO_ROOM);
}
if ((GET_HIT(FIGHTING(ch)) <= 12) && (MOB_FLAGGED(ch, MOB_MERCY))) {
stop_fighting(FIGHTING(ch));
stop_fighting(ch);
act("$n says: Blessed are the merciful, for they shall obtain mercy!", FALSE, ch, 0, 0, TO_ROOM);
}
// re-wield weapon lost to SKILL_DISARM
if (LOST_WEAPON(ch)) {
if (DISARM_WAIT(ch) > 0) {
DISARM_WAIT(ch) -= PULSE_VIOLENCE;
} else {
do_wield(ch, OBJN(LOST_WEAPON(ch), ch), 0, 0);
LOST_WEAPON(ch) = NULL;
}
}
}
if (GET_POS(ch) < POS_FIGHTING) {
send_to_char(ch, "You can't fight while sitting!!\r\n");
continue;
}
if (GET_MOVE(ch) <= 0)
continue;
/* if (GROUP(ch)) {
while ((tch = (struct char_data *) simple_list(GROUP(ch)->members)) != NULL) { */
if (GROUP(ch) && GROUP(ch)->members && GROUP(ch)->members->iSize) {
struct iterator_data Iterator;
tch = (struct char_data *) merge_iterator(&Iterator, GROUP(ch)->members);
for (; tch ; tch = next_in_list(&Iterator)) {
if (tch == ch)
continue;
if (!IS_NPC(tch) && !PRF_FLAGGED(tch, PRF_AUTOASSIST))
continue;
if (IN_ROOM(ch) != IN_ROOM(tch))
continue;
if (FIGHTING(tch))
continue;
if (GET_POS(tch) != POS_STANDING)
continue;
if (!CAN_SEE(tch, ch))
continue;
do_assist(tch, GET_NAME(ch), 0, 0);
}
remove_iterator(&Iterator);
}
{
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
GET_MOVE(ch) -= 1;
}
/* more attacks */
//2nd attack**************************************************************** 2nd, 3rd, and 4th attack - bs cjl
//Mob multi attacks by level ************ NPC ATTACKS begin
if (IS_NPC(ch)) {
int level=GET_LEVEL(ch);
while (level>24)
{level-=24;
if (FIGHTING(ch) == NULL || ch->in_room != FIGHTING(ch)->in_room) {
stop_fighting(ch);
continue;
}
if (rand_number(1,GET_LEVEL(ch)) < (GET_LEVEL(ch)/2))
{
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
GET_MOVE(ch) -= 1;
}
}
}
if (!IS_NPC(ch)) {
if (FIGHTING(ch) == NULL || ch->in_room != FIGHTING(ch)->in_room) {
stop_fighting(ch);
continue;
}
if (rand_number( 1, 101 ) < (GET_SKILL(ch, SKILL_ATTACK2) / 2)) /* 50% chance to activate */
{
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
GET_MOVE(ch) -= 1;
}
}
//3rd attack*****************************************************************
if (!IS_NPC(ch)) {
if (FIGHTING(ch) == NULL || ch->in_room != FIGHTING(ch)->in_room) {
stop_fighting(ch);
continue;
}
if (rand_number( 1, 101 ) < (GET_SKILL(ch, SKILL_ATTACK3) / 4)) /* 25% chance to activate */
{
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
GET_MOVE(ch) -= 1;
}
}
//4th attack*****************************************************************
if (!IS_NPC(ch)) {
if (FIGHTING(ch) == NULL || ch->in_room != FIGHTING(ch)->in_room) {
stop_fighting(ch);
continue;
}
if (rand_number( 1, 101 ) < (GET_SKILL(ch, SKILL_ATTACK4) / 8 )) /* 12.5% chance to activate */
{
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
GET_MOVE(ch) -= 1;
}
}
//haste attack*****************************************************************
if (!IS_NPC(ch)) {
if (FIGHTING(ch) == NULL || ch->in_room != FIGHTING(ch)->in_room) {
stop_fighting(ch);
continue;
}
if (IS_AFFECTED(ch, AFF_HASTE) && (!IS_AFFECTED(ch, AFF_SLOW)))
{
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
GET_MOVE(ch) -= 1;
}
}
//end snippet here*****************************************************************
/* more attacks end */
if (MOB_FLAGGED(ch, MOB_SPEC) && GET_MOB_SPEC(ch) && !MOB_FLAGGED(ch, MOB_NOTDEADYET)) {
char actbuf[MAX_INPUT_LENGTH] = "";
(GET_MOB_SPEC(ch)) (ch, ch, 0, actbuf);
}
}
} */ end of file */