home *** CD-ROM | disk | FTP | other *** search
- /*
-
- ==============================================================================
-
- Burning Hands
-
- ==============================================================================
-
- */
-
-
- //--------------------------------------------------------------------
- // Fire Magic Missile
- //--------------------------------------------------------------------
-
- void() burning_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
- if (other.takedamage)
- {
- T_Damage (other, self, self.owner, 9);
- }
- else
- {
- WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
-
- if (self.classname == "wizspike")
- WriteByte (MSG_BROADCAST, TE_WIZSPIKE);
- else if (self.classname == "knightspike")
- WriteByte (MSG_BROADCAST, TE_KNIGHTSPIKE);
- else
- WriteByte (MSG_BROADCAST, TE_SPIKE);
- WriteCoord (MSG_BROADCAST, self.origin_x);
- WriteCoord (MSG_BROADCAST, self.origin_y);
- WriteCoord (MSG_BROADCAST, self.origin_z);
- }
-
- remove(self);
-
- };
-
- void(vector org, vector dir) launch_burning =
- {
- newmis = spawn ();
- newmis.owner = self;
- newmis.movetype = MOVETYPE_FLYMISSILE;
- newmis.solid = SOLID_BBOX;
-
- newmis.angles = vectoangles(dir);
-
- newmis.touch = burning_touch;
- newmis.classname = "spike";
- newmis.think = SUB_Remove;
- newmis.nextthink = time + 6;
- setmodel (newmis, "progs/spike.mdl");
- setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- setorigin (newmis, org);
-
- newmis.velocity = dir * 1000;
- };
-
-
-
- //-------------------------
- // H Knight shot
- //-------------------------
-
- void(float offset) burning_shot =
- {
- local vector offang;
- local vector org, vec;
-
- offang = self.v_angle;
- offang_y = offang_y + offset * 6;
-
- makevectors (offang);
-
- org = self.origin + self.mins + self.size*0.5 + v_forward * 20;
-
- // set missile speed
- vec = normalize (v_forward);
- vec_z = vec_z + (random() - 0.5)*0.1;
-
- launch_burning (org, vec);
- newmis.classname = "knightspike";
- setmodel (newmis, "progs/k_spike.mdl");
- setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- newmis.velocity = vec*300;
- sound (self, CHAN_WEAPON, "hknight/attack1.wav", 1, ATTN_NORM);
- };
-
-
- //--------------------------------------------------------------------
- // Checks if Burn can be fired
- //--------------------------------------------------------------------
- void() BurningC =
- {
- if (self.ammo_cells < 10)
- {
- sprint(self,"cells are low\n");
- return;
- }
- self.currentammo = self.ammo_cells = self.ammo_cells - 10;
- W_SetCurrentAmmo();
-
- sound (self, CHAN_WEAPON, "shalrath/attack2.wav", 1, ATTN_NORM);
- burning_shot ();
-
- };
-