Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- init()
- {
- // level.destructableFX = loadfx("breakables/exp_wall_cinderblock_96");
- ents = getentarray("destructable", "targetname");
- if (getdvar("scr_destructables") == "0")
- {
- for (i = 0; i < ents.size; i++)
- ents[i] delete();
- }
- else
- {
- for (i = 0; i < ents.size; i++)
- {
- ents[i] thread destructable_think();
- }
- }
- }
- destructable_think()
- {
- accumulate = 40;
- threshold = 0;
- if (isdefined(self.script_accumulate))
- accumulate = self.script_accumulate;
- if (isdefined(self.script_threshold))
- threshold = self.script_threshold;
- if (isdefined(self.script_destructable_area)) {
- areas = strtok(self.script_destructable_area, " ");
- for (i = 0; i < areas.size; i++)
- self blockArea(areas[i]);
- }
- if ( isdefined( self.script_fxid ) )
- self.fx = loadfx( self.script_fxid );
- dmg = 0;
- self setcandamage(true);
- while(1)
- {
- self waittill("damage", amount, other);
- if (amount >= threshold)
- {
- dmg += amount;
- if (dmg >= accumulate)
- {
- self thread destructable_destruct();
- return;
- }
- }
- }
- }
- destructable_destruct()
- {
- ent = self;
- if (isdefined(self.script_destructable_area)) {
- areas = strtok(self.script_destructable_area, " ");
- for (i = 0; i < areas.size; i++)
- self unblockArea(areas[i]);
- }
- if ( isdefined( ent.fx ) )
- playfx( ent.fx, ent.origin + (0,0,6) );
- ent delete();
- }
- blockArea(area)
- {
- spawns = getentarray("mp_tdm_spawn", "classname");
- blockEntsInArea(spawns, area);
- spawns = getentarray("mp_dm_spawn", "classname");
- blockEntsInArea(spawns, area);
- }
- blockEntsInArea(ents, area)
- {
- for (i = 0; i < ents.size; i++) {
- if (!isdefined(ents[i].script_destructable_area) || ents[i].script_destructable_area != area)
- continue;
- ents[i].blockedoff = true;
- }
- }
- unblockArea(area)
- {
- spawns = getentarray("mp_tdm_spawn", "classname");
- unblockEntsInArea(spawns, area);
- spawns = getentarray("mp_dm_spawn", "classname");
- unblockEntsInArea(spawns, area);
- }
- unblockEntsInArea(ents, area)
- {
- for (i = 0; i < ents.size; i++) {
- if (!isdefined(ents[i].script_destructable_area) || ents[i].script_destructable_area != area)
- continue;
- ents[i].blockedoff = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement