about summary refs log tree commit diff
path: root/src/game
diff options
context:
space:
mode:
authorJakob Fries <jakob.fries@gmail.com>2007-08-04 01:53:26 +0000
committerJakob Fries <jakob.fries@gmail.com>2007-08-04 01:53:26 +0000
commit7bf877d252032c00404410d52ed5fd610a80589d (patch)
treeed14c0c59377d39d902c82b569de019f4f54ed2e /src/game
parente4304d5c90b3479021136b3ce4f77822a89394ae (diff)
downloadzcatch-7bf877d252032c00404410d52ed5fd610a80589d.tar.gz
zcatch-7bf877d252032c00404410d52ed5fd610a80589d.zip
balance fixes
Diffstat (limited to 'src/game')
-rw-r--r--src/game/server/game_server.cpp11
-rw-r--r--src/game/server/game_server.h1
2 files changed, 7 insertions, 5 deletions
diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp
index d5ba355f..9b270f4c 100644
--- a/src/game/server/game_server.cpp
+++ b/src/game/server/game_server.cpp
@@ -731,7 +731,7 @@ void player::try_respawn()
 	weapons[WEAPON_HAMMER].ammo = -1;
 	weapons[WEAPON_GUN].got = true;
 	weapons[WEAPON_GUN].ammo = data->weapons[active_weapon].maxammo;
-
+	
 	active_weapon = WEAPON_GUN;
 	reload_timer = 0;
 	
@@ -911,7 +911,8 @@ int player::handle_weapons()
 						create_sound(pos, SOUND_ROCKET_FIRE);
 						break;
 					case WEAPON_SHOTGUN:
-						for(int i = -2; i <= 2; i++)
+						int shotspread = min(2, weapons[active_weapon].ammo);
+						for(int i = -shotspread; i <= shotspread; i++)
 						{
 							float a = get_angle(direction);
 							a += i*0.075f;
@@ -922,7 +923,7 @@ int player::handle_weapons()
 								//vec2(cosf(a), sinf(a))*20.0f,
 								server_tickspeed()/3,
 								this,
-								1, 0, 0, -1, WEAPON_SHOTGUN);
+								2, 0, 0, -1, WEAPON_SHOTGUN);
 						}
 						create_sound(pos, SOUND_SHOTGUN_FIRE);
 						break;
@@ -935,7 +936,7 @@ int player::handle_weapons()
 						break;						
 				}
 				
-				weapons[active_weapon].ammo--;
+				weapons[active_weapon].ammo -= max(1, weapons[active_weapon].ammocost);
 				attack_tick = server_tick();
 				reload_timer = data->weapons[active_weapon].firedelay * server_tickspeed() / 1000;
 			}
@@ -1631,7 +1632,7 @@ void create_explosion(vec2 p, int owner, int weapon, bool bnodamage)
 			l = 1-clamp((l-innerradius)/(radius-innerradius), 0.0f, 1.0f);
 			float dmg = 6 * l;
 			if((int)dmg)
-				ents[i]->take_damage(forcedir*dmg*2, (int)dmg, owner, weapon);
+				ents[i]->take_damage(forcedir*dmg*2, (int)dmg/2, owner, weapon);
 		}
 	}
 }
diff --git a/src/game/server/game_server.h b/src/game/server/game_server.h
index ae3749f6..73b08794 100644
--- a/src/game/server/game_server.h
+++ b/src/game/server/game_server.h
@@ -208,6 +208,7 @@ public:
 	{
 		int ammoregenstart;
 		int ammo;
+		int ammocost;
 		bool got;
 	} weapons[NUM_WEAPONS];
 	int active_weapon;