From 0d232531bbd797d0a04881cca69d19a87901da1a Mon Sep 17 00:00:00 2001 From: derple <151763035+DerpleMQ2@users.noreply.github.com> Date: Fri, 5 Jan 2024 19:25:12 -0800 Subject: [PATCH] Added .HasSpawn so that targeting is not required. (#6) Touched nothing else for fear of the apocalypse --- MQ2SpawnMaster.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/MQ2SpawnMaster.cpp b/MQ2SpawnMaster.cpp index 2d8a05d..7c0edf4 100644 --- a/MQ2SpawnMaster.cpp +++ b/MQ2SpawnMaster.cpp @@ -531,7 +531,8 @@ class MQ2SpawnMasterType : public MQ2Type DownList, Version, LastMatch, - HasTarget + HasTarget, + HasSpawn }; MQ2SpawnMasterType():MQ2Type("SpawnMaster") @@ -542,6 +543,7 @@ class MQ2SpawnMasterType : public MQ2Type TypeMember(Version); TypeMember(LastMatch); TypeMember(HasTarget); + TypeMember(HasSpawn); } virtual bool GetMember(MQVarPtr VarPtr, const char* Member, char* Index, MQTypeVar& Dest) override @@ -580,6 +582,30 @@ class MQ2SpawnMasterType : public MQ2Type // FIXME: Don't really want to pass a sound here Dest.Int=IsWatchedSpawn(pTarget, DataTypeTemp, DataTypeTemp.size()); return true; + case HasSpawn: + { + Dest.Type = mq::datatypes::pBoolType; + if (SpawnUpList.empty() || Index[0] == '\0') + return false; + + PlayerClient* search_spawn = nullptr; + const int spawn_id = GetIntFromString(Index, 0); + if (spawn_id < 1) + { + search_spawn = GetSpawnByName(Index); + } + else + { + search_spawn = GetSpawnByID(spawn_id); + } + + if (search_spawn == nullptr) + return false; + // FIXME: Also don't want to pass a sound here + Dest.Set(IsWatchedSpawn(search_spawn, DataTypeTemp, DataTypeTemp.size())); + return true; + } + } return false; }