//lightradiusfade 50
//lightcolor 1 0.9 0.7
//lightshadow 1
+
+// heal ray muzzleflash
+
+effect healray_muzzleflash
+countabsolute 1
+type smoke
+color 0x283880 0x283880 // 0x202020 0x404040
+tex 65 65
+size 20 20
+alpha 256 256 512
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+sizeincrease -10
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 1.5 3 6
+
+effect healray_muzzleflash
+count 22
+type spark
+tex 71 73
+color 0xD9FDFF 0x00f0ff
+size 1 15
+sizeincrease 3
+alpha 50 150 1924
+originjitter 1 1 1
+velocityjitter 150 150 150
+velocitymultiplier 0.4
+airfriction 5
+stretchfactor 3.9
+
+effect healray_muzzleflash
+count 4
+type spark
+tex 70 70
+color 0xD9FDFF 0x00f0ff
+size 1 1
+alpha 110 228 4024
+originjitter 1 1 1
+velocityjitter 650 650 650
+velocitymultiplier 1.1
+stretchfactor 0.2
+
+
+
+//healray impact
+
+effect healray_impact
+countabsolute 1
+type decal
+tex 59 59
+size 32 32
+alpha 256 256 0
+color 0xd800ff 0xd800ff
+originjitter 17 17 17
+lightradius 125
+lightradiusfade 450
+lightcolor 0 4.375 0
+// shockwave
+effect healray_impact
+type smoke
+countabsolute 1
+tex 33 33
+size 32 32
+sizeincrease 1400
+color 0x00ff00 0x84c52f
+alpha 40 40 350
+velocitymultiplier 44
+// cloud of bouncing sparks
+effect healray_impact
+count 30
+type spark
+tex 70 70
+color 0x00ff00 0x84c52f
+size 1 2
+alpha 156 300 1024
+gravity 2
+airfriction 6
+originjitter 1 1 1
+velocityjitter 1112 1112 1112
+// inner cloud of smoke
+effect healray_impact
+count 15
+type smoke
+color 0x00ff00 0x84c52f
+tex 40 40
+size 2 3
+alpha 200 456 512
+airfriction 3
+gravity -2
+velocityjitter 120 120 420
+rotate -180 180 -90 90
+
+
+
+
+// big plasma muzzle flash
+
+effect bigplasma_muzzleflash
+countabsolute 1
+type smoke
+color 0x283880 0x283880 // 0x202020 0x404040
+tex 65 65
+size 50 50
+alpha 256 256 812
+originjitter 1.5 1.5 1.5
+velocityjitter 6 6 6
+sizeincrease -10
+velocitymultiplier 0.01
+lightradius 200
+lightradiusfade 2000
+lightcolor 1.5 3 6
+
+effect bigplasma_muzzleflash
+countabsolute 1
+type smoke
+color 0x00f0ff 0x00f0ff
+tex 74 74
+size 20 20
+alpha 56 56 1112
+sizeincrease 300
+
+effect bigplasma_muzzleflash
+count 14
+type spark
+tex 51 55
+color 0xD9FDFF 0x00f0ff
+size 5 10
+sizeincrease 135
+alpha 50 150 1924
+originjitter 1 1 1
+velocityjitter 350 350 350
+velocitymultiplier 0.4
+airfriction 5
+stretchfactor 1.9
+
+effect bigplasma_muzzleflash
+count 4
+type spark
+tex 70 70
+color 0xD9FDFF 0x00f0ff
+size 20 20
+alpha 110 228 4024
+originjitter 1 1 1
+velocityjitter 650 650 650
+velocitymultiplier 1.1
+stretchfactor 0.2
+
+
+// big plasma impact
+
+effect bigplasma_impact
+countabsolute 1
+type decal
+tex 59 59
+size 32 32
+alpha 256 256 0
+originjitter 17 17 17
+lightradius 125
+lightradiusfade 450
+lightcolor 3.125 4.375 10
+// shockwave
+effect bigplasma_impact
+type smoke
+countabsolute 1
+tex 33 33
+size 32 32
+sizeincrease 1400
+color 0x80C0FF 0x80C0FF
+alpha 40 40 350
+velocitymultiplier 44
+// cloud of bouncing sparks
+effect bigplasma_impact
+count 30
+type spark
+tex 70 70
+color 0x629dff 0x0018ff
+size 1 2
+alpha 156 300 1024
+gravity 2
+airfriction 6
+originjitter 1 1 1
+velocityjitter 1512 1512 1512
+// inner cloud of smoke
+effect bigplasma_impact
+count 15
+type smoke
+color 0x629dff 0x0018ff
+tex 48 55
+size 20 24
+sizeincrease 555
+alpha 200 456 1512
+airfriction 30
+originjitter 20 20 20
+velocityjitter 320 320 320
+rotate -180 180 -9 9
+// smoke
+effect bigplasma_impact
+type smoke
+count 16
+blend alpha
+tex 0 7
+size 60 30
+color 0x222222 0x000000
+alpha 128 328 390
+rotate -180 180 2 -2
+velocityjitter 100 100 200
+velocityoffset 0 0 180
+originjitter 80 80 10
+sizeincrease 30
+airfriction 0.04
+gravity 0.4
+// smoke in the middle
+effect bigplasma_impact
+type alphastatic
+count 10
+tex 0 7
+size 60 70
+color 0x222222 0x000000
+alpha 128 328 310
+rotate -180 180 20 -20
+velocityjitter 10 10 10
+originjitter 80 80 80
+sizeincrease -10
+airfriction 0.04
+gravity -0.2
\ No newline at end of file
sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_MIN);
pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
break;
-
+
case DEATH_WAKIGUN:
sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_NORM);
pointparticles(particleeffectnum("wakizashi_gun_impact"), self.origin, w_backoff * 1000, 1);
sound(self, CH_SHOTS, "weapons/laserimpact.wav", VOL_BASE, ATTN_MIN);
pointparticles(particleeffectnum("explosion_big"), self.origin, w_backoff * 1000, 1);
break;
+ case DEATH_BUMB_GUN:
+ sound(self, CH_SHOTS, "weapons/fireball_impact2.wav", VOL_BASE, ATTN_NORM);
+ pointparticles(particleeffectnum("bigplasma_impact"), self.origin, w_backoff * 1000, 1);
+ break;
}
}
HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC);
if(alsoprint)
print (sprintf(_("^1%s^1 was bolted down by %s\n"), s2, s1));
+ } else if(type == DEATH_BUMB_GUN) {
+ HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC);
+ if(alsoprint)
+ print (sprintf(_("^1%s^1 saw %s's preddy lights.\n"), s2, s1));
} else if(type == DEATH_WAKIROCKET) {
HUD_KillNotify_Push(s1, s2, 1, DEATH_GENERIC);
if(alsoprint)
case PROJECTILE_SPIDERROCKET: setmodel(self, "models/vehicles/rocket02.md3"); self.traileffect = particleeffectnum("spiderbot_rocket_thrust"); break;
case PROJECTILE_WAKIROCKET: setmodel(self, "models/vehicles/rocket01.md3"); self.traileffect = particleeffectnum("wakizashi_rocket_thrust"); break;
case PROJECTILE_WAKICANNON: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum(""); break;
+
+ case PROJECTILE_BUMBLE_GUN: setmodel(self, "models/elaser.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break;
+ case PROJECTILE_BUMBLE_BEAM: setmodel(self, "models/elaser.mdl");self.traileffect = particleeffectnum("TR_NEXUIZPLASMA"); break;
+
default:
error("Received invalid CSQC projectile, can't work with this!");
break;
break;
case PROJECTILE_WAKIROCKET:
loopsound(self, CH_SHOTS_SINGLE, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM);
- break;
+ break;
+ /*
case PROJECTILE_WAKICANNON:
break;
+ case PROJECTILE_BUMBLE_GUN:
+ // only new engines support sound moving with object
+ loopsound(self, CH_SHOTS_SINGLE, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
+ self.mins = '0 0 -4';
+ self.maxs = '0 0 -4';
+ self.move_movetype = MOVETYPE_BOUNCE;
+ self.move_touch = SUB_Null;
+ self.move_bounce_factor = g_balance_electro_secondary_bouncefactor;
+ self.move_bounce_stopspeed = g_balance_electro_secondary_bouncestop;
+ break;
+ */
default:
break;
}
.float axh_drawflag;
.float axh_scale;
+#define spider_ico "gfx/vehicles/sbot.tga"
+#define spider_rkt "gfx/vehicles/sbot_rpods.tga"
+#define spider_mgun "gfx/vehicles/sbot_mguns.tga"
+#define spider_xhair "gfx/vehicles/axh-special1.tga"
+
+#define waki_ico "gfx/vehicles/waki.tga"
+#define waki_eng "gfx/vehicles/waki_e.tga"
+#define waki_gun "gfx/vehicles/waki_guns.tga"
+#define waki_rkt "gfx/vehicles/waki_rockets.tga"
+#define waki_xhair "gfx/vehicles/axh-special1.tga"
+
+float alarm1time;
+float alarm2time;
+
void AuxiliaryXhair_Draw2D()
{
vector loc, psize;
void CSQC_BUMBLE_HUD()
{
+/*
+ drawpic(hudloc, waki_s, picsize, '1 1 1', shield, DRAWFLAG_NORMAL);
+ drawpic(hudloc, waki_b, picsize, '0 1 0' * health + '1 0 0' * (1 - health), 1, DRAWFLAG_NORMAL);
+ drawpic(hudloc, waki_r, picsize, '1 1 1' * reload1 + '1 0 0' * (1 - reload1), 1, DRAWFLAG_NORMAL);
+ drawpic(hudloc, waki_e, picsize, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
+*/
+ if(autocvar_r_letterbox)
+ return;
+
+ vector picsize, hudloc, pic2size, picloc;
+
+ // Fetch health & ammo stats
+ HUD_GETSTATS
+
+ picsize = draw_getimagesize(hud_bg) * autocvar_cl_vehicles_hudscale;
+ hudloc_y = vid_conheight - picsize_y;
+ hudloc_x = vid_conwidth * 0.5 - picsize_x * 0.5;
+
+ drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
+
+ shield *= 0.01;
+ vh_health *= 0.01;
+ energy *= 0.01;
+ reload1 *= 0.01;
+
+ pic2size = draw_getimagesize(spider_ico) * (autocvar_cl_vehicles_hudscale * 0.8);
+ picloc = picsize * 0.5 - pic2size * 0.5;
+ if(vh_health < 0.25)
+ drawpic(hudloc + picloc, waki_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+ else
+ drawpic(hudloc + picloc, waki_ico, pic2size, '1 1 1' * vh_health + '1 0 0' * (1 - vh_health), 1, DRAWFLAG_NORMAL);
+ drawpic(hudloc + picloc, waki_eng, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
+ drawpic(hudloc + picloc, waki_gun, pic2size, '1 1 1' * energy + '1 0 0' * (1 - energy), 1, DRAWFLAG_NORMAL);
+ drawpic(hudloc + picloc, waki_rkt, pic2size, '1 1 1' * reload1 + '1 0 0' * (1 - reload1), 1, DRAWFLAG_NORMAL);
+ drawpic(hudloc + picloc, hud_sh, pic2size, '1 1 1', shield, DRAWFLAG_NORMAL);
+
+// Health bar
+ picsize = draw_getimagesize(hud_hp_bar) * autocvar_cl_vehicles_hudscale;
+ picloc = '69 69 0' * autocvar_cl_vehicles_hudscale;
+ drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - vh_health)), 0, vid_conwidth, vid_conheight);
+ drawpic(hudloc + picloc, hud_hp_bar, picsize, '1 1 1', 1 , DRAWFLAG_NORMAL);
+ drawresetcliparea();
+// .. and icon
+ picsize = draw_getimagesize(hud_hp_ico) * autocvar_cl_vehicles_hudscale;
+ picloc = '37 65 0' * autocvar_cl_vehicles_hudscale;
+ if(vh_health < 0.25)
+ {
+ if(alarm1time < time)
+ {
+ alarm1time = time + 2;
+ sound(self, CH_PAIN_SINGLE, "vehicles/alarm.wav", VOL_BASEVOICE, ATTN_NONE);
+ }
+
+ drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+ }
+ else
+ {
+ drawpic(hudloc + picloc, hud_hp_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+ if(alarm1time)
+ {
+ sound(self, CH_PAIN_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
+ alarm1time = 0;
+ }
+ }
+
+
+// Shield bar
+ picsize = draw_getimagesize(hud_sh_bar) * autocvar_cl_vehicles_hudscale;
+ picloc = '69 140 0' * autocvar_cl_vehicles_hudscale;
+ drawsetcliparea(hudloc_x + picloc_x + (picsize_x * (1 - shield)), 0, vid_conwidth, vid_conheight);
+ drawpic(hudloc + picloc, hud_sh_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+ drawresetcliparea();
+// .. and icon
+ picloc = '40 136 0' * autocvar_cl_vehicles_hudscale;
+ picsize = draw_getimagesize(hud_sh_ico) * autocvar_cl_vehicles_hudscale;
+ if(shield < 0.25)
+ {
+ if(alarm2time < time)
+ {
+ alarm2time = time + 1;
+ sound(self, CH_TRIGGER_SINGLE, "vehicles/alarm_shield.wav", VOL_BASEVOICE, ATTN_NONE);
+ }
+ drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+ }
+ else
+ {
+ drawpic(hudloc + picloc, hud_sh_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+ if(alarm2time)
+ {
+ sound(self, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_BASEVOICE, ATTN_NONE);
+ alarm2time = 0;
+ }
+ }
+
+// Gun bar
+ picsize = draw_getimagesize(hud_ammo1_bar) * autocvar_cl_vehicles_hudscale;
+ picloc = '450 69 0' * autocvar_cl_vehicles_hudscale;
+ drawsetcliparea(hudloc_x + picloc_x, picloc_y, picsize_x * energy, vid_conheight);
+ drawpic(hudloc + picloc, hud_ammo1_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+ drawresetcliparea();
+// .. and icon
+ picsize = draw_getimagesize(hud_ammo1_ico) * autocvar_cl_vehicles_hudscale;
+ picloc = '664 60 0' * autocvar_cl_vehicles_hudscale;
+ if(energy < 0.2)
+ drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+ else
+ drawpic(hudloc + picloc, hud_ammo1_ico, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+// Bomb bar
+ picsize = draw_getimagesize(hud_ammo2_bar) * autocvar_cl_vehicles_hudscale;
+ picloc = '450 140 0' * autocvar_cl_vehicles_hudscale;
+ drawsetcliparea(hudloc_x + picloc_x, hudloc_y + picloc_y, picsize_x * reload1, vid_conheight);
+ drawpic(hudloc + picloc, hud_ammo2_bar, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+ drawresetcliparea();
+// .. and icon
+ pic2size = draw_getimagesize(hud_ammo2_ico) * autocvar_cl_vehicles_hudscale;
+ picloc = '664 130 0' * autocvar_cl_vehicles_hudscale;
+ if(reload1 != 1)
+ drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 0 0' + '0 1 1' * sin(time * 8), 1, DRAWFLAG_NORMAL);
+ else
+ drawpic(hudloc + picloc, hud_ammo2_ico, pic2size, '1 1 1', 1, DRAWFLAG_NORMAL);
+
+ if (scoreboard_showscores)
+ HUD_DrawScoreboard();
+ else
+ {
+ picsize = draw_getimagesize(waki_xhair);
+ picsize_x *= 0.5;
+ picsize_y *= 0.5;
+
+
+ drawpic('0.5 0 0' * (vid_conwidth - picsize_x) + '0 0.5 0' * (vid_conheight - picsize_y), waki_xhair, picsize, '1 1 1', 1, DRAWFLAG_NORMAL);
+ }
}
-#define spider_ico "gfx/vehicles/sbot.tga"
-#define spider_rkt "gfx/vehicles/sbot_rpods.tga"
-#define spider_mgun "gfx/vehicles/sbot_mguns.tga"
-#define spider_xhair "gfx/vehicles/axh-special1.tga"
-float alarm1time;
-float alarm2time;
+
void CSQC_SPIDER_HUD()
{
drawpic(hudloc, hud_bg, picsize, '1 1 1', autocvar_cl_vehicles_hudalpha, DRAWFLAG_NORMAL);
- //drawstring(hudloc + '145 19 0', strcat(ftos(vh_health), "%"),'15 15 0','0 1 0', 1, DRAWFLAG_NORMAL);
- //drawstring(hudloc + '175 34 0', strcat(ftos(shield), "%"),'15 15 0','0 0 1', 1, DRAWFLAG_NORMAL);
- //drawstring(hudloc + '136 102 0', strcat(ftos(ammo1), "%"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
- //drawstring(hudloc + '179 69 0', strcat(ftos(9 - ammo2), " / 8"),'14 14 0','1 1 0', 1, DRAWFLAG_NORMAL);
-
ammo1 *= 0.01;
shield *= 0.01;
vh_health *= 0.01;
}
}
-#define waki_ico "gfx/vehicles/waki.tga"
-#define waki_eng "gfx/vehicles/waki_e.tga"
-#define waki_gun "gfx/vehicles/waki_guns.tga"
-#define waki_rkt "gfx/vehicles/waki_rockets.tga"
-#define waki_xhair "gfx/vehicles/axh-special1.tga"
void CSQC_WAKIZASHI_HUD()
{
/*
float PROJECTILE_WAKIROCKET = 28;
float PROJECTILE_WAKICANNON = 29;
+float PROJECTILE_BUMBLE_GUN = 30;
+float PROJECTILE_BUMBLE_BEAM = 31;
+
float SPECIES_HUMAN = 0;
float SPECIES_ROBOT_SOLID = 1;
float SPECIES_ALIEN = 2;
float DEATH_RAPTOR_CANNON = 10037;
float DEATH_RAPTOR_BOMB = 10038;
float DEATH_RAPTOR_BOMB_SPLIT = 10039;
-float DEATH_RAPTOR_DEATH = 10040;
-float DEATH_VHLAST = 10040;
+float DEATH_RAPTOR_DEATH = 10040;
+float DEATH_BUMB_GUN = 10041;
+float DEATH_BUMB_RAY = 10042;
+float DEATH_BUMB_RAY_HEAL = 10043;
+float DEATH_BUMB_DEATH = 10044;
+float DEATH_VHLAST = 10044;
#define DEATH_ISVEHICLE(t) ((t) >= DEATH_VHFIRST && (t) <= DEATH_VHLAST)
float DEATH_GENERIC = 10050;
r = self.origin;
r_z = r_z;
- push_angle_x = (a_z - c_z) * 45;
- push_angle_x += (b_z - d_z) * 45;
+ push_angle_x = (a_z - c_z) * 90;
+ push_angle_x += (b_z - d_z) * 90;
- push_angle_z = (b_z - a_z) * 45;
- push_angle_z += (d_z - c_z) * 45;
+ push_angle_z = (b_z - a_z) * 90;
+ push_angle_z += (d_z - c_z) * 90;
//self.angles_x += push_angle_x * 0.95;
//self.angles_z += push_angle_z * 0.95;
#define RAPTOR_MAX '80 80 70'
float autocvar_g_vehicle_raptor_respawntime;
+float autocvar_g_vehicle_raptor_takeofftime;
float autocvar_g_vehicle_raptor_movestyle;
float autocvar_g_vehicle_raptor_turnspeed;
// Takeoff sequense
if(raptor.frame < 25)
{
- raptor.frame += 0.25;
+ raptor.frame += 25 / (autocvar_g_vehicle_raptor_takeofftime / sys_frametime);
raptor.velocity_z = min(raptor.velocity_z * 1.5, 256);
self.bomb1.gun1.avelocity_y = 90 + ((raptor.frame / 25) * 25000);
self.bomb1.gun2.avelocity_y = -self.bomb1.gun1.avelocity_y;
float raptor_frame()
{
entity player, raptor;
- float ftmp = 0, ftmp2;
+ float ftmp = 0;
vector df;
if(intermission_running)
}
}
- // Aim the gunz
- ftmp2 = autocvar_g_vehicle_raptor_cannon_turnspeed * frametime;
- ftmp = -ftmp2;
-
- // Gun1
- df = gettaginfo(raptor.gun1, gettagindex(raptor.gun1, "fire1"));
- //ad = df;
- //vf = v_forward;
- df = vectoangles(normalize(trace_endpos - df)); // Find the direction & angle
- df = AnglesTransform_ToAngles(AnglesTransform_LeftDivide(AnglesTransform_FromAngles(raptor.angles), AnglesTransform_FromAngles(df))) - raptor.gun1.angles;
- df = shortangle_vxy(df, raptor.gun1.angles);
-
- // Bind to aimspeed
- df_x = bound(ftmp, df_x, ftmp2);
- df_y = bound(ftmp, df_y, ftmp2);
- // Bind to limts
- raptor.gun1.angles_x = bound(-autocvar_g_vehicle_raptor_cannon_pitchlimit_down, df_x + raptor.gun1.angles_x, autocvar_g_vehicle_raptor_cannon_pitchlimit_up);
- raptor.gun1.angles_y = bound(-autocvar_g_vehicle_raptor_cannon_turnlimit, df_y + raptor.gun1.angles_y, autocvar_g_vehicle_raptor_cannon_turnlimit);
-
- // Gun2
- df = gettaginfo(raptor.gun2, gettagindex(raptor.gun2, "fire1"));
- //ad += df;
- //vf += v_forward;
- df = vectoangles(normalize(trace_endpos - df)); // Find the direction & angle
- df = AnglesTransform_ToAngles(AnglesTransform_LeftDivide(AnglesTransform_FromAngles(raptor.angles), AnglesTransform_FromAngles(df))) - raptor.gun2.angles;
- df = shortangle_vxy(df, raptor.gun2.angles);
-
- // Bind to aimspeed
- df_x = bound(ftmp, df_x, ftmp2);
- df_y = bound(ftmp, df_y, ftmp2);
- // Bind to limts
- raptor.gun2.angles_x = bound(-autocvar_g_vehicle_raptor_cannon_pitchlimit_down, df_x + raptor.gun2.angles_x, autocvar_g_vehicle_raptor_cannon_pitchlimit_up);
- raptor.gun2.angles_y = bound(-autocvar_g_vehicle_raptor_cannon_turnlimit, df_y + raptor.gun2.angles_y, autocvar_g_vehicle_raptor_cannon_turnlimit);
+
+ vehicle_aimturret(raptor, trace_endpos, raptor.gun1, "fire1",
+ autocvar_g_vehicle_raptor_cannon_pitchlimit_down * -1, autocvar_g_vehicle_raptor_cannon_pitchlimit_up,
+ autocvar_g_vehicle_raptor_cannon_turnlimit * -1, autocvar_g_vehicle_raptor_cannon_turnlimit, autocvar_g_vehicle_raptor_cannon_turnspeed);
+
+ vehicle_aimturret(raptor, trace_endpos, raptor.gun2, "fire1",
+ autocvar_g_vehicle_raptor_cannon_pitchlimit_down * -1, autocvar_g_vehicle_raptor_cannon_pitchlimit_up,
+ autocvar_g_vehicle_raptor_cannon_turnlimit * -1, autocvar_g_vehicle_raptor_cannon_turnlimit, autocvar_g_vehicle_raptor_cannon_turnspeed);
/*
ad = ad * 0.5;
setattachment(self.tur_head, self,"root");
- // FIXME Guns mounts to angled bones
+ // FIXMODEL Guns mounts to angled bones
self.bomb1.angles = self.angles;
self.angles = '0 0 0';
// This messes up gun-aim, so work arround it.
float autocvar_g_vehicle_spiderbot_speed_strafe;
float autocvar_g_vehicle_spiderbot_speed_walk;
float autocvar_g_vehicle_spiderbot_turnspeed;
+float autocvar_g_vehicle_spiderbot_turnspeed_strafe;
float autocvar_g_vehicle_spiderbot_movement_inertia;
float autocvar_g_vehicle_spiderbot_springlength;
float autocvar_g_vehicle_spiderbot_springup;
float autocvar_g_vehicle_spiderbot_springblend;
+float autocvar_g_vehicle_spiderbot_tiltlimit;
float autocvar_g_vehicle_spiderbot_head_pitchlimit_down;
float autocvar_g_vehicle_spiderbot_head_pitchlimit_up;
-float autocvar_g_vehicle_spiderbot_head_pitchspeed;
float autocvar_g_vehicle_spiderbot_head_turnlimit;
float autocvar_g_vehicle_spiderbot_head_turnspeed;
float autocvar_g_vehicle_spiderbot_minigun_ammo_max;
float autocvar_g_vehicle_spiderbot_minigun_ammo_regen;
float autocvar_g_vehicle_spiderbot_minigun_ammo_regen_pause;
+float autocvar_g_vehicle_spiderbot_minigun_force;
+float autocvar_g_vehicle_spiderbot_minigun_speed;
+float autocvar_g_vehicle_spiderbot_minigun_bulletconstant;
float autocvar_g_vehicle_spiderbot_rocket_damage;
float autocvar_g_vehicle_spiderbot_rocket_force;
player.BUTTON_CROUCH = 0;
player.switchweapon = 0;
+ if(player.impulse == 12)
+ {
+ dprint("WOOOOOOOOOOOtotototototOOOOOOOOOOOOttt\n");
+ }
+
+
#if 1 // 0 to enable per-gun impact aux crosshairs
// Avarage gun impact point's -> aux cross
ad = gettaginfo(spider.tur_head, gettagindex(spider.tur_head, "tag_hardpoint01"));
//UpdateAuxiliaryXhair(player, trace_endpos, ('1 0 0' * player.vehicle_reload2) + ('0 1 0' * (1 - player.vehicle_reload2)), 2);
// Rotate head
- ftmp = autocvar_g_vehicle_spiderbot_head_turnspeed * sys_frametime;
+ ftmp = autocvar_g_vehicle_spiderbot_head_turnspeed * sys_frametime;
ad_y = bound(-ftmp, ad_y, ftmp);
spider.tur_head.angles_y = bound(autocvar_g_vehicle_spiderbot_head_turnlimit * -1, spider.tur_head.angles_y + ad_y, autocvar_g_vehicle_spiderbot_head_turnlimit);
// Pitch head
- ftmp = autocvar_g_vehicle_spiderbot_head_pitchspeed * sys_frametime;
ad_x = bound(ftmp * -1, ad_x, ftmp);
spider.tur_head.angles_x = bound(autocvar_g_vehicle_spiderbot_head_pitchlimit_down, spider.tur_head.angles_x + ad_x, autocvar_g_vehicle_spiderbot_head_pitchlimit_up);
- // Turn Body
- ftmp = autocvar_g_vehicle_spiderbot_turnspeed * sys_frametime;
- ftmp = bound(-ftmp, spider.tur_head.angles_y, ftmp);
//fixedmakevectors(spider.angles);
makevectors(spider.angles + '-2 0 0' * spider.angles_x);
}
else
{
+ // Turn Body
+ if(player.movement_x == 0 && player.movement_y != 0)
+ ftmp = autocvar_g_vehicle_spiderbot_turnspeed_strafe * sys_frametime;
+ else
+ ftmp = autocvar_g_vehicle_spiderbot_turnspeed * sys_frametime;
+
+ ftmp = bound(-ftmp, spider.tur_head.angles_y, ftmp);
spider.angles_y = anglemods(spider.angles_y + ftmp);
spider.tur_head.angles_y -= ftmp;
}
}
- self.angles_x = bound(-45, self.angles_x, 45);
- self.angles_z = bound(-45, self.angles_z, 45);
+ self.angles_x = bound(-autocvar_g_vehicle_spiderbot_tiltlimit, self.angles_x, autocvar_g_vehicle_spiderbot_tiltlimit);
+ self.angles_z = bound(-autocvar_g_vehicle_spiderbot_tiltlimit, self.angles_z, autocvar_g_vehicle_spiderbot_tiltlimit);
if(player.BUTTON_ATCK)
{
v_forward = normalize(v_forward);
v += v_forward * 50;
- fireBullet (v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_damage,
- autocvar_g_vehicle_spiderbot_minigun_spread, DEATH_SBMINIGUN, 0);
+//void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, float lifetime, float damage, float headshotbonus, float force, float dtype, float tracereffects, float gravityfactor, float bulletconstant)
+
+ fireBallisticBullet(v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_speed,
+ 5, autocvar_g_vehicle_spiderbot_minigun_damage, 0, autocvar_g_vehicle_spiderbot_minigun_force, DEATH_SBMINIGUN, 0, 1, autocvar_g_vehicle_spiderbot_minigun_bulletconstant);
+ endFireBallisticBullet();
+
+// fireBullet (v, v_forward, autocvar_g_vehicle_spiderbot_minigun_spread, autocvar_g_vehicle_spiderbot_minigun_damage,
+// autocvar_g_vehicle_spiderbot_minigun_spread, DEATH_SBMINIGUN, 0);
sound (gun, CH_WEAPON_A, "weapons/uzi_fire.wav", VOL_BASE, ATTN_NORM);
- trailparticles(self, particleeffectnum("spiderbot_minigun_trail"), v, trace_endpos);
+ //trailparticles(self, particleeffectnum("spiderbot_minigun_trail"), v, trace_endpos);
pointparticles(particleeffectnum("spiderbot_minigun_muzzleflash"), v, v_forward * 2500, 1);
self = spider;
return TRUE;
}
+void vehicle_aimturret(entity _vehic, vector _target, entity _turrret, string _tagname,
+ float _pichlimit_min, float _pichlimit_max,
+ float _rotlimit_min, float _rotlimit_max, float _aimspeed)
+{
+ vector vtmp;
+ float ftmp;
+
+ vtmp = vectoangles(normalize(_target - gettaginfo(_turrret, gettagindex(_turrret, _tagname))));
+ vtmp = AnglesTransform_ToAngles(AnglesTransform_LeftDivide(AnglesTransform_FromAngles(_vehic.angles), AnglesTransform_FromAngles(vtmp))) - _turrret.angles;
+ vtmp = AnglesTransform_Normalize(vtmp, TRUE);
+
+ ftmp = _aimspeed * sys_frametime;
+ vtmp_y = bound(-ftmp, vtmp_y, ftmp);
+ vtmp_x = bound(-ftmp, vtmp_x, ftmp);
+ _turrret.angles_y = bound(_rotlimit_min, _turrret.angles_y + vtmp_y, _rotlimit_max);
+ _turrret.angles_x = bound(_pichlimit_min, _turrret.angles_x + vtmp_x, _pichlimit_max);
+}
+
+void vehicles_impusle(float _imp)
+{
+
+}
+
void bugmenot()
{
self.vehicle_exit = self.vehicle_exit;
#define VEHICLES_ENABLED
#ifdef VEHICLES_ENABLED
-//#message "with tZork vehicles (experimental)"
-
.float vehicle_flags;
float VHF_ISVEHICLE = 2; /// Indicates vehicle
float VHF_HASSHIELD = 4; /// Vehicle has shileding
.entity gun1;
.entity gun2;
+.entity gun3;
.float vehicle_health; /// If self is player this is 0..100 indicating precentage of health left on vehicle. If self is vehile, this is the real health value.
.float vehicle_energy; /// If self is player this is 0..100 indicating precentage of energy left on vehicle. If self is vehile, this is the real energy value.
var .void() vehicle_enter; /// Vehicles custom funciton to be executed when owner exit it
var .void() vehicle_die; /// Vehicles custom function to be executed when vehile die
var .void() vehicle_spawn; /// Vehicles custom fucntion to be efecuted when vehicle (re)spawns
+void vehicles_impusle(float _imp);
#ifdef VEHICLES_USE_ODE
void(entity e, float physics_enabled) physics_enable = #540; // enable or disable physics on object
-set g_vehicle_bumblebee_speed_forward 400
-set g_vehicle_bumblebee_speed_strafe 200
-set g_vehicle_bumblebee_speed_up 200
-set g_vehicle_bumblebee_speed_down 200
-set g_vehicle_bumblebee_turnspeed 72
-set g_vehicle_bumblebee_pitchspeed 36
-set g_vehicle_bumblebee_pitchlimit 15
-set g_vehicle_bumblebee_friction 0.75
+set g_vehicle_bumblebee_speed_forward 300
+set g_vehicle_bumblebee_speed_strafe 300
+set g_vehicle_bumblebee_speed_up 300
+set g_vehicle_bumblebee_speed_down 300
+set g_vehicle_bumblebee_turnspeed 64
+set g_vehicle_bumblebee_pitchspeed 64
+set g_vehicle_bumblebee_pitchlimit 60
+set g_vehicle_bumblebee_friction 0.4
set g_vehicle_bumblebee_energy 500
set g_vehicle_bumblebee_energy_regen 50
set g_vehicle_bumblebee_shield_regen_pause 2
set g_vehicle_bumblebee_cannon_cost 10
-set g_vehicle_bumblebee_cannon_damage 75
-set g_vehicle_bumblebee_cannon_radius 150
-set g_vehicle_bumblebee_cannon_refire 1.5
-set g_vehicle_bumblebee_cannon_speed 5000
+set g_vehicle_bumblebee_cannon_damage 125
+set g_vehicle_bumblebee_cannon_radius 300
+set g_vehicle_bumblebee_cannon_refire 0.75
+set g_vehicle_bumblebee_cannon_speed 2500
set g_vehicle_bumblebee_cannon_spread 0.0125
-set g_vehicle_bumblebee_cannon_force 400
+set g_vehicle_bumblebee_cannon_force 200
set g_vehicle_bumblebee_cannon_turnspeed 90
set g_vehicle_bumblebee_cannon_pitchlimit_down 60
set g_vehicle_bumblebee_cannon_pitchlimit_up 60
-set g_vehicle_bumblebee_cannon_turnlimit_in 5
+set g_vehicle_bumblebee_cannon_turnlimit_in 15
set g_vehicle_bumblebee_cannon_turnlimit_out 45
+set g_vehicle_bumblebee_raygun_turnspeed 50
+set g_vehicle_bumblebee_raygun_pitchlimit_down 20
+set g_vehicle_bumblebee_raygun_pitchlimit_up 30
+set g_vehicle_bumblebee_raygun_turnlimit_sides 30
+
set g_vehicle_bumblebee_respawntime 10
set g_vehicle_bumblebee_blowup_radius 500
set g_vehicle_racer_respawntime 25
-set g_vehicle_racer_health 190
+set g_vehicle_racer_health 200
set g_vehicle_racer_health_regen 0
set g_vehicle_racer_health_regen_pause 0
-set g_vehicle_racer_shield 70
+set g_vehicle_racer_shield 100
set g_vehicle_racer_shield_regen 30
set g_vehicle_racer_shield_regen_pause 1
set g_vehicle_racer_energy_regen_pause 1
set g_vehicle_racer_speed_stop 2500
-set g_vehicle_racer_speed_forward 500
-set g_vehicle_racer_speed_strafe 500
-set g_vehicle_racer_speed_afterburn 3000
-set g_vehicle_racer_friction 0.3
+set g_vehicle_racer_speed_forward 750
+set g_vehicle_racer_speed_strafe 750
+set g_vehicle_racer_speed_afterburn 2000
+set g_vehicle_racer_friction 0.4
set g_vehicle_racer_afterburn_cost 50 // energy consumed per second
set g_vehicle_racer_hovertype 0 // 0 = hover, != 0 = maglev
set g_vehicle_racer_collision_multiplier 0.05
set g_vehicle_racer_anglestabilizer 1.75
-set g_vehicle_racer_turnspeed 200
-set g_vehicle_racer_pitchspeed 100
-set g_vehicle_racer_maxpitch 20
-set g_vehicle_racer_turnroll 16
+set g_vehicle_racer_turnspeed 250
+set g_vehicle_racer_pitchspeed 125
+set g_vehicle_racer_maxpitch 35
+set g_vehicle_racer_turnroll 20
set g_vehicle_racer_cannon_speed 9000
-set g_vehicle_racer_cannon_damage 25
+set g_vehicle_racer_cannon_damage 30
set g_vehicle_racer_cannon_radius 100
-set g_vehicle_racer_cannon_refire 0.1
+set g_vehicle_racer_cannon_refire 0.15
set g_vehicle_racer_cannon_cost 10
set g_vehicle_racer_cannon_spread 0.0125
set g_vehicle_racer_cannon_force 50
set g_vehicle_racer_rocket_speed 1000
-set g_vehicle_racer_rocket_accel 1400
-set g_vehicle_racer_rocket_turnrate 0.1
+set g_vehicle_racer_rocket_accel 1500
+set g_vehicle_racer_rocket_turnrate 0.2
set g_vehicle_racer_rocket_damage 165
set g_vehicle_racer_rocket_force 350
set g_vehicle_racer_rocket_radius 125
set g_vehicle_racer_rocket_refire 6
set g_vehicle_racer_rocket_cost 0
-set g_vehicle_racer_rocket_climbspeed 1750
+set g_vehicle_racer_rocket_climbspeed 1500
set g_vehicle_racer_rocket_locktarget 1
-set g_vehicle_racer_rocket_locking_time 0.4
+set g_vehicle_racer_rocket_locking_time 0.35
set g_vehicle_racer_rocket_locking_releasetime 1.5
-set g_vehicle_racer_rocket_locked_time 5
-set g_vehicle_racer_rocket_locked_maxangle 1.75
+set g_vehicle_racer_rocket_locked_time 6
+set g_vehicle_racer_rocket_locked_maxangle 1.8
set g_vehicle_racer_blowup_radius 250
set g_vehicle_racer_blowup_coredamage 250
// 1: ignore aim for up/down movement. +forward always moved forward, +jump always moves up
set g_vehicle_raptor_movestyle 1
-set g_vehicle_raptor_turnroll 0.1
+set g_vehicle_raptor_turnroll 0.2
-set g_vehicle_raptor_turnspeed 80
-set g_vehicle_raptor_pitchspeed 40
-set g_vehicle_raptor_pitchlimit 35
+set g_vehicle_raptor_takeofftime 1.5
-set g_vehicle_raptor_speed_forward 900
-set g_vehicle_raptor_speed_strafe 700
-set g_vehicle_raptor_speed_up 500
-set g_vehicle_raptor_speed_down 800
-set g_vehicle_raptor_friction 0.7
+set g_vehicle_raptor_turnspeed 120
+set g_vehicle_raptor_pitchspeed 60
+set g_vehicle_raptor_pitchlimit 45
+
+set g_vehicle_raptor_speed_forward 1500
+set g_vehicle_raptor_speed_strafe 1000
+set g_vehicle_raptor_speed_up 900
+set g_vehicle_raptor_speed_down 1200
+set g_vehicle_raptor_friction 0.8
set g_vehicle_raptor_bomblets 8
set g_vehicle_raptor_bomblet_alt 750
set g_vehicle_raptor_bomblet_explode_delay 0.4
set g_vehicle_raptor_bombs_refire 5
-set g_vehicle_raptor_cannon_turnspeed 90
+set g_vehicle_raptor_cannon_turnspeed 45
set g_vehicle_raptor_cannon_turnlimit 20
set g_vehicle_raptor_cannon_pitchlimit_up 12
set g_vehicle_raptor_cannon_pitchlimit_down 32
set g_vehicle_raptor_cannon_predicttarget 1
set g_vehicle_raptor_cannon_cost 1
-set g_vehicle_raptor_cannon_damage 25
+set g_vehicle_raptor_cannon_damage 20
set g_vehicle_raptor_cannon_radius 60
set g_vehicle_raptor_cannon_refire 0.05
set g_vehicle_raptor_cannon_speed 12000
set g_vehicle_raptor_cannon_spread 0.01
-set g_vehicle_raptor_cannon_force 50
+set g_vehicle_raptor_cannon_force 25
set g_vehicle_raptor_energy 30
set g_vehicle_raptor_energy_regen 15
set g_vehicle_raptor_energy_regen_pause 0.8
-set g_vehicle_raptor_health 150
+set g_vehicle_raptor_health 200
set g_vehicle_raptor_health_regen 0
set g_vehicle_raptor_health_regen_pause 0
-set g_vehicle_raptor_shield 120
+set g_vehicle_raptor_shield 150
set g_vehicle_raptor_shield_regen 25
set g_vehicle_raptor_shield_regen_pause 1.5
set g_vehicle_spiderbot_respawntime 45
-set g_vehicle_spiderbot_health 850
-set g_vehicle_spiderbot_health_regen 15
-set g_vehicle_spiderbot_health_regen_pause 10
+set g_vehicle_spiderbot_health 800
+set g_vehicle_spiderbot_health_regen 20
+set g_vehicle_spiderbot_health_regen_pause 5
-set g_vehicle_spiderbot_shield 150
+set g_vehicle_spiderbot_shield 250
set g_vehicle_spiderbot_shield_block 1
-set g_vehicle_spiderbot_shield_regen 25
-set g_vehicle_spiderbot_shield_regen_pause 0.2
+set g_vehicle_spiderbot_shield_regen 30
+set g_vehicle_spiderbot_shield_regen_pause 0.35
set g_vehicle_spiderbot_energy 0
set g_vehicle_spiderbot_energy_regen 0
set g_vehicle_spiderbot_energy_regen_pause 0
-set g_vehicle_spiderbot_turnspeed 180
-set g_vehicle_spiderbot_head_turnspeed 120
-set g_vehicle_spiderbot_head_turnlimit 120
-set g_vehicle_spiderbot_head_pitchspeed 70
-set g_vehicle_spiderbot_head_pitchlimit_up 24
-set g_vehicle_spiderbot_head_pitchlimit_down -16
+set g_vehicle_spiderbot_turnspeed 90
+set g_vehicle_spiderbot_turnspeed_strafe 300
+set g_vehicle_spiderbot_head_turnspeed 100
+set g_vehicle_spiderbot_head_turnlimit 90
+set g_vehicle_spiderbot_head_pitchlimit_up 30
+set g_vehicle_spiderbot_head_pitchlimit_down -20
set g_vehicle_spiderbot_speed_stop 50
set g_vehicle_spiderbot_speed_walk 400
set g_vehicle_spiderbot_speed_strafe 300
-set g_vehicle_spiderbot_movement_inertia 0.25
-
-set g_vehicle_spiderbot_minigun_damage 16
-set g_vehicle_spiderbot_minigun_spread 0.015
-set g_vehicle_spiderbot_minigun_speed 50000
-set g_vehicle_spiderbot_minigun_refire 0.05
-set g_vehicle_spiderbot_minigun_ammo_cost 1
-set g_vehicle_spiderbot_minigun_ammo_max 200
-set g_vehicle_spiderbot_minigun_ammo_regen 15
+set g_vehicle_spiderbot_movement_inertia 0.15
+set g_vehicle_spiderbot_tiltlimit 90
+
+set g_vehicle_spiderbot_minigun_damage 9 // 300 (x2) DPS
+set g_vehicle_spiderbot_minigun_refire 0.03
+set g_vehicle_spiderbot_minigun_force 9
+set g_vehicle_spiderbot_minigun_spread 0.025
+set g_vehicle_spiderbot_minigun_speed 45000 // ~ 32QU
+set g_vehicle_spiderbot_minigun_bulletconstant 110
+set g_vehicle_spiderbot_minigun_ammo_cost 1
+set g_vehicle_spiderbot_minigun_ammo_max 200
+set g_vehicle_spiderbot_minigun_ammo_regen 30
set g_vehicle_spiderbot_minigun_ammo_regen_pause 1
-set g_vehicle_spiderbot_springlength 150
-set g_vehicle_spiderbot_springup 5
-set g_vehicle_spiderbot_springblend 0.15
+set g_vehicle_spiderbot_springlength 150
+set g_vehicle_spiderbot_springup 20
+set g_vehicle_spiderbot_springblend 0.1
set g_vehicle_spiderbot_rocket_health 100
-set g_vehicle_spiderbot_rocket_damage 75
-set g_vehicle_spiderbot_rocket_edgedamage 15
+set g_vehicle_spiderbot_rocket_damage 70
+set g_vehicle_spiderbot_rocket_edgedamage 25
set g_vehicle_spiderbot_rocket_force 150
-set g_vehicle_spiderbot_rocket_radius 150
-set g_vehicle_spiderbot_rocket_reload 4
-set g_vehicle_spiderbot_rocket_refire 0.2
-set g_vehicle_spiderbot_rocket_speed 1750
-set g_vehicle_spiderbot_rocket_turnrate 0.2
-set g_vehicle_spiderbot_rocket_noise 0.3
-set g_vehicle_spiderbot_rocket_lifetime 30
-
-set g_vehicle_spiderbot_crush_dmg 50
+set g_vehicle_spiderbot_rocket_radius 175
+set g_vehicle_spiderbot_rocket_reload 5
+set g_vehicle_spiderbot_rocket_refire 0.1
+set g_vehicle_spiderbot_rocket_speed 2500
+set g_vehicle_spiderbot_rocket_turnrate 0.25
+set g_vehicle_spiderbot_rocket_noise 0.35
+set g_vehicle_spiderbot_rocket_lifetime 20
+
+set g_vehicle_spiderbot_crush_dmg 75
set g_vehicle_spiderbot_crush_force 50
set g_vehicle_spiderbot_mass 5000