X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fsv_main.qc;h=d11f235224056a9c9526cbaa5944e2b514a5bc89;hb=89eff022dd8653e6b5965d35dd9fb9caa54fe72c;hp=3d2f562977f564689ff04213c59c23a2c6d13cb5;hpb=7dc163da8d5ac364162b463e84b1d96818ee303c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index 3d2f56297..d11f23522 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -1,10 +1,7 @@ void CreatureFrame (void) { - local entity oldself; - local float dm; - - float damagerate; // where damagerate 5 means 5 hits per second (0.2 delay) - damagerate = (1 / bound(1, autocvar_g_balance_contents_damagerate, 100)); + entity oldself; + float dm; oldself = self; for(self = world; (self = findfloat(self, damagedbycontents, TRUE)); ) @@ -12,10 +9,7 @@ void CreatureFrame (void) if (self.movetype == MOVETYPE_NOCLIP) { continue; } float vehic = (self.vehicle_flags & VHF_ISVEHICLE); - float projectile = (self.projectiledeathtype); - - //if(projectile) - // print("waterlevel: ", ftos((self.watertype <= CONTENT_WATER && self.waterlevel > 0)), ". \n"); + float projectile = (self.flags & FL_PROJECTILE); if (self.watertype <= CONTENT_WATER && self.waterlevel > 0) // workaround a retarded bug made by id software :P (yes, it's that old of a bug) { @@ -23,16 +17,15 @@ void CreatureFrame (void) { self.flags |= FL_INWATER; self.dmgtime = 0; - //te_customflash(self.origin, 200, 20, '50 0.1 0.1'); } - + if(!vehic && !projectile) // vehicles and projectiles don't drown { if (self.waterlevel != WATERLEVEL_SUBMERGED) { - if(self.air_finished < time + 9) + if(self.air_finished < time) PlayerSound(playersound_gasp, CH_PLAYER, VOICETYPE_PLAYERSOUND); - self.air_finished = time + 12; + self.air_finished = time + autocvar_g_balance_contents_drowndelay; self.dmg = 2; } else if (self.air_finished < time) @@ -40,7 +33,7 @@ void CreatureFrame (void) if (!self.deadflag) if (self.pain_finished < time) { - Damage (self, world, world, autocvar_g_balance_contents_playerdamage_drowning * damagerate, DEATH_DROWN, self.origin, '0 0 0'); + Damage (self, world, world, autocvar_g_balance_contents_playerdamage_drowning * autocvar_g_balance_contents_damagerate, DEATH_DROWN, self.origin, '0 0 0'); self.pain_finished = time + 0.5; } } @@ -48,7 +41,7 @@ void CreatureFrame (void) if (self.dmgtime < time) { - self.dmgtime = time + damagerate; + self.dmgtime = time + autocvar_g_balance_contents_damagerate; if (!projectile) { @@ -59,7 +52,7 @@ void CreatureFrame (void) self.watersound_finished = time + 0.5; sound (self, CH_PLAYER, "player/lava.wav", VOL_BASE, ATTN_NORM); } - Damage (self, world, world, autocvar_g_balance_contents_playerdamage_lava * damagerate * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0'); + Damage (self, world, world, autocvar_g_balance_contents_playerdamage_lava * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_LAVA, self.origin, '0 0 0'); } else if (self.watertype == CONTENT_SLIME) { @@ -68,12 +61,12 @@ void CreatureFrame (void) self.watersound_finished = time + 0.5; sound (self, CH_PLAYER, "player/slime.wav", VOL_BASE, ATTN_NORM); } - Damage (self, world, world, autocvar_g_balance_contents_playerdamage_slime * damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); + Damage (self, world, world, autocvar_g_balance_contents_playerdamage_slime * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); } } else if ((self.watertype == CONTENT_LAVA) || (self.watertype == CONTENT_SLIME)) { - Damage (self, world, world, autocvar_g_balance_contents_projectiledamage * damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); + Damage (self, world, world, autocvar_g_balance_contents_projectiledamage * autocvar_g_balance_contents_damagerate * self.waterlevel, DEATH_SLIME, self.origin, '0 0 0'); } } } @@ -84,7 +77,6 @@ void CreatureFrame (void) // play leave water sound self.flags &~= FL_INWATER; self.dmgtime = 0; - //te_customflash(self.origin, 200, 20, '0.1 0.1 50'); } self.air_finished = time + 12; self.dmg = 2; @@ -250,6 +242,8 @@ void StartFrame (void) FOR_EACH_PLAYER(self) self.porto_forbidden = max(0, self.porto_forbidden - 1); + + MUTATOR_CALLHOOK(SV_StartFrame); } .vector originjitter; @@ -283,7 +277,7 @@ void SV_OnEntityPreSpawnFunction() s = substring(s, 1, -1); } - n = tokenize(s); + n = tokenize_console(s); for(i = 0; i < n; ++i) { s = argv(i);