Advertisement
TimePath

Untitled

Feb 22nd, 2015
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.63 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "../../progs.h"
  4. #include "../../common/util-pre.hpp"
  5. #include "../../dpdefs/csprogsdefs.hpp"
  6. #include "../announcer.cpp"
  7. #include "../bgmscript.cpp"
  8. #include "../casings.cpp"
  9. #include "../csqcmodel_hooks.cpp"
  10. #include "../damage.cpp"
  11. #include "../effects.cpp"
  12. #include "../gibs.cpp"
  13. #include "../hook.cpp"
  14. #include "../hud_config.cpp"
  15. #include "../hud.cpp"
  16. #include "../laser.cpp"
  17. #include "../main.cpp"
  18. #include "../mapvoting.cpp"
  19. #include "../miscfunctions.cpp"
  20. #include "../modeleffects.cpp"
  21. #include "../movetypes.cpp"
  22. #include "../noise.cpp"
  23. #include "../particles.cpp"
  24. #include "../player_skeleton.cpp"
  25. #include "../prandom.cpp"
  26. #include "../rubble.cpp"
  27. #include "../scoreboard.cpp"
  28. #include "../shownames.cpp"
  29. #include "../sortlist.cpp"
  30. #include "../target_music.cpp"
  31. #include "../teamradar.cpp"
  32. #include "../tturrets.cpp"
  33. #include "../tuba.cpp"
  34. #include "../vehicles/vehicles.cpp"
  35. #include "../view.cpp"
  36. #include "../wall.cpp"
  37. #include "../waypointsprites.cpp"
  38. #include "../command/cl_cmd.cpp"
  39.  
  40. namespace xon {
  41.     void SUB_Stop() {
  42.         self[move_velocity] = self[move_avelocity] = Vector(x=0.0, y=0.0, z=0.0);
  43.         self[move_movetype] = MOVETYPE_NONE;
  44.     };
  45.     void Projectile_ResetTrail(vector to) {
  46.         self[trail_oldorigin] = to;
  47.         self[trail_oldtime] = time;
  48.     };
  49.     void Projectile_DrawTrail(vector to) {
  50.         from;
  51.         float t0;
  52.         from = self[trail_oldorigin];
  53.         t0 = self[trail_oldtime];
  54.         self[trail_oldorigin] = to;
  55.         self[trail_oldtime] = time;
  56.         if (self[cnt] == PROJECTILE_FIREMINE) if (from == to) from[z] += (int) 1.0;
  57.         if (self[traileffect]) {
  58.             particles_alphamin = particles_alphamax = particles_fade = sqrt(self[alpha]);
  59.             boxparticles(self[traileffect], self, from, to, self[velocity], self[velocity], (int) 1.0, PARTICLES_USEALPHA | PARTICLES_USEFADE | PARTICLES_DRAWASTRAIL);
  60.         };
  61.     };
  62.     void Projectile_Draw() {
  63.         rot;
  64.         trailorigin;
  65.         int f;
  66.         bool drawn;
  67.         float t;
  68.         float a;
  69.         f = self[move_flags];
  70.         if (self[count] & 128.0) {
  71.             if (self[move_movetype] == MOVETYPE_NONE || self[move_movetype] == MOVETYPE_FLY) Movetype_Physics_NoMatchServer() else Movetype_Physics_MatchServer(autocvar_cl_projectiles_sloppy);
  72.             if (!self[move_flags] & FL_ONGROUND) if (self[velocity] != Vector(x=0.0, y=0.0, z=0.0)) self[move_angles] = self[angles] = vectoangles(self[velocity]);
  73.         } else {
  74.             InterpolateOrigin_Do();
  75.         };
  76.         if (self[count] & 128.0) {
  77.             drawn = time >= self[spawntime] - 0.02;
  78.             t = max(time, self[spawntime]);
  79.         } else {
  80.             drawn = self[iflags] & IFLAG_VALID;
  81.             t = time;
  82.         };
  83.         if (!f & FL_ONGROUND) {
  84.             rot = Vector(x=0.0, y=0.0, z=0.0);
  85.             switch (self[cnt]) {
  86.                 {
  87.                     case PROJECTILE_GRENADE_BOUNCING:;
  88.                     rot = Vector(x=0.0, y=-1000.0, z=0.0);
  89.                     break;
  90.                     case PROJECTILE_HOOKBOMB:;
  91.                     rot = Vector(x=1000.0, y=0.0, z=0.0);
  92.                     break;
  93.                     default:;
  94.                     break;
  95.                 };
  96.             };
  97.             if (Nade_IDFromProjectile(self[cnt]) != (int) 0.0) rot = self[avelocity];
  98.             self[angles] = AnglesTransform_ToAngles(AnglesTransform_Multiply(AnglesTransform_FromAngles(self[angles]), rot * t - self[spawntime]));
  99.         };
  100.         ang;
  101.         ang = self[angles];
  102.         ang[x] = -ang[x];
  103.         makevectors(ang);
  104.         a = (int) 1.0 - time - self[fade_time] * self[fade_rate];
  105.         self[alpha] = bound((int) 0.0, self[alphamod] * a, (int) 1.0);
  106.         if (self[alpha] <= (int) 0.0) drawn = (int) 0.0;
  107.         self[renderflags] = (int) 0.0;
  108.         trailorigin = self[origin];
  109.         switch (self[cnt]) {
  110.             {
  111.                 case PROJECTILE_GRENADE:;
  112.                 case PROJECTILE_GRENADE_BOUNCING:;
  113.                 trailorigin += v_right * (int) 1.0 + v_forward * -(int) 10.0;
  114.                 break;
  115.                 default:;
  116.                 break;
  117.             };
  118.         };
  119.         if (Nade_IDFromProjectile(self[cnt]) != (int) 0.0) trailorigin += v_up * (int) 4.0;
  120.         if (drawn) Projectile_DrawTrail(trailorigin) else Projectile_ResetTrail(trailorigin);
  121.         self[drawmask] = (int) 0.0;
  122.         if (!drawn) return;
  123.         switch (self[cnt]) {
  124.             {
  125.                 default:;
  126.                 break;
  127.             };
  128.         };
  129.         self[drawmask] = MASK_NORMAL;
  130.     };
  131.     void loopsound(entity e, int ch, string samp, float vol, float attn) {
  132.         if (self[silent]) return;
  133.         sound7(e, ch, samp, vol, attn, (int) 0.0, (int) 0.0);
  134.         e[snd_looping] = ch;
  135.     };
  136.     void Ent_RemoveProjectile() {
  137.         if (self[count] & 128.0) {
  138.             tracebox(self[origin], self[mins], self[maxs], self[origin] + self[velocity] * 0.05, MOVE_NORMAL, self);
  139.             Projectile_DrawTrail(trace_endpos);
  140.         };
  141.     };
  142.     void Ent_Projectile() {
  143.         int f;
  144.         f = ReadByte();
  145.         self[count] = f & 128.0;
  146.         self[iflags] = self[iflags] & IFLAG_VALID | IFLAG_PREVALID | IFLAG_AUTOANGLES | IFLAG_ANGLES | IFLAG_ORIGIN;
  147.         self[solid] = SOLID_TRIGGER;
  148.         self[move_nomonsters] = MOVE_WORLDONLY;
  149.         if (f & 64.0) self[move_flags] |= FL_ONGROUND else self[move_flags] &= ~FL_ONGROUND;
  150.         if (!self[move_time]) {
  151.             self[move_time] = time;
  152.             self[spawntime] = time;
  153.         } else self[move_time] = max(self[move_time], time);
  154.         if (!self[count] & 128.0) InterpolateOrigin_Undo();
  155.         if (f & (int) 1.0) {
  156.             self[origin][x] = ReadCoord();
  157.             self[origin][y] = ReadCoord();
  158.             self[origin][z] = ReadCoord();
  159.             setorigin(self, self[origin]);
  160.             if (self[count] & 128.0) {
  161.                 self[velocity][x] = ReadCoord();
  162.                 self[velocity][y] = ReadCoord();
  163.                 self[velocity][z] = ReadCoord();
  164.                 if (f & 16.0) self[gravity] = ReadCoord() else self[gravity] = (int) 0.0;
  165.                 self[move_origin] = self[origin];
  166.                 self[move_velocity] = self[velocity];
  167.             };
  168.             if (time == self[spawntime] || self[count] & 128.0 || f & 8.0) {
  169.                 self[trail_oldorigin] = self[origin];
  170.                 if (!self[count] & 128.0) InterpolateOrigin_Reset();
  171.             };
  172.             if (f & 32.0) {
  173.                 self[fade_time] = time + ReadByte() * ticrate;
  174.                 self[fade_rate] = (int) 1.0 / ReadByte() * ticrate;
  175.             } else {
  176.                 self[fade_time] = (int) 0.0;
  177.                 self[fade_rate] = (int) 0.0;
  178.             };
  179.             self[team] = ReadByte() - (int) 1.0;
  180.         };
  181.         if (f & (int) 2.0) {
  182.             self[cnt] = ReadByte();
  183.             self[silent] = self[cnt] & 128.0;
  184.             self[cnt] = self[cnt] & 127.0;
  185.             self[scale] = (int) 1.0;
  186.             self[traileffect] = (int) 0.0;
  187.             switch (self[cnt]) {
  188.                 {
  189.                     case PROJECTILE_ELECTRO:;
  190.                     setmodel(self, models/ebomb.mdl);
  191.                     self[traileffect] = particleeffectnum(TR_NEXUIZPLASMA);
  192.                     break;
  193.                     case PROJECTILE_ROCKET:;
  194.                     setmodel(self, models/rocket.md3);
  195.                     self[traileffect] = particleeffectnum(TR_ROCKET);
  196.                     self[scale] = (int) 2.0;
  197.                     break;
  198.                     case PROJECTILE_CRYLINK:;
  199.                     setmodel(self, models/plasmatrail.mdl);
  200.                     self[traileffect] = particleeffectnum(TR_CRYLINKPLASMA);
  201.                     break;
  202.                     case PROJECTILE_CRYLINK_BOUNCING:;
  203.                     setmodel(self, models/plasmatrail.mdl);
  204.                     self[traileffect] = particleeffectnum(TR_CRYLINKPLASMA);
  205.                     break;
  206.                     case PROJECTILE_ELECTRO_BEAM:;
  207.                     setmodel(self, models/elaser.mdl);
  208.                     self[traileffect] = particleeffectnum(TR_NEXUIZPLASMA);
  209.                     break;
  210.                     case PROJECTILE_GRENADE:;
  211.                     setmodel(self, models/grenademodel.md3);
  212.                     self[traileffect] = particleeffectnum(TR_GRENADE);
  213.                     break;
  214.                     case PROJECTILE_GRENADE_BOUNCING:;
  215.                     setmodel(self, models/grenademodel.md3);
  216.                     self[traileffect] = particleeffectnum(TR_GRENADE);
  217.                     break;
  218.                     case PROJECTILE_MINE:;
  219.                     setmodel(self, models/mine.md3);
  220.                     self[traileffect] = particleeffectnum(TR_GRENADE);
  221.                     break;
  222.                     case PROJECTILE_BLASTER:;
  223.                     setmodel(self, models/laser.mdl);
  224.                     self[traileffect] = particleeffectnum();
  225.                     break;
  226.                     case PROJECTILE_HLAC:;
  227.                     setmodel(self, models/hlac_bullet.md3);
  228.                     self[traileffect] = particleeffectnum();
  229.                     break;
  230.                     case PROJECTILE_PORTO_RED:;
  231.                     setmodel(self, models/grenademodel.md3);
  232.                     self[traileffect] = particleeffectnum(TR_WIZSPIKE);
  233.                     self[scale] = (int) 4.0;
  234.                     break;
  235.                     case PROJECTILE_PORTO_BLUE:;
  236.                     setmodel(self, models/grenademodel.md3);
  237.                     self[traileffect] = particleeffectnum(TR_WIZSPIKE);
  238.                     self[scale] = (int) 4.0;
  239.                     break;
  240.                     case PROJECTILE_HOOKBOMB:;
  241.                     setmodel(self, models/grenademodel.md3);
  242.                     self[traileffect] = particleeffectnum(TR_KNIGHTSPIKE);
  243.                     break;
  244.                     case PROJECTILE_HAGAR:;
  245.                     setmodel(self, models/hagarmissile.mdl);
  246.                     self[traileffect] = particleeffectnum(tr_hagar);
  247.                     self[scale] = 0.75;
  248.                     break;
  249.                     case PROJECTILE_HAGAR_BOUNCING:;
  250.                     setmodel(self, models/hagarmissile.mdl);
  251.                     self[traileffect] = particleeffectnum(tr_hagar);
  252.                     self[scale] = 0.75;
  253.                     break;
  254.                     case PROJECTILE_NAPALM_FOUNTAIN:;
  255.                     case PROJECTILE_FIREBALL:;
  256.                     self[model] = ;
  257.                     self[modelindex] = (int) 0.0;
  258.                     self[traileffect] = particleeffectnum(fireball);
  259.                     break;
  260.                     case PROJECTILE_FIREMINE:;
  261.                     self[model] = ;
  262.                     self[modelindex] = (int) 0.0;
  263.                     self[traileffect] = particleeffectnum(firemine);
  264.                     break;
  265.                     case PROJECTILE_TAG:;
  266.                     setmodel(self, models/laser.mdl);
  267.                     self[traileffect] = particleeffectnum(TR_ROCKET);
  268.                     break;
  269.                     case PROJECTILE_FLAC:;
  270.                     setmodel(self, models/hagarmissile.mdl);
  271.                     self[scale] = 0.4;
  272.                     self[traileffect] = particleeffectnum(TR_SEEKER);
  273.                     break;
  274.                     case PROJECTILE_SEEKER:;
  275.                     setmodel(self, models/tagrocket.md3);
  276.                     self[traileffect] = particleeffectnum(TR_SEEKER);
  277.                     break;
  278.                     case PROJECTILE_MAGE_SPIKE:;
  279.                     setmodel(self, models/ebomb.mdl);
  280.                     self[traileffect] = particleeffectnum(TR_VORESPIKE);
  281.                     break;
  282.                     case PROJECTILE_SHAMBLER_LIGHTNING:;
  283.                     setmodel(self, models/ebomb.mdl);
  284.                     self[traileffect] = particleeffectnum(TR_NEXUIZPLASMA);
  285.                     break;
  286.                     case PROJECTILE_RAPTORBOMB:;
  287.                     setmodel(self, models/vehicles/clusterbomb.md3);
  288.                     self[gravity] = (int) 1.0;
  289.                     self[avelocity] = Vector(x=0.0, y=0.0, z=180.0);
  290.                     self[traileffect] = particleeffectnum();
  291.                     break;
  292.                     case PROJECTILE_RAPTORBOMBLET:;
  293.                     setmodel(self, models/vehicles/bomblet.md3);
  294.                     self[gravity] = (int) 1.0;
  295.                     self[avelocity] = Vector(x=0.0, y=0.0, z=180.0);
  296.                     self[traileffect] = particleeffectnum();
  297.                     break;
  298.                     case PROJECTILE_RAPTORCANNON:;
  299.                     setmodel(self, models/plasmatrail.mdl);
  300.                     self[traileffect] = particleeffectnum(TR_CRYLINKPLASMA);
  301.                     break;
  302.                     case PROJECTILE_SPIDERROCKET:;
  303.                     setmodel(self, models/vehicles/rocket02.md3);
  304.                     self[traileffect] = particleeffectnum(spiderbot_rocket_thrust);
  305.                     break;
  306.                     case PROJECTILE_WAKIROCKET:;
  307.                     setmodel(self, models/vehicles/rocket01.md3);
  308.                     self[traileffect] = particleeffectnum(wakizashi_rocket_thrust);
  309.                     break;
  310.                     case PROJECTILE_WAKICANNON:;
  311.                     setmodel(self, models/laser.mdl);
  312.                     self[traileffect] = particleeffectnum();
  313.                     break;
  314.                     case PROJECTILE_BUMBLE_GUN:;
  315.                     setmodel(self, models/elaser.mdl);
  316.                     self[traileffect] = particleeffectnum(TR_NEXUIZPLASMA);
  317.                     break;
  318.                     case PROJECTILE_BUMBLE_BEAM:;
  319.                     setmodel(self, models/elaser.mdl);
  320.                     self[traileffect] = particleeffectnum(TR_NEXUIZPLASMA);
  321.                     break;
  322.                     case PROJECTILE_RPC:;
  323.                     setmodel(self, models/weapons/ok_rocket.md3);
  324.                     self[traileffect] = particleeffectnum(TR_ROCKET);
  325.                     break;
  326.                     default:;
  327.                     if (Nade_IDFromProjectile(self[cnt]) != (int) 0.0) {
  328.                         setmodel(self, models/weapons/v_ok_grenade.md3);
  329.                         self[traileffect] = particleeffectnum(Nade_TrailEffect(self[cnt], self[team]));
  330.                         break;
  331.                     };
  332.                     error(Received invalid CSQC projectile, can't work with this!);
  333.                    break;
  334.                };
  335.            };
  336.            self[mins] = Vector(x=0.0, y=0.0, z=0.0);
  337.            self[maxs] = Vector(x=0.0, y=0.0, z=0.0);
  338.            self[colormod] = Vector(x=0.0, y=0.0, z=0.0);
  339.            self[move_touch] = SUB_Stop;
  340.            self[move_movetype] = MOVETYPE_TOSS;
  341.            self[alphamod] = (int) 1.0;
  342.            switch (self[cnt]) {
  343.                {
  344.                    case PROJECTILE_ELECTRO:;
  345.                    loopsound(self, CH_SHOTS_SINGLE, weapons/electro_fly.wav, VOL_BASE, ATTEN_NORM);
  346.                    self[mins] = Vector(x=0.0, y=0.0, z=-4.0);
  347.                    self[maxs] = Vector(x=0.0, y=0.0, z=-4.0);
  348.                    self[move_movetype] = MOVETYPE_BOUNCE;
  349.                    self[move_touch] = func_null;
  350.                    self[move_bounce_factor] = g_balance_electro_secondary_bouncefactor;
  351.                    self[move_bounce_stopspeed] = g_balance_electro_secondary_bouncestop;
  352.                    break;
  353.                    case PROJECTILE_RPC:;
  354.                    case PROJECTILE_ROCKET:;
  355.                    loopsound(self, CH_SHOTS_SINGLE, weapons/rocket_fly.wav, VOL_BASE, ATTEN_NORM);
  356.                    self[mins] = Vector(x=-3.0, y=-3.0, z=-3.0);
  357.                    self[maxs] = Vector(x=3.0, y=3.0, z=3.0);
  358.                    break;
  359.                    case PROJECTILE_GRENADE:;
  360.                    self[mins] = Vector(x=-3.0, y=-3.0, z=-3.0);
  361.                    self[maxs] = Vector(x=3.0, y=3.0, z=3.0);
  362.                    break;
  363.                    case PROJECTILE_GRENADE_BOUNCING:;
  364.                    self[mins] = Vector(x=-3.0, y=-3.0, z=-3.0);
  365.                    self[maxs] = Vector(x=3.0, y=3.0, z=3.0);
  366.                    self[move_movetype] = MOVETYPE_BOUNCE;
  367.                    self[move_touch] = func_null;
  368.                    self[move_bounce_factor] = g_balance_mortar_bouncefactor;
  369.                    self[move_bounce_stopspeed] = g_balance_mortar_bouncestop;
  370.                    break;
  371.                    case PROJECTILE_SHAMBLER_LIGHTNING:;
  372.                    self[mins] = Vector(x=-8.0, y=-8.0, z=-8.0);
  373.                    self[maxs] = Vector(x=8.0, y=8.0, z=8.0);
  374.                    self[scale] = 2.5;
  375.                    self[avelocity] = randomvec() * (int) 720.0;
  376.                    break;
  377.                    case PROJECTILE_MINE:;
  378.                    self[mins] = Vector(x=-4.0, y=-4.0, z=-4.0);
  379.                    self[maxs] = Vector(x=4.0, y=4.0, z=4.0);
  380.                    break;
  381.                    case PROJECTILE_PORTO_RED:;
  382.                    self[colormod] = Vector(x=2.0, y=1.0, z=1.0);
  383.                    self[alphamod] = 0.5;
  384.                    self[move_movetype] = MOVETYPE_BOUNCE;
  385.                    self[move_touch] = func_null;
  386.                    break;
  387.                    case PROJECTILE_PORTO_BLUE:;
  388.                    self[colormod] = Vector(x=1.0, y=1.0, z=2.0);
  389.                    self[alphamod] = 0.5;
  390.                    self[move_movetype] = MOVETYPE_BOUNCE;
  391.                    self[move_touch] = func_null;
  392.                    break;
  393.                    case PROJECTILE_HAGAR_BOUNCING:;
  394.                    self[move_movetype] = MOVETYPE_BOUNCE;
  395.                    self[move_touch] = func_null;
  396.                    break;
  397.                    case PROJECTILE_CRYLINK_BOUNCING:;
  398.                    self[move_movetype] = MOVETYPE_BOUNCE;
  399.                    self[move_touch] = func_null;
  400.                    break;
  401.                    case PROJECTILE_NAPALM_FOUNTAIN:;
  402.                    case PROJECTILE_FIREBALL:;
  403.                    loopsound(self, CH_SHOTS_SINGLE, weapons/fireball_fly2.wav, VOL_BASE, ATTEN_NORM);
  404.                    self[mins] = Vector(x=-16.0, y=-16.0, z=-16.0);
  405.                    self[maxs] = Vector(x=16.0, y=16.0, z=16.0);
  406.                    break;
  407.                    case PROJECTILE_FIREMINE:;
  408.                    loopsound(self, CH_SHOTS_SINGLE, weapons/fireball_fly.wav, VOL_BASE, ATTEN_NORM);
  409.                    self[move_movetype] = MOVETYPE_BOUNCE;
  410.                    self[move_touch] = func_null;
  411.                    self[mins] = Vector(x=-4.0, y=-4.0, z=-4.0);
  412.                    self[maxs] = Vector(x=4.0, y=4.0, z=4.0);
  413.                    break;
  414.                    case PROJECTILE_TAG:;
  415.                    self[mins] = Vector(x=-2.0, y=-2.0, z=-2.0);
  416.                    self[maxs] = Vector(x=2.0, y=2.0, z=2.0);
  417.                    break;
  418.                    case PROJECTILE_FLAC:;
  419.                    self[mins] = Vector(x=-2.0, y=-2.0, z=-2.0);
  420.                    self[maxs] = Vector(x=2.0, y=2.0, z=2.0);
  421.                    break;
  422.                    case PROJECTILE_SEEKER:;
  423.                    loopsound(self, CH_SHOTS_SINGLE, weapons/tag_rocket_fly.wav, VOL_BASE, ATTEN_NORM);
  424.                    self[mins] = Vector(x=-4.0, y=-4.0, z=-4.0);
  425.                    self[maxs] = Vector(x=4.0, y=4.0, z=4.0);
  426.                    break;
  427.                    case PROJECTILE_RAPTORBOMB:;
  428.                    self[mins] = Vector(x=-3.0, y=-3.0, z=-3.0);
  429.                    self[maxs] = Vector(x=3.0, y=3.0, z=3.0);
  430.                    break;
  431.                    case PROJECTILE_RAPTORBOMBLET:;
  432.                    break;
  433.                    case PROJECTILE_RAPTORCANNON:;
  434.                    break;
  435.                    case PROJECTILE_SPIDERROCKET:;
  436.                    loopsound(self, CH_SHOTS_SINGLE, weapons/tag_rocket_fly.wav, VOL_BASE, ATTEN_NORM);
  437.                    break;
  438.                    case PROJECTILE_WAKIROCKET:;
  439.                    loopsound(self, CH_SHOTS_SINGLE, weapons/tag_rocket_fly.wav, VOL_BASE, ATTEN_NORM);
  440.                    break;
  441.                    default:;
  442.                    break;
  443.                };
  444.            };
  445.            if (Nade_IDFromProjectile(self[cnt]) != (int) 0.0) {
  446.                int nade_type;
  447.                int nade_type = Nade_IDFromProjectile(self[cnt]);
  448.                self[mins] = Vector(x=-16.0, y=-16.0, z=-16.0);
  449.                self[maxs] = Vector(x=16.0, y=16.0, z=16.0);
  450.                self[colormod] = Nade_Color(nade_type);
  451.                self[move_movetype] = MOVETYPE_BOUNCE;
  452.                self[move_touch] = func_null;
  453.                self[scale] = 1.5;
  454.                self[avelocity] = randomvec() * (int) 720.0;
  455.                if (nade_type == NADE_TYPE_TRANSLOCATE || nade_type == NADE_TYPE_SPAWN) self[dphitcontentsmask] = DPCONTENTS_SOLID | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP else self[dphitcontentsmask] = DPCONTENTS_SOLID | DPCONTENTS_BODY;
  456.            };
  457.            setsize(self, self[mins], self[maxs]);
  458.        };
  459.        if (self[gravity]) {
  460.            if (self[move_movetype] == MOVETYPE_FLY) self[move_movetype] = MOVETYPE_TOSS;
  461.            if (self[move_movetype] == MOVETYPE_BOUNCEMISSILE) self[move_movetype] = MOVETYPE_BOUNCE;
  462.        } else {
  463.            if (self[move_movetype] == MOVETYPE_TOSS) self[move_movetype] = MOVETYPE_FLY;
  464.            if (self[move_movetype] == MOVETYPE_BOUNCE) self[move_movetype] = MOVETYPE_BOUNCEMISSILE;
  465.        };
  466.        if (!self[count] & 128.0) InterpolateOrigin_Note();
  467.        self[draw] = Projectile_Draw;
  468.        self[entremove] = Ent_RemoveProjectile;
  469.    };
  470.    void Projectile_Precache() {
  471.        precache_model(models/ebomb.mdl);
  472.        precache_model(models/elaser.mdl);
  473.        precache_model(models/grenademodel.md3);
  474.        precache_model(models/mine.md3);
  475.        precache_model(models/hagarmissile.mdl);
  476.        precache_model(models/hlac_bullet.md3);
  477.        precache_model(models/laser.mdl);
  478.        precache_model(models/plasmatrail.mdl);
  479.        precache_model(models/rocket.md3);
  480.        precache_model(models/tagrocket.md3);
  481.        precache_model(models/tracer.mdl);
  482.        precache_model(models/sphere/sphere.md3);
  483.        precache_model(models/weapons/v_ok_grenade.md3);
  484.        precache_model(models/weapons/ok_rocket.md3);
  485.        precache_sound(weapons/electro_fly.wav);
  486.        precache_sound(weapons/rocket_fly.wav);
  487.        precache_sound(weapons/fireball_fly.wav);
  488.        precache_sound(weapons/fireball_fly2.wav);
  489.        precache_sound(weapons/tag_rocket_fly.wav);
  490.    }
  491. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement