]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote-tracking branch 'origin/Mario/mutator_minstagib'
authorSamual Lenks <samual@xonotic.org>
Fri, 10 May 2013 00:10:03 +0000 (20:10 -0400)
committerSamual Lenks <samual@xonotic.org>
Fri, 10 May 2013 00:10:03 +0000 (20:10 -0400)
17 files changed:
defaultXonotic.cfg
gfx/hud/default/weaponlaser.tga
gfx/hud/default/weaponminstanex.tga
gfx/hud/luminos/weaponlaser.tga
gfx/hud/luminos/weaponminstanex.tga
qcsrc/common/deathtypes.qh
qcsrc/menu/xonotic/dialog_settings_user.c
qcsrc/server/cl_client.qc
qcsrc/server/cl_player.qc
qcsrc/server/command/vote.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/gamemode_ca.qc
qcsrc/server/mutators/gamemode_lms.qc
qcsrc/server/mutators/gamemode_lms.qh
qcsrc/server/w_shotgun.qc

index 39fbdf4174e2ad4eb8e5f8a534b2055218bb8295..0a66a907846e277ca75aca6bccdbe8e2ef322375 100644 (file)
@@ -959,7 +959,7 @@ seta scoreboard_border_thickness 1 "scoreboard border thickness"
 seta scoreboard_accuracy_border_thickness 1 "accuracy stats border thickness"
 seta scoreboard_accuracy_doublerows 0 "use two rows instead of one"
 seta scoreboard_accuracy_nocolors 0 "don't use colors displaying accuracy stats"
-seta scoreboard_accuracy 1 "show weapon accuracy stats panel on scoreboard; colors can be configured with accuracy_color* cvars"
+seta scoreboard_accuracy 0 "show weapon accuracy stats panel on scoreboard; colors can be configured with accuracy_color* cvars"
 seta scoreboard_color_bg_r 0 "red color component of the scoreboard background"
 seta scoreboard_color_bg_g 0.4 "green color component of the scoreboard background"
 seta scoreboard_color_bg_b 0.6 "blue color component of the scoreboard background"
index 0afbb37d48124bb6f9b9a4f82998c45a1dcb43d4..f384a2c3000c27fbea425f23165e662c0f301bb5 100644 (file)
Binary files a/gfx/hud/default/weaponlaser.tga and b/gfx/hud/default/weaponlaser.tga differ
index 3618778729fc6918db40260e421f6cbf86ab842e..3bd2ae2d7aabe4270483aa1ac0c5016df50d6ccc 100644 (file)
Binary files a/gfx/hud/default/weaponminstanex.tga and b/gfx/hud/default/weaponminstanex.tga differ
index 0afbb37d48124bb6f9b9a4f82998c45a1dcb43d4..f384a2c3000c27fbea425f23165e662c0f301bb5 100644 (file)
Binary files a/gfx/hud/luminos/weaponlaser.tga and b/gfx/hud/luminos/weaponlaser.tga differ
index 3618778729fc6918db40260e421f6cbf86ab842e..3bd2ae2d7aabe4270483aa1ac0c5016df50d6ccc 100644 (file)
Binary files a/gfx/hud/luminos/weaponminstanex.tga and b/gfx/hud/luminos/weaponminstanex.tga differ
index ca13f15a063e2fc674465312ebe1b600a1e88bd3..f9a9ceba25b1e0df2da7e77db433f5982e644b99 100644 (file)
@@ -69,7 +69,7 @@ entity deathtypes[DT_MAX];
                CHECK_MAX_COUNT(name, DT_MAX, DT_COUNT, "deathtypes") \
                \
                entity deathent = spawn(); \
-               deathtypes[(name - DT_FIRST) - 1] = deathent; \
+               deathtypes[(name - DT_FIRST)] = deathent; \
                deathent.classname = "deathtype"; \
                deathent.nent_name = #name; \
                #if (msg_death != NO_MSG) \
@@ -96,7 +96,7 @@ string Deathtype_Name(float deathtype)
 {
        if(DEATH_ISSPECIAL(deathtype))
        {
-               entity deathent = deathtypes[(deathtype - DT_FIRST) - 1];
+               entity deathent = deathtypes[(deathtype - DT_FIRST)];
                if not(deathent) { backtrace("Deathtype_Name: Could not find deathtype entity!\n"); return ""; }
                return deathent.nent_name;
        }
index 9a1710a9f5bbe8635bcf665281dcd9cdafc621d8..a3b89744b9fbc30b6ef44cb3489c386e6ce9c460 100644 (file)
@@ -61,17 +61,17 @@ void XonoticUserSettingsTab_fill(entity me)
                        e.onClick = SetLanguage_Click;
                        e.onClickEntity = sk;*/
                        
-       me.gotoRC(me, 0, 3.1); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 0, 2.85); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Text language:")));
        me.TR(me);
-               me.TD(me, 6, 1, sk = makeXonoticLanguageList());
+               me.TD(me, 6, 1.5, sk = makeXonoticLanguageList());
        me.TR(me);
        me.TR(me);
        me.TR(me);
        me.TR(me);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticButton(_("Set language"), '0 0 0'));
+               me.TD(me, 1, 1.5, e = makeXonoticButton(_("Set language"), '0 0 0'));
                        e.onClick = SetLanguage_Click;
                        e.onClickEntity = sk;
                
index 85c96445acbdbdf85701b5e7524b17e3c83f2255..ea3cdfb191eed5e11f5254e491dc37d02eeb3312 100644 (file)
@@ -385,15 +385,7 @@ void PutObserverInServer (void)
                WriteEntity(MSG_ONE, self);
        }
 
-       if(g_lms)
-       {
-               // Only if the player cannot play at all
-               if(PlayerScore_Add(self, SP_LMS_RANK, 0) == 666)
-                       self.frags = FRAGS_SPECTATOR;
-               else
-                       self.frags = FRAGS_LMS_LOSER;
-       }
-       else if((g_race && g_race_qualifying) || g_cts)
+       if((g_race && g_race_qualifying) || g_cts)
        {
                if(PlayerScore_Add(self, SP_RACE_FASTEST, 0))
                        self.frags = FRAGS_LMS_LOSER;
@@ -608,14 +600,6 @@ void PutClientInServer (void)
        // reset player keys
        self.itemkeys = 0;
 
-       // player is dead and becomes observer
-       // FIXME fix LMS scoring for new system
-       if(g_lms)
-       {
-               if(PlayerScore_Add(self, SP_LMS_RANK, 0) > 0)
-                       self.classname = "observer";
-       }
-
        MUTATOR_CALLHOOK(PutClientInServer);
 
        if(gameover)
@@ -795,8 +779,6 @@ void PutClientInServer (void)
                self.colormod = '1 1 1' * autocvar_g_player_brightness;
                self.exteriorweaponentity.alpha = default_weapon_alpha;
 
-               self.lms_nextcheck = time + autocvar_g_lms_campcheck_interval*2;
-               self.lms_traveled_distance = 0;
                self.speedrunning = FALSE;
 
                race_PostSpawn(spot);
index 1f5d8a12532e5f19b28ba1ee6eda9e041538b1ca..89627481ac2af9e6f9dba9066c20800a6d851477 100644 (file)
@@ -653,7 +653,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht
                else
                        self.respawn_countdown = -1; // do not count down
 
-               if(g_lms || g_cts || autocvar_g_forced_respawn)
+               if(g_cts || autocvar_g_forced_respawn)
                        self.respawn_flags = self.respawn_flags | RESPAWN_FORCE;
 
                self.death_time = time;
index 3e564e39ae93f055226d64ad8e3caf5b40e13fe0..e34464f16cbc84a102bfc9de9367ec8fb1a5c967 100644 (file)
@@ -332,9 +332,6 @@ void reset_map(float dorespawn)
                race_ReadyRestart();
        else MUTATOR_CALLHOOK(reset_map_global);
 
-       lms_lowest_lives = 999;
-       lms_next_place = player_count;
-
        for(self = world; (self = nextent(self)); )
        if(clienttype(self) == CLIENTTYPE_NOTACLIENT)
        {
@@ -379,8 +376,6 @@ void reset_map(float dorespawn)
                        //NEW: changed behaviour so that it prevents that previous spectators/observers suddenly spawn as players
                        if (IS_PLAYER(self)) {
                                //PlayerScore_Clear(self);
-                               if(g_lms)
-                                       PlayerScore_Add(self, SP_LMS_LIVES, LMS_NewPlayerLives());
                                self.killcount = 0;
                                //stop the player from moving so that he stands still once he gets respawned
                                self.velocity = '0 0 0';
index c92a43bd529fb17a2ca998c4415df166621a02b6..7d3585725d2544ecd4dab000d907c51cbab6354e 100644 (file)
@@ -243,9 +243,6 @@ float nJoinAllowed(entity ignore);
 
 .float spawnshieldtime;
 
-.float lms_nextcheck;
-.float lms_traveled_distance;
-
 .entity flagcarried;
 
 .float playerid;
index 908f9c34fa5ac6a0cae7617b5243d4b5bd69cf69..8425308ac7fe32af1c0f6604cb8617569be1030a 100644 (file)
@@ -240,7 +240,7 @@ void Obituary_SpecialDeath(
 {
        if(DEATH_ISSPECIAL(deathtype))
        {
-               entity deathent = deathtypes[(deathtype - DT_FIRST) - 1];
+               entity deathent = deathtypes[(deathtype - DT_FIRST)];
                if not(deathent) { backtrace("Obituary_SpecialDeath: Could not find deathtype entity!\n"); return; }
 
                if(murder)
index 8ad4520494ac6184b25f90501ba5291999231a5a..f1651e23dac5777a2b95d6395363e9674daadcbf 100644 (file)
@@ -827,8 +827,7 @@ void readplayerstartcvars()
                g_pinata = 0; // incompatible
                g_weapon_stay = 0; // incompatible
                WEPSET_COPY_AA(start_weapons, g_weaponarena_weapons);
-               if(!g_ca)
-                       start_items |= IT_UNLIMITED_AMMO;
+               start_items |= IT_UNLIMITED_AMMO;
        }
        else
        {
@@ -861,28 +860,11 @@ void readplayerstartcvars()
        }
        else
        {
-               if(g_ca)
-               {
-                       start_ammo_shells = cvar("g_lms_start_ammo_shells");
-                       start_ammo_nails = cvar("g_lms_start_ammo_nails");
-                       start_ammo_rockets = cvar("g_lms_start_ammo_rockets");
-                       start_ammo_cells = cvar("g_lms_start_ammo_cells");
-                       start_ammo_fuel = cvar("g_lms_start_ammo_fuel");
-               }
-               else
-               {
-                       start_ammo_shells = cvar("g_start_ammo_shells");
-                       start_ammo_nails = cvar("g_start_ammo_nails");
-                       start_ammo_rockets = cvar("g_start_ammo_rockets");
-                       start_ammo_cells = cvar("g_start_ammo_cells");
-                       start_ammo_fuel = cvar("g_start_ammo_fuel");
-               }
-       }
-
-       if (g_ca)
-       {
-               start_health = cvar("g_lms_start_health");
-               start_armorvalue = cvar("g_lms_start_armor");
+               start_ammo_shells = cvar("g_start_ammo_shells");
+               start_ammo_nails = cvar("g_start_ammo_nails");
+               start_ammo_rockets = cvar("g_start_ammo_rockets");
+               start_ammo_cells = cvar("g_start_ammo_cells");
+               start_ammo_fuel = cvar("g_start_ammo_fuel");
        }
 
        if (inWarmupStage)
index 11330fbd7d6b370f851aa8425bd11d0dfab4322d..22bfc981c34c6cff8013f384f73641c698343f90 100644 (file)
@@ -222,6 +222,22 @@ MUTATOR_HOOKFUNCTION(ca_GiveFragsForKill)
        return 1;
 }
 
+MUTATOR_HOOKFUNCTION(ca_SetStartItems)
+{
+       start_health = cvar("g_lms_start_health");
+       start_armorvalue = cvar("g_lms_start_armor");
+       
+       start_ammo_shells = cvar("g_lms_start_ammo_shells");
+       start_ammo_nails = cvar("g_lms_start_ammo_nails");
+       start_ammo_rockets = cvar("g_lms_start_ammo_rockets");
+       start_ammo_cells = cvar("g_lms_start_ammo_cells");
+       start_ammo_fuel = cvar("g_lms_start_ammo_fuel");
+       
+       start_items &~= IT_UNLIMITED_AMMO;
+
+       return 0;
+}
+
 void ca_Initialize()
 {
        allowed_to_spawn = TRUE;
@@ -248,6 +264,7 @@ MUTATOR_DEFINITION(gamemode_ca)
        MUTATOR_HOOK(ForbidPlayerScore_Clear, ca_ForbidPlayerScore_Clear, CBC_ORDER_ANY);
        MUTATOR_HOOK(ForbidThrowCurrentWeapon, ca_ForbidThrowCurrentWeapon, CBC_ORDER_ANY);
        MUTATOR_HOOK(GiveFragsForKill, ca_GiveFragsForKill, CBC_ORDER_FIRST);
+       MUTATOR_HOOK(SetStartItems, ca_SetStartItems, CBC_ORDER_ANY);
 
        MUTATOR_ONADD
        {
index 681a1d433a1f62dbc0cfe4b60b7d05b71850b704..82258ac77c115e33d144c7dc280526c0c3aa729c 100644 (file)
@@ -18,15 +18,49 @@ float LMS_NewPlayerLives()
 }
 
 // mutator hooks
-MUTATOR_HOOKFUNCTION(lms_PlayerSpawn)
+MUTATOR_HOOKFUNCTION(lms_ResetMap)
+{
+       lms_lowest_lives = 999;
+       lms_next_place = player_count;
+       
+       return FALSE;
+}
+
+MUTATOR_HOOKFUNCTION(lms_ResetPlayers)
 {
-       if(IS_PLAYER(self))
        if(restart_mapalreadyrestarted || (time < game_starttime))
+       FOR_EACH_CLIENT(self)
+       if(IS_PLAYER(self))
                PlayerScore_Add(self, SP_LMS_LIVES, LMS_NewPlayerLives());
+       
+       return FALSE;
+}
+
+MUTATOR_HOOKFUNCTION(lms_PlayerPreSpawn)
+{
+       // player is dead and becomes observer
+       // FIXME fix LMS scoring for new system
+       if(PlayerScore_Add(self, SP_LMS_RANK, 0) > 0)
+               self.classname = "observer";
+
+       return FALSE;
+}
+
+MUTATOR_HOOKFUNCTION(lms_PlayerSpawn)
+{
+       self.lms_nextcheck = time + autocvar_g_lms_campcheck_interval*2;
+       self.lms_traveled_distance = 0;
                
        return FALSE;
 }
 
+MUTATOR_HOOKFUNCTION(lms_PlayerDies)
+{
+       self.respawn_flags |= RESPAWN_FORCE;
+       
+       return FALSE;
+}
+
 MUTATOR_HOOKFUNCTION(lms_RemovePlayer)
 {
        // Only if the player cannot play at all
@@ -181,18 +215,6 @@ MUTATOR_HOOKFUNCTION(lms_ItemTouch)
        return FALSE;
 }
 
-MUTATOR_HOOKFUNCTION(lms_BotSpawn)
-{
-       // temporary hack to give bots lives
-       if(PlayerScore_Add(self, SP_LMS_LIVES, LMS_NewPlayerLives()) <= 0)
-       {
-               PlayerScore_Add(self, SP_LMS_RANK, 666);
-               self.frags = FRAGS_SPECTATOR;
-       }
-       
-       return FALSE;
-}
-
 // scoreboard stuff
 void lms_ScoreRules()
 {
@@ -212,7 +234,11 @@ void lms_Initialize()
 
 MUTATOR_DEFINITION(gamemode_lms)
 {
+       MUTATOR_HOOK(reset_map_global, lms_ResetMap, CBC_ORDER_ANY);
+       MUTATOR_HOOK(reset_map_players, lms_ResetPlayers, CBC_ORDER_ANY);
+       MUTATOR_HOOK(PutClientInServer, lms_PlayerPreSpawn, CBC_ORDER_ANY);
        MUTATOR_HOOK(PlayerSpawn, lms_PlayerSpawn, CBC_ORDER_ANY);
+       MUTATOR_HOOK(PlayerDies, lms_PlayerDies, CBC_ORDER_ANY);
        MUTATOR_HOOK(MakePlayerObserver, lms_RemovePlayer, CBC_ORDER_ANY);
        MUTATOR_HOOK(ClientConnect, lms_ClientConnect, CBC_ORDER_ANY);
        MUTATOR_HOOK(PlayerPreThink, lms_PlayerThink, CBC_ORDER_ANY);
@@ -223,7 +249,6 @@ MUTATOR_DEFINITION(gamemode_lms)
        MUTATOR_HOOK(ForbidPlayerScore_Clear, lms_KeepScore, CBC_ORDER_ANY);
        MUTATOR_HOOK(FilterItem, lms_FilterItem, CBC_ORDER_ANY);
        MUTATOR_HOOK(ItemTouch, lms_ItemTouch, CBC_ORDER_ANY);
-       MUTATOR_HOOK(HavocBot_ChooseRule, lms_BotSpawn, CBC_ORDER_ANY);
 
        MUTATOR_ONADD
        {
index 16fda61550823e6a098e27a2f47e1cfe2506550d..508bf8c6cd12b98af08be540322c31a346adea79 100644 (file)
@@ -5,4 +5,8 @@
 // lives related defs
 float lms_lowest_lives;
 float lms_next_place;
-float LMS_NewPlayerLives();
\ No newline at end of file
+float LMS_NewPlayerLives();
+
+// camp check
+.float lms_nextcheck;
+.float lms_traveled_distance;
\ No newline at end of file
index 75f6a087d14256ef0b32ee3525809e847b47cf41..1b612057fe431f33dc78f08b3038112d2d205960 100644 (file)
@@ -85,7 +85,7 @@ void shotgun_meleethink (void)
                        + (v_up * swing_factor * autocvar_g_balance_shotgun_secondary_melee_swing_up)
                        + (v_right * swing_factor * autocvar_g_balance_shotgun_secondary_melee_swing_side));
 
-               WarpZone_traceline_antilag(self.realowner, self.realowner.origin + self.realowner.view_ofs, targpos, FALSE, self.realowner, ANTILAG_LATENCY(self.realowner));
+               WarpZone_traceline_antilag(self, self.realowner.origin + self.realowner.view_ofs, targpos, FALSE, self, ANTILAG_LATENCY(self.realowner));
                
                // draw lightning beams for debugging
                //te_lightning2(world, targpos, self.realowner.origin + self.realowner.view_ofs + v_forward * 5 - v_up * 5); 
@@ -151,7 +151,7 @@ void W_Shotgun_Attack2 (void)
 
        entity meleetemp;
        meleetemp = spawn();
-       meleetemp.owner = meleetemp.realowner = self;
+       meleetemp.realowner = self;
        meleetemp.think = shotgun_meleethink;
        meleetemp.nextthink = time + autocvar_g_balance_shotgun_secondary_melee_delay * W_WeaponRateFactor();
        W_SetupShot_Range(self, TRUE, 0, "", 0, autocvar_g_balance_shotgun_secondary_damage, autocvar_g_balance_shotgun_secondary_melee_range);