]> git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/server/vore.qc
Give prey the same view orientation as predators when being swallowed
[voretournament/voretournament.git] / data / qcsrc / server / vore.qc
index 146a763a3a19c5ac73b175b7571ca4e5fc06be5d..195b5ce1964d09a0d4e2c1482b815e37bdedec58 100644 (file)
@@ -299,6 +299,7 @@ void Vore_Swallow(entity e)
        e.predator = self;\r
        setorigin(e, e.predator.origin);\r
        e.velocity = '0 0 0';\r
+       e.punchangle = '0 0 0';\r
        e.movetype = MOVETYPE_FOLLOW;\r
        e.solid = SOLID_NOT;\r
        e.aiment = e.predator; // follow the predator, automatically unset when regurgitated\r
@@ -351,6 +352,13 @@ void Vore_SwallowStep(entity e)
        if(!self.swallow_progress_pred)\r
                PlayerSound(self, playersound_grab, CHAN_PAIN, VOICETYPE_PLAYERSOUND);\r
 \r
+       // apply prey orientation\r
+       if(cvar("g_balance_vore_swallow_prey_orient"))\r
+       {\r
+               e.punchangle = self.angles - e.angles;\r
+               e.punchangle_speed = cvar("g_balance_vore_swallow_prey_orient_speed") * (1 - e.swallow_progress_prey);\r
+       }\r
+\r
        Vore_GulletModel_Update(e, self);\r
 \r
        // increase the progress value until it reaches 1, then swallow the player\r
@@ -415,6 +423,13 @@ void Vore_Regurgitate(entity e)
        e.pusher = e.predator; // allows us to frag players by regurgitating them in deadly pits\r
        e.pushltime = time + cvar("g_maxpushtime");\r
 \r
+       // apply prey orientation\r
+       if(cvar("g_balance_vore_swallow_prey_orient"))\r
+       {\r
+               e.punchangle = e.predator.angles - e.angles;\r
+               e.punchangle_speed = cvar("g_balance_vore_swallow_prey_orient_speed") * (1 - e.swallow_progress_prey);\r
+       }\r
+\r
        // if the dead body of the prey is below gibbing health, gib it\r
        e.stat_eaten = 0; // necessary for gibs to show\r
        PlayerGib(e, e.predator);\r