≪

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
octa:objectgimmick [2026/07/25 13:27] – gameboyadv4002octa:objectgimmick [2026/11/05 17:30] (current) – gameboyadv4002
Line 1: Line 1:
 ====== Object Gimmicks ====== ====== Object Gimmicks ======
 +=====8-Ball =====
 +Obj_VictoryBallOcta is a fairly simple object on its own. The below example is taken from A03 Wassup 8-Ball Station (OctVBallUpDown):
 +<code>
 +    - Id: obj242
 +      IsEnableCulling: true
 +      IsLinkDest: true
 +      IsRotLaunchDashRing: false
 +      LayerConfigName: Cmn
 +      Links: {}
 +      ModelName: null
 +      Rotate: {X: 0.00000, Y: 0.00000, Z: 0.00000}
 +      Scale: {X: 1.00000, Y: 1.00000, Z: 1.00000}
 +      Team: !l 2
 +      Translate: {X: -297.50000, Y: 60.00000, Z: 670.00000}
 +      UnitConfigName: Obj_VictoryBallOcta
 +</code>
 +
 +If the 8-Ball falls below its original height for a little over a second, the mission failure is triggered. Note that if the ball falls down a slope of 30 degree incidence or less, it still counts as falling.
 +
 +A quick guide to fall speeds depending on slope incidence, measured in seconds needed to cross 180 units:
 +
 +|   ^ Starting at 0 vel^  Max vel^
 +^ 75 deg   |      2.566|      1.466|
 +^ 60 deg   |      2.066|      0.833|
 +^ 45 deg   |      1.266|      0.600|
 +^ 30 deg   |      1.200|      0.600|
 +
 +====8-Ball Launcher====
 +Obj_DashRingVBall(Strong)Octa will toss any VBall that enters its radius. The following example is from E04 Heinous 8-Ball Station (OctVBallPiroPiro):
 +<code>
 +    - Id: obj16
 +      InnerRadius: 20.00000
 +      IsAttractCenter: true
 +      IsLinkDest: false
 +      LayerConfigName: Cmn
 +      Links: {}
 +      ModelName: null
 +      Rotate: {X: 0.00000, Y: 90.00000, Z: 90.00000}
 +      Scale: {X: 1.00000, Y: 1.00000, Z: 1.00000}
 +      Team: !l 2
 +      Translate: {X: -539.92970, Y: 111.10160, Z: -840.03910}
 +      UnitConfigName: Obj_DashRingVBallStrongOcta
 +</code>
 +
 +The following is the amount of seconds in the air and distance units covered for a given angle (assuming 90 is pointing straight up):
 +|   ^ Seconds in Air^  Distance covered while in Air^  Distance after rolling^
 +^ 85 deg   |      1.866|      ~015|      ~015|
 +^ 80 deg   |      1.866|      ~040|      ~070|
 +^ 75 deg   |      1.800|      ~075|      ~130|
 +^ 60 deg   |      1.666|      ~140|      ~200|
 +^ 45 deg   |      1.466|      ~180|      ~330|
 +^ 30 deg   |      1.233|      ~180|      ~370|
 +^ 15 deg   |      0.866|      ~150|      ~390|
 +
 +and for the Strong variant:
 +|   ^ Seconds in Air^  Distance covered while in Air^  Distance after rolling^
 +^ 85 deg   |      2.333|      ~030|      ~030|
 +^ 80 deg   |      2.433|      ~090|      ~090|
 +^ 75 deg   |      1.833|      ~130|      ~200|
 +^ 60 deg   |      2.266|      ~230|      ~320|
 +^ 45 deg   |      1.800|      ~310|      ~450|
 +^ 30 deg   |      1.466|      ~360|      ~540|
 +^ 15 deg   |      1.033|      ~400|      ~540|
 +
 +===== Timed Splat Switch (Reversible Paintable Target) =====
 +Despite name and appearance, Obj_SwitchPaint(Small)Timer(Octa) is fairly different object from the perspective of a level editor. The most important part is that it instead refers to RailToggleOcta, the object that allows objects attached via ActorBindable to move back and forth across a rail according the player action. A more complete explanation can be found at [[blitz:special|Invisible Objects]].
 +
 +This example is from E11 Bodacious Rotation Station (OctBigRotate)
 +<code>
 +    - Id: obj549
 +      IsLinkDest: false
 +      IsPlayTimerSE: false
 +      IsUsePredictAlertOnOff: false
 +      LayerConfigName: Cmn
 +      Links:
 +        ActorBindable:
 +          - {DefinitionName: ActorBindable, DestUnitId: obj511, UnitFileName: ''}
 +        Switchable__SendTo:
 +          - {DefinitionName: Switchable__SendTo, DestUnitId: obj550, UnitFileName: ''}
 +      ModelName: null
 +      OffCounter: !l 660
 +      Switchable__InitialState: !l 0
 +      Switchable__RespawnReset: !l 2
 +      Team: !l 2
 +      UnitConfigName: Obj_SwitchPaintSmallTimerOcta
 +</code>
 +  * OffCounter: used to measure how long the SwitchPaintTimer remains active for before reverting
 +
 +===== Toggleable Splat Switch (Reversible Paintable Target) =====
 +Obj_SwitchPaintToggleOcta is identical to Obj_SwitchPaint in terms of byaml contents. The difference is the ability to enemies to paint them over, which reverses their effects when directed through a [[invisobject|Obj_LiftReverseObjOcta]]. Using an OffCounter timer to reset the Switch has the same effects as being painted over with hostile ink.
 +
 ===== Damage Laser ===== ===== Damage Laser =====
 These are the lasers normally exclusively seen in Escape 4: Intestinal Phase. They serve quite a useful function as insta-kill object, allowing for the creation of custom level boundaries and hazards. These are the lasers normally exclusively seen in Escape 4: Intestinal Phase. They serve quite a useful function as insta-kill object, allowing for the creation of custom level boundaries and hazards.
  
-Both of the current map editors use the generic box for the damage laser asset. The laser itself is roughly 2/3 of the length of the box, with the laser going from the U side to the D side. It should be noted, the hitbox can stretched in all directions, not just the Y axis (the axis which the laser itself visibly extends across). It is recommended this is only used if you are trying to make insta-kill boundaries, such as the kill zone at the bottom of the map.+Both of the current map editors use the generic box for the damage laser asset. The laser itself is roughly 2/3 of the length of the box, with the laser going from the U side to the D side. It should be noted, the hitbox can stretched by scaling the X axis, not just the Y axis (the axis which the laser itself visibly extends across). This extends the hitbox in both the X and Z dimensions (scaling the Z axis appears to have minimal effect), seemingly in the shape of a circle. This hitbox appears to be roughly 1/3 the width of the box.  
 + 
 +It is recommended to mainly use X axis scaling for making insta-kill boundaries due to the lack of visual clarity. Another issue is that lasers do not consistently render upon respawn. Further research is needed as to the circumstances. 
 + 
 +While setting it to team 0 makes it appear the player's colour, it is still insta-kill. I would recommend keeping it a team 2 for visual clarity. 
 + 
 +===== Octowasher ===== 
 +Internally referred to as Obj_DamageConveyorOcta, these are the Flooder-like hazards seen on Ride Rails and other places. These have a diameter of 23.5 and a length of 15.6 units. They count as solid ground for an Inkjet. 
 + 
 +While setting it to team 0 makes it appear the player's colour, it damages regardless. I would recommend keeping it a team 2 for visual clarity. 
 + 
 +===== Step Switch ===== 
 +Internally referred to as Obj_StepSwitchOcta, these are the objects that activate upon being stood on. The only notable difference between them and other switch objects is that they are connected via SwitchableParams__SendTo instead of Switchable__SendTo. 
 + 
 +The following example was extracted from Escape 2: Villi Phase (OctLastBoss01). It is connected to a normal floor object. 
 + 
 +<code> 
 +      IsLinkDest: false 
 +      IsToggle: false 
 +      LayerConfigName: Cmn 
 +      Links: 
 +        SwitchableParams__SendTo: 
 +          - {DefinitionName: SwitchableParams__SendTo, DestUnitId: objXXX, UnitFileName: ''} 
 +      ModelName: null 
 +      SwitchableParams__InitialState: !l 0 
 +      SwitchableParams__RespawnReset: !l 2 
 +      Team: !l 2 
 +      UnitConfigName: Obj_StepSwitchOcta 
 +</code>