public static void RemoveRadiusEffect(String strItemClass, ref Block myBlock) { ItemClass itemClass = ItemClass.GetItemClass(strItemClass, false); if (itemClass.Properties.Values.ContainsKey("ActivatedBuff")) { String strBuff = itemClass.Properties.Values["ActivatedBuff"]; string[] array5 = strBuff.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); // Grab the current radius effects List <BlockRadiusEffect> list2 = myBlock.RadiusEffects.OfType <BlockRadiusEffect>().ToList(); foreach (string text4 in array5) { int num12 = text4.IndexOf('('); int num13 = text4.IndexOf(')'); BlockRadiusEffect item = default(BlockRadiusEffect); if (num12 != -1 && num13 != -1 && num13 > num12 + 1) { item.radius = StringParsers.ParseFloat(text4.Substring(num12 + 1, num13 - num12 - 1), 0, -1, NumberStyles.Any); item.variable = text4.Substring(0, num12); } else { item.radius = 1f; item.variable = text4; } if (list2.Contains(item)) { list2.Remove(item); } } myBlock.RadiusEffects = list2.ToArray(); } }
private void updateBlockRadiusEffects() { Vector3i blockPosition = base.GetBlockPosition(); int num = World.toChunkXZ(blockPosition.x); int num2 = World.toChunkXZ(blockPosition.z); this.startedThisFrame = new List <string>(); for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { Chunk chunk = (Chunk)this.world.GetChunkSync(num + j, num2 + i); if (chunk != null) { DictionaryList <Vector3i, TileEntity> tileEntities = chunk.GetTileEntities(); for (int k = 0; k < tileEntities.list.Count; k++) { TileEntity tileEntity = tileEntities.list[k]; if (tileEntity.IsActive(this.world)) { BlockValue block = this.world.GetBlock(tileEntity.ToWorldPos()); Block block2 = Block.list[block.type]; if (block2.RadiusEffects != null) { float distanceSq = base.GetDistanceSq(tileEntity.ToWorldPos().ToVector3()); for (int l = 0; l < block2.RadiusEffects.Length; l++) { BlockRadiusEffect blockRadiusEffect = block2.RadiusEffects[l]; if (distanceSq <= blockRadiusEffect.radius * blockRadiusEffect.radius && !this.Buffs.HasBuff(blockRadiusEffect.variable)) { this.Buffs.AddBuff(blockRadiusEffect.variable, -1, true, false, false); } } } } } } } } }