Difference between revisions of "Template:Stat"

From RimWorld Wiki
Jump to navigation Jump to search
(Created page with "<includeonly>Category:Stat '''{{PAGENAME}}''' is a Stat: {{Text | description | {{{description|}}} }} {{#set: has type = number }} </includeonly>")
 
 
(39 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<includeonly>[[Category:Stat]]
+
<includeonly><!--
'''{{PAGENAME}}''' is a [[Stat]]: {{Text | description | {{{description|}}} }}
+
 
{{#set:
+
SET PROPERTIES
has type = number
+
-->{{#switch: {{lc:{{{set property|}}} }}
 +
| 0 | no | n | f | false =
 +
| #default =
 +
  {{#set: Description = {{{description|}}}
 +
| Def Name = {{{def name|}}}
 +
| Label = {{{label|}}}
 +
| Stat Maximum = {{{max value|}}}<!-- Default = 9999999f -->
 +
| Stat Minimum = {{{min value|}}}<!-- Default = -9999999f -->
 +
| Default Base Value = {{{default base value|}}}<!-- Default = 1f -->
 +
| To String Style = {{{to string style|}}}
 +
| Health Type = Stat
 +
| Effective Minimum = {{#expr: {{{effective minimum|}}} }}
 +
| Effective Maximum = {{#expr: {{{effective maximum|}}} }}
 +
<!-- Strings -->
 +
| Offset Label = {{{offset label|}}}
 +
| Format String = {{{format string|}}}
 +
| Format String Unfinalized = {{{format string unfinalized|}}}
 +
| Stat Factors Explanation Header = {{{stat factors explanation header|}}}
 +
| Label For Full Stat List = {{{label for full stat list|}}}
 +
<!-- Booleans -->
 +
| Always Hide = {{{always hide|}}}
 +
| Apply Factors If Negative = {{{apply factors if negative|}}}<!-- Default = true -->
 +
| Cacheable = {{{cacheable|}}}
 +
| Display Max When Above Or Equal = {{{display max when above or equal|}}}
 +
| Finalize Equipped Stat Offset = {{{finalize equipped stat offset|}}}<!-- Default = true -->
 +
| For Information Only = {{{for information only|}}}
 +
| Hide In Classic Mode = {{{hide in classic mode|}}}
 +
| Minified Thing Inherits = {{{minified thing inherits|}}}
 +
| Never Disabled = {{{never disabled|}}}
 +
| Overrides Hide Stats = {{{overrides hide stats|}}}
 +
| Round Value = {{{round value|}}}
 +
| Scenario Randomizable = {{{scenario randomizable|}}}
 +
| Show If Undefined = {{{show if undefined|}}}<!-- Default = true -->
 +
| Show Non Abstract = {{{show non abstract|}}}<!-- Default = true -->
 +
| Show On Animals = {{{show on animals|}}}<!-- Default = true -->
 +
| Show On Default Value = {{{show on default value|}}}<!-- Default = true -->
 +
| Show On Entities = {{{show on entities|}}}<!-- Default = true -->
 +
| Show On Humanlikes = {{{show on humanlikes|}}}<!-- Default = true -->
 +
| Show On Mechanoids = {{{show on mechanoids|}}}<!-- Default = true -->
 +
| Show On Non Power Plants = {{{show on non power plants|}}}<!-- Default = true -->
 +
| Show On Non Wild Man Humanlikes = {{{show on non wild man humanlikes|}}}<!-- Default = true -->
 +
| Show On Non Work Tables = {{{show on non work tables|}}}<!-- Default = true -->
 +
| Show On Pawns = {{{show on pawns|}}}<!-- Default = true -->
 +
| Show On Player Mechanoids = {{{show on player mechanoids|}}}
 +
| Show On Slaves Only = {{{show on slaves only|}}}
 +
| Show On Unhaulables = {{{show on unhaulables|}}}<!-- Default = true -->
 +
| Show On Untradeables = {{{show on untradeables|}}}<!-- Default = true -->
 +
| Show Zero Base Value = {{{show zero base value|}}}
 +
| Suppress Disabled Error = {{{suppress disabled error|}}}<!-- written in code as: supressDisabledError -->
 +
| Immutable = {{{immutable|}}}
 +
<!-- Floats -->
 +
<!--| Default Base Value = {{{default base value|1}}}--><!-- Default = 1f -->
 +
| Hide At Value = {{{hide at value|}}}<!-- Default = -2.14748365E+09f -->
 +
<!--| Max Value = {{{max value|9999999}}}--><!-- Default = 9999999f -->
 +
<!--| Min Value = {{{min value|-9999999}}}--><!-- Default = -9999999f -->
 +
| No Skill Factor = {{{no skill factor|}}}<!-- Default = 1f -->
 +
| No Skill Offset = {{{no skill offset|}}}
 +
| Round To Five Over = {{{round to five over|}}}<!-- Default = float.MaxValue --><!-- {{#if:{{P|Stat Maximum}}|{{P|Stat Maximum}} }} -->
 +
| Value If Missing = {{{value if missing|}}}
 +
<!-- Lists -->
 +
| Show If Hediffs Present = {{{show if hediffs present|}}}<!--List<HediffDef>-->
 +
| Capacity Factors = {{{capacity factors|}}}<!--List<PawnCapacityFactor>-->
 +
| Capacity Offsets = {{{capacity offsets|}}}<!--List<PawnCapacityOffset>-->
 +
| Show On Pawn Kind = {{{show on pawn kind|}}}<!--List<PawnKindDef>-->
 +
| Skill Need Factors = {{{skill need factors|}}}<!--List<SkillNeed>-->
 +
| Skill Need Offsets = {{{skill need offsets|}}}<!--List<SkillNeed>-->
 +
| Post Process Stat Factors = {{{post process stat factors|}}}<!--List<StatDef>-->
 +
| Stat Factors = {{{stat factors|}}}<!--List<StatDef>-->
 +
| Parts = {{{parts|}}}<!--List<StatPart>-->
 +
| Show If Mods Loaded = {{{show if mods loaded|}}}<!--List<String>-->
 +
| Show If Mods Loaded Any = {{{show if mods loaded any|}}}<!--List<String>-->
 +
<!-- Integer -->
 +
| Display Priority In Category = {{{display priority in category|}}}
 +
<!-- Other -->
 +
| Worker Int = {{{worker int|}}}<!--StatWorker-->
 +
| To String Style Unfinalized = {{{to string style unfinalized|}}}<!--ToStringStyle?-->
 +
| Mutable Stats = {{{mutable stats|}}}<!--Hashset<StatDef>-->
 +
| Show Developmental Stage Filter = {{{show developmental stage filter|}}}<!-- Default = DevelopmentalStage.Baby | DevelopmentalStage.Child | DevelopmentalStage.Adult --><!--DevelopmentalStage--><!-- Baby, Child, Adult -->
 +
| Post Process Curve = {{{post process curve|}}}<!--SimpleCurve-->
 +
| Disable If Skill Disabled = {{{disable if skill disabled|}}}<!--SkillDef-->
 +
<!--| Category = {{{category|}}}--><!--StatCategoryDef-->
 +
| To String Number Sense = {{{to string number sense|}}}<!-- Default = ToStringNumberSense.Absolute --><!--ToStringNumberSense--><!-- Absolute -->
 +
<!--| To String Style = {{{to string style|}}}--><!--ToStringStyle-->
 +
| Worker Class = {{{worker class|}}}<!-- Default = typeof(StatWorker) --><!--Type-->
 +
  }}
 +
  [[Category:{{#switch: {{{category|}}}
 +
| Important
 +
| Basics Important
 +
| BasicsImportant = Stats - Important
 +
| Pawn Important
 +
| Basics Pawn Important
 +
| BasicsPawnImportant = Stats - Pawn Important
 +
| NonPawnImportant
 +
| Basics Non Pawn Important
 +
| BasicsNonPawnImportant = Stats - Non Pawn Important
 +
| Basics = Stats - Basics
 +
| Pawn
 +
| BasicsPawn = Stats - Pawn
 +
| Non Pawn
 +
| NonPawn
 +
| BasicsNonPawn = Stats - Non Pawn
 +
| Terrain = Stats - Terrain
 +
| Meditation = Stats - Meditation
 +
| Mechanoid = Stats - Mechanoid
 +
| Apparel = Stats - Apparel
 +
| Buildings
 +
| Building = Stats - Building
 +
| Ranged Weapon
 +
| Ranged
 +
| Weapon_Ranged = Stats - Weapon (Ranged)
 +
| Melee
 +
| Melee Weapon
 +
| Weapon_Melee = Stats - Weapon (Melee)
 +
| Ability = Stats - Ability
 +
| Stuff Stat Factors
 +
| StuffStatFactors = Stats - Stuff Stat Factors
 +
| Mechanitor = Stats - Mechanitor
 +
| Pawn Combat
 +
| PawnCombat = Stats - Pawn Combat
 +
| Social
 +
| Pawn Social
 +
| PawnSocial = Stats - Pawn Social
 +
| Misc
 +
| Pawn Misc
 +
| PawnMisc = Stats - Pawn Misc
 +
| Work
 +
| Pawn Work
 +
| PawnWork = Stats - Pawn Work
 +
| Psychic Ritual
 +
| PsychicRituals = Stats - Psychic Ritual
 +
| Containment = Stats - Containment
 +
| Obsolete = Stats - Obsolete
 +
| #default = Stat}}]]
 +
}}<!--
 +
 
 +
TABLE
 +
-->{{#vardefine:Table|{{{table|0}}} }}{{#ifexpr: {{#var:Table}} |
 +
<div class="infobox float:right; {{#if: {{{1|}}} | {{#switch: {{{1}}}
 +
  | furniture | medicine = c_01
 +
  | structure = c_02
 +
  | resource = c_03
 +
  | weapon = c_06
 +
  | animal | food = c_08
 +
  | fabric = c_09
 +
  | security = c_10
 +
  | area | exotic = c_11
 +
  | metallic | stony = c_12
 +
  | plant = c_14
 +
  | leathery = c_22
 +
  | drug = c_24
 +
  | production = c_25
 +
  | psycast = c_09
 +
}} }}">
 +
<p class="heading">{{#vardefine:Name|{{{name|{{BASEPAGENAME}} }}} }} {{#var:Name}}</p>
 +
<div class="wrapper">
 +
<p class="text-center" style="display:block; font-size:89%; padding: .5em;">{{#if:{{{description|}}} | {{{description|}}}}}</p>
 +
 
 +
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Base Stats</p>
 +
<dl>
 +
{{#if: {{{def name|}}} |
 +
;Def Name
 +
:{{{def name|}}}
 
}}
 
}}
</includeonly>
+
 
 +
{{#if: {{{label|}}} |
 +
;Label
 +
:{{{label|}}}
 +
}}
 +
 
 +
{{#if: {{{offset label|}}} |
 +
;Offset Label
 +
:{{{offset label|}}}
 +
}}
 +
 
 +
{{#if: {{{label for full stat list|}}} |
 +
;Label For Full Stat List
 +
:{{{label for full stat list|}}}
 +
}}
 +
 
 +
{{#if: {{{stat factors explanation header|}}} |
 +
;Stat Factors Explanation Header
 +
:{{{stat factors explanation header|}}}
 +
}}
 +
 
 +
{{#if: {{{max value|}}} |
 +
;Max Value
 +
:{{{max value|}}}
 +
}}
 +
 
 +
{{#if: {{{min value|}}} |
 +
;Min Value
 +
:{{{min value|}}}
 +
}}
 +
 
 +
{{#if: {{{default base value|}}} |
 +
;Default Base Value
 +
:{{{default base value|}}}
 +
}}
 +
 
 +
{{#if: {{{to string style|}}} |
 +
;To String Style
 +
:{{{to string style|}}}
 +
}}
 +
 
 +
{{#if: {{{to string style unfinalized|}}} |
 +
;To String Style Unfinalized
 +
:{{{to string style unfinalized|}}}
 +
}}
 +
 
 +
{{#if: {{{to string number sense|}}} |
 +
;To String Number Sense
 +
:{{{to string number sense|}}}
 +
}}
 +
 
 +
{{#if: {{{format string|}}} |
 +
;Format String
 +
:{{{format string|}}}
 +
}}
 +
 
 +
{{#if: {{{format string unfinalized|}}} |
 +
;Format String Unfinalized
 +
:{{{format string unfinalized|}}}
 +
}}
 +
 
 +
{{#if: {{{health type|}}} |
 +
;Health Type
 +
:{{{health type|}}}
 +
}}
 +
 
 +
{{#if: {{{effective minimum|}}} |
 +
;Effective Minimum
 +
:{{{effective minimum|}}}
 +
}}
 +
 
 +
{{#if: {{{effective maximum|}}} |
 +
;Effective Maximum
 +
:{{{effective maximum|}}}
 +
}}
 +
</dl>{{clear}}
 +
<p class='subheading' style='height: 1em !important; padding: 0.25em 0 0.5em !important'>Other</p>
 +
<dl>
 +
 
 +
{{#if: {{{always hide|}}} |
 +
;Always Hide
 +
:{{{always hide|}}}
 +
}}
 +
 
 +
{{#if: {{{apply factors if negative|}}} |
 +
;Apply Factors If Negative
 +
:{{{apply factors if negative|}}}
 +
}}
 +
 
 +
{{#if: {{{cacheable|}}} |
 +
;Cacheable
 +
:{{{cacheable|}}}
 +
}}
 +
 
 +
{{#if: {{{display max when above or equal|}}} |
 +
;Display Max When Above Or Equal
 +
:{{{display max when above or equal|}}}
 +
}}
 +
 
 +
{{#if: {{{finalize equipped stat offset|}}} |
 +
;Finalize Equipped Stat Offset
 +
:{{{finalize equipped stat offset|}}}
 +
}}
 +
 
 +
{{#if: {{{for information only|}}} |
 +
;For Information Only
 +
:{{{for information only|}}}
 +
}}
 +
 
 +
{{#if: {{{hide in classic mode|}}} |
 +
;Hide In Classic Mode
 +
:{{{hide in classic mode|}}}
 +
}}
 +
 
 +
{{#if: {{{minified thing inherits|}}} |
 +
;Minified Thing Inherits
 +
:{{{minified thing inherits|}}}
 +
}}
 +
 
 +
{{#if: {{{never disabled|}}} |
 +
;Never Disabled
 +
:{{{never disabled|}}}
 +
}}
 +
 
 +
{{#if: {{{overrides hide stats|}}} |
 +
;Overrides Hide Stats
 +
:{{{overrides hide stats|}}}
 +
}}
 +
 
 +
{{#if: {{{round value|}}} |
 +
;Round Value
 +
:{{{round value|}}}
 +
}}
 +
 
 +
{{#if: {{{scenario randomizable|}}} |
 +
;Scenario Randomizable
 +
:{{{scenario randomizable|}}}
 +
}}
 +
 
 +
{{#if: {{{show if undefined|}}} |
 +
;Show If Undefined
 +
:{{{show if undefined|}}}
 +
}}
 +
 
 +
{{#if: {{{show non abstract|}}} |
 +
;Show Non Abstract
 +
:{{{show non abstract|}}}
 +
}}
 +
 
 +
{{#if: {{{show on animals|}}} |
 +
;Show On Animals
 +
:{{{show on animals|}}}
 +
}}
 +
 
 +
{{#if: {{{show on default value|}}} |
 +
;Show On Default Value
 +
:{{{show on default value|}}}
 +
}}
 +
 
 +
{{#if: {{{show on entities|}}} |
 +
;Show On Entities
 +
:{{{show on entities|}}}
 +
}}
 +
 
 +
{{#if: {{{show on humanlikes|}}} |
 +
;Show On Humanlikes
 +
:{{{show on humanlikes|}}}
 +
}}
 +
 
 +
{{#if: {{{show on mechanoids|}}} |
 +
;Show On Mechanoids
 +
:{{{show on mechanoids|}}}
 +
}}
 +
 
 +
{{#if: {{{show on non power plants|}}} |
 +
;Show On Non Power Plants
 +
:{{{show on non power plants|}}}
 +
}}
 +
 
 +
{{#if: {{{show on non wild man humanlikes|}}} |
 +
;Show On Non Wild Man Humanlikes
 +
:{{{show on non wild man humanlikes|}}}
 +
}}
 +
 
 +
{{#if: {{{show on non work tables|}}} |
 +
;Show On Non Work Tables
 +
:{{{show on non work tables|}}}
 +
}}
 +
 
 +
{{#if: {{{show on pawns|}}} |
 +
;Show On Pawns
 +
:{{{show on pawns|}}}
 +
}}
 +
 
 +
{{#if: {{{show on player mechanoids|}}} |
 +
;Show On Player Mechanoids
 +
:{{{show on player mechanoids|}}}
 +
}}
 +
 
 +
{{#if: {{{show on slaves only|}}} |
 +
;Show On Slaves Only
 +
:{{{show on slaves only|}}}
 +
}}
 +
 
 +
{{#if: {{{show on unhaulables|}}} |
 +
;Show On Unhaulables
 +
:{{{show on unhaulables|}}}
 +
}}
 +
 
 +
{{#if: {{{show on untradeables|}}} |
 +
;Show On Untradeables
 +
:{{{show on untradeables|}}}
 +
}}
 +
 
 +
{{#if: {{{show zero base value|}}} |
 +
;Show Zero Base Value
 +
:{{{show zero base value|}}}
 +
}}
 +
 
 +
{{#if: {{{suppress disabled error|}}} |
 +
;Suppress Disabled Error
 +
:{{{suppress disabled error|}}}
 +
}}
 +
 
 +
{{#if: {{{immutable|}}} |
 +
;Immutable
 +
:{{{immutable|}}}
 +
}}
 +
 
 +
{{#if: {{{hide at value|}}} |
 +
;Hide At Value
 +
:{{{hide at value|}}}
 +
}}
 +
 
 +
{{#if: {{{no skill factor|}}} |
 +
;No Skill Factor
 +
:{{{no skill factor|}}}
 +
}}
 +
 
 +
{{#if: {{{no skill offset|}}} |
 +
;No Skill Offset
 +
:{{{no skill offset|}}}
 +
}}
 +
 
 +
{{#if: {{{round to five over|}}} |
 +
;Round To Five Over
 +
:{{{round to five over|}}}
 +
}}
 +
 
 +
{{#if: {{{value if missing|}}} |
 +
;Value If Missing
 +
:{{{value if missing|}}}
 +
}}
 +
 
 +
{{#if: {{{show if hediffs present|}}} |
 +
;Show If Hediffs Present
 +
:{{{show if hediffs present|}}}
 +
}}
 +
 
 +
{{#if: {{{capacity factors|}}} |
 +
;Capacity Factors
 +
:{{{capacity factors|}}}
 +
}}
 +
 
 +
{{#if: {{{capacity offsets|}}} |
 +
;Capacity Offsets
 +
:{{{capacity offsets|}}}
 +
}}
 +
 
 +
{{#if: {{{show on pawn kind|}}} |
 +
;Show On Pawn Kind
 +
:{{{show on pawn kind|}}}
 +
}}
 +
 
 +
{{#if: {{{skill need factors|}}} |
 +
;Skill Need Factors
 +
:{{{skill need factors|}}}
 +
}}
 +
 
 +
{{#if: {{{skill need offsets|}}} |
 +
;Skill Need Offsets
 +
:{{{skill need offsets|}}}
 +
}}
 +
 
 +
{{#if: {{{post process stat factors|}}} |
 +
;Post Process Stat Factors
 +
:{{{post process stat factors|}}}
 +
}}
 +
 
 +
{{#if: {{{stat factors|}}} |
 +
;Stat Factors
 +
:{{{stat factors|}}}
 +
}}
 +
 
 +
{{#if: {{{parts|}}} |
 +
;Parts
 +
:{{{parts|}}}
 +
}}
 +
 
 +
{{#if: {{{show if mods loaded|}}} |
 +
;Show If Mods Loaded
 +
:{{{show if mods loaded|}}}
 +
}}
 +
 
 +
{{#if: {{{show if mods loaded any|}}} |
 +
;Show If Mods Loaded Any
 +
:{{{show if mods loaded any|}}}
 +
}}
 +
 
 +
{{#if: {{{display priority in category|}}} |
 +
;Display Priority In Category
 +
:{{{display priority in category|}}}
 +
}}
 +
 
 +
{{#if: {{{worker int|}}} |
 +
;Worker Int
 +
:{{{worker int|}}}
 +
}}
 +
 
 +
{{#if: {{{mutable stats|}}} |
 +
;Mutable Stats
 +
:{{{mutable stats|}}}
 +
}}
 +
 
 +
{{#if: {{{show developmental stage filter|}}} |
 +
;Show Developmental Stage Filter
 +
:{{{show developmental stage filter|}}}
 +
}}
 +
 
 +
{{#if: {{{post process curve|}}} |
 +
;Post Process Curve
 +
:{{{post process curve|}}}
 +
}}
 +
 
 +
{{#if: {{{disable if skill disabled|}}} |
 +
;Disable If Skill Disabled
 +
:{{{disable if skill disabled|}}}
 +
}}
 +
 
 +
{{#if: {{{worker class|}}} |
 +
;Worker Class
 +
:{{{worker class|}}}
 +
}}
 +
 
 +
</dl>
 +
</div></div>
 +
}}<!--
 +
 
 +
DISPLAY TEXT
 +
-->'''{{PAGENAME}}''' is a [[stat]]: {{Text | description | {{{description|}}} }} <!--
 +
-->{{#if: {{{min value|}}} | Its minimum allowed value is <!--
 +
-->{{#if: {{{format string|}}} | {{#invoke:String|replace|{{{format string|}}}|{0}|{{Format Number|{{{min value|}}}|{{{to string style|}}}}}}} | {{Format Number|{{{min value|}}}|{{{to string style|}}} }} }}<!--
 +
-->{{#if: {{{effective minimum|}}} | &nbsp;(effectively limited to <!--
 +
-->{{#if: {{{format string|}}} | {{#invoke:String|replace|{{{format string|}}}|{0}|{{Format Number|{{{effective minimum|}}}|{{{to string style|}}}}}}} | {{Format Number|{{{effective minimum|}}}|{{{to string style|}}} }} }})}}.}} <!--
 +
-->{{#if: {{{max value|}}} | Its maximum allowed value is <!--
 +
-->{{#if: {{{format string|}}} | {{#invoke:String|replace|{{{format string|}}}|{0}|{{Format Number|{{{max value|}}}|{{{to string style|}}}}}}} | {{Format Number|{{{max value|}}}|{{{to string style|}}} }} }}<!--
 +
-->{{#if: {{{effective maximum|}}} | &nbsp;(effectively limited to <!--
 +
-->{{#if: {{{format string|}}} | {{#invoke:String|replace|{{{format string|}}}|{0}|{{Format Number|{{{effective maximum|}}}|{{{to string style|}}}}}}} | {{Format Number|{{{effective maximum|}}}|{{{to string style|}}} }} }})}}.}} <!--
 +
-->{{#if: {{{default base value|}}} | Its default value is <!--
 +
-->{{#if: {{{format string|}}} | {{#invoke:String|replace|{{{format string|}}}|{0}|{{Format Number|{{{default base value|}}}|{{{to string style|}}}}}}} | {{Format Number|{{{default base value|}}}|{{{to string style|}}} }} }}.}}<!--
 +
 
 +
CATEGORIES - WIP
 +
--><!--
 +
{{#ifeq:{{{P|Always Hide}}} | true | [[Category:Stats - Always Hide]]}}
 +
{{#ifeq:{{{P|For Information Only}}} | true | [[Category:Stats - For Information Only]]}}
 +
--></includeonly><noinclude>{{Recode|reason=If lable and name arent the same, display explanatory text as to the in game name}}{{Documentation}}</noinclude>

Latest revision as of 09:56, 4 November 2024

Documentation icon Template documentation[view] [edit] [history] [purge]

Creates the first line of a Stat page, displaying what it is, providing the description, categorizing the page and setting several page parameters.

Note: Description placed in the template should match the description of the stat in-game. Additional information and context can be added later. Links can be made from the text in the description.

The Capacity equivalent is Template: Capacity.

Example[edit]

No Table (Default)[edit]

Stat is a stat: Speed of movement in cells per second. Its minimum allowed value is 0.15 c/s. Its default value is 3 c/s.

Table[edit]

Stat

Speed of movement in cells per second.

Base Stats

Def Name
MoveSpeed
Label
move speed
Min Value
0.15
Default Base Value
3.0
To String Style
FloatTwo
Format String
{0} c/s

Other

Scenario Randomizable
true
Capacity Factors
Moving
Parts
StatPart_Glow, StatPart_RevenantSpeed
Display Priority In Category
2500
Stat is a stat: Speed of movement in cells per second. Its minimum allowed value is 0.15 c/s. Its default value is 3 c/s.