Browse Source

[hellfire] SpawnLoot

pull/876/head
Anders Jenbo 6 years ago
parent
commit
e3e7451a84
  1. 39
      Source/monster.cpp
  2. 2
      Source/monster.h
  3. 2
      Source/towners.cpp
  4. 2
      comparer-config/hellfire.toml

39
Source/monster.cpp

@ -1787,9 +1787,44 @@ void M_DiabloDeath(int i, BOOL sendmsg)
Monst->_mVar6 = (int)((k - (Monst->_my << 16)) / (double)dist); Monst->_mVar6 = (int)((k - (Monst->_my << 16)) / (double)dist);
} }
#ifdef HELLFIRE
void SpawnLoot(int i, BOOL sendmsg)
{
int nSFX;
MonsterStruct *Monst;
void M_DefilerDeath(int i, BOOL sendmsg) { Monst = &monster[i];
if (QuestStatus(QTYPE_GARB) && Monst->mName == UniqMonst[UMT_GARBUD].mName) {
CreateTypeItem(Monst->_mx + 1, Monst->_my + 1, TRUE, ITYPE_MACE, IMISC_NONE, TRUE, FALSE);
} else if (Monst->mName == UniqMonst[UMT_DEFILER].mName) {
if (effect_is_playing(USFX_DEFILER8))
sfx_stop();
quests[QTYPE_DEFILER]._qlog = 0;
SpawnMapOfDoom(Monst->_mx, Monst->_my);
} else if (Monst->mName == UniqMonst[UMT_HORKDMN].mName) {
if (UseTheoQuest) {
SpawnTheodore(Monst->_mx, Monst->_my);
} else {
CreateAmulet(Monst->_mx, Monst->_my, 13, FALSE, TRUE);
}
} else if (Monst->MType->mtype == MT_HORKSPWN) {
} else if (Monst->MType->mtype == MT_NAKRUL) {
nSFX = IsUberRoomOpened ? USFX_NAKRUL4 : USFX_NAKRUL5;
if (UseCowFarmer)
nSFX = USFX_NAKRUL6;
if (effect_is_playing(nSFX))
sfx_stop();
quests[QTYPE_NAKRUL]._qlog = 0;
UberDiabloMonsterIndex = -2;
CreateMagicWeapon(Monst->_mx, Monst->_my, ITYPE_SWORD, ICURS_GREAT_SWORD, FALSE, TRUE);
CreateMagicWeapon(Monst->_mx, Monst->_my, ITYPE_STAFF, ICURS_WAR_STAFF, FALSE, TRUE);
CreateMagicWeapon(Monst->_mx, Monst->_my, ITYPE_BOW, ICURS_LONG_WAR_BOW, FALSE, TRUE);
CreateSpellBook(Monst->_mx, Monst->_my, SPL_APOCA, FALSE, TRUE);
} else if (i > 3) {
SpawnItem(i, Monst->_mx, Monst->_my, sendmsg);
}
} }
#endif
void M2MStartHit(int mid, int i, int dam) void M2MStartHit(int mid, int i, int dam)
{ {
@ -1866,7 +1901,7 @@ void MonstStartKill(int i, int pnum, BOOL sendmsg)
Monst->_mhitpoints = 0; Monst->_mhitpoints = 0;
SetRndSeed(Monst->_mRndSeed); SetRndSeed(Monst->_mRndSeed);
#ifdef HELLFIRE #ifdef HELLFIRE
M_DefilerDeath(i, sendmsg); SpawnLoot(i, sendmsg);
#else #else
if (QuestStatus(QTYPE_GARB) && Monst->mName == UniqMonst[UMT_GARBUD].mName) { if (QuestStatus(QTYPE_GARB) && Monst->mName == UniqMonst[UMT_GARBUD].mName) {
CreateTypeItem(Monst->_mx + 1, Monst->_my + 1, TRUE, ITYPE_MACE, IMISC_NONE, TRUE, FALSE); CreateTypeItem(Monst->_mx + 1, Monst->_my + 1, TRUE, ITYPE_MACE, IMISC_NONE, TRUE, FALSE);

2
Source/monster.h

@ -62,7 +62,7 @@ void M_GetKnockback(int i);
void M_StartHit(int i, int pnum, int dam); void M_StartHit(int i, int pnum, int dam);
void M_DiabloDeath(int i, BOOL sendmsg); void M_DiabloDeath(int i, BOOL sendmsg);
#ifdef HELLFIRE #ifdef HELLFIRE
void M_DefilerDeath(int i, BOOL sendmsg); void SpawnLoot(int i, BOOL sendmsg);
#endif #endif
void M2MStartHit(int mid, int i, int dam); void M2MStartHit(int mid, int i, int dam);
void MonstStartKill(int i, int pnum, BOOL sendmsg); void MonstStartKill(int i, int pnum, BOOL sendmsg);

2
Source/towners.cpp

@ -1143,7 +1143,7 @@ void TalkToTowner(int p, int t)
break; break;
case 3: case 3:
qt = QUEST_FARMER4; qt = QUEST_FARMER4;
items_427DC6(IDI_AURIC, towner[t]._tx + 1, towner[t]._ty); SpawnRewardItem(IDI_AURIC, towner[t]._tx + 1, towner[t]._ty);
quests[QTYPE_FARMER]._qactive = 10; quests[QTYPE_FARMER]._qactive = 10;
quests[QTYPE_FARMER]._qlog = 0; quests[QTYPE_FARMER]._qlog = 0;
break; break;

2
comparer-config/hellfire.toml

@ -4878,7 +4878,7 @@ addr = 0x43D2B1
size = 0x230 size = 0x230
[[func]] [[func]]
name = "M_DefilerDeath" name = "SpawnLoot"
addr = 0x43D4E1 addr = 0x43D4E1
size = 0x174 size = 0x174

Loading…
Cancel
Save