diff --git a/src/acs/call-funcs.cpp b/src/acs/call-funcs.cpp index 01e3f34c5..8850cd0fd 100644 --- a/src/acs/call-funcs.cpp +++ b/src/acs/call-funcs.cpp @@ -1633,6 +1633,32 @@ bool CallFunc_PlayerSkin(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM:: return false; } +/*-------------------------------------------------- + bool CallFunc_PlayerSkinRealName(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC) + + Returns the activating player's skin real name. +--------------------------------------------------*/ +bool CallFunc_PlayerSkinRealName(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC) +{ + Environment *env = &ACSEnv; + auto info = &static_cast(thread)->info; + + (void)argV; + (void)argC; + + if ((info != NULL) + && (info->mo != NULL && P_MobjWasRemoved(info->mo) == false) + && (info->mo->player != NULL)) + { + UINT16 skin = info->mo->player->skin; + thread->dataStk.push(~env->getString( skins[skin].realname )->idx); + return false; + } + + thread->dataStk.push(0); + return false; +} + /*-------------------------------------------------- bool CallFunc_PlayerBot(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC) diff --git a/src/acs/call-funcs.hpp b/src/acs/call-funcs.hpp index cd6c40498..c677ad6bd 100644 --- a/src/acs/call-funcs.hpp +++ b/src/acs/call-funcs.hpp @@ -76,6 +76,7 @@ bool CallFunc_CountPushables(ACSVM::Thread *thread, const ACSVM::Word *argV, ACS //bool CallFunc_HaveUnlockableTrigger(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC); //bool CallFunc_HaveUnlockable(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC); bool CallFunc_PlayerSkin(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC); +bool CallFunc_PlayerSkinRealName(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC); bool CallFunc_PlayerBot(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC); bool CallFunc_PlayerLosing(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC); bool CallFunc_PlayerExiting(ACSVM::Thread *thread, const ACSVM::Word *argV, ACSVM::Word argC) diff --git a/src/acs/environment.cpp b/src/acs/environment.cpp index 69dfea0ef..6c359424b 100644 --- a/src/acs/environment.cpp +++ b/src/acs/environment.cpp @@ -213,7 +213,7 @@ Environment::Environment() addFuncDataACS0( 319, addCallFunc(CallFunc_PlayerLosing)); addFuncDataACS0( 320, addCallFunc(CallFunc_PlayerExiting)); - + addFuncDataACS0( 321, addCallFunc(CallFunc_PlayerSkinRealName)); addFuncDataACS0( 322, addCallFunc(CallFunc_Teleport)); addFuncDataACS0( 323, addCallFunc(CallFunc_SetViewpoint));