This commit is contained in:
lifestorm
2024-08-04 22:55:00 +03:00
parent 8064ba84d8
commit 73479cff9e
7338 changed files with 1718883 additions and 14 deletions

View File

@@ -0,0 +1,208 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local util = util
local ix = ix
local string = string
local timer = timer
local GetNetVar = GetNetVar
local unpack = unpack
local math = math
local EmitSentence = EmitSentence
local SentenceDuration = SentenceDuration
local net = net
local PLUGIN = PLUGIN
util.AddNetworkString("ixTypingBeep")
util.AddNetworkString("ixVisorNotify")
ix.log.AddType("combineSuitsAdminActivate", function(client, item, bDeactivate)
return string.format("%s has admin-activated a '%s' (#%d)", client:GetName(), bDeactivate and "de" or "", item:GetName(), item:GetID())
end)
ix.log.AddType("combineSuitsAdminTracking", function(client, item, bDeactivate)
return string.format("%s has admin-désactivated the tracker on a '%s' (#%d)", client:GetName(), bDeactivate and "de" or "", item:GetName(), item:GetID())
end)
ix.log.AddType("combineSuitsAdminOwner", function(client, item)
return string.format("%s has admin-disabled the owner on a '%s' (#%d)", client:GetName(), item:GetName(), item:GetID())
end)
ix.log.AddType("combineSuitsAdminOwnerClear", function(client, item)
return string.format("%s has admin-cleared the owner on a '%s' (#%d)", client:GetName(), item:GetName(), item:GetID())
end)
ix.log.AddType("combineSuitsAdminName", function(client, item)
return string.format("%s has admin-changed the name a '%s' (#%d) to %s.", client:GetName(), item:GetName(), item:GetID(), item:GetData("ownerName"))
end)
PLUGIN.voiceLines = {
["METROPOLICE_IDLE"] = 7,
["METROPOLICE_IDLE_CHECK"] = 3,
["METROPOLICE_IDLE_CLEAR"] = 18,
["METROPOLICE_IDLE_QUEST"] = 7,
["METROPOLICE_IDLE_ANSWER"] = 6,
["METROPOLICE_HEARD_SOMETHING"] = 3,
["METROPOLICE_IDLE_CR"] = 18,
["METROPOLICE_IDLE_CHECK_CR"] = 7,
["METROPOLICE_IDLE_CLEAR_CR"] = 4,
["METROPOLICE_IDLE_QUEST_CR"] = 6,
["METROPOLICE_IDLE_ANSWER_CR"] = 6,
["COMBINE_IDLE"] = 4,
["COMBINE_CHECK"] = 2,
["COMBINE_CLEAR"] = 6,
["COMBINE_QUEST"] = 5,
["COMBINE_ANSWER"] = 4,
["COMBINE_ALERT"] = 9,
}
PLUGIN.cpLines = {
{"METROPOLICE_IDLE"},
{"METROPOLICE_IDLE_CHECK", "METROPOLICE_IDLE_CLEAR"},
{"METROPOLICE_IDLE_QUEST", "METROPOLICE_IDLE_ANSWER"},
{"METROPOLICE_HEARD_SOMETHING", "METROPOLICE_IDLE_CLEAR", 2}
}
PLUGIN.cpLinesCR = {
{"METROPOLICE_IDLE_CR"},
{"METROPOLICE_IDLE_CHECK_CR", "METROPOLICE_IDLE_CLEAR_CR"},
{"METROPOLICE_IDLE_QUEST_CR", "METROPOLICE_IDLE_ANSWER_CR"},
{"METROPOLICE_HEARD_SOMETHING", "METROPOLICE_IDLE_CLEAR_CR", 2}
}
PLUGIN.otaLines = {
{"COMBINE_IDLE"},
{"COMBINE_CHECK", "COMBINE_CLEAR"},
{"COMBINE_QUEST", "COMBINE_ANSWER"},
{"COMBINE_ALERT"}
}
PLUGIN.otaLinesBlue = {
{"COMBINE_CHECK", "COMBINE_CLEAR", false, 600},
}
function PLUGIN:ClientChatter(client, uniqueID)
local character = client:GetCharacter()
if (!character) then return end
if (client:IsAFK() or
(client:GetMoveType() == MOVETYPE_NOCLIP and !client:InVehicle()) or
!client:Alive() or
!ix.option.Get(client, "ChatterEnabled", true) or
!client:HasActiveCombineMask()) then
-- Reset a reply if one is still pending
if (client.ixSentenceReply) then
timer.Adjust(uniqueID, ix.option.Get(client, "ChatterInterval", 120))
client.ixSentenceReply = nil
client.ixSentenceReplyInterval = nil
end
return
end
if (client.ixSentenceReply) then
self:EmitSentence(client, client.ixSentenceReply, nil, nil, client.ixSentenceReplyInterval)
client.ixSentenceReply = nil
return
end
local suit = client:GetActiveCombineSuit()
local soundTable
if (suit.isCP) then
if (GetNetVar("visorColor", "blue") != "blue") then
soundTable = self.cpLinesCR
else
soundTable = self.cpLines
end
elseif (suit.isOTA) then
if (GetNetVar("visorColor", "blue") != "blue") then
soundTable = self.otaLines
else
soundTable = self.otaLinesBlue
end
else
return
end
self:EmitSentence(client, unpack(soundTable[math.random(#soundTable)]))
end
function PLUGIN:EmitSentence(client, sentence, answer, delay, interval)
if (self.voiceLines[sentence]) then
sentence = sentence..math.random(0, self.voiceLines[sentence])
end
EmitSentence(sentence, client:GetPos(), client:EntIndex(), CHAN_AUTO, 1, 75, 0, 100)
if (answer) then
client.ixSentenceReply = answer..math.random(0, self.voiceLines[answer])
client.ixSentenceReplyInterval = interval or 30
--luacheck: read globals SentenceDuration
timer.Adjust("ixChatter"..client:SteamID64(), (delay or 0) + math.random(3, 5) + SentenceDuration(sentence))
else
interval = interval or ix.option.Get(client, "ChatterInterval", 120)
timer.Adjust("ixChatter"..client:SteamID64(), math.random(interval, interval * 2))
end
end
net.Receive("ixTypingBeep", function(len, client)
if (net.ReadBool() == false and client.bTypingBeep) then
client.bTypingBeep = nil
local suit = client:GetActiveCombineSuit()
if (!suit or !client:HasActiveCombineMask() or (client:GetMoveType() == MOVETYPE_NOCLIP and !client:InVehicle())) then return end
if (suit.isCP) then
client:EmitSound("NPC_MetroPolice.Radio.Off")
elseif (suit.isOTA) then
client:EmitSound("voices/transhuman/radio/off"..math.random(1, 3)..".wav")
end
return
end
if (!client.bTypingBeep) then
local suit = client:GetActiveCombineSuit()
if (!suit or !client:HasActiveCombineMask() or (client:GetMoveType() == MOVETYPE_NOCLIP and !client:InVehicle())) then return end
if (suit.isCP) then
client:EmitSound("NPC_MetroPolice.Radio.On")
client.bTypingBeep = true
elseif (suit.isOTA) then
client:EmitSound("voices/transhuman/radio/on"..math.random(1, 2)..".wav")
client.bTypingBeep = true
end
end
end)
function PLUGIN:ResetSCTimer(client, character)
local delay = ix.config.Get("passiveStcTimer", 60)
if (delay <= 0) then return end
local uniqueID = "ixPassiveSC" .. client:SteamID64()
timer.Create(uniqueID, 300, 0, function()
if (ix.config.Get("suitsNoConnection")) then return end
if (!IsValid(client) or !client:GetCharacter()) then
timer.Remove(uniqueID)
return
end
if (!client:GetActiveCombineSuit() or !client:HasActiveCombineMask() or client:IsAFK()) then return end
local progress = character:GetPassiveSCProgress()
if (progress < delay - 5) then
character:SetPassiveSCProgress(progress + 5)
else
character.vars.genericdata.socialCredits = character.vars.genericdata.socialCredits + 1
character:Save()
character:SetPassiveSCProgress(0)
self:ResetSCTimer(client, character)
end
end)
end