diff --git a/amtest.qc b/amtest.qc index 97f9592..af59720 100644 --- a/amtest.qc +++ b/amtest.qc @@ -4,10 +4,10 @@ void() test_teleport_touch; void() tele_done; -/*QUAKED test_teleport (0 .5 .8) ? +/*QUAKED test_teleport (0 .5 .8) ? Teleporter testing -*/ -void() test_teleport = +*/ +void() test_teleport = { precache_model ("sprites/s_aball.spr"); setsize (self, self.mins, self.maxs); @@ -43,10 +43,10 @@ void() tele_done = void() test_goaway; void() test_spawn; -/*QUAKED test_fodder (0 .5 .8) ? +/*QUAKED test_fodder (0 .5 .8) ? beating guy -*/ -void() test_fodder = +*/ +void() test_fodder = { self.nextthink = time + 3; self.think = test_spawn; diff --git a/boss.qc b/boss.qc index 837dd33..949de52 100644 --- a/boss.qc +++ b/boss.qc @@ -5,7 +5,7 @@ BOSS-ONE ============================================================================== */ -$cd /raid/quake/id1/models/boss1 +$cd id1/models/boss1 $origin 0 0 -15 $base base $skin skin diff --git a/client.qc b/client.qc index 3cc4712..7a9d3b2 100644 --- a/client.qc +++ b/client.qc @@ -32,6 +32,12 @@ void() info_intermission = void() SetChangeParms = { + if (self.health <= 0) + { + SetNewParms (); + return; + } + // remove items self.items = self.items - (self.items & (IT_KEY1 | IT_KEY2 | IT_INVISIBILITY | IT_INVULNERABILITY | IT_SUIT | IT_QUAD) ); @@ -63,7 +69,7 @@ void() SetNewParms = parm4 = 25; parm5 = 0; parm6 = 0; - parm6 = 0; + parm7 = 0; parm8 = 1; parm9 = 0; }; @@ -562,98 +568,65 @@ RULES =============================================================================== */ -void(entity c) PrintClientScore = -{ - if (c.frags > -10 && c.frags < 0) - bprint (" "); - else if (c.frags >= 0) - { - if (c.frags < 100) - bprint (" "); - if (c.frags < 10) - bprint (" "); - } - bprint (ftos(c.frags)); - bprint (" "); - bprint (c.netname); - bprint ("\n"); -}; - -void() DumpScore = -{ - local entity e, sort, walk; - - if (world.chain) - error ("DumpScore: world.chain is set"); - -// build a sorted lis - e = find(world, classname, "player"); - sort = world; - while (e) - { - if (!sort) - { - sort = e; - e.chain = world; - } - else - { - if (e.frags > sort.frags) - { - e.chain = sort; - sort = e; - } - else - { - walk = sort; - do - { - if (!walk.chain) - { - e.chain = world; - walk.chain = e; - } - else if (walk.chain.frags < e.frags) - { - e.chain = walk.chain; - walk.chain = e; - } - else - walk = walk.chain; - } while (walk.chain != e); - } - } - - e = find(e, classname, "player"); - } - -// print the list - - bprint ("\n"); - while (sort) - { - PrintClientScore (sort); - sort = sort.chain; - } - bprint ("\n"); -}; - /* go to the next level for deathmatch +only called if a time or frag limit has expired */ void() NextLevel = { local entity o; -// find a trigger changelevel - o = find(world, classname, "trigger_changelevel"); - if (!o || mapname == "start") - { // go back to same map if no trigger_changelevel + if (mapname == "start") + { + if (!cvar("registered")) + { + mapname = "e1m1"; + } + else if (!(serverflags & 1)) + { + mapname = "e1m1"; + serverflags = serverflags + 1; + } + else if (!(serverflags & 2)) + { + mapname = "e2m1"; + serverflags = serverflags + 2; + } + else if (!(serverflags & 4)) + { + mapname = "e3m1"; + serverflags = serverflags + 4; + } + else if (!(serverflags & 8)) + { + mapname = "e4m1"; + serverflags = serverflags + 8; + } + else + { + mapname = "start"; + serverflags = serverflags - 15; + } + o = spawn(); o.map = mapname; } + else + { + // find a trigger changelevel + o = find(world, classname, "trigger_changelevel"); + + // go back to start if no trigger_changelevel + if (!o) + { + mapname = "start"; + o = spawn(); + o.map = mapname; + } + } nextmap = o.map; + gameover = TRUE; if (o.nextthink < time) { @@ -682,31 +655,13 @@ void() CheckRules = if (timelimit && time >= timelimit) { -NextLevel (); -/* - gameover = TRUE; - bprint ("\n\n\n==============================\n"); - bprint ("game exited after "); - bprint (ftos(timelimit/60)); - bprint (" minutes\n"); - DumpScore (); - localcmd ("killserver\n"); -*/ + NextLevel (); return; } if (fraglimit && self.frags >= fraglimit) { -NextLevel (); -/* - gameover = TRUE; - bprint ("\n\n\n==============================\n"); - bprint ("game exited after "); - bprint (ftos(self.frags)); - bprint (" frags\n"); - DumpScore (); - localcmd ("killserver\n"); -*/ + NextLevel (); return; } }; @@ -1254,12 +1209,25 @@ void(entity targ, entity attacker) ClientObituary = bprint (" discharges into the water.\n"); return; } - if (targ.weapon == 16) + if (targ.weapon == IT_GRENADE_LAUNCHER) bprint (" tries to put the pin back in\n"); - else if (rnum) - bprint (" becomes bored with life\n"); else - bprint (" checks if his weapon is loaded\n"); + bprint (" becomes bored with life\n"); + return; + } + else if ( (teamplay == 2) && (targ.team > 0)&&(targ.team == attacker.team) ) + { + if (rnum < 0.25) + deathstring = " mows down a teammate\n"; + else if (rnum < 0.50) + deathstring = " checks his glasses\n"; + else if (rnum < 0.75) + deathstring = " gets a frag for the other team\n"; + else + deathstring = " loses another friend\n"; + bprint (attacker.netname); + bprint (deathstring); + attacker.frags = attacker.frags - 1; return; } else @@ -1329,40 +1297,10 @@ void(entity targ, entity attacker) ClientObituary = } else { - targ.frags = targ.frags - 1; // killed self - rnum = targ.watertype; - + targ.frags = targ.frags - 1; bprint (targ.netname); - if (rnum == -3) - { - if (random() < 0.5) - bprint (" sleeps with the fishes\n"); - else - bprint (" sucks it down\n"); - return; - } - else if (rnum == -4) - { - if (random() < 0.5) - bprint (" gulped a load of slime\n"); - else - bprint (" can't exist on slime alone\n"); - return; - } - else if (rnum == -5) - { - if (targ.health < -15) - { - bprint (" burst into flames\n"); - return; - } - if (random() < 0.5) - bprint (" turned into hot slag\n"); - else - bprint (" visits the Volcano God\n"); - return; - } + // killed by a montser? if (attacker.flags & FL_MONSTER) { if (attacker.classname == "monster_army") @@ -1400,6 +1338,8 @@ void(entity targ, entity attacker) ClientObituary = return; } + + // tricks and traps if (attacker.classname == "explo_box") { bprint (" blew up\n"); @@ -1410,12 +1350,6 @@ void(entity targ, entity attacker) ClientObituary = bprint (" was squished\n"); return; } - if (targ.deathtype == "falling") - { - targ.deathtype = ""; - bprint (" fell to his death\n"); - return; - } if (attacker.classname == "trap_shooter" || attacker.classname == "trap_spikeshooter") { bprint (" was spiked\n"); @@ -1432,6 +1366,47 @@ void(entity targ, entity attacker) ClientObituary = return; } + // in-water deaths + rnum = targ.watertype; + if (rnum == -3) + { + if (random() < 0.5) + bprint (" sleeps with the fishes\n"); + else + bprint (" sucks it down\n"); + return; + } + else if (rnum == -4) + { + if (random() < 0.5) + bprint (" gulped a load of slime\n"); + else + bprint (" can't exist on slime alone\n"); + return; + } + else if (rnum == -5) + { + if (targ.health < -15) + { + bprint (" burst into flames\n"); + return; + } + if (random() < 0.5) + bprint (" turned into hot slag\n"); + else + bprint (" visits the Volcano God\n"); + return; + } + + // fell to their death? + if (targ.deathtype == "falling") + { + targ.deathtype = ""; + bprint (" fell to his death\n"); + return; + } + + // hell if I know; he's just dead!!! bprint (" died\n"); } } diff --git a/demon.qc b/demon.qc index 574a95b..e4deea0 100644 --- a/demon.qc +++ b/demon.qc @@ -6,7 +6,7 @@ DEMON ============================================================================== */ -$cd /raid/quake/id1/models/demon3 +$cd id1/models/demon3 $scale 0.8 $origin 0 0 24 $base base diff --git a/dog.qc b/dog.qc index 127678b..bc46fe0 100644 --- a/dog.qc +++ b/dog.qc @@ -5,7 +5,7 @@ DOG ============================================================================== */ -$cd /raid/quake/id1/models/dog +$cd id1/models/dog $origin 0 0 24 $base base $skin skin diff --git a/doors.qc b/doors.qc index 3398f6c..5a85ca8 100644 --- a/doors.qc +++ b/doors.qc @@ -770,6 +770,7 @@ void () func_door_secret = self.health = 10000; self.takedamage = DAMAGE_YES; self.th_pain = fd_secret_use; + self.th_die = fd_secret_use; } self.oldorigin = self.origin; if (!self.wait) diff --git a/enforcer.qc b/enforcer.qc index f3b9320..29216f0 100644 --- a/enforcer.qc +++ b/enforcer.qc @@ -6,7 +6,7 @@ SOLDIER / PLAYER ============================================================================== */ -$cd /raid/quake/id1/models/enforcer +$cd id1/models/enforcer $origin 0 -6 24 $base base $skin skin diff --git a/fish.qc b/fish.qc index 02e5149..ce6e26e 100644 --- a/fish.qc +++ b/fish.qc @@ -1,4 +1,4 @@ -$cd /raid/quake/id1/models/fish +$cd id1/models/fish $origin 0 0 24 $base base $skin skin diff --git a/hknight.qc b/hknight.qc index 9139b34..0e239e0 100644 --- a/hknight.qc +++ b/hknight.qc @@ -6,7 +6,7 @@ KNIGHT ============================================================================== */ -$cd /raid/quake/id1/models/knight2 +$cd id1/models/knight2 $origin 0 0 24 $base base $skin skin diff --git a/items.qc b/items.qc index dd81867..ac43a28 100644 --- a/items.qc +++ b/items.qc @@ -638,7 +638,7 @@ local float best; // cells if (self.weapon == 4) { - if (other.ammo_cells >= 200) + if (other.ammo_cells >= 100) return; other.ammo_cells = other.ammo_cells + self.aflag; } @@ -674,7 +674,6 @@ local float best; self.solid = SOLID_NOT; if (deathmatch == 1) self.nextthink = time + 30; - self.think = SUB_regen; activator = other; @@ -1230,7 +1229,7 @@ PLAYER BACKPACKS void() BackpackTouch = { local string s; - local float best; + local float best, old, new; local entity stemp; if (other.classname != "player") @@ -1250,7 +1249,9 @@ void() BackpackTouch = other.ammo_rockets = other.ammo_rockets + self.ammo_rockets; other.ammo_cells = other.ammo_cells + self.ammo_cells; - other.items = other.items | self.items; + old = other.items; + new = self.items; + other.items = other.items | new; bound_other_ammo (); @@ -1286,19 +1287,16 @@ void() BackpackTouch = sound (other, CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM); stuffcmd (other, "bf\n"); -// change to a better weapon if appropriate - if ( other.weapon == best ) - { - stemp = self; - self = other; - self.weapon = W_BestWeapon(); - self = stemp; - } - - +// remove the backpack, change self to the player remove(self); - self = other; + +// change to the weapon + if (!deathmatch) + self.weapon = new; + else + Deathmatch_Weapon (old, new); + W_SetCurrentAmmo (); }; diff --git a/knight.qc b/knight.qc index 7fd8256..5b160c7 100644 --- a/knight.qc +++ b/knight.qc @@ -6,7 +6,7 @@ KNIGHT ============================================================================== */ -$cd /raid/quake/id1/models/knight +$cd id1/models/knight $origin 0 0 24 $base base $skin badass3 diff --git a/models.qc b/models.qc index 56f474d..70e273c 100644 --- a/models.qc +++ b/models.qc @@ -8,7 +8,7 @@ WORLD WEAPONS */ $modelname g_shot -$cd /raid/quake/id1/models/g_shot +$cd id1/models/g_shot $origin 0 0 -24 $flags 8 // client side rotate $base base @@ -17,7 +17,7 @@ $frame shot1 $modelname g_nail -$cd /raid/quake/id1/models/g_nail +$cd id1/models/g_nail $flags 8 // client side rotate $origin 0 0 -24 $base base @@ -26,7 +26,7 @@ $frame shot1 $modelname g_nail2 -$cd /raid/quake/id1/models/g_nail2 +$cd id1/models/g_nail2 $flags 8 // client side rotate $origin 0 0 -24 $base base @@ -35,7 +35,7 @@ $frame shot2 $modelname g_rock -$cd /raid/quake/id1/models/g_rock +$cd id1/models/g_rock $flags 8 // client side rotate $origin 0 0 -24 $base base @@ -44,7 +44,7 @@ $frame shot1 $modelname g_rock2 -$cd /raid/quake/id1/models/g_rock2 +$cd id1/models/g_rock2 $flags 8 // client side rotate $origin 0 0 -24 $base base @@ -52,7 +52,7 @@ $skin skin $frame shot1 $modelname g_light -$cd /raid/quake/id1/models/g_light +$cd id1/models/g_light $flags 8 // client side rotate $origin 0 0 -24 $base base @@ -68,7 +68,7 @@ VIEW WEAPONS */ $modelname v_axe -$cd /raid/quake/id1/models/v_axe +$cd id1/models/v_axe $origin 0 5 54 $base base $skin skin @@ -76,7 +76,7 @@ $frame frame1 frame2 frame3 frame4 frame5 frame6 frame7 frame8 frame9 $modelname v_shot -$cd /raid/quake/id1/models/v_shot +$cd id1/models/v_shot $origin 0 0 54 $base base $skin skin @@ -84,7 +84,7 @@ $frame shot1 shot2 shot3 shot4 shot5 shot6 shot7 $modelname v_shot2 -$cd /raid/quake/id1/models/v_shot2 +$cd id1/models/v_shot2 $origin 0 0 56 $base base $skin skin @@ -92,7 +92,7 @@ $frame shot1 shot2 shot3 shot4 shot5 shot6 shot7 $modelname v_rock2 -$cd /raid/quake/id1/models/v_rock2 +$cd id1/models/v_rock2 $origin 0 0 54 $base base $skin skin @@ -100,7 +100,7 @@ $frame shot1 shot2 shot3 shot4 shot5 shot6 shot6 $modelname v_rock -$cd /raid/quake/id1/models/v_rock +$cd id1/models/v_rock $origin 0 0 54 $base base $skin skin @@ -108,7 +108,7 @@ $frame shot1 shot2 shot3 shot4 shot5 shot6 shot7 $modelname v_nail2 -$cd /raid/quake/id1/models/v_nail2 +$cd id1/models/v_nail2 $origin 0 0 54 $base base $skin skin @@ -116,14 +116,14 @@ $frame shot1 shot2 shot3 shot4 shot5 shot6 shot7 shot8 shot9 $modelname v_nail -$cd /raid/quake/id1/models/v_nail +$cd id1/models/v_nail $origin 0 0 54 $base base $skin skin $frame shot1 shot2 shot3 shot4 shot5 shot6 shot7 shot8 shot9 $modelname v_light -$cd /raid/quake/id1/models/v_light +$cd id1/models/v_light $origin 0 0 54 $base base $skin skin @@ -139,42 +139,42 @@ ITEMS */ $modelname w_g_key -$cd /raid/quake/id1/models/w_g_key +$cd id1/models/w_g_key $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname w_s_key -$cd /raid/quake/id1/models/w_s_key +$cd id1/models/w_s_key $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname m_g_key -$cd /raid/quake/id1/models/m_g_key +$cd id1/models/m_g_key $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname m_s_key -$cd /raid/quake/id1/models/m_s_key +$cd id1/models/m_s_key $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname b_g_key -$cd /raid/quake/id1/models/b_g_key +$cd id1/models/b_g_key $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname b_s_key -$cd /raid/quake/id1/models/b_s_key +$cd id1/models/b_s_key $flags 8 // client side rotate $base base $skin skin @@ -182,14 +182,14 @@ $frame frame1 $modelname quaddama -$cd /raid/quake/id1/models/quaddama +$cd id1/models/quaddama $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname invisibl -$cd /raid/quake/id1/models/invisibl +$cd id1/models/invisibl $flags 8 // client side rotate $base base $skin skin @@ -197,62 +197,62 @@ $frame frame1 $modelname invulner $flags 8 // client side rotate -$cd /raid/quake/id1/models/invulner +$cd id1/models/invulner $base base $skin skin $frame frame1 //modelname jetpack -//cd /raid/quake/id1/models/jetpack +//cd id1/models/jetpack //flags 8 // client side rotate //base base //skin skin //frame frame1 $modelname cube -$cd /raid/quake/id1/models/cube +$cd id1/models/cube $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname suit -$cd /raid/quake/id1/models/suit +$cd id1/models/suit $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname boots -$cd /raid/quake/id1/models/boots +$cd id1/models/boots $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname end1 -$cd /raid/quake/id1/models/end1 +$cd id1/models/end1 $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname end2 -$cd /raid/quake/id1/models/end2 +$cd id1/models/end2 $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname end3 -$cd /raid/quake/id1/models/end3 +$cd id1/models/end3 $flags 8 // client side rotate $base base $skin skin $frame frame1 $modelname end4 -$cd /raid/quake/id1/models/end4 +$cd id1/models/end4 $flags 8 // client side rotate $base base $skin skin @@ -268,7 +268,7 @@ GIBS */ $modelname gib1 -$cd /raid/quake/id1/models/gib1 +$cd id1/models/gib1 $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -278,7 +278,7 @@ $frame frame1 // torso $modelname gib2 -$cd /raid/quake/id1/models/gib2 +$cd id1/models/gib2 $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -286,7 +286,7 @@ $skin skin $frame frame1 $modelname gib3 -$cd /raid/quake/id1/models/gib3 +$cd id1/models/gib3 $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -297,7 +297,7 @@ $frame frame1 // heads $modelname h_player -$cd /raid/quake/id1/models/h_player +$cd id1/models/h_player $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -305,7 +305,7 @@ $skin skin $frame frame1 $modelname h_dog -$cd /raid/quake/id1/models/h_dog +$cd id1/models/h_dog $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -313,7 +313,7 @@ $skin skin $frame frame1 $modelname h_mega -$cd /raid/quake/id1/models/h_mega +$cd id1/models/h_mega $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -321,7 +321,7 @@ $skin skin $frame frame1 $modelname h_guard -$cd /raid/quake/id1/models/h_guard +$cd id1/models/h_guard $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -329,7 +329,7 @@ $skin skin $frame frame1 $modelname h_wizard -$cd /raid/quake/id1/models/h_wizard +$cd id1/models/h_wizard $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -337,7 +337,7 @@ $skin skin $frame frame1 $modelname h_knight -$cd /raid/quake/id1/models/h_knight +$cd id1/models/h_knight $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -345,7 +345,7 @@ $skin skin $frame frame1 $modelname h_hellkn -$cd /raid/quake/id1/models/h_hellkn +$cd id1/models/h_hellkn $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -353,7 +353,7 @@ $skin skin $frame frame1 $modelname h_zombie -$cd /raid/quake/id1/models/h_zombie +$cd id1/models/h_zombie $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -361,7 +361,7 @@ $skin skin $frame frame1 $modelname h_shams -$cd /raid/quake/id1/models/h_shams +$cd id1/models/h_shams $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -369,7 +369,7 @@ $skin skin $frame frame1 $modelname h_shal -$cd /raid/quake/id1/models/h_shal +$cd id1/models/h_shal $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -377,7 +377,7 @@ $skin skin $frame frame1 $modelname h_ogre -$cd /raid/quake/id1/models/h_ogre +$cd id1/models/h_ogre $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -385,7 +385,7 @@ $skin skin $frame frame1 $modelname h_demon -$cd /raid/quake/id1/models/h_demon +$cd id1/models/h_demon $flags 4 // EF_GIB $origin 0 0 0 $base base @@ -401,7 +401,7 @@ MISC */ $modelname armor -$cd /raid/quake/id1/models/armor +$cd id1/models/armor $flags 8 // client side rotate $origin 0 0 -8 $base base @@ -411,14 +411,14 @@ $skin skin3 $frame armor $modelname s_light // shambler lightning ready -$cd /raid/quake/id1/models/s_light +$cd id1/models/s_light $origin 0 0 24 $base base $skin skin $frame frame1 frame2 frame3 $modelname bolt3 // lightning towar bolts -$cd /raid/quake/id1/models/bolt2 +$cd id1/models/bolt2 $origin 0 0 0 $base base $scale 4 @@ -426,28 +426,28 @@ $skin skin $frame light $modelname bolt2 -$cd /raid/quake/id1/models/bolt2 +$cd id1/models/bolt2 $origin 0 0 0 $base base $skin skin $frame light $modelname bolt -$cd /raid/quake/id1/models/bolt +$cd id1/models/bolt $origin 0 0 0 $base light $skin light $frame light $modelname laser -$cd /raid/quake/id1/models/laser +$cd id1/models/laser $base base $skin skin $scale 2 $frame frame1 $modelname flame // with torch -$cd /raid/quake/id1/models/flame +$cd id1/models/flame $origin 0 0 12 $base base $skin skin @@ -461,7 +461,7 @@ $frame flame6 0.1 $framegroupend $modelname flame2 // standing flame, no torch -$cd /raid/quake/id1/models/flame2 +$cd id1/models/flame2 $origin 0 0 12 $base base $skin skin @@ -488,35 +488,35 @@ $frame flameb11 $framegroupend $modelname zom_gib -$cd /raid/quake/id1/models/zom_gib +$cd id1/models/zom_gib $flags 32 // EF_ZOMGIB $base base $skin skin $frame frame1 $modelname eyes -$cd /raid/quake/id1/models/eyes +$cd id1/models/eyes $origin 0 0 -24 $base base $skin skin $frame frame1 $modelname spike -$cd /raid/quake/id1/models/spike +$cd id1/models/spike $origin 0 0 0 $base spike $skin skin $frame spike $modelname s_spike -$cd /raid/quake/id1/models/s_spike +$cd id1/models/s_spike $origin 0 0 0 $base spike $skin skin $frame spike $modelname v_spike -$cd /raid/quake/id1/models/v_spike +$cd id1/models/v_spike $flags 128 // EF_TRACER3 $origin 0 0 0 $base base @@ -524,7 +524,7 @@ $skin skin $frame frame1 $modelname w_spike -$cd /raid/quake/id1/models/w_spike +$cd id1/models/w_spike $flags 16 // EF_TRACER $origin 0 0 0 $base base @@ -537,7 +537,7 @@ $frame frame4 0.1 $framegroupend $modelname k_spike -$cd /raid/quake/id1/models/k_spike +$cd id1/models/k_spike $flags 64 // EF_TRACER2 $origin 0 0 0 $base base @@ -545,7 +545,7 @@ $skin skin $frame frame1 $modelname backpack -$cd /raid/quake/id1/models/backpack +$cd id1/models/backpack $flags 8 // EF_ROTATE $origin 0 0 0 $base base @@ -553,7 +553,7 @@ $skin skin $frame frame1 $modelname grenade -$cd /raid/quake/id1/models/grenade2 +$cd id1/models/grenade2 $flags 2 // EF_GRENADE $origin 0 0 0 $base base @@ -561,7 +561,7 @@ $skin skin $frame grenade $modelname missile -$cd /raid/quake/id1/models/missile +$cd id1/models/missile $flags 1 // EF_ROCKET $origin 0 0 0 $base base @@ -569,7 +569,7 @@ $skin skin $frame missile $modelname lavaball -$cd /raid/quake/id1/models/lavaball +$cd id1/models/lavaball $flags 1 // EF_ROCKET $origin 0 0 0 $base base @@ -577,7 +577,7 @@ $skin skin $frame frame1 $modelname teleport -$cd /raid/quake/id1/models/teleport +$cd id1/models/teleport $origin 0 0 24 $base base $skin skin diff --git a/ogre.qc b/ogre.qc index dea3f88..32dd78d 100644 --- a/ogre.qc +++ b/ogre.qc @@ -6,7 +6,7 @@ OGRE ============================================================================== */ -$cd /raid/quake/id1/models/ogre_c +$cd id1/models/ogre_c $origin 0 0 24 $base base $skin base diff --git a/oldone.qc b/oldone.qc index 5c52ca5..103d6fb 100644 --- a/oldone.qc +++ b/oldone.qc @@ -5,7 +5,7 @@ OLD ONE ============================================================================== */ -$cd /raid/quake/id1/models/old_one +$cd id1/models/old_one $origin 0 0 24 $base base $skin skin @@ -239,6 +239,13 @@ void() finale_4 = //============================================================================ +void () nopain = +{ + self.health = 40000; +}; + +//============================================================================ + /*QUAKED monster_oldone (1 0 0) (-16 -16 -24) (16 16 32) */ @@ -267,6 +274,7 @@ void() monster_oldone = self.think = old_idle1; self.nextthink = time + 0.1; self.takedamage = DAMAGE_YES; + self.th_pain = nopain; self.th_die = finale_1; shub = self; diff --git a/player.qc b/player.qc index f488edb..46098e9 100644 --- a/player.qc +++ b/player.qc @@ -9,7 +9,7 @@ PLAYER ============================================================================== */ -$cd /raid/quake/id1/models/player_4 +$cd id1/models/player_4 $origin 0 -6 24 $base base $skin skin diff --git a/progdefs.h b/progdefs.h new file mode 100644 index 0000000..eb15c45 --- /dev/null +++ b/progdefs.h @@ -0,0 +1,143 @@ + +/* file generated by qcc, do not modify */ + +typedef struct +{ int pad[28]; + int self; + int other; + int world; + float time; + float frametime; + float force_retouch; + string_t mapname; + float deathmatch; + float coop; + float teamplay; + float serverflags; + float total_secrets; + float total_monsters; + float found_secrets; + float killed_monsters; + float parm1; + float parm2; + float parm3; + float parm4; + float parm5; + float parm6; + float parm7; + float parm8; + float parm9; + float parm10; + float parm11; + float parm12; + float parm13; + float parm14; + float parm15; + float parm16; + vec3_t v_forward; + vec3_t v_up; + vec3_t v_right; + float trace_allsolid; + float trace_startsolid; + float trace_fraction; + vec3_t trace_endpos; + vec3_t trace_plane_normal; + float trace_plane_dist; + int trace_ent; + float trace_inopen; + float trace_inwater; + int msg_entity; + func_t main; + func_t StartFrame; + func_t PlayerPreThink; + func_t PlayerPostThink; + func_t ClientKill; + func_t ClientConnect; + func_t PutClientInServer; + func_t ClientDisconnect; + func_t SetNewParms; + func_t SetChangeParms; +} globalvars_t; + +typedef struct +{ + float modelindex; + vec3_t absmin; + vec3_t absmax; + float ltime; + float movetype; + float solid; + vec3_t origin; + vec3_t oldorigin; + vec3_t velocity; + vec3_t angles; + vec3_t avelocity; + vec3_t punchangle; + string_t classname; + string_t model; + float frame; + float skin; + float effects; + vec3_t mins; + vec3_t maxs; + vec3_t size; + func_t touch; + func_t use; + func_t think; + func_t blocked; + float nextthink; + int groundentity; + float health; + float frags; + float weapon; + string_t weaponmodel; + float weaponframe; + float currentammo; + float ammo_shells; + float ammo_nails; + float ammo_rockets; + float ammo_cells; + float items; + float takedamage; + int chain; + float deadflag; + vec3_t view_ofs; + float button0; + float button1; + float button2; + float impulse; + float fixangle; + vec3_t v_angle; + float idealpitch; + string_t netname; + int enemy; + float flags; + float colormap; + float team; + float max_health; + float teleport_time; + float armortype; + float armorvalue; + float waterlevel; + float watertype; + float ideal_yaw; + float yaw_speed; + int aiment; + int goalentity; + float spawnflags; + string_t target; + string_t targetname; + float dmg_take; + float dmg_save; + int dmg_inflictor; + int owner; + vec3_t movedir; + string_t message; + float sounds; + string_t noise; + string_t noise1; + string_t noise2; + string_t noise3; +} entvars_t; + +#define PROGHEADER_CRC 5927 diff --git a/shalrath.qc b/shalrath.qc index 0a42e26..adf821a 100644 --- a/shalrath.qc +++ b/shalrath.qc @@ -5,7 +5,7 @@ SHAL-RATH ============================================================================== */ -$cd /raid/quake/id1/models/shalrath +$cd id1/models/shalrath $origin 0 0 24 $base base $skin skin diff --git a/shambler.qc b/shambler.qc index 8bd8a46..7789ddd 100644 --- a/shambler.qc +++ b/shambler.qc @@ -6,7 +6,7 @@ SHAMBLER ============================================================================== */ -$cd /raid/quake/id1/models/shams +$cd id1/models/shams $origin 0 0 24 $base base $skin base diff --git a/soldier.qc b/soldier.qc index 0526b1f..f1632f5 100644 --- a/soldier.qc +++ b/soldier.qc @@ -6,7 +6,7 @@ SOLDIER / PLAYER ============================================================================== */ -$cd /raid/quake/id1/models/soldier3 +$cd id1/models/soldier3 $origin 0 -6 24 $base base $skin skin diff --git a/sprites.qc b/sprites.qc index f1bb605..6874f59 100644 --- a/sprites.qc +++ b/sprites.qc @@ -3,7 +3,7 @@ $spritename s_explod $type vp_parallel -$load /raid/quake/id1/gfx/sprites/explod03.lbm +$load id1/gfx/sprites/explod03.lbm $frame 24 24 56 56 $frame 120 24 56 56 $frame 216 24 56 56 @@ -14,13 +14,13 @@ $frame 216 88 56 56 $spritename s_bubble $type vp_parallel -$load /raid/quake/id1/gfx/sprites/bubble.lbm +$load id1/gfx/sprites/bubble.lbm $frame 16 16 16 16 $frame 40 16 16 16 $spritename s_light $type vp_parallel -$load /raid/quake/id1/gfx/sprites/light.lbm +$load id1/gfx/sprites/light.lbm $frame 104 32 32 32 diff --git a/tarbaby.qc b/tarbaby.qc index de968d1..8742afc 100644 --- a/tarbaby.qc +++ b/tarbaby.qc @@ -6,7 +6,7 @@ BLOB ============================================================================== */ -$cd /raid/quake/id1/models/tarbaby +$cd id1/models/tarbaby $origin 0 0 24 $base base diff --git a/weapons.qc b/weapons.qc index 894676e..28174a1 100644 --- a/weapons.qc +++ b/weapons.qc @@ -39,6 +39,7 @@ void() W_FireAxe = local vector source; local vector org; + makevectors (self.v_angle); source = self.origin + '0 0 16'; traceline (source, source + v_forward*64, FALSE, self); if (trace_fraction == 1.0) @@ -384,6 +385,7 @@ void() W_FireRocket = missile.owner = self; missile.movetype = MOVETYPE_FLYMISSILE; missile.solid = SOLID_BBOX; + missile.classname = "missile"; // set missile speed @@ -463,6 +465,7 @@ void(vector p1, vector p2, entity from, float damage) LightningDamage = void() W_FireLightning = { local vector org; + local float cells; if (self.ammo_cells < 1) { @@ -474,8 +477,9 @@ void() W_FireLightning = // explode if under water if (self.waterlevel > 1) { - T_RadiusDamage (self, self, 35*self.ammo_cells, world); + cells = self.ammo_cells; self.ammo_cells = 0; + T_RadiusDamage (self, self, 35*cells, world); W_SetCurrentAmmo (); return; } @@ -1121,7 +1125,81 @@ void() CycleWeaponCommand = am = 1; } - if ( (self.items & self.weapon) && am == 0) + if ( (it & self.weapon) && am == 0) + { + W_SetCurrentAmmo (); + return; + } + } + +}; + +/* +============ +CycleWeaponReverseCommand + +Go to the prev weapon with ammo +============ +*/ +void() CycleWeaponReverseCommand = +{ + local float it, am; + + it = self.items; + self.impulse = 0; + + while (1) + { + am = 0; + + if (self.weapon == IT_LIGHTNING) + { + self.weapon = IT_ROCKET_LAUNCHER; + if (self.ammo_rockets < 1) + am = 1; + } + else if (self.weapon == IT_ROCKET_LAUNCHER) + { + self.weapon = IT_GRENADE_LAUNCHER; + if (self.ammo_rockets < 1) + am = 1; + } + else if (self.weapon == IT_GRENADE_LAUNCHER) + { + self.weapon = IT_SUPER_NAILGUN; + if (self.ammo_nails < 2) + am = 1; + } + else if (self.weapon == IT_SUPER_NAILGUN) + { + self.weapon = IT_NAILGUN; + if (self.ammo_nails < 1) + am = 1; + } + else if (self.weapon == IT_NAILGUN) + { + self.weapon = IT_SUPER_SHOTGUN; + if (self.ammo_shells < 2) + am = 1; + } + else if (self.weapon == IT_SUPER_SHOTGUN) + { + self.weapon = IT_SHOTGUN; + if (self.ammo_shells < 1) + am = 1; + } + else if (self.weapon == IT_SHOTGUN) + { + self.weapon = IT_AXE; + } + else if (self.weapon == IT_AXE) + { + self.weapon = IT_LIGHTNING; + if (self.ammo_cells < 1) + am = 1; + } + + if ( (it & self.weapon) && am == 0) { W_SetCurrentAmmo (); return; @@ -1169,6 +1247,8 @@ void() ImpulseCommands = CycleWeaponCommand (); if (self.impulse == 11) ServerflagsCommand (); + if (self.impulse == 12) + CycleWeaponReverseCommand (); if (self.impulse == 255) QuadCheat (); diff --git a/wizard.qc b/wizard.qc index 65e16e1..4ee17f9 100644 --- a/wizard.qc +++ b/wizard.qc @@ -6,7 +6,7 @@ WIZARD ============================================================================== */ -$cd /raid/quake/id1/models/a_wizard +$cd id1/models/a_wizard $origin 0 0 24 $base wizbase $skin wizbase diff --git a/zombie.qc b/zombie.qc index 4126004..8065989 100644 --- a/zombie.qc +++ b/zombie.qc @@ -5,7 +5,7 @@ ZOMBIE ============================================================================== */ -$cd /raid/quake/id1/models/zombie +$cd id1/models/zombie $origin 0 0 24