X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fsv_main.qc;h=9be3c18f6017183f8d81319e0cdb75e4a2d16e51;hp=68e7b375b507a09051f3607114f60d14cd9da0f2;hb=546842f7e5a63b11a9b862dbf1709318bb97689b;hpb=353c0b9567d17df5f6c3c94f618fecfdff513fa7 diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index 68e7b375b..9be3c18f6 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -2,14 +2,16 @@ #include "anticheat.qh" #include "g_hook.qh" +#include "g_damage.qh" #include "g_world.qh" #include "bot/api.qh" #include "command/common.qh" -#include "mutators/_mod.qh" +#include #include "weapons/csqcprojectile.qh" +#include #include "../common/constants.qh" #include "../common/deathtypes/all.qh" @@ -18,6 +20,7 @@ #include "../common/util.qh" #include "../common/vehicles/all.qh" +#include #include #include "../lib/csqcmodel/sv_model.qh" @@ -37,9 +40,9 @@ void CreatureFrame_hotliquids(entity this) if (this.flags & FL_PROJECTILE) { if (this.watertype == CONTENT_LAVA) - Damage (this, NULL, NULL, autocvar_g_balance_contents_projectiledamage * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_LAVA.m_id, this.origin, '0 0 0'); + Damage (this, NULL, NULL, autocvar_g_balance_contents_projectiledamage * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_LAVA.m_id, DMG_NOWEP, this.origin, '0 0 0'); else if (this.watertype == CONTENT_SLIME) - Damage (this, NULL, NULL, autocvar_g_balance_contents_projectiledamage * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_SLIME.m_id, this.origin, '0 0 0'); + Damage (this, NULL, NULL, autocvar_g_balance_contents_projectiledamage * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_SLIME.m_id, DMG_NOWEP, this.origin, '0 0 0'); } else { @@ -50,7 +53,7 @@ void CreatureFrame_hotliquids(entity this) this.watersound_finished = time + 0.5; sound (this, CH_PLAYER_SINGLE, SND_LAVA, VOL_BASE, ATTEN_NORM); } - Damage (this, NULL, NULL, autocvar_g_balance_contents_playerdamage_lava * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_LAVA.m_id, this.origin, '0 0 0'); + Damage (this, NULL, NULL, autocvar_g_balance_contents_playerdamage_lava * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_LAVA.m_id, DMG_NOWEP, this.origin, '0 0 0'); if(autocvar_g_balance_contents_playerdamage_lava_burn) Fire_AddDamage(this, NULL, autocvar_g_balance_contents_playerdamage_lava_burn * this.waterlevel, autocvar_g_balance_contents_playerdamage_lava_burn_time * this.waterlevel, DEATH_LAVA.m_id); } @@ -61,7 +64,7 @@ void CreatureFrame_hotliquids(entity this) this.watersound_finished = time + 0.5; sound (this, CH_PLAYER_SINGLE, SND_SLIME, VOL_BASE, ATTEN_NORM); } - Damage (this, NULL, NULL, autocvar_g_balance_contents_playerdamage_slime * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_SLIME.m_id, this.origin, '0 0 0'); + Damage (this, NULL, NULL, autocvar_g_balance_contents_playerdamage_slime * autocvar_g_balance_contents_damagerate * this.waterlevel, DEATH_SLIME.m_id, DMG_NOWEP, this.origin, '0 0 0'); } } } @@ -88,7 +91,6 @@ void CreatureFrame_Liquids(entity this) this.dmgtime = 0; } this.air_finished = time + 12; - this.dmg = 2; } } @@ -117,16 +119,19 @@ void CreatureFrame_FallDamage(entity this) else dm = min((dm - autocvar_g_balance_falldamage_minspeed) * autocvar_g_balance_falldamage_factor, autocvar_g_balance_falldamage_maxdamage); if (dm > 0) - Damage (this, NULL, NULL, dm, DEATH_FALL.m_id, this.origin, '0 0 0'); + Damage (this, NULL, NULL, dm, DEATH_FALL.m_id, DMG_NOWEP, this.origin, '0 0 0'); } if(autocvar_g_maxspeed > 0 && velocity_len > autocvar_g_maxspeed) - Damage (this, NULL, NULL, 100000, DEATH_SHOOTING_STAR.m_id, this.origin, '0 0 0'); + Damage (this, NULL, NULL, 100000, DEATH_SHOOTING_STAR.m_id, DMG_NOWEP, this.origin, '0 0 0'); } } void CreatureFrame_All() { + if(game_stopped || time < game_starttime) + return; + IL_EACH(g_damagedbycontents, it.damagedbycontents, { if (it.move_movetype == MOVETYPE_NOCLIP) continue; @@ -163,7 +168,6 @@ Called before each frame by the server bool game_delay_last; bool autocvar_sv_autopause = false; -float RedirectionThink(); void systems_update(); void sys_phys_update(entity this, float dt); void StartFrame() @@ -217,8 +221,6 @@ void StartFrame() if (timeout_status == TIMEOUT_LEADTIME) // just before the timeout (when timeout_status will be TIMEOUT_ACTIVE) orig_slowmo = autocvar_slowmo; // slowmo will be restored after the timeout - skill = autocvar_skill; - // detect when the pre-game countdown (if any) has ended and the game has started bool game_delay = (time < game_starttime); if (autocvar_sv_eventlog && game_delay_last && !game_delay) @@ -246,7 +248,6 @@ void StartFrame() .float anglejitter; .string gametypefilter; .string cvarfilter; -bool DoesQ3ARemoveThisEntity(entity this); /** * Evaluate an expression of the form: [+ | -]? [var[op]val | [op]var | val | var] ... @@ -277,12 +278,11 @@ bool expr_evaluate(string s) string k, v; s = argv(i); #define X(expr) \ - if (expr) { \ + if (expr) \ continue; \ - } else { \ - expr_fail = true; \ - break; \ - } + expr_fail = true; \ + break; + #define BINOP(op, len, expr) \ if ((o = strstrofs(s, op, 0)) >= 0) { \ k = substring(s, 0, o); \ @@ -320,8 +320,6 @@ bool expr_evaluate(string s) void SV_OnEntityPreSpawnFunction(entity this) { - __spawnfunc_expecting = true; - __spawnfunc_expect = this; if (this) if (this.gametypefilter != "") if (!isGametypeInFilter(MapInfo_LoadedGametype, teamplay, have_team_spawns, this.gametypefilter)) @@ -362,23 +360,29 @@ void SV_OnEntityPreSpawnFunction(entity this) } return; LABEL(cleanup) - builtin_remove(this); - __spawnfunc_expecting = false; + delete(this); } void WarpZone_PostInitialize_Callback() { // create waypoint links for warpzones + entity tracetest_ent = spawn(); + setsize(tracetest_ent, PL_MIN_CONST, PL_MAX_CONST); + tracetest_ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; //for(entity e = warpzone_first; e; e = e.warpzone_next) for(entity e = NULL; (e = find(e, classname, "trigger_warpzone")); ) - { - vector src, dst; - src = (e.absmin + e.absmax) * 0.5; - makevectors(e.warpzone_angles); - src = src + ((e.warpzone_origin - src) * v_forward) * v_forward + 16 * v_right; - dst = (e.enemy.absmin + e.enemy.absmax) * 0.5; - makevectors(e.enemy.warpzone_angles); - dst = dst + ((e.enemy.warpzone_origin - dst) * v_forward) * v_forward - 16 * v_right; - waypoint_spawnforteleporter_v(e, src, dst, 0); - } + waypoint_spawnforteleporter_wz(e, tracetest_ent); + delete(tracetest_ent); +} + +/* +================== +main + +unused but required by the engine +================== +*/ +void main () +{ + }