diff --git a/README.md b/README.md index a50eeb70..66205e11 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ * Decreased normal health regeneration delay from 2.4 seconds to 2 seconds * Decreased low health regeneration delay from 5 seconds to 4 seconds * Normal health regeneration rate is no longer instant -* Changed health regeneration rate to 100 health per second (previously fully restored health in 0.5 seconds) +* Changed health regeneration rate to 100 health per second (normally fully restored health in 0.5 seconds) * Fall damage no longer increases when max health is increased * Removed blur when getting damaged * Removed shellshock when getting damaged from grenades @@ -66,6 +66,11 @@ ## Weapons * Switch to melee weapon by pressing the new melee weapon button (same button as the Maxis Drone on Origins) +* Changed grenade damage scalar to 150 (normally random number between 100 and 200 added by round number) +* Changed projectile weapon damage scalar to 50 multiplied by round number (normally random number between 0 and 100 multiplied by round number) +* Capped projectile weapon damage scalar at 3000 +* Changed placeable mine damage scalar to 150 multiplied by round number (normally random number between 100 and 200 multiplied by round number) +* Capped placeable mine damage scalar at 9000 ### AN-94 * Increased weapon cost from 1200 to 1500 diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index 6d5a567e..72d3b239 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -18,6 +18,7 @@ #include scripts/zm/replaced/_zm_traps; #include scripts/zm/replaced/_zm_equipment; #include scripts/zm/replaced/_zm_ai_basic; +#include scripts/zm/replaced/_zm_spawner; main() { @@ -194,6 +195,7 @@ post_all_players_spawned() level.playersuicideallowed = undefined; level.disable_free_perks_before_power = undefined; level.custom_random_perk_weights = undefined; + level.global_damage_func = scripts/zm/replaced/_zm_spawner::zombie_damage; level.callbackplayerdamage = scripts/zm/replaced/_zm::callback_playerdamage; level.overrideplayerdamage = scripts/zm/replaced/_zm::player_damage_override; level.playerlaststand_func = scripts/zm/replaced/_zm::player_laststand; diff --git a/scripts/zm/replaced/_zm_spawner.gsc b/scripts/zm/replaced/_zm_spawner.gsc new file mode 100644 index 00000000..c428338f --- /dev/null +++ b/scripts/zm/replaced/_zm_spawner.gsc @@ -0,0 +1,154 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\zombies\_zm_utility; + +zombie_damage( mod, hit_location, hit_origin, player, amount, team ) +{ + if ( is_magic_bullet_shield_enabled( self ) ) + { + return; + } + + player.use_weapon_type = mod; + + if ( isDefined( self.marked_for_death ) ) + { + return; + } + + if ( !isDefined( player ) ) + { + return; + } + + if ( isDefined( hit_origin ) ) + { + self.damagehit_origin = hit_origin; + } + else + { + self.damagehit_origin = player getweaponmuzzlepoint(); + } + + if ( self maps/mp/zombies/_zm_spawner::check_zombie_damage_callbacks( mod, hit_location, hit_origin, player, amount ) ) + { + return; + } + else if ( self maps/mp/zombies/_zm_spawner::zombie_flame_damage( mod, player ) ) + { + if ( self maps/mp/zombies/_zm_spawner::zombie_give_flame_damage_points() ) + { + player maps/mp/zombies/_zm_score::player_add_points( "damage", mod, hit_location, self.isdog, team ); + } + } + else if ( maps/mp/zombies/_zm_spawner::player_using_hi_score_weapon( player ) ) + { + damage_type = "damage"; + } + else + { + damage_type = "damage_light"; + } + + if ( !is_true( self.no_damage_points ) ) + { + player maps/mp/zombies/_zm_score::player_add_points( damage_type, mod, hit_location, self.isdog, team, self.damageweapon ); + } + + if ( isDefined( self.zombie_damage_fx_func ) ) + { + self [[ self.zombie_damage_fx_func ]]( mod, hit_location, hit_origin, player ); + } + + modname = remove_mod_from_methodofdeath( mod ); + + round_scalar = level.round_number; + if(level.scr_zm_ui_gametype == "zgrief") + { + round_scalar = 20; + } + + if ( is_placeable_mine( self.damageweapon ) ) + { + damage = round_scalar * 150; + max_damage = 9000; + if(damage > max_damage) + { + damage = max_damage; + } + + if ( isDefined( self.zombie_damage_claymore_func ) ) + { + self [[ self.zombie_damage_claymore_func ]]( mod, hit_location, hit_origin, player ); + } + else if ( isDefined( player ) && isalive( player ) ) + { + self dodamage( damage, self.origin, player, self, hit_location, mod ); + } + else + { + self dodamage( damage, self.origin, undefined, self, hit_location, mod ); + } + } + else if ( mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH" ) + { + damage = 150; + + if ( isDefined( player ) && isalive( player ) ) + { + player.grenade_multiattack_count++; + player.grenade_multiattack_ent = self; + self dodamage( damage, self.origin, player, self, hit_location, modname ); + } + else + { + self dodamage( damage, self.origin, undefined, self, hit_location, modname ); + } + } + else if ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_EXPLOSIVE" ) + { + damage = round_scalar * 50; + max_damage = 3000; + if(damage > max_damage) + { + damage = max_damage; + } + + if ( isDefined( player ) && isalive( player ) ) + { + self dodamage( damage, self.origin, player, self, hit_location, modname ); + } + else + { + self dodamage( damage, self.origin, undefined, self, hit_location, modname ); + } + } + + if ( isDefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" && isalive( self ) ) + { + if ( isDefined( player ) ) + { + rand = randomintrange( 0, 100 ); + if ( rand < 10 ) + { + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "crawl_spawn" ); + } + } + } + else if ( isDefined( self.a.gib_ref ) || self.a.gib_ref == "right_arm" && self.a.gib_ref == "left_arm" ) + { + if ( self.has_legs && isalive( self ) ) + { + if ( isDefined( player ) ) + { + rand = randomintrange( 0, 100 ); + if ( rand < 7 ) + { + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "shoot_arm" ); + } + } + } + } + + self thread maps/mp/zombies/_zm_powerups::check_for_instakill( player, mod, hit_location ); +} \ No newline at end of file diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 1bfeeb7d..24901976 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -247,7 +247,6 @@ set_grief_vars() level.brutus_health = 20000; level.brutus_expl_dmg_req = 12000; level.player_starting_points = 10000; - level.global_damage_func = ::zombie_damage; level.custom_end_screen = ::custom_end_screen; level.game_module_onplayerconnect = ::grief_onplayerconnect; level.game_mode_custom_onplayerdisconnect = ::grief_onplayerdisconnect; @@ -1701,127 +1700,6 @@ unlimited_zombies() } } -zombie_damage( mod, hit_location, hit_origin, player, amount, team ) -{ - if ( is_magic_bullet_shield_enabled( self ) ) - { - return; - } - player.use_weapon_type = mod; - if ( isDefined( self.marked_for_death ) ) - { - return; - } - if ( !isDefined( player ) ) - { - return; - } - if ( isDefined( hit_origin ) ) - { - self.damagehit_origin = hit_origin; - } - else - { - self.damagehit_origin = player getweaponmuzzlepoint(); - } - if ( self maps/mp/zombies/_zm_spawner::check_zombie_damage_callbacks( mod, hit_location, hit_origin, player, amount ) ) - { - return; - } - else if ( self maps/mp/zombies/_zm_spawner::zombie_flame_damage( mod, player ) ) - { - if ( self maps/mp/zombies/_zm_spawner::zombie_give_flame_damage_points() ) - { - player maps/mp/zombies/_zm_score::player_add_points( "damage", mod, hit_location, self.isdog, team ); - } - } - else if ( maps/mp/zombies/_zm_spawner::player_using_hi_score_weapon( player ) ) - { - damage_type = "damage"; - } - else - { - damage_type = "damage_light"; - } - if ( !is_true( self.no_damage_points ) ) - { - player maps/mp/zombies/_zm_score::player_add_points( damage_type, mod, hit_location, self.isdog, team, self.damageweapon ); - } - if ( isDefined( self.zombie_damage_fx_func ) ) - { - self [[ self.zombie_damage_fx_func ]]( mod, hit_location, hit_origin, player ); - } - modname = remove_mod_from_methodofdeath( mod ); - if ( is_placeable_mine( self.damageweapon ) ) - { - damage = 2000; - if ( isDefined( self.zombie_damage_claymore_func ) ) - { - self [[ self.zombie_damage_claymore_func ]]( mod, hit_location, hit_origin, player ); - } - else if ( isDefined( player ) && isalive( player ) ) - { - self dodamage( damage, self.origin, player, self, hit_location, mod ); - } - else - { - self dodamage( damage, self.origin, undefined, self, hit_location, mod ); - } - } - else if ( mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH" ) - { - damage = 150; - if ( isDefined( player ) && isalive( player ) ) - { - player.grenade_multiattack_count++; - player.grenade_multiattack_ent = self; - self dodamage( damage, self.origin, player, self, hit_location, modname ); - } - else - { - self dodamage( damage, self.origin, undefined, self, hit_location, modname ); - } - } - else if ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" || mod == "MOD_EXPLOSIVE" ) - { - damage = 1000; - if ( isDefined( player ) && isalive( player ) ) - { - self dodamage( damage, self.origin, player, self, hit_location, modname ); - } - else - { - self dodamage( damage, self.origin, undefined, self, hit_location, modname ); - } - } - if ( isDefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" && isalive( self ) ) - { - if ( isDefined( player ) ) - { - rand = randomintrange( 0, 100 ); - if ( rand < 10 ) - { - player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "crawl_spawn" ); - } - } - } - else if ( isDefined( self.a.gib_ref ) || self.a.gib_ref == "right_arm" && self.a.gib_ref == "left_arm" ) - { - if ( self.has_legs && isalive( self ) ) - { - if ( isDefined( player ) ) - { - rand = randomintrange( 0, 100 ); - if ( rand < 7 ) - { - player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "shoot_arm" ); - } - } - } - } - self thread maps/mp/zombies/_zm_powerups::check_for_instakill( player, mod, hit_location ); -} - player_suicide() { self.playersuicided = 1;