mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-11 21:21:57 -04:00
ordon freestanding rupees
This commit is contained in:
+102
-43
@@ -5,17 +5,22 @@
|
||||
|
||||
#include "d/dolzel.h" // IWYU pragma: keep
|
||||
|
||||
#include "d/actor/d_a_obj_item.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "d/d_a_itembase_static.h"
|
||||
#include "d/actor/d_a_obj_item.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_a_itembase_static.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_item.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include "dusk/randomizer/game/verify_item_functions.h"
|
||||
#include "f_op/f_op_camera_mng.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
#if TARGET_PC
|
||||
#include "dusk/randomizer/game/tools.h"
|
||||
#endif
|
||||
|
||||
static f32 Reflect(cXyz* i_vec, cBgS_PolyInfo const& i_polyinfo, f32 i_scale) {
|
||||
cM3dGPla plane;
|
||||
|
||||
@@ -228,11 +233,7 @@ void daItem_c::CreateInit() {
|
||||
initBaseMtx();
|
||||
animPlay(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f);
|
||||
|
||||
#if TARGET_PC
|
||||
if (m_itemNo == dItemNo_BOOMERANG_e && !randomizer_IsActive()) {
|
||||
#else
|
||||
if (m_itemNo == dItemNo_BOOMERANG_e) {
|
||||
#endif
|
||||
if (m_itemNo == dItemNo_BOOMERANG_e IF_DUSK(&& !randomizer_IsActive())) {
|
||||
itemGetNextExecute();
|
||||
} else if ((m_itemNo == dItemNo_ORANGE_RUPEE_e || m_itemNo == dItemNo_SILVER_RUPEE_e) &&
|
||||
mSparkleEmtr.getEmitter() == NULL)
|
||||
@@ -293,6 +294,23 @@ int daItem_c::_daItem_create() {
|
||||
field_0x95d = true;
|
||||
}
|
||||
|
||||
#if TARGET_PC
|
||||
if (randomizer_IsActive()) {
|
||||
u32 params = fopAcM_GetParam(this);
|
||||
u8 flag = daItem_prm::getItemBitNo(this);
|
||||
u8 stageIdx = getStageID();
|
||||
const auto& freestandingOverrides = randomizer_GetContext().mFreestandingItemOverrides;
|
||||
// If we found an override for this freestanding item
|
||||
if (freestandingOverrides.contains(stageIdx) && freestandingOverrides.at(stageIdx).contains(flag)) {
|
||||
// Clear the itemId and set it to out new itemId
|
||||
params &= 0xFFFFFF00;
|
||||
u8 newItemId = freestandingOverrides.at(stageIdx).at(flag);
|
||||
params |= verifyProgressiveItem(newItemId);
|
||||
fopAcM_SetParam(this, params);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
m_itemNo = daItem_prm::getItemNo(this);
|
||||
BOOL flag = dItem_data::chkFlag(m_itemNo, 2);
|
||||
|
||||
@@ -835,49 +853,90 @@ void daItem_c::itemGetNextExecute() {
|
||||
setFlag(FLAG_INIT_GET_ITEM_e);
|
||||
BOOL haveItem = false;
|
||||
|
||||
switch (m_itemNo) {
|
||||
case dItemNo_HEART_e:
|
||||
case dItemNo_GREEN_RUPEE_e:
|
||||
case dItemNo_ARROW_10_e:
|
||||
case dItemNo_ARROW_20_e:
|
||||
case dItemNo_ARROW_30_e:
|
||||
case dItemNo_ARROW_1_e:
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
break;
|
||||
case dItemNo_BLUE_RUPEE_e:
|
||||
case dItemNo_YELLOW_RUPEE_e:
|
||||
case dItemNo_RED_RUPEE_e:
|
||||
case dItemNo_PURPLE_RUPEE_e:
|
||||
case dItemNo_ORANGE_RUPEE_e:
|
||||
case dItemNo_SILVER_RUPEE_e:
|
||||
case dItemNo_PACHINKO_SHOT_e:
|
||||
if (daPy_getPlayerActorClass()->checkCanoeRide() ||
|
||||
daPy_getPlayerActorClass()->checkHorseRide())
|
||||
{
|
||||
if (checkItemGet(m_itemNo, 1)) {
|
||||
haveItem = true;
|
||||
}
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
#if TARGET_PC
|
||||
// Randomizer specific stuff for choosing if to play a demo or not
|
||||
// Just copying the whole switch statement here and modifying it
|
||||
// is better than littering the original switch statement with #if TARGET_PC
|
||||
if (randomizer_IsActive()) {
|
||||
switch (m_itemNo) {
|
||||
case dItemNo_BLUE_RUPEE_e:
|
||||
case dItemNo_YELLOW_RUPEE_e:
|
||||
case dItemNo_RED_RUPEE_e:
|
||||
case dItemNo_PURPLE_RUPEE_e:
|
||||
case dItemNo_ORANGE_RUPEE_e:
|
||||
case dItemNo_SILVER_RUPEE_e:
|
||||
case dItemNo_PACHINKO_SHOT_e:
|
||||
if (daPy_getPlayerActorClass()->checkCanoeRide() ||
|
||||
daPy_getPlayerActorClass()->checkHorseRide())
|
||||
{
|
||||
if (checkItemGet(m_itemNo, 1)) {
|
||||
haveItem = true;
|
||||
}
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
|
||||
if (!haveItem) {
|
||||
dComIfGs_offItemFirstBit(m_itemNo);
|
||||
if (!haveItem) {
|
||||
dComIfGs_offItemFirstBit(m_itemNo);
|
||||
}
|
||||
} else if (!checkItemGet(m_itemNo, 1)) {
|
||||
procInitGetDemoEvent();
|
||||
} else {
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
}
|
||||
} else if (!checkItemGet(m_itemNo, 1)) {
|
||||
break;
|
||||
default:
|
||||
procInitGetDemoEvent();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
#endif
|
||||
switch (m_itemNo) {
|
||||
case dItemNo_HEART_e:
|
||||
case dItemNo_GREEN_RUPEE_e:
|
||||
case dItemNo_ARROW_10_e:
|
||||
case dItemNo_ARROW_20_e:
|
||||
case dItemNo_ARROW_30_e:
|
||||
case dItemNo_ARROW_1_e:
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
break;
|
||||
case dItemNo_BLUE_RUPEE_e:
|
||||
case dItemNo_YELLOW_RUPEE_e:
|
||||
case dItemNo_RED_RUPEE_e:
|
||||
case dItemNo_PURPLE_RUPEE_e:
|
||||
case dItemNo_ORANGE_RUPEE_e:
|
||||
case dItemNo_SILVER_RUPEE_e:
|
||||
case dItemNo_PACHINKO_SHOT_e:
|
||||
if (daPy_getPlayerActorClass()->checkCanoeRide() ||
|
||||
daPy_getPlayerActorClass()->checkHorseRide())
|
||||
{
|
||||
if (checkItemGet(m_itemNo, 1)) {
|
||||
haveItem = true;
|
||||
}
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
|
||||
if (!haveItem) {
|
||||
dComIfGs_offItemFirstBit(m_itemNo);
|
||||
}
|
||||
} else if (!checkItemGet(m_itemNo, 1)) {
|
||||
procInitGetDemoEvent();
|
||||
} else {
|
||||
procInitSimpleGetDemo();
|
||||
itemGet();
|
||||
}
|
||||
break;
|
||||
case dItemNo_BOOMERANG_e:
|
||||
procInitGetDemoEvent();
|
||||
break;
|
||||
default:
|
||||
// "[daItem_c] Get process not defined[%d]\n"
|
||||
OS_REPORT_ERROR("[daItem_c]ゲット処理が定義されていません[%d]\n", m_itemNo);
|
||||
}
|
||||
break;
|
||||
case dItemNo_BOOMERANG_e:
|
||||
procInitGetDemoEvent();
|
||||
break;
|
||||
default:
|
||||
// "[daItem_c] Get process not defined[%d]\n"
|
||||
OS_REPORT_ERROR("[daItem_c]ゲット処理が定義されていません[%d]\n", m_itemNo);
|
||||
#if TARGET_PC
|
||||
}
|
||||
#endif
|
||||
|
||||
fopAcM_onItem(this, mItemBitNo);
|
||||
mCcCyl.SetTgType(0);
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
|
||||
#include "dusk/randomizer/game/verify_item_functions.h"
|
||||
|
||||
static const f32 l_cull_size_box[6] = { -150.0f, -10.0f, -150.0f, 150.0f, 300.0f, 100.0f };
|
||||
|
||||
static const cM3dGCylS l_cyl_info[3] = {
|
||||
@@ -1791,7 +1793,8 @@ cPhs_Step daTbox_c::create1st() {
|
||||
home.angle.z &= ~0xFF00;
|
||||
auto stage = dComIfGp_getStartStageName();
|
||||
auto tboxId = static_cast<u8>(getTboxNo());
|
||||
home.angle.z |= randomizer_GetContext().mTreasureChestOverrides[stage][tboxId] << 8;
|
||||
u8 itemId = randomizer_GetContext().mTreasureChestOverrides[stage][tboxId];
|
||||
home.angle.z |= verifyProgressiveItem(itemId) << 8;
|
||||
}
|
||||
#endif
|
||||
field_0x982 = home.angle.z;
|
||||
|
||||
@@ -63,6 +63,14 @@ namespace dusk {
|
||||
randoData.mTreasureChestOverrides[stage][tboxId] = itemId;
|
||||
}
|
||||
|
||||
// Rupee Overrides
|
||||
if (location->HasCategories("Rupee - Freestanding")) {
|
||||
u8 stage = metaData[0]["Stage"].as<u8>();
|
||||
u8 flag = metaData[0]["Flag"].as<u8>();
|
||||
u8 itemId = location->GetCurrentItem()->GetID();
|
||||
randoData.mFreestandingItemOverrides[stage][flag] = itemId;
|
||||
}
|
||||
|
||||
// Items that we lookup just by calling their location name
|
||||
if (location->HasCategories("Location Name Lookup")) {
|
||||
const auto& locationName = metaData.as<std::string>();
|
||||
@@ -147,68 +155,66 @@ namespace dusk {
|
||||
for (const auto& roomNode : stageNode.second) {
|
||||
const auto& roomStr = roomNode.first.as<std::string>();
|
||||
u8 roomNo = roomStr.back() - '0';
|
||||
for (const auto& layerNode : roomNode.second) {
|
||||
const auto& layerStr = layerNode.first.as<std::string>();
|
||||
u8 layerNo = layerStr.back() - '0';
|
||||
// Create key based off of stage index, room, and layer
|
||||
u32 stageRoomLayerKey{};
|
||||
stageRoomLayerKey |= getStageID(stageName.c_str()) << 16;
|
||||
stageRoomLayerKey |= roomNo << 8;
|
||||
stageRoomLayerKey |= layerNo;
|
||||
for (const auto& actorNode : layerNode.second) {
|
||||
using namespace Utility::Endian;
|
||||
// Get all the data for the actor (with endian shenanigans)
|
||||
stage_actor_data_class actor{};
|
||||
const auto& actorName = actorNode["name"].as<std::string>();
|
||||
strncpy(actor.name, actorName.c_str(), 8);
|
||||
actor.base.parameters = toPlatform(target, actorNode["parameters"].as<u32>());
|
||||
actor.base.position.x = toPlatform(target, actorNode["position"]["x"].as<f32>());
|
||||
actor.base.position.y = toPlatform(target, actorNode["position"]["y"].as<f32>());
|
||||
actor.base.position.z = toPlatform(target, actorNode["position"]["z"].as<f32>());
|
||||
for (const auto& actorNode : roomNode.second) {
|
||||
using namespace Utility::Endian;
|
||||
// Get all the data for the actor (with endian shenanigans)
|
||||
stage_actor_data_class actor{};
|
||||
const auto& actorName = actorNode["name"].as<std::string>();
|
||||
strncpy(actor.name, actorName.c_str(), 8);
|
||||
actor.base.parameters = toPlatform(target, actorNode["parameters"].as<u32>());
|
||||
actor.base.position.x = toPlatform(target, actorNode["position"]["x"].as<f32>());
|
||||
actor.base.position.y = toPlatform(target, actorNode["position"]["y"].as<f32>());
|
||||
actor.base.position.z = toPlatform(target, actorNode["position"]["z"].as<f32>());
|
||||
// Have to retrieve as u16 and then cast as s16 because otherwise yaml-cpp
|
||||
// complains about values over 32767 not fitting in s16
|
||||
actor.base.angle.x = toPlatform(target, static_cast<s16>(actorNode["angle"]["x"].as<u16>()));
|
||||
actor.base.angle.y = toPlatform(target, static_cast<s16>(actorNode["angle"]["y"].as<u16>()));
|
||||
actor.base.angle.z = toPlatform(target, static_cast<s16>(actorNode["angle"]["z"].as<u16>()));
|
||||
|
||||
// Create unique hash based off of actor data
|
||||
u32 actorCRC32 = getActorCRC32(&actor);
|
||||
|
||||
// Then override the actor with whatever parts are being patched
|
||||
const auto& patchNode = actorNode["patch"];
|
||||
if (patchNode["parameters"]) {
|
||||
actor.base.parameters = toPlatform(target, patchNode["parameters"].as<u32>());
|
||||
}
|
||||
if (auto patchPosition = patchNode["position"]) {
|
||||
if (patchPosition["x"]) {
|
||||
actor.base.position.x = toPlatform(target, patchPosition["x"].as<f32>());
|
||||
}
|
||||
if (patchPosition["y"]) {
|
||||
actor.base.position.y = toPlatform(target, patchPosition["y"].as<f32>());
|
||||
}
|
||||
if (patchPosition["z"]) {
|
||||
actor.base.position.z = toPlatform(target, patchPosition["z"].as<f32>());
|
||||
}
|
||||
}
|
||||
if (auto patchAngle = patchNode["angle"]) {
|
||||
// Have to retrieve as u16 and then cast as s16 because otherwise yaml-cpp
|
||||
// complains about values over 32767 not fitting in s16
|
||||
actor.base.angle.x = toPlatform(target, static_cast<s16>(actorNode["angle"]["x"].as<u16>()));
|
||||
actor.base.angle.y = toPlatform(target, static_cast<s16>(actorNode["angle"]["y"].as<u16>()));
|
||||
actor.base.angle.z = toPlatform(target, static_cast<s16>(actorNode["angle"]["z"].as<u16>()));
|
||||
|
||||
|
||||
// Create unique hash based off of actor data
|
||||
u32 actorCRC32 = getActorCRC32(&actor);
|
||||
|
||||
// Then override the actor with whatever parts are being patched
|
||||
const auto& patchNode = actorNode["patch"];
|
||||
if (patchNode["parameters"]) {
|
||||
actor.base.parameters = toPlatform(target, patchNode["parameters"].as<u32>());
|
||||
if (patchAngle["x"]) {
|
||||
actor.base.angle.x = toPlatform(target, static_cast<s16>(patchAngle["x"].as<u16>()));
|
||||
}
|
||||
if (auto patchPosition = patchNode["position"]) {
|
||||
if (patchPosition["x"]) {
|
||||
actor.base.position.x = toPlatform(target, patchPosition["x"].as<f32>());
|
||||
}
|
||||
if (patchPosition["y"]) {
|
||||
actor.base.position.y = toPlatform(target, patchPosition["y"].as<f32>());
|
||||
}
|
||||
if (patchPosition["z"]) {
|
||||
actor.base.position.z = toPlatform(target, patchPosition["z"].as<f32>());
|
||||
}
|
||||
if (patchAngle["y"]) {
|
||||
actor.base.angle.y = toPlatform(target, static_cast<s16>(patchAngle["y"].as<u16>()));
|
||||
}
|
||||
if (auto patchAngle = patchNode["angle"]) {
|
||||
// Have to retrieve as u16 and then cast as s16 because otherwise yaml-cpp
|
||||
// complains about values over 32767 not fitting in s16
|
||||
if (patchAngle["x"]) {
|
||||
actor.base.angle.x = toPlatform(target, static_cast<s16>(patchAngle["x"].as<u16>()));
|
||||
}
|
||||
if (patchAngle["y"]) {
|
||||
actor.base.angle.y = toPlatform(target, static_cast<s16>(patchAngle["y"].as<u16>()));
|
||||
}
|
||||
if (patchAngle["z"]) {
|
||||
actor.base.angle.z = toPlatform(target, static_cast<s16>(patchAngle["z"].as<u16>()));
|
||||
}
|
||||
if (patchAngle["z"]) {
|
||||
actor.base.angle.z = toPlatform(target, static_cast<s16>(patchAngle["z"].as<u16>()));
|
||||
}
|
||||
}
|
||||
|
||||
// Insert the actor patch into the context with our crc32 as the key and the
|
||||
// raw actor patch data as the value
|
||||
std::array<u8, RandomizerContext::ACTOR_CRC_SIZE> patchedActorData{};
|
||||
std::memcpy(patchedActorData.data(), &actor, RandomizerContext::ACTOR_CRC_SIZE);
|
||||
// Insert the actor patch into the context with our crc32 as the key and the
|
||||
// raw actor patch data as the value
|
||||
std::array<u8, RandomizerContext::ACTOR_CRC_SIZE> patchedActorData{};
|
||||
std::memcpy(patchedActorData.data(), &actor, RandomizerContext::ACTOR_CRC_SIZE);
|
||||
for (const auto& layerNode : actorNode["layers"]) {
|
||||
u8 layerNo = layerNode.as<u8>();
|
||||
// Create key based off of stage index, room, and layer
|
||||
u32 stageRoomLayerKey{};
|
||||
stageRoomLayerKey |= getStageID(stageName.c_str()) << 16;
|
||||
stageRoomLayerKey |= roomNo << 8;
|
||||
stageRoomLayerKey |= layerNo;
|
||||
randoData.mActorPatches[stageRoomLayerKey][actorCRC32] = patchedActorData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,12 @@ std::optional<std::string> RandomizerContext::WriteToFile() {
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto& [stageIdx, itemOverride] : this->mFreestandingItemOverrides) {
|
||||
for (const auto& [flag, itemId] : itemOverride) {
|
||||
out["mFreestandingItemOverrides"][static_cast<u16>(stageIdx)][static_cast<u16>(flag)] = static_cast<u16>(itemId);
|
||||
}
|
||||
}
|
||||
|
||||
out["mItemLocations"] = this->mItemLocations;
|
||||
|
||||
out["mStartHour"] = static_cast<u16>(this->mStartHour);
|
||||
@@ -116,6 +122,21 @@ std::optional<std::string> RandomizerContext::LoadFromHash(const std::string& ha
|
||||
}
|
||||
}
|
||||
|
||||
// Freestanding overrides
|
||||
for (const auto& stageNode : in["mFreestandingItemOverrides"]) {
|
||||
const auto& stageIdx = stageNode.first.as<u8>();
|
||||
// Single nodes with a zero in their key will get dumped as sequences
|
||||
if (stageNode.second.IsSequence()) {
|
||||
this->mFreestandingItemOverrides[stageIdx][0] = stageNode.second[0].as<u8>();
|
||||
} else {
|
||||
for (const auto& flagItemPair : stageNode.second) {
|
||||
auto flag = flagItemPair.first.as<u8>();
|
||||
auto itemId = flagItemPair.second.as<u8>();
|
||||
this->mFreestandingItemOverrides[stageIdx][flag] = itemId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Items For Present Demos
|
||||
for (const auto& locationNode : in["mItemLocations"]) {
|
||||
const auto& locationName = locationNode.first.as<std::string>();
|
||||
|
||||
@@ -26,6 +26,7 @@ public:
|
||||
std::list<u8> mStartingInventory{};
|
||||
std::unordered_map<std::string, std::unordered_map<u8, u8>> mTreasureChestOverrides{};
|
||||
std::unordered_map<std::string, std::unordered_map<u8, u8>> mPoeOverrides{};
|
||||
std::unordered_map<u8, std::unordered_map<u8, u8>> mFreestandingItemOverrides{};
|
||||
std::unordered_map<std::string, int> mItemLocations{};
|
||||
u8 mStartHour{0};
|
||||
u8 mMapBits{};
|
||||
|
||||
@@ -4,35 +4,108 @@
|
||||
|
||||
# Ordon Village
|
||||
F_SP103:
|
||||
Room 0:
|
||||
Layer 0:
|
||||
# Bo's House left Door
|
||||
- name: kdoor
|
||||
parameters: 0x88000627
|
||||
position:
|
||||
x: 470.48294
|
||||
y: 500.19
|
||||
z: 5323.129
|
||||
Room 0: # Main Village
|
||||
# Bo's House left Door
|
||||
- name: kdoor
|
||||
parameters: 0x88000627
|
||||
position:
|
||||
x: 470.48294
|
||||
y: 500.19
|
||||
z: 5323.129
|
||||
angle:
|
||||
x: 0x0191
|
||||
y: 0x3777
|
||||
z: 0xFFFF
|
||||
patch:
|
||||
# Set angle.x to -1 so the door isn't locked
|
||||
angle:
|
||||
x: 0x0191
|
||||
y: 0x3777
|
||||
z: 0xFFFF
|
||||
patch:
|
||||
# Set angle.x to -1 so the door isn't locked
|
||||
angle:
|
||||
x: 0xFFFF
|
||||
# Bo's House right door
|
||||
- name: kdoor
|
||||
parameters: 0x94000627
|
||||
position:
|
||||
x: 500.71118
|
||||
y: 500.19
|
||||
z: 5172.267
|
||||
x: 0xFFFF
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Bo's House right door
|
||||
- name: kdoor
|
||||
parameters: 0x94000627
|
||||
position:
|
||||
x: 500.71118
|
||||
y: 500.19
|
||||
z: 5172.267
|
||||
angle:
|
||||
x: 0x0191
|
||||
y: 0xB778
|
||||
z: 0xFFFF
|
||||
patch:
|
||||
# Set angle.x to -1 so the door isn't locked
|
||||
angle:
|
||||
x: 0x0191
|
||||
y: 0xB778
|
||||
z: 0xFFFF
|
||||
patch:
|
||||
# Set angle.x to -1 so the door isn't locked
|
||||
angle:
|
||||
x: 0xFFFF
|
||||
x: 0xFFFF
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Rupee on Rusl's House (they both share the same flag, this gives one a different flag)
|
||||
- name: item
|
||||
parameters: 0xF3FF8103
|
||||
position:
|
||||
x: -4739.0400390625
|
||||
y: 1155.98303222656
|
||||
z: 2239.53588867187
|
||||
angle:
|
||||
x: 0x0000
|
||||
y: 0x3333
|
||||
z: 0x003F
|
||||
patch:
|
||||
# Give this item a unique flag
|
||||
parameters: 0xF3FF8403
|
||||
layers:
|
||||
- 0
|
||||
- 5
|
||||
|
||||
# Rupee above Haunch's House (also flag sharing situation)
|
||||
- name: item
|
||||
parameters: 0xF3FF8701
|
||||
position:
|
||||
x: -1819.2646484375
|
||||
y: 984.098937988281
|
||||
z: 1665.06237792969
|
||||
angle:
|
||||
x: 0x0000
|
||||
y: 0x3333
|
||||
z: 0x003F
|
||||
patch:
|
||||
# Give this item a unique flag
|
||||
parameters: 0xF3FF8501
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Rupee by Bo's Window (also flag sharing situation)
|
||||
- name: item
|
||||
parameters: 0xF3FF8601
|
||||
position:
|
||||
x: 590.097839355469
|
||||
y: 1158.02856445312
|
||||
z: 5215.7802734375
|
||||
angle:
|
||||
x: 0x0000
|
||||
y: 0x3333
|
||||
z: 0x003F
|
||||
patch:
|
||||
# Give this item a unique flag
|
||||
parameters: 0xF3FF8A01
|
||||
layers:
|
||||
- 0
|
||||
|
||||
# Rupee in Ordon River (also flag sharing situation)
|
||||
- name: item
|
||||
parameters: 0x13FF9501
|
||||
position:
|
||||
x: -4326.0654296875
|
||||
y: 28.7633323669434
|
||||
z: 4208.9892578125
|
||||
angle:
|
||||
x: 0x0000
|
||||
y: 0x999A
|
||||
z: 0x003F
|
||||
patch:
|
||||
# Give this item a unique flag
|
||||
parameters: 0x13FF9101
|
||||
layers:
|
||||
- 0
|
||||
@@ -82,7 +82,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x80
|
||||
|
||||
- Name: Ordon Bo Roof Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -91,7 +92,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x8B
|
||||
|
||||
- Name: Ordon Bo Window Rupee 1
|
||||
Original Item: Green Rupee
|
||||
@@ -100,7 +102,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x8A
|
||||
|
||||
- Name: Ordon Bo Window Rupee 2
|
||||
Original Item: Green Rupee
|
||||
@@ -109,7 +112,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x86
|
||||
|
||||
- Name: Ordon Hidden Rusl House Rupee
|
||||
Original Item: Orange Rupee
|
||||
@@ -118,7 +122,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x88
|
||||
|
||||
- Name: Ordon Rupee In Grass By Bo
|
||||
Original Item: Green Rupee
|
||||
@@ -127,7 +132,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x96
|
||||
|
||||
- Name: Ordon Rupee In River 1
|
||||
Original Item: Green Rupee
|
||||
@@ -136,7 +142,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x95
|
||||
|
||||
- Name: Ordon Rupee In River 2
|
||||
Original Item: Green Rupee
|
||||
@@ -145,7 +152,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x91
|
||||
|
||||
- Name: Ordon Rupee Under Bridge
|
||||
Original Item: Green Rupee
|
||||
@@ -154,7 +162,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x82
|
||||
|
||||
- Name: Ordon Rupee Under Tall Tree 1
|
||||
Original Item: Green Rupee
|
||||
@@ -163,7 +172,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x87
|
||||
|
||||
- Name: Ordon Rupee Under Tall Tree 2
|
||||
Original Item: Green Rupee
|
||||
@@ -172,7 +182,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x85
|
||||
|
||||
- Name: Ordon Rusl House Roof Rupee 1
|
||||
Original Item: Yellow Rupee
|
||||
@@ -181,7 +192,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x84
|
||||
|
||||
- Name: Ordon Rusl House Roof Rupee 2
|
||||
Original Item: Yellow Rupee
|
||||
@@ -190,7 +202,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x81
|
||||
|
||||
- Name: Ordon Shield House Ledge Grass Rupee
|
||||
Original Item: Purple Rupee
|
||||
@@ -199,7 +212,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x94
|
||||
|
||||
- Name: Ordon Tree Long Branch Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -208,7 +222,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x97
|
||||
|
||||
- Name: Ordon Tree Short Branch Rupee
|
||||
Original Item: Blue Rupee
|
||||
@@ -217,7 +232,8 @@
|
||||
- Ordona Province
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 43
|
||||
Flag: 0x89
|
||||
|
||||
- Name: Herding Goats Reward
|
||||
Original Item: Piece of Heart
|
||||
@@ -1365,7 +1381,8 @@
|
||||
- Death Mountain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Death Mountain Volcano Ledge Rupee 2
|
||||
Original Item: Yellow Rupee
|
||||
@@ -1374,7 +1391,8 @@
|
||||
- Death Mountain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Death Mountain Volcano Ledge Rupee 3
|
||||
Original Item: Yellow Rupee
|
||||
@@ -1383,7 +1401,8 @@
|
||||
- Death Mountain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Death Mountain Volcano Pipe Ledge Rock Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -2863,7 +2882,8 @@
|
||||
- Lake Hylia
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Lake Hylia Right Underwater Boulder Rupee
|
||||
Original Item: Green Rupee
|
||||
@@ -2881,7 +2901,8 @@
|
||||
- Lake Hylia
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Lake Hylia Alcove Poe
|
||||
Original Item: Poe Soul
|
||||
@@ -3272,7 +3293,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Central Underwater Boulder Rupee
|
||||
Original Item: Blue Rupee
|
||||
@@ -3299,7 +3321,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Shortcut Lower Boulder Rupee
|
||||
Original Item: Blue Rupee
|
||||
@@ -3326,7 +3349,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Vine Ledge Rupee
|
||||
Original Item: Blue Rupee
|
||||
@@ -3335,7 +3359,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Waterfall Ledge Rupee
|
||||
Original Item: Blue Rupee
|
||||
@@ -3344,7 +3369,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Extinguish All Torches Chest
|
||||
Original Item: Purple Rupee
|
||||
@@ -3385,7 +3411,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Throne East Underwater Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -3394,7 +3421,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Throne Northwest Underwater Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -3403,7 +3431,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Throne South Underwater Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -3412,7 +3441,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Throne West Gate Underwater Rupee
|
||||
Original Item: Blue Rupee
|
||||
@@ -3421,7 +3451,8 @@
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Zoras Domain Throne West Underwater Rupee
|
||||
Original Item: Yellow Rupee
|
||||
@@ -3429,10 +3460,11 @@
|
||||
- Overworld
|
||||
- Zoras Domain
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
# SNOWPEAK PROVINCE
|
||||
Metadata:
|
||||
- None
|
||||
|
||||
- Name: Ashei Sketch
|
||||
Original Item: Asheis Sketch
|
||||
@@ -3533,7 +3565,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Bridge Ledge Middle Rupee
|
||||
Original Item: Green Rupee
|
||||
@@ -3542,7 +3575,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Bridge Ledge Upper Rupee
|
||||
Original Item: Green Rupee
|
||||
@@ -3551,7 +3585,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 1
|
||||
Original Item: Green Rupee
|
||||
@@ -3560,7 +3595,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 2
|
||||
Original Item: Green Rupee
|
||||
@@ -3569,7 +3605,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 3
|
||||
Original Item: Green Rupee
|
||||
@@ -3578,7 +3615,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 4
|
||||
Original Item: Green Rupee
|
||||
@@ -3587,7 +3625,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 5
|
||||
Original Item: Red Rupee
|
||||
@@ -3596,7 +3635,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 6
|
||||
Original Item: Green Rupee
|
||||
@@ -3605,7 +3645,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 7
|
||||
Original Item: Green Rupee
|
||||
@@ -3614,7 +3655,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 8
|
||||
Original Item: Green Rupee
|
||||
@@ -3623,7 +3665,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 9
|
||||
Original Item: Green Rupee
|
||||
@@ -3632,7 +3675,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 10
|
||||
Original Item: Green Rupee
|
||||
@@ -3641,7 +3685,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Shortcut Rupee 11
|
||||
Original Item: Green Rupee
|
||||
@@ -3650,7 +3695,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Snowy Tree Top Rupee 1
|
||||
Original Item: Blue Rupee
|
||||
@@ -3659,7 +3705,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Snowy Tree Top Rupee 2
|
||||
Original Item: Red Rupee
|
||||
@@ -3668,7 +3715,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Snowy Tree Top Rupee 3
|
||||
Original Item: Purple Rupee
|
||||
@@ -3677,7 +3725,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Top Left Rupee
|
||||
Original Item: Green Rupee
|
||||
@@ -3686,7 +3735,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
- Name: Snowboarding Top Right Rupee
|
||||
Original Item: Green Rupee
|
||||
@@ -3695,7 +3745,8 @@
|
||||
- Snowpeak
|
||||
- Rupee - Freestanding
|
||||
Metadata:
|
||||
- None
|
||||
- Stage: 0xFF
|
||||
Flag: 0xFF
|
||||
|
||||
# DESERT PROVINCE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user