X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Ffunc_breakable.qc;h=8db84027e13e41170d460c70cb489f409d51e458;hp=5a3b098b6a3adb787f5f15a8433c1160da9e72d4;hb=5ca94d90f868aa0d5bb86cbf284cc9e9bb3e2cf9;hpb=f39f563dc8b308a110a98708ee1e71c5d02fcab6 diff --git a/qcsrc/server/func_breakable.qc b/qcsrc/server/func_breakable.qc index 5a3b098b6a..8db84027e1 100644 --- a/qcsrc/server/func_breakable.qc +++ b/qcsrc/server/func_breakable.qc @@ -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, CHAN_AUTO, 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