Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions source/server/entities/perk_a_cola.qc
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,11 @@ void(string perk_classname, void() spawnfunc) Perk_RandomAssign =
else {
setorigin(machine, self.origin);
machine.angles = self.angles;

// .oldorigin is used by resets or updates, we do not
// want to teleport the machine back to its idle state
// whenever a client joins.
machine.oldorigin = machine.origin;
}
}

Expand Down
1 change: 1 addition & 0 deletions source/server/tests/test_module.qc
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ var struct {
{ Test_Perks_PhDFlopper_ValidateFields, "Test_Perks_PhDFlopper_ValidateFields" },
{ Test_Perks_DeadshotDaiquiri_ValidateFields, "Test_Perks_DeadshotDaiquiri_ValidateFields" },
{ Test_Perks_Random_LegacyFields, "Test_Perks_Random_LegacyFields" },
{ Test_Perks_Random_ResetDoesNotTeleport, "Test_Perks_Random_ResetDoesNotTeleport" },
{ Test_Perks_MuleKick_ValidateFields, "Test_Perks_MuleKick_ValidateFields" },
{ Test_Perks_Drink_WorkOnReset, "Test_Perks_Drink_WorkOnReset" },
{ Test_Weapons_Gewehr_MagazineSize, "Test_Weapons_Gewehr_MagazineSize" },
Expand Down
40 changes: 40 additions & 0 deletions source/server/tests/test_perksacola.qc
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,46 @@ void() Test_Perks_Random_LegacyFields =
remove(random);
};

//
// Test_Perks_Random_ResetDoesNotTeleport()
// Asserts that if GameRestart_ResetPerkaColas() is called,
// machines set by perk_random are not teleported to
// their original positions.
// (https://github.com/nzp-team/nzportable/issues/1186)
//
void() Test_Perks_Random_ResetDoesNotTeleport =
{
entity deadshot, random;
entity old_self = self;

// Spawn Deadshot Daiquiri at world origin
deadshot = spawn();
self = deadshot;
perk_deadshot();
setorigin(self, '0 0 0');

// Spawn a perk_random at client's origin
random = spawn();
self = random;
self.spawnflags = SPAWNFLAG_PERKRANDOM_DEADSHOT; // Put Deadshot Daiquiri here!
perk_random();
setorigin(random, old_self.origin);

// Activate perk_random
Perk_RandomDecide();

// Call GameRestart_ResetPerkaColas, Deadshot Daiquiri should not
// be reset to world origin..
GameRestart_ResetPerkaColas();

Test_Assert((deadshot.origin != '0 0 0'), "Deadshot Daiquiri was moved to world origin!");

self = old_self;

remove(deadshot);
remove(random);
};

// MARK: Misc.

//
Expand Down