diff --git a/README.md b/README.md index 0944e5cf..76072a65 100644 --- a/README.md +++ b/README.md @@ -511,4 +511,14 @@ * Zombies only go after players in the containment zone * Players in the containment zone gain 50 points when their team gains score * Players respawn after being down for 10 seconds -* Players retain perks \ No newline at end of file +* Players retain perks + +### Encounter Pro +* 100 player health +* Added Juggernog and Speed Cola on all maps +* Removed all perks except for Juggernog and Speed Cola +* Removed Pack-a-Punch +* Removed Mystery Box +* Removed powerups +* Removed buildables +* Power Station: disabled door to Power Station zone \ No newline at end of file diff --git a/maps/mp/zm_buried_grief_street.gsc b/maps/mp/zm_buried_grief_street.gsc index 718ebe40..0f0a9d22 100644 --- a/maps/mp/zm_buried_grief_street.gsc +++ b/maps/mp/zm_buried_grief_street.gsc @@ -181,10 +181,46 @@ buildbuildables() // } // } - //buildbuildable( "headchopper_zm" ); - buildbuildable( "springpad_zm" ); - buildbuildable( "subwoofer_zm" ); - buildbuildable( "turbine" ); + if(is_true(level.scr_zm_ui_gametype_pro)) + { + //removebuildable( "headchopper_zm" ); + removebuildable( "springpad_zm" ); + removebuildable( "subwoofer_zm" ); + removebuildable( "turbine" ); + } + else + { + //buildbuildable( "headchopper_zm" ); + buildbuildable( "springpad_zm" ); + buildbuildable( "subwoofer_zm" ); + buildbuildable( "turbine" ); + } +} + +removebuildable( buildable ) +{ + player = get_players()[ 0 ]; + _a197 = level.buildable_stubs; + _k197 = getFirstArrayKey( _a197 ); + while ( isDefined( _k197 ) ) + { + stub = _a197[ _k197 ]; + if ( !isDefined( buildable ) || stub.equipname == buildable ) + { + if ( isDefined( buildable ) || stub.persistent != 3 ) + { + _a206 = stub.buildablezone.pieces; + _k206 = getFirstArrayKey( _a206 ); + while ( isDefined( _k206 ) ) + { + piece = _a206[ _k206 ]; + piece maps/mp/zombies/_zm_buildables::piece_unspawn(); + _k206 = getNextArrayKey( _a206, _k206 ); + } + } + } + _k197 = getNextArrayKey( _a197, _k197 ); + } } disable_tunnels() diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index deb11ea3..a677523e 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -49,6 +49,7 @@ main() replaceFunc(maps/mp/zombies/_zm_weapons::get_upgraded_ammo_cost, scripts/zm/replaced/_zm_weapons::get_upgraded_ammo_cost); replaceFunc(maps/mp/zombies/_zm_weapons::makegrenadedudanddestroy, scripts/zm/replaced/_zm_weapons::makegrenadedudanddestroy); replaceFunc(maps/mp/zombies/_zm_weapons::createballisticknifewatcher_zm, scripts/zm/replaced/_zm_weapons::createballisticknifewatcher_zm); + replaceFunc(maps/mp/zombies/_zm_magicbox::treasure_chest_init, scripts/zm/replaced/_zm_magicbox::treasure_chest_init); replaceFunc(maps/mp/zombies/_zm_magicbox::treasure_chest_move, scripts/zm/replaced/_zm_magicbox::treasure_chest_move); replaceFunc(maps/mp/zombies/_zm_magicbox::treasure_chest_timeout, scripts/zm/replaced/_zm_magicbox::treasure_chest_timeout); replaceFunc(maps/mp/zombies/_zm_magicbox::timer_til_despawn, scripts/zm/replaced/_zm_magicbox::timer_til_despawn); @@ -79,9 +80,17 @@ init() { level.reimagined_version = ""; level.using_solo_revive = 0; - level.player_starting_health = 150; level.claymores_max_per_player = 20; + if(getDvar("g_gametype") == "zgrief" && is_true(level.scr_zm_ui_gametype_pro)) + { + level.player_starting_health = 100; + } + else + { + level.player_starting_health = 150; + } + setscoreboardcolumns_gametype(); set_lethal_grenade_init(); set_dvars(); diff --git a/scripts/zm/locs/zm_transit_loc_power.gsc b/scripts/zm/locs/zm_transit_loc_power.gsc index e817e137..1ae6aff1 100644 --- a/scripts/zm/locs/zm_transit_loc_power.gsc +++ b/scripts/zm/locs/zm_transit_loc_power.gsc @@ -14,7 +14,16 @@ struct_init() scripts/zm/replaced/utility::register_perk_struct( "specialty_armorvest", "zombie_vending_jugg", ( 10952, 8055, -565 ), ( 0, 270, 0 ) ); scripts/zm/replaced/utility::register_perk_struct( "specialty_quickrevive", "zombie_vending_quickrevive", ( 11855, 7308, -758 ), ( 0, 220, 0 ) ); - scripts/zm/replaced/utility::register_perk_struct( "specialty_fastreload", "zombie_vending_sleight", ( 11571, 7723, -757 ), ( 0, 0, 0 ) ); + + if(getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) + { + scripts/zm/replaced/utility::register_perk_struct( "specialty_fastreload", "zombie_vending_sleight", ( 11030, 7410, -573 ), ( 0, 215, 0 ) ); + } + else + { + scripts/zm/replaced/utility::register_perk_struct( "specialty_fastreload", "zombie_vending_sleight", ( 11571, 7723, -757 ), ( 0, 0, 0 ) ); + } + scripts/zm/replaced/utility::register_perk_struct( "specialty_rof", "zombie_vending_doubletap2", ( 11414, 8930, -352 ), ( 0, 0, 0 ) ); scripts/zm/replaced/utility::register_perk_struct( "specialty_scavenger", "zombie_vending_tombstone", ( 10946, 8308.77, -408 ), ( 0, 270, 0 ) ); scripts/zm/replaced/utility::register_perk_struct( "specialty_weapupgrade", "p6_anim_zm_buildable_pap_on", ( 12333, 8158, -752 ), ( 0, 180, 0 ) ); @@ -79,6 +88,18 @@ init_barriers() scripts/zm/replaced/utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToForward(angles) * -128) + (anglesToUp(angles) * 256), angles ); scripts/zm/replaced/utility::barrier( "collision_player_wall_512x512x10", origin + (anglesToForward(angles) * 64) + (anglesToUp(angles) * 256), angles ); scripts/zm/replaced/utility::barrier( "p6_zm_rocks_large_cluster_01", origin + (anglesToForward(angles) * -176) + (anglesToRight(angles) * -368) + (anglesToUp(angles) * 256), angles + (0, -15, 0) ); + + if(getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) + { + door_trigs = getentarray( "zombie_door", "targetname" ); + foreach ( door_trig in door_trigs ) + { + if ( door_trig.target == "pow_door_rr" ) + { + door_trig delete(); + } + } + } } show_powerswitch() diff --git a/scripts/zm/replaced/_zm_magicbox.gsc b/scripts/zm/replaced/_zm_magicbox.gsc index a59fa90e..fc55bf55 100644 --- a/scripts/zm/replaced/_zm_magicbox.gsc +++ b/scripts/zm/replaced/_zm_magicbox.gsc @@ -2,6 +2,62 @@ #include common_scripts\utility; #include maps\mp\zombies\_zm_utility; +treasure_chest_init( start_chest_name ) +{ + flag_init( "moving_chest_enabled" ); + flag_init( "moving_chest_now" ); + flag_init( "chest_has_been_used" ); + level.chest_moves = 0; + level.chest_level = 0; + if ( level.chests.size == 0 ) + { + return; + } + i = 0; + while ( i < level.chests.size ) + { + level.chests[ i ].box_hacks = []; + level.chests[ i ].orig_origin = level.chests[ i ].origin; + level.chests[ i ] maps/mp/zombies/_zm_magicbox::get_chest_pieces(); + if ( isDefined( level.chests[ i ].zombie_cost ) ) + { + level.chests[ i ].old_cost = level.chests[ i ].zombie_cost; + i++; + continue; + } + else + { + level.chests[ i ].old_cost = 950; + } + i++; + } + if ( (getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) || !level.enable_magic ) + { + _a102 = level.chests; + _k102 = getFirstArrayKey( _a102 ); + while ( isDefined( _k102 ) ) + { + chest = _a102[ _k102 ]; + chest maps/mp/zombies/_zm_magicbox::hide_chest(); + _k102 = getNextArrayKey( _a102, _k102 ); + } + return; + } + level.chest_accessed = 0; + if ( level.chests.size > 1 ) + { + flag_set( "moving_chest_enabled" ); + level.chests = array_randomize( level.chests ); + } + else + { + level.chest_index = 0; + level.chests[ 0 ].no_fly_away = 1; + } + maps/mp/zombies/_zm_magicbox::init_starting_chest_location( start_chest_name ); + array_thread( level.chests, maps/mp/zombies/_zm_magicbox::treasure_chest_think ); +} + treasure_chest_move( player_vox ) { level waittill( "weapon_fly_away_start" ); diff --git a/scripts/zm/replaced/_zm_perks.gsc b/scripts/zm/replaced/_zm_perks.gsc index 8d7c1d56..fc11deb5 100644 --- a/scripts/zm/replaced/_zm_perks.gsc +++ b/scripts/zm/replaced/_zm_perks.gsc @@ -317,6 +317,67 @@ initialize_custom_perk_arrays() struct.scr_zm_ui_gametype = "zclassic"; struct.scr_zm_map_start_location = "processing"; move_perk_machine("zm_buried", "street", "specialty_fastreload", struct); + + if(getDvar("g_gametype") == "zgrief" && getDvarIntDefault("ui_gametype_pro", 0)) + { + add_missing_perk_machines(); + remove_perk_machines(); + } +} + +add_missing_perk_machines() +{ + structs = getStructArray("zm_perk_machine", "targetname"); + foreach(struct in structs) + { + if((level.script == "zm_transit" && level.scr_zm_map_start_location == "transit")) + { + if(isDefined(struct.script_noteworthy) && struct.script_noteworthy == "specialty_quickrevive") + { + if(isDefined(struct.script_string) && isSubStr(struct.script_string, "zclassic_perks_transit")) + { + struct.script_noteworthy = "specialty_armorvest"; + struct.script_string += " zgrief_perks_transit"; + } + } + + if(isDefined(struct.script_noteworthy) && struct.script_noteworthy == "specialty_fastreload") + { + if(isDefined(struct.script_string) && isSubStr(struct.script_string, "zclassic_perks_transit")) + { + struct.script_string += " zgrief_perks_transit"; + struct.origin = (-6304, 5363, -57); + struct.angles += (0, 180, 0); + } + } + } + else if((level.script == "zm_prison" && level.scr_zm_map_start_location == "cellblock")) + { + if(isDefined(struct.script_noteworthy) && struct.script_noteworthy == "specialty_rof") + { + if(isDefined(struct.script_string) && isSubStr(struct.script_string, "zgrief_perks_cellblock")) + { + struct.script_noteworthy = "specialty_armorvest"; + struct.origin = (1411, 9663, 1335); + struct.angles += (0, 180, 0); + } + } + } + } +} + +remove_perk_machines() +{ + exceptions = array("specialty_armorvest", "specialty_fastreload"); + + structs = getStructArray("zm_perk_machine", "targetname"); + foreach(struct in structs) + { + if(isDefined(struct.script_noteworthy) && !isInArray(exceptions, struct.script_noteworthy)) + { + struct.script_string = ""; + } + } } move_perk_machine(map, location, perk, move_struct) diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index ee953522..c2537e93 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -316,6 +316,7 @@ set_grief_vars() gamemodes = strTok(getDvar("ui_gametype_obj"), " "); level.scr_zm_ui_gametype_obj = random(gamemodes); + level.scr_zm_ui_gametype_pro = getDvarIntDefault("ui_gametype_pro", 0); level.noroundnumber = 1; level.zombie_powerups["meat_stink"].solo = 1; @@ -398,6 +399,11 @@ set_grief_vars() level.player_starting_points = 10000; } + if(level.scr_zm_ui_gametype_pro) + { + level.zombie_vars["zombie_powerup_drop_max_per_round"] = 0; + } + level.zombie_vars["zombie_powerup_drop_increment"] = level.player_starting_points * 4; if(is_respawn_gamemode()) @@ -1381,26 +1387,34 @@ grief_intro_text() get_gamemode_display_name() { + name = ""; if(level.scr_zm_ui_gametype_obj == "zgrief") { - return "Grief"; + name = "Grief"; } else if(level.scr_zm_ui_gametype_obj == "zsnr") { - return "Search & Rezurrect"; + name = "Search & Rezurrect"; } else if(level.scr_zm_ui_gametype_obj == "zrace") { - return "Race"; + name = "Race"; } else if(level.scr_zm_ui_gametype_obj == "zmeat") { - return "Meat"; + name = "Meat"; } else if(level.scr_zm_ui_gametype_obj == "zcontainment") { - return "Containment"; + name = "Containment"; } + + if(level.scr_zm_ui_gametype_pro) + { + name += " Pro"; + } + + return name; } is_respawn_gamemode()