1 #include "bumblebee_weapons.qh"
4 REGISTER_NET_LINKED(ENT_CLIENT_BUMBLE_RAYGUN)
9 void bumblebee_fire_cannon(entity this, entity _gun, string _tagname, entity _owner)
11 vector v = gettaginfo(_gun, gettagindex(_gun, _tagname));
12 vehicles_projectile(this, EFFECT_BIGPLASMA_MUZZLEFLASH.eent_eff_name, SND_VEH_BUMBLEBEE_FIRE,
13 v, normalize(v_forward + randomvec() * autocvar_g_vehicle_bumblebee_cannon_spread) * autocvar_g_vehicle_bumblebee_cannon_speed,
14 autocvar_g_vehicle_bumblebee_cannon_damage, autocvar_g_vehicle_bumblebee_cannon_radius, autocvar_g_vehicle_bumblebee_cannon_force, 0,
15 DEATH_VH_BUMB_GUN.m_id, PROJECTILE_BUMBLE_GUN, 0, true, true, _owner);
18 bool bumble_raygun_send(entity this, entity to, float sf)
20 WriteHeader(MSG_ENTITY, ENT_CLIENT_BUMBLE_RAYGUN);
22 WriteByte(MSG_ENTITY, sf);
25 WriteByte(MSG_ENTITY, etof(this.realowner));
26 WriteByte(MSG_ENTITY, this.realowner.team);
27 WriteByte(MSG_ENTITY, this.cnt);
32 WriteVector(MSG_ENTITY, this.hook_start);
37 WriteVector(MSG_ENTITY, this.hook_end);
47 void bumble_raygun_draw(entity this);
49 .vector bumble_origin;
51 NET_HANDLE(ENT_CLIENT_BUMBLE_RAYGUN, bool isnew)
57 this.cnt = ReadByte();
58 this.team = ReadByte();
59 this.count = ReadByte();
62 this.colormod = '1 0 0';
64 this.colormod = '0 1 0';
66 this.traileffect = EFFECT_BUMBLEBEE_HEAL_MUZZLEFLASH.m_id;
67 this.lip = particleeffectnum(EFFECT_BUMBLEBEE_HEAL_IMPACT);
69 this.draw = bumble_raygun_draw;
70 if (isnew) IL_PUSH(g_drawables, this);
76 this.origin = ReadVector();
77 setorigin(this, this.origin);
82 this.bumble_origin = ReadVector();
87 .float bumble_raygun_nextdraw;
88 void bumble_raygun_draw(entity this)
92 vector _vtmp1, _vtmp2;
94 _len = vlen(this.origin - this.bumble_origin);
95 _dir = normalize(this.bumble_origin - this.origin);
97 if(this.bumble_raygun_nextdraw < time)
99 boxparticles(particleeffectnum(Effects_from(this.traileffect)), this, this.origin, this.origin + _dir * -64, _dir * -_len , _dir * -_len, 1, PARTICLES_USEALPHA);
100 boxparticles(this.lip, this, this.bumble_origin, this.bumble_origin + _dir * -64, _dir * -200 , _dir * -200, 1, PARTICLES_USEALPHA);
101 this.bumble_raygun_nextdraw = time + 0.1;
105 for(i = -0.1; i < 0.2; i += 0.1)
107 df = DRAWFLAG_NORMAL; //((random() < 0.5) ? DRAWFLAG_ADDITIVE : DRAWFLAG_SCREEN);
108 sz = 5 + random() * 5;
109 al = 0.25 + random() * 0.5;
110 _vtmp1 = this.origin + _dir * _len * (0.25 + i);
111 _vtmp1 += (randomvec() * (_len * 0.2) * (frametime * 2)); //this.raygun_l1;
112 Draw_CylindricLine(this.origin, _vtmp1, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin);
114 _vtmp2 = this.origin + _dir * _len * (0.5 + i);
115 _vtmp2 += (randomvec() * (_len * 0.2) * (frametime * 5)); //this.raygun_l2;
116 Draw_CylindricLine(_vtmp1, _vtmp2, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin);
118 _vtmp1 = this.origin + _dir * _len * (0.75 + i);
119 _vtmp1 += randomvec() * (_len * 0.2) * (frametime * 10); //this.raygun_l3;
120 Draw_CylindricLine(_vtmp2, _vtmp1, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin);
122 Draw_CylindricLine(_vtmp1, this.bumble_origin + randomvec() * 32, sz, "gfx/colors/white.tga", 1, 1, this.colormod, al, df, view_origin);