mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-20 13:23:45 -07:00
let-it-snow: Snow Golems (Skeleton override) (#4695)
* Add Snow Golems (Skeleton override) * update snowball to use new snowball DL
This commit is contained in:
parent
0c7ce16986
commit
a8f3840475
38 changed files with 572 additions and 37 deletions
BIN
soh/assets/custom/objects/custom_snowball/LightNoise.rgba32
Normal file
BIN
soh/assets/custom/objects/custom_snowball/LightNoise.rgba32
Normal file
Binary file not shown.
16
soh/assets/custom/objects/custom_snowball/mat_snowball_snow
Normal file
16
soh/assets/custom/objects/custom_snowball/mat_snowball_snow
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<DisplayList Version="0">
|
||||||
|
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
|
||||||
|
<PipeSync/>
|
||||||
|
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
|
||||||
|
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TT_NONE="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
|
||||||
|
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
|
||||||
|
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
|
||||||
|
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
|
||||||
|
<SetTextureImage Path="objects/custom_snowball/LightNoise.rgba32" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_32b_LOAD_BLOCK" Width="1"/>
|
||||||
|
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_32b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
|
||||||
|
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="128"/>
|
||||||
|
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_32b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
|
||||||
|
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
|
||||||
|
<EndDisplayList/>
|
||||||
|
</DisplayList>
|
||||||
|
|
10
soh/assets/custom/objects/custom_snowball/model.xml
Normal file
10
soh/assets/custom/objects/custom_snowball/model.xml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<Vertex Version="0">
|
||||||
|
<Vtx X="-951" Y="-1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="-951" Y="-1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="-951" Y="1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="-951" Y="1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="-1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="-1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
</Vertex>
|
10
soh/assets/custom/objects/custom_snowball/snowball
Normal file
10
soh/assets/custom/objects/custom_snowball/snowball
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<DisplayList Version="0">
|
||||||
|
<ClearGeometryMode G_LIGHTING="1" />
|
||||||
|
<LoadVertices Path="objects/custom_snowball/snowball_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
|
||||||
|
<SetGeometryMode G_LIGHTING="1" />
|
||||||
|
<CullDisplayList Start="0" End="7"/>
|
||||||
|
<CallDisplayList Path="objects/custom_snowball/mat_snowball_snow"/>
|
||||||
|
<CallDisplayList Path="objects/custom_snowball/snowball_tri_0"/>
|
||||||
|
<EndDisplayList/>
|
||||||
|
</DisplayList>
|
||||||
|
|
47
soh/assets/custom/objects/custom_snowball/snowball_tri_0
Normal file
47
soh/assets/custom/objects/custom_snowball/snowball_tri_0
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
<DisplayList Version="0">
|
||||||
|
<LoadVertices Path="objects/custom_snowball/snowball_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
|
||||||
|
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
|
||||||
|
<Triangles2 V00="1" V01="4" V02="3" Flag0="0" V10="3" V11="4" V12="5" Flag1="0"/>
|
||||||
|
<Triangles2 V00="4" V01="6" V02="5" Flag0="0" V10="4" V11="7" V12="6" Flag1="0"/>
|
||||||
|
<Triangles2 V00="4" V01="8" V02="7" Flag0="0" V10="7" V11="8" V12="9" Flag1="0"/>
|
||||||
|
<Triangles2 V00="8" V01="10" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
|
||||||
|
<Triangles2 V00="7" V01="11" V02="12" Flag0="0" V10="11" V11="13" V12="12" Flag1="0"/>
|
||||||
|
<Triangles2 V00="11" V01="14" V02="13" Flag0="0" V10="15" V11="14" V12="11" Flag1="0"/>
|
||||||
|
<Triangles2 V00="15" V01="16" V02="14" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
|
||||||
|
<Triangles2 V00="16" V01="18" V02="14" Flag0="0" V10="14" V11="18" V12="19" Flag1="0"/>
|
||||||
|
<Triangles2 V00="18" V01="20" V02="19" Flag0="0" V10="18" V11="21" V12="20" Flag1="0"/>
|
||||||
|
<Triangles2 V00="22" V01="21" V02="18" Flag0="0" V10="22" V11="23" V12="21" Flag1="0"/>
|
||||||
|
<Triangles2 V00="24" V01="23" V02="22" Flag0="0" V10="23" V11="25" V12="21" Flag1="0"/>
|
||||||
|
<Triangles2 V00="21" V01="25" V02="26" Flag0="0" V10="25" V11="27" V12="26" Flag1="0"/>
|
||||||
|
<Triangles2 V00="25" V01="28" V02="27" Flag0="0" V10="29" V11="28" V12="25" Flag1="0"/>
|
||||||
|
<Triangles2 V00="29" V01="30" V02="28" Flag0="0" V10="31" V11="30" V12="29" Flag1="0"/>
|
||||||
|
<LoadVertices Path="objects/custom_snowball/snowball_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
|
||||||
|
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
|
||||||
|
<Triangles2 V00="4" V01="2" V02="3" Flag0="0" V10="4" V11="3" V12="5" Flag1="0"/>
|
||||||
|
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="6" V11="5" V12="7" Flag1="0"/>
|
||||||
|
<Triangles2 V00="8" V01="6" V02="7" Flag0="0" V10="8" V11="7" V12="9" Flag1="0"/>
|
||||||
|
<Triangles2 V00="10" V01="6" V02="8" Flag0="0" V10="11" V11="6" V12="10" Flag1="0"/>
|
||||||
|
<Triangles2 V00="12" V01="11" V02="10" Flag0="0" V10="12" V11="10" V12="13" Flag1="0"/>
|
||||||
|
<Triangles2 V00="13" V01="10" V02="14" Flag0="0" V10="15" V11="13" V12="14" Flag1="0"/>
|
||||||
|
<Triangles2 V00="15" V01="14" V02="16" Flag0="0" V10="17" V11="13" V12="15" Flag1="0"/>
|
||||||
|
<Triangles2 V00="18" V01="13" V02="17" Flag0="0" V10="19" V11="18" V12="17" Flag1="0"/>
|
||||||
|
<Triangles2 V00="19" V01="17" V02="20" Flag0="0" V10="20" V11="17" V12="21" Flag1="0"/>
|
||||||
|
<Triangles2 V00="22" V01="20" V02="21" Flag0="0" V10="22" V11="21" V12="23" Flag1="0"/>
|
||||||
|
<Triangles2 V00="24" V01="20" V02="22" Flag0="0" V10="25" V11="20" V12="24" Flag1="0"/>
|
||||||
|
<Triangles2 V00="26" V01="25" V02="24" Flag0="0" V10="26" V11="24" V12="27" Flag1="0"/>
|
||||||
|
<Triangles2 V00="27" V01="24" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
|
||||||
|
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="27" V12="29" Flag1="0"/>
|
||||||
|
<LoadVertices Path="objects/custom_snowball/snowball_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="26"/>
|
||||||
|
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
|
||||||
|
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="4" V11="2" V12="5" Flag1="0"/>
|
||||||
|
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="5" V12="7" Flag1="0"/>
|
||||||
|
<Triangles2 V00="8" V01="4" V02="6" Flag0="0" V10="9" V11="4" V12="8" Flag1="0"/>
|
||||||
|
<Triangles2 V00="9" V01="3" V02="4" Flag0="0" V10="10" V11="3" V12="9" Flag1="0"/>
|
||||||
|
<Triangles2 V00="10" V01="11" V02="3" Flag0="0" V10="12" V11="11" V12="10" Flag1="0"/>
|
||||||
|
<Triangles2 V00="3" V01="11" V02="0" Flag0="0" V10="13" V11="14" V12="15" Flag1="0"/>
|
||||||
|
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="20" V12="21" Flag1="0"/>
|
||||||
|
<Triangles2 V00="0" V01="22" V02="1" Flag0="0" V10="14" V11="23" V12="16" Flag1="0"/>
|
||||||
|
<Triangles2 V00="17" V01="24" V02="19" Flag0="0" V10="22" V11="25" V12="13" Flag1="0"/>
|
||||||
|
<EndDisplayList/>
|
||||||
|
</DisplayList>
|
||||||
|
|
92
soh/assets/custom/objects/custom_snowball/snowball_vtx_0
Normal file
92
soh/assets/custom/objects/custom_snowball/snowball_vtx_0
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
<Vertex Version="0">
|
||||||
|
<Vtx X="0" Y="-1000" Z="0" S="-933" T="1827" R="0" G="129" B="0" A="255"/>
|
||||||
|
<Vtx X="425" Y="-851" Z="309" S="-729" T="1473" R="54" G="148" B="39" A="255"/>
|
||||||
|
<Vtx X="-162" Y="-851" Z="500" S="-1137" T="1473" R="235" G="148" B="64" A="255"/>
|
||||||
|
<Vtx X="263" Y="-526" Z="809" S="-933" T="1120" R="33" G="189" B="103" A="255"/>
|
||||||
|
<Vtx X="724" Y="-447" Z="526" S="-525" T="1120" R="92" G="199" B="67" A="255"/>
|
||||||
|
<Vtx X="588" Y="0" Z="809" S="-729" T="766" R="75" G="0" B="103" A="255"/>
|
||||||
|
<Vtx X="951" Y="0" Z="309" S="-321" T="766" R="121" G="0" B="39" A="255"/>
|
||||||
|
<Vtx X="851" Y="-526" Z="0" S="-117" T="1120" R="108" G="189" B="0" A="255"/>
|
||||||
|
<Vtx X="425" Y="-851" Z="309" S="-321" T="1473" R="54" G="148" B="39" A="255"/>
|
||||||
|
<Vtx X="425" Y="-851" Z="-309" S="88" T="1473" R="54" G="148" B="217" A="255"/>
|
||||||
|
<Vtx X="0" Y="-1000" Z="0" S="-117" T="1827" R="0" G="129" B="0" A="255"/>
|
||||||
|
<Vtx X="724" Y="-447" Z="-526" S="292" T="1120" R="92" G="199" B="189" A="255"/>
|
||||||
|
<Vtx X="951" Y="0" Z="-309" S="88" T="766" R="121" G="0" B="217" A="255"/>
|
||||||
|
<Vtx X="588" Y="0" Z="-809" S="496" T="766" R="75" G="0" B="153" A="255"/>
|
||||||
|
<Vtx X="263" Y="-526" Z="-809" S="700" T="1120" R="33" G="189" B="153" A="255"/>
|
||||||
|
<Vtx X="425" Y="-851" Z="-309" S="496" T="1473" R="54" G="148" B="217" A="255"/>
|
||||||
|
<Vtx X="-162" Y="-851" Z="-500" S="904" T="1473" R="235" G="148" B="192" A="255"/>
|
||||||
|
<Vtx X="0" Y="-1000" Z="0" S="700" T="1827" R="0" G="129" B="0" A="255"/>
|
||||||
|
<Vtx X="-276" Y="-447" Z="-851" S="1109" T="1120" R="221" G="199" B="148" A="255"/>
|
||||||
|
<Vtx X="0" Y="0" Z="-1000" S="904" T="766" R="0" G="0" B="129" A="255"/>
|
||||||
|
<Vtx X="-588" Y="0" Z="-809" S="1313" T="766" R="181" G="0" B="153" A="255"/>
|
||||||
|
<Vtx X="-688" Y="-526" Z="-500" S="1517" T="1120" R="169" G="189" B="193" A="255"/>
|
||||||
|
<Vtx X="-162" Y="-851" Z="-500" S="1313" T="1473" R="235" G="148" B="192" A="255"/>
|
||||||
|
<Vtx X="-526" Y="-851" Z="0" S="1721" T="1473" R="189" G="148" B="0" A="255"/>
|
||||||
|
<Vtx X="0" Y="-1000" Z="0" S="1517" T="1827" R="0" G="129" B="0" A="255"/>
|
||||||
|
<Vtx X="-894" Y="-447" Z="0" S="1925" T="1120" R="142" G="199" B="0" A="255"/>
|
||||||
|
<Vtx X="-951" Y="0" Z="-309" S="1721" T="766" R="135" G="0" B="217" A="255"/>
|
||||||
|
<Vtx X="-951" Y="0" Z="309" S="2130" T="766" R="135" G="0" B="39" A="255"/>
|
||||||
|
<Vtx X="-688" Y="-526" Z="500" S="2334" T="1120" R="169" G="189" B="63" A="255"/>
|
||||||
|
<Vtx X="-526" Y="-851" Z="0" S="2130" T="1473" R="189" G="148" B="0" A="255"/>
|
||||||
|
<Vtx X="-162" Y="-851" Z="500" S="2538" T="1473" R="235" G="148" B="64" A="255"/>
|
||||||
|
<Vtx X="0" Y="-1000" Z="0" S="2334" T="1827" R="0" G="129" B="0" A="255"/>
|
||||||
|
<Vtx X="-162" Y="-851" Z="500" S="2538" T="1473" R="235" G="148" B="64" A="255"/>
|
||||||
|
<Vtx X="-276" Y="-447" Z="851" S="2742" T="1120" R="221" G="199" B="108" A="255"/>
|
||||||
|
<Vtx X="-688" Y="-526" Z="500" S="2334" T="1120" R="169" G="189" B="63" A="255"/>
|
||||||
|
<Vtx X="-588" Y="0" Z="809" S="2538" T="766" R="181" G="0" B="103" A="255"/>
|
||||||
|
<Vtx X="-951" Y="0" Z="309" S="2130" T="766" R="135" G="0" B="39" A="255"/>
|
||||||
|
<Vtx X="-724" Y="447" Z="526" S="2334" T="412" R="164" G="57" B="67" A="255"/>
|
||||||
|
<Vtx X="-851" Y="526" Z="0" S="1925" T="412" R="148" G="67" B="0" A="255"/>
|
||||||
|
<Vtx X="-425" Y="851" Z="309" S="2130" T="59" R="202" G="108" B="39" A="255"/>
|
||||||
|
<Vtx X="-425" Y="851" Z="-309" S="1721" T="59" R="202" G="108" B="217" A="255"/>
|
||||||
|
<Vtx X="0" Y="1000" Z="0" S="1925" T="-295" R="0" G="127" B="0" A="255"/>
|
||||||
|
<Vtx X="-724" Y="447" Z="-526" S="1517" T="412" R="164" G="57" B="189" A="255"/>
|
||||||
|
<Vtx X="-951" Y="0" Z="-309" S="1721" T="766" R="135" G="0" B="217" A="255"/>
|
||||||
|
<Vtx X="-588" Y="0" Z="-809" S="1313" T="766" R="181" G="0" B="153" A="255"/>
|
||||||
|
<Vtx X="-263" Y="526" Z="-809" S="1109" T="412" R="223" G="67" B="153" A="255"/>
|
||||||
|
<Vtx X="-425" Y="851" Z="-309" S="1313" T="59" R="202" G="108" B="217" A="255"/>
|
||||||
|
<Vtx X="162" Y="851" Z="-500" S="904" T="59" R="21" G="108" B="192" A="255"/>
|
||||||
|
<Vtx X="0" Y="1000" Z="0" S="1109" T="-295" R="0" G="127" B="0" A="255"/>
|
||||||
|
<Vtx X="276" Y="447" Z="-851" S="700" T="412" R="35" G="57" B="148" A="255"/>
|
||||||
|
<Vtx X="0" Y="0" Z="-1000" S="904" T="766" R="0" G="0" B="129" A="255"/>
|
||||||
|
<Vtx X="588" Y="0" Z="-809" S="496" T="766" R="75" G="0" B="153" A="255"/>
|
||||||
|
<Vtx X="688" Y="526" Z="-500" S="292" T="412" R="87" G="67" B="193" A="255"/>
|
||||||
|
<Vtx X="162" Y="851" Z="-500" S="496" T="59" R="21" G="108" B="192" A="255"/>
|
||||||
|
<Vtx X="526" Y="851" Z="0" S="88" T="59" R="67" G="108" B="0" A="255"/>
|
||||||
|
<Vtx X="0" Y="1000" Z="0" S="292" T="-295" R="0" G="127" B="0" A="255"/>
|
||||||
|
<Vtx X="894" Y="447" Z="0" S="-117" T="412" R="114" G="57" B="0" A="255"/>
|
||||||
|
<Vtx X="951" Y="0" Z="-309" S="88" T="766" R="121" G="0" B="217" A="255"/>
|
||||||
|
<Vtx X="951" Y="0" Z="309" S="-321" T="766" R="121" G="0" B="39" A="255"/>
|
||||||
|
<Vtx X="688" Y="526" Z="500" S="-525" T="412" R="87" G="67" B="63" A="255"/>
|
||||||
|
<Vtx X="526" Y="851" Z="0" S="-321" T="59" R="67" G="108" B="0" A="255"/>
|
||||||
|
<Vtx X="162" Y="851" Z="500" S="-729" T="59" R="21" G="108" B="64" A="255"/>
|
||||||
|
<Vtx X="0" Y="1000" Z="0" S="-525" T="-295" R="0" G="127" B="0" A="255"/>
|
||||||
|
<Vtx X="276" Y="447" Z="851" S="-933" T="412" R="35" G="57" B="108" A="255"/>
|
||||||
|
<Vtx X="588" Y="0" Z="809" S="-729" T="766" R="75" G="0" B="103" A="255"/>
|
||||||
|
<Vtx X="688" Y="526" Z="500" S="-525" T="412" R="87" G="67" B="63" A="255"/>
|
||||||
|
<Vtx X="276" Y="447" Z="851" S="-933" T="412" R="35" G="57" B="108" A="255"/>
|
||||||
|
<Vtx X="0" Y="0" Z="1000" S="-1137" T="766" R="0" G="0" B="127" A="255"/>
|
||||||
|
<Vtx X="-263" Y="526" Z="809" S="-1342" T="412" R="223" G="67" B="103" A="255"/>
|
||||||
|
<Vtx X="162" Y="851" Z="500" S="-1137" T="59" R="21" G="108" B="64" A="255"/>
|
||||||
|
<Vtx X="-425" Y="851" Z="309" S="-1546" T="59" R="202" G="108" B="39" A="255"/>
|
||||||
|
<Vtx X="0" Y="1000" Z="0" S="-1342" T="-295" R="0" G="127" B="0" A="255"/>
|
||||||
|
<Vtx X="-724" Y="447" Z="526" S="-1750" T="412" R="164" G="57" B="67" A="255"/>
|
||||||
|
<Vtx X="-588" Y="0" Z="809" S="-1546" T="766" R="181" G="0" B="103" A="255"/>
|
||||||
|
<Vtx X="-276" Y="-447" Z="851" S="-1342" T="1120" R="221" G="199" B="108" A="255"/>
|
||||||
|
<Vtx X="263" Y="-526" Z="809" S="-933" T="1120" R="33" G="189" B="103" A="255"/>
|
||||||
|
<Vtx X="-162" Y="-851" Z="500" S="-1137" T="1473" R="235" G="148" B="64" A="255"/>
|
||||||
|
<Vtx X="951" Y="0" Z="-309" S="88" T="766" R="121" G="0" B="217" A="255"/>
|
||||||
|
<Vtx X="588" Y="0" Z="-809" S="496" T="766" R="75" G="0" B="153" A="255"/>
|
||||||
|
<Vtx X="688" Y="526" Z="-500" S="292" T="412" R="87" G="67" B="193" A="255"/>
|
||||||
|
<Vtx X="0" Y="0" Z="-1000" S="904" T="766" R="0" G="0" B="129" A="255"/>
|
||||||
|
<Vtx X="-588" Y="0" Z="-809" S="1313" T="766" R="181" G="0" B="153" A="255"/>
|
||||||
|
<Vtx X="-263" Y="526" Z="-809" S="1109" T="412" R="223" G="67" B="153" A="255"/>
|
||||||
|
<Vtx X="-951" Y="0" Z="-309" S="1721" T="766" R="135" G="0" B="217" A="255"/>
|
||||||
|
<Vtx X="-951" Y="0" Z="309" S="2130" T="766" R="135" G="0" B="39" A="255"/>
|
||||||
|
<Vtx X="-851" Y="526" Z="0" S="1925" T="412" R="148" G="67" B="0" A="255"/>
|
||||||
|
<Vtx X="951" Y="0" Z="309" S="-321" T="766" R="121" G="0" B="39" A="255"/>
|
||||||
|
<Vtx X="263" Y="-526" Z="-809" S="700" T="1120" R="33" G="189" B="153" A="255"/>
|
||||||
|
<Vtx X="-688" Y="-526" Z="-500" S="1517" T="1120" R="169" G="189" B="193" A="255"/>
|
||||||
|
<Vtx X="851" Y="-526" Z="0" S="-117" T="1120" R="108" G="189" B="0" A="255"/>
|
||||||
|
</Vertex>
|
10
soh/assets/custom/objects/custom_snowball/snowball_vtx_cull
Normal file
10
soh/assets/custom/objects/custom_snowball/snowball_vtx_cull
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<Vertex Version="0">
|
||||||
|
<Vtx X="-951" Y="-1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="-951" Y="-1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="-951" Y="1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="-951" Y="1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="-1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="-1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="1000" Z="1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
<Vtx X="951" Y="1000" Z="-1000" S="0" T="0" R="0" G="0" B="0" A="0"/>
|
||||||
|
</Vertex>
|
|
@ -59,6 +59,9 @@ static const ALIGN_ASSET(2) char gSkullTreasureChestFrontTex[] = dgSkullTreasure
|
||||||
#define dgSkullTreasureChestSideAndTopTex "__OTR__objects/object_box/gSkullTreasureChestSideAndTopTex"
|
#define dgSkullTreasureChestSideAndTopTex "__OTR__objects/object_box/gSkullTreasureChestSideAndTopTex"
|
||||||
static const ALIGN_ASSET(2) char gSkullTreasureChestSideAndTopTex[] = dgSkullTreasureChestSideAndTopTex;
|
static const ALIGN_ASSET(2) char gSkullTreasureChestSideAndTopTex[] = dgSkullTreasureChestSideAndTopTex;
|
||||||
|
|
||||||
|
#define dgSnowballDL "__OTR__objects/custom_snowball/snowball"
|
||||||
|
static const ALIGN_ASSET(2) char gSnowballDL[] = dgSnowballDL;
|
||||||
|
|
||||||
#define dgTitleRandomizerSubtitleTex "__OTR__objects/object_mag/gTitleRandomizerSubtitleTex"
|
#define dgTitleRandomizerSubtitleTex "__OTR__objects/object_mag/gTitleRandomizerSubtitleTex"
|
||||||
static const ALIGN_ASSET(2) char gTitleRandomizerSubtitleTex[] = dgTitleRandomizerSubtitleTex;
|
static const ALIGN_ASSET(2) char gTitleRandomizerSubtitleTex[] = dgTitleRandomizerSubtitleTex;
|
||||||
|
|
||||||
|
|
123
soh/soh/Enhancements/Holiday/Archez.cpp
Normal file
123
soh/soh/Enhancements/Holiday/Archez.cpp
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
#include "Holiday.hpp"
|
||||||
|
#include "Archez.h"
|
||||||
|
#include <libultraship/libultraship.h>
|
||||||
|
#include "soh/UIWidgets.hpp"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
#include "soh_assets.h"
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
#include "macros.h"
|
||||||
|
#include "functions.h"
|
||||||
|
#include "variables.h"
|
||||||
|
#include "objects/object_goroiwa/object_goroiwa.h"
|
||||||
|
|
||||||
|
extern PlayState* gPlayState;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define AUTHOR "Archez"
|
||||||
|
#define CVAR(v) "gHoliday." AUTHOR "." v
|
||||||
|
|
||||||
|
static bool sSkipNextLimb = false;
|
||||||
|
static bool sSkipNextSkeleton = false;
|
||||||
|
|
||||||
|
extern "C" void SkipOverrideNextLimb() {
|
||||||
|
sSkipNextLimb = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void SkipOverrideNextSkeleton() {
|
||||||
|
sSkipNextSkeleton = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" void ClearOverrideSkips() {
|
||||||
|
sSkipNextLimb = false;
|
||||||
|
sSkipNextSkeleton = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ConfigurationChanged() {
|
||||||
|
COND_VB_SHOULD(VB_DRAW_SKEL_LIMB, CVarGetInteger(CVAR("SnowGolems"), 0), {
|
||||||
|
if (!*should) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sSkipNextLimb) {
|
||||||
|
sSkipNextLimb = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sSkipNextSkeleton) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Gfx** gfxP = va_arg(args, Gfx**);
|
||||||
|
void* dList = va_arg(args, void*);
|
||||||
|
|
||||||
|
*should = false;
|
||||||
|
|
||||||
|
Gfx* gfx = *gfxP;
|
||||||
|
|
||||||
|
Matrix_Push();
|
||||||
|
|
||||||
|
Matrix_Scale(0.55f, 0.55f, 0.55f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(gfx++, Matrix_NewMtx(gPlayState->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_LOAD);
|
||||||
|
gSPDisplayList(gfx++, (Gfx*)gSnowballDL);
|
||||||
|
|
||||||
|
Matrix_Pop();
|
||||||
|
|
||||||
|
gSPMatrix(gfx++, Matrix_NewMtx(gPlayState->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_LOAD);
|
||||||
|
|
||||||
|
*gfxP = gfx;
|
||||||
|
});
|
||||||
|
|
||||||
|
COND_VB_SHOULD(VB_DRAW_SKEL_FLEX_LIMB, CVarGetInteger(CVAR("SnowGolems"), 0), {
|
||||||
|
if (!*should) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sSkipNextLimb) {
|
||||||
|
sSkipNextLimb = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sSkipNextSkeleton) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Gfx** gfxP = va_arg(args, Gfx**);
|
||||||
|
void* dList = va_arg(args, void*);
|
||||||
|
Mtx* mtx = va_arg(args, Mtx*);
|
||||||
|
|
||||||
|
*should = false;
|
||||||
|
|
||||||
|
Gfx* gfx = *gfxP;
|
||||||
|
MtxF mtxF;
|
||||||
|
|
||||||
|
Matrix_Push();
|
||||||
|
Matrix_MtxToMtxF(mtx, &mtxF);
|
||||||
|
Matrix_Put(&mtxF);
|
||||||
|
|
||||||
|
Matrix_Scale(0.55f, 0.55f, 0.55f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(gfx++, Matrix_NewMtx(gPlayState->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_LOAD);
|
||||||
|
gSPDisplayList(gfx++, (Gfx*)gSnowballDL);
|
||||||
|
|
||||||
|
Matrix_Pop();
|
||||||
|
|
||||||
|
gSPMatrix(gfx++, mtx, G_MTX_LOAD);
|
||||||
|
|
||||||
|
*gfxP = gfx;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DrawMenu() {
|
||||||
|
ImGui::SeparatorText(AUTHOR);
|
||||||
|
|
||||||
|
if (UIWidgets::EnhancementCheckbox("Snow Golems", CVAR("SnowGolems"))) {
|
||||||
|
ConfigurationChanged();
|
||||||
|
}
|
||||||
|
UIWidgets::Tooltip("Overrides most charactor skeletons with snow balls to make them look like Snow Golems");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RegisterMod() {
|
||||||
|
ConfigurationChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
static Holiday holiday(DrawMenu, RegisterMod);
|
17
soh/soh/Enhancements/Holiday/Archez.h
Normal file
17
soh/soh/Enhancements/Holiday/Archez.h
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#ifndef ARCHEZ_H
|
||||||
|
#define ARCHEZ_H
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void SkipOverrideNextLimb();
|
||||||
|
void SkipOverrideNextSkeleton();
|
||||||
|
void ClearOverrideSkips();
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // ARCHEZ_H
|
|
@ -502,6 +502,9 @@ typedef enum {
|
||||||
// Vanilla condition: Actor is ACTOR_EN_ELF, ACTOR_EN_FISH, ACTOR_EN_ICE_HONO, or ACTOR_EN_INSECT
|
// Vanilla condition: Actor is ACTOR_EN_ELF, ACTOR_EN_FISH, ACTOR_EN_ICE_HONO, or ACTOR_EN_INSECT
|
||||||
// Opt: *Actor
|
// Opt: *Actor
|
||||||
VB_BOTTLE_ACTOR,
|
VB_BOTTLE_ACTOR,
|
||||||
|
|
||||||
|
VB_DRAW_SKEL_LIMB,
|
||||||
|
VB_DRAW_SKEL_FLEX_LIMB,
|
||||||
} GIVanillaBehavior;
|
} GIVanillaBehavior;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <soh_assets.h>
|
#include <soh_assets.h>
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* 0x00 */ u8 flag;
|
/* 0x00 */ u8 flag;
|
||||||
|
@ -1422,6 +1423,10 @@ s32 Player_OverrideLimbDrawGameplayDefault(PlayState* play, s32 limbIndex, Gfx**
|
||||||
sLeftHandType = PLAYER_MODELTYPE_LH_CLOSED;
|
sLeftHandType = PLAYER_MODELTYPE_LH_CLOSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sLeftHandType != PLAYER_MODELTYPE_LH_OPEN && sLeftHandType != PLAYER_MODELTYPE_LH_CLOSED) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
*dList = ResourceMgr_LoadGfxByName(dLists[sDListsLodOffset]);
|
*dList = ResourceMgr_LoadGfxByName(dLists[sDListsLodOffset]);
|
||||||
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
|
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
|
||||||
Gfx** dLists = this->rightHandDLists;
|
Gfx** dLists = this->rightHandDLists;
|
||||||
|
@ -1433,8 +1438,13 @@ s32 Player_OverrideLimbDrawGameplayDefault(PlayState* play, s32 limbIndex, Gfx**
|
||||||
sRightHandType = PLAYER_MODELTYPE_RH_CLOSED;
|
sRightHandType = PLAYER_MODELTYPE_RH_CLOSED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sRightHandType != PLAYER_MODELTYPE_RH_OPEN && sRightHandType != PLAYER_MODELTYPE_RH_CLOSED) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
*dList = ResourceMgr_LoadGfxByName(dLists[sDListsLodOffset]);
|
*dList = ResourceMgr_LoadGfxByName(dLists[sDListsLodOffset]);
|
||||||
} else if (limbIndex == PLAYER_LIMB_SHEATH) {
|
} else if (limbIndex == PLAYER_LIMB_SHEATH) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
Gfx** dLists = this->sheathDLists;
|
Gfx** dLists = this->sheathDLists;
|
||||||
|
|
||||||
if ((this->sheathType == PLAYER_MODELTYPE_SHEATH_18) || (this->sheathType == PLAYER_MODELTYPE_SHEATH_19)) {
|
if ((this->sheathType == PLAYER_MODELTYPE_SHEATH_18) || (this->sheathType == PLAYER_MODELTYPE_SHEATH_19)) {
|
||||||
|
@ -1491,10 +1501,13 @@ s32 Player_OverrideLimbDrawGameplayFirstPerson(PlayState* play, s32 limbIndex, G
|
||||||
}
|
}
|
||||||
*dList = sFirstPersonLeftHandDLs[handOutDlIndex];
|
*dList = sFirstPersonLeftHandDLs[handOutDlIndex];
|
||||||
} else if (limbIndex == PLAYER_LIMB_R_SHOULDER) {
|
} else if (limbIndex == PLAYER_LIMB_R_SHOULDER) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
*dList = sFirstPersonRightShoulderDLs[gSaveContext.linkAge];
|
*dList = sFirstPersonRightShoulderDLs[gSaveContext.linkAge];
|
||||||
} else if (limbIndex == PLAYER_LIMB_R_FOREARM) {
|
} else if (limbIndex == PLAYER_LIMB_R_FOREARM) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
*dList = sFirstPersonForearmDLs[gSaveContext.linkAge];
|
*dList = sFirstPersonForearmDLs[gSaveContext.linkAge];
|
||||||
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
|
} else if (limbIndex == PLAYER_LIMB_R_HAND) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
s32 firstPersonWeaponIndex = gSaveContext.linkAge;
|
s32 firstPersonWeaponIndex = gSaveContext.linkAge;
|
||||||
if (CVarGetInteger(CVAR_ENHANCEMENT("BowSlingshotAmmoFix"), 0) || CVarGetInteger(CVAR_ENHANCEMENT("EquipmentAlwaysVisible"), 0)) {
|
if (CVarGetInteger(CVAR_ENHANCEMENT("BowSlingshotAmmoFix"), 0) || CVarGetInteger(CVAR_ENHANCEMENT("EquipmentAlwaysVisible"), 0)) {
|
||||||
if (Player_HoldsBow(this)) {
|
if (Player_HoldsBow(this)) {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "soh/OTRGlobals.h"
|
#include "soh/OTRGlobals.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||||
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define ANIM_INTERP 1
|
#define ANIM_INTERP 1
|
||||||
|
|
||||||
|
@ -45,7 +48,7 @@ void SkelAnime_DrawLimbLod(PlayState* play, s32 limbIndex, void** skeleton, Vec3
|
||||||
|
|
||||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, arg)) {
|
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, arg)) {
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (dList != NULL) {
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, dList != NULL, &POLY_OPA_DISP, dList)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, dList);
|
gSPDisplayList(POLY_OPA_DISP++, dList);
|
||||||
}
|
}
|
||||||
|
@ -105,7 +108,7 @@ void SkelAnime_DrawLod(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
|
|
||||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, 1, &dList, &pos, &rot, arg)) {
|
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, 1, &dList, &pos, &rot, arg)) {
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (dList != NULL) {
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, dList != NULL, &POLY_OPA_DISP, dList)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, dList);
|
gSPDisplayList(POLY_OPA_DISP++, dList);
|
||||||
}
|
}
|
||||||
|
@ -122,6 +125,8 @@ void SkelAnime_DrawLod(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
|
ClearOverrideSkips();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -158,8 +163,10 @@ void SkelAnime_DrawFlexLimbLod(PlayState* play, s32 limbIndex, void** skeleton,
|
||||||
MATRIX_TOMTX(*mtx);
|
MATRIX_TOMTX(*mtx);
|
||||||
{
|
{
|
||||||
OPEN_DISPS(play->state.gfxCtx);
|
OPEN_DISPS(play->state.gfxCtx);
|
||||||
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, true, &POLY_OPA_DISP, newDList, *mtx)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, *mtx, G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, *mtx, G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
||||||
|
}
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
}
|
}
|
||||||
(*mtx)++;
|
(*mtx)++;
|
||||||
|
@ -231,8 +238,10 @@ void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
if (newDList != NULL) {
|
if (newDList != NULL) {
|
||||||
MATRIX_TOMTX(mtx);
|
MATRIX_TOMTX(mtx);
|
||||||
gDPNoOpString(POLY_OPA_DISP++, "T5ST", 0);
|
gDPNoOpString(POLY_OPA_DISP++, "T5ST", 0);
|
||||||
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, true, &POLY_OPA_DISP, newDList, *mtx)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
||||||
|
}
|
||||||
mtx++;
|
mtx++;
|
||||||
} else if (limbDList != NULL) {
|
} else if (limbDList != NULL) {
|
||||||
MATRIX_TOMTX(mtx);
|
MATRIX_TOMTX(mtx);
|
||||||
|
@ -251,6 +260,8 @@ void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
|
ClearOverrideSkips();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -276,7 +287,7 @@ void SkelAnime_DrawLimbOpa(PlayState* play, s32 limbIndex, void** skeleton, Vec3
|
||||||
|
|
||||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, arg)) {
|
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, arg)) {
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (dList != NULL) {
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, dList != NULL, &POLY_OPA_DISP, dList)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, dList);
|
gSPDisplayList(POLY_OPA_DISP++, dList);
|
||||||
}
|
}
|
||||||
|
@ -358,7 +369,7 @@ void SkelAnime_DrawOpa(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
|
|
||||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, 1, &dList, &pos, &rot, arg)) {
|
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, 1, &dList, &pos, &rot, arg)) {
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (dList != NULL) {
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, dList != NULL, &POLY_OPA_DISP, dList)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, dList);
|
gSPDisplayList(POLY_OPA_DISP++, dList);
|
||||||
}
|
}
|
||||||
|
@ -375,6 +386,8 @@ void SkelAnime_DrawOpa(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
|
ClearOverrideSkips();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -409,8 +422,10 @@ void SkelAnime_DrawFlexLimbOpa(PlayState* play, s32 limbIndex, void** skeleton,
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (newDList != NULL) {
|
if (newDList != NULL) {
|
||||||
MATRIX_TOMTX(*limbMatricies);
|
MATRIX_TOMTX(*limbMatricies);
|
||||||
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, true, &POLY_OPA_DISP, newDList, *limbMatricies)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, *limbMatricies, G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, *limbMatricies, G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
||||||
|
}
|
||||||
(*limbMatricies)++;
|
(*limbMatricies)++;
|
||||||
} else if (limbDList != NULL) {
|
} else if (limbDList != NULL) {
|
||||||
MATRIX_TOMTX(*limbMatricies);
|
MATRIX_TOMTX(*limbMatricies);
|
||||||
|
@ -478,8 +493,10 @@ void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (newDList != NULL) {
|
if (newDList != NULL) {
|
||||||
MATRIX_TOMTX(mtx);
|
MATRIX_TOMTX(mtx);
|
||||||
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, true, &POLY_OPA_DISP, newDList, *mtx)) {
|
||||||
gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_LOAD);
|
gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_LOAD);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
gSPDisplayList(POLY_OPA_DISP++, newDList);
|
||||||
|
}
|
||||||
mtx++;
|
mtx++;
|
||||||
} else if (limbDList != NULL) {
|
} else if (limbDList != NULL) {
|
||||||
MATRIX_TOMTX(mtx);
|
MATRIX_TOMTX(mtx);
|
||||||
|
@ -498,6 +515,8 @@ void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable,
|
||||||
|
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
|
ClearOverrideSkips();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -576,7 +595,7 @@ Gfx* SkelAnime_DrawLimb(PlayState* play, s32 limbIndex, void** skeleton, Vec3s*
|
||||||
|
|
||||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, arg, &gfx)) {
|
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, limbIndex, &dList, &pos, &rot, arg, &gfx)) {
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (dList != NULL) {
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, dList != NULL, &gfx, dList)) {
|
||||||
gSPMatrix(gfx++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
gSPMatrix(gfx++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||||
gSPDisplayList(gfx++, dList);
|
gSPDisplayList(gfx++, dList);
|
||||||
}
|
}
|
||||||
|
@ -634,7 +653,7 @@ Gfx* SkelAnime_Draw(PlayState* play, void** skeleton, Vec3s* jointTable, Overrid
|
||||||
|
|
||||||
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, 1, &dList, &pos, &rot, arg, &gfx)) {
|
if ((overrideLimbDraw == NULL) || !overrideLimbDraw(play, 1, &dList, &pos, &rot, arg, &gfx)) {
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (dList != NULL) {
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, dList != NULL, &gfx, dList)) {
|
||||||
gSPMatrix(gfx++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
gSPMatrix(gfx++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||||
gSPDisplayList(gfx++, dList);
|
gSPDisplayList(gfx++, dList);
|
||||||
}
|
}
|
||||||
|
@ -651,6 +670,8 @@ Gfx* SkelAnime_Draw(PlayState* play, void** skeleton, Vec3s* jointTable, Overrid
|
||||||
|
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
|
||||||
|
ClearOverrideSkips();
|
||||||
|
|
||||||
return gfx;
|
return gfx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -681,8 +702,10 @@ Gfx* SkelAnime_DrawFlexLimb(PlayState* play, s32 limbIndex, void** skeleton, Vec
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (newDList != NULL) {
|
if (newDList != NULL) {
|
||||||
MATRIX_TOMTX(*mtx);
|
MATRIX_TOMTX(*mtx);
|
||||||
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, true, &gfx, newDList, *mtx)) {
|
||||||
gSPMatrix(gfx++, *mtx, G_MTX_LOAD);
|
gSPMatrix(gfx++, *mtx, G_MTX_LOAD);
|
||||||
gSPDisplayList(gfx++, newDList);
|
gSPDisplayList(gfx++, newDList);
|
||||||
|
}
|
||||||
(*mtx)++;
|
(*mtx)++;
|
||||||
} else if (limbDList != NULL) {
|
} else if (limbDList != NULL) {
|
||||||
MATRIX_TOMTX(*mtx);
|
MATRIX_TOMTX(*mtx);
|
||||||
|
@ -746,8 +769,10 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32
|
||||||
Matrix_TranslateRotateZYX(&pos, &rot);
|
Matrix_TranslateRotateZYX(&pos, &rot);
|
||||||
if (newDList != NULL) {
|
if (newDList != NULL) {
|
||||||
MATRIX_TOMTX(mtx);
|
MATRIX_TOMTX(mtx);
|
||||||
|
if (GameInteractor_Should(VB_DRAW_SKEL_LIMB, true, &gfx, newDList, *mtx)) {
|
||||||
gSPMatrix(gfx++, mtx, G_MTX_LOAD);
|
gSPMatrix(gfx++, mtx, G_MTX_LOAD);
|
||||||
gSPDisplayList(gfx++, newDList);
|
gSPDisplayList(gfx++, newDList);
|
||||||
|
}
|
||||||
mtx++;
|
mtx++;
|
||||||
} else if (limbDList != NULL) {
|
} else if (limbDList != NULL) {
|
||||||
MATRIX_TOMTX(mtx);
|
MATRIX_TOMTX(mtx);
|
||||||
|
@ -764,6 +789,8 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32
|
||||||
|
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
|
||||||
|
ClearOverrideSkips();
|
||||||
|
|
||||||
return gfx;
|
return gfx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -1351,6 +1353,8 @@ s32 BossGanondrof_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList,
|
||||||
case 15:
|
case 15:
|
||||||
if ((this->actionFunc == BossGanondrof_Intro) && this->work[GND_MASK_OFF]) {
|
if ((this->actionFunc == BossGanondrof_Intro) && this->work[GND_MASK_OFF]) {
|
||||||
*dList = gPhantomGanonFaceDL;
|
*dList = gPhantomGanonFaceDL;
|
||||||
|
} else {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
}
|
}
|
||||||
rot->y += this->rideRotY[limbIndex];
|
rot->y += this->rideRotY[limbIndex];
|
||||||
rot->z += this->rideRotZ[limbIndex];
|
rot->z += this->rideRotZ[limbIndex];
|
||||||
|
@ -1410,6 +1414,10 @@ s32 BossGanondrof_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 12) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
// IRIS_FOLLOW: gohma looks towards the player (iris rotation)
|
// IRIS_FOLLOW: gohma looks towards the player (iris rotation)
|
||||||
|
@ -1980,6 +1982,7 @@ s32 BossGoma_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f
|
||||||
|
|
||||||
switch (limbIndex) {
|
switch (limbIndex) {
|
||||||
case BOSSGOMA_LIMB_EYE:
|
case BOSSGOMA_LIMB_EYE:
|
||||||
|
SkipOverrideNextLimb();
|
||||||
if (this->eyeState == EYESTATE_IRIS_FOLLOW_BONUS_IFRAMES && this->eyeLidBottomRotX < -0xA8C) {
|
if (this->eyeState == EYESTATE_IRIS_FOLLOW_BONUS_IFRAMES && this->eyeLidBottomRotX < -0xA8C) {
|
||||||
*dList = NULL;
|
*dList = NULL;
|
||||||
} else if (this->invincibilityFrames != 0) {
|
} else if (this->invincibilityFrames != 0) {
|
||||||
|
@ -1992,10 +1995,12 @@ s32 BossGoma_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BOSSGOMA_LIMB_EYE_LID_BOTTOM_ROOT2:
|
case BOSSGOMA_LIMB_EYE_LID_BOTTOM_ROOT2:
|
||||||
|
SkipOverrideNextLimb();
|
||||||
rot->x += this->eyeLidBottomRotX;
|
rot->x += this->eyeLidBottomRotX;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BOSSGOMA_LIMB_EYE_LID_TOP_ROOT2:
|
case BOSSGOMA_LIMB_EYE_LID_TOP_ROOT2:
|
||||||
|
SkipOverrideNextLimb();
|
||||||
rot->x += this->eyeLidTopRotX;
|
rot->x += this->eyeLidTopRotX;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED | ACTOR_FLAG_DRAGGED_BY_HOOKSHOT)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED | ACTOR_FLAG_DRAGGED_BY_HOOKSHOT)
|
||||||
|
|
||||||
#define vParity actionVar
|
#define vParity actionVar
|
||||||
|
@ -2862,6 +2864,11 @@ s32 BossSst_OverrideHeadDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
||||||
rot->z -= 0x200;
|
rot->z -= 0x200;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 7) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
|
@ -3191,6 +3192,10 @@ s32 BossTw_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 14) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3621,6 +3626,10 @@ s32 BossTw_TwinrovaOverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList,
|
||||||
*dList = NULL;
|
*dList = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 34 || limbIndex == 40) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
#define GET_BODY(this) ((BossVa*)(this)->actor.parent)
|
#define GET_BODY(this) ((BossVa*)(this)->actor.parent)
|
||||||
|
@ -3265,6 +3267,7 @@ void BossVa_Draw(Actor* thisx, PlayState* play) {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (!this->isDead) {
|
if (!this->isDead) {
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime,
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime,
|
||||||
BossVa_BariOverrideLimbDraw, BossVa_BariPostLimbDraw, this);
|
BossVa_BariOverrideLimbDraw, BossVa_BariPostLimbDraw, this);
|
||||||
Collider_UpdateSpheres(0, &this->colliderSph);
|
Collider_UpdateSpheres(0, &this->colliderSph);
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -533,6 +535,7 @@ void DoorKiller_DrawDoor(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
Gfx_SetupDL_37Opa(play->state.gfxCtx);
|
Gfx_SetupDL_37Opa(play->state.gfxCtx);
|
||||||
DoorKiller_SetTexture(&this->actor, play);
|
DoorKiller_SetTexture(&this->actor, play);
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, NULL, NULL);
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_CAN_PRESS_SWITCH)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_CAN_PRESS_SWITCH)
|
||||||
|
|
||||||
void EnAm_Init(Actor* thisx, PlayState* play);
|
void EnAm_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -978,6 +980,7 @@ void EnAm_Draw(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, this->textureBlend);
|
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, this->textureBlend);
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnAm_PostLimbDraw,
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnAm_PostLimbDraw,
|
||||||
this);
|
this);
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||||
#include "objects/object_gi_nuts/object_gi_nuts.h"
|
#include "objects/object_gi_nuts/object_gi_nuts.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
void EnArrow_Init(Actor* thisx, PlayState* play);
|
void EnArrow_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -501,6 +503,7 @@ void EnArrow_Draw(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
if (this->actor.params <= ARROW_0E) {
|
if (this->actor.params <= ARROW_0E) {
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawLod(play, this->skelAnime.skeleton, this->skelAnime.jointTable, NULL, NULL, this,
|
SkelAnime_DrawLod(play, this->skelAnime.skeleton, this->skelAnime.jointTable, NULL, NULL, this,
|
||||||
(this->actor.projectedPos.z < MREG(95)) ? 0 : 1);
|
(this->actor.projectedPos.z < MREG(95)) ? 0 : 1);
|
||||||
} else if (this->actor.speedXZ != 0.0f) {
|
} else if (this->actor.speedXZ != 0.0f) {
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
void EnBigokuta_Init(Actor* thisx, PlayState* play);
|
void EnBigokuta_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -868,6 +870,11 @@ s32 EnBigokuta_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec
|
||||||
Matrix_Scale(1.0f, 1.25f - temp_f0, 1.25f - temp_f0, MTXMODE_APPLY);
|
Matrix_Scale(1.0f, 1.25f - temp_f0, 1.25f - temp_f0, MTXMODE_APPLY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 15 || limbIndex == 16 || limbIndex == CVarGetInteger("gMyThing", 0)) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#include "objects/object_haka_door/object_haka_door.h"
|
#include "objects/object_haka_door/object_haka_door.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
||||||
|
|
||||||
#define DOOR_AJAR_SLAM_RANGE 120.0f
|
#define DOOR_AJAR_SLAM_RANGE 120.0f
|
||||||
|
@ -339,6 +341,7 @@ void EnDoor_Draw(Actor* thisx, PlayState* play) {
|
||||||
OPEN_DISPS(play->state.gfxCtx);
|
OPEN_DISPS(play->state.gfxCtx);
|
||||||
|
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime,
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime,
|
||||||
EnDoor_OverrideLimbDraw,
|
EnDoor_OverrideLimbDraw,
|
||||||
NULL, &this->actor);
|
NULL, &this->actor);
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#include "soh/Enhancements/randomizer/adult_trade_shuffle.h"
|
#include "soh/Enhancements/randomizer/adult_trade_shuffle.h"
|
||||||
#include "soh/OTRGlobals.h"
|
#include "soh/OTRGlobals.h"
|
||||||
|
|
||||||
|
#include "soh_assets.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
void EnGo_Init(Actor* thisx, PlayState* play);
|
void EnGo_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -1055,10 +1057,15 @@ void EnGo_DrawCurledUp(EnGo* this, PlayState* play) {
|
||||||
Matrix_Push();
|
Matrix_Push();
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
|
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
if (CVarGetInteger("gHoliday.Archez.SnowGolems", 0)) {
|
||||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
Matrix_Translate(0.0f, 10.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(1.75f, 1.75f, 1.75f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, gSnowballDL);
|
||||||
|
} else {
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00BD80);
|
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00BD80);
|
||||||
|
}
|
||||||
|
|
||||||
Matrix_MultVec3f(&D_80A41BB4, &this->actor.focus.pos);
|
Matrix_MultVec3f(&D_80A41BB4, &this->actor.focus.pos);
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
@ -1075,9 +1082,15 @@ void EnGo_DrawRolling(EnGo* this, PlayState* play) {
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
Matrix_RotateZYX((s16)(play->state.frames * ((s16)this->actor.speedXZ * 1400)), 0, this->actor.shape.rot.z,
|
Matrix_RotateZYX((s16)(play->state.frames * ((s16)this->actor.speedXZ * 1400)), 0, this->actor.shape.rot.z,
|
||||||
MTXMODE_APPLY);
|
MTXMODE_APPLY);
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
if (CVarGetInteger("gHoliday.Archez.SnowGolems", 0)) {
|
||||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
Matrix_Translate(0.0f, -10.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(1.75f, 1.75f, 1.75f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, gSnowballDL);
|
||||||
|
} else {
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00C140);
|
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00C140);
|
||||||
|
}
|
||||||
Matrix_MultVec3f(&D_80A41BC0, &this->actor.focus.pos);
|
Matrix_MultVec3f(&D_80A41BC0, &this->actor.focus.pos);
|
||||||
Matrix_Pop();
|
Matrix_Pop();
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
|
#include "soh_assets.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2010,9 +2012,15 @@ s32 EnGo2_DrawCurledUp(EnGo2* this, PlayState* play) {
|
||||||
|
|
||||||
OPEN_DISPS(play->state.gfxCtx);
|
OPEN_DISPS(play->state.gfxCtx);
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
if (CVarGetInteger("gHoliday.Archez.SnowGolems", 0)) {
|
||||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
Matrix_Translate(0.0f, 10.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(1.75f, 1.75f, 1.75f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, gSnowballDL);
|
||||||
|
} else {
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00BD80);
|
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00BD80);
|
||||||
|
}
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
Matrix_MultVec3f(&D_80A48554, &this->actor.focus.pos);
|
Matrix_MultVec3f(&D_80A48554, &this->actor.focus.pos);
|
||||||
|
|
||||||
|
@ -2028,9 +2036,17 @@ s32 EnGo2_DrawRolling(EnGo2* this, PlayState* play) {
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
speedXZ = this->actionFunc == EnGo2_ReverseRolling ? 0.0f : this->actor.speedXZ;
|
speedXZ = this->actionFunc == EnGo2_ReverseRolling ? 0.0f : this->actor.speedXZ;
|
||||||
Matrix_RotateZYX((play->state.frames * ((s16)speedXZ * 1400)), 0, this->actor.shape.rot.z, MTXMODE_APPLY);
|
Matrix_RotateZYX((play->state.frames * ((s16)speedXZ * 1400)), 0, this->actor.shape.rot.z, MTXMODE_APPLY);
|
||||||
|
if (CVarGetInteger("gHoliday.Archez.SnowGolems", 0)) {
|
||||||
|
Matrix_Translate(0.0f, -10.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
Matrix_Scale(1.75f, 1.75f, 1.75f, MTXMODE_APPLY);
|
||||||
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||||
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
gSPDisplayList(POLY_OPA_DISP++, gSnowballDL);
|
||||||
|
} else {
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00C140);
|
gSPDisplayList(POLY_OPA_DISP++, gGoronDL_00C140);
|
||||||
|
}
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
Matrix_MultVec3f(&D_80A48560, &this->actor.focus.pos);
|
Matrix_MultVec3f(&D_80A48560, &this->actor.focus.pos);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#include "z_en_hata.h"
|
#include "z_en_hata.h"
|
||||||
#include "objects/object_hata/object_hata.h"
|
#include "objects/object_hata/object_hata.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS 0
|
#define FLAGS 0
|
||||||
|
|
||||||
void EnHata_Init(Actor* thisx, PlayState* play);
|
void EnHata_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -130,6 +132,11 @@ s32 EnHata_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
||||||
rot->y += limbs[limbIndex].y;
|
rot->y += limbs[limbIndex].y;
|
||||||
rot->z += limbs[limbIndex].z;
|
rot->z += limbs[limbIndex].z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == FLAGPOLE_LIMB_POLE_BASE || limbIndex == FLAGPOLE_LIMB_POLE) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include "vt.h"
|
#include "vt.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
||||||
|
|
||||||
void EnHeishi1_Init(Actor* thisx, PlayState* play);
|
void EnHeishi1_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -498,6 +500,10 @@ s32 EnHeishi1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
|
||||||
rot->x += (s16)this->headAngle;
|
rot->x += (s16)this->headAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 15) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
#include "overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h"
|
#include "overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
||||||
|
|
||||||
void EnHeishi2_Init(Actor* thisx, PlayState* play);
|
void EnHeishi2_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -817,6 +819,10 @@ s32 EnHeishi2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 15) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include "vt.h"
|
#include "vt.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS 0
|
#define FLAGS 0
|
||||||
|
|
||||||
void EnHeishi3_Init(Actor* thisx, PlayState* play);
|
void EnHeishi3_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -245,6 +247,10 @@ s32 EnHeishi3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
|
||||||
rot->z += this->unk_264;
|
rot->z += this->unk_264;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 15) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
#include "soh/OTRGlobals.h"
|
#include "soh/OTRGlobals.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
||||||
|
|
||||||
void EnHeishi4_Init(Actor* thisx, PlayState* play);
|
void EnHeishi4_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -414,6 +416,11 @@ s32 EnHeishi_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f
|
||||||
rot->x += this->unk_260.y;
|
rot->x += this->unk_260.y;
|
||||||
rot->z += this->unk_260.z;
|
rot->z += this->unk_260.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 15) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
#define FLAGS ACTOR_FLAG_UPDATE_WHILE_CULLED
|
||||||
|
|
||||||
typedef void (*EnIkDrawFunc)(struct EnIk*, PlayState*);
|
typedef void (*EnIkDrawFunc)(struct EnIk*, PlayState*);
|
||||||
|
@ -846,6 +848,11 @@ s32 EnIk_OverrideLimbDraw3(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||||
*dList = NULL;
|
*dList = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 17) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1193,6 +1200,10 @@ s32 EnIk_OverrideLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == 17) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1359,6 +1370,7 @@ s32 EnIk_OverrideLimbDraw1(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||||
if (curFrame < 120.0f) {
|
if (curFrame < 120.0f) {
|
||||||
*dList = NULL;
|
*dList = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
func_80A76E2C(this, play, pos);
|
func_80A76E2C(this, play, pos);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -340,6 +342,7 @@ void EnJj_Draw(Actor* thisx, PlayState* play2) {
|
||||||
Matrix_Translate(0.0f, (cosf(this->skelAnime.curFrame * (M_PI / 41.0f)) * 10.0f) - 10.0f, 0.0f, MTXMODE_APPLY);
|
Matrix_Translate(0.0f, (cosf(this->skelAnime.curFrame * (M_PI / 41.0f)) * 10.0f) - 10.0f, 0.0f, MTXMODE_APPLY);
|
||||||
Matrix_Scale(10.0f, 10.0f, 10.0f, MTXMODE_APPLY);
|
Matrix_Scale(10.0f, 10.0f, 10.0f, MTXMODE_APPLY);
|
||||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(eyeTextures[this->eyeIndex]));
|
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(eyeTextures[this->eyeIndex]));
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnJj_PostLimbDraw, this);
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnJj_PostLimbDraw, this);
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This actor can have three behaviors:
|
* This actor can have three behaviors:
|
||||||
* - "Spear Guard" (variable -1): uses a spear, walks around home point, charges player if too close
|
* - "Spear Guard" (variable -1): uses a spear, walks around home point, charges player if too close
|
||||||
|
@ -1551,6 +1553,22 @@ void EnMb_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s32 EnMb_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
|
||||||
|
EnMb* this = (EnMb*)thisx;
|
||||||
|
|
||||||
|
if (this->actor.params == ENMB_TYPE_CLUB) {
|
||||||
|
if (limbIndex == ENMB_LIMB_LHAND) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (limbIndex == ENMB_LIMB_RHAND) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void EnMb_Draw(Actor* thisx, PlayState* play) {
|
void EnMb_Draw(Actor* thisx, PlayState* play) {
|
||||||
static Vec3f frontShieldingTriModel0[] = {
|
static Vec3f frontShieldingTriModel0[] = {
|
||||||
{ 4000.0f, 7000.0f, 3500.0f },
|
{ 4000.0f, 7000.0f, 3500.0f },
|
||||||
|
@ -1570,7 +1588,7 @@ void EnMb_Draw(Actor* thisx, PlayState* play) {
|
||||||
EnMb* this = (EnMb*)thisx;
|
EnMb* this = (EnMb*)thisx;
|
||||||
|
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, NULL, EnMb_PostLimbDraw, thisx);
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnMb_OverrideLimbDraw, EnMb_PostLimbDraw, thisx);
|
||||||
|
|
||||||
if (thisx->params != ENMB_TYPE_CLUB) {
|
if (thisx->params != ENMB_TYPE_CLUB) {
|
||||||
if (this->attack > ENMB_ATTACK_NONE) {
|
if (this->attack > ENMB_ATTACK_NONE) {
|
||||||
|
|
|
@ -219,11 +219,11 @@ void EnSnowball_Draw(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
Matrix_RotateZYX(this->sRot, thisx->world.rot.y, 0, MTXMODE_APPLY);
|
Matrix_RotateZYX(this->sRot, thisx->world.rot.y, 0, MTXMODE_APPLY);
|
||||||
|
|
||||||
Matrix_Translate(0.0f, 7600.0f, -148.649f, MTXMODE_APPLY);
|
Matrix_Translate(0.0f, 5.0f, 0.0f, MTXMODE_APPLY);
|
||||||
Matrix_Scale(4.844f, 4.844f, 4.844f, MTXMODE_APPLY);
|
Matrix_Scale(0.5f, 0.5f, 0.5f, MTXMODE_APPLY);
|
||||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
|
||||||
gSPDisplayList(POLY_OPA_DISP++, gLinkAdultPompomDL);
|
gSPDisplayList(POLY_OPA_DISP++, gSnowballDL);
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx);
|
CLOSE_DISPS(play->state.gfxCtx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED)
|
||||||
|
|
||||||
void EnTest_Init(Actor* thisx, PlayState* play);
|
void EnTest_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -1845,6 +1847,10 @@ s32 EnTest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
||||||
*dList = NULL;
|
*dList = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (limbIndex == STALFOS_LIMB_SWORD || limbIndex == STALFOS_LIMB_SHIELD) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "objects/object_torch2/object_torch2.h"
|
#include "objects/object_torch2/object_torch2.h"
|
||||||
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED | ACTOR_FLAG_DRAW_WHILE_CULLED)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -772,6 +774,10 @@ s32 EnTorch2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f
|
||||||
Gfx** gfx) {
|
Gfx** gfx) {
|
||||||
Player* this = (Player*)thisx;
|
Player* this = (Player*)thisx;
|
||||||
|
|
||||||
|
if (limbIndex == PLAYER_LIMB_L_HAND || limbIndex == PLAYER_LIMB_R_HAND) {
|
||||||
|
SkipOverrideNextLimb();
|
||||||
|
}
|
||||||
|
|
||||||
return Player_OverrideLimbDrawGameplayCommon(play, limbIndex, dList, pos, rot, &this->actor);
|
return Player_OverrideLimbDrawGameplayCommon(play, limbIndex, dList, pos, rot, &this->actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_UPDATE_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_UPDATE_WHILE_CULLED)
|
||||||
|
|
||||||
void EnVm_Init(Actor* thisx, PlayState* play);
|
void EnVm_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -544,6 +546,7 @@ void EnVm_Draw(Actor* thisx, PlayState* play2) {
|
||||||
|
|
||||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||||
|
SkipOverrideNextSkeleton();
|
||||||
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnVm_OverrideLimbDraw,
|
SkelAnime_DrawSkeletonOpa(play, &this->skelAnime, EnVm_OverrideLimbDraw,
|
||||||
EnVm_PostLimbDraw, this);
|
EnVm_PostLimbDraw, this);
|
||||||
actorPos = this->actor.world.pos;
|
actorPos = this->actor.world.pos;
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#include "soh_assets.h"
|
#include "soh_assets.h"
|
||||||
#include "soh/ResourceManagerHelpers.h"
|
#include "soh/ResourceManagerHelpers.h"
|
||||||
|
|
||||||
|
#include "soh/Enhancements/Holiday/Archez.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED)
|
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_WHILE_CULLED)
|
||||||
|
|
||||||
void EnZf_Init(Actor* thisx, PlayState* play);
|
void EnZf_Init(Actor* thisx, PlayState* play);
|
||||||
|
@ -2132,11 +2134,13 @@ s32 EnZf_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
|
||||||
rot->y -= this->headRot;
|
rot->y -= this->headRot;
|
||||||
break;
|
break;
|
||||||
case ENZF_LIMB_SWORD:
|
case ENZF_LIMB_SWORD:
|
||||||
|
SkipOverrideNextLimb();
|
||||||
if (this->swordSheathed) {
|
if (this->swordSheathed) {
|
||||||
*dList = gZfEmptyHandDL;
|
*dList = gZfEmptyHandDL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ENZF_LIMB_SCABBARD:
|
case ENZF_LIMB_SCABBARD:
|
||||||
|
SkipOverrideNextLimb();
|
||||||
if (this->swordSheathed) {
|
if (this->swordSheathed) {
|
||||||
*dList = gZfSheathedSwordDL;
|
*dList = gZfSheathedSwordDL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue