EnergyBeamTron500 Weapon

InsideQC tutorials kleskby 0 665
Author: eMail:
Source: https://www.insideqc.com/qctut/qctut-40.shtml

In this tut, I'm gonna show ya how to make the EnergyBeamWeaponTron500 (yes, it's long, but if ya play Quake Mechs you'd know why)

I made a whackass damage so that it would act like radius damage but do MUCH more damage by direct hit

void(entity inflictor, entity attacker, float damage, entity ignore) T_PlasmaDamage =
{
local float points;
local entity head;
local vector org;
head = findradius(inflictor.origin, damage);

while (head)
{
if (head != ignore)
{
if (head.takedamage)
{
org = head.origin + (head.mins + head.maxs)*0.5;
points = 0.5*vlen (inflictor.origin - org);
if (points < 0)
points = 0;
points = damage - points;
if (head == attacker)
points = points * 0.5;
if (points > 0)
{
if (CanDamage (head, inflictor))
{
T_Damage (head, inflictor, attacker, points*10);
}
}
}
}
head = head.chain;
}
};

Next, we need a touch function.

void() energy_touch =
{
local float rand;
if (other == self.owner)
return;
if (other.solid == SOLID_TRIGGER)
return; // trigger field, do nothing
if (pointcontents(self.origin) == CONTENT_SKY)
{
remove(self);
return;
}

// hit something that bleeds
T_PlasmaDamage (self, self.owner, 15, self.owner);
remove(self);
};

Here's the nift-spiffy particle tracer....

void() EnergyThink =
{
self.effects = self.effects | EF_BRIGHTLIGHT;
particle (self.origin, '1 4 -7', 208, 2);
particle (self.origin, '3 -5 2', 208, 2);
particle (self.origin, '4 -1 4', 208, 2);
particle (self.origin, '-7 -3 3', 208, 2);
particle (self.origin, '2 -5 4', 208, 2);
particle (self.origin, '6 7 1', 208, 2);
particle (self.origin, '-3 8 -6', 208, 2);
particle (self.origin, '8 -1 3', 208, 2);
particle (self.origin, '1 4 -5', 208, 2);
self.nextthink = time + 0.01;
self.think=EnergyThink;
};
void() W_FireEnergy =
{
local entity missile;

self.currentammo = self.ammo_cells = self.ammo_cells - 0.01;
sound (self, CHAN_WEAPON, "weapons/energy.wav", 1, ATTN_NORM); //This  is from Quake Mechs, get the sound out of PAK or make yer own

missile = spawn ();
missile.owner = self;
missile.movetype = MOVETYPE_FLYMISSILE;
missile.solid = SOLID_BBOX;
missile.classname = "energybeam";

// set missile speed
makevectors (self.v_angle);
missile.velocity = aim(self, 2000);
missile.velocity = missile.velocity * 2000;
missile.angles = vectoangles(missile.velocity);

missile.touch = energy_touch;

//Particles
missile.nextthink = time + 0.01;
missile.think = EnergyThink;
setorigin (missile, self.origin + v_forward*8 + v_right*25 +'0 0 18'); //This makes it shoot out from player's right shoulder, we made the view higher. Adapt to your own liking
};

And that's it! A neato energy weapon that will devestate anything that moves!

Tutorial html coding by Achilles.



Tags: tutorial, quakec, qc, insideqc, weapon

Comments


captcha


No comments yet. Be the first!
Owned by kleskby#1837
Close

You have no new notifications.

SHOUTBOX
Open chat to load…
Log in to chat