Skip to content

Commit 57bbfe9

Browse files
committed
fix(Daedalus): fix member registration for G2 classic
G2 exclusive class members for `C_NPC` and `C_ITEM` are currently registered based on a check if `effect` exists as member. Problem is this is the only member that didn't exist in G2 classic but was later introduced in the Addon. Add a seperate check for `effect` to have other members properly registered in case G2 classic is used. Reported as bug in Try/OpenGothic#840.
1 parent 02c7d6f commit 57bbfe9

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

src/addon/daedalus.cc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,12 +177,16 @@ void zenkit::INpc::register_(DaedalusScript& s) {
177177
s.register_member("C_NPC.LP", &INpc::lp);
178178

179179
// Gothic 2 only
180-
if (s.find_symbol_by_name("C_NPC.EFFECT") != nullptr) {
181-
s.register_member("C_NPC.EFFECT", &INpc::effect);
180+
if (s.find_symbol_by_name("C_NPC.HITCHANCE") != nullptr) {
182181
s.register_member("C_NPC.HITCHANCE", &INpc::hitchance);
183182
s.register_member("C_NPC.BODYSTATEINTERRUPTABLEOVERRIDE", &INpc::bodystate_interruptable_override);
184183
s.register_member("C_NPC.NOFOCUS", &INpc::no_focus);
185184
}
185+
186+
// Gothic 2 Night of the Raven only
187+
if (s.find_symbol_by_name("C_NPC.EFFECT") != nullptr) {
188+
s.register_member("C_NPC.EFFECT", &INpc::effect);
189+
}
186190
}
187191

188192
void zenkit::IMission::register_(DaedalusScript& s) {
@@ -244,14 +248,18 @@ void zenkit::IItem::register_(DaedalusScript& s) {
244248
s.register_member("C_ITEM.COUNT", &IItem::count);
245249

246250
// Gothic 2 only
247-
if (s.find_symbol_by_name("C_ITEM.EFFECT") != nullptr) {
248-
s.register_member("C_ITEM.EFFECT", &IItem::effect);
251+
if (s.find_symbol_by_name("C_ITEM.INV_ZBIAS") != nullptr) {
249252
s.register_member("C_ITEM.INV_ZBIAS", &IItem::inv_zbias);
250253
s.register_member("C_ITEM.INV_ROTX", &IItem::inv_rot_x);
251254
s.register_member("C_ITEM.INV_ROTY", &IItem::inv_rot_y);
252255
s.register_member("C_ITEM.INV_ROTZ", &IItem::inv_rot_z);
253256
s.register_member("C_ITEM.INV_ANIMATE", &IItem::inv_animate);
254257
}
258+
259+
// Gothic 2 Night of the Raven only
260+
if (s.find_symbol_by_name("C_ITEM.EFFECT") != nullptr) {
261+
s.register_member("C_ITEM.EFFECT", &IItem::effect);
262+
}
255263
}
256264

257265
void zenkit::IFocus::register_(DaedalusScript& s) {

0 commit comments

Comments
 (0)