mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-07 21:59:49 -05:00
Vulture-Aid: add ability to see zombies through walls
This commit is contained in:
parent
ac01592344
commit
1e28ce4bf3
@ -775,8 +775,9 @@
|
||||
* Downing kills all zombies around the player
|
||||
|
||||
### Vulture-Aid
|
||||
* Stink areas no longer activate while the player is moving
|
||||
* Added ability to see zombies through walls
|
||||
* Removed ability to see perks, wallbuys, and Mystery Box through walls
|
||||
* Stink areas no longer activate while the player is moving
|
||||
|
||||
## Pack-a-Punch
|
||||
* Changed default weapon camo to dragon camo from Black Ops 2 Multiplayer (modified to be darker on primary camo and not animated on secondary camo)
|
||||
|
90
materials/generic_filter_zm_turned.json
Normal file
90
materials/generic_filter_zm_turned.json
Normal file
@ -0,0 +1,90 @@
|
||||
{
|
||||
"_type": "material",
|
||||
"_version": 1,
|
||||
"cameraRegion": "none",
|
||||
"constants": [
|
||||
{
|
||||
"literal": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"name": "BlurAmount"
|
||||
}
|
||||
],
|
||||
"contents": 1,
|
||||
"gameFlags": [],
|
||||
"hashIndex": 0,
|
||||
"layeredSurfaceTypes": 536870912,
|
||||
"probeMipBits": 0,
|
||||
"sortKey": 4,
|
||||
"stateBits": [
|
||||
{
|
||||
"alphaTest": "disabled",
|
||||
"blendOpAlpha": "add",
|
||||
"blendOpRgb": "add",
|
||||
"colorWriteAlpha": true,
|
||||
"colorWriteRgb": true,
|
||||
"cullFace": "none",
|
||||
"depthTest": "disabled",
|
||||
"depthWrite": false,
|
||||
"dstBlendAlpha": "one",
|
||||
"dstBlendRgb": "invsrcalpha",
|
||||
"polygonOffset": "offset0",
|
||||
"polymodeLine": false,
|
||||
"srcBlendAlpha": "invdestalpha",
|
||||
"srcBlendRgb": "one",
|
||||
"stencilBack": null,
|
||||
"stencilFront": null
|
||||
}
|
||||
],
|
||||
"stateBitsEntry": [
|
||||
-1,
|
||||
-1,
|
||||
0,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1,
|
||||
-1
|
||||
],
|
||||
"stateFlags": 0,
|
||||
"surfaceFlags": 0,
|
||||
"surfaceTypeBits": 0,
|
||||
"techniqueSet": "sw4_2d_zm_turned_6w16136w",
|
||||
"textureAtlas": {
|
||||
"columns": 1,
|
||||
"rows": 1
|
||||
},
|
||||
"textures": [],
|
||||
"thermalMaterial": null
|
||||
}
|
@ -6,6 +6,95 @@
|
||||
#include clientscripts\mp\_visionset_mgr;
|
||||
#include clientscripts\mp\_filter;
|
||||
|
||||
init_vulture()
|
||||
{
|
||||
registerclientfield("toplayer", "vulture_perk_toplayer", 12000, 1, "int", ::vulture_callback_toplayer, 0, 1);
|
||||
registerclientfield("actor", "vulture_perk_actor", 12000, 2, "int", ::vulture_callback_actor, 0, 0);
|
||||
registerclientfield("scriptmover", "vulture_perk_scriptmover", 12000, 4, "int", ::vulture_callback_scriptmover, 0, 0);
|
||||
registerclientfield("zbarrier", "vulture_perk_zbarrier", 12000, 1, "int", ::vulture_vision_mystery_box, 0, 0);
|
||||
registerclientfield("toplayer", "sndVultureStink", 12000, 1, "int", ::sndvulturestink);
|
||||
registerclientfield("world", "vulture_perk_disable_solo_quick_revive_glow", 12000, 1, "int", ::vulture_disable_solo_quick_revive_glow, 0, 0);
|
||||
registerclientfield("toplayer", "vulture_perk_disease_meter", 12000, 5, "float", ::vulture_callback_stink_active, 0, 1);
|
||||
registerclientfield("toplayer", "vulture_perk_ir", 3000, 1, "int", ::vulture_perk_ir, 0, 1);
|
||||
setupclientfieldcodecallbacks("toplayer", 1, "vulture_perk_disease_meter");
|
||||
clientscripts\mp\_visionset_mgr::vsmgr_register_overlay_info_style_filter("vulture_stink_overlay", 12000, 31, 0, 0, "generic_filter_zombie_perk_vulture", 0);
|
||||
level._effect["vulture_perk_zombie_stink"] = loadfx("maps/zombie/fx_zm_vulture_perk_stink");
|
||||
level._effect["vulture_perk_zombie_stink_trail"] = loadfx("maps/zombie/fx_zm_vulture_perk_stink_trail");
|
||||
level._effect["vulture_perk_bonus_drop"] = loadfx("misc/fx_zombie_powerup_vulture");
|
||||
level._effect["vulture_drop_picked_up"] = loadfx("misc/fx_zombie_powerup_grab");
|
||||
level._effect["vulture_perk_wallbuy_static"] = loadfx("maps/zombie/fx_zm_vulture_wallbuy_rifle");
|
||||
level._effect["vulture_perk_wallbuy_dynamic"] = loadfx("maps/zombie/fx_zm_vulture_glow_question");
|
||||
level._effect["vulture_perk_machine_glow_doubletap"] = loadfx("maps/zombie/fx_zm_vulture_glow_dbltap");
|
||||
level._effect["vulture_perk_machine_glow_juggernog"] = loadfx("maps/zombie/fx_zm_vulture_glow_jugg");
|
||||
level._effect["vulture_perk_machine_glow_revive"] = loadfx("maps/zombie/fx_zm_vulture_glow_revive");
|
||||
level._effect["vulture_perk_machine_glow_speed"] = loadfx("maps/zombie/fx_zm_vulture_glow_speed");
|
||||
level._effect["vulture_perk_machine_glow_marathon"] = loadfx("maps/zombie/fx_zm_vulture_glow_marathon");
|
||||
level._effect["vulture_perk_machine_glow_mule_kick"] = loadfx("maps/zombie/fx_zm_vulture_glow_mule");
|
||||
level._effect["vulture_perk_machine_glow_pack_a_punch"] = loadfx("maps/zombie/fx_zm_vulture_glow_pap");
|
||||
level._effect["vulture_perk_machine_glow_vulture"] = loadfx("maps/zombie/fx_zm_vulture_glow_vulture");
|
||||
level._effect["vulture_perk_mystery_box_glow"] = loadfx("maps/zombie/fx_zm_vulture_glow_mystery_box");
|
||||
level._effect["vulture_perk_powerup_drop"] = loadfx("maps/zombie/fx_zm_vulture_glow_powerup");
|
||||
level._effect["vulture_perk_zombie_eye_glow"] = loadfx("misc/fx_zombie_eye_vulture");
|
||||
level.perk_vulture = spawnstruct();
|
||||
level.perk_vulture.array_stink_zombies = [];
|
||||
level.perk_vulture.array_stink_drop_locations = [];
|
||||
level.perk_vulture.players_with_vulture_perk = [];
|
||||
level.perk_vulture.vulture_vision_fx_list = [];
|
||||
level.perk_vulture.clientfields = spawnstruct();
|
||||
level.perk_vulture.clientfields.scriptmovers = [];
|
||||
level.perk_vulture.clientfields.scriptmovers[0] = ::vulture_stink_fx;
|
||||
level.perk_vulture.clientfields.scriptmovers[1] = ::vulture_drop_fx;
|
||||
level.perk_vulture.clientfields.scriptmovers[2] = ::vulture_drop_pickup;
|
||||
level.perk_vulture.clientfields.scriptmovers[3] = ::vulture_powerup_drop;
|
||||
level.perk_vulture.clientfields.actors = [];
|
||||
level.perk_vulture.clientfields.actors[1] = ::vulture_eye_glow;
|
||||
level.perk_vulture.clientfields.actors[0] = ::vulture_stink_trail_fx;
|
||||
level.perk_vulture.clientfields.toplayer = [];
|
||||
level.perk_vulture.clientfields.toplayer[0] = ::vulture_toggle;
|
||||
level.perk_vulture.disable_solo_quick_revive_glow = 0;
|
||||
|
||||
if (!isdefined(level.perk_vulture.custom_funcs_enable))
|
||||
level.perk_vulture.custom_funcs_enable = [];
|
||||
|
||||
if (!isdefined(level.perk_vulture.custom_funcs_disable))
|
||||
level.perk_vulture.custom_funcs_disable = [];
|
||||
|
||||
level.zombie_eyes_clientfield_cb_additional = ::vulture_eye_glow_callback_from_system;
|
||||
}
|
||||
|
||||
vulture_perk_ir(localclientnum, oldval, newval, bnewent, binitialsnap, fieldname, bwasdemojump)
|
||||
{
|
||||
if (!self islocalplayer())
|
||||
return;
|
||||
|
||||
if (!isdefined(self getlocalclientnumber()))
|
||||
return;
|
||||
|
||||
if (self getlocalclientnumber() != localclientnum)
|
||||
return;
|
||||
|
||||
if (isdemoplaying() && isspectating(localclientnum))
|
||||
newval = 0;
|
||||
|
||||
vulture_perk_set_ir(localclientnum, newval);
|
||||
}
|
||||
|
||||
vulture_perk_set_ir(lcn, newval)
|
||||
{
|
||||
if (newval)
|
||||
{
|
||||
setlutscriptindex(lcn, 2);
|
||||
enable_filter_zm_turned(self, 0, 0);
|
||||
self setsonarattachmentenabled(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
setlutscriptindex(lcn, 0);
|
||||
disable_filter_zm_turned(self, 0, 0);
|
||||
self setsonarattachmentenabled(0);
|
||||
}
|
||||
}
|
||||
|
||||
vulture_vision_enable(localclientnumber)
|
||||
{
|
||||
if (isdefined(level.perk_vulture.vulture_vision_fx_list[localclientnumber]))
|
||||
|
@ -12,6 +12,160 @@
|
||||
#include maps\mp\zombies\_zm_score;
|
||||
#include maps\mp\zombies\_zm_ai_basic;
|
||||
|
||||
init_vulture()
|
||||
{
|
||||
setdvarint("zombies_perk_vulture_pickup_time", 12);
|
||||
setdvarint("zombies_perk_vulture_pickup_time_stink", 16);
|
||||
setdvarint("zombies_perk_vulture_drop_chance", 65);
|
||||
setdvarint("zombies_perk_vulture_ammo_chance", 33);
|
||||
setdvarint("zombies_perk_vulture_points_chance", 33);
|
||||
setdvarint("zombies_perk_vulture_stink_chance", 33);
|
||||
setdvarint("zombies_perk_vulture_drops_max", 20);
|
||||
setdvarint("zombies_perk_vulture_network_drops_max", 5);
|
||||
setdvarint("zombies_perk_vulture_network_time_frame", 250);
|
||||
setdvarint("zombies_perk_vulture_spawn_stink_zombie_cooldown", 12);
|
||||
setdvarint("zombies_perk_vulture_max_stink_zombies", 4);
|
||||
level.perk_vulture = spawnstruct();
|
||||
level.perk_vulture.zombie_stink_array = [];
|
||||
level.perk_vulture.drop_time_last = 0;
|
||||
level.perk_vulture.drop_slots_for_network = 0;
|
||||
level.perk_vulture.last_stink_zombie_spawned = 0;
|
||||
level.perk_vulture.use_exit_behavior = 0;
|
||||
level.perk_vulture.clientfields = spawnstruct();
|
||||
level.perk_vulture.clientfields.scriptmovers = [];
|
||||
level.perk_vulture.clientfields.scriptmovers["vulture_stink_fx"] = 0;
|
||||
level.perk_vulture.clientfields.scriptmovers["vulture_drop_fx"] = 1;
|
||||
level.perk_vulture.clientfields.scriptmovers["vulture_drop_pickup"] = 2;
|
||||
level.perk_vulture.clientfields.scriptmovers["vulture_powerup_drop"] = 3;
|
||||
level.perk_vulture.clientfields.actors = [];
|
||||
level.perk_vulture.clientfields.actors["vulture_stink_trail_fx"] = 0;
|
||||
level.perk_vulture.clientfields.actors["vulture_eye_glow"] = 1;
|
||||
level.perk_vulture.clientfields.toplayer = [];
|
||||
level.perk_vulture.clientfields.toplayer["vulture_perk_active"] = 0;
|
||||
registerclientfield("toplayer", "vulture_perk_toplayer", 12000, 1, "int");
|
||||
registerclientfield("actor", "vulture_perk_actor", 12000, 2, "int");
|
||||
registerclientfield("scriptmover", "vulture_perk_scriptmover", 12000, 4, "int");
|
||||
registerclientfield("zbarrier", "vulture_perk_zbarrier", 12000, 1, "int");
|
||||
registerclientfield("toplayer", "sndVultureStink", 12000, 1, "int");
|
||||
registerclientfield("world", "vulture_perk_disable_solo_quick_revive_glow", 12000, 1, "int");
|
||||
registerclientfield("toplayer", "vulture_perk_disease_meter", 12000, 5, "float");
|
||||
registerclientfield("toplayer", "vulture_perk_ir", 3000, 1, "int");
|
||||
maps\mp\_visionset_mgr::vsmgr_register_info("overlay", "vulture_stink_overlay", 12000, 120, 31, 1);
|
||||
maps\mp\zombies\_zm_spawner::add_cusom_zombie_spawn_logic(::vulture_zombie_spawn_func);
|
||||
register_zombie_death_event_callback(::zombies_drop_stink_on_death);
|
||||
level thread vulture_perk_watch_mystery_box();
|
||||
level thread vulture_perk_watch_fire_sale();
|
||||
level thread vulture_perk_watch_powerup_drops();
|
||||
level thread vulture_handle_solo_quick_revive();
|
||||
assert(!isdefined(level.exit_level_func), "vulture perk is attempting to use level.exit_level_func, but one already exists for this level!");
|
||||
level.exit_level_func = ::vulture_zombies_find_exit_point;
|
||||
level.perk_vulture.invalid_bonus_ammo_weapons = array("time_bomb_zm", "time_bomb_detonator_zm");
|
||||
|
||||
if (!isdefined(level.perk_vulture.func_zombies_find_valid_exit_locations))
|
||||
level.perk_vulture.func_zombies_find_valid_exit_locations = ::get_valid_exit_points_for_zombie;
|
||||
|
||||
setup_splitscreen_optimizations();
|
||||
initialize_bonus_entity_pool();
|
||||
initialize_stink_entity_pool();
|
||||
}
|
||||
|
||||
give_vulture_perk()
|
||||
{
|
||||
vulture_debug_text("player " + self getentitynumber() + " has vulture perk!");
|
||||
|
||||
if (!isdefined(self.perk_vulture))
|
||||
self.perk_vulture = spawnstruct();
|
||||
|
||||
self.perk_vulture.active = 1;
|
||||
self vulture_vision_toggle(1);
|
||||
self vulture_clientfield_toplayer_set("vulture_perk_active");
|
||||
self thread vulture_perk_ir_think();
|
||||
self thread _vulture_perk_think();
|
||||
}
|
||||
|
||||
take_vulture_perk()
|
||||
{
|
||||
if (isdefined(self.perk_vulture) && (isdefined(self.perk_vulture.active) && self.perk_vulture.active))
|
||||
{
|
||||
vulture_debug_text("player " + self getentitynumber() + " has lost vulture perk!");
|
||||
self.perk_vulture.active = 0;
|
||||
|
||||
if (!self maps\mp\zombies\_zm_laststand::player_is_in_laststand())
|
||||
self.ignoreme = 0;
|
||||
|
||||
self vulture_vision_toggle(0);
|
||||
self vulture_clientfield_toplayer_clear("vulture_perk_active");
|
||||
self set_vulture_overlay(0);
|
||||
self.vulture_stink_value = 0;
|
||||
self setclientfieldtoplayer("vulture_perk_disease_meter", 0);
|
||||
self setclientfieldtoplayer("vulture_perk_ir", 0);
|
||||
self notify("vulture_perk_lost");
|
||||
}
|
||||
}
|
||||
|
||||
vulture_perk_ir_think()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("vulture_perk_lost");
|
||||
|
||||
self setclientdvar("cg_sonarAttachmentSpeedDelay", 0.1);
|
||||
prev_val = 0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (prev_val == 0)
|
||||
{
|
||||
if (self vulture_perk_ir_is_valid())
|
||||
{
|
||||
self setclientfieldtoplayer("vulture_perk_ir", 1);
|
||||
prev_val = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!self vulture_perk_ir_is_valid())
|
||||
{
|
||||
self setclientfieldtoplayer("vulture_perk_ir", 0);
|
||||
prev_val = 0;
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
vulture_perk_ir_is_valid()
|
||||
{
|
||||
// activating vulture stink filter deactivates vulture ir filter
|
||||
if (isdefined(self.vulture_stink_value) && self.vulture_stink_value > 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
zombies = getaispeciesarray(level.zombie_team, "all");
|
||||
|
||||
if (isdefined(level.sloth))
|
||||
{
|
||||
zombies = add_to_array(zombies, level.sloth, 0);
|
||||
}
|
||||
|
||||
foreach (zombie in zombies)
|
||||
{
|
||||
if (zombie damageconetrace(self getplayercamerapos(), self))
|
||||
{
|
||||
normal = vectornormalize(zombie getcentroid() - self getplayercamerapos());
|
||||
dot = vectordot(anglestoforward(self.angles), normal);
|
||||
|
||||
if (dot >= 0.5)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
_is_player_in_zombie_stink(a_points)
|
||||
{
|
||||
velocity = self getVelocity() * (1, 1, 0);
|
||||
|
@ -5,6 +5,7 @@ main()
|
||||
{
|
||||
replaceFunc(clientscripts\mp\zm_buried::init_gamemodes, scripts\zm\replaced\zm_buried::init_gamemodes);
|
||||
replaceFunc(clientscripts\mp\zm_buried::start_zombie_stuff, scripts\zm\replaced\zm_buried::start_zombie_stuff);
|
||||
replaceFunc(clientscripts\mp\zombies\_zm_perk_vulture::init_vulture, scripts\zm\replaced\_zm_perk_vulture::init_vulture);
|
||||
replaceFunc(clientscripts\mp\zombies\_zm_perk_vulture::vulture_vision_enable, scripts\zm\replaced\_zm_perk_vulture::vulture_vision_enable);
|
||||
replaceFunc(clientscripts\mp\zombies\_zm_perk_vulture::vulture_vision_update_wallbuy_list, scripts\zm\replaced\_zm_perk_vulture::vulture_vision_update_wallbuy_list);
|
||||
replaceFunc(clientscripts\mp\zombies\_zm_perk_vulture::vulture_vision_mystery_box, scripts\zm\replaced\_zm_perk_vulture::vulture_vision_mystery_box);
|
||||
|
@ -46,6 +46,9 @@ main()
|
||||
replaceFunc(maps\mp\zombies\_zm_equip_headchopper::init_anim_slice_times, scripts\zm\replaced\_zm_equip_headchopper::init_anim_slice_times);
|
||||
replaceFunc(maps\mp\zombies\_zm_equip_headchopper::headchopperthink, scripts\zm\replaced\_zm_equip_headchopper::headchopperthink);
|
||||
replaceFunc(maps\mp\zombies\_zm_equip_headchopper::setupwatchers, scripts\zm\replaced\_zm_equip_headchopper::setupwatchers);
|
||||
replaceFunc(maps\mp\zombies\_zm_perk_vulture::init_vulture, scripts\zm\replaced\_zm_perk_vulture::init_vulture);
|
||||
replaceFunc(maps\mp\zombies\_zm_perk_vulture::give_vulture_perk, scripts\zm\replaced\_zm_perk_vulture::give_vulture_perk);
|
||||
replaceFunc(maps\mp\zombies\_zm_perk_vulture::take_vulture_perk, scripts\zm\replaced\_zm_perk_vulture::take_vulture_perk);
|
||||
replaceFunc(maps\mp\zombies\_zm_perk_vulture::_is_player_in_zombie_stink, scripts\zm\replaced\_zm_perk_vulture::_is_player_in_zombie_stink);
|
||||
replaceFunc(maps\mp\zombies\_zm_weap_slowgun::init, scripts\zm\replaced\_zm_weap_slowgun::init);
|
||||
replaceFunc(maps\mp\zombies\_zm_weap_slowgun::zombie_paralyzed, scripts\zm\replaced\_zm_weap_slowgun::zombie_paralyzed);
|
||||
|
@ -11,6 +11,7 @@ material,menu_zm_nuked_zsurvival_nuked
|
||||
material,menu_zm_prison_zencounter_cellblock
|
||||
material,menu_zm_buried_zencounter_street
|
||||
material,menu_zm_map_transit_blit_power
|
||||
material,generic_filter_zm_turned
|
||||
image,menu_zm_transit_zclassic_transit
|
||||
image,menu_zm_highrise_zclassic_rooftop
|
||||
image,menu_zm_prison_select_mob
|
||||
|
Loading…
x
Reference in New Issue
Block a user