]> git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/server/t_items.qc
Allow items to be digested. Only partly implemented
[voretournament/voretournament.git] / data / qcsrc / server / t_items.qc
index b0c2eed7eeb090f1984d0525385bb23120f59f66..43756ab69ab742bff41388c233f76bdf7761cb60 100644 (file)
@@ -220,6 +220,7 @@ void Item_ScheduleInitialRespawn(entity e)
 }\r
 \r
 .float inithealth;\r
+.float item_digestion_step;\r
 void Item_Consumable_Remove(entity e, float regurgitate);\r
 void Item_Consumable_Think()\r
 {\r
@@ -239,10 +240,26 @@ void Item_Consumable_Think()
 \r
        if(self.predator.digesting)\r
        {\r
-               self.scale = self.health / self.inithealth; // scale matches the item's digestion progress\r
+               if(time > self.item_digestion_step)\r
+               {\r
+                       // if distributed digestion is enabled, reduce digestion strength by the amount of prey in our stomach\r
+                       float damage, damage_offset;\r
+\r
+                       damage_offset = 1;\r
+                       if(cvar("g_balance_vore_digestion_distribute")) // apply distributed digestion damage\r
+                               damage_offset *= self.predator.stomach_load / self.predator.stomach_maxload;\r
+                       damage_offset = ceil(damage_offset);\r
+                       damage = cvar("g_balance_vore_digestion_damage_item") / damage_offset;\r
+\r
+                       self.health -= damage;\r
+                       self.predator.health += damage;\r
+                       self.scale = self.health / self.inithealth; // scale matches the item's digestion progress\r
+               }\r
 \r
                if(stov(cvar_string("g_vore_regurgitatecolor_color_digest")))\r
                        self.colormod = stov(cvar_string("g_vore_regurgitatecolor_color_digest"));\r
+\r
+               self.item_digestion_step = time + vore_steptime;\r
        }\r
 \r
        self.nextthink = time;\r