void Combat::combatTileEffects(const SpectatorVec& list, Creature* caster, Tile* tile, const CombatParams& params)
{
if(params.itemId)
{
Player* player = NULL;
if(caster)
{
if(caster->getPlayer())
player = caster->getPlayer();
else if(caster->isPlayerSummon())
player = caster->getPlayerMaster();
}
uint32_t itemId = params.itemId;
if(player)
{
bool [B][COLOR="Red"]pzLock[/COLOR][/B] = false;
if(g_game.getWorldType() == WORLD_TYPE_NO_PVP || tile->hasFlag(TILESTATE_NOPVPZONE))
{
switch(itemId)
{
case ITEM_FIREFIELD:
itemId = ITEM_FIREFIELD_SAFE;
break;
case ITEM_POISONFIELD:
itemId = ITEM_POISONFIELD_SAFE;
break;
case ITEM_ENERGYFIELD:
itemId = ITEM_ENERGYFIELD_SAFE;
break;
case ITEM_MAGICWALL:
itemId = ITEM_MAGICWALL_SAFE;
break;
case ITEM_WILDGROWTH:
itemId = ITEM_WILDGROWTH_SAFE;
break;
default:
break;
}
}
else if(params.isAggressive && !Item::items[itemId].blockPathFind)
[B][COLOR="Red"]pzLock[/COLOR][/B] = true;
player->addInFightTicks([COLOR="Red"][B]pzLock[/B][/COLOR]);
}
if(Item* item = Item::CreateItem(itemId))
{
if(caster)
item->setOwner(caster->getID());
if(g_game.internalAddItem(caster, tile, item) == RET_NOERROR)
g_game.startDecay(item);
else
delete item;
}
}
if(params.tileCallback)
params.tileCallback->onTileCombat(caster, tile);
if(params.effects.impact != MAGIC_EFFECT_NONE && (!caster || !caster->isGhost()
|| g_config.getBool(ConfigManager::GHOST_SPELL_EFFECTS)))
g_game.addMagicEffect(list, tile->getPosition(), params.effects.impact);
}