Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include maps\_anim;
- #include maps\_utility;
- #include common_scripts\utility;
- #include maps\_music;
- #include maps\_zombiemode_utility;
- #include maps\_busing;
- #using_animtree( "generic_human" );
- // thief Scripts Begin - Redspace200
- // Radiant Script Origin --> "targetname" "thief_teleport_location"
- init_thief()
- {
- level.next_dog_round = 0;
- level thread ai_thief_spawning_func();
- level.next_thief_round = 5;
- level.spawns_with_zom = false;
- }
- ai_thief_spawning_func()
- {
- if (level.spawns_with_zom == false)
- level waittill_either("power_on","juggernog_on");
- while(true)
- {
- level waittill("between_round_over");
- if (level.round_number >= level.next_thief_round)
- {
- if (isdefined(level.moonguy_next) ) level.moonguy_next += 1;
- if (level.spawns_with_zom == false)
- {
- level.round_spawn_func = ::spawn_thief_ai_boss;
- level waittill("thief_round_over");
- level.round_spawn_func = maps\_zombiemode::round_spawning;
- }
- else level spawn_thief_ai_boss();
- level.next_thief_round = level.round_number + randomIntRange(4,6);
- }
- }
- }
- spawn_thief_ai_boss()
- {
- players = getPlayers();
- for(i=0;i<players.size;i++)
- players[i] thread thief_roundSounder("begin");
- level thread thief_alarm();
- spawn_point = undefined; use_spawn_point = undefined;
- teh_spawns = undefined;
- for(am=0;am<50;am++)
- {
- wait .05;
- teh_spawns = level.enemy_spawns;
- for(t=0;t<teh_spawns.size;t++)
- {
- wait .05;
- use_spawn_point = teh_spawns[t];
- if (use_spawn_point.script_noteworthy == "find_flesh") break;
- }
- spawn_points = GetStructArray("find_flesh","script_noteworthy");
- num = randomIntRange(0,spawn_points.size);
- spawn_point = spawn_points[num];
- if (spawn_point inMap() && isdefined(spawn_point) ) { break; }
- }
- ai = spawn_zombie( use_spawn_point ); wait .05;
- if (isdefined(ai) )
- {
- ai forceTeleport(spawn_point.origin);
- ai.is_on_fire = true;
- ai.script_string = "riser";
- ai.boss_enemy = true; wait .01; ai notify("no_rise");
- wait .04;
- ai.gibbed = true;
- ai StopAnimScripted();
- playfx(level._effect["transporter_beam"], ai.origin); wait .05;
- zombie_poi = ai get_zombie_point_of_interest( ai.origin );
- ai.enemyoverride = zombie_poi;
- ai thief_set_movement_animation("walking");
- ai thread thief_visible_thread();
- ai thread thief_get_target_player();
- if (!isdefined(ai.favoriteenemy) && isdefined(ai) )
- while (!isdefined(ai.favoriteenemy) && isdefined(ai) )
- wait .05;
- if (!isdefined(ai) ) return;
- ai thread maps\_zombiemode_spawner::zombie_setup_attack_properties();
- ai forceteleport(ai.origin+(0,0,38));
- wait .05;
- ai.ignoreall = true;
- ai DetachAll();
- ai setModel("bo1_c_zom_electrician_body");
- ai.health = (level.zombie_health*18)*getPlayers().size; wait .05;
- ai thread thief_thinker();
- ai thread thief_sounds_thinker();
- ai thread thief_death();
- ai thread thief_fx();
- ai thread thief_roundend_failsafe();
- while(isdefined(ai) && ai.health > 0)
- wait .05;
- }
- }
- thief_alarm()
- {
- level endon("thief_round_over");
- while(true)
- {
- wait 4;
- getPlayers()[0] playSound("thief_alarm");
- }
- }
- thief_fx()
- {
- f = spawn("script_model",self.origin);
- f setModel("tag_origin");
- f linkTo(self);
- playFxOnTag(level._effect["thief_trail"], f, "tag_origin");
- while(self.health > 1 && isdefined(self) ) { f.origin = self.origin+(0,0,16); wait .05; }
- f delete();
- }
- thief_bad_path()
- {
- self endon("death");
- self thread thief_bad_path_checker();
- while(isdefined(self) )
- {
- self waittill("bad_path");
- self.zombie_bad_path = true;
- self waittill("stop_zombie_bad_path");
- self.zombie_bad_path = undefined;
- }
- }
- thief_bad_path_checker()
- {
- self endon("death");
- while(isdefined(self) )
- {
- if (isdefined(self.zombie_bad_path) )
- {
- self animScripted("zombie_taunt", self.origin, self.angles, %ai_thief_idle);
- wait getAnimLength(%ai_thief_idle);
- }
- wait .05;
- }
- }
- thief_get_target_player()
- {
- self endon("death");
- if (!IsDefined(self.target_array) )
- {
- self.target_array = [];
- players = getPlayers();
- for(i=0;i<players.size;i++)
- self.target_array[i] = false;
- }
- if (!IsDefined(self.weapon_stolen_array) )
- {
- self.weapon_stolen_array = [];
- players = getPlayers();
- for(i=0;i<players.size;i++)
- self.weapon_stolen_array[i] = "none";
- }
- while(true)
- {
- wait .05;
- players = getPlayers();
- num = randomIntRange(0,players.size+1);
- if (num>players.size) num = players.size;
- if (self.target_array[players[num] GetEntityNumber()] == false && players[num].sessionstate != "spectator" && isAlive(players[num]) && !isdefined(players[num].revivetrigger) )
- {
- self.target_array[players[num] GetEntityNumber()] = true;
- self thief_set_movement_animation("walking");
- self setVisibleToAll();
- for(i=0;i<players.size;i++)
- if (self.target_array[players[i] GetEntityNumber()] == false)
- self setInvisibleToPlayer(players[i]);
- self.favoriteenemy = players[num];
- // iprintln("targeting player: "+num);
- self.thief_targeting = true;
- while(players[num].sessionstate != "spectator" && isAlive(players[num]) && !isdefined(players[num].revivetrigger) && isdefined(self.weapon_stolen_array[num]) && self.weapon_stolen_array[num] == "none" )
- {
- if (isdefined(self.favoriteenemy) && Distance(self.origin,self.favoriteenemy.origin) <= 62 && !isdefined(self.favoriteenemy.revivetrigger) && isdefined(self.weapon_stolen_array[num]) && self.weapon_stolen_array[num] == "none" && isdefined(self.t) && self.t >= 2)
- {
- self thread thief_steal_weapon(self.favoriteenemy);
- self thread thief_capture_player();
- wait .08;
- self thread thief_rotatePlayer(self.favoriteenemy);
- self waittill("thief_attack_complete");
- self DetachAll();
- wait .05;
- self attach(getWeaponModel(self.weapon_stolen_array[self.favoriteenemy GetEntityNumber()]),"tag_stowed_back",true);
- break;
- }
- else if (!isdefined(self.favoriteenemy) )
- break;
- wait .05;
- }
- if (self thief_attacked_all_players() )
- break;
- }
- }
- self.thief_movetype = "sprint";
- self.thief_targeting = undefined;
- self.favoriteenemy = undefined;
- self.thief_fleeing = true;
- time = (randomIntRange(30,65))/getPlayers().size;
- if (time < 18) time = 18;
- while(isdefined(self) && time > 0)
- {
- if (self.health < 1)
- return;
- time -= .05;
- wait .05;
- }
- if (self.health >= 1)
- {
- playfx(level._effect["transporter_beam"], self.origin);
- self hide();
- self detachAll();
- self notify("alt_death");
- wait .05;
- players = getPlayers();
- for(i=0;i<players.size;i++)
- players[i] thread thief_roundSounder("end");
- wait .05;
- self DoDamage( self.health + 666, self.origin );
- }
- }
- thief_steal_weapon(player)
- {
- wpn = player getCurrentWeapon();
- self.weapon_stolen_array[player GetEntityNumber()] = wpn;
- player takeWeapon(wpn);
- player DisableOffHandWeapons(); player DisableWeaponCycling();
- player giveWeapon("player_hands_lookat"); player switchToWeapon("player_hands_lookat");
- wait 2.65;
- player takeWeapon("player_hands_lookat");
- player EnableOffHandWeapons(); player EnableWeaponCycling();
- self thread thief_teleport(player);
- player freezeControls( false );
- if (player GetWeaponsListPrimaries().size != 0)
- player switchToWeapon( player GetWeaponsListPrimaries()[0] );
- }
- thief_set_movement_animation(type)
- {
- if (!IsDefined(type) ) return;
- if (type == "walking" || type == "walk")
- {
- self.t = 0;
- self.thief_sprinting = undefined;
- self.run_combatanim = level.scr_anim["zombie"]["thief_walk_v"+2];
- self set_run_anim("thief_walk_v"+2);
- self.thief_movetype = "walk";
- }
- if (type == "sprint")
- {
- self.run_combatanim = level.scr_anim["zombie"]["thief_sprint"];
- self set_run_anim("thief_sprint");
- self.thief_movetype = "sprint";
- }
- }
- thief_attacked_all_players()
- {
- players = getPlayers();
- attacked = 0;
- for(i=0;i<players.size;i++)
- if (isdefined(self.weapon_stolen_array[i]) && self.weapon_stolen_array[i] != "none")
- attacked += 1;
- if (attacked == players.size)
- return true;
- else
- return false;
- }
- thief_death()
- {
- self endon("alt_death");
- self thread thief_powerup_dropper();
- self waittill("death");
- self detachAll();
- players = getPlayers();
- for(i=0;i<players.size;i++)
- {
- if (!isdefined(self.weapon_stolen_array) ) break;
- if (self.weapon_stolen_array[i] != "none" && isdefined(self.weapon_stolen_array[i]) )
- {
- if ((players[i] GetWeaponsListPrimaries().size >= 2 && !players[i] hasPerk("specialty_extraammo")) || (players[i] GetWeaponsListPrimaries().size >= 3 && players[i] hasPerk("specialty_extraammo")) )
- players[i] takeWeapon(players[i] getCurrentWeapon() );
- players[i] giveWeapon(self.weapon_stolen_array[i]);
- players[i] switchToWeapon(self.weapon_stolen_array[i]);
- }
- }
- num = randomIntRange(0,4);
- if (num >= 4) num = 3;
- self playSound("thief_death_"+num);
- players = getPlayers();
- for(i=0;i<players.size;i++)
- players[i] thread thief_roundSounder("end");
- }
- thief_thinker()
- {
- self endon("death");
- self.thief_sprinting = undefined;
- health_sticky = self.health;
- self.t = 0;
- target_position = undefined; new_target_position = undefined;
- while(isdefined(self) )
- {
- // Sticky Vars
- wait .05;
- if (self.t < 3) self.t += .05;
- self.goalradius = 32;
- self.ignore_player = undefined;
- self.ignoreall = true;
- self.is_on_fire = true;
- self.gibbed = true;
- self.deathanim = undefined;
- self OrientMode( "face default" );
- if (IsDefined(self.thief_targeting) && isdefined(self.favoriteenemy) )
- {
- self setGoalPos(self.favoriteenemy.origin);
- if (((Distance(self.favoriteenemy.origin,self.origin) <= 200 && 0 != self.favoriteenemy DamageConeTrace( self.origin, self ) ) || self.health != health_sticky) && !isdefined(self.thief_sprinting) && self.t >= 2.95 )
- {
- self.thief_sprinting = true;
- self thread thief_activate_sprint();
- }
- }
- else if (isdefined(self.thief_fleeing) )
- {
- if (!isdefined(target_position) || getDogSpawns().size == 1 )
- target_position = getDogSpawns()[randomInt(getDogSpawns().size)].origin;
- else
- {
- while(true)
- {
- wait .05;
- new_target_position = getDogSpawns()[randomInt(getDogSpawns().size)].origin;
- if (new_target_position != target_position)
- {
- target_position = new_target_position;
- break;
- }
- }
- }
- self setGoalPos(target_position);
- while (Distance(self.origin,target_position) > 40)
- wait .05;
- }
- }
- }
- thief_visible_thread()
- {
- self endon("death");
- self.visible_to_player = [];
- players = getPlayers();
- for(i=0;i<players.size;i++)
- self setInvisibleToPlayer(players[i]);
- }
- thief_sounds_thinker()
- {
- self endon("death");
- while(isdefined(self) )
- {
- wait randomFloatRange(3.2,6.8);
- if (!isdefined(self) || self.health < 1) break;
- if (!isdefined(self.thief_movetype) )
- continue;
- if (self.thief_movetype == "walk")
- {
- num = randomIntRange(0,7);
- if (num >= 7) num = 6;
- self playSound("thief_walk_"+num);
- }
- else if (self.thief_movetype == "sprint")
- {
- num = randomIntRange(0,6);
- if (num >= 6) num = 6;
- self playSound("thief_sprint_"+num);
- }
- }
- }
- thief_activate_sprint()
- {
- self.thief_movetype = undefined;
- num = randomIntRange(0,4);
- if (num >= 4) num = 3;
- self playSound("thief_anger_"+num);
- self animScripted("zombie_taunt", self getOrigin(), self.angles, %ai_thief_anger);
- wait getAnimLength(%ai_thief_anger);
- self thread thief_set_movement_animation("sprint");
- }
- thief_rotatePlayer(player)
- {
- facingGuy = VectorToAngles( self.origin - player.origin );
- player lerp_player_view_to_position( player.origin, facingGuy, 0.15, 1 );
- player FreezeControls( true );
- }
- thief_capture_player()
- {
- self.thief_movetype = undefined;
- self setVisibleToAll();
- self animScripted("zombie_taunt", self getOrigin(), self.angles, %ai_thief_idle);
- wait .4;
- num = randomIntRange(0,4);
- if (num >= 4) num = 3;
- self playSound("thief_steal_"+num);
- faceAngles = VectorToAngles( self.favoriteenemy getTagOrigin("j_head") - self getTagOrigin( "j_head" ) );
- self animScripted("zombie_taunt", self getOrigin(), (0,faceangles[1],0), %ai_thief_attack_v1);
- }
- thief_teleport(player)
- {
- self stopAnimScripted();
- wait .05;
- spawn = getDogSpawns()[randomInt(getDogSpawns().size)].origin;
- player setOrigin(spawn); self forceTeleport(spawn.origin);
- wait .05;
- earthQuake(1, 3, self.origin, 200);
- playfx(level._effect["transporter_beam"], self.origin);
- player stopShellShock();
- self notify("thief_attack_complete");
- }
- thief_roundSounder(type)
- {
- if (!IsDefined(type) ) return;
- if (type == "begin") { play_sound_2D( "dark_sting" ); clientnotify( "dog_start" ); }
- wait 1;
- self playLocalSound("thief_warning");
- wait .85;
- if (type == "begin")
- self playLocalSound("thief_round_begin_vox");
- else if (type == "end")
- {
- self playLocalSound("thief_round_end_vox");
- clientnotify( "dog_stop" );
- }
- }
- thief_powerup_dropper()
- {
- self waittill_either("death","alt_death");
- power_up_origin = self.origin+(0,0,1);
- if( IsDefined( power_up_origin ) )
- {
- for ( i = 0; i < level.zombie_powerup_array.size; i++ )
- {
- if ( level.zombie_powerup_array[i] == "full_ammo" )
- {
- level.zombie_powerup_index = i;
- break;
- }
- }
- level notify("thief_round_over");
- play_sound_2D( "bright_sting" );
- level.zombie_vars["zombie_drop_item"] = 1;
- level.powerup_drop_count = 0;
- level thread maps\_zombiemode_powerups::powerup_drop( power_up_origin );
- }
- }
- thief_roundend_failsafe()
- {
- level endon("thief_round_over");
- while(self.health >= 1)
- wait .05;
- wait 5;
- level notify("thief_round_over");
- }
- inMap()
- {
- playableArea = getEntArray("playable_area", "targetname");
- for(m = 0; m < playableArea.size; m++)
- if(self isTouching(playableArea[m]))
- return true;
- return false;
- }
- getDogspawns()
- {
- spawns = getEntArray("thief_teleport_location","targetname");
- return(spawns);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement