public void RemoveExistingEnchantment(Pawn pawn) { Hediff hediff = null; List <Hediff> allHediffs = new List <Hediff>(); allHediffs.Clear(); allHediffs = pawn.health.hediffSet.GetHediffs <Hediff>().ToList(); if (allHediffs != null && allHediffs.Count > 0) { for (int i = 0; i < allHediffs.Count; i++) { hediff = allHediffs[i]; if (hediff.def.defName.Contains("TM_WeaponEnchantment")) { HediffComp_EnchantedWeapon ewComp = hediff.TryGetComp <HediffComp_EnchantedWeapon>(); if (ewComp != null) { CompAbilityUserMagic comp = ewComp.enchanterPawn.GetComp <CompAbilityUserMagic>(); if (comp != null) { comp.weaponEnchants.Remove(pawn); } } pawn.health.RemoveHediff(hediff); } } } }
public void RemoveExistingEnchantment(Pawn pawn) { var allHediffs = pawn.health.hediffSet.GetHediffs <Hediff>(); foreach (var hediff in allHediffs) { if (hediff.def.defName.Contains("TM_WeaponEnchantment")) { HediffComp_EnchantedWeapon ewComp = hediff.TryGetComp <HediffComp_EnchantedWeapon>(); if (ewComp != null) { CompAbilityUserMagic comp = ewComp.enchanterPawn.GetComp <CompAbilityUserMagic>(); if (comp != null) { comp.weaponEnchants.Remove(pawn); } } pawn.health.RemoveHediff(hediff); } } }
public void ApplyEnchantment(Pawn pawn) { HediffDef hediff = null; float rnd = Rand.Range(0, 1f); if (rnd < .25f) { hediff = TorannMagicDefOf.TM_WeaponEnchantment_FireHD; TM_MoteMaker.ThrowGenericMote(ThingDef.Named("Mote_Heat"), pawn.DrawPos, pawn.Map, 1f, .2f, .1f, .8f, Rand.Range(-30, 30), .3f, Rand.Range(-30, 30), Rand.Range(0, 360)); MoteMaker.ThrowFireGlow(pawn.Position, pawn.Map, 1f); } else if (rnd < .5f) { hediff = TorannMagicDefOf.TM_WeaponEnchantment_IceHD; TM_MoteMaker.ThrowGenericMote(ThingDef.Named("Mote_Ice"), pawn.DrawPos, pawn.Map, 1f, .2f, .1f, .8f, Rand.Range(-30, 30), .3f, Rand.Range(-30, 30), Rand.Range(0, 360)); } else if (rnd < .75f) { hediff = TorannMagicDefOf.TM_WeaponEnchantment_LitHD; MoteMaker.ThrowLightningGlow(pawn.DrawPos, pawn.Map, 1f); MoteMaker.ThrowSmoke(pawn.DrawPos, pawn.Map, 1f); } else { hediff = TorannMagicDefOf.TM_WeaponEnchantment_DarkHD; TM_MoteMaker.ThrowGenericMote(ThingDef.Named("Mote_Shadow"), pawn.DrawPos, pawn.Map, 1f, .2f, .1f, .8f, Rand.Range(-30, 30), .3f, Rand.Range(-30, 30), Rand.Range(0, 360)); } HealthUtility.AdjustSeverity(pawn, hediff, .5f + pwrVal); CompAbilityUserMagic comp = this.CasterPawn.GetComp <CompAbilityUserMagic>(); comp.weaponEnchants.Add(pawn); Hediff diff = pawn.health.hediffSet.GetFirstHediffOfDef(hediff, false); HediffComp_EnchantedWeapon ewComp = diff.TryGetComp <HediffComp_EnchantedWeapon>(); ewComp.enchantedWeapon = pawn.equipment.Primary; ewComp.enchanterPawn = this.CasterPawn; }