Give prey the same view orientation as predators when being swallowed
authorMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Tue, 11 Jun 2013 13:35:45 +0000 (16:35 +0300)
committerMirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Tue, 11 Jun 2013 13:35:45 +0000 (16:35 +0300)
data/balanceVT.cfg
data/defaultVT.cfg
data/qcsrc/server/cl_physics.qc
data/qcsrc/server/sys.qh
data/qcsrc/server/vore.qc
docs/Release notes.txt

index 45722fc..a608a42 100644 (file)
@@ -196,7 +196,7 @@ set g_balance_grabber_reload_ammo 45
 set g_balance_grabber_reload_time 2\r
 // }}}\r
 \r
-// {{{ stomach\r
+// {{{ vore\r
 set g_balance_vore_action_delay 1 "how many seconds must pass before you can swallow or regurgitate again, after swallowing or regurgitating another player"\r
 set g_balance_vore_load_pred_capacity 100 "capacity percent a player's stomach has, influenced by player size"\r
 set g_balance_vore_load_pred_weight 1 "you get this heavier the more you eat, at 1 a full belly makes you two times heavier"\r
@@ -216,6 +216,8 @@ set g_balance_vore_swallow_dropweapon 0.6 "probability of dropping your weapon w
 set g_balance_vore_swallow_predator_punchangle 10 "your view gets tilted by this amount when swallowing someone"\r
 set g_balance_vore_swallow_predator_punchangle_item 8 "your view gets tilted by this amount when swallowing an item"\r
 set g_balance_vore_swallow_prey_punchvector 25 "your view gets lifted by this amount when getting swallowed"\r
+set g_balance_vore_swallow_prey_orient 1 "prey has the same view origin as the the predator while being swallowed"\r
+set g_balance_vore_swallow_prey_orient_speed 10 "speed at which the view returns to normal once as are no longer eaten by your predayor"\r
 set g_balance_vore_regurgitate_damage 10 "predators take this amount of damage whenever regurgitating someone (influenced by player scale difference)"\r
 set g_balance_vore_regurgitate_swallowprogress 0.5 "regurgitated prey is given this amount of swallow progress, to simulate being more vulnerable (if slow swallowing is enabled)"\r
 set g_balance_vore_regurgitate_force 600 "regurgitated players rocket out at this speed, in the direction the predator is facing (influenced by player scale difference)"\r
index 10c01db..3049efd 100644 (file)
@@ -328,8 +328,8 @@ set g_respawn_ghosts_maxtime 6 "maximum amount of time a respawn ghost can last,
 \r
 set sv_gibhealth -150 "Amount of health a dead body must have in order to get gibbed, influenced by player size"\r
 \r
-set sv_punchangle_speed 16 "speed at which punchangle returns to normal"\r
-set sv_punchvector_speed 32 "speed at which punchvector returns to normal"\r
+set sv_punchangle_speed 16 "default speed at which punchangle returns to normal"\r
+set sv_punchvector_speed 32 "default speed at which punchvector returns to normal"\r
 \r
 // fragmessage: This allows extra information to be displayed with the frag centerprints. \r
 set sv_fragmessage_information_ping 0 "Enable ping display information, 0 = Never display; 1 = Always display (If the player is a bot, it will say bot instead of the ping.)"\r
index 40ab462..8fdd51a 100644 (file)
@@ -813,21 +813,33 @@ void SV_PlayerPhysics()
 \r
        if (self.punchangle != '0 0 0')\r
        {\r
-               f = vlen(self.punchangle) - cvar("sv_punchangle_speed") * frametime;\r
+               float speed = cvar("sv_punchangle_speed");\r
+               if (self.punchangle_speed)\r
+                       speed *= self.punchangle_speed + 1;\r
+\r
+               f = vlen(self.punchangle) - speed * frametime;\r
                if (f > 0)\r
                        self.punchangle = normalize(self.punchangle) * f;\r
                else\r
                        self.punchangle = '0 0 0';\r
        }\r
+       else\r
+               self.punchangle_speed = 0;\r
 \r
        if (self.punchvector != '0 0 0')\r
        {\r
-               f = vlen(self.punchvector) - cvar("sv_punchvector_speed") * frametime;\r
+               float speed = cvar("sv_punchvector_speed");\r
+               if (self.punchvector_speed)\r
+                       speed *= self.punchvector_speed + 1;\r
+\r
+               f = vlen(self.punchvector) - speed * frametime;\r
                if (f > 0)\r
                        self.punchvector = normalize(self.punchvector) * f;\r
                else\r
                        self.punchvector = '0 0 0';\r
        }\r
+       else\r
+               self.punchvector_speed = 0;\r
 \r
        if (clienttype(self) == CLIENTTYPE_BOT)\r
        {\r
index 0d9cda6..659cc1d 100644 (file)
@@ -141,6 +141,9 @@ void                end_sys_globals;
 .float         sounds;\r
 .string                noise, noise1, noise2, noise3;\r
 \r
+.float         punchangle_speed;\r
+.float         punchvector_speed;\r
+\r
 /////////////////////////////////////////////////////////\r
 void           end_sys_fields;\r
 /////////////////////////////////////////////////////////\r
index 146a763..195b5ce 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
index de5bd1e..c339d24 100644 (file)
@@ -358,4 +358,6 @@ Features:
 \r
 - Fully customizable HUD. Each component can be positioned and scaled independently using cvars in the HUD config file, allowing the player to create their own HUD setup. Note that not all HUD components were adapted to the new system yet.\r
 \r
+- Prey is oriented same as the predator while being eaten (1st person view), to simulate being swallowed feet-first.\r
+\r
 Known bugs:\r