Advertisement
Guest User

Untitled

a guest
Nov 19th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. void Creature::dropCorpse(DeathList deathList)
  2. {
  3.     if (random_range(1, 100) < 100) {
  4.         Item* soulItem = Item::CreateItem(1506, 1);
  5.         if (soulItem) {
  6.             Tile* tile = getTile();
  7.             if (tile) {
  8.                 soulItem->setActionId(2160);
  9.                 g_game.addAnimatedText(getPosition(), random_range(1, 256), "EXTRA EXP!");
  10.                 g_game.internalAddItem(NULL, tile, soulItem, INDEX_WHEREEVER, FLAG_NOLIMIT);
  11.                 return;
  12.             }
  13.             delete soulItem;
  14.         }
  15.     }
  16.  
  17.     Item* corpse = createCorpse(deathList);
  18.     if(corpse)
  19.         corpse->setParent(VirtualCylinder::virtualCylinder);
  20.  
  21.     bool deny = false;
  22.     CreatureEventList deathEvents = getCreatureEvents(CREATURE_EVENT_DEATH);
  23.     for(CreatureEventList::iterator it = deathEvents.begin(); it != deathEvents.end(); ++it)
  24.     {
  25.         if(!(*it)->executeDeath(this, corpse, deathList) && !deny)
  26.             deny = true;
  27.     }
  28.  
  29.     if(!corpse)
  30.         return;
  31.  
  32.     corpse->setParent(NULL);
  33.     if(deny)
  34.         return;
  35.  
  36.     Tile* tile = getTile();
  37.     if(!tile)
  38.         return;
  39.  
  40.     Item* splash = NULL;
  41.     switch(getRace())
  42.     {
  43.         case RACE_VENOM:
  44.             splash = Item::CreateItem(ITEM_FULLSPLASH, FLUID_GREEN);
  45.             break;
  46.  
  47.         case RACE_BLOOD:
  48.             splash = Item::CreateItem(ITEM_FULLSPLASH, FLUID_BLOOD);
  49.             break;
  50.  
  51.         default:
  52.             break;
  53.     }
  54.  
  55.     if(splash)
  56.     {
  57.         g_game.internalAddItem(NULL, tile, splash, INDEX_WHEREEVER, FLAG_NOLIMIT);
  58.         g_game.startDecay(splash);
  59.     }
  60.  
  61.     g_game.internalAddItem(NULL, tile, corpse, INDEX_WHEREEVER, FLAG_NOLIMIT);
  62.     dropLoot(corpse->getContainer());
  63.     g_game.startDecay(corpse);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement