Inside3D tutorials.
Created By: | Cheezer |
eMail: | cheezer@ptd.net |
Difficulty Scale: | Easy |
Step 1
1) Open weapons.qc
2) find W_FireLightning
3) Replace the Entire Funstion with this new function below
void() W_FireLightning = { local entity thunderbolt; // create thunderbolt entity if (self.ammo_cells < 1) // if u have more than 1 cell, this is the best weapon { self.weapon = W_BestWeapon (); W_SetCurrentAmmo (); return; } self.currentammo = self.ammo_cells = self.ammo_cells - 1; // ammo it uses self.punchangle_x = -2; // kickback angle thunderbolt = spawn (); // spawning it thunderbolt.owner = self; // self (you) is owner of thunderbolt thunderbolt.movetype = MOVETYPE_FLYMISSILE; // flies straight on thunderbolt.solid = SOLID_BBOX; // its solid thunderbolt.classname = "thunderbolt"; // name it thunderbolt makevectors (self.v_angle); // i dont know thunderbolt.velocity = aim(self, 1000); // dont know this either thunderbolt.velocity = thunderbolt.velocity * 1000; //speed of 1000 thunderbolt.angles = vectoangles(thunderbolt.velocity); // dont know thunderbolt.touch = LightningHit; // calls LightningHit when touched thunderbolt.nextthink = time + 5; // disappears after flying for 5 seconds thunderbolt.think = SUB_Remove; // does nothing after 5 seconds setmodel (thunderbolt, "progs/bolt.mdl"); // sets the thunderbolt model setsize (thunderbolt, '0 0 0', '0 0 0'); // thunderbolt model size setorigin (thunderbolt, self.origin + v_forward*8 + '0 0 16'); // thunderbolt spawn origin };4) Above W_FireLightning add these functions:
void() LightningHit = { local vector org; // creates org vector local float damage=0; // floats damage starting at 0 local entity head; //creates head entity org = self.origin + '0 0 16'; // vector org origin head = findradius(self.origin, 250); //send lightning line to anything in 250 radius while (head) // while looking for head { if (head.takedamage) // if head has health, attack it { if(head != self.owner) // don't attack thunderbolt owner!! { WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); // temp entity WriteByte (MSG_BROADCAST, TE_LIGHTNING2); // makes lightning line i think WriteEntity (MSG_BROADCAST, head); // write head entity WriteCoord (MSG_BROADCAST, org_x); // write orgs x coord WriteCoord (MSG_BROADCAST, org_y); // write orgs y coord WriteCoord (MSG_BROADCAST, org_z); // write orgs z coord WriteCoord (MSG_BROADCAST, head.origin_x); // write heads x coord WriteCoord (MSG_BROADCAST, head.origin_y); // write heads y coord WriteCoord (MSG_BROADCAST, head.origin_z); // write heads z coord sound (head, CHAN_WEAPON, "weapons/lhit.wav", 1, ATTN_NORM); // its sound damage = 40 + random()*20; // 40 plus some random damage T_Damage (head, self, self.owner, damage); // its damage } } head = head.chain; // go to next enemy } remove(self); };