MSCO07
Baseline - MSCO 07
SWGANH Wiki is a repository of Star Wars Galaxies Developer information. This site is only meant to be used by SWGANH Developer team.
|
BaseLine StructFew bytes left to figure out on this one. SHORT: Operand Count //Part 0 INT: Slot Counter INT: Update Counter { A_STRING: STF File INT: String spacer A_STRING: STF Name } //Part 1 INT: Counter 1 INT: Update Counter { INT: Unknown, must be 4 if slot is filled } //Part 2 INT: Counter 2 INT: Update Counter { //here go the ingredient IDs INT: Counter for IngredientID { LONG: ingredient ID } } //Part 3 INT: Counter 3 INT: Update Counter { INT: Counter for Ingredient Amount { INT: amount of ingredient filled into slot } } //Part 4 INT: Counter 4 INT: Update Counter { INT: Unknown } //Part 5 INT: Counter INT: Update Counter { INT: Unknown } //Part 6 INT: Counter INT: Update Counter * 2 { INT: Unknown } //Part 7 BYTE: some sort of stale flag probably not used(usually slot size * 4) //Part 8 Experimentation Attributes INT: Counter INT: Update Counter { A_STRING: dir to look up string (crafting) INT: unknown A_STRING: Areas of Experimentation for the item eg expEffectiveness; expRange } //Part 9 Experimentation attributes Values INT: Counter INT: Update Counter { FLOAT: Experimentation Attribute Value } //Part 10 not tested yet INT: Counter INT: Update Counter { INT: Unknown } //Part 11 Assembly Attributes Values -> percentage of assembly succes // 100% = highest possible (30%) INT: Counter INT: Update Counter { FLOAT: Assembly Attribute Value } //Part 12 Max reachable Experimentation Attribute Value INT: Counter INT: Update Counter { FLOAT: Max Experimentation Attribute Value } //Part 18 unknown yet INT: Counter INT: Update Counter { FLOAT: failure probability given as 0.0 to 100.0 } // unknown UINT64 UINT64 UINT64 UINT64 UINT64 UINT32 UINT8 UINT8 Deltas StructI've written the deltas part numbers in the baseline above. This Packet is to huge that one could make sense of it without structure. Thus the Delta parts themselves are further divided into - lets call them - slotspots. For every slot there is a 3 Byte slotspot in the Deltapart, save part 7, where the byte stale flag (??) is. So that every slotspot can be modified on its own and the monster gets more palateable the slotspots must be inserted. Think of it as a kind of FlowControl. So to set the amount of resource that got filled into the first slot : SHORT: UpdateCount SHORT: UpdateType { 00: INT: SlotNameList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index ASTRING: SlotNameTable INT: NotUsed ASTRING: SlotName 02:(change) SHORT: Index ASTRING: SlotNameTable INT: NotUsed ASTRING: SlotName 03:(resetall) SHORT: NewListSize { ASTRING: SlotNameTable INT: NotUsed ASTRING: SlotName } 04:(clear) } } 01: INT: SlotContentsList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: SlotContentType 02:(change) SHORT: Index INT: SlotContentType 03:(resetall) SHORT: NewListSize { INT: SlotContentType } 04:(clear) } } 02: INT: IngridientList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: 01:(add) SHORT: Index INT: Counter { LONG: IngredientID } 02:(change) SHORT: Index INT: Counter { LONG: IngredientID } 03:(resetall) SHORT: NewListSize { INT: Counter { LONG: IngredientID } } 04:(clear) } } 03: INT: QuantityList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: Counter { INT: IngredientQuantity } 02:(change) SHORT: Index INT: Counter { INT: IngredientQuantity } 03:(resetall) SHORT: NewListSize { INT: Counter { INT: IngredientQuantity } } 04:(clear) } } 04: INT: SlotQualityList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index FLOAT: Quality 02:(change) SHORT: Index FLOAT: Quality 03:(resetall) SHORT: NewListSize { FLOAT: Quality } 04:(clear) } } 05: INT: CleanSlotList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: Value 02:(change) SHORT: Index INT: Value 03:(resetall) SHORT: NewListSize { INT: Value } 04:(clear) } } 06: INT: SlotIndexList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: SlotIndex 02:(change) SHORT: Index INT: SlotIndex 03:(resetall) SHORT: NewListSize { INT: SlotIndex } 04:(clear) } } 07: BYTE: IngredientsCounter 08: INT: ExperimentationNameList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index ASTRING: ExperimentationTable INT: NotUsed ASTRING: ExperimentationName 02:(change) SHORT: Index ASTRING: ExperimentationTable INT: NotUsed ASTRING: ExperimentationName 03:(resetall) SHORT: NewListSize { ASTRING: ExperimentationTable INT: NotUsed ASTRING: ExperimentationName } 04:(clear) } } 09: INT: CurrentExperimentationValueList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index FLOAT: CurrentExperimentationValue 02:(change) SHORT: Index FLOAT: CurrentExperimentationValue 03:(resetall) SHORT: NewListSize { FLOAT: CurrentExperimentationValue } 04:(clear) } } 0A: INT: ExperimentationOffsetList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index FLOAT: ExperimentationValueOffset 02:(change) SHORT: Index FLOAT: ExperimentationValueOffset 03:(resetall) SHORT: NewListSize { FLOAT: ExperimentationValueOffset } 04:(clear) } } 0B: INT: BlueBarSizeList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index FLOAT: Size 02:(change) SHORT: Index FLOAT: Size 03:(resetall) SHORT: NewListSize { FLOAT: Size } 04:(clear) } } 0C: INT: MaxExperimentationList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index FLOAT: MaxExperimentationValue 02:(change) SHORT: Index FLOAT: MaxExperimentationValue 03:(resetall) SHORT: NewListSize { FLOAT: MaxExperimentationValue } 04:(clear) } } 0D: INT: CustomizationNameList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index ASTRING: CustomizationName 02:(change) SHORT: Index ASTRING: CustomizationName 03:(resetall) SHORT: NewListSize { ASTRING: CustomizationName } 04:(clear) } } 0E: INT: PalleteSelectionList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: PalleteSelection 02:(change) SHORT: Index INT: PalleteSelection 03:(resetall) SHORT: NewListSize { INT: PalleteSelection } 04:(clear) } } 0F: INT: PalleteStartIndexList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: PalleteStartIndex 02:(change) SHORT: Index INT: PalleteStartIndex 03:(resetall) SHORT: NewListSize { INT: PalleteStartIndex } 04:(clear) } } 10: INT: PalleteEndIndexList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index INT: PalleteEndIndex 02:(change) SHORT: Index INT: PalleteEndIndex 03:(resetall) SHORT: NewListSize { INT: PalleteEndIndex } 04:(clear) } } 11: BYTE: CustomizationCounter 12: FLOAT: RiskFactor 13: INT: ObjectTemplateCustomizationList INT: UpdateCounter { BYTE: SubType { 00:(remove) SHORT: Index 01:(add) SHORT: Index ASTRING: ObjectTemplateIFF 02:(change) SHORT: Index ASTRING: ObjectTemplateIFF 03:(resetall) SHORT: NewListSize { ASTRING: ObjectTemplateIFF } 04:(clear) } } 14: BYTE: ReadyFlag } |
Variable DescriptionsObj_OperandCount = Tags
|