diff --git a/src/combat.cc b/src/combat.cc index 93fbfbc..349ca84 100644 --- a/src/combat.cc +++ b/src/combat.cc @@ -4167,7 +4167,7 @@ static int _attackFindInvalidFlags(Object* critter, Object* item) // 0x4240DC static int attackComputeCriticalFailure(Attack* attack) { - attack->attackerFlags |= DAM_HIT; + attack->attackerFlags &= ~DAM_HIT; if (attack->attacker != NULL && _critter_flag_check(attack->attacker->pid, CRITTER_INVULNERABLE)) { return 0; @@ -4668,7 +4668,7 @@ void _apply_damage(Attack* attack, bool animated) bool attackerIsCritter = attacker != NULL && FID_TYPE(attacker->fid) == OBJ_TYPE_CRITTER; bool v5 = attack->defender != attack->oops; - if (attackerIsCritter && (attacker->data.critter.combat.results & DAM_DEAD) != 0) { + if (attackerIsCritter && (attacker->data.critter.combat.results & DAM_DEAD) == 0) { _set_new_results(attacker, attack->attackerFlags); // TODO: Not sure about "attack->defender == attack->oops". _damage_object(attacker, attack->attackerDamage, animated, attack->defender == attack->oops, attacker); @@ -5297,7 +5297,7 @@ static void combatAddDamageFlagsDescription(char* dest, int flags, Object* critt strcat(dest, messageListItem.text); } - messageListItem.num = flagsList[flagsListLength - 1]; + messageListItem.num = num + flagsList[flagsListLength - 1]; if (messageListGetItem(&gCombatMessageList, &messageListItem)) { strcat(dest, messageListItem.text); }