Bullet Parameters
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. |