Jump to content

A17 Code Archeology with SandyBeaches. Random useful relics unearthed in the DLL.


SandyBeaches

Recommended Posts

This is going to be a bit of a disorganised mess but I felt I should share my results anyway.

 

Legend:

<xmltag tagproperty="tagname" />

standard xml entry

 

property = X

property has a default value of X

 

property Buff

the value of property should be a Buff. Write in xml as <property name="property" value="Buff" />

 

property Buff [param1 Buff2]

The above can optionally include a param1, which should be a buff

 

property 1,2,3

property takes exactly 3 values as a comma separated list. Like <property name="property" value="1,2,3" />

 

property 1[,2,3...]

property can take one or more values. If more than one, use a comma separated list.

 

property {referencedtype}

property takes a value with a strict inclusion list. E.g hardcoded enum or derived list from xmls.

 

property A|B

property can only be A or B

 

property A(explanation)

property has value A, which is probably a float, the usage of which is (explanation). Do not include (..) in xml

 

 

 

 

 

While trying to understand how to more effectively use xml modding, I frequently search through the Assembly-CSharp.dll with dnSpy. This helps in understanding WHAT is read from the xmls, WHERE it is used, and HOW it should be set out.

 

 

 

ENUMS

EnumAttackType: Melee,Projectile,Missile

EnumCrosshairType: None,Plus,Crosshair,CrosshairOnAiming,Damage,Upgrade,Repair,Powersource,Heal,PowerItem

 

 

CLASSES

ItemActions:

Refered to in xml as <property class="Action0">, <property class="Action1">

Refered to in tags as primary, secondary

Must contain subtag <property class="{ItemAction or subclass of ItemAction eg ItemActionAttack}">

Valid Subtags for ItemActions and all Subclasses

Delay =0

Sound_start int

Sound_harvesting param1 {soundharvestingcategory}

Particle_harvesting param1 {particleharvestingcategory}

ActionExp = 2

ActionExpBonusMultiplier = 10

Buffs buff1,buff2,buff3...

Range

SphereRadius

 

ItemActions Subclasses:

ItemActionsAttack

ToolCategory.{some category} value(harvest multiplier) param1(damage multiplier)

treated internally as an attack action bonus.

DamageEntity = 0

DamageBlock = 0

Range = 0

Sphere = 0

internally called SphereRadius

Block_range = range

Magazine_size

internally called BulletsPerMagazine

Magazine_items item1,item2...

internally called MagazineItemNames

Magazine_item_ray_counts & Magazine_item_ray_spreads float1,float2,... (number of floats must be =< Magazine_items)

Single_magazine_usage = false

internally called AmmoIsPerMagazine

Bullet_use_per_shot = 1

Rays_per_shot

Rays_spread

Reload_time

Sound_repeat = ""

Sound_end = ""

Sound_empty = ""

Sound_reload = ""

Particles_muzzle_fire

Particles_muzzle_smoke

Infinite_ammo

Damage_type = "Bashing" (must be from EnumDamageTypes)

DamageMultiplier

is its own class or stuct. look at later

Hitmask_override "Melee"|"Arrow"

 

SUBCLASSES

ItemActionRanged

bullet_material = bullet

SupportHarvesting = true

UseMeleeCrosshair = false

DYNAMICPROPERTIES: a class that keeps track of model effects

Transformations: muzzle, Laser, ScopeTransform, SideTransform, BarrelTransform

Bools: hasBarrelMod, hasScopeMod, hasSideMod, IsFlashSuppressed

 

SUBCLASSES

ItemActionTextureBlock:

RemoveTexure bool

DefaultTextureID

 

ItemActionLauncher:

No extra xml properties, just changes to internal methods

SUBCLASSES

ItemActionCatapult:

Bows and such. Ammo used can definitely use passive_effects ProjectileStickChance.

Not read directly from the itemaction xml, but passive_effects can change Max_strain_time

Sound_draw

Sound_cancel

ItemActionVomit:

If the holding item doesn't have a listed muzzle, the entities right hand is used

Sound_warning

 

ItemActionBailLiquid:

No extra xml tags

 

ItemActionThrowAway:

grenades and such

Throw_strength_default = 1.1

Throw_strenght_max = 5

Max_strain_time = 2

Roll_if_crouch = false

Sound_start

 

ItemActionConnectPower:

WireOffset

 

ItemActionDisconnectPower

No extra xml tags

 

ItemActionEat

Used for almost all 'consumable' items e.g. food, pills, drink, bandages..

FUN ALERT! set Consume = "false", Create_item = {a valid item} and Create_item_count > 0 for a hotbar item that can be used continuously (perhaps add a buff to simulate cooldown?) to create an infinite amount of items for you!

Delay

Use_time = "..." (I don't know why either)

Sound_start

Gain_food

Gain_water

Gain_wellness

Gain_health

Buff

Consume = true

Create_item

Create_item_count

Gain_sickness

Gain_stamina

Gain_gas (not used anymore I think)

 

ItemActionExchangeBlock:

this item action is coded but unused in the current xml. Experiment time!

Probably a precursor to upgrade block. Use in mods to exchange locked containers with open ones? Perhaps allow the player to 'claim' doors by replacing a prefab locked door with the same?

Sourceblock {valid block, can't be air}

Targetblock

 

ItemActionExchangeItem:

So many possibilities with this one. Currently used for waterjars.

Change_item_to

Change_block_to

Do_block_action

Focused_blockname_1 .. Focused_blockname_X

 

ItemActionGainSkill:

Skills_to_gain skill1,skill2,skill3

for multiple levels, include the same skill multiple times

Title = "the title is impossible to read"

Description = "the description is impossible to read"

 

ItemActionLearnRecipe:

Recipes_to_learn r1,r2,r3

for multiple levels, include the same recipe multiple times

Title = "the title is impossible to read"

Description = "the description is impossible to read"

 

ItemActionQuest:

QuestGiven {a valid quest id}

Title = "the title is impossible to read"

Description = "the description is impossible to read"

 

ItemActionSpawnVehicle:

FUN ALERT! Code doesn't seem to check that the entity is a vehicle, just that it exists! Spawns using Static Spawner.

Perhaps this can be used to spawn npc? Needs Testing!

Vehicle {a valid entity}

Referred to in code as entitytoSpawn

VehicleSize = 1,1.9,2

 

ItemActionZoom:

class includes code to search attachments for a Scope to override this action

Zoom_overlay

Zoom_max_out

Zoom_max_in

ScopeCameraOffset = 0,0,0

 

ItemActionDyname a.k.a The way forward from A17?

Expects most things to be set via effects

"ToolCategory.{valid tool category. Unsure if can be custom}" value= 0(harvestbonus) param1= 0(damagebonus)

DamageType|Damage_type = Bashing(EnumDamageTypes)

code literally looks for either of these names. Backwards compat?

UsePowerAttackAnimation bool

 

SUBCLASSES

ItemActionDynamicMelee:

No extra xml properties.

StaminaUsage is set by effect_groups

 

ClassUMA

Everything wearable must be of class = "UMA"

Overlay, OverlayTint and Mask can be included multiple times and must be suffixed by their order of inclusion e.g. Mask0, Mask1...

Mesh {valid UMA model}

Overlay#

Overlay#Tint

Mask#

UISlot = None{EnumEquiptmentSlots?}

None can't be worn

AhowAltHair = false

 

 

 

more to come.

Link to comment
Share on other sites

PassiveEffects valid values

When GetValue is used, 4 bools are checked: calcEquiptment, calcHoldingItem, calcProgression, calcBuffs. By default, all are true. Indicated below when false

None

EntityDamage

EntityHeal

BlockDamage

BlockRepairAmount

DamageModifier

DegradationPerUse

DegradationMax

MagazineSize

DamageFalofRange

MaxRange

BlockRange

WeaponHandling

IncrementalSpreadMultiplier

BurstRoundCount

RoundRayCount

RoundsPerMinute

AttacksPerMinute

ExplosionRadius

ModSlots

ModPowerBonus

SpreadMultiplierHip

SpreadMultiplierAiming

SpreadMultiplierRunning

SpreadMultiplierWalking

SpreadMultiplierCrouching

SpreadMultiplierIdle

SpreadDegreesVertical

SpreadDegreesHorizontal

KickDegreesVertical

KickDegreesHorizontal

SphereCastRadius

PhysicalDamageResist

PhysicalDamageResistMax

ElementalDamageResist

ElementalDamageResistMax

HypothermalResist

HyperthermalResist

Tier

LightIntensity

VehicleSpeedMax

VehicleBoostedSpeedMax

VehicleCarryCapacity

VehicleEntityDamage

VehicleBlockDamage

VehicleReflectedDamage

VehicleTankSize

VehicleHopStrength

VehiclePlayerStaminaDrainRate

BatteryMaxLoadInVolts

BatteryDischargeTimeInMinutes

DistractionResistance

DistractionRadius

DistractionLifetime

DistractionStrength

DistractionEatTicks

ProjectileVelocity: gravity is calculated, so faster = less drop

ProjectileStickChance: Fully implimented. Good idea for bow/crossbow mods!

RecipeTagUnlocked: It seems recipies can be temporarily unlocked via this. Mod in a hammer than unlocks chemstations while held? Seems fully implimented

EconomicValue

AttributeLevel

SkillLevel

PerkLevel

SkillExpGain

PlayerExpGain

NoiseMultiplier: doesn't seem to parse any tags. use triggered effects for different stances.

LightMultiplier: doesn't seem to parse any tags. use triggered effects for different stances.

CraftingTime

CraftingTier

CraftingOutputCount

ActiveCraftingSlots

CraftingSlots

CarryCapacity

BagSize: Default is 45. Only checked in progression and buffs.

RepairTime

RepairAmount

ReloadSpeedMultiplier

WaterRegenRate

HealthMax

HealthMaxModifierOT

HealthChangeOT

HealthGain

HealthLoss

HealthLossMaxMult

StaminaMax

StaminaMaxModifierOT

StaminaChangeOT

StaminaGain

StaminaLoss

StaminaLossMaxMult

FoodMax

FoodChangeOT

FoodGain

FoodLoss

FoodLossPerHealthPointLost

WaterMax

WaterChangeOT

WaterGain

WaterLoss

WaterLossPerHealthPointGained

WaterLossPerStaminaPointGained

CoreTempChangeOT

CoreTempGain

CoreTempLoss

JumpStrength

WalkSpeed

RunSpeed

CrouchSpeed

Mobility

ScavengingTime

ScavengingTier

ScavengingItemCount

HarvestCount

DismemberChance

TreasureRadius

BreathHoldDuration

Bartering

SecretStash

LootTier

HeatGain

QuestBonusItemReward

QuestRewardOptionCount

QuestRewardChoiceCount

LootGamestage

DamageBonus

CriticalChance

BuffProcChance

BuffResistance

 

Exposed Variables for use in Buffs etc

_carrycapacity

_encumberance

_encumberedslots

_DepthFromWaterSurface

_degreesabsorbed

_coretemp

_sheltered

_shaded

_wetness

lightlevel

noise_level

 

 

Explosion XML data

BlockDamage

EntityDamage

ParticleIndex

RadiusBlocks

RadiusEntities

 

 

Attributes XML data

Attributes data

EntityDamage

BlockDamage

Accuracy

FalloffRange

GainHealth

GainFood

GainWater

DegredationRate

 

more to come..

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...