public void ResolveEffects(Adventure inAdventure)
    {
        if (!wasEvaded)
        {
            //update most recent source of damage to target
            target.UpdateMostRecentSourceOfDamage(source.name, skill.id, false, wasBackAttack);

            target.stats.Add(statChanges);

            StatusEffect curEffect;
            int          numStatusNegative = 0;
            int          numStatusResisted = 0;

            for (int i = 0; i < statusEffects.Count; i++)
            {
                curEffect = statusEffects[i];

                if (curEffect.IsNegative())
                {
                    numStatusNegative++;
                    if (target.HasItemToPreventStatusEffect(curEffect.type) || target.PassesStatusResistCheck(curEffect.type))
                    {
                        numStatusResisted++;
                        curEffect.MarkAsResisted();
                    }
                    else
                    {
                        target.ApplyStatusEffect(curEffect);
                    }
                }
                else
                {
                    target.ApplyStatusEffect(curEffect);
                }
            }

            int numStatusNegativeReceived = numStatusNegative - numStatusResisted;

            //REMOVED: tracking/recording stats related to status effects

            if (numStatusNegative > 0 && numStatusNegative == numStatusResisted)
            {
                resistedAllNegativeStatuses = true;
            }

            //clear the resisted ones
            statusEffects.RemoveAll(e => e.wasResisted);

            target.stats.EnforceNonzeroForKeys(statChanges.GetKeys());
            target.stats.EnforceLimits();

            //turn target around
            if (turnedTargetAround)
            {
                target.FlipDirection();
            }

            //item earned on hit?
            if (itemIdEarnedOnHit != null)
            {
                inAdventure.AddLoot(new Loot(LootType.ITEM, itemIdEarnedOnHit, 1));
            }

            //stolen loot?
            if (stolenLoot != null)
            {
                inAdventure.AddLootBundle(stolenLoot);
            }

            //exhaustion
            if (turnsExhaustedSourceFor > 0)
            {
                source.SetExhaustedTurns(turnsExhaustedSourceFor);
            }

            //autocrits?
            if (autocritsGiven > 0)
            {
                target.SetAutoCrits(autocritsGiven);
            }

            //huntress capture?
            if (!target.isOre && source.id == CharId.HUNTRESS && target.IsInFaction(Faction.ENEMY) && target.species == Species.CREATURE)
            {
                if (target.stats.Get(Stat.hp) == 0)
                {
                    wasHuntressCapture = true;
                    EnemyCharacterData ecd = (EnemyCharacterData)target;
                    //Main.services.saveManager.currentFile.IncrementHuntressCaptures(ecd.storageId);
                }
            }
        }
    }