]> git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/server/vore.qc
Predator progress causes your prey progress to drop more quickly and the other way...
[voretournament/voretournament.git] / data / qcsrc / server / vore.qc
index 146a763a3a19c5ac73b175b7571ca4e5fc06be5d..9e71f036aab10161cda9e93cdc29c33647de87c6 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
@@ -762,9 +777,19 @@ void Vore()
        if(cvar("g_balance_vore_swallow_speed_decrease"))\r
        {\r
                if(self.swallow_progress_pred)\r
-                       self.swallow_progress_pred = max(0, self.swallow_progress_pred - cvar("g_balance_vore_swallow_speed_decrease") * frametime);\r
+               {\r
+                       float speed = cvar("g_balance_vore_swallow_speed_decrease");\r
+                       if(cvar("g_balance_vore_swallow_speed_decrease_even"))\r
+                               speed += self.swallow_progress_prey * cvar("g_balance_vore_swallow_speed_decrease_even");\r
+                       self.swallow_progress_pred = max(0, self.swallow_progress_pred - speed * frametime);\r
+               }\r
                if(self.swallow_progress_prey)\r
+               {\r
+                       float speed = cvar("g_balance_vore_swallow_speed_decrease");\r
+                       if(cvar("g_balance_vore_swallow_speed_decrease_even"))\r
+                               speed += self.swallow_progress_pred * cvar("g_balance_vore_swallow_speed_decrease_even");\r
                        self.swallow_progress_prey = max(0, self.swallow_progress_prey - cvar("g_balance_vore_swallow_speed_decrease") * frametime);\r
+               }\r
        }\r
 \r
        // set the predator's stomach load and capacity\r