]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/func_breakable.qc
Add func_breakable CSQC model linking again
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / func_breakable.qc
index 1e474c0d641a34764fb55578f77614927f280f33..8db84027e13e41170d460c70cb489f409d51e458 100644 (file)
@@ -37,7 +37,7 @@ void func_breakable_damage(entity inflictor, entity attacker, float damage, floa
 // func_breakable
 // - basically func_assault_destructible for general gameplay use
 //
-void LaunchDebris (string debrisname, vector force) =
+void LaunchDebris (string debrisname, vector force)
 {
        local   entity dbr;
 
@@ -65,7 +65,7 @@ void LaunchDebris (string debrisname, vector force) =
        if(dbr.damageforcescale)
                dbr.takedamage = DAMAGE_YES;
        SUB_SetFade(dbr, time + self.debristime + crandom() * self.debristimejitter, self.debrisfadetime);
-};
+}
 
 void func_breakable_colormod()
 {
@@ -79,11 +79,13 @@ void func_breakable_colormod()
                self.colormod = '1 0 0' + '0 1 0' * (2 * h - 0.5);
        else
                self.colormod = '1 1 1';
+               
+       CSQCMODEL_AUTOUPDATE();
 }
 
 void func_breakable_look_destroyed()
 {
-       local float floor_z;
+       float floor_z;
 
        if(self.solid == SOLID_BSP) // in case a misc_follow moved me, save the current origin first
                self.dropped_origin = self.origin;
@@ -114,7 +116,8 @@ void func_breakable_behave_destroyed()
 {
        self.health = self.max_health;
        self.takedamage = DAMAGE_NO;
-       self.event_damage = SUB_Null;
+       self.bot_attack = FALSE;
+       self.event_damage = func_null;
        self.state = 1;
        func_breakable_colormod();
 }
@@ -128,6 +131,7 @@ void func_breakable_behave_restore()
                WaypointSprite_UpdateHealth(self.sprite, self.health);
        }
        self.takedamage = DAMAGE_AIM;
+       self.bot_attack = TRUE;
        self.event_damage = func_breakable_damage;
        self.state = 0;
        self.nextthink = 0; // cancel auto respawn
@@ -138,12 +142,16 @@ void func_breakable_destroyed()
 {
        func_breakable_look_destroyed();
        func_breakable_behave_destroyed();
+       
+       CSQCMODEL_AUTOUPDATE();
 }
 
 void func_breakable_restore()
 {
        func_breakable_look_restore();
        func_breakable_behave_restore();
+       
+       CSQCMODEL_AUTOUPDATE();
 }
 
 vector debrisforce; // global, set before calling this
@@ -162,7 +170,7 @@ void func_breakable_destroy() {
        func_breakable_destroyed();
 
        if(self.noise)
-               sound (self, CH_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);
+               sound (self, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM);
 
        if(self.dmg)
                RadiusDamage(self, activator, self.dmg, self.dmg_edge, self.dmg_radius, self, self.dmg_force, DEATH_HURTTRIGGER, world);
@@ -215,6 +223,8 @@ void func_breakable_reset()
                func_breakable_behave_destroyed();
        else
                func_breakable_behave_restore();
+               
+       CSQCMODEL_AUTOUPDATE();
 }
 
 // destructible walls that can be used to trigger target_objective_decrease
@@ -238,9 +248,9 @@ void spawnfunc_func_breakable() {
        if(self.count == 0)
                self.count = 1;
 
-       if(!self.message)
+       if(self.message == "")
                self.message = "got too close to an explosion";
-       if(!self.message2)
+       if(self.message2 == "")
                self.message2 = "was pushed into an explosion by";
        if(!self.dmg_radius)
                self.dmg_radius = 150;
@@ -266,6 +276,8 @@ void spawnfunc_func_breakable() {
 
        self.reset = func_breakable_reset;
        func_breakable_reset();
+       
+       CSQCMODEL_AUTOINIT();
 }
 
 // for use in maps with a "model" key set