diff --git a/source/games/duke/src/vmexports.cpp b/source/games/duke/src/vmexports.cpp index 18fa3ca0b..11418a59c 100644 --- a/source/games/duke/src/vmexports.cpp +++ b/source/games/duke/src/vmexports.cpp @@ -512,5 +512,26 @@ DEFINE_ACTION_FUNCTION_NATIVE(_DukeSpriteIterator, Next, duke_nextSprite) ACTION_RETURN_POINTER(duke_nextSprite(self)); } +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, playerfriction); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, gravity); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, respawnactortime); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, bouncemineblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, respawnitemtime); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, morterblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, numfreezebounces); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, pipebombblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, rpgblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, seenineblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, shrinkerblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, tripbombblastradius); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, camerashitable); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, max_player_health); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, max_armour_amount); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, lasermode); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, freezerhurtowner); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, impact_damage); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, playerheight); +DEFINE_FIELD_X(DukeGameInfo, DukeGameInfo, displayflags); +DEFINE_GLOBAL_UNSIZED(gs) END_DUKE_NS diff --git a/wadsrc/static/zscript/games/duke/dukeactor.zs b/wadsrc/static/zscript/games/duke/dukeactor.zs index 6885e942e..f5d2e3c2a 100644 --- a/wadsrc/static/zscript/games/duke/dukeactor.zs +++ b/wadsrc/static/zscript/games/duke/dukeactor.zs @@ -81,6 +81,7 @@ class DukeActor : CoreActor native extend struct _ { + native DukeGameInfo gs; native DukeLevel dlevel; } diff --git a/wadsrc/static/zscript/games/duke/dukegame.zs b/wadsrc/static/zscript/games/duke/dukegame.zs index fc4b108e2..eee42a1c2 100644 --- a/wadsrc/static/zscript/games/duke/dukegame.zs +++ b/wadsrc/static/zscript/games/duke/dukegame.zs @@ -1243,3 +1243,30 @@ struct RRSnd native BUB_HEY2 = 499, } } + + +struct DukeGameInfo native +{ + // Static constant global state + readonly native double playerfriction; + readonly native double gravity; + + readonly native int respawnactortime; + readonly native int bouncemineblastradius; + readonly native int respawnitemtime; + readonly native int morterblastradius; + readonly native int numfreezebounces; + readonly native int pipebombblastradius; + readonly native int rpgblastradius; + readonly native int seenineblastradius; + readonly native int shrinkerblastradius; + readonly native int tripbombblastradius; + readonly native int camerashitable; + readonly native int max_player_health; + readonly native int max_armour_amount; + readonly native int lasermode; + readonly native int freezerhurtowner; + readonly native int impact_damage; + readonly native double playerheight; + readonly native int displayflags; +}