protected override void Impact(Thing hitThing) { Map map = base.Map; base.Impact(hitThing); OccultFireUtility.TryStartFireIn(base.Position, map, 0.1f); }
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); } }
//--------------------------- 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); } } }