Skip to content

Commit 4f12006

Browse files
SERVER: PHD Flopper fix (#159)
1 parent 244352f commit 4f12006

7 files changed

Lines changed: 62 additions & 6 deletions

File tree

source/server/damage.qc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ float(float current_health_delay, float current_perks) Gamemode_GetHealthRegenDe
3939
#define DMG_SCORE_GRENADE 50 // Death by Grenade.
4040
#define DMG_SCORE_EXPLOSIVE 60 // Death by Explosive Weapon.
4141
#define DMG_SCORE_TESLA 50 // Death by Tesla.
42+
#define DMG_SCORE_FLOPPER 50 // Death by PhD Flopper
4243
#define DMG_SCORE_STDDAMAGE 10 // Standard Damage reward.
4344

4445
void() Barrel_Hit;
@@ -274,6 +275,9 @@ void(entity attacker, float d_style) DieHandler =
274275
case DMG_TYPE_UPPERTORSO:
275276
points_earned = DMG_SCORE_UPPERTORSO;
276277
break;
278+
case DMG_TYPE_FLOPPER:
279+
points_earned = DMG_SCORE_FLOPPER;
280+
break;
277281
default:
278282
if (cvar("developer"))
279283
bprint(PRINT_HIGH, "DieHandler: Received invalid style\n");
@@ -580,7 +584,7 @@ void(entity inflictor, entity attacker, float damage2, float mindamage, float ra
580584
} else if (inflictor.classname == "player") {
581585
// phd flopper.
582586
final_damage = calculate_proximity_value(mindamage, damage2, inflictor.origin, ent.origin, radius);
583-
damage_style = DMG_TYPE_GRENADE;
587+
damage_style = DMG_TYPE_FLOPPER;
584588
} else {
585589
r = rounds;
586590
multi = 1.07;

source/server/gamemodes/core.qc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ void(entity attacker, float death_style) Gamemode_DieHandler =
203203
{
204204
switch(current_gamemode) {
205205
case GAMEMODE_STICKSNSTONES: Gamemode_Sticks_DieHandler(attacker, death_style); break;
206+
case GAMEMODE_GUNGAME: Gamemode_GunGame_DieHandler(attacker, death_style); break;
206207
default: break;
207208
}
208209
};

source/server/gamemodes/festive.qc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ float(float current_earned_score, float damage_style) Gamemode_Festive_ScoreForD
215215
case DMG_TYPE_GRENADE:
216216
case DMG_TYPE_TESLA:
217217
return 90;
218+
case DMG_TYPE_FLOPPER:
219+
return 90;
218220
}
219221

220222
return current_earned_score;

source/server/gamemodes/gun_game.qc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,4 +363,14 @@ void(float score_earned) Gamemode_GunGame_PlayerAddScore =
363363
}
364364
}
365365
}
366+
};
367+
368+
void(entity attacker, float death_style) Gamemode_GunGame_DieHandler =
369+
{
370+
371+
// possible fix for PHD Flopper giving points toward your weapon
372+
switch(death_style) {
373+
case DMG_TYPE_FLOPPER:
374+
return 0;
375+
}
366376
};

source/server/tests/test_score.qc

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ void() Test_AddScore_DamageTypes =
5555
DMG_TYPE_GRENADE,
5656
DMG_TYPE_EXPLOSIVE,
5757
DMG_TYPE_LOWERTORSO,
58-
DMG_TYPE_UPPERTORSO
58+
DMG_TYPE_UPPERTORSO,
59+
DMG_TYPE_FLOPPER
5960
};
6061

6162
float scores[] = {
@@ -66,7 +67,8 @@ void() Test_AddScore_DamageTypes =
6667
DMG_SCORE_GRENADE,
6768
DMG_SCORE_EXPLOSIVE,
6869
DMG_SCORE_LOWERTORSO,
69-
DMG_SCORE_UPPERTORSO
70+
DMG_SCORE_UPPERTORSO,
71+
DMG_SCORE_FLOPPER
7072
};
7173

7274
for (float i = 0; i < styles.length; i++) {
@@ -110,4 +112,40 @@ void() Test_AddScore_MysteryBoxLeave =
110112

111113
remove(mystery_box_ent);
112114
remove(owner_ent);
115+
};
116+
117+
118+
//
119+
// Test_AddScore_PhD_GunGame()
120+
// Asserts we are giving correct amount
121+
// of score for PhD Flopper in gun game
122+
// Should return 0
123+
// (https://github.com/nzp-team/nzportable/issues/1363)
124+
//
125+
void() Test_AddScore_PhD_GunGame =
126+
{
127+
float score_pre = self.points;
128+
129+
Gamemode_GunGame_DieHandler(self, DMG_TYPE_FLOPPER);
130+
131+
float score_post = self.points;
132+
float score_delta = score_post - score_pre;
133+
134+
135+
136+
Test_Assert((score_delta == 0), sprintf("Unexpected score earned, expected 0 but got [%d]!", score_delta));
137+
};
138+
139+
//
140+
// Test_AddScore_PhD_Festive()
141+
// Asserts we are giving correct amount
142+
// of score for PhD Flopper in Festive
143+
// Should return 90
144+
// (https://github.com/nzp-team/nzportable/issues/1363)
145+
//
146+
void() Test_AddScore_PhD_Festive =
147+
{
148+
float pointsEarned = Gamemode_Festive_ScoreForDamage(DMG_SCORE_FLOPPER, DMG_TYPE_FLOPPER);
149+
150+
Test_Assert((pointsEarned == 90), sprintf("Unexpected score earned, expected 90 but got [%d]!", pointsEarned));
113151
};

source/server/weapons/weapon_core.qc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1841,8 +1841,8 @@ void() CheckPlayer =
18411841
traceline(self.origin, self.origin + (v_up * -40), 0, self);
18421842

18431843
if (trace_ent.classname == "player") {
1844-
DamageHandler(self, trace_ent, 100000, DMG_TYPE_OTHER);
1845-
DamageHandler(trace_ent, self, 100000, DMG_TYPE_OTHER);
1844+
DamageHandler(self, trace_ent, 100000, DMG_TYPE_FLOPPER);
1845+
DamageHandler(trace_ent, self, 100000, DMG_TYPE_FLOPPER);
18461846
}
18471847
}
18481848

@@ -1874,7 +1874,7 @@ void() CheckPlayer =
18741874
float damage = over * 0.68;
18751875
if (damage > 98) damage = 98;
18761876

1877-
DamageHandler (self, other, damage, DMG_TYPE_OTHER);
1877+
DamageHandler (self, other, damage, DMG_TYPE_FLOPPER);
18781878

18791879
if (self.health <= 5)
18801880
GiveAchievement(7, self);

source/shared/shared_defs.qc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ float map_compatibility_mode;
301301
#define DMG_TYPE_ZOMBIESWIPE 9 // Zombie-inflicted: Any attack on Player
302302
#define DMG_TYPE_ELECTRICTRAP 10 // Trap-inflicted: Electric trap damage
303303
#define DMG_TYPE_OTHER 11 // For use with misc. damage infliction
304+
#define DMG_TYPE_FLOPPER 12 // Player-inflicted: PhD Flopper explosion
304305

305306
//Perk types
306307
#define P_JUG 1

0 commit comments

Comments
 (0)