public override void ReceiveExtraAI(BinaryReader reader) { projectile.owner = reader.ReadInt32(); int starType = reader.ReadInt32(); int crossType = reader.ReadInt32(); int moonType = reader.ReadInt32(); projectile.damage = reader.ReadInt32(); bool minionCaster = reader.ReadBoolean(); Caster = minionCaster ? Main.projectile[reader.ReadInt32()] : (Entity)Main.player[reader.ReadInt32()]; List <GlyphModifier> modifiers = new List <GlyphModifier>(); int count = reader.ReadInt32(); for (int i = 0; i < count; i += 1) { modifiers.Add(GlyphModifier.Modifiers[reader.ReadInt32()]); } if (Source == null) { Source = new ProceduralSpell(mod); Source.Glyphs[(byte)GlyphType.Star].SetDefaults(starType, true); Source.Glyphs[(byte)GlyphType.Cross].SetDefaults(crossType, true); Source.Glyphs[(byte)GlyphType.Moon].SetDefaults(moonType, true); Source.ModifierOverride = modifiers; } foreach (Item item in Source.Glyphs) { Glyph glyph = (Glyph)item.modItem; if (glyph.GetAiAction() != null) { Ai.Add(glyph.GetAiAction()); } if (glyph.GetInitAction() != null) { Inits.Add(glyph.GetInitAction()); } if (glyph.GetImpactAction() != null) { Impacts.Add(glyph.GetImpactAction()); } if (glyph.GetKillAction() != null) { Kills.Add(glyph.GetKillAction()); } } foreach (GlyphModifier modifier in modifiers) { if (modifier.Impact != null) { Impacts.Add(modifier.Impact); } if (modifier.Draw != null) { SpellDraw.Add(modifier.Draw); } if (modifier.Init != null) { Inits.Add(modifier.Init); } } Initialize(); }