From 4fb6b7c7d41f015e41b75bac896c1f17c71aa124 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 19 Apr 2020 21:06:51 +0200 Subject: [PATCH] - block off the Substitute function by making it private to the 3 classes that really need it. --- src/scripting/vmthunks_actors.cpp | 16 ++++++++++++++++ wadsrc/static/zscript/actors/actor.zs | 2 +- .../static/zscript/actors/player/player_morph.zs | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/scripting/vmthunks_actors.cpp b/src/scripting/vmthunks_actors.cpp index 8f233fc777..9ada1dffb4 100644 --- a/src/scripting/vmthunks_actors.cpp +++ b/src/scripting/vmthunks_actors.cpp @@ -1614,6 +1614,22 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, Substitute, StaticPointerSubstitution) return 0; } +DEFINE_ACTION_FUNCTION_NATIVE(_PlayerPawn, Substitute, StaticPointerSubstitution) +{ + PARAM_SELF_PROLOGUE(AActor); + PARAM_OBJECT(replace, AActor); + StaticPointerSubstitution(self, replace); + return 0; +} + +DEFINE_ACTION_FUNCTION_NATIVE(_MorphedMonster, Substitute, StaticPointerSubstitution) +{ + PARAM_SELF_PROLOGUE(AActor); + PARAM_OBJECT(replace, AActor); + StaticPointerSubstitution(self, replace); + return 0; +} + DEFINE_ACTION_FUNCTION_NATIVE(AActor, GetSpawnableType, P_GetSpawnableType) { PARAM_PROLOGUE; diff --git a/wadsrc/static/zscript/actors/actor.zs b/wadsrc/static/zscript/actors/actor.zs index cade8322da..0b3841a19c 100644 --- a/wadsrc/static/zscript/actors/actor.zs +++ b/wadsrc/static/zscript/actors/actor.zs @@ -459,7 +459,7 @@ class Actor : Thinker native virtual native void Die(Actor source, Actor inflictor, int dmgflags = 0, Name MeansOfDeath = 'none'); virtual native bool Slam(Actor victim); virtual native void Touch(Actor toucher); - native void Substitute(Actor replacement); + private native void Substitute(Actor replacement); native ui void DisplayNameTag(); // Called by inventory items to see if this actor is capable of touching them. diff --git a/wadsrc/static/zscript/actors/player/player_morph.zs b/wadsrc/static/zscript/actors/player/player_morph.zs index 66fd0f1d81..391be4a063 100644 --- a/wadsrc/static/zscript/actors/player/player_morph.zs +++ b/wadsrc/static/zscript/actors/player/player_morph.zs @@ -1,5 +1,7 @@ extend class PlayerPawn { + private native void Substitute(PlayerPawn replacement); + //=========================================================================== // // EndAllPowerupEffects @@ -503,6 +505,8 @@ class MorphedMonster : Actor +FLOORCLIP } + private native void Substitute(Actor replacement); + override void OnDestroy () { if (UnmorphedMe != NULL)