is the quality of ours convictions to determine success
Posts
64
Respect
32Add +1
Forum Rank
Rotting Walker
Primary Group
Member
Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!
)! that's the "going down" scriptperk_think()
{
self waittill_any( "fake_death", "death", "player_downed" );
self UnsetPerk("specialty_boost");
self.maxhealth = 100;
self maps\_zombiemode_perks::perk_hud_destroy("specialty_boost");
}#include maps\_anim;
#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include maps\_zombiemode_net;
cherry_init()
{
PrecacheItem( "zombie_perk_bottle_cherry" );
PrecacheShader( "cherry_vending_zombies" );
cherry_trigger = GetEnt( "zombie_vending_cherry", "targetname" );
cherry_trigger thread cherry_trigger_think();
level thread maps\_zombiemode_perks::machine_watcher_factory("cherry_on");
PrecacheModel("bo2_p6_zm_vending_electric_cherry_off");
PrecacheModel("bo2_p6_zm_vending_electric_cherry_on");
thread wait_a_little();
thread turn_cherry_on();
}
wait_a_little()
{
flag_wait( "all_players_connected" );
level._effect["electric_cherry"] = LoadFx("electric_cherry");
players = get_players();
for(i=0;i<players.size;i++)
{
players[i] thread cherry_think();
}
}
cherry_think()
{
flag_wait( "all_players_connected");
while(1)
{
self.current_cherry_weapon = self GetCurrentWeapon();
self waittill("reload_start");
if(self hasPerk("specialty_boost"))
{
if (self.current_cherry_weapon=="tom_katana"||self.current_cherry_weapon=="tom_shovel")
{
wait 1;
}
else
{
self.tag_origin_cherry = spawn("script_model",self.origin + (0,0,48));
self.tag_origin_cherry setmodel("tag_origin");
self.tag_origin_cherry linkTo(self);
//self.tag_origin delete();
self.currentweapon = self GetCurrentWeapon();
self.clipSize = WeaponClipSize(self.currentweapon);
self.clipRemaining = self GetCurrentWeaponClipAmmo();
zombies = getaiarray( "axis", "all" );
self.cherry_ratio = 1 - (self.clipRemaining/self.clipSize);
self.cherry_radius = (200 * self.cherry_ratio) + 64;
for(k=0;k<zombies.size;k++)
{
if(Distance2D( self.origin, zombies[k].origin ) < self.cherry_radius)
{
if(zombies[k].health < 1500)
{
zombies[k] DoDamage( zombies[k].health + 666 , zombies[k].origin);
zombies[k].deathanim = random( level._zombie_tesla_death[zombies[k].animname] );
zombies[k] maps\_zombiemode_tesla::tesla_play_death_fx(1);
}
else
{
zombies[k] DoDamage( 1500 , zombies[k].origin);
zombies[k] enable_pain();
zombies[k] cherry_play_death_fx();
}
}
wait .01;
}
network_safe_play_fx_on_tag( "tesla_death_fx", 2, level._effect["tesla_shock"],self.tag_origin_cherry,"tag_origin");
self playsound( "imp_tesla" );
for(k=0;k<zombies.size;k++)
{
zombies[k] disable_pain();
}
wait .01;
}
}
wait 1;
self.tag_origin_cherry delete();
}
}
turn_cherry_on()
{
machine = getent("vending_cherry", "targetname");
machine setmodel("bo2_p6_zm_vending_electric_cherry_off");
level waittill("juggernog_on");
machine setmodel("bo2_p6_zm_vending_electric_cherry_on");
machine vibrate((0,-100,0), 0.3, 0.4, 3);
machine playsound("perks_power_on");
machine thread maps\_zombiemode_perks::perk_fx("doubletap_light");
level notify( "specialty_boost_power_on" );
}
cherry_trigger_think()
{
perk = "specialty_boost";
self SetHintString( &"ZOMBIE_FLAMES_UNAVAILABLE" );
self SetCursorHint( "HINT_NOICON" );
self UseTriggerRequireLookAt();
notify_name = perk + "_power_on";
level waittill("juggernog_on");
perk_hum = spawn("script_origin", self.origin);
perk_hum playloopsound("perks_machine_loop");
self thread check_player_has_perk(perk);
self SetHintString("Press & hold &&1 to buy Electric Cherry [Cost: 2000]");
for( ;; )
{
self waittill( "trigger", player );
index = maps\_zombiemode_weapons::get_player_index(player);
cost = 2000;
if (player maps\_laststand::player_is_in_laststand() )
{
continue;
}
if(player in_revive_trigger())
{
continue;
}
if( player isThrowingGrenade() )
{
wait( 0.1 );
continue;
}
if( player isSwitchingWeapons() )
{
wait(0.1);
continue;
}
if ( player HasPerk( perk ) )
{
self playsound("deny");
player thread maps\_zombiemode_perks::play_no_money_perk_dialog();
continue;
}
if ( player.score < cost )
{
self playsound("deny");
player thread maps\_zombiemode_perks::play_no_money_perk_dialog();
continue;
}
sound = "bottle_dispense3d";
player achievement_notify( "perk_used" );
playsoundatposition(sound, self.origin);
player maps\_zombiemode_score::minus_to_player_score( cost );
sound = "mx_cherry_sting";
self thread maps\_zombiemode_perks::play_vendor_stings(sound);
gun = player perk_give_bottle_begin();
player.is_drinking = 1;
player waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" );
// restore player controls and movement
player perk_give_bottle_end( gun, "specialty_boost" );
player.is_drinking = undefined;
// TODO: race condition?
if ( player maps\_laststand::player_is_in_laststand() )
{
continue;
}
player SetPerk("specialty_boost");
player thread maps\_zombiemode_perks::perk_vo(perk);
player setblur( 4, 0.1 );
wait(0.1);
player setblur(0, 0.1);
player perk_hud_create( perk );
//stat tracking
player.stats["perks"]++;
//player iprintln( "Bought Perk: " + perk );
bbPrint( "zombie_uses: playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type perk",
player.playername, player.score, level.round_number, cost, perk, self.origin );
player thread perk_think( perk );
}
}
check_player_has_perk(perk)
{
dist = 128 * 128;
while(true)
{
players = get_players();
for( i = 0; i < players.size; i++ )
{
if(DistanceSquared( players[i].origin, self.origin ) < dist)
{
if(!players[i] hasperk(perk) && !(players[i] in_revive_trigger()))
{
if (IsDefined(level.script) && level.script == "nazi_zombie_theater")
self setinvisibletoplayer(players[i], false);
else
self setvisibletoplayer(players[i]);
}
else
{
self SetInvisibleToPlayer(players[i]);
}
}
}
wait(0.1);
}
}
perk_hud_create( perk )
{
if ( !IsDefined( self.perk_hud ) )
{
self.perk_hud = [];
}
shader = "cherry_vending_zombies";
hud = create_simple_hud( self );
hud.foreground = true;
hud.sort = 1;
hud.hidewheninmenu = false;
hud.alignX = "left";
hud.alignY = "bottom";
hud.horzAlign = "left";
hud.vertAlign = "bottom";
hud.x = self.perk_hud.size * 30;
hud.y = hud.y - 100;
hud.alpha = 1;
hud SetShader( shader, 24, 24 );
self.perk_hud[ perk ] = hud;
}
perk_think()
{
self waittill_any( "fake_death", "death", "player_downed" );
self UnsetPerk("specialty_boost");
self.maxhealth = 100;
self maps\_zombiemode_perks::perk_hud_destroy("specialty_boost");
}
perk_give_bottle_begin()
{
self DisableOffhandWeapons();
self DisableWeaponCycling();
self AllowLean( false );
self AllowAds( false );
self AllowSprint( false );
self AllowProne( false );
self AllowMelee( false );
wait( 0.05 );
if ( self GetStance() == "prone" )
{
self SetStance( "crouch" );
}
gun = self GetCurrentWeapon();
weapon = "";
self GiveWeapon("zombie_perk_bottle_cherry");
self SwitchToWeapon("zombie_perk_bottle_cherry");
return gun;
}
perk_give_bottle_end( gun, perk )
{
assert( gun != "zombie_perk_bottle_cherry" );
assert( gun != "syrette" );
self EnableOffhandWeapons();
self EnableWeaponCycling();
self AllowLean( true );
self AllowAds( true );
self AllowSprint( true );
self AllowProne( true );
self AllowMelee( true );
weapon = "";
weapon = "zombie_perk_bottle_cherry";
// TODO: race condition?
if ( self maps\_laststand::player_is_in_laststand() )
{
self TakeWeapon(weapon);
return;
}
if ( gun != "none" && gun != "mine_bouncing_betty" )
{
self SwitchToWeapon( gun );
}
else
{
// try to switch to first primary weapon
primaryWeapons = self GetWeaponsListPrimaries();
if( IsDefined( primaryWeapons ) && primaryWeapons.size > 0 )
{
self SwitchToWeapon( primaryWeapons[0] );
}
}
self TakeWeapon(weapon);
}
cherry_play_death_fx()
{
tag = "J_SpineUpper";
fx = "tesla_shock";
network_safe_play_fx_on_tag( "tesla_death_fx", 2, level._effect["tesla_shock"], self, tag );
self playsound( "imp_tesla" );
if ( !self enemy_is_dog() )
{
if( RandomInt( 100 ) < level.zombie_vars["tesla_head_gib_chance"] )
{
wait( RandomFloat( 0.53, 1.0 ) );
}
else
{
network_safe_play_fx_on_tag( "tesla_death_fx", 2, level._effect["tesla_shock_eyes"], self, "J_Eyeball_LE" );
}
}
}
perk_think( perk )
{
self waittill_any( "fake_death", "gungame_death", "death", "player_downed" );
self UnsetPerk( "specialty_boost" );
self.inventorySize = 2;
self.maxhealth = 100;
self maps\_zombiemode_perks::perk_hud_destroy( perk );
//self iprintln( "Perk Lost: " + perk );
}
perk_hud_destroy( perk )
{
self.perk_hud[ perk ] destroy_hud();
self.perk_hud[ perk ] = undefined;
}