Projectile *Spell::GetProjectile(Scriptable *self, int header, int level, const Point &target) const { SPLExtHeader *seh = GetExtHeader(header); if (!seh) { Log(ERROR, "Spell", "Cannot retrieve spell header!!! required header: %d, maximum: %d", header, (int) ExtHeaderCount); return NULL; } Projectile *pro = core->GetProjectileServer()->GetProjectileByIndex(seh->ProjectileAnimation); if (seh->FeatureCount) { pro->SetEffects(GetEffectBlock(self, target, header, level, seh->ProjectileAnimation)); } return pro; }
//returns a projectile loaded with the effect queue Projectile *Item::GetProjectile(Scriptable *self, int header, const Point &target, ieDwordSigned invslot, int miss) const { ITMExtHeader *eh = GetExtHeader(header); if (!eh) { return NULL; } ieDword idx = eh->ProjectileAnimation; Projectile *pro = core->GetProjectileServer()->GetProjectileByIndex(idx); int usage ; if (header>= 0) usage = header; else usage = GetWeaponHeaderNumber(header==-2); if (!miss) { EffectQueue *fx = GetEffectBlock(self, target, usage, invslot, idx); pro->SetEffects(fx); } return pro; }