@@ -6,18 +6,21 @@ minetest.register_entity('sorcery:spell_projectile_flamebolt',{ initial_properties = { visual = "sprite"; - -- use_texture_alpha = true; + use_texture_alpha = true; textures = {'sorcery_fireball.png'}; - groups = {immortal = 1}; visual_size = { x = 2, y = 2, z = 2 }; physical = true; collide_with_objects = true; pointable = false; glow = 14; static_save = false; + shaded = false; }; + on_activate = function(self) + self.object:set_armor_groups{immortal = 1} + end; on_step = function(self,dtime,collision) local pos = self.object:get_pos() if not self._meta then self._meta = { age = 0; lastemit = 0; emitters = {} } @@ -29,8 +32,15 @@ goto destroy elseif (self._meta.age - self._meta.lastemit) < 3 then goto collcheck end + + -- fireballs dissipate when entering antimagic fields + do local probe = sorcery.spell.probe(self.object:get_pos()) + if probe.disjunction and not self._meta.ignore_disjunction then + sorcery.vfx.cast_sparkle(nil,sorcery.lib.color(255,90,10),3,0.3,self.object:get_pos()) + goto destroy + end end ::emit:: do self._meta.lastemit = self._meta.age local spawn = function(num, life_min, life_max, size_min, size_max, gl, speed, img)