From cc74146a59e3ec7d95556e82ec748d7b004f6eb3 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Tue, 5 Nov 2024 20:33:11 -0800 Subject: [PATCH] Fix gamerules against latest Nuclide, lay out some more typeInfo --- engine.h | 1 + src/rules/deathmatch.qc | 33 +++++++---------- src/rules/invasion.qc | 39 ++++++++++---------- src/rules/singleplayer.qc | 8 ++-- src/shared/player.qc | 9 +++-- zpak001.pk3dir/PAK_COPYRIGHT | 8 ++++ zpak001.pk3dir/decls/def/items/battery.def | 1 - zpak001.pk3dir/decls/def/monsters/turret.def | 4 +- zpak001.pk3dir/decls/typeinfo/lava.decl | 5 +++ zpak001.pk3dir/decls/typeinfo/slime.decl | 5 +++ zpak001.pk3dir/decls/typeinfo/water.decl | 4 ++ 11 files changed, 69 insertions(+), 48 deletions(-) create mode 100644 zpak001.pk3dir/PAK_COPYRIGHT create mode 100644 zpak001.pk3dir/decls/typeinfo/lava.decl create mode 100644 zpak001.pk3dir/decls/typeinfo/slime.decl create mode 100644 zpak001.pk3dir/decls/typeinfo/water.decl diff --git a/engine.h b/engine.h index 6d6831c..e3694b8 100644 --- a/engine.h +++ b/engine.h @@ -14,6 +14,7 @@ #define DISTRIBUTIONLONG "eukara" #define GAME_FULLNAME FULLENGINENAME #define GAME_DEFAULTPORT 23000 +#define GAME_DEFAULTCMDS "game_valve;fteplug_ffmpeg;plug_load ffmpeg;exec quake.rc" #define ENGINEWEBSITE "https://www.frag-net.com/" #ifndef GLQUAKE diff --git a/src/rules/deathmatch.qc b/src/rules/deathmatch.qc index 33d994f..6cac048 100644 --- a/src/rules/deathmatch.qc +++ b/src/rules/deathmatch.qc @@ -64,29 +64,29 @@ CodeCallback_StartGameType(void) } void -CodeCallback_PlayerSpawn(void) +CodeCallback_PlayerSpawn(entity playerEntity) { string playerModel; - ents.ChangeToClass(self, "player_mp"); + ents.ChangeToClass(playerEntity, "player_mp"); if (IsTeamplay() == true) { float teamCount = tokenizebyseparator(g_strTeamList, ";"); - float playerTeam = self.team; + float playerTeam = playerEntity.team; string teamModel; /* not part of a team? pick one of the ones we have */ /* TODO: this should sort us into the lowest team */ if (playerTeam == 0) { playerTeam = 1 + floor(random(0, teamCount)); /* teams start at 1 after all */ - ents.Input(self, "SetTeam", ftos(playerTeam), self); + ents.Input(playerEntity, "SetTeam", ftos(playerTeam), playerEntity); } teamModel = argv(playerTeam - 1); playerModel = sprintf("models/player/%s/%s.mdl", teamModel, teamModel); } else { /* interpret the 'model' InfoKey */ - playerModel = userinfo.GetString(self, "model"); + playerModel = userinfo.GetString(playerEntity, "model"); if (playerModel != "") { playerModel = sprintf("models/player/%s/%s.mdl", playerModel, playerModel); @@ -98,36 +98,31 @@ CodeCallback_PlayerSpawn(void) playerModel = "models/player.mdl"; } - self.modelindex = getmodelindex(playerModel); /* keep OG size */ - game.TeleportToSpawn(self); - - decl damageDecl = declManager.New(); - declManager.AddKey(damageDecl, "damage", "50"); - declManager.Delete(damageDecl); - combat.Damage(self, self, self, damageDecl, self.origin, g_vec_null, self.origin); + playerEntity.modelindex = getmodelindex(playerModel); /* keep OG size */ + game.TeleportToSpawn(playerEntity); } void -CodeCallback_PlayerDisconnect(void) +CodeCallback_PlayerDisconnect(entity playerEntity) { } bool -CodeCallback_PlayerRequestRespawn(void) +CodeCallback_PlayerRequestRespawn(entity playerEntity) { - CodeCallback_PlayerSpawn(); + CodeCallback_PlayerSpawn(playerEntity); return (true); } void -CodeCallback_PlayerDamage(entity inflictor, entity attacker) +CodeCallback_PlayerDamage(entity playerEntity, entity inflictor, entity attacker) { } void -CodeCallback_PlayerKilled(entity inflictor, entity attacker, string weapon) +CodeCallback_PlayerKilled(entity playerEntity, entity inflictor, entity attacker, string weapon) { combat.Obituary(self.netname, attacker.netname, weapon, ""); @@ -145,7 +140,7 @@ CodeCallback_PlayerKilled(entity inflictor, entity attacker, string weapon) } bool -CodeCallback_ClientCommand(string command) +CodeCallback_ClientCommand(entity playerEntity, string command) { float commandArgs = tokenize(command); @@ -182,7 +177,7 @@ CodeCallback_ClientCommand(string command) } bool -CodeCallback_ImpulseCommand(float impulseNum) +CodeCallback_ImpulseCommand(entity playerEntity, float impulseNum) { switch (impulseNum) { case 100: diff --git a/src/rules/invasion.qc b/src/rules/invasion.qc index e03e262..e0335a5 100644 --- a/src/rules/invasion.qc +++ b/src/rules/invasion.qc @@ -48,7 +48,6 @@ CodeCallback_StartGameType(void) ents.Precache(autocvar_invasion_monsterClass); motd.LoadDefault(); game.SetSpawnPoint("info_player_deathmatch"); - cvars.SetBool("coop", true); teams.SetUp(1, "Military", [0, 255, 0], false); teams.SetUp(2, "Aliens", [255, 0, 0], false); @@ -63,15 +62,15 @@ CodeCallback_StartGameType(void) } void -CodeCallback_PlayerSpawn(void) +CodeCallback_PlayerSpawn(entity playerEntity) { string playerModel; - ents.ChangeToClass(self, "player_mp"); - ents.Input(self, "SetTeam", "3", world); + ents.ChangeToClass(playerEntity, "player_mp"); + ents.Input(playerEntity, "SetTeam", "3", world); /* interpret the 'model' InfoKey */ - playerModel = userinfo.GetString(self, "model"); + playerModel = userinfo.GetString(playerEntity, "model"); if (playerModel != "") { playerModel = sprintf("models/player/%s/%s.mdl", playerModel, playerModel); @@ -82,40 +81,40 @@ CodeCallback_PlayerSpawn(void) playerModel = "models/player.mdl"; } - self.modelindex = getmodelindex(playerModel); /* keep OG size */ - game.TeleportToSpawn(self); + playerEntity.modelindex = getmodelindex(playerModel); /* keep OG size */ + game.TeleportToSpawn(playerEntity); } void -CodeCallback_PlayerDisconnect(void) +CodeCallback_PlayerDisconnect(entity playerEntity) { } bool -CodeCallback_PlayerRequestRespawn(void) +CodeCallback_PlayerRequestRespawn(entity playerEntity) { - CodeCallback_PlayerSpawn(); + CodeCallback_PlayerSpawn(playerEntity); return (true); } void -CodeCallback_PlayerDamage(entity inflictor, entity attacker) +CodeCallback_PlayerDamage(entity playerEntity, entity inflictor, entity attacker) { } void -CodeCallback_PlayerKilled(entity inflictor, entity attacker, string weapon) +CodeCallback_PlayerKilled(entity playerEntity, entity inflictor, entity attacker, string weapon) { - combat.Obituary(self.netname, attacker.netname, weapon, ""); + combat.Obituary(playerEntity.netname, attacker.netname, weapon, ""); /* death-counter */ - self.deaths++; + playerEntity.deaths++; /* update score-counter */ if (ents.isPlayer(attacker)) { - if (self == attacker) { + if (playerEntity == attacker) { attacker.frags--; } else { attacker.frags++; @@ -126,13 +125,13 @@ CodeCallback_PlayerKilled(entity inflictor, entity attacker, string weapon) } void -CodeCallback_NPCKilled(entity inflictor, entity attacker, string weapon) +CodeCallback_NPCKilled(entity npcEntity, entity inflictor, entity attacker, string weapon) { - combat.Obituary(self.netname, attacker.netname, weapon, ""); + combat.Obituary(npcEntity.netname, attacker.netname, weapon, ""); /* update score-counter */ if (ents.isPlayer(attacker)) { - if (self == attacker) { + if (npcEntity == attacker) { attacker.frags--; } else { attacker.frags++; @@ -141,12 +140,12 @@ CodeCallback_NPCKilled(entity inflictor, entity attacker, string weapon) } bool -CodeCallback_ImpulseCommand(float impulseNum) +CodeCallback_ImpulseCommand(entity playerEntity, float impulseNum) { switch (impulseNum) { case 100: if (AllowFlashlight() == true) { - ents.Input(self, "UseItem", "item_suit", self); + ents.Input(playerEntity, "UseItem", "item_suit", playerEntity); } break; default: diff --git a/src/rules/singleplayer.qc b/src/rules/singleplayer.qc index aab19fb..c3d0893 100644 --- a/src/rules/singleplayer.qc +++ b/src/rules/singleplayer.qc @@ -19,21 +19,21 @@ #include "../../../src/server/api.h" void -CodeCallback_PlayerSpawn(void) +CodeCallback_PlayerSpawn(entity playerEntity) { + ents.ChangeToClass(playerEntity, "player"); game.TeleportToSpawn(self); - } bool -CodeCallback_PlayerRequestRespawn(void) +CodeCallback_PlayerRequestRespawn(entity playerEntity) { localcmd("load quick\n"); return (true); } bool -CodeCallback_ImpulseCommand(float impulseNum) +CodeCallback_ImpulseCommand(entity playerEntity, float impulseNum) { switch (impulseNum) { case 100: diff --git a/src/shared/player.qc b/src/shared/player.qc index ad4401e..e494a42 100644 --- a/src/shared/player.qc +++ b/src/shared/player.qc @@ -141,6 +141,7 @@ HLPlayer::UpdatePlayerAttachments(bool visible) if (gflags & GF_FLASHLIGHT) { vector src; vector ang; + float p; if (entnum != player_localentnum) { src = origin + view_ofs; @@ -155,15 +156,17 @@ HLPlayer::UpdatePlayerAttachments(bool visible) if (autocvar_cg_flashlightClassic == true) { if (autocvar_r_shadow_realtime_dlight == 0) { - dynamiclight_add(trace_endpos + (trace_plane_normal * 4), 128, [1,1,1]); + p = dynamiclight_add(trace_endpos + (trace_plane_normal * 4), 128, [1,1,1]); } else { - dynamiclight_add(trace_endpos + (trace_plane_normal * 48.0f), 96, [1,1,1]); + p = dynamiclight_add(trace_endpos + (trace_plane_normal * 48.0f), 96, [1,1,1]); } } else { - float p = dynamiclight_add(src + (v_forward * 16), 512, [1,1,1], 0, "textures/flashlight"); + p = dynamiclight_add(src + (v_forward * 16), 512, [1,1,1], 0, "textures/flashlight"); dynamiclight_set(p, LFIELD_ANGLES, ang); dynamiclight_set(p, LFIELD_FLAGS, 3); } + + dynamiclight_set(p, LFIELD_STYLE, 64); } /* FIXME: this needs to be incorporated and simplified, now that we can handle it all in-class */ diff --git a/zpak001.pk3dir/PAK_COPYRIGHT b/zpak001.pk3dir/PAK_COPYRIGHT new file mode 100644 index 0000000..c3d45bb --- /dev/null +++ b/zpak001.pk3dir/PAK_COPYRIGHT @@ -0,0 +1,8 @@ +! This archive is part of the Rad-Therapy project ! + +Dedicated to all those curious, those who love to tinker, those who +grew up on the same maps, mods and worlds... This is for you all! + +All contents of this archive are put under the ISC license. + +Do what you want, but give credit. No warranties. diff --git a/zpak001.pk3dir/decls/def/items/battery.def b/zpak001.pk3dir/decls/def/items/battery.def index 98ef707..df54600 100644 --- a/zpak001.pk3dir/decls/def/items/battery.def +++ b/zpak001.pk3dir/decls/def/items/battery.def @@ -8,5 +8,4 @@ entityDef item_battery "snd_respawn" "item.respawn" "inv_armor" "skill:battery" "requires" "item_suit" - "inv_carry" "1" } diff --git a/zpak001.pk3dir/decls/def/monsters/turret.def b/zpak001.pk3dir/decls/def/monsters/turret.def index 8fe18f1..9f350fc 100644 --- a/zpak001.pk3dir/decls/def/monsters/turret.def +++ b/zpak001.pk3dir/decls/def/monsters/turret.def @@ -12,5 +12,7 @@ entityDef monster_turret "speed_walk" "0" "speed_run" "0" - "static" "1" + "turn_rate" "0" + "use_nav" "0" + "bleed" "0" } diff --git a/zpak001.pk3dir/decls/typeinfo/lava.decl b/zpak001.pk3dir/decls/typeinfo/lava.decl new file mode 100644 index 0000000..44a877e --- /dev/null +++ b/zpak001.pk3dir/decls/typeinfo/lava.decl @@ -0,0 +1,5 @@ +typeInfo lava +{ + "damage" "4" + "dmgtime" "1.0" +} diff --git a/zpak001.pk3dir/decls/typeinfo/slime.decl b/zpak001.pk3dir/decls/typeinfo/slime.decl new file mode 100644 index 0000000..b1f72e3 --- /dev/null +++ b/zpak001.pk3dir/decls/typeinfo/slime.decl @@ -0,0 +1,5 @@ +typeInfo slime +{ + "damage" "10" + "dmgtime" "1.0" +} diff --git a/zpak001.pk3dir/decls/typeinfo/water.decl b/zpak001.pk3dir/decls/typeinfo/water.decl new file mode 100644 index 0000000..c81a424 --- /dev/null +++ b/zpak001.pk3dir/decls/typeinfo/water.decl @@ -0,0 +1,4 @@ +typeInfo water +{ + "damage" "2" +}