Browse Source

Multiplayer: Enable Ogden's Sign Quest

pull/5527/head
obligaron 3 years ago committed by Anders Jenbo
parent
commit
0aa3831e32
  1. 3
      Source/monster.cpp
  2. 13
      Source/quests.cpp
  3. 2
      Source/towners.cpp

3
Source/monster.cpp

@ -1426,6 +1426,7 @@ void MonsterTalk(Monster &monster)
if (Quests[Q_LTBANNER]._qactive == QUEST_INIT)
Quests[Q_LTBANNER]._qactive = QUEST_ACTIVE;
monster.flags |= MFLAG_QUEST_COMPLETE;
NetSendCmdQuest(true, Quests[Q_LTBANNER]);
}
if (Quests[Q_LTBANNER]._qvar1 < 2) {
app_fatal(StrCat("SS Talk = ", monster.talkMsg, ", Flags = ", monster.flags));
@ -2563,6 +2564,7 @@ void SnotSpilAi(Monster &monster)
if (!effect_is_playing(USFX_SNOT3) && monster.goal == MonsterGoal::Talking) {
ObjChangeMap(SetPiece.position.x, SetPiece.position.y, SetPiece.position.x + SetPiece.size.width + 1, SetPiece.position.y + SetPiece.size.height + 1);
Quests[Q_LTBANNER]._qvar1 = 3;
NetSendCmdQuest(true, Quests[Q_LTBANNER]);
RedoPlayerVision();
monster.activeForTicks = UINT8_MAX;
monster.talkMsg = TEXT_NONE;
@ -4485,6 +4487,7 @@ void TalktoMonster(Player &player, Monster &monster)
Quests[Q_LTBANNER]._qactive = QUEST_DONE;
monster.talkMsg = TEXT_BANNER12;
monster.goal = MonsterGoal::Inquiring;
NetSendCmdQuest(true, Quests[Q_LTBANNER]);
}
}
if (Quests[Q_VEIL].IsAvailable() && monster.talkMsg >= TEXT_VEIL9) {

13
Source/quests.cpp

@ -609,6 +609,7 @@ void ResyncQuests()
return;
if (Quests[Q_LTBANNER].IsAvailable()) {
Monster *snotSpill = FindUniqueMonster(UniqueMonsterType::SnotSpill);
if (Quests[Q_LTBANNER]._qvar1 == 1) {
ObjChangeMapResync(
SetPiece.position.x + SetPiece.size.width - 2,
@ -629,6 +630,11 @@ void ResyncQuests()
TransVal = 9;
DRLG_MRectTrans({ SetPiece.position, WorldTileSize(SetPiece.size.width / 2 + 4, SetPiece.size.height / 2) });
TransVal = tren;
if (gbIsMultiplayer && snotSpill != nullptr && snotSpill->talkMsg != TEXT_BANNER12) {
snotSpill->goal = MonsterGoal::Inquiring;
snotSpill->talkMsg = Quests[Q_LTBANNER]._qactive == QUEST_DONE ? TEXT_BANNER12 : TEXT_BANNER11;
snotSpill->flags |= MFLAG_QUEST_COMPLETE;
}
}
if (Quests[Q_LTBANNER]._qvar1 == 3) {
ObjChangeMapResync(SetPiece.position.x, SetPiece.position.y, SetPiece.position.x + SetPiece.size.width + 1, SetPiece.position.y + SetPiece.size.height + 1);
@ -638,6 +644,13 @@ void ResyncQuests()
TransVal = 9;
DRLG_MRectTrans({ SetPiece.position, WorldTileSize(SetPiece.size.width / 2 + 4, SetPiece.size.height / 2) });
TransVal = tren;
if (gbIsMultiplayer && snotSpill != nullptr) {
snotSpill->goal = MonsterGoal::Normal;
snotSpill->flags |= MFLAG_QUEST_COMPLETE;
snotSpill->talkMsg = TEXT_NONE;
snotSpill->activeForTicks = UINT8_MAX;
RedoPlayerVision();
}
}
}
if (currlevel == Quests[Q_MUSHROOM]._qlevel) {

2
Source/towners.cpp

@ -326,6 +326,7 @@ void TalkToBarOwner(Player &player, Towner &barOwner)
bannerQuest._qactive = QUEST_ACTIVE;
}
bannerQuest._qlog = true;
NetSendCmdQuest(true, bannerQuest);
InitQTextMsg(TEXT_BANNER2);
return;
}
@ -333,6 +334,7 @@ void TalkToBarOwner(Player &player, Towner &barOwner)
if (bannerQuest._qvar2 == 1 && RemoveInventoryItemById(player, IDI_BANNER)) {
bannerQuest._qactive = QUEST_DONE;
bannerQuest._qvar1 = 3;
NetSendCmdQuest(true, bannerQuest);
SpawnUnique(UITEM_HARCREST, barOwner.position + Direction::SouthWest);
InitQTextMsg(TEXT_BANNER3);
return;

Loading…
Cancel
Save