Skip to content

Commit f53af52

Browse files
committed
fix(zscript): generic script item collect event fix
Item Collect event will no longer be fired for items such as timeout items when they are *not* actually able to be collected. Due to timing changes, the "Combine when collected twice" now also occurs BEFORE the event.
1 parent e9d91d8 commit f53af52

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

src/zc/hero.cpp

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30112,25 +30112,6 @@ void HeroClass::checkitems(int32_t index)
3011230112
}
3011330113
else
3011430114
{
30115-
std::vector<int32_t> &ev = FFCore.eventData;
30116-
ev.clear();
30117-
ev.push_back(id2*10000);
30118-
ev.push_back(pickup*10000);
30119-
ev.push_back(pstr*10000);
30120-
ev.push_back(pstr_flags*10000);
30121-
ev.push_back(0);
30122-
ev.push_back(ptr->getUID());
30123-
ev.push_back(GENEVT_ICTYPE_COLLECT*10000);
30124-
ev.push_back(0);
30125-
30126-
throwGenScriptEvent(GENSCR_EVENT_COLLECT_ITEM);
30127-
bool nullify = ev[4] != 0;
30128-
if(nullify) return;
30129-
id2 = ev[0]/10000;
30130-
pickup = (pickup&(ipCHECK|ipDUMMY)) | (ev[1]/10000);
30131-
pstr = ev[2] / 10000;
30132-
pstr_flags = ev[3] / 10000;
30133-
3013430115
if(itemsbuf[id2].family == itype_bottlefill && !game->canFillBottle())
3013530116
return; //No picking these up unless you have a bottle to fill!
3013630117

@@ -30153,7 +30134,7 @@ void HeroClass::checkitems(int32_t index)
3015330134

3015430135
if(get_qr(qr_HEARTSREQUIREDFIX) && !canget(id2))
3015530136
return;
30156-
30137+
3015730138
int32_t nextitem = -1;
3015830139
do
3015930140
{
@@ -30237,7 +30218,29 @@ void HeroClass::checkitems(int32_t index)
3023730218

3023830219
break;
3023930220
}
30221+
30222+
//EVENT
30223+
{
30224+
std::vector<int32_t> &ev = FFCore.eventData;
30225+
ev.clear();
30226+
ev.push_back(id2*10000);
30227+
ev.push_back(pickup*10000);
30228+
ev.push_back(pstr*10000);
30229+
ev.push_back(pstr_flags*10000);
30230+
ev.push_back(0);
30231+
ev.push_back(ptr->getUID());
30232+
ev.push_back(GENEVT_ICTYPE_COLLECT*10000);
30233+
ev.push_back(0);
3024030234

30235+
throwGenScriptEvent(GENSCR_EVENT_COLLECT_ITEM);
30236+
bool nullify = ev[4] != 0;
30237+
if(nullify) return;
30238+
id2 = ev[0]/10000;
30239+
pickup = (pickup&(ipCHECK|ipDUMMY)) | (ev[1]/10000);
30240+
pstr = ev[2] / 10000;
30241+
pstr_flags = ev[3] / 10000;
30242+
}
30243+
3024130244
if(pickup&ipONETIME) // set mITEM for one-time-only items
3024230245
{
3024330246
setmapflag(mITEM);

0 commit comments

Comments
 (0)