X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fserver%2Fvehicles%2Fvehicles.qc;h=1b1ae3f647628626c24440d0b020ac8654909be1;hb=bf83d4469f1ac84d58e7ebae155274c4686eefea;hp=f66c2b925278575cb08235a72394a572aab208de;hpb=dbcdd58814a7281aef637c8c07a02242331c4c86;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/vehicles/vehicles.qc b/qcsrc/server/vehicles/vehicles.qc index f66c2b925..1b1ae3f64 100644 --- a/qcsrc/server/vehicles/vehicles.qc +++ b/qcsrc/server/vehicles/vehicles.qc @@ -2,7 +2,6 @@ float autocvar_g_vehicles_crush_dmg; float autocvar_g_vehicles_crush_force; float autocvar_g_vehicles_delayspawn; float autocvar_g_vehicles_delayspawn_jitter; -float autocvar_g_vehicles_allow_flagcarry; var float autocvar_g_vehicles_nex_damagerate = 0.5; var float autocvar_g_vehicles_uzi_damagerate = 0.5; @@ -378,7 +377,7 @@ void vehicles_projectile_damage(entity inflictor, entity attacker, float damage, if(self.health < 1) { self.takedamage = DAMAGE_NO; - self.event_damage = SUB_Null; + self.event_damage = func_null; self.think = self.use; self.nextthink = time; } @@ -397,7 +396,7 @@ void vehicles_projectile_explode() PROJECTILE_TOUCH; - self.event_damage = SUB_Null; + self.event_damage = func_null; RadiusDamage (self, self.realowner, self.shot_dmg, 0, self.shot_radius, self, self.shot_force, self.totalfrags, other); remove (self); @@ -472,6 +471,7 @@ void vehicles_spawn() self.touch = vehicles_touch; self.event_damage = vehicles_damage; self.iscreature = TRUE; + self.teleportable = FALSE; // no teleporting for vehicles, too buggy self.damagedbycontents = TRUE; self.movetype = MOVETYPE_WALK; self.solid = SOLID_SLIDEBOX; @@ -544,7 +544,7 @@ void vehicles_touch() if(vehicles_crushable(other)) { if(vlen(self.velocity) != 0) - Damage(other, self, self.owner, autocvar_g_vehicles_crush_dmg, DEATH_VHCRUSH, '0 0 0', normalize(other.origin - self.origin) * autocvar_g_vehicles_crush_force); + Damage(other, self, self.owner, autocvar_g_vehicles_crush_dmg, DEATH_VH_CRUSH, '0 0 0', normalize(other.origin - self.origin) * autocvar_g_vehicles_crush_force); return; // Dont do selfdamage when hitting "soft targets". } @@ -610,7 +610,7 @@ void vehicles_enter() self.owner.movetype = MOVETYPE_NOCLIP; self.owner.alpha = -1; self.owner.vehicle = self; - self.owner.event_damage = SUB_Null; + self.owner.event_damage = func_null; self.owner.view_ofs = '0 0 0'; self.colormap = self.owner.colormap; if(self.tur_head) @@ -658,18 +658,12 @@ void vehicles_enter() vehicles_clearrturn(); CSQCVehicleSetup(self.owner, self.hud); - - if(other.flagcarried) - { - if(!autocvar_g_vehicles_allow_flagcarry) - DropFlag(other.flagcarried, world, world); - else - { - other.flagcarried.scale = 1; - setattachment(other.flagcarried, self, ""); - setorigin(other.flagcarried, self.maxs_z * '0 0 1'); - } - } + + vh_player = other; + vh_vehicle = self; + MUTATOR_CALLHOOK(VehicleEnter); + other = vh_player; + self = vh_vehicle; self.vehicle_enter(); antilag_clear(other); @@ -786,20 +780,13 @@ void vehicles_exit(float eject) _player.movetype = MOVETYPE_WALK; _player.effects &~= EF_NODRAW; _player.alpha = 1; - _player.PlayerPhysplug = SUB_Null; + _player.PlayerPhysplug = func_null; _player.vehicle = world; _player.view_ofs = PL_VIEW_OFS; _player.event_damage = PlayerDamage; _player.hud = HUD_NORMAL; _player.switchweapon = _vehicle.switchweapon; - if(_player.flagcarried) - { - _player.flagcarried.scale = 0.6; - setattachment(_player.flagcarried, _player, ""); - setorigin(_player.flagcarried, FLAG_CARRY_POS); - } - CSQCVehicleSetup(_player, HUD_NORMAL); } _vehicle.flags |= FL_NOTARGET; @@ -812,7 +799,14 @@ void vehicles_exit(float eject) if(!teamplay) _vehicle.team = 0; else - _vehicle.team = _vehicle.tur_head.team; + + vh_player = _player; + vh_vehicle = _vehicle; + MUTATOR_CALLHOOK(VehicleExit); + _player = vh_player; + _vehicle = vh_vehicle; + + _vehicle.team = _vehicle.tur_head.team; sound (_vehicle, CH_TRIGGER_SINGLE, "misc/null.wav", 1, ATTN_NORM); _vehicle.vehicle_hudmodel.viewmodelforclient = _vehicle; @@ -1014,7 +1008,7 @@ void vehicles_showwp_goaway() void vehicles_showwp() { - entity oldself; + entity oldself = world; vector rgb; if(self.cnt) @@ -1039,7 +1033,7 @@ void vehicles_showwp() } if(teamplay && self.team) - rgb = TeamColor(self.team); + rgb = Team_ColorRGB(self.team); else rgb = '1 1 1'; WaypointSprite_Spawn("vehicle", 0, 0, self, '0 0 64', world, 0, self, waypointsprite_attached, TRUE, RADARICON_POWERUP, rgb); @@ -1085,11 +1079,11 @@ void vehicles_setreturn() void vehicles_reset_colors() { entity e; - float _effects, _colormap; + float _effects = 0, _colormap; vector _glowmod, _colormod; if(autocvar_g_nodepthtestplayers) - _effects = EF_NODEPTHTEST; + _effects |= EF_NODEPTHTEST; if(autocvar_g_fullbrightplayers) _effects |= EF_FULLBRIGHT; @@ -1265,6 +1259,7 @@ float vehicle_initialize(string net_name, self.takedamage = DAMAGE_AIM; self.bot_attack = TRUE; self.iscreature = TRUE; + self.teleportable = FALSE; // no teleporting for vehicles, too buggy self.damagedbycontents = TRUE; self.hud = vhud; self.tur_health = _max_health; @@ -1273,14 +1268,14 @@ float vehicle_initialize(string net_name, self.vehicle_exit = exitfunc; self.vehicle_enter = enterproc; self.PlayerPhysplug = physproc; - self.event_damage = vehicles_damage; + self.event_damage = func_null; self.touch = vehicles_touch; self.think = vehicles_spawn; self.nextthink = time; self.vehicle_respawntime = _respawntime; self.vehicle_spawn = spawnproc; self.effects = EF_NODRAW; - if(g_assault || !autocvar_g_vehicles_delayspawn) + if(!autocvar_g_vehicles_delayspawn) self.nextthink = time + 0.5; else self.nextthink = time + _respawntime + (random() * autocvar_g_vehicles_delayspawn_jitter); @@ -1320,6 +1315,9 @@ float vehicle_initialize(string net_name, self.pos1 = self.origin; self.pos2 = self.angles; self.tur_head.team = self.team; + + if(MUTATOR_CALLHOOK(VehicleSpawn)) + return FALSE; return TRUE; } @@ -1410,4 +1408,4 @@ vector predict_target(entity _targ, vector _from, float _shot_speed) return _predict_pos; } -*/ \ No newline at end of file +*/