Skip to content

Commit dfe4392

Browse files
authored
Merge pull request #2891 from QuentinGruber/cleanup/reconstruction-sweep
Cleanup/reconstruction sweep
2 parents 144409f + c2f6498 commit dfe4392

19 files changed

Lines changed: 344 additions & 286 deletions

File tree

‎data/2016/dataSources/Abilities.json‎

Lines changed: 206 additions & 206 deletions
Large diffs are not rendered by default.

‎src/packets/ClientProtocol/ClientProtocol_1080/abilities.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ export const abilitiesPackets: PacketStructures = [
9898
{ name: "loadoutSlotId", type: "uint32", defaultValue: 0 },
9999
{ name: "abilityLineId", type: "uint32", defaultValue: 0 },
100100
{
101-
name: "unknownArray1",
101+
// the client copies this member list verbatim; each entry is { abilityId, abilityId, 0 }
102+
name: "memberIds",
102103
type: "array",
103104
defaultValue: [],
104105
fields: [
@@ -109,7 +110,7 @@ export const abilitiesPackets: PacketStructures = [
109110
},
110111
{ name: "unknownDword3", type: "uint32", defaultValue: 0 },
111112
{ name: "itemDefinitionId", type: "uint32", defaultValue: 0 },
112-
{ name: "unknownByte", type: "uint8", defaultValue: 0 }
113+
{ name: "abilityFlags", type: "uint8", defaultValue: 0 }
113114
]
114115
}
115116
]

‎src/packets/ClientProtocol/ClientProtocol_1080/base.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1932,6 +1932,8 @@ export const basePackets: PacketStructures = [
19321932
}
19331933
]
19341934
},
1935+
// the client reads the self packet to the end and requires it to consume the buffer
1936+
// exactly, so these trailing fields must stay in place and must not be trimmed
19351937
{ name: "quizComplete", type: "boolean", defaultValue: false },
19361938
{ name: "unknownQword1", type: "uint64string", defaultValue: "" },
19371939
{ name: "unknownDword38", type: "uint32", defaultValue: 0 },

‎src/packets/ClientProtocol/ClientProtocol_1080/mount.ts‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ export const mountPackets: PacketStructures = [
2424
{ name: "characterId", type: "uint64string", defaultValue: "0" },
2525
{ name: "vehicleGuid", type: "uint64string", defaultValue: "0" },
2626
{ name: "seatId", type: "uint32", defaultValue: 0 }, // seat 0-3
27-
{ name: "unknownDword2", type: "uint32", defaultValue: 1 }, // must be 1 or we dont get into vehicle?
27+
// the client requires this to be 1 or it will not enter the vehicle
28+
{ name: "mountAcceptFlag", type: "uint32", defaultValue: 1 },
2829
{ name: "isDriver", type: "uint32", defaultValue: 0 }, // is driver? (you can be on seat 3 and still have control)
2930
{ name: "debugStuff", type: "uint32", defaultValue: 0 }, // colored lines on screen
3031
{ name: "identity", type: "schema", fields: identitySchema },
@@ -100,8 +101,10 @@ export const mountPackets: PacketStructures = [
100101
{ name: "vehicleGuid", type: "uint64string", defaultValue: "0" },
101102
{ name: "identity", type: "schema", fields: identitySchema },
102103
{ name: "seatId", type: "uint32", defaultValue: 0 },
103-
{ name: "unknownDword1", type: "uint32", defaultValue: 1 }, // needs to be 1
104-
{ name: "unknownDword2", type: "uint32", defaultValue: 1 } // needs to be 1
104+
// paired accept flag; the client requires this to be 1
105+
{ name: "acceptFlag", type: "uint32", defaultValue: 1 },
106+
// whether the seat has drive control (seatId == 0 ? 1 : 0)
107+
{ name: "driveAccess", type: "uint32", defaultValue: 1 }
105108
]
106109
}
107110
],

‎src/packets/ClientProtocol/ClientProtocol_1080/shared.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1601,7 +1601,7 @@ function packFullNPCRemoteWeaponsData(obj: any) {
16011601
]
16021602
},
16031603
{
1604-
name: "remoteWeaponExtra",
1604+
name: "remoteWeaponsExtra",
16051605
type: "array",
16061606
defaultValue: {},
16071607
fields: [
@@ -2625,7 +2625,7 @@ export const fullPcSchema: PacketFields = [
26252625
fields: statSchema
26262626
},
26272627
{
2628-
name: "remoteWeaponExtra",
2628+
name: "remoteWeaponsExtra",
26292629
type: "array",
26302630
defaultValue: {},
26312631
fields: [
@@ -2714,7 +2714,7 @@ export const skyData: PacketFields = [
27142714
{ name: "windDirectionY", type: "float", defaultValue: 0 },
27152715
{ name: "windDirectionZ", type: "float", defaultValue: 0 },
27162716
{ name: "wind", type: "float", defaultValue: 0 },
2717-
{ name: "rainminStrength", type: "float", defaultValue: 0 },
2717+
{ name: "rainMinStrength", type: "float", defaultValue: 0 },
27182718
{ name: "rainRampupTimeSeconds", type: "float", defaultValue: 0 },
27192719
{ name: "cloudFile", type: "string", defaultValue: "" },
27202720
{ name: "stratusCloudTiling", type: "float", defaultValue: 0 },

‎src/packets/ClientProtocol/ClientProtocol_1080/weapon.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ function parseHitReportPacket(data: Buffer, offset: number) {
753753
obj.unknownBytes = DataSchema.parse(
754754
[{ name: "unknownBytes", type: "bytes", length: byteLen }],
755755
data,
756-
0
756+
offset
757757
).result;
758758
offset += byteLen;
759759

‎src/servers/ZoneServer2016/entities/basefullcharacter.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,6 +1453,8 @@ export abstract class BaseFullCharacter extends BaseLightweightCharacter {
14531453
resourceType = 0;
14541454
}
14551455
return {
1456+
// outer resourceId mirrors resourceData.resourceId so the packed entry is labelled
1457+
resourceId: resourceId,
14561458
resourceType: resourceType,
14571459
resourceData: {
14581460
resourceId: resourceId,

‎src/servers/ZoneServer2016/entities/baselightweightcharacter.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,8 @@ export abstract class BaseLightweightCharacter extends BaseEntity {
251251
},
252252
movementVersion: this.movementVersion,
253253
headActor: this.headActor,
254+
// zombie models render hair from the eyeActor slot, so for zombies the hair goes in eyeActor and
255+
// the real eye actor moves to unknownString4; non-zombies use each slot as named
254256
eyeActor: zombieModel ? this.hairModel : this.eyeActor,
255257
unknownString4: zombieModel ? this.eyeActor : this.hairModel,
256258
attachedObject: {

‎src/servers/ZoneServer2016/entities/character.ts‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,7 +1363,7 @@ export class Character2016 extends BaseFullCharacter {
13631363
return {
13641364
loadoutSlotId: slotId,
13651365
abilityLineId: abilityLineId,
1366-
unknownArray1:
1366+
memberIds:
13671367
itemDefinitionId == WEAPON_FISTS
13681368
? [
13691369
{
@@ -1376,7 +1376,7 @@ export class Character2016 extends BaseFullCharacter {
13761376
: [abilityEntry],
13771377
unknownDword3: 2,
13781378
itemDefinitionId: itemDefinitionId,
1379-
unknownByte: 64
1379+
abilityFlags: 64
13801380
};
13811381
}
13821382

@@ -1385,7 +1385,7 @@ export class Character2016 extends BaseFullCharacter {
13851385
{
13861386
loadoutSlotId: 1,
13871387
abilityLineId: 1,
1388-
unknownArray1: [
1388+
memberIds: [
13891389
{
13901390
unknownDword1: 1111164,
13911391
unknownDword2: 1111164,
@@ -1394,7 +1394,7 @@ export class Character2016 extends BaseFullCharacter {
13941394
],
13951395
unknownDword3: 2,
13961396
itemDefinitionId: 83,
1397-
unknownByte: 64
1397+
abilityFlags: 64
13981398
}
13991399
// hardcoded one weapon ability to fix fists after respawning
14001400
];
@@ -1521,7 +1521,7 @@ export class Character2016 extends BaseFullCharacter {
15211521
grants.push({
15221522
loadoutSlotId: loadoutSlotId,
15231523
abilityLineId: abilityLineId,
1524-
unknownArray1: [
1524+
memberIds: [
15251525
{
15261526
unknownDword1: abilityId,
15271527
unknownDword2: abilityId,
@@ -1530,7 +1530,7 @@ export class Character2016 extends BaseFullCharacter {
15301530
],
15311531
unknownDword3: 2,
15321532
itemDefinitionId: itemDefinitionId,
1533-
unknownByte: 64
1533+
abilityFlags: 64
15341534
});
15351535
return true;
15361536
};
@@ -2282,7 +2282,7 @@ export class Character2016 extends BaseFullCharacter {
22822282
case "HEAD":
22832283
case "GLASSES":
22842284
case "NECK":
2285-
damage = damage *= headshotDmgMultiplier;
2285+
damage *= headshotDmgMultiplier;
22862286
damage = server.applyHelmetDamageReduction(this, damage, 1);
22872287
break;
22882288
default:

‎src/servers/ZoneServer2016/entities/plant.ts‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ export class Plant extends ItemObject {
113113
this.actorModelId = ModelIds.WHEAT_CROPSTATE_1;
114114
break;
115115
case 2:
116-
this.actorModelId = ModelIds.WEHAT_CROPSTATE_2;
116+
this.actorModelId = ModelIds.WHEAT_CROPSTATE_2;
117117
break;
118118
case 3:
119119
this.actorModelId = ModelIds.WHEAT_CROPSTATE_3;
@@ -172,16 +172,14 @@ export class Plant extends ItemObject {
172172
client.character.lootItem(server, server.generateItem(Items.WHEAT));
173173
client.character.lootItem(
174174
server,
175-
server.generateItem(Items.SEED_WHEAT, 2),
176-
2
175+
server.generateItem(Items.SEED_WHEAT, 2)
177176
);
178177
break;
179178
case Items.SEED_CORN:
180179
client.character.lootItem(server, server.generateItem(Items.CORN));
181180
client.character.lootItem(
182181
server,
183-
server.generateItem(Items.SEED_CORN, 2),
184-
2
182+
server.generateItem(Items.SEED_CORN, 2)
185183
);
186184
break;
187185
}

0 commit comments

Comments
 (0)