• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Summony nie zostawiają corpse

Kuczmen91

New Member
Joined
Feb 3, 2014
Messages
5
Reaction score
0
Witam.

Pracuję nad własnym OTS. Mam jednak taki problem, że summony nie zostawiają po sobie corpse. Np. w przypadku Slime tylko matka zrzuca corpse, a jej summony znikaja. Oto mój plik creature.cpp
Prosiłbym o pomoc, bo długo z tym walczę i nie daję już rady. Pozdrawiam.

Myślę, że winna jest funkcja dropCorpse:

Code:
bool Creature::dropCorpse()
{
    if (!lootDrop && getMonster() && !(!g_config.getBoolean(ConfigManager::SUMMONS_DROP_CORPSE) && master && master->getPlayer())) {
        if (master) {
            //scripting event - onDeath
            const CreatureEventList& deathEvents = getCreatureEvents(CREATURE_EVENT_DEATH);
            for (CreatureEvent* deathEvent : deathEvents) {
                deathEvent->executeOnDeath(this, nullptr, _lastHitCreature, _mostDamageCreature, lastHitUnjustified, mostDamageUnjustified);
            }
        }

        g_game.addMagicEffect(getPosition(), NM_ME_POFF);
    } else {
        Item* splash = nullptr;

        switch (getRace()) {
            case RACE_VENOM:
                splash = Item::CreateItem(ITEM_FULLSPLASH, FLUID_GREEN);
                break;

            case RACE_BLOOD:
                splash = Item::CreateItem(ITEM_FULLSPLASH, FLUID_BLOOD);
                break;

            default:
                break;
        }

        Tile* tile = getTile();

        if (splash) {
            g_game.internalAddItem(tile, splash, INDEX_WHEREEVER, FLAG_NOLIMIT);
            g_game.startDecay(splash);
        }

        Item* corpse = getCorpse();
        if (corpse) {
            g_game.internalAddItem(tile, corpse, INDEX_WHEREEVER, FLAG_NOLIMIT);
            g_game.startDecay(corpse);
        }

        //scripting event - onDeath
        const CreatureEventList& deathEvents = getCreatureEvents(CREATURE_EVENT_DEATH);
        for (CreatureEvent* deathEvent : deathEvents) {
            deathEvent->executeOnDeath(this, corpse, _lastHitCreature, _mostDamageCreature, lastHitUnjustified, mostDamageUnjustified);
        }

        if (corpse) {
            dropLoot(corpse->getContainer());
        }
    }

    return true;
}

Pomoże ktoś?
 
Back
Top