diff --git a/Moose Development/Moose/Core/Event.lua b/Moose Development/Moose/Core/Event.lua index 5119a73da..267a46bdd 100644 --- a/Moose Development/Moose/Core/Event.lua +++ b/Moose Development/Moose/Core/Event.lua @@ -1453,7 +1453,11 @@ function EVENT:onEvent( Event ) -- Weapon. if Event.weapon and type(Event.weapon) == "table" and Event.weapon.isExist and Event.weapon:isExist() then Event.Weapon = Event.weapon - Event.WeaponName = Event.weapon:isExist() and Event.weapon.getTypeName and Event.weapon:getTypeName() or "Unknown Weapon" + if Event.weapon_name == "ZELL Booster" then + Event.WeaponName = "ZELL Booster" + else + Event.WeaponName = Event.weapon:isExist() and Event.weapon.getTypeName and Event.weapon:getTypeName() or "Unknown Weapon" + end if Event.weapon_name == "ZELL Booster" then Event.WeaponName = "ZELL Booster" end Event.WeaponUNIT = CLIENT:Find( Event.Weapon, '', true ) -- Sometimes, the weapon is a player unit! Event.WeaponPlayerName = Event.WeaponUNIT and Event.Weapon.getPlayerName and Event.Weapon:getPlayerName() diff --git a/Moose Development/Moose/Core/ScheduleDispatcher.lua b/Moose Development/Moose/Core/ScheduleDispatcher.lua index 7f0102943..0d6fa6df5 100644 --- a/Moose Development/Moose/Core/ScheduleDispatcher.lua +++ b/Moose Development/Moose/Core/ScheduleDispatcher.lua @@ -246,11 +246,11 @@ function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleAr -- self:T3( { Repeat = CallID, CurrentTime, ScheduleTime, ScheduleArguments } ) return ScheduleTime -- returns the next time the function needs to be called. else - self:Stop( Scheduler, CallID ) + self:_Reclaim( Scheduler, CallID ) end else - self:Stop( Scheduler, CallID ) + self:_Reclaim( Scheduler, CallID ) end else self:I( "<<<>" .. Name .. ":" .. Line .. " (" .. Source .. ")" ) @@ -375,3 +375,13 @@ function SCHEDULEDISPATCHER:NoTrace( Scheduler ) Scheduler.ShowTrace = false end +--- Helper for memory cleanup for self stopping schedulers +-- @param #SCHEDULEDISPATCHER self +-- @param Core.Scheduler#SCHEDULER Scheduler Scheduler object. +-- @param #string CallID (Optional) Scheduler Call ID. +function SCHEDULEDISPATCHER:_Reclaim( Scheduler, CallID ) + self:Stop( Scheduler, CallID ) -- remove DCS timer, nil ScheduleID + if self.Schedule[Scheduler] then self.Schedule[Scheduler][CallID] = nil end + self.ObjectSchedulers[CallID] = nil + self.PersistentSchedulers[CallID] = nil +end