From 03145133a55951f209b0b514f45f162823103944 Mon Sep 17 00:00:00 2001 From: Shanjaq Date: Sun, 9 Jun 2019 20:17:23 -0700 Subject: [PATCH] add fixes from portals to h2 --- h2/skullwiz.hc | 16 +++++-- h2/sound.hc | 114 +++++++++++++++++++++++++++++++++++++++++++------ h2/triggers.hc | 14 +++++- 3 files changed, 126 insertions(+), 18 deletions(-) diff --git a/h2/skullwiz.hc b/h2/skullwiz.hc index 72ba92c..d7ffb4d 100644 --- a/h2/skullwiz.hc +++ b/h2/skullwiz.hc @@ -742,13 +742,21 @@ float loop_cnt,forward,dot; else spot1 = self.origin; - forward = random(120,200); - spot2 = spot1 + (v_forward * forward); - traceline (spot1, spot2 + (v_forward * 30) , FALSE, self.enemy); + //forward = random(120,200); + //spot2 = spot1 + (v_forward * forward); + //traceline (spot1, spot2 + (v_forward * 30) , FALSE, self.enemy); + forward = random((self.size_x + self.size_y),200.00000); + spot2 = (spot1 + (v_forward * forward) + (v_up * forward)); + traceline ( spot1, (spot2 + (v_forward * ((self.size_x + self.size_y) * 0.5))), TRUE, self.enemy); if (trace_fraction == 1.0) // Check no one is standing where monster wants to be { + traceline ( spot2, (spot2 - (v_up * (forward * 2.00000))), TRUE, self.enemy); + spot2 = trace_endpos; + makevectors (newangle); - tracearea (spot2,spot2 + v_up * 80,'-32 -32 -10','32 32 46',FALSE,self); + //tracearea (spot2,spot2 + v_up * 80,'-32 -32 -10','32 32 46',FALSE,self); + //tracearea ( spot2, (spot2 + (v_up * 80.00000)), '-32 -32 -10', '32 32 46', FALSE, self); + tracearea ( spot2, (spot2 + (v_up * 80.00000)), self.mins, self.maxs, FALSE, self.enemy); if ((trace_fraction == 1.0) && (!trace_allsolid)) // Check there is a floor at the new spot { spot3 = spot2 + (v_up * -4); diff --git a/h2/sound.hc b/h2/sound.hc index f044448..9d4aca2 100644 --- a/h2/sound.hc +++ b/h2/sound.hc @@ -7,6 +7,38 @@ void sound_maker_run(void) sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM); } +void music_player_run(void) +{ + local entity found; + + found = find(world, classname, "player"); + while (found) + { + if (self.noise1 == "") + { + stuffcmd(found, "music_stop\n"); + } + else + { + if (self.flags & 1) + stuffcmd(found, "music_loop 1\n"); + else + stuffcmd(found, "music_loop 0\n"); + + stuffcmd(found, "music "); + stuffcmd(found, self.noise1); + stuffcmd(found, "\n"); + } + found = find ( found, classname, "player"); + } +} + +void music_player_wait(void) +{ + self.think = music_player_run; + thinktime self : self.delay; +} + void sound_maker_wait(void) { self.think = sound_maker_run; @@ -72,7 +104,7 @@ void sound_again(void) sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM); self.think = sound_again; - self.nextthink = time + random(5,30); + thinktime self : random(self.flags,self.flags2); } @@ -110,15 +142,17 @@ void sound_ambient (void) { precache_sound ("ambience/drip1.wav"); self.noise1 = ("ambience/drip1.wav"); + self.flags = 5; + self.flags2 = 30; self.think = sound_again; - thinktime self : random(5,30); } else if (self.soundtype == 3) { precache_sound ("ambience/drip2.wav"); self.noise1 = ("ambience/drip2.wav"); + self.flags = 5; + self.flags2 = 30; self.think = sound_again; - thinktime self : random(5,30); } else if (self.soundtype == 4) { @@ -129,29 +163,33 @@ void sound_ambient (void) { precache_sound ("ambience/night.wav"); self.noise1 = ("ambience/night.wav"); + self.flags = 5; + self.flags2 = 30; self.think = sound_again; - thinktime self : random(5,30); } else if (self.soundtype == 6) { precache_sound ("ambience/birds.wav"); self.noise1 = ("ambience/birds.wav"); + self.flags = 15; + self.flags2 = 60; self.think = sound_again; - thinktime self : random(15,60); } else if (self.soundtype == 7) { precache_sound ("ambience/raven.wav"); self.noise1 = ("ambience/raven.wav"); + self.flags = 15; + self.flags2 = 60; self.think = sound_again; - thinktime self : random(15,60); } else if (self.soundtype == 8) { precache_sound ("ambience/rockfall.wav"); self.noise1 = ("ambience/rockfall.wav"); + self.flags = 15; + self.flags2 = 60; self.think = sound_again; - thinktime self : random(15,60); } else if (self.soundtype == 9) { @@ -169,7 +207,9 @@ void sound_ambient (void) self.noise1 = ("ambience/metal.wav"); precache_sound ("ambience/metal2.wav"); self.noise2 = ("ambience/metal2.wav"); - thinktime self : random(5,30); + self.flags = 5; + self.flags2 = 30; + self.think = sound_again; } else if (self.soundtype == 12) { @@ -177,7 +217,9 @@ void sound_ambient (void) self.noise1 = ("ambience/pounding.wav"); precache_sound ("ambience/poundin2.wav"); self.noise2 = ("ambience/poundin2.wav"); - thinktime self : random(5,30); + self.flags = 5; + self.flags2 = 30; + self.think = sound_again; } else if (self.soundtype == 13) { @@ -187,7 +229,9 @@ void sound_ambient (void) self.noise2 = ("ambience/moan2.wav"); precache_sound ("ambience/moan3.wav"); self.noise3 = ("ambience/moan3.wav"); - thinktime self : random(5,30); + self.flags = 5; + self.flags2 = 30; + self.think = sound_again; } else if (self.soundtype == 14) { @@ -195,19 +239,65 @@ void sound_ambient (void) self.noise1 = ("ambience/creak.wav"); precache_sound ("ambience/creak2.wav"); self.noise2 = ("ambience/creak2.wav"); - thinktime self : random(5,30); + self.flags = 5; + self.flags2 = 30; + self.think = sound_again; } else if (self.soundtype == 15) { precache_sound ("ambience/rattle.wav"); self.noise1 = ("ambience/rattle.wav"); - thinktime self : random(5,30); + self.flags = 5; + self.flags2 = 30; + self.think = sound_again; } if (!self.think) ambientsound (self.origin, self.noise1, 1, ATTN_STATIC); else + { sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM); + thinktime self : random(self.flags,self.flags2); + } } + +void custom_sound_maker (void) +{ + precache_sound (self.netname); + self.noise1 = (self.netname); + + if (self.delay) + self.use = sound_maker_wait; + else + self.use = sound_maker_run; +} + + + +void custom_sound_ambient (void) +{ + precache_sound (self.netname); + self.noise1 = (self.netname); + + if (self.flags) { + self.think = sound_again; + thinktime self : random(self.flags,self.flags2); + } + + if (!self.think) + ambientsound (self.origin, self.noise1, 1, ATTN_STATIC); + else + sound (self, CHAN_VOICE, self.noise1, 1, ATTN_NORM); +} + +void custom_music_player (void) +{ + self.noise1 = (self.netname); + + if (self.delay) + self.use = music_player_wait; + else + self.use = music_player_run; +} diff --git a/h2/triggers.hc b/h2/triggers.hc index 2fc9525..a43b833 100644 --- a/h2/triggers.hc +++ b/h2/triggers.hc @@ -1058,7 +1058,12 @@ float poof_speed; org = t.origin + 32 * v_forward; } else - org=t.origin; + { + if (!self.spawnflags & SILENT) + org=t.origin - '0 0 27'; + else + org=t.origin; + } spawn_tdeath(t.origin, other); @@ -1094,7 +1099,12 @@ float poof_speed; poof_speed = 225; // otherwise cant reach the balcony */ else - poof_speed = 300; + { + if (!self.spawnflags & SILENT) + poof_speed = 300; + else + poof_speed = vlen(other.velocity); + } other.velocity = v_forward * poof_speed; }