Annotation of quakeworld/progs/misc.qc, revision 1.1

1.1     ! root        1: 
        !             2: /*QUAKED info_null (0 0.5 0) (-4 -4 -4) (4 4 4)
        !             3: Used as a positional target for spotlights, etc.
        !             4: */
        !             5: void() info_null =
        !             6: {
        !             7:        remove(self);
        !             8: };
        !             9: 
        !            10: /*QUAKED info_notnull (0 0.5 0) (-4 -4 -4) (4 4 4)
        !            11: Used as a positional target for lightning.
        !            12: */
        !            13: void() info_notnull =
        !            14: {
        !            15: };
        !            16: 
        !            17: //============================================================================
        !            18: 
        !            19: float START_OFF = 1;
        !            20: 
        !            21: void() light_use =
        !            22: {
        !            23:        if (self.spawnflags & START_OFF)
        !            24:        {
        !            25:                lightstyle(self.style, "m");
        !            26:                self.spawnflags = self.spawnflags - START_OFF;
        !            27:        }
        !            28:        else
        !            29:        {
        !            30:                lightstyle(self.style, "a");
        !            31:                self.spawnflags = self.spawnflags + START_OFF;
        !            32:        }
        !            33: };
        !            34: 
        !            35: /*QUAKED light (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
        !            36: Non-displayed light.
        !            37: Default light value is 300
        !            38: Default style is 0
        !            39: If targeted, it will toggle between on or off.
        !            40: */
        !            41: void() light =
        !            42: {
        !            43:        if (!self.targetname)
        !            44:        {       // inert light
        !            45:                remove(self);
        !            46:                return;
        !            47:        }
        !            48:        
        !            49:        if (self.style >= 32)
        !            50:        {
        !            51:                self.use = light_use;
        !            52:                if (self.spawnflags & START_OFF)
        !            53:                        lightstyle(self.style, "a");
        !            54:                else
        !            55:                        lightstyle(self.style, "m");
        !            56:        }
        !            57: };
        !            58: 
        !            59: /*QUAKED light_fluoro (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
        !            60: Non-displayed light.
        !            61: Default light value is 300
        !            62: Default style is 0
        !            63: If targeted, it will toggle between on or off.
        !            64: Makes steady fluorescent humming sound
        !            65: */
        !            66: void() light_fluoro =
        !            67: {
        !            68:        if (self.style >= 32)
        !            69:        {
        !            70:                self.use = light_use;
        !            71:                if (self.spawnflags & START_OFF)
        !            72:                        lightstyle(self.style, "a");
        !            73:                else
        !            74:                        lightstyle(self.style, "m");
        !            75:        }
        !            76:        
        !            77:        precache_sound ("ambience/fl_hum1.wav");
        !            78:        ambientsound (self.origin, "ambience/fl_hum1.wav", 0.5, ATTN_STATIC);
        !            79: };
        !            80: 
        !            81: /*QUAKED light_fluorospark (0 1 0) (-8 -8 -8) (8 8 8)
        !            82: Non-displayed light.
        !            83: Default light value is 300
        !            84: Default style is 10
        !            85: Makes sparking, broken fluorescent sound
        !            86: */
        !            87: void() light_fluorospark =
        !            88: {
        !            89:        if (!self.style)
        !            90:                self.style = 10;
        !            91: 
        !            92:        precache_sound ("ambience/buzz1.wav");
        !            93:        ambientsound (self.origin, "ambience/buzz1.wav", 0.5, ATTN_STATIC);
        !            94: };
        !            95: 
        !            96: /*QUAKED light_globe (0 1 0) (-8 -8 -8) (8 8 8)
        !            97: Sphere globe light.
        !            98: Default light value is 300
        !            99: Default style is 0
        !           100: */
        !           101: void() light_globe =
        !           102: {
        !           103:        precache_model ("progs/s_light.spr");
        !           104:        setmodel (self, "progs/s_light.spr");
        !           105:        makestatic (self);
        !           106: };
        !           107: 
        !           108: void() FireAmbient =
        !           109: {
        !           110:        precache_sound ("ambience/fire1.wav");
        !           111: // attenuate fast
        !           112:        ambientsound (self.origin, "ambience/fire1.wav", 0.5, ATTN_STATIC);
        !           113: };
        !           114: 
        !           115: /*QUAKED light_torch_small_walltorch (0 .5 0) (-10 -10 -20) (10 10 20)
        !           116: Short wall torch
        !           117: Default light value is 200
        !           118: Default style is 0
        !           119: */
        !           120: void() light_torch_small_walltorch =
        !           121: {
        !           122:        precache_model ("progs/flame.mdl");
        !           123:        setmodel (self, "progs/flame.mdl");
        !           124:        FireAmbient ();
        !           125:        makestatic (self);
        !           126: };
        !           127: 
        !           128: /*QUAKED light_flame_large_yellow (0 1 0) (-10 -10 -12) (12 12 18)
        !           129: Large yellow flame ball
        !           130: */
        !           131: void() light_flame_large_yellow =
        !           132: {
        !           133:        precache_model ("progs/flame2.mdl");
        !           134:        setmodel (self, "progs/flame2.mdl");
        !           135:        self.frame = 1;
        !           136:        FireAmbient ();
        !           137:        makestatic (self);
        !           138: };
        !           139: 
        !           140: /*QUAKED light_flame_small_yellow (0 1 0) (-8 -8 -8) (8 8 8) START_OFF
        !           141: Small yellow flame ball
        !           142: */
        !           143: void() light_flame_small_yellow =
        !           144: {
        !           145:        precache_model ("progs/flame2.mdl");
        !           146:        setmodel (self, "progs/flame2.mdl");
        !           147:        FireAmbient ();
        !           148:        makestatic (self);
        !           149: };
        !           150: 
        !           151: /*QUAKED light_flame_small_white (0 1 0) (-10 -10 -40) (10 10 40) START_OFF
        !           152: Small white flame ball
        !           153: */
        !           154: void() light_flame_small_white =
        !           155: {
        !           156:        precache_model ("progs/flame2.mdl");
        !           157:        setmodel (self, "progs/flame2.mdl");
        !           158:        FireAmbient ();
        !           159:        makestatic (self);
        !           160: };
        !           161: 
        !           162: //============================================================================
        !           163: 
        !           164: 
        !           165: /*QUAKED misc_fireball (0 .5 .8) (-8 -8 -8) (8 8 8)
        !           166: Lava Balls
        !           167: */
        !           168: 
        !           169: void() fire_fly;
        !           170: void() fire_touch;
        !           171: void() misc_fireball =
        !           172: {
        !           173:        
        !           174:        precache_model ("progs/lavaball.mdl");
        !           175:        self.classname = "fireball";
        !           176:        self.nextthink = time + (random() * 5);
        !           177:        self.think = fire_fly;
        !           178:        if (!self.speed)
        !           179:                self.speed == 1000;
        !           180: };
        !           181: 
        !           182: void() fire_fly =
        !           183: {
        !           184: local entity    fireball;
        !           185: 
        !           186:        fireball = spawn();
        !           187:        fireball.solid = SOLID_TRIGGER;
        !           188:        fireball.movetype = MOVETYPE_TOSS;
        !           189:        fireball.velocity = '0 0 1000';
        !           190:        fireball.velocity_x = (random() * 100) - 50;
        !           191:        fireball.velocity_y = (random() * 100) - 50;
        !           192:        fireball.velocity_z = self.speed + (random() * 200);
        !           193:        fireball.classname = "fireball";
        !           194:        setmodel (fireball, "progs/lavaball.mdl");
        !           195:        setsize (fireball, '0 0 0', '0 0 0');
        !           196:        setorigin (fireball, self.origin);
        !           197:        fireball.nextthink = time + 5;
        !           198:        fireball.think = SUB_Remove;
        !           199:        fireball.touch = fire_touch;
        !           200:        
        !           201:        self.nextthink = time + (random() * 5) + 3;
        !           202:        self.think = fire_fly;
        !           203: };
        !           204: 
        !           205: 
        !           206: void() fire_touch =
        !           207: {
        !           208:        T_Damage (other, self, self, 20);
        !           209:        remove(self);
        !           210: };
        !           211: 
        !           212: //============================================================================
        !           213: 
        !           214: 
        !           215: void() barrel_explode =
        !           216: {
        !           217:        self.takedamage = DAMAGE_NO;
        !           218:        self.classname = "explo_box";
        !           219:        // did say self.owner
        !           220:        T_RadiusDamage (self, self, 160, world, "");
        !           221:        WriteByte (MSG_MULTICAST, SVC_TEMPENTITY);
        !           222:        WriteByte (MSG_MULTICAST, TE_EXPLOSION);
        !           223:        WriteCoord (MSG_MULTICAST, self.origin_x);
        !           224:        WriteCoord (MSG_MULTICAST, self.origin_y);
        !           225:        WriteCoord (MSG_MULTICAST, self.origin_z+32);
        !           226:        multicast (self.origin, MULTICAST_PHS);
        !           227:        remove (self);
        !           228: };
        !           229: 
        !           230: 
        !           231: 
        !           232: /*QUAKED misc_explobox (0 .5 .8) (0 0 0) (32 32 64)
        !           233: TESTING THING
        !           234: */
        !           235: 
        !           236: void() misc_explobox =
        !           237: {
        !           238:        local float     oldz;
        !           239:        
        !           240:        self.solid = SOLID_BBOX;
        !           241:        self.movetype = MOVETYPE_NONE;
        !           242:        precache_model ("maps/b_explob.bsp");
        !           243:        setmodel (self, "maps/b_explob.bsp");
        !           244:        setsize (self, '0 0 0', '32 32 64');
        !           245:        precache_sound ("weapons/r_exp3.wav");
        !           246:        self.health = 20;
        !           247:        self.th_die = barrel_explode;
        !           248:        self.takedamage = DAMAGE_AIM;
        !           249: 
        !           250:        self.origin_z = self.origin_z + 2;
        !           251:        oldz = self.origin_z;
        !           252:        droptofloor();
        !           253:        if (oldz - self.origin_z > 250)
        !           254:        {
        !           255:                dprint ("item fell out of level at ");
        !           256:                dprint (vtos(self.origin));
        !           257:                dprint ("\n");
        !           258:                remove(self);
        !           259:        }
        !           260: };
        !           261: 
        !           262: 
        !           263: 
        !           264: 
        !           265: /*QUAKED misc_explobox2 (0 .5 .8) (0 0 0) (32 32 64)
        !           266: Smaller exploding box, REGISTERED ONLY
        !           267: */
        !           268: 
        !           269: void() misc_explobox2 =
        !           270: {
        !           271:        local float     oldz;
        !           272:        
        !           273:        self.solid = SOLID_BBOX;
        !           274:        self.movetype = MOVETYPE_NONE;
        !           275:        precache_model2 ("maps/b_exbox2.bsp");
        !           276:        setmodel (self, "maps/b_exbox2.bsp");
        !           277:        setsize (self, '0 0 0', '32 32 32');
        !           278:        precache_sound ("weapons/r_exp3.wav");
        !           279:        self.health = 20;
        !           280:        self.th_die = barrel_explode;
        !           281:        self.takedamage = DAMAGE_AIM;
        !           282: 
        !           283:        self.origin_z = self.origin_z + 2;
        !           284:        oldz = self.origin_z;
        !           285:        droptofloor();
        !           286:        if (oldz - self.origin_z > 250)
        !           287:        {
        !           288:                dprint ("item fell out of level at ");
        !           289:                dprint (vtos(self.origin));
        !           290:                dprint ("\n");
        !           291:                remove(self);
        !           292:        }
        !           293: };
        !           294: 
        !           295: //============================================================================
        !           296: 
        !           297: float SPAWNFLAG_SUPERSPIKE      = 1;
        !           298: float SPAWNFLAG_LASER = 2;
        !           299: 
        !           300: void() Laser_Touch =
        !           301: {
        !           302:        local vector org;
        !           303:        
        !           304:        if (other == self.owner)
        !           305:                return;         // don't explode on owner
        !           306: 
        !           307:        if (pointcontents(self.origin) == CONTENT_SKY)
        !           308:        {
        !           309:                remove(self);
        !           310:                return;
        !           311:        }
        !           312:        
        !           313:        sound (self, CHAN_WEAPON, "enforcer/enfstop.wav", 1, ATTN_STATIC);
        !           314:        org = self.origin - 8*normalize(self.velocity);
        !           315: 
        !           316:        if (other.health)
        !           317:        {
        !           318:                SpawnBlood (org, 15);
        !           319:                other.deathtype = "laser";
        !           320:                T_Damage (other, self, self.owner, 15);
        !           321:        }
        !           322:        else
        !           323:        {
        !           324:                WriteByte (MSG_MULTICAST, SVC_TEMPENTITY);
        !           325:                WriteByte (MSG_MULTICAST, TE_GUNSHOT);
        !           326:                WriteByte (MSG_MULTICAST, 5);
        !           327:                WriteCoord (MSG_MULTICAST, org_x);
        !           328:                WriteCoord (MSG_MULTICAST, org_y);
        !           329:                WriteCoord (MSG_MULTICAST, org_z);
        !           330:                multicast (org, MULTICAST_PVS);
        !           331:        }
        !           332:        
        !           333:        remove(self);   
        !           334: };
        !           335: 
        !           336: void(vector org, vector vec) LaunchLaser =
        !           337: {
        !           338:        local   vector  vec;
        !           339:                
        !           340:        if (self.classname == "monster_enforcer")
        !           341:                sound (self, CHAN_WEAPON, "enforcer/enfire.wav", 1, ATTN_NORM);
        !           342: 
        !           343:        vec = normalize(vec);
        !           344:        
        !           345:        newmis = spawn();
        !           346:        newmis.owner = self;
        !           347:        newmis.movetype = MOVETYPE_FLY;
        !           348:        newmis.solid = SOLID_BBOX;
        !           349:        newmis.effects = EF_DIMLIGHT;
        !           350: 
        !           351:        setmodel (newmis, "progs/laser.mdl");
        !           352:        setsize (newmis, '0 0 0', '0 0 0');             
        !           353: 
        !           354:        setorigin (newmis, org);
        !           355: 
        !           356:        newmis.velocity = vec * 600;
        !           357:        newmis.angles = vectoangles(newmis.velocity);
        !           358: 
        !           359:        newmis.nextthink = time + 5;
        !           360:        newmis.think = SUB_Remove;
        !           361:        newmis.touch = Laser_Touch;
        !           362: };
        !           363: 
        !           364: void() spikeshooter_use =
        !           365: {
        !           366:        if (self.spawnflags & SPAWNFLAG_LASER)
        !           367:        {
        !           368:                sound (self, CHAN_VOICE, "enforcer/enfire.wav", 1, ATTN_NORM);
        !           369:                LaunchLaser (self.origin, self.movedir);
        !           370:        }
        !           371:        else
        !           372:        {
        !           373:                sound (self, CHAN_VOICE, "weapons/spike2.wav", 1, ATTN_NORM);
        !           374:                launch_spike (self.origin, self.movedir);
        !           375:                newmis.velocity = self.movedir * 500;
        !           376:                if (self.spawnflags & SPAWNFLAG_SUPERSPIKE)
        !           377:                        newmis.touch = superspike_touch;
        !           378:        }
        !           379: };
        !           380: 
        !           381: void() shooter_think =
        !           382: {
        !           383:        spikeshooter_use ();
        !           384:        self.nextthink = time + self.wait;
        !           385:        newmis.velocity = self.movedir * 500;
        !           386: };
        !           387: 
        !           388: 
        !           389: /*QUAKED trap_spikeshooter (0 .5 .8) (-8 -8 -8) (8 8 8) superspike laser
        !           390: When triggered, fires a spike in the direction set in QuakeEd.
        !           391: Laser is only for REGISTERED.
        !           392: */
        !           393: 
        !           394: void() trap_spikeshooter =
        !           395: {
        !           396:        SetMovedir ();
        !           397:        self.use = spikeshooter_use;
        !           398:        if (self.spawnflags & SPAWNFLAG_LASER)
        !           399:        {
        !           400:                precache_model2 ("progs/laser.mdl");
        !           401:                
        !           402:                precache_sound2 ("enforcer/enfire.wav");
        !           403:                precache_sound2 ("enforcer/enfstop.wav");
        !           404:        }
        !           405:        else
        !           406:                precache_sound ("weapons/spike2.wav");
        !           407: };
        !           408: 
        !           409: 
        !           410: /*QUAKED trap_shooter (0 .5 .8) (-8 -8 -8) (8 8 8) superspike laser
        !           411: Continuously fires spikes.
        !           412: "wait" time between spike (1.0 default)
        !           413: "nextthink" delay before firing first spike, so multiple shooters can be stagered.
        !           414: */
        !           415: void() trap_shooter =
        !           416: {
        !           417:        trap_spikeshooter ();
        !           418:        
        !           419:        if (self.wait == 0)
        !           420:                self.wait = 1;
        !           421:        self.nextthink = self.nextthink + self.wait + self.ltime;
        !           422:        self.think = shooter_think;
        !           423: };
        !           424: 
        !           425: 
        !           426: 
        !           427: /*
        !           428: ===============================================================================
        !           429: 
        !           430: 
        !           431: ===============================================================================
        !           432: */
        !           433: 
        !           434: 
        !           435: void() make_bubbles;
        !           436: void() bubble_remove;
        !           437: void() bubble_bob;
        !           438: 
        !           439: /*QUAKED air_bubbles (0 .5 .8) (-8 -8 -8) (8 8 8)
        !           440: 
        !           441: testing air bubbles
        !           442: */
        !           443: 
        !           444: void() air_bubbles =
        !           445: {
        !           446:        remove (self);
        !           447: };
        !           448: 
        !           449: void() make_bubbles =
        !           450: {
        !           451: local entity    bubble;
        !           452: 
        !           453:        bubble = spawn();
        !           454:        setmodel (bubble, "progs/s_bubble.spr");
        !           455:        setorigin (bubble, self.origin);
        !           456:        bubble.movetype = MOVETYPE_NOCLIP;
        !           457:        bubble.solid = SOLID_NOT;
        !           458:        bubble.velocity = '0 0 15';
        !           459:        bubble.nextthink = time + 0.5;
        !           460:        bubble.think = bubble_bob;
        !           461:        bubble.touch = bubble_remove;
        !           462:        bubble.classname = "bubble";
        !           463:        bubble.frame = 0;
        !           464:        bubble.cnt = 0;
        !           465:        setsize (bubble, '-8 -8 -8', '8 8 8');
        !           466:        self.nextthink = time + random() + 0.5;
        !           467:        self.think = make_bubbles;
        !           468: };
        !           469: 
        !           470: void() bubble_split =
        !           471: {
        !           472: local entity    bubble;
        !           473:        bubble = spawn();
        !           474:        setmodel (bubble, "progs/s_bubble.spr");
        !           475:        setorigin (bubble, self.origin);
        !           476:        bubble.movetype = MOVETYPE_NOCLIP;
        !           477:        bubble.solid = SOLID_NOT;
        !           478:        bubble.velocity = self.velocity;
        !           479:        bubble.nextthink = time + 0.5;
        !           480:        bubble.think = bubble_bob;
        !           481:        bubble.touch = bubble_remove;
        !           482:        bubble.classname = "bubble";
        !           483:        bubble.frame = 1;
        !           484:        bubble.cnt = 10;
        !           485:        setsize (bubble, '-8 -8 -8', '8 8 8');
        !           486:        self.frame = 1;
        !           487:        self.cnt = 10;
        !           488:        if (self.waterlevel != 3)
        !           489:                remove (self);
        !           490: };
        !           491: 
        !           492: void() bubble_remove =
        !           493: {
        !           494:        if (other.classname == self.classname)
        !           495:        {
        !           496: //              dprint ("bump");
        !           497:                return;
        !           498:        }
        !           499:        remove(self);
        !           500: };
        !           501: 
        !           502: void() bubble_bob =
        !           503: {
        !           504: local float             rnd1, rnd2, rnd3;
        !           505: local vector    vtmp1, modi;
        !           506: 
        !           507:        self.cnt = self.cnt + 1;
        !           508:        if (self.cnt == 4)
        !           509:                bubble_split();
        !           510:        if (self.cnt == 20)
        !           511:                remove(self);
        !           512: 
        !           513:        rnd1 = self.velocity_x + (-10 + (random() * 20));
        !           514:        rnd2 = self.velocity_y + (-10 + (random() * 20));
        !           515:        rnd3 = self.velocity_z + 10 + random() * 10;
        !           516: 
        !           517:        if (rnd1 > 10)
        !           518:                rnd1 = 5;
        !           519:        if (rnd1 < -10)
        !           520:                rnd1 = -5;
        !           521:                
        !           522:        if (rnd2 > 10)
        !           523:                rnd2 = 5;
        !           524:        if (rnd2 < -10)
        !           525:                rnd2 = -5;
        !           526:                
        !           527:        if (rnd3 < 10)
        !           528:                rnd3 = 15;
        !           529:        if (rnd3 > 30)
        !           530:                rnd3 = 25;
        !           531:        
        !           532:        self.velocity_x = rnd1;
        !           533:        self.velocity_y = rnd2;
        !           534:        self.velocity_z = rnd3;
        !           535:                
        !           536:        self.nextthink = time + 0.5;
        !           537:        self.think = bubble_bob;
        !           538: };
        !           539: 
        !           540: /*~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>
        !           541: ~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~<~>~*/
        !           542: 
        !           543: /*QUAKED viewthing (0 .5 .8) (-8 -8 -8) (8 8 8)
        !           544: 
        !           545: Just for the debugging level.  Don't use
        !           546: */
        !           547: 
        !           548: void() viewthing =
        !           549: 
        !           550: {
        !           551:        self.movetype = MOVETYPE_NONE;
        !           552:        self.solid = SOLID_NOT;
        !           553:        precache_model ("progs/player.mdl");
        !           554:        setmodel (self, "progs/player.mdl");
        !           555: };
        !           556: 
        !           557: 
        !           558: /*
        !           559: ==============================================================================
        !           560: 
        !           561: SIMPLE BMODELS
        !           562: 
        !           563: ==============================================================================
        !           564: */
        !           565: 
        !           566: void() func_wall_use =
        !           567: {       // change to alternate textures
        !           568:        self.frame = 1 - self.frame;
        !           569: };
        !           570: 
        !           571: /*QUAKED func_wall (0 .5 .8) ?
        !           572: This is just a solid wall if not inhibitted
        !           573: */
        !           574: void() func_wall =
        !           575: {
        !           576:        self.angles = '0 0 0';
        !           577:        self.movetype = MOVETYPE_PUSH;  // so it doesn't get pushed by anything
        !           578:        self.solid = SOLID_BSP;
        !           579:        self.use = func_wall_use;
        !           580:        setmodel (self, self.model);
        !           581: };
        !           582: 
        !           583: 
        !           584: /*QUAKED func_illusionary (0 .5 .8) ?
        !           585: A simple entity that looks solid but lets you walk through it.
        !           586: */
        !           587: void() func_illusionary =
        !           588: 
        !           589: {
        !           590:        self.angles = '0 0 0';
        !           591:        self.movetype = MOVETYPE_NONE;
        !           592:        self.solid = SOLID_NOT;
        !           593:        setmodel (self, self.model);
        !           594:        makestatic ();
        !           595: };
        !           596: 
        !           597: /*QUAKED func_episodegate (0 .5 .8) ? E1 E2 E3 E4
        !           598: This bmodel will appear if the episode has allready been completed, so players can't reenter it.
        !           599: */
        !           600: void() func_episodegate =
        !           601: 
        !           602: {
        !           603:        if (!(serverflags & self.spawnflags))
        !           604:                return;                 // can still enter episode
        !           605: 
        !           606:        self.angles = '0 0 0';
        !           607:        self.movetype = MOVETYPE_PUSH;  // so it doesn't get pushed by anything
        !           608:        self.solid = SOLID_BSP;
        !           609:        self.use = func_wall_use;
        !           610:        setmodel (self, self.model);
        !           611: };
        !           612: 
        !           613: /*QUAKED func_bossgate (0 .5 .8) ?
        !           614: This bmodel appears unless players have all of the episode sigils.
        !           615: */
        !           616: void() func_bossgate =
        !           617: 
        !           618: {
        !           619:        if ( (serverflags & 15) == 15)
        !           620:                return;         // all episodes completed
        !           621:        self.angles = '0 0 0';
        !           622:        self.movetype = MOVETYPE_PUSH;  // so it doesn't get pushed by anything
        !           623:        self.solid = SOLID_BSP;
        !           624:        self.use = func_wall_use;
        !           625:        setmodel (self, self.model);
        !           626: };
        !           627: 
        !           628: //============================================================================
        !           629: /*QUAKED ambient_suck_wind (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           630: */
        !           631: void() ambient_suck_wind =
        !           632: {
        !           633:        precache_sound ("ambience/suck1.wav");
        !           634:        ambientsound (self.origin, "ambience/suck1.wav", 1, ATTN_STATIC);
        !           635: };
        !           636: 
        !           637: /*QUAKED ambient_drone (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           638: */
        !           639: void() ambient_drone =
        !           640: {
        !           641:        precache_sound ("ambience/drone6.wav");
        !           642:        ambientsound (self.origin, "ambience/drone6.wav", 0.5, ATTN_STATIC);
        !           643: };
        !           644: 
        !           645: /*QUAKED ambient_flouro_buzz (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           646: */
        !           647: void() ambient_flouro_buzz =
        !           648: {
        !           649:        precache_sound ("ambience/buzz1.wav");
        !           650:        ambientsound (self.origin, "ambience/buzz1.wav", 1, ATTN_STATIC);
        !           651: };
        !           652: /*QUAKED ambient_drip (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           653: */
        !           654: void() ambient_drip =
        !           655: {
        !           656:        precache_sound ("ambience/drip1.wav");
        !           657:        ambientsound (self.origin, "ambience/drip1.wav", 0.5, ATTN_STATIC);
        !           658: };
        !           659: /*QUAKED ambient_comp_hum (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           660: */
        !           661: void() ambient_comp_hum =
        !           662: {
        !           663:        precache_sound ("ambience/comp1.wav");
        !           664:        ambientsound (self.origin, "ambience/comp1.wav", 1, ATTN_STATIC);
        !           665: };
        !           666: /*QUAKED ambient_thunder (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           667: */
        !           668: void() ambient_thunder =
        !           669: {
        !           670:        precache_sound ("ambience/thunder1.wav");
        !           671:        ambientsound (self.origin, "ambience/thunder1.wav", 0.5, ATTN_STATIC);
        !           672: };
        !           673: /*QUAKED ambient_light_buzz (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           674: */
        !           675: void() ambient_light_buzz =
        !           676: {
        !           677:        precache_sound ("ambience/fl_hum1.wav");
        !           678:        ambientsound (self.origin, "ambience/fl_hum1.wav", 0.5, ATTN_STATIC);
        !           679: };
        !           680: /*QUAKED ambient_swamp1 (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           681: */
        !           682: void() ambient_swamp1 =
        !           683: {
        !           684:        precache_sound ("ambience/swamp1.wav");
        !           685:        ambientsound (self.origin, "ambience/swamp1.wav", 0.5, ATTN_STATIC);
        !           686: };
        !           687: /*QUAKED ambient_swamp2 (0.3 0.1 0.6) (-10 -10 -8) (10 10 8)
        !           688: */
        !           689: void() ambient_swamp2 =
        !           690: {
        !           691:        precache_sound ("ambience/swamp2.wav");
        !           692:        ambientsound (self.origin, "ambience/swamp2.wav", 0.5, ATTN_STATIC);
        !           693: };
        !           694: 
        !           695: //============================================================================
        !           696: 
        !           697: void() noise_think =
        !           698: {
        !           699:        self.nextthink = time + 0.5;
        !           700:        sound (self, 1, "enforcer/enfire.wav", 1, ATTN_NORM);
        !           701:        sound (self, 2, "enforcer/enfstop.wav", 1, ATTN_NORM);
        !           702:        sound (self, 3, "enforcer/sight1.wav", 1, ATTN_NORM);
        !           703:        sound (self, 4, "enforcer/sight2.wav", 1, ATTN_NORM);
        !           704:        sound (self, 5, "enforcer/sight3.wav", 1, ATTN_NORM);
        !           705:        sound (self, 6, "enforcer/sight4.wav", 1, ATTN_NORM);
        !           706:        sound (self, 7, "enforcer/pain1.wav", 1, ATTN_NORM);
        !           707: };
        !           708: 
        !           709: /*QUAKED misc_noisemaker (1 0.5 0) (-10 -10 -10) (10 10 10)
        !           710: 
        !           711: For optimzation testing, starts a lot of sounds.
        !           712: */
        !           713: 
        !           714: void() misc_noisemaker =
        !           715: 
        !           716: {
        !           717:        precache_sound2 ("enforcer/enfire.wav");
        !           718:        precache_sound2 ("enforcer/enfstop.wav");
        !           719:        precache_sound2 ("enforcer/sight1.wav");
        !           720:        precache_sound2 ("enforcer/sight2.wav");
        !           721:        precache_sound2 ("enforcer/sight3.wav");
        !           722:        precache_sound2 ("enforcer/sight4.wav");
        !           723:        precache_sound2 ("enforcer/pain1.wav");
        !           724:        precache_sound2 ("enforcer/pain2.wav");
        !           725:        precache_sound2 ("enforcer/death1.wav");
        !           726:        precache_sound2 ("enforcer/idle1.wav");
        !           727: 
        !           728:        self.nextthink = time + 0.1 + random();
        !           729:        self.think = noise_think;
        !           730: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.