add outline of ep4 enemy args
This commit is contained in:
@@ -6270,7 +6270,7 @@ struct G_ExchangeItemInQuest_BB_6xDB {
|
|||||||
|
|
||||||
struct G_Episode4BossActions_BB_6xDC {
|
struct G_Episode4BossActions_BB_6xDC {
|
||||||
G_UnusedHeader header;
|
G_UnusedHeader header;
|
||||||
le_uint16_t unknown_a1 = 0;
|
le_uint16_t action = 0; // Must be in range [0, 4]
|
||||||
le_uint16_t unknown_a2 = 0;
|
le_uint16_t unknown_a2 = 0;
|
||||||
} __packed_ws__(G_Episode4BossActions_BB_6xDC, 8);
|
} __packed_ws__(G_Episode4BossActions_BB_6xDC, 8);
|
||||||
|
|
||||||
|
|||||||
+57
-13
@@ -3054,7 +3054,7 @@ static const vector<DATEntityDefinition> dat_enemy_definitions({
|
|||||||
// param3 = maximum distance at which howl can cause confusion (value
|
// param3 = maximum distance at which howl can cause confusion (value
|
||||||
// is param3 + 30, clamped below to 10)
|
// is param3 + 30, clamped below to 10)
|
||||||
// param4 = chance to fire laser (value is param4 + 0.3)
|
// param4 = chance to fire laser (value is param4 + 0.3)
|
||||||
// param5 = chance to charge (value is param5 + 0.5)
|
// param5 = chance to charge (value is param5 + 0.05)
|
||||||
// param6 = type (0 = stand, 1 = run)
|
// param6 = type (0 = stand, 1 = run)
|
||||||
{0x00DC, F_V3_V4, 0x0000000830000000, "TObjEneDellBiter"},
|
{0x00DC, F_V3_V4, 0x0000000830000000, "TObjEneDellBiter"},
|
||||||
|
|
||||||
@@ -3111,16 +3111,61 @@ static const vector<DATEntityDefinition> dat_enemy_definitions({
|
|||||||
// param2 = TODO (used in TObjEneIllGill_update phase 3)
|
// param2 = TODO (used in TObjEneIllGill_update phase 3)
|
||||||
{0x00E1, F_V3_V4, 0x0000000800000000, "TObjEneIllGill"},
|
{0x00E1, F_V3_V4, 0x0000000800000000, "TObjEneIllGill"},
|
||||||
|
|
||||||
// TODO: Describe the rest of the enemy types.
|
// Astark. Params:
|
||||||
{0x0110, F_V4, 0x000041F000000000, "__ASTARK__"}, // Constructor in 59NL: 005A3D60
|
// param1 = TODO (only matters if this is 1 or not)
|
||||||
{0x0111, F_V4, 0x00004FF000000000, "__YOWIE__/__SATELLITE_LIZARD__"}, // Constructor in 59NL: 005AE7CC
|
// param2 = TODO (value is param2 + 0.3, clamped to [0, 1])
|
||||||
{0x0112, F_V4, 0x00004E0000000000, "__MERISSA_A__"}, // Constructor in 59NL: 005B6B24
|
// param3 = TODO (value is param3 + 0.6, clamped to [0, 1])
|
||||||
{0x0113, F_V4, 0x00004E0000000000, "__GIRTABLULU__"}, // Constructor in 59NL: 005AB9AC
|
{0x0110, F_V4, 0x000041F000000000, "__ASTARK__"},
|
||||||
{0x0114, F_V4, 0x00004FF000000000, "__ZU__"}, // Constructor in 59NL: 005B47B8
|
|
||||||
{0x0115, F_V4, 0x000041F000000000, "__BOOTA_FAMILY__"}, // Constructor in 59NL: 005A5C08 // TODO: probably a subclass of TObjEnemyV8048ee80; check if there are any others in BB
|
// Satellite Lizard / Yowie. Params:
|
||||||
{0x0116, F_V4, 0x000041F000000000, "__DORPHON__"}, // Constructor in 59NL: 005A673C
|
// param1 = TODO (rounded to integer)
|
||||||
{0x0117, F_V4, 0x00004E0000000000, "__GORAN_FAMILY__"}, // Constructor in 59NL: 005ADAC4
|
// param2 = type (<1 = Satellite Lizard, >=1 = Yowie)
|
||||||
{0x0119, F_V4, 0x0000100000000000, "__EPISODE_4_BOSS__"}, // Constructor in 59NL: 0076A86C
|
{0x0111, F_V4, 0x00004FF000000000, "__SATELLITE_LIZARD_YOWIE__"},
|
||||||
|
|
||||||
|
// Merissa A. Params:
|
||||||
|
// param6 = flags (bit field):
|
||||||
|
// 0001 = always rare (Merissa AA)
|
||||||
|
{0x0112, F_V4, 0x00004E0000000000, "__MERISSA_A__"},
|
||||||
|
|
||||||
|
// Girtablulu. There appear to be no parameters.
|
||||||
|
{0x0113, F_V4, 0x00004E0000000000, "__GIRTABLULU__"},
|
||||||
|
|
||||||
|
// Zu. Params:
|
||||||
|
// param6 = flags (bit field):
|
||||||
|
// 0001 = always rare (Pazuzu)
|
||||||
|
// param7 = TODO
|
||||||
|
{0x0114, F_V4, 0x00004FF000000000, "__ZU__"},
|
||||||
|
|
||||||
|
// Boota / Ze Boota / Ba Boota. Same parameters as TObjEneBeast, but also:
|
||||||
|
// param3 = TODO (see v20)
|
||||||
|
// param6 = type (0 = Boota, 1 = Ze Boota, 2 = Ba Boota)
|
||||||
|
{0x0115, F_V4, 0x000041F000000000, "__BOOTA_FAMILY__"},
|
||||||
|
|
||||||
|
// Dorphon. Params:
|
||||||
|
// param1 = TODO (value is param1 + 0.3)
|
||||||
|
// param2 = TODO (value is param2 + 0.3)
|
||||||
|
// param3 = TODO (value is param3 + 30, clamped below to 10)
|
||||||
|
// param4 = TODO (value is param4 + 0.3)
|
||||||
|
// param5 = TODO (value is param5 + 0.05)
|
||||||
|
// param6 = flags (bit field):
|
||||||
|
// 0001 = always rare (Dorphon Eclair)
|
||||||
|
// TODO: The values above make it look like param1-5 are the same as for
|
||||||
|
// TObjEneDellBiter. Verify is this is the case.
|
||||||
|
{0x0116, F_V4, 0x000041F000000000, "__DORPHON__"},
|
||||||
|
|
||||||
|
// Goran / Pyro Goran / Goran Detonator. Same parameters as TObjEneBeast,
|
||||||
|
// but also:
|
||||||
|
// param3 = TODO (see v58, v67)
|
||||||
|
// param6 = type (0 = Goran, 1 = Pyro Goran, 2 = Goran Detonator)
|
||||||
|
{0x0117, F_V4, 0x00004E0000000000, "__GORAN_FAMILY__"},
|
||||||
|
|
||||||
|
// Saint-Milion / Shambertin / Kondrieu. Params:
|
||||||
|
// param1 = TODO (see TObjEneV00b43ca0::set_params; seems it only matters
|
||||||
|
// if this is zero or not)
|
||||||
|
// param6 = flags (bit field):
|
||||||
|
// 0001 = type (0 = Saint-Milion, 1 = Shambertin; ignored if enemy is
|
||||||
|
// set as rare by the server, in which case it's Kondrieu)
|
||||||
|
{0x0119, F_V4, 0x0000100000000000, "__EPISODE_4_BOSS__"},
|
||||||
});
|
});
|
||||||
|
|
||||||
static string name_for_entity_type(
|
static string name_for_entity_type(
|
||||||
@@ -4581,8 +4626,7 @@ shared_ptr<SuperMap::Enemy> SuperMap::add_enemy_and_children(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x0119:
|
case 0x0119:
|
||||||
// There isn't a way to force the Episode 4 boss to be rare via
|
// There isn't a way to create Kondrieu via constructor args
|
||||||
// constructor args
|
|
||||||
add((set_entry->param6 & 1) ? EnemyType::SHAMBERTIN : EnemyType::SAINT_MILION);
|
add((set_entry->param6 & 1) ? EnemyType::SHAMBERTIN : EnemyType::SAINT_MILION);
|
||||||
default_num_children = 0x18;
|
default_num_children = 0x18;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user