diff --git a/ExtractUserdata.lua b/ExtractUserdata.lua index 0074aaa84add3a90bf30b2cc9caf2a1cf98362e6..ab054fe28c5a80f63ca167931af4b09efb8b8c0e 100644 --- a/ExtractUserdata.lua +++ b/ExtractUserdata.lua @@ -22,16 +22,19 @@ local descriptions = { local enumTypes = { AST_ = 'integer', FF_ = 'ffloorflags_t', + MSF_ = 'sectorflags_t', MT_ = 'mobjtype_t', PA_ = 'playeranim_t', PF_ = 'playerflags_t', PST_ = 'playerstate_t', ROTAXIS_ = 'rotaxis_t', S_ = 'statenum_t', + SD_ = 'sectordamage_t', SF_ = 'skinflags_t', sfx_ = 'soundnum_t', SKINCOLOR_ = 'skincolornum_t', SPR_ = 'spritenum_t', + SSF_ = 'sectorspecialflags_t', } local doc = {} diff --git a/wiki/Constants.txt b/wiki/Constants.txt index 697bc00ab765ffd2513535e7120b206f149fb4b3..4246679d4d110992a8b14fd83bb041f11f1dbeba 100644 --- a/wiki/Constants.txt +++ b/wiki/Constants.txt @@ -1958,6 +1958,120 @@ Note that bit-shifting an integer by <code>FRACBITS</code> in either direction i |{{todo|Add a description}} |} +==={{anchor|Sector flags|MSF_}} Sector flags (<code>MSF_*</code>)=== +{| class="wikitable" +!Decimal +!Hexadecimal +!Flag name +!Description +|- +!1 +!<code>0x1</code> +|<code>MSF_FLIPSPECIAL_FLOOR</code> +|{{todo|Add a description}} +|- +!2 +!<code>0x2</code> +|<code>MSF_FLIPSPECIAL_CEILING</code> +|{{todo|Add a description}} +|- +!4 +!<code>0x4</code> +|<code>MSF_FLIPSPECIAL_BOTH</code> +|{{todo|Add a description}} +|- +!8 +!<code>0x8</code> +|<code>MSF_TRIGGERSPECIAL_TOUCH</code> +|{{todo|Add a description}} +|- +!16 +!<code>0x10</code> +|<code>MSF_TRIGGERSPECIAL_HEADBUMP</code> +|{{todo|Add a description}} +|- +!32 +!<code>0x20</code> +|<code>MSF_TRIGGERLINE_PLANE</code> +|{{todo|Add a description}} +|- +!64 +!<code>0x40</code> +|<code>MSF_TRIGGERLINE_MOBJ</code> +|{{todo|Add a description}} +|- +!128 +!<code>0x80</code> +|<code>MSF_INVERTPRECIP</code> +|{{todo|Add a description}} +|- +!256 +!<code>0x100</code> +|<code>MSF_GRAVITYFLIP</code> +|{{todo|Add a description}} +|- +!512 +!<code>0x200</code> +|<code>MSF_HEATWAVE</code> +|{{todo|Add a description}} +|- +!1024 +!<code>0x400</code> +|<code>MSF_NOCLIPCAMERA</code> +|{{todo|Add a description}} +|} + +==={{anchor|Sector damage types|SD_}} Sector damage types (<code>SD_*</code>)=== +{| class="wikitable" +!Value +!Flag name +!Description +|- +!0 +|<code>SD_GENERIC</code> +|{{todo|Add a description}} +|- +!1 +|<code>SD_GENERIC</code> +|{{todo|Add a description}} +|- +!2 +|<code>SD_WATER</code> +|{{todo|Add a description}} +|- +!3 +|<code>SD_FIRE</code> +|{{todo|Add a description}} +|- +!4 +|<code>SD_LAVA</code> +|{{todo|Add a description}} +|- +!5 +|<code>SD_ELECTRIC</code> +|{{todo|Add a description}} +|- +!6 +|<code>SD_SPIKE</code> +|{{todo|Add a description}} +|- +!7 +|<code>SD_DEATHPITTILT</code> +|{{todo|Add a description}} +|- +!8 +|<code>SD_DEATHPITNOTILT</code> +|{{todo|Add a description}} +|- +!9 +|<code>SD_INSTAKILL</code> +|{{todo|Add a description}} +|- +!10 +|<code>SD_SPECIALSTAGE</code> +|{{todo|Add a description}} +|} + ==Other== ==={{anchor|Emblem flags|GE_|ME_}} Emblem flags (<code>GE_*/ME_*</code>)=== {{see also|Custom unlockables and emblems}} diff --git a/wiki/Functions.txt b/wiki/Functions.txt index c9bde75d653537b0d90cdeec70180432058e0c56..4a6c4f9ffba79fd61d9cd1409ad7e28d27378691 100644 --- a/wiki/Functions.txt +++ b/wiki/Functions.txt @@ -189,91 +189,91 @@ The <code>start</code> argument is optional and defaults to 0, with the exceptio !Return value(s) !Description |- -|{{anchor|ease.linear}}<code>'''ease.linear'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.linear}}<code>'''ease.linear'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |Linear interpolation. The movement speed will be constant throughout the entire duration of the movement. |- -|{{anchor|ease.insine}}<code>'''ease.insine'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.insine}}<code>'''ease.insine'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInSine InSine] function. Movement starts slow and accelerates in a sine function rate. |- -|{{anchor|ease.outsine}}<code>'''ease.outsine'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.outsine}}<code>'''ease.outsine'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeOutSine OutSine] function. Movement starts fast and decelerates in a sine function rate. |- -|{{anchor|ease.inoutsine}}<code>'''ease.inoutsine'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inoutsine}}<code>'''ease.inoutsine'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInOutSine InOutSine] function. Movement starts slow, accelerates and decelerates again near the end, in a sine function rate. |- -|{{anchor|ease.inquad}}<code>'''ease.inquad'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inquad}}<code>'''ease.inquad'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInQuad InQuad] function. Movement starts slow and accelerates in a quadratic function rate. |- -|{{anchor|ease.outquad}}<code>'''ease.outquad'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.outquad}}<code>'''ease.outquad'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeOutQuad OutQuad] function. Movement starts fast and decelerates in a quadratic function rate. |- -|{{anchor|ease.inoutquad}}<code>'''ease.inoutquad'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inoutquad}}<code>'''ease.inoutquad'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInOutQuad InOutQuad] function. Movement starts slow, accelerates and decelerates again near the end, in a quadratic function rate. |- -|{{anchor|ease.incubic}}<code>'''ease.incubic'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.incubic}}<code>'''ease.incubic'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInCubic InCubic] function. Movement starts slow and accelerates in a cubic function rate. |- -|{{anchor|ease.outcubic}}<code>'''ease.outcubic'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.outcubic}}<code>'''ease.outcubic'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeOutCubic OutCubic] function. Movement starts fast and decelerates in a cubic function rate. |- -|{{anchor|ease.inoutcubic}}<code>'''ease.inoutcubic'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inoutcubic}}<code>'''ease.inoutcubic'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInOutCubic InOutCubic] function. Movement starts slow, accelerates and decelerates again near the end, in a cubic function rate. |- -|{{anchor|ease.inquart}}<code>'''ease.inquart'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inquart}}<code>'''ease.inquart'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInQuart InQuart] function. Movement starts slow and accelerates in a quartic function rate. |- -|{{anchor|ease.outquart}}<code>'''ease.outquart'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.outquart}}<code>'''ease.outquart'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeOutQuart OutQuart] function. Movement starts fast and decelerates in a quartic function rate. |- -|{{anchor|ease.inoutquart}}<code>'''ease.inoutquart'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inoutquart}}<code>'''ease.inoutquart'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInOutQuart InOutQuart] function. Movement starts slow, accelerates and decelerates again near the end, in a quartic function rate. |- -|{{anchor|ease.inquint}}<code>'''ease.inquint'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inquint}}<code>'''ease.inquint'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInQuint InQuint] function. Movement starts slow and accelerates in a quintic function rate. |- -|{{anchor|ease.outquint}}<code>'''ease.outquint'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.outquint}}<code>'''ease.outquint'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeOutQuint OutQuint] function. Movement starts fast and decelerates in a quintic function rate. |- -|{{anchor|ease.inoutquint}}<code>'''ease.inoutquint'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inoutquint}}<code>'''ease.inoutquint'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInOutQuint InOutQuint] function. Movement starts slow, accelerates and decelerates again near the end, in a quintic function rate. |- -|{{anchor|ease.inexpo}}<code>'''ease.inexpo'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inexpo}}<code>'''ease.inexpo'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInExpo InExpo] function. Movement starts slow and accelerates in an exponential function rate. |- -|{{anchor|ease.outexpo}}<code>'''ease.outexpo'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.outexpo}}<code>'''ease.outexpo'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeOutExpo OutExpo] function. Movement starts fast and decelerates in an exponential function rate. |- -|{{anchor|ease.inoutexpo}}<code>'''ease.inoutexpo'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end])</code> +|{{anchor|ease.inoutexpo}}<code>'''ease.inoutexpo'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish])</code> |fixed_t |[https://easings.net/#easeInOutExpo InOutExpo] function. Movement starts slow, accelerates and decelerates again near the end, in an exponential function rate. |- -|{{anchor|ease.inback}}<code>'''ease.inback'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end, [''fixed_t'' param]])</code> +|{{anchor|ease.inback}}<code>'''ease.inback'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish, [''fixed_t'' param]])</code> |fixed_t |[https://easings.net/#easeInBack InBack] function. Movement initially recoils towards <code>param</code>, then accelerates towards the end. |- -|{{anchor|ease.outback}}<code>'''ease.outback'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end, [''fixed_t'' param]])</code> +|{{anchor|ease.outback}}<code>'''ease.outback'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish, [''fixed_t'' param]])</code> |fixed_t |[https://easings.net/#easeOutBack OutBack] function. Movement decelerates towards the end and recoils towards <code>param</code>. |- -|{{anchor|ease.inoutback}}<code>'''ease.inoutback'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' end, [''fixed_t'' param]])</code> +|{{anchor|ease.inoutback}}<code>'''ease.inoutback'''(''fixed_t'' t, [[''fixed_t'' start], ''fixed_t'' finish, [''fixed_t'' param]])</code> |fixed_t |[https://easings.net/#easeInOutBack InOutBack] function. Movement recoils towards <code>param</code> both at the start and the end. |} @@ -991,7 +991,7 @@ These are functions included in SRB2's input library. They relate to client-side |- |{{anchor|abs}}<code>'''input.setMouseGrab'''(''boolean'' grab)</code> |nil -|Sets whether the first player's mouse is grabbed (locked and invisible) by the window. The mouse is automatically grabbed by the game in situations where it deems appropriate, so in order to keep the mouse ungrabbed this function may need to be called constantly. +|Sets whether the first player's mouse is grabbed (locked and invisible) by the window. |- |{{anchor|abs}}<code>'''input.getCursorPosition'''()</code> |int, int @@ -1486,7 +1486,7 @@ Note that this function does not actually affect <code>''player''.rings</code>; |- |{{anchor|P_PlayerWeaponPanelOrAmmoBurst}}<code>'''P_PlayerWeaponPanelOrAmmoBurst'''(''[[player_t]]'' player)</code> |nil -|TODO +|Spills weapon panels/ammo depending of what <code>player</code> is carrying, but does not throw back <code>player</code>. If <code>player</code> doesn't have a weapon but it's ammo, then the ammo is spilled instead. Otherwise, if <code>player</code> does have the weapon then the weapon is spilled. Unlike the rings in <code>P_PlayerRingBurst</code>, the player will actually ''lose'' the weapon panels/ammo spilled by this function. |- |{{anchor|P_PlayerEmeraldBurst}}<code>'''P_PlayerEmeraldBurst'''(''[[player_t]]'' player, [''boolean'' toss?])</code> |nil @@ -1782,35 +1782,35 @@ Notes: |- |{{anchor|P_RailThinker}}<code>'''P_RailThinker'''(''[[mobj_t]]'' mobj)</code> |boolean -|{{todo|Add a description}} +|Used by the Rail Ring. Instantly moves <code>mobj</code> if it has a type of momentum, returns <code>true</code> if the movement has failed or <code>mobj</code> was removed by movement (like death pit, missile hits wall, etc.). |- |{{anchor|P_XYMovement}}<code>'''P_XYMovement'''(''[[mobj_t]]'' mobj)</code> |nil -|{{todo|Add a description}} +|Moves <code>mobj</code> through the X/Y coordinate if it has momentum. |- |{{anchor|P_RingXYMovement}}<code>'''P_RingXYMovement'''(''[[mobj_t]]'' mobj)</code> |nil -|{{todo|Add a description}} +|Used by rings. Moves <code>mobj</code> through the X/Y coordinate if it has momentum but it will always slides to the walls if it collides with one. |- |{{anchor|P_SceneryXYMovement}}<code>'''P_SceneryXYMovement'''(''[[mobj_t]]'' mobj)</code> |nil -|{{todo|Add a description}} +|Used by scenery objects. Moves <code>mobj</code> through the X/Y coordinate if it has momentum but it will always slides to the walls if it collides with one and it does not have friction on the air or with the flag <code>MF_NOCLIPHEIGHT</code>. |- |{{anchor|P_ZMovement}}<code>'''P_ZMovement'''(''[[mobj_t]]'' mobj)</code> |boolean -|{{todo|Add a description}} +|Moves <code>mobj</code> through the Z coordinate if it has momentum, returns <code>false</code> if <code>mobj</code> was killed/exploded/removed, <code>true</code> otherwise. |- |{{anchor|P_RingZMovement}}<code>'''P_RingZMovement'''(''[[mobj_t]]'' mobj)</code> |nil -|{{todo|Add a description}} +|Used by rings. Moves <code>mobj</code> through the Z coordinate if it has momentum. It has special functionallity to avoid getting clipped through FOFs |- |{{anchor|P_SceneryZMovement}}<code>'''P_SceneryZMovement'''(''[[mobj_t]]'' mobj)</code> |boolean -|{{todo|Add a description}} +|Used by scenery objects. Moves <code>mobj</code> through the Z coordinate if it has momentum, returns <code>false</code> if <code>mobj</code> was killed/exploded/removed, <code>true</code> otherwise. It has special functionallity to avoid getting clipped through FOFs, checking for gravity, collide with death pits, and ajusting with the floors/ceilling |- |{{anchor|P_PlayerZMovement}}<code>'''P_PlayerZMovement'''(''[[mobj_t]]'' mobj)</code> |nil -|{{todo|Add a description}} +|Used by players. Moves <code>mobj</code> through the Z coordinate if it has momentum. It has special functionallity to avoid getting clipped through FOFs, checking for gravity, play animations, have slope physics, and some NiGHTs logic. |} ===P_Polyobj=== @@ -1830,9 +1830,9 @@ Notes: !Return value(s) !Description |- -|{{anchor|P_GetZAt}}<code>'''P_GetZAt'''(''[[pslope_t]]'' slope, ''fixed_t'' x, ''fixed_t'' y)</code> +|{{anchor|P_GetZAt}}<code>'''P_GetZAt'''(''[[pslope_t]]'' slope, ''fixed_t'' x, ''fixed_t'' y, [''fixed_t'' z])</code> |fixed_t -|Returns the corresponding Z position on the slope for the X/Y coordinates given. +|Returns the corresponding Z position on the slope for the X/Y coordinates given. If <code>''slope''</code> is nil, returns <code>''z''</code> instead. |- |{{anchor|P_ButteredSlope}}<code>'''P_ButteredSlope'''(''[[mobj_t]]'' mobj)</code> |nil @@ -1867,6 +1867,10 @@ Notes: |<code>[[sector_t]]</code> |Checks if <code>player</code> is touching a sector with the specified [[Sector types|sector special]] from the specified section. If one is found, this will return the sector with the special. Also accounts for FOFs – if the found sector is an FOF, the FOF's control sector is returned. |- +|{{anchor|P_PlayerTouchingSectorSpecialFlag}}<code>'''P_PlayerTouchingSectorSpecialFlag'''(''[[player_t]]'' player, ''int'' flags)</code> +|<code>[[sector_t]]</code> +|{{todo|Document it}} +|- |{{anchor|P_FindLowestFloorSurrounding}}<code>'''P_FindLowestFloorSurrounding'''(''[[sector_t]]'' sector)</code> |fixed_t |Looks for the sector surrounding the current one whose floor height is lower than the current sector's floor height. If it is found, the floor height is returned. Otherwise, returns itself. @@ -1916,6 +1920,17 @@ Notes: |{{anchor|P_ThingOnSpecial3DFloor}}<code>'''P_ThingOnSpecial3DFloor'''(''[[mobj_t]]'' mobj)</code> |<code>[[sector_t]]</code> |If <code>mobj</code> is on top of or inside an FOF with a sector special, this function returns the FOF's control sector; otherwise returns nil. + + +<font color="red">'''''Note: This function has been deprecated since the introduction of 2.2.11, we recommend you use the P_MobjTouchingSectorSpecial or P_MobjTouchingSectorSpecialFlag instead.'''''</font> +|- +|{{anchor|P_MobjTouchingSectorSpecial}}<code>'''P_MobjTouchingSectorSpecial'''(''[[mobj_t]]'' mobj, ''int'' section, ''int'' number)</code> +|<code>[[sector_t]]</code> +|{{todo|Document it}} +|- +|{{anchor|P_MobjTouchingSectorSpecialFlag}}<code>'''P_MobjTouchingSectorSpecialFlag'''(''[[mobj_t]]'' mobj, ''int'' flags)</code> +|<code>[[sector_t]]</code> +|{{todo|Document it}} |- |{{anchor|P_IsFlagAtBase}}<code>'''P_IsFlagAtBase'''(''int'' type)</code> |boolean @@ -2013,7 +2028,11 @@ Shatters the FOF <code>rover</code>, making it vanish from the map and spawning |- |{{anchor|P_InQuicksand}}<code>'''P_InQuicksand'''(''[[mobj_t]]'' mobj)</code> |boolean -|Is <code>mobj</code> in a [[Linedef type 257|quicksand]] FOF? Returns true if yes, false if no. +|Is <code>mobj</code> in a [[Linedef type 257|Quicksand]] FOF? Returns true if yes, false if no. +|- +|{{anchor|P_InJumpFlipSector}}<code>'''P_InJumpFlipSector'''(''[[mobj_t]]'' mobj)</code> +|boolean +|Is <code>mobj</code> in a [[Flip_Gravity_on_Jump|Jump Flip]] sector? Returns true if yes, false if no. |- |{{anchor|P_SetObjectMomZ}}<code>'''P_SetObjectMomZ'''(''[[mobj_t]]'' mobj, ''fixed_t'' momz, [''boolean'' relative?])</code> |nil @@ -2888,5 +2907,69 @@ Calling <code>io.close</code> with no arguments will attempt to close the standa Returns the string <code>"file"</code> if <code>obj</code> is an open file handle, <code>"closed file"</code> if <code>obj</code> is a closed file handle, or <code>nil</code> if <code>obj</code> is not a file handle. |} +=== OS library === +([https://www.lua.org/manual/5.1/manual.html#5.8 lua.org documentation]) + +Some functions have been removed for usage in SRB2. +{| class="wikitable" +|+ +!'''Function''' +!Return value(s) +!'''Description''' +|- +|{{anchor|os.clock}}<code>'''os.clock'''()</code> +|int +|Returns the time in seconds to the nearest millisecond since SRB2 was running. +|- +|{{anchor|os.difftime}}<code>'''os.difftime'''(''int'' a, ''int'' b)</code> +|int +|Returns the number from time <code>a</code> to time <code>b</code>, in other words, <code>a</code> - <code>b</code>. +|- +|{{anchor|os.date}}<code>'''os.date('''''string'' format, int time)</code> +|string or table +|Returns the date and time as a string or table. +The first argument accepts the <code>format</code>. Default is "%c". + +* "%a". abbreviated weekday name (e.g., Wed); +* "%A". full weekday name (e.g., Wednesday); +* "%b". abbreviated month name (e.g., Sep); +* "%B". full month name (e.g., September); +* "%c". date and time (e.g., 09/16/98 23:48:10); +* "%d". day of the month (e.g., 16) [01-31]; +* "%H". hour, using a 24-hour clock (e.g., 23) [00-23]; +* "%I". hour, using a 12-hour clock (e.g., 11) [01-12]; +* "%M". minute (e.g., 48) [00-59]; +* "%m". month (e.g., 09) [01-12]; +* "%p". either "am" or "pm" (pm); +* "%S". second (e.g., 10) [00-61]; +* "%w". weekday (e.g., 3) [0-6 = Sunday-Saturday]; +* "%x". date (e.g., 09/16/98); +* "%X". time (e.g., 23:48:10); +* "%Y". full year (e.g., 1998); +* "%y". two-digit year (e.g., 98) [00-99]; +* "%%". the character `%ยด. +* "*t". returns the table; +* "!*t". returns the table (GMT). + +If the <code>format</code> is "*t", returns the table: + +* year (a full year) +* month (1 - 12) +* day (1-31) +* hour (00-23) +* min (00-59) +* sec (00-59) +* wday (day of the week, Sunday is 1) +* yday (day of the year) +* isdst (a boolean, true if daylight saving) + +The second argument accepts the time in seconds. If <code>time</code> is not given, the function will return the current time. +|- +|{{anchor|os.time}}<code>'''os.time'''(''table'' t)</code> +|int +|Returns the time (the number of seconds elapsed since 00:00:00:00 on January 1, 1970). +If no argument is specified, returns the current time. +The argument is a table that must have keys year, month, and day. It can have keys hour, min, sec, and isdst(daytime flag). +|} {{Template:Lua}} [[Category:Lua]] diff --git a/wiki/Global_variables.txt b/wiki/Global_variables.txt index 0f1e3ad9f8bba6547e43cb6ba2b53d161f97d760..bb2f09ab3e010c0d7f34217f51b8c1c3a659273e 100644 --- a/wiki/Global_variables.txt +++ b/wiki/Global_variables.txt @@ -102,12 +102,7 @@ In the event of a netgame, these variables either cannot be manually changed, or !<code>usedCheats</code> |boolean |{{No|Read-only}} -|{{todo|Add a description}} -|- -!<code>menuactive</code> -|boolean -|{{No|Read-only}} -|Returns true if a menu is currently active, false if not. +|Returns true if cheat commands found [[Console/Commands#Development tools/Game cheats|here]] have been used, false if not. |- !<code>paused</code> |boolean @@ -137,22 +132,22 @@ In the event of a netgame, these variables either cannot be manually changed, or !<code>redflag</code> |<code>[[mobj_t]]</code> |{{No|Read-only}} -|{{todo|Add a description}} +|This refers to the current Red Team flag's mobj in [[Capture_the_Flag|CTF]], becomes <code>nil</code> when a player picked up the flag. |- !<code>blueflag</code> |<code>[[mobj_t]]</code> |{{No|Read-only}} -|{{todo|Add a description}} +|This refers to the current Blue Team flag's mobj in [[Capture_the_Flag|CTF]], becomes <code>nil</code> when a player picked up the flag. |- !<code>rflagpoint</code> |<code>[[mapthing_t]]</code> |{{No|Read-only}} -|{{todo|Add a description}} +|This refers to the current Red Team flag's spawnpoint in [[Capture_the_Flag|CTF]], normally to respawn the flag when tossed for a long time or when falling into a bottomless pit. |- !<code>bflagpoint</code> |<code>[[mapthing_t]]</code> |{{No|Read-only}} -|{{todo|Add a description}} +|This refers to the current Blue Team flag's spawnpoint in [[Capture_the_Flag|CTF]], normally to respawn the flag when tossed for a long time or when falling into a bottomless pit. |- !<code>spstage_start</code> |number<!--INT16--> @@ -282,22 +277,22 @@ In the event of a netgame, these variables either cannot be manually changed, or !<code>use1upSound</code> |UINT8 |{{No|Read-only}} -|{{todo|Add a description}} +|When set, the game always plays a 1up sound effect, no matter the client-side setting. |- !<code>maxXtraLife</code> |UINT8 |{{No|Read-only}} -|{{todo|Add a description}} +|Defines maximum amount of extra lifes the player can get per 100 rings. By default, only 2 extra lifes per 100 rings. |- !<code>useContinues</code> |UINT8 |{{No|Read-only}} -|{{todo|Add a description}} +|When set, continues avaliable outside of no-save sessions. By default, continues are only avaliable on no-save game sessions. |- !<code>shareEmblems</code> |UINT8 |{{No|Read-only}} -|{{todo|Add a description}} +|When set, the gamedata being synced with the server's gamedata. By default, this is not the case. |- !<code>gametype</code> |number<!--INT16--> @@ -357,12 +352,12 @@ In the event of a netgame, these variables either cannot be manually changed, or !<code>SUBVERSION</code> |number |{{No|Read-only}} -|The game's subversion number. For SRB2 v2.2.11, this will return 11. +|The game's subversion number. For SRB2 v2.2.13, this will return 13. |- !<code>VERSIONSTRING</code> |string |{{No|Read-only}} -|The game's version string. For SRB2 v2.2.11, this will return <code>"v2.2.11"</code>. +|The game's version string. For SRB2 v2.2.13, this will return <code>"v2.2.13"</code>. |} ===Client-side=== @@ -448,6 +443,11 @@ These variables are not constantly synchronized by the server and can be differe |<code>[[mouse_t]]</code> |{{No|Read-only}} |The second player's mouse. +|- +!<code>menuactive</code> +|boolean +|{{No|Read-only}} +|Returns true if a menu is currently active, false if not. |} ==Tables== diff --git a/wiki/Head-up_display.txt b/wiki/Head-up_display.txt index b0819d232af80ea76e40303d265a25406647005f..cda0c75d1a64724389dd39d2b9a45add0f6c2a2f 100644 --- a/wiki/Head-up_display.txt +++ b/wiki/Head-up_display.txt @@ -97,13 +97,13 @@ The code for checking or changing the position and video flags of a HUD item thr *HUD item properties can both be checked and set through Lua, like other read+write variables in Lua. See below for examples of both. ''Example:'' -<source lang="lua">-- Get the Y coordinate of HUD_RINGS +<syntaxhighlight lang="lua">-- Get the Y coordinate of HUD_RINGS local pos = hudinfo[HUD_RINGS].y -- Move HUD_LIVES up to be below HUD_RINGS hudinfo[HUD_LIVES].x = 4 hudinfo[HUD_LIVES].y = pos + 16 -hudinfo[HUD_LIVES].f = V_SNAPTOLEFT|V_SNAPTOTOP</source> +hudinfo[HUD_LIVES].f = V_SNAPTOLEFT|V_SNAPTOTOP</syntaxhighlight> ==List of HUD items== This is a list of the 14 HUD items that can modified by [[SOC]] or [[Lua]] in SRB2, along with their default coordinates and [[video flags]]. Note that most HUD items are "squished" in [[splitscreen]]; this is handled automatically by the <code>V_PERPLAYER</code> [[video flags|video flag]]. diff --git a/wiki/Hooks.txt b/wiki/Hooks.txt index a7c314141c9262bec78e996ae732358e73526983..f875dd6519e9b294a8d454926b69b897f2843359 100644 --- a/wiki/Hooks.txt +++ b/wiki/Hooks.txt @@ -26,28 +26,10 @@ This function takes three arguments: a string denoting the hook to add this func ==== IntermissionThinker ==== ''Hook format'': <code>addHook("IntermissionThinker", ''functionname'')</code> -''Function format'': <code>function()</code> +''Function format'': <code>function(<font size="1">boolean</font> stagefailed)</code> Executes every tic during the 'Character got through the act' screen. -====KeyDown==== -''Hook format'': <code>addHook("KeyDown", ''functionname'')</code> - -''Function format'': <code>function(<font size="1">[[Lua/Userdata structures#keyevent_t|keyevent_t]]</font> ''keyevent'')</code> - -''Function return value'': Boolean (override default behavior?) - -Executes when a keyboard key is being pressed. If the function returns <code>true</code>, the default behavior of the key is overridden; otherwise, it will be performed after executing the function. - -====KeyUp==== -''Hook format'': <code>addHook("KeyUp", ''functionname'')</code> - -''Function format'': <code>function(<font size="1">[[Lua/Userdata structures#keyevent_t|keyevent_t]]</font> ''keyevent'')</code> - -''Function return value'': Boolean (override default behavior?) - -Executes when a keyboard key is released. If the function returns <code>true</code>, the default behavior of the key is overridden; otherwise, it will be performed after executing the function. - ==== LinedefExecute ==== ''Hook format'': <code>addHook("LinedefExecute", ''functionname'', <font size="1">string</font> ''hookname'')</code> @@ -99,9 +81,11 @@ Executes once every game tic, after all other thinkers (including Object, Player {{todo|Check if this is correct.}} ''Hook format'': <code>addHook("GameQuit", ''functionname'')</code> -''Function format'': <code>function()</code> +''Function format'': <code>function(<font size="1">boolean</font> ''quitting'')</code> -Executes when the player returns to the title screen from a game, and when the application is about to exit to desktop. <font color="red">'''''This hook is only executed locally.'''''</font> +Executes when the player returns to the title screen from a game, and when the application is about to exit to desktop. If <code>''quitting''</code> is true, then the application is exiting. + +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> === Bot === ==== BotAI ==== @@ -133,7 +117,7 @@ Executes every tic as the input for [[bot]] movement is being created, allowing Executes every tic as a [[bot]] is deciding whether to respawn. <code>''player''</code> is the <code>mobj_t</code> of the player the bot follows, and <code>''bot''</code> is the bot's <code>mobj_t</code>. If the function returns <code>true</code>, the bot will attempt to respawn; if the function returns <code>false</code> the bot will not attempt to respawn. Otherwise, the game's default behavior is used. -=== Netplay === +=== Multiplayer === ==== HurtMsg ==== ''Hook format'': <code>addHook("HurtMsg", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> @@ -161,6 +145,13 @@ Only numbers, strings, booleans, userdata and tables that contain only these typ Executes when a player joins a netgame. <code>''playernum''</code> is the number of the joining player. Note that the player has not yet been spawned at the time this hook is called, and so the player data (in this case, <code>players[''playernum'']</code>) cannot be accessed. +==== PlayerQuit ==== +''Hook format'': <code>addHook("PlayerQuit", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">int</font> ''reason'')</code> + +Executes when <code>''player''</code> quits while in a netgame. Note that the player will still be valid and accessible when this hook is called, and the player's Object can still be accessed. The reason for quitting the game is given by the <code>''reason''</code> argument, in the form of a <code>KR_*</code> constant; see [[Constants#Kick reasons|Constants > Kick reasons]] for possible values. + ==== PlayerMsg ==== ''Hook format'': <code>addHook("PlayerMsg", ''functionname'')</code> @@ -170,13 +161,6 @@ Executes when a player joins a netgame. <code>''playernum''</code> is the number Executes when a player sends a chat message in a server. <code>''source''</code> is the player that sent the message, <code>''type''</code> is the type of message sent (0 for <code>[[Console/Commands#say|say]]</code>, 1 for <code>[[Console/Commands#sayteam|sayteam]]</code>, 2 for <code>[[Console/Commands#sayto|sayto]]</code>, 3 for <code>[[Console/Commands#csay|csay]]</code>), <code>''target''</code> is the player the message was sent to if <code>sayto</code> was used, and <code>''msg''</code> is the message that was sent. If the function returns <code>true</code>, the game will not send the message itself and instead only execute the function; if it returns <code>false</code>/<code>nil</code>, it will execute the function and then send the message normally. -==== PlayerQuit ==== -''Hook format'': <code>addHook("PlayerQuit", ''functionname'')</code> - -''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">int</font> ''reason'')</code> - -Executes when <code>''player''</code> quits while in a netgame. Note that the player will still be valid and accessible when this hook is called, and the player's Object can still be accessed. The reason for quitting the game is given by the <code>''reason''</code> argument, in the form of a <code>KR_*</code> constant; see [[Constants#Kick reasons|Constants > Kick reasons]] for possible values. - ==== TeamSwitch ==== ''Hook format'': <code>addHook("TeamSwitch", ''functionname'')</code> @@ -195,6 +179,8 @@ Executes when <code>''player''</code> attempts to change teams in a netgame, inc Executes when <code>''player''</code> attempts to watch another player in a netgame via the button F12. <code>''nextviewedplayer''</code> is the player about to be watched, and ''<code>forced</code>'' indicates whether the view was forcibly switched (e.g. the current player being watched has left the netgame). Returning <code>true</code> forces the view to be changed, while returning <code>false</code> skips the player about to be viewed. Returning <code>nil</code> will allow the game to use the default behavior. +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> + ==== SeenPlayer ==== ''Hook format'': <code>addHook("SeenPlayer", ''functionname'')</code> @@ -204,6 +190,58 @@ Executes when <code>''player''</code> attempts to watch another player in a netg Executes when <code>''player''</code> is pointing the camera to another player in order to see their name. Depends on the [[Console/Variables#Seenames|<code>seenames</code>]] variable to function. <code>''seenplayer''</code> is the player being pointed at. Returning <code>true</code> will allow their name to be displayed on screen, while returning <code>false</code> will force it not to be displayed. Returning <code>nil</code> will allow the game to use the default behavior. +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> + +=== Player === + +==== PlayerThink ==== +''Hook format'': <code>addHook("PlayerThink", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> + +Similar to MobjThinker: Executes once per tic for the player as it runs its thinker. If you need to override the player's control inputs, it is highly recommended to do so in a PlayerCmd hook instead, as some of the inputs have already been consumed by the game when PlayerThink is called. + +==== PlayerCanDamage ==== +''Hook format'': <code>addHook("PlayerCanDamage", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">mobj_t</font> ''mobj'')</code> + +Determines whether the player can damage another object; generally performed when a player and object collide with another. If returning ''true'', the player is forced to attack the object. When returned ''false'', the player is forced to not attack the object. Returning no argument continues the game's usual checks. + +==== PlayerSpawn ==== +''Hook format'': <code>addHook("PlayerSpawn", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> + +Executes when a player spawns in a map or is respawned. <code>''player''</code> is the player in question. It is important to note that, when a map is loaded, players are always spawned ''after'' all other Things in the map have been loaded. + +==== PlayerHeight ==== +''Hook format'': <code>addHook("PlayerHeight", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> + +''Function return value'': Fixed-point number (the new player's height) + +The function should return a fixed-point number which the player object's height will be set to. If the function returns nil or a negative value, the game will use default checks to determine the player height. + +==== PlayerCanEnterSpinGaps ==== +''Hook format'': <code>addHook("PlayerCanEnterSpinGaps", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> + +''Function return value'': Boolean (should the player fit into the gap?) + +The function should return a boolean which can forcibly allow or block gap passage, returning <code>true</code> allows players to fit into any gap that is smaller than their skin's height field, while returning <code>false</code> will prevent the player from fitting into any gap that is smaller than their skin's height field. + +==== ShieldSpawn ==== +''Hook format'': <code>addHook("ShieldSpawn", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> + +''Function return value'': Boolean (override default behavior?) + +Executes when a player obtains a shield. <code>''player''</code> is the player in question. Keep in mind that this hook's functionality extends to all uses of <code>P_SpawnShieldOrb</code>. + === Player abilities === ==== AbilitySpecial ==== ''Hook format'': <code>addHook("AbilitySpecial", ''functionname'')</code> @@ -241,37 +279,16 @@ Executes when a player presses the Spin key during a jump. <code>''player''</cod Executes when a player presses the Spin key. <code>''player''</code> is the player in question. Returning <code>true</code> will override the regular effect of the player's Spin key, and returning <code>false</code>/<code>nil</code> will run the function alongside the existing effect. Note that this hook will execute even if the player is not on the ground. -=== Object === -==== BossDeath ==== -''Hook format'': <code>addHook("BossDeath", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> - -''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> - -''Function return value'': Boolean (override default behavior?) - -Executes when a [[boss]] is killed, i.e., when the action <code>[[A_BossDeath]]</code> is used. <code>''mobj''</code> is the boss Object in question. This determines after-death effects performed immediately after the boss checks if it can raise a capsule or end the level, regardless of whether or not it has done so. For example, by default bosses will flee like the [[Egg Mobile]], which this hook can choose to override or not. If the function returns <code>true</code>, the default after-death behavior will be overridden; otherwise, it will be performed after executing the function. - -The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. - -==== BossThinker ==== -''Hook format'': <code>addHook("BossThinker", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== ShieldSpecial ==== +''Hook format'': <code>addHook("ShieldSpecial", ''functionname'')</code> -''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> +''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> ''Function return value'': Boolean (override default behavior?) -Executes once per tic for [[boss]]es only, after its normal thinker has been run. <code>''mobj''</code> is the boss Object in question. Note that suppressing the default behavior of an Object in a <code>[[#MobjThinker|MobjThinker]]</code> hook will stop this hook from being called. If the function returns <code>true</code>, the default boss behavior will be overridden; otherwise, it will be performed after executing the function. - -The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. - -==== FollowMobj ==== -''Hook format'': <code>addHook("FollowMobj", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> - -''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">mobj_t</font> ''followmobj'')</code> - -''Function return value'': Boolean (override default behavior?) +Executes when a player uses their shield ability, including both jump+spin activation as well as the whirlwind shield's emergency jump. <code>''player''</code> is the player in question. If the function returns <code>true</code> then the shield's default action will be overwritten, however returning <code>false/nil</code> will run the function alongside the existing ability. Note that if one simply wishes to disable shield abilities, the skin flag <code>SF_NOSHIELDABILITY</code> should be used instead. -Executes when SRB2 handles a followmobj of type <code>''objecttype''</code> in the function P_PlayerAfterThink — this occurs after most thinkers for the tic have been run, but before any ThinkFrame hooks have been executed. If <code>''objecttype''</code> is omitted, or set to <code>MT_NULL</code>, this hook will run for followmobjs of any type. If the function returns an expression that evaluates as <code>true</code>, the default followmobj behavior is overridden; otherwise, the default behavior will run after the hook is executed. +=== Mobj === ==== MapThingSpawn ==== ''Hook format'': <code>addHook("MapThingSpawn", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> @@ -286,49 +303,38 @@ The third argument to <code>addHook</code> determines what Object type for <code Note that this hook runs after the ''MobjSpawn'' hook for the spawned Object. -==== MobjCollide ==== -''Hook format'': <code>addHook("MobjCollide", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> - -''Function format'': <code>function(<font size="1">mobj_t</font> ''thing'', <font size="1">mobj_t</font> ''tmthing'')</code> - -''Function return value'': Boolean (do Objects collide?, <code>nil</code> = use default behavior) - -Determines whether and how collision should be handled between two Objects during the use of <code>[[Lua/Functions#P_CheckPosition|P_CheckPosition]]</code>. <code>''thing''</code> is the Object being collided with, and <code>''tmthing''</code> is the moving Object colliding with <code>''thing''</code>. If the function returns <code>true</code>, the Objects have collided, and if the function returns <code>false</code>, they have not. Otherwise (<code>return</code>, <code>return nil</code> or simply no return value), SRB2's default checks are used to determine collision. Note that height checks are not performed between the Objects before this hook is called, and should be manually performed for accurate results. - -The third argument to <code>addHook</code> determines what Object type for <code>''thing''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. - -==== MobjLineCollide ==== -''Hook format'': <code>addHook("MobjLineCollide", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== MobjSpawn ==== +''Hook format'': <code>addHook("MobjSpawn", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'', <font size="1">line_t</font> ''line'')</code> +''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> -''Function return value'': Boolean (does the Object collide with the line?, <code>nil</code> = use default behavior) +''Function return value'': Boolean (override default behavior?) -Executes when an Object attempts to cross a linedef. ''<code>mobj</code>'' is the Object traversing the linedef, and <code>line</code> is the linedef being traversed. Returning <code>true</code> to this function will force the Object to be stopped by the linedef, while returning <code>false</code> will force the Object to cross it. Returning <code>nil</code> will allow SRB2's default checks to determine collision. +Executes when an [[Object]] is spawned, i.e., when <code>[[Lua/Functions#P_SpawnMobj|P_SpawnMobj]]</code> is used. <code>''mobj''</code> is the Object being spawned. Note that for Objects spawned on the map via [[Thing]]s, <code>''mobj''.spawnpoint</code> is not set before this hook is called. If the function returns <code>true</code>, the default spawning behavior is overridden; otherwise, it will be performed after executing the function. -The third argument to <code>addHook</code> determines what Object type for <code>''mobj''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== MobjDamage ==== -''Hook format'': <code>addHook("MobjDamage", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== MobjRemoved ==== +''Hook format'': <code>addHook("MobjRemoved", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function format'': <code>function(<font size="1">mobj_t</font> ''target'', <font size="1">mobj_t</font> ''inflictor'', <font size="1">mobj_t</font> ''source'', <font size="1">int</font> ''damage'', <font size="1">int</font> ''damagetype'')</code> +''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> ''Function return value'': Boolean (override default behavior?) -Executes when an Object is being damaged during the use of <code>[[Lua/Functions#P_DamageMobj|P_DamageMobj]]</code>. <code>''target''</code> is the Object being damaged, <code>''inflictor''</code> is the Object that damaged it, and <code>''source''</code> is the Object responsible for the inflictor's existence. Note that <code>''inflictor''</code> and/or <code>''source''</code> may be <code>nil</code>, and should be checked for existence and validity before being accessed to prevent errors. If the function returns <code>true</code>, the default damage behavior is overridden; otherwise, it will be performed after executing the function. +Executes when an Object is being removed, i.e., when <code>[[Lua/Functions#P_RemoveMobj|P_RemoveMobj]]</code> is used. <code>''mobj''</code> is the Object being removed. If the function returns <code>true</code>, the default removal behavior is overridden; otherwise, it will be performed after executing the function. -The third argument to <code>addHook</code> determines what Object type for <code>''target''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== MobjDeath ==== -''Hook format'': <code>addHook("MobjDeath", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== MobjThinker ==== +''Hook format'': <code>addHook("MobjThinker", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function format'': <code>function(<font size="1">mobj_t</font> ''target'', <font size="1">mobj_t</font> ''inflictor'', <font size="1">mobj_t</font> ''source'', <font size="1">int</font> ''damagetype'')</code> +''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> ''Function return value'': Boolean (override default behavior?) -Executes when an Object is killed, i.e., when <code>[[Lua/Functions#P_KillMobj|P_KillMobj]]</code> is used. <code>''target''</code> is the Object being killed, <code>''inflictor''</code> is the Object that killed it, and <code>''source''</code> is the Object responsible for the inflictor's existence. Note that <code>''inflictor''</code> and/or <code>''source''</code> may be <code>nil</code>, and should be checked for existence and validity before being accessed to prevent errors. If the function returns <code>true</code>, the default death behavior is overridden; otherwise, it will be performed after executing the function. +Executes once per tic for each Object as it runs its thinker. <code>''mobj''</code> is the Object in question. If the function returns <code>true</code>, the default thinker is overridden (does not apply to player Objects); otherwise, it will be performed after executing the function. -The third argument to <code>addHook</code> determines what Object type for <code>''target''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. ==== MobjFuse ==== ''Hook format'': <code>addHook("MobjFuse", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> @@ -341,137 +347,117 @@ Executes when an Object's fuse has run out. <code>''mobj''</code> is the Object The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== MobjMoveBlocked ==== -''Hook format'': <code>addHook("MobjMoveBlocked", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== BossThinker ==== +''Hook format'': <code>addHook("BossThinker", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'', <font size="1">thing</font> ''thing'', <font size="1">line_t</font> ''line'')</code> +''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> ''Function return value'': Boolean (override default behavior?) -Executes when an Object's X/Y movement is blocked — it doesn't matter what stopped you. <code>''mobj''</code> is the Object in question. <code>''thing''</code> is the object that stopped you, if applicable. Otherwise, <code>''line''</code> is the linedef that stopped you. If the function returns true, the default removal behavior is overridden. +Executes once per tic for [[boss]]es only, after its normal thinker has been run. <code>''mobj''</code> is the boss Object in question. Note that suppressing the default behavior of an Object in a <code>[[#MobjThinker|MobjThinker]]</code> hook will stop this hook from being called. If the function returns <code>true</code>, the default boss behavior will be overridden; otherwise, it will be performed after executing the function. -The third argument to <code>addHook</code> determines what <code>''mobj''</code> type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== MobjMoveCollide ==== -''Hook format'': <code>addHook("MobjMoveCollide", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +=== Mobj interactions === -''Function format'': <code>function(<font size="1">mobj_t</font> ''tmthing'', <font size="1">mobj_t</font> ''thing'')</code> +==== ShouldDamage ==== +''Hook format'': <code>addHook("ShouldDamage", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function return value'': Boolean (do Objects collide?, <code>nil</code> = use default behavior) +''Function format'': <code>function(<font size="1">mobj_t</font> ''target'', <font size="1">mobj_t</font> ''inflictor'', <font size="1">mobj_t</font> ''source'', <font size="1">int</font> ''damage'', <font size="1">int</font> ''damagetype'')</code> -Similar to <code>[[#MobjCollide|MobjCollide]]</code>, except the check is performed for the moving Object, not for the Object being moved into. +''Function return value'': Boolean (should damage?, <code>nil</code> = use default behavior) -The third argument to <code>addHook</code> determines what Object type for <code>''tmthing''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +Executes when an Object decides whether to be damaged or not during the use of <code>[[Lua/Functions#P_DamageMobj|P_DamageMobj]]</code>. <code>''target''</code> is the Object being damaged, <code>''inflictor''</code> is the Object that damaged it, and <code>''source''</code> is the Object responsible for the inflictor's existence. Note that <code>''inflictor''</code> and/or <code>''source''</code> may be <code>nil</code>, and should be checked for existence and validity before being accessed to prevent errors. If the function returns <code>true</code>, the Object is forced to be damaged, and if the function returns <code>false</code>, it is forced to not be damaged. Otherwise (<code>return</code>, <code>return nil</code> or simply no return value), SRB2's default checks are used to determine whether the Object is damaged. -==== MobjRemoved ==== -''Hook format'': <code>addHook("MobjRemoved", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +The third argument to <code>addHook</code> determines what Object type for <code>''target''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> +==== MobjDamage ==== +''Hook format'': <code>addHook("MobjDamage", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> + +''Function format'': <code>function(<font size="1">mobj_t</font> ''target'', <font size="1">mobj_t</font> ''inflictor'', <font size="1">mobj_t</font> ''source'', <font size="1">int</font> ''damage'', <font size="1">int</font> ''damagetype'')</code> ''Function return value'': Boolean (override default behavior?) -Executes when an Object is being removed, i.e., when <code>[[Lua/Functions#P_RemoveMobj|P_RemoveMobj]]</code> is used. <code>''mobj''</code> is the Object being removed. If the function returns <code>true</code>, the default removal behavior is overridden; otherwise, it will be performed after executing the function. +Executes when an Object is being damaged during the use of <code>[[Lua/Functions#P_DamageMobj|P_DamageMobj]]</code>. <code>''target''</code> is the Object being damaged, <code>''inflictor''</code> is the Object that damaged it, and <code>''source''</code> is the Object responsible for the inflictor's existence. Note that <code>''inflictor''</code> and/or <code>''source''</code> may be <code>nil</code>, and should be checked for existence and validity before being accessed to prevent errors. If the function returns <code>true</code>, the default damage behavior is overridden; otherwise, it will be performed after executing the function. -The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +The third argument to <code>addHook</code> determines what Object type for <code>''target''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== MobjSpawn ==== -''Hook format'': <code>addHook("MobjSpawn", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== MobjDeath ==== +''Hook format'': <code>addHook("MobjDeath", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> +''Function format'': <code>function(<font size="1">mobj_t</font> ''target'', <font size="1">mobj_t</font> ''inflictor'', <font size="1">mobj_t</font> ''source'', <font size="1">int</font> ''damagetype'')</code> ''Function return value'': Boolean (override default behavior?) -Executes when an [[Object]] is spawned, i.e., when <code>[[Lua/Functions#P_SpawnMobj|P_SpawnMobj]]</code> is used. <code>''mobj''</code> is the Object being spawned. Note that for Objects spawned on the map via [[Thing]]s, <code>''mobj''.spawnpoint</code> is not set before this hook is called. If the function returns <code>true</code>, the default spawning behavior is overridden; otherwise, it will be performed after executing the function. +Executes when an Object is killed, i.e., when <code>[[Lua/Functions#P_KillMobj|P_KillMobj]]</code> is used. <code>''target''</code> is the Object being killed, <code>''inflictor''</code> is the Object that killed it, and <code>''source''</code> is the Object responsible for the inflictor's existence. Note that <code>''inflictor''</code> and/or <code>''source''</code> may be <code>nil</code>, and should be checked for existence and validity before being accessed to prevent errors. If the function returns <code>true</code>, the default death behavior is overridden; otherwise, it will be performed after executing the function. -The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +The third argument to <code>addHook</code> determines what Object type for <code>''target''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== MobjThinker ==== -''Hook format'': <code>addHook("MobjThinker", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +==== BossDeath ==== +''Hook format'': <code>addHook("BossDeath", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> ''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'')</code> ''Function return value'': Boolean (override default behavior?) -Executes once per tic for each Object as it runs its thinker. <code>''mobj''</code> is the Object in question. If the function returns <code>true</code>, the default thinker is overridden (does not apply to player Objects); otherwise, it will be performed after executing the function. +Executes when a [[boss]] is killed, i.e., when the action <code>[[A_BossDeath]]</code> is used. <code>''mobj''</code> is the boss Object in question. This determines after-death effects performed immediately after the boss checks if it can raise a capsule or end the level, regardless of whether or not it has done so. For example, by default bosses will flee like the [[Egg Mobile]], which this hook can choose to override or not. If the function returns <code>true</code>, the default after-death behavior will be overridden; otherwise, it will be performed after executing the function. The third argument to <code>addHook</code> determines what Object type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -==== PlayerThink ==== -''Hook format'': <code>addHook("PlayerThink", ''functionname'')</code> - -''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> - -Similar to MobjThinker: Executes once per tic for the player as it runs its thinker. If you need to override the player's control inputs, it is highly recommended to do so in a PlayerCmd hook instead, as some of the inputs have already been consumed by the game when PlayerThink is called. - -==== PlayerCanDamage ==== -''Hook format'': <code>addHook("PlayerCanDamage", ''functionname'')</code> - -''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">mobj_t</font> ''mobj'')</code> - -Determines whether the player can damage another object; generally performed when a player and object collide with another. If returning ''true'', the player is forced to attack the object. When returned ''false'', the player is forced to not attack the object. Returning no argument continues the game's usual checks. - -==== PlayerSpawn ==== -''Hook format'': <code>addHook("PlayerSpawn", ''functionname'')</code> - -''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> - -Executes when a player spawns in a map or is respawned. <code>''player''</code> is the player in question. It is important to note that, when a map is loaded, players are always spawned ''after'' all other Things in the map have been loaded. - -==== PlayerCmd ==== -''Hook format'': <code>addHook("PlayerCmd", ''functionname'')</code> +==== FollowMobj ==== +''Hook format'': <code>addHook("FollowMobj", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function format'': <code>function(<font size="1">player_t</font> ''player, <font size="1">ticcmd_t</font> cmd'')</code> +''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">mobj_t</font> ''followmobj'')</code> -Executes once per tic for the local client before their button inputs are sent to the server (or executed in singleplayer), and as such, <font color="red">'''''this hook is only executed locally'''''</font>. +''Function return value'': Boolean (override default behavior?) -<code>player</code> is the local player, and <code>cmd</code> is a <code>[[Userdata_structures#ticcmd_t|ticcmd_t]]</code> userdata representing the button information performed locally this tic. +Executes when SRB2 handles a followmobj of type <code>''objecttype''</code> in the function P_PlayerAfterThink — this occurs after most thinkers for the tic have been run, but before any ThinkFrame hooks have been executed. If <code>''objecttype''</code> is omitted, or set to <code>MT_NULL</code>, this hook will run for followmobjs of any type. If the function returns an expression that evaluates as <code>true</code>, the default followmobj behavior is overridden; otherwise, the default behavior will run after the hook is executed. -==== PlayerHeight ==== -''Hook format'': <code>addHook("PlayerHeight", ''functionname'')</code> +=== Mobj collision === -''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> +==== MobjCollide ==== +''Hook format'': <code>addHook("MobjCollide", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -''Function return value'': Fixed-point number (the new player's height) +''Function format'': <code>function(<font size="1">mobj_t</font> ''thing'', <font size="1">mobj_t</font> ''tmthing'')</code> -The function should return a fixed-point number which the player object's height will be set to. If the function returns nil or a negative value, the game will use default checks to determine the player height. +''Function return value'': Boolean (do Objects collide?, <code>nil</code> = use default behavior) -==== PlayerCanEnterSpinGaps ==== -''Hook format'': <code>addHook("PlayerCanEnterSpinGaps", ''functionname'')</code> +Determines whether and how collision should be handled between two Objects during the use of <code>[[Lua/Functions#P_CheckPosition|P_CheckPosition]]</code>. <code>''thing''</code> is the Object being collided with, and <code>''tmthing''</code> is the moving Object colliding with <code>''thing''</code>. If the function returns <code>true</code>, the Objects have collided, and if the function returns <code>false</code>, they have not. Otherwise (<code>return</code>, <code>return nil</code> or simply no return value), SRB2's default checks are used to determine collision. Note that height checks are not performed between the Objects before this hook is called, and should be manually performed for accurate results. -''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> +The third argument to <code>addHook</code> determines what Object type for <code>''thing''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -''Function return value'': Boolean (should the player fit into the gap?) +==== MobjLineCollide ==== +''Hook format'': <code>addHook("MobjLineCollide", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -The function should return a boolean which can forcibly allow or block gap passage, returning <code>true</code> allows players to fit into any gap that is smaller than their skin's height field, while returning <code>false</code> will prevent the player from fitting into any gap that is smaller than their skin's height field. +''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'', <font size="1">line_t</font> ''line'')</code> -==== ShouldDamage ==== -''Hook format'': <code>addHook("ShouldDamage", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> +''Function return value'': Boolean (does the Object collide with the line?, <code>nil</code> = use default behavior) -''Function format'': <code>function(<font size="1">mobj_t</font> ''target'', <font size="1">mobj_t</font> ''inflictor'', <font size="1">mobj_t</font> ''source'', <font size="1">int</font> ''damage'', <font size="1">int</font> ''damagetype'')</code> +Executes when an Object attempts to cross a linedef. ''<code>mobj</code>'' is the Object traversing the linedef, and <code>line</code> is the linedef being traversed. Returning <code>true</code> to this function will force the Object to be stopped by the linedef, while returning <code>false</code> will force the Object to cross it. Returning <code>nil</code> will allow SRB2's default checks to determine collision. -''Function return value'': Boolean (should damage?, <code>nil</code> = use default behavior) +The third argument to <code>addHook</code> determines what Object type for <code>''mobj''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -Executes when an Object decides whether to be damaged or not during the use of <code>[[Lua/Functions#P_DamageMobj|P_DamageMobj]]</code>. <code>''target''</code> is the Object being damaged, <code>''inflictor''</code> is the Object that damaged it, and <code>''source''</code> is the Object responsible for the inflictor's existence. Note that <code>''inflictor''</code> and/or <code>''source''</code> may be <code>nil</code>, and should be checked for existence and validity before being accessed to prevent errors. If the function returns <code>true</code>, the Object is forced to be damaged, and if the function returns <code>false</code>, it is forced to not be damaged. Otherwise (<code>return</code>, <code>return nil</code> or simply no return value), SRB2's default checks are used to determine whether the Object is damaged. +==== MobjMoveBlocked ==== +''Hook format'': <code>addHook("MobjMoveBlocked", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -The third argument to <code>addHook</code> determines what Object type for <code>''target''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. +''Function format'': <code>function(<font size="1">mobj_t</font> ''mobj'', <font size="1">thing</font> ''thing'', <font size="1">line_t</font> ''line'')</code> -==== ShieldSpawn ==== -''Hook format'': <code>addHook("ShieldSpawn", ''functionname'')</code> +''Function return value'': Boolean (override default behavior?) -''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> +Executes when an Object's X/Y movement is blocked — it doesn't matter what stopped you. <code>''mobj''</code> is the Object in question. <code>''thing''</code> is the object that stopped you, if applicable. Otherwise, <code>''line''</code> is the linedef that stopped you. If the function returns true, the default removal behavior is overridden. -''Function return value'': Boolean (override default behavior?) +The third argument to <code>addHook</code> determines what <code>''mobj''</code> type to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. -Executes when a player obtains a shield. <code>''player''</code> is the player in question. Keep in mind that this hook's functionality extends to all uses of <code>P_SpawnShieldOrb</code>. +==== MobjMoveCollide ==== +''Hook format'': <code>addHook("MobjMoveCollide", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> -==== ShieldSpecial ==== -''Hook format'': <code>addHook("ShieldSpecial", ''functionname'')</code> +''Function format'': <code>function(<font size="1">mobj_t</font> ''tmthing'', <font size="1">mobj_t</font> ''thing'')</code> -''Function format'': <code>function(<font size="1">player_t</font> ''player'')</code> +''Function return value'': Boolean (do Objects collide?, <code>nil</code> = use default behavior) -''Function return value'': Boolean (override default behavior?) +Similar to <code>[[#MobjCollide|MobjCollide]]</code>, except the check is performed for the moving Object, not for the Object being moved into. -Executes when a player uses their shield ability, including both jump+spin activation as well as the whirlwind shield's emergency jump. <code>''player''</code> is the player in question. If the function returns <code>true</code> then the shield's default action will be overwritten, however returning <code>false/nil</code> will run the function alongside the existing ability. Note that if one simply wishes to disable shield abilities, the skin flag <code>SF_NOSHIELDABILITY</code> should be used instead. +The third argument to <code>addHook</code> determines what Object type for <code>''tmthing''</code> to run this hook for (should be one of the <code>[[List of Object types|MT_*]]</code> constants). If omitted or set to <code>MT_NULL</code>, it will run for all Object types. ==== TouchSpecial ==== ''Hook format'': <code>addHook("TouchSpecial", ''functionname'', [<font size="1">int</font> ''objecttype''])</code> @@ -506,13 +492,50 @@ It is possible to override all parameters, or prevent a song from overriding ano Thus, a return statement like <code>return false, mflags, looping, 5000, 0, 3000</code> will let the music override happen, using the same flags, start 5 seconds into the song, allow fade-in and let it happen for 3 seconds. +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> + ==== ShouldJingleContinue ==== {{todo|Check if this is correct.}} ''Hook format'': <code>addHook("ShouldJingleContinue", ''functionname'', <font size="1">string</font> ''musname'')</code> ''Function format'': <code>function(<font size="1">player_t</font> ''player'', <font size="1">string</font> musname)</code> -Executes when SRB2 evaluates whether a jingle of type <code>JT_OTHER</code> should continue playing. Jingles are evaluated only when <code>[[Lua/Functions#P_RestoreMusic|P_RestoreMusic]]</code> is called. If this function returns false or nil, the jingle will stop; otherwise, it will continue. <font color="red">'''''This hook is only executed locally.'''''</font> +Executes when SRB2 evaluates whether a jingle of type <code>JT_OTHER</code> should continue playing. Jingles are evaluated only when <code>[[Lua/Functions#P_RestoreMusic|P_RestoreMusic]]</code> is called. If this function returns false or nil, the jingle will stop; otherwise, it will continue. + +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> + +=== Controls === + +====KeyDown==== +''Hook format'': <code>addHook("KeyDown", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">[[Lua/Userdata structures#keyevent_t|keyevent_t]]</font> ''keyevent'')</code> + +''Function return value'': Boolean (override default behavior?) + +Executes when a keyboard key is being pressed. If the function returns <code>true</code>, the default behavior of the key is overridden; otherwise, it will be performed after executing the function. + +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> + +====KeyUp==== +''Hook format'': <code>addHook("KeyUp", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">[[Lua/Userdata structures#keyevent_t|keyevent_t]]</font> ''keyevent'')</code> + +''Function return value'': Boolean (override default behavior?) + +Executes when a keyboard key is released. If the function returns <code>true</code>, the default behavior of the key is overridden; otherwise, it will be performed after executing the function. + +<font color="red">'''''This hook is only executed locally, and thus isn't network-safe. Use at your own risk.'''''</font> + +==== PlayerCmd ==== +''Hook format'': <code>addHook("PlayerCmd", ''functionname'')</code> + +''Function format'': <code>function(<font size="1">player_t</font> ''player, <font size="1">ticcmd_t</font> cmd'')</code> + +Executes once per tic for the local client before their button inputs are sent to the server (or executed in singleplayer), and as such, <font color="red">'''''this hook is only executed locally'''''</font>. + +<code>player</code> is the local player, and <code>cmd</code> is a <code>[[Userdata_structures#ticcmd_t|ticcmd_t]]</code> userdata representing the button information performed locally this tic. === Other === ==== HUD ==== diff --git a/wiki/List_of_skin_colors.txt b/wiki/List_of_skin_colors.txt index 19b33067bb1daf8bca083b21b9816cdf79dc0ff3..a783df2da8988112f697a278018773094d195495 100644 --- a/wiki/List_of_skin_colors.txt +++ b/wiki/List_of_skin_colors.txt @@ -1,11 +1,10 @@ -'''Skin colors''' are translation maps that replace a specified range of [[palette]] colors used in [[sprite]]s with other colors. They are most commonly used by [[player]]s to change the colors of the character [[skin]] they are currently using, typically recoloring the character's main body color; in [[multiplayer]] gametypes players are usually able to freely change their skin color, while in [[Single Player]] all characters have a default skin color that cannot be changed. However, other types of [[Object]]s in SRB2 make use of skin colors too – e.g.: [[emblem]]s use skin colors to help identify what type of emblem they are, and [[CTF Team Ring (Blue)|CTF Team Ring]]s are rings recolored using skin colors to match the color of the team that can collect them. +{{unfinished}}'''Skin colors''' are translation maps that replace a specified range of [[palette]] colors used in [[sprite]]s with other colors. They are most commonly used by [[player]]s to change the colors of the character [[skin]] they are currently using, typically recoloring the character's main body color; in [[multiplayer]] gametypes players are usually able to freely change their skin color, while in [[Single Player]] all characters have a default skin color that cannot be changed. However, other types of [[Object]]s in SRB2 make use of skin colors too – e.g.: [[emblem]]s use skin colors to help identify what type of emblem they are, and [[CTF Team Ring (Blue)|CTF Team Ring]]s are rings recolored using skin colors to match the color of the team that can collect them. By default, the range of colors that will be changed by skin colors is the green range (palette colors 96–111). For most types of Objects this is hardcoded, and cannot be altered by any means. For players however, the ''[[S_SKIN#startcolor|startcolor]]'' parameter in a character's <code>[[S_SKIN]]</code> allows for some flexibility; the range of colors to swap will always be 16 colors directly next to each other in the palette, but ''startcolor'' allows the starting color of this range to be modified. The rest of the colors will follow after the color set by ''startcolor'', the final color of the range being 15 colors after it. Through ''startcolor'' this range can in fact also cross over multiple ranges of colors in the palette, though this is generally not desirable in practice. This trait works only if the player is currently using the <code>SPR_PLAY</code> sprite set – changing to any other sprite set will reset the changeable color range to the default green range. Note that this also applies to the icons for the [[Level End Sign]] and [[Extra Life Monitor]]. The [[actions]] <code>[[A_ChangeColorAbsolute]]</code> and <code>[[A_ChangeColorRelative]]</code> can be used to change the skin color of an Object for [[SOC]]s; for [[Lua]], <code>''mobj''.color</code> (or <code>''player''.mo.color</code>) is the current skin color value set for an Object. For players, <code>''player''.skincolor</code> is the player's selected "normal" skin color in [[multiplayer]] (or the default color, in [[Single Player]]); the player may change to other colors when they have turned super or have special power-ups such as the [[Fire Flower]] power-up or [[invincibility]] in [[Mario mode]] levels, but this value acts as the fallback skin color to use when they are no longer super or don't have the listed power-ups anymore. ==Normal skin colors== The table below lists the available skin color choices available to players and other objects, listing both the named [[constants]] for use in SOC/Lua (listed in the "Internal name" column) and the name strings for use with the <code>[[Console/Variables#color|color]]</code> console variable, ''[[S_SKIN#prefcolor|prefcolor]]'', or ''[[S_SKIN#prefoppositecolor|prefoppositecolor]]'' in a character's <code>S_SKIN</code> (listed in the "Name" column). The columns "#1" to "#16" denote the range of colors to replace each of the 16 colors from the palette to be swapped in-game. Note that many of the colors overlap several columns, to show that they are shared. -{{todo|Update to 2.2.12}} {| class="wikitable" style="text-align:center;" ! Value ! [[Constants|Internal name]] @@ -175,16 +174,15 @@ The table below lists the available skin color choices available to players and | <code>SKINCOLOR_AETHER</code> | style="background-color: #E7E7FF; border-color:#000000" |Aether | colspan="2" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 -| style="background-color: #F6F6F6; border-color:#F6F6F6" |1 -| colspan="2" style="background-color: #EDEDED; border-color:#EDEDED" |2 -| style="background-color: #E4E4E4; border-color:#E4E4E4" |3 -| colspan="3" style="background-color: #C6C6FF; border-color:#C6C6FF" |145 -| style="background-color: #9797D5; border-color:#9797D5" |170 -| style="background-color: #7777BB; border-color:#7777BB" |171 -| style="background-color: #5454A7; border-color:#5454A7; color:white" |172 +| colspan="2" style="background-color: #F6F6F6; border-color:#F6F6F6" |1 +| colspan="2" style="background-color: #e7e7ff; border-color:#e7e7ff" |144 +| colspan="2" style="background-color: #C6C6FF; border-color:#C6C6FF" |145 +| style="background-color: #adadff; border-color:#adadff" |146 +| colspan="2" style="background-color: #9797D5; border-color:#9797D5" |170 +| style="background-color: #7777bb; border-color:#7777bb; color:white" |171 +| style="background-color: #5454a7; border-color:#5454a7; color:white" |172 | style="background-color: #414183; border-color:#414183; color:white" |173 -| style="background-color: #2E2E5C; border-color:#2E2E5C; color:white" |174 -| colspan="2" style="background-color: #21224E; border-color:#21224E; color:white" |175 +| colspan="2" style="background-color: #2e2e5c; border-color:#2e2e5c; color:white" |174 |- ! 10 | <code>SKINCOLOR_SLATE</code> @@ -203,6 +201,26 @@ The table below lists the available skin color choices available to players and | style="background-color: #21224E; border-color:#21224E; color:white" |175 |- ! 11 +| <code>SKINCOLOR_MOONSTONE</code> +| style="background-color: #adadff; border-color:#000000" |Moonstone +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #dadada; border-color:#dadada" |4 +| style="background-color: #b7b7b7; border-color:#b7b7b7" |8 +| style="background-color: #afafaf; border-color:#afafaf" |9 +| style="background-color: #9f9f9f; border-color:#9f9f9f" |11 +| style="background-color: #979797; border-color:#979797" |12 +| style="background-color: #878787; border-color:#878787" |14 +| style="background-color: #7f7f7f; border-color:#7f7f7f" |15 +| style="background-color: #7777bb; border-color:#7777bb" |171 +| style="background-color: #5454a7; border-color:#5454a7; color:white" |172 +| style="background-color: #414183; border-color:#414183; color:white" |173 +| style="background-color: #2e2e5c; border-color:#2e2e5c; color:white" |174 +| style="background-color: #21224e; border-color:#21224e; color:white" |175 +| style="background-color: #1f1f1f; border-color:#1f1f1f; color:white" |27 +| style="background-color: #0f0f0f; border-color:#0f0f0f; color:white" |29 +| style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! 12 | <code>SKINCOLOR_BLUEBELL</code> | style="background-color: #8C8CFF; border-color:#000000" |Bluebell | style="background-color: #E7E7FF; border-color:#E7E7FF" |144 @@ -218,7 +236,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #00003F; border-color:#00003F; color:white" |253 | style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 12 +! 13 | <code>SKINCOLOR_PINK</code> | style="background-color: #FF9F9F; border-color:#000000" |Pink | colspan="2" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -233,7 +251,27 @@ The table below lists the available skin color choices available to players and | style="background-color: #6F0000; border-color:#6F0000; color:white" |44 | style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 13 +! 14 +| <code>SKINCOLOR_ROSEWOOD</code> +| style="background-color: #c26363; border-color:#000000; color:white" |Rosewood +| style="background-color: #ffbfbf; border-color:#ffbfbf" |209 +| style="background-color: #ff9f9f; border-color:#ff9f9f" |210 +| style="background-color: #e18585; border-color:#e18585" |211 +| style="background-color: #cc7171; border-color:#cc7171; color:white" |212 +| style="background-color: #c26363; border-color:#c26363; color:white" |213 +| style="background-color: #b55353; border-color:#b55353; color:white" |214 +| style="background-color: #9b633b; border-color:#9b633b; color:white" |228 +| style="background-color: #875733; border-color:#875733; color:white" |230 +| style="background-color: #774f2b; border-color:#774f2b; color:white" |232 +| style="background-color: #5f4323; border-color:#5f4323; color:white" |234 +| style="background-color: #533f1f; border-color:#533f1f; color:white" |235 +| style="background-color: #3f2f17; border-color:#3f2f17; color:white" |237 +| style="background-color: #272727; border-color:#272727; color:white" |26 +| style="background-color: #1f1f1f; border-color:#1f1f1f; color:white" |27 +| style="background-color: #171717; border-color:#171717; color:white" |28 +| style="background-color: #0f0f0f; border-color:#0f0f0f; color:white" |29 +|- +! 15 | <code>SKINCOLOR_YOGURT</code> | style="background-color: #F7AB7B; border-color:#000000" |Yogurt | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -252,7 +290,26 @@ The table below lists the available skin color choices available to players and | style="background-color: #774F2B; border-color:#774F2B; color:white" |232 | style="background-color: #6B4727; border-color:#6B4727; color:white" |233 |- -! 14 +! 16 +| <code>SKINCOLOR_LATTE</code> +| style="background-color: #cf8353; border-color:#000000; color:white" |Latte +| style="background-color: #ffdbc0; border-color:#ffdbc0" |48 +| style="background-color: #ffc19e; border-color:#ffc19e" |217 +| style="background-color: #f7ab7b; border-color:#f7ab7b" |219 +| style="background-color: #e39767; border-color:#e39767; color:white" |221 +| style="background-color: #cf8353; border-color:#cf8353; color:white" |223 +| style="background-color: #bf7b4b; border-color:#bf7b4b; color:white" |224 +| style="background-color: #ab6f43; border-color:#ab6f43; color:white" |226 +| style="background-color: #9b633b; border-color:#9b633b; color:white" |228 +| style="background-color: #9b5b13; border-color:#9b5b13; color:white" |68 +| style="background-color: #874307; border-color:#874307; color:white" |69 +| colspan="2" style="background-color: #752900; border-color:#752900; color:white" |70 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| style="background-color: #470000; border-color:#470000; color:white" |46 +| style="background-color: #370000; border-color:#370000; color:white" |47 +|- +! 17 | <code>SKINCOLOR_BROWN</code> | style="background-color: #9B633B; border-color:#000000; color:white" |Brown | style="background-color: #CF8353; border-color:#CF8353; color:white" |223 @@ -272,9 +329,9 @@ The table below lists the available skin color choices available to players and | style="background-color: #332B13; border-color:#332B13; color:white" |238 | style="background-color: #2B230F; border-color:#2B230F; color:white" |239 |- -! 15 -| <code>SKINCOLOR_BRONZE</code> -| style="background-color: #7F532F; border-color:#000000; color:white" |Bronze +! 18 +| <code>SKINCOLOR_BOULDER</code> +| style="background-color: #7F532F; border-color:#000000; color:white" |Boulder | style="background-color: #D78B5B; border-color:#D78B5B; color:white" |222 | style="background-color: #BF7B4B; border-color:#BF7B4B; color:white" |224 | style="background-color: #B37347; border-color:#B37347; color:white" |225 @@ -289,7 +346,64 @@ The table below lists the available skin color choices available to players and | style="background-color: #0F0F0F; border-color:#0F0F0F; color:white" |29 | style="background-color: #070707; border-color:#070707; color:white" |30 |- -! 16 +! 19 +| <code>SKINCOLOR_BRONZE</code> +| style="background-color: #cf8353; border-color:#000000; color:white" |Bronze +| style="background-color: #ffff8f; border-color:#ffff8f" |82 +| style="background-color: #ebde81; border-color:#ebde81" |84 +| style="background-color: #ffb975; border-color:#ffb975" |50 +| style="background-color: #ffa855; border-color:#ffa855" |51 +| style="background-color: #cf8353; border-color:#cf8353; color:white" |223 +| style="background-color: #9b633b; border-color:#9b633b; color:white" |228 +| style="background-color: #875733; border-color:#875733; color:white" |230 +| style="background-color: #774f2b; border-color:#774f2b; color:white" |232 +| style="background-color: #5f4323; border-color:#5f4323; color:white" |234 +| style="background-color: #4b371b; border-color:#4b371b; color:white" |236 +| style="background-color: #3f2f17; border-color:#3f2f17; color:white" |237 +| style="background-color: #332b13; border-color:#332b13; color:white" |238 +| colspan="2" style="background-color: #2b230f; border-color:#2b230f; color:white" |239 +| style="background-color: #070707; border-color:#070707; color:white" |30 +| style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! 20 +| <code>SKINCOLOR_SEPIA</code> +| style="background-color: #bf7b4b; border-color:#000000; color:white" |Sepia +| style="background-color: #deffa8; border-color:#deffa8" |88 +| style="background-color: #ebde81; border-color:#ebde81" |84 +| style="background-color: #d0c280; border-color:#d0c280" |85 +| style="background-color: #b7a977; border-color:#b7a977" |86 +| style="background-color: #bf7b4b; border-color:#bf7b4b; color:white" |224 +| style="background-color: #ab6f43; border-color:#ab6f43; color:white" |226 +| style="background-color: #9b633b; border-color:#9b633b; color:white" |228 +| style="background-color: #875733; border-color:#875733; color:white" |230 +| style="background-color: #774f2b; border-color:#774f2b; color:white" |232 +| style="background-color: #533f1f; border-color:#533f1f; color:white" |235 +| style="background-color: #4b371b; border-color:#4b371b; color:white" |236 +| style="background-color: #3f2f17; border-color:#3f2f17; color:white" |237 +| style="background-color: #332b13; border-color:#332b13; color:white" |238 +| style="background-color: #2b230f; border-color:#2b230f; color:white" |239 +| colspan="2" style="background-color: #171717; border-color:#171717; color:white" |28 +|- +! 21 +| <code>SKINCOLOR_ECRU</code> +| style="background-color: #b7a977; border-color:#000000" |Ecru +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffff73; border-color:#ffff73" |83 +| style="background-color: #ebde81; border-color:#ebde81" |84 +| style="background-color: #d0c280; border-color:#d0c280" |85 +| style="background-color: #b7a977; border-color:#b7a977" |86 +| style="background-color: #9f8971; border-color:#9f8971" |242 +| style="background-color: #927d65; border-color:#927d65" |243 +| style="background-color: #7e6a52; border-color:#7e6a52; color:white" |245 +| style="background-color: #875733; border-color:#875733; color:white" |230 +| style="background-color: #774f2b; border-color:#774f2b; color:white" |232 +| style="background-color: #5f4323; border-color:#5f4323; color:white" |234 +| style="background-color: #4b371b; border-color:#4b371b; color:white" |236 +| style="background-color: #332b13; border-color:#332b13; color:white" |238 +| style="background-color: #2b230f; border-color:#2b230f; color:white" |239 +| colspan="2" style="background-color: #370000; border-color:#370000; color:white" |47 +|- +! 22 | <code>SKINCOLOR_TAN</code> | style="background-color: #D0C280; border-color:#000000" |Tan | colspan="2" style="background-color: #FFFFAF; border-color:#FFFFAF" |81 @@ -301,7 +415,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #5D4B33; border-color:#5D4B33; color:white" |249 | colspan="2" style="background-color: #3F2F17; border-color:#3F2F17; color:white" |237 |- -! 17 +! 23 | <code>SKINCOLOR_BEIGE</code> | style="background-color: #927D65; border-color:#000000" |Beige | style="background-color: #EBDE81; border-color:#EBDE81" |84 @@ -318,7 +432,25 @@ The table below lists the available skin color choices available to players and | style="background-color: #4B3C23; border-color:#4B3C23; color:white" |251 | colspan="2" style="background-color: #3F2F17; border-color:#3F2F17; color:white" |237 |- -! 18 +! 24 +| <code>SKINCOLOR_ROSEBUSH</code> +| style="background-color: #d0c280; border-color:#000000" |Rosebush +| style="background-color: #ffe6db; border-color:#ffe6db" |208 +| style="background-color: #ffcfb3; border-color:#ffcfb3" |216 +| style="background-color: #ffbfbf; border-color:#ffbfbf" |209 +| style="background-color: #d0c280; border-color:#d0c280" |85 +| style="background-color: #adc880; border-color:#adc880" |90 +| colspan="2" style="background-color: #95ad6b; border-color:#95ad6b; color:white" |91 +| style="background-color: #7c9258; border-color:#7c9258; color:white" |92 +| style="background-color: #6c7c12; border-color:#6c7c12; color:white" |191 +| style="background-color: #647744; border-color:#647744; color:white" |93 +| style="background-color: #4a5a30; border-color:#4a5a30; color:white" |94 +| style="background-color: #265019; border-color:#265019; color:white" |107 +| style="background-color: #17300f; border-color:#17300f; color:white" |109 +| style="background-color: #0f200a; border-color:#0f200a; color:white" |110 +| colspan="2" style="background-color: #070f04; border-color:#070f04; color:white" |111 +|- +! 25 | <code>SKINCOLOR_MOSS</code> | style="background-color: #ADC880; border-color:#000000" |Moss | colspan="2" style="background-color: #DEFFA8; border-color:#DEFFA8" |88 @@ -330,7 +462,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #4A5A30; border-color:#4A5A30; color:white" |94 | colspan="2" style="background-color: #323F1D; border-color:#323F1D; color:white" |95 |- -! 19 +! 26 | <code>SKINCOLOR_AZURE</code> | style="background-color: #9797D5; border-color:#000000" |Azure | colspan="2" style="background-color: #E7E7FF; border-color:#E7E7FF" |144 @@ -342,7 +474,23 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #2E2E5C; border-color:#2E2E5C; color:white" |174 | colspan="2" style="background-color: #21224E; border-color:#21224E; color:white" |175 |- -! 20 +! 27 +| <code>SKINCOLOR_EGGPLANT</code> +| style="background-color: #9f9f9f; border-color:#000000" |Eggplant +| style="background-color: #dadada; border-color:#dadada" |4 +| style="background-color: #b7b7b7; border-color:#b7b7b7" |8 +| colspan="2" style="background-color: #9f9f9f; border-color:#9f9f9f" |11 +| style="background-color: #777777; border-color:#777777; color:white" |16 +| colspan="3" style="background-color: #874f87; border-color:#874f87; color:white" |195 +| style="background-color: #6f3f6f; border-color:#6f3f6f; color:white" |196 +| style="background-color: #550055; border-color:#550055; color:white" |186 +| colspan="2" style="background-color: #350035; border-color:#350035; color:white" |187 +| style="background-color: #000020; border-color:#000020; color:white" |254 +| style="background-color: #000020; border-color:#000020; color:white" |254 +| style="background-color: #070707; border-color:#070707; color:white" |30 +| style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! 28 | <code>SKINCOLOR_LAVENDER</code> | style="background-color: #9F5F9F; border-color:#000000" |Lavender | colspan="2" style="background-color: #CF7FCF; border-color:#CF7FCF" |192 @@ -354,7 +502,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #402040; border-color:#402040; color:white" |198 | colspan="2" style="background-color: #2B152B; border-color:#2B152B; color:white" |199 |- -! 21 +! 29 | <code>SKINCOLOR_RUBY</code> | style="background-color: #C73D74; border-color:#000000; color:white" |Ruby | colspan="2" style="background-color: #FFCAFF; border-color:#FFCAFF" |176 @@ -371,7 +519,27 @@ The table below lists the available skin color choices available to players and | style="background-color: #350035; border-color:#350035; color:white" |187 | style="background-color: #00003F; border-color:#00003F; color:white" |253 |- -! 22 +! 30 +| <code>SKINCOLOR_CHERRY</code> +| style="background-color: #9d2f5b; border-color:#000000; color:white" |Cherry +| style="background-color: #f570a5; border-color:#f570a5" |202 +| style="background-color: #dd578c; border-color:#dd578c" |203 +| style="background-color: #c73d74; border-color:#c73d74; color:white" |204 +| style="background-color: #b13466; border-color:#b13466; color:white" |205 +| style="background-color: #9d2f5b; border-color:#9d2f5b; color:white" |206 +| style="background-color: #af0000; border-color:#af0000; color:white" |40 +| style="background-color: #9f0000; border-color:#9f0000; color:white" |41 +| style="background-color: #8f0000; border-color:#8f0000; color:white" |42 +| style="background-color: #7f0000; border-color:#7f0000; color:white" |43 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #550055; border-color:#550055; color:white" |186 +| style="background-color: #350035; border-color:#350035; color:white" |187 +| style="background-color: #171717; border-color:#171717; color:white" |28 +| style="background-color: #0f0f0f; border-color:#0f0f0f; color:white" |29 +| style="background-color: #070707; border-color:#070707; color:white" |30 +| style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! 31 | <code>SKINCOLOR_SALMON</code> | style="background-color: #FF5F5F; border-color:#000000" |Salmon | colspan="2" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -390,7 +558,25 @@ The table below lists the available skin color choices available to players and | style="background-color: #5F0000; border-color:#5F0000; color:white" |45 | style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 23 +! 32 +| <code>SKINCOLOR_PEPPER</code> +| style="background-color: #ff0000; border-color:#000000; color:white" |Pepper +| style="background-color: #ff9f9f; border-color:#ff9f9f" |210 +| style="background-color: #ff7f7f; border-color:#ff7f7f" |32 +| style="background-color: #ff5f5f; border-color:#ff5f5f" |33 +| style="background-color: #ff3f3f; border-color:#ff3f3f; color:white" |34 +| colspan="2" style="background-color: #ff0000; border-color:#ff0000; color:white" |35 +| style="background-color: #ef0000; border-color:#ef0000; color:white" |36 +| style="background-color: #df0000; border-color:#df0000; color:white" |37 +| style="background-color: #cf0000; border-color:#cf0000; color:white" |38 +| style="background-color: #bf0000; border-color:#bf0000; color:white" |39 +| style="background-color: #9f0000; border-color:#9f0000; color:white" |41 +| style="background-color: #7f0000; border-color:#7f0000; color:white" |43 +| colspan="2" style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| style="background-color: #470000; border-color:#470000; color:white" |46 +| style="background-color: #370000; border-color:#370000; color:white" |47 +|- +! 33 | <code>SKINCOLOR_RED</code> | style="background-color: #DF0000; border-color:#000000; color:white" |Red | style="background-color: #FF7F7F; border-color:#FF7F7F" |32 @@ -410,7 +596,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #470000; border-color:#470000; color:white" |46 | style="background-color: #370000; border-color:#370000; color:white" |47 |- -! 24 +! 34 | <code>SKINCOLOR_CRIMSON</code> | style="background-color: #7F0000; border-color:#000000; color:white" |Crimson | colspan="2" style="background-color: #BF0000; border-color:#BF0000; color:white" |39 @@ -424,7 +610,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #370000; border-color:#370000; color:white" |47 | style="background-color: #000000; border-color:#000000; color:white" |31 |- -! 25 +! 35 | <code>SKINCOLOR_FLAME</code> | style="background-color: #FF5A20; border-color:#000000" |Flame | style="background-color: #FFCB97; border-color:#FFCB97" |49 @@ -438,7 +624,26 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #572F57; border-color:#572F57; color:white" |197 | colspan="2" style="background-color: #2B152B; border-color:#2B152B; color:white" |199 |- -! 26 +! 36 +| <code>SKINCOLOR_GARNET</code> +| style="background-color: #ff8619; border-color:#000000" |Garnet +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffff73; border-color:#ffff73" |83 +| style="background-color: #ffb975; border-color:#ffb975" |50 +| style="background-color: #ff8619; border-color:#ff8619" |53 +| style="background-color: #ff3f3f; border-color:#ff3f3f; color:white" |34 +| style="background-color: #ff0000; border-color:#ff0000; color:white" |35 +| style="background-color: #df0000; border-color:#df0000; color:white" |37 +| style="background-color: #cf0000; border-color:#cf0000; color:white" |38 +| style="background-color: #bf0000; border-color:#bf0000; color:white" |39 +| style="background-color: #af0000; border-color:#af0000; color:white" |40 +| style="background-color: #8f0000; border-color:#8f0000; color:white" |42 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| style="background-color: #470000; border-color:#470000; color:white" |46 +| colspan="2" style="background-color: #370000; border-color:#370000; color:white" |47 +|- +! 37 | <code>SKINCOLOR_KETCHUP</code> | style="background-color: #EF0000; border-color:#000000; color:white" |Ketchup | style="background-color: #FFFF4F; border-color:#FFFF4F" |72 @@ -458,7 +663,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #470000; border-color:#470000; color:white" |46 | style="background-color: #370000; border-color:#370000; color:white" |47 |- -! 27 +! 38 | <code>SKINCOLOR_PEACHY</code> | style="background-color: #FFB975; border-color:#000000" |Peachy | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -473,7 +678,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #9D2F5B; border-color:#9D2F5B; color:white" |206 | style="background-color: #85274D; border-color:#85274D; color:white" |207 |- -! 28 +! 39 | <code>SKINCOLOR_QUAIL</code> | style="background-color: #C26363; border-color:#000000; color:white" |Quail | style="background-color: #FFCFB3; border-color:#FFCFB3" |216 @@ -492,7 +697,25 @@ The table below lists the available skin color choices available to players and | style="background-color: #0F0F0F; border-color:#0F0F0F; color:white" |29 | style="background-color: #000000; border-color:#000000; color:white" |31 |- -! 29 +! 40 +| <code>SKINCOLOR_FOUNDATION</code> +| style="background-color: #f7ab7b; border-color:#000000" |Foundation +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff8f; border-color:#ffff8f" |82 +| style="background-color: #ebde81; border-color:#ebde81" |84 +| style="background-color: #f7ab7b; border-color:#f7ab7b" |219 +| colspan="2" style="background-color: #e39767; border-color:#e39767; color:white" |221 +| style="background-color: #cc7171; border-color:#cc7171; color:white" |212 +| style="background-color: #c26363; border-color:#c26363; color:white" |213 +| style="background-color: #b55353; border-color:#b55353; color:white" |214 +| style="background-color: #a73f3f; border-color:#a73f3f; color:white" |215 +| style="background-color: #572f57; border-color:#572f57; color:white" |197 +| style="background-color: #550055; border-color:#550055; color:white" |186 +| colspan="2" style="background-color: #350035; border-color:#350035; color:white" |187 +| style="background-color: #070707; border-color:#070707; color:white" |30 +|- +! 41 | <code>SKINCOLOR_SUNSET</code> | style="background-color: #E16C32; border-color:#000000; color:white" |Sunset | style="background-color: #FFFFAF; border-color:#FFFFAF" |81 @@ -508,7 +731,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #2B152B; border-color:#2B152B; color:white" |199 | style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 30 +! 42 | <code>SKINCOLOR_COPPER</code> | style="background-color: #9F3800; border-color:#000000; color:white" |Copper | style="background-color: #DEFFA8; border-color:#DEFFA8" |88 @@ -526,7 +749,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #550055; border-color:#550055; color:white" |186 | style="background-color: #350035; border-color:#350035; color:white" |187 |- -! 31 +! 43 | <code>SKINCOLOR_APRICOT</code> | style="background-color: #FFA855; border-color:#000000" |Apricot | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -546,7 +769,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #8A2900; border-color:#8A2900; color:white" |61 | style="background-color: #812000; border-color:#812000; color:white" |62 |- -! 32 +! 44 | <code>SKINCOLOR_ORANGE</code> | style="background-color: #FF7500; border-color:#000000" |Orange | style="background-color: #FFCB97; border-color:#FFCB97" |49 @@ -556,17 +779,16 @@ The table below lists the available skin color choices available to players and | style="background-color: #FF8619; border-color:#FF8619" |53 | style="background-color: #FF7500; border-color:#FF7500" |54 | style="background-color: #EC6900; border-color:#EC6900; color:white" |55 -| style="background-color: #DD5E00; border-color:#DD5E00; color:white" |56 -| style="background-color: #D05800; border-color:#D05800; color:white" |57 -| style="background-color: #C44F00; border-color:#C44F00; color:white" |58 -| style="background-color: #B54400; border-color:#B54400; color:white" |59 -| style="background-color: #9F3800; border-color:#9F3800; color:white" |60 -| style="background-color: #8A2900; border-color:#8A2900; color:white" |61 -| style="background-color: #812000; border-color:#812000; color:white" |62 -| style="background-color: #791800; border-color:#791800; color:white" |63 -| style="background-color: #6F0000; border-color:#6F0000; color:white" |44 +| style="background-color: #d05800; border-color:#d05800; color:white" |57 +| style="background-color: #c44f00; border-color:#c44f00; color:white" |58 +| style="background-color: #b54400; border-color:#b54400; color:white" |59 +| style="background-color: #9f3800; border-color:#9f3800; color:white" |60 +| style="background-color: #8f0000; border-color:#8f0000; color:white" |42 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| colspan="2" style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 33 +! 45 | <code>SKINCOLOR_RUST</code> | style="background-color: #9F3800; border-color:#000000; color:white" |Rust | style="background-color: #DD5E00; border-color:#DD5E00; color:white" |56 @@ -582,7 +804,45 @@ The table below lists the available skin color choices available to players and | style="background-color: #470000; border-color:#470000; color:white" |46 | colspan="2" style="background-color: #370000; border-color:#370000; color:white" |47 |- -! 34 +! 46 +| <code>SKINCOLOR_TANGERINE</code> +| style="background-color: #ffa855; border-color:#000000" |Tangerine +| style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff73; border-color:#ffff73" |83 +| colspan="2" style="background-color: #ebdb57; border-color:#ebdb57" |64 +| style="background-color: #ffa855; border-color:#ffa855" |51 +| style="background-color: #ff9736; border-color:#ff9736" |52 +| style="background-color: #ff8619; border-color:#ff8619" |53 +| style="background-color: #ff7500; border-color:#ff7500" |54 +| style="background-color: #dd5e00; border-color:#dd5e00; color:white" |56 +| style="background-color: #c44f00; border-color:#c44f00; color:white" |58 +| style="background-color: #9f3800; border-color:#9f3800; color:white" |60 +| style="background-color: #8a2900; border-color:#8a2900; color:white" |61 +| style="background-color: #791800; border-color:#791800; color:white" |63 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| style="background-color: #470000; border-color:#470000; color:white" |46 +| style="background-color: #370000; border-color:#370000; color:white" |47 +|- +! 47 +| <code>SKINCOLOR_TOPAZ</code> +| style="background-color: #ffff00; border-color:#000000" |Topaz +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff73; border-color:#ffff73" |83 +| style="background-color: #ffff00; border-color:#ffff00" |73 +| colspan="2" style="background-color: #e3d90f; border-color:#e3d90f" |74 +| style="background-color: #d7bb43; border-color:#d7bb43" |65 +| style="background-color: #ff9736; border-color:#ff9736" |52 +| style="background-color: #ff8619; border-color:#ff8619" |53 +| style="background-color: #ff7500; border-color:#ff7500" |54 +| style="background-color: #dd5e00; border-color:#dd5e00; color:white" |56 +| style="background-color: #c44f00; border-color:#c44f00; color:white" |58 +| style="background-color: #9f3800; border-color:#9f3800; color:white" |60 +| style="background-color: #8f0000; border-color:#8f0000; color:white" |42 +| style="background-color: #7f0000; border-color:#7f0000; color:white" |43 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +|- +! 48 | <code>SKINCOLOR_GOLD</code> | style="background-color: #D7BB43; border-color:#000000" |Gold | colspan="2" style="background-color: #FFFFAF; border-color:#FFFFAF" |81 @@ -598,7 +858,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #470000; border-color:#470000; color:white" |46 | colspan="2" style="background-color: #370000; border-color:#370000; color:white" |47 |- -! 35 +! 49 | <code>SKINCOLOR_SANDY</code> | style="background-color: #AF7B1F; border-color:#000000; color:white" |Sandy | style="background-color: #FFFF73; border-color:#FFFF73" |83 @@ -614,7 +874,25 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #2B152B; border-color:#2B152B; color:white" |199 | style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 36 +! 50 +| <code>SKINCOLOR_GOLDENROD</code> +| style="background-color: #ebdb57; border-color:#000000" |Goldenrod +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| colspan="2" style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff73; border-color:#ffff73" |83 +| colspan="2" style="background-color: #ffff00; border-color:#ffff00" |73 +| style="background-color: #ebdb57; border-color:#ebdb57" |64 +| style="background-color: #d7bb43; border-color:#d7bb43" |65 +| style="background-color: #c39b2f; border-color:#c39b2f" |66 +| style="background-color: #af7b1f; border-color:#af7b1f; color:white" |67 +| style="background-color: #9b5b13; border-color:#9b5b13; color:white" |68 +| style="background-color: #874307; border-color:#874307; color:white" |69 +| style="background-color: #812000; border-color:#812000; color:white" |62 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +|- +! 51 | <code>SKINCOLOR_YELLOW</code> | style="background-color: #FFFF00; border-color:#000000" |Yellow | style="background-color: #FFFF8F; border-color:#FFFF8F" |82 @@ -628,7 +906,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #5A4905; border-color:#5A4905; color:white" |79 | style="background-color: #3F2F17; border-color:#3F2F17; color:white" |237 |- -! 37 +! 52 | <code>SKINCOLOR_OLIVE</code> | style="background-color: #887809; border-color:#000000; color:white" |Olive | colspan="2" style="background-color: #C9BB0E; border-color:#C9BB0E; color:white" |75 @@ -642,7 +920,38 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #2B152B; border-color:#2B152B; color:white" |199 | style="background-color: #00003F; border-color:#00003F; color:white" |253 |- -! 38 +! 53 +| <code>SKINCOLOR_PEAR</code> +| style="background-color: #c5e800; border-color:#000000" |Pear +| style="background-color: #deffa8; border-color:#deffa8" |88 +| style="background-color: #c7e494; border-color:#c7e494" |89 +| style="background-color: #c5e800; border-color:#c5e800" |188 +| colspan="2" style="background-color: #a7ca04; border-color:#a7ca04" |189 +| colspan="2" style="background-color: #aa9b0b; border-color:#aa9b0b; color:white" |76 +| colspan="2" style="background-color: #af7b1f; border-color:#af7b1f; color:white" |67 +| style="background-color: #9b5b13; border-color:#9b5b13; color:white" |68 +| style="background-color: #874307; border-color:#874307; color:white" |69 +| style="background-color: #752900; border-color:#752900; color:white" |70 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| style="background-color: #470000; border-color:#470000; color:white" |46 +| colspan="2" style="background-color: #370000; border-color:#370000; color:white" |47 +|- +! 54 +| <code>SKINCOLOR_LEMON</code> +| style="background-color: #ffff73; border-color:#000000" |Lemon +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff73; border-color:#ffff73" |83 +| colspan="2" style="background-color: #ffff00; border-color:#ffff00" |73 +| colspan="2" style="background-color: #e3d90f; border-color:#e3d90f" |74 +| colspan="2" style="background-color: #aa9b0b; border-color:#aa9b0b; color:white" |76 +| colspan="2" style="background-color: #6c7c12; border-color:#6c7c12; color:white" |191 +| colspan="2" style="background-color: #5a4905; border-color:#5a4905; color:white" |79 +| style="background-color: #0f200a; border-color:#0f200a; color:white" |110 +| style="background-color: #070f04; border-color:#070f04; color:white" |111 +|- +! 55 | <code>SKINCOLOR_LIME</code> | style="background-color: #E2F428; border-color:#000000" |Lime | style="background-color: #FFFFCF; border-color:#FFFFCF" |80 @@ -661,7 +970,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #0F200A; border-color:#0F200A; color:white" |110 | style="background-color: #070F04; border-color:#070F04; color:white" |111 |- -! 39 +! 56 | <code>SKINCOLOR_PERIDOT</code> | style="background-color: #C5E800; border-color:#000000" |Peridot | colspan="2" style="background-color: #DEFFA8; border-color:#DEFFA8" |88 @@ -673,7 +982,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #323F1D; border-color:#323F1D; color:white" |95 | colspan="2" style="background-color: #002D00; border-color:#002D00; color:white" |119 |- -! 40 +! 57 | <code>SKINCOLOR_APPLE</code> | style="background-color: #8CA80B; border-color:#000000; color=white" |Apple | colspan="2" style="background-color: #FFFF00; border-color:#FFFF00" |73 @@ -687,7 +996,44 @@ The table below lists the available skin color choices available to players and | style="background-color: #1E4014; border-color:#1E4014; color:white" |108 | colspan="3" style="background-color: #17300F; border-color:#17300F; color:white" |109 |- -! 41 +! 58 +| <code>SKINCOLOR_HEADLIGHT</code> +| style="background-color: #ffff8f; border-color:#000000" |Headlight +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff8f; border-color:#ffff8f" |82 +| style="background-color: #ffff00; border-color:#ffff00" |73 +| style="background-color: #ebde81; border-color:#ebde81" |84 +| style="background-color: #ebdb57; border-color:#ebdb57" |64 +| style="background-color: #d7bb43; border-color:#d7bb43" |65 +| colspan="2" style="background-color: #95ad6b; border-color:#95ad6b; color:white" |91 +| style="background-color: #03b180; border-color:#03b180; color:white" |124 +| style="background-color: #02936b; border-color:#02936b; color:white" |125 +| style="background-color: #027354; border-color:#027354; color:white" |126 +| style="background-color: #155386; border-color:#155386; color:white" |137 +| style="background-color: #0e3556; border-color:#0e3556; color:white" |138 +| style="background-color: #071e30; border-color:#071e30; color:white" |139 +|- +! 59 +| <code>SKINCOLOR_CHARTREUSE</code> +| style="background-color: #c5e800; border-color:#000000" |Chartreuse +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffff8f; border-color:#ffff8f" |82 +| style="background-color: #ffff4f; border-color:#ffff4f" |72 +| style="background-color: #ffff00; border-color:#ffff00" |73 +| colspan="2" style="background-color: #c5e800; border-color:#c5e800" |188 +| style="background-color: #00df00; border-color:#00df00" |113 +| colspan="2" style="background-color: #00bf00; border-color:#00bf00" |114 +| style="background-color: #02936b; border-color:#02936b; color:white" |125 +| style="background-color: #027354; border-color:#027354; color:white" |126 +| style="background-color: #155386; border-color:#155386; color:white" |137 +| style="background-color: #0e3556; border-color:#0e3556; color:white" |138 +| style="background-color: #071e30; border-color:#071e30; color:white" |139 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +| style="background-color: #000020; border-color:#000020; color:white" |254 +|- +! 60 | <code>SKINCOLOR_GREEN</code> | style="background-color: #61D041; border-color:#000000" |Green | style="background-color: #77FF4F; border-color:#77FF4F" |96 @@ -707,7 +1053,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #0F200A; border-color:#0F200A; color:white" |110 | style="background-color: #070F04; border-color:#070F04; color:white" |111 |- -! 42 +! 61 | <code>SKINCOLOR_FOREST</code> | style="background-color: #357023; border-color:#000000; color:white" |Forest | style="background-color: #52B037; border-color:#52B037" |101 @@ -722,9 +1068,9 @@ The table below lists the available skin color choices available to players and | colspan="3" style="background-color: #0F200A; border-color:#0F200A; color:white" |110 | style="background-color: #070F04; border-color:#070F04; color:white" |111 |- -! 43 -| <code>SKINCOLOR_EMERALD</code> -| style="background-color: #00BF00; border-color:#000000" |Emerald +! 62 +| <code>SKINCOLOR_SHAMROCK</code> +| style="background-color: #00BF00; border-color:#000000" |Shamrock | colspan="2" style="background-color: #00FF00; border-color:#00FF00" |112 | colspan="2" style="background-color: #00DF00; border-color:#00DF00" |113 | colspan="2" style="background-color: #00BF00; border-color:#00BF00" |114 @@ -734,7 +1080,25 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #003F00; border-color:#003F00; color:white" |118 | colspan="2" style="background-color: #002D00; border-color:#002D00; color:white" |119 |- -! 44 +! 63 +| <code>SKINCOLOR_JADE</code> +| style="background-color: #15f2b0; border-color:#000000" |Jade +| style="background-color: #cefaff; border-color:#cefaff" |128 +| style="background-color: #b7fbe7; border-color:#b7fbe7" |120 +| style="background-color: #66f7cb; border-color:#66f7cb" |121 +| colspan="2" style="background-color: #15f2b0; border-color:#15f2b0" |122 +| style="background-color: #00df00; border-color:#00df00" |113 +| colspan="2" style="background-color: #00bf00; border-color:#00bf00" |114 +| style="background-color: #009f00; border-color:#009f00; color:white" |115 +| style="background-color: #007f00; border-color:#007f00; color:white" |116 +| style="background-color: #005f00; border-color:#005f00; color:white" |117 +| style="background-color: #003f00; border-color:#003f00; color:white" |118 +| style="background-color: #002d00; border-color:#002d00; color:white" |119 +| style="background-color: #0f200a; border-color:#0f200a; color:white" |110 +| style="background-color: #070f04; border-color:#070f04; color:white" |111 +| style="background-color: #070707; border-color:#070707; color:white" |30 +|- +! 64 | <code>SKINCOLOR_MINT</code> | style="background-color: #DEFFA8; border-color:#000000" |Mint | colspan="2" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -747,20 +1111,90 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #005F5F; border-color:#005F5F; color:white" |143 | colspan="2" style="background-color: #0E3556; border-color:#0E3556; color:white" |138 |- -! 45 +! 65 +| <code>SKINCOLOR_MASTER</code> +| style="background-color: #00ff00; border-color:#000000" |Master +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #deffa8; border-color:#deffa8" |88 +| style="background-color: #77ff4f; border-color:#77ff4f" |96 +| style="background-color: #00ff00; border-color:#00ff00" |112 +| style="background-color: #00df00; border-color:#00df00" |113 +| style="background-color: #61d041; border-color:#61d041" |99 +| style="background-color: #5ac03c; border-color:#5ac03c" |100 +| style="background-color: #03b180; border-color:#03b180; color:white" |124 +| style="background-color: #02936b; border-color:#02936b; color:white" |125 +| style="background-color: #027354; border-color:#027354; color:white" |126 +| style="background-color: #005f00; border-color:#005f00; color:white" |117 +| style="background-color: #265019; border-color:#265019; color:white" |107 +| style="background-color: #003f00; border-color:#003f00; color:white" |118 +| style="background-color: #002d00; border-color:#002d00; color:white" |119 +| style="background-color: #070f04; border-color:#070f04; color:white" |111 +|- +! 66 +| <code>SKINCOLOR_EMERALD</code> +| style="background-color: #00bf00; border-color:#000000" |Emerald +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #77ff4f; border-color:#77ff4f" |96 +| style="background-color: #00ff00; border-color:#00ff00" |112 +| style="background-color: #00df00; border-color:#00df00" |113 +| colspan="2" style="background-color: #00bf00; border-color:#00bf00" |114 +| colspan="2" style="background-color: #02936b; border-color:#02936b; color:white" |125 +| colspan="2" style="background-color: #027354; border-color:#027354; color:white" |126 +| colspan="2" style="background-color: #155386; border-color:#155386; color:white" |137 +| colspan="2" style="background-color: #0e3556; border-color:#0e3556; color:white" |138 +| colspan="2" style="background-color: #071e30; border-color:#071e30; color:white" |139 +|- +! 67 | <code>SKINCOLOR_SEAFOAM</code> | style="background-color: #58AE76; border-color:#000000" |Seafoam | style="background-color: #F6F6F6; border-color:#F6F6F6" |1 | style="background-color: #DEFFA8; border-color:#DEFFA8" |88 | style="background-color: #C7E494; border-color:#C7E494" |89 | style="background-color: #ADC880; border-color:#ADC880" |90 -| colspan="2" style="background-color: #02936B; border-color:#02936B; color:white" |125 -| colspan="3" style="background-color: #027354; border-color:#027354; color:white" |126 +| style="background-color: #03b180; border-color:#03b180; color:white" |124 +| colspan="2" style="background-color: #02936b; border-color:#02936b; color:white" |125 +| colspan="2" style="background-color: #027354; border-color:#027354; color:white" |126 | colspan="2" style="background-color: #005F5F; border-color:#005F5F; color:white" |143 -| colspan="3" style="background-color: #0E3556; border-color:#0E3556; color:white" |138 +| colspan="2" style="background-color: #0E3556; border-color:#0E3556; color:white" |138 +| style="background-color: #071e30; border-color:#071e30; color:white" |139 | colspan="2" style="background-color: #00003F; border-color:#00003F; color:white" |253 |- -! 46 +! 68 +| <code>SKINCOLOR_ISLAND</code> +| style="background-color: #03b180; border-color:#000000; color:white" |Island +| style="background-color: #77ff4f; border-color:#77ff4f" |96 +| style="background-color: #70f04b; border-color:#70f04b" |97 +| colspan="2" style="background-color: #00df00; border-color:#00df00" |113 +| style="background-color: #00bf00; border-color:#00bf00" |114 +| style="background-color: #03b180; border-color:#03b180; color:white" |124 +| style="background-color: #178888; border-color:#178888; color:white" |142 +| colspan="2" style="background-color: #186fb6; border-color:#186fb6; color:white" |136 +| style="background-color: #3131ff; border-color:#3131ff; color:white" |150 +| style="background-color: #1818ff; border-color:#1818ff; color:white" |151 +| style="background-color: #0000df; border-color:#0000df; color:white" |153 +| colspan="2" style="background-color: #330071; border-color:#330071; color:white" |168 +| colspan="2" style="background-color: #240051; border-color:#240051; color:white" |169 +|- +! 69 +| <code>SKINCOLOR_BOTTLE</code> +| style="background-color: #74d1c9; border-color:#000000" |Bottle +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #f6f6f6; border-color:#f6f6f6" |1 +| style="background-color: #e4e4e4; border-color:#e4e4e4" |3 +| style="background-color: #dadada; border-color:#dadada" |4 +| style="background-color: #d1d1d1; border-color:#d1d1d1" |5 +| style="background-color: #74d1c9; border-color:#74d1c9" |140 +| colspan="2" style="background-color: #42b3b3; border-color:#42b3b3" |141 +| style="background-color: #03b180; border-color:#03b180; color:white" |124 +| style="background-color: #02936b; border-color:#02936b; color:white" |125 +| style="background-color: #027354; border-color:#027354; color:white" |126 +| style="background-color: #01563f; border-color:#01563f; color:white" |127 +| style="background-color: #003f00; border-color:#003f00; color:white" |118 +| style="background-color: #002d00; border-color:#002d00; color:white" |119 +| colspan="2" style="background-color: #070f04; border-color:#070f04; color:white" |111 +|- +! 70 | <code>SKINCOLOR_AQUA</code> | style="background-color: #15F2B0; border-color:#000000" |Aqua | style="background-color: #B7FBE7; border-color:#B7FBE7" |120 @@ -774,7 +1208,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #003F00; border-color:#003F00; color:white" |118 | style="background-color: #002D00; border-color:#002D00; color:white" |119 |- -! 47 +! 71 | <code>SKINCOLOR_TEAL</code> | style="background-color: #42B3B3; border-color:#000000" |Teal | colspan="2" style="background-color: #B7FBE7; border-color:#B7FBE7" |120 @@ -784,7 +1218,22 @@ The table below lists the available skin color choices available to players and | colspan="3" style="background-color: #005F5F; border-color:#005F5F; color:white" |143 | colspan="4" style="background-color: #0E3556; border-color:#0E3556; color:white" |138 |- -! 48 +! 72 +| <code>SKINCOLOR_OCEAN</code> +| style="background-color: #178888; border-color:#000000; color:white" |Ocean +| style="background-color: #b7fbe7; border-color:#b7fbe7" |120 +| style="background-color: #66f7cb; border-color:#66f7cb" |121 +| colspan="2" style="background-color: #15f2b0; border-color:#15f2b0" |122 +| style="background-color: #0bd297; border-color:#0bd297" |123 +| style="background-color: #42b3b3; border-color:#42b3b3" |141 +| colspan="2" style="background-color: #178888; border-color:#178888; color:white" |142 +| style="background-color: #186fb6; border-color:#186fb6; color:white" |136 +| style="background-color: #155386; border-color:#155386; color:white" |137 +| colspan="2" style="background-color: #0e3556; border-color:#0e3556; color:white" |138 +| colspan="2" style="background-color: #071e30; border-color:#071e30; color:white" |139 +| colspan="2" style="background-color: #00003f; border-color:#00003f; color:white" |253 +|- +! 73 | <code>SKINCOLOR_WAVE</code> | style="background-color: #319FCA; border-color:#000000" |Wave | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -799,7 +1248,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #240051; border-color:#240051; color:white" |169 | colspan="2" style="background-color: #00003F; border-color:#00003F; color:white" |253 |- -! 49 +! 74 | <code>SKINCOLOR_CYAN</code> | style="background-color: #00FFFF; border-color:#000000" |Cyan | style="background-color: #CEFAFF; border-color:#CEFAFF" |128 @@ -814,7 +1263,42 @@ The table below lists the available skin color choices available to players and | style="background-color: #002D00; border-color:#002D00; color:white" |119 | style="background-color: #0F200A; border-color:#0F200A; color:white" |110 |- -! 50 +! 75 +| <code>SKINCOLOR_TURQUOISE</code> +| style="background-color: #0bd297; border-color:#000000" |Turquoise +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #b7fbe7; border-color:#b7fbe7" |120 +| style="background-color: #66f7cb; border-color:#66f7cb" |121 +| style="background-color: #15f2b0; border-color:#15f2b0" |122 +| style="background-color: #0bd297; border-color:#0bd297" |123 +| colspan="2" style="background-color: #42b3b3; border-color:#42b3b3" |141 +| style="background-color: #208ae1; border-color:#208ae1; color:white" |135 +| colspan="2" style="background-color: #186fb6; border-color:#186fb6; color:white" |136 +| style="background-color: #3131ff; border-color:#3131ff; color:white" |150 +| style="background-color: #0000df; border-color:#0000df; color:white" |153 +| style="background-color: #0000ac; border-color:#0000ac; color:white" |155 +| style="background-color: #000080; border-color:#000080; color:white" |157 +| style="background-color: #000052; border-color:#000052; color:white" |159 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +|- +! 76 +| <code>SKINCOLOR_AQUAMARINE</code> +| style="background-color: #47b9ff; border-color:#000000" |Aquamarine +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #b7fbe7; border-color:#b7fbe7" |120 +| style="background-color: #66f7cb; border-color:#66f7cb" |121 +| style="background-color: #57d5ff; border-color:#57d5ff" |131 +| style="background-color: #4fc7ff; border-color:#4fc7ff" |132 +| style="background-color: #47b9ff; border-color:#47b9ff" |133 +| colspan="2" style="background-color: #37a5ff; border-color:#37a5ff; color:white" |134 +| colspan="2" style="background-color: #208ae1; border-color:#208ae1; color:white" |135 +| colspan="2" style="background-color: #5252ff; border-color:#5252ff; color:white" |149 +| style="background-color: #5454a7; border-color:#5454a7; color:white" |172 +| style="background-color: #414183; border-color:#414183; color:white" |173 +| style="background-color: #2e2e5c; border-color:#2e2e5c; color:white" |174 +| style="background-color: #21224e; border-color:#21224e; color:white" |175 +|- +! 77 | <code>SKINCOLOR_SKY</code> | style="background-color: #57D5FF; border-color:#000000" |Sky | colspan="2" style="background-color: #CEFAFF; border-color:#CEFAFF" |128 @@ -830,7 +1314,22 @@ The table below lists the available skin color choices available to players and | style="background-color: #0E3556; border-color:#0E3556; color:white" |138 | style="background-color: #071E30; border-color:#071E30; color:white" |139 |- -! 51 +! 78 +| <code>SKINCOLOR_MARINE</code> +| style="background-color: #8c8cff; border-color:#000000" |Marine +| style="background-color: #e7e7ff; border-color:#e7e7ff" |144 +| style="background-color: #adadff; border-color:#adadff" |146 +| colspan="2" style="background-color: #8c8cff; border-color:#8c8cff" |147 +| style="background-color: #7373ff; border-color:#7373ff" |148 +| style="background-color: #208ae1; border-color:#208ae1; color:white" |135 +| colspan="2" style="background-color: #186fb6; border-color:#186fb6; color:white" |136 +| colspan="2" style="background-color: #155386; border-color:#155386; color:white" |137 +| style="background-color: #01563f; border-color:#01563f; color:white" |127 +| style="background-color: #003f00; border-color:#003f00; color:white" |118 +| style="background-color: #002d00; border-color:#002d00; color:white" |119 +| colspan="3" style="background-color: #070f04; border-color:#070f04; color:white" |111 +|- +! 79 | <code>SKINCOLOR_CERULEAN</code> | style="background-color: #186FB6; border-color:#000000; color:white" |Cerulean | style="background-color: #47B9FF; border-color:#47B9FF" |133 @@ -842,7 +1341,23 @@ The table below lists the available skin color choices available to players and | colspan="3" style="background-color: #00003F; border-color:#00003F; color:white" |253 | colspan="3" style="background-color: #000000; border-color:#000000; color:white" |31 |- -! 52 +! 80 +| <code>SKINCOLOR_DREAM</code> +| style="background-color: #adadff; border-color:#000000" |Dream +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffe6db; border-color:#ffe6db" |208 +| colspan="2" style="background-color: #ffc4e0; border-color:#ffc4e0" |200 +| colspan="2" style="background-color: #adadff; border-color:#adadff" |146 +| style="background-color: #47b9ff; border-color:#47b9ff" |133 +| style="background-color: #37a5ff; border-color:#37a5ff; color:white" |134 +| style="background-color: #208ae1; border-color:#208ae1; color:white" |135 +| style="background-color: #186fb6; border-color:#186fb6; color:white" |136 +| style="background-color: #155386; border-color:#155386; color:white" |137 +| style="background-color: #0e3556; border-color:#0e3556; color:white" |138 +| colspan="2" style="background-color: #071e30; border-color:#071e30; color:white" |139 +| colspan="2" style="background-color: #000020; border-color:#000020; color:white" |254 +|- +! 81 | <code>SKINCOLOR_ICY</code> | style="background-color: #CEFAFF; border-color:#000000" |Icy | colspan="4" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -856,11 +1371,31 @@ The table below lists the available skin color choices available to players and | style="background-color: #2E2E5C; border-color:#2E2E5C; color:white" |174 | style="background-color: #21224E; border-color:#21224E; color:white" |175 |- -! 53 +! 82 +| <code>SKINCOLOR_DAYBREAK</code> +| style="background-color: #7777bb; border-color:#000000" |Daybreak +| style="background-color: #ffffcf; border-color:#ffffcf" |80 +| style="background-color: #ffffaf; border-color:#ffffaf" |81 +| style="background-color: #ffff8f; border-color:#ffff8f" |82 +| style="background-color: #ffff4f; border-color:#ffff4f" |72 +| style="background-color: #ebdb57; border-color:#ebdb57" |64 +| style="background-color: #afafaf; border-color:#afafaf" |9 +| style="background-color: #9f9f9f; border-color:#9f9f9f" |11 +| style="background-color: #7777bb; border-color:#7777bb" |171 +| style="background-color: #5252ff; border-color:#5252ff; color:white" |149 +| style="background-color: #3131ff; border-color:#3131ff; color:white" |150 +| style="background-color: #1818ff; border-color:#1818ff; color:white" |151 +| style="background-color: #0000df; border-color:#0000df; color:white" |153 +| style="background-color: #000095; border-color:#000095; color:white" |156 +| style="background-color: #000080; border-color:#000080; color:white" |157 +| style="background-color: #000052; border-color:#000052; color:white" |159 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +|- +! 83 | <code>SKINCOLOR_SAPPHIRE</code> | style="background-color: #396EF0; border-color:#000000; color:white" |Sapphire | style="background-color: #CEFAFF; border-color:#CEFAFF" |128 -| style="background-color: #57D5FF; border-color:#57D5FF" |131 +| style="background-color: #75e7ff; border-color:#75e7ff" |130 | style="background-color: #37A5FF; border-color:#37A5FF; color:white" |134 | style="background-color: #208AE1; border-color:#208AE1; color:white" |135 | style="background-color: #5252FF; border-color:#5252FF; color:white" |149 @@ -876,7 +1411,26 @@ The table below lists the available skin color choices available to players and | style="background-color: #00003F; border-color:#00003F; color:white" |253 | style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 54 +! 84 +| <code>SKINCOLOR_ARCTIC</code> +| style="background-color: #c6c6ff; border-color:#000000" |Arctic +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #f6f6f6; border-color:#f6f6f6" |1 +| style="background-color: #e4e4e4; border-color:#e4e4e4" |3 +| style="background-color: #dadada; border-color:#dadada" |4 +| style="background-color: #c6c6ff; border-color:#c6c6ff" |145 +| style="background-color: #adadff; border-color:#adadff" |146 +| style="background-color: #8c8cff; border-color:#8c8cff" |147 +| colspan="2" style="background-color: #7373ff; border-color:#7373ff" |148 +| style="background-color: #5252ff; border-color:#5252ff; color:white" |149 +| style="background-color: #3131ff; border-color:#3131ff; color:white" |150 +| style="background-color: #0000df; border-color:#0000df; color:white" |153 +| style="background-color: #000095; border-color:#000095; color:white" |156 +| style="background-color: #000052; border-color:#000052; color:white" |159 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +| style="background-color: #000020; border-color:#000020; color:white" |254 +|- +! 85 | <code>SKINCOLOR_CORNFLOWER</code> | style="background-color: #7373FF; border-color:#000000" |Cornflower | style="background-color: #E7E7FF; border-color:#E7E7FF" |144 @@ -893,7 +1447,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #000080; border-color:#000080; color:white" |157 | colspan="3" style="background-color: #000066; border-color:#000066; color:white" |158 |- -! 55 +! 86 | <code>SKINCOLOR_BLUE</code> | style="background-color: #3131FF; border-color:#000000; color:white" |Blue | style="background-color: #ADADFF; border-color:#ADADFF" |146 @@ -913,16 +1467,17 @@ The table below lists the available skin color choices available to players and | style="background-color: #00003F; border-color:#00003F; color:white" |253 | style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 56 +! 87 | <code>SKINCOLOR_COBALT</code> | style="background-color: #0000AC; border-color:#000000; color:white" |Cobalt -| style="background-color: #8C8CFF; border-color:#8C8CFF" |147 -| style="background-color: #7373FF; border-color:#7373FF" |148 +| style="background-color: #c6c6ff; border-color:#c6c6ff" |145 +| style="background-color: #8c8cff; border-color:#8c8cff" |147 | style="background-color: #5252FF; border-color:#5252FF; color:white" |149 | style="background-color: #3131FF; border-color:#3131FF; color:white" |150 -| style="background-color: #0000FF; border-color:#0000FF; color:white" |152 -| style="background-color: #0000C4; border-color:#0000C4; color:white" |154 -| colspan="2" style="background-color: #0000AC; border-color:#0000AC; color:white" |155 +| style="background-color: #1818ff; border-color:#1818ff; color:white" |151 +| style="background-color: #0000df; border-color:#0000df; color:white" |153 +| style="background-color: #0000c4; border-color:#0000c4; color:white" |154 +| style="background-color: #0000ac; border-color:#0000ac; color:white" |155 | style="background-color: #000095; border-color:#000095; color:white" |156 | style="background-color: #000080; border-color:#000080; color:white" |157 | style="background-color: #000066; border-color:#000066; color:white" |158 @@ -930,7 +1485,41 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #00003F; border-color:#00003F; color:white" |253 | colspan="2" style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 57 +! 88 +| <code>SKINCOLOR_MIDNIGHT</code> +| style="background-color: #21224e; border-color:#000000; color:white" |Midnight +| colspan="2" style="background-color: #7777bb; border-color:#7777bb" |171 +| style="background-color: #5454a7; border-color:#5454a7; color:white" |172 +| colspan="2" style="background-color: #414183; border-color:#414183; color:white" |173 +| style="background-color: #2e2e5c; border-color:#2e2e5c; color:white" |174 +| style="background-color: #21224e; border-color:#21224e; color:white" |175 +| style="background-color: #000080; border-color:#000080; color:white" |157 +| style="background-color: #000066; border-color:#000066; color:white" |158 +| style="background-color: #000052; border-color:#000052; color:white" |159 +| colspan="2" style="background-color: #00003f; border-color:#00003f; color:white" |253 +| colspan="2" style="background-color: #000020; border-color:#000020; color:white" |254 +| colspan="2" style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! 89 +| <code>SKINCOLOR_GALAXY</code> +| style="background-color: #5b00c9; border-color:#000000; color:white" |Galaxy +| style="background-color: #d8b7ff; border-color:#d8b7ff" |160 +| style="background-color: #c799ff; border-color:#c799ff" |161 +| style="background-color: #ad6aff; border-color:#ad6aff" |162 +| style="background-color: #9844ff; border-color:#9844ff; color:white" |163 +| style="background-color: #7f16ff; border-color:#7f16ff; color:white" |164 +| style="background-color: #6b00ee; border-color:#6b00ee; color:white" |165 +| colspan="2" style="background-color: #5b00c9; border-color:#5b00c9; color:white" |166 +| style="background-color: #0000c4; border-color:#0000c4; color:white" |154 +| style="background-color: #0000ac; border-color:#0000ac; color:white" |155 +| style="background-color: #000095; border-color:#000095; color:white" |156 +| style="background-color: #000080; border-color:#000080; color:white" |157 +| style="background-color: #000052; border-color:#000052; color:white" |159 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +| style="background-color: #000020; border-color:#000020; color:white" |254 +| style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! 90 | <code>SKINCOLOR_VAPOR</code> | style="background-color: #865CFF; border-color:#000000" |Vapor | style="background-color: #CEFAFF; border-color:#CEFAFF" |128 @@ -944,7 +1533,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #330071; border-color:#330071; color:white" |168 | colspan="2" style="background-color: #240051; border-color:#240051; color:white" |169 |- -! 58 +! 91 | <code>SKINCOLOR_DUSK</code> | style="background-color: #414183; border-color:#000000; color:white" |Dusk | style="background-color: #ADADFF; border-color:#ADADFF" |146 @@ -957,7 +1546,23 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #240051; border-color:#240051; color:white" |169 | colspan="2" style="background-color: #00003F; border-color:#00003F; color:white" |253 |- -! 59 +! 92 +| <code>SKINCOLOR_MAJESTY</code> +| style="background-color: #ad6aff; border-color:#000000" |Majesty +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #f6f6f6; border-color:#f6f6f6" |1 +| style="background-color: #ffcaff; border-color:#ffcaff" |176 +| colspan="2" style="background-color: #d8b7ff; border-color:#d8b7ff" |160 +| style="background-color: #c799ff; border-color:#c799ff" |161 +| colspan="2" style="background-color: #ad6aff; border-color:#ad6aff" |162 +| style="background-color: #9844ff; border-color:#9844ff; color:white" |163 +| style="background-color: #5454a7; border-color:#5454a7; color:white" |172 +| style="background-color: #414183; border-color:#414183; color:white" |173 +| colspan="2" style="background-color: #2e2e5c; border-color:#2e2e5c; color:white" |174 +| style="background-color: #21224e; border-color:#21224e; color:white" |175 +| colspan="2" style="background-color: #071e30; border-color:#071e30; color:white" |139 +|- +! 93 | <code>SKINCOLOR_PASTEL</code> | style="background-color: #C799FF; border-color:#000000" |Pastel | colspan="2" style="background-color: #E7E7FF; border-color:#E7E7FF" |144 @@ -971,7 +1576,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #48009F; border-color:#48009F; color:white" |167 | style="background-color: #330071; border-color:#330071; color:white" |168 |- -! 60 +! 94 | <code>SKINCOLOR_PURPLE</code> | style="background-color: #7F16FF; border-color:#000000; color:white" |Purple | style="background-color: #D8B7FF; border-color:#D8B7FF" |160 @@ -985,25 +1590,79 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #330071; border-color:#330071; color:white" |168 | colspan="2" style="background-color: #240051; border-color:#240051; color:white" |169 |- -! 61 +! 95 +| <code>SKINCOLOR_NOBLE</code> +| style="background-color: #5252ff; border-color:#000000; color:white" |Noble +| style="background-color: #e7e7ff; border-color:#e7e7ff" |144 +| style="background-color: #adadff; border-color:#adadff" |146 +| style="background-color: #8c8cff; border-color:#8c8cff" |147 +| style="background-color: #7373ff; border-color:#7373ff" |148 +| style="background-color: #5252ff; border-color:#5252ff; color:white" |149 +| colspan="2" style="background-color: #7f16ff; border-color:#7f16ff; color:white" |164 +| style="background-color: #6b00ee; border-color:#6b00ee; color:white" |165 +| style="background-color: #5b00c9; border-color:#5b00c9; color:white" |166 +| style="background-color: #790079; border-color:#790079; color:white" |185 +| colspan="2" style="background-color: #550055; border-color:#550055; color:white" |186 +| colspan="2" style="background-color: #350035; border-color:#350035; color:white" |187 +| style="background-color: #171717; border-color:#171717; color:white" |28 +| style="background-color: #0f0f0f; border-color:#0f0f0f; color:white" |29 +|- +! 96 +| <code>SKINCOLOR_FUCHSIA</code> +| style="background-color: #bf00bf; border-color:#000000; color:white" |Fuchsia +| style="background-color: #ffc4e0; border-color:#ffc4e0" |200 +| style="background-color: #ff99c0; border-color:#ff99c0" |201 +| style="background-color: #dd578c; border-color:#dd578c" |203 +| colspan="2" style="background-color: #c73d74; border-color:#c73d74; color:white" |204 +| style="background-color: #bf00bf; border-color:#bf00bf; color:white" |183 +| colspan="2" style="background-color: #a200a2; border-color:#a200a2; color:white" |184 +| style="background-color: #6b00ee; border-color:#6b00ee; color:white" |165 +| style="background-color: #5b00c9; border-color:#5b00c9; color:white" |166 +| style="background-color: #48009f; border-color:#48009f; color:white" |167 +| style="background-color: #330071; border-color:#330071; color:white" |168 +| style="background-color: #240051; border-color:#240051; color:white" |169 +| style="background-color: #000052; border-color:#000052; color:white" |159 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +| style="background-color: #000020; border-color:#000020; color:white" |254 +|- +! 97 | <code>SKINCOLOR_BUBBLEGUM</code> | style="background-color: #FFC4E0; border-color:#000000" |Bubblegum | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="2" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 -| colspan="2" style="background-color: #FFC4E0; border-color:#FFC4E0" |200 +| style="background-color: #ffcaff; border-color:#ffcaff" |176 +| style="background-color: #ffaaff; border-color:#ffaaff" |177 | style="background-color: #FF8AFF; border-color:#FF8AFF" |178 | style="background-color: #FF6AFF; border-color:#FF6AFF" |179 | style="background-color: #FF4AFF; border-color:#FF4AFF" |180 | style="background-color: #FF00FF; border-color:#FF00FF; color:white" |181 | style="background-color: #DD00DD; border-color:#DD00DD; color:white" |182 -| style="background-color: #9844FF; border-color:#9844FF; color:white" |163 -| style="background-color: #7F16FF; border-color:#7F16FF; color:white" |164 -| style="background-color: #6B00EE; border-color:#6B00EE; color:white" |165 -| style="background-color: #5B00C9; border-color:#5B00C9; color:white" |166 -| style="background-color: #48009F; border-color:#48009F; color:white" |167 +| style="background-color: #7f16ff; border-color:#7f16ff; color:white" |164 +| style="background-color: #5b00c9; border-color:#5b00c9; color:white" |166 +| style="background-color: #48009f; border-color:#48009f; color:white" |167 | style="background-color: #330071; border-color:#330071; color:white" |168 +| style="background-color: #240051; border-color:#240051; color:white" |169 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 |- -! 62 +! 98 +| <code>SKINCOLOR_SIBERITE</code> +| style="background-color: #dd00dd; border-color:#000000; color:white" |Siberite +| style="background-color: #ffe7f6; border-color:#ffe7f6" |252 +| style="background-color: #ffaaff; border-color:#ffaaff" |177 +| style="background-color: #ff6aff; border-color:#ff6aff" |179 +| style="background-color: #ff4aff; border-color:#ff4aff" |180 +| style="background-color: #ff00ff; border-color:#ff00ff; color:white" |181 +| style="background-color: #ff00ff; border-color:#ff00ff; color:white" |181 +| colspan="2" style="background-color: #dd00dd; border-color:#dd00dd; color:white" |182 +| style="background-color: #bf00bf; border-color:#bf00bf; color:white" |183 +| style="background-color: #7f16ff; border-color:#7f16ff; color:white" |164 +| style="background-color: #5b00c9; border-color:#5b00c9; color:white" |166 +| colspan="2" style="background-color: #48009f; border-color:#48009f; color:white" |167 +| style="background-color: #330071; border-color:#330071; color:white" |168 +| style="background-color: #240051; border-color:#240051; color:white" |169 +| style="background-color: #000052; border-color:#000052; color:white" |159 +|- +! 99 | <code>SKINCOLOR_MAGENTA</code> | style="background-color: #FF00FF; border-color:#000000; color:white" |Magenta | colspan="2" style="background-color: #FF6AFF; border-color:#FF6AFF" |179 @@ -1016,7 +1675,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #550055; border-color:#550055; color:white" |186 | colspan="2" style="background-color: #350035; border-color:#350035; color:white" |187 |- -! 63 +! 100 | <code>SKINCOLOR_NEON</code> | style="background-color: #A200A2; border-color:#000000; color:white" |Neon | style="background-color: #FF6AFF; border-color:#FF6AFF" |179 @@ -1031,7 +1690,7 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #0F0F0F; border-color:#0F0F0F; color:white" |29 | style="background-color: #070707; border-color:#070707; color:white" |30 |- -! 64 +! 101 | <code>SKINCOLOR_VIOLET</code> | style="background-color: #B51F8B; border-color:#000000; color:white" |Violet | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -1047,7 +1706,21 @@ The table below lists the available skin color choices available to players and | style="background-color: #00003F; border-color:#00003F; color:white" |253 | colspan="2" style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 65 +! 102 +| <code>SKINCOLOR_ROYAL</code> +| style="background-color: #b76fb7; border-color:#000000" |Royal +| style="background-color: #ffe6db; border-color:#ffe6db" |208 +| style="background-color: #ffbfbf; border-color:#ffbfbf" |209 +| colspan="3" style="background-color: #cf7fcf; border-color:#cf7fcf" |192 +| colspan="2" style="background-color: #b76fb7; border-color:#b76fb7" |193 +| colspan="2" style="background-color: #9f5f9f; border-color:#9f5f9f" |194 +| style="background-color: #5454a7; border-color:#5454a7; color:white" |172 +| style="background-color: #414183; border-color:#414183; color:white" |173 +| style="background-color: #2e2e5c; border-color:#2e2e5c; color:white" |174 +| colspan="2" style="background-color: #21224e; border-color:#21224e; color:white" |175 +| colspan="2" style="background-color: #071e30; border-color:#071e30; color:white" |139 +|- +! 103 | <code>SKINCOLOR_LILAC</code> | style="background-color: #E18585; border-color:#000000" |Lilac | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -1064,7 +1737,41 @@ The table below lists the available skin color choices available to players and | style="background-color: #000020; border-color:#000020; color:white" |254 | style="background-color: #000000; border-color:#000000; color:white" |31 |- -! 66 +! 104 +| <code>SKINCOLOR_MAUVE</code> +| style="background-color: #cf7fcf; border-color:#000000" |Mauve +| style="background-color: #ffcaff; border-color:#ffcaff" |176 +| style="background-color: #ffaaff; border-color:#ffaaff" |177 +| style="background-color: #ff8aff; border-color:#ff8aff" |178 +| style="background-color: #cf7fcf; border-color:#cf7fcf" |192 +| style="background-color: #b76fb7; border-color:#b76fb7" |193 +| style="background-color: #9f5f9f; border-color:#9f5f9f" |194 +| colspan="2" style="background-color: #874f87; border-color:#874f87; color:white" |195 +| style="background-color: #6f3f6f; border-color:#6f3f6f; color:white" |196 +| colspan="2" style="background-color: #790079; border-color:#790079; color:white" |185 +| colspan="2" style="background-color: #550055; border-color:#550055; color:white" |186 +| colspan="2" style="background-color: #350035; border-color:#350035; color:white" |187 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +|- +! 105 +| <code>SKINCOLOR_EVENTIDE</code> +| style="background-color: #c73d74; border-color:#000000; color:white" |Eventide +| style="background-color: #ffa855; border-color:#ffa855" |51 +| style="background-color: #ff9736; border-color:#ff9736" |52 +| style="background-color: #ff8619; border-color:#ff8619" |53 +| style="background-color: #ff5f5f; border-color:#ff5f5f" |33 +| style="background-color: #ff3f3f; border-color:#ff3f3f; color:white" |34 +| style="background-color: #c73d74; border-color:#c73d74; color:white" |204 +| colspan="2" style="background-color: #bf00bf; border-color:#bf00bf; color:white" |183 +| colspan="2" style="background-color: #a200a2; border-color:#a200a2; color:white" |184 +| style="background-color: #5b00c9; border-color:#5b00c9; color:white" |166 +| style="background-color: #48009f; border-color:#48009f; color:white" |167 +| style="background-color: #330071; border-color:#330071; color:white" |168 +| style="background-color: #240051; border-color:#240051; color:white" |169 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +| style="background-color: #000020; border-color:#000020; color:white" |254 +|- +! 106 | <code>SKINCOLOR_PLUM</code> | style="background-color: #A73F3F; border-color:#000000; color:white" |Plum | style="background-color: #FFC4E0; border-color:#FFC4E0" |200 @@ -1080,7 +1787,7 @@ The table below lists the available skin color choices available to players and | style="background-color: #00003F; border-color:#00003F; color:white" |253 | style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 67 +! 107 | <code>SKINCOLOR_RASPBERRY</code> | style="background-color: #B13466; border-color:#000000; color:white" |Raspberry | style="background-color: #FFC4E0; border-color:#FFC4E0" |200 @@ -1095,7 +1802,25 @@ The table below lists the available skin color choices available to players and | style="background-color: #350035; border-color:#350035; color:white" |187 | colspan="2" style="background-color: #000020; border-color:#000020; color:white" |254 |- -! 68 +! 108 +| <code>SKINCOLOR_TAFFY</code> +| style="background-color: #ff6aff; border-color:#000000" |Taffy +| style="background-color: #f6f6f6; border-color:#f6f6f6" |1 +| colspan="2" style="background-color: #ffcaff; border-color:#ffcaff" |176 +| style="background-color: #ffaaff; border-color:#ffaaff" |177 +| style="background-color: #ff8aff; border-color:#ff8aff" |178 +| style="background-color: #ff6aff; border-color:#ff6aff" |179 +| style="background-color: #f570a5; border-color:#f570a5" |202 +| style="background-color: #dd578c; border-color:#dd578c" |203 +| colspan="2" style="background-color: #c73d74; border-color:#c73d74; color:white" |204 +| style="background-color: #b13466; border-color:#b13466; color:white" |205 +| style="background-color: #9d2f5b; border-color:#9d2f5b; color:white" |206 +| style="background-color: #85274d; border-color:#85274d; color:white" |207 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| style="background-color: #470000; border-color:#470000; color:white" |46 +|- +! 109 | <code>SKINCOLOR_ROSY</code> | style="background-color: #F570A5; border-color:#000000" |Rosy | style="background-color: #FFE7F6; border-color:#FFE7F6" |252 @@ -1108,887 +1833,53 @@ The table below lists the available skin color choices available to players and | colspan="2" style="background-color: #9D2F5B; border-color:#9D2F5B; color:white" |206 | style="background-color: #85274D; border-color:#85274D; color:white" |207 |- -! TODO -| <code>SKINCOLOR_MOONSTONE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Moonstone -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_ROSEWOOD</code> -| style="background-color: #FFFFFF; border-color:#000000" |Rosewood -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_LATTE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Latte -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_BOULDER</code> -| style="background-color: #FFFFFF; border-color:#000000" |Boulder -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_SEPIA</code> -| style="background-color: #FFFFFF; border-color:#000000" |Sepia -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_ECRU</code> -| style="background-color: #FFFFFF; border-color:#000000" |Ecru -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_ROSEBUSH</code> -| style="background-color: #FFFFFF; border-color:#000000" |Rosebush -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_EGGPLANT</code> -| style="background-color: #FFFFFF; border-color:#000000" |Eggplant -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_CHERRY</code> -| style="background-color: #FFFFFF; border-color:#000000" |Cherry -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_PEPPER</code> -| style="background-color: #FFFFFF; border-color:#000000" |Pepper -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_GARNET</code> -| style="background-color: #FFFFFF; border-color:#000000" |Garnet -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_FOUNDATION</code> -| style="background-color: #FFFFFF; border-color:#000000" |Foundation -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_TANGERINE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Tangerine -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_TOPAZ</code> -| style="background-color: #FFFFFF; border-color:#000000" |Topaz -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_GOLDENROD</code> -| style="background-color: #FFFFFF; border-color:#000000" |Goldenrod -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_PEAR</code> -| style="background-color: #FFFFFF; border-color:#000000" |Pear -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_LEMON</code> -| style="background-color: #FFFFFF; border-color:#000000" |Lemon -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_HEADLIGHT</code> -| style="background-color: #FFFFFF; border-color:#000000" |Headlight -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_CHARTREUSE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Chartreuse -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_SHAMROCK</code> -| style="background-color: #FFFFFF; border-color:#000000" |Shamrock -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_JADE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Jade -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_MASTER</code> -| style="background-color: #FFFFFF; border-color:#000000" |Master -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_ISLAND</code> -| style="background-color: #FFFFFF; border-color:#000000" |Island -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_BOTTLE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Bottle -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_OCEAN</code> -| style="background-color: #FFFFFF; border-color:#000000" |Ocean -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_TURQUOISE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Turquoise -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_AQUAMARINE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Aquamarine -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_MARINE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Marine -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_DREAM</code> -| style="background-color: #FFFFFF; border-color:#000000" |Dream -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_DAYBREAK</code> -| style="background-color: #FFFFFF; border-color:#000000" |Daybreak -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_ARCTIC</code> -| style="background-color: #FFFFFF; border-color:#000000" |Arctic -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_MIDNIGHT</code> -| style="background-color: #FFFFFF; border-color:#000000" |Midnight -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_GALAXY</code> -| style="background-color: #FFFFFF; border-color:#000000" |Galaxy -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_MAJESTY</code> -| style="background-color: #FFFFFF; border-color:#000000" |Majesty -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_NOBLE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Noble -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_FUCHSIA</code> -| style="background-color: #FFFFFF; border-color:#000000" |Fuchsia -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_SIBERITE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Siberite -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_ROYAL</code> -| style="background-color: #FFFFFF; border-color:#000000" |Royal -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_MAUVE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Mauve -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_EVENTIDE</code> -| style="background-color: #FFFFFF; border-color:#000000" |Eventide -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO -| <code>SKINCOLOR_TAFFY</code> -| style="background-color: #FFFFFF; border-color:#000000" |Taffy -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO +! 110 | <code>SKINCOLOR_FANCY</code> -| style="background-color: #FFFFFF; border-color:#000000" |Fancy -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO +| style="background-color: #ff9f9f; border-color:#000000" |Fancy +| style="background-color: #ffffff; border-color:#ffffff" |0 +| style="background-color: #ffe6db; border-color:#ffe6db" |208 +| style="background-color: #ffcb97; border-color:#ffcb97" |49 +| colspan="2" style="background-color: #ff9f9f; border-color:#ff9f9f" |210 +| colspan="2" style="background-color: #f570a5; border-color:#f570a5" |202 +| style="background-color: #dd578c; border-color:#dd578c" |203 +| colspan="2" style="background-color: #c73d74; border-color:#c73d74; color:white" |204 +| style="background-color: #b13466; border-color:#b13466; color:white" |205 +| style="background-color: #9d2f5b; border-color:#9d2f5b; color:white" |206 +| colspan="2" style="background-color: #85274d; border-color:#85274d; color:white" |207 +| colspan="2" style="background-color: #550055; border-color:#550055; color:white" |186 +|- +! 111 | <code>SKINCOLOR_SANGRIA</code> -| style="background-color: #FFFFFF; border-color:#000000" |Sangria -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! TODO +| style="background-color: #a73f3f; border-color:#000000; color:white" |Sangria +| style="background-color: #ff9f9f; border-color:#ff9f9f" |210 +| style="background-color: #ff7f7f; border-color:#ff7f7f" |32 +| style="background-color: #ff5f5f; border-color:#ff5f5f" |33 +| colspan="2" style="background-color: #ff3f3f; border-color:#ff3f3f; color:white" |34 +| colspan="2" style="background-color: #a73f3f; border-color:#a73f3f; color:white" |215 +| colspan="2" style="background-color: #85274d; border-color:#85274d; color:white" |207 +| style="background-color: #790079; border-color:#790079; color:white" |185 +| colspan="3" style="background-color: #550055; border-color:#550055; color:white" |186 +| colspan="2" style="background-color: #240051; border-color:#240051; color:white" |169 +| style="background-color: #00003f; border-color:#00003f; color:white" |253 +|- +! 112 | <code>SKINCOLOR_VOLCANIC</code> -| style="background-color: #FFFFFF; border-color:#000000" |Volcanic -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -| style="background-color: #FFFFFF; border-color:#FFFFFF" | - -|- -! ''69'' +| style="background-color: #5f0000; border-color:#000000; color:white" |Volcanic +| style="background-color: #ff7500; border-color:#ff7500" |54 +| style="background-color: #ef0000; border-color:#ef0000; color:white" |36 +| style="background-color: #8f0000; border-color:#8f0000; color:white" |42 +| style="background-color: #6f0000; border-color:#6f0000; color:white" |44 +| style="background-color: #5f0000; border-color:#5f0000; color:white" |45 +| colspan="2" style="background-color: #470000; border-color:#470000; color:white" |46 +| style="background-color: #370000; border-color:#370000; color:white" |47 +| style="background-color: #171717; border-color:#171717; color:white" |28 +| colspan="2" style="background-color: #00003f; border-color:#00003f; color:white" |253 +| style="background-color: #000020; border-color:#000020; color:white" |254 +| style="background-color: #000020; border-color:#000020; color:white" |254 +| style="background-color: #070707; border-color:#070707; color:white" |30 +| colspan="2" style="background-color: #000000; border-color:#000000; color:white" |31 +|- +! ''113'' ! <code>''MAXSKINCOLORS''</code> <sup>2</sup> ! colspan="17" | @@ -2024,7 +1915,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the !#15 !#16 |- -! 69 +! 114 | <code>SKINCOLOR_SUPERSILVER1</code> | rowspan="5" style="background-color: #DADADA; border-color:#000000" |Silver | colspan="12" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2032,7 +1923,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #EDEDED; border-color:#EDEDED" |2 | style="background-color: #E4E4E4; border-color:#E4E4E4" |3 |- -! 70 +! 115 | <code>SKINCOLOR_SUPERSILVER2</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | style="background-color: #F6F6F6; border-color:#F6F6F6" |1 @@ -2042,7 +1933,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #D1D1D1; border-color:#D1D1D1" |5 | style="background-color: #BFBFBF; border-color:#BFBFBF" |7 |- -! 71 +! 116 | <code>SKINCOLOR_SUPERSILVER3</code> | style="background-color: #F6F6F6; border-color:#F6F6F6" |1 | colspan="2" style="background-color: #EDEDED; border-color:#EDEDED" |2 @@ -2053,7 +1944,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #AFAFAF; border-color:#AFAFAF" |9 | style="background-color: #9F9F9F; border-color:#9F9F9F" |11 |- -! 72 +! 117 | <code>SKINCOLOR_SUPERSILVER4</code> | style="background-color: #EDEDED; border-color:#EDEDED" |2 | colspan="2" style="background-color: #E4E4E4; border-color:#E4E4E4" |3 @@ -2066,7 +1957,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #7F7F7F; border-color:#7F7F7F" |15 | style="background-color: #6F6F6F; border-color:#6F6F6F; color:white" |17 |- -! 73 +! 118 | <code>SKINCOLOR_SUPERSILVER5</code> | colspan="2" style="background-color: #E4E4E4; border-color:#E4E4E4" |3 | colspan="6" style="background-color: #DADADA; border-color:#DADADA" |4 @@ -2079,7 +1970,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #6F6F6F; border-color:#6F6F6F; color:white" |17 | style="background-color: #5F5F5F; border-color:#5F5F5F; color:white" |19 |- -! 74 +! 119 | <code>SKINCOLOR_SUPERRED1</code> | rowspan="5" style="background-color: #FF5F5F; border-color:#000000" |Red | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2087,7 +1978,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FFBFBF; border-color:#FFBFBF" |209 | colspan="2" style="background-color: #FF9F9F; border-color:#FF9F9F" |210 |- -! 75 +! 120 | <code>SKINCOLOR_SUPERRED2</code> | colspan="3" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="3" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -2096,7 +1987,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FF7F7F; border-color:#FF7F7F" |32 | colspan="2" style="background-color: #FF5F5F; border-color:#FF5F5F" |33 |- -! 76 +! 121 | <code>SKINCOLOR_SUPERRED3</code> | colspan="2" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="2" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -2107,7 +1998,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FF3F3F; border-color:#FF3F3F" |34 | colspan="2" style="background-color: #FF0000; border-color:#FF0000; color:white" |35 |- -! 77 +! 122 | <code>SKINCOLOR_SUPERRED4</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -2119,7 +2010,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FF0000; border-color:#FF0000; color:white" |35 | colspan="2" style="background-color: #EF0000; border-color:#EF0000; color:white" |36 |- -! 78 +! 123 | <code>SKINCOLOR_SUPERRED5</code> | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 | style="background-color: #FFBFBF; border-color:#FFBFBF" |209 @@ -2131,7 +2022,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #EF0000; border-color:#EF0000; color:white" |36 | colspan="2" style="background-color: #DF0000; border-color:#DF0000; color:white" |37 |- -! 79 +! 124 | <code>SKINCOLOR_SUPERORANGE1</code> | rowspan="5" style="background-color: #FF8619; border-color:#000000" |Orange | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2142,7 +2033,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #FFA855; border-color:#FFA855" |51 | style="background-color: #FF9736; border-color:#FF9736" |52 |- -! 80 +! 125 | <code>SKINCOLOR_SUPERORANGE2</code> | colspan="4" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="2" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -2152,7 +2043,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FFA855; border-color:#FFA855" |51 | colspan="2" style="background-color: #FF9736; border-color:#FF9736" |52 |- -! 81 +! 126 | <code>SKINCOLOR_SUPERORANGE3</code> | colspan="2" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="2" style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -2163,7 +2054,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FF9736; border-color:#FF9736" |52 | colspan="2" style="background-color: #FF8619; border-color:#FF8619" |53 |- -! 82 +! 127 | <code>SKINCOLOR_SUPERORANGE4</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 @@ -2182,7 +2073,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #874307; border-color:#874307; color:white" |69 | style="background-color: #752900; border-color:#752900; color:white" |70 |- -! 83 +! 128 | <code>SKINCOLOR_SUPERORANGE5</code> | style="background-color: #FFE6DB; border-color:#FFE6DB" |208 | style="background-color: #FFDBC0; border-color:#FFDBC0" |48 @@ -2201,7 +2092,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #752900; border-color:#752900; color:white" |70 | style="background-color: #550000; border-color:#550000; color:white" |71 |- -! 84 +! 129 | <code>SKINCOLOR_SUPERGOLD1</code> | rowspan="5" style="background-color: #FFFF00; border-color:#000000" |Gold | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2211,7 +2102,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #FFFF73; border-color:#FFFF73" |83 | style="background-color: #FFFF4F; border-color:#FFFF4F" |72 |- -! 85 +! 130 | <code>SKINCOLOR_SUPERGOLD2</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | style="background-color: #FFFFCF; border-color:#FFFFCF" |80 @@ -2223,7 +2114,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #EBDB57; border-color:#EBDB57" |64 | style="background-color: #D7BB43; border-color:#D7BB43" |65 |- -! 86 +! 131 | <code>SKINCOLOR_SUPERGOLD3</code> | style="background-color: #FFFFAF; border-color:#FFFFAF" |81 | style="background-color: #FFFF8F; border-color:#FFFF8F" |82 @@ -2235,7 +2126,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #C39B2F; border-color:#C39B2F" |66 | style="background-color: #AF7B1F; border-color:#AF7B1F; color:white" |67 |- -! 87 +! 132 | <code>SKINCOLOR_SUPERGOLD4</code> | style="background-color: #FFFF73; border-color:#FFFF73" |83 | colspan="2" style="background-color: #FFFF4F; border-color:#FFFF4F" |72 @@ -2248,7 +2139,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #874307; border-color:#874307; color:white" |69 | style="background-color: #752900; border-color:#752900; color:white" |70 |- -! 88 +! 133 | <code>SKINCOLOR_SUPERGOLD5</code> | colspan="2" style="background-color: #FFFF4F; border-color:#FFFF4F" |72 | colspan="6" style="background-color: #FFFF00; border-color:#FFFF00" |73 @@ -2261,14 +2152,14 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #752900; border-color:#752900; color:white" |70 | style="background-color: #550000; border-color:#550000; color:white" |71 |- -! 89 +! 134 | <code>SKINCOLOR_SUPERPERIDOT1</code> | rowspan="5" style="background-color: #A7CA04; border-color:#000000" |Peridot | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="3" style="background-color: #DEFFA8; border-color:#DEFFA8" |88 | colspan="3" style="background-color: #C5E800; border-color:#C5E800" |188 |- -! 90 +! 135 | <code>SKINCOLOR_SUPERPERIDOT2</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="3" style="background-color: #DEFFA8; border-color:#DEFFA8" |88 @@ -2276,7 +2167,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="6" style="background-color: #A7CA04; border-color:#A7CA04" |189 | colspan="2" style="background-color: #8CA80B; border-color:#8CA80B; color:white" |190 |- -! 91 +! 136 | <code>SKINCOLOR_SUPERPERIDOT3</code> | colspan="2" style="background-color: #DEFFA8; border-color:#DEFFA8" |88 | colspan="4" style="background-color: #C5E800; border-color:#C5E800" |188 @@ -2284,7 +2175,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #8CA80B; border-color:#8CA80B; color:white" |190 | colspan="2" style="background-color: #6C7C12; border-color:#6C7C12; color:white" |191 |- -! 92 +! 137 | <code>SKINCOLOR_SUPERPERIDOT4</code> | style="background-color: #DEFFA8; border-color:#DEFFA8" |88 | colspan="2" style="background-color: #C5E800; border-color:#C5E800" |188 @@ -2294,7 +2185,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #4A5A30; border-color:#4A5A30; color:white" |94 | style="background-color: #323F1D; border-color:#323F1D; color:white" |95 |- -! 93 +! 138 | <code>SKINCOLOR_SUPERPERIDOT5</code> | colspan="2" style="background-color: #C5E800; border-color:#C5E800" |188 | colspan="6" style="background-color: #A7CA04; border-color:#A7CA04" |189 @@ -2304,7 +2195,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #323F1D; border-color:#323F1D; color:white" |95 | style="background-color: #002D00; border-color:#002D00; color:white" |119 |- -! 94 +! 139 | <code>SKINCOLOR_SUPERSKY1</code> | rowspan="5" style="background-color: #47B9FF; border-color:#000000" |Sky | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2314,7 +2205,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #57D5FF; border-color:#57D5FF" |131 | style="background-color: #4FC7FF; border-color:#4FC7FF" |132 |- -! 95 +! 140 | <code>SKINCOLOR_SUPERSKY2</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | style="background-color: #CEFAFF; border-color:#CEFAFF" |128 @@ -2325,7 +2216,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="6" style="background-color: #47B9FF; border-color:#47B9FF" |133 | colspan="2" style="background-color: #37A5FF; border-color:#37A5FF; color:white" |134 |- -! 96 +! 141 | <code>SKINCOLOR_SUPERSKY3</code> | style="background-color: #A6F1FF; border-color:#A6F1FF" |129 | style="background-color: #75E7FF; border-color:#75E7FF" |130 @@ -2335,7 +2226,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #37A5FF; border-color:#37A5FF; color:white" |134 | colspan="2" style="background-color: #208AE1; border-color:#208AE1; color:white" |135 |- -! 97 +! 142 | <code>SKINCOLOR_SUPERSKY4</code> | style="background-color: #57D5FF; border-color:#57D5FF" |131 | colspan="2" style="background-color: #4FC7FF; border-color:#4FC7FF" |132 @@ -2346,7 +2237,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #155386; border-color:#155386; color:white" |137 | style="background-color: #0E3556; border-color:#0E3556; color:white" |138 |- -! 98 +! 143 | <code>SKINCOLOR_SUPERSKY5</code> | colspan="2" style="background-color: #4FC7FF; border-color:#4FC7FF" |132 | colspan="6" style="background-color: #47B9FF; border-color:#47B9FF" |133 @@ -2357,7 +2248,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #0E3556; border-color:#0E3556; color:white" |138 | style="background-color: #071E30; border-color:#071E30; color:white" |139 |- -! 99 +! 144 | <code>SKINCOLOR_SUPERPURPLE1</code> | rowspan="5" style="background-color: #9844FF; border-color:#000000; color:white" |Purple | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2366,7 +2257,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #C799FF; border-color:#C799FF" |161 | style="background-color: #AD6AFF; border-color:#AD6AFF" |162 |- -! 100 +! 145 | <code>SKINCOLOR_SUPERPURPLE2</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | style="background-color: #E7E7FF; border-color:#E7E7FF" |144 @@ -2377,7 +2268,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #7F16FF; border-color:#7F16FF; color:white" |164 | colspan="2" style="background-color: #6B00EE; border-color:#6B00EE; color:white" |165 |- -! 101 +! 146 | <code>SKINCOLOR_SUPERPURPLE3</code> | colspan="2" style="background-color: #D8B7FF; border-color:#D8B7FF" |160 | colspan="2" style="background-color: #C799FF; border-color:#C799FF" |161 @@ -2387,7 +2278,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #6B00EE; border-color:#6B00EE; color:white" |165 | colspan="2" style="background-color: #5B00C9; border-color:#5B00C9; color:white" |166 |- -! 102 +! 147 | <code>SKINCOLOR_SUPERPURPLE4</code> | style="background-color: #C799FF; border-color:#C799FF" |161 | colspan="2" style="background-color: #AD6AFF; border-color:#AD6AFF" |162 @@ -2399,7 +2290,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #330071; border-color:#330071; color:white" |168 | style="background-color: #240051; border-color:#240051; color:white" |169 |- -! 103 +! 148 | <code>SKINCOLOR_SUPERPURPLE5</code> | colspan="2" style="background-color: #AD6AFF; border-color:#AD6AFF" |162 | colspan="4" style="background-color: #9844FF; border-color:#9844FF; color:white" |163 @@ -2411,7 +2302,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #240051; border-color:#240051; color:white" |169 | style="background-color: #00003F; border-color:#00003F; color:white" |253 |- -! 104 +! 149 | <code>SKINCOLOR_SUPERRUST1</code> | rowspan="5" style="background-color: #9B5B13; border-color:#000000; color:white" |Rust | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2428,7 +2319,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #550000; border-color:#550000; color:white" |71 | style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 105 +! 150 | <code>SKINCOLOR_SUPERRUST2</code> | style="background-color: #FFDBC0; border-color:#FFDBC0" |48 | colspan="2" style="background-color: #FFCB97; border-color:#FFCB97" |49 @@ -2445,7 +2336,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #550000; border-color:#550000; color:white" |71 | style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 106 +! 151 | <code>SKINCOLOR_SUPERRUST3</code> | style="background-color: #FFCB97; border-color:#FFCB97" |49 | style="background-color: #FFB975; border-color:#FFB975" |50 @@ -2461,7 +2352,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #550000; border-color:#550000; color:white" |71 | colspan="2" style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 107 +! 152 | <code>SKINCOLOR_SUPERRUST4</code> | style="background-color: #FFFF4F; border-color:#FFFF4F" |72 | style="background-color: #EBDB57; border-color:#EBDB57" |64 @@ -2474,7 +2365,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #550000; border-color:#550000; color:white" |71 | colspan="3" style="background-color: #470000; border-color:#470000; color:white" |46 |- -! 108 +! 153 | <code>SKINCOLOR_SUPERRUST5</code> | style="background-color: #D7BB43; border-color:#D7BB43" |65 | style="background-color: #C39B2F; border-color:#C39B2F" |66 @@ -2488,7 +2379,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #332B13; border-color:#332B13; color:white" |238 | colspan="2" style="background-color: #2B230F; border-color:#2B230F; color:white" |239 |- -! 109 +! 154 | <code>SKINCOLOR_SUPERTAN1</code> | rowspan="5" style="background-color: #EBDE81; border-color:#000000" |Tan | colspan="10" style="background-color: #FFFFFF; border-color:#FFFFFF" |0 @@ -2496,7 +2387,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | colspan="2" style="background-color: #FFFFAF; border-color:#FFFFAF" |81 | colspan="2" style="background-color: #FFFF8F; border-color:#FFFF8F" |82 |- -! 110 +! 155 | <code>SKINCOLOR_SUPERTAN2</code> | style="background-color: #FFFFFF; border-color:#FFFFFF" |0 | colspan="2" style="background-color: #FFFFCF; border-color:#FFFFCF" |80 @@ -2508,7 +2399,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #96835D; border-color:#96835D; color:white" |87 | style="background-color: #7E6A52; border-color:#7E6A52; color:white" |245 |- -! 111 +! 156 | <code>SKINCOLOR_SUPERTAN3</code> | style="background-color: #FFFFCF; border-color:#FFFFCF" |80 | colspan="2" style="background-color: #FFFFAF; border-color:#FFFFAF" |81 @@ -2521,7 +2412,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #6D5A42; border-color:#6D5A42; color:white" |247 | style="background-color: #5D4B33; border-color:#5D4B33; color:white" |249 |- -! 112 +! 157 | <code>SKINCOLOR_SUPERTAN4</code> | style="background-color: #FFFFAF; border-color:#FFFFAF" |81 | colspan="4" style="background-color: #FFFF8F; border-color:#FFFF8F" |82 @@ -2535,7 +2426,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #4B3C23; border-color:#4B3C23; color:white" |251 | style="background-color: #3F2F17; border-color:#3F2F17; color:white" |237 |- -! 113 +! 158 | <code>SKINCOLOR_SUPERTAN5</code> | colspan="2" style="background-color: #FFFF8F; border-color:#FFFF8F" |82 | colspan="3" style="background-color: #EBDE81; border-color:#EBDE81" |84 @@ -2550,7 +2441,7 @@ In the table below, the columns "#1" to "#16" have the same meaning as with the | style="background-color: #332B13; border-color:#332B13; color:white" |238 | colspan="2" style="background-color: #2B230F; border-color:#2B230F; color:white" |239 |- -! ''113'' +! ''158'' ! <code>''numskincolors''</code> <sup>1</sup> ! colspan="17" | |} @@ -2654,7 +2545,7 @@ Handling of opposite skin colors and their appropriate shade for the End Sign is |P | style="background-color: #EBDE81; border-color:#EBDE81" |84 |- -| style="background-color: #7F532F; border-color:#000000; color:white" |<tt>SKINCOLOR_BRONZE</tt> +| style="background-color: #7F532F; border-color:#000000; color:white" |<tt>SKINCOLOR_BOULDER</tt> | style="background-color: #EF0000; border-color:#000000; color:white" |<tt>SKINCOLOR_KETCHUP</tt> |0 |R @@ -2721,7 +2612,7 @@ Handling of opposite skin colors and their appropriate shade for the End Sign is | style="background-color: #6B00EE; border-color:#6B00EE; color:white" |165 |- | style="background-color: #EF0000; border-color:#000000; color:white" |<tt>SKINCOLOR_KETCHUP</tt> -| style="background-color: #7F532F; border-color:#000000; color:white" |<tt>SKINCOLOR_BRONZE</tt> +| style="background-color: #7F532F; border-color:#000000; color:white" |<tt>SKINCOLOR_BOULDER</tt> |8 |J | style="background-color: #3F2F17; border-color:#178888; color:white" |237 @@ -2822,11 +2713,11 @@ Handling of opposite skin colors and their appropriate shade for the End Sign is |I | style="background-color: #AF0000; border-color:#AF0000; color:white" |40 |- -| style="background-color: #00BF00; border-color:#000000" |<tt>SKINCOLOR_EMERALD</tt> -| style="background-color: #C73D74; border-color:#000000; color:white" |<tt>SKINCOLOR_RUBY</tt> -|4 -|N -| style="background-color: #C73D74; border-color:#C73D74; color:white" |204 +| style="background-color: #00BF00; border-color:#000000" |<tt>SKINCOLOR_SHAMROCK</tt> +| style="background-color: #ff00ff; border-color:#000000; color:white" |<tt>SKINCOLOR_SIBERITE</tt> +|10 +|H +| style="background-color: #5b00c9; border-color:#5b00c9; color:white" |204 |- | style="background-color: #DEFFA8; border-color:#000000" |<tt>SKINCOLOR_MINT</tt> | style="background-color: #B51F8B; border-color:#000000; color:white" |<tt>SKINCOLOR_VIOLET</tt> diff --git a/wiki/List_of_sounds.txt b/wiki/List_of_sounds.txt index 8a2eaa83726b0634a10f6da147449cd9d10700fc..faff35fef8cb74435c6d7d6ead901e2c943ce5d0 100644 --- a/wiki/List_of_sounds.txt +++ b/wiki/List_of_sounds.txt @@ -2222,7 +2222,7 @@ Sounds in SRB2 are stored in <code>[[srb2.pk3]]</code>. Their lump names are in |438 |sfx_s3k83 |[Collapsing] -|'''S3&K:''' Angel Island Zone 2's end bridge collapsing<br/>'''SRB2Kart:''' Player fails a start boost +|'''S3&K:''' Angel Island Zone 2's end bridge collapsing<br/>'''SRB2Kart:''' Player's engine backfires as a result of failed start boost |- |439 |sfx_s3k84 diff --git a/wiki/Object_flags.txt b/wiki/Object_flags.txt index 3babdcc01c81d4101bb40c901bc2fcd33a9e1679..091e982d0552603f78f6bfe6a2d582797ad75a4a 100644 --- a/wiki/Object_flags.txt +++ b/wiki/Object_flags.txt @@ -1,8 +1,8 @@ '''Object flags''' are a series of toggles that determine the properties of an [[Object]]. They are used for a variety of different purposes, such as the Object's interaction with the level environment and other Objects as well as the type of thinker it uses. Some of them have very specific uses while others set more general options. -There are three sets of flags: The ''primary'' flags are the basic properties that must be set for every Object and that are checked on level load. In most cases, these properties will not change during runtime, although the action <code>[[A_SetObjectFlags]]</code> can be used if this is necessary. In contrast to these, the ''secondary'' flags are used for temporary properties that are added and removed by certain actions for short periods of time. While the primary flags must be set for every custom Object in its [[SOC]] block, the secondary flags can only be set during runtime. The action <code>[[A_SetObjectFlags2]]</code> can be used to modify them. Finally, a set of ''extra'' flags also exists for primarily physics-related effects such as marking when an Object is underwater or should have flipped sprites/physics. These can only be modified directly via [[Lua]]. +There are three sets of flags: The ''primary'' flags are the basic properties that must be set for every Object and that are checked on level load. In most cases, these properties will not change during runtime, although the [[Actions|action]] <code>[[A_SetObjectFlags]]</code> can be used if this is necessary. In contrast to these, the ''secondary'' flags are used for temporary properties that are added and removed by certain actions for short periods of time. While the primary flags must be set for every custom Object in its [[SOC]] block, the secondary flags can only be set during runtime. The action <code>[[A_SetObjectFlags2]]</code> can be used to modify them. Finally, a set of ''extra'' flags also exists for primarily physics-related effects such as marking when an Object is underwater or should have flipped sprites/physics. These can only be modified directly via [[Lua]]. -The primary, secondary and extra Object flags for an Object are each stored in 32-bit integers where every bit represents a flag, i.e. 0 means "disabled" and 1 means "enabled". To set several flags at once, the bitwise OR operator (<code>|</code>) has to be performed on them. For example, to give all Objects of a particular type the primary flags <code>MF_SPECIAL</code>, <code>MF_ENEMY</code> and <code>MF_RUNSPAWNFUNC</code>, one would write <code>Flags = MF_SPECIAL|MF_ENEMY|MF_RUNSPAWNFUNC</code> in the corresponding <code>Object</code> SOC block. +The primary, secondary, and extra Object flags for an Object are each stored in 32-bit integers where every bit represents a flag, i.e. 0 means "disabled" and 1 means "enabled". To set several flags at once, the bitwise OR operator (<code>|</code>) has to be performed on them. For example, to give all Objects of a particular type the primary flags <code>MF_SPECIAL</code>, <code>MF_ENEMY</code>, and <code>MF_RUNSPAWNFUNC</code>, one would write <code>Flags = MF_SPECIAL|MF_ENEMY|MF_RUNSPAWNFUNC</code> in the corresponding <code>Object</code> SOC block. == Primary flags == {| class="wikitable" @@ -233,7 +233,7 @@ The primary, secondary and extra Object flags for an Object are each stored in 3 ! 4096 ! <code>0x00001000</code> | <code>MF2_INVERTAIMABLE</code> -| Inverts the conditions for this Object to be able to be targeted by A_LookForEnemies, for mechanics such as Fang's pop gun. Objects with the <code>MF_SHOOTABLE</code> and at least <code>MF_ENEMY</code>, <code>MF_BOSS</code>, and/or <code>MF_MONITOR</code> normally are the only targets, but this flag will disallow those objects & allow others. +| Inverts the conditions for this Object to be able to be targeted by <code>[[A_LookForEnemies]]</code>, for mechanics such as Fang's pop gun. Objects with the <code>MF_SHOOTABLE</code> flag and at least one of <code>MF_ENEMY</code>, <code>MF_BOSS</code>, and/or <code>MF_MONITOR</code> normally are the only targets, but this flag will disallow those objects & allow others. |- ! 8192 ! <code>0x00002000</code> @@ -323,7 +323,7 @@ The primary, secondary and extra Object flags for an Object are each stored in 3 ! 1073741824 ! <code>0x40000000</code> | <code>MF2_SPLAT</code> -| The Object will be drawn on a horizontal plane, also called a floor sprite, or a "splat". <font color="red">'''''This flag can only be used from v2.2.9 onwards.'''''</font> +| The Object will be drawn on a horizontal plane, also called a floor sprite, or a "splat". |} ==Extra flags== @@ -334,64 +334,79 @@ The primary, secondary and extra Object flags for an Object are each stored in 3 ! Description |- ! 1 -! <code>0x001</code> +! <code>0x0001</code> | <code>MFE_ONGROUND</code> | This flag is given when the Object's "ground" is a solid floor, whether it is the sector's main floor or the top of an FOF/PolyObject. If the Object's ground is instead an Object with <code>MF_SOLID</code>, this flag will not be given. |- ! 2 -! <code>0x002</code> +! <code>0x0002</code> | <code>MFE_JUSTHITFLOOR</code> | This flag is given to mark when the Object has just landed on the floor from falling down (or on the ceiling when in flipped [[gravity]]); the flag will subsequently be removed on the next tic afterwards. |- ! 4 -! <code>0x004</code> +! <code>0x0004</code> | <code>MFE_TOUCHWATER</code> | The Object is "touching" water – i.e. the Object's bottom is below the surface of a water FOF, but the Object's top is still above. |- ! 8 -! <code>0x008</code> +! <code>0x0008</code> | <code>MFE_UNDERWATER</code> | The Object is "underwater" – i.e. the Object is submerged at least half its height into a water FOF. For players, this causes the underwater timer to activate, which may result in drowning unless the player escapes or is wearing an [[Elemental Shield]]. However, it allows characters with [[S_SKIN#ability|the Swim ability]] (<code>CA_SWIM</code>) to use their ability while this flag is set. |- ! 16 -! <code>0x010</code> +! <code>0x0010</code> | <code>MFE_JUSTSTEPPEDDOWN</code> | This flag is given to mark when a player has just "stepped" down from a floor to another floor under 24 fracunits below it (the flag is not given for non-player Objects). However, if the [[Non-Ramp Sector]] sector special is applied to the sector floor the player is standing in, the player will instead fall down and this flag will not be given. |- ! 32 -! <code>0x020</code> +! <code>0x0020</code> | <code>MFE_VERTICALFLIP</code> | This flag is given to mark when the Object's sprites/physics should be vertically flipped. Not to be confused with <code>MF2_OBJECTFLIP</code>, which forces this flag on constantly for permanent reverse gravity. See [[reverse gravity]] for more details on flipping gravity. |- ! 64 -! <code>0x040</code> +! <code>0x0040</code> | <code>MFE_GOOWATER</code> | The Object is at least partially submerged in [[Linedef type 124|THZ goop]], so must have THZ goop gravity/physics applied to it. |- ! 128 -! <code>0x080</code> +! <code>0x0080</code> | <code>MFE_TOUCHLAVA</code> | The mobj is touching a lava block. |- ! 256 -! <code>0x100</code> +! <code>0x0100</code> | <code>MFE_PUSHED</code> | The Object was already pushed this tic. |- ! 512 -! <code>0x200</code> +! <code>0x0200</code> | <code>MFE_SPRUNG</code> | The Object was already sprung this tic. |- ! 1024 -! <code>0x400</code> +! <code>0x0400</code> | <code>MFE_APPLYPMOMZ</code> | Used to tell the game when to apply Z momentum from platforms. |- ! 2048 -! <code>0x800</code> +! <code>0x0800</code> | <code>MFE_TRACERANGLE</code> | Compute and trigger on mobj angle relative to tracer. See [[Linedef type 457]] (Track mobj angle to point). +|- +! 4096 +! <code>0x1000</code> +| <code>MFE_FORCESUPER</code> +| Forces an object to use super sprites with SPR_PLAY. +|- +! 8192 +! <code>0x2000</code> +| <code>MFE_FORCENOSUPER</code> +| Forces an object to NOT use super sprites with SPR_PLAY. +|- +! 12288 +! <code>0x3000</code> +| <code>MFE_REVERSESUPER</code> +| |Makes an object use super sprites where they wouldn't have otherwise and vice-versa. Equivalent of combining <code>MFE_FORCESUPER|MFE_FORCENOSUPER</code>. |} [[Category:Editing lists]] diff --git a/wiki/Palette.txt b/wiki/Palette.txt index af8deb4529ae5eb92488b1183b467564af6ee0f5..01431eb32d37cb6e0bfd03424be4098cfb5d4b2e 100644 --- a/wiki/Palette.txt +++ b/wiki/Palette.txt @@ -43,9 +43,13 @@ The [[constants]] for use in [[Lua]] and [[SOC]] are also given in the table bel ''Note: This palette can be reproduced by tinting SRB2's palette 75% white as with the palettes above, but then changing the green/blue levels of all color indexes to 113.'' |- -!5–13 +!5 +|<code>PAL_INVERT</code> +|SRB2's default palette with the colors inverted and slightly darkened. This flash paletted is unused. +|- +!6–13 |''n/a'' -|Unused palettes, the first being SRB2's palette with the colors inverted and slightly darkened, the rest being SRB2's palette with a 75% white tint, of RGB(255,255,255). +|Unused palettes being SRB2's palette with a 75% white tint, of RGB(255,255,255). |} ===COLORMAP=== diff --git a/wiki/Powers.txt b/wiki/Powers.txt index 8c3a6dacef59a9fd4e7c019101c5fdf8fdd2af3b..af7edac8ccfba1b9425ddfd54c7bdd74406364f6 100644 --- a/wiki/Powers.txt +++ b/wiki/Powers.txt @@ -1,7 +1,7 @@ '''Powers''' are special properties that can be applied to players, modifying their state via giving them a power-up such as a shield or altering how they interact with the environment. There are three methods to apply powers to the player: -* Setting <code>player.powers[pw_powername] = value</code> in [[Lua]]. As an example, to give the Super Sneakrs for 3 seconds you would set <code>player.powers[pw_sneakers] = 3*TICRATE</code> +* Setting <code>player.powers[pw_powername] = value</code> in [[Lua]]. As an example, to give the Super Sneakers for 3 seconds you would set <code>player.powers[pw_sneakers] = 3*TICRATE</code> * Using [[linedef type 434]] in a map editor * Call [[A_CustomPower]] in [[SOC]] or [[Lua]] @@ -54,7 +54,7 @@ There are three methods to apply powers to the player: |- ! 10 | <code>pw_justsprung</code> -| Timer to prevent [[Spring]]s from activating multiple times. +| Sets how long to lock the player's facing angle in place. Applied internally when bouncing off a [[Spring]], but otherwise has no relation to Spring logic. |- ! 11 | <code>pw_noautobrake</code> @@ -308,7 +308,7 @@ In Lua scripts, use <code>(''player''.powers[pw_shield] & SH_NOSTACK)</code> to |- ! 13 | <code>CR_FAN</code> -| {{todo|Add a description}} +| Player is affected by a [[Fan]] or [[Fan Sector]]. |} <sup>'''3'''</sup> Var2 defines which multiplayer emeralds are given to the player according to the table below. If you wish to award multiple emeralds at once, add the corresponding values. For example, to award all seven Chaos Emeralds, Var2 should be 127. diff --git a/wiki/S_SKIN.txt b/wiki/S_SKIN.txt index 4e139c3e3140283258e8f2df7a435288656247d9..fa09e4dde75780edf212e304c76deab66e2c2eb6 100644 --- a/wiki/S_SKIN.txt +++ b/wiki/S_SKIN.txt @@ -710,7 +710,7 @@ Below is the full list of sounds that can have character-specific replacement so |- |<code>DSALTOW1</code> |<code>sfx_altow1</code> -| rowspan="4" |Pain taunts #1–#4 <sup>'''1'''</sup> +| rowspan="4" |Pain taunts #1–#4 <sup>'''1'''</sup>. Used when losing rings. |- |<code>DSALTOW2</code> |<code>sfx_altow2</code> @@ -723,7 +723,8 @@ Below is the full list of sounds that can have character-specific replacement so |- |<code>DSVICTR1</code> |<code>sfx_victr1</code> -| rowspan="4" |Victory taunts #1–#4 <sup>'''1'''</sup> +| rowspan="4" |Victory taunts #1–#4 <sup>'''1'''</sup>. Used in ringslinger when +getting a kill or tagging somebody. |- |<code>DSVICTR2</code> |<code>sfx_victr2</code> @@ -736,7 +737,8 @@ Below is the full list of sounds that can have character-specific replacement so |- |<code>DSALTDI1</code> |<code>sfx_altdi1</code> -| rowspan="4" |Death taunts #1–#4 <sup>'''1'''</sup> +| rowspan="4" |Death taunts #1–#4 <sup>'''1'''</sup>. Used upon player death +(excluding drowning). |- |<code>DSALTDI2</code> |<code>sfx_altdi2</code> diff --git a/wiki/Thing.txt b/wiki/Thing.txt index e79d07f4e704dbf7addf58d9b5b11c5655960a9e..6f23765a7b1e39ed771435c78b5880bec213c0ab 100644 --- a/wiki/Thing.txt +++ b/wiki/Thing.txt @@ -28,17 +28,15 @@ In the binary map format, the Things of a map are stored in the <code>THINGS</co ===Thing type=== {{for|a list of Thing types|Thing types}} [[Image:ZB_Thing_Properties_Dialog.png|right|thumb|200px|[[Zone Builder]]'s Thing properties window. Click to enlarge.]] -This determines the Thing's type. In the binary map format, it can range from 0 to 4095, whereas [[UDMF]] allows Thing type numbers up to 65535. In map editors such as [[Zone Builder]], [[SRB2 Doom Builder]] and [[SRB2 Workbench]], the Thing types are separated into different categories by a drop-down list, which makes the [[Zone Builder tutorial/Thing placement|Thing placement process]] easier. - -In Zone Builder and SRB2 Doom Builder, additional properties for a Thing type will be displayed when selected in the Thing properties window. These are determined by the configuration file loaded for the editor. +This determines the Thing's type. In the binary map format, it can range from 0 to 4095, whereas [[UDMF]] allows Thing type numbers up to 65535. Map editors will usually separate Thing types into different categories using a drop-down list, which makes the [[Zone Builder tutorial/Thing placement|Thing placement process]] easier. They will also display additional properties for a Thing type when selected in the Thing properties window, which are determined by the configuration file loaded for the editor. ===X/Y position=== -These are the absolute X and Y map coordinates the Thing is located at, measured in fracunits. These can be any value from -32768 to 32767. These properties are normally set when a Thing is first placed in the map or dragged around after being placed; however, in [[Zone Builder]] and [[SRB2 Workbench]], they can also be changed manually through the Thing properties window. +These are the absolute X and Y map coordinates the Thing is located at, measured in fracunits. These can be any value from -32768 to 32767. These properties are normally set when a Thing is first placed in the map or dragged around after being placed; but they can also be changed manually through the Thing properties window. ===Z position=== For most Thing types, this property is the Z-offset that determines how far up from the floor – or how far down from the ceiling – the Thing is placed, measured in fracunits. For most Thing types, the Z-offset is measured from the floor up by default, but for Thing types that hang from the ceiling by default, such as the [[Chain]], it is measured from the ceiling down. If the Thing's ''Flip'' flag is checked, this behavior is inverted – if the offset is usually measured from the floor up, it is now measured from the ceiling down, and vice versa. In the binary map format, the Z position can range from 0 to 4095; UDMF allows Z positions between -32768 and 32767. Thing types that do not use this property directly for determining the Thing's Z-offset (or at all) include the [[Axis]], [[Axis Transfer]], [[Axis Transfer Line]], and the non-customizable [[Hoop]]. -Map editors such as [[Zone Builder]], [[SRB2 Doom Builder]] and [[SRB2 Workbench]] also provide an ''Absolute'' option – when the box for this is checked, the Thing's absolute Z position from 0 is determined instead. The map editor will then calculate the required relative Z position automatically, which will be displayed when the Thing properties window is next opened. +Map editors also provide an ''Absolute'' option – when the box for this is checked, the Thing's absolute Z position from 0 is determined instead. The map editor will then calculate the required relative Z position automatically, which will be displayed when the Thing properties window is next opened. Because ''Doom'' did not originally support Z-offsets for Things, there is no dedicated Z position field in the binary map format. SRB2 works around this by assigning the upper 12 bits of the 16-bit Flags value to the Z position. As a result, only 4 bits are left for the actual flags, so SRB2 only allows for 4 Thing flags in the binary format. Map editors that are not specifically adapted for SRB2 will not display a field for the Z position. In these editors, the Z position must be set via the Flags value instead; [[#Flags|see below]] for details. @@ -48,30 +46,34 @@ This property controls the direction the Thing is facing. This is measured relat ===Parameter=== This is a special value ranging from 0 to 15 that can determine extra properties for a Thing. Notable Thing types that use this property include various [[Thing types#NiGHTS|NiGHTS items]] as well as the [[Fan Particle Generator]] and [[Flame Jet]]s. It is only available in binary maps; UDMF maps have access to the more flexible [[#Arguments|arguments]] instead. -The Parameter value is not part of ''Doom''<nowiki>'</nowiki>s original map format and was added specifically for SRB2. In the binary map format, it is stored in the upper 4 bits of the Thing's Type value. As a result, the actual Thing type is restricted to 12 bits in binary maps and may therefore only range from 0 and 4095 – unlike in ''Doom'' and in UDMF, where it can range from 0 to 65535. Because the Parameter value is SRB2-specific, only map editors that are adapted specifically for SRB2, such as [[Zone Builder]] and [[SRB2 Workbench]], provide a field for it. In other map editors, such as the original [[Doom Builder]] and [[SRB2 Doom Builder]], it must be set via the Type field – the Parameter value must be multiplied by 4096 and then added to the Thing type number, e.g. ,the [[Crawla (Blue)|Blue Crawla]] (Thing type 100) with a parameter value of 2 would have a Thing type number of 100 + 2×4096, or 8292. +The Parameter value is not part of ''Doom''<nowiki>'</nowiki>s original map format, so only map editors that are adapted specifically for SRB2's binary map format provide a field for it. As it is stored in the upper 4 bits of the Thing's Type value, it restricts the actual Thing type to 12 bits, resulting in a range from 0 to 4095. In ''Doom'' and in UDMF, the full range from 0 to 65535 is available. ===Flags=== -These are a series of toggles that may be applied to a Thing to change how the spawned Object behaves in-game. Note that the Thing flags are not the same as the [[Object flags]], which determine an Object's properties in-game and cannot be set in the map editor. - -In UDMF, only the ''Flip'' flag is available. The other flags are exclusive to the binary map format. They do not have any general effect – rather, their effect differs depending on the Thing type. UDMF has no need for these flags since it uses the [[#Arguments|arguments]] for type-specific settings instead. +These are a series of toggles that may be applied to a Thing to change how the spawned Object behaves. There are currently 5 Thing flags, of which 4 apply to the binary map format, and 2 apply to UDMF. Note that these flags are not the same as [[Object flags]], which determine an Object's properties and cannot be set in the map editor. -In map editors such as Zone Builder, SRB2 Doom Builder and SRB2 Workbench, the flags are displayed as a list of checkboxes that can be checked. The mathematical total of the corresponding values for the selected flags is given in the ''Flags value'' box below the flags list. Note that this value also contains the Thing's [[#Z position|Z position]], multiplied by 16 – the resulting ''Flags value'' is calculated as: ''Thing flags'' + ''Z position''×16. This is because SRB2 uses the upper 12 bits of the Flags field to store the Z position. Some Thing types (e.g., the [[NiGHTS Bumper]]) use the flags value directly as a parameter; in these cases, the flags and the Z position do not have their usual effects. +In the binary map format, the mathematical total of the corresponding values for the selected flags is given in the ''Flags value'' box below the flags list. Note that this value also contains the Thing's [[#Z position|Z position]], multiplied by 16 – the resulting ''Flags value'' is calculated as: ''Thing flags'' + ''Z position''×16. This is because SRB2 uses the upper 12 bits of the Flags field to store the Z position. Some Thing types (e.g., the [[NiGHTS Bumper]]) use the flags value directly as a parameter; in these cases, the flags and the Z position do not have their usual effects. -The flags and their purposes are given below: +The flags, their purposes and availability per map format are given below: {| class="wikitable" !Value !Editor name ![[Constants|Internal name]] +!Binary +!UDMF !Description |- ! 1 | Extra | <code>MTF_EXTRA</code> -| This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. +|{{Yes}} +|{{No}} +| This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. These will usually be labeled in Zone Builder. |- ! 2 | Flip | <code>MTF_OBJECTFLIP</code> +|{{Yes}} +|{{Yes}} | This flag inverts the Thing's [[gravity]] direction, and also inverts whether the Thing's [[#Z position|Z position]] is measured from the floor or ceiling. For instance, [[Thing types#Monitors|power-up monitors]] will be flipped upside-down and laid on the ''ceiling'' instead of the floor, while Things that hang from the ceiling by default (e.g., [[chain]]s) will be flipped upside-down but laid on the ''floor'' instead of the ceiling. In most cases, this flag will also give the corresponding [[Object]](s) the [[Object flags#Secondary Object flags|secondary Object flag]] <code>MF2_OBJECTFLIP</code> when checked. Exceptions to this include the following Thing types: @@ -82,12 +84,16 @@ In most cases, this flag will also give the corresponding [[Object]](s) the [[Ob ! 4 | style="white-space: nowrap;"|Special | <code>MTF_OBJECTSPECIAL</code> -| This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. +|{{Yes}} +|{{No}} +| This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. These will usually be labeled in Zone Builder. |- ! 8 | Ambush | <code>MTF_AMBUSH</code> -| This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. +|{{Yes}} +|{{No}} +| This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. These will usually be labeled in Zone Builder. In binary maps, this flag will also give the corresponding [[Object]](s) the [[Object flags#Primary Object flags|Object flag]] <code>MF2_AMBUSH</code> when checked. Exceptions to this include the following Thing types: * [[Axis]], [[Axis Transfer]] and [[Axis Transfer Line]] @@ -99,25 +105,22 @@ In binary maps, this flag will also give the corresponding [[Object]](s) the [[O ! 16 | Absolute Z height | <code>MTF_ABSOLUTEZ</code> -|{{todo|Add a description}} +|{{No}} +|{{Yes}} +|This flag toggles whether the Thing's Z position is absolute, unaffected by floor or ceiling height. Note that this flag is not available in the binary map format, due to the way it stores a thing's Z position. |} -Some older map editors may display a flag named ''(Used for Z offsets)'' below the flags listed above – this flag is reserved for calculating the Thing's Z-offset and should never be checked manually. - -In some editors, the names of certain flags may change depending on the current Thing type. For example, the ''Ambush'' flag is renamed to ''Float'' for [[ring]]s because it makes them hover 24 fracunits above the ground. For most [[Thing types#Monitors|power-up monitors]], it is renamed to ''Random (Weak)'' because it makes them respawn randomly in a [[WRM]] fashion in multiplayer. Zone Builder supports renaming for all flags, SRB2 Workbench for the ''Special'' flag and the ''Ambush'' flag, and SRB2 Doom Builder only for the ''Ambush'' flag. - ==Editor metadata== In Zone Builder (for binary maps) and Ultimate Zone Builder (for UDMF maps) it is possible to set custom names and sprites, rename flags and label various other Thing properties through special comments to modify how they appear in the editor. They '''must''' be listed as comments within the definition of the corresponding Object, be that in SOC (<code>#</code>) or Lua (<code>--</code> or <code>//</code>). ===Zone Builder=== -Zone Builder's parser supports the following properties for both SOC and Lua Object definitions. {| class="wikitable" !Property !Description |- -! <code>$Name</code> -| The name of the Thing inside the editor, e.g. <code>$Name Steam Jet</code>. +! <code>$Title</code> or <code>$Name</code> +| The name of the Thing inside the editor, e.g. <code>$Title Steam Jet</code>. |- ! <code>$Sprite</code> | The name of the sprite lump the Thing should use in the editor, e.g. <code>$Sprite STEMD0</code>. Note that the desired sprite lump must also be included in the resources for this to work. @@ -143,15 +146,14 @@ Zone Builder's parser supports the following properties for both SOC and Lua Obj ! <code>$FlagsValueText</code> | The label for the "Flags value" textbox. |- -! <code>$Arrow</code> +! <code>$Angled</code> or <code>$Arrow</code> | Enables the arrow pointing to the direction of the thing's angle. |- -! <code>$NoArrow</code> +! <code>$NotAngled</code> or <code>$NoArrow</code> | Disables the arrow pointing to the direction of the thing's angle. |} ===Ultimate Zone Builder=== -Ultimate Zone Builder's parser currently only supports the following properties for Lua Object definitions. {| class="wikitable" !Property @@ -164,7 +166,7 @@ Ultimate Zone Builder's parser currently only supports the following properties | The name of the sprite lump the Thing should use in the editor, e.g. <code>$Sprite STEMD0</code>. Note that the desired sprite lump must also be included in the resources for this to work. |- ! <code>$Category</code> -| The category this Thing can be found in, e.g. <code>$Category Techno Hill</code>. You can have subcategories by using a backslash: "Enemies/Arid Canyon" will put the actor within the "Arid Canyon" subgroup of the "Enemies" group. +| The category this Thing can be found in, e.g. <code>$Category Techno Hill</code>. Subcategories can be created using a backslash: "Enemies/Arid Canyon" will put the actor within the "Arid Canyon" subgroup of the "Enemies" group. |- ! <code>$Arg''N''</code> | Allows the label for an argument to be overridden. ''N'' is the argument number, ranging from 0 to 9: e.g. <code>$Arg0</code>. The following <code>$Arg''N''</code> properties can only be used if this is present. @@ -173,25 +175,39 @@ Ultimate Zone Builder's parser currently only supports the following properties | Allows to set the default value for this argument. |- ! <code>$Arg''N''RenderStyle</code> -| Allows a visual representation of this argument, drawing the specified shape using the argument's value as a radius. Supports <code>Circle</code> and <code>Rectangle</code>. +| Allows a visual representation of this argument, drawing the specified shape using the argument's value as a radius. Supported values are <code>Circle</code> and <code>Rectangle</code>. |- ! <code>$Arg''N''RenderColor</code> | Allows to specify a custom color for <code>$ArgNRenderStyle</code>. The color should be specified as an RRGGBB hexadecimal value. |- ! <code>$Arg''N''ToolTip</code> -| Allows a custom tooltip to be displayed when hovering the argument label. The newline character <code>\n</code> can be used to format the text. +| Allows a custom tooltip to be displayed when hovering over the argument label. The newline character <code>\n</code> can be used to format the text. |- ! <code>$Arg''N''Type</code> | Restricts the argument to a specific type. See the available types in the [[Thing#Argument types|Argument types]] below. |- +! <code>$Arg''N''Enum</code> +| If the argument type contains an enum (11, 12 or 26), this is used to specify the enum options or bits/flags. This can be done in two ways: +* By providing a custom array of enum options. For example, <code>$Arg0Enum { 0="Green"; 1="Red"; 2="Blue";}</code> will show Green, Red and Blue options for the first argument. +* By using the name of an existing enum. For example, <code>$Arg0Enum yesno</code> will show Yes and No options for the first argument. +|- +! <code>$Arg''N''Flags</code> +| If the argument type is set to "Enum option + bits/flags" (26) specifically, this is used alongside <code>$Arg''N''Enum</code> to specify the enum bits/flags, and can also use an existing enum or a custom array. +|- +! <code>$StringArg''N''</code> +| Allows the label for a string argument to be overridden. ''N'' is the argument number, ranging from 0 to 1: e.g. <code>$Arg0</code>. The following <code>$StringArg''N''</code> properties can only be used if this is present. +|- +! <code>$StringArg''N''ToolTip</code> +| Allows a custom tooltip to be displayed when hovering over the string argument label. The newline character <code>\n</code> can be used to format the text. +|- ! <code>$WallSprite</code> -| This thing will be displayed as a papersprite in Visual Mode. Must be followed by <code>true</code> to work. +| This thing will be displayed as a papersprite in Visual Mode. |- ! <code>$FlatSprite</code> -| This thing will be displayed as a splat in Visual Mode. Must be followed by <code>true</code> to work. +| This thing will be displayed as a floorsprite/splat in Visual Mode. |- ! <code>$SpawnCeiling</code> -| This thing will be displayed at a height relative to the ceiling instead of the floor in Visual Mode. Must be followed by <code>true</code> to work. +| This thing will be displayed at a height relative to the ceiling instead of the floor in Visual Mode. |- ! <code>$Angled</code> | Enables the arrow pointing to the direction of the thing's angle. @@ -223,13 +239,14 @@ Ultimate Zone Builder's parser currently only supports the following properties * 8 = Angle in degrees * 10 = XXRRGGBB color * 11 = Enum option -* 12 = Enum bits +* 12 = Enum bits/flags * 13 = Sector tag * 14 = Thing tag * 15 = Linedef tag * 22 = Byte angle * 23 = Thing Radius * 24 = Thing Height +* 26 = Enum option + bits/flags ====Color table==== {| class="wikitable" @@ -272,7 +289,6 @@ Ultimate Zone Builder's parser currently only supports the following properties ==See also== * [[Zone Builder tutorial/Thing placement]] -* [[SRB2 Doom Builder tutorial/Thing placement]] {{Template:Map components}} [[Category:Map components]] diff --git a/wiki/Userdata_structures.txt b/wiki/Userdata_structures.txt index 7f4ba8b4a9466a35417399f9217046b61833a353..1b0ada95fddd35660910e9322a9b30b508715947 100644 --- a/wiki/Userdata_structures.txt +++ b/wiki/Userdata_structures.txt @@ -72,12 +72,12 @@ This userdata type represents an [[Object]]. In the examples below, <code>''mobj !<code>x</code> |<code>fixed_t</code> |{{No|Read-only}} -|The Object's absolute X position in the map. To modify this value, use a function such as <code>[[Lua/Functions#P_TeleportMove|P_TeleportMove]]</code> rather than editing it directly. +|The Object's absolute X position in the map. To modify this value, use a function such as <code>[[Lua/Functions#P_SetOrigin|P_SetOrigin]]</code> or <code>[[Lua/Functions#P_MoveOrigin|P_MoveOrigin]]</code> rather than editing it directly. |- !<code>y</code> |<code>fixed_t</code> |{{No|Read-only}} -|The Object's absolute Y position in the map. To modify this value, use a function such as <code>[[Lua/Functions#P_TeleportMove|P_TeleportMove]]</code> rather than editing it directly. +|The Object's absolute Y position in the map. To modify this value, use a function such as <code>[[Lua/Functions#P_SetOrigin|P_SetOrigin]]</code> or <code>[[Lua/Functions#P_MoveOrigin|P_MoveOrigin]]</code> rather than editing it directly. |- !<code>z</code> |<code>fixed_t</code> @@ -680,7 +680,7 @@ For instance, when the player has collected a Fire Flower powerup, <code>''playe !<code>availabilities</code> |<code>UINT32</code> |{{No|Read-only}} -|{{todo|Add a description}} +|The player's current available unlockable skins unlocked that can use. |- !<code>score</code> |<code>UINT32</code> @@ -690,7 +690,7 @@ For instance, when the player has collected a Fire Flower powerup, <code>''playe !<code>recordscore</code> |<code>UINT32</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|The player's current score on the level. Gets reset when changing to a different map or when the player dies and respawns. |- !<code>dashmode</code> |<code>tic_t</code> @@ -1082,12 +1082,12 @@ Note that when the player has finished the level, <code>''player''.realtime</cod !<code>marelap</code> |<code>UINT8</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to determine the current mare lap the player is in. |- !<code>marebonuslap</code> |<code>UINT8</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to determine the current mare lap from bonus time the player is in. |- !<code>marebegunat</code> |<code>tic_t</code> @@ -1107,17 +1107,17 @@ Note that when the player has finished the level, <code>''player''.realtime</cod !<code>lapbegunat</code> |<code>tic_t</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|Used in [[NiGHTS]] mode to determine the tic when the player started the lap in by <code>leveltime</code>. |- !<code>lapstartedtime</code> |<code>tic_t</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|Used in [[NiGHTS]] mode to determine the tic when the player started the lap in by <code>''player''.nightstime</code>. |- !<code>finishedspheres</code> |<code>INT16</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|Used in [[NiGHTS]] mode to save the finishing sphere count for the for the mare just completed by the player. |- !<code>finishedrings</code> |<code>INT16</code> @@ -1137,7 +1137,7 @@ Note that when the player has finished the level, <code>''player''.realtime</cod !<code>totalmarescore</code> |<code>UINT32</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to store the total mare score from all mares. |- !<code>lastmare</code> |<code>UINT8</code> @@ -1147,22 +1147,22 @@ Note that when the player has finished the level, <code>''player''.realtime</cod !<code>lastmarelap</code> |<code>UINT8</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to store the previous mare's lap. |- !<code>lastmarebonuslap</code> |<code>UINT8</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to store the previous mare's lap from bonus time the player was in. |- !<code>totalmarelap</code> |<code>UINT8</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to store the total mare lap. |- !<code>totalmarebonuslap</code> |<code>UINT8</code> |{{Yes|Read+Write}} -|TODO +|Used in [[NiGHTS]] mode to store the total mare lap from bonus time the player is in. |- !<code>maxlink</code> |<code>INT32</code> @@ -1232,30 +1232,32 @@ Note that when the player has finished the level, <code>''player''.realtime</cod !<code>outofcoop</code> |boolean |{{Yes|Read+Write}} -|TODO +|Determines if the player has a Game Over or failed the Special Stage. |- !<code>bot</code> |<code>UINT8</code> |{{No|Read-only}} |Determines whether the player is a [[bot]] or not: -* 0 – The player is a normal player -* 1 – The player is a bot player currently using bot AI -* 2 – The player is a bot player currently controlled by Player 2 controls +* 0 (or <code>BOT_NONE</code>) – The player is a normal player +* 1 (or <code>BOT_2PAI</code>) – The player is a bot player currently using bot AI with Singleplayer Player 2's behaviour +* 2 (or <code>BOT_2PHUMAN</code>) – The player is a bot player currently controlled by Player 2's controls +* 3 (or <code>BOT_MPAI</code>) – The player is a bot player currently using bot AI and considered as a individual player |- !<code>botleader</code> |<code>[[player_t]]</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|Determines bot players what player is actually chasing to. If not set, it will determine it automatically to a nearby player to chase. |- !<code>lastbuttons</code> |<code>UINT16</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|The previous buttons pressed from <code>player_t.cmd.buttons</code> last tic. |- !<code>blocked</code> |<code>boolean</code> |{{Yes|Read+Write}} -|{{todo|Add a description}} +|Whether or not player's movement was blocked due to a solid wall or object, it automatically clears each player think. +At the moment, this variable is not used at all by the vanilla game. And can be freely used by modders. |- !<code>jointime</code> |<code>tic_t</code> @@ -2373,7 +2375,6 @@ This userdata type represents a [[sector]]. In the examples below, <code>''secto {| class="wikitable collapsible" ! colspan="4" |<code>sector_t</code> structure |- -|- !Name !Type !Accessibility @@ -2498,6 +2499,61 @@ This userdata type represents a [[sector]]. In the examples below, <code>''secto |<code>INT32</code> |{{Yes|Read+Write}} |{{todo|Add a description}} +|- +!<code>floorlightlevel</code> +|<code>INT16</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>floorlightabsolute</code> +|<code>boolean</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>ceilinglightlevel</code> +|<code>INT16</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>ceilinglightabsolute</code> +|<code>boolean</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>flags</code> +|enum ([[Constants#Sector flags|<code>MSF_*</code>]]) +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>specialflags</code> +|enum ([[Constants#Sector special flags|<code>SSF_*</code>]]) +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>damagetype</code> +|enum ([[Constants#Sector damage types|<code>SD_*</code>]]) +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>triggertag</code> +|<code>INT16</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>triggerer</code> +|<code>UINT8</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} +|- +!<code>friction</code> +|<code>fixed_t</code> +|{{No|Read-only}} +|{{todo|Add a description}} +|- +!<code>gravity</code> +|<code>fixed_t</code> +|{{Yes|Read+Write}} +|{{todo|Add a description}} |} ===subsector_t=== @@ -3005,7 +3061,7 @@ For sector-based slopes, the origin's X/Y position is placed a fixed horizontal Currently, the only way to modify this variable is by assigning to it a custom table with x, y and z fields, such as below: <syntaxhighlight lang="lua"> -slope.o = {"x" = 1*FRACUNIT, "y" = 2*FRACUNIT, "z" = 3*FRACUNIT} -- change the origin's position to (1, 2, 3) +slope.o = {x = 1*FRACUNIT, y = 2*FRACUNIT, z = 3*FRACUNIT} -- change the origin's position to (1; 2; 3) </syntaxhighlight> If <code>SL_DYNAMIC</code> is set in the slope's flags, the origin's Z position (<code>slope.o.z</code>) will be automatically corrected accordingly with the sector heights or vertices used to create the slope. ''This means that <code>slope.o.z</code> cannot be modified by Lua unless the flag is set.''