Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main()
- {
- precacheShellshock("explosion");
- level.zapperCost = 0;
- level.zapperDuration = 60;
- level.usageDelay = 5;
- precache();
- zappers = GetEntArray("zapper", "targetname");
- for(i=0;i<zappers.size;i++)
- zappers[i] thread trigger_watch();
- }
- precache()
- {
- level._effect["zapper"] = loadfx( "misc/fx_zombie_electric_trap" );
- level._effect["character_fire_death_torso"] = loadfx( "env/fire/fx_fire_player_torso_mp" );
- level._effect["character_fire_player_sm"] = loadfx( "misc/fx_zombie_elec_gen_idle" );
- level._effect["character_fire_death_sm"] = loadfx( "misc/fx_zombie_mini_nuke_hotness" );
- level._effect["fx_fire_player_sm_smk_2sec"] = loadfx( "env/fire/fx_fire_player_sm_smk_2sec" );
- }
- trigger_watch()
- {
- if(!isDefined(self.target))
- {
- AssertMsg("zapper trigger does not have a target: add trigger_multiple as target");
- return;
- }
- killzones = GetEntArray(self.target, "targetname");
- if(!killzones.size)
- {
- AssertMsg("trigger_multiple/s has not been defined");
- return;
- }
- for(i=0;i<killzones.size;i++)
- {
- killzones[i].fxSpots = GetEntArray(killzones[i].target, "targetname");
- if(!killzones[i].fxSpots.size)
- {
- AssertMsg( "fxSpots not defined, add two script_origins and target them with the trigger_multiple" );
- return;
- }
- }
- while(1)
- {
- self waittill("trigger", player);
- if(player.sessionstate != "playing")
- continue;
- else if(isDefined(player.score) && player.score >= level.zapperCost && player.team == "allies")
- {
- self DisableTrigger();
- self playLocalSound( "purchase" );
- for(i=0;i<killzones.size;i++)
- {
- killzones[i] thread EnableZap();
- killzones[i].zapperFXOne = playLoopedFx(level._effect["zapper"], 4, killzones[i].fxSpots[0].origin, 0, anglesToForward((90,0,0)), anglesToUp((90,0,0)));
- killzones[i].zapperFXTwo = playLoopedFx(level._effect["zapper"], 4, killzones[i].fxSpots[1].origin, 0, anglesToForward((90,0,0)), anglesToUp((90,0,0)));
- killzones[i].zapperFXThree = playLoopedFx(level._effect["zapper"], 4, killzones[i].fxSpots[2].origin, 0, anglesToForward((90,0,0)), anglesToUp((90,0,0)));
- killzones[i].zapperFXFour = playLoopedFx(level._effect["zapper"], 4, killzones[i].fxSpots[3].origin, 0, anglesToForward((90,0,0)), anglesToUp((90,0,0)));
- }
- player.score -= level.zapperCost;
- player.pers["score"] = player.score;
- wait level.zapperDuration;
- for(i=0;i<killzones.size;i++)
- {
- killzones[i] notify("disable");
- killzones[i].zapperFXOne Delete();
- killzones[i].zapperFXTwo Delete();
- killzones[i].zapperFXThree Delete();
- killzones[i].zapperFXFour Delete();
- }
- wait level.usageDelay;
- self EnableTrigger();
- }
- }
- }
- EnableZap(attacker)
- {
- self endon("disable");
- while(1)
- {
- self waittill("trigger", player);
- if(player.sessionstate != "playing")
- continue;
- player maps\mp\_burnplayer::walkedThroughFlames();
- player shellShock("explosion", 2);
- if(player.team == "axis" && isPlayer(attacker) && attacker.team == "allies")
- player thread [[level.callbackPlayerDamage]](attacker,attacker,60,0,"MOD_EXPLOSIVE","",player.origin,(0,0,0),"none",0);
- else
- radiusDamage(player.origin, 60, 80, 30);
- }
- }
- DisableTrigger()
- {
- self.oldOrigin = self.origin;
- self.origin -= ( 0, 0, 10000 );
- }
- EnableTrigger()
- {
- self.origin = self.oldOrigin;
- }
Add Comment
Please, Sign In to add comment