Skip to content

Touhou Danmakufu ph3sx v1.32a

Compare
Choose a tag to compare
@Natashi Natashi released this 07 Feb 13:28

Changes:

  • Renamed "real" to "float".
    • r (number suffix) -> f (number suffix)
      • 45.22r -> 45.22f
    • real -> float
    • as_real -> as_float
    • as_real_array -> as_float_array
    • VAR_REAL -> VAR_FLOAT
  • Changed how setting curvy laser node widths work. Instead of directly setting the width, the functions will set the nodes' width scales.
    • Renamed ObjCrLaser_SetNodeWidth to ObjCrLaser_SetNodeWidthScale.
    • Renamed ObjCrLaser_GetNodeWidth to ObjCrLaser_GetNodeWidthScale.
  • Improved cross-compatibility between different movement types of the following functions:
    • ObjMove_SetSpeed
    • ObjMove_SetAngle
    • ObjMove_SetAcceleration
    • ObjMove_SetMaxSpeed
    • ObjMove_SetAngularVelocity
  • Swapped the "shot graphic ID" and "target ID" arguments in ObjMove_AddPatternA4.
  • Swapped the "max speed" and "angular velocity" arguments of the following functions:
    • CreateShotA2
    • ObjMove_AddPatternA2
    • ObjMove_AddPatternA3
    • ObjMove_AddPatternA4
    • TRANSFORM_ADDPATTERN_A2 in ObjPatternShot transforms
  • Completely removed shot scripts.
    • Moved SetShotDeleteEventEnable to the stage script.
      • Default values for all three delete events are true.
    • Furthermore, fixed EV_DELETE_SHOT_IMMEDIATE and EV_DELETE_SHOT_FADE not being notified properly.
    • Restructed event arguments of EV_DELETE_SHOT_TO_ITEM.
      • The third event argument; "player collision", has been removed.
        • Collision with the player will now trigger EV_DELETE_SHOT_IMMEDIATE instead of EV_DELETE_SHOT_TO_ITEM.
  • Increased the minimum width for straight and curve lasers, primarily for delay visibility purposes. (Thanks to Naudiz)
  • Allowed lasers to lose penetration (life) points. (Thanks to Naudiz)
    • Like with any shot object, this will only occur when a laser lacks spell resistance (which it has by default).
  • Removed #BGM.
  • Made it so that the window sizes list will be autogenerated instead of defaulting to [640x480, 800x600, 960x720, 1280x960] when window.size.list in th_dnh.def doesn't exist.
    • Size multipliers are [x1, x1.25, x1.5, x2], with screen.width and screen.height being the base resolution.
  • Made it so that the engine will check for the required .dll modules during initialization.
    • d3d9.dll
    • d3dx9_43.dll
    • d3dcompiler_43.dll
    • dinput8.dll
    • dsound.dll
  • In the event where the Direct3D device enters a lost state, the engine will now attempt to restore up to 60 times before throwing an error, rather than only once.
  • Removed ObjItem_SetAutoCollectEnable, and replaced it with ObjItem_SetAutoCollectEnableFlags.

Additions:

  • Added Interpolate_X_Array, Interpolate_X_Angle, and Interpolate_X_AngleR. (Thanks to Naudiz)
  • Added ObjShot_SetEnemyIntersectionInvalidFrame and ObjShot_SetPenetrateShotEnable. (Thanks to Naudiz)
  • Added SetShotTextureFilter, SetItemTextureFilter, ObjRender_SetTextureFilter, and ObjShot_SetAngleRounding. (Thanks to Naudiz)
  • Added SetEnemyAutoDeleteClip, ObjEnemy_SetAutoDelete, and ObjEnemy_SetDeleteFrame. (Thanks to NicholasLogan)
  • Added ObjMove_SetAngularAcceleration, ObjMove_SetAngularMaxVelocity, and ObjMove_AddPatternA5. (Thanks to NicholasLogan)
  • Added an overload to CreateShotA2, adding an angular velocity argument in between the acceleration and max speed ones. (Thanks to Naudiz)
  • Added ObjMove_GetMovementType. (Thanks to Naudiz)
    • Added constants:
      • MOVE_NONE
      • MOVE_ANGLE
      • MOVE_XY
      • MOVE_XY_ANGLE
      • MOVE_LINE
  • Added the C-movement type for ObjMove. (Thanks to Naudiz)
    • CreateShotC1
    • CreateShotC2
    • CreateShotOC1
    • ObjMove_AddPatternC1
    • ObjMove_AddPatternC2
    • ObjMove_AddPatternC3
  • Added AddPattern functions for line-movement. (Thanks to Naudiz)
    • ObjMove_AddPatternD1 (AddPattern version of ObjMove_SetDestAtSpeed)
    • ObjMove_AddPatternD2 (AddPattern version of ObjMove_SetDestAtFrame)
    • ObjMove_AddPatternD3 (AddPattern version of ObjMove_SetDestAtWeight)
  • Added ObjMove_CancelMovement.
  • Added new transformations to pattern shot objects. (Thanks to Naudiz)
    • TRANSFORM_ADDPATTERN_C1
    • TRANSFORM_ADDPATTERN_C2
  • Added psrand.
  • Added array overloads to the following functions:
    • ObjSprite2D_SetSourceRect
    • ObjSprite2D_SetDestRect
    • ObjSpriteList2D_SetSourceRect
    • ObjSpriteList2D_SetDestRect
    • ObjSprite3D_SetSourceRect
    • ObjSprite3D_SetDestRect
    • ObjSprite3D_SetSourceDestRect
  • Added support for hexadecimal numbers in text color tags.
    • "[f tc=0xffffff]" is equivalent to "[f tc=(255,255,255)]".
  • Added GetWorkingDirectory.
  • Added an option to allow the engine to keep running while the window is unfocused. (Thanks to Naudiz)
  • Added SetEnableUnfocusedProcessing and IsWindowFocused.
    • Added the property "unfocused.processing" to th_dnh.def.
    • Added EV_APP_LOSE_FOCUS and EV_APP_RESTORE_FOCUS.
  • Added exponent format for numbers.
    • "5.462e3" or "-231.9e-2" are now valid numbers.
  • Added ObjItem_SetAutoCollectEnableFlags.
    • ITEM_AUTOCOLLECT_PLAYER_SCOPE
    • ITEM_AUTOCOLLECT_COLLECT_ALL
    • ITEM_AUTOCOLLECT_POC_LINE
    • ITEM_AUTOCOLLECT_COLLECT_CIRCLE
    • ITEM_AUTOCOLLECT_ALL
  • Added an overload to atoi.
  • Added SetScore, SetGraze, and SetPoint.

Bug fixes:

  • Fixed .dat archives not working.
  • Fixed incorrect null checks, resulting in the game crashing when trying to operate on a null value.
    • For example, using Obj_GetValue on a non-existent key will yield a null value.
  • Fixed a crash bug which may sometimes happen when trying to parse a script file that ends with a line comment.
  • Fixed ObjMove_AddPatternXX's shot graphic change not working with loose and curvy lasers.
  • Fixed SetShotIntersectionCircle/Line not registering intersection, despite showing up in intersection visualization.