Skip to content

Touhou Danmakufu ph3sx v.1.31a

Compare
Choose a tag to compare
@Natashi Natashi released this 10 Dec 15:23

Changes:

  • This version breaks replay, common data, and .dat archive backwards compatibility.
  • Replaced the default script select backgrounds with a radder version. (Thanks to Naudiz)
  • Renamed GetShotIdAll to GetAllShotID.
  • Changed the text representation of script value types in error messages.
    • "real-array-array" -> "real[][]"
  • Script matrix functions can now take in a 4x4 array instead of only a 1x16 array previously.
    • The element type is also no longer limited to real.
  • Made setting ObjRender_SetEnableDefaultTransformMatrix to false still load the camera matrix.
  • Allowed multiple ObjSounds to independently stream the same sound file.
  • Shortened the module directory in Log messages of the LogWindow to "../".
  • Removed the behaviour where the 2D and 3D camera resets upon transitioning from the package scene to the stage scene.
  • Fog data is no longer split between package-level and stage-level scripts.
  • The default FPS counter no longer briefly appears when starting with package.script.main.
  • Maximizing the window now triggers fullscreen mode.
  • Objects now have separate tables each for string-indexed and int-indexed.
  • Improved support for particle list objects for older PCs.
  • Made it so that curvy lasers can be shortened. (Thanks to Naudiz)
  • ObjFileT_SplitLineText now splits from pattern rather than from a list of delimiters.
  • Reduced the float truncation epsilon. (0.01 -> 0.000001)
  • #include in shader source files now behaves like regular script includes.
  • Normal shot objects can now have multiple hitboxes again.
  • Change loose and curvy lasers behaviour when delay motion is enabled. (Thanks to Naudiz)

Additions:

  • Added missing function documentation for GetAllEnemyID.
  • Added an overload each for Rotate2D and Rotate3D, taking in the rotation origin point.
  • Expanded the variety of intersection-checking functions:
    • IsIntersected_Point_Polygon
    • IsIntersected_Point_Circle
    • IsIntersected_Point_Ellipse
    • IsIntersected_Point_Line
    • IsIntersected_Point_RegularPolygon
    • IsIntersected_Circle_Polygon
    • IsIntersected_Circle_Circle
    • IsIntersected_Circle_Ellipse
    • IsIntersected_Circle_RegularPolygon
    • IsIntersected_Line_Polygon
    • IsIntersected_Line_Circle
    • IsIntersected_Line_Ellipse
    • IsIntersected_Line_Line
    • IsIntersected_Line_RegularPolygon
    • IsIntersected_Polygon_Polygon
    • IsIntersected_Polygon_Ellipse
    • IsIntersected_Polygon_RegularPolygon
  • Added ReflectAngle and ReflectAngleR. (Thanks to Naudiz)
  • Added Python-style reverse indexing of arrays. (Thanks to Naudiz)
    • See "New Scripting Features".
    • arr[-n] is equivalent to arr[length(arr) - n]
    • Also works in erase and insert.
  • Added replace and remove. (Thanks to Naudiz)
  • #ifdef, #ifndef, #else, and #endif preprocessor directives for scripts.
    • Several script macros were added:
      • _DNH_PH3SX_
      • SCRIPT_PACKAGE (defined in package-level scripts)
      • SCRIPT_STAGE (defined in stage-level scripts)
    • #define is not yet supported.
  • Added ObjItem_GetIntersectionEnable. (Thanks to Naudiz)
  • Added ObjRender_GetColorHex, ObjPrim_GetVertexColorHex, and ObjCrLaser_GetNodeColorHex. (Thanks to Naudiz)
  • Added ColorHexRGBtoHSV.
  • Added another event argument to EV_DELETE_SHOT_PLAYER.
  • Added a "Sound Memory" display to the Sound tab of the LogWindow.
  • Added INFO_IS_REQUIRE_ALL_DOWN to ObjEnemyBossScene_GetInfo. (Thanks to Naudiz)
  • Added ObjEnemy_SetMaximumDamage and ObjEnemy_AddLifeEx.
  • Added INFO_DAMAGE_PREVIOUS_FRAME to ObjEnemy_GetInfo.
  • Added ObjText_SetFixedWidth.
  • Added ObjText_GetText. (Thanks to Naudiz)
  • Added ObjCrLaser_SetTipCapping, ObjCrLaser_GetNodeRenderWidth, and ObjCrLaser_SetNodeRenderWidth. (Thanks to Naudiz)
  • Added overloads to ObjCrLaser_SetNode and ObjCrLaser_AddNode. (Thanks to Naudiz)
  • Added ObjShot_SetFixedAngle and ObjShot_SetDelayAngularVelocity. (Thanks to Naudiz)
  • Added SplitString2.
  • Added Obj_GetValueCount and Obj_GetValueCountI.
  • Added a progress bar to the FileArchiver.
  • Added an overload to SetStgFrame. (Thanks to Naudiz)
  • Added GetConfigVirtualKeyMapping and GetVirtualKeyMapping. (Thanks to Naudiz)

Bug fixes:

  • Fixed incorrect documentation of IsIntersected_Circle_RegularPolygon.
  • Fixed the Y shot intersection scale not functioning properly on loose lasers.
  • Fixed the engine crashing upon trying to parse an excess comma in function parameter lists.
  • Fixed type-checking bugs with array-index-assignment operations.
  • Fixed an issue where the parser would indefinitely hang upon trying to parse an ill-formed for-loop.
  • Fixed a bug where .wav files over 1MB large would get cut off at the end.
  • Fixed a bug where multiple streaming ObjSounds playing the same file would not function correctly.
  • Fixed ObjSound_IsPlaying returning false if called in the same frame of ObjSound_Play.
  • Fixed a bug where shot objects colliding with the player gets deleted before EV_HIT is notified.
  • Fixed GetShotIdInCircleA1 incorrectly returning player shot IDs instead of enemy shot IDs.
  • Fixed ObjShot_Regist in a player script returning null if IsPermitPlayerShot is true.
  • Fixed a bug where the shot object colliding with the player is deleted before the notification of EV_HIT.
  • Fixed off-centered shot and item graphics.
  • Fixed the game crashing upon trying to parse an ill-formed argument list in user shot/item data files.
  • Fixed a bug where 3D render objects drawn below the min STG frame render priority would get abnormally stretched out.
  • Fixed ObjMove_GetSpeedX/Y returning incorrect values for ObjMove_SetDestAtXXX functions.
  • Fixed the game crashing when setting ObjRender_SetEnableDefaultTransformMatrix to false for 3D objects.
  • Fixed incorrect conversion of A-movement to B-movement for ObjMove.
  • Fixed CreateItemU1/2 causing the created item to render at (0, 0) for a single frame. (Thanks to Naudiz)
  • Fixed ObjMove_AddPatternXX not working on move objects that do not have an existing movement pattern. (Thanks to Naudiz)
  • Fixed a rare bug with array initialization.
  • Fixed a bug where ObjShot_SetPenetration(obj, 0) would not notify EV_DELETE_SHOT_PLAYER.
  • Fixed a rare crash during enemy boss scene loading.
  • Fixed a bug where the game would freeze when trying to restart the stage scene in a package script while an enemy boss scene hasn't finished loading.
  • Fixed a rare crash with script object deletion.