Beginner friendly game mode

Discuss Nexuiz gameplay here.

Moderators: Nexuiz Moderators, Moderators

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

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
    User avatar
    KadaverJack
    Site admin and forum addon
     
    Posts: 1102
    Joined: Tue Feb 28, 2006 9:42 pm

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

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
    User avatar
    KadaverJack
    Site admin and forum addon
     
    Posts: 1102
    Joined: Tue Feb 28, 2006 9:42 pm

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

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

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

Wed Oct 22, 2008 9:56 am

Wed Oct 22, 2008 7:31 pm

  • Nil is M.I.A. afaik.
    uncomfortable
    random
    mean
    embarrassing
    limited
    User avatar
    Urmel
    Forum addon
     
    Posts: 1744
    Joined: Fri Mar 03, 2006 10:06 am
    Location: Offline

Fri Oct 24, 2008 9:47 am

Fri Oct 24, 2008 7:57 pm

  • Urmel wrote:Nil is M.I.A. afaik.


    amagawd! I've become a mutant! :shock:
    uncomfortable
    random
    mean
    embarrassing
    limited
    User avatar
    Urmel
    Forum addon
     
    Posts: 1744
    Joined: Fri Mar 03, 2006 10:06 am
    Location: Offline

Tue Nov 25, 2008 3:52 pm

  • Good Idea... My friend is a noobie and this would be an all-around good ideea!
    JRWEST WAS HERE
    Jrwest
    Member
     
    Posts: 18
    Joined: Mon Nov 24, 2008 4:26 pm

Sun Dec 07, 2008 1:52 pm

  • This would be great for the beginners server.
    oskar669
    Member
     
    Posts: 49
    Joined: Mon Mar 24, 2008 7:29 pm



Return to Nexuiz - Gameplay




Information
  • Who is online
  • Users browsing this forum: No registered users and 1 guest