Discuss Nexuiz gameplay here.
Moderators: Nexuiz Moderators, Moderators
by Nil » Tue May 08, 2007 7:09 pm
I would like to have a game mode which would help to protect newbies from being butchered by more experienced players.
Maybe something like damage reduction based on frag runs could work. For example after each frag without getting fragged reduce the damage a player can deal by 10 percent points to a minimum of 10%. When a player gets killed reduce the damage reduction by 10 percent points so that a player who had 9 or more frags in a row needs to get killed a few times to have normal damage again.
Since I don't know much about Quake-C it would take me more time than I'm willing to put into this to get it done. Perhaps somebody has hints that would help me getting started or is even able to implement something like this quickly?
-
Nil
- Advanced member
-
- Posts: 81
- Joined: Wed Mar 01, 2006 5:10 pm
by KadaverJack » Tue May 08, 2007 8:53 pm
Nil wrote:Maybe something like damage reduction based on frag runs could work. For example after each frag without getting fragged reduce the damage a player can deal by 10 percent points to a minimum of 10%. When a player gets killed reduce the damage reduction by 10 percent points so that a player who had 9 or more frags in a row needs to get killed a few times to have normal damage again.
Untested, but that should do it:
http://kadaverjack.planetnexuiz.de/tmp/noobmod.diff
-
KadaverJack
- Site admin and forum addon
-
- Posts: 1102
- Joined: Tue Feb 28, 2006 9:42 pm
by Nil » Tue May 08, 2007 9:51 pm
Yeah, it does.
I almost can't frag a completely unskilled bot after 1 frag anymore (till I get fragged myself) but I can play around with that now.
Thanks alot!
-
Nil
- Advanced member
-
- Posts: 81
- Joined: Wed Mar 01, 2006 5:10 pm
by KadaverJack » Tue May 08, 2007 10:35 pm
Nil wrote:I almost can't frag a completely unskilled bot after 1 frag anymore (till I get fragged myself) but I can play around with that now.

Oops, i typed min() when i meant max()

fixed
-
KadaverJack
- Site admin and forum addon
-
- Posts: 1102
- Joined: Tue Feb 28, 2006 9:42 pm
by Nil » Wed May 09, 2007 7:11 pm
KadaverJack wrote:Oops, i typed min() when i meant max()

fixed
Yeah, thanks again. This is running now on DCC's beginners server.

-
Nil
- Advanced member
-
- Posts: 81
- Joined: Wed Mar 01, 2006 5:10 pm
by Nil » Sat Jun 02, 2007 12:36 pm
There is a problem with the patch in so far as you don't get hurt by falling of the map no more (e.g. on Soylent or Farewell. Thanks Red Dragon for reporting this). I found that a work around is to test for attacker having a damage multiplier > 0 before applying it. I've also added some printing of the players current damage multipliers. In case somebody is interested in it, this is the patch:
- Code: Select all
# HG changeset patch
# Date 1180625581 -7200
# Node ID dc9768a7bbaefe220de0aa48ab3f904d822ae8df
# Parent 03e5c4b77610fbf5a062333344e1eb1a40e8a5eb
Added noobfriendly mod.
diff -r 03e5c4b77610 -r dc9768a7bbae server/cl_client.qc
--- a/server/cl_client.qc Thu May 31 15:45:33 2007 +0200
+++ b/server/cl_client.qc Thu May 31 17:33:01 2007 +0200
@@ -453,6 +453,12 @@ void PutClientInServer (void)
self.nextthink = 0;
self.hook_time = 0;
+ self.dmg_multiplier = min(self.dmg_multiplier + 0.1, 1);
+ if(cvar("g_noobfriendly"))
+ {
+ sprint (self, strcat("Your damage multiplier is now ", ftos(self.dmg_multiplier), "\n"));
+ }
+
self.runes = 0;
self.deadflag = DEAD_NO;
@@ -608,6 +614,7 @@ void ClientConnect (void)
self.classname = "player_joining";
self.flags = self.flags | FL_CLIENT;
self.version_nagtime = time + 10 + random() * 10;
+ self.dmg_multiplier = 1;
if(player_count<0)
{
diff -r 03e5c4b77610 -r dc9768a7bbae server/defs.qh
--- a/server/defs.qh Thu May 31 15:45:33 2007 +0200
+++ b/server/defs.qh Thu May 31 17:33:01 2007 +0200
@@ -96,6 +96,7 @@ float maxclients;
.float dmgtime;
.float killcount;
+.float dmg_multiplier;
.float hitsound;
.float watersound_finished;
diff -r 03e5c4b77610 -r dc9768a7bbae server/g_damage.qc
--- a/server/g_damage.qc Thu May 31 15:45:33 2007 +0200
+++ b/server/g_damage.qc Thu May 31 17:33:01 2007 +0200
@@ -229,6 +229,11 @@ void Obituary (entity attacker, entity t
if (targ.killcount > 2)
bprint ("^1",s,"'s ^1", ftos(targ.killcount), " kill spree was ended by ", a, "\n");
attacker.killcount = attacker.killcount + 1;
+ attacker.dmg_multiplier = max(attacker.dmg_multiplier - 0.1, 0.1);
+ if(cvar("g_noobfriendly"))
+ {
+ bprint ("^1",a,"^1's damage muliplier is now ",ftos(attacker.dmg_multiplier),".\n");
+ }
if (attacker.killcount > 2)
bprint ("^1",a,"^1 has ",ftos(attacker.killcount)," frags in a row\n");
@@ -424,6 +429,8 @@ void Damage (entity targ, entity inflict
{
if(clienttype(attacker) == CLIENTTYPE_REAL) play2(attacker, "announcer/male/yoda.ogg");
}
+ if(cvar("g_noobfriendly"))
+ damage = damage * attacker.dmg_multiplier;
}
// apply strength multiplier
# HG changeset patch
# Date 1180786707 -7200
# Node ID 7f6fa0cbabf0ccef9cae303335104f90454c0d0b
# Parent dc9768a7bbaefe220de0aa48ab3f904d822ae8df
Workaround for fall damage not applying with this mod.
diff -r dc9768a7bbae -r 7f6fa0cbabf0 server/g_damage.qc
--- a/server/g_damage.qc Thu May 31 17:33:01 2007 +0200
+++ b/server/g_damage.qc Sat Jun 02 14:18:27 2007 +0200
@@ -429,8 +429,11 @@ void Damage (entity targ, entity inflict
{
if(clienttype(attacker) == CLIENTTYPE_REAL) play2(attacker, "announcer/male/yoda.ogg");
}
- if(cvar("g_noobfriendly"))
+ // Test for attacker's dmg_multiplier cos else fall damage does not work.
+ if(cvar("g_noobfriendly") && attacker.dmg_multiplier > 0)
+ {
damage = damage * attacker.dmg_multiplier;
+ }
}
// apply strength multiplier
-
Nil
- Advanced member
-
- Posts: 81
- Joined: Wed Mar 01, 2006 5:10 pm
by Urmel » Wed Oct 22, 2008 7:31 pm
Nil is M.I.A. afaik.
uncomfortable
random
mean
embarrassing
limited
-
Urmel
- Forum addon
-
- Posts: 1744
- Joined: Fri Mar 03, 2006 10:06 am
- Location: Offline
Return to Nexuiz - Gameplay
Who is online
Users browsing this forum: No registered users and 1 guest