10 Commits

Author SHA1 Message Date
Michael Fabian 'Xaymar' Dirks 0a1fa75a30 gamemode: Only show nameplates for alive players 2017-11-24 03:53:41 +01:00
Michael Fabian 'Xaymar' Dirks eac0c12d64 Ignore all gma files 2017-11-24 03:13:33 +01:00
Michael Fabian 'Xaymar' Dirks 74d77b5269 class/seeker: Ignore damage done to ragdolls 2017-11-24 03:10:50 +01:00
Michael Fabian 'Xaymar' Dirks 14e32383c4 class/seeker: Properly respect mp_friendlyfire 2
Support for the reflect setting (mp_friendlyfire 2) now properly works and will no longer spew lua errors into the console, while also logging who damaged who with how much damage. This info is critical to server owners that want to know what exactly went down in a match with this option enabled.
2017-11-24 03:10:30 +01:00
Michael Fabian 'Xaymar' Dirks 0efa3f12c0 gamemode: Fix PlayerHurt and PlayerShouldTakeDamage hooks 2017-11-24 03:07:19 +01:00
Michael Fabian 'Xaymar' Dirks f38e70dce9 Rename automated building scripts 2017-11-24 02:06:09 +01:00
Michael Fabian 'Xaymar' Dirks 67c91f9225 media: Add other media 2017-11-24 02:00:24 +01:00
Michael Fabian 'Xaymar' Dirks bc0068a79a media: Update Workshop Icon PSD 2017-11-24 02:00:18 +01:00
Michael Fabian 'Xaymar' Dirks 6ad75df85d Adjust paths to be lowercase (part 2)
Even though git internally knows the difference between upper and lower case, all of it's commands rely on the file system to do so as well. This results in incorrect behavior when renaming A to a for example, as the source and destination is identical on the file system according to git. Windows does support such renames, but git seems to shit itself.
2017-11-24 02:00:08 +01:00
Michael Fabian 'Xaymar' Dirks e8454d4d27 Adjust paths to be lowercase 2017-11-24 01:58:31 +01:00
50 changed files with 77 additions and 52 deletions
+2 -1
View File
@@ -1,3 +1,4 @@
Pack.gma
Changelog.txt
Description.txt
Description.txt
/*.gma
-4
View File
@@ -1,4 +0,0 @@
@ECHO OFF
call env.win.bat
"%GARRYSMODPATH%\bin\gmad.exe" create -folder "%CD%\Source" -out "%CD%\Pack.gma"
PAUSE
+3 -3
View File
@@ -1,4 +1,4 @@
@ECHO OFF
call env.win.bat
"%GARRYSMODPATH%\bin\gmpublish.exe" update -id 468149739 -icon "media\gamemode_workshop.jpg" -addon "Pack.gma" -changes ""
@ECHO OFF
call env.win.bat
"%GARRYSMODPATH%\bin\gmpublish.exe" update -id 468149739 -icon "media\gamemode_workshop.jpg" -addon "pack.gma" -changes ""
PAUSE

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Before

Width:  |  Height:  |  Size: 1003 KiB

After

Width:  |  Height:  |  Size: 1003 KiB

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

+4
View File
@@ -0,0 +1,4 @@
@ECHO OFF
call env.win.bat
"%GARRYSMODPATH%\bin\gmad.exe" create -folder "%CD%\source" -out "%CD%\pack.gma"
PAUSE
+3 -3
View File
@@ -1,4 +1,4 @@
@ECHO OFF
call env.win.bat
SET "PATH=%CD%;%GARRYSMODPATH%\bin;%PATH%"
@ECHO OFF
call env.win.bat
SET "PATH=%CD%;%GARRYSMODPATH%\bin;%PATH%"
CMD
@@ -208,21 +208,23 @@ function DrawNamePlates(bDrawingDepth, bDrawingSkybox)
for i,v in ipairs(pls) do
if (v:Alive() && v != LocalPlayer()) then
local color = HSVToColor(GAMEMODE.Config.NamePlates:TintHue(),
GAMEMODE.Config.NamePlates:TintSaturation(),
GAMEMODE.Config.NamePlates:TintValue())
if GAMEMODE.Config.NamePlates:TintHealth() then
local healthPrc = v:Health() / v:GetMaxHealth()
color = HSVToColor(120 * healthPrc, 1.0, 1.0)
elseif GAMEMODE.Config.NamePlates:TintTeam() then
color = team.GetColor(v:Team())
end
local pos = v:GetPos() + v:GetViewOffset() + Vector(0, 0, GAMEMODE.Config.NamePlates:Height())
local ang = Angle(0, LocalPlayer():EyeAngles().y - 90, 90 - LocalPlayer():EyeAngles().x)
cam.Start3D2D(pos, ang, scale)
draw.DrawText(v:GetName(), "RobotoBoldCondensed160", 0, -draw.GetFontHeight("RobotoBoldCondensed160") / 2, color, TEXT_ALIGN_CENTER)
cam.End3D2D()
if (player_manager.GetPlayerClass(v) != "Spectator") then
local color = HSVToColor(GAMEMODE.Config.NamePlates:TintHue(),
GAMEMODE.Config.NamePlates:TintSaturation(),
GAMEMODE.Config.NamePlates:TintValue())
if GAMEMODE.Config.NamePlates:TintHealth() then
local healthPrc = v:Health() / v:GetMaxHealth()
color = HSVToColor(120 * healthPrc, 1.0, 1.0)
elseif GAMEMODE.Config.NamePlates:TintTeam() then
color = team.GetColor(v:Team())
end
local pos = v:GetPos() + v:GetViewOffset() + Vector(0, 0, GAMEMODE.Config.NamePlates:Height())
local ang = Angle(0, LocalPlayer():EyeAngles().y - 90, 90 - LocalPlayer():EyeAngles().x)
cam.Start3D2D(pos, ang, scale)
draw.DrawText(v:GetName(), "RobotoBoldCondensed160", 0, -draw.GetFontHeight("RobotoBoldCondensed160") / 2, color, TEXT_ALIGN_CENTER)
cam.End3D2D()
end
end
end
end
@@ -241,7 +241,19 @@ function GM:PlayerUse(ply, ent) return player_manager.RunClass(ply, "Use", ent)
function GM:AllowPlayerPickup(ply, ent) return player_manager.RunClass(ply, "AllowPickup", ent) end
function GM:PlayerSetModel(ply) return player_manager.RunClass(ply, "SetModel") end
-- Called when an entity takes damage
-- Damage
function GM:PlayerShouldTakeDamage(victim, attacker)
return player_manager.RunClass(victim, "ShouldTakeDamage", attacker)
end
function GM:PlayerHurt(victim, attacker, healthRemaining, damageTaken)
player_manager.RunClass(victim, "Hurt", victim, attacker, healthRemaining, damageTaken)
if (IsValid(attacker) && attacker:IsPlayer()) then
player_manager.RunClass(attacker, "Damage", victim, attacker, healthRemaining, damageTaken)
end
end
function GM:EntityTakeDamage(ent, dmg)
local att = dmg:GetAttacker()
@@ -96,30 +96,51 @@ function CLASS:ShouldTakeDamage(attacker)
local ffmode = GetConVarNumber("mp_friendlyfire")
if (ffmode == 0) then -- Not Allowed
return false
elseif (ffmode == 2) then -- Damage self instead
if (IsValid(attacker) && attacker:IsPlayer()) then
attacker:SetHealth(attacker:Health() - damageTaken)
end
return false
end
end
end
end
return true
end
function CLASS:Damage(victim, attacker, healthRemaining, damageDealt)
if ((victim != attacker) && victim:IsPlayer() && attacker:IsPlayer() && (attacker:Team() == victim:Team())) then
if (GAMEMODE.Config:DebugLog()) then
print("Prop Hunt: Seeker '"..attacker:GetName().."' (SteamID: "..attacker:SteamID()..") damaged seeker '"..victim:GetName().."' (SteamID: "..victim:SteamID()..") with "..damageDealt.." damage.")
end
end
end
function CLASS:Hurt(victim, attacker, healthRemaining, damageTaken)
if ((victim != attacker) && victim:IsPlayer() && attacker:IsPlayer() && (attacker:Team() == victim:Team())) then
if (GAMEMODE.Config:DebugLog()) then
print("Prop Hunt: Seeker '"..victim:GetName().."' (SteamID: "..victim:SteamID()..") was hurt by seeker '"..attacker:GetName().."' (SteamID: "..attacker:SteamID()..") with "..damageTaken.." damage.")
end
if (GetConVarNumber("mp_friendlyfire") == 2) then
victim:SetHealth(healthRemaining + damageTaken)
attacker:TakeDamage(damageTaken, attacker, attacker)
print("Prop Hunt: Seeker '"..victim:GetName().."' (SteamID: "..victim:SteamID()..") reflected "..damageTaken.." to seeker '"..attacker:GetName().."' (SteamID: "..attacker:SteamID()..").")
end
end
end
function CLASS:DamageEntity(ent, att, dmg)
if (GAMEMODE.Config:DebugLog()) then print("Prop Hunt: Seeker '"..self.Player:GetName().."' (SteamID: "..self.Player:SteamID()..") damaged entity "..ent:GetClass()..".") end
if (GAMEMODE:GetRoundState() != GAMEMODE.States.Seek) then return end
if (!IsValid(ent) || !IsValid(att)) then return end
if (att == ent) then return end
-- Only take damage during this phase.
if (GAMEMODE:GetRoundState() == GAMEMODE.States.Seek) then
if IsValid(ent) && (!(ent:IsPlayer())) then
if (ent:GetClass() == "ph_prop") then
ent:GetOwner():TakeDamageInfo(dmg)
self.Player.Data.RandomWeight = self.Player.Data.RandomWeight - 1
elseif (ent:GetClass() == "func_breakable") then -- ToDo: Make Configurable which entities don't hurt?
else
att:TakeDamage(GAMEMODE.Config.Seeker:HealthPenalty(), ent, ent)
end
if IsValid(ent) && (!(ent:IsPlayer())) then
if (ent:GetClass() == "ph_prop") then
ent:GetOwner():TakeDamageInfo(dmg)
self.Player.Data.RandomWeight = self.Player.Data.RandomWeight - 1
elseif (ent:GetClass() == "func_breakable") then
elseif (ent:GetClass() == "prop_ragdoll") then
else
att:TakeDamage(GAMEMODE.Config.Seeker:HealthPenalty(), ent, ent)
end
end
end
@@ -104,17 +104,6 @@ function GM:PlayerTick(ply, mv)
return player_manager.RunClass(ply, "Tick", mv)
end
function GM:PlayerHurt(victim, attacker, healthRemaining, damageTaken)
player_manager.RunClass(victim, "Hurt", victim, attacker, healthRemaining, damageTaken)
if (IsValid(attacker) && attacker:IsPlayer()) then
player_manager.RunClass(attacker, "Damage", victim, attacker, healthRemaining, damageTaken)
end
end
function GM:PlayerShouldTakeDamage(victim, attacker)
return player_manager.RunClass(victim, "ShouldTakeDamage", attacker)
end
-- ------------------------------------------------------------------------- --
--! Gamemode Functionality
-- ------------------------------------------------------------------------- --

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 152 KiB