コード例 #1
0
        protected override void Impact(Thing hitThing)
        {
            Map map = base.Map;

            base.Impact(hitThing);
            OccultFireUtility.TryStartFireIn(base.Position, map, 0.1f);
        }
コード例 #2
0
 public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
 {
     base.Apply(target, dest);
     if (target.Thing != null)
     {
         OccultFireUtility.TryAttachOccultFire(target.Thing, 0.5f);
         Log.Message("Casted spell: " + parent.def.label);
     }
 }
コード例 #3
0
        //---------------------------

        new protected void TrySpread()
        {
            IntVec3 position = base.Position;
            bool    flag;

            if (Rand.Chance(0.8f))
            {
                position = base.Position + GenRadial.ManualRadialPattern[Rand.RangeInclusive(1, 8)];
                flag     = true;
            }
            else
            {
                position = base.Position + GenRadial.ManualRadialPattern[Rand.RangeInclusive(10, 20)];
                flag     = false;
            }
            if (!position.InBounds(base.Map) || !Rand.Chance(FireUtility.ChanceToStartFireIn(position, base.Map)))
            {
                return;
            }
            if (!flag)
            {
                CellRect startRect = CellRect.SingleCell(base.Position);
                CellRect endRect   = CellRect.SingleCell(position);
                if (GenSight.LineOfSight(base.Position, position, base.Map, startRect, endRect))
                {
                    if (occult)
                    {
                        ((OccultSpark)GenSpawn.Spawn(CultsDefOf.Cults_OccultSpark, base.Position, base.Map)).Launch(this, position, position, ProjectileHitFlags.All);
                    }
                    else
                    {
                        ((Spark)GenSpawn.Spawn(ThingDefOf.Spark, base.Position, base.Map)).Launch(this, position, position, ProjectileHitFlags.All);
                    }
                }
            }
            else
            {
                if (occult)
                {
                    OccultFireUtility.TryStartFireIn(position, base.Map, 0.1f);
                }
                else
                {
                    FireUtility.TryStartFireIn(position, base.Map, 0.1f);
                }
            }
        }