diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL index 5ca107ace..33e22a85f 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL @@ -1,18 +1,16 @@ - - - + - + - + - + - + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_1 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_1 index 2b23b4e0c..259b27c4e 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_1 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_1 @@ -1,149 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - + + + + - + + - - + + - - - - + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -154,166 +52,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_2 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_2 index f023f286c..dc680a34a 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_2 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_2 @@ -2,56 +2,56 @@ - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_3 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_3 index df5d002e5..a134560fb 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_3 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_3 @@ -4,54 +4,54 @@ - - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_4 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_4 index b9795294b..65134138f 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_4 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_4 @@ -2,56 +2,56 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_5 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_5 index d3c327039..3b458b736 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_5 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_tri_5 @@ -8,50 +8,49 @@ - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_1 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_1 index a6a795ad4..9339e42f0 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_1 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_1 @@ -1,414 +1,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_2 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_2 index 9339e42f0..e1122533a 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_2 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_2 @@ -1,77 +1,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_3 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_3 index e1122533a..29c025d0f 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_3 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_3 @@ -1,70 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_4 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_4 index 29c025d0f..c3c88918b 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_4 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_4 @@ -1,68 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_5 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_5 index c3c88918b..70117ba12 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_5 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoItemDL_vtx_5 @@ -1,69 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL index c32a29de2..4beef5eb3 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL @@ -1,18 +1,16 @@ - - - + - + - + - + - + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_1 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_1 index e4351ae02..ae92327e4 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_1 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_1 @@ -1,149 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - + + + + - + + - - + + - - - - + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -154,166 +52,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_2 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_2 index 7fc830e1a..bbbc96439 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_2 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_2 @@ -2,56 +2,56 @@ - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_3 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_3 index e44951b95..6d11e6b1c 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_3 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_3 @@ -4,54 +4,54 @@ - - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_4 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_4 index 95d14bbf9..827df8c0d 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_4 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_4 @@ -2,56 +2,56 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_5 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_5 index 2d4599ea1..6714bf7a4 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_5 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_tri_5 @@ -8,50 +8,49 @@ - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_1 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_1 index a6a795ad4..9339e42f0 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_1 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_1 @@ -1,414 +1,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_2 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_2 index 9339e42f0..e1122533a 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_2 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_2 @@ -1,77 +1,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_3 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_3 index e1122533a..29c025d0f 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_3 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_3 @@ -1,70 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_4 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_4 index 29c025d0f..c3c88918b 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_4 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_4 @@ -1,68 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_5 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_5 index c3c88918b..70117ba12 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_5 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoJunkDL_vtx_5 @@ -1,69 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL index 3ac575475..ed07b28c9 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL @@ -1,20 +1,18 @@ - - - + - + - + - + - + - + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_1 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_1 index b5c505c58..f49d299ef 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_1 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_1 @@ -1,149 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - + + + + - + + - - + + - - - - + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -154,202 +52,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_2 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_2 index 7d4c96741..ea82a9347 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_2 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_2 @@ -2,56 +2,56 @@ - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_3 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_3 index f197bf25d..8cfca6524 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_3 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_3 @@ -4,54 +4,54 @@ - - - - - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_4 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_4 index 94a1f37ff..639c5aea4 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_4 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_4 @@ -2,56 +2,56 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_5 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_5 index 623fd160e..99a4852cb 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_5 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_5 @@ -8,50 +8,49 @@ - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_6 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_6 index a51824531..e7ab8546c 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_6 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_tri_6 @@ -1,56 +1,41 @@ - + - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - + - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_1 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_1 index bc2d8d5c0..9339e42f0 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_1 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_1 @@ -1,451 +1,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_2 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_2 index 9339e42f0..e1122533a 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_2 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_2 @@ -1,77 +1,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_3 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_3 index e1122533a..29c025d0f 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_3 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_3 @@ -1,70 +1,68 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_4 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_4 index 29c025d0f..c3c88918b 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_4 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_4 @@ -1,68 +1,69 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_5 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_5 index c3c88918b..70117ba12 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_5 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_5 @@ -1,69 +1,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_6 b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_6 index 70117ba12..b76b5b312 100644 --- a/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_6 +++ b/soh/assets/custom/objects/object_archipelago_item/gArchipelagoProgressiveDL_vtx_6 @@ -1,64 +1,39 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/soh/assets/custom/textures/parameter_static/gArchipelagoJunk.png b/soh/assets/custom/textures/parameter_static/gArchipelagoJunk.png new file mode 100644 index 000000000..8103d86aa Binary files /dev/null and b/soh/assets/custom/textures/parameter_static/gArchipelagoJunk.png differ diff --git a/soh/assets/custom/textures/parameter_static/gArchipelagoProgressive.png b/soh/assets/custom/textures/parameter_static/gArchipelagoProgressive.png new file mode 100644 index 000000000..953a81705 Binary files /dev/null and b/soh/assets/custom/textures/parameter_static/gArchipelagoProgressive.png differ diff --git a/soh/assets/custom/textures/parameter_static/gArchipelagoUseful.png b/soh/assets/custom/textures/parameter_static/gArchipelagoUseful.png new file mode 100644 index 000000000..05d2e0c2d Binary files /dev/null and b/soh/assets/custom/textures/parameter_static/gArchipelagoUseful.png differ diff --git a/soh/assets/sources/archipelago/ap_logo_outline_arrow.blend b/soh/assets/sources/archipelago/ap_logo.blend similarity index 51% rename from soh/assets/sources/archipelago/ap_logo_outline_arrow.blend rename to soh/assets/sources/archipelago/ap_logo.blend index 2f5bd506a..97de91593 100644 Binary files a/soh/assets/sources/archipelago/ap_logo_outline_arrow.blend and b/soh/assets/sources/archipelago/ap_logo.blend differ diff --git a/soh/assets/sources/archipelago/ap_logo_outline.blend b/soh/assets/sources/archipelago/ap_logo_arrow.blend similarity index 55% rename from soh/assets/sources/archipelago/ap_logo_outline.blend rename to soh/assets/sources/archipelago/ap_logo_arrow.blend index 5e2dfcc85..9dc5de292 100644 Binary files a/soh/assets/sources/archipelago/ap_logo_outline.blend and b/soh/assets/sources/archipelago/ap_logo_arrow.blend differ diff --git a/soh/assets/sources/archipelago/ap_logo_outline_junk.blend b/soh/assets/sources/archipelago/ap_logo_junk.blend similarity index 55% rename from soh/assets/sources/archipelago/ap_logo_outline_junk.blend rename to soh/assets/sources/archipelago/ap_logo_junk.blend index ebb89803f..956a60cf3 100644 Binary files a/soh/assets/sources/archipelago/ap_logo_outline_junk.blend and b/soh/assets/sources/archipelago/ap_logo_junk.blend differ diff --git a/soh/include/z64save.h b/soh/include/z64save.h index ffd413455..dc11b6da8 100644 --- a/soh/include/z64save.h +++ b/soh/include/z64save.h @@ -170,9 +170,7 @@ typedef struct ShipBossRushSaveContextData { } ShipBossRushSaveContextData; typedef struct ArchipelagoLocationData { - s8 itemType; char itemName[100]; - char locationName[100]; char playerName[17]; } ArchipelagoLocationData; diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h b/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h index c0c3672da..73e447999 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_HookTable.h @@ -70,6 +70,6 @@ DEFINE_HOOK(OnFileDropped, (std::string filePath)); DEFINE_HOOK(OnAssetAltChange, ()); DEFINE_HOOK(OnKaleidoUpdate, ()); -DEFINE_HOOK(OnRandomizerItemGivenHooks, (uint32_t rc)); +DEFINE_HOOK(OnRandomizerItemGivenHooks, (uint32_t rc, GetItemEntry gi, uint8_t isGiSkipped)); DEFINE_HOOK(OnArchipelagoItemRecieved, (uint32_t rg)); DEFINE_HOOK(OnRandomizerExternalCheck, (uint32_t rc)); diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp index 393df5b2c..238cff3b0 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.cpp @@ -304,8 +304,8 @@ void GameInteractor_ExecuteOnKaleidoUpdate() { // Mark: Randomizer -void GameInteractor_ExecuteOnRandomizerItemGivenHooks(uint32_t rc) { - GameInteractor::Instance->ExecuteHooks(rc); +void GameInteractor_ExecuteOnRandomizerItemGivenHooks(uint32_t rc, GetItemEntry gi, uint8_t isGiSkipped) { + GameInteractor::Instance->ExecuteHooks(rc, gi, isGiSkipped); } // MARK: Archipelago diff --git a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h index da276455a..17de14e5f 100644 --- a/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h +++ b/soh/soh/Enhancements/game-interactor/GameInteractor_Hooks.h @@ -82,7 +82,7 @@ void GameInteractor_RegisterOnAssetAltChange(void (*fn)(void)); void GameInteractor_ExecuteOnKaleidoUpdate(); // Mark: - Randomizer -void GameInteractor_ExecuteOnRandomizerItemGivenHooks(uint32_t rc); +void GameInteractor_ExecuteOnRandomizerItemGivenHooks(uint32_t rc, GetItemEntry gi, uint8_t isGiSkipped); // Mark: - Archipelago void GameInteractor_ExecuteOnArchipelagoItemRecieved(uint32_t rg); diff --git a/soh/soh/Enhancements/randomizer/context.cpp b/soh/soh/Enhancements/randomizer/context.cpp index f072725e7..67502ff5e 100644 --- a/soh/soh/Enhancements/randomizer/context.cpp +++ b/soh/soh/Enhancements/randomizer/context.cpp @@ -440,8 +440,8 @@ void Context::ParseArchipelago() { mSpoilerLoaded = false; ArchipelagoClient& ap_client = ArchipelagoClient::GetInstance(); - Rando::Settings::GetInstance()->ParseArchipelago(ap_client.GetSlotData()); ParseArchipelagoItemsLocations(ap_client.GetScoutedItems()); + ParseArchipelagoOptions(ap_client.GetSlotData()); // lets see if counting AP_loaded as spoiler loaded does the trick mSpoilerLoaded = true; @@ -481,6 +481,235 @@ void Context::ParseItemLocationsJson(nlohmann::json spoilerFileJson) { } } +void Context::ParseArchipelagoOptions(const std::map& slot_data) { + // Set options to what Archipelago expects. Need to slowly convert these to options in apworld and + // load those in instead. + + nlohmann::json slotData = ArchipelagoClient::GetInstance().GetSlotData(); + mOptions[RSK_FOREST].Set(RO_CLOSED_FOREST_OFF); + mOptions[RSK_KAK_GATE].Set(RO_KAK_GATE_OPEN); + mOptions[RSK_DOOR_OF_TIME].Set(RO_DOOROFTIME_OPEN); + mOptions[RSK_ZORAS_FOUNTAIN].Set(RO_ZF_CLOSED); + mOptions[RSK_SLEEPING_WATERFALL].Set(RO_WATERFALL_CLOSED); + mOptions[RSK_STARTING_AGE].Set(RO_AGE_CHILD); + mOptions[RSK_SELECTED_STARTING_AGE].Set(0); + mOptions[RSK_GERUDO_FORTRESS].Set(RO_GF_CARPENTERS_NORMAL); + mOptions[RSK_RAINBOW_BRIDGE].Set(RO_BRIDGE_GREG); + mOptions[RSK_RAINBOW_BRIDGE_STONE_COUNT].Set(0); + mOptions[RSK_RAINBOW_BRIDGE_MEDALLION_COUNT].Set(0); + mOptions[RSK_RAINBOW_BRIDGE_REWARD_COUNT].Set(0); + mOptions[RSK_RAINBOW_BRIDGE_DUNGEON_COUNT].Set(0); + mOptions[RSK_RAINBOW_BRIDGE_TOKEN_COUNT].Set(0); + mOptions[RSK_BRIDGE_OPTIONS].Set(0); + mOptions[RSK_GANONS_TRIALS].Set(RO_GANONS_TRIALS_SKIP); + mOptions[RSK_TRIAL_COUNT].Set(0); + mOptions[RSK_STARTING_OCARINA].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_OCARINA].Set(RO_GENERIC_YES); + mOptions[RSK_SHUFFLE_OCARINA_BUTTONS].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_SWIM].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_DEKU_SHIELD].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_KOKIRI_SWORD].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_MASTER_SWORD].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_ZELDAS_LULLABY].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_EPONAS_SONG].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_SARIAS_SONG].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_SUNS_SONG].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_SONG_OF_TIME].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_SONG_OF_STORMS].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_MINUET_OF_FOREST].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_BOLERO_OF_FIRE].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_SERENADE_OF_WATER].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_REQUIEM_OF_SPIRIT].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_NOCTURNE_OF_SHADOW].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_PRELUDE_OF_LIGHT].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_KOKIRI_SWORD].Set(RO_GENERIC_YES); + mOptions[RSK_SHUFFLE_MASTER_SWORD].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_CHILD_WALLET].Set(RO_GENERIC_NO); + mOptions[RSK_INCLUDE_TYCOON_WALLET].Set(RO_GENERIC_YES); + mOptions[RSK_SHUFFLE_DUNGEON_REWARDS].Set(RO_DUNGEON_REWARDS_ANYWHERE); + mOptions[RSK_SHUFFLE_SONGS].Set(RO_SONG_SHUFFLE_ANYWHERE); + mOptions[RSK_SHUFFLE_TOKENS].Set(slotData["shuffle_tokens"]); + mOptions[RSK_SHOPSANITY].Set(slotData["shuffle_shops"]); + mOptions[RSK_SHOPSANITY_COUNT].Set(4); + mOptions[RSK_SHOPSANITY_PRICES].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_FIXED_PRICE].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_RANGE_1].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_RANGE_2].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_NO_WALLET_WEIGHT].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_CHILD_WALLET_WEIGHT].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_ADULT_WALLET_WEIGHT].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_GIANT_WALLET_WEIGHT].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_TYCOON_WALLET_WEIGHT].Set(0); + mOptions[RSK_SHOPSANITY_PRICES_AFFORDABLE].Set(0); + if (slotData["shuffle_scrubs"] == 1) { + mOptions[RSK_SHUFFLE_SCRUBS].Set(RO_SCRUBS_ALL); + } else { + mOptions[RSK_SHUFFLE_SCRUBS].Set(RO_SCRUBS_OFF); + } + mOptions[RSK_SCRUBS_PRICES].Set(0); + mOptions[RSK_SCRUBS_PRICES_FIXED_PRICE].Set(0); + mOptions[RSK_SCRUBS_PRICES_RANGE_1].Set(0); + mOptions[RSK_SCRUBS_PRICES_RANGE_2].Set(0); + mOptions[RSK_SCRUBS_PRICES_NO_WALLET_WEIGHT].Set(0); + mOptions[RSK_SCRUBS_PRICES_CHILD_WALLET_WEIGHT].Set(0); + mOptions[RSK_SCRUBS_PRICES_ADULT_WALLET_WEIGHT].Set(0); + mOptions[RSK_SCRUBS_PRICES_GIANT_WALLET_WEIGHT].Set(0); + mOptions[RSK_SCRUBS_PRICES_TYCOON_WALLET_WEIGHT].Set(0); + mOptions[RSK_SCRUBS_PRICES_AFFORDABLE].Set(0); + mOptions[RSK_SHUFFLE_BEEHIVES].Set(slotData["shuffle_beehives"]); + mOptions[RSK_SHUFFLE_COWS].Set(slotData["shuffle_cows"]); + mOptions[RSK_SHUFFLE_WEIRD_EGG].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD].Set(RO_GENERIC_YES); + mOptions[RSK_SHUFFLE_POTS].Set(slotData["shuffle_pots"]); + mOptions[RSK_SHUFFLE_CRATES].Set(slotData["shuffle_crates"]); + mOptions[RSK_SHUFFLE_FROG_SONG_RUPEES].Set(slotData["shuffle_frogs"]); + mOptions[RSK_ITEM_POOL].Set(0); + mOptions[RSK_ICE_TRAPS].Set(0); + mOptions[RSK_GOSSIP_STONE_HINTS].Set(RO_GOSSIP_STONES_NONE); + mOptions[RSK_TOT_ALTAR_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_GANONDORF_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_SHEIK_LA_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_DAMPES_DIARY_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_GREG_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_LOACH_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_SARIA_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_FROGS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_OOT_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_KAK_10_SKULLS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_KAK_20_SKULLS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_KAK_30_SKULLS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_KAK_40_SKULLS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_KAK_50_SKULLS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_KAK_100_SKULLS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_MASK_SHOP_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_BIGGORON_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_BIG_POES_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_CHICKENS_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_MALON_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_HBA_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_WARP_SONG_HINTS].Set(RO_GENERIC_NO); + mOptions[RSK_SCRUB_TEXT_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_MERCHANT_TEXT_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_FISHING_POLE_HINT].Set(RO_GENERIC_NO); + mOptions[RSK_HINT_CLARITY].Set(0); + mOptions[RSK_HINT_DISTRIBUTION].Set(0); + mOptions[RSK_SHUFFLE_MAPANDCOMPASS].Set(RO_DUNGEON_ITEM_LOC_ANYWHERE); + mOptions[RSK_KEYSANITY].Set(RO_DUNGEON_ITEM_LOC_ANYWHERE); + mOptions[RSK_GERUDO_KEYS].Set(RO_GERUDO_KEYS_ANYWHERE); + mOptions[RSK_BOSS_KEYSANITY].Set(RO_DUNGEON_ITEM_LOC_ANYWHERE); + mOptions[RSK_GANONS_BOSS_KEY].Set(RO_GANON_BOSS_KEY_ANYWHERE); + mOptions[RSK_SKIP_CHILD_STEALTH].Set(RO_GENERIC_YES); + mOptions[RSK_SKIP_CHILD_ZELDA].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_STICKS].Set(RO_GENERIC_NO); + mOptions[RSK_STARTING_NUTS].Set(RO_GENERIC_NO); + mOptions[RSK_FULL_WALLETS].Set(RO_GENERIC_YES); + mOptions[RSK_SHUFFLE_CHEST_MINIGAME].Set(RO_GENERIC_NO); + mOptions[RSK_CUCCO_COUNT].Set(1); + mOptions[RSK_BIG_POE_COUNT].Set(1); + mOptions[RSK_SKIP_EPONA_RACE].Set(RO_GENERIC_YES); + mOptions[RSK_COMPLETE_MASK_QUEST].Set(RO_GENERIC_YES); + mOptions[RSK_SKIP_SCARECROWS_SONG].Set(RO_GENERIC_YES); + mOptions[RSK_SKULLS_SUNS_SONG].Set(0); + mOptions[RSK_SHUFFLE_ADULT_TRADE].Set(slotData["shuffle_trade_items"]); + if (slotData["shuffle_merchants"] == 1) { + mOptions[RSK_SHUFFLE_MERCHANTS].Set(RO_SHUFFLE_MERCHANTS_ALL); + } else { + mOptions[RSK_SHUFFLE_MERCHANTS].Set(RO_SHUFFLE_MERCHANTS_OFF); + } + mOptions[RSK_MERCHANT_PRICES].Set(0); + mOptions[RSK_MERCHANT_PRICES_FIXED_PRICE].Set(0); + mOptions[RSK_MERCHANT_PRICES_RANGE_1].Set(0); + mOptions[RSK_MERCHANT_PRICES_RANGE_2].Set(0); + mOptions[RSK_MERCHANT_PRICES_NO_WALLET_WEIGHT].Set(0); + mOptions[RSK_MERCHANT_PRICES_CHILD_WALLET_WEIGHT].Set(0); + mOptions[RSK_MERCHANT_PRICES_ADULT_WALLET_WEIGHT].Set(0); + mOptions[RSK_MERCHANT_PRICES_GIANT_WALLET_WEIGHT].Set(0); + mOptions[RSK_MERCHANT_PRICES_TYCOON_WALLET_WEIGHT].Set(0); + mOptions[RSK_MERCHANT_PRICES_AFFORDABLE].Set(0); + mOptions[RSK_BLUE_FIRE_ARROWS].Set(RO_GENERIC_YES); + mOptions[RSK_SUNLIGHT_ARROWS].Set(RO_GENERIC_YES); + mOptions[RSK_ENABLE_BOMBCHU_DROPS].Set(RO_GENERIC_YES); + mOptions[RSK_BOMBCHU_BAG].Set(RO_GENERIC_YES); + mOptions[RSK_LINKS_POCKET].Set(RO_LINKS_POCKET_NOTHING); + mOptions[RSK_MQ_DUNGEON_RANDOM].Set(0); + mOptions[RSK_MQ_DUNGEON_COUNT].Set(0); + mOptions[RSK_MQ_DUNGEON_SET].Set(0); + mOptions[RSK_MQ_DEKU_TREE].Set(0); + mOptions[RSK_MQ_DODONGOS_CAVERN].Set(0); + mOptions[RSK_MQ_JABU_JABU].Set(0); + mOptions[RSK_MQ_FOREST_TEMPLE].Set(0); + mOptions[RSK_MQ_FIRE_TEMPLE].Set(0); + mOptions[RSK_MQ_WATER_TEMPLE].Set(0); + mOptions[RSK_MQ_SPIRIT_TEMPLE].Set(0); + mOptions[RSK_MQ_SHADOW_TEMPLE].Set(0); + mOptions[RSK_MQ_BOTTOM_OF_THE_WELL].Set(0); + mOptions[RSK_MQ_ICE_CAVERN].Set(0); + mOptions[RSK_MQ_GTG].Set(0); + mOptions[RSK_MQ_GANONS_CASTLE].Set(0); + mOptions[RSK_LACS_STONE_COUNT].Set(0); + mOptions[RSK_LACS_MEDALLION_COUNT].Set(0); + mOptions[RSK_LACS_REWARD_COUNT].Set(0); + mOptions[RSK_LACS_DUNGEON_COUNT].Set(0); + mOptions[RSK_LACS_TOKEN_COUNT].Set(0); + mOptions[RSK_LACS_OPTIONS].Set(0); + mOptions[RSK_KEYRINGS].Set(0); + mOptions[RSK_KEYRINGS_RANDOM_COUNT].Set(0); + mOptions[RSK_KEYRINGS_GERUDO_FORTRESS].Set(0); + mOptions[RSK_KEYRINGS_FOREST_TEMPLE].Set(0); + mOptions[RSK_KEYRINGS_FIRE_TEMPLE].Set(0); + mOptions[RSK_KEYRINGS_WATER_TEMPLE].Set(0); + mOptions[RSK_KEYRINGS_SPIRIT_TEMPLE].Set(0); + mOptions[RSK_KEYRINGS_SHADOW_TEMPLE].Set(0); + mOptions[RSK_KEYRINGS_BOTTOM_OF_THE_WELL].Set(0); + mOptions[RSK_KEYRINGS_GTG].Set(0); + mOptions[RSK_KEYRINGS_GANONS_CASTLE].Set(0); + mOptions[RSK_SHUFFLE_ENTRANCES].Set(0); + mOptions[RSK_SHUFFLE_DUNGEON_ENTRANCES].Set(0); + mOptions[RSK_SHUFFLE_OVERWORLD_ENTRANCES].Set(0); + mOptions[RSK_SHUFFLE_INTERIOR_ENTRANCES].Set(0); + mOptions[RSK_SHUFFLE_GROTTO_ENTRANCES].Set(0); + mOptions[RSK_SHUFFLE_OWL_DROPS].Set(0); + mOptions[RSK_SHUFFLE_WARP_SONGS].Set(0); + mOptions[RSK_SHUFFLE_OVERWORLD_SPAWNS].Set(0); + mOptions[RSK_MIXED_ENTRANCE_POOLS].Set(0); + mOptions[RSK_MIX_DUNGEON_ENTRANCES].Set(0); + mOptions[RSK_MIX_BOSS_ENTRANCES].Set(0); + mOptions[RSK_MIX_OVERWORLD_ENTRANCES].Set(0); + mOptions[RSK_MIX_INTERIOR_ENTRANCES].Set(0); + mOptions[RSK_MIX_GROTTO_ENTRANCES].Set(0); + mOptions[RSK_DECOUPLED_ENTRANCES].Set(0); + mOptions[RSK_STARTING_SKULLTULA_TOKEN].Set(0); + mOptions[RSK_STARTING_HEARTS].Set(2); + mOptions[RSK_DAMAGE_MULTIPLIER].Set(0); + mOptions[RSK_ALL_LOCATIONS_REACHABLE].Set(0); + mOptions[RSK_SHUFFLE_BOSS_ENTRANCES].Set(0); + mOptions[RSK_SHUFFLE_100_GS_REWARD].Set(RO_GENERIC_NO); + mOptions[RSK_TRIFORCE_HUNT].Set(RO_GENERIC_NO); + mOptions[RSK_TRIFORCE_HUNT_PIECES_TOTAL].Set(0); + mOptions[RSK_TRIFORCE_HUNT_PIECES_REQUIRED].Set(0); + mOptions[RSK_SHUFFLE_BOSS_SOULS].Set(RO_GENERIC_NO); + if (slotData["shuffle_fish"] == 0) { + mOptions[RSK_FISHSANITY].Set(RO_FISHSANITY_OFF); + } else if (slotData["shuffle_fish"] == 1) { + mOptions[RSK_FISHSANITY].Set(RO_FISHSANITY_POND); + } else if (slotData["shuffle_fish"] == 2) { + mOptions[RSK_FISHSANITY].Set(RO_FISHSANITY_OVERWORLD); + } else if (slotData["shuffle_fish"] == 3) { + mOptions[RSK_FISHSANITY].Set(RO_FISHSANITY_BOTH); + } + mOptions[RSK_FISHSANITY_POND_COUNT].Set(15); + mOptions[RSK_FISHSANITY_AGE_SPLIT].Set(15); + mOptions[RSK_SHUFFLE_FISHING_POLE].Set(RO_GENERIC_NO); + mOptions[RSK_INFINITE_UPGRADES].Set(RO_INF_UPGRADES_OFF); + mOptions[RSK_SKELETON_KEY].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_DEKU_STICK_BAG].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_DEKU_NUT_BAG].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_FREESTANDING].Set(slotData["shuffle_freestanding"]); + mOptions[RSK_SHUFFLE_FAIRIES].Set(slotData["shuffle_fairies"]); + mOptions[RSK_LOCK_OVERWORLD_DOORS].Set(RO_GENERIC_NO); + mOptions[RSK_SHUFFLE_GRASS].Set(slotData["shuffle_grass"]); +} + void Context::ParseArchipelagoItemsLocations(const std::vector& scouted_items) { const std::string SlotName = ArchipelagoClient::GetInstance().GetSlotName(); @@ -499,17 +728,16 @@ void Context::ParseArchipelagoItemsLocations(const std::vector& slot_data); + void ParseArchipelagoOptions(const std::map& slot_data); void ParseArchipelagoItemsLocations(const std::vector& slot_data); /** diff --git a/soh/soh/Enhancements/randomizer/hook_handlers.cpp b/soh/soh/Enhancements/randomizer/hook_handlers.cpp index f21a59312..601b2be0d 100644 --- a/soh/soh/Enhancements/randomizer/hook_handlers.cpp +++ b/soh/soh/Enhancements/randomizer/hook_handlers.cpp @@ -311,6 +311,7 @@ void RandomizerOnPlayerUpdateForRCQueueHandler() { GetItemEntry getItemEntry; RandomizerCheck rc = randomizerQueuedChecks.front(); auto loc = Rando::Context::GetInstance()->GetItemLocation(rc); + uint8_t isGiSkipped = 0; if (rc == RC_ARCHIPELAGO_RECIEVED_ITEM) { getItemEntry = Rando::Context::GetInstance()->GetArchipelagoGIEntry(); @@ -328,6 +329,7 @@ void RandomizerOnPlayerUpdateForRCQueueHandler() { randomizerQueuedItemEntry = getItemEntry; SPDLOG_INFO("Queueing Item mod {} item {} from RC {}", getItemEntry.modIndex, getItemEntry.itemId, static_cast(rc)); + if ( // Skipping ItemGet animation incompatible with checks that require closing a text box to finish rc != RC_HF_OCARINA_OF_TIME_ITEM && rc != RC_SPIRIT_TEMPLE_SILVER_GAUNTLETS_CHEST && @@ -346,10 +348,12 @@ void RandomizerOnPlayerUpdateForRCQueueHandler() { getItemEntry.getItemCategory == ITEM_CATEGORY_SKULLTULA_TOKEN || getItemEntry.getItemCategory == ITEM_CATEGORY_LESSER))))) { Item_DropCollectible(gPlayState, &spawnPos, ITEM00_SOH_GIVE_ITEM_ENTRY | 0x8000); + + isGiSkipped = 1; } } - GameInteractor_ExecuteOnRandomizerItemGivenHooks((uint32_t)rc); + GameInteractor_ExecuteOnRandomizerItemGivenHooks((uint32_t)rc, getItemEntry, isGiSkipped); randomizerQueuedChecks.pop(); } @@ -800,6 +804,8 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l va_list args; va_copy(args, originalArgs); + u8 test; + switch (id) { case VB_ALLOW_ENTRANCE_CS_FOR_EITHER_AGE: { s32 entranceIndex = va_arg(args, s32); @@ -862,6 +868,7 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l } break; case VB_MOVE_MIDO_IN_KOKIRI_FOREST: + test = RAND_GET_OPTION(RSK_FOREST); if (RAND_GET_OPTION(RSK_FOREST) == RO_CLOSED_FOREST_OFF && gSaveContext.cutsceneIndex == 0) { *should = true; } @@ -1049,12 +1056,16 @@ void RandomizerOnVanillaBehaviorHandler(GIVanillaBehavior id, bool* should, va_l .suffix = SohUtils::GetItemName(item00->itemEntry.itemId), }); } else if (item00->itemEntry.modIndex == MOD_RANDOMIZER) { - Notification::Emit({ - .message = "You found ", - .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId) - .GetName() - .english, - }); + if (!(item00->itemEntry.getItemId == RG_ARCHIPELAGO_ITEM_PROGRESSIVE || + item00->itemEntry.getItemId == RG_ARCHIPELAGO_ITEM_USEFUL || + item00->itemEntry.getItemId == RG_ARCHIPELAGO_ITEM_JUNK)) { + Notification::Emit({ + .message = "You found ", + .suffix = Rando::StaticData::RetrieveItem((RandomizerGet)item00->itemEntry.getItemId) + .GetName() + .english, + }); + } } // This is typically called when you close the text box after getting an item, in case a previous diff --git a/soh/soh/Enhancements/randomizer/settings.cpp b/soh/soh/Enhancements/randomizer/settings.cpp index aac0e8927..388ea6f6f 100644 --- a/soh/soh/Enhancements/randomizer/settings.cpp +++ b/soh/soh/Enhancements/randomizer/settings.cpp @@ -2906,10 +2906,6 @@ void Settings::ParseJson(nlohmann::json spoilerFileJson) { } } -void Settings::ParseArchipelago(const std::map& slot_data) { - // This is going to be completely redone since switching to apclientpp -} - void Settings::AssignContext(std::shared_ptr ctx) { mContext = ctx; } diff --git a/soh/soh/Network/Archipelago/Archipelago.cpp b/soh/soh/Network/Archipelago/Archipelago.cpp index a33ea6a99..e4c80b7a9 100644 --- a/soh/soh/Network/Archipelago/Archipelago.cpp +++ b/soh/soh/Network/Archipelago/Archipelago.cpp @@ -14,6 +14,7 @@ #include "soh/Enhancements/randomizer/context.h" #include "soh/Enhancements/game-interactor/GameInteractor.h" #include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h" +#include "soh/Notification/Notification.h" #include "soh/ShipInit.hpp" #include "soh/SaveManager.h" @@ -60,9 +61,11 @@ bool ArchipelagoClient::StartClient() { 0b001, tags); }); - apClient->set_slot_connected_handler([&](const nlohmann::json) { + apClient->set_slot_connected_handler([&](const nlohmann::json data) { ArchipelagoConsole_SendMessage("[LOG] Connected.", false); ArchipelagoClient::StartLocationScouts(); + + slotData = data; // if we are already in game when we connect // we won't have to request an itemSynch @@ -267,7 +270,7 @@ const std::string ArchipelagoClient::GetSlotName() const { return apClient->get_slot(); } -const std::map& ArchipelagoClient::GetSlotData() { +const nlohmann::json ArchipelagoClient::GetSlotData() { return slotData; } @@ -306,18 +309,17 @@ const char* ArchipelagoClient::GetConnectionStatus() { extern "C" void Archipelago_InitSaveFile() { gSaveContext.ship.quest.data.archipelago.isArchipelago = 1; + nlohmann::json slotData = ArchipelagoClient::GetInstance().GetSlotData(); + gSaveContext.ship.quest.data.archipelago.deathLink = slotData["death_link"]; + std::vector scoutedItems = ArchipelagoClient::GetInstance().GetScoutedItems(); for (uint32_t i = 0; i < scoutedItems.size(); i++) { RandomizerCheck rc = Rando::StaticData::locationNameToEnum[scoutedItems[i].locationName]; - gSaveContext.ship.quest.data.archipelago.locations[rc].itemType = scoutedItems[i].flags; SohUtils::CopyStringToCharArray(gSaveContext.ship.quest.data.archipelago.locations[rc].itemName, scoutedItems[i].itemName, ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[rc].itemName)); - SohUtils::CopyStringToCharArray(gSaveContext.ship.quest.data.archipelago.locations[rc].locationName, - scoutedItems[i].locationName, - ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[rc].locationName)); SohUtils::CopyStringToCharArray(gSaveContext.ship.quest.data.archipelago.locations[rc].playerName, scoutedItems[i].playerName, ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[rc].playerName)); @@ -339,15 +341,9 @@ void LoadArchipelagoData() { "locations", ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations), [](size_t i) { SaveManager::Instance->LoadStruct("", [&i]() { - SaveManager::Instance->LoadData("itemType", - gSaveContext.ship.quest.data.archipelago.locations[i].itemType); - SaveManager::Instance->LoadCharArray( "itemName", gSaveContext.ship.quest.data.archipelago.locations[i].itemName, ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[i].itemName)); - SaveManager::Instance->LoadCharArray( - "locationName", gSaveContext.ship.quest.data.archipelago.locations[i].locationName, - ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[i].locationName)); SaveManager::Instance->LoadCharArray( "playerName", gSaveContext.ship.quest.data.archipelago.locations[i].playerName, ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[i].playerName)); @@ -367,13 +363,8 @@ void SaveArchipelagoData(SaveContext* saveContext, int sectionID, bool fullSave) SaveManager::Instance->SaveArray( "locations", ARRAY_COUNT(saveContext->ship.quest.data.archipelago.locations), [&](size_t i) { SaveManager::Instance->SaveStruct("", [&]() { - SaveManager::Instance->SaveData("itemType", - saveContext->ship.quest.data.archipelago.locations[i].itemType); - SaveManager::Instance->SaveData("itemName", saveContext->ship.quest.data.archipelago.locations[i].itemName); - SaveManager::Instance->SaveData("locationName", - saveContext->ship.quest.data.archipelago.locations[i].locationName); SaveManager::Instance->SaveData("playerName", saveContext->ship.quest.data.archipelago.locations[i].playerName); }); @@ -391,12 +382,8 @@ void InitArchipelagoData(bool isDebug) { ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.slotName)); for (uint32_t i = 0; i < ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations); i++) { - gSaveContext.ship.quest.data.archipelago.locations[i].itemType = -1; - SohUtils::CopyStringToCharArray(gSaveContext.ship.quest.data.archipelago.locations[i].itemName, "", ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[i].itemName)); - SohUtils::CopyStringToCharArray(gSaveContext.ship.quest.data.archipelago.locations[i].locationName, "", - ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[i].locationName)); SohUtils::CopyStringToCharArray(gSaveContext.ship.quest.data.archipelago.locations[i].playerName, "", ARRAY_COUNT(gSaveContext.ship.quest.data.archipelago.locations[i].playerName)); } @@ -404,12 +391,37 @@ void InitArchipelagoData(bool isDebug) { void RegisterArchipelago() { COND_HOOK(GameInteractor::OnRandomizerItemGivenHooks, IS_ARCHIPELAGO, - [](uint32_t rc) { + [](uint32_t rc, GetItemEntry gi, uint8_t isGiSkipped) { if (rc == RC_ARCHIPELAGO_RECIEVED_ITEM) { gSaveContext.ship.quest.data.archipelago.lastReceivedItemIndex++; ArchipelagoClient::GetInstance().itemQueued = false; } else { ArchipelagoClient::GetInstance().CheckLocation((RandomizerCheck)rc); + + if (isGiSkipped && gi.modIndex == MOD_RANDOMIZER && + (gi.getItemId == RG_ARCHIPELAGO_ITEM_PROGRESSIVE || gi.getItemId == RG_ARCHIPELAGO_ITEM_USEFUL || + gi.getItemId == RG_ARCHIPELAGO_ITEM_JUNK)) { + + const char* itemIcon = ""; + switch (gi.getItemId) { + case RG_ARCHIPELAGO_ITEM_PROGRESSIVE: + itemIcon = "Archipelago Progressive Icon"; + break; + case RG_ARCHIPELAGO_ITEM_USEFUL: + itemIcon = "Archipelago Useful Icon"; + break; + case RG_ARCHIPELAGO_ITEM_JUNK: + itemIcon = "Archipelago Junk Icon"; + break; + } + + Notification::Emit({ + .itemIcon = itemIcon, + .prefix = std::string(gSaveContext.ship.quest.data.archipelago.locations[rc].itemName), + .message = " for ", + .suffix = std::string(gSaveContext.ship.quest.data.archipelago.locations[rc].playerName) + }); + } } }); } diff --git a/soh/soh/Network/Archipelago/Archipelago.h b/soh/soh/Network/Archipelago/Archipelago.h index 9b517f6a2..314c0a34a 100644 --- a/soh/soh/Network/Archipelago/Archipelago.h +++ b/soh/soh/Network/Archipelago/Archipelago.h @@ -3,6 +3,7 @@ #include "soh/Enhancements/randomizer/randomizerTypes.h" #include "soh/Enhancements/randomizer/static_data.h" #include +#include #include // Forward declaration @@ -41,7 +42,7 @@ class ArchipelagoClient{ const std::string GetSlotName() const; const char* GetConnectionStatus(); - const std::map& GetSlotData(); + const nlohmann::json GetSlotData(); const std::vector& GetScoutedItems(); bool IsConnected(); @@ -71,7 +72,7 @@ class ArchipelagoClient{ bool gameWon; - std::map slotData; + nlohmann::json slotData; std::set locations; std::vector scoutedItems; std::queue recieveQueue; diff --git a/soh/soh/Network/Archipelago/ArchipelagoSettingsWindow.cpp b/soh/soh/Network/Archipelago/ArchipelagoSettingsWindow.cpp index 05ae198b3..7f0d92a71 100644 --- a/soh/soh/Network/Archipelago/ArchipelagoSettingsWindow.cpp +++ b/soh/soh/Network/Archipelago/ArchipelagoSettingsWindow.cpp @@ -16,12 +16,12 @@ void ArchipelagoSettingsWindow::DrawElement() { ImGui::Text("Server Address"); UIWidgets::CVarInputString("##ArchipelagoServerAddress", CVAR_REMOTE_ARCHIPELAGO("ServerAddress"), - UIWidgets::InputOptions() - .Color(THEME_COLOR) - .PlaceholderText("archipelago.gg:38281") - .DefaultValue("archipelago.gg:38281") - .Size(ImVec2(ImGui::GetFontSize() * 15, 0)) - .LabelPosition(UIWidgets::LabelPositions::None)); + UIWidgets::InputOptions() + .Color(THEME_COLOR) + .PlaceholderText("archipelago.gg:38281") + .DefaultValue("archipelago.gg:38281") + .Size(ImVec2(ImGui::GetFontSize() * 15, 0)) + .LabelPosition(UIWidgets::LabelPositions::None)); ImGui::Text("Slot Name"); UIWidgets::CVarInputString("##ArchipelagoSlotName", CVAR_REMOTE_ARCHIPELAGO("SlotName"), UIWidgets::InputOptions() @@ -72,6 +72,18 @@ void ArchipelagoSettingsWindow::DrawElement() { ArchipelagoClient::GetInstance().OnItemReceived(apItem); } } + + static bool sArchipelagoTexturesLoaded = false; + if (!sArchipelagoTexturesLoaded) { + Ship::Context::GetInstance()->GetWindow()->GetGui()->LoadTextureFromRawImage( + "Archipelago Progressive Icon", "textures/parameter_static/gArchipelagoProgressive.png"); + Ship::Context::GetInstance()->GetWindow()->GetGui()->LoadTextureFromRawImage( + "Archipelago Useful Icon", "textures/parameter_static/gArchipelagoUseful.png"); + Ship::Context::GetInstance()->GetWindow()->GetGui()->LoadTextureFromRawImage( + "Archipelago Junk Icon", "textures/parameter_static/gArchipelagoJunk.png"); + + sArchipelagoTexturesLoaded = true; + } }; void ArchipelagoSettingsWindow::InitElement() { diff --git a/soh/soh/Notification/Notification.cpp b/soh/soh/Notification/Notification.cpp index 14873b068..5108ae2cb 100644 --- a/soh/soh/Notification/Notification.cpp +++ b/soh/soh/Notification/Notification.cpp @@ -89,7 +89,7 @@ void Window::Draw() { if (notification.itemIcon != nullptr) { ImGui::Image(Ship::Context::GetInstance()->GetWindow()->GetGui()->GetTextureByName(notification.itemIcon), - ImVec2(24, 24)); + ImVec2(32, 32)); ImGui::SameLine(); } if (!notification.prefix.empty()) {