]> git.xonotic.org Git - voretournament/voretournament.git/commitdiff
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 45722fc09f506fc9307458254f6b41b19a260725..a608a42f4ba0065d29ea7cc74137f365c59b4b0b 100644 (file)
@@ -196,7 +196,7 @@ set g_balance_grabber_reload_ammo 45
 set g_balance_grabber_reload_time 2\r
 // }}}\r
 \r
 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
 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_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
 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 10c01db47d60b5b937bec358a369bd24d25f863a..3049efdb00c1b79ca8ddd33aa3da14f7e18e19e2 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
 \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
 \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 40ab462f17746b4b433ec98aeb58739b38f1f1cd..8fdd51a6d8fe018437bd9cc8c283ca5be4a4e4b7 100644 (file)
@@ -813,21 +813,33 @@ void SV_PlayerPhysics()
 \r
        if (self.punchangle != '0 0 0')\r
        {\r
 \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
                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
 \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
                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
 \r
        if (clienttype(self) == CLIENTTYPE_BOT)\r
        {\r
index 0d9cda6b863e66bf1468b08c5ce5d1285cdee522..659cc1d9a11a23b866b3cdd3d2a1a12d9ddf2e3b 100644 (file)
@@ -141,6 +141,9 @@ void                end_sys_globals;
 .float         sounds;\r
 .string                noise, noise1, noise2, noise3;\r
 \r
 .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
 /////////////////////////////////////////////////////////\r
 void           end_sys_fields;\r
 /////////////////////////////////////////////////////////\r
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.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
        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
        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
        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
        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
        // 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 de5bd1e646ae27a5431895e776b8c6da82082bdb..c339d24e903dc84b263460a29f6d1ad0fc28dc20 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
 \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
 Known bugs:\r