Template:GGST Move Card: Difference between revisions

Template page
No edit summary
No edit summary
(26 intermediate revisions by 4 users not shown)
Line 6: Line 6:
-->{{#vardefine:input3|{{#explode:{{{input}}}|,|2}}}}<!--
-->{{#vardefine:input3|{{#explode:{{{input}}}|,|2}}}}<!--
-->{{#vardefine:input4|{{#explode:{{{input}}}|,|3}}}}<!--
-->{{#vardefine:input4|{{#explode:{{{input}}}|,|3}}}}<!--
---><div class="attack-container"><div class="attack-gallery">
-->{{#vardefine:input5|{{#explode:{{{input}}}|,|4}}}}<!--
<tabber>
-->{{#vardefine:input6|{{#explode:{{{input}}}|,|5}}}}<!--
Images = <!------------------- Pulls the images and captions from the game's moveData table ------------------->
------------------ Pulls the hitboxes and hitboxCaptions from the game's moveData table --------------
{{#cargo_query:tables= MoveData_GGST__images, MoveData_GGST, MoveData_GGST__caption
-->{{#vardefine:images|{{#cargo_query:tables= MoveData_GGST__images, MoveData_GGST, MoveData_GGST__caption
|join on= MoveData_GGST__images._rowID=MoveData_GGST._ID, MoveData_GGST__images._rowID=MoveData_GGST__caption._rowID, MoveData_GGST__images._position=MoveData_GGST__caption._position
|join on= MoveData_GGST__images._rowID=MoveData_GGST._ID, MoveData_GGST__images._rowID=MoveData_GGST__caption._rowID, MoveData_GGST__images._position=MoveData_GGST__caption._position
|fields= MoveData_GGST__images._value=image, MoveData_GGST__caption._value=caption
|fields= MoveData_GGST__images._value=image, MoveData_GGST__caption._value=caption
|where=MoveData_GGST.chara="{{#var:MoveCardTargetChara}}" and MoveData_GGST.input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|where=MoveData_GGST.chara="{{#var:MoveCardTargetChara}}" and MoveData_GGST.input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}', '{{#var:input5}}', '{{#var:input6}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|group by= MoveData_GGST__images._value
|group by= MoveData_GGST__images._value
|order by=_ID,MoveData_GGST__images._position
|order by=_ID,MoveData_GGST__images._position
Line 18: Line 18:
|image height=210|image width=210
|image height=210|image width=210
|caption field=caption|default=
|caption field=caption|default=
}}
}} }}<!--
|-|
-->{{#vardefine:hitboxes|{{#cargo_query:tables=MoveData_GGST__hitboxes, MoveData_GGST, MoveData_GGST__hitboxCaption
Hitboxes = <!-------------- Pulls the hitboxes and hitboxCaptions from the game's moveData table -------------->
{{#cargo_query:tables=MoveData_GGST__hitboxes, MoveData_GGST, MoveData_GGST__hitboxCaption
|join on= MoveData_GGST__hitboxes._rowID=MoveData_GGST._ID, MoveData_GGST__hitboxes._rowID=MoveData_GGST__hitboxCaption._rowID, MoveData_GGST__hitboxes._position=MoveData_GGST__hitboxCaption._position
|join on= MoveData_GGST__hitboxes._rowID=MoveData_GGST._ID, MoveData_GGST__hitboxes._rowID=MoveData_GGST__hitboxCaption._rowID, MoveData_GGST__hitboxes._position=MoveData_GGST__hitboxCaption._position
|fields= MoveData_GGST__hitboxes._value=image, MoveData_GGST__hitboxCaption._value=hitboxCaption
|fields= MoveData_GGST__hitboxes._value=image, MoveData_GGST__hitboxCaption._value=hitboxCaption
|where=MoveData_GGST.chara="{{#var:MoveCardTargetChara}}" and MoveData_GGST.input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|where=MoveData_GGST.chara="{{#var:MoveCardTargetChara}}" and MoveData_GGST.input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}', '{{#var:input5}}', '{{#var:input6}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|group by= MoveData_GGST__hitboxes._value
|group by= MoveData_GGST__hitboxes._value
|order by=_ID,MoveData_GGST__hitboxes._position
|order by=_ID,MoveData_GGST__hitboxes._position
Line 30: Line 28:
|image height=210|image width=210
|image height=210|image width=210
|caption field=hitboxCaption|default=
|caption field=hitboxCaption|default=
}}
}} }}<!------------  ... and puts those in the tabber container------
</tabber></div><div class="attack-info"><!--
--><div class="attack-container"><div class="attack-gallery">
{{#if:{{#var:hitboxes}}|{{#tag:tabber|
Images = {{#var:images}}
{{!}}-{{!}}
Hitboxes = {{#var:hitboxes}}}}|{{#var:images}}}}
</div>
<div class="attack-info"><!--
----------------------- displays the listed fields in the table portion of the move card -----------------------
----------------------- displays the listed fields in the table portion of the move card -----------------------
------ If the move is a single input with multiple versions, use the |versioned arg to show version names ------
------ If the move is a single input with multiple versions, use the |versioned arg to show version names ------
Line 40: Line 44:
{{#cargo_query:tables=MoveData_GGST
{{#cargo_query:tables=MoveData_GGST
|fields={{#switch:{{{versioned}}}|input = input=name,|name = name=name,}}damage,guard,startup,active,recovery,onBlock,invuln
|fields={{#switch:{{{versioned}}}|input = input=name,|name = name=name,}}damage,guard,startup,active,recovery,onBlock,invuln
|where=chara="{{#var:MoveCardTargetChara}}" and input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|where=chara="{{#var:MoveCardTargetChara}}" and input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}', '{{#var:input5}}', '{{#var:input6}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|format=template|template=FrameData-GGST|named args=yes|order by=_ID
|format=template|template=FrameData-GGST|named args=yes|order by=_ID
|delimiter=\n{{!}}-\n
|delimiter=\n{{!}}-\n
Line 51: Line 55:
-->{{#if:{{#var:input3}}| {{#invoke:GGST-FrameChart|drawFrameData|chara={{#var:MoveCardTargetChara}}|input={{#var:input3}}}} }}<!--
-->{{#if:{{#var:input3}}| {{#invoke:GGST-FrameChart|drawFrameData|chara={{#var:MoveCardTargetChara}}|input={{#var:input3}}}} }}<!--
-->{{#if:{{#var:input4}}| {{#invoke:GGST-FrameChart|drawFrameData|chara={{#var:MoveCardTargetChara}}|input={{#var:input4}}}} }}<!--
-->{{#if:{{#var:input4}}| {{#invoke:GGST-FrameChart|drawFrameData|chara={{#var:MoveCardTargetChara}}|input={{#var:input4}}}} }}<!--
-->{{#if:{{#var:input5}}| {{#invoke:GGST-FrameChart|drawFrameData|chara={{#var:MoveCardTargetChara}}|input={{#var:input5}}}} }}<!--
-->{{#if:{{#var:input6}}| {{#invoke:GGST-FrameChart|drawFrameData|chara={{#var:MoveCardTargetChara}}|input={{#var:input6}}}} }}<!--
----- else, use the supplied text as is---
----- else, use the supplied text as is---
-->|{{{frameChart|}}} }}<!--
-->|{{{frameChart|}}} }}<!--
----------------------- this is where the body of the move card is written. --------------------------->
----------------------- this is where the body of the move card is written. --------------------------->
<div style="width: 90%">
{{{description|Add a description to this move using the <code><nowiki>|description=</nowiki></code> field
{{{description|Add a description to this move using the <code><nowiki>|description=</nowiki></code> field


Describe what the move is used for.
Describe what the move is used for.


Explain the basics of why the initial purpose of the move is worth knowing or worth doing. Mention downsides that are important to know. If the move is particularly important it might have a spot on the stategy page—an important anti-air will likely be mentioned in the neutral section, or an important combo move will be mentioned in the combo theory.}}}
Explain the basics of why the initial purpose of the move is worth knowing or worth doing. Mention downsides that are important to know. If the move is particularly important it might have a spot on the stategy page—an important anti-air will likely be mentioned in the neutral section, or an important combo move will be mentioned in the combo theory.}}}</div>
<br><div class="mw-collapsible mw-collapsed" data-expandtext="Show Stats for Nerds" data-collapsetext="Hide Additional Data" style="width: 100%; max-width: 900px;">
<div class="mw-collapsible mw-collapsed additional-data-section" data-expandtext="Show Stats for Nerds" data-collapsetext="Hide Additional Data" style="width: 100%; max-width: 1920px; padding-top: 5px;">
{| class="wikitable attack-data"
{| class="wikitable attack-data"
{{AdditionalDataHeader-GGST|version={{{versioned|}}}}}
{{AdditionalDataHeader-GGST|version={{{versioned|}}}}}
|-
|-
{{#cargo_query:tables=MoveData_GGST
{{#cargo_query:tables=MoveData_GGST
|fields={{#switch:{{{versioned}}}|input = input=name,|name = name=name,}}prorate,onHit,counter,riscGain,level
|fields={{#switch:{{{versioned}}}|input = input=name,|name = name=name,}}prorate,onHit,counter,riscGain,riscLoss,level,wallDamage,OTGRatio,chipRatio,inputTension
|where=chara="{{#var:MoveCardTargetChara}}" and input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|where=chara="{{#var:MoveCardTargetChara}}" and input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}', '{{#var:input5}}', '{{#var:input6}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}}
|format=template|template=AdditionalData-GGST|named args=yes|order by=_ID
|format=template|template=AdditionalData-GGST|named args=yes|order by=_ID
|delimiter=\n{{!}}-\n
|delimiter=\n{{!}}-\n
}}
}}
|}
|}
<br/>
{{#cargo_query:tables=MoveData_GGST
{{#cargo_query:tables=MoveData_GGST
|fields={{#switch:{{{versioned}}}|input = input=name,|name = name=name,}}notes
|fields={{#switch:{{{versioned}}}|input = input=name,|name = name=name,}}notes
|where=chara="{{#var:MoveCardTargetChara}}" and input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}} and notes HOLDS LIKE "%"
|where=chara="{{#var:MoveCardTargetChara}}" and input in ('{{#var:input1}}', '{{#var:input2}}', '{{#var:input3}}', '{{#var:input4}}', '{{#var:input5}}', '{{#var:input6}}') {{#if: {{{type|}}}| and MoveData_GGST.type="{{{type|}}}" |}} and notes HOLDS LIKE "%"
|format={{#if:{{{versioned|}}}|list|list}}|named args=yes|order by=_ID
|format=template|template=Cargo_Notes|named args=yes|order by=_ID|delimiter=<br/>
|default=
|default=
}}</div></div></div></includeonly><noinclude>{{clear}}{{doc}}</noinclude>
}}</div></div></div></includeonly><noinclude>{{clear}}{{doc}}</noinclude>

Revision as of 05:42, 3 October 2022

Automatically creates a query for cargo based on the current character page when given an input.

Params:

  chara      (OPTIONAL) = defines the character the move card is for. If left blank, uses the current character page.
  input                 = a comma separated list of the inputs used for a move and its versions as they appear in cargo
  description           = a text description of the move
  versioned  (OPTIONAL) = override version column visibility. "name" to display moves versioned on name, "input" to display moves versioned on input.
  frameChart (OPTIONAL) = a fancy frame chart to draw. Either "auto" or a call to {{#invoke:FrameChart|drawFrameData}} or {{#invoke:GGST-FrameChart|drawFrameData}} variety

This is a test page for practicing move card generation

Examples

1 version 1 image

Damage GuardHow this attack can be blocked. StartupThe number of frames between inputting an attack and when the attack becomes active. Includes first active frame. ActiveThe number of frames for which a move has hitboxes. Occurs after Startup. RecoveryThe number of frames after a move's active frames during which the character cannot act assuming the move is not canceled. On-BlockThe difference between the attacker's recovery and the period that the opponent is in blockstun. This Frame Advantage value is based off the fact that the very first active frame touches the opponent. Invuln
30 All 12 8 12 -6 1-3 Upper Body
4-15 Above Knees
Total: 31
Lorum Ipsum

1 versions 2 images

Damage GuardHow this attack can be blocked. StartupThe number of frames between inputting an attack and when the attack becomes active. Includes first active frame. ActiveThe number of frames for which a move has hitboxes. Occurs after Startup. RecoveryThe number of frames after a move's active frames during which the character cannot act assuming the move is not canceled. On-BlockThe difference between the attacker's recovery and the period that the opponent is in blockstun. This Frame Advantage value is based off the fact that the very first active frame touches the opponent. Invuln
20×2 [20, 22] Low, All 7 12(7)3 30 -19 [-14] 1-2F Above Shoulders
3-6F Upper Body
7-18F Above Knees
Total: 58

Add a description to this move using the |description= field

Describe what the move is used for.

Explain the basics of why the initial purpose of the move is worth knowing or worth doing. Mention downsides that are important to know. If the move is particularly important it might have a spot on the stategy page—an important anti-air will likely be mentioned in the neutral section, or an important combo move will be mentioned in the combo theory.

2 version 2 image

Version Damage GuardHow this attack can be blocked. StartupThe number of frames between inputting an attack and when the attack becomes active. Includes first active frame. ActiveThe number of frames for which a move has hitboxes. Occurs after Startup. RecoveryThe number of frames after a move's active frames during which the character cannot act assuming the move is not canceled. On-BlockThe difference between the attacker's recovery and the period that the opponent is in blockstun. This Frame Advantage value is based off the fact that the very first active frame touches the opponent. Invuln
48 [52] All 11 4 43 -33 [-28] 1-14f Strike
60 [66] All 13 8 44 -38 [-33] 7-16F Strike
Total: 57
Total: 64

Add a description to this move using the |description= field

Describe what the move is used for.

Explain the basics of why the initial purpose of the move is worth knowing or worth doing. Mention downsides that are important to know. If the move is particularly important it might have a spot on the stategy page—an important anti-air will likely be mentioned in the neutral section, or an important combo move will be mentioned in the combo theory.

Description Size Test

Damage GuardHow this attack can be blocked. StartupThe number of frames between inputting an attack and when the attack becomes active. Includes first active frame. ActiveThe number of frames for which a move has hitboxes. Occurs after Startup. RecoveryThe number of frames after a move's active frames during which the character cannot act assuming the move is not canceled. On-BlockThe difference between the attacker's recovery and the period that the opponent is in blockstun. This Frame Advantage value is based off the fact that the very first active frame touches the opponent. Invuln
45 All 13 9 13 -12 13-??F Airborne

Heavy frametrap and low crush.

One of Bridget's strongest Counter Hit starters. In neutral it can low crush ground-height pokes, making it a good counterpart to 6P. It will usually hit Meaty Hitting an opponent to cover the moment as they lose invincibility. The most common one is performing an attack early on okizeme to gain frame advantage and bait reversals. due to distance, making it safer on block and leave Bridget further, but it is always safe when cancelled into Stop and Dash
Error: Table MoveData_GGST Move Card not found.
regardless, for enormous pushback on the opponent.


In pressure, it can be used similarly to 6K, sacrificing some pressure options in favour of Counter Hit damage and pushback on the opponent. Off P normals this also loses to 6P attacks on prediction. It is unsafe on block, forcing Bridget to cancel Roger DiveGGST Bridget j236K 1.pngGuardAllStartup25Recovery15Advantage-5 or Stop and Dash to remain safe. With Roman Cancel, it behaves similarly to Shoot
Error: Table MoveData_GGST Move Card not found.
with its airborne state and momentum, but is less valuable to route into.
  • Wall bounces on hit.
  • Bridget flies forward during active frames. Will hit later based on distance.
  • Bridget is airborne during active frames. Cancels into air specials.