I can confirm it. It's not the same as the other one. This is only with the small hitbox; Link has to be overlapping the combo by a few pixels.
link.cpp:
Code:
if(dir==up)
{
if((combobuf[MAPCOMBO2(i,x,y-7)].type==cHSGRAB)||
(_walkflag(x+2,y+4,1) && !ishookshottable(int(x),int(y+4))))
{
use_hookshot=false;
}
}
Code:
if(dir==up)
{
hookshot_used=true;
Lwpns.add(new weapon((fix)wx,(fix)wy,(fix)wz,wHSHandle,hookitem,
hookpower*DAMAGE_MULTIPLIER,dir,itemid,getUID()));
Lwpns.add(new weapon((fix)wx,(fix)wy-4,(fix)wz,wHookshot,hookitem,
hookpower*DAMAGE_MULTIPLIER,dir,itemid,getUID()));
hs_startx=wx;
hs_starty=wy-4;
}
weapons.cpp:
Code:
if(dir==up)
{
if((combobuf[MAPCOMBO(x+2,y+7)].type==cHSGRAB))
{
hooked=true;
}
if(get_bit(quest_rules, qr_HOOKSHOTLAYERFIX))
hooked = hooked || (combobuf[MAPCOMBO2(0,x+2,y+7)].type==cHSGRAB) || (combobuf[MAPCOMBO2(1,x+2,y+7)].type==cHSGRAB);
if(!hooked && _walkflag(x+2,y+7,1) && !ishookshottable((int)x+2,(int)y+7))
{
dead=1;
}
}
Link checks solidity at y+4 and puts the hookshot head at y-20 (wy is y-16), then the hookshot checks for solidity at y+7. This leaves a gap of 16 pixels - just enough to miss the combo completely.
I don't think this one warrants a quest rule. It's a lot harder to notice and take advantage of, so it's less likely anyone's depending on it. Maybe just wait and see if anyone complains.