Dark Souls 1

Useful knowledge:

atkId_Bullet refers to a AtkParam_Npc or AtkParam_Pc, typically for dealing damage.
hitBulletID is used to generate a second bullet upon expiring (or more when chaining), allowing effects such as explosions.
sfxId_ fields are used for visual and audio effects.


Field Description
atkId_Bullet ID of AtkParam_Npc or AtkParam_Pc to use on hit targets.
sfxId_Bullet Visual/audio effect while bullet is active. Refers to ID of an SFX
sfxId_Hit Visual/audio effect when the bullet expires or hits something. Refers to ID of an SFX
sfxId_Flick Visual/audio effect when the bullet is blocked by a shield? (needs verification) Refers to ID of an SFX
life Duration (in seconds) bullet will last.
dist Arbitrary range threshold (in "meters") used for swapping between inRange and outRange fields. Has misc effects too1.
shootInterval Frequency (in seconds) to generate additional bullets while TAE bullet behavior event remains active. 0 = do not generate additional bullets
gravityInRange Converts projectile direction downwards/upwards (+/-) by this amount over time while distance is less than the dist threshold. Also increases velocity, but whether this is constant or direction dependent is unknown.
gravityOutRange Converts projectile direction downwards/upwards (+/-) by this amount over time while distance is greater than the dist threshold. Also increases velocity, but whether this is constant or direction dependent is unknown.
hormingStopRange Stops homing when bullet is within this distance (in "meters") of homing target.
initVellocity Initial movement speed.
accelInRange Movement acceleration/deceleration (+/-) while distance is less than the dist threshold.
accelOutRange Movement acceleration/deceleration (+/-) while distance greater than the dist threshold.
maxVellocity Maximum movement speed.
minVellocity Minimum movement speed.
accelTime Delay (in seconds) before acceleration/deceleration will be applied. Timer only runs once.
homingBeginDist Distance required from the bullet's origin to start homing.
hitRadius Initial hitbox radius of bullet (in "meters")
hitRadiusMax Ultimate hitbox radius of bullet (in "meters") when spreadTime timer finishes
spreadTime Time (in seconds) it will take the hitbox size to fully change from hitRadius to hitRadiusMax. If less than 0.2, only hitRadius will be used
expDelay Unknown, never used.
hormingOffsetRange Distance (in "meters") to offset homing target using the direction they are currently moving.
dmgHitRecordLifeTime Frequency (in seconds) that (penetrating) bullets can apply damage or special effects. 0 = apply once
externalForce Applies permanent movement velocity in bullet origin's initial direction.
spEffectIDForShooter spEffectParam to apply to the bullet's owner.
autoSearchNPCThinkID Used for some homing soul mass/pursuers spell behavior, such as additional projectiles as intelligence increases and launching when applicable.
HitBulletID ID of another bullet to generate once this one expires, or conditionally using launchConditionType.
spEffectId0 spEffectParam to apply to hit targets.
spEffectId1 spEffectParam to apply to hit targets.
spEffectId2 spEffectParam to apply to hit targets.
spEffectId3 spEffectParam to apply to hit targets.
spEffectId4 spEffectParam to apply to hit targets.
numShoot Amount of projectiles to generate per interval2.
homingAngle How quickly the projectile can turn to face a homing target (in degrees per second).
shootAngle Yaw (left/right) angle offset for all projectiles.
shootAngleInterval Yaw (left/right) angle offset between multiple projectiles. See numShoot.
shootAngleXInterval Pitch (up/down) angle offset between multiple projectiles. Positive values angle upwards, negative values angle downwards. See numShoot.
damageDamp Reduction in physical damage over time (needs testing. may only apply after dist threshold)
spelDamageDamp Reduction in magic damage over time (needs testing. may only apply after dist threshold?)
fireDamageDamp Reduction in fire damage over time (needs testing. may only apply after dist threshold?)
thunderDamageDamp Reduction in lightning damage over time (needs testing. may only apply after dist threshold?)
staminaDamp Reduction in stamina damage over time (needs testing. may only apply after dist threshold?)
knockbackDamp Reduction in knockback over time (needs testing. may only apply after dist threshold?)
shootAngleXZ Pitch (up/down) angle offset for all projectiles. Positive values angle upwards, negative values angle downwards.
lockShootLimitAng Maximum angle the bullet origin's initial direction can change to face towards player locked-on target or AI focused enemy
isPenetrate Determines if bullet can pierce through enemies and objects. Also potentially allows hitting the same enemy multiple times using dmgHitRecordLifetime. See isPenetrateMap to ignore map.
prevVelocityDirRate Unknown. Rarely used.
atkAttribute Physical damage type. 1 = Slash, 2 = Strike, 3 = Thrust, 4 = Normal
spAttribute Special damage type. Changes visual/audio effects on hit and death animations.
1 = Normal, 2 = Fire, 3 = Magic, 4 = Poison, 5 = unused ("egg"), 6 = Lightning, 7 = Petrification, 8 = Crystal
Material_AttackType Possibly visual/audio effects on hit? (needs info)
Material_AttackMaterial Possibly visual/audio effects on hit? (needs info)
Material_Size Unknown. Never used.
launchConditionType Condition required for generating hitBulletID. 0 = life duration ended or hit ground/enemy, 1 = ?, 2 = hit water, 254 = hit death collision (fall death only?), 255 = hit ground or enemy
FollowType Misc effects on how bullets behave. 0 = normal, 1 = follow owner (homing soul mass style), 2 = follow owner at origin or dmyPoly (bottom of character), 33 = Rapidly approach and stop at dist & ignores velocity & ignores lockShootLimitAng, 4 = slide off of world collision
EmittePosType Affects bullet generation locations (needs info and verification). 1 = random locations around origin (used by firestorm), 2 = slightly higher elevation (used by white dragon breath and other ground crawling bullets), 3 = nearest enemy origin within a certain distance (unused), 4 = random locations around nearest enemy within certain distance (used by bed of chaos)
isAttackSFX Determines if bullets that hit targets will be stuck in them. Used by arrows and throwing knives.
isEndlessHit Unknown. Used by part of Evil Eye Ring and Acid Surge?
isPenetrateMap Determines if bullets ignore map collision.
isHitBothTeam Determines if bullets can affect the owner's allies.
isUseSharedHitList Determines how multiple projectiles from a single bullet behave when hitting the same target (needs info).
isUseMultiDmyPolyIfPlace Unknown. Never used.
attachEffectType Determines if this bullet will deflect other bullets with specific fields. 0 = no deflection, 1 = isHitForceMagic deflection, 3 = isHitDarkForceMagic deflection
isHitForceMagic Determines if this bullet will be deflected by other bullets with attachEffectType = 1.
isIgnoreSfxIfHitWater Never used.
isIgnoreMoveStateIfHitWater Determines if bullet will collide with water collision false = collide, true = do not collide
isHitDarkForceMagic Determines if this bullet will be deflected by other bullets with attachEffectType = 3.