示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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;
        }