diff --git a/src/content/h3/engine/ai/readme.md b/src/content/h3/engine/ai/readme.md index 757b18d0..8d03d3eb 100644 --- a/src/content/h3/engine/ai/readme.md +++ b/src/content/h3/engine/ai/readme.md @@ -34,12 +34,13 @@ AI in Halo, outside of scripting and specific task flags, do not have the abilit Sound levels in as defined by tags like [weapons](~weapon) and [projectiles](~projectile) act as a sort of bounds that fall within the hearing distance value in the [character](~) tag, for example an AI with a hearing range of 20 WU will hear a "medium" sound at ~9 WU, but if the hearing range was increased to 40 WU, the AI would instead be able to hear a "medium" sound out to ~18 WU, this topic needs further research as results are not entirely 1 to 1 reproducable and factors such as the direction the AI is facing and their alertness may play a part. -AI sharing a squad will update squadmates about the location of hostiles, sometimes even without dialog. Things that can/will cause a target location update: +AI sharing a squad will update squadmates about the location of hostiles, sometimes even without dialogue. Things that can/will cause a target location update: - Seeing a target directly - hearing a target fire a non-silent weapon - hearing a projectile detonate (like grenades), this can sometimes be traced back to the target who threw them with the [sense_target](~style) flag, otherwise update target to the detonation point of the projectile itself - An ally shoots at a target, even if we have no line of sight on this target - Taking damage, even if we have no line of sight from who did the damage to us, unless it's a grenade; that requires [sense_target](~style), this is not limited to squads or tasks +- An ally taking damage within hearing distance, including death. - Entering search mode - Prediction of target hiding can allow some updates based on predicting where the target may go when hiding, usually for only a few moments after losing contact when in search mode, requires [sense_target](~style) @@ -62,13 +63,9 @@ AI use a level-specific navmesh to move around the environment, this is set up v # Danger and scariness -{% figure src="danger_values.jpg" %} -Pictured: From the AI globals section of the globals, we can see the various actions that contribute to the danger value an AI perceives -{% /figure %} +![Global danger values](danger_values.jpg "From the AI globals section of the globals, we can see the various actions that contribute to the danger value an AI perceives") -{% figure src="scare_value_8.jpg" %} -Pictured: In this example, the brute shown has a scariness value of 4 and his carbine adds 5, versus 7 for the masterchief biped and 10 for the sniper rifle, resulting in the brute perceiving a scariness of 8 from his target -{% /figure %} +![Scaring the brute](scare_value_8.jpg "In this example, the brute shown has a scariness value of 4 and his carbine adds 5, versus 7 for the masterchief biped and 10 for the sniper rifle, resulting in the brute perceiving a scariness of 8 from his target") Scariness is calculated by taking the scare value of the AI's biped and adding the scariness of the weapon they are holding, and then comparing it against their targets biped/character and their held weapon. diff --git a/src/content/h3/engine/pathfinding/cchint.jpg b/src/content/h3/engine/pathfinding/cchint.jpg new file mode 100644 index 00000000..97a423d4 Binary files /dev/null and b/src/content/h3/engine/pathfinding/cchint.jpg differ diff --git a/src/content/h3/engine/pathfinding/climbhint.jpg b/src/content/h3/engine/pathfinding/climbhint.jpg new file mode 100644 index 00000000..97920ee8 Binary files /dev/null and b/src/content/h3/engine/pathfinding/climbhint.jpg differ diff --git a/src/content/h3/engine/pathfinding/flighthint.jpg b/src/content/h3/engine/pathfinding/flighthint.jpg new file mode 100644 index 00000000..d996a7d1 Binary files /dev/null and b/src/content/h3/engine/pathfinding/flighthint.jpg differ diff --git a/src/content/h3/engine/pathfinding/floodhint.jpg b/src/content/h3/engine/pathfinding/floodhint.jpg new file mode 100644 index 00000000..aa44afac Binary files /dev/null and b/src/content/h3/engine/pathfinding/floodhint.jpg differ diff --git a/src/content/h3/engine/pathfinding/gianthint.jpg b/src/content/h3/engine/pathfinding/gianthint.jpg new file mode 100644 index 00000000..5b8a16b2 Binary files /dev/null and b/src/content/h3/engine/pathfinding/gianthint.jpg differ diff --git a/src/content/h3/engine/pathfinding/jumphint.jpg b/src/content/h3/engine/pathfinding/jumphint.jpg new file mode 100644 index 00000000..a37e9c7b Binary files /dev/null and b/src/content/h3/engine/pathfinding/jumphint.jpg differ diff --git a/src/content/h3/engine/pathfinding/readme.md b/src/content/h3/engine/pathfinding/readme.md index 52131bd6..534b6c99 100644 --- a/src/content/h3/engine/pathfinding/readme.md +++ b/src/content/h3/engine/pathfinding/readme.md @@ -28,7 +28,7 @@ The highest level of the AI pathfinding system for gameplay purposes, [objective | Zone properties | Description |-------|---------- | Manual bsp index | Allows the level designer to bypass the automatic bsp assignment for a zone, defaults to *on* -| Giants zone | Marks the zone for use with [Scarab units](~h3/guides/scarab#overview) +| Giants zone | Marks the zone for use with [Scarab units](~h3/guides/units/scarab#overview) | Manual bsp | Lets you set what BSP this zone should be assigned to ## Areas @@ -109,19 +109,18 @@ Most hints will have two general flags: - bidirectional : AI can use this hint going fowards and backwards across it, some exceptions apply - closed : Unknown/needs additional research -{% figure src="wellhint.jpg" %} -Pictured: How correctly set up well and flood hints are seen from the view of the well hint selection, note how the well hints draw paths that enter and exit the flood hint -{% /figure %} -| Hint type | Description -|-------|---------- -| well | Using right click you draw a path for certain AI to take to jump on or off flood hint sectors, closing the path with left click -| jump | Using right and left click you draw a set of vectors (starting from the top two points) that detmermines a direction for AI to take jumps in, can also be used for for vaulting, a section below will detail additional flags -| climb | Using right and left click draw a verticle path from which AI will attempt to climb up using their hoist animations -| flight | Using right click draw a path of points in which flying AI can use to fly around an area without the use of firing positions, close with left click -| cookie cutter | Using right click you create a box that you can alter the dimensions of, inhibits *all* pathfinding through the area of the cookie cutter box -| flood | Using right click you draw an enclosed area that certain AI will climb on or off, seal this area with left click, typically used for drones or flood pureforms to climb on, walk around and attack from walls, needs well hints -| giant | Consists of two sub-types: sector hints and rail hints, sector hints are used to define the area in which scarabs will pathfind (Used *with* scarab zones) and rail hints are used for the scarab to transition between different sectors, use right click to create vertices in the sector or the starting position of the rail and left click to seal the sector or end the rail, **see [the scarab usage guide ](~h3/guides/scarab) for more info about setting up scarab units for gameplay.** +## Well hint + +![Correct well hints](wellhint.jpg "How correctly set up well and flood hints are seen from the view of the well hint selection, note how the well hints draw paths that enter and exit the flood hint") + +Using right click you draw a path for certain AI to take to jump on or off walls or ceilings that contain [flood hint sectors](~pathfinding#flood-hint), closing the path with left click. + +## Jump hint + +![Corrct jump hints](jumphint.jpg "Note how the middle two hints are bi-directional and have a two-way yellow arrow, while the outside hints are single direction only") + +Using right and left click you draw a set of vectors (starting from the top two points) that detmermines a direction for AI to take jumps in, can also be used for for vaulting, a section below will detail additional flags. | Jump hint flags | Description |-------|---------- @@ -130,10 +129,42 @@ Pictured: How correctly set up well and flood hints are seen from the view of th | railing | Treat this hint as a vault in which AI will try to vault over the obstacle using their vault animations | vault | Unknown/needs additional research +![vault hint example](vjumphint.jpg "An example of a vault hint, the obstacle is flanked at both ends by the hint which makes the red fenceline encase the obstacles width") + +## Climb hint + +![Correct climb hints](climbhint.jpg "Note how climb hints are constructed with only two points, with the white line showing a perfect vertical climb with no deviation") + +Using right and left click draw a vertical path from which AI will attempt to climb up. Depending on the height of the hint AI will either use hoist step, hoist crouch or hoist stand animations. Place starting point near the base of the climb with the end point slightly inland from the exit of the climb for best results. + +## Flight hint + +![A correct flight hint](flighthint.jpg "Note how the hint is constructed with multiple points that can be moved around") + +Using right click draw a path of points in which flying AI can use to fly around an area without the use of firing positions, close with left click. + +## Cookie Cutter hint + +![A cookie cutter hint](cchint.jpg "Best practice is to make sure the cookie cutter overshoots geometry you want to block off, such as sinking through the floor by a tiny bit") + +Using right click you create a box that you can alter the dimensions of, inhibits *all* pathfinding through the area of the cookie cutter box. + +## Flood hint + +![Correct flood hints](floodhint.jpg "How correctly set up well and flood hints are seen from the view of the flood hint selection, note how the flood hint creates an enclosed space that well hints then draw a path into") + +Using right click you draw an enclosed area that certain AI will climb on or off, seal this area with left click, typically used for drones or flood pureforms to climb on, walk around and attack from walls, needs [well](~pathfinding#well-hint) hints. For AI to move around on ceilings and walls they will need "climb" mode animations, while wall clinging and perching needs the "perch_wall_left(or right)" mode animations. + +## Giant hint + +![Correct giant hints](gianthint.jpg "How correctly set up sector and rail hints are seen from the view of the sector selection, note how the rail (yellow) hints draw a path between the sector hints") + +Consists of two sub-types: sector hints and rail hints, sector hints are used to define the area in which scarabs will pathfind (Used *with* scarab zones) and rail hints are used for the scarab to transition between different sectors, use right click to create vertices in the sector or the starting position of the rail and left click to seal the sector or end the rail, **see [the scarab usage guide ](~h3/guides/units/scarab) for more info about setting up scarab units for gameplay.** + ## Object hints Objects such as [crates](~crate) have the ability to use dynamic hints such as vaulting, mounting and hoisting, these are defined by markers on the [render_model](~) # Debugging -When spawning in AI, you may notice certain issues with them, among these are colored triangles above their heads: green means no objective set or no firing positions available within the current task of that AI, yellow can appear if there's a rather limited number of firing positions for the number of AI in the task, or if the AI cannot pathfind to the assigned firing positions. There is also a red triangle but it is very rare and will need additional research and replicable methods of attainment to know it's effects. \ No newline at end of file +When spawning in AI, you may notice certain issues with them, among these are colored triangles above their heads: green means no firing positions available to that AI. Yellow can appear if there's a rather limited number of firing positions for the number of AI in the task, or if the AI cannot pathfind to the assigned firing positions. Finally a red triangle can appear if the AI lacks the idle and alert [style](~) behaviors when in those states [(assumed combat status 1 and 2)](~ai#combat-status-and-alertness), but there may be more conditions it can appear under that are not yet known. \ No newline at end of file diff --git a/src/content/h3/engine/pathfinding/vjumphint.jpg b/src/content/h3/engine/pathfinding/vjumphint.jpg new file mode 100644 index 00000000..ff8e3503 Binary files /dev/null and b/src/content/h3/engine/pathfinding/vjumphint.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/2trigger1.jpg b/src/content/h3/guides/tags/alt-fire/2trigger1.jpg new file mode 100644 index 00000000..1d59a539 Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/2trigger1.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/2trigger2.jpg b/src/content/h3/guides/tags/alt-fire/2trigger2.jpg new file mode 100644 index 00000000..69edde32 Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/2trigger2.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/charge.jpg b/src/content/h3/guides/tags/alt-fire/charge.jpg new file mode 100644 index 00000000..1e9a3136 Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/charge.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/latchauto.jpg b/src/content/h3/guides/tags/alt-fire/latchauto.jpg new file mode 100644 index 00000000..e6fe04be Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/latchauto.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/latchzoom.jpg b/src/content/h3/guides/tags/alt-fire/latchzoom.jpg new file mode 100644 index 00000000..d4207320 Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/latchzoom.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/pp_glow.jpg b/src/content/h3/guides/tags/alt-fire/pp_glow.jpg new file mode 100644 index 00000000..a07ccc7c Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/pp_glow.jpg differ diff --git a/src/content/h3/guides/tags/alt-fire/readme.md b/src/content/h3/guides/tags/alt-fire/readme.md new file mode 100644 index 00000000..32d533e9 --- /dev/null +++ b/src/content/h3/guides/tags/alt-fire/readme.md @@ -0,0 +1,58 @@ +--- +title: Weapon alternate fire +img: pp_glow.jpg +caption: An overcharge alternate fire +keywords: + - alt-fire + - overcharge + - alternate fire +about: +thanks: + odchylanie_uderzenia: Writing and research +--- +[Weapons](~weapon) in Halo have a variety of different mechanics and firemodes, some of these include the ability to use an alternate form of attack such as an overcharge or a scoped-in fire mode, this page will serve as a guide for setting these features up within your weapon tag. + +Alternate fire modes in Halo are mostly hard-coded behavior types associated with specific [trigger types](~weapon#new-triggers), as such these will be our alternate fire methods. + +Make sure to reference the **weapon tag** page itself for more in-depth details of the fields and how they work. + +## Latch autofire + +Easily the most common type used in the franchise, the plasma pistol is notable for using this trigger type, behaving as latch when tapping the trigger or fire keys quickly, but if the key or trigger is held for longer than the *autofire time* the secondary barrel begins charging, to be released upon command when fully charged, or should the barrel overcharge. + +After setting your trigger type to latch autofire, you may then specify your barrels, the primary barrel will be when the weapon is not charging, and the secondary will be for fully charged, assign your barrels to these as you desire + +![The setup for latch autofire](latchauto.jpg "Note the autofire and charging times") + +## Charge + +The quirky sibling of latch-autofire, charge behaves in almost the same way except with the focus being on charging the secondary barrel and only firing the primary barrel if the secondary fails to be fully charged when the key is released. + +Can be set up the same way as latch autofire, but ignores the autofire time field. + +![The setup for charge](charge.jpg "Note the charging time") + +## Spew Charge + +As common as the spartan laser itself, this unique trigger type is only used for that specific weapon, but generally it's an automatic fire weapon that fires it's first barrel while charging it's second, once the second barrel finishes charging it then takes over firing as a semi-auto or burst attack. + +After setting your trigger type to spew charge, you may then specify your barrels, the primary barrel will be when the weapon is charging, and the secondary will be for fully charged, assign your barrels to these as you desire + +![The setup for spew charge](spewcharge.jpg "Note the charging time") + +## Latch zoom + +Perhaps the easiest to understand and set up, this type of alternate fire is used for semi-auto/burst weapons that gain an alternate fire mode when zooming in, due to the limitations of this trigger type, no automatic fire modes are possible. + +After setting your trigger type to latch zoom, you may then specify your barrels, the primary barrel will be when the weapon is unzoomed, and the secondary will be for zoomed, assign your barrels to these as you desire + +![The setup for latch zoom](latchzoom.jpg "") + +## Secondary trigger + +Being the most archaic method of implementing an alternate fire, this method doesn't use any special trigger types at all, but instead uses a whole seperate trigger with it's own button input, this allows the issues of prior types to be ignored, but comes at a cost. + +Simply add another trigger block and assign it to a differing input such as melee or left trigger, be aware that these buttons have preestablished functions such as melee, zooming or vehicle boosting, for handheld weapons it would advised to disabled binoculars and grenade throwing so there are no keybind conflictions across keyboard or controller. + +![The first trigger](2trigger1.jpg "Note the lack of a secondary barrel, because this trigger is spew") +![The second trigger](2trigger2.jpg "Note the lack of a primary barrel, because this trigger is charge") diff --git a/src/content/h3/guides/tags/alt-fire/spewcharge.jpg b/src/content/h3/guides/tags/alt-fire/spewcharge.jpg new file mode 100644 index 00000000..8f6fd0f2 Binary files /dev/null and b/src/content/h3/guides/tags/alt-fire/spewcharge.jpg differ diff --git a/src/content/h3/guides/tags/readme.md b/src/content/h3/guides/tags/readme.md new file mode 100644 index 00000000..059f2279 --- /dev/null +++ b/src/content/h3/guides/tags/readme.md @@ -0,0 +1,6 @@ +--- +title: H3 tag guides +stub: true +--- + +{% childList /%} \ No newline at end of file diff --git a/src/content/h3/guides/units/readme.md b/src/content/h3/guides/units/readme.md new file mode 100644 index 00000000..4e1acdef --- /dev/null +++ b/src/content/h3/guides/units/readme.md @@ -0,0 +1,6 @@ +--- +title: H3 unit guides +stub: true +--- + +{% childList /%} \ No newline at end of file diff --git a/src/content/h3/guides/scarab/add_giant.png b/src/content/h3/guides/units/scarab/add_giant.png similarity index 100% rename from src/content/h3/guides/scarab/add_giant.png rename to src/content/h3/guides/units/scarab/add_giant.png diff --git a/src/content/h3/guides/scarab/add_giant2.png b/src/content/h3/guides/units/scarab/add_giant2.png similarity index 100% rename from src/content/h3/guides/scarab/add_giant2.png rename to src/content/h3/guides/units/scarab/add_giant2.png diff --git a/src/content/h3/guides/scarab/add_giant3.png b/src/content/h3/guides/units/scarab/add_giant3.png similarity index 100% rename from src/content/h3/guides/scarab/add_giant3.png rename to src/content/h3/guides/units/scarab/add_giant3.png diff --git a/src/content/h3/guides/scarab/add_scarab_character.png b/src/content/h3/guides/units/scarab/add_scarab_character.png similarity index 100% rename from src/content/h3/guides/scarab/add_scarab_character.png rename to src/content/h3/guides/units/scarab/add_scarab_character.png diff --git a/src/content/h3/guides/scarab/add_scarab_character2.png b/src/content/h3/guides/units/scarab/add_scarab_character2.png similarity index 100% rename from src/content/h3/guides/scarab/add_scarab_character2.png rename to src/content/h3/guides/units/scarab/add_scarab_character2.png diff --git a/src/content/h3/guides/scarab/area2.jpg b/src/content/h3/guides/units/scarab/area2.jpg similarity index 100% rename from src/content/h3/guides/scarab/area2.jpg rename to src/content/h3/guides/units/scarab/area2.jpg diff --git a/src/content/h3/guides/scarab/area_drag.jpg b/src/content/h3/guides/units/scarab/area_drag.jpg similarity index 100% rename from src/content/h3/guides/scarab/area_drag.jpg rename to src/content/h3/guides/units/scarab/area_drag.jpg diff --git a/src/content/h3/guides/scarab/edit_types.png b/src/content/h3/guides/units/scarab/edit_types.png similarity index 100% rename from src/content/h3/guides/scarab/edit_types.png rename to src/content/h3/guides/units/scarab/edit_types.png diff --git a/src/content/h3/guides/scarab/firing_pts.png b/src/content/h3/guides/units/scarab/firing_pts.png similarity index 100% rename from src/content/h3/guides/scarab/firing_pts.png rename to src/content/h3/guides/units/scarab/firing_pts.png diff --git a/src/content/h3/guides/scarab/generate_pathfinding.png b/src/content/h3/guides/units/scarab/generate_pathfinding.png similarity index 100% rename from src/content/h3/guides/scarab/generate_pathfinding.png rename to src/content/h3/guides/units/scarab/generate_pathfinding.png diff --git a/src/content/h3/guides/scarab/giant_sector_hints.png b/src/content/h3/guides/units/scarab/giant_sector_hints.png similarity index 100% rename from src/content/h3/guides/scarab/giant_sector_hints.png rename to src/content/h3/guides/units/scarab/giant_sector_hints.png diff --git a/src/content/h3/guides/scarab/giants_zone.png b/src/content/h3/guides/units/scarab/giants_zone.png similarity index 100% rename from src/content/h3/guides/scarab/giants_zone.png rename to src/content/h3/guides/units/scarab/giants_zone.png diff --git a/src/content/h3/guides/scarab/gnr.jpg b/src/content/h3/guides/units/scarab/gnr.jpg similarity index 100% rename from src/content/h3/guides/scarab/gnr.jpg rename to src/content/h3/guides/units/scarab/gnr.jpg diff --git a/src/content/h3/guides/scarab/gunner_settings.png b/src/content/h3/guides/units/scarab/gunner_settings.png similarity index 100% rename from src/content/h3/guides/scarab/gunner_settings.png rename to src/content/h3/guides/units/scarab/gunner_settings.png diff --git a/src/content/h3/guides/scarab/gunner_starting_pts.png b/src/content/h3/guides/units/scarab/gunner_starting_pts.png similarity index 100% rename from src/content/h3/guides/scarab/gunner_starting_pts.png rename to src/content/h3/guides/units/scarab/gunner_starting_pts.png diff --git a/src/content/h3/guides/scarab/place_squad.png b/src/content/h3/guides/units/scarab/place_squad.png similarity index 100% rename from src/content/h3/guides/scarab/place_squad.png rename to src/content/h3/guides/units/scarab/place_squad.png diff --git a/src/content/h3/guides/scarab/place_startingpoint.jpg b/src/content/h3/guides/units/scarab/place_startingpoint.jpg similarity index 100% rename from src/content/h3/guides/scarab/place_startingpoint.jpg rename to src/content/h3/guides/units/scarab/place_startingpoint.jpg diff --git a/src/content/h3/guides/scarab/railhints.png b/src/content/h3/guides/units/scarab/railhints.png similarity index 100% rename from src/content/h3/guides/scarab/railhints.png rename to src/content/h3/guides/units/scarab/railhints.png diff --git a/src/content/h3/guides/scarab/railhints2.jpg b/src/content/h3/guides/units/scarab/railhints2.jpg similarity index 100% rename from src/content/h3/guides/scarab/railhints2.jpg rename to src/content/h3/guides/units/scarab/railhints2.jpg diff --git a/src/content/h3/guides/scarab/readme.md b/src/content/h3/guides/units/scarab/readme.md similarity index 99% rename from src/content/h3/guides/scarab/readme.md rename to src/content/h3/guides/units/scarab/readme.md index 8ff4760f..c243fcd1 100644 --- a/src/content/h3/guides/scarab/readme.md +++ b/src/content/h3/guides/units/scarab/readme.md @@ -9,6 +9,8 @@ keywords: thanks: Rataz: Writing this guide RejectedShotGun: Streaming while adding a scarab to a map +redirects: + - /h3/guides/scarab --- This guide provides general info on how to set up the scarab in a custom scenario. The Scarab is a fun opponent to add to custom scenarios, but requires more steps to set up than other AI characters. diff --git a/src/content/h3/guides/scarab/scarab_area.png b/src/content/h3/guides/units/scarab/scarab_area.png similarity index 100% rename from src/content/h3/guides/scarab/scarab_area.png rename to src/content/h3/guides/units/scarab/scarab_area.png diff --git a/src/content/h3/guides/scarab/scarab_character_path.png b/src/content/h3/guides/units/scarab/scarab_character_path.png similarity index 100% rename from src/content/h3/guides/scarab/scarab_character_path.png rename to src/content/h3/guides/units/scarab/scarab_character_path.png diff --git a/src/content/h3/guides/scarab/scarab_path.png b/src/content/h3/guides/units/scarab/scarab_path.png similarity index 100% rename from src/content/h3/guides/scarab/scarab_path.png rename to src/content/h3/guides/units/scarab/scarab_path.png diff --git a/src/content/h3/guides/scarab/scarab_squad_zone.png b/src/content/h3/guides/units/scarab/scarab_squad_zone.png similarity index 100% rename from src/content/h3/guides/scarab/scarab_squad_zone.png rename to src/content/h3/guides/units/scarab/scarab_squad_zone.png diff --git a/src/content/h3/guides/scarab/sel_fireteam.png b/src/content/h3/guides/units/scarab/sel_fireteam.png similarity index 100% rename from src/content/h3/guides/scarab/sel_fireteam.png rename to src/content/h3/guides/units/scarab/sel_fireteam.png diff --git a/src/content/h3/guides/scarab/sel_startingpoints.png b/src/content/h3/guides/units/scarab/sel_startingpoints.png similarity index 100% rename from src/content/h3/guides/scarab/sel_startingpoints.png rename to src/content/h3/guides/units/scarab/sel_startingpoints.png diff --git a/src/content/h3/guides/scarab/set_area.png b/src/content/h3/guides/units/scarab/set_area.png similarity index 100% rename from src/content/h3/guides/scarab/set_area.png rename to src/content/h3/guides/units/scarab/set_area.png diff --git a/src/content/h3/guides/scarab/set_fireteam_character.png b/src/content/h3/guides/units/scarab/set_fireteam_character.png similarity index 100% rename from src/content/h3/guides/scarab/set_fireteam_character.png rename to src/content/h3/guides/units/scarab/set_fireteam_character.png diff --git a/src/content/h3/guides/scarab/set_scarab_zone.png b/src/content/h3/guides/units/scarab/set_scarab_zone.png similarity index 100% rename from src/content/h3/guides/scarab/set_scarab_zone.png rename to src/content/h3/guides/units/scarab/set_scarab_zone.png diff --git a/src/content/h3/guides/scarab/squad_new_instance.png b/src/content/h3/guides/units/scarab/squad_new_instance.png similarity index 100% rename from src/content/h3/guides/scarab/squad_new_instance.png rename to src/content/h3/guides/units/scarab/squad_new_instance.png diff --git a/src/content/h3/guides/scarab/squads_folder.png b/src/content/h3/guides/units/scarab/squads_folder.png similarity index 100% rename from src/content/h3/guides/scarab/squads_folder.png rename to src/content/h3/guides/units/scarab/squads_folder.png diff --git a/src/content/h3/tags/damage_effect/readme.md b/src/content/h3/tags/damage_effect/readme.md index c776affd..b816be46 100644 --- a/src/content/h3/tags/damage_effect/readme.md +++ b/src/content/h3/tags/damage_effect/readme.md @@ -61,7 +61,7 @@ Flags used for special properties to be applied to this damage effect when hitti | Flag | Description |-------|---------- | does not hurt owner | needs additional research -| can cause headshots | When this melee or projectile attack hits a [model](~) damage section with the 'headshottable' flag enabled and the region is unshielded, the unit will instantly be killed, regardless of remaining health or shields +| can cause headshots | When this melee or projectile attack hits a [model](~) damage section with the 'headshottable' flag enabled and the region is unshielded, the unit will instantly be killed, regardless of remaining health or shields. Will also enable tracking projectiles to specifically track the headshot region of a target | pings resistant units | Unknown/needs additional research | does not hurt friends | Unknown/needs additional research | does not ping units | needs additional research diff --git a/src/content/h3/tags/object/item/weapon/readme.md b/src/content/h3/tags/object/item/weapon/readme.md index 319e2d2c..28313437 100644 --- a/src/content/h3/tags/object/item/weapon/readme.md +++ b/src/content/h3/tags/object/item/weapon/readme.md @@ -110,10 +110,6 @@ Melee attacks for the player are not natural to the player unit themself, but ra | damage pyramid angles | euler | Two values that define the angles the melee attack is thrown out/Needs additional research | damage pyramid depth | real | When initiating a melee attack, the damage itself is thrown this far out, can be farther than the melee lunge range -{% figure src="meleedamagetypes.png" %} -Pictured: A list of all availale weapon melee damage types -{% /figure %} - {% alert %} It is currently understood that only the energy sword can initiate a clang, and only on another energy sword when lunging at each other {% /alert %} @@ -135,6 +131,8 @@ It is currently understood that only the energy sword can initiate a clang, and |clang effect | [sound](~) / [effect](~) | Effect played on players who engage in a melee clash against each other |melee damage reporting type | enum | Dropdown selector for various weapon and vehicle types, unknown/unused effects +![Melee damage reporting types](meleedamagetypes.png "A list of all availale weapon melee damage types") + # Zoom This section defines weapon zoom properties, zooming increases the range of [aim assist properties](~weapon#weapon-aim-assist) according to the zoom level. @@ -247,7 +245,7 @@ Despite using the "no tracking" option, the needler still possesses tracking abi This section defines what UI tags to use to display things like the reticle and ammo and other elements. {% alert %} -First entry of this block is for spartan bipeds, second entry is for elite bipeds and this is regardless of campaign or multiplayer +First entry of this block is for biped type 0 and 2 (spartans), and the second entry is for biped type 1,3 and 4 (elites) and this is regardless of game mode selection {% /alert %} *first person (and chud)* @@ -321,16 +319,14 @@ First entry into this block becomes the primary trigger, second entry becomes th |-------|---------- | spew |When trigger is pressed the weapon will continuously fire the barrel, under normal circumstances will fire in bursts of 2 | latch | When pressed the barrel is fired and then halts until the trigger is let go and repressed -| latch-autofire | Functions like latch until the trigger is held down for the period of time specified in **autofire time**, then begins charging and will fire once the trigger is released, forces plasma tracking to only enable on targets who are currently shielded, is also linked to the plasma track widget flag in the weapon [interface](~chud_definition) tag -| charge | Appears to function similar to latch-autofire, but better suited to weapons with a single barrel for charging behavior only +| latch-autofire | Functions like latch until the trigger is held down for the period of time specified in **autofire time**, then begins charging the second barrel and will fire once the trigger is released, forces plasma tracking to only enable on targets who are currently shielded, is also linked to the plasma track widget flag in the weapon [interface](~chud_definition) tag +| charge | Functions similar to latch-autofire, but does not wait for the **autofire time** and will begin charging the secondary barrel the moment the trigger is pressed, should the secondary barrel not fully charge, fire the primary instead. | latch-zoom | Same as latch but allows a second barrel to be used when the weapon is zoomed | latch-rocketlauncher | Same as latch but is needed to also allow target locking onto human tracked targets by holding the trigger on the target and then releasing the trigger to fire once locked on -| spew-charge | Functions like spew for a period of time specified in charging time before charging the second barrel +| spew-charge | Functions like spew for the period of time specified in charging time before charging the secondary barrel | sword-charge | Unknown, seems to function like latch-autofire but triggers a melee while releasing the charge -{% figure src="maintrigger.png" %} -Pictured: An example of the main part of the trigger block -{% /figure %} +![The trigger block](maintrigger.png "An example of the main part of the trigger block") | Barrel assignment | Description |-------|---------- @@ -412,7 +408,7 @@ Triggers are tied to barrels, barrels themselves are the most important part of | fires locked projectiles | Forces AI actors using this barrel to only track when targeting a human-tracking type unit, else they self-guide projectiles, unknown otherwise | can fire at maximum age | This barrel will continue to be able to fire despite the weapon age being at 0 | use 1 firing effect per burst | Weapon will only play it's firing effect a single time, all shots after either in a burst or spew will not have a firing effect -| ignore tracked object | Unknown/Needs additional research +| ignore tracked object | Disables the tracking of this projectile, useful for reusing a tracking projectile on a non-tracking enabled barrel, plasma tracking projectiles with *tracks fired projectile* seem to override this flag and still track targets ## Firing @@ -436,13 +432,11 @@ Defines **how** the current barrel fires. ## Weapon firerate bonus info -{% figure src="rps-frt.png" %} -Pictured: An example of rate of fire and fire recovery time -{% /figure %} +![Weapon firerate information](rps-frt.jpg "Example of the rounds per second and fire recovery time fields") -When using the __rounds per second__ field in the weapons barrel block, you are given a set of 2 bound values to enter, due to limitations implemented by 343 to retain 30 tick engine behavior you may only enter values compatible with 30 tick engines. __0.46875 is the lowest possible value allowed__ due to the idle_ticks timer only allowing a max of 127 ticks, thus this value has the weapon fire on the 128th tick. __To find all other compatible values, do 30 divided by a *whole* number between 1 and 64.__ Invalid values will round *down* to the nearest valid (Example: 16 will behave as 15). +When using the __rounds per second__ field in the weapons barrel block you are given a set of 2 bound values to enter. Due to limitations implemented by 343 to retain 30 tick engine behavior you may only enter values compatible with 30 tick timings. __0.46875 is the lowest possible value allowed__ due to the idle_ticks timer only allowing a max of 127 ticks, thus this value has the weapon fire on the 128th tick. __To find all other compatible values, do 30 divided by a *whole* number between 1 and 64__, Invalid values will round *down* to the nearest valid (Example: 16 will behave as 15). -When using the __fire recovery time__ field in the weapons barrel block, you are given a single value (in seconds) to enter, this value is able to accept 60 tick engine values, there is a built-in 2 tick base delay *plus* a second minimum delay of 2 ticks so the __fastest possible rate of fire achievable with fire recovery time is 12 rounds per second__ with a value of 0. +When using the __fire recovery time__ field in the weapons barrel block, you are given a single value (in seconds) to enter. This value is able to accept 60 tick engine values but has a built-in 2 tick base delay *plus* a second minimum delay of 2 ticks so the __fastest possible rate of fire achievable with fire recovery time is 12 rounds per second__ with a value of 0. ## Prediction and noise @@ -461,10 +455,10 @@ Prediction properties effect networking for non-host players, if set up incorrec | Firing noise | Description |-------|---------- | silent | Needs additional research, this sound is never heard by AI -| medium | Needs additional research, this sound is heard within 45% of the AI's hearing distance +| medium | Needs additional research, this sound is heard within ~45% of the AI's hearing distance | loud | Needs additional research, this sound is heard within all of the AI's hearing distance -| shout | Needs additional research, this sound is heard within 80% of the AI's hearing distance -| quiet | Needs additional research, this sound is heard within 20% of the AI's hearing distance +| shout | Needs additional research, this sound is heard within ~80% of the AI's hearing distance +| quiet | Needs additional research, this sound is heard within ~20% of the AI's hearing distance ## Error (spread/bloom) @@ -503,7 +497,7 @@ Generally most players prefer their weapons to not be laser accurate, this secti This has a dropdown for 3 different block entries: single wield, dual right and dual left {% /alert %} -| First person offset | 3 different value entries for coordinates away from the player camera in which projectiles will deviate from as their origin point +| First person offset | 3 different value entries for coordinates away from the player camera in which projectiles will deviate from their origin point, use small values such as 0.05 |-------|---------- | **X** | with positive being forward from the camera | **Y** | with positive being up on the vertical axis @@ -579,7 +573,7 @@ Random properties for the weapon that bungie stuffed at the bottom of the tag. | aged material effects | [material_effects](~) | This replaces the normal materiel effect of the weapon when it has become depleted | external aging amount | real | Amount of age as a percentage applied to weapon, used for melee weapons that lack a barrel and trigger | campaign external aging amount | real | Same as above but for campaign only, above applies to multiplayer -| first person weapon offset | vector | A series of 3 values that determine the first person weapon offset on screen: +| first person weapon offset | vector | A series of 3 values that determine the first person weapon offset on screen, use small values (IE 0.05): | ^ i | real | depth from camera, positive is farther from the camera | ^^ I | real | horizontal axis from camera, positive moves to the left | ^^^ k | real | verticle axis from camera, positive moves upwards diff --git a/src/content/h3/tags/object/item/weapon/rps-frt.jpg b/src/content/h3/tags/object/item/weapon/rps-frt.jpg new file mode 100644 index 00000000..d9b52c0b Binary files /dev/null and b/src/content/h3/tags/object/item/weapon/rps-frt.jpg differ diff --git a/src/content/h3/tags/object/projectile/readme.md b/src/content/h3/tags/object/projectile/readme.md index 334fe977..325ea8fb 100644 --- a/src/content/h3/tags/object/projectile/readme.md +++ b/src/content/h3/tags/object/projectile/readme.md @@ -203,7 +203,7 @@ Parallel and perpendicular friction act as a bounds where the closer to impact a | Fields | Data type | Description |-------|----------|-------------- -| scale effects by | enum | Angle **or** damage, unknown +| scale effects by | enum | Angle **or** damage, unknown effects | angular noise | angle | Unknown, presumably the maximum number of degrees the projectile can be randomly offset by when bouncing off a surface (in addition to the natural offset from the bounce itself) | velocity noise | real | Unknown, presumably the the velocity of the projectile changed randomly when bouncing off a surface (in addition to velocity lost from parallel and perpendicular friction values) | initial friction | real | Unknown, needs additional research @@ -233,23 +233,21 @@ projection offset (real): Unknown, needs additional research # Conical Spread -{% figure src="distribution0.jpg" %} -Pictured: 15 projectiles with a spread angle of 5 degrees and a distribution exponent of 0 -{% /figure %} +![Perfect distribution](distribution0.jpg "15 projectiles with a spread angle of 5 degrees and a distribution exponent of 0") -{% figure src="distribution1.2.jpg" %} -Pictured: Now with the distribution exponent set to 1.2 with no other changes -{% /figure %} +![Skewed distribution](distribution1.2.jpg "Now with the distribution exponent set to 1.2 with no other changes") -{% alert %} -Conical spread only works when the "travels instantaneously" flag is enabled and a value other than 0 is set for "maximum range" -{% /alert %} +This section can be used for weapons that fire a high volume of projectiles in a single shot, like shotguns: it defines the size and spread of the entire blast and allows more control compared to the error fields in the [weapon](~weapon#error-spread-bloom) tag. + +Conical spread requires the "travels instantaneously" flag to be enabled and for the projectile velocity to be of suffiencitly high enough velocity to reach any target (map geo included) in a single tick *within* a desired range, this range is determined by the projectile velocity and still follows the ["maximum range" field](~projectile#detonation). + +The bonus projectiles of conical spread will *only* be created if they can reach a target instantly, otherwise they will not spawn at all, regardless of this, the initial projectile will still be spawned. It will adhere to conical spreads spread fields. -This section can be used for weapons that fire a high volume of projectiles in a single shot, like shotguns: it defines the spread of the entire blast and the distribution of shots within the blast to allow more variability (how tight the grouping can be) compared to the error fields in the [weapon](~weapon#error-spread-bloom) tag +The math for determining the range for the bonus projectiles will be to take your projectile velocity and divide it by the games tick rate (60) and then to double the value by 2 because of the "travels instantaneously" flag mentioned earlier, this final value is the distance the bonus projectiles can reach within a single tick. | Fields | Data type | Description |-------|----------|-------------- | yaw count | short | This value and the "pitch count" value are multiplied together to get the total number of projectiles created for conical spread, unknown if any other effects | pitch count | short | See above -| distribution exponent | real | Defines the distribution of projectiles within the "spread" angle, a value of 0 means all projectiles are set along the max of the spread value, higher velues make this distribution closer to center -| spread | angle | Defines the max spread in degrees from center +| distribution exponent | real | Defines the distribution of projectiles within the "spread" angle, a value of 0 means all projectiles are set along the max of the spread value, higher values make this distribution closer to center +| spread | angle | Defines the max spread in degrees from center \ No newline at end of file