Beginner friendly game mode

Discuss Nexuiz gameplay here.

Moderators: Nexuiz Moderators, Moderators

Beginner friendly game mode

Postby 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

Re: Beginner friendly game mode

Postby 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

Re: Beginner friendly game mode

Postby Nil » Tue May 08, 2007 9:51 pm

KadaverJack wrote:Untested, but that should do it: http://kadaverjack.planetnexuiz.de/tmp/noobmod.diff

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

Re: Beginner friendly game mode

Postby 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() :P fixed
KadaverJack
Site admin and forum addon
 
Posts: 1102
Joined: Tue Feb 28, 2006 9:42 pm

Re: Beginner friendly game mode

Postby Nil » Wed May 09, 2007 7:11 pm

KadaverJack wrote:Oops, i typed min() when i meant max() :P 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

Postby dfkgmasdfnasodrg » Thu May 10, 2007 10:56 am

cool, i have to test that :)
dfkgmasdfnasodrg
Alien
 
Posts: 153
Joined: Sat Mar 04, 2006 4:21 pm

Postby 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

Postby The mysterious Mr. 4m » Wed Oct 22, 2008 9:56 am

bump
4m [PB] (amoebios)

This is Your world.
The mysterious Mr. 4m
Forum addon
 
Posts: 1402
Joined: Wed Mar 01, 2006 6:03 pm
Location: germany

Postby 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

Postby The mysterious Mr. 4m » Fri Oct 24, 2008 9:47 am

T.I.N.E.
4m [PB] (amoebios)

This is Your world.
The mysterious Mr. 4m
Forum addon
 
Posts: 1402
Joined: Wed Mar 01, 2006 6:03 pm
Location: germany

Next

Return to Nexuiz - Gameplay

Who is online

Users browsing this forum: No registered users and 1 guest

cron