document more map object types
This commit is contained in:
+20
-20
@@ -1718,10 +1718,10 @@ void ItemCreator::generate_weapon_shop_item_bonus2(ItemData& item, size_t player
|
||||
}
|
||||
|
||||
ItemCreator::DropResult ItemCreator::on_specialized_box_item_drop(
|
||||
uint8_t area, float def_z, uint32_t def0, uint32_t def1, uint32_t def2) {
|
||||
uint8_t area, float param3, uint32_t param4, uint32_t param5, uint32_t param6) {
|
||||
DropResult res;
|
||||
res.item = this->base_item_for_specialized_box(def0, def1, def2);
|
||||
if (def_z == 0.0f) {
|
||||
res.item = this->base_item_for_specialized_box(param4, param5, param6);
|
||||
if (param3 == 0.0f) {
|
||||
uint16_t type = res.item.data1w[0];
|
||||
res.item.clear();
|
||||
res.item.data1w[0] = type;
|
||||
@@ -1730,39 +1730,39 @@ ItemCreator::DropResult ItemCreator::on_specialized_box_item_drop(
|
||||
return res;
|
||||
}
|
||||
|
||||
ItemData ItemCreator::base_item_for_specialized_box(uint32_t def0, uint32_t def1, uint32_t def2) const {
|
||||
ItemData ItemCreator::base_item_for_specialized_box(uint32_t param4, uint32_t param5, uint32_t param6) const {
|
||||
ItemData item;
|
||||
item.data1[0] = (def0 >> 0x18) & 0x0F;
|
||||
item.data1[1] = (def0 >> 0x10) + ((item.data1[0] == 0x00) || (item.data1[0] == 0x01));
|
||||
item.data1[2] = def0 >> 8;
|
||||
item.data1[0] = (param4 >> 0x18) & 0x0F;
|
||||
item.data1[1] = (param4 >> 0x10) + ((item.data1[0] == 0x00) || (item.data1[0] == 0x01));
|
||||
item.data1[2] = param4 >> 8;
|
||||
|
||||
switch (item.data1[0]) {
|
||||
case 0x00:
|
||||
item.data1[3] = (def1 >> 0x18) & 0xFF;
|
||||
item.data1[4] = def0 & 0xFF;
|
||||
item.data1[6] = (def1 >> 8) & 0xFF;
|
||||
item.data1[7] = def1 & 0xFF;
|
||||
item.data1[8] = (def2 >> 0x18) & 0xFF;
|
||||
item.data1[9] = (def2 >> 0x10) & 0xFF;
|
||||
item.data1[10] = (def2 >> 8) & 0xFF;
|
||||
item.data1[11] = def2 & 0xFF;
|
||||
item.data1[3] = (param5 >> 0x18) & 0xFF;
|
||||
item.data1[4] = param4 & 0xFF;
|
||||
item.data1[6] = (param5 >> 8) & 0xFF;
|
||||
item.data1[7] = param5 & 0xFF;
|
||||
item.data1[8] = (param6 >> 0x18) & 0xFF;
|
||||
item.data1[9] = (param6 >> 0x10) & 0xFF;
|
||||
item.data1[10] = (param6 >> 8) & 0xFF;
|
||||
item.data1[11] = param6 & 0xFF;
|
||||
break;
|
||||
case 0x01:
|
||||
item.data1[3] = (def1 >> 0x18) & 0xFF;
|
||||
item.data1[4] = (def1 >> 0x10) & 0xFF;
|
||||
item.data1[5] = def0 & 0xFF;
|
||||
item.data1[3] = (param5 >> 0x18) & 0xFF;
|
||||
item.data1[4] = (param5 >> 0x10) & 0xFF;
|
||||
item.data1[5] = param4 & 0xFF;
|
||||
break;
|
||||
case 0x02:
|
||||
item.assign_mag_stats(ItemMagStats());
|
||||
break;
|
||||
case 0x03:
|
||||
if (item.data1[1] == 0x02) {
|
||||
item.data1[4] = def0 & 0xFF;
|
||||
item.data1[4] = param4 & 0xFF;
|
||||
}
|
||||
item.set_tool_item_amount(*this->stack_limits, 1);
|
||||
break;
|
||||
case 0x04:
|
||||
item.data2d = ((def1 >> 0x10) & 0xFFFF) * 10;
|
||||
item.data2d = ((param5 >> 0x10) & 0xFFFF) * 10;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
+3
-3
@@ -37,9 +37,9 @@ public:
|
||||
|
||||
DropResult on_monster_item_drop(uint32_t enemy_type, uint8_t area);
|
||||
DropResult on_box_item_drop(uint8_t area);
|
||||
DropResult on_specialized_box_item_drop(uint8_t area, float def_z, uint32_t def0, uint32_t def1, uint32_t def2);
|
||||
|
||||
ItemData base_item_for_specialized_box(uint32_t def0, uint32_t def1, uint32_t def2) const;
|
||||
// Note: param3-6 refer to the corresponding fields of the object definition
|
||||
DropResult on_specialized_box_item_drop(uint8_t area, float param3, uint32_t param4, uint32_t param5, uint32_t param6);
|
||||
ItemData base_item_for_specialized_box(uint32_t param4, uint32_t param5, uint32_t param6) const;
|
||||
|
||||
std::vector<ItemData> generate_armor_shop_contents(size_t player_level);
|
||||
std::vector<ItemData> generate_tool_shop_contents(size_t player_level);
|
||||
|
||||
+94
-20
@@ -609,6 +609,12 @@ const char* MapFile::name_for_object_type(uint16_t type) {
|
||||
// param3 = TODO
|
||||
{0x0004, "TObjLight"},
|
||||
|
||||
// Arbitrary item. The parameters specify the item data; see
|
||||
// ItemCreator::base_item_for_specialized_box for how the encoding works.
|
||||
// This object is only available on v1 and v2; it is not available in v3
|
||||
// and v4.
|
||||
{0x0005, "TItem"},
|
||||
|
||||
// Environmental sound. This object is not constructed in offline multi
|
||||
// mode. Params:
|
||||
// param3 = audibility radius (if <= 0 uses default of 200)
|
||||
@@ -1299,6 +1305,11 @@ const char* MapFile::name_for_object_type(uint16_t type) {
|
||||
// param1 = radius
|
||||
{0x0057, "TObjTradeCollision"},
|
||||
|
||||
// TODO: Describe this object. Presumably similar to TObjTradeCollision
|
||||
// but enables the deck edit counter? Params:
|
||||
// param1 = radius
|
||||
{0x0058, "TObjDeckCollision"},
|
||||
|
||||
// Forest door. Params:
|
||||
// param4 = switch flag number (low byte) and number to appear on door
|
||||
// (second-lowest byte, modulo 0x0A)
|
||||
@@ -1463,18 +1474,54 @@ const char* MapFile::name_for_object_type(uint16_t type) {
|
||||
// object, does not disable the switch flag automatically
|
||||
{0x00C3, "TOHangceilingCave01Normal/TOHangceilingCave01Key/TOHangceilingCave01KeyQuick"},
|
||||
|
||||
// Caves signs. There appear to be no parameters.
|
||||
{0x00C4, "TOSignCave01"},
|
||||
{0x00C5, "TOSignCave02"},
|
||||
{0x00C6, "TOSignCave03"},
|
||||
|
||||
// Hexagonal tank. There appear to be no parameters.
|
||||
{0x00C7, "TOAirconCave01"},
|
||||
|
||||
// Brown platform. There appear to be no parameters.
|
||||
{0x00C8, "TOAirconCave02"},
|
||||
|
||||
// Revolving warning light. Params:
|
||||
// param1 = rotation speed in degrees per frame
|
||||
{0x00C9, "TORevlightCave01"},
|
||||
|
||||
// Caves rainbow. Params:
|
||||
// param1-3 = scale factors (x, y, z)
|
||||
// param4 = TODO (value used is 1 / (param4 + 30))
|
||||
// param6 = visibility radius? (TODO; value used is param6 + 40000)
|
||||
{0x00CB, "TORainbowCave01"},
|
||||
|
||||
// Floating jellyfish. Params:
|
||||
// param1 = visibility radius; visible when any player is within this
|
||||
// distance of the object
|
||||
// param2 = move radius (according to debug strings)
|
||||
// param3 = rebirth radius (according to debug strings); like param1,
|
||||
// checks against all players, not only the local player
|
||||
{0x00CC, "TOKurage"},
|
||||
|
||||
// Floating dragonfly. Params:
|
||||
// param1 = TODO
|
||||
// param2 = TODO
|
||||
// param3 = max distance from home?
|
||||
// param4 = TODO
|
||||
// param5 = TODO
|
||||
{0x00CD, "TODragonflyCave01"},
|
||||
|
||||
// Caves door. Params:
|
||||
// param4 = switch flag number
|
||||
{0x00CE, "TODoorCave03"},
|
||||
|
||||
// Robot recharge station. Params:
|
||||
// param4 = quest register number; activates when this register
|
||||
// contains a nonzero value; does not deactivate if it becomes zero
|
||||
// again
|
||||
{0x00CF, "TOBind"},
|
||||
|
||||
// TODO: Describe the rest of the object types.
|
||||
{0x00C4, "TOSignCave01"}, // Constructor in 3OE1: 801765B4
|
||||
{0x00C5, "TOSignCave02"}, // Constructor in 3OE1: 80176968
|
||||
{0x00C6, "TOSignCave03"}, // Constructor in 3OE1: 80176DAC
|
||||
{0x00C7, "TOAirconCave01"}, // Constructor in 3OE1: 80156DF8
|
||||
{0x00C8, "TOAirconCave02"}, // Constructor in 3OE1: 80157034
|
||||
{0x00C9, "TORevlightCave01"}, // Constructor in 3OE1: 80173470
|
||||
{0x00CB, "TORainbowCave01"}, // Constructor in 3OE1: 8017318C
|
||||
{0x00CC, "TOKurage"}, // Constructor in 3OE1: 8016E65C
|
||||
{0x00CD, "TODragonflyCave01"}, // Constructor in 3OE1: 801642F4
|
||||
{0x00CE, "TODoorCave03"}, // Constructor in 3OE1: 8016259C
|
||||
{0x00CF, "TOBind"}, // Constructor in 3OE1: 80158638
|
||||
{0x00D0, "TOCakeshopCave01"}, // Constructor in 3OE1: 80159F68
|
||||
{0x00D1, "TORockCaveS01"}, // Constructor in 3OE1: 80174A44
|
||||
{0x00D2, "TORockCaveM01"}, // Constructor in 3OE1: 801748E4
|
||||
@@ -1560,6 +1607,8 @@ const char* MapFile::name_for_object_type(uint16_t type) {
|
||||
{0x018A, "TObjTreeLobby"}, // Constructor in 3OE1: 80362D44
|
||||
{0x018B, "TObjSuisouLobby"}, // Constructor in 3OE1: 80368118
|
||||
{0x018C, "TObjParticleLobby"}, // Constructor in 3OE1: 80367DC0
|
||||
{0x018D, "TObjLobbyTable"}, // (Ep3 only) Constructor in 3SE0: 802C07E4
|
||||
{0x018E, "TObjJukeBox"}, // (Ep3 only) Constructor in 3SE0: 8030D8A8
|
||||
{0x0190, "TObjCamera"}, // Constructor in 3OE1: 8017FAC0
|
||||
{0x0191, "TObjTuitate"}, // Constructor in 3OE1: 8019AF20
|
||||
{0x0192, "TObjDoaEx01"}, // Constructor in 3OE1: 8018E02C
|
||||
@@ -1611,12 +1660,12 @@ const char* MapFile::name_for_object_type(uint16_t type) {
|
||||
{0x0280, "__BARBA_RAY_TELEPORTER__"}, // Formerly __TObjAreaWarpForest_subclass_0280__ // Constructor in 3OE1: 802EF620
|
||||
{0x02A0, "TObjLiveCamera"}, // Constructor in 3OE1: 80309D5C
|
||||
{0x02B0, "TContainerAncient01R"}, // Constructor in 3OE1: 8018ADF8
|
||||
{0x02B1, "TObjLaboDesignBase"}, // Constructor in 3OE1: 803631D4
|
||||
{0x02B2, "TObjLaboDesignBase"}, // Constructor in 3OE1: 80363184
|
||||
{0x02B3, "TObjLaboDesignBase"}, // Constructor in 3OE1: 80363134
|
||||
{0x02B4, "TObjLaboDesignBase"}, // Constructor in 3OE1: 803630E4
|
||||
{0x02B5, "TObjLaboDesignBase"}, // Constructor in 3OE1: 80363094
|
||||
{0x02B6, "TObjLaboDesignBase"}, // Constructor in 3OE1: 80363044
|
||||
{0x02B1, "TObjLaboDesignBase(0)"}, // Constructor in 3OE1: 803631D4
|
||||
{0x02B2, "TObjLaboDesignBase(1)"}, // Constructor in 3OE1: 80363184
|
||||
{0x02B3, "TObjLaboDesignBase(2)"}, // Constructor in 3OE1: 80363134
|
||||
{0x02B4, "TObjLaboDesignBase(3)"}, // Constructor in 3OE1: 803630E4
|
||||
{0x02B5, "TObjLaboDesignBase(4)"}, // Constructor in 3OE1: 80363094
|
||||
{0x02B6, "TObjLaboDesignBase(5)"}, // Constructor in 3OE1: 80363044
|
||||
{0x02B7, "TObjGbAdvance"}, // Constructor in 3OE1: 80187C10
|
||||
{0x02B8, "TObjQuestColALock2"}, // Constructor in 3OE1: 80195824
|
||||
{0x02B9, "TObjMapForceWarp"}, // Constructor in 3OE1: 801A297C
|
||||
@@ -1624,6 +1673,31 @@ const char* MapFile::name_for_object_type(uint16_t type) {
|
||||
{0x02BB, "TODoorLaboNormal"}, // Constructor in 3OE1: 801A26D0
|
||||
{0x02BC, "TObjAreaWarpEndingJung"}, // Constructor in 3OE1: 8019AFF4
|
||||
{0x02BD, "TObjLaboMapWarp"}, // Constructor in 3OE1: 80185430
|
||||
{0x02D0, "TObjKazariCard"}, // (Ep3 only) Constructor in 3SE0: 8026C79C; battle only
|
||||
{0x02D1, "TObj_FloatingCardMaterial_Dark"}, // (Ep3 only) Constructor in 3SE0: 800C5F30; city only
|
||||
{0x02D2, "TObj_FloatingCardMaterial_Hero"}, // (Ep3 only) Constructor in 3SE0: 800C5F7C; city only
|
||||
{0x02D3, "TObjCardCityMapWarp(0)"}, // (Ep3 only) Constructor in 3SE0: 800B9528; city only
|
||||
{0x02D4, "TObjCardCityDoor(0)"}, // (Ep3 only) Constructor in 3SE0: 800B8C40; city only
|
||||
{0x02D5, "TObjCardCityDoor(1)"}, // (Ep3 only) Constructor in 3SE0: 800B8BF0; city only
|
||||
{0x02D6, "TObjKazariGeyserMizu"}, // (Ep3 only) Constructor in 3SE0: 80278E08; battle only
|
||||
{0x02D7, "TObjSetCardColi"}, // (Ep3 only) Constructor in 3SE0: 802BCE80; battle only
|
||||
{0x02D8, "TObjCardCityDoor(2)"}, // (Ep3 only) Constructor in 3SE0: 800B8BA0; city only
|
||||
{0x02D9, "TObjCardCityMapWarp(1)"}, // (Ep3 only) Constructor in 3SE0: 800B94D8; city only
|
||||
{0x02DA, "TOFlyMekaHero"}, // (Ep3 only) Constructor in 3SE0: 802DFD18; city only
|
||||
{0x02DB, "TOFlyMekaDark"}, // (Ep3 only) Constructor in 3SE0: 802DFAAC; city only
|
||||
{0x02DC, "TObjCardCityDoor_Closed(0)"}, // (Ep3 only) Constructor in 3SE0: 800B884C; city only
|
||||
{0x02DD, "TObjCardCityDoor_Closed(1)"}, // (Ep3 only) Constructor in 3SE0: 800B87FC; city only
|
||||
{0x02DE, "TObjCardCityDoor_Closed(2)"}, // (Ep3 only) Constructor in 3SE0: 800B87AC; city only
|
||||
{0x02DF, "TObjCardCityDoor(3)"}, // (Ep3 only) Constructor in 3SE0: 800B8B50; city only
|
||||
{0x02E0, "TObjCardCityDoor(4)"}, // (Ep3 only) Constructor in 3SE0: 800B8B00; city only
|
||||
{0x02E1, "TObjCardCityDoor_Closed(3)"}, // (Ep3 only) Constructor in 3SE0: 800B875C; city only
|
||||
{0x02E2, "TObjCardCityDoor_Closed(4)"}, // (Ep3 only) Constructor in 3SE0: 800B870C; city only
|
||||
{0x02E3, "TObjCardCityMapWarp(2)"}, // (Ep3 only) Constructor in 3SE0: 800B9488; city only
|
||||
{0x02E4, "TObjSinBoardCard"}, // (Ep3 only) Constructor in 3SE0: 80309608; city/lobby only
|
||||
{0x02E5, "TObjCityMoji"}, // (Ep3 only) Constructor in 3SE0: 8030DE8C; city only
|
||||
{0x02E6, "TObjCityWarpOff"}, // (Ep3 only) Constructor in 3SE0: 8030DB4C; city only
|
||||
{0x02E7, "TObjFlyCom"}, // (Ep3 only) Constructor in 3SE0: 80310BEC; city only
|
||||
{0x02E8, "__UNKNOWN_02E8__"}, // (Ep3 only) Subclass of TObjPathObj; 3SE0: 8019A638; city only
|
||||
{0x0300, "__EP4_LIGHT__"}, // Constructor in 59NL: 00661158
|
||||
{0x0301, "__WILDS_CRATER_CACTUS__"}, // Constructor in 59NL: 0067612C
|
||||
{0x0302, "__WILDS_CRATER_BROWN_ROCK__"}, // Constructor in 59NL: 00675748
|
||||
@@ -1772,9 +1846,9 @@ const char* MapFile::name_for_enemy_type(uint16_t type) {
|
||||
{0x00DF, "TObjEneRecobox"},
|
||||
{0x00E0, "TObjEneMe3SinowZoaReal/TObjEneEpsilonBody"},
|
||||
{0x00E1, "TObjEneIllGill"},
|
||||
{0x0110, "__ASTARK__"},
|
||||
{0x0111, "__YOWIE__/__SATELLITE_LIZARD__"},
|
||||
{0x0112, "__MERISSA_A__"},
|
||||
{0x0110, "__ASTARK__/TObjNpcWalkingMeka_Hero"},
|
||||
{0x0111, "__YOWIE__/__SATELLITE_LIZARD__/TObjNpcWalkingMeka_Dark"},
|
||||
{0x0112, "__MERISSA_A__/TObjNpcHeroAide"},
|
||||
{0x0113, "__GIRTABLULU__"},
|
||||
{0x0114, "__ZU__"},
|
||||
{0x0115, "__BOOTA_FAMILY__"},
|
||||
|
||||
Reference in New Issue
Block a user