diff --git a/graphics/Achievements/todo.txt b/graphics/Achievements/todo.txt index 1d2554eca..a1c2645db 100644 --- a/graphics/Achievements/todo.txt +++ b/graphics/Achievements/todo.txt @@ -1,28 +1,28 @@ -allitems -allkills -allsecrets -anone -balls -bonk -bossdash -brake -clonk -conga -dosh -ezkill -flight -friend -gib -jump -lead -ligma -mega -oneguy -onestanding -oopsie -reflect -shame -sneeze -tele -thruwall -wantdie +allitems (get 100% items in X maps) +allkills (get 100% kills in X maps) +allsecrets (get 100% secrets in X maps) +anone (use mykradvo against just one non-boss enemy) +balls (land lead ball crits X times) +bonk (bump against walls X times) +bossdash (kill a boss with a dash attack) +brake (use up entire fuel in a single dash X times) +clonk (kill boss with a lead ball crit) +conga (hit X enemies at the same time with one silver bullet) +dosh (have a shitload of money) +ezkill (kill X enemies with Ynykron) +flight (send enemy flying X thousand units away) +friend (befriend cacos) +gib (gib a lot of enemies) +jump (walljump a lot) +lead (eviscerator shell hit from X units away) +ligma (kill endgame boss with ynykron) +mega (million kills) +oneguy (kill one non-boss enemy with a single ynykron shot) +onestanding (leave just one enemy alive) +oopsie (kill yourself with ynykron) +reflect (kill with parried projectiles) +shame (cough in the general direction of a boss until it dies) +sneeze (cough at X enemies until death) +tele (teleport bread) +thruwall (hit X times through wall with silver bullet) +wantdie (beat single map in nightmare without dying) diff --git a/language.version b/language.version index 69bcca10c..144a7fe0a 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r423 \cu(Thu 1 Apr 15:20:39 CEST 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r423 \cu(2021-04-01 15:20:39)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r424 \cu(Fri 2 Apr 14:09:11 CEST 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r424 \cu(2021-04-02 14:09:11)\c-"; diff --git a/zscript/utility/swwm_coordutil.zsc b/zscript/utility/swwm_coordutil.zsc index 0e750ecec..500426c57 100644 --- a/zscript/utility/swwm_coordutil.zsc +++ b/zscript/utility/swwm_coordutil.zsc @@ -1,16 +1,35 @@ /* Coordinate Utility helper class. - (C)2018 Marisa Kirisame, UnSX Team. - Released under the GNU Lesser General Public License version 3 (or later). - See https://www.gnu.org/licenses/lgpl-3.0.txt for its terms. + Reproduces the old UnrealScript Get(Un)Axes functions, providing XYZ axis + vectors relative to an euler rotation (defaults to left-handed coords). + + Copyright (c)2018-2021 Marisa Kirisame, UnSX Team + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. */ Class swwm_CoordUtil { // In Tim Sweeney's own words: "transform by a pitch-yaw-roll rotation" - static Vector3, Vector3, Vector3 GetUnAxes( double pitch, double yaw, double roll ) + static Vector3, Vector3, Vector3 GetUnAxes( double pitch, double yaw, double roll, bool rhand = false ) { - Vector3 x = (1,0,0), y = (0,-1,0), z = (0,0,1); // y inverted for left-handed result + Vector3 x = (1,0,0), y = (0,rhand?1:-1,0), z = (0,0,1); Vector3 a, b, c; // pitch and roll in gzdoom work in reverse compared to UE pitch = -pitch; @@ -40,9 +59,9 @@ Class swwm_CoordUtil } // In Tim Sweeney's own words: "detransform by a pitch-yaw-roll rotation" - static Vector3, Vector3, Vector3 GetAxes( double pitch, double yaw, double roll ) + static Vector3, Vector3, Vector3 GetAxes( double pitch, double yaw, double roll, bool rhand = false ) { - Vector3 x = (1,0,0), y = (0,-1,0), z = (0,0,1); // y inverted for left-handed result + Vector3 x = (1,0,0), y = (0,rhand?1:-1,0), z = (0,0,1); Vector3 a, b, c; // pitch and roll in gzdoom work in reverse compared to UE pitch = -pitch; diff --git a/zscript/utility/swwm_quaternion.zsc b/zscript/utility/swwm_quaternion.zsc index 6ec04678e..64b8267cc 100644 --- a/zscript/utility/swwm_quaternion.zsc +++ b/zscript/utility/swwm_quaternion.zsc @@ -1,8 +1,27 @@ /* Quaternion math helper class. - (C)2018 Marisa Kirisame, UnSX Team. - Released under the GNU Lesser General Public License version 3 (or later). - See https://www.gnu.org/licenses/lgpl-3.0.txt for its terms. + Provides only the bare minimum needed to implement 6DOF functionality. For a + more extensive implementation, please refer to Gutamatics. + + Copyright (c)2018-2021 Marisa Kirisame, UnSX Team + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. */ Class swwm_Quat @@ -89,9 +108,8 @@ Class swwm_Quat return pitch, yaw, roll; } - swwm_Quat qmul( swwm_Quat q ) + swwm_Quat qmul( swwm_Quat q ) const { - return swwm_Quat.create(w*q.w-x*q.x-y*q.y-z*q.z,w*q.x+x*q.w+y*q.z-z - *q.y,w*q.y+y*q.w+z*q.x-x*q.z,w*q.z+z*q.w+x*q.y-y*q.x); + return swwm_Quat.create(w*q.w-x*q.x-y*q.y-z*q.z,w*q.x+x*q.w+y*q.z-z*q.y,w*q.y+y*q.w+z*q.x-x*q.z,w*q.z+z*q.w+x*q.y-y*q.x); } }