From 95a3bf8f1ea96bb30c224ae30979576c686c1dbd Mon Sep 17 00:00:00 2001 From: Jakob MG Date: Mon, 26 Jan 2015 01:55:39 +0100 Subject: [PATCH] jetpack, activated by holding jump key --- balance-overkill.cfg | 16 +-- overkill.cfg | 129 ++++++++++++++++++++++ qcsrc/server/mutators/mutator_overkill.qc | 42 +++++-- 3 files changed, 171 insertions(+), 16 deletions(-) create mode 100644 overkill.cfg diff --git a/balance-overkill.cfg b/balance-overkill.cfg index bf390c219..027da5e60 100644 --- a/balance-overkill.cfg +++ b/balance-overkill.cfg @@ -1,7 +1,7 @@ g_mod_balance Overkill // {{{ starting gear -set g_balance_health_start 100 +set g_balance_health_start 110 set g_balance_armor_start 0 set g_start_ammo_shells 15 set g_start_ammo_nails 0 @@ -125,16 +125,16 @@ set g_balance_armor_regenstable 100 set g_balance_armor_rotstable 0 set g_balance_armor_limit 999 set g_balance_armor_blockpercent 0.7 -set g_balance_fuel_regen 0.1 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)" -set g_balance_fuel_regenlinear 0 -set g_balance_pause_fuel_regen 2 // other than this, fuel uses the health regen counter -set g_balance_fuel_rot 0.05 -set g_balance_fuel_rotlinear 0 +set g_balance_fuel_regen 0 "fuel regeneration (only applies if the player owns IT_FUEL_REGEN)" +set g_balance_fuel_regenlinear 30 +set g_balance_pause_fuel_regen 1 // other than this, fuel uses the health regen counter +set g_balance_fuel_rot 0 +set g_balance_fuel_rotlinear 10 set g_balance_pause_fuel_rot 5 set g_balance_pause_fuel_rot_spawn 10 set g_balance_fuel_regenstable 50 set g_balance_fuel_rotstable 100 -set g_balance_fuel_limit 999 +set g_balance_fuel_limit 100 // }}} // {{{ misc @@ -204,7 +204,7 @@ set g_jetpack_acceleration_side 1200 "acceleration of the jetpack in xy directio set g_jetpack_acceleration_up 600 "acceleration of the jetpack in z direction (note: you have to factor in gravity here, if antigravity is not 1)" set g_jetpack_maxspeed_side 1200 "max speed of the jetpack in xy direction" set g_jetpack_maxspeed_up 600 "max speed of the jetpack in z direction" -set g_jetpack_fuel 8 "fuel per second for jetpack" +set g_jetpack_fuel 20 "fuel per second for jetpack" set g_jetpack_attenuation 2 "jetpack sound attenuation" set g_grappling_hook_tarzan 2 // 2: can also pull players diff --git a/overkill.cfg b/overkill.cfg new file mode 100644 index 000000000..1eff76a4a --- /dev/null +++ b/overkill.cfg @@ -0,0 +1,129 @@ +g_overkill 1 + +g_overkill_ammo_start 50 +g_overkill_ammo_max 100 +g_overkill_ammo_regen 2.52 +g_overkill_superguns_builtin 0 + +g_use_ammunition 1 +g_pickup_items 0 +sv_gibhealth 120 +g_spawnshieldtime 0.5 + +g_balance_health_regen 0 +g_balance_health_regenlinear 100 +g_balance_health_rot 0 +g_balance_health_rotstable 200 // needs this too, else it rots towards 100 even with g_balance_health_rot 0 +g_balance_armor_rotstable 0 +g_balance_armor_rotlinear 1 +g_balance_armor_rot 0 +g_balance_pause_health_regen 2 + +// g_balance_laser_primary_force_velocitybias 1.2 // sorry i realy hate this + +g_balance_shotgun_primary_damage 17 +g_balance_shotgun_primary_bullets 10 +g_balance_shotgun_primary_force 80 +g_balance_shotgun_primary_spread 0.07 +g_balance_shotgun_primary_animtime 0.65 +g_balance_shotgun_primary_ammo 6.25 +g_balance_shotgun_reload_ammo 50 +g_balance_shotgun_reload_time 2 +g_balance_shotgun_primary_bulletconstant 3000 + +g_balance_uzi_mode 1 +g_balance_uzi_sustained_damage 25 +g_balance_uzi_sustained_refire 0.1 +g_balance_uzi_sustained_spread 0.01 +g_balance_uzi_sustained_force 5 +g_balance_uzi_reload_ammo 30 +g_balance_uzi_reload_time 1.5 +g_balance_uzi_spread_min 0 +g_balance_uzi_spread_add 0.0015 +g_balance_uzi_bulletconstant 500 + +g_balance_hmg_spread_min 0.01 +g_balance_hmg_spread_max 0.06 +g_balance_hmg_spread_add 0.005 + +g_balance_hmg_sustained_damage 30 +g_balance_hmg_sustained_headshotaddeddamage 0 +g_balance_hmg_sustained_force 10 +g_balance_hmg_sustained_spread 0.03 +g_balance_hmg_sustained_refire 0.05 +g_balance_hmg_sustained_ammo 1 + +g_balance_hmg_speed 24000 +g_balance_hmg_bulletconstant 115 // 13.1qu + +g_balance_hmg_reload_ammo 100 //default: 30 +g_balance_hmg_reload_time 1 + +g_balance_nex_primary_damage 100 +g_balance_nex_primary_force 500 +g_balance_nex_primary_refire 1 +g_balance_nex_primary_animtime 0.95 +g_balance_nex_primary_ammo 10 +g_balance_nex_primary_damagefalloff_mindist 0 +g_balance_nex_primary_damagefalloff_maxdist 0 +g_balance_nex_primary_damagefalloff_halflife 0 +g_balance_nex_primary_damagefalloff_forcehalflife 0 + +g_balance_nex_secondary 1 +g_balance_nex_charge 0 +g_balance_nex_reload_ammo 50 +g_balance_nex_reload_time 2 + +g_balance_rpc_ammo 10 +g_balance_rpc_animtime 1 +g_balance_rpc_damage 150 +g_balance_rpc_damage2 500 +g_balance_rpc_damageforcescale 2 +g_balance_rpc_edgedamage 50 +g_balance_rpc_force 400 +g_balance_rpc_health 25 +g_balance_rpc_lifetime 30 +g_balance_rpc_radius 300 +g_balance_rpc_refire 1 +g_balance_rpc_speed 2500 +g_balance_rpc_speedaccel 5000 +g_balance_rpc_reload_ammo 50 +g_balance_rpc_reload_time 1 + +g_projectiles_newton_style_2_minfactor 1 // rocket will never fly below default speed, even you you move backwards + +g_overkill_spawnsystem 1 // Experimental spawnsystem +g_overkill_spawnsystem_delay 2.5 // How long to wait before its OK to spawn at a player after someone just spawned at this player +g_overkill_spawnsystem_delay_death 0 // How long to wait before its OK to spawn at a player after death +g_overkill_spawnsystem_check_health 1 // Only allow spawn at this player if hes health is full +g_overkill_spawnsystem_close2death 1 // Spawn as close as possible to where we died? +g_overkill_spawnsystem_give_nade 1 // Give nade at spawn + +g_overkill_nade_lifetime 3.5 +g_overkill_nade_minforce 400 +g_overkill_nade_maxforce 2000 +g_overkill_nade_health 25 +g_overkill_nade_refire 10 + +g_overkill_nade_damage 225 +g_overkill_nade_edgedamage 90 +g_overkill_nade_radius 300 +g_overkill_nade_force 650 +g_overkill_nade_newton_style 0 + +g_pickup_healthmega_anyway 0 +g_pikup_armorsmall_max 20 +g_pickup_armorsmall_anyway 0 +g_pickup_healthmega_max 200 +g_pickup_healthmega_anyway 0 + +g_overkill_100a_anyway 1 +g_overkill_100h_anyway 1 +g_overkill_powerups_repalce 1 +g_overkill_superguns_onemag 1 +g_overkill_superguns_respawn_time 20 + +sv_defaultcharacter 1 +sv_defaultplayermodel "models/ok_player/okrobot1.dpm models/ok_player/okrobot2.dpm models/ok_player/okrobot3.dpm models/ok_player/okrobot4.dpm models/ok_player/okmale1.dpm models/ok_player/okmale2.dpm models/ok_player/okmale3.dpm models/ok_player/okmale4.dpm" +sv_defaultplayermodel_red "models/ok_player/okrobot1.dpm models/ok_player/okrobot2.dpm models/ok_player/okrobot3.dpm models/ok_player/okrobot4.dpm" +sv_defaultplayermodel_blue "models/ok_player/okmale1.dpm models/ok_player/okmale2.dpm models/ok_player/okmale3.dpm models/ok_player/okmale4.dpm" diff --git a/qcsrc/server/mutators/mutator_overkill.qc b/qcsrc/server/mutators/mutator_overkill.qc index d3710712d..10630e3f3 100644 --- a/qcsrc/server/mutators/mutator_overkill.qc +++ b/qcsrc/server/mutators/mutator_overkill.qc @@ -97,14 +97,6 @@ MUTATOR_HOOKFUNCTION(ok_PlayerRegen) { self.armorvalue = CalcRotRegen(self.armorvalue, autocvar_g_balance_armor_regenstable, autocvar_g_balance_armor_regen, autocvar_g_balance_armor_regenlinear, 1 * frametime * (time > self.ok_pauseregen_finished), 0, 0, 1, 1 * frametime * (time > self.pauserotarmor_finished), autocvar_g_balance_armor_limit); self.health = CalcRotRegen(self.health, autocvar_g_balance_health_regenstable, 0, 100, 1 * frametime * (time > self.ok_pauseregen_finished), 200, 0, autocvar_g_balance_health_rotlinear, 1 * frametime * (time > self.pauserothealth_finished), autocvar_g_balance_health_limit); - - float minf, maxf, limitf; - - maxf = autocvar_g_balance_fuel_rotstable; - minf = autocvar_g_balance_fuel_regenstable; - limitf = autocvar_g_balance_fuel_limit; - - self.ammo_fuel = CalcRotRegen(self.ammo_fuel, minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear, frametime * (time > self.pauseregen_finished) * ((self.items & IT_FUEL_REGEN) != 0), maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > self.pauserotfuel_finished), limitf); } return TRUE; // return TRUE anyway, as frozen uses no regen } @@ -195,6 +187,38 @@ MUTATOR_HOOKFUNCTION(ok_PlayerSpawn) return FALSE; } +.float jump_btn_time; +.float jump_btn_was_down; +MUTATOR_HOOKFUNCTION(ok_PlayerPhysics) +{ + if(!self.BUTTON_JUMP) + { + float maxf = autocvar_g_balance_fuel_rotstable; + float minf = autocvar_g_balance_fuel_regenstable; + float limitf = autocvar_g_balance_fuel_limit; + self.ammo_fuel = CalcRotRegen(self.ammo_fuel, minf, autocvar_g_balance_fuel_regen, autocvar_g_balance_fuel_regenlinear, frametime * (time > self.pauseregen_finished) * ((self.items & IT_FUEL_REGEN) != 0), maxf, autocvar_g_balance_fuel_rot, autocvar_g_balance_fuel_rotlinear, frametime * (time > self.pauserotfuel_finished), limitf); + + self.jump_btn_was_down = FALSE; + self.jump_btn_time = 0; + + return FALSE; + } + + if(!self.jump_btn_was_down && self.BUTTON_JUMP) + { + self.jump_btn_was_down = TRUE; + self.jump_btn_time = time + 0.2; + } + + if(time > self.jump_btn_time && self.ammo_fuel > 0) + { + self.BUTTON_JETPACK = TRUE; + self.ammo_fuel -= autocvar_g_jetpack_fuel * frametime; + } + + return FALSE; +} + MUTATOR_HOOKFUNCTION(ok_OnEntityPreSpawn) { if(autocvar_g_powerups) @@ -268,6 +292,7 @@ MUTATOR_HOOKFUNCTION(ok_StartItems) if((get_weaponinfo(WEP_HMG)).weaponstart > 0) { ok_start_items |= WEPSET_HMG; } start_items |= IT_UNLIMITED_WEAPON_AMMO; + start_items |= IT_JETPACK; start_weapons = warmup_start_weapons = ok_start_items; return FALSE; @@ -348,6 +373,7 @@ MUTATOR_DEFINITION(mutator_overkill) MUTATOR_HOOK(BuildMutatorsString, ok_BuildMutatorsString, CBC_ORDER_ANY); MUTATOR_HOOK(BuildMutatorsPrettyString, ok_BuildMutatorsPrettyString, CBC_ORDER_ANY); MUTATOR_HOOK(SetModname, ok_SetModname, CBC_ORDER_ANY); + MUTATOR_HOOK(PlayerPhysics, ok_PlayerPhysics, CBC_ORDER_FIRST); MUTATOR_ONADD { -- 2.39.2