@@ -80,10 +80,12 @@ bool Logic::HasItem(RandomizerGet itemName) {
8080 case RG_HYLIAN_SHIELD:
8181 case RG_MIRROR_SHIELD:
8282 case RG_MASTER_SWORD:
83- case RG_BIGGORON_SWORD :
83+ case RG_GIANTS_KNIFE :
8484 case RG_IRON_BOOTS:
8585 case RG_HOVER_BOOTS:
8686 return CheckEquipment (RandoGetToEquipFlag.at (itemName));
87+ case RG_BIGGORON_SWORD:
88+ return CheckEquipment (RandoGetToEquipFlag.at (itemName)) && mSaveContext ->bgsFlag ;
8789 case RG_GORONS_BRACELET:
8890 return CurrentUpgrade (UPG_STRENGTH);
8991 case RG_SILVER_GAUNTLETS:
@@ -298,6 +300,7 @@ bool Logic::CanUse(RandomizerGet itemName) {
298300 return IsAdult; // || MirrorShieldAsChild;
299301 case RG_MASTER_SWORD:
300302 return IsAdult; // || MasterSwordAsChild;
303+ case RG_GIANTS_KNIFE:
301304 case RG_BIGGORON_SWORD:
302305 return IsAdult; // || BiggoronSwordAsChild;
303306 case RG_SILVER_GAUNTLETS:
@@ -1091,7 +1094,7 @@ bool Logic::CanHitSwitch(EnemyDistance distance, bool inWater) {
10911094 switch (distance) {
10921095 case ED_CLOSE:
10931096 case ED_SHORT_JUMPSLASH:
1094- hit = CanUse (RG_KOKIRI_SWORD) || CanUse (RG_MEGATON_HAMMER);
1097+ hit = CanUse (RG_KOKIRI_SWORD) || CanUse (RG_MEGATON_HAMMER) || CanUse (RG_GIANTS_KNIFE) ;
10951098 [[fallthrough]];
10961099 case ED_MASTER_SWORD_JUMPSLASH:
10971100 hit = hit || CanUse (RG_MASTER_SWORD);
@@ -1392,8 +1395,8 @@ bool Logic::SmallKeys(s16 scene, uint8_t requiredAmount) {
13921395
13931396std::map<RandomizerGet, uint32_t > Logic::RandoGetToEquipFlag = {
13941397 { RG_KOKIRI_SWORD, EQUIP_FLAG_SWORD_KOKIRI }, { RG_MASTER_SWORD, EQUIP_FLAG_SWORD_MASTER },
1395- { RG_BIGGORON_SWORD , EQUIP_FLAG_SWORD_BGS }, { RG_DEKU_SHIELD, EQUIP_FLAG_SHIELD_DEKU },
1396- { RG_HYLIAN_SHIELD, EQUIP_FLAG_SHIELD_HYLIAN }, { RG_MIRROR_SHIELD, EQUIP_FLAG_SHIELD_MIRROR },
1398+ { RG_GIANTS_KNIFE , EQUIP_FLAG_SWORD_BGS }, { RG_BIGGORON_SWORD, EQUIP_FLAG_SWORD_BGS },
1399+ { RG_DEKU_SHIELD, EQUIP_FLAG_SHIELD_DEKU }, { RG_HYLIAN_SHIELD, EQUIP_FLAG_SHIELD_HYLIAN }, { RG_MIRROR_SHIELD, EQUIP_FLAG_SHIELD_MIRROR },
13971400 { RG_GORON_TUNIC, EQUIP_FLAG_TUNIC_GORON }, { RG_ZORA_TUNIC, EQUIP_FLAG_TUNIC_ZORA },
13981401 { RG_BUY_DEKU_SHIELD, EQUIP_FLAG_SHIELD_DEKU }, { RG_BUY_HYLIAN_SHIELD, EQUIP_FLAG_SHIELD_HYLIAN },
13991402 { RG_BUY_GORON_TUNIC, EQUIP_FLAG_TUNIC_GORON }, { RG_BUY_ZORA_TUNIC, EQUIP_FLAG_TUNIC_ZORA },
@@ -1826,18 +1829,18 @@ void Logic::ApplyItemEffect(Item& item, bool state) {
18261829 } break ;
18271830 case ITEMTYPE_EQUIP: {
18281831 RandomizerGet itemRG = item.GetRandomizerGet ();
1829- if (itemRG == RG_GIANTS_KNIFE || itemRG == RG_DEKU_SHIELD || itemRG == RG_HYLIAN_SHIELD) {
1832+ if (itemRG == RG_DEKU_SHIELD || itemRG == RG_HYLIAN_SHIELD) {
18301833 return ;
18311834 }
18321835 uint32_t equipId = RandoGetToEquipFlag.find (itemRG)->second ;
18331836 if (!state) {
18341837 mSaveContext ->inventory .equipment &= ~equipId;
1835- if (equipId == EQUIP_FLAG_SWORD_BGS) {
1838+ if (equipId == EQUIP_FLAG_SWORD_BGS && itemRG != RG_GIANTS_KNIFE ) {
18361839 mSaveContext ->bgsFlag = false ;
18371840 }
18381841 } else {
18391842 mSaveContext ->inventory .equipment |= equipId;
1840- if (equipId == EQUIP_FLAG_SWORD_BGS) {
1843+ if (equipId == EQUIP_FLAG_SWORD_BGS && itemRG != RG_GIANTS_KNIFE ) {
18411844 mSaveContext ->bgsFlag = true ;
18421845 }
18431846 }
0 commit comments