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); } } } }