/* * $Header: /H2 Mission Pack/HCode/light.hc 11 3/19/98 12:17a Mgummelt $ */ /* ========================================================== LIGHT.HC MG Lights can be toggled/faded, shot out, etc. ========================================================== */ float START_LOW = 1; void fire_hurt_field_touch () { if(self.attack_finished>time) return; if(self.inactive) return; if(other.health<=0) return; self.attack_finished=time+HX_FRAME_TIME; T_Damage(other,self,self,self.dmg); if(self.t_width=self.fadespeed) { //dprint("light timed out\n"); remove(self); } else if((self.cnt<0&&self.light_lev<=self.level)||(self.cnt>0&&self.light_lev>=self.level)) { //dprint("light fade done\n"); lightstylestatic(self.style, self.level); remove(self); } else { self.nextthink=time+0.05; self.think=fadelight; } } void lightstyle_change_think() { //dprint("initializing light change\n"); self.speed=self.lightvalue2 - self.lightvalue1; self.light_lev=lightstylevalue(self.style); if(self.light_lev==self.lightvalue1) self.level = self.lightvalue2; else if(self.light_lev==self.lightvalue2) self.level = self.lightvalue1; else if(self.speed>0) if(self.light_levself.fadespeed) self.nextthink=-1; else self.nextthink=time+0.05; self.think=torch_think; } void torch_use (void) { self.fadespeed=time+other.fadespeed+1; torch_think(); } /*QUAKED light (0 1 0) (-8 -8 -8) (8 8 8) START_LOW Non-displayed fading light. Default light value is 300 Default style is 0 ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 "lightvalue1" (default 0) "lightvalue2" (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. "fadespeed" (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ void light() { if (self.targetname == "") { remove(self); } else { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); } } /*QUAK-ED light_globe (0 1 0) (-8 -8 -8) (8 8 8) START_LOW Sphere globe light. Default light value is 300 Default style is 0 ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ /* void() light_globe = { precache_model ("models/s_light.spr"); setmodel (self, "models/s_light.spr"); if(self.targetname) self.use=torch_use; self.mdl = "models/null.spr"; self.weaponmodel = "models/s_light.spr"; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; */ void() FireAmbient = { //FIXME: remove ambient sound if light is off, start it again if turned back on precache_sound ("raven/flame1.wav"); // attenuate fast if(self.targetname) sound(self,CHAN_BODY, "raven/flame1.wav", 0.5, ATTN_STATIC); else ambientsound (self.origin, "raven/flame1.wav", 0.5, ATTN_STATIC); }; /*QUAK-ED light_torch_small_walltorch (0 .5 0) (-10 -10 -20) (10 10 20) START_LOW HURT Short wall torch Default light value is 200 Default style is 0 ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) HURT = Will hurt things that touch it. .dmg = how much to hurt people who touch fire - damage/20th of a second. Default = .2; NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ void() light_torch_small_walltorch = { precache_model ("models/flame.mdl"); if(self.spawnflags&2) spawn_burnfield(self.origin); else self.dmg=0; FireAmbient (); if(self.targetname) self.use=torch_use; self.mdl = "models/null.spr"; self.weaponmodel = "models/flame.mdl"; self.abslight = .75; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { self.drawflags(+)MLS_ABSLIGHT; setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; /*QUAKED light_flame_large_yellow (0 1 0) (-10 -10 -13) (10 10 41) START_LOW HURT Large yellow flame ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) HURT = Will hurt things that touch it. .dmg = how much to hurt people who touch fire - damage/20th of a second. Default = .2; NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ void() light_flame_large_yellow = { precache_model ("models/flame1.mdl"); if(self.spawnflags&2) spawn_burnfield(self.origin); else self.dmg=0; FireAmbient (); if(self.targetname) self.use=torch_use; self.abslight = .75; self.mdl = "models/null.spr"; self.weaponmodel = "models/flame1.mdl"; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { self.drawflags(+)MLS_ABSLIGHT; setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; /*QUAKED light_flame_small_yellow (0 1 0) (-8 -8 -8) (8 8 8) START_LOW HURT Small yellow flame ball ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) HURT = Will hurt things that touch it. .dmg = how much to hurt people who touch fire - damage/20th of a second. Default = .2; NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ void() light_flame_small_yellow = { precache_model ("models/flame2.mdl"); if(self.spawnflags&2) spawn_burnfield(self.origin); else self.dmg=0; FireAmbient (); if(self.targetname) self.use=torch_use; self.abslight = .75; self.mdl = "models/null.spr"; self.weaponmodel = "models/flame2.mdl"; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { self.drawflags(+)MLS_ABSLIGHT; setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; /*QUAK-ED light_flame_small_white (0 1 0) (-10 -10 -40) (10 10 40) START_LOW Small white flame ball ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ /* void() light_flame_small_white = { precache_model ("models/flame2.mdl"); FireAmbient (); if(self.targetname) self.use=torch_use; self.abslight = .75; self.mdl = "models/null.spr"; self.weaponmodel = "models/flame2.mdl"; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { self.drawflags(+)MLS_ABSLIGHT; setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; */ /*QUAKED light_gem (0 1 0) (-8 -8 -8) (8 8 8) START_LOW A gem that displays light. Default light value is 300 Default style is 0 ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ void() light_gem = { precache_model ("models/gemlight.mdl"); if(self.targetname) self.use=torch_use; self.mdl = "models/null.spr"; self.weaponmodel = "models/gemlight.mdl"; self.abslight = .75; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { self.drawflags(+)MLS_ABSLIGHT; setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; /*QUAKED light_newfire (0 1 0) (-10 -10 -13) (10 10 41) START_LOW HURT Large yellow flame ---------------------------------- If triggered, will toggle between lightvalue1 and lightvalue2 .lightvalue1 (default 0) .lightvalue2 (default 11, equivalent to 300 brightness) Two values the light will fade-toggle between, 0 is black, 25 is brightest, 11 is equivalent to a value of 300. .fadespeed (default 1) = How many seconds it will take to complete the desired lighting change The light will start on at a default of the higher light value unless you turn on the startlow flag. START_LOW = will make the light start at the lower of the lightvalues you specify (default uses brighter) HURT = Will hurt things that touch it. .dmg = how much to hurt people who touch fire - damage/20th of a second. Default = .2; NOTE: IF YOU DON'T PLAN ON USING THE DEFAULTS, ALL LIGHTS IN THE BANK OF LIGHTS NEED THIS INFO */ void() light_newfire = { precache_model4 ("models/newfire.mdl"); if(self.spawnflags&2) spawn_burnfield(self.origin); else self.dmg=0; FireAmbient (); if(self.targetname) self.use=torch_use; // self.abslight = .75; self.mdl = "models/null.spr"; self.weaponmodel = "models/newfire.mdl"; if(self.style>=32) { if(!self.lightvalue2) self.lightvalue2=11; if(!self.fadespeed) self.fadespeed = 1; initialize_lightstyle(); self.think = torch_think; self.nextthink = time+1; } else { self.drawflags(+)DRF_TRANSLUCENT|MLS_FIREFLICKER; // self.drawflags(+)MLS_ABSLIGHT; setmodel(self,self.weaponmodel); if(deathmatch||teamplay) makestatic (self); else { self.solid=SOLID_NOT; self.movetype=MOVETYPE_NONE; } } }; /* * $Log: /H2 Mission Pack/HCode/light.hc $ * * 11 3/19/98 12:17a Mgummelt * last bug fixes * * 10 3/13/98 3:27a Mgummelt * Replaced all sounds that played a null.wav with stopSound commands * * 9 3/10/98 10:35a Jmonroe * fixed new fire to be in the pak * * 8 2/27/98 5:05p Mgummelt * * 7 2/24/98 2:26p Mgummelt * * 6 2/10/98 4:21p Mgummelt * * 5 2/03/98 3:51p Mgummelt * * 4 1/07/98 2:34p Mgummelt * * 37 10/28/97 1:01p Mgummelt * Massive replacement, rewrote entire code... just kidding. Added * support for 5th class. * * 35 9/02/97 3:04p Mgummelt * * 34 9/02/97 2:55a Mgummelt * * 33 8/23/97 7:15p Rlove * * 32 8/21/97 5:10p Rjohnson * Change for ablight * * 31 8/21/97 3:19p Rjohnson * Abslight change * * 30 8/20/97 5:18p Rjohnson * Abslight for everything * * 29 8/19/97 10:48p Rjohnson * Abslight for flames * * 28 8/13/97 5:52p Mgummelt * * 27 7/19/97 9:57p Mgummelt * * 26 7/10/97 5:28p Rlove * * 25 6/19/97 3:01p Rjohnson * Removed old id code * * 24 6/15/97 5:10p Mgummelt * * 23 6/15/97 3:15p Mgummelt * * 22 6/13/97 3:29p Mgummelt * * 21 6/09/97 10:04a Mgummelt * * 20 6/06/97 4:08p Mgummelt * * 19 6/06/97 11:38a Mgummelt * * 18 6/06/97 10:58a Rjohnson * Fix for lights * * 17 6/05/97 8:55p Mgummelt * * 14 5/15/97 6:34p Rjohnson * Code cleanup * * 7 3/28/97 4:47p Aleggett * Updated light fading even further... * * 6 3/20/97 2:15p Aleggett * Made fading lights use the new lightstyle method. * * 5 3/05/97 4:48p Rlove * Small fix for flame1.mdl * * 4 3/05/97 1:54p Rlove * Placed light entites in LIGHT.HC and placed breakable entities in * BREAKABL.HC * * 3 3/05/97 12:22p Rlove * Added all four types of torches * * 2 2/28/97 6:11p Rlove * New Egypt Light * * 1 2/28/97 5:39p Rlove */